diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.d.ts new file mode 100644 index 0000000000000..d4186f70ff1ab --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.d.ts @@ -0,0 +1,68 @@ +import type { AwsCredentialIdentityProvider } from '@smithy/types'; +export interface InvokeOptions { + /** + * The SDKv3 package for the service. + * + * @default - Load the package automatically + */ + readonly sdkPackage?: any; + /** + * Override API version + * + * @default - Use default API version + */ + readonly apiVersion?: string; + /** + * Override region + * + * @default - Current region + */ + readonly region?: string; + /** + * Override credentials + * + * @default - Default credentials + */ + readonly credentials?: AwsCredentialIdentityProvider; + /** + * Parameters to the API call + * + * @default {} + */ + readonly parameters?: Record; + /** + * Flatten the response object + * + * Instead of a nested object structure, return a map of `{ string -> value }`, with the keys + * being the paths to each primitive value. + * + * @default false + */ + readonly flattenResponse?: boolean; +} +/** + * Wrapper to make an SDKv3 API call, with SDKv2 compatibility + */ +export declare class ApiCall { + readonly service: string; + readonly action: string; + readonly v3PackageName: string; + v3Package?: any; + client?: any; + constructor(service: string, action: string); + invoke(options: InvokeOptions): Promise>; + initializePackage(packageOverride?: any): any; + initializeClient(options: Pick): any; + findCommandClass(): new (input: any) => any; + private findConstructor; +} +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +export declare function flatten(root: unknown): { + [key: string]: any; +}; +export declare function coerceSdkv3Response(value: unknown): Promise; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.js new file mode 100644 index 0000000000000..3315165857a6f --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/api-call.js @@ -0,0 +1,136 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.coerceSdkv3Response = exports.flatten = exports.ApiCall = void 0; +const coerce_api_parameters_1 = require("./coerce-api-parameters"); +const find_client_constructor_1 = require("./find-client-constructor"); +const sdk_info_1 = require("./sdk-info"); +/** + * Wrapper to make an SDKv3 API call, with SDKv2 compatibility + */ +class ApiCall { + constructor(service, action) { + this.service = (0, sdk_info_1.normalizeServiceName)(service); + this.action = (0, sdk_info_1.normalizeActionName)(this.service, action); + this.v3PackageName = `@aws-sdk/client-${this.service}`; + } + async invoke(options) { + this.initializePackage(options.sdkPackage); + this.initializeClient(options); + const Command = this.findCommandClass(); + // Command must pass input value https://github.com/aws/aws-sdk-js-v3/issues/424 + const response = await this.client.send(new Command((0, coerce_api_parameters_1.coerceApiParameters)(this.service, this.action, options.parameters ?? {}))); + delete response.$metadata; + const coerced = await coerceSdkv3Response(response); + return (options.flattenResponse ? flatten(coerced) : coerced); + } + initializePackage(packageOverride) { + if (this.v3Package) { + return; + } + if (packageOverride) { + this.v3Package = packageOverride; + return; + } + try { + /* eslint-disable-next-line @typescript-eslint/no-require-imports */ // esbuild-disable unsupported-require-call + this.v3Package = require(this.v3PackageName); + } + catch (e) { + throw Error(`Service ${this.service} client package with name '${this.v3PackageName}' does not exist.`); + } + } + initializeClient(options) { + if (!this.v3Package) { + this.initializePackage(); + } + const ServiceClient = this.findConstructor(this.v3Package); + this.client = new ServiceClient({ + apiVersion: options.apiVersion, + credentials: options.credentials, + region: options.region, + }); + return this.client; + } + findCommandClass() { + if (!this.v3Package) { + this.initializePackage(); + } + const commandName = `${this.action}Command`; + const Command = Object.entries(this.v3Package ?? {}).find(([name]) => name.toLowerCase() === commandName.toLowerCase())?.[1]; + if (!Command) { + throw new Error(`Unable to find command named: ${commandName} for action: ${this.action} in service package ${this.v3PackageName}`); + } + return Command; + } + findConstructor(pkg) { + try { + const ret = (0, find_client_constructor_1.findV3ClientConstructor)(pkg); + if (!ret) { + throw new Error('findV3ClientConstructor returned undefined'); + } + return ret; + } + catch (e) { + // eslint-disable-next-line no-console + console.error(e); + throw Error(`No client constructor found within package: ${this.v3PackageName}`); + } + } +} +exports.ApiCall = ApiCall; +/** + * Flattens a nested object + * + * @param object the object to be flattened + * @returns a flat object with path as keys + */ +function flatten(root) { + const ret = {}; + recurse(root); + return ret; + function recurse(x, path = []) { + if (x && typeof x === 'object') { + for (const [key, value] of Object.entries(x)) { + recurse(value, [...path, key]); + } + return; + } + ret[path.join('.')] = x; + } +} +exports.flatten = flatten; +/** + * Text decoder used for Uint8Array response parsing + */ +const decoder = new TextDecoder(); +async function coerceSdkv3Response(value) { + if (value && typeof (value) === 'object' && typeof (value.transformToString) === 'function') { + // in sdk v3 some return types are now adapters that we need to explicitly + // convert to strings. see example: https://github.com/aws/aws-sdk-js-v3/blob/main/UPGRADING.md?plain=1#L573-L576 + // note we don't use 'instanceof Unit8Array' because observations show this won't always return true, even though + // the `transformToString` function will be available. (for example S3::GetObject) + return value.transformToString(); + } + if (Buffer.isBuffer(value)) { + return value.toString('utf8'); + } + if (ArrayBuffer.isView(value)) { + return decoder.decode(value.buffer); + } + if (Array.isArray(value)) { + const ret = []; + for (const x of value) { + ret.push(await coerceSdkv3Response(x)); + } + return ret; + } + if (value && typeof value === 'object') { + for (const key of Object.keys(value)) { + value[key] = await coerceSdkv3Response(value[key]); + } + return value; + } + return value; +} +exports.coerceSdkv3Response = coerceSdkv3Response; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNhbGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcGktY2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtRUFBOEQ7QUFDOUQsdUVBQW9FO0FBQ3BFLHlDQUF1RTtBQWlEdkU7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFRbEIsWUFBWSxPQUFlLEVBQUUsTUFBYztRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEsK0JBQW9CLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFBLDhCQUFtQixFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQXNCO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhDLGdGQUFnRjtRQUNoRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQyxJQUFJLE9BQU8sQ0FBQyxJQUFBLDJDQUFtQixFQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQUM7UUFFRixPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFFMUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFD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QUksQ0FBQyxNQUFNLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQ3RDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQyxLQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxtQkFBbUIsQ0FBRSxLQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RTtRQUNELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUEvQkQsa0RBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgY29lcmNlQXBpUGFyYW1ldGVycyB9IGZyb20gJy4vY29lcmNlLWFwaS1wYXJhbWV0ZXJzJztcbmltcG9ydCB7IGZpbmRWM0NsaWVudENvbnN0cnVjdG9yIH0gZnJvbSAnLi9maW5kLWNsaWVudC1jb25zdHJ1Y3Rvcic7XG5pbXBvcnQgeyBub3JtYWxpemVBY3Rpb25OYW1lLCBub3JtYWxpemVTZXJ2aWNlTmFtZSB9IGZyb20gJy4vc2RrLWluZm8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFNES3YzIHBhY2thZ2UgZm9yIHRoZSBzZXJ2aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIExvYWQgdGhlIHBhY2thZ2UgYXV0b21hdGljYWxseVxuICAgKi9cbiAgcmVhZG9ubHkgc2RrUGFja2FnZT86IGFueTtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgQVBJIHZlcnNpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2UgZGVmYXVsdCBBUEkgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYXBpVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGUgcmVnaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ3VycmVudCByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3ZlcnJpZGUgY3JlZGVudGlhbHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGNyZWRlbnRpYWxzXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFscz86IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXJzIHRvIHRoZSBBUEkgY2FsbFxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBGbGF0dGVuIHRoZSByZXNwb25zZSBvYmplY3RcbiAgICpcbiAgICogSW5zdGVhZCBvZiBhIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlLCByZXR1cm4gYSBtYXAgb2YgYHsgc3RyaW5nIC0+IHZhbHVlIH1gLCB3aXRoIHRoZSBrZXlzXG4gICAqIGJlaW5nIHRoZSBwYXRocyB0byBlYWNoIHByaW1pdGl2ZSB2YWx1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZsYXR0ZW5SZXNwb25zZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogV3JhcHBlciB0byBtYWtlIGFuIFNES3YzIEFQSSBjYWxsLCB3aXRoIFNES3YyIGNvbXBhdGliaWxpdHlcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaUNhbGwge1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2M1BhY2thZ2VOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHYzUGFja2FnZT86IGFueTsgLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbiAgcHVibGljIGNsaWVudD86IGFueTsgLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcblxuICBjb25zdHJ1Y3RvcihzZXJ2aWNlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXJ2aWNlID0gbm9ybWFsaXplU2VydmljZU5hbWUoc2VydmljZSk7XG4gICAgdGhpcy5hY3Rpb24gPSBub3JtYWxpemVBY3Rpb25OYW1lKHRoaXMuc2VydmljZSwgYWN0aW9uKTtcblxuICAgIHRoaXMudjNQYWNrYWdlTmFtZSA9IGBAYXdzLXNkay9jbGllbnQtJHt0aGlzLnNlcnZpY2V9YDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbnZva2Uob3B0aW9uczogSW52b2tlT3B0aW9ucyk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICB0aGlzLmluaXRpYWxpemVQYWNrYWdlKG9wdGlvbnMuc2RrUGFja2FnZSk7XG4gICAgdGhpcy5pbml0aWFsaXplQ2xpZW50KG9wdGlvbnMpO1xuXG4gICAgY29uc3QgQ29tbWFuZCA9IHRoaXMuZmluZENvbW1hbmRDbGFzcygpO1xuXG4gICAgLy8gQ29tbWFuZCBtdXN0IHBhc3MgaW5wdXQgdmFsdWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtc2RrLWpzLXYzL2lzc3Vlcy80MjRcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2xpZW50LnNlbmQoXG4gICAgICBuZXcgQ29tbWFuZChjb2VyY2VBcGlQYXJhbWV0ZXJzKHRoaXMuc2VydmljZSwgdGhpcy5hY3Rpb24sIG9wdGlvbnMucGFyYW1ldGVycyA/PyB7fSkpLFxuICAgICk7XG5cbiAgICBkZWxldGUgcmVzcG9uc2UuJG1ldGFkYXRhO1xuXG4gICAgY29uc3QgY29lcmNlZCA9IGF3YWl0IGNvZXJjZVNka3YzUmVzcG9uc2UocmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIChvcHRpb25zLmZsYXR0ZW5SZXNwb25zZSA/IGZsYXR0ZW4oY29lcmNlZCkgOiBjb2VyY2VkKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplUGFja2FnZShwYWNrYWdlT3ZlcnJpZGU/OiBhbnkpOiBhbnkge1xuICAgIGlmICh0aGlzLnYzUGFja2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYWNrYWdlT3ZlcnJpZGUpIHtcbiAgICAgIHRoaXMudjNQYWNrYWdlID0gcGFja2FnZU92ZXJyaWRlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqLyAvLyBlc2J1aWxkLWRpc2FibGUgdW5zdXBwb3J0ZWQtcmVxdWlyZS1jYWxsXG4gICAgICB0aGlzLnYzUGFja2FnZSA9IHJlcXVpcmUodGhpcy52M1BhY2thZ2VOYW1lKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBFcnJvcihgU2VydmljZSAke3RoaXMuc2VydmljZX0gY2xpZW50IHBhY2thZ2Ugd2l0aCBuYW1lICcke3RoaXMudjNQYWNrYWdlTmFtZX0nIGRvZXMgbm90IGV4aXN0LmApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplQ2xpZW50KG9wdGlvbnM6IFBpY2s8SW52b2tlT3B0aW9ucywgJ2FwaVZlcnNpb24nIHwgJ2NyZWRlbnRpYWxzJyB8ICdyZWdpb24nPikge1xuICAgIGlmICghdGhpcy52M1BhY2thZ2UpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhY2thZ2UoKTtcbiAgICB9XG4gICAgY29uc3QgU2VydmljZUNsaWVudCA9IHRoaXMuZmluZENvbnN0cnVjdG9yKHRoaXMudjNQYWNrYWdlKTtcblxuICAgIHRoaXMuY2xpZW50ID0gbmV3IFNlcnZpY2VDbGllbnQoe1xuICAgICAgYXBpVmVyc2lvbjogb3B0aW9ucy5hcGlWZXJzaW9uLFxuICAgICAgY3JlZGVudGlhbHM6IG9wdGlvbnMuY3JlZGVudGlhbHMsXG4gICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmNsaWVudDtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQ29tbWFuZENsYXNzKCkge1xuICAgIGlmICghdGhpcy52M1BhY2thZ2UpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhY2thZ2UoKTtcbiAgICB9XG4gICAgY29uc3QgY29tbWFuZE5hbWUgPSBgJHt0aGlzLmFjdGlvbn1Db21tYW5kYDtcbiAgICBjb25zdCBDb21tYW5kID0gT2JqZWN0LmVudHJpZXModGhpcy52M1BhY2thZ2UgPz8ge30pLmZpbmQoXG4gICAgICAoW25hbWVdKSA9PiBuYW1lLnRvTG93ZXJDYXNlKCkgPT09IGNvbW1hbmROYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgKT8uWzFdIGFzIHsgbmV3IChpbnB1dDogYW55KTogYW55IH07XG4gICAgaWYgKCFDb21tYW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIGNvbW1hbmQgbmFtZWQ6ICR7Y29tbWFuZE5hbWV9IGZvciBhY3Rpb246ICR7dGhpcy5hY3Rpb259IGluIHNlcnZpY2UgcGFja2FnZSAke3RoaXMudjNQYWNrYWdlTmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIENvbW1hbmQ7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDb25zdHJ1Y3Rvcihwa2c6IE9iamVjdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBmaW5kVjNDbGllbnRDb25zdHJ1Y3Rvcihwa2cpO1xuICAgICAgaWYgKCFyZXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmaW5kVjNDbGllbnRDb25zdHJ1Y3RvciByZXR1cm5lZCB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB0aHJvdyBFcnJvcihgTm8gY2xpZW50IGNvbnN0cnVjdG9yIGZvdW5kIHdpdGhpbiBwYWNrYWdlOiAke3RoaXMudjNQYWNrYWdlTmFtZX1gKTtcbiAgICB9XG4gIH1cblxufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGEgbmVzdGVkIG9iamVjdFxuICpcbiAqIEBwYXJhbSBvYmplY3QgdGhlIG9iamVjdCB0byBiZSBmbGF0dGVuZWRcbiAqIEByZXR1cm5zIGEgZmxhdCBvYmplY3Qgd2l0aCBwYXRoIGFzIGtleXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW4ocm9vdDogdW5rbm93bik6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICBjb25zdCByZXQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcmVjdXJzZShyb290KTtcbiAgcmV0dXJuIHJldDtcblxuICBmdW5jdGlvbiByZWN1cnNlKHg6IHVua25vd24sIHBhdGg6IHN0cmluZ1tdID0gW10pOiBhbnkge1xuICAgIGlmICh4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeCkpIHtcbiAgICAgICAgcmVjdXJzZSh2YWx1ZSwgWy4uLnBhdGgsIGtleV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldFtwYXRoLmpvaW4oJy4nKV0gPSB4O1xuICB9XG59XG5cbi8qKlxuICogVGV4dCBkZWNvZGVyIHVzZWQgZm9yIFVpbnQ4QXJyYXkgcmVzcG9uc2UgcGFyc2luZ1xuICovXG5jb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2VyY2VTZGt2M1Jlc3BvbnNlKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGlmICh2YWx1ZSAmJiB0eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiB0eXBlb2YoKHZhbHVlIGFzIGFueSkudHJhbnNmb3JtVG9TdHJpbmcpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gaW4gc2RrIHYzIHNvbWUgcmV0dXJuIHR5cGVzIGFyZSBub3cgYWRhcHRlcnMgdGhhdCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHlcbiAgICAvLyBjb252ZXJ0IHRvIHN0cmluZ3MuIHNlZSBleGFtcGxlOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1zZGstanMtdjMvYmxvYi9tYWluL1VQR1JBRElORy5tZD9wbGFpbj0xI0w1NzMtTDU3NlxuICAgIC8vIG5vdGUgd2UgZG9uJ3QgdXNlICdpbnN0YW5jZW9mIFVuaXQ4QXJyYXknIGJlY2F1c2Ugb2JzZXJ2YXRpb25zIHNob3cgdGhpcyB3b24ndCBhbHdheXMgcmV0dXJuIHRydWUsIGV2ZW4gdGhvdWdoXG4gICAgLy8gdGhlIGB0cmFuc2Zvcm1Ub1N0cmluZ2AgZnVuY3Rpb24gd2lsbCBiZSBhdmFpbGFibGUuIChmb3IgZXhhbXBsZSBTMzo6R2V0T2JqZWN0KVxuICAgIHJldHVybiAodmFsdWUgYXMgYW55KS50cmFuc2Zvcm1Ub1N0cmluZygpO1xuICB9XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCd1dGY4Jyk7XG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUodmFsdWUuYnVmZmVyKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIGZvciAoY29uc3QgeCBvZiB2YWx1ZSkge1xuICAgICAgcmV0LnB1c2goYXdhaXQgY29lcmNlU2RrdjNSZXNwb25zZSh4KSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgKHZhbHVlIGFzIGFueSlba2V5XSA9IGF3YWl0IGNvZXJjZVNka3YzUmVzcG9uc2UoKHZhbHVlIGFzIGFueSlba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.d.ts new file mode 100644 index 0000000000000..4ed6e03dc8613 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.d.ts @@ -0,0 +1,24 @@ +import { TypeCoercionStateMachine } from './parameter-types'; +type ApiParameters = { + [param: string]: any; +}; +/** + * Given a minimal AWS SDKv3 call definition (service, action, parameters), + * coerces nested parameter values into a Uint8Array if that's what the SDKv3 expects. + */ +export declare function coerceApiParameters(v3service: string, action: string, parameters?: ApiParameters): ApiParameters; +/** + * Make this a class in order to have multiple entry points for testing that can all share convenience functions + */ +export declare class Coercer { + private readonly typeMachine; + constructor(typeMachine: TypeCoercionStateMachine); + coerceApiParameters(v3service: string, action: string, parameters?: ApiParameters): ApiParameters; + testCoerce(value: unknown): any; + private recurse; + /** + * From a given state, return the state we would end up in if we followed this field + */ + private progress; +} +export {}; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.js new file mode 100644 index 0000000000000..02d80d3a12ac8 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/coerce-api-parameters.js @@ -0,0 +1,96 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Coercer = exports.coerceApiParameters = void 0; +const parameter_types_1 = require("./parameter-types"); +/** + * Given a minimal AWS SDKv3 call definition (service, action, parameters), + * coerces nested parameter values into a Uint8Array if that's what the SDKv3 expects. + */ +function coerceApiParameters(v3service, action, parameters = {}) { + const typeMachine = (0, parameter_types_1.typeCoercionStateMachine)(); + return new Coercer(typeMachine).coerceApiParameters(v3service, action, parameters); +} +exports.coerceApiParameters = coerceApiParameters; +/** + * Make this a class in order to have multiple entry points for testing that can all share convenience functions + */ +class Coercer { + constructor(typeMachine) { + this.typeMachine = typeMachine; + } + coerceApiParameters(v3service, action, parameters = {}) { + // Get the initial state corresponding to the current service+action, then recurse through the parameters + const actionState = this.progress(action.toLowerCase(), this.progress(v3service.toLowerCase(), 0)); + return this.recurse(parameters, actionState); + } + testCoerce(value) { + return this.recurse(value, 0); + } + recurse(value, state) { + switch (state) { + case undefined: return value; + case 'b': return coerceValueToUint8Array(value); + case 'n': return coerceValueToNumber(value); + case 'd': return coerceValueToDate(value); + } + if (Array.isArray(value)) { + const elState = this.progress('*', state); + return elState !== undefined + ? value.map((e) => this.recurse(e, elState)) + : value; + } + if (value && typeof value === 'object') { + // Mutate the object in-place for efficiency + const mapState = this.progress('*', state); + for (const key of Object.keys(value)) { + const fieldState = this.progress(key, state) ?? mapState; + if (fieldState !== undefined) { + value[key] = this.recurse(value[key], fieldState); + } + } + return value; + } + return value; + } + /** + * From a given state, return the state we would end up in if we followed this field + */ + progress(field, s) { + if (s === undefined || typeof s !== 'number') { + return undefined; + } + return this.typeMachine[s][field]; + } +} +exports.Coercer = Coercer; +function coerceValueToUint8Array(x) { + if (x instanceof Uint8Array) { + return x; + } + if (typeof x === 'string' || typeof x === 'number') { + return new TextEncoder().encode(x.toString()); + } + return x; +} +function coerceValueToNumber(x) { + if (typeof x === 'number') { + return x; + } + if (typeof x === 'string') { + const n = Number(x); + return isNaN(n) ? x : n; + } + return x; +} +function coerceValueToDate(x) { + if (typeof x === 'string' || typeof x === 'number') { + const date = new Date(x); + // if x is not a valid date + if (isNaN(date.getTime())) { + return x; + } + return date; + } + return x; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWFwaS1wYXJhbWV0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29lcmNlLWFwaS1wYXJhbWV0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RjtBQU12Rjs7O0dBR0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxhQUE0QixFQUFFO0lBQ25HLE1BQU0sV0FBVyxHQUFHLElBQUEsMENBQXdCLEdBQUUsQ0FBQztJQUMvQyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDckYsQ0FBQztBQUhELGtEQUdDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFDbEIsWUFBNkIsV0FBcUM7UUFBckMsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO0lBQUksQ0FBQztJQUVoRSxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxhQUE0QixFQUFFO1FBQzFGLHlHQUF5RztRQUN6RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFRLENBQUM7SUFDdEQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxLQUFjLEVBQUUsS0FBb0M7UUFDbEUsUUFBUSxLQUFLLEVBQUU7WUFDYixLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQzdCLEtBQUssR0FBRyxD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SSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlQ29lcmNpb25TdGF0ZU1hY2hpbmUsIHR5cGVDb2VyY2lvblN0YXRlTWFjaGluZSB9IGZyb20gJy4vcGFyYW1ldGVyLXR5cGVzJztcblxudHlwZSBBcGlQYXJhbWV0ZXJzID0geyBbcGFyYW06IHN0cmluZ106IGFueSB9O1xuXG50eXBlIFN0YXRlT3JDb252ZXJzaW9uID0gVHlwZUNvZXJjaW9uU3RhdGVNYWNoaW5lW251bWJlcl1bc3RyaW5nXTtcblxuLyoqXG4gKiBHaXZlbiBhIG1pbmltYWwgQVdTIFNES3YzIGNhbGwgZGVmaW5pdGlvbiAoc2VydmljZSwgYWN0aW9uLCBwYXJhbWV0ZXJzKSxcbiAqIGNvZXJjZXMgbmVzdGVkIHBhcmFtZXRlciB2YWx1ZXMgaW50byBhIFVpbnQ4QXJyYXkgaWYgdGhhdCdzIHdoYXQgdGhlIFNES3YzIGV4cGVjdHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2VyY2VBcGlQYXJhbWV0ZXJzKHYzc2VydmljZTogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgcGFyYW1ldGVyczogQXBpUGFyYW1ldGVycyA9IHt9KTogQXBpUGFyYW1ldGVycyB7XG4gIGNvbnN0IHR5cGVNYWNoaW5lID0gdHlwZUNvZXJjaW9uU3RhdGVNYWNoaW5lKCk7XG4gIHJldHVybiBuZXcgQ29lcmNlcih0eXBlTWFjaGluZSkuY29lcmNlQXBpUGFyYW1ldGVycyh2M3NlcnZpY2UsIGFjdGlvbiwgcGFyYW1ldGVycyk7XG59XG5cbi8qKlxuICogTWFrZSB0aGlzIGEgY2xhc3MgaW4gb3JkZXIgdG8gaGF2ZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMgZm9yIHRlc3RpbmcgdGhhdCBjYW4gYWxsIHNoYXJlIGNvbnZlbmllbmNlIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgQ29lcmNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZU1hY2hpbmU6IFR5cGVDb2VyY2lvblN0YXRlTWFjaGluZSkgeyB9XG5cbiAgcHVibGljIGNvZXJjZUFwaVBhcmFtZXRlcnModjNzZXJ2aWNlOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBwYXJhbWV0ZXJzOiBBcGlQYXJhbWV0ZXJzID0ge30pOiBBcGlQYXJhbWV0ZXJzIHtcbiAgICAvLyBHZXQgdGhlIGluaXRpYWwgc3RhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBzZXJ2aWNlK2FjdGlvbiwgdGhlbiByZWN1cnNlIHRocm91Z2ggdGhlIHBhcmFtZXRlcnNcbiAgICBjb25zdCBhY3Rpb25TdGF0ZSA9IHRoaXMucHJvZ3Jlc3MoYWN0aW9uLnRvTG93ZXJDYXNlKCksIHRoaXMucHJvZ3Jlc3ModjNzZXJ2aWNlLnRvTG93ZXJDYXNlKCksIDApKTtcbiAgICByZXR1cm4gdGhpcy5yZWN1cnNlKHBhcmFtZXRlcnMsIGFjdGlvblN0YXRlKSBhcyBhbnk7XG4gIH1cblxuICBwdWJsaWMgdGVzdENvZXJjZSh2YWx1ZTogdW5rbm93bik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVjdXJzZSh2YWx1ZSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2UodmFsdWU6IHVua25vd24sIHN0YXRlOiBTdGF0ZU9yQ29udmVyc2lvbiB8IHVuZGVmaW5lZCk6IGFueSB7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSB1bmRlZmluZWQ6IHJldHVybiB2YWx1ZTtcbiAgICAgIGNhc2UgJ2InOiByZXR1cm4gY29lcmNlVmFsdWVUb1VpbnQ4QXJyYXkodmFsdWUpO1xuICAgICAgY2FzZSAnbic6IHJldHVybiBjb2VyY2VWYWx1ZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGNhc2UgJ2QnOiByZXR1cm4gY29lcmNlVmFsdWVUb0RhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3QgZWxTdGF0ZSA9IHRoaXMucHJvZ3Jlc3MoJyonLCBzdGF0ZSk7XG4gICAgICByZXR1cm4gZWxTdGF0ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdmFsdWUubWFwKChlKSA9PiB0aGlzLnJlY3Vyc2UoZSwgZWxTdGF0ZSkpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIE11dGF0ZSB0aGUgb2JqZWN0IGluLXBsYWNlIGZvciBlZmZpY2llbmN5XG4gICAgICBjb25zdCBtYXBTdGF0ZSA9IHRoaXMucHJvZ3Jlc3MoJyonLCBzdGF0ZSk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRTdGF0ZSA9IHRoaXMucHJvZ3Jlc3Moa2V5LCBzdGF0ZSkgPz8gbWFwU3RhdGU7XG4gICAgICAgIGlmIChmaWVsZFN0YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAodmFsdWUgYXMgYW55KVtrZXldID0gdGhpcy5yZWN1cnNlKCh2YWx1ZSBhcyBhbnkpW2tleV0sIGZpZWxkU3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZyb20gYSBnaXZlbiBzdGF0ZSwgcmV0dXJuIHRoZSBzdGF0ZSB3ZSB3b3VsZCBlbmQgdXAgaW4gaWYgd2UgZm9sbG93ZWQgdGhpcyBmaWVsZFxuICAgKi9cbiAgcHJpdmF0ZSBwcm9ncmVzcyhmaWVsZDogc3RyaW5nLCBzOiBTdGF0ZU9yQ29udmVyc2lvbiB8IHVuZGVmaW5lZCk6IFN0YXRlT3JDb252ZXJzaW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocyA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBzICE9PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHlwZU1hY2hpbmVbc11bZmllbGRdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvZXJjZVZhbHVlVG9VaW50OEFycmF5KHg6IHVua25vd24pOiBVaW50OEFycmF5IHwgYW55IHtcbiAgaWYgKHggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB4ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoeC50b1N0cmluZygpKTtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBjb2VyY2VWYWx1ZVRvTnVtYmVyKHg6IHVua25vd24pOiBudW1iZXIgfCBhbnkge1xuICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHg7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbiA9IE51bWJlcih4KTtcbiAgICByZXR1cm4gaXNOYU4obikgPyB4IDogbjtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBjb2VyY2VWYWx1ZVRvRGF0ZSh4OiB1bmtub3duKTogRGF0ZSB8IGFueSB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHgpO1xuICAgIC8vIGlmIHggaXMgbm90IGEgdmFsaWQgZGF0ZVxuICAgIGlmIChpc05hTihkYXRlLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.d.ts new file mode 100644 index 0000000000000..7cf6561a8245f --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.d.ts @@ -0,0 +1,4 @@ +export declare function findV3ClientConstructor(pkg: Object): new (config: any) => { + send: (command: any) => Promise; + config: any; +}; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.js new file mode 100644 index 0000000000000..39adbabc81899 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/find-client-constructor.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.findV3ClientConstructor = void 0; +function findV3ClientConstructor(pkg) { + const [_clientName, ServiceClient] = Object.entries(pkg).find(([name]) => { + // Services expose a base __Client class that we don't want ever + return name.endsWith('Client') && name !== '__Client'; + }); + return ServiceClient; +} +exports.findV3ClientConstructor = findV3ClientConstructor; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jbGllbnQtY29uc3RydWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJmaW5kLWNsaWVudC1jb25zdHJ1Y3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFnQix1QkFBdUIsQ0FBQyxHQUFXO0lBQ2pELE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1FBQ1QsZ0VBQWdFO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEtBQUssVUFBVSxDQUFDO0lBQ3hELENBQUMsQ0FNRCxDQUFDO0lBQ0gsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQWJELDBEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGZpbmRWM0NsaWVudENvbnN0cnVjdG9yKHBrZzogT2JqZWN0KSB7XG4gIGNvbnN0IFtfY2xpZW50TmFtZSwgU2VydmljZUNsaWVudF0gPSBPYmplY3QuZW50cmllcyhwa2cpLmZpbmQoXG4gICAgKFtuYW1lXSkgPT4ge1xuICAgICAgLy8gU2VydmljZXMgZXhwb3NlIGEgYmFzZSBfX0NsaWVudCBjbGFzcyB0aGF0IHdlIGRvbid0IHdhbnQgZXZlclxuICAgICAgcmV0dXJuIG5hbWUuZW5kc1dpdGgoJ0NsaWVudCcpICYmIG5hbWUgIT09ICdfX0NsaWVudCc7XG4gICAgfSxcbiAgKSBhcyBbc3RyaW5nLCB7XG4gICAgbmV3IChjb25maWc6IGFueSk6IHtcbiAgICAgIHNlbmQ6IChjb21tYW5kOiBhbnkpID0+IFByb21pc2U8YW55PjtcbiAgICAgIGNvbmZpZzogYW55O1xuICAgIH07XG4gIH1dO1xuICByZXR1cm4gU2VydmljZUNsaWVudDtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.d.ts new file mode 100644 index 0000000000000..cde4e15344628 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.d.ts @@ -0,0 +1,4 @@ +export { coerceApiParameters } from './coerce-api-parameters'; +export { findV3ClientConstructor } from './find-client-constructor'; +export { normalizeServiceName, normalizeActionName } from './sdk-info'; +export * from './api-call'; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js new file mode 100644 index 0000000000000..7456cb0073dfe --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/index.js @@ -0,0 +1,26 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalizeActionName = exports.normalizeServiceName = exports.findV3ClientConstructor = exports.coerceApiParameters = void 0; +var coerce_api_parameters_1 = require("./coerce-api-parameters"); +Object.defineProperty(exports, "coerceApiParameters", { enumerable: true, get: function () { return coerce_api_parameters_1.coerceApiParameters; } }); +var find_client_constructor_1 = require("./find-client-constructor"); +Object.defineProperty(exports, "findV3ClientConstructor", { enumerable: true, get: function () { return find_client_constructor_1.findV3ClientConstructor; } }); +var sdk_info_1 = require("./sdk-info"); +Object.defineProperty(exports, "normalizeServiceName", { enumerable: true, get: function () { return sdk_info_1.normalizeServiceName; } }); +Object.defineProperty(exports, "normalizeActionName", { enumerable: true, get: function () { return sdk_info_1.normalizeActionName; } }); +__exportStar(require("./api-call"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlFQUE4RDtBQUFyRCw0SEFBQSxtQkFBbUIsT0FBQTtBQUM1QixxRUFBb0U7QUFBM0Qsa0lBQUEsdUJBQXVCLE9BQUE7QUFDaEMsdUNBQXVFO0FBQTlELGdIQUFBLG9CQUFvQixPQUFBO0FBQUUsK0dBQUEsbUJBQW1CLE9BQUE7QUFDbEQsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgY29lcmNlQXBpUGFyYW1ldGVycyB9IGZyb20gJy4vY29lcmNlLWFwaS1wYXJhbWV0ZXJzJztcbmV4cG9ydCB7IGZpbmRWM0NsaWVudENvbnN0cnVjdG9yIH0gZnJvbSAnLi9maW5kLWNsaWVudC1jb25zdHJ1Y3Rvcic7XG5leHBvcnQgeyBub3JtYWxpemVTZXJ2aWNlTmFtZSwgbm9ybWFsaXplQWN0aW9uTmFtZSB9IGZyb20gJy4vc2RrLWluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktY2FsbCc7XG4iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.d.ts new file mode 100644 index 0000000000000..d3225637a587e --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.d.ts @@ -0,0 +1,2 @@ +export type TypeCoercionStateMachine = Array>; +export declare let typeCoercionStateMachine: () => TypeCoercionStateMachine; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.js new file mode 100644 index 0000000000000..3d466051e8947 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/parameter-types.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.typeCoercionStateMachine = void 0; +// This file was generated from the aws-sdk-js-v3 at Tue Jan 30 2024 09:54:50 GMT+0000 (Coordinated Universal Time) +/* eslint-disable quote-props,comma-dangle,quotes */ +const zlib = require("zlib"); +let typeCoercionStateMachine = () => { + const encoded = "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"; + const decoded = JSON.parse(zlib.brotliDecompressSync(Buffer.from(encoded, 'base64')).toString()); + exports.typeCoercionStateMachine = () => decoded; + return decoded; +}; +exports.typeCoercionStateMachine = typeCoercionStateMachine; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGFyYW1ldGVyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1IQUFtSDtBQUNuSCxvREFBb0Q7QUFDcEQsNkJBQTZCO0FBRXRCLElBQUksd0JBQXdCLEdBQUcsR0FBNkIsRUFBRTtJQUNuRSxNQUFNLE9BQU8sR0FBRywwcDRGQUEwcDRGLENBQUM7SUFDM3E0RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakcsZ0NBQXdCLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ3pDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUxTLFFBQUEsd0JBQXdCLDRCQUtqQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGZyb20gdGhlIGF3cy1zZGstanMtdjMgYXQgVHVlIEphbiAzMCAyMDI0IDA5OjU0OjUwIEdNVCswMDAwIChDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSlcbi8qIGVzbGludC1kaXNhYmxlIHF1b3RlLXByb3BzLGNvbW1hLWRhbmdsZSxxdW90ZXMgKi9cbmltcG9ydCAqIGFzIHpsaWIgZnJvbSAnemxpYic7XG5leHBvcnQgdHlwZSBUeXBlQ29lcmNpb25TdGF0ZU1hY2hpbmUgPSBBcnJheTxSZWNvcmQ8c3RyaW5nLCBudW1iZXIgfCAnYicgfCAnbicgfCAnZCc+PlxuZXhwb3J0IGxldCB0eXBlQ29lcmNpb25TdGF0ZU1hY2hpbmUgPSAoKTogVHlwZUNvZXJjaW9uU3RhdGVNYWNoaW5lID0+IHtcbiAgY29uc3QgZW5jb2RlZCA9IFwiV3dUdk5SdGg1YVMzd3JNRHRlNFVVakdwZjU4emFvbHkyMHNBM1lGQVJOWWVnNVRxNmJneEJoSmNXdXZtRk44dURpV1NzWldHbDVnR1haMzZXbXBzSEJzdlJ0aHJncXM4L2tjYURMVXhNY0plRTR4NnRlbkczOEhFbE1MckFOdDFRQmhTMHNqRUxNMGh6OXJxTWwrbi9MU3ozMjlsRzRWOWdCNXVrV1FJS1JZZFgzLy9NS1Y1NHJZOVh5RkJrUkNQbUxDYklndVJZTEZlMWZ5cWQxR0ZYRjV3a0VQU09md1N3Skl3bnhiRC9UTkxpWGZYTkxQclhXVlNkSHlTc0VCaVdKQjk2ZmowWkdTc0FMNmJlSU90MzNoQllyMzZhbFdmb290OG41cVNiSWV4RlBGRTJ2ZnBsc1NJM0NlUWcyQVhjbkJZY0V0ZHFQeU5WYXFsL2lNUTVOMHZRSjR6UWF4TUNxSXpDWStTejZMZjd0bUZEb2JVZ2M4MzRKbDZVc2FaNVJ2dmsxUStTSFA1My9lOWFWL0R2UDdlNFFVRWg5dzlLQVUvVTZILzAzSmNrMEUrUElENmJGd2RTWVVxUXFMOXlUUncxanBubS93Qjcxa1JnTU9TZ0x0YmlSUnBGbEprbUpVaXNtblBQdnZjOSs1cm5FTGpwQUM0SzRLaVpMK2l5eVorVmhkV3M5N21aVFVjMUhnR3VPdWJVZFVxY3FUNk5TdjQvMWYzYjIxQXNZZTRxMlZaUWVxSytHejVodWlIcVoxWnZlQUZlUUM3Z1gvejVNcWdFdFJ5OHJJaC9ONEZhT2JiZFRpY3NBMEtiWnBNZTdUTE01NWRRMHFqR1hTKzdGMmVkYUtmOEpKU0ljUW0zZTNsYS9XVmQzUDNoTDgzQnF5UWpBUkM2cjFiOXFLOWM2OTliMHZpNVBNc0NjQ0FNY1lnSkxyTm44b2ZIVytFcFAwc2tqend4bmpLV2ZhbTladnA3RHVhcFBtc3hXSE1LU1Q1d3VCbHY2KytQM2Izbk4xYmo2Ni9IWlBBVzBWRWhCRHYvdDR2Ky8vdEpEUDNySzZ1cnI4YlN3SUR4dmlOUVFqTnVyK3Jabi9EK0I5OWFNdjVwTlcvUk5OUE1aSXM4WW4yZHdSYk44eTFmN21MLzJPTW90dXo1SlhSOUY2MmpId1ZvWkN4dFZzODdjeUh1VGxyb291ZDJuVXptZGF1SHlUYzk2V0JTajlpMVpQMEZLWnlrdTBIZ2txcHlxTGpkVmtWM0wyNzZyQlVkL05qOUo0Y1pHS3Z0cjE3azMwVGRWNkczYVV0RFFaZlY3anVSK3lSNDAyQjhKcTl2R3BpNWN3ZllpN1Zja1VBdHRWNCs1NldBbmNXeE80dCtRdHYzdDJ5Um85ckVtSUhWdjRHNTNkT0lLdWFLeGJkOHZZYzFSNXMyWWltUm1HdWlIUzhsTnBORlRyT0RGMTA4S3BvcnFWWm8zeld1Z1dGa1RFQ0hnWDhRenEwY3FsczhUTjRQaUhnT3B6bndTbUtNWlF3aFZuTEszSm1PT2p3QnEzTWNTeTQ0ZWZyRnNXQnBhSFBEMHFmK2YvMUdSL05jTUhIVUNNVnBOa0lOaHB0ejgxa3hVR24reEdrZDNpRnJMYTZMQm1iR3F6VVN6SGl3RGtrR2hqY2hwcmVYWERmUE9pYVlyenE0dndzM0N0OWQyNDF4S0IyL3RrQWhhU0FhZ1pWRGVxMVhIVEFCRjFQejh2ek1rZnBUKzM4eVQ1dFFxSGtOTHlPS3lKdFhpcTIvVWVvMHE2SHNKeFRWWStGK2dTcFBoN1FYaVNHM1dmM3B0RUY2Q0d6RzdnSnV3RjYzVnVNSjBEcWJ2QTNKc2Y1WVFXZXNZSEFhODdmelNCNmhGYjlOS3RDMFQ5V0lRQ3NOdTNHSGI5MTNGb0dOZjR4Q3B1VGRqeXJoZ0hQb1hldzc4UFJ3aVFmS0xJMDVJVDhmTjBEZ2d6TGtzSmV1Q3Uxd1hrODF0WVRxNnpkS2xGaHhURlhtanBiczVXaGswdk9RVTUxNFBaeVFGdDcxSUpWR2xpQlRwYWhiZFRJbWFyV0RnR3FsYWFUMXYxMGdiSGNIdDdHNzFMQWx6T0VKN2xJU20vZ1Axb0Ezd1pJMWRQcnd5R3BPS3RDQnZneDZLUHh6RVhEM2wzbkpKc2FsN1ltd3ZSNnltczV5Q1ZtUTlBajVwNzFKWjF5VFdlcktkUzVzSGxaWTcxVzNSZTJIOVZ4RTc2TVhTbVNmTUk0ZFBIZU5ZWGxwcm1JQjBCclpTVHpOY2dybjRMUzNBM0dqeEpXU3ZOcjVlVDFuQmNyTmhwYll0MDl1Q0VaRGpna3h2Q1dxQkNoOGpEM2dxVnJpNUVjRzJFMG9lc0VaS3huRkdLMDArZFg1NExEU2xWcjREZ21lSnRZaVZwUWZEZE54cjN1YnRyY0hsVHJQTFJld01yNjJIaDA1d2tidExndjBMVnlWYlIxa1ZFTjNIZE1aaGEzdUs4WGV4TStWRGVVMTJDYis3dWtidUNnd2VuR09YQzdSUkxqL0QwODhiMk93MkZtMGs3d25VOFdsVU9ucnRoTlBLenJieGZJcngrUUQzcTV4dEhGcFBMTUhUV0Y4OHdQYjhWaDFKSFplNEtUak5kZzJ1dU5UNGZocWhhRmxscnl6eWhWZXFqQWxFbGZrK2FrVFh2eGpOMXRkdERFWWFONi9HTUt3TFUxcmsxcDI4WjNIenFEVyszSXdQMEhrOEU2d3FSVVFpVkVieDlnTlJPWngvdU9id0Z5azY4aU9OVUhhR0thRy83SXNiaG1BR3UzTmtyaFF4bFJZTFp0eWw3WkZ2c2ozQnJYTWovZkNobTNPaTlsaXFzZng1TGdUSkZROGFZR2VhczdFakhZNHhJQnJPbThHeUVBbCtRblBxOU10OWRTRHV2cVFpdWg2aEtSR21xSysvRXAyeWtQUXhFTlJIcVE3bWZMVnIrSE42NWtpQmdCaHEvSk05Qmlyd2M1dUcreHZzMU4xY1RlSXY1U1YrcVNlL0RxVDBZbm1qVWNaNGgzMHV3NGdxV2hYa1FKREl6d2Vld1F3aCs1ZGNEQ2M2K3VXU3FCWHBkdnhGSk54RStPZ042TGU4TmcxbnY5bGxoaHMrMXpsLzE2UEZQa2RSd0RFekptY09pQk5yNGtpTldQUThTWE9PY3lEMUhod1c3K0lUNHBSRXRkS1lnOXQvcU1LQkR3V0N2M2dGYjY2eHpPbXdUT3VLbGpYbjhVRk00RW9rMUVuL3dzczYxa1VoeVRjbVNjeXJBZms4cElqTXpBdElXWUZiUUdYUk9pazdJRWJXVHZpQlNabG9nOTVEaWJkN3ZvUW5ycndPeUhiTWE0M2xHV3pQZ0FWRGN6ZGRGR1JFVGJPajZUV1pPRTBPRk5tdGZEMVRNOElsRFhBcWh2eFpRUkhWSS9SRXYwMVhsdjFvMGs1VjZpWXJXQmVwWXNSWjdYcWovNTNrcnFLTTVhNVBnOWlBK0hyY09ZRGtreHhqbmpRb05GSEdGUUduQnRHb1dUQjBsRW9PSXJlUlZLbGZ1VmlyTHZmYmRJTlQ1dnY5NDRZamJXZGxEMnd6em5ua2xzeExEdHlPUVEzbUV6S1BDRzVlenJwVFlNQzVBREVmK0R3Q0pKRmdYNkhxUVFML2JXcExyZ2t2UmEwbUJTaFZpcGJXa3hDTnRiWktaNDlmcUNJYTJiVkptODk1SkhKTCtXN0JuUlZUMVRLcGV3UThxd0Y0SWI5MWp5K1lmSXlxTXhneUNzM0RNYVNlWXB2VmdMb1p5MFZKRU8xMkMzbWlEL0JhYUY3c09yQjl5aTIrWjVKWEtSMklJSjdzdE5QVWJXL08zMzZPM211ZmxLS1BHejFLTGt0VmpUWkVpTDRWT1J6SkF4NFVJbUw3SDE3THdlcG1lcnRtS2dsMmUvVlYzdU1sSkthVE1uQ25YMGRVTmFuc2xCa3pOKzVLTHYxODRpNHVUcmV3VlNtTENMeFJYdDZkNGdQM0V0eXBZNHlQRHVueVRrVWlUemdEYmU5QkN5RCtVK0pKVERJL3dUMm56VXcxdUVwL252ZTZrelRhS0JUVGZGcHFuTmxtYkltSU84ZkNYYU5NT2JYTXNCeVVqVGRlOEx6d3dteVIwYnFxYXhyMkRCNTRKdEdxUVF0b01ETElHMEtUdTM4bHIyMWQrRFBGV3BCVzJ4MTJrN3VHaE5zbFhVNk1Dc2kycnNIVDRYWldDR01Jb3ZiOHlrMVhMRnU1QzhPV3NxSTduZHBodGxvcDV0d2xVRTRabzBpSGprODk2RG8zN2NOQ0lsSzlZd2xWd1ZIYU1XRVdoREZMS1RqUzl0Y01ZNkxMNG1rb3ZmRmpqS2RnSU9FM0JNM2o2R0g0a0ZyL0N0WFFQeG8wTlo4cVFjT2I1dGJKVWdTT3JjUWEvZityMHE2Y0lZaXQ4U3RKVzhTZ0VtOERyRldaczdJWFdYSHRSVnBOQ0VyN1d5Y0JtemhjK3IvZHFVWmhKODRRQWtWWmg4cDgxSWs2MEV0alV1MUtUR1VRdkkvTjdPdm43MnREZ1ltbGlWTjRzdngyQXFCWElpV2lIQkZ4OEFyMno0NVlOdDQzNG44ZkpPVUY0WGJ3dnFCU1Nzby8zQ0Fxb2o1SzRpcmFrOFVjRzUyc1h2dnBFZ0orSGtoRTV4eTFhcVFrMmsrZklGb09vODVuQ1FZSlZESkhxSzJZd1h4bGRmTC9mazBab0hxenkyMTdyNGx1QlJpV1VnN3N0YnZNZVl0MGtoTzRHb3h1MjNTUXIrOWdILy8vWFhyUzUwNllhejdra2VQVWRCT1VYZi9MOFpKVS9jVHdoRGpYMW40aGNPUktlUVJVcml5bjZpMVZIaWk2SnVDWTZIOXlKMU9paldCWDM4YUQ5QnplRFBaSG4yaytyaVJJZlowa1U3c2gyd3loVXUvZUpCWkRpSEVNQjhlUThIdDlvbUxjZmdSdS95Sjk2STVBajE4dzdiazU3bkxmNS9STjJUMHl1YWpkNDd3aUhqMFR3UXlYRWttdmVOL3dMQVdmNkVrckpqbVlKVDdpWFV4OHpKK2crbTdCQVVmZ29TSTQ4MnBPeWl2eU1GT2N3MEVUbkhBWExyZU9kMkJEMWhNcEZaNTNYaktpbGhPOEhrUVJzdkdUZEV0dXg2bEJTSG0yb0NOV0x4OVUrNC95NHhwTEVBL29yeXIxT2YrYjBFU1lmblNCSlRrRUliVlFJenhLdk5wcEJaWmt3R2s2M1VGR05MaTNla2wzYTBYV3MxUGhrRWljWmkwZ0dheHBaOERlamlCYWljTE9xT1poRjQ1M2FNbFVGZG12SlZaNnhVV0FDVzZvMlNZYXdGNWUyMFd6QTVjSnlybEdLRStUZnlVNnd2QlI2dWN4dmFyUWVTcUtJZEh0UHhrRFFsWm5oZDBQQmhEVEhpdzJBa21FcWd3OFJzUGVLK0xvd3dYZHowa3B0dUQ2S3M3Q2lsUXhhZG9lVUtabnZIckMyRHZDbE9kQ2loUGo1akNKZVo1bDBNeFdCdTUxdW9DRmxKOEo2RW4rNW0vUnZLMmVOMkZIN3NaWjBtbDZqQjdadThvOUd0N04ybHBaMEpGUElabHMrQmlRdWlyQ3A5WlNGUlJlRjZhL09RUE0wUC8rSCs5aDF6RGRrN1lHRW5vc1pjcG01VGZRMi8xL0Rjbm5kQ0pTbXFzbEQvZ1VMVWJUYzY3MGlraUdNVXFIcmlGQlFjVWxVS3J6bW5Md1hGQXhmMnhWTFZIeSs1K3FYUmZwNlVKKzk5b2k0dHorZHVLdmU2bjc5c3pOWk12M0x5S2tJb1dyYllyWkJtN00yZWdBL29mNzlzZHNNeVg0cDJPWGQrUTBLbWtROU13N3RoTzZncHB3UVVud1poZUtMMkV3dXRuOFh6TU5GbitsNWpoZkdlVGVXZVBpMnZDTnlzdHQycThiOWhjVEJ2bmhGK2lzbkJ0N3luSzNrK1M1OTNPNjRPOUtOWXlVUkxQMXpoYXpOME5peU14cVcreXR4OXRPT1JyL1kyblIzWURXVGQzdVkvNWo4NVZ3clg3LzErUUtvajhQNTI5dy9vWitLUnAzdFBpRzgrMTFIcmM1djgzUGttRzZUYzNKSlEveU5qdHpnVkR6M3EwcS9BOWx0WUJVMDl6N3RpMXlSbDlMelNkUkpFajdyUnlsa0hTWWhacDNFOXpIZnZlMWkyRVg1N0xzQzZFeGlrcVAwRlJIY2hmY0JwOTRLMlZ6Uml1ME5pSEVMK0FlTElkTVNqcS85UkMzZXZDVjBmdVBTVGJwQ3F2cXZMUkdiQ1hyRHpvQUIxNTUxSG11WU84VFpjZHBwWkFsQjkrYVFEdGtZSXNpOEhaTFJUdlM3UE9sSkVxSkZKWHJPd1AyYndlRStMKzhWbzFjcTc4Z2pxcm1HUnZuOHI2Q1NtSnNsOFBseUZUbTNVQnk3VThKZTNIZlFia2ZtLzR0SGUxNWJNOUloSHUwM01TbDhLcjZlemY4MFhtdCtVL2JkYmN1b2Q3Uk5KSlVLTmVRWTh1ZTlwUGF6U0I0WjAzbG0zL05IeFMzaFVYZTJYYWg1eDZqdjVhcXVkc3YwVUlyWmJMTFFYNzN6dG9xZjFKYzJFRHpVeWRlR2tkZk40ZnpkM1FYcFRYVHlWdzFPMzZ2REJuVDU4VnlNZU8wY1crU0xTR01GN3UzdlhPZEwweXZMUXFIWm1WcXJYVHQ2eGVwdFY0S0pkOWFhNVZ1YVpveVFmc29qSnNuQmJoMFhBcE9MZTJSbmVMR2h3ZGRDWnpUQnJYK2xTelBTMStra3dGMjM2VEQ1QkxrMUVwWTk4LzBiZVJydzAyOVVtZjk5TzVIOFErUk1yS3QyYjhOWHhoRVVtdnA2d3RTVVpVcEViS0ttR3l6UnF4NGNIYkhEdExOektmVC9nb1IzalRiTEJSK0QvbFdhMXB5NzZvamdZNER2WEpBUWV2aXBmTW1mQXEyN1NIZ2lnYnMzMEJMclBFZVpRRmpjU1ZmU2J3dXVFR3BHM05yTGRxN1hWc2NNVVJLRTMrbStzU0xEUitmMjluUEJhenVLNHppN1g2NVVTeUlWemc0WTkxZlRsSWNaRUM3QkIwWjVqYmVYdWpBZW80emhtTjY1QVo3OG9YU1k2dEdGSC9GSm11NTFzc1NyRzI1dlVnUlU5b0g1c0xBZ1JNRGQvckpnaFl6cHZBdWplRmRobjZqclBiTzBDdjdCUER1anRyem84Y1hKRFZiMmI0QXc1NDNOYWhBWjh5WEJLSmhSeHpnZ29Rb3NsbDBGdFprdWRuVldVWjZ0OWZuUTRGZVlpR3pLdnVaV1lESnFLUXVpNjJOMTg3RXJZeE55dGQzVDhIalJxNXF1ZVgrWENpeXg5YWE3Ni9JSHBoODlqZHpNTmhNbTR3eVVZVDZ1RU9UY0N1cHU3blova2NYVjBDS2NLNEhYdm5hZHJQN3JQaG56Y3h4QzczZnEwb2poWDhoWnZWZ3haOUlXT0IwU0huTnZqOHg2V1BraXhZeHQzaUh0SitHYzFoVmZ5T0ZOV08rVlhnYWY3SERxaldzSGJXK2I5Zms0U1dnRUp2WHlHTk5laFdBbkVEck92TzhSY0pyR043Zk5BRHFOay9pVUdTOGgzajlnYUVVZGovc05MaGhiNkNHNlVja3k5SFdBVElOZGJ6MUgrZWg5SDM4cHJ6T1VxNnBxeHlmTVZLNlVRQ05USmIxVERqb045N1d3VENjWUZBcVZTQnhZb0ZmWHVyOTRndWpTeC96bE40bElqYWlvQ2RIdy81Qm5GUEQzUHkvMFBBdkR3clJleEd1eExpeTNIUnRSbGR5cDF5dEJ2VnNzemNiWmdKcVJlKzB4ZG92ajgyYmY2b0hXN3JCREtMM3ppamdXaWlmTnk2dDE1ek52YnErL09HSm1XN3lzYTI5UFIvOG9RQy9MRUlRRHlaSFpzcHkwL3dHdW9vUW9VamRQRFlEdU13RWZITmZaMTNpT0YwQ1kreEtnRGNRRU9DQ3VCNTc5dCtUTW1RVWJ3bldtZHRpR3pTRGhxOHJOYW8yMnFaTFF2bjZTUkJqUW4wZ1g3YnVseTVuMStzR1RPTWVUcFJQZUlRTjNKQUVWZis5MTZnZWpKSzVmUlV3NVdQZzc3K2xxQXU2RjJWYm8xTVR5M1Y1U1MrT3FoemRsZC9ZKzhJQ2laTG96b3pJVm82SUxVZGtiaFRyRHVvanNNWjBNcTA3Slp6ckZJZ2pjTXBHZFordVpIa014VFovblBNYmIzbkgxS3RFOHdKL2NNVDExbFpyWm5jeTlmd3l4bnI3cEpuTWMxc3hlNEJjZmNoZm5SK0hDQU50TUJpejFGb0tTRFBiaUkrZ05IakxQdDA5VTNpODlWMml2a3FvNE1rb0hxSDhtc2NpVEg0dW0xK0IyUHc0K3M5a3N5MUpOTStEcUNxYjJjY2loS3EzdEEvcFM0U0pJcGRFUUU2QmkyTUJoc0RSaVhPcDFsNE9FY1FvaTNQbm5pR3hsSkZseS94a1AxamxaQWdzUCtPbWRZa0Vmc0xTV0pjNWZiSHQ4bDloTWpmWEp3ejlKQWExNmFtd1NCOER5djRORmEvTXpLQXNmN0djL2lBR0o0WEd5eFhKUXZqMDh0U1BPVWtZSDRRWnFqNHArRWsvREJ3dHczVWM1OHB6RGFhbUc2bHdlMVpjcWNkVlc3dy9Udzc0WmVqcklsbmpBYmxIaW1lR0tmWUdNQWRoMEN2RWJTTUNOYVdROW1tMUl3UFpFNXRxd3V3UFkwblpQamxadCtPdVh3N0RlSm5pUSsreTFnUFhkRUlPM0I1emF4dlpQSlU1RnFEVU1nWmdsMHNrdmFiN3NwaVVaT2Nxa3pzalFHeWVwQjNWZ1MyTC8yeC9iQkdrNDBTeUtLcm5ld1BMWUFyZ1FBZWRHQktGbktlVnhWTmVIeTdtQzdsWXFHTnNwd2lNM0Z6MlFSTkxyNUd2cWlWUWtxQXU1MzRMcE95ZE52WVNCRGhQbFloTDBleGF1Q214R3FmYklqN1VlZUNEdnVROU1GR0tyZFZSb0x0aU82alhucVFwUndhdklPUDhXTGxGMGtwUFdYV2V5SmtncVZHRHlwenkvQzRMQ0tweldpOVI3UGFtTXExeC8vakJKSzZ5UnpaM1pSM1k3RVRiMk4vdnRLY0V1R1hhaE80WUZUY2dtQXppTFU1ZUVTQTRjMzErUUI3ZDd3TXdZTm9INXpkNnp1ZU5FdGd1QWZLTlUrZXRtZDMrZ0VwNzA0T2xaaVgyMnpTOE9aTmtpbWdJZ0NLTWtnejJyejhIMGRPVURvcW81RHpudFhoNmYxeE1Nek5CWVBtc2N5Rk13MXlXbTBDaEdIMDU1SENPTmhuempXYlFKMzVEZEVHdHoxNnZjR1VXeUZVb01ESjM1bm53dU01dittbmZiYVBjQnZPNjFPVy9zKzBrblBpYmhad3JIYm1RKzUxOTZPQkNlSWFqR3hCY3NBS3FsM1RCRVlBc3MvbmtmZitEMXNyc1FUYVpJME8zZVVUQ2oveWppam1KMDlGVi9pTVNmTmp2ZlRIeUs5T1U0cUdIdkpmUW9XdXViNXJTVnU0VWFWN0JvMk5nVFNmdnVsQXRETDk1RHFBUWhSc0tubW9TSDlmeWVra2tjYmtDNnA0VUNSdStIZE5SOE1QbGIzUldNN0FQVk1tTzZIVDdlMFhSY0UrSGgzUjI5M1NKQURyTmI1KzdPbExqdSt2ekd4RGRWM2tESVZyL1JSNUtoOWNJN1c4OFFVSFhBdVNEUWQ4K2MyZFdqMUhteldwWDR2MzFnS0tWNXdLOWtFVjdidnJwSHgwd3NPUEFpUmUwWStDNGl1cTRyQ0FPMGFSMkRQSEZPcE9ybis1Zk1jL1YrR3EwUDlKTmhnaDVLY2J4MjRVS25GVEQyYlEzajZOMTZ4Q2JsdzBoSC9DNjVyMDRsYVVsVXpwaFZ3VjJqNVMrN2xZejM5cjFqaFhmWEZGRlg4bjJOUVNKTEhWRm9pVVM2bkRGTndKczhyNWF4eDBlT0d6ekNuNmtPWUV1Zy8yMmlkSzdRbzIrQkM5K0JpWThDNmlHWXA3OWI2eFdDMmsra05OUVVNSmpFeEhPbzlMMGt5WFh6SThiazhLaGhnM0V3Vnpzbm0raFI5STBZMEVZZkZpb1ZKemFCVjdaMnZ4c2NSVXFMNkRZRnVkWkFZVXFJM2VObFVDanBhRGVQckx5a2R2SEVLSm5qOUI2Zm1nZVBFRlcxN3oyTnp0UGZaRmtKMklRd1FjeDdDZmVycEltYkE2UkNjZWhlRmZlOVlYOEJRVDkrNkx0b3hDM2ZOa2ZvK09kK3Awa0dRV2svYVMzRThwS1l0R2RTQXNJM0JlM3FHaytrMTRaOWNSYlRLUkgyRFFrdWlaSXBNVnY0cnJaa0ViZWs2a0JYQ1kzL2ZIMk44cjRSYms1VzZSdm56M1NncWNrWDNucDg0VWx2UWEzN2szMHJ6c3RnejJuMVZ5Z0VzSzJCeG9wN0FNbTJJZVVEaHRScTBySndUakJ4bHgyQ3pWOTh4ZWYxRSs0ajQ3R2tFN3hDMm0zMzVUL1NlR1FaODc1MTdMR1piZVVEVUJwYXFFQWducUhwT05aZUdWejBJeWh1QUxrN1ZqeWZXazNMSGVUMUx2QUhwRGFlWHNBMEFycWU1a1BFMk1nYlhWTTB6OXNxdGdraW0yVHF0VklVcnNrMEpITW5xa1BTanpqQ0JqVjBWUWN0bnlCMzNQQnhPbVZKYWRHN0lLSTN2SUUzNVcwNGNYSHJrNVhONTd4WE9RckJMNW5sdEZNYklEY0ZTOTZpcEhuZTk3Y2xSMzloeXBuVlRkYkpZQ0dkL2tyZkxOallCYUxkYWRoQ1VCT3RIcjFrYXRnc1pudEdaZE5zQWNSNGVyQU1OUmI1ZCs2Q1gwS05TMkFHdGFFVm52TDJWamJJZFlUbHA3MlB4aWFkeElucVFPU2Ivak0zaVNBRkc4cU5qYk1iZy9vZ3lKQ3dVNHFQYTFJQlBkZGh2azVkeDB3T2JqQUtWM1JrN3JmVG5UNUJKWE1Fa1FjRW1EQ3pDaXJjZ01kZXdHNlJ6KzhkNUZueVUxYURwUmZmUWN1d0Y3ajRXU09WZkM1a0ZsZUVNOFBQd1FibjdBOWw2Wm5IV2E5a2piaHZ5NC8zNjIycDdRYkFrM3oyUHlWbkpUZHhVN2hmaG5DdkZxL2R0dnNTWFp0T2pUQUlUT2ZIQ2U5WDIzc2ZoS3FQeVBPaXpGMlA5UHZKMTZMVlZUTFN6QlJ1aGMvb1N1WHVXM1U4blRIam9zTGxWcXVDNlNYMUVTSmxDM0FDRDJYWm4vUDYycWc3dVJoUUl5OUU0aFpEdi83dEFMdVVnR3dnMSswemx6ZEpESnNkTlpJdWlCRFpkSE1PeXplcmhhNU92d1plWTFXREkzYU1rL2VlTS80eVd3WC9JUFhVbE55YnhtQThNWVJMMXlaOXVFTjJzSzd6VmxrL1Fvd0ZlZjBKVUtMUStZYm1tbnc1QmVYdVl1Y0UwNFl6TDlTUTF6bTgwV2NUa1owMCtQTUpRQ2RKV3ZqeXZDYnR2T1VmYk9YWlhRaEpQMzh6ZzZsQzlESDh6cElPaDd5MHJHcFBsSi9MU0tvUGFuazZlN1VoSnM0VVdYRS9ZcnExNG9oMHFEb29HNS9Qb1BEK053dWUxS3VjTHdNYkFoaVIybk1KSENwVEdudTQ5MWw4cG5oUjd3Uyt1UG5kMitSZ3Y5Yy9maUFWbDJONmMwejNMRzIrWFdCTGdhVDJhdGs1WWMrci9VS3l5Y0paSXNLdnZQQjZmelc0SkhCUUxydDdBQmdPTVlmR2dpTjBBWkdOY0lHbloxTWZiSlNyUCtqVzhGQTUyb2VKQVhSSS9BUHRPWEE0SHlMNGJCQ2Q0ckRrSkc5NXFTR0lBNnVpUEhCUkNmSnlDNkRkbkdYckV3MFd5QXpCWFdlQW9IU2w2SXVuaGpvNDFlTjdvSnRyeFJGMHppRGF3RWlEZmIrQ2l6NzUxWUxrSWliRXFKb1VGUUtmd2lLU3pEVHg1ckhIMHZuN1JpYnlxR2dYUml6Zjh6QWNwRXVFVHp0Z1pUcE1NaHExenplTFF2VllwcVo0NXNDendUVlNOa3hMb2FTMmR3TklEOTQ3YS9CWXZyR1BYUEZFM0t6MTJNN0tTOTFJV2NESTVtMzhESEZMWDdkd1NieGNiWjNHSTdyb3UyV1FRTjdDY21kWHB6N0JIZXVQSGRGMVZIOTMybmMyNFV2em9LSE9OQnpCWVNBdFEvR0NUK1ovbkdYZThvWWRPUWc3UFNETzFPNTFzMU1lUHR0dk5nTDM1YklJVlBML0xtWWZ4emp2aTE4SUx2cFBBT0ZRNFRsWkE2VHR5TXVnaStVbDBqbk1aOXkvelJvQlNlbWFpdXdzNTh1aGdUSTVEeVlyZEJja3ZvU09PZ2JQOTBpNk9vaWFIQ21BNnZJZHJXV0NxTTcxU1lMRDlLRS9xVlFtcGdxbkhsUlU5UG12RTdkS0hqYTZobkdnL0JHZy9yMzc2MHlkZHMzQVI2ckgydXBqcXl1UXdWMEQwRzFRY2ZjZTJjTHd0VTB4SG95MGVXNk9kbzdSdkpua2F1MTBzYS95K0hubmxEZHhYbHlXYmQ3QVU4SEdyQVplRkJLQWlaQWRiOVQwdTBPZ1ZUdFBFdGI0YStJd1BYeTJTdkxWSzhSaCt5U0RSZTllUjFmcUZodVFVb08rUTI0Vk5hTVZ1MEtZdFhKWDc1QTdmUVUrOEF0aW00TUo2YStrVzllOVgreXYrNXh4V09QV3NYa29YdE55aFZSR0w1YUlmYnJiK29pYzV0UzFIRWg4QkhvM0ZScHk1emZtL3BhU3RtMVNyM2ZkVkJhN2lDY2J2aHRlTy9zaUdtdVR3ek1FOHRxemlFdHhxLyt3ZjNHbS9qV1ZZamowT0dpTVhlN1d1TTBVd0tSMFU2UFRaeXhTcG4ra0N0ZGh5bUo5MGRYSGRXTTI0clJTRE4xVUUreVBEUXYxaTlEMUxweFVsMGNzSzRRRHRYNzFGazN1bFVBRnJ5Y0FEMVQ1M3dtVlVhVkhrcWt6Yzk3K3BNN1lORHZ5NGpwc0dYUnQvUUY3OWMzbmZmMUNRdVc1V3pZZnFrckl3MWFYMGtMRXk3MEpxLzBkVExCamdJTG1mZGlVc05aUnNjTTFEV1VVbU9EVDRHSDFDd0twMzVIc3FDMXpoRmdpMGtIN0x4Nzkyd0t0ZXA4UFA5WjhTV2JObElvVjBPR09uZmc1aTM0V2MvWDViMDYyUldkck93M3BKaEs3TWJKWlRRVVhVSHhxWnA1cTBjNGRwdHBGdFBaamwxUTZTMTgzMDlqTU92ZUtGTXgzcHlnVVhMYU9tbGJHQWpPeGRKM0c5aDdCNWY0ODcvV0VwYURRMnh6RHozTytOSU45ZzcydWJZN01vRWV4K1pJcEZOZS9rTW16VGl1M3gzYUQ1aDdERHNCSjZwSlh6TUVVaS93dXJJMmQ4ckNUT3BxS3ZRNjhEcVVFZlNvcHR2TWdxdnRtc1Y4VlRDaVF4cXVKTTEzQXMwblJhdldmSHA2QlZmV1BmaGdaYW1yRGZGdDgxdEEvK3NsbzdDU0lBTWxpVGFZdnROamZ3TWtwZjk0cytweXNEdC9QQStTTFYwLzJOTXF4eHdIcnJ2cnJFLys3RVFTVS9NZDZqYlR4RC9sRnhIbWttaFdzZCs2cWlna1NsaHZ2bXdVVkRKQncxWlNIdU82UkRhWWRseVllR1o0NUU0MFA3SEhlaCsvWWt5d2JxbjQyd1JNRm0rNGg2UkRqRm8rOUlLQTMzK202NjRuaVlydStIdm5mSFlBKzBEem93UzB3VHhUdHlhVGZTeUZseTZjZ1FpU3RKNjJUZHFLc3pnQmFiUjdnZ1ZKcWF3dXZQMFhEVTB5TTc4UFRuaWtoUkVObm0zekY4VCtRdkl5TWp1aEhwd1piTnFDZmJoUlNKN3FHUjZ4T0g1VE1KWVNKOTB2SUlmd0tLZnA1TGRvTklwQmFNS2dFa0hRME41UXBIUmRxenpocHp4RG0wbDRMZnlJUVNobGxPVHhhV3I5VDVWSjVNUTNSNTNWNUVCSS9pVWdMTGtwbUVlUWYrNjMremg0VExUSTJQNmxlN20ycENhR0ZUQkZaY3VtTkRmeHhVSnFJL0FhMmxmVGtBd3FnM0tOWTNNRldPWGVYSGtBTVlZZDhHSUtxcmZSQlQ3U25sQ1ZrcjdxMGU4M0lmUjBpdXhzRGNBeFJKa1NqR3I2Zm5zRWZZZFlPTjc0dzV1Rk1lVnhZQXJENFpOcnVRckFYK2N3NCtmTlJQVDUrMzM4M0pUZmJ2VWN1cW1tSlRJMTdpWFdzZEVXRXhXUHlnSVFXcUY1Ni9HWEtpVXVmaVlrdG1MTzlJZG1vWUJSQTdOdzBhbnVzRjhPM0tpOEltUDdnc0RFMFYzYnQ5T0t6LzlYNFMyREpFeEl2QnhZYUI5dTc2bWo1OXQ0WGk5dWQwNEJqdXkzeGtPMVFyNFJDdHBaSEhEald5K0dPVUpteHpvaDUzN0U4cDFaK0RSZjZpVHBLTmpmTFZ6K1NKN3ZmYlpta0J3WElmUE55N3l1MWhlTFkxWmhTR3JydkdDbUlCK0Rwci91cXdhTHQzVy9rS2NUNTVGVk91Zld0TVEvZzFPQjZ5YjFSdVZHUHI1M0tEK1FCV1oxemE0SW90U2FWMnBPdnZ5Q3VJOXJ3RDJTSnNrR0xkYzNuSEY0UzY5V2RndnNVV1V2bmlmQjc4bE5SQWlXdmZqenpNNGt4RWFKV1M3YXA2dVZPTmlQVm4rYjBvOUFwNDNWODdlMjh1UGRyYStPM2J4Vzh5Tmh5YlM1bXo5MDVTK2VBZTNPcHdCNUNjYzNBVjN1V2VudmlGYktCVFM1blhTdUdQcVNQbU5iT3VQL0s4S3NEVXkxOHlYR3Z5MHBxZjFFS094OFVYOW05aTJaMjRFMWk2SzNvc2wrMStWVlp3L2FuYlppTTBZL056RWs0MExRR0ZhWHI3eS9SV3lFejFLVTd3Qi9KbmFhTCtSMjFBdVlneld2VTNoREtValBDaWtEeGUyV3dqUWgrUG5LTnVkdXdMeTN1dVlYTW9mc29uM0FlaUtkN2hMWm9XZ0Y4YUJWWlhTSDMzU3J4a3V5ckFiV1RRWDh6d1h0NjlkdU5PVzd6UTUzWnB5dEI0WHd0OFg4dVc3WGpHUHlPWnlQYkJ0am45aTJCakRhRHpPU3ZWTjdLYzRaRm5Ja0VocThpbGw0MW9ZeUlUb2gxT0k4eE5Nb1JLa0MyZWp6OThiTnJaTzVxdXVkZVhlbmtxMGZNODJWWndmaHlLT29rSi9udFdKODdnUnluWEsvdGhSbEJpNjMvOVRnYXJPQVoxeVRsbGRwcEVJTWF6UkJoMjJmbjA0andTNHZMVWt6VWE5L2M2VWIxMW8wdi9zOUxJeFlGcWdBY1VSamxNZ2htZWhobTJoTU45NElCbjhWTTZVUTlGcUJ2bE9aNXVOMXV3aDJMdklHRGRoYUFCNG1BOThIMDk4dEVXSWhnUTUwUlhJTmN4d0t5UkdkZlNsMm5MRkR4TnBVQThON1hYOG9rMU5zMHNlL042aUs5NFhpaUdxdit5NzU1Y1VvdXVWamFyVTZ0Z2N1emxnVXFPSTVtMVFMTkR3c0ZXYkNiSGhseEU1ZnB4cGhvWnhrYWxoVzBKYTQ0K09PYXFwVDZOaldOTno2VURvM3RjRU1YZnp4dWVGYTlJZ1VhaUhNNzRrc3l5V3NYQktrQkJoZ3loWFBVOU5HUkNacGhTaGhianlVa3lzMTdqTHhyRitXODNVZXZscGVTNWhNRmtQNEZINkJ0YkFxci9BRHAvaDRlQW1YTXMyTEQ2dTF2MGJ5N1YzSjlIcmZ5Y3IxMTlXODN0dGErYjkvNkM4c1ozZWRLOHpXcDRzcnZndkFKWkRCYmpEZlA0Qm5rQzdPeVBkNXZzSGhCNmd1ckN0UzNmbkhuNGRCUDYrTWt5YTJ0QVhmZEFlQ2drRDhIVXBVMXBabmJlWkhaL3Y3TDZsckwrVnJKOUU3bDUvZHkrK2R6OWZ1YXdsSzlZbHZMcm5OUFQzMk45K2wrYko4YS9oWXplWk1ZMmU2ZHFVanpKN2Mwdlh6L3J4MGEyVVl1T2d6WlFsMVMrS1h0ZnlNSi9majI0L0Q1bTg5dVdlLy9aYUphaW05ZTlnN2J6VE1KelFlRXlKNnJWYzRvSEZQYUtaSE5lV3dCZjVVVC9qck5WR0t3UFRTVlN6a09yZ1dBQStwRG1vSGpIV2VpQ2ZUK2Q3VWp2cEU0bHAybWM1N2U1YmZJNzdNRkNvTDJiVVV5Y2lyQXBVa3ZJelJQWXQxa2tBKytLMVVtRFRWa2k4YUF0Q2JLdWhqRjQvVVlpc0owSHQ4VlJiM2N5M3A4SGhSdktPYWN1VGRST25ZWmNsTWgzMnFCcm9paVFYNzc0NzhHajRna2dldWR3a3dHVDRjQW8vcDNzRFhEMXZST3dienFFRmtMaUdaQTZNdkF5N2s0SkUrVzI4L0ExcG5SNWZ2QmltSmtURk1Cckt5MVY3LzI4NTZkdU9YTkhWbWZZdERTUlpnOG90eUtIbnQ2dDArY2FBSG1FZzdoamhQaHBRd29KK3QyUlFFSzdKWHpsSWRLdUE0UWVVQ2VicXU3L0RpWU5jMW5kR21uMzRQZHlYL3lSKzBSa25MRWZaTHRkaElZTXp3ZjZjMWdocktEZDhhMm0wYjhUWDNKcUYwdHhnSS95WHFlaTFJT252TUZaNGI3VEkwVUQxTGI1U2lQdjErM21lT20wUkRodXQwbTVNM1JPL2xNTHkySDBObk9oY0VlWU5SZjFqUER3TmFBMnBGNmZDWmlad3cvQWE4WGtpdWR6RG92MjdLb3k2SmFsQnFoclJhcVJvZFI1bVM4V2hEN2t1RjVpczRtb2xZWHNKdUpBSXNmTWE2bGpxZERqNWhyQ3NiSkJ6VGpySk55Rys5MndNYjZsbjBLeWJaY2M2ZExPQlRHMUQvT3BjUEp5VWU1Y2t0TFg1RU9qS1NTZjltOTQ5M3lqOTN1Rk85N1BnZDlPU01zRzA0SkV0UWNPMlVjaW9hdjA2aFNWMlQ0cmMxQjVUQjNyZVBoSTJmeENVOTgyMGlTaHlnclAwR3RWeXd3d3dJN25HV1hySVErZU4xYXExR2U3dDUremRpYjJSRnZlSXJLNUUveGE4blJ3NmxieVNoSUxzOXF5OG9BZGR1V1QyZXZzamQ3cGhkV2xFVk9NTVZMMlUrMW9MTTlpbm5xN2M2VWc5bEh5dXo4OS8vc29tTExIZnl6YkIyT0o4emNYYXlrcG5BTmxzZ1RrcWVUZWRwQnpsS1doV1JtNzV2cWZBTkpLMmZ0LzA1RFp3Q1JOZ2JuR291SVBMZXZzQkVOSWZZalhnU0V4L250STZSQzQ3RGtKOEFuRlorMmdZZmM4RXdGZWh4YktVRkZrK1EyS2pkVGpYZ1VQSURjK1hKVXdwa0QxTERhWEx1WGlmZjZCY1dJOFlJbDZGenltVmx3OURQa29OTjNKTW9MMEt2ZWNQTXJvU00vL050RjhTSS9NM05Td0RDY2xab3hUdVdZZTgvemZCaVdhLzZoOXg4RlAwdnhoTnBUY3k3WlpKdE9nQlZmdlpqN1NoM2hEOHZIYWRmVWg1UkU1d2QwTm1ZaS8vcEJMdDJVMGdHWG95R1EwZWFHNndTajVaVGY1YXdxK3JRZjVkT3gvRFVMOFdjaEJPMEtYcmlqaDJCUDNQYXB3ZTlrLzUyaFFseGM2dTdkQUJvOEFyOGtiQWF6VmtiMjYyWWtTR3o1d2RpL2QySXNpZ0ZETzNwRVpQM2t4WGxnbWVCN1RFNEVkVHNObWVGRUEzVTNqb2JpT05uQ3JlTjZHZEorSHVJNVdFZXJCOWRxTFVOV25GZzkzYUJKZmt1MDFXWkk4VUhuZDJZNFdqM2F4RnY5eUxWeWtlVS9ad210MjZCV2xocmIxS2IzMWlwa1l4RVJ5cmZUdkwxTWtQVGJmYm1HZmx4THFYb09nRS9oN3NJRjF4dDdxemdRZDFCTUhEL2NUaHpnRlZRQmJlRXFVbk1MYnNzRnZkaTVxWlNWWkNLMERmbDBxdTBHMHZoTWx0aExKQWJMQlJUYld2K1BTVldmZkh4dzMrMUZudEt3WHBDOFJZNmRySEtTNjU2d2VUMGc3R3g3djlxNnROWFRMMExPdlJoMmpBRWdVaFVaWjNDWmUrVFN4aDBXeWVOamRlZ2xSR2xXOUFxd3lwWHpHME9hUkNhUEhMTHNoNVdoVG04cHlsdW1BZXFSN1NIM0lLS3VuZE5UeXkzd0ZVYWhXLzlSWFBoeExsaXRxVUJ1ZW1xdkRjKzdwZEMzSkZGY1RvS28yYXJ5VkNyRU1qSzh2d2hneVJmaUZkYVJBdzY4L2hiM2hQZ2oyYmVpZ0YxNE9yMUVPVHVYN2ViTzNlanR6Wkp6M2ZZZUJQcURpZ1FvNkZMdWhsaGVGakk3SjFqNjJKcjh0VVhnN2VTc1pKTEN0dzJnNk9pUUpqMTJTbi9xeExRR3lJUXhaS1BVc1JhSmFhaDd1UGNIYlJYNGo1a2Z2WkZINEFEUnRCOVpOdzZpNm5jNUtOMUgxTE14eGdiTVVydmlGeGp3a1NhRjNleUJtQ3BJcm5WNTR5MHMybnR4aXhGWWJmbWlIMTRjTi9YZFNwd1gzdldzd3dmZDdpNHFzd1Y4RnA1Q3pQZGI4eW4rdll6dW45VDAwdDRmeTRjTTBNNGJhYk5DZlRWZ0JDTVhadnBFZnhGK2hpekFHRWIrOVIvM0ZEV2ZVQWpCN1I0dDk1SXROaW5CZDJyN091OTl4Z3Q1K2x2VENZOVFoOFNiNitxRHpuSXFLMW5tZ2ZXcVZnOXdmRkx3VEloRHgwY3JjN29qN0pkQ1FMblBJUDBFSHgwaGE4c1k0WDU2eUk5eHM4QnQyNHBDRWlCSmd0MHM4TTYvbHBkZnZ2amZSbmRmdHJsazhza3RENkY2ekNXVDFuM2kyRHhiay9MdTZWQjZicFFOZG5yNWFoaE5Da0VkVUc1WEV5Nk02dDhNSFI5MkxGVE1hUHFEZzcwRnVkcHdaQXBuM1VHVUR6Zk1HbG5YRGFNTFNyLzhkejN1aVlQK3IzZU5nVGhjZjBmTFlTN3l0ZnMwM29xcGZERkh2UXlUaUpxc2QvOUlPdzh5eUx1eTVBR21mNzB4NzdPeHh1ZGZZVFZzaXdYdG40QlllanZieUs1N21SZjFKWnRWanloYkhsRnMxekVFbWRTUTNEM2VwUHcwY2FqZHhtN1dxUWRwVFFLZkF3L1F2cjJRMWtVaTZ2a3dIVWYvOVJoWEtxaStDNlh0Z2htdFA2TE5LcXdRZS9pN0dKTkZRM0g2MHFNQXNWbnpxYW9ZMWtzdGdqMlI1eTlQWEw4aUhPVjBPVVBSUjJDamNxbzd3RkRUQXFQaFp3Z0dCNlh1VzdncHhMeVlNa3lGNzlGNjF3NFI3VXhqNGpTOVZ1eGxRKzFjMGprcld0QkdVUHpEdkIwbVJneSt1MzZpV0hwaHBaSXkzMjR3RlFMaGpqWHpRZ0FDUE5RREFNZlpGcHZ5dDNqS1BjNkxnNHh6WStJdTFaWlRLKzNYYWdjQW5nTVIrMG5Sb3M1TE9Fc1lPNTdyQlM1OU9TZTA0STAvZ3dKaTg1QTcwa01uYnZmRVlBZVdXWHc1NlpQQlpYMlJneFlFc0EybW53c3I0bUpGNnp5RHN0UWVGTkpTaHZXTS9JUzJGRnlEekpCekUyY1lwOTNBc29td0hocHREWEYyRHpnMHBNdW1mNEdyUzRNdU5ua3U2d1QzZ3VUMG9qdVpNdTJNZFlNcWplZzZrRHNSdjloN3V2OWtDWFpMODI5V20rRUNnM2RJd0JjMkxrbzdRT3g0eW1wcmFUS0FDVlY5WUFkdENwaG9sS1JVaHh3NDdrRmxZazlhcm9IMzZiTnhqOEh4RmVxNjc2b1JNS29ibjREM3h0OW56Ykp1QWI5M1NBYTVPSkZzbnliOFNQOVlNVnVXSEdwbHJ3WUF4eHFZWm1oRWJTWjJFdVJwZzJCTTlzSVBVRE1UdDJQVTdEdFdzalIvMDYyRXRaeERaa2J2enhpc1AyY1AwVC9WbnJQQkVWbkJ4MHpHTVA3SHdjTjVITUtOekkwSXlPZERrVXFLY0IwWHNGK3hUV3lNZS9JY0ZIT0pWQW55ZzB3SFlnaUl2QnpvSjBUL3Rla0NSWkoybXdoa2UyWWZObXJ5NWsvcVltS1gxSDNUSElIenQ4VVlFbnozZ21aZTZnZkRUUTU1c0NlMmpWdVZxU3ZTUzVTNTdhR2ZLcjU0b01TdVV3MVc1ZFQreVoyU0grNjVra2dHNUNidUxJaUhoSVlkbDNPM3FCSE5ueENteDdQcVRzWis1ckFvY1FHZWsvODhvSFpkSE1hTk5FeUNaSzkwa3pGMVJBbVA3VWEvR1NlUjlPR0tDRGRTSkRyczhFcTZncElUTjI3VGJGbGh5N0Z6TGdsTFNqWTZmOU1OcG9YS0cvVG5DUjhyYVZzNmlSbzJRTXpGa05LeWowYVd1NE0yTjVYbEpOQnhIWWZ5N2xzeXJuQlNsNEdRSG8yKzNHcVlWTnNZeGs1OFM2dVFITGx5NTlublVxM0VIQnV4M0NCb0VGTEJMeURwSDB6M2sxUUJLUUVSeGRPZ1VTczZOUUhXZFhEZ0ExcHRFNnhwZ3B0c0tQK3RTNkFVdkppV3IzTklZbFRtZkE5SGRkT0tsdU85NGRFV2JFcUN6OXU4UlpaQXByMnp6VnVOSzc3RU5pdXA0Ukg1a3lTMmt1b3BDNU84OEFEUTkxeEFlTDF0eUFlS2JvcGVQZlNaNGN4RWJKM2Zsd3hZNXJOeVE0US9IZVFsRVczejRrRmNjalJRRlcwTzcrSnlrYkVhNkFRMmkreVBmOTgrUHMzMkt4ZUFkTm1xRTJSRmkreU9MVjRCaFRKWHRQc3ZZSjZYOVV6dG5VSGtGcVhPeG1vVHJ3Y0NyRkUyamlaclZwTThFdXdTMmRzNlNJa2dpQ2Z1V3BPcXVrU0JnMWJJbm1YMENaSzZFVmh0NFdTZWFUd2ZIc3Z5c1lDaWdVZ3RZUk0rV1hoWHJGTmtnMXl2NEtUNERTbHVocEkxRkFFRnhKYmcxUlhsTTZQeVcza0UxQklMV09yUUNwS3BMUUs4YllseEZkUGlROEUvSkErOHF2QUYwTmFGSGo3YVV1TUdlT1RSejZDczcxam9DSWhYZEViQlVEaU40ZVlnbnRRa2hiQ3BEQkd6WkVCRXgwTlBCcXRGZTlkNGtnbFBrQVo2QlVPcjhvV2NnWUVKOFFsZ2hkSmtMSm1ZTDdFK093U2NnY0laL2FjUWxkWWJnM29MeW0rWTliM0ZxQm5nM1pMWWVYS1hKcVVXa3BvZ013MWJSM3dEVWtEMEJkSnFTREFGU2k4NXhIZmhpMFJoSk4xVGQ1dk5Ka1RVa1J6NjdDUWNuaHBtK2swS2NpelhRSW5haHM2ZEJmUHQyaU5Jc0ZBcWFLejd5R0hwaHRqVmpKVTRVcm1yMUYzUExuVUhkd25lMUM3VTJzRW94TE5EMmVRbGhVSE1MbnR1MjVoWkp2a04zOFB4eHpVTWtJREtKTXV6VlFZL3FzbWRiektvalROaU9GOUFYSDVSL2tzdTR6RFBha3lkN3FrQjBPQW5YK2VJWUZ4bzc1Z1ViVThDaXpiU2RGR1Zsa2lTNmdSOHU5VTZNOThoOTJoeGl5TENTS284SG5LR3JHajdTQ2xtMG85cGs4WHQvUTJQbWJUTXFOTlVWMnFxcWk3ejJhMnhteXJwYjRubTlFblJKRTQzaWdPa3Q4dmJjUEZBa2pwKzRqeVJ4aE8vdXBMcXhBZGhkdzd0UlNKaW9LSnkvT3BKeE1vRjNTTmpxbVpUZUg0blNFbmlFODZPL3lVcmY4N0tTT0tmVTYzUnJwc3Nxc05oMEVOUlZzRWRSQnZPOXNmN1NaM2EwNFBvWGlyanRYTVFIZS9mVzlCbE5BNzN1NkUrMTl5OHFLdkt4QlpLMVp5eXNkRUlnWVd1b2MyQ0lJL3pxa1NXenZuUDIwSmtQQlFNQmVzT0I1djJkbWJQQzlSbHZiYjY0RkQ1SnNSbmtIUVJkQWNQL2FHVVBPNW9Sck5PK3VsUlp0bjJaWllYUUZUaDdsSWJkcFVUSjFOSVJVRjJJMFRpVkErSXJrMHBIdkMyeXNTaFdoNThzVW9xVXE2QmcrSlkyOGFhUm94elp1Y09Jekh2ZmVKUXZYNFBvRXRVMTRSNE5TNnZuZFVsc08yVDIxWFVoMThkOEpRd084bmVENnNoOFVGK0kyU2xjV2l1bWQwN21QY0tzTXM3Z05Kd2pKc3hZS0l1cW4rc0Q5cGNxRVRoc3JzQjRwd1BOd1p2Zmc2SFl2QkVHMy9QWE1Ta0lTZXVaN0tuNStZR1NDTUxNSmV4ZkFudmZIeE9wTzlETVVFYVdibDhzRFhNSUJYcU9vZlY0V2JKUFdMQ0xJK1daTkdrNmxLb09wSmZPRzZVQktPbzZ6aDNsUGVBOWd4NkZzSG5ybmhrMUNhUEtoQ0JZRnpSYk01N2M0b2xRL256V05NSk4xQUtTbDJuaEJuUlFBQkZ1TmhETmtmSTFzbWpCVHAwLzJOSDcwYXJiYmFsZ29DSEQ4T1hMaUMwRkZKOUNua0craWg5aEJVSThBVE5qOVNBQWFPdTBDZHAwWXVROUQxa0N0R2FFU28yQzR3bVVmbzA2U2dMZWxTZGo2bVVqRjJDNlVYWVpOS08wTmtxQ0VlQjYxY0tyVUdqaEdKbmVVMFEvaGxvMVQvVGVFcGRlNkxHT1NlY1htVnV4eXMwVjNWNzFpb3hiSTBqdFRYcU4rUHlJYVZIemlJVHErSVJTR1BXS05WZmtmQzZ5ZXBYQ1pDZW1yaEhkOXNsTnNveHd6YUhwSHZSTHNHa0VuSkpuWG1RYmplT2Y4cy9ZN2FXSGgwUHlRWnhGcWJ6OFdxVXM0ZHdJYlZ3WUdrdzFxSjljV3NxMW9hRWpyUWdNenUyWnpSSkY0di9ZUHNZcjk2YzVHQko1dWJnR1NEc2VmM0RTaVRrbjNWSzg1ek5qbXRnUThwT2wrNnFXYmJXT3VSeGgwOGtCQXptK1hlODVDcWRNdjU3Wjk1aGNobzZOQkgvV3A0Z0xqcXVpM1V0d2QvOCtNQXQ1ZmorODc0RHNoWWY1U25ERUNzMUtuMWk4QWFtRlBUemc2cCsrcGo0T0hyVTh5UGxwZVNqZUljQXBLck1uS3NzQWw0MlorK0RqMVVwdzcrbVFXNENJdXNvL2VMN0tQc0o2aHR1OXU2OElnT1c5SDFWa1dVN1Y0WVlCRU5JZE5xRWRFcUpDNi9qcW81ZVB0RzcrWkhNa3J3QzV2QVFTbEcrTm95b0hUb2FJcXlxWXBnL3kxRG42U3pKRVE4emt5TVFKbTFNN05uTXk3U0N3UjI3K0xPK1lERDcvbkVVUnpDZFJLRXU1b1c0b29nR2JGcmgxMzB4RlNEUmpXOGgyK3BoNmtJaW1jWWpzejQ2aFdjU3AzTWkzdE9CQ0JtYThFVFI1U0hPWG9jV3N2N0RtdGVObFRocFhKYmdIRzllTzcwUE5zUTl1cEhxNld0M1E2V1lqd1o4bjNNdGM1Sml2TGpSTXRpMGpMd1I0SjE3WlRUanlST2pMWGFRWDVzQnZFSFFWT01jZzh6c2drbmVvOVVPeSs4dENLTkNrbERGTUtqWWVHSFYzeUI3czVXaGZ1VktZSFc5Ym5PaVN0SVdDT0NEMkpmT0hPYXhkQnZ3bkVVZUVROGNGNEhENXlLaElYTVdwc0hzTzBjcU1vcjA0RlhpaURXaDNJblpENFhWYmNINlZUMCtmNkYyNGJyNzBhT3JhS2lmdUVXSDE4V0VZY21RaUVEMkt0NGpiaUxYL2xIVGxodjBqQ1g4L3FGb25uOWVFZU00ZzZiTTBONEpjY3RTS3lyTGE2Y21TTHZ1M3FneHQyS1k4d1RHL1F0Nmp3Z2pkVXFkakF4dHVnVnBQZk1rUnBCTGR2aTEybitTZElyMXNxSk4vOEF0NmhHaFNZWEdGOUZTeGFPei8wTE5YOFk1V1lNMUVXbHU1dnFrVGRPNGZBUmEvL25rM2I0RjI0ZXZNMVYrZk1ZVHFieExseGM5MmxxK3pSdi81ak4zeW15WmFlWmtPZ0I1Ti9zOW55ZEhTNjhrdi83d3BnL3h4TnYzNFQ3Tjgwajd2M1gzcy9sMTEvMHZhd3RkZi82eHFSMFN2Wmg2a1JRMEx5dTNmbG45dDVOdmQveGEyY2NBbXg4OUFJSDI5ODhxdHV4SmYwc1JmMTQyelM0THNQSnZ0WnNXeHk1Z2dZZGVIcUNZL2drbmhzdDkyVFB5c3RXNEdGNnBXZG1HdGJrSDYrYjV0azdlOHFZbU5EMG5jL2hDWkh1K0tnUUVJN2xnckZVRkIyajFLUXh2WlVwbFdkaEUwZlRYeFhXWVFpVVQ0SkZsUHVvVDNtMXlMcUs4YWYycnA5TWRIZXdXYkNFbUNGKzNyMDk4RVBJYXpEa0tOeHdyRlc5czJJdy9qNGZ2MmxkN002OTU3V0hUVFVkSXRqYll6MW1DQnBIZkZiNGsyOUV5VUlPeDc0V0kwZW1HWEpIdUpZQVZhYXZVYTZqMU8vQTI2allsZml4bWRPdFlUZGFRbHUwK3FsMVRhU09MYm1xYzl3ZGRMSDIxN3oyNkZydmRwMUljbUlTVHN1UUVIWlFhRjZJSlBtdlVoTnlFa3JLTDh3bGJpREdyaHF6UU4rajRTWkdveTNJb0VkWC9ic2ErTjlFbWlzWDVNMmJ6aENkSnVtL242K2o3TGRXMEtsRzZhZXZUNmJySC9ydThWSkxBNE13QkpkRnhmbEQ0dEkxMkswN0E5dWQ3KzRxMUt3NU4vQmlZcjNmRjdFL2x4S2JMSU5jRFMvQWJZMVh2ZWd5SnFNdUFGQTBWZ1phKzhyRVZjNHp3R0pFaDhkNU9tLy94TnB3ZUhSMklmU0xNd3hKZTJBTitWS0NlWGhHNG1Ia0JUMjBKdDU3eG1oQld3TTFyLytpdUFqUS9uSkF4VGNwQ1dTQzQ0SlRjbjRTakwxa3pGMVdRb0t4T0VhZ0w2b2JaL1QvTmEvRm5zMkpIYi9OZnY0dlJRR2VPN3g0bUNTaXpBOTBQVVVFc2ZWSE1PQjk1b0hEK09IUlE0OEQ4aTBlZzZoOHVVVWVYWTJhbE80OWttVWVmQlZzdnVBSmJ3ZXhZWEw3NUtOb0FuVDBNRnpJL2tXOHpWWXFHVzFjR0hKcDZ5OSs2WnFaSUpiVkJFTkFwNEVDYkRBZnU1QU8rbEN6ZDN5V09ZMDhQRWcvdmE4UXJmY1BhaVltWUZvbDVzc1gxZXVBZE40WmhBMDJ1NVN4MW5UcDN2cExuUmZ1blhSb0M3eTNvUW54cVkvSVo5eml6Vy9YckRnai84OXlpT2FJOFN0VFRiQmVCQUgvdGwwRUpaWVlqdEZvenNiVlJOMzlRc3RKY0JQQ25pbXFaWVhHTHlUSHVIQXJVbTNvL3k2bFpUWDRUM1lEdm5IWFNJd2tCNlVRcTRxMmhON28zazJyT2R3N3dtNGJzd2hzbkVqR2IwVkc2NlpTcUZQbGljZ1FnaSt4L0JEcUhMZERJRmN0dHF5akVUY1B6TUZTWUVQQW02aGx2NS9YTFJLVXR3cnZHb2tGR2lnSHpsdmdCell4OUlKS2pYVkdXSlQzZHB6WUJnbnNOZDdPRTlad2RpSlhnZE1TbWtVcnFIR2EvSTdkZ3c2SHNjeVExWEhHTlF2NXNOZ29oOCtUMEMzQmlVYnB0a1p2VG42cDJaNFFDOUxvaDVqc095N1JRRmNEcTg0eDdjeDhHT2ROUlpVcTBmMFQ0a1BOWXZVTmZ4d0xORCtrZ0E3aVkwZjFZOHdsRmpScHFYc0xGdHlUOEI3bDRUT2VEZ3YvNDNMenBST0MzVmFzZHNsazFjajdqdDdQTTNMajFSaDkzaUdIc1dGRGY0UWpJZ3NKN3NVVWxzZlZiNjVhY0dWOEpxWXVXamxrcW54TlNPQmZURGxQNVlpazUyL05RMWswQ2xWS0ZmUXVySjVubEQ4V3E2UHkyU1h3THNEZ2xKTFNKVkdtRnBqZ2lzdEJkS1R3R0ExN1dObmVTSERUdU44NDFIOXhrUjl4bHZ0OWxUSlI3MVpXTVphdzA3S3dWRnpYUzZKTTVsK2xJTGNYNXV5SjdPUnZGY0ppSmJUZUVlVUsxL3RKSDJMQ0hzOTQzUU9tQ0IxdzIxY0Z3a3ZyN1JzUS9KRTdxbFJhL2tXM1ljbDlBVEhnOFc0UmFnREIwcHdUeVZaek5qdUdLQzJaS2V0aThjOC95eFNvcFgzV1pMVkliTmx3bmxndUQ2Q1d3NXhVaVkzUkpjYldoZTJEVGJ3NDdpaEtjQk1ERC8ydmplTi9HaDZhMW1ublgrRlA3OTRZN1V1NkEyWkZVT0MwQTVXbURoY0JVaXJpU1Z6VlZ0QlNhUm9CNDl2MzVFajBGTWpadjRSRm5UY3gyUTBBcWIvUDRrY1gzRXRxT2R5MHhzRC91VXhUK1pFdWczU3pIbk1DbnU2c2RmQmNwVlY0enVKODUrcVdnbGwxTjVTVEd5QUUwUzY5MndUWm1mQkRjU0FjRXgrL0t2VmpuQTBxNmVKTU5zZ3JEMW1JVW1FV01heGtTN0pXRzcwc1B0dkJBb2Z1YmQvQ3Q3d1djZndjMlJYaHFlNWdZbXhwVWxGVGdyWWVieHMrTU5hOGpCalRRakR4WWdhMDhDdGpFRFN1V0pCZW5tT21vWnVUWkZ1cVgvNjI2UVk2YkQzc2NOMWxjK1BiOG9Pa0NKM3FKYXlIeTl3NXdZWXBhMXBmSjFCWkp6elZrb0JRNTUya1VnMjA2ZVV6TkQvQlBrdlNMeXYrbTZVdHZIVFU0a3N4UytkSkdpdE9CWklNbk8rd3M3VkxIQnM2a1U1NUZ5UmxSY2tpVFNPZUE2Z2tYQzhkU01EU3JLSmxSeUtTZ0MyNFVUVEZhZ2hBSGtPTjAxdUFKdVZlaUpmY3pzOFpVVVNSeXMrbWpiakYwU0tTOTRzKzR6VGtRTHZrTnRnWjZjbHNCTCtFSFF3dm9nOFA5NWdlOUZBNTVvSDd5YzJlSUpuOEIwMXp2RXhlamZHQ0U3WXMvbzAwVWgvNmdjNXp2SC9Cckd3WXNWczJSVFF5K3YvbjdqM2VTWnRDZHRvS3dSQ1NqamZCa2lWT1RLNXpyZm5IU0xvVERjN20vSXlXSjRPOXdLMFpFcUdhV2ZMUGlCdzFGV1VHaUx2QU5BMXRVaDVSUHpuR1EzWXVlZ0Yrc3p0RkRXemZCOEZVK2NYQnZ1NE1PMFBZMmxaT0F2dTV5UllVbzRWb2FlOGFBLzRUNlVZaTRMUE8rVkMwTllnSnkxWlVTNEdpOWdwVkhCdm54T0NnaGZtcWd6QlY3ZFRXYjUwK2VzZ2I1N3FacEJrUXNaa0gwaHM1R2ZiUVFHMHI2TWsxc3FlQ2V3MnY4ai9EakZiRWZYYW9ZcnRIZG1CMXY2bkYzYTlKbTB1empIZThxbW4rSE5qd3JEMGQxV3FDU0hvQmlTTDRtU2xEY3hLUndhK2o2WlpnZ1lZMFZPWWRMYXVvSEtpV3VmMHlUSENvK1J2aU4rZ2xJZFY4VFFyTjdHN2pUUnRGQ1VYZURzVmNQWVZBUUhVRWY0SmJqR0Vjbi83NjdnaE1IS21qRmFvdFMvblR6SjFkOEhIVnVTSithYmdqSXR1bVRTSFRHdWhVMDF2MjNFa3hNKzlkQks2ODZUQXdhT1RLL0c2UVRONDl1TEllN3ZyUUUvYXF0Znp5b0pkYVc0RmVweDE1a3dlMDhBZEJzbWJpbXRLYThJUkxUNlBYUEVhM3BFUkVwOVFhemI4cDBqNGNidXZtNzBDaFlIaGdMTlRyRS9GS3BSQ2M1MU5rN21ZQldOeWtIZ25QZTNTM0NXY21rUXNWNzlCOGpiOFZPM21KWnB1UnVHU1gxaUZCRGxWa0lhc0ptbllUK2VYZVNkQWtwdXI2aFlsUHIzQnNrTmxNNXE0ZFdBVEdnbEUzOHFoSWRrcGxFd0FlQTdzQWZYTWNSV1F4M1RJSWUyaE5FZGZWSUJnbU9RaGc4anZhbm5iQlZoMis1UUhOZ3dKdk9IaVJyWmUrOUlXcFdQaElkM0JObU9KeEozNkIrRHhySXBuVFZNS1JsR0lWTTVCVTRwQVZDZGFlT0RyMXF2L0RIRlp4QXE0VEQ4TFpNWDVpTTg5VU9iVUYzSGZwN1VKU2NnSFMvU3FlOHNwRGxQbUpvNXJ3L2pqaUhKTUo4ZElXRnNRODB2bkY5NUh1RjJxaHFidUtUMk1UL3hnMWkxaGxJem1RUitLVS9GdkR6anBTTGhHYXJ3azIzZDkzOHRLVlBROUVmTTlVRSt6UUlmNFFCZGRxMzhSNXJCenZkQXRZNWRHcjNrTWJVQnp5YUpLNXVpckZ4Qk1WSDNMS2FUQkpRdjQvL0NvM2U1ejZ4OTdBTjhySEFJRUhyRCszUjI0ZTFOcWRrZVQyOTFUZ1lZdXFMb0RvR1BtVEg2bzBtYlU2UHJDWnZqTk5GRGFVSzdUcEpFRVRLdC9mU0k4TVZvMGd5R05TSUkyWk5TS1kzU1JSMWRXYmpPdlRrOXBYTTE2SDVNNTc1SnByUTh6VUFXczlrVStEckVYSkliK3FRb0xrUzZHampwN0xxdEpZYWY2eENKcjk5b3o5MjZlSHVXVkd2VFlkSTY0S0I5Y2pwcTVGUHptek5zL1VTM1NPODRaUmRaY25vN0hwMWgrMmxrRW54RzF6NnM4VGRsR1V1UnRvMERWQVF2bHJvcHhnWFZ1Q1FTdG8zREFlRzRKKzlrS1EyMmE1Q3ZkZzRWeno1YjM0dmxndS9HWndTME4vbnh0QTYzdFpkdjQ4MGVpK0M5Z1NyRVgrSEdWTTA3OGF3WjN3RFd5aWNGWUd0YmI2eDFyQlBHa0FNbXBpZ1BmblU5TVhLQ1pyWTczbHNHdDhyUHQrTUlSYy9naTZobHFaU2ZXTkREL21jY1NsZ1RYSFA0Ulc3bnpGM0xvQnBJWVZYL25wblNJbjZXKzd6dXZCZk5HZVRMblcwOTN6OTZ6Y2gyZUduL2JnYlZjakhGSnNkSzR5citnLzJVenJYL1M0QXIvYjM4V2xLL0ExYStNMDdxazM2MEUrYXdKYnU4WmdzUmJNVmRnVld6TlUzSmtWNm5OaXJrVVozc3U4Uksxc0lCbCtPcTEyeEZGY0dWajhNVDRGcnUxSk9zQmdiSlUzaU5yaEI3OHlMaHJBMmM2dG5nUS9Hc0NFQ0FEZ2Z4TGxMNDh0TXMrOHVkV0t6UEFNb2NmbDV1aFhPc1hPSEpuQTBRRU9ZL0FMWnhmdjdubWsrQVplOEF5eVlCRE41cTU5L3BRT2F1aEtyd3h5VFdVaVdtVFAwWlpWRzg0SXZzdGZ2djRDbE5oZTBScENOV3dtNjIwK0ZYSkNEZW4xUkkySkZTSENDZ1U1V3ZlcHBQd29SUy9VZFA3RWZJWi9hbENJeVp2YzNqbU42R2tGZllEMlhqUzY5UU5GQmFnKzBBWTRlMVJiT1czRjcvN1kzV0svN0h2M2tjcG5zWGluL3AvakM1NE1ZczZlNk10VTFlUnZVcGVkZ3hJcnBseVh6bTJnRmJuZ2pLQkU3dzV1TWM2WEtLTmtSaVpLQWJKL0NtS2ZrSEpFeG5YcUdaUUFIaUpJV0ZQcTVDamE1QVh0RG1xaC9Qbi9DK2tlTjErNm5sTGZQa3BnYVpJNFRWbkJWSWNVNStKUVVyL2RzVVRHdlZuRndyWmxWekpIY01hYU9ub1dKTHVJYzVoUEk3S3N5YUt6dDI5U0c1RUp1a0VtZS9NdjlLSjVuRXp5RHhDUHowY3lYaVh4R1Y4cXg4YzN6NTRCaGhTaFZ3MWxnczYvUjhHNUZmM0dPa0RrMTJYeDZZL0Rxakkra3hYOS9GWU8vSkZ1dkNMeXB2TTlsaExvQXNEVGZkQmtjSmNzY0hINzNROVczdDlLOFNaK01uVk1NVHR1VTVLNG9Pa1d0bjFMdmgvaW8vS3JSMisyQnF3Y2VOTElEVkt3dFdkM3FoRUN1Y0ZZM1dwUmF3RWlRRVVaQnREOEs0QTkvcUVMUDhUTW5YU0pPYjFTSU1QSUtpQXBCUlFrQkE1WFY0WngwOUVORlh2ZlRzblNtdVBrNG5UY1pBZmpqdjFMS1ppMnRzTjZlS0EvdHppdUhVNEFiZnBsMmt6ZXpRVU1mMUVacyswOGdha0U2ZmZzMnRvYVpncXVVUVd0dEQ2UzYvSDkzd1YyekJ1NDVTM2xOYnlCWklGRzBTNktZemVZOHhTVTQrK2FnVU04RkVZaWNCbFNYRkVSaUFuTmZzYXFveUdhUjFxU2MwZWRiMVZ1eVRVVEFQL1Y0ZVEwczFvM2RnTDcxc2Vna1QvbjAvbWV6Wi93UWdMMTdHSnhFWnZ0cHMrVHYzb0daV0FNMmd5WDFyaGp4UnBoT2cvcVRQZTg1Q2h6bE85aUxzRm1icXNmM1U0Ukp1SHA1WkJPOHZCQnM4eFkzWlVBazRaYVpFMnFuWVl6SndUd1BwU3lHSjJ1cWxUb0N6ekV1WVR3dUF1MFR2RXVhcUhRRGk5SDA4WnZDczU0anV2SktBNkZsdWg2NlgyamVBTzJUc3dMYzBIOHNiR1FxaElnTkxiWHNCUloxOEpPOXRNUkpQeCs0QnRPOG9nVDVyQXFWcGRzUzk3RVZmdEtMaUliM1EvVDg5Z2lOSXZlSGVSWWtzZ2IyVHg5OXREcXVYYStyZVYxcDhWeThWVTBUcDRDVFRxNElmN1RvOWxKODVMZE9qU2ViNXdBUE91aUlmd2lXYW1Zc3JEMG5tOERKY0h1ZmJ1OGVCSFhYSWxKdThDdEUrOXVndFQ3aDZCODF0MGRsYm42TyswWGVVeFhlL1FFdGpVc3lHTU1CK1JDcE0wU1h4L1JtS3NuejFGOEdXS3Q1OFRxWEFub29tVE9UYUFyU0twKzU1WTdvMytiWE9oSWI5WE5kWnd0YzUzcG9sVnZyZVk2TW1iaE9xQUJqaFQ1aFdHd0pyNDhZLzNuVnlZNSs4a2RGbjdvV245U0Fra1Arc2NEeDBTdmRETVI5OHhNOVo0WUlBN3JuQXpFVms4aUYrRnBwa0VOaERJVWVLSVhZOUVkSGo5SDQwMXlxUGZHQWZrSHhLc2lFcXpXUGptdWZHZGgzbDFUakxsSHM5bDdlbDQ4MmZ0V2IySHdod0czLzlBN3NrMEoyZVZsQWlsbkJVRStyTWZJc1FGOFgyRUdNR2hiYTlwSWwzcDdWRC92dW42eWM0cXBMZzdaSFhyTVhaUFE1RTJ5b3V2TjBpM1IvWGM4TklnVTA0QWpFSDdUcTlFRkpVMjhSaGtNSklRUHQyYVQwekoybEF6YnBLSjhCcXZKMkkvdmZVQ2kxaTE1TEVkajJKcGlBSTV6SStwUVVLTUs1V2M2T2hxNm1pYzhFdlJQVVpYVzFFZ2cxc0dCT042L3BIMUFoemNwS3l0QlZreGRnN0pFNUJLc0NWd3Y5VFpEU3NjcXp6T21EQmk4WHpmS3hJQlphMVNEMldXdlo2V1RiSFJFbVcrS3YvT3FKUXZucTB2L0VqS056NG0za0cvaXQvMTNUdzUvNkpVZzliMUZlejdTZENYaG9rTDNtYXIxUThrc2QvWjlWZVRTWWp3cHF0cld4aDc2NDk0cTBBdWprbXFjK3ludzVWdmlaeHZoemZuMFhDaUFUckJNTFBKd1JTZ1dncXd5SFR4M0dLWE11MnpUQ01NK2tweWs3bVM5VlRHZFJRSTVGU04vTG0vNDNpWjdGa0xhV1ZjSktMMC9hS0FGeUFQS1ExeVFZa1BHYmxJbzR6OWdJanN5d1J6NzBiS2YwS3NHdHlqcHRrQ0RxYjkycm5DSEFUYk9EcXdINlVPZGJBbjg5VC9sV0dSOE1ZU3dQbFUyWnN1SnJYK3JDV1JmNWVqR3grZHRhbE11RjA4QmZ2MW1JV09SZ2c1aEEyYkRxalhmcjl6YnR0a2tmU05YeHZNZnVwYmVoajY4L2xjY21LY0lDdzB6eER5UlpSbXZtS1ptejZhMjd3NDZNTFZVWFQ4dXZlL1p4emtBK29GVWdtdk9JU1lxQjdHTGh1R3hqbUs0eTdCVldQT0c0MSs5R1RNTDFJODdPMXM3VCtzVGtsVElUVnk2SHJVNWVSU1d3Z3FISGcwbzhkeXpWZUxXbmthVDFjeXAvRFkzT0QycXFUSC9PVmxyU1AzT0lkbUxDdnpKSDhwVUFxc1BQeEVrZ2FKbXp6NTNvMm9kRXIzTTk1WkNUMzVuUWJHNmluQUlvSlFkb0lqdXRtSmRXdEdCNEVyOVBsSTFIKzAzKy9sM0hwck5UOXJsdlZSc0hlaGc5dVd4SUlobXZ5RDBNMldINlR4MUp0S2JZR3g5RmcvMWgyZFBUKy9sVXB4Nzk5WWdSTkp2LytkL1pxdU5JZVp3dW1xcXcwTXpJb01FR0RvaFFUTUI2NGkrYUdRdndWeUJaNjBnWTFkaFA2aitiUSs4TW1lbFlKSGZaQk95MXNRVW5yL1h4RHNNbWtISWhadWxBdE5NOTAvaTNpZS9EWFBVaVl2RDNrS0dleXN2Zm9YVzBTREQwR3ZNZGdDakdCVmRqS3hZOG9wdHR6ZnBuQmVEZE1JNzBmbWR0SHdvK2tiTGJxalJDMzgxZ1hTVkR6Y2ZNS0Q3bTlSR2QvTW1kVEFsV3RST1AvQ09odUJUZ0R1clJNem5JbzRMUW9KNC9UdTg3eXk1VDBKZEtYZEMzRzByck5kTXZJVHlaZXptR2ZBU3ZodWZVOGtzMUN5cFZESFNpYTVMWXhocWpNeVpZTFlhYnhReEpWWTBsbmlOUjFZcmxKNjFON2tiWU9LVnNuTEQ4RGM4QmJSOUlCWmZXMzl3SHFVS3VSa0hjY2lrWEx2aDNkQ21ERm85WDFtSUcraDdoTHJ1Z3IrN1daQ0hOeUZtaVZqTjdRY0tYMzVpTGRhWGxuTU4xMlRvTjJ2M1NuRTlQaFJ0RUVqWFBObWpDOE1YVS9Xck5ZOFdXbjZHb05mUzlSS1JIYW9XRU1sWnBaaHEzNXllT290WlhNamtWd3Fpa203ODVEOHJZMTNvdTRsU0JDWXpZaTlzSzZxeTlQUks3TWpRV1NiZGlrNkJ0QnJGY2RpeHpySTlEVlZ2bnNIVGszWXRac2VtdUR2ejFIV1VPMmczMEdjM3ZQNVVacTFvNGxRWS9JdkY1MTl2TmFnekk5aWZZcXpUaXFUeTZub2FLYWNnQVAraDVVTnV6VmhObnJDN2tmTjErMEFwQ3NzenZPcW5VRDdRUVlOSzJiZjNpdUFXUzduc043bVlPZSt1T2ZXSGo4V2JEby9LUU5YVk9vdEFTdFBKTTFvWmlmZDNLTm96NzRZaC9KUDVMRVhXNlhmV1lLRE9pNGVrMkVEOGtualZsZ0dWS3hMWnlrNy9WaHU5MGdDU0VmNHFSd09PQXcxdkVSZHV4QW5zanZhVCs0UGhZY090ZWQyZjRJVURJSFVNWFZRNGJIV3oraFdUNmJxdXhqd1dyQmM0Q29qblc3SVd2ZVIvcVVlYXExRVRodktwckk4SUFCcGhQVDNIcmxCeVdiazFpM1ZKWVFkd3pkSURYQmVzQ3loRGltTkhBVW9zVTl1ZzBKL0QxS3NBTjZIeXhSby83cmlCWnBuLzJ5N3QwNkNmNnNFQTB2bU1qQXdEMmtqY2xMVXFUcXRKaWlCZjZHRmZVK0NnQzAySHNybGVQVExsM0JYVGNXSUl0MkRzbGxwcG03MjI4WjB5aXhQZXA0RzVmdjJjSDk1dWR3ZzZldmpnb1hPSGowSU5JaTlWK2hhY1ZoYXdiN3UvamhqaWliOEI0OEZPWG9jU3QvdGNwYmhDQUFucUI2NTFSSndQYW9tNmpsWlFabTFxcE1Mb1BMMHAwa3hjei90SWR2ZVZLT3dOanpBVnhpbUN2SEJvU29QbWpWRm1ORnVvSlhYQ1lWeUhFbTMycWs1T2JGQTE5WmpUNWY2cXhUVFkwSnVPQzNlamkyYlZYKzB0MXAyUzRxMXF6TU9NWWVySTl3aHROa25jYTdIRk9XWWxjY3BUbk00Y1c5RE01bGlCT1dpM3EwbVlDVlQ3RjM4b3grZnFwOGprR2JrMlNLYTlaMVRFWEVOLzZLTkprQlkwajlTWTJkakNQS2VSUloxaGFrUnNRc3grQVlkV3RDSDVUOXRDYnRHc205aUFmVnVKZEgxbk8xR1NyYnhtSmh5M0o3MHpTZkZja2txU0RmT0pPOEptZVkydHc4RzRuVVl4T3dCeWZWUG1XQWlLTVJYeXBoN0JISklMdmVRZjQ5SFc5akM3M3B0K0lSbXdZWFBnRGUyeStveHNIZ3dtajhiS09MQ01JaC8vaUN0c2tUMnc1K3pITFR4U0JZTVIxUHpNOUtUL2VZUHpHcGE5SXhnVy96TGd5eTBKSmlnN1ZqRXluMmEwaDFKR3VSblV4R1E0MTBvY2QzbWFzeG5ZVm83dk9sZXUyOHNUQ3FEd0orNHNNRFBoclBTaTRZNUJnc2V6OHcrZFIwSkMzUTFGVExSWXZaYWwxMk9CSFZHaWxqVDY4SXF2N1UvYVZZVmhJUU5VaWpwU28vZWwvVUxFYW9SQ1Nwa3lPZExEUWNUbTN3dE5Jcmxid3BscXIwWXkyazU1dWtQajVxSGZNY2FSWHJaQndDQ3UxNTh2b3B0N3dYOGQ0MkRYTnNUNkZrb1lYaXI4Nk5VOHBFY0p1K3ZKSFdGNWIvYks1WXgyTVdHN2hYSWZmUElCWHpNaUlrc3RQdTZKdHBqRVplY0E4TTdrWUw0TTR4OWhveXhicFlTdGxRa1lXU2QvZVo3SFdBWUhRTml2djQ0R2lTcElDazdMRlFGTkxtaUI2SFVsekJJZDBoOUtJckYzWlE2ZkhQR2FqRk9lei9RTFlNbWg3bTBkRUFLSFJPR1Zuckg5bkJMem5Qa1RIdjRKWS94TTlJNFJoWXlaRWQyTzRTRTBGL2QxTExxR3JqRW1SL29QSDRZd2tDOEZVZkNxTkFxRWIzd3o2azhBYkkrRStiSFEwelg5d3JEWGNCZEs5OHMzQ2pld0VMWUh0OXdUbE5Rb2VaRmlPTDUrWkVWaFZXcE1VT0hzUENLQSs3NWg3cEhza1J4WGQxNUQxbk5IY0FLNVJ4b3d6NGpScU5Qb0tvRHUrNzMzdWtyVEU1WUc5Z0lxUG5nd2tEVjYvSWRnekhlVTYyRi9qemVBSjcrd0NwR2M2Sk54VzRZQUhBMTQxT3hnTnZlSm01R2h1dUJtcjlpN2RRUE1XTkpBenJtWXM2NElNU1lGMlZVL0xnbTMyMFo5OWsyU0U4NC9xTnpKaitRSExCMThpNkV2elV4dGdwWlJpTVFOWEorN3hRRFFwRWRSMFZ6bnNQK21IZVdwZVN2MWlWbVJ5WXVQcWRuR2pHTDVWNzE4K1RXSTRybVlsUUVaclprbjhlRTZsY1pBMGFuaE5jRk00ZDJVOHpqMUdkQ05UZmlUUWRlM2hrSzNNbmpNOWNoMGMyNTdsaGJZOU5hNjRXcmxpaEtoR0VPYlBWK29BOWZTMWRUQWxqWVlOVmFjNXZsQ0hNODcxYXVVU2dBcUtQZVZxRk5uTUZBb2lHYlh0dC9XNzZQVWdHYzVsWmZUaFlieG1SbEJpMGE4NVFKTjVaSURLSGFqYUNPaWlES08wU2tqSE9yb1hubUZSd2hwOHhVK3N3V1JGVWZzNXhpU0FHdU5mLzJUSWwydHc2ZUlUaTB3SXB6R3V0VUpqYk9wamwweksvTUtlQ2VlSU96bDZob2lxT0MrM2RxVm51TDRtRWp5RXNTWk51RWZCWmJZSTRGVUFVS2lTelRMMUNCdGpIUW5hOS9QNHF6YUxKci9tVUZNamRuVGxta2NVTjZNQUM4KzczbGpJcURNMFJ0c25nSWRmZll3U1d0Z0E2SkRQbjdOZDMwa0p5ek9aZVJUYVN0RHdYUlQ0eHBIMmJVYU5JTnFJSGZHeFVlbHJJa2MzZlNqTUhLbnJzTHRjRTZ4Sk5CTUI1YkhxS3J5VkY2ejhiSzRzMlJNRHlqSG9NWTIxQTVLdGpCOVZxOUluVlRiekJqeDVZYUtZNmRDQUdlL3J4aC9hKzl0WFNIV0E5dEpNbEVIblVra3drTTFPWXB2dHBVSzJPNnFXRWxaU29uL256V1pZM3AwbE1STUJGdEswYkNkZ0NlZEFPNTlJZDVoUEI5dHRJMS9IckhTdG1ZVEcrUG52a0tUOHdQdTJYTFNoN2tzU1I0NkdaOXFUTWMxc0FsSEVwSlJ5dEpUOUZzc0UrKzgwSEpRQmw1SUQzdG1iRWZtME5QZzdwd2tqb3d3T1huYmMxSHIvNW8zWEtOSkxnRytTYUtVSUxjYit1R29uaU1weGFwNjU1bzdjMGpETXpTWXBGNGRDL3oxaGF5YmJOdmlzdjRwVHNFVUVNUWJZS0ZnTWY4WFhYaVNFNkJINSttNWpST2R0WWFid2hUeFA4eVoxSGRjRHd3ekUxeXQvQWF1VTVpczIvUDNKeG8vaDZRR3FtakpQMzFOVXEvRUFmRjZ2VCtPbmR2QWlDWkR6MllJOHBTVXA5cnIvdkQyQmFrd1M2d0xTdm05aFhaeUdLT2kxNnlPa21mVkdKT0FvbkVqeE9WYk5ScE5DeWZCUWY0eW9qbFlJWDVZaFpUVU1YRmJCUm5lS3h5aG10ZTYvTTc4a2pQQWo3V2VUYWxaK29sYVBtSitwbVh6VFZvcXhPM0IyUnF3V29vcWdhQ2RicGlrZzlFYm9DRGJ0WW9SSklnbEZRQk1ydnEybTZXbHdXRXF2c0o3TDE4V2F6eks0Q3kvWnNKQ0I2akdoOFFZMWZHcDVadzlBZDJ1UVdhZHBQTktFWUtubTJxdjZIQnJROHAxUk9zNTNKZVduUnFpWkpCOG5sb2dmZjRFTWcyckkyNFlCa1g2TWk4OUNTdGNpT0FJRTdLMjhETFhDQ3BBc3Jld0g5Y29MQ01WeGpKK0N1NHVWazJvRmNTQ0tUcUdzWk5xeWxrS2U2cnRGWEpMNFlYVHhXSzVzQ2NyZjNRb1pCaG5nS3VLVkxCakFWV3hvQmZqMHdUU01KUzVDdHgzaHBJc1o4WFlxWFBVbWZwVVN1ZFNKb0tZYUUzZVlUdzlrZzdoSDh5TUxLeEpPaU80MFN1SHVxVVVkVFRIY2IzREVBWGZja0hSQXQyV2Y2ZWF6RGc4VE1IdVVnczRCMGxHejkxRWtRMzNWUmhKd3NQbnBDN1ZJY2plWU5zTnV5eURGTC9sWGswZUJKdWU2SUZjbXc3VWpyMW9wRmJWMHNmdFJaZzdrZTZNdzZOQUFobC82ZjI2VFpLSURVQ3ZiUDN6cCtMSi92eU1MSGpTS21jd0dzS1JuRHdyUlFLUEtlRkxrVzFVRlZJSjJqSk1adkZYOEpxVldSbWdRRlljdVQzbnQ0cEpSQlZFODIyNUxZZWhNQjllVUhEb1N0aHM0SVl1T1J1enBJYWxtWlJmanBaK2tISytScmdxWnZ4TGNCV3pjR1FoNTRZMTQrK01CblBka3JTWDJPTjJiemdRVSs2OHRmV1hHdmxiMXE4YzhiK3hoR2FJVnZIQXR1a3BDbWxybmhaOGw2QTZwTzJkMlAvWU1XdVFHMGRMdHBXL3lQMUxLV0FWbUNIQlV0QU5lcnpHVzJVSXpjWUZIaE5UVG9lbUpmK3A0NVB1WkZ3VU1DMWprNG9OeU5GeUE3a0VCQmNpaUJxaGhzVDJ3VDRMWFNPdGdYaThmbm5XSElZd05WYlgwcERVd25qejN6ZEo4VytKN2FQN2ZPcnlyeFA0SzZVMkJ1STdkVW1NMkJJL3BHV0JJYlFRT2tYRmRhcnNvZjdZTzc1YTFyaVNydjE5U2k5K3lqMDcvMHB1YlVibG00N0pqUHp1Qk5DWk5qKzdnZ3FBcG1XQk5udkRNbFlVN1VuYXRZNzhYakQzUnlhVjFGUUxtY3ovSVZxVWUvdmVRaGhXaENZd0IvWkZJeWlsZ2JxVFZTb01YZFBxL1RBUXR0L0xVb2FFM1FPcjh0U2pJMmtKU1VHeEhtQ3ZvbFJ4U29OSFhEUWg1Qnl1bnVvdWJXdTlrM0pCQnJPZTFXTU9rbUpuWG9WUUhJQVk4SFQzOTJoTDUvWkhqV3A0eWZqWkxoVGtwSi9JQitkQWw5Nm1tN1paQ0Qyd3dSZmVia1YvREsyZVBBaWY5S0xWNDFGSjRMbHJTMWpYeHNUcTFSYUNZa3huRmpRTkVXT0dHNGZ3a05Wd1REQzFQSXNsNUcrL284UWJGOXkrY2dQU2VIUTZ5QUk3NlRzNTBtbXhJQmFRbTVrQm1WaU8zOWZDb1I0WTg3TkEwdXh4bzlrOEdKa0cvUjdwQi93YmNEL1ZtWUhYSk43LzVMNFBHK2dWb0VPL1pmTCs1UXRhMGR4LzhQZ25lWjdHU213UVpQVXVLN05ZY2VmMzdnTDAzWktlWERYN0lpbC9CTTFSVEtHWS8zcnVBUkprVE1XaVpYSkNPaFVqeUh0R1NrdFZ0d08rRFNQY25MWUVHbEduMHhWeGloeThTZmQwUU9NUDdMeGxPKzFkUzBQc0R6azNuUHMvbGdrbC84a0VOc2tpTVMrdlcyWXNXVTVtYzV5NDUvTllVZEFyTkE1aStMWnhnVFdJTndOSlV3ZU4vcG5WUEdJcHlHV3lScE5UcmlZa21sNHBjenBhR3FNRjFOaVpoekFRemhzeEFLSDRuTnZpMXIvVnJiNXducFRkZ1RvUTlXUFNJVGRYYWo0K2RzN0xXZk5XZXpYWGs3bmlybkxxUW83Ump6THFRYVJqWnlYSTZNUkpTZE1oeFA4dEpPaDQzeGNkWk1hUzAyY3d5WDNyWFVMV0llcW82dFFMR2hvMmZZSWJPWUpQVll0UHg5M3RhVTB1S0VhTi9ENjFiU1J6Q0E0NjNyZXorbkdaRHpGTHhvbmFpVXdFNkE2YXAxSmlsTzRmVkJpb1NDTFdJNE15UUNzL0pvVFZZaWFRN2FNQm5jM0xsTjNIR054VWFNT2NEcXFFOUppQVJFMmlMUUE4d0x0Sy9QUzlNWWlNMG1kOTFpbS8ydGVZaFR1d1p0M3NHWWR2TXR6Z043cWRYYUN3bDNMWGxvZlMwR3JUT3R1eENvMXZFczFNU2NKUEVWWVJpaTBkNUVFdW1wTjZ6ZWVwdTBwOHdFNlFwYjNnZTFEc2tseUZhQitxUnNTMm1DdGFtUlJhV2dJN3VWbGNrOTJ0SFFLRE94SFN6ajZjRVRPblIvU29PbitHRlJrY0dSbHJCMW5uNStad05QL3pkcG5IRC9VaDcrVHpVckJKZnVmYzRnQ3ROZ1pTZThZcGh5aGtmM1ZmL1M4SFhXZGliS1ZWKzJ2bDRrSVJxZjZxbzBYQ1RUODVSY1RaZDFRYUFGV29vLzIwS3VXZzlDUmlmWTh1QmpZWjFyeEw5T0FvbUxIaXVlQmtzZXkyRE13QW1iMnNZcHVUUjdaY3Q2cFRqdk9Ia3ZyNFA0Q1lZRUhKT05YeURjYk9QYW40NTlUMVljZStLa3dkamNpQ0VMY1hzYUkyMmozTXc5d0JpY3AyUVI1NFRrc2RVVVk3SXd1UmdhakplcnN3dmV3dVdTODN0NGFPRUtXUE1WNGhQOXJ3YmkvRjlkUUI0Y3N3Umk1aXJWU0dNUElnSlVrQkhpZU9BU1o5dC8vc3h5V0poeXlWc2tEOVdiWStWZVZxOVFJcFBEZlRxS293UmlPUFpBWENTNjlHaWZxQ1JjMStzcklSTmsrR2NDRmNTLzFHSEZCTXhua3h3bk10OGFIVkJwT1F0OFRONkp4Z09NeEdCSW84MlR6eFV6UE96Z3NlYi8xSUt3UngwRXF1V1pqVG5HZ3V5RlNhbTR5MU9mS1o2L1hzcThYSUt3UjlxRk9FdTBlN0M5OU5JdERHRnFlOGprL0I3dGZtVHQvYkZuK2FPQVFHVG4vaHZ1cjhNeEdkN1dZcGJQZDJ5N2dmMXJxMS9tMjhaVTljRlhqUktkU2FueS9ETnVMcnpOcVJvdjY3eWNWOTZRQXk1SE9objg4dHc5a21tNlhyZW5sTTNFS3VjKzJDVDNxOGJSQ3RlblVCK1lwMG5VYjA2ckxzMjNScmNsejFXY0hSZWtvU0JBdHh0ZHhmaGFOanMvdXZCM2ZzbTZ6ZVBGcmRzcDU2MWFNSEhUaWJ1Q0VDL2MzcHU5eFYvZUxlVWV2b1ZidmNsYlEva3prc2ZyM1BiTjNiMDNjemY0K2JYYnh6ZmVIYWIvSHdRODJCOGMvdXJuVGErU2kzbEoyU3lYaUpIeU9uZHR5Q1M1L2NQWC9XQnlPUDUvbGdQWkdtWlpZZ1B0Zko2Yi9tUmloRmY1aFE2Q3hKa0QzcDBhWllOb1NZNTk5WXM0NHJmWk83ZUdVaXdUWVVVM1BhQkI1RVovOGhJeHBYdFoyc0Nsb1ZFd3R2eHFXV1pLbW5KaEl4dnBwRWQ4RFBsS3Q1SzVOaFF0S2hKenVuVTY2My9qa1NSOHdtUERDS2Y3VUZoNEdzbWJaaGFiWWxURWxtVHUvOE90bGYrd0JjbmUzQW5sWWpUaTE0MGlIZWJ4Y0FyajhvQXRDN3d5M0RSZUMvRnNIVnJPdlZBMlZQeHgzNXZJOFVSTWxPY3hPUkd3YisyOGIvSjhUM1ptOU5LTmUyZ0tneDJjalJRb1RVVXBLRnNESGFkUTE1cy9Bem8rVzNxTUxmNHU3SXhub1VUUFZwRDdJeGtwdVcrNHJDMFVKNFk2c0hJU08weWJad09YbFF4cVJ2NVNxQnhVcExqMHM3YStHTmNsMVFDd0h3NVRPbnlKa2I5TjJ5cGlTYUtDb01nWGcwVGhzSndGM3YwRExld2t3UXFLdnB1RURzVWVTT3NqYkhnelBtQW1pbkMxOTFKMWpXaXJDdDFkNjFKbStuck40a2FhenpEQ0YwSDdKL21paEhsVGZqMjg4UjJDcERWeWwvSDA1TUxEZ3BHQ0cwZXhNdDNqOGM3Z2lXSVYwRnkvZFRKbTI3dEFoemlwbnViS0x2Ni9ETTlEbDVpc2lldTJOR1Z1cURpYlkvMUdSVUhZcWJPcm1ETEZjZEhzR0F6RGJLVlBOZGR3SHJmajJBMWRzeERqVHFvMUV1Z1FkTU9ubzdDclZpcWpBZWtVdEVwUUgrK01sUWtoN3lacHdMcjRFMGxHWnh2WEtoVUU2eGFZbCtIeG1IeHpDQnEyVGFHQzFEVE1ud1R3UFpkUkVsOERWY2J6RC84bGkyWW14OFBNaVVQazNqZG5ZeFlJNm5vaE9aeE1YeU52aFVBNmltTUF6Smxic2dDclFMbG9oOEo0ck9WYVZ5YVB4bE5sT0lLdFVBc3kwQURjbWVtRE9lRTZ1emZNK1RlSThDTmFZbnhHM0cwcTVyWThNK25hdm9oZElOQ1RSTEEvQXdic0FWazR5SUlneTU3Wk5iQWo4VXhYeGJiemQrNkxaeTZOMjJkK3c4Q2txaHpzanhjU2xtcWpVa3o5ak5QdVk4bjJZQzJFcUxiblhSd3UzKzE1Znl0VVluYWRpS1BWeVZYbG4vZjNpYmkrZzlzSmdmazNnTjdicjZxbWw2U0FzYjZnYTBHbXprMWRhdjdpd3lLeVJPNWQ0R1d5aFUwa1hFQ24wNmFJa0xiajNnK2ZyeUV0NWwvWHQ1Sk1VendtNXRtb0hKN0dycXpJUFhETWhyOGNjR1B6TXYxeUszWjZXa0xHN0xteENyWHhGamxEOGNUbHJJQmNrbG8xRFBHd1VNSUJJdU94U0g2MDg1aDFqRmtxWjFtVzdNSFhtRFIyZEFhTUxqcDVURWdsWkFCMlpwbWRUUEhUYjQ5L2EzNHppNXNORnh3VUY5dWl6OVRXT0ZlZDM4SStaUXFCUWMwNHlpOU5sYzZQS2FNSzBzVzdUcDZseWtlQVhEZ0gvU0o0SVhoYzMzSXJqelQ1dzRzTHk4cm5hdEVMbHpITHZ6eWc5OTNjeDdkRGxORiszL3g1UW1pRDg5TkZ6aUFUdGRBNVR6bXRZNEo3Yk83S0VxRUxLVHo4MnNwalBXRy9qTUZwNVozdGZFOG92UWhKS3Y0NU5IY3JRa01wMmpleWtQQStSUW5GYkh3YWNzZGpMbTBXcE1rU1BYeFkwSFo1eXV1MnJHZWg5SXVNd3NYby9WOWlTSlYzd0laUTRuOW5rR0dwMmJZUFVRemdKQzlBaVJqWTk3UlIzbkNTMld5U1lDbXB0TVQwRlBjZ2t1WWNWMUY3VE1YNnZLZjZzU3NkTkg5NzRBZG1jRnYrSFBlSzlkc1o2TExUUUhmVmZxQzU1c29XQXdheUMzdTFQS05Od25PcWJ0dGk2Y2F6MDU3MWkxZ01RbmhZdk1FT1JEb2VLZUYyWHpuZWZqL3VtdktmMkJHYmRXeUxhVTdTWEl2aTVPNVBKMXQrWTlVc1AyeWdKVVk4M3pYMHdkQ0J1TEJqRmtZdFBRS2J2K2tzMlhJWDRXc1dHU1Z4ZHdlcENNZ3pTY0lTTk0wTGVyNmNTazZKbS9NbmJzSjVoSXpFTEpEWnJ0T0prMks2WTNjQmFIV2VtQkZmYnFvVXBGUHRiWlBDTFYwL0llSVpSRElxRGh4Y2VwakxxbTd2aFV4SGdOMU1tY1VrNmVRNXBqVHlOTTE1RElnYVZsa0JEVmkzTVFhejZ0SlhzOVBmdlZTSzZ1NDc1aXdtTkJwV3pnYVBaNmJudUt5Qi9sRE5yTTFqTGg1OWNQcEdvbFhUdXNacllOLzFhZTVkaGtoYmNjWjZVS25YQjJYcTVlZ01ESDR5THFWejRCOEdVWDJzOVNYWlBhbkdZOFFoT2E0Z25PcEtHdzQvWXhJRFhCbUhXMmNtdXBVRmF3bkZxaW9tTjVVaTZNZytzc3hjRmVWWGpzR2NENTBxZ0FTZHRUajBZZmZ2Ym9mMjhVM1R3QzQ1NzFqLzc3c0RVM1ZYWVhrZW1odTJ1THJNRGI0bjU4MG8ydGpTNWc1SXFZZHM2Z0Uzc09uQ2dnQ09UWEk2SmRWeU1ZSGtFQzRoaVZ1eXFKc09oWUVrNjRUd3VuckpRNGk3eVFlOUU5WXo5MlF4TWlObWFkV1pjZTk3VE9kaTY4VmVMdk5EVmZFTWlOYmxMZUtjZnEwcll0Z0lxQ2t5Y0s4RFJOSWlvckxEa1Rac0hsQlBibHZXV3Y4czY3anMxbVZhWHhiZXFVZ0ZBbVBHZzdIaUdreFdIbkxVNks5ZC90cjdlUjdURmZqWnhjMGFPQ2R1Ky96cHczL3kyMklUY21UK3ZLV3dLakw3Skt0RWJ6bFV5cGFPWHAzRDhqVUZHZHkwK3dERW5OSUtYcTQ1cnFJYm50cUFWQUZOWXdtd1lzMHhmWFdsOEdadVozYjF0TlRWbTFpSHZXQmF1YVkvVXYvZDRwbDJKTEtvUHJXdjBySFdYa01SYll0cnV0T2FLTW42S0ZGQkN4QllVM2V1VVpmVVNpZGhqMFhtNENQZ0dkODl0alRGNUVpc05VYXpMZWdBNndJTzZtUzBwdHZqY3BLTEQ1SVZmN3RQRDVFSzI0RllkM1hVc0dJK3NvTmlVY1ZMaitwRUxTTUhzd3FqYjNjZU1DODh0QlUvYWpHS0EyMS93aGc0MHJHdzhKc2M1Z1dvTjZaam5FUCtrMkxuQmMxLzF0NHFpcEU1Y0t5Z1lYSEphMXFZKytqY3piU0xxQ2ZCank1V1MyaVpSSGxTWW9wOXIzbXNaWm5SV0dWcitMbHdjR0tIVEMxUDhsQ0daVmVCV0hPeFoyaHNySko3Zm1nYWNwb2MxYXdYeklKc0U3Rk5yNXhZMWlJQU91b1U3N1VMZjNUWTkvMEQ3YTUweWRxakZuaUZUMVIzcE9EVWZZLzZsUnRGT3RkUVBYemlqY0t2WS95VCtoanJHTElUZ0pxSHFZSWdzUUpreldUUmVTRUJjRlhpQ0RDVGJJRmR4WGd5TE5uTzZLMkFnRWFZQUZTU0FOUjZIQml1bi9RNGFValJ4N2xCWW5MZlVJanRWOTI0TFNoZWRaNGVkYzEzQTgxa1ZKbzVzeEVoTU4wS0RKRlVQU2pBejJGdlNWNnpzQ1VTYkZTNlE2V1hhYktPZ09nTkp0U2tKVm1mbnRHR1BDRTlzeE10Nm1VN2lyVW1mUFRzM2lhYkpxSVBDS3Y0c1J4d3NCRGdaRzZqYlFCY1BZR29ZMHU1VUpIKzNseG1lU1U5K1kxN2hoOThvSnVtdWt2dEVZUnh0cWd5MlJFQXE3dW9RVi9ibW1rZStIREhJZG1xNUt1dUppM0Rzc25jdS9PQ2tIVFBadzg4cUQ2cHd4dHppUDhES3NMeUtrcm41YjVBcWxBMTFZd0VneDBIT1RKSk5PZ0Y3NzhPQ0dQNHUzaGxqYU53VHU3bFlSb1VIN0FiWlFjUEROak1ZUldVZVNpblEyMFpZelFsV0J0RDFtQVROcFVQOEowWC9XdzZ3cUR5V3hrVGs1MDZaMkRYL2FXYUVQbm8ydWt6bFN0eDZSeVE5dmpOL2RlWUFvT0orenJSVzA2eTBGbTVSMnkvN1duQnAyVVJvaVUrbzNzU3FqUVZLSWtudlRUcDdCZ0d6elFHSk5EZk1UN01ncWh0R24yN1lybjRzV1Q5SWNLZ1pKbE9vZlI4WS80aTFpM0ZMSTBNMlJiZ09Sdlo2ek9KSlFRbDNvZWdyOFNSbU1XRUZVT3dKRThkNkM1M1NxeW52NEpQYWZKay9tSXNTQUdjczZrcys2QUIwWG9KT2lEZU5VanMxVWdzNzZoZUROclljUHlYTUJiUWRCSnlOK3Q1YWVOYmNDVFdiVTdxU0J6b210WDJWM2xYQU9neTVoeTdCc0ExS3BWQ3pEazY3RWNnZjZQRXNWcjF1VVlLMkp5WEY1ZlBwNWM2WWJvOTBCZUVQU2RjT0E3QU5nSXdLWEdobWtFY2QwdkQ4bFl4NFRzU2lSNitzREtUTCtPcURqMnJoUENHTWRGNWg4OExWdThFRTArWENVM0N4T0x2d3N4VTJxZTJvb2huRTRobHlCTncwVjkzbmJPR3psTVArQ0R0ZDJkYmZiUGxFS0ZqbjgxRXVJKzlXMXpMc3pwUGhuOEg4cE1lbndGMms1T1dxT2tkSTZhNnNKWEZuNkVLK0pxTjBkZXFrbVJoU2duSm04d2dINGNmbHd0UC9kaUovY3BFR3BTZGJMOG1vUEQyUUQ1c0p2ZlR5M2lLTkNlc0pjbDZvWDQ5alFXVzI4R1pyM0RkTC8vWU04MDF6N2UrZldjOUFzVitqbTdKVHNISlZleU1yalJKbUgzZkorQTM0UEIrTXNCN3Z3Q28yVnRvNUFLL1c1TTNLVWRIcElPU2lIRHBLaXZJaGEraFlQbzBnRm15L3NYTythR21Zd09UZk9nSEhxQlNaakNsNkE0NXNKUFEzU0p5Q3JYMWdLN3I0QWZ6eW14dDEwekJJQUhRdWFPamQvWXhGU2hya012S0pDN2dCb0tBV2c3NWpvZXlVTEp3bmJFK3R0MFFpZC9zZXMzUEsrOXhXSzAxRDZzWkQxOTFNZTh1RjAzdGFVK2YxSmRVWjl4S2xOOE5JMnA5aXZpcVFJeGFYVUc3MFFXV1FvMWY2eGh2REliOGplcVVoclNNaGRPOWJGaFdoSzhxWHRrU0xQTnlpMVZvK0JITnBQWGVqNC9HYk85MkV4NTZwRWpBTEhiMldSSkZxM2ZGK2xBaW9kMmlxUVArL1NGeE5UK3BzYTZHVGRYbE9remdFRWN3R0w0WnBjcVhZL1MrbW05M2JMQUlUajhra1p1OWxWM0FVVG8xWmNEZmc5K3oyVXZYako5MHpSZEVabEtMS2FNNkw2amp3bkU2SWVta3h0V0VRNDNnYWNYdmNvVXp0dXQ4d2ZPZXlETjFzUCs3WU1tS2V4ZGdoeHNieVh2SlFkL25FaWw0QnFtdzZRdDNKUzdRb2t1OVNNU2tBbE81NStyR2o0UW5iSUdOOTZDeXJ2YTZSOTdUTWlUTk4xWWxyWVE5OE5UUXBFUVZrSWsvUzQ2SVZrWElFejBmM1oyZWp1U1NuUFZlTHFJMWlDN0JQQ2tKYk5aOVdFUGRNakJOekJqQmxDL0R6SWhBd253TjVsV2V1YW1ZUURzVm52YWo4ak9weFQ5dlpEdGM3YldvUXFYeVFQcVJITDVrUXZTczdJQXQwdjNuNFh2ZkJNMmNuYjl1NWVJQ3oxbkhzVXp1czdIejlURGNTYlNvOXArRHo5K0VMSklkdU9udXZ3akcrd2E4TlRzSlorOU9jSnM3UDJkbCt5NWdCaWhYYlV2L0NQUStkQlJ3eGRtWitRR01DNjFPQlY1QzE2TkZ2SEZiNm1sOEcrRHQyUVEyalEzUGVkNEFuNzNidnpDWTk1MWhFcS8vdTY4TnZmaUg1aHUyM1NOK2ZNZFk3RXRlVyttc2tDOWFKd3krSnREQlN5alBtbFNFKzB3dFhEMnVESW5hZ0g5c3JFVWdnWXMvcEloVzkwMWJUcUQvREZXMzd1c3lUODNVek5nbzRNTDgxWjlzeDlIVHIydnVaVytFU24vUk1uZUdYQ0YxbVJ2REgxa3pscldhRlpseGt4aUlma2RnRFptZktQYWFZc1BZYXVXMVUxdXhlb2UvZGNScW4wczhVY0NTQ1Y5cDJVT2RQUkRVbzB6b3BMb0dYejVoNTNQZ2NNYzgzTWpWK0lGOWQ4RHd3aEROOTN6QTN3cmpaZnZGVitWMnJVQm80R00yWE9hbTFoQTNNUm1SU21XVUxORjBIVEpnTHN5WlZVY09hRmErdjlobTFkN3BySWJHbXZWVUdiT1UxNG0yWlB6MExQcHFHSHQ1aWozMTY4NmtkWkczWG52ZXpwL3VTamNab0VKb21Pb3hUWXVVU1RUZDdZeWpoY05iTHVzTHg1WG1sTzFJWUFNUDB0dWV4VlhRY2x1U3NFcFlWU3J2Vkl3SGJoOEdjcGprY0FiaE54ZXBSMmtJWlpHWE1BeGVIUGR1bUhYK1AwTU9tWVRmbVp3YUcvWFRiZHpxNTlJcFpXdlN4bEt6cDR5cExsRGdOWFl0M0t0V1lhYnkzK3lSam5MYUtsRXVnQjY1ZnlKY252RTFwc1ZEMXVXa28vYVRzNXhzZWJlQm9jdnZ2SXdLL2QxdlVVN1E2UnIrN2lrVzNJbVlvN2RkRHE1dWY5dXR1WmMzU1RzZStDRUlkck1zcEM3MG9oTmRrdE40eW5sZjhpUkRXR0tMRHcxYTJ4ck1renQremZ6UG5INy9ZNXZubld6V29JdzhOWS9UVy9HMTJpQ2NabEtadW15K0ZSbDhrbTJFTG5GSWZxeXJ0ZkxXdFgvUU03WUxvTmsrOXMyY2FQdUlWOExyWU56enMwejVmYnk2UE9YVTl4K0RhYlM3amt1T1F2Q0hvdFFQcFlKSUZBZ1RXUVU1K1ExbHhZT0VyUWtIMHdNMDlnM3VhTy8xOVBpL254Q3doMlU5MlJFSldxZEFLYkN0MVJ0eDVrTk5rSit5TCtiOUJ1LzhZNWkzK0VXVEVzdU0wNGdQbTdyWUhsYjVUNGRuZ29Jd1JqM1JDZ3gzYmQ0T244MTQ3SGdiOXA5c29tZmZxTVlUeDAyK25PQVU2SnB2bktWRm9rK2U4MWJaSUovWnpiRkpkRHJlZGxqL1pqZkE5cnU5VzE0YlgxMkovcWRldHJYNjE5akk2dGVIeXEyck1ydG9GVDdXRFozU2NweGJKNjMwcW0xU2xPbGpYYnVwNzBhckpFWGEvR3MyaVM3am1rUWJJU24rUkR4TjBuWWJMUWNwSnhBSEJuRVYramdndkMzTHZMMHdmRFNFdWpITUl0WXQ5VEVsYTRHL1UwY2wvSnJacSttTE93cGxUdG9sSzR3MW9za2VnbUFmQzhQWjkxZDBSOU8yNCsxVFp6WmtKWlRTSnBkaHlsU3EvblpsMmRRRnN0NE9yT0RGUGNWTTcvSHBhTG9QcmRsd3cwd3BGNkhFNEVmU1RzUk9YVC9CZ2psRU9JUXo5ZmpsR0dVZUpiV0JrK2g5QXRLWTJVYno1Wkt3Z2pHS0YwYjhIMjA4U3IySTIvM1BqaDlFTENUZ0xwTVhYLzkzMzFkSm0vekFqZHkxazBmTkhzQndEOENMSjhpd2FXbVkxREt2RlV2aDhOZVBqK0R1eGlBVGhSMDFOVmhYS0xGN3hHOG5KcWtlTWUzQTQ0NEJkMHdTNWlWbG9QVjZnVjg1cHJPZ2loenZ5NklYSSt0VjhDR01pNFhnaGdUa2xJVGFoZjJZa3pxaHhueXd0blFUdk10c016Qm0ydVA5NlBrN2ZhL0xVRmJPZysvaEFIS2IvSVl6ZTE5MUdBWlY2SGc2NElPcHdZVWdCcXc0QUh4WTl1R0tJQW1TaGlLcWtkUENTcENiS2IvRlFmUGFENFExT0tOb1J1eGNaakdRQ3VTcThMRXE5cUtPbjkxS3JzQzBNME0zajlRd3o1VkYxU3A3MEJEbktXNHBDTC9kUE1XU0p3dWtHQ3FGSGk1SXlLUnhrd0lIMTFIVHA0a2NaWUg3U0RFTGRCTEtsMXI0TldYaExzT2RZNWg3czNPOFc5THAzNERwOVVyMkNvOWl2SmFDRTEzSDNsbURuNHV4WFVsUVFEYXRySEdJNkpsUjRzR0dJTHNialNHb2U2eDZETWs1QUIzOHdkTkVHeUI2bUZDN0JHWm13YjZFZHl2RllYZTdOc2RhanVQUlRlalNESzJWWFhoMk45SHYrbDZROEJsQ3VyaVhpODkyS2VJdGd5ZlhMVm4zRURYZnRRN2ljUlZIWnpmNlkrY3MrOFZodEFEcHIxS0c0SHJucnE5ZE5DKzVFc05USHVJRE5VcUdTbXdMMy9uZW96VVAwOXRjSklYUzAvZWpDalhibit0ZHpabzR3QW5vSEZXNGllYzZWVDNTK0JRVWFiQXhRSDJhVWFCYVFFdmd3UDRzdGRDRklMeXBaMzFJMFRQeUlhSjM1Y1B4YWlCKzNTTm1EazVINTh2b3BtNDRxeVBJdUFtSjhtMXRKTFJ3V1pYeGhXc1E1cWVyTllrZTFnK3Nnb2FIZENrRWZ6K0V2YWdQckNGeWd2UEZZUFlHL3IrbEVYNkhtZXl1NVBrZXFsYmFWWERoa1dVbWdaL0RiZVhmSm9vOGF6VXlRNWFqTGZKamptaW9HYVJjcnkrTEdKUWFKY2N0VGN2dE1jQ1F3ejdHSlJCYjB5UC94L3ozQXU4NVozdjZYVWduNWFjVldCaFd4bHdmYTJRZFM0T3NrZHViYTg4TEhwKzJoZ1g5S0QrODJDaTM1TXZsS3pmYThNTU9WSm92N2o5NWF5VUZSQTNzQXJDbnpvVDJYamo4Vk9zMXJnSjgwQ0NVeHZEUy96V1F5Q3NWYmEyaW9kNnBmRUJEQmV2UW5yamo4clp2SG1rdldkUXNXQWh1azI5QVpTSjFZQWI2M0h6OHdORUhHMzRPWFNyd25VM2lXSldoaC9lZkJ6cXhzQzlnQ0o5VVJNTDhHU2RpRHgwdUtJUWVhc21IeWlQM0ZZOUxvWVY4UVJGaWtJMVlrczhBdjViQzBEYUlkbUkwMjQ2bzVSSFBScW9pTnlRcGp1ckZBVzRsOXArbUVIc2QybWlaZWlUUGx1QTJ2VjlaZjFYR0ZWamJUMkQ5ZmxuTnZ1dzZGNFh2Um9VOXFjbXV4bDdiSHU5YTZ1cXRLWEt0L24raGVRZGRobGFoL2lYZzFscWFUZm00OXNHQmlGRmlRbllqL3RNZ1pFSGw0UndSZGFEYWM0R3FUVjh2NndwOFkvdVppM01LRnpKbkdlZ1Z5bnpkL1pydW9aYk1GYnJOOTk0bjl5eXJQME1Vd1RrdFk0UVFqL0NhMy9FWVAxQWVLc2IyWE16UG9SdFg0cDBBRko2Uk42SFNCczhVcVZVQW16S0FiZi9zMzN6eldPTU53RTBhdVVnOTNjcmJvWEZYaTVhZ2dnRHFPSWN1THljaUdhK25lQ1NqQmJaMlhWYjkzY2JlTDRkYkswdUZYelh5MDJrdmVicUdzeEE5ekxlbmw0M0pWaldpQzlkdCtkSnJlSmNUZVZWQllUdmtOaFhjc2JISUN1bTA0Q1NpemtsZVhob0VYZkJ1Z2VoaTZvV2IzeitxemFsY2xQUjJNOThobGZsQ0Y1d05vWEFSUlovY1ZXY09meDlRY3RUbjBadm1UVXBOU3A5OGxZSGg0dy9DLzZnN3NjZlZ0SEZpUWFyUzV5eFBuVTlxTEIyK2ZsdFZKR1NoR0pGYk5iaWpSU2N0SXJZR0xtNG5VVDV4ay9FRUxoMU83NFpqOHczZEYrcmdGb2NrTmVVSUtiZzVVMXFjR04vQW5sMU1wd2R0Ni9xM1dydElnM2pHMFo0SmlVaXVhUTFaeVNZVjZ6QXRyRXY2WUVKNGdCMlF3aitRWUlvcXN0L2dpbmozLzJpdzByYmhXVno2MExDZzdLUEM4bjYybTdGUEdyZlBSTmV0eE1pdXRFNmVubHB1UjI0eHZYbFVuL1p2MkQ1S2I5VlcrVUtrUGFIRmYvU2lRb1U5N0NPaWh6WlBhdVhsMHdVNmlnYWREaWZmZXZzb3AvMTdoTGJaRGRmU1pTSmIwR2hkbE44eXRKdE9hTWhtd3FDU1dyamo3MlZaQTEyTjlVVHBwczFjaTJ4VlVTSGdKUVRQbk1YVEwzY3gxMndPWjhNQ1ZsTUVJblZIZUI0dU1LRWVlbEdlak8wdzV2akUzelJYRFhnQXU1a2tqZXc3cTBHSjJvVSs1bXhkZWlRVCtLd1gybWJzOFNQdU9PaG4xQVBwUDVDdGY3RktiMURVTWhUWFZmUTh6dkJJcUZhTEJaYlVaVUlBZHBEdW9QRGxpTnIrUXVtbTVOUWdVdlNYS3JwMGcwOWJLRys2UzZGL2tjclZmb0RndGZ4ODRqSUlTd3BwWHNwTWpXUGhBQVZ1RFJ1dCtqS1dZT3ExT0dEbGVzeVpDWmhhYXBLeVY2RE5Eek44TXJnQ2p1b2FGRmE3UzZEa090Y2tNZlIvR2ZHUVRLRksyemFvdHNjdkxlV3UvUEMrU3lpa1JxZ0xDak0yVmMrNlVJS012WTluMUZuSlNKK2ZleHBySm9aSWxmWGxmbEVZSGxZRzRsTWNZcnIrcVJiQ3RuMVJGS1NhSWc4UFpkVlFGYWpYTFJHV0l3NXJ0blEwRTFCWmRmK29aYm5FbitVK1lZNUFVa3ZnT2M0YlZHRE0xN00vb2xSTmVmankyckRnQlhNdmp3cWdwYmtQR2QwMGVzK0pSODBnYWgyWWFpZjg5UG85RGtaWUMrR3JLUVM0dXdsRGtmbHlCNWFESkx3bzhzZlNSWjJEVkR6Q3laRWV4NU9TQ1Y4alFycVdNOGJ4ZEVuOG1KOXVOL3RvK2wwK0FPZTZjMnlOTnJ6T1RZT0IwQzdreFZkWHVkSEdJS1liZHFjNUZGQUNlSjNlTWU3WWU5eHhUY3YxTTdsa3dMdU5NUStnN2lGNE1kc0RxbW54R1F3azJJbVJnSkN1dDh1Z2FPekRuQnRMSG9Gb1E1bXlQNi9tQnd0b0FqZjNCTEpTVXZpTkNXeDNZNFNNQVJTM3p4SXJDWFF3WTU4b2RGVHg2YWdGNHI4NmVaT1UvaUxPeGJzZ1NNdXRGc0tFT1VXZVZKekZUdEV5cDJkb2p3bzhrSlRIaG81WXgzUUpJTGhyLytTc1N4cTVDWGFWTm5QZ3Rkckh1TXJmTmFNaTA4bGRPVW80TzcwL0lzZFMwVW1yaFlwL0o1ZnNJUHM5VHFXTTFORngySTZ2RmhJTWN3VzB3cWZ3emxJV25MMTl1YXRGY1Fva2Job0ZPV25kRmsveTBKVzNFaUtKMEp4OWZFREtNZ2pDalJJZlQzUnp6QVVDTUJkc20vRHRtcDN1N3c1Y0pyenFwVi9qdHo0eCs4WWloRDlnTmVNVHoybTNlZ3lYdUFsanh2L2c1U1hndWtsS0RDWDVWb1JSenJSRzlwYURWcW4wMis2UXVuUld5aWRYcFlWVEllQWdFY0l1VUgvdjZKQ3NkaGtZQk9scWtsclNvU0xXN2RBcmxhdmJxUXFSUU5FeThaejRRZUxvbVR4N0NLcFhPamduN1J4djkzQmZGT2RjTVlWVStQdDRRd1ZuWUtWajhQUWF4VUo3dlV1d29xYWdqTk02bFZHbkd1UUY3cWo0Y0RBSTNWZkV5VEQyNkVxOEphRFNDd29JS0VoTHFjRjdvdHpoYUYvQnhRbnZzWXNFN1pBNHExYXl0K040SHVOcmNiSS94aHc5WGExNkFkblRab0xObHpqdmdxU1lrcjlTU0hVQXRZOFBRU1pycHFqS3ZPSjNWczJvOE94amVaNldkZDg5bUxZcHJwb1A3a2RNaHJrd2ZWWDN2bW81WldjelFEeHRPYS9KUU5DajlRSHBHSkpObU1JNjlYRTFlYXpzODNKSm1JSTZFODZpVHovVmtxVVFmdjgwWVRJS1VOZnVoMGs3YzJhSWs0aTN2amRBSnB5cUNKK3FLQU1ocE1DVnJJWnVlZTVEQmZiVThoRU9xQWR3UHJPV1owYjRIS3hZNjZua1Jzcnluc1pzSGJ0Z1ZxeGwzK2JIRTRDU1k1OW5tKzI0SGIxK3R1bmhWOThIOWhuaFNuUlNMMmFROURIZnQwZC9VWC9GdnFiM2tOUGlTOTRmb0VjTzZkVm4xSkJjT0UwbFVOdjE0bkZYd1pQVzFlUjlPczNTVFVsWkxXb1EwVmMxVWdzQjBsU0REdEtlK29xLzVXTmhicXo1azFYejdydDhkbTYyYWx3Qk4zRkM0WWRIRHMvdUJRRU5WKzYzZ0UzV0F4WU5ab0kybTdEaVRMdnJmRzBma3RlMkgzZXdQc0xycFJNeE02VEpaTWdWS3hkdXpxWWhlNE5xZFlQNUYzQTJXeTR2Q1loQlpGNXp0TmljUjNsTGZQZEF1YUFoM2wvbm05YnZaVFE5bHVMSGZsOGppMU5DRDZqMExmZm9qbXF0emgwcTRKS3lpeldhbS9UbVcybjJxamxhNWk5MFRxbFJLWTRGRGN0VHB5MjBsN3gzcWNzUmRXRHlvUGdvNUJRZHdmT0FUZ3NUSTRaN29HRnlkSXl6WEJzMWlXMVhQNk55MGh4YVFaWk5kUWFlbXdsZFRYZUU2RWxyNURpQjRWTlhMSWtYVWcxdVZMdDRIQWt3MWx0Skt1azBNK3lIeEhpWWw4WEU3a3V6cVgzWlhzLzNPWHAvTWxEZDB1TXlaYkZKR21WNDB4NTZqMGc3ZW14K002YllRcVZ5VEJjRExBN0xqWXByZGhyOWd2UXd3cWlROUdtekFIMjk4NmlSMjMrdkhmNjkvblhWUXQxOC9iVStyejVrYkY4TEloNnJUZ1ZaQ2MwMzg4Mko3S3dHTzNFeCtmd0I1ajBsY3ZFV01zZGUyS2ZuOTluTUF4TkZmczhFVXl2RHhrbU5MWkk3VFZUL25WWkh3V04zM2toemx2MVdFd1J0dCt4cnVPUGlWZmFvNEVWTnN1eWIrMVdMNmhlOEtFaThyVzV4YU1pVTBpREpiUHBpOGFnaUJLcmpXMENVR3VRbFpUTGZGM0FaamsrWkZFU1ViaDFIZm5UZ0tOc3NXMTg0dFgxUEFZMy9xUmdMOTQ2RnpZeXNzYnVtbzliSlg5bDhTZlZ0SGdmRy9XNitnT29zMjhCbXJWZ3gxditmNWU3THVyejB1NWJtRG1DajdZQzlqeFl5M1ZJUC96QzFqMVcrSTVRYnNNV2tFWGt3NmRINm9YR1lpbFJMOTdiVHFoazlUc0JEMnEvamdGd0VCVG5WRzJqampiN0FSWkFFM3ZhSHVXbzRFQm5IQUczTllMUU5iSDRhSE9mQU94VGIyMFZETU9OYW1xUWJsUVI4aDFGVEhaK0I3U2dkVUhyQUx2Ylg0akFWVHd4THJaZm16ck85WndVekVMNE9Pcm1FNlNvWG9tQkhxNWlFYlJJV2RadHN0cnVZbzRSSmlNRXRjb3Fqd25sdUpSbnFQUzd4eFViYXNiTjEyUkdxUGlRQjkvU3JmbUxHd0lCdXNpWVRWMi9VaDFCM2lYMDRPWWdnMldYUmppSjNkem1MTEt3SXZXSlQxdThHUDVtekZocm9PSDJPNktDblhPRVR2UWNuZkxMK3dic3piTFViejRrQW1xakJYdUV4WmlUbFI5b2w2UmpCU0g4SUJqOXYwNGpMaXVwS0tsQ2MyNkQ2Y3B5cGpWbzNPUDA4a2ZESTI1NWNlK0l5bVhoN0tIVk1CRVdtN2VMdnJNdGlTNUY4aFhxbkZMUWNIZk1kcy82SXBKMDdlME5OaTIyam0xYUYvb2JkdURhV1VzQ1VUaHRsalVRTURsSWFoSkx0VWVYd1Q3cEtMdjNMT2pYSS9YK2ZYZW1SRzhGUTRhRmdnNzRDVzUvaUpsN0dUV3FWZS8rbDJPVFJnQjJZUEhsS09NYzhjNnNnMjI3YVBjZXo4elpzck03S1gwc1BlVzZRL1BoU1VwNHVnd2d0VC9EaEhia3pKV0liRmVYVE0zSW5DaVpNaGJrMVRCUms3Q3k0SUwzSCtnK1h3OURCZUluZFQ2TUxwRmlyNDV2T2l0di9RcUV4T0NkVXdQTjczRXhheGRvTC8xRWtVUkQzMHFlM1M4SC8rOFEvaGRBa01OU0NadkMrWGl6UGRiOEJtMG5LZlFEWFBkZ3ZoNURTVTB3QkErUW9sV0xoNlVSYjgrVWNqT1J6WnZod3hjOXozWTZTU3hmZGU1eTVlZ3U4TjZSeG04aWRYMXJBbTcvdWdveU1idzc3Y0RNbElVUlhBTVMwQjUyZ1l2NEZ3U2VnUHNRRjc1WlQ0bGE1UVNhTnZWQ0ZNc3dWWU9kQzBSQ044S0gvcnl5VTd3bklWTXFjOFZzTEoyeU9ZbjBuYmlKMDJnMUxQZEpISWtsY3dPZVA0OFNHeFhrOHRxZGVxb3drMjR5cm4rL1ZQRmJKMGgxbEliQ3NXdHdYZWM4NWFoa1pFcUEzRmxPM2ZJTlJoSy84QTJIN0hZSDlhR3ZjSzZrWEQ0aWkrdVBTQmZMVWZ2anBVMkFGZ21aeWtPdnN6VnhwcG83ZFdHN2FhdytPSlppeXlHZTZ0TDlTQUUzMTF2aUZiVGgrK281QStaRDUwdkZkL3JuYm9odzB3UVBlUG9pUWVrdzU5ZXdyZFV4Zi92STMzYzVFTDRJckkxQ2hKb0ZkSnNVc2pQMSt4Z1FwbjVsYVJxdDQ4UjBFckZjRXhFS25HYkp3blVnK3ZZN2ljZmk1WER4am8rNUpZWUtMN3A3ME5TbFVaMWdpOU9Bc0FaRmsvSm03UStxU0JzTFIvQjBIR2N1VGg5VlQwaTEvWGFIRW1UdDFzaGV6WGFzVlJPanlMWHZ1Q1pKdXdzVVZsbDM0T2diVDkySDY4YnV4YW1XNGpaZUl3eUdCbk1RVlVqSEVCWWNkM0dlNElKVHRKNzdQZVgvUmp6NzRnMFdnWTdKRzVtTlEvM1V5REcwYlRvQ0xIZ0Fkd012NFhuYUxSL1BqVmNmd1BaMHpIYWIwLzNON3VONWtCNS9BZmlmVURoem5HQ2F1cGZmUVF1TVkzRXRRcjBhVmNNcnZrUE5BaEVzYUdud3RsZk0zOWNTU3E1cFBOUm5SYnRlMWlIRzZnWE5FYnVSRXRVT1FSOFQ4SDBmRk93bkNuZExZdzBlUE9kOFRNWE82ellMSUJOV3lYK1ltUEpEekdlbVpRUFdNZExvOS9Vamg3ckRjUkdsQVRDbnFpL0ZKdW4zSHc5WFNZUEI4SS8zK3RZcjVPT1ErSnpYOU9GS0U2Nk0rRVFiUnpVbkVMQmJJSnZGYjF0S1pBWHJuREphUXhjVjJiTW5nSTVjcG9TQS9KTDFtZnNENXk3SEtBcEMxRFp3SUJ1YVZuY1N3RzkyTUZDL20vK05xOENNS3VCbk1PV2JsUytrNi9DSzhKU0N3UHUwTFJEbVVQVWpraUlkaGFFdElhZDBPNE03YW4vQjNZdGNMRWIxTkxYdDAzb3NBTjlrbXRoUG50dFRQU2VaT0h0SUlEemwxSDFRYkFyRnJLVnRSdnB5QzNENHE1a2p6NHh6aHlvK0o3NU9jMFRQNkM5ak5mV0pXUnBWVWNDWE9mTThsc2ZVQldqWlhaZEVEVkRWMFNBTGpXQjd4UWVka1R1ZXdiaTU1TmplZEhRcDRUVjlSZG02dlgzWlRCYy9hNWhmUGJLMGJtUFBkNWgzbEM5U2tCYzA3OUQxKzc1NjBMVW5ibzQ0WGUvVjFhdDBLZFowczJpWUVBU1RRTnEvMmVsKytWVUhObFpYN3I0Uk5ydk1MVU56Qncrd2RTR2hmbkthaXFzU3p1aFhwNkIrc0xMUWl4WkY4bVFEdjRNM24wQTFGRFp2ZEVYeDJZQ1J6WHRPL2cralUvN2ttVHlnSytyTEdnZitLQlpJUDlCRk9oMVM5K1ZLaGJpK21qV040dzBoc1JsSkpaZ2hyaXVVYVpiQXQ5N2pGR1NQcm9zR1hpWHVhRjhaa29TYXc2dzBSZlpkckJINmNET3Z3N1p4bkhCWWZybUpkQUZmeDFOYjFLS2J0RUdxenY0d0xia3ljY2lyUWNxRnhSb1owWVgvczNZZFBST0pTMm5NRzRnclI2QVFXMmU2ZXA4Um1rS3lJeWFHd0hqeUhydjJ3ZXBBUVpvSzE4NlBGSnZQTm5iWnVUUHVQM2VOZUhTdFIySGlOdFhFRXFURkQvV1pHUU0yanRzbUo5MXNxQzhPeUhUS2dnTlhaUzJuekU0aDBTOFZXY25XVnAzVnYyWGk2N0l5MVBaNGtmVW5JWEpzUVN0YVMyc3pXTWNBTFFJUDBVY01IMEZ4cG5TWmxEOU45SHFLWEVsSmZkdFJwaUYwTGdxWjRrSkFQSnh6TFJKdndDUTBjZi9YTzRxNFlyNlp6a0xsaXIrVWJuT0dCSjNzT0J6NFBnN1BwNHo3Z3c3OFN3VVk0T0x3Q2NPRlN6SGpjeWt0WUJsS2svVlhiV3RzV21jOGxtQnNnTDB1L2FQcTZKOXZxY1FtSzlaSEF4RXRXOU9Za25rV3VYMjJMWENhWExjT1QwUzBLelFHY2xyaXk2M2VDYWlQUHJhdFhzc2FEckxPUmZmd0FkRzZRQnJTWnl6UWpEQ1dWVTBOUzJkazhMbzQ0azVtQ0daeEZoUG9vYzNvbFVzV3BvVmlXTkNBSThhYUF5cU91S1lwL004Q2tTVUttek16QjFuR0VMRTFPMDJ1SzRqSG9ZdTNIWW1xZU02SC9rb2k4a0JicGRLSUlkS0x5REYvVUFOcUVGUnVUM3NkZ3NXSS9ONHlWbUpPZFN5aW1Yb0FQR0JYQ2xkR2J4amtSbzBCMktnVXRtQTJGMnZiL2tWZ2h0SXdWcGJId01QNmdQN0tONjhQZ2dmcm41enUwYnl6N0Fjd1dIaUQxankveXZVaEUyTXhaU0c0bUs2bTJ1QnJvMGlQRS9sMWVmdVJvVVJiS0RSVlhRdmViM1NNOXVud2VuTExrR1pScU9rSjZDWE5EV3lBUTlxVGJzU2Y3bUl5Z04rT2liZkFweVN1TDN3bUcxVGhwY09TTFJGTGowQmM1U2JRbHRHL1RqSmd2Y3AvV200ajFScXQwaXdHaUM3VWdFdDU3QUVnTjQ2WVRTTUNjbGJ5dlNFYUtNZkgxOHhWbnRGVTRrblhPcWgxWEg1Q1BnUXN6NVpTWVZSTEREcjBEenIrZDc5K0RYZE1QS3lSbHk1L25NSlgxeWxIMWFjL0EyZ0gxc3BuT3BqZEUwb0JmTXk4U1dmcnEyY0JwTS9hZlVzQ3RjVWgzdFBsWGU2ZS9lZENNUHpCVnMrV1VZRTNkNC9iUER6YnN6dXU1TEVuQ2o5b3NnZytCNUlyMytheEh1K0Jpa1pxN1JzSkhkVisweXZXUnpFNnVlcDZjZHlzVGJrM0Q0Vm1RdDNneXdjR2FjcmsrRDYxem9VQVZkYU93WVVKVG9GNFZFemk4Z09kR211MHB6MTJ5OXJ3ZDZpY0tnU2t3WWY4aVYzcnZpMHkxQzRGNFJaL2ZKR3Q3cDNLYUJtSTNXSm95dTFuQXVoWGZJdEJkaGpVT3hLeVAvYkZxZ0IvSDBJU2NLT09rbHZHWnhsQ0ZQU2RpbktPbldXcGJHZnNhU1g4UTRhcERHODh2NnIwaVB5UE51a05NdlRyTStYUlhIaDlJMkFMVGhFOUkraVhRYTVpeEJhWll6a2I1K3JLR3dJeCt5WjdlUDlGWXF4c1dHajNiUDI3c2kzdk9HbG12WVR2SjM3T1dtME50emdQNWQzL0tuMmI2QWs5L1BZcHNYeE1GUVgwT1FjcmtmOWhsQ0V6eWp1ZVNIZkQ4OUNMTURERmhUbnRtZVc5aG1ubFhLZWErRU0vSUgraVVlK3RXenUzb1h6TFdVTW5vS1FCMWliUysvbTdsbW95U2I2L25uRjNmTVVReVJLVDJIZGNMUE51b2tIOVl3d3FDWU9xeFVNNGZWL0QyYWU3SW92OHIzM25LenY1blVVMGZYLzg4L3JORDl1NzdkL0RrM3dxRHJpSmZQRmc4ZVB2UVppcnFhQU5Td1hDZ1F0K1RON1NUNUg3ZEprZjZ1QmRESjBiVitBNVJqTHNaRDRoczVEdWdsY1N3ck1ZLzMyOW0wakJpdWowMG11c0JTalBsQ0NlZVNDazZ5UFF6a05nTXhlQVBQNmt3UklPRXFYQXJyT1c4dWd0SldxU2pkMEE3bTl5TzVNbFZCL0FvT2REVWVaajNMeURETVpWOTc2SHZ0SktWWVZmM1pVVm9jeEJXMGVCYTM3YjFCd0toUU52NGNqQS9NTUVtbW1WeitQaDdjdEJ0bC9LdFB4SGhzd1FTWjE2K3pjZU8zcHo0QVpQUlZVd1BlSS9VL0RuNHV1YmZhcVhma3JMVStmOTZSNGVIa3BsbjM0alVBS1VjdFFaVjBaRWlKaC9VcWIxZGJqMXhoenZicmxvRGJaZHlIVHY4c3owb09LaG04R2psOElFQThUSHdETWR1UERUMVZIcGJOMnlMeEdqNlMyZmp1aVRUNExyMzhUUXR2bitSYWJQVlFxR0lMR09MMHJVQTRsblZYYnRJcktZTkNHeG1PR0ZMcXFNT2grOTRBWDd5TTkweko5dTVaeXludnozM3MyMnM4YWVzOERaMWNmQ2tTZTAzR3lSaVdhM0VOa3RyMUZGeDRKQmIxQitjS05QaitwUmsrVksrTWpJdytzd29BTk4zMnRiV3NuYmd1VzZSUUZ5WjJucHVLVzJMS2oxTUkwWExuMXJHSi9URVZZM3lscjBzS0x4NDRaTHp5aWJyblJTaWpUckltVWsxdHZNZUtjVC9VTWp4anpmT3VGckNXbDI2NXhhaklISDRVc09oQnNSS3ZaUTF0WVU3T1UzYktSUFB3cEFvdnRieElLOVBWYjc4Q2ZOV2FnR3RVL2pUVmZQTThMVzE2bGUwbHVZZE5jaXhMR1puUU91V1FXL3hPVUx0MTMwQzVrUUVRRWlwM3RLc2tqRnJnOTJYSUdLcUkvRFNOaVkzVk5kMjc5emRnWG9jMDh0b3lUdWtaN05PZ1Q4WjFURXBpazcyYVV3amZ5UWFVOGVoNUY5R1Y0RktDdjZTSlgvVEpmTUM3U3h0Ny9SWWEwbWQ3cktEdFVOUFZOOGlHZnhOV242alZ0ODJyYzJrclU1MUpuTGpsTXVjYWVtYUJ4QkZXUm1JNklDY0h0YWg4U0lDZ0xmM1dndVk3NzIwa01OOUlmQ0ROV1hmalM5WGxtYkdhUUllZWtQTURiWVRjRG1wTi9DZ0d6NE0zNkV2Y1FDb2lGK09FaE1kajdpUkNYSlVlOXdYckZ2dFlNRHJVejZJWncyeWM0YmhvTm1IRmVnY2JiZU5ZbUhZQjVEYU9Tc201NkVaZGhrVjFlZ2RSa3d2eXBzNTg0S2owTm5LNEpTQXpnM3I3RTRQTEFQWDNUQ09vakUzWkxXa3pOb21NcHBPVkU3TU05TFNrRU85RVJmRG9XckNlM3QzVmFZeGg2eFpYWGp4aWYwZWFjeU1xWjJOOThUMWJxS2lQcEUzU1VBZFZGVGoyL0hvSktjbjhPbVVCL2MzUkdBVEtIMzFKOFpNcW1uMzhFSWp6M0dqYWMybm0yU1FZd2ljMnJhZjY3d3pvdDJsQ3cvQkRwVHBEVUljVlF6ZXNoRmhCWFlEd3FLQTk1S3AzZHkwOC9vUFhrK3oyTlY5dEN1Szl4SHNKdXRCeExtVlZScUJNMDd1TnJKaGUrSmlPS0MvNC9XU0dLZXdmQkRVNjFFOWs0UW9Gd0ZxZGJPS2d6Zml0WHJQWEYwUXY3SFI5azJHQXN3anBBMUlQdERVOGd4S2Q3THlEd1k1Q0M5Mm9Jd1l4OXlxazg4TmFIaGovaFZvbkxudG9ESVhmaVZuakFIVnQ4WktXMXJGbXF5ZkJ3YnRPeEp4Z2UzZEpBaUI2VDBsVGhKK3NXUXBLWkp0RkNUb0pRRnJkRXl4dGdLNmo4WHlmUFVHSnh3RDZDb2IzL1NBQS9DdnhrZWdtNzNIanFGV2tQUUdZdHpLTmtPTzJMWE5yeURSRFQvQ29IQ01KVDhnSWN1NmVDMEhza3FEWm1QUE5hQmt0UTZVWExQRFNocmR0eDVTZVNNUTlVZ0tRMlBkNmdsd2Q1Z3dYOE5jOEVCUVU1WWpRR3RaVWZZRVdZd2RBS29EcStLeFZHMzdIYjlDMFBOVTg1aVNnQldZa1dNZXF5TTQyMjk5UEdTWUVNM3FZMTVQQit5aHBPaUhjZlV5QjhJcmdFcVIvVDM3em9qUU1tdVV2dWFnUXBvM0V2eUNqdDlPblF5OWV6TFZXbU9rMHJleW1teCtxNFg1NTlzcXJHWU90c0JTbnNLR2hqbkFzTVNqSzFqTmcyMWNQODdsaldSbDlpNk1mbVhSN0YvRlhldzdhMlBKWlQ3Q0xYc0lUWDNUblptQ3JoWDhKc1ZVbG9PYlJ4aHZ5a1hMbTV6Zk1HNHRUTC9kSXFMdWJ4ejVUL09ZUjI4YnRubW40ZVpxOExCZFBlK1Bja3FNaHp2TmJSbnVETXc2S0VhZytBQ0hIT2tBMHRwNjI2S1lGMHZPUmJJL1BkTElNcWNIUXBLR0JSZGRWbDJ0K1I5SWR0cDFKZlhzRlRXVlhPT1NRVWd2b29CTXBMc3ZzNk5sNUJRZGI5S3EzL2tOSG96Njd3TWozSm8ydVBLcjdJaWJMQS83aGdOUE0vMExxWk5yMTVCRkJMcGNZYUwzNUh6RlUxbjJEcEJXdGUzMFNFR0JSN1ltWDBva1dsdlg4WU9MUytlRXhEMGRkdlVNdEl2cGhKeUlub1pMeFB0WHZRRnFWa2dndHFHWHV2WllNZ1RFRFBrYmxXMjBMbFpxajRxbVV0QndzRE92c0JiaWtPYU9iVDQvZVp0TjNqdktYMWNSTW5tSFRkNnRrdy9keVh4ZmJiMmZPYWJKUjdqeWJaZXR1ZXlsZDU2RlZ5dHlvdGpQYmxyUVZjLzhkTC9leG5VelZvTENWRXJaVHVQa04wbS96cnVlZHRKZk92QWNMRHF4RkZtKzNLeVpxQm1qcDluR0ZKd1ljYUl0blVTQTFRcHRWc1MwTmtGV2lTOXlNYlRaQk9aRWd3Z3YxNkJsNkF5a3gzeHozdU8zR3pHTWI3Znh3VWQxOTB2QlQ1VE1aMkFxVUs2aGcwMjhib0J2SzdwSFJVY0lhWDhHWHJKamdrTEE2Z1NiWXFvclR3KzlNUzg4K2NpZUwvS0NqZGUxeWJTbWJya1E2S2E4YTZRYkpwL21oaSs3a1NOTmZyMEIyTFhZR25MOHN1MTJ2SDV3M2JQampBanVsU1NTN3psVFNWd0tnWHRpaG5OZVUzOVVUeHJvaDNtWXdvb2NkTWRHRXNObm85UGIrZ3d0NnRJUytjZ3lnSWdWbTRkMFFyRk1WUXVuS0ZucDg3bVloamRNajI3aGVEZHpFZ3phemk3YUtnQU95eXlmNVVFZG8xQWlYL1l3SUhGbnQ2enRHN09qTFBIajNOcEtocHVxUGxBQlA3amd3dG9HSjdZUmxLak9wYmhpL0c5OUpRNGpUNUx0RFdlVUZuejdUK090bk8zcGwzWlpta3hJY3p3Z1ppMkQ3UFhGbXlGcWp3WDI0YUZSaFVHb3JWRXJPNVd2TDFxQ2JKVWoyVllFQ3BFUS9DeFFoZm5ONmIzc0k0eHMyYkE2VVNYeG1Qd1d2SXNVeEdwZGRldXQ3TnBVeUhnSVBlVUMzWE44clZSQUlOczZpcHUxQiswZkdTeU5sUnkrS2pldzAvS2xrWFZDSlkrNXU5Qml3R04wZVhKcWRocGV4NWlKcUVlaXhDb1dXcUVZZ1loUEFtWkkwL2VDb1ZIYm1VQVQyc3VjZ2w0cEliZ21zdGQ4elV3SG5sT1VxNWNWYlYwcnF6UnpPSlhGNjd4Ukk2WWdkclVJWmphQUdhSFk1Y3NkQTV1UEtaeE5TK3NTdnBZRU9mbjRDNm5hNWp1MGNVckdVMUt2QllZNWpxWGlHRE1JN3llNEZndHN0Um1ERzJvYjY3WnZQa3JLYkZhdmplb3I2bEdWcnR5THNYWHA0OGdOUldmVnlhOWdPNzRzY0VjTzIrUy9wOFVQQVM4RWtmbHY4Mjd2azRvZTYyVzhYNFpWRzRaMXhLUmdZVE01dFYvazhGblBtUXk5ZVEyTkFKMzN6VFBtSE0wTzEyQ21SRFN5ekNhbXlZVGJiKzFKeitJUWU3T1Bwajk3eVF6OFd3YWRlTVdlcnBmWXQyQjJuSWNPbloxZVk3K3NiME96TDRZOHhud3VBaU55NDRGdElHcnlpaWY2alVxUXBhSmZRTHJPYXpJN1VCa1dFcUM3TlV3NHpRK3VWY2JyOWVnNjk4TGVGdkVGM1lzSFJnWThORG9Cd0JwYVM2SnFLcWZ3VVl1V2pWVlZFZGZIR1lWMUVCNEV5UzVtMWl0SCtSaSt4Zkw3d25lS2JBNUJJaVBoUDRtdkZPVzZ4MkNSSXduMkV0R2NjSUtRMlZZY2Z5YmNsYkRTNUVORjByZEdHbkk1cDYrbnhTc1ZlTXoxanF3U0FES1N2Vi9vVzYwMXdQV1o2ZHdMKzF6ZktZQ3UyakpBck00TFN5TkJibUo3UmlKVGVaRXU5R2kzdElJb2N2Y0Rtd0JBQzhObEwwcGJCTVgxQXVIenRjN0Eyem1SdFdRQUpXbW5IWVVmV1pMRml5L3F2clRWemVBMndwdlJLK01RbWVYeGNTUUpKam9FczFBMnE1eUR3Qkl5Q3ZTUlBndk15Ti9FdWlsN0lhQmlhZS8ya21ERHU4aFhJV2FzWnF3ZXBLSmMzQTZiL1hka3lHRnE4eGY3dXBWS2RubG0zTVM1eE9vcmRXWWY1a2lEN1RUWjNlYTM4bDBoZlpLKzBhbjVDbUdyRFV1clhJbUc5bXhEeDhBNmNjSmJOTFVqYlI5Smk2WnJOOW0vOUhyaloxNVdlYlpKYWRwVnJRM3pxVkhMY1U5WFNIbnN0UzdhQmg4NmJTZW1hZnpvUXV2WXJna0p5VGVrMlRCa0hRMTVLOGp1V0FvajZmV0F2V0xVNVlHY2pzenlBaks3TzlPd2N5dzViSnBEdkx2MGdYS2h4UFVId1k0d25ZQTFlZ0RaMjluY2hlWUUzNENvak1FZFBNNXhSak9mdVExaC8wdG5wL1p1UGkvOTJMd3dTRzJPUWFTZmN6QmYxaVBuZTZQRjFZL1BPaldBUlRnSWh6djlHSDJqbDJoekEwK0VMRDBmdFU3R0hkbDVVSkExQTVCc3dNQ1pVS0tjQ2pRa2hTNEJ2cG1Xd0RVaFpFMVZORm5tYStRNEZva2ozdlhVZERRQmVES1dJdWJRNTY1T2xyTFFUeHcydkY2WmsvdmdtWDlGa05Sbkh6eDBoQ3FpNVF5NUs3d3lIYmNmeURIRVpEVnpnL2Q5Y2gwL3E0VE5ybG5nSFQwOTU2WEV0R2lCQlR5RWIrbVFXYXpJSG80TTZDc2JhRXdzcDBqL2J2NHphVFBzd2VCNThaYlZzTGNmTytoTk1SdDFGT09QTlk1N1ZJRm1LcGZDRlpscEZVOWZWWU9aWnhrSWtVZnh3OUZxeHoxdnFsaTdrZENkYlVzcWN6Q2l4WE9HQUlXSEF5dUV0OFJQQ2M0N3h5NWhiOU5HTGoreUtjdVFHMnlDWFEwL1NYYXJlYU02RFZoY0VmQStFN1pNZUx1VjROTU9BVUUvaW9QaW81YWh0TFl5a1ZVL3dDTFNPZVJ3SlUrMCtseXZiUVRlUnE4RVJPbE10ZnRicUNNSGY3TGd4WmFCR01ET3Y1N29FcUlvcGRITzFNWmtUUWEwKzh6SnFkTDJVMG15SHpuZU5zOVVQTnpqeGZsdDc5SUVSQWlIVEtKZnQ1TEkvYmlDdUpFYzVTOEt3eVlZK3psVzgyM1JBUGF2VS9wazhmZjhlNis1amhUbWVjSmJreVdRV3djUVBkeW42SWVmcWVOMUNZeXRKbWlMdVVyVWNzMEJtQ3h6Y3dENzNxWk9uRDkxMERoV1JjNTJDT2dyZFIrZnl0eUpDaExwS0p0Y2l2cE1leDFrUzRHUkZTdXRYODA0enAxZjBCaWZ0ZEdzbi85S2xGdXBHUnpkRHNCT3BzclNMUE1UVDZkTGlDRU1aeUVjQUp2UENaalBUS1kvOE42VEFIOHRQTW4rQXhqTks3bmxRUmdXcFNYS0pucGdmNm9OdjVqanlYZkZHbUtqb0R2WENXaG50clFhaFN4Zis4VXpNS2dEOCtEd04weFJBTy9WT0NEYkpxc0NDOXVFT2VpSVloVkVqMUw4UUY0ZWZNcEN1RjM5bEF3Q2haeVVHdHI2NlpGdENFbHFLbFQ0d0V5TE4vUUFUYk1FUVJpOEZHTU5KWWZPeFNLRTlsOW1ueExwanZtYVFRTEtpWEJNWk9HZVVLZkRtL3cvNnh6bDdUN1UvYnRuc0xxK0JpUUVtUFI5WHdTQ2w3K2pSalBkVTlvOTVMcGUzb3R3aFJ3UEo1R2NIZnhqa0d4VUVIdEVaM3I3c2c3L3hkOHJoTWJBSXNRcUIyWVhSV0czQUhBT1pPTVY3OW80VVJhUU9sazdNNmc4eWJGc2pQV2JRNTc5OVlIZU5PTG1KQjlxSU5Cb3NDbUhKVEVYcTc1TDVTV0xiVTRKczdxajc5SGtQeG8rUFd0YjJDOEQvVTdndDB3ZHZSRlp3M3lzVzE0dEs0Yjdid2ljbGp4NVBXbUs0Wi80YUJsRWlTczdsb3hWUUVRY0xqRXpYZnhKRi9nSUNhTkR4RGNWa2U1UVpzNGtzY2VwdDZIeFI1M21ucFRoa0k4Tm40OUhMZDZPWlVFek5Lc1liMjhQQTdmdGtWMUI1WUlHOWxvZkU2VjV0czg3ZXUrQmVtaGRvZkc5UFlteFUvYXE1NklhMUVLRHVKTm9mMUhVUkhlUndUN1ZVd0ROd1EvYnJIZXhuNHVTVnZxSkRMV0Vpb3YrM0hld2s5NTgrVnpmNERCa053R2ZBRDk0WjdSekk2RjVVdEZrdVJOdzc0S0loUVVualFSMjBqNHBJd2d2cGRUVDZEYzZybFp1MmlFSXFvSkN5UVplSytZUkFxZ1lCUDRqaE1ZamtOdWZxdkZ1RXRrVXVMNUpJVGRRa1oxMHgvNXdWbDE3UC91UjdLZWhZV0sybEpvMXljNU9UQ3VEMXlMWjM4UWpQNHZoSldOaWdYL014RGd1dDhXTnliN0s0MW5HMStQZE9KS1A1VzF0TFh6WFNWQXZZbWdUcmZXOUxFT2d0REN6N1BITG1hcVczR0NlQnUvZ0k4UGdlRTFTb25kaGprUDN1eTlNREFaUGV0Q2hEYVFGVHVKTlYySjVRRHBOYm93U0pSSXZ5UWRYS2YreW5wL1djOFdybldxR2dPM2Q0L1RSeG42SW15c2czdnNrOEFyWXFVWHJqa1FsY1huaVd6WTd2WDNFZGFIZDRSVTVmUGFCWGw2RHdyUTJWdDhPTkVZYzlpaVowQTFYMDQxWkp6REJEK0xDUlFKN0FnMk0ybzNDL1AwVCt5WXFGdUpUcGJwVTIzWmhqWkJacW9YRFB0YndEaUlDQ29RK0FKaHBESTBLUVpJL21UeW10RU5yTVAydFVzWHQ4RFp3b3g3VVQrUmRQRGc3Wk5KcUpiUTB6OEFvR0JZSGFGb0pJN0ZTaGs3ejV5VVF1Uk10a1BUMURZbzVGS2NZeDVCalFFRW44K3UwZ2JwTzArNVZGbFFPTmFOazFXYStaZWc5d1h5UHljU0p1T3BoM0NpUEF4STlNM1ZnWDhub2VNeVplQWtuTjRkQU9KeDFsMkhFY3BPaHhaVmlnRm0vY3U1WjlvRHJwMnJlS3FCVWdnRFY5NFNCUzhrZUp1ajZna2M4Y2liSmdhYndMZkQxSkdkTlZzWFRES2NpUlRVQlhxdVo3NUc4ZGxOZkVqVjE4aDlnNnpiOG5MYVBOR2FpQUY5UEUvOTgxRjJtQ3BFZ3JKNlZRUUE3V0JZZzJ0SFFsSTlLMjBXMnVGSUtZQ1N6SWZ0cWg2ZDRyZWFUT2N1MU1Vbmd6WXJYYytVOXpLV2lSdzFFWjdnVmJLcnYxU05KY2JNUHk4cHNFNXhpSUxxVHNSOStZc1ZkSjFRNC9PZy9JOFh3bVBzYjlqeWhkN3VOMDljeXg2Smx2dFRRQ3dsbENRd0RQYjNxcFZTQ2FxcnIzVTBOWEJXeVpNT2dOS2NhQmZpeERuenJMRmppQmlKdHpIQ1ZhSk5LU1J3dFozV21WRGZBUkc4bm5qNHhTdmdpS3RkdkhidUZ5M0hOTys4d2RwT01ORFZYbDFYSHE5R2pHRFE3L2Q0Q1kxUE8yOFhHZnMzaXdwTmlaczRpSkI5N1FiSjFuM21MazAyMEFCWXFFalJidElTS2ZwbGZuSlF1Q3BtQ1pXRWpDSXZjemRPcDUxVjFhdjlSVnRoS3ozRWxqTjdVNFAyK0R1WTJnYThGT0JjcEc4QVhjV3JtYTRoK3JmbHVuL00xNGk3Q0ZNWTEydW1BM3pUeW45dkMvbVBGL2FNM1B6ZVIvK0hEYmxQc2xicDhxWlhQUjZQVzBmYnE0U2I5VlRDM3hWTEEyKzhFRFJ0K2ozTnlSV0RIUW1tK2c4SkkwTVVUTGRGK09wWm1aWHhaNHlkM0dSRmgyNU1ETlRORXN4RmF6Tmtud0IvaVBYOHhiV0RRZnB0c1FGVkhBLzVMWjRIT2tOTm5kcWR0MjN6bGxEUHg4Y01KckxZVnkzd2ZwcVdmSkI5ZlZCdDl4V29Ua3ROQ3VEOTJGakhXK1lvVVgrbWtwMjFHWU5hUTZFWjdtKzYrN20zb3hLK1ZqOUU3dVJFU1JyemloallhQVdrcWw2dzlWQXpwblJ6S1ZrUFZ6RnhkWVZyRGYrRVBTQ2QxZXVlM0lsWHdld3Myeis1WGhRU0YyNnpoeExuamc1QndxVnRvcVhYanRnUmZVenpRTFdlOGVzeU5MaGJmWkJEWVJTY2hyTS8wbHlPbENKa0ZuclprMVI5MXgxcjRwRHN2VkczTFVkOWxsRDZybG8zVC9wYzBVUlR4L2hROGROdkpqNEt2WWJrdHE2YTdIVzF0Kys4YXhwMGUwd2RqNHdFdG9MRHd4OTVxNTBlcFB6Vm8vdXZFZGpNRjJtL1pOZ2RsUWVHK2JIS2I5ZVNEYjZVdzFoWDJxc0ZjQ3pTUEgvbWxhNlgyd09jazhUZFdSamFsVWRCUUtuTkR5L1d1OWowQVdGSzBxOWxyR0lDcitRZ0h6SmhheVRFS3V1bkZNZDVJRzhTc0lTR1oweGFKd0UvYlBmM0hmRytvdEtxSVl1ZE8wZ2IrWnpTTEx5QW9GZzB3aTJGNmtFN0oyWUt1MEh6ZlZLOGxtK21VMzREUUtuSWM3UDQrWENXeWNNOWJBMHhOeTNVb2QxQmh0ODIvckozbi96Wno2S1NSN3ZGNlFxQ2FkN2FWWWlwR0lDQSs3OVlVVUdsRDVWaFUwaDlDUWhWcndGWTVra0JjbGV0b3JzczNyUjc2YXZ0NHlnOHcvU2ZlMjAzbzBUQXFFL1JVUFhzd3BFRjZqdmQ2QjRCdERIbEN2TDg2OEpsbVQ5Y0FjY0w0aS9MUnRWY2E2OHZCTkFxVXY2NnBGRUlBZk9QZVR1cTRxeVVhTDk4Y0xmQ3BJN2VWWlAzZ2hQdXdnZ2ZtMnUxcS8yc0YzaElnbUtrWi9DQmNJUGVQTlJiUXExSjJXOHB0TjRSd1lmWWp4dHdTazZvKzJodzByT0QzZ3BaUzhWSm14VFloRDdFVnBodmFzV29mZUV0NEVveHJ2OUtCVDV4NXArNWtndC9RZ1IzeHNyMmUvc2Ryckt0anM2YkxzN04rbFNFMWZndDZWeG9xcjVDM2swaHltL2F4dlcxKzRUa3dHVkUrMUNjbGpVaVZ0cFlFbGcvdDVFSTBiRDlZWklqclBYUVZMM0lDOWN3Y1MzODJrcW9yU2JyT1FMc3NXZEp6bFhzRk9wcmdSS1Rkb3NadE5NSWErb0J4MUhjSmhjOHcyWUpDcDd2eHRoVE9CbXN6Q0oyUmhaWXZWMWcybkNvalBUSUJ3U3BmT2xKcUJNczRTRXFuYTNiSGFnZGc2NlhPR3FWRllEcmVseUo0U1M1TE5qUk9weGlzWm0vT3h0U0tjMXREQzF6ZUVQTmZWb3RyemJrdmgrNFBJZHVsaHA1cUVMcHB1d3VoMU1VcnBPMmxITFF6SlE2QlI3UVpJOVdHTjRkTEg1Qk9zNko3alY2SmhlTjBTVlQyUHlOVnZZR3RHU0QxcG94RFNVb2dYN2hpYzRvQlhHdm1ta2loNGYxMVpxU3lDaEJja1BQUS9zZkxNUUZYZ1JmcHdVeE4zR1FlZ05UeUt6RVJzSDlKaUZiT2JzSlhuWU9KdHVNbnVhTkV1dVo5aE0vVnZQZ0FGYzJuSGlUcU00VDEyNVBIYWdPUTFTZStxM1Iyd0lPL2pzb0RDWGRLend4SlJlSkNhZWtNdGJDWEN1LzlwQUVtWWtMRWRDb1dUVFgzei8wTzB2WXBrSFMzMUliOENPUHRDaVA0cU90Qm1hUzBrVFVCWFN0T1BrQ0E2RysxY3dlS09nMGNPQ3FWdGJnODZyM0cvT2RrS09sVHRMcWVUd1JWN00wWUhDenQ0N1c3blNCTjhBWTBUV3ZZL0UvaERzU1krS09pand2TmVCaXZXT215bjNiTnlmcDJQcklaWW44WFU4WVlMYXBZYTZOaVhzcXFmcGhTWlFaajZpWEJEOUgyVHRzOVBNd09zQURYR2ZOR0p2NG5MSGI2MlV2TkRuak0rc0VWWjROb2lxZDZPd1NUY2dlUDJ6NmZGMEVYTmJ0S09Ybld2c2k1bktWR2pHOWhmZW90Z09VTG1CVUs0MTJTSmg4eWVrSERkV25iM0tUZnVyZUVoUnpjdEQvZXhOZkh1UnBoUzBLZzQ0K1h4VjJoc1pHZk5UcXd5TnEyK081YTBiWUQwTHAzS2p4Y0krejZQTkVTajdXanRPQWdpbmw3WTZaek5JbWZxWWhORzk1enQ1Ym1wL3JFQ3pYSStQRFI2UldXUTFTTnJOOGRDVlA1L2NNaUxpQis0aURpM3JzNWxvTW5Kb0psa084dXBsU3JEeDJsTFByMUc1dzBhTlF3bUZrNExSMlNHLzhsNzVodzg4SllQN3d6WUk2K0I3QXFEOStISFE2WVFBSFQ5YnNNcHZZK2ZvRkthb3dTRXdwVmlhdFhka2F0akd2V1IzRi95NlRGWHhOMW5kTnlheHVxTzd2ek52OXNkanEzckJsT3FvZVF5UTBYNHl1Z2hqRXROYitwbUVwcVJRa0wxZEhiZVF3QXlnRFErcmk0NGJmR3JxTGFFMUY1amRrcG1kbkl6SU12SHExWFg5S01WakdQd0tYSjlJR015SG9sZXlMa2JRckIwbkcyaHF5V0FIWFVxejErYXVrbjM4Nm1yeEkvbFVGYUpNVDFwbzVWUHhyS3k2SVN2bVo4eGhOZmE1YVFOZWQ5ZmdyYU9LUjMxNHhTT3MyK3RtbnhXUUY2clpTMnpySU14ZDFLN1VtcjdySkR0U1B6UVhIL25KWkhRa1RQRE8yd0Q2ZTFTNUE3aVcvYU1TRG9oK1Nkam1sTFVsTjZJcGdXcE5qV014OGZnWnp0VGM5ZUR4SnNtVVJQSUxtTEpjdmRmYnlabHduUWVqbmgxNTFNWi9CVU4wTnk4Mlg1RkdZNGEvbUZXejkvRzhVVm9pWktiOTU3alp2eWpZdC9OWDl2cll6QkhxeFVBNVB1YkppSFhBOVJlNHlySktJQ2I2LzZqOE5hU20yQjJUTVdLRW95Q0NacGp5V2dpN2laL05Iak5TM3JBUFY3NTRiYjVYNDZzekRjNU9SdEpLSXhvWHMzRVlqakZ0VlFKT2VkWHovZ2ZyNzU4U3VFNHlDN1lrV0dpcTI3L1Q5S2tDTnBZcng4YmFLUDhmVUduMEVXNGs2ZmEzelhNRmJreFlxOXhrRWwvNW9taU9NLzVHeVpEMnFwSXlpUXhLcFQrTGJLQ3N0WTQ1Vmt6MmRKdUFMdVZLN040aGNQQnA5TVl0MXZFRzdicmp6Skx1RWQ5OVRqblRDb0l1YWprakd3SklKUDNqNU1BRWlwY3NFVk5BVXczc2c2aTF3cEdqWkEveCtXMzIwUmxXcGxtOVdhcldoTWRlWm5Ja1plYXEwbTgvMjBES0xKVFFhVmI1UmFwbUhsa2xRSlBkWkxWekFyeVc1OXVnYnNySUVPQkRPcWc1VHFDQzFCL1lVbjlnSFhtV0VjWkkwVS9xRnRqQXlwZDJNOTB1MW00SEZxQS8wMnYzOVIzbW9oa0h3MmxEeEpVbSsrL0VqaWVTdU51dkY5UHUzRWJpU2R5aEhhbndYdlhUbnJLWldxNG42ejRnSG9sNFVILzdjcDd0MU9kUE5LSVNOTGtyMVZQTVRiQnIvWE9peDdKLzY5UHlldlhOSm9yYTVuczB4U3A3UlFMc2doU1RFQTlPRnRLcUxZakt3ZEgvQVRVcWpvbEtQN1lMS0hBa1JzbWJLS1lvRERndFNYK1JUUWZCRlpwR1hYcnBldmNHMlRiYzhQSTZTRXpFOWlZUC9PNGI0elF3b1VXTUJub2I3SjVEbEZDZHpYVXlWSjZTYkF5dHVxNW1TUjN1dFVUWlUvekdEM1VSTytTdktmV2NXckhLTEpOQ3F5RkRtWFA1VXJ1THhmMkFkRy8yTlVnM2ZUUzZpOEtOellSRVNPcVMvS1JXS3I5V1hoa0RIV01kd0dSTVovV3ZxSysrbUMra3k1SkFPenRnS2ZmMkhDOFg2d2ZJbndpd0FTc0FVdVVaN2h1QVhaSVNuN3lmOUdYZXFnd21kQVp2UkticUZNVXBFOVlpR2M5SDRyWXRrNjROd0UyU1lzMGthcUk2WWF0eVloOFgwUERtTDdURWpnVU80MUpGeExndnBJYmVwVjdSc2dyUzArSzdaMGtUdDlWUHZLN0NLTTNtaDR1bGZSaXhZQ2F2MnhkYW1YOXBhN2xmU0FyRTkzQ0g5cTNFWkRkVXREUG1rZ1NSbUJVOU5JeW9zYnB6Y1YyOHlEWG1CQVVucjNFd0RFWTM5L0M1bDVvYTlHampXZUlvNk9hNWVrQm9sc0ZlVGxXTm5LblE1d0JIaExPRG1GaVVSZVM4T3dvSHFHMjhjOUlYK3c3MGtYdmM1NWhvVk1JdVJ3aHlqRnpRdTd4T0FKdVN4VnpiV0lQNzNmZVI3RmcwejdGUVd5bXA2eHl3Q3NrUnJHWVNEbnVxbjlRTXdOTTJ2OWRDTXZYb1B6cm5nQnlxejJyVFJiU29uUEVERGRGZWNjUkhab2ZkcVZPYVhQNGE2OHhaMll1bFF1eVNucktvWkFEdGUxY20wTzM0M2hhSlptQXNWR2VzYlppVzZuTDJOY2xOMy9rZ2pEc2xwc0NLMmZ2ZDRySVpiaVdIYjBrcEpYK1dpUVRDVmpZZ1lhdVRFMFdFLzNsd1MvR1d2WDZmdTBYTXpkM3NxVEJFMEhzUGZ0Z1dTeDQ0TjMwc2wyMEhWZ3NBVlhYejNUem5uTXdFNzVRSXR5eXdrRHhnZmpqejAvRlFTSU0zTGlGdW83blJFbE8xT3VMcEhPdjBLaEdzZXUvRmVxVTVxRVRGRForUUZYVEsrclJHczNZK2N5MmQ5ZVZoYUpiWEJaSlBIY1lXYUxrYUlsRjBrcEVVSHR1V3cxam9OTmV3UWdSOTVERlFReVR2dWI3WWk5d0NkVExBR3A1M2NIcmQ1OW9zbHJXcGNGamg5Q1FLVW5HOGpOQXhKRlFuM0dZOElTUVU1aVlheU1pZWxuT2VoTHJJdmhWRTZ1ZUNRM0djM1JlVkFDM01BbG5Od3F0eEh1enZJWG9oMytJd1lZMlhCMW9pU3R6UXlYck1mZEhhRU45MkJ5TGd1VjBWVElpeWF5aGlzSDYyV2x1UlJGU3FUMk9tbmlIQ292ZnUvQlVxTE1SaGdHanJSenJDRjU4WjQwQWRIK2lXZWxhcHNJc09tbzk2VE8wQzB3MEMrWnRCWlh5YWJGWFdHYWtYb0sxSHFLWHpjWVZxTkpCWW1wc2p6R05vb2ZjcTdHNzREK0F2ZUZJaHNEUUJYZmZiVmdJMnFKd1FJaFU2cHBmZkhDRDIrWVFScXVtTEl5a2tqVTJtREZFOXI4Umh1UmFKMXFHWGsvNVI1ZXJtdlBweHR4SjRGU0NFUzhaSFFQUFFWNTNQUkVQK29CMDZZK0ZJbXFvUnloUUh1OGM4MXlQZFJIUUV1SjJUUGM0eEphSHJVUXFnN1hzQ3M2ZGszbHZ0RmN5OG43S3FNVkkwQU04Mmx0UVhtdFdpTGEzbWF4d1h4c2lqYVJ2U0VnMzFENWV5S3UzMGNxZkV0Ukk4UEFMZlQrV3hpZElVSmdkR0xHcU10dzlXbkFMMVV3R25JenhqV1dCVTRHVGxmT0VqQnVKQVk2ODJFZzFqdUt4Vk9pSmptN082MEhpcGdlSjBsSVRqMDVNbUpZdGNFUkFRbWFueHJmMmJXNGVvb1JLN251ek12L0dveWJzY3ptOEs3SzN5UjVBeExNWk9jbDVFQm1Ub3EvUXl1anpvdnFQYUQ4RURXVGs3ekNVb0FyRXZ2L0pkQTViM2tpWGN3SFA2N2hBZEFOUCtVY1ltWk9od01KbmRxT1F4RHlFTmU5UU5KTUlZdFhHdEF0V3lsK083WnN4Y0xiVDBxTk9DUUpaMHFpbndpdHZHbFl5QU5RTG5paXA0Q3FtN09pZndZdUo0WWFRZkxqdHhJVHFpcnY3WG55d3IwVXR0MFRBTjdCZE9RWG1MN1VvMS9lNGkwaHlFbWE5TTViNnhTYVNKVjYxOG5rUHY2YXA2UGYyUTd6dlNpeTB2enVYTnZ6bUdiZjF6TmhSVFBjc2ozMk43K1lkNFM0VTJreUtEOTI0ektvNmRkQUtIYkNaZU05WTdseEZ1SFZoOWlSWjd6Qm55NTVXSVBtNVJ0UkQ1UXZsZ3pOU1AyUVNqdzlYSG04ZXJRYUJ3MEphdVdDbS94MWpTSkZBTmlyOUwzM1lBSytOVmVBbk1yNjFwOW5MdDR6aDdLQXBQZ090cFZtQlVOYkphclVHdUNwY1dEZ3dZYTg2NmJRRkRiNGg3UTVRbEFFait1a0lNMU9UaXFlVnNNSkNCclRzV2RkZTB0SXN3L2IzWUF3R0tFZWd4TUgvR2RmTDd2cThJaGs2bW9tdlJXemZ0VThXNHVoRDBZOWlkN2FDQ21kQnl1UzYxOER0YXMrQjJpVkxmRHlZZkVXc01jNXFYTG5CVDJlb2lkNnNmbG1sMU41TW1CRTFLTEgwK20zTW9pekE2MDREaTBKTmhUTDBDWmw5MklQbllWYmRZdGxvYURMOHF5QXVjbmsxSlZ2UlVZcWwrSEEzTnhIZlFoY3V1U1ZOa0dZQmdCVXg5UDYxeklXQjZqOUl4dlFzUW9RcWlmRUtVL1pOWFRoYXpwdHVJazUzVVN0TFVDcmZNS1laenpkcEtPUnlRLzNZN1hUUm53cWp3YWl0bnBqcWh1OTQ0Z0dvTDBmdUtXVk44QkxKMjlNNUsxakd1SnlGYWdWVFd4eU95bndreFZWNWpQR1k2bzhqU010YTlRYlVtQmEwMVJNd2RQWU5Cbzk5bmRiYjU5YzZFclJTelVpMmowM0Yzdkx0VUpnR0k2aEE1WGxyMmR6b05WdW1QNFNlM09QKzE0QTVWaE1nWGRYTm9oRktVeXNrK1dDaTJWdWxYaUROMHIzaW9FNGNrK2JmdFUrS3ZjK2tKd2xiSVhWemR1VnV3SFAvQlo5eUhBRjFTSUM1WTB5NzV2VlQ5YXhHVjVMdzR6cEZZY20va2s5YkE3RDBPNk9kaUFtbFZTdmtXYTdETnAwR1pyZTNkcXZsREJVaEFXb1pUeTkvRVJMaXVEUndoNmdyQ2E3Z0dUOTFZRHdUUk1Na2ZmUGNSZGhKbHZwVldjc1U5ckNOeFp3YVNQcjIzRm1oQ3l4S0MweWlVQzEzM3ZCbEpncXRlUlZUMStWUjREYkpCNlI5TEhmSUNxSTdUWHk3VEQyV3ZkVjlVb3RiL3hlL1ZYbzAzY05wWnBWL3AwbGFVcXQ0VU9QTlFDcUU0VnFmeW9jeUJJbXRnQSt3c1RabW1JS3dVNThFT0tNQngvTVVNbGJNbTJ3bmt6eW0wNzh2VGVYZ2JGMUVpODlXUjZScTNDMG1GaTVodUpLeXBMNlU4Q3l4MWwyVUdZaXQrYWJJTzY2eVlRSmxYL3Q2VlpZWTh3ZGwyWGI4clRUTmZOdXZHVVFxc3JuU1Z2ZGo0MENGOTZva3p1cjdDQ2pVZUs4aDNCUkZ5M3Z3ZHdkRUZQTjN6VHA1TmJxRHp5WFVQM3dqTGJJYWp2a2FwcWNEd1lvMllUZDlMQm1XcitJZkZDR0lsK0FxaTJzSWRLeXFGeHcyYnYzU0k5SU1XYUV3dXV4S21wNlJzVndHK1ZxOE9lQ2QvSWFmNzNiRyszRmVJdFZCbnRsUGVwTVJXUG5vOEp3WDgvbGhyRHFubUd0N25lTFg5c0dCa3Z3MFlyMU85S1I0bENwZlVZMmc1TWNPY1F0RERXOVI1UXF1STRiWjNJTTl3OWR3UWlkSkFUQjNYN0FQV3MxbGZtTExsdW1WUU9DSHBnazdWb0pZMDF3d242dy84eUxBbmNGd00yL1JzNktqaDNxMDZmNERMSVI5ZCt2cVVkaHhYdkdxUHh0ajlxWGl2THAxUDkrdGNJQzdEMW9MSmdEeEY2ZnAxclAxbHBUTEJXY202MUM2U1MxVGRsalhqNE9aUXNISTdOc3RZaHRmSUhoVzdQM0R1NnE1Q2syYVhKUFJBK3BzMkFnRmxwOGhWL0xMSE9nQVBqWDdlZi9qTDRvc1pTZzJrY3NOUFFibitUWUQrU3NESVFSR0huSG1iQmVxYktTOFBOellqajhQY2JHR2JhQ2FWTi92NS83RHpkSFpsekY4QnA1ZVpkb2M4WFY3d2QrZlh4NVRkaVA0NTZSVzI5SmdKcnJBREpTZFcrYmJydmVZRDhGaWJhRTBGRnFLZzNpVTErTEdYZGFwbmdqTVFqWXdPb0VFeTFXajVCWFZaelZNRnZJUTc4UWdyaGdOa2tVUU9JQ2xpSzlLdVAyS0JRWVB2MWdrZm1vZDNUMmZ6N3k3bVZHQ1gzSFZCeWN1SjEvbDFzY3hWNk1sdWM5czNVOTd1S21pLzk1TDFzL2hWa2F6QVVSYkQrK1VuVms3TVltenFjSzk2OW9IcE1FV1paTTdvNkdoT3ZXVGxGMGhrVVRFaUgxNEozS0VmUElJWm1FNUYyaEp4alVvK1cvdTNyTXdNQzBiUGFpdCtKSWlEYktDV0YrQVZuTEhBNVYvOVdwYUdtMVBwZDNIak5FZ2F2YmxaYXFOM0JUdnV6R3pGT0tnVkxpOUE4UGVXbjNMcFo3aFlQbmc3bWJ4d0tnd1V0N0crWkFSLzBsRHBYN3RWTjdoZ0JqdWFic203NFZZUGZWb1ZqbUUveGtuUGgvUi9lZmtEcU1kNzhlRTBmQkpROEp4eTRzaHdGbGZHUjdFYysvMW4wT0tmV2ZJRDN2VWVZMFZBNyswTFpYNXcvMlREZkppa2Npd2VUOEdKZkk3Z2JQQ01tU3F4emJ0TzFHVGVDcld5dlVZL2J2ZmJMVDU4QllaRjRGMng0blBaNHE4RC83V2dOdjN2QjJKdzdGQ3BRdXk3Y2dZT3ZNaEhjWDA0MW0vcVhVUTJXQ1d6bEZmK3hWa2theHhRN3ZuKzZ6emY5NDNxYnZLS2NpSnFlQkl2RS9Rd3l0Y0I2bFo1QnJQSy96N1UrbGY1aEplN3BxZzRJNzZ3blgrTXdaVS9XYlpIcjZOaDVrelRNeXh2SDRwbWUxZjhOQ2pncXM3dnhEenQvWXVjdHM5M0p5Z20vZ1BkT3dmdm1OWE1sVll4ZGsxMlVjK3I4bitKTjM1dC9kczNZelNlQUh4OElicWk3N1B1Yy9YWW1HMjVPMkIrZDVLeUJMK0RkeC90V3o3T1FYZlcrK1pOcFpPZDhiT1NpU0p6Sy9jYzFoTW43QUxPZ2tpR3VpVTBYWGY2ZkNUYUZqbU5wdzBhdlZLbkhKRjJYZ2tpRWptS2xLZlhwSE9FQjNORkw1cEJ0a0RlTmZPZjNpZ0ZRV2k5TDM5RDgxQ1Q3Vy9qdDYwbVE0dWZhcjJQR2ZvRUgvak1yVEJOYno3K1FXaytYZDVWdG1LVG1iTDM4YXRBVlVCNldoK3BQWElDSi9xVkhQNy81VnpQQ28zdm1uLzE2RHJ1VjRldjczV2wveGE5N1hLMXRSajhPeGc4alcxUUFPOUs5YmVDcDlJa0tmLzZFNWd3R0FyOUtISVNOL1loVUFzd1p0WFIwTThDMkFTTFZlOEJHRnhmNHRzbmNUOXhOOTBYTU5tRzhyRkY3enZvempMMUtTR3MrcWlhU0UyYXZxelRYakZXU095RjRaQ1lLZ0UxelI2RStteExNWHBPVDdhRUMwUlBCTTJlV1RpV0FtbXFVVEttdm1ka0Nzb2k1TjNjdWZIdHU4NmRxYm5BSUJ0STVKbDBabU5hWTRaWVhrMVE4Y2ZrM2N6eThtbmhmSDdnZFBPVTg5VTFtblJ0bHMvQUJkNWxadFc5N0FaeXZsaU9kMzluWlptR041WHBaY2p0ZmZ5N1JCNW1nNUtIR1M1eStVcWRtZlI5Y1RGMVQ0QjlIVldtUVdjQ1VFZlRoek1hMVUrZWVIblFEcVpnMEh4bDdQVDMzM0hHd1luaWYwck82ZWJVMTY0VGhNcWNMNVpYb0d1Y1pYcHRjZHJYMVQyUWVUZm43WW9ZYVJsTGpQQ0V5TC9jZ0l1YlZQTG1GZjNFS3dCVkIybjNQK1ViUFBWVHdHc2F2TlFFZkFleFJLbUlVS0gyRDhGT3NKR2VMaU0yTElVcFdqZ2hQeGNQYUdtSGNPWXA1b2g4UGhrSTFDQXNyQkJTL3FMUnluZGJDQldwcTg3VEJPVjgrUVhHdXN3YzRmUzRtYitGZitJakRsSTNiVXFTczhqMCtaZmNQSnd3VnF0bDZTc2Nhd1g2R0U2dWM5dnlvSnhxWkJwUlBZWkhMUDV2TzZVam42NUhOc3lacWJaNmxOZk9LcDZycnh1MGZISlNJcnAvMTJRaXQzWGJYWCtoWW9RV0FXbHZZeTZweGxnZ2FEd00wV3FlaHdDaG9sNmRESE9waTNBYWtBVHZEaHIzTno3aUlTQ2ZuamlZdHdMbis3RFhaVkRpTnJXMlJsS0hBeHhMSDNlL2NpNFFaQThNeFdjRTU4RmJ2MEI3V1hjNjh1RGtUY29HNHpxcDl3S0JQYjl4eEljcnNiOGVkbFZ6Z252dUkyUlE4S1ovNTlYM0NNSXAwM0ZMS2laUHNQVisvTDFhV1lpaXp0dGtqNWlIaFE2QkZ6Si8zUUM5ZXF3YnBaWEZTVTR3VzdHQlJzeWxBYnRldW1Xazl1ZjFlTENNWHhGRVc5cU5rY0FUUUlzVllxMTFtenliRFI5YXZ0Tnpid293bjdYSGIzektzQm1YRml1eGRzZDhVbDM1b21OWDVSdDk5Nmw4SnIvNlp3OWMrL1FWd0xsZG5pWXpxUXhzNGorL2JrdmVXOFJ2VHB0TjFnejNWUlh1ZnpidHhBL0daSGlsQlBMZ1VZdnQxNDhkU2VmK0k2dWw1dDVweVNpb2ZkdUJmSGdUS09rbkM1bDMySEM3RGdGVlZmT1Vobk1MT0QyUUdnTmsvcG5PZTJUSEIveFNNT3AzS3ZDZWlOdnZSSlZIVVY5M0kycTN6WnhhRGFuRmw3NlkzTGZVeDVQZW9JNEZrNG9SWEFhcVhMQjNodDdkK3lBcFA5U0o2cG13QnYzWFpoQmdwalBiek1lTUlvaEkrWWhFNGNhZEdmNnhsbWYzRThBU01UQ1EyOE9nMjl3OUFST1VUSjl3WVNYTFdldW5kK0h5Qkp5STJVaGh2N1BMSkN3VnV0SER2Tjh1em1FTkd4Vm8rOVJkR3oxc3lMYmN2bVJWK0psZk1yMWNjbHhYYWxBOGswcjJ1Ui85QWpralo3NDF5U1RQRFVQVTNhU1IwbzRucWlyZHhZZjJyM2FoVnh0ZnFXODlPeXZ6L3hIbXFpQzJrcnNXV21SOWI3U2VRMG9wVk9BWm1mcXl2YnFlMm1vYWVZbXlCa3FFdmg1Und4Sk4zOS9IK3AxNGZDL2xadWdhbGxVYUpIRE5HQVBmSTBtZzFEbGJKNDBwbG9hekxVNzRHbkZDakR3RDRqUGovYW5XRE43K2FnS2xCYWZRNGxiZDRnbCtjRDV1UnBQQ1NnaGpLRGFmdFBXenIrd1I4eXFWMitmdjRuZElUdElnR2MxODMxWFBDRWJSVGNqUWJOWE1HYU9aR04rZWVYcHFvUysrOFBXYWVqNkllOHI3NzBpWFpGYzJrVVc0TmVUMEk4K1dIMWxQaDlJcnhDQkp4SWk0SllzS2prVEhicXh4U3kxSTBNblV6YUtoS3NjRUkxYXptMGluY296TGxpL2JBSldyRUFxbmpqQkhJeEZxWGd5czF3SSsxdGgzai94Q3FWY3RYRVVKNjJyZzE4SjJURDJSanB6MHM3YmtQVkI4ZDF6ZmZpQktyaEQ3NFltbmFPUXZjTVVPTEppcTVBaHY2YkloeUwrNE9Rb1hjK1pibmZaS1IvUDhiMU1iNG1lTVhUclAwZHFqL3JQK0Fad2dOTnBZa1BJanZ2L0NGcy82bUsvVWNOZnlCUDBoZTY5cWVBUEUyRmlkOWtGTzhIZjI5emtpR0x0dzZlNStESVg2dE9xM1FuckFSN25zUzd1NS95TjJvb0YwL3dIVit0MmFIaGhsMERvR3RVMEc1V1NPNHdTNjZjN3E4UXJEWUV2NXVIQVZkd2x0NDFwUzczbHJMSURyemlhQzZ4dUxMa1RUcHF0WnNQR2FvN2VVOEx2cVhNeG5qdTlEMHRPTEpWa3p4M0xobVpQQUV1dUVKUXpRVHBYa2hPQTd2b04xUjhoOVYwTUtjWUw2Nm5uVTFzYnV6Q2NCSVM1a2NSUjdYZ1ZGZ3gyRGRqeWZFU09WTzVhSnN0VG1XTHFyMitSalFITWN2VFBvZUNMQTZiNkt4YUp5SlhHWUdMTlZnbjc0MjJUelJQMVRxaDZrdVVrZUlBZGdTK1UzN0FhV2lSZnNHTDJXeDJQYUx3Y24wN2NxdU0rQzBvNUFYa21hUlhxbnpOOGFTNm1pK0NhbVlWdmtqRzdQWFR2SDdhRzMwYWhvVU9sb29YMnhVYi93TjVvQ09UVHhNdnZHeHlTNXVNUVJRaGVZNVozdWd2NDRwWmVNZ1crYkUvOW8vNGpXSlpvUW52dE9kL0JzYlh4dXhEbDhzN1pDMW12WGdQdFV6V3F4SnBKRG1lNzJQem5hTnVFYmZ5b2wyL3JZcUhndTNQOWR3OW5KbnQ4VUcvb2pWeWxPSjh0enp2VHZLNjlHeGJaUUpXT2dOeDV1aTg2cENHUjk0WmFrUmFZZWJhSnhtVnJoMkpyUVdxZUxKVlZqTVpuWnF0WWRMbWFMNXhCMC9RSFM2bUZJM1o4RGgrSThkc015NGY5TTcvVjRaUlRmdVNFNFcyWmRNWFVObjFCK2RXR2JUS3pHeHJBVnBvNGFoejNkK25RbjN5V21pZDh4SDJOajN4NXJwNHMxMGVkdVZucHoxOXJQU2MxM3RWSmE2MFlMMS9uYnB0Q3ZsdU9BOFcrSVBydHRlM1ptYmx5ZmRXN3ZhRFNsdFRMQjV2R092QUNJcGxSRWNFcDF4eGNob0x5RW11Y2wzYWtLd3loNEtDWS9sZ3hwaEhQZWJET2xGNHIvR2ZrL1NCaWFGdHRZb3o3WXZKVXpqZGtWdXBuZEd1S0ErczUvS3o0cVFRWlJzTlZPV1dpU1BhNE1qVVYyYTErNExUbFROWE1HV3lEMXBuWitNNDZGYnpJSnZ3K0ZvODRPVzRmRG1jaHozdGg0Q0lmbVhhaC9zOGNHSG1zc0g1STV4YXg4K09ZbVJuVzB5cGo2ZmxubTcvd1NXTEQxbUdieTU4cXR6dDEremcvajhtRGlWNTlvcGV3MFRRUFBvVitnOEZNT1QxNDhFUDJVZDVYbEN4em85ZmZyVUxqSkNpWDVJcktPNjZlVnEwdWk2L3VpdmxacEZDd3BFejlWWGRLNlZ0STRHTVJmUEVCUGJsdldLN0xHVVN2cDNrRGpNVzhIeWFDNzllSlF2L1NwbnlITldVbHpsWkJFMFVYUURmYWxkL0RUd3JYcDBaUlZPM1RpQ2NmSEJuM1BpVllFZTJReWEyeU90T0F0SENvL29lMDh4RlFhdmRIeTdDQjNMaEk5UmR4ZzVpZUpHTlBZSFR5bWo3NnRsWGpWODEzZXM4UWN0dm5wdjFqZkx6RktzeEJjMTBRUU5ZWEYxMm50NStZTWVPdlVpQ2xHSWIyWmtMZ2N6YWxUQVdQZFZ5ZmVORmFqTExqaGtLVmZoL3RtdnNSVVV3TEdTdDFZYkFZdy9GL2EvTGxhditTbTdPeWZMUXRuMjUzRGZKUUwra01TTVgvaE9lNWlUU2lDdS9qUHI1RTR1ZmM2enRuRkFZTjEvcWlVaGloZTRsUy9mZWUySlVIL3ZQQkdBTFRSQnN1bm82WHRXRnY3V3VNR1ZGTXVOMkFHZVJRMk9WMFBUNkhYWk04ZEZtQUxRbGdhZEIrUlkwN0JNRkxBVHdObXlRSEU4ak5ENloxaU9QREV6RmgyM2dLeTM1Qkd5UlBNT3U3L0VCMjhUMDdPaldKcnBwbERuOXpxRTZQbmRtRWtFck92eHJ0Q1d6QkhhRU10UjVueWRWUk1IOERONHlFR1pOd3FZbkkvMkhwVVg3UndWRlNvQmZ0azgvZ29ySVdjUFdSQUlYV2pteUkzYTlJMklPV3NNUmp4SUJiaU9VNjE1QnRLQmF3UE03N0swSm54OEp0dU9ucDN1YlhOcStCbTIwSFFPYVdWT2hMOEFpVzYybHBUVTFrNWM5QW1QamJBNU92UlJjY2ZtNHUvcVFmUE5WMm0xeWlYa1NicktmRXhBUGdXQzNXN3ZUTHV1czRtaEhmTUlXSmxCWWsyWmRMRy9Tems1cmxCSGN2d2VQTkdGVzhTQzBLZ1M0NGZJUjNwL2huUisyaCs2Nk9NZ2hwSmNpUDNaQUxjU21DdUxIaVFWekM2VjFJTUk1c3BoTGNkQ0MrR0c2QUZiV1RmZ3pMRkxiTE8vTDMzNGJYQVhvTXNlRUc1cTJISlBiWkRnUTNaMzJTUE9aakF4dXlHWGRMeW5jZS84NDBDVmxveEN4d3I0Rjc3bEZaUGloc1B6c3kzc2t1YjNrMTBxa0lNNHBEWEdwTXlYeHppTFZuUVJPcGZCaFpNTmk4R3FJK2Vra3RyUXBBOExOMEZxYnJwcllxOGdUcXRpbXdIY2YwTy9mMGZQajRhTE96dmJRemczUFVpUHN5RytZVEpOcWRySm1QREZlOFdUUGN5QVZyVHBJUGJPZ09pcDhNSGVuMk5OR3I1VDNEd3p6MXlONGs3SHg5eVI1Z0ludjE0U3BEN0hHaFVHOGxSTmp2ZEhZNngrNjlpWWdUb0dJTDdtTlJCbHRSNXpoUDB4cnFocHRLcmhNS3VQbnY1UndFaEhJalJvVStRejR2cHNYcGJMUmVPUFBYNFFzaWhvTWtxQXZCWkdXQ29YakVpNnB3L0dWWHozOTQvZFVSODkyV0NMaFVMNmlSZkxrUzVFaW10L1ppeFJZVGRQNEFxR3lCbWtnUzhxL0tzWG5wTkRGUklHcjMxM1V2dUhTeGZIZTh6TVpzRjc3Q1NsVUhlMGMrWVRFeHA3NHFBWEJ1NCtpdmhzTnVKdE5HMGZyaFdsN1FxczlNK2hvaDBQZU1KR09aTjZkVDRObDJsTkNjRitQaFpwVFBuSG1MS0FnVUFHOEp1QXhab0hqazVyc1N1RkJ4UEw3OHg0eWJ4WXZabzV2VmRyYmhrbFprbE5oMGt6bWpoQWxvQkpaa01mNTlQaWdRZXg1Wi9HaEl2Sm02U2YxQkNXVEhQRlpSdllPOXZjcThYdDlUL3VMQkU2VGR2MllIRFEyRDhZckVJSnFjSUREMVhsQTJ3VVhHOGo1VnJMeTlJV3dmUDNjMmI5VWdXUDJuQnd1U2U0TStEWmN5WW9CcGtjazliamNReG1HOFp1eGhjYnRPMnllQURhbHVVMk9sSU5ndldhT0pZRHN0dWVSb3U4SVl0ME4rM29rV0hQNitBZS9leUUrSkdZTlRaZXZVYzdKYTV3ZWtDQ3lUaE81Y3lQeFJwcWhPbW5mb1J3Qys0d3UwaElKNmpYRTArMnRidlpJK0pBWStEV1B3M2Zjck43U1p2M1dOcHUzdnRueWIwbGJxcDM2c1dzVVFVVHhEOG50dzJrTFNlYkNqbEVOQVJxeStWQ0Y0czg2K01xSzA5dXpZQ1A1WHE3WU5ZbDRjNFR1dWF6Y09Db1Z4NS94dTdsY2d1REdaMDhvbnc5cWdNNDZWbnFVbEE1TXZnQjBPMWlMMTVQVXZrWFE5Y21LQ3RBYW1oMUxZbWlhV0drNEFubU54UFBBWEYwQXQ2Ky8yWDArZ3FVdm50ZzRWOHU2T2MwRzFUMVRhUzF6ckhQOG43c0E5RXhHZTdoLzlzek41NGZaZGpyenFGZlJFT1pXSnNaWFFjM1VnSEVvZEFZdFlNRlc4bDRFcXBZZTVIQkVrMkZMMTcrRzcxWVhjdExqVVA1em1JdGZpNlBSUXRXeEoxUnlCeFErK2hhOTVEelN4WU41U0Y2Q1d2OXlheE9aQkV4MDZDR2hsUU1BNjBpNzZUMDFDRFd2QzlsdmdLeS9DVzdGUmYxTEIraStoaFhreWg5UHZFOU9XQUUrYng1NXkxZHI1U2lENC9KNDA1UkUzUEZSZUkzeG9YZXRQakFuNExPNzcrRjBTaUFxTlJrbjMrTlJ4TWVSbUtYK0ZQVzhlSmwzWkVxanRoV1Ztb2NjMHcwdHdGNy9iT1BuNi9NRWdOUmI2SDRqaXlxZytWc0xvcG5ZM2d5RUdFYm1TSUN5UXg2QUQ0cVphbjBOQUd0SE44YmpVa0xna3JPVm04WDhWZGVlN21wZTFtOUF1Y2xJZzFqV0JVZXpZZ0JKUVBkOENPWnBSOER3dThzd1pTMHc0MFN2SzhVNUMxS3RhMkxXUkJoT2lhSGJROU9rbkZ0cFhTb0llNUt2TjhKRkp5SGl1aVJ0eXhWQzNhWFc4K1ZRRk50STA1OEV6MUh4T2NJSk5SYXBJZG5lV0syRGRFSVJ4RXFWMkhGaHY5MGRLVjBRaG5zUVRSYWdDL2VOWU54OHg0MUhMdTRHUmVkaUh5dFhXZW1kWUFPUU5FaU1WQTdKU2tiR1M5a2NzckJ0emVtYW1uOG0veTNkOWJaNWlOdnhUN01ZTENaYVVxbVpaTnhoeVg1aWRMZVdyMkhZdHFoYm12bzdiSGRrUlVLQ25uMzh1dVUvYzY4VnFiL0RkcEZ0R21uU2JaREVMNnkyb3Y0TzJ6WGhVeG5rQ0V5MGRiRzJKUFdYdC9kVTQxRW5aNFdmWkc5YWlCbzR0OW4rOW9ndmQ4RVRCQzBJU1d1S2YwQVd5M01jVXViWUQ5T1piSUpBOWdVVWg4U0FxSjF6RlA0czNqWjYvZ1BiRjRFdXo5T044SXp2SVJydVdhZ3FRWFJVdGt1RlB4V3E1VXRTVXVqSisxcWgrbC9JOXZXZmJtZit3SFlXZ0VWdnVKek5TdjNkYlljVGFmOXFIY3lZUkNjY2xjTTlnQmNKWWZhelg0dFdUNzdkcTZXRmlpVGNNVXhnV2Z0TnZmeXZmTUVwOXdmVGxMelVhWnpmUXFRZGNKVVp3YkhiNWlMVG0xVFVvZjlxaTh1TkZhZ0VYcjZxY0xuVlhIcGtmTFNIZEZndkQwRFVtWVdqelk3azMxdXF2Q2JZdUNVa2FXczUvclRUcFB0bkJXdUlhR0RsbExCTTdqU05CSUZJWUl5WS9MUWdUMGZmdUlXOVNPczJUZmFsR2M3dWxwNVp0Si84TWVmS1BNVmRycjBhUTM5dWc0WDF2TGljb05GemJDcmx4eXBCazhwRTZCc3FqVHczLzh4U012RGloa0lCVmt3bU5zM1EwR3o1VDBRVDk1d3NkdDk3STVsdHBseVNuRTZXWEZUVGhoMkhWaitiMzliNzB1T1lJL3VwM0ZtdHhmZzJDQlEzbHhCNzlTQXlpYXVOeDFwTFpJRXlPclRPRG5GbFlvVnV6WDE0ZnZhMTBCNmdXWGxRNUZjNjBBWkNGOUxoME5FZXRGUlRuSmR6Q1F6THk1YU1sMDhuMTV2QTdtLzlEMEhjaEh5WGdPT2VtMk1YMjVYT2xqNFdsRzVEbjZ3aXlCM25RSmlBN0lZL2RnMDIzZklJd2k1SjBZK3ExOUhTT2xBNW9YZlRYN3pJQ2QzUHRnZE0yUnY5VkMvUU1IRWxBSzVjelF0SDF3bnFNOEpLT2VEYzNzdGNMVmpvR0NtM3dKalMvZ3dKeWZLMTZjdmJLTDRZeUxKc2FzcnRXSm9yRDF3NUN3S2FtcUNqZUo3ZC80UmpiS0Z2aCtzMmZRZFc4ZmVIQUljZ1Z5VzR5UWhnUjFoTWdGTjQ4KzJNWTN6NGlSVWFTZlorQVIyMkNVcEdCL3VUUFkxdXBZQkxWM01PNTRVWEpTTndLUFlGN1RHRVJWZFRoQ1Z6OVo1SjZXOGFpWDhsNmNhV2FIYzhCa3pJV3VEVW9vYzYraWs4bURQWlB5UG9IbkZjMzNrZGVHRXF4TlBCOGZQcjMrVnh6R1hYK2tRVGhuNEtKRDM1ZkhwcUhRZEl6eDRKSlJ4ZHhkekM5OURqNmp2WEVSdVZyUEdKRTJjMVFGTG5RWDFtREhVK09WV3BGZi9UUlNVQ2FDcUdNYVhlSHJCZkR2UWR2WExmNTk5d0g2bkxmOXR1dHR5MWYyd3dmREtycnY2bys2WmFzdjN6U0xjbnhLUURZcWkrMGc4RExiU0FOY2RUamo3TmJHbGxKK1Q2N2V4V3NUN1k0MHVHZzA4cjVLTWkxZVYvNXlwdzBFVDZ3RisrbWlpSHV6dnJZU0lpKys2VXB5MEk2MTNSb3JIUnVXN3F1bGcxcjk0NEZYYVJBQjdHb1RwWEFRd2YwNGNOWWlNZnYydEhlUVFIc0k3NFp3ZjgxRTB5N3gyTk5mSDVxUThNV1ZkOThYdVZMMzRSTmoyRmxCUW0zeE0zWnh0d2xQQUZidUR2dFNCSXlTVTJlcUQvTGdqWFRVWkF5SlFMeTNtU1pEbVVTYktSRU9rcXJCWC8zWjNTSUNaWU4xb1RJVzVqb1BQZDUzalVOYUJtUXM3RUFYVE16OWFQTE1WUmtXUlB4WStOL1E0UVltZDZFT2ZlNFpsUlhXcFkrQ0ZzM2RNZmZaUGEwTm16ZXlLa2M2SjlBQzcrVmxNVGlvS3FnNlJqUlpXOVJ1U2tUaG5GeUl2akVEY0NhcWJxNkNZV0ZjcU5KMytEekxNdVpQd3hVRkxJUklEYlJHelhwQU1jVHAybzVRbHpKbEc1U0krYmJ1dHBwUXYrcWtja25pT1NpQlg4OUlOcGsyT1pLL24xSWF0SEErRnFrSjE5TlczS0k1TTBUa2hDd29zTjFlWHRqUnZTcnJsVXVvZmVSWU1KdmZSTkZxa1ZuL2JPcFBjUU14ZW1EUkFkS21mYWREcWN5TUROcVJKcHd0VWlvc2tGRGpRTTZvNG40S1Q4b2FreDgwNjB1SEp5VVpaQ1VQQ0FjaXB5RTJtY09ma01wVjdicmlib3IvTFNaUytJUWIwbmxCTUduNDNiTnkwYmlYdDlSR29Ld3E4dFhqa09zcTFoa1MrbWczRWt6b21pcGtpTzJ0OC90ekdDb0hFcVJFaU5WQjNXNE1EQjJMQWpsNy9QM0dxWFdweGowT3k5MGdVQ25vajBYMmdiTXovTko4QUdBN1FLUENsRmVOdXlQcXpOd0I3dGN0Q3RFb2h5TlRFenFDU3lxd3R5a210d1lLY2hxQmE1dWIyQUpkbUN1SFRJUm12aWV4cjYyS3dIZndQZSs4K3Q0VEJ1eVJncll0Zk9wdVpqTERGTHE0Um1uNitldzlJRDJCSktnb0ZVR3lBNnowL0NTaVNTYmxUTWR3UlVHekJ4R3dtUHgyUW51SUh5Vkw2bWZNMTUzRndVa3A3QklucElOWGp2ZlM4Sm1OVjhXWUo1bC9Jb001a0x3cWQ3UHdmU1BqNG5hUTFwbkpRTGN4ZVhIV0tjZ3R4MzdCeXdBOVFGWFcxT3ZUcHRKWEhxZ3lEWUt5Qzd2azlNRjc1bWpIaXZTMVk5eHBybGFRNlpVLysrUzJzOVp5NVR0aXZXZGRlTElVRlpyK2hOSFB0dDdFYS9nRDNaaC9YUUczai93UUtKZExRUG1IcURvalVBYkI3MnhyTVh1Ky9EbG9aOWJNQndWRXozczE5V3kvZVBaNXlTRWx6UGk2N08vM1FuT0NiL05XT1B6eHdpdHlDR2hRaWc1M3FHbVJiTlE3NTU0MTc2bEhxWno2alJmRGozVHJ5akR1b0wrZEtlZlFEMjdjQU9RM2pValJrOUY0QnhsQUV3cDhJQlJNNXFDRDNYa3VJc1NTZkgvVi9Fa2htb2NLYW9zZ3lFM3ZMeTFrQS9ZVXZCdUpHckRoN2dXZ1hkN0duUWs3RVBmcFY3UW1FeXlTWXdMSTk2Ly9WNXJJcnR6bHRHZHBwa0JDSis3MWJhQUVOVlBnMTlud0R5MTdFc1Z2NlIvckNWZTUvWUgyejdheHhOcE45enV6VHJ6YUVIdU9mSmxadFFIclNEdlcrZzlrcVhpd3o1eHJmQlozUTlXekhiaHhWeGJwcVpqSU53bW9MdXpwblhVb0crT2Q2eXUrYmtjaTJvVVViOW9ISjlhWUpFQlhWc1JiRjhWeldSVk9KT0pGRFY5elJlcm1BS1lnZERQRXJoa1RJejk0S1pjVDlvanhaRjNHSENKajJBcGhTM1R4Q2ltTlJuVkRLMEJ6QUpzaFZZa0R2aWltd0RpR0dXSkl6dDBjeU1GbElBcTFCSnRZZ3hYdnlpaVk2amtJRVpUT0pUeFRqdk0zYVBkbW5MeElGSDRzV0x5S1pPRUoyQ0w1NGM5QjJVVVE3NGFYYWJZQWJuTlc3cHVwc25XczlScmdmV2d0Lzc2a2RZT3liVVlTN0JjcmxoeGlIajM1bEQvakx0dkxOZVl2andJS2szMGxTRGc2dHc4QW04TEo1anVkK2VIMktDNld3enRtTTBmQkpicEs0c2pUUlFWU1JNcmZnM0w2bjl0dFRReTE4VnRTcGJuTVBqc2dNUmV3OWNaRGhYMGxXSVV1bGpubi8yZVpHUHV6cUZ2ZzdTeVJHRDV4VExpcnYybWs3QklnSkhNWE9FWjd4VHlUZWErdS9rbFlHTXBEN1J5aWlDOGt3VFFKSmw3RVJpbUg5VkNYYjRpUlA3RXVFcms0K2VwcUladDNKMXBhTnRrZndaeWxxUU4zdU8ydW5DZFdzVzBGRHNNRmZZdmthMVhPUG13YUJBMmRjaDMvUEprYTM5MmhTSkpvRUdkc1BTM0todXR3MWc1MmNYWE83VTR1cmhGbnFXYjQ4Rk1EK0d3Nlp0TjJreUhLVkphZFJ6UWV1dTVQMzFxK0dUdE1lbVdOQTc4VlMyZEJRS1BpblZMdUF6QW1mbGVzMHpzWEtjVW1KMTZweUhuK2dzQnBGcWxPbk9obVQwQXVkK1JnNnNMY2NheXBFRTJjWmVjWmI1N2VZRWhDVWNoaHF4b01VQ1F0K3d4RXo3S0R0TlA1MW0xUmhGVmwrT251RTRFQkVkU1BXekFKRXFhVzJtaGdzQW5HQU95S0x4UHV3NkV6UTVYNzhRRzAzYVluelN2ejNlMjFtRTczSitORlFwM1g5aS9vVDVYYVdROGFPdWNOckE0SXVFUlVsRXVzYXBBM2FVajY5SS9IR2o5aTBIM0YrVitsa0Fnbm11clJLZUY2Nk8rZ0RvNy9DdUFhTnJRTldTSlVtUGc4SlloN01paDQ3Nm4vTVBEaHU5T0o0M2VFbm9WalAvR2pSUjZ0ZE9odUVYdnFvTzJnRFNPYzhiMmJFNUIvK004THZUekNIV1c4VE5jT3pPQVhSRUY1ME1jUGx3aHVOUTBJc2oxQk1ZM2dMaEx3NmpOUENudFEzeTJ4eUlHWjJESHMyVERmTXZ1SzNpaVcrNk4vSGVyeThabkNwM1ZFRjR6K2pyY3ROeFpYZzBWTHlBQXBCYWVpYXFKd05lWXkyNkJJSzBJb2VoUVIxQ2dLNGpVUVErcWJ5ZkF6T3lJS1JMQlhrQmJzWEV6bEU3VWxpTUhKa3RoR1RmeExIaWJDZ3lvZWVSdWFBMUlONTE2b21XMTF0RWFPak9tOHlTRnRWWSt5RnNCZ25YM3E0OVdUY3cxUHJJbVhja2dNWXFjVkxpS2pxQXlHbkxKR3UyMWk4QmVrbHpmeDcveEtYUENmaC9nemZrV2lJNVY3alpYZFJIenBVQ3RzYXlodHJ2V2hGNnVIRzRBUkM0RzN6aDBCNkIvWlkxV1FkbUNXY1hEUEEwV2FFTnlGcFpFeCtLWVRiaVp3RHJ5SUJYWGVYU1BUOGduTU9mOUR5TldBRDRPcHVlcFFMRjBvVytBNTF5WWdENHZvaXRrNStsNjZGMjd4eUJjMDVZY3VxblZxN2RQSmpHeUl5Y0J6ZFNIMGY0UThRZ1c3K0orcENJLzRSajJoSU1rUmFvN29TcUVtcEVXT1k1dTdxWXlxWFh6Q1pYRHVVVDN4K3ZYSWFqdUlYQWZrcFB4cDF2ZkxVYVFma3RJbjVjT2JkWTd3ZkFYOUZIaUp0Y3c4NFExYnNFdU52VDB0bzZTVTZxUkc4UW9XMS9RRFdUVWhZa2d0VVlQaUNhcFM1RFQ2Q3pzRm1SUTlwdVBsbFB1T29GMnh2NmxONTdHTUw2VEpnSFJMbEZKRlgydEEvTW56WUErc2NSS1FSL09ZbUV2aERZWTQ3UEMwdmppT0FWR1NGaWhGUkhtRlVJaWtRK25CbVBBN0NteERpK2wwUXJDVnl5UkRkKzZ2Qk5XRjN4a3JUMXNiMWNBTzhtSFhqM3B2eVNFenIwUmxmdjNodGtBTFQvU0Y5TERITUVWRXRMendLMmRQS0ZqME4yM1VLY293d0UxdElETUxWbElOZ2xESUNzclRWeGJvZnJ2Sm8raFg3ZnhzK1psSStVTm5ZaVJuNzhxUno3Tzh1c0ZSbjlRTVh2VzNvUFVuMk9rZjNCbHRXSzE1WXBoUytNanRuYkY5RUlnK2RLOEhmejJzV3VhR2hQbjRBbytheVlVZVdjaEs0Q1VVUTZsSU9ha0ZWSkRtQTMrWTJOMGRDR2VOUmpPUVpKZjh0R1YxT0R6WCtWaFU3akVKU1p2cEpMOTJxT0JDaGwwL1p6MDVHU0VuL3U2c1BodkVTQ1lLL0t1K3R5ektJdFRDaVRpN2FOQ0lmc0R3NlhiVVdSbjFObzJremo4RlpzV1RYOFRMbkxhNlYrZUNSeEEzeDhvSEJwWGFnQ3RrK1YzZVdPZ0YvQzZUMjhoZ082cVJCNThzMzBnd25wRWwwODJKbWZpU2YwQWxtTW1oSkpKb2NvbXR1YmNUY0d3R3U5bXNMd3djd1lOR3l3MG16NnRkd1l2ZFgyeWRrR2JDUTdwemZwa3BubzRVKzFZWkVxbzlETitHOFBKODdydDI1TVVLdkRpTmQ5S2R2dlY1MmUwMk9JQ0NrWExna2Q1dnFuUXN5MGYzMnYzenJyNVEzazE1eDV6Ym12WWxabXpMRmhvNDdKdzAxUTd4VjJTbFdPdGJxdTBtUjd5L1ZVZ0tWR2xqZlVMandZTzNJenpZNnBobm53K3BEU2RuOWFJclRFd3BWOU90b0NPcHh1dWtwbjRROUNKbW9rRlFCYVo0MURWamphK2V2VCtpU1FoWWprUjNDSlhUUGt5Ni92ZXYyKzVqMHhGSjlkUGFDcVhPRWNBZGlYaVBhdmN1OGlZVy9YbnIxZ2pLUzk1VWRHSWw1dWtHS1c1MEV4cmFTUWFxaTZlODZlSmFEWEZtelB6Vm0rZlBNMzlySjFnSy9sRUt1S1dxZXRDbjFEY0ViQ3J1bEE1WTlsVE43WHRNVUZ5eW1CTFJ0bnhvNlBENUxHellJVGJ1VzlFNVVDVjJZUHpzeFdBMHpmV0ozTXRMQWVKSTlUS0NhRG9CVitVc3kxK0x1WWpvT3o0bFo0WW51QVhPdTVqTW5UdDJLaTlFbGU1MmNrME05bEQ4aVF3VU02VExzRkExK2NEbkJzUGw3ZEJXTCs5cmNPZXNMTFJzNG9pVnd0MmliUHpnSE55MDVjNE5zNHF5aWsrTk9KNElEcGhLQWRRL3VXdW9JSGJaaWFOWm5jSEMzS3pOVUJvTWFZVlFrZ1JaSEt0YVh3VVRtdHV2MHFIRGE3V3J2TGJ6aUd2UHMzUEFLV2FkbWtyWTlsQUM3NzRkYkhFdmNuM1pKay9wYjQvMWF3TER2aEh2NkR3SWhGV3pMenlQWk5MZnNjdERXMWNsYWJZRVN5QTIzMyt6aUxlclNGa25tTGxWVWpqOWhKVERFQ0QvdzE1TTBWNGVBc3U5cERkTmlTK1NjUHFnK0c3d3hEdjlWdkFIQTcyaUNqN2FvcWdpeFpHZVFaTFBvOTNGcCt4SUZIQ2RRd0FTN0l2cjRZOTc3NlFZTTVXaXVacUZ6eCsxa1d5Rk9KREFCczkwQXhoamFoZ3h2QVBTSDgrRFZpTEs4a3RnRXhGZ0VSekJVNmR1YUx2cGJDYURGLzJ4eGlmbGtWcjFUdGRvMWplWTZYMzJacE9jSXRCU2o1ajNNZTNNNHJyL1lUN0t1c212R3czOExkOWFReEkzbFdpOVJrS0RCaHNrbnREVVZ1UUc1ZXF0Qzk2UjArTkxnemVFazVEcTd4UGs2VXVHNXgxVmxET2c1cGl3V0RyR3dtWUJsOUFDb2xZQjNxVUlQNDA4bjlGRFlWSEVCN2Vla2tyNU5ROWFOVEVMVWFpNUpQYVdJQndsRE5SZUZZS3hrdW14aDR1SzNuSUU3aUNQOVZ4b3hBQzlQUWdBVGVreVBSeklJMjd5Nm9xTXF6VmFsNlJSb0xhT1E1TzMzTjZZVHpjTS9BSzQ3VUFIWEp2QWV5N1NDcjk1R1loTmp3Z2pwdld0M3o2bEVIQkRvSGtWRFh1Y25TaXQ4Q0tYVlB1VUp6M09ZMm0rWUYrbkliVDJ6RGF3b0VLVlZLTHNJaTN5N1ZYOC92dkRPSW9CZVZOMmY5M2hxYW1JNjFSS28rM0diR092Mk4xSTJUd0hBY3dyQlpZK2MxOS90dm81KytMWDRXVWZOU2cwWGhzMTZsc2xUNDJRN21vSXI0aC9tUUJPOWdwZjFTNXFYNUVMT25tNGZwN2MxTmZVTGlMRjdZTGdCZm1uY3lIdllvZ3dDWU00aHZkdk9Vb1JQTVNPMnpLRkJXaGtubEVxQXBwWjJ2MlZndU1DK01ydXhyc1lPc3hmMlhWQTUvUlg0OTg0REtIOXVQMGlWTEt2WFBldzkzWmhsTXBTZ1puak40b0hBSWRNRER0VWo4a1poTzBObHhvajZJdmIvbkRCdDFqcU5ycWFpVVVpRTJ5UkcxakNzWHVQM2JUSGc5eWwyY09PV2NLb1hNVVBvOGRnaElBS1lZL0YvZHFYbEtISk52TE5wazhocndNVHl5U1JwUDlqRi9FdUJScFhFbU0xbVJtZ2pISkFaYnF0MHNoVno0bG5ISmJYMEdnS2haMTVLa1luakxRRGlFRjRMS2U1UmZhbmNTa1ZlZ1M4WWZhcHpjYmlKSFVXL1o1eXQ4NEhFQXhlckdYQ1E0dEVsQkR0SThTbnhjdkJUeTBZbmNVV2Q3cFRsa2w3cFlTczBSWUVXZDVrdTFNY3NzSTBYaFFqT2wvNk5vc29MWEVtVUJLdk1ZMHVCa0NZMGtjWjlzWlhIU1FiTVdUWTlxNjVEQ09EMjRIL2sxeVZSdVM1Q1owQnJKV2V5cVRVWnI4aTF3VDZGdVlvSG9HM2RXdFNkZkN0bzBaczFXTUZYT3hzY0ZuemhYR1RvVzVnVHlEMTVWTjZ2aHVJMSs4ZXczb2t6MGhKaFhmUlVnbzBFb3gwV2gzSFVTbEMvekdTbGFhTTc1OXhHemUrMEFSc3RxSGJlNzd3WUF3OXhtR1B4Qlp1TFBxQ3NsSm56Sys4NWJFeUNUVVk4eTV2YjhiczM1QzhEMWNteDRBOVErYnU3ZW1WdmNQZXNBNnE5UTVSWXM0TG9TbW1zTGNDWGVESklTL3pvU0UyRjVKMGxDQlRKRkorUWlRd05CMTUzcTU0NWhNLzVtdEtTQloxNUltRFdPVHRKVlBKam01QnBGNjFuUUNSS1F0RnNxTnNwNFZtdWhDbW1MS1VUNmJLTitpT2x5dThwVkJJa0pxZ2kwNW83UG02UUFxanp6MnNzLzQ4aytQdmEwcnZBYXZaMCtQazZhRFMzVXd1R1J1dmpQUFpQUkFSa1dzV0xOUkh4U1V5b0hiWWhYM0N5R0xUTzNDNnNCc0NraFdzbDdqdEdPSTAwUGZUN1lDeUZ6aTNBMGY1U2pNSTNEOVM4b2IvQ1ZXM2tiTXpsdEVSVWZCblg4YjBmbWZld1p4c3ZIbFNuT0lsK2p1QXJ5VzVOMy9JSnplU3cya2diZWhSTDRQejhHQ0hXZFJGWjhLWFBiTkhNbndNcHpPYmc0MzVWczU3V3F0ZHYyOHFtZzJxQWZRdmJVQStldjZXYW44bHF6WEswU0lvdU9CZU9pdU5qR0prNjZicDRPdjFaekgvOGdOZlFUdDFuYklNYS81ckE4am8rZkFIWmxmTHEweUhyOUhKOGtVdzhkTHNzL3phbjIxdmhWQ3FKTVJ5S0FVT1RYSit5cmw3eVFIZjRxanplWlhkanAzYXRjSlVYWTlheFhCZzM2VEZZekZmWUpycmNTN21ncTBDSFVkNDVaalJRTzkyR0dhSy96ckVKZWU3SkZFRXhPOXdnc3c5RTFTMk8wSlBxVzc0VjdyRk1LUXlXZUdDNG5QUkovWmdPSDg3T0djZ1EvQ3d6SG1oZC9IV2czNEFtOE9iRStNeWlmVTNiVGhhVjZPRXNpenNlQUFYekROZ0lGNHlkWkQ1NSttQThRbU1nQ0dVVnlqOHRpVTFOODZZV2M3dWNjbHpBeERCSkRZd0F0VnRyblQrU2p3L3pGQnNPeHdGektXQmhQRW13ZXNBZVhXMW1pMmtPWTlNSHJCZmU3QWZEN0ZKUDdhMEk2NVY5K25rTzVuODlwMW5rN2ZKUVQwVUpXUmY2VTM2bXlsRUpjSllFVDByRVNXUHJvWis0akpuTmdzV1BjeS81eEVlWDNJNUdlOHBrSUJVWUpxYVdTSEk4V3F5Y2YwMmZraWQ0aCt1WVpJNkFFUmZ3ZDFWR0VRM0IrL09yNW1vQWRLNnc4Y3N0WmhEU01KeEFmVlE4MWVBMi8yOUc4aHZRYXlvcGFqaFhzYVcwcURKSVoydmF2WFNWT001TWJ3czhXY1IyVmNqWXpTelVtbDdPUkJUTnNKTUpFQitnbDR5NW1ibnBlNGQxeWtZcmZmaDFRNHZ6VUxCcjVtNGo5UnNrRXFkS2lDSFBjSWFSL0xoWnl5V0h5MGxaUVVTV0lLbGRrSmpEWXBKNFVkSTQ3My96b3VaTGF5dW5zbjQ4WWlCb1VlVFFXWDJSenk4dnUvZkRNUXYyKzdpUnJTdTZJUVdZaTFFWXVEVFB5THlwSjZYTTc2ZEdlRUhLYXpsWUtVU2p5azFrVmIxbE9ZeTcrVzVJdWZ6WVEwcm5pVzdvNUkzdkZGYnFzcmRWVk5IeFVNV0g5Mk85ejdnV3BjOC9WUm0xKy9YemYwL05DMy9UbWZ0Y0x2ZVlpRkgvZDlOaWlLNERtL09KZXZwdkdsUytJZkVyM1VQWlp6Uk9yUFk4c0Yxakx2V1h0aGgyakZ6SzI2dWpDeDM3TTFmbzNWYTAxYlhwYVJkdlUrcWk1a2J5KzV5VUNqSlpsS1lJR0VhTUI3WkVkQ2kxU29Gay9xMHZ4NzNWUDdEenlManEyQ0hZakhDVElEYjlLY0Z2K0VTZDJkQWFlZm1jNWtZcFhhY3p1QytEdEJBMGxYQjVyNWJnYnJkaHQrT0o2TDJIY1VpYitIYitqUjVsUjhVR29pVm9rS2pNOVdvZkhta2g4R2ttaHVZc1BMSjArSmtNZzdLWDI5VUtkWmFoS2Z5UGJSVFF5Y3YrVnljRmpSNVRSMFAzZU8vT2F4anVIdWpZb2NVRUdyTVJLS1BlRzBCeGNKTHhESzBobm1zbGhRbWVKZ3BMNHlHR3cxVFJnV1JCemlHdStNQ3VjVlNYb0Rhd2NQRlAzL3FmeDM3bUMwbGRXVDBIK0s2TlpJTURhRFZYR09Xc2w4SnZOUy9KanZuTUZlWnREZVJtVllDVGZsNUdsM1kwV0h5blRpaVBzNWZDeTBRQ2F1M3BiTFJ3YndjaFJUVUtyZDhPZXIxWmZNWlJzcWp4ZlhaUlRnNkJBUWNOY0VKdGZDa05uMzFPejdJYnNLU1hUSmwwWmVtR2Q1TVRZOEhlSnRUekg1Q2NUY3VPVW9uYkpJNWF2Q2w3ODlTdFpTRWhwd3BJNm84dnBwVDBMc1U0eGdleHNLcHY3Z1E2bzRmRlQvTnJJUlJyZ0VmaHZlRlhsVzhqbkdOUGRkdy9jME1HbjJyaTltS3hRZ1poNWhXZE5ON0ZJY0NLK0JJOWdIZzNBM3pvczNUUVR1b2Z4bXMyV25Wa1k3TlRhMldtZW0wdnpIU2M3UGJza2V6eGozNkROYnhiWTYvN0pyNTZMMTJ0U2lFRjU5aHFrZ0ZMeE9ISy9weVJEVW5DYWhWQVFISTZja2ZtUXJRMWdITlgwMUhOdDhKNGprc0RiRC9sYXg0U0h2S0pDWWN3U1UwSUpJdGZFMVZrbkhPY2pFR2c5S2lnRU9Xc2J2NDFBZDZGSjBleEpRakhBZ05aQnUzYVZOT2VTdkoyVUVDdnhYYmw0eXFSaEdSaENHZHZzR2MydHVRU2pNaklmSitLeU5ZaEpmaEtYM2ZEbGh3aUxtY1ljdWxxQUZNLzExRjYrR04raThHc0xYckxyRWtDNC9DakhIWGxnWnE4TTBnQ0s0VzBMYTFGWVFMeG1IVXhmNFpPMXBWeWdpa3FkNHpIMnU3UTdJN3pZVTAwd2o2VkxhZk80ZS9ON1BULzhyV2NTanVOaGJIUmRubi8wQWZydnh1Y2phMSt1enJkZ1NUN1hZMjBKSjkraUtRRU45WmJ2bGwwMkYvdzMwRjVybVdmODVnK2UvaXNseXZPb2hCdFdHZWljS1NnaFh1dGdNN1p0ekFnSFJRL1JnY0FCNjVGUDRkaDQ0MEFvSVptSE1xZjZaTVlFY1FNQVNSM2RxUitJbXRjaGRMM3RxSkFRUVBkYWZSSW1wSGlJS1FiaVcrdDFTYmJoNDYrK0VNUkQ4UGQzM2F1K1k2KzJBMlZ1Q0lsWjAvdVJ2UytsUCtHOFY1UkU0dGNmb3BZMlJKQnR0WFRtd2FYREd4SGRGMHJTR3ZuWkNJbGNvOHdqelBsWlkxMGRQbjcxUktLeC9LeHRtRnZBdk9ZOGxOTkZSS2FFZEF0T01SdXJ2a0pidGZHVDd6a1l2dHRtU0lKYXF1dkpFck9JUytESXoxSlVqN0VpcXFlRGRWTHdmSXRUUFgwZkFWRWZ3cFR0OGEwM3UxV1dRUFFsRnBKaXc1RHlWNU4waVZLYXNWR2ZWSStzcVBHNWRTZ1JseXlOT2VXMkJiUklJR0hnTmFpa0hMSDROaUF5TzlQRUd6VUg4Tkp3YVFLc1htTXBCTG8rV1VZaW9tYVlkUUlmcWxnQWFtMEN4S2psYWlvT1hmL25VZkJLVmpsNFFqYnJGeFRmVWdQUTlKeTR3MXNrU3piZjgwRWxycGxIckRHcHlDVEp3a1E4bFNoREdLaE1GZS9qRDJKYUsxVFFTSEZjOWowTFdtVnB1UzZGVWc2Z1hJTFNYaVlQL3c2M2FqMmtsVFRTTGwvakwraGx5K0Zva3ozOEZYSlRSSzR6S01vWUtlaU93a0NRWVgwcGo4QUZjYUN1UmdrNlQ1VGQvS1VMYkYyR3lnQ3k1VkxJOXRIVmRMWHRRcEVxRGtwWHNKcWhxYmpOSmUyNW1icjR0QnRiUnM1bkU0Zy8rd1FSWHdwS3Bjd1dRY2NyN2xBdFNGZGFxQUFFcXQvRlRuNkdLZkhwVXg4aWhZakNiV1lDSEVlUy9VeTBhcHQwQ1Z1dlVwcWRYNy93RHRqLzBNQzc0ckZDVVlPVm0ySnl4bkJDU2J3OFl5RFJVekhZeHB3QkpEbnRaMGlmaU9DbHRQS0N3alN6YUpsd2RpVVN6bTd2RGVUaEI5d2dCM1l1bnN2bEIvYmNpOGpOd1M2NjJyaWp0a3h6YkRFdVB4V0pRWk9NNDVPZllMN0l0cGQzU2JOZFljZlhwK0dXNEdYZDZyUG5rdnhyVHJINXdqQ0MzWi9jOHE5N1poYVd1WmxVb2g2QTZZTEo4TnV0SEVmbXh4MXNJK0JTbDFSTERuaHpOOW82T1BpNTRZV0JnUUptbGx2dEI3QTZwZ0hYZkprVFBlNm1YakFSYVlDY1BnVThnMEltQUN6TjNacTZRWlV6TGJ6M3cxaGVmUkQweUQ3d1NxSU5tdmcrRVhEL0dnY0FiL3BsdzRyby9wTTlpT2VzUGtqSGlPdC80YkF1M3pXMGVqeVJVMzVDMWtNZnNYRlNrWWgxZGY5R3N1Y2NOQnN4bitNWmhxV1VINGFjNHg0ZUppWDJlMXlUYnkyNkNxQ1pPNGNvdjZyc3kzSVgvN05WYjlQd1Z4K29oSjc0MlN4Z1ovYXc1Y3VpQzBGaisyUkNadmFPa3hCb2lxb25VUXY1M0ZlYmlva2d2eFpvRFZTaTdPV2puSEVndkkwK09UWUptZzBNY1V1YlRRZjRXVHI1K0NRSUJUUWt3VHFJRnZITFVaSm5IaDFUdnBnU1FYRDBrdE5VaGhqcG1TL0tRVUN3aURzaDREV1R3SCtaOWowY0ZYRGVUaGtrM2JFQzNaNzFNTEdobGJsQXN1cDAwZzVZUDZSSHE0SHV4K2hoL05US3pUZ010ZFZQbnIvdlZjUFFKYUVNc0RvK2EwVXRUN0k4ajFwQlR5ZjRjcXdWUjBVdGQvT3FMK3J5dHUwZWJLN3lteFBacGVHMFB3OWxseTdVWWw1V05zZm9JUHNoN3pLYTBlTXNuMmcwUW9BNGRST1N0c1RkU05WTWtyYWVXY2dlZmdNV1JnUWJ5NTM4OU5lOUdmcjlxNXRqUDArWGVkMTB5YmVBWStSbGVtTUhYYkVraTVjcUhnVUxrWm81THBuSDZubVgvOUpmbHp0RjFGYVppWnl1Z2RIVkMxeHVwWWNPcVk5MS9iVmhoL0JOUVczMHAzNlVOZW8rSUxFSUFINld1dW9SOXhDSXlqWEJnYkJreE9QVStmRmdFaE04NlI1WWJDUjJPRDFrbGJzY1lBb2tFZlhDOFlEVWwxTFZRUFZ3RUtGU1pPMG9rM0w3WitnZ0krRHJrTG16dzNoRG45SCtpTkpIVmZFTnJEcytLa2ttU1ZRSGNDNnNGUEFTK1lSUHdMcUNVelBFWGJQWmtLTGliUUs4bTFBa21veVJUdUVGRFY3bVExc2FTUkRHd3c5SnR4MGlkTjV5dFpDZk5VZm5FdTZRMk55bXpoOElqeHRGK1J5QjAzWGlrWEo3QXVPY2kxUjhLVWs5eEhpN3ZMZU44eWpZay9SM1IzRVNCNEhzakxVK1pFRFVLMVlmMC8zV3ROZFF1VEhiZ1hSTVp6Q2dUcmszTU03NW9NTDd1UmhMNEo0SG8rTkEvTzAyRzQ1QU9Sc3haSkh3RnhHbytpd2I3NGJ5ejEyZFRYN3pCQVU1bCtlOW91U25FZ1AzN2pEbFRTRkd2MlNOOTRrQ0xheDNvSkhjNHo2Q2lsS1FnL0JmMkNsbjN0b3o3N0V0NXN0dlVCMTBkeSt6c2d5RHFlUDdPV2kwUjlnZjdGNk84WnZpd1o0N0RHeDh1T2QxbnVoYzFtWTByY2VvVVlOUnNiMGpnOGRXb3ZMRXZMSi9BdDFXbWdWb2RJeVJ3MjJobmNTMzBUUUlNek55bkVjTzFlek1vdWRQVXhzeGJVQVdMNFZmbVJuUXV0OXlody9oUThrdU5IczhMSFBzc04xZDdFeWhDQnBJOExnK2xQWXlUS2tzZk9VcHIwaXVxMGx0TEkxanpHS0JKdkZuZSsxUFk1ZUtSRG1NeEo1czhEM1Y3bzNMeHdRZk83UDBUeTlIbHk1U09mOFVFellNQnRXd1FvV0pjZGFhNXFiR24xVFk5TW56QTVNa3VTdldVRGo1aWt2OEwyNzlyQnMvcHluMXdyZnRCMndrUmN4NHNUVkVQMDJkUFpRSmdSbVpWSzArN3hoVnEzM1FQNUsrZjhYdGFKMExIWGI4VmRyeG5YVkxlbUF5ZzV6Rm1nb1Fjenc1SEQrZ3NOYUdFZDQ0Rnc2MVMyM3RsY3ZNT2hubFEvQmp6Q1pad3VwTEd1NkEydW9PbXJwTVZ2RjVDL2RlS0tNejJWV3VocDhjcmY4eTZBVWRrMlREemRvYkNzVVNJandXU0ljaDY3RkgraVRxUE55RUhKU1puckJiQWxTeHFzOFJFSmpwTDZxeUREVFNzazFSaTVZZE5BaXNHc3RRSlk4OUVIMWtCdkJkZk93WThGWUFJbks3S1YvRHV1TUVoRmtmd1BsbUdkRk5yNEtKd3BxS0NwUTFwUVZ3VzM5RmxXeVdaVW4remlzbTBOWEF5bTlCSFcrOEdBV2ROalBkTVc5VjJaTlI5dSswQ0VWcEVIa2o4TXFwUzhJMHovSmxtUXNwSjV1VHN2U0VIWm9udjdmaVlTQXFZQ24wQndsOGxCQXZHTGNtVkNlbE1CYmhxeEJSQ2d5cUM0QjA2NFdJcGJLR2U5b0NVTHpHUE1zdE4yZklPUkRzS2hDenRCeGR1ckNMcEt3bVJWOGN6MmhkQTM0MlJHTDdpbEJuN1FmaEFTY3A2dWlac3ExSTE4Y1pZMWpkSjZySHFzQ085ckxlM1h5NTNTL1FJbFlsbmhUNUpiQ2pFSE1JU2thRmJaQ3IzYytWeEVORHpPOFYvM1dWYjRDRTRCMUpYQzB1Kzgwak5KSmUzU1kxdnV5US9FeDkzSWJzaWE1VlhXVWl6Y05ZdXhQbGFucFVHUTNRa2pLU3NmaElQd1Irais3d2pxYjdxZC9VaVVQdVllQkJtSlNMK2hDTkV5eFFFVk1UYXUwS3BXbFJhS25GcGJKeVlJaGMzOXQrb2NNNVZoWXhrYmplQXJES2x6Z3BhMlNWb3gzTjIxaUpYbStKY0FjLzhiWXJ3ZFRRM2hWc0x3bm9sVTRSaHp3UVpiZ1AyQm5oZjdIc0xUeC9oMWJRU2k5Q2ttZDZVbUNXdFd4ZTUvRUlUekZ2aXEraVZta2JtRG9iRGZheDMxbTNqOFhPV2MzY1dENG5IczBpZDNDTDIxOU41UmYwNlVYS1JBWWhhZTdLaGQyMEl3MGlrVlNiOEN3SHVid1FFK3M4SlVyV0FJN0d6aFZzR3FIa0RBT2FEMWxHRXZvRjRRak1lWndQQVdGSDBPWlo1MU1VMlVTTGFqUnJjOENzSEw3UTJFblcweCtDMkQ3cVV0M2tPcmpSY2JaTEtSSzUzTy9wMmFRYWtLS1VNL1F5aC82UmFPS3huSU5LVlRjTWVnRCtydk5hTXJoSGxlazNiZEE3b0hRM0ZTZEVxMDRkb1d1N3BHZjhhb1hsb2VtMHR0dC93aExJRVQvZDVwUis1Q2c0djBQSExRV21XbDk3eU5DUzdvQWcyb2NtRGRjSEFKOC9RWlM2ZDlnOU9CdWxaMWdsbmthVWI5NzJGRnJLWlNBcGZ4aHNVOGw4aFM1bXkrN0dVYUl3UEliVzJ1VGwxdHdqYkVkMnhSZUZLZDdRNUJ0NUgraFNDSWVybXM2bzVkTlJzSFJQSHlxdTZFT1RFb1NWcGpEbk9pT3B4aGQyNlk4MDNMUkpienR0bmFBRGFBcGd1SDFqZ0VOa3M2ekVPYVdVVUFxaWszWFhzSEE5WUhPZEFYbXNqOEIyK1FtZGZ0T21NKzZRSXl6RDYxVnBaWUV4MUVaTkZZN2xiYU1GNmIvYlFXSzI1ekdTdmdudS9JcW5WUXVrOTJLWEZYNUxad1VVN1VteEZ2VzNBOU50NkZtRDdQRXZHc2dDMDNVUUUwU0wrMk1Nc0c2bkFrV2NDaXBCV0tQbHRwUTdXVHdwQmhyN3haNThjMStvVHVpYTFGdjNUWFVOVzdHSE1rUDJ3RUFiZjB1S0hYU3BWQnB0YWVuTXRtem1QdzN2Y2VKUWdGMkV1OUdPQzIrM2lTc0lsWjNPNUEzd0VKbVlEVmpVOWVqcVNtLzNZclVBaHFtc21jUXhGSzg1NlZIcUtlcy9Nak9qdWJuTGY5WkFlMU9PV3A3Qm8yYzFHTnRTcGp0dG1FL1NsSXJ1TW80UzNNZkxSUStqcUdTbmtoMi9MK0JWTUlnZE1XV1dhMmdmaDNsVUtkWk55QVNUZTN6V3hNSmhIamlHNXVhY2dMcnBDN2xKNUpDWk9qR09lc3BFR0dJN1NiQ3p4TlBUSnJQdUtRK0ppNy9VSERDdEplQitZT2F6eGdKUkQydkZJV3BaQjdoNkkxQk1oUmtaYlF2RkY4Tm5oakRjRFBNQVl0YzFNUzU1SDZoYkYwQzNrUUw1R3ZjSWQ1UHpLRDl1STR6K0lhYlAvVDFoTTBQRHI0WGtCcFQwVWlCU2JZREU5UkdhWFVkVUI0THlQNGczYkZLNHFCbVh0NlZQSmFBV1FMZkhBMGEycjFYd0FsRnY4ZndEWVgyNU9RR2NneEhuVGdZcmFpZzFNWXI1WUVaMm84NGhzKzkrak5lck1PYklBOU5XdytYam5yUjIydVROUEMwaFk1MXJZNW1Oc3U1L1BLRFpxbm1lK3VXQVNQT2pmdUNBcFpmN2pMQzZ5WDFJSXNvcUJPQ3VGWUxYa2V4VUFMK09oVW0rR05ZRWlRTEIvZXNYUjNKT0lEYU8rTkVnZmNBd2RkVERmQ25tSHBTMWVOVWJrTnZPU0doZ3lHVjNBa1FlYXZRdEs2RHFCVE9ZRWRUMU9BM1l2T203WlpOaTJvNlVxcjkvTXI3bCsycHM1Z1RBSGUwNWVJNVBQRGdRTnAxaTFsZVZDeGt3dCtkdHZQdmI0ZW5udXhwdlU5S084UFZoamRSb3NVbUYwRWluU2ZFNnBVbVpOSjd0L2lnLzRpeWVPOTFMM0ExTGVyZ0RnZ042K091VEVQVE5NQTlkQzdreUdhakZ4UzU5eXJGV09GQ1JpQTR2dmVLZlFZR1BjSVVBRmc3cEJaOVRJL3ZyRjNMQlNSL3krc2dXOXNvbGZwcFRPQlNwMGRBaVpMcGcveG4vZEd4TlZUVUY3SjkrQnV4MVdaL1J1Um1la2IyRDhQZnQ2U1NjOU5GQjB3R3NWK1lWWHRWdHpWWjBNQzV6VWVsVzVjVTBDY0FZRVhSWHJ6WklDZFd2c2J1Q1MrblRzYWJUR1VuODFrbFVVblZVakkyMGRsK3hJZTRHaVJxN0czNFJaejQrMEFSa1IvTXRHd0JVVGFJS1JFWmZUbVdFWGYyRUhoVHJiYUpjN1FiMlQzVlp5SkF4QWdsS1dPVFZVWVowY1pKRk5vMjQxMktuTlVYSmpGZzhDVk0rTlRnWjlHbE0xaEs0T0ZibXhrcFFUckNnZkt3NzQxNCtEcnd5dVpuT2JLMVdBWnM3VzFxaTU3V1dVVFcxcmVIN0FZcnlWc3ZCQ1lBN1owcURzQ0JWbXBSMy9OR3FoM3lqTm13QWRzejI1VWhnbmJDekFTUkR1eE5JZkhHZTcybnJsOGcvQ0dEaWVWamRTS0I3Q2p1UXhGalh0UjNSN0U1VHNFVnlpSCtlRCtWeW5xZUR2RWxLSFJmWGV0UmxtUS81R25BTHlRTkUrUEpONmlBcG5PbFhHK05KVVllQnFlaTVEWkRTaHUwK1lhMVMySWdDeWprM1RRNHVmQk95dG04L2RyQWIrOVR0TmtDNDhmWnl2TDBiWTRjVENldTlWR3VlL1NMWGlTcnA0MmZtZXNQdnpmSG1Dd1NTSURyS0hjOXJPaGtROUo3Y1ZBeEVVZy91MUw1aCswY3pQN3lUQTVpUnBGWFFCd3NBYTg3SEN3QzMwUWFWTXFOSHVRRlh2aEJsckFxMjJWOURZb2dMVnkxV0loSDU3a3V5Ri9VbWllbDVnNGRwbUVZLzdoMHJRZGpjQ1NQbG0xV1k0RmpKQzV4VjRwaXNEMGRNKzFWVFRYcFNoYXlqSnptWm1CekZ4Y3p0RllwelNVUFliOE9hL3RqdS9adkpSUU5aUUliQXhOWEpDMXcrSVZlTTVFaVYxbDZROVVqRDdrNENrbDlMM2J1M05kQjBzK2ViZVBzQzc3NTFIbDZQeDIvazZWdmkrVnZqOVhXSjkyMGs5dCtNdlB6dkw1TVk0eitKMnlqNkpvSXZFSG9Ed20rZXlCc1NmV055M2h6NUJDbVByNW16THpqbWRERWx5QWZGRFFJamN5bmhtVUIwbFlpYVplWnNlb2Ewa3lLM2hCMTNLVy83WTZJVzcwT1lSTnArZ0k2OXBGZWRmeGZLQmtGMTZWWk1lVHZIT3NlMG1Ld0ZTTkRnai81Z0FrMFV6MVp4ZzViTUw5R2VFT21GaW9LV0gzWG8vUUxLOVFKRSs3UU5uaEJUMFhVQkdUTS8yYktWQTJwNzdkM0lOZXo3dUQwOVVueU8xU3hUK0hEcGk1K3dlWFJkaXpkZFlwZU41Tkk1MmdGd0pUUXZBWWxHVGhkV1RGc3JEbGg2ZWlwMzM3K0FjM2Y4aTkydDFNaFk3dnloMlFBa0I5ZkVZSENqOW8rM0lXMEh2bmRqbm90SHptTjN3RHFqbksyRVNVRnNPeUduWUFqd2t2TUQxNWxVd2UyVWgwdG9OTFFZZzJEK0pIOUF0RElhTUgxanREWWF5S2E3ME9rMis3V2xpRkxFeHZIWUlNREtFdDBZQ0hMeDB5ZGpwMkVwaityb1U4dTMwaU9LT1k5N0FUQUJ0SCt4WC9NWXpXVXg5NEwycFZxNExWaDBZeStWdjBDdElXZEFWRU91QjBzNXUvNjlxVW5WaWNWT0ZQUnJZOW1zVDNqbDViNFJ3TDVPQXVNR2p3MS9MS2RoWjBnZFUyWGNmc04zOWw5TkdhVHRlYW1iUDJocVM5M3k1RDRKajdicmh2dE1lR2w1QlZtOWlvQUovZFlQVFZ4aEx2aXRSdzFkOGQ5UmkrYURTSWE5UEFtdlE1WVY2KzlVaEFPMmJ0bjZ1Nmt5ajBJTTBZd1dvdXBqdVYzbW1SRCs1SHV6SkZ6bkYydjlubzh5NFFDd2s3VWJLM0h1ZkdGRWgxTzFleWJzV2pKd1lNSjhoYWY3aGdUcG9PUGxPV2tYWTloQVFxeERYTmJpOFVYdlRua3ZpUlRjU3VHdVJUM0x1K0F4UzE5cWU1RjYxRjkxdzhYYjRvYmdISWxwNnNpbk1vSml5ZU9RRHdSQm5Dek40bE8yeHh5L1hTcXBHSmkrR24yRG56TDNBdWFtT0ptdWoxdEw2Z0M2TTZYK05zMFlvOUFmaDBMNGtnVWVFdEFxdlVicmt3MmdPaGVKSjVndWFwd2VRSzRMcGFlaWVUd0N1Nk83SFFBUEJrZ3B0Q2NNN2hxUkJLeUhvcDBkK0hhc3BLNWdBZ0xtYktsZGVyc1VDVEZ2MThxWDNsLzBYVnhLUGJZRU5EZ3BWb1BzbDlIdVRneGh3c3ZKc29BZEZrbmpJU2trbmdxQXIzS3F6bzIxQWRnKzVaZTlYQmY5bXNoMk0rOWRjQVNwbTN5MUFUaTgwNktnYXZlek9mTm9LczUrRWFYUExNRWRGbGpqUU9IWStBSWJFc0NRVTlDQ2MxbDhGV1cwZm8xTFAzdjRGL05zMVdYK0VuSmtnUHZiWER3aDhnK0FRN2FpRTBlQ1VtM1pSVEJPREFkbGpib0Iycm14R3VYTHBmcFZPNVFNYVVTRmU1ZDk2aUdBVjh3b0Nvb2dzTGFjVFJIT3FFVVlPRXc3bE90akVCVnhhUUJVdS9RdzFVUVhsTE5XM3dCY3RIMUo4Z25ZRlJVNDF3eXdwWHNFVmhlK2VkRUI2MmJKaGRwdHZwa0FlSEMyR0M2U0hzbUFnMjFYbUUwZGl5OHd2Z0E0NTlzWmdBdmh3bG9pUTJQVmxUNDhqTzYybTlJSGdRNk56SVhYSTRPUXk4NXljdm94d0FLa1NWZHhMYkRsYkVyUm83ci9JNVN6N2M4STFvVlZvcjdxbFRDYjNodmtXL3BFLzk2YWRablJlWjFFMkUyeFFoT2lZN0dPME5DMThaclFtNmhYaXVXb2FMMXBoOUpYMmtyNkFpNThsb0RvMDZIMjRydGptbjBBZzdLWktteG5MWUtDZE1rWEFjRmRXeHZLUzdHM1VtbXl3d1h4MVpnMzF5SldueEs3K0tpQk1ZQktqc3gzS2kyODRtL3JVdnN3TE1GOVhQNnl5QWQ2eDBxMnBNRERNTldTTUpTbXdLcm9CUXRSSHU3RW10WTZaOXMxT3o4MzM2TEpRYUJQaXNrdXlETkVaZnU5OUI2ekMrODArWE1VMUhKemtVVlVNbUI2L2t4Snp0M3dFWDBMREh5QW9UeDhtZ2hXdDF5OWJQRW9sSUJQVFFiK3EwcURrNmF6SndZNC9iMGdIUDYvKzE2aU9uaVMya1RLMmljSjZBTTk5WXJRZXh1Y3ovOVo5REFQWXFKVUFhV0l0bzlnaTlqZXhmSG4zZ3NOUzZjbC9zVHAvcTd3WS9OVU1wQytadUJRTTA4OVIwWFJVaFBiRzVKaVcrR2NFTDJIbUo5dlByYWt5MFhHYUdiWnlndXJJcWNiZEpvbVpXSmEzTFlvbk15dzFnMGdrZ2tMdnppeTVkNHk0RkNjb0dLVEExUHdta0lMZXkwaWxiNnhxSGp3dVNKYXVQUGlTcUZzMlFLMlJVZjhuNmFkNzVCMmk3c1pTR21haFJrWjJLVzMrUkpCU29ncC9QdjhvbnFCZkpSTjZ0YzZtZVNXUlRteHFLWHF0eVV3TEN1cEFEL0xhUzY1blZUYzNwd295L3lCVDAvYk1DcFBMc3ZTdXpSTnlQRTI3aFBwTm5rNEtueStsRTQ2SVRyZlJDSm9YYUV4c2RnUU9NSnNUckwwTThzc0lFYWwwenNrZnIvZy9LV1JlcktQbnM5WktHWmJ5TkFwaTZuS01PQlZSZ3IxaUhqaXptZjcwUVpLVUQvMnVkbzBaZ3lGbnBVenhqb05XbGhaSE9JVXBkWFVWOU5jMmlzM2daM0hxdWJsN2RMbmNsS3puUXl4SGtYSVNIcmVpd2tOQ3Mwemk1bWloclRLc29mQTRDcVBWdjhJZWF6Vytnblo4N25QaTQ4cVBjR0hHRUI3ODVWaTNwK3lVVURhWHlUNURiWXdzaUtCVUZhTXdWZWlJRWZ5dGpSM0NmUVJvNXdiUzJiSk5sZGo1Q2lpZ2xjS3V1WlRMVkxYbUNoeHZhQTBQZkYvZHpVODVDeENKeG1scGRiTjV1WlNjaGJLRnZuMWtQdlhBbjBydDJBU2FGbkZ1ZFh4aUlCbUtBenE5bFlBZUU0ZE9SRktaU0RzVFRlVnJYeWF2cW9FVzh6ckp3M0NBN0s5SWh2RnNpU2VvR1hyNU1BdkJFenZOUzZKSnlGOGpEUmZNR0d1cERkdWl3aWNSMFBDem9RZkpOM3BVaDlOSXRkRXpFbnJaN3FsQWJrd1ZqYmFsU29IeHl5MFVEbHRTV05PSm5ORXQ0K2xOcUF6Qjg1by9odVUxNVY2anhVSmV4bzdqdm14MWlJRnQzWm1PYy8ySkhORkdTeFhuNlhBVEowV3hXR1o4ODJ2SlRmcnBYNWo2WTZBVVA2Tlh0MDdwaDVxb1gxTmhuOGZWUEY4MWtMZURpQUl3a3l1ZUpKUndFWWxMZlRrTWlxZGtqeERLN25wYitLRGQ0VUpNVWZIbE1kTVZCS2hZdm1tTUZpMjJabGY1SjJHVXV6SzFFRDh3cUZnSS9qSm5HK1ArVWtVNEFiMkQrWmRxTjVtd2o2VWpOZ0RZaEpWb3lTWUp4UCtYSjVZMGowMlZqeE1nUmN6aTlRdFlmSFZrUE14RkcxRVRudU5IMkhjbHRPMlo3NXhXWklrcVFFb3lSOUFmcWQ5dlBQMTB0L0pIWE9WOXNoSWZ4RWQyZHNPVStrU0tzdktRelJQbjdpbGNIekVETjNmejJIQjRxRndTTllrNU5WYmlwb2kyVHA3WDRuSFpLajBxbk9LalIwdzFGTVBXZTVrS1V1Vm9paFhkbVZJZmJzSnlyU2IxRll0ZE02U1NBS0M4RzA0a2RseE1PWkx5WHA4TklWU2pBTHAySFlKdzdRMDZzM3B3OEM3bVVYVnNaZVhqY3MyZmVtY0ZFNXpyRHFyMXZmemV6aVExOGtBQURpcHRxN1V1Z0hEVkVoTjVUNmlZeUVxODF1aGEzNUtvT0t3ZEJud3FmZDV2eXRFclppdTBzV2F4NFFDT3g5eHJudXd3bUFsYy90VFprNEs3YU5nN3VHZUx3SmdxeTd2MnNZL3N2bk00eURQUXhXY0ExczhzdjEzNXZubTdzS0p4THRXWm94bDBOaFduS3ZhM1BZbklNbWxCNDBXMnhFTis1cUgybGkzeDQwOVNPTlNnam5ycUIwYVNWSG9CbHlJSGlTSCsyaDEvVnBCRkZDWVM4amYzbmgyVUhxRkI2aGxnclVlemVEaStEVEl3b0xhSm8ySE5NUTc2RlE0Sk54bFR2TkRQZHVycTc2Ukw2WExQU0dOaUZVV3ZZaUI0RGVNbEJLWGZvdThqNURFbVp3L0NIdkFUTG1McHA4WjA5cHRuNkg3cDVUSDhlYThmTUdyZ2EwcFoyT1VMNnBCM3Z1dDhqWUFoREhsK3JRRXFFNXIwTTdIZDUrRjFRTlRPSG9mZUN6VVNQRzNuOFloeEd3c3hMNjg2N0lJWFNkWnFoQTFKUGRTYXhybFV1bllMbko4YzUzNkxyZVQ4N2szWWN6RnhwRlNBZjJzN0NOTFEvMFpEUkpLeTZpT0l6Y1lpNm5rWEVRR3hGMjlVcmFCcGN2b1IwTXhhYVpSNVQxSE9NQUMyMzdxWEF4Y292V2o4a1ZTT2lUZE43bFpzSWxGNjl5a2VIbk1iM0tVcnNxTm1IeFNkbWM3UzZWU01uQlRHL25UdVBuRnB0RkJXZlJXYUZLWm1sa0JMYi9oUlNmVE9zckxKZDJWQ0tTVzZCMjFMM2FRWDkwVEo0U25ZK004Mlg1V3RGazJGU2Q2RDF1YS9Mb1doZWR5ZnpubU1kb0VoN1pBZy9YalV0enFsNjZhLytwVmdwUVpVNm5KdkNmdW5DdHJ4Zmk5NVNuNFpVZWxaeGh2bDFXYlpKQlVpMDFqaTd6UFpwRm04a0gvakJmcm4vNVdQSXRHdzMvOVpONVAxU2o0akpPWHo2bklUZHJtcDRvVkU3ZjFtZTd4VkUzZXdzVEwyNkxoNm12Y3p2M1ZRWGs4L2t6VWdEd05pUlpQN1hTdC96eFZhRnUyeTU3SnNKNHJUdnViZk8rajVmcCsxYXJ0VUU3UWljRy9qRmltOURYbWp1V2QzZHlNdEs2WUpZQXkrVldCN0ZVdEppUHpYeXdBTGt0QzZWTTB2V0JtTlVWaDhKd05UN3ZKZU5NMjVVVlFLVVV1YzM5TUNCblM4WW1Mc25GSitMcWQ4STFEdjE2WXZLam41Ukh1VkJqNkdLWEN4TWN0RTVPV2dzcDBxSzRuQWYyMmpnSm9RNjc2WkRqVkRUV1VNbXJ6N00vZi8vajlSY1hEcnN5dUJUbHhMcUNkZkVVazlzUW9VVjRCY0dwU2lDYUZ1Wk1KZ1Y1ZlJLMXZLV05uWXNkRGhJNDBmTXhscmk5d1RWSm1CZE41OVFUSmF4RkcrWXZtMHUwV2pjeFprV3IrdzBydU81V0FDS2xndnFMK3lVdWtDN1Q4UUZIMmIyTEpnMXRoQkN2aEFFaytQc2tRbTJjV2x6NUhBY2dDUEdRaFFFcDhYQU1rZUhKWERjV2NlM09PV0M2K3VUQ2xaZnpWVUxRZUhRQ0Y0azFEb3pMWFcwSy9hVnZkZkdxNmRzRXhnOHpycWRZdG5hTCt1eHJZbE1pMHZiUitKZXpMQ0N2MXFKUmpVRlJVMHZHSUlERzdiRGlqczhZMnBjZnZld0sydzhjUUFsK1A5T2JuYWIwKzgyaHAzWE1idUo1bEFjOEN1T2RFQTFFQ3ZoN0NZK1NJRHpKM1Q3NG9aNHhPcVNVelE4WWxnSzh4U2JzSjNpQWs1dUdVRDAvUnRCOUdzR3dyZmtPaitOcElTcmZCQXpGUURtL2tuQVpKZ2J4RTdwSVdtRjBlK3crenk3ZGdWNlRKNmFTSEVOaEpoakVrY3NuT2s3enZKQ2VFa2ppMGZDOFRMUUYwSXpFTHNIcHpUZ011VkJoUGxvc296RWI0VzFwYlhJeGV2Ri9aVWFKdVBKVWlYa2JMWWplK2lGVlBPRk9uWnd4aWJBbGVDUGNBK1o3K2NGZWVQTWZ1Vm5mQzVXY1lTemNBK0s1dUJKS1ErQU5qM2I2TStmSzU4WDlvS2I2Qm92RlA2S0JlKzk5OHNTYjBSang2TW5Ga1VseklGTHZseDAvNmU5TmFnUExtZk9wSzNiMURpREVreUxmeEhORDA4WiszK3FnMGVycUFvaFNJSjR4YlNXODlUUDdxclVFNzg2bHBQRUsrU1Vkb2xyeEpwUy9FZjZrUlllN2djaDJ2Ty95bldkU3hteTlSK21DOXlLSTJYQ0J0TGFqZHpSNkhKNFUwSlZoYzNYTEREbUlVSmFGSXYzS1RCMnpZeVhBa0t4VGJuNmo3N08rUW1uSTNueHZIUWc2RDRraTFFU0ZYamIvNWlzcjFNN2cyMmI2eVVuTHd6WGMxd1dOQSt6bk4wbUJKR3JJMWsyc0NVR2Y1emNjVkhGZmh3TFowLzdVMzN6cTBSU2wrdDl3TXJYZnc4ckR0cTJsVW5GWnJjbzBJUURSK1NUWEpVdStJa3pzVnVPNUZlREI3OTE3MWxEZ1c3ajlPWnR2ZHU2YVF5NER1S3ZuN2tDSjB3ZmZJMDI1ZmRVYnh3bmZHZlk5MHlERmFkekwybkptT3hKbjRVME5CZEVXVHRRV2QwTlg2bmxsK1RzRUw1ZHZFZkpWWVNVYkRzUkdmdS9abUJLWlB3SWZDUGU1QTlPUGRqNTJSMlIzay9Ybk9uZFQyQkdpbmxiMi9vckZWWGlMTEsrbmZjRWdHUkgxamlXeW8vMXpYc0J5Ym91WEFpT21WVmxWZy9uUGRoMm9iaWZKWC9aLzA3c1d2WG41S0pselJlVlhSN2x3Zk8vR0kxZVNBaGw2ZUZGUjdKbDdkM2p1dWRoMDZnRGM2YWQ3dzhSQVE4RzRwNk5iVnVGc2p1SHVIejIxM0FlNlpqN1JaKzc3M0ZodnRBckErM1RIU2lLcVo5S01NRDc2NTBieXpvNFZMcHp0MUNUQkxST2t0QWFvemZkZTNNNENxeThNYy92ZE52Q1BYdHFZSDVyblp0a3ZZQWFzVCtOenNoeHNjZjM5TWNqY0NVSzY2VTBNZ0x6S1AvTHh2YXV5MVFFQjBkZGlXY1ZXdkI5M29xNjZZc0d1VVFXdmtTZzJ3Mi9kV2U0UEo3bVVVOGcvZ3ZVQUxxZkI0RjNGZG56M2JQUVJjdzd5S1REL05Ndi8wRjVyM3lJUVpxS0RvUW5VbkNZU3BoTThYWnZ4WHJzR09veE11bkgxUUtRNGhzRDBYWXlmQVBkRGt6cUVVbDJvNjNXejNMUW52SWF0M2FIUU9TRE1SczBsVDA3a09jbDkwMjdTOUwwZUFkZHI1YVRMc0M0akxqcTJidnJpYmVhUzJkZnRuL3BiNUt0bElkcHNQSXpBM3VlRTVrZ1pGLzFQendESEZIdnlOdW1odVNyVzFpUnQ2Snp4MjhKNUxMTG1oSnFCUTJvRUdPdmx3RGVGcXFoS1ZqWThHOGhpa3Bhc1BaUldXYUFXaHZBNnkrd21vQlVOYkdSaWVyZXlvVCtYcXV4QzBvMzBwMktSVWxlRkRJblZlTjRpMUxQUEZDOGhLZCtiWGtna20yZnhaSVNkalNYT0ZhVWlhKzRPZk5udjNTdjRkdUdLbG5XYXIxelJNdTFPQlo5ZThuM21wR2plYmRaV2ZXclhkaDQzUUVjTjhYOGZSeXJkUWhjWWRkeTIzVFRQRElMOW9BOXlLQXo3TUtnVzBUMWEvZnpEK0VQc0NTV3RlWW1wQ0wvRlZYbGI0YzVQNDU0Y2lDY0RUMnBzSWsybjc5VUhOc1ZzQXlDUzRLMXVLYXdoR1pqMWROUVRZYUY0WVczQmZtbXlFNmEyRWhpb1p3bnVrS0NWNzVSajdqSm5xR01MazV2dFZJa3A0aytod011bWVmYWhKbmEyQlo4U0RabUdhbTNWMjRhb0tQcmpWYnBRdFMweWdUZnFFTU0xV3hvWjVScklWWlo1MWk0bGxDTVkzU1pXcjB2QW9yeVJRUTdFME90NGU2Q3l1ZTVnRXpjTzFJeER2ZVhrLzRHK2ROdzREZVRlUHVYdjdaUk5sMlAyUVNGNWx2Wi9QY1U4ZXFXTWo4aDNBRXROYlFHdU9neDZKbmVGT0wvZmRlL09Dc1VlWmVRTTMvM3FDSFZFVnJXQ1p0NTJyTTB6cHlMSi95M0c4NVRtNm5SVWIvdjdaYmVmSGZDdmU3SGZsRFVwN2g5KzM0TTJiOVFib09lbm9mUUJuaGhlOHpYYm1QdUIrM1diNEgvZDJNZjUvYjI4b1g2Z2xDcTJzbmlxZEU4L3U0NEphTnRMaDlGRjljZUs5SHJrSFlHc0dqdjlFdDNkb2FsN1Z3Y1k1Q0QrNzk5TlZUdEFINC9GN1loS2ZQS1RadHl3cWN5d2JkdVhkd1ZLbk0ya2FnWloxdkQ5L0Rrd3JCc2pzZ3BmLzFNUDluZ2ZjZGdwOTlyZnNnYWF4S3pYb3BXUUZqanF5RnZ1NnVRREh6ZXFSYmZUNnFyUkcvWnB0b0NKWmljYXVsVHlyYkpHQkRvcjAyQitpUzhIaXpoRUZsYk9nUkQ3RnJsam1saWkwR1dBN3lIY2F0SmM2ckJHd3F1SXM2QkZvaExmc2s1ZHdjMlhmaG50Sjhrc2V0UTRSZlArWXBmV1JRZWNIK0w2bnQyTEgyTDZmdmRjMXA2UVNjc0I2Ym9Ka2VvVWJvTlZOeVdFanNrZlJYS1U1TVBTSDJuN0pVL3J3dGJvLzlETnI1UWFnTHpqekNVOElzQTdGVUFKZXlIUEk2N0VhWTQ2R1p0ckk5UXEzR2pSdDdEK2tkaDl3QTdxekM1dWh2T3NoL2N2MkRDNEIyMXdCL2xZOWIrRXVxTlh0VlZOYndmeHNSOFI5VityMTg5VExlWFpmeXlKeWRNcjBoYU10aCtyODlIYXN5OVNidFdScUs1bm9DUUEreE8ydFdyclBhSDBYWHZCZGVPRy9RQy9hR2p2bVZ0SkZ3WFRRTHVXUjAxNjhsZDl1VWJFcTNSeUpkYlpIUTBzTFNiRmtDNWVMbjh6Y3BtQlFiWTR1TUp5eGdaYytTaW1SSWVManBHRitoTkM4MERrc2VyNGNuakRVYWJFa2QxbW5nQkNSaWprWERpSU8rTnRZdVJQK0J1Wjk2K2E5c1hrdm1QY3RtL2VHWmdBM0I3N1VnSEU5OEwzTjRmZkpqSmg0aWNxbXNMK1ZNMkhFOGxzeTAvRlh0RU5PQWdaVjNvU3ZhakpCQStEYzdaSG01ZE1OVzBLNmowK0x6Wk55c1pXYXBpZll6ODJ5ZGg2U0d1Y294bCt4RUY1UkZHKzhFVjFnOVpjM3EwckJ5RkhTeVZlWnBLbE5RbDArbDhaYmpQVGNDV1YvTmdOSDJSbEVNenFYZmdyM3lwMWVQaC8yYjJwYWtrejRwM2xiOVBteGg0VjJkcjc4ZThHSi9peWtpQ3RXbGdHQ09BYjUrREJJcHA3MFdBY3lYUzg1clpTbGkzTlZwcEx2QVZsK1ZaWkZwa1Uwc1V2cWdGQjlSSHdsRS9obkJzdDVrQ1RISC9sVWtJY1h6ZGt1M1k5Vk9JZkdaUGxDUFB4aDV2S1dEQjc5TUN4VkJ2eEtUQXdDZkJhNDBobDg5d2F3N3k3S1grZi9WZzI4TTY3eWh1RmJnZVU4TnUwNkN3MHZJL1kycnZBbEYxV0VTNHVCV1RORHZ4eFZyY3NFNXpWMXJ3MVBDeXRjWXZMeEoxN0FWTzNQTm1iL0hZcVdsYjhrTHBRN1Z0RHlzVkgyUjJqc2oyRHNqM3pzajh3U3VXU2hFQ0JMMjh1R2xvb2pFMHEvYmdSSks5VHJWeXkrcWZubzJtMU9NYmdFeGMwVGpENkt2dEtSQVpseTlpTWVXZ2E0a3dpUUk2cUdFL3lZWjJKZnNqbVY2bW1weEJFbmV4MzdKM3lzQlpya1NHUVJmVk44VlUrUnE4VytsbjNmZGQ2L3NhM3B3alc5OHFTYlRBS3o0bVRPVGdydWJ0NGVpbkhaUG1vYWMwZ2U5dGNLeXl4U0VTb1RLNGI3ZUQxL1p3RUFNVE4xZjNHdE9pVERVVzEyeUNOb0dZdDVMeXlUSmttek1uMlAvUVdUTDVpa094eGc2b2VjeGYrZWt2Tks5Mk1BR2ozYWQxOEc3NkRnMUlGNytMbWFQbk5ieEVmc3poNXRLY3kwSVdzSEdKL1daQUlKUlpFK3FLRHBsUEJVSVVCLzBSejhvbUM1OFNRY09ueFU5ci9zZitmRitsdU1UbHZ0NHdHUzQyUG0rTU54L0hOVmIxeklYdkx6KzFhVWR0Uk9xYkExRnpuS3BTMEExWHBnRXFPUGhZNjJuTW1yTm9mdGNSSThHQnRWblpZd2JLU202cG1Sa0FiZmUrQmlGMjMrS2MzRUtmcytJc01tbTJxQ1VWVE93dVgyM0tOTnVpM05GZHlLMlhMekVzL3NXM0M1UHdQZ0pSZ0FQcGROV3k3M1FtVXV5TmJUMG1TOGlKaUg2Q0E4dGd2QU9qbEtuTGRKRm9Za0xRR2lCNUtvRU1yYnNWQUluMkdya2hBS2dqMFhkcGU4L0dKamJyMGFIYm5uZlRZK1kwREtreTRkSE5hNG5kaEk0UmU4MUFZcFRRN3p5OXRqMmN3emF2NVYya3NBQmcxMXJxZ1lhdzJLL2dYNGREd1IyQkxzWXFOaHQyRHBnbEcxWEpNVGt4emRMYURqRSs3aG5rWE9HdzZKSVNsR0Y0czlBQnBIdzJaaW5VeUQ4NDA1ZXlQZGdUKy94dEg2Tk5LVU03Rm1YYi9JOGduT3E5dzZ2SGtaZ0tobllrbG1ocnBvdEdFcUNEY0FQbkdPaE5QZHBndkN6S0VtbzFPRnV3VFNjVGlWeHc4RVlndGVVK3JyK3BDVEdVRG4rQTVsTVlaaUhaTEt4Y1QwSzRDdnBnZjMwT05BejVwS1YrZmR1Nm90Q0c5T1k4N0pIbXNzOG9lM1R2aDZIcVBXTVVFTS9OSTcxR2VwcnRia2FQbUR6akRvcEcya0crWVo0WTJianNMdmVWRkJYMEt2UE1wdlYzRU5KcnJzSitUcHY3dWVqcVJ2V0VWVFVxd0NEZXlMSGRGdDZzRDEwcll5ZVk2LzdmNlRiWjRSLzJwaVBJMXhXaUY3M2JObTlobGJ1NjFVMDM2VmthZ0xmVFJkSms4bmJaTk5vTDYxUnk2cDMvL3ZWdjRYdUJEUG10YkZaRVFVdHFvdzREM3FrcVFwSStCR1RKcVFmU3daNHAyeGdtREdyU0tWbmxKSGUvWk5xMVlBQSs0TXgwNERUaEQ2d2xDeDVadlZOUDlmSldKTVE2VDROZlFHYmJnaWkvdTU1VEN0aVJFZTJHWThnSVRyWjFRTEkyVFJOM3IwUDJHVllxNUhhYmxMaGdRYlNFQzhVZ05GUHlZNnpLMk1tVENuWkxJRXptS0J6em5NMWx3VnhTdHBleEg0T25xUXI5VTVOUVE1N2xFMXlObXpCWDQ4YVROb1p3N2dndjdlV1NtbnRXSEZCdENISk9GbU9pQ1ppM1VFL2pyM0hvNmRwTmp0c1Nua0E0Q1hIR2RlMlNySDJ1WGJ0dUZYbGsveGV1Yk9iaGkvNGMzNzNadkJSK2FUYmV0ckRUYkEvbXBEUEpxWmVmbm1ibG95czRyWW0zM2ViUmNZVVNvZUY5ekJqb2taU2QwS3U2QUpkSmVoREdLNlBCajdXVGdBamdkWkxoYjc5OGQvci9jOTJqOERQS0doaWNTVWlIQWVKajBTaDNvUGJtMER5RFhnejk5YWpHM3FQSUFHbFBTR28vQ3dYRjJNdXFENHZ3VVUrR3NiSmdUL1NXYUZtZXk0dExhckFkMmozY2YrN3JmaVR2eVpGeVkzL3lLSDRZcjNkKy9BNzhaQndFMWJLZGI0dnhHOE5nUjlTSTFoajhUSGJlKzM1amh2M1hHL28rTVI0MkM1emxIQ2wwQ25WK3F3SzNaQ2pFdVV0MXZOcm1zU05HWDQ5N2Z1OURwT1gzQVMzbzkvNEE2THcwYzhzdWZiWmhiNFczYm5mOGRkL3hDSEp5eFFUdGpZQUtyT2N0R1NpM055RktLbHByTHdObnhVZnB4VDhFMkM0Tkx6TlB5U3MwSDh5anRodkp3WGY4SHBXM2JTOFU0R1ZwU1dIV1FJNVRPRGRjejhUNHJ3azd4Rm5JdVVUclVZK1lnQkF0Mzh5U3FSQzhSdGZxckJtam1INVdjTzRPbUIyZGIxSHhWT0MzK0dBdGwrNUpHTSthWDBHcDl3Y3VCbUJZZm82bGQ5bzdBS0c5akxQVXpZcHFic0VKdW9YRlJyR0I3UzFpWmI5eURVU2kxUnFvb1AxS3RtQ0oyMUIrZE9VaGpHSHlVdFpSaGY2S1ZWQ1VHODBEVXJLZUZlcVBiVXowUkZMaVB0LzQreVQzWThGRlA2dVBZN0hrRmpWNk1rcW8rWjR6RXhiT1dYREFKdzZmbmV4bWU1NDRGQmJKYndNNzNpZ2F0THgyanpZVUpJWTJGaUpaOTJDNlh5YXg5UGxCVTdOQWVVNlZoTE50ZEZLcm5rM0pzcEdVejVqcElZTnZxdUZ5SVRpL2gyelJBVDBWY3gyVnF1cGMzS0NFaEtzTWR2NlU1VXRoNlZmQi9ldzZmV0cwVDFTVHNqV0YrU0wyamV4K2N4Si90RU9ibldwV3FBZWRBTTdWSjZuT25UVURwZlY2WU9SUXhSWE1wZklEYnZ2d2R2OExmT01vRFZkUlhhbXRRamxsMDlhTkZjQXlNOVd0LzYxT1pmQmw1bWdRNzNBeGRwRVNseDA4MTUxMmYyYkNYUHUyZGxWbGJPMWsybnRudlBZbmN2bm5ndDR0bGM3aU96RmZIYXVseHJpSzZLVXd4U1ZRUEFNekkvdWVrbWRPMFI1Q0JDRE1yaWx4SGxLTWFkL3UxSXpOdXJocnNGeHZudHBCZW5TK0h3Z2RIYUpGUnRlYnlBYmVwTExTYmZHRzlQa1d2QzFlV3FsZjZIS0NrUXJOY3pHMzg2dW1oNkFUcWcwUEZIVEhpVng1clhCMElWU0R0WDNVZC8yRHJick56QlpPSmUrMlhEbXZrTW1mMGl3Sm5CS0w4Uldoa3RxS3o3d1BEVHJCbnhtbnQ3Z29FanpjV1laWEQ5bCtIdS93WmJ6UVJoNU02SmZCQ01JT0JkR0ZzaURzd0E5S0hFcTdJL210R0pjTWx0K1E0NVhTckhYU1pPVkxIMU9zbWs0Q1p1QlNpZURrK0hiQTE4b2l1R1lmU1I5dnNXMzRvcVdUcEVNVVV0ek0xVENyOEZDSnhvQmZ1RTVxSG9qbkpPaWFzRWFmZ1JOc04vR2RBVThrbytjYytRVlI3TlRRNG9jakpjUEpHOXh5OE53WmNCODJsbzhwRS8zaU9Ta1p4WmExb0V4eEsvWmYvTnQxemlBbk44bndObnlkbHkyTVRQUjdneGIzaVNSVkxTbkhaZmpCUzVvQlh6WDBIcXdMOUoveVl4L3JPRHZVZ21PS1VPVHUrRFp0am1iUmNBOWszQ2FmNmZBL2VBcGpSb3BjZThNbzhnTjZJODUrOE5BT3IyZTRsaDBkaU9Udy91YWF3V0FiR1dZaDAvVGtIVTZLT3prWUVuclhYT2VnaS9YUVZIbUJ2RHFwTzYycklIc1BwVVNPNFZUVkhKY0cxdHNiNHdPcm9ZOFdpQ0dxU1ZHaFRUU0ErVklzUURCWTd4NDlPeGJrM1QvTlZuYVgrZGhvbThNdTBTeG8rbmQySy9ENytQeWZ3YVdtMk1mMjlma0grKzBTdW9BOGZnVXI1VStCQ05kYk9rTFJXb0dkUzEzY21TcytkcFB4L0twYXR1UTU4L0FoNk1WMEsrd1BYUkx0OWQwM2ZtbTA5cHFkQW53U3VOR1VHSzhKTWw3eVJ2M2VXVXZjYVVZYUNpdk9ZK1NtNXFsL2Q2MktsNVNWcE84dEZLYnVvU045bHVsQ0Q5VFVzVlk5bmtML1hWUzNMekJTaW4rZCsydy9nQzdmSTR3SVQ5aTZnaWQzbFJHekhUbGJicDBMb3U3K043WU5VdUFmeTRVZE1uM0MyMDR0dWVva0wrUUFTNXpSSUhBQ1pGd2N3NEN5akh2QzlEclUraWdUUUQ4RkJsQm1ydCt5dDdKRlZQWDQrWjdwNCtZTTNMYlIvREZ6RjBYVVhOdElSZmhQT3V5UGp0NDB4TDA2U0tzeFVUa2RPcjRaSmZnYThIYklnQ1dUT3R6ajU3dEQyd2RWNWN3M1F3WUhYaEhvak8wNVN5dTVzdzVRNi9PZStBWVhvVUg0NWJHRTBzN1pGSlVQcXlHN1pxdGozRkpKUml0a2JtSjJVaGh0OE9BdTAxc1dPOVpNclFyL0g4YlljMTAwVThoVWNPR08zWUhBa3Q5RlVQMUs5djIxWnlwRnFFSTVkTHhyMG93cGduTFd3TXAyazRQTE4rbXdkMHZGOC92VTBpbUV6YzZiQ3dUeU1hTXFlTWNyVTc3VXNaZDlneHQwWHdvSTRkQ0tJM1BZTlJkTkZuYmZLamR5eWdZdEt4ekx6UWExNThBVC9ON2UzSjIwc1pDMEg2dFRrc3pJYjRqRkhjWUo4eTZoNVY0RWRYMGMvYU1qY3pvT0QwalJmUGlYYmxXUXdTS0VDZUJ5akVTcDFtOUwwZkFUdW5pcFFKdGpJV0Vwd1NCVE1vM1I2UTIwMy9tSG9yZkdHV2pZcmhiTWJTUVVVTlQ5bnliUXNjUGd3bHJFTmlaM3VLM0lZY0VsRHNWQ3ZlRnk4Um9GSU93OUNJenMrcHlLa1lnR200Vk5JVU1QWXFmc3I1cXg2WlU2eEFPVkZ1UXh4Tk5sd3FLM2gySzJuVnlNM2pXYjVKd1BJa3FQb29xanRrb0ZCVkV6UGtUbkM2dnJBdk9iNjk2bHpPUy9rUEQ0alVqeDBIck1LRnM1TDJnS0xpbzMwUWR4S0pUNVYzZ0s5bnJoZUFyV003dGFvTVZtSUNpbnJDRDJEMTV0ZFpMSG12Y1Z3M0o3enQrbmh5WG9QZzVBOTV2Y0RSazNKc2drcDBORmR4UjQ3WnY0VUZtWG9ISW9DeWV6bEJnY1VMcFlKbFgvcitlU1c0T1BHVyt3ZmN5Y3dpQVkzV2wwZjJERW1tOU5ibTRhK3dJVEZUNmpRSDlTY2xFUjJ2ZnJTU001MkZCYXA2MW9RazVVbExObkdPdTRqTUlSQkpvYVFjZUZJaXJNeko1alBNUEJjR284aU01Q2dPcTdpNUo4aDA5bGxwRzZxUzlFd0NLMUFCbFVlUnNsUStXVDMyOUpxbm51TmVnWXc1SEsvMkdrZjM4ZzNocUQxMjdQV213M0pwVTNJWFRnOGJFWkhybXpmQnlnMm1JRndiZmRPbFpoRS85NXJtOUpidnpKU2ZWTzhSNkttRHVQK0lxSGNCM1g4SmRoZmI3QyswN1N3ZjZwdmM2WGFpd2dNbjZnbVBGMkNPeXBZRjFMU1RndXU3YlRtSFFMbWVpVmczYWJEdk9XY0hpRjNSZDI2M29LZTFOaE50bHhBNmJWN2E5RXdMVVZFK2RNcU9MOUdzZ0FrYWx5S2tqYnNEdXZPNnZVakR0SHZDK3J2VmRrMkZhUnJZMmdlNG1jSERSWWlvODgxYXh4djdEbEtpRlhRQVhETURRZGFzMzRINk02TndvbG1TSEMzQk8zYlJTcUQ2UUt2ZlRoTDBJV0U5T2p4N3JCVUFFUkQ1NjZocDB3QUlDNEY0akdUYkJVb1E1dmJlTDlROVFRSjZGTktNcThEVXk0QWllZXRnSEhmZ2JPRzdZdWFKOW5jYWRVeTFtZFNBcnBib1NhTERMTWsxRktBMzJQVG8xWDNoa2RsK0I4VTg3RDJLN2pRQWdhT09UVVE0Y2RDRHM4bmFtcVAwekQ5OSt2eUJSdkMvNDlIRm9YTmpFYWJaUjRhVldYcm51MFFMNVhuMzdndlpzaEUxS284ZXA5dnVYWXlSVWh0MUx0RStmMHF0d28ybEpNeC9kcENBQnViakUxNGVaTGs4QzU1c1NSanN3Qk9xeXpzaVdVUjZMOEh2YVRhU2lTWnpIUGhIbmpZWmc2czhtS1JINDhUU3pFb21oWnMyYVFCcTJoQXBIL0ZYME9XYnNGQys0OGw2T1BrbTVqY042d2lweitMYmwvbWNPeVl6dUF4dE0rZlhBVkVmZFhaVUtCV3M1SHg4ZWVRMno5TmpuRzdqVi9HSi93a3VqcllaZlk1WGk1aWthcnZBZHBhdHhWMHl1VG5EOXdGRXlCYUI2RHYzUDFFYm9RSDRJRHRRUXpEdkFkdEtRSXl1aFNBMGRDSFVFL0xTdjg0NkM0M25zZWZjeEp4bWY4RDlJOVpWVDdVdXN3YnlCTDJXK0tDSlpMbXQyRXl5cG0wSU5vU280YTNOVHZQeEltbEI4OHN3QUlwcDlLSXI2NGFvYjViSTNtNEZ1Rk81QzNTelNCSGlVdXFtWEdmL2tBbnUreW5Yc3FqRHJzT0IyVkFrR3Jna2tSaFkyQlZQKzJlaG5wd0s3VG85S0h2dTdXSGNrOWhtVmYrNXp0MFVaNE1MM1daVC82UW5PbmxiOHExdHRBdUpGSXBEUkFCdTZ4eWE0L2NnbGw5NUFHeFBXTzBQZGFuNVVDM0ZpYWxzeW9DZG1KZU5GODY0RWVWR3M0U0FpSHFGbE5leWFWOGNDUjd4OVFFWnVsdXdVSHRXNFZDUDNJeC9SdWFCRUl4ZUU3dE9oV2xGb1F3UzhzRVdTZGxRQ3pjNm5sWU54WHMxQTVPTjZpelhKWGlqVlNKVS91dDBNQUJ3S1R1TGpRL0wxcGRvbHV4OStSSjFCQnBacndMTTJ0V2NVZ0c2ZTJHeTJtQVhXekZmZkkySTZleWZNUWtIUVd1bEZwV1E2NnZ5cjZuTndUUmFBZndTVG52a1Boc2hVRVl1VmV6UVlxZjFSb01PRGIrVVZtQ1ZrN0lUS3RHTHptSHRveEZNM1I3QnI5TFN3RlFUcmJqQWJ3dHFPNGxMRmsvbnBjM2gvTVp2V08rZDROZUp3d0FKOFVpVDB2VXpmTUVXWVM0d3poL1pLUllyOStaVlp6TzVibS9mMDJSQ1JqSC9aR0hWbWFDcytJbHE4WG55M3BrMGhDVFJwSnFzN0hrMmR5ZFYwYi9lZkQ3cjJmSnlmSW5uOG8zNVJFTFpmUEE1L0l2b0NySnVkU0taZVNISk9Pc2hvMmMyL1NWVW45OHBRcWN5UVlBM3JLNlUwNHFZZi8wRDZQL0w4UUI1RGdMcWVaYlVPaUpHSWRhYzU3QjFKR1pMWjFSMWN0cnpjcXdPTGRTNG1KTzNSWDdydVpVbzd1WVJ5ZmMzOFNIaW5IYjNEamZuL2E0UEZPb0kxazZOQ01jdzc3bUZKS2FtaGRPelhFaldXaW50S21CZENveTZaczJjaEFmZXJxMTBCMXlJaDNtUDRwZmJySGM0T05wREpIbXU1aStwb1ZMaGpEcEdaT24vZ3BjUHZIcUs0VTR1bG5MYkdDaFdPZFFyejNlOTBZenEyNG4yelV5aDFTZ3A2cE1YbHNHb2R0L2wyblpNWVpURzRNakI3UTRkbDV6cnFqSXo5NVpuYU05VmQ1c1RVNUwzUVdPek9kcEpPMzc4Vm96YnlOT3lyUTFMMDhtYnVOY0FTczJOeE9jV2pyWmlUMStMbThKL2tnbUVaenFBbDZhWGVncFMvb3RVbVh6TENudWlWZytXZFJHVmgrWDJZK1ZOUzJRQ0FmRmFQWFpaSndlNW51RU5ZS2FtZ2dETWFkOVgrMFdzcHorTkFKOUdEOTBlQ09RbzBzckZ0MU5xbm05bm5hWERSVmJ5bnlIUTllNUNxUXc5aWRVdUUwRXpwdFJXUEljYVVMcjc0aEN5MkczamppeXRlSkhVTVFZT1lYSTJnOEVBVU8zVXc0QzdKRUcrNy9aT2J4WjJEbVNQVHZkRjcrL01qRzBUaGhGVWxqektISThBclNiOXV5eEpiVFVjaGtjbjl5by9rWFhYY01pVG43WENBcGdXaUpWSVBJTU05aXhvR0R5bFJybjhwYm9yM0dOT3lHeGZEUVJ6RjNXL3NkLzdBZGdoc1dKYjZidkVibjJxUi9ObGEyazVpbEE1NG9CMzRFTzJ1R2g0bkJDaWp4enVtWHpQeWZvdU9OWTlIQWhiQlhZdkI4cmNFcWw4b1RpZ3BIbExBNzNUL1FOenNPQjZPbFNXTzVxR1FMZEJQNEFtYWdkS1RFMGZudDhPRUE5YTRBQU1tNDJtSytTMVd0blR3NS9MenAwSGZYV3ZITjA2Y0QzL291Tk5yamZKOXB1NE9qVzlWQ25ibENDZnozdGVXOVVibHVGSVFNSjVVVkIzMW84TTlJOXNmMXpQazR6b0g1dEhuVnpxQ3g4VEgrZ0Zva3BCMTR0ampQbklTTmxOeEZ5NzliaHNmTFV5M2RuTmlFenVOTVNoai91Q3VUNEtGQ1kyS05xbWtpcWxWb3ZoMWl1YWVDQUZweGhBSXowZ0wvUWV3VDJEWWNjTFpxeGdwMzBOd0lLV3pXM2lYYlRUaVhpdVA0K09mU3BIOXcxQnNSUEwyNDM0ZzhDZTViZzc4RGxObnJFZ2RqajhpZjJNQ25HNHpEaGdKbXVBbUp2Y2ZHMGNBRE95anBRN2xCYUpYUzc0WlRZUk9jS2tab0JIM0xpbmd3MnZHdUlpUUd2bWZReHNYVHJML3prSjkxUSttNGttV3UySmZRZVplOGJxNklCS2pVUEs5dEd6ZTA2SG5pZXZsODRTYyt6YTJneVRyZEsxT3FuQVg5czhxRFlVdERDM3E2QjNRZGxhV21GNEhhUGl1RlhzRUhqYnRma0JiK2lHcHlrVWdyTUk0UU1jbDV2aElRS1JrQXBwajhGc1JpK2hZVnBmQndRa01pbjI0NTdBM052OWsrai9UQWJLQWFwNVkxL0tNQXZZMkxHOHI1bEIvQzNwWmtVT25JSjQzalZvK1QvVHBVVEVKK2txR1Z2cEtpVS8vR2w2cjlrMXczWGJNaEVTdlpSSlQzU2UyRXZXdnByZTUzdXByV0xVa1dyLys1N0N2Zk1wRTFlWXRMMW1iNlZuSnpXdjIrdDI5ZnRaeGxYS3F5T2tFemJKQU95NDhiOUFhMndPQVdva0psOG9GTlBmVmxac0xyS3hmMUwwRUY3QXFncHZxWkozbm84TkxYVWJBM1NpWHlsZ1NjSFRnVzhqS1gycTd4dWtyN21KQ3hDQ0M0L2NseVJrRUVtSEg1YlNPR1R3Z3p3SlU0RjJ1dHk1eUh4VmtCTExhY1RuWG4xRWsya0w1dlBqVUllcEJ6MnlSQkVadWlyaXVoS0txanBaeWJtWW9wUThSOTJ3dlBPNHB4bDg1bXBXbVJla2NhNnp2SHRwZ3NvS2FlYTdRR21sSlpOem5XTG1ad05qSU0xdTFmK013Q3JibnNNK0s2WWdYRnBxeGN2QmpZYXg0dWdmbU1RZnE3bnAxUCsvZThSOHFpWkxNSDMzWjBvUk9HbjVjNkJtYkNuR0FPcWNaR0FkblR2Q3hTN0o3N25rcm0vNXhNUmozUUFEblYvQXBUdFpCTGZma3V4cTBoVm8weUJyajZxV3hLZ29hVWw4dDA2clBJNUtITXpvYkVsQUt0NnoxRWRYLzA1SFpUSGtLWXNyakpSNmZmNlpuSHBtM3RrTGJPa3o0RmVTc2EwSThrOXB2NmhyNi9TcW9IeGJGcWFmNWtQa3NjTGV3RXhBc1I1T0ZxSmp1SGFhdUFzcnZGSk93M3ptTXpXLzFMUG9jRU9xakhhNGNaZ2N4bmVNZVM5SGhTd0lYTGZMRWN5aTBNTmVqUzhodjg2QlJteC8xd244Q1J0M25DSmV6eEhickd3cWNZSjdJYmxZNE4wbHBoa0FUb2tybEhwc0IwRmZFOW9UdWZWcHRSU1hFM2lLbms0ODRtZDZUc0laNkxWTFVKK1RTYThLZEdOOFVnMkRpL2gxU1l4VGpzWFZmRGtMZlRMQkdWRTV6NFQxcTFBSDdydkZrR25JUHZJODVmakJlWnNmbG02Q2tNKzJTNTcrZ3o2RnJ0dktMbm1zQ2hBOUNPeHRJcmlIVmpZNkY5WnFPYnRRVzNvaWw1enVwMVcyVlRpc1l0Y242WG9hOStia2JtQlN2RHp2a0dzNmdaaWV1YnNKbHJsYU9HU2U5SVhtYUZoZ09kM0lqYStLb3R6Z004RkJ6b09BeHBBaVFVQm4rZlQ2MlhieU1nOUhDYzdXQjVPaXlNZ05ZODhLUGY1U1RtenlWc0s4d0NvVHFhcStvRjV5bmpSL1A1MStKUHpKVFd1Wmhhbmh3aVVRVkkzVDBEQnZzWXlmMUtjNXY1YWlETTExNjVjOXZ6TU1GdmdEMmlPa0RUNlU4Y3N4cUhKNDRhNlN6aUVBZEd0bDZ4WnlEcjhXdnExY0hzVjB2dTBSS0ZzYlIzLzZmKzgxNGg3QnZVTkE3L3J0Y2Q3NkJvd29uMGh5NmhHMjQ5WjJJT1ZRMVo4dVBuSi82Qnh4YTVra1EzejFpSE9NMENrZjRlTGM1WVU0a2tFMHFLeUc5aVk4SjluRnNkVy9nWHZsUE1LMHFqdkYrTnpWUlkxQXlGMDR3VXQ0V0M0UTh6VGpudFVnZzI2MU1Qc1FKYVZDbHF2L1pXdkJ3R0IxZnhWS1NjU0wvMDEwQXZEbC8vYWxoQVM3aVMyRnZ5Y013LzNPV1gzNlhyOG53VlRiNVhaY2V1ZHRBUER1VjNVRG15SVRrTHdubm9XdTdjZ2sySEtxNGp6ZE9pblFQTmlrNmw5QnZleGV1Tkl2NktLaGV4YVVvdTlnR2t6QWdOL1k1cElKblNQcUlCSW9ncGNnUGxSNmJnZ2s2ekNyNHFSSnR5RVJ1NTZKRUExOXdoQTRHTFBjRzRYMy9KNG44SEVNR2hobFQyRDdDTnpBbG0vSmZaTjR0bmhuWmo2T3RDQWRYMk9udnh0ZDJXUjZrUFlGNzdXV3V0RFhZQU1GN2o3TjJZT0xwRHFtMm9JcnBTbWpKMjlFaWpUcHkwTVpGRW85QXZqbysrQUhoMVd3TllNU0RCcWtwMzBUN0kzK29ESy9XTUpEYTlPUGVMcE8vajc0OStqVGZYRFBUTitWejNkSkFuRDZLL1E3VkV4K2l0VkNZSGFkQUs4eDg5NkcwbW9DYmsza0VBWXczY2FwOERJcElJN3hkV296c1dxRmwzYWhpWUJQSHZNTElnZGYvRVk5dVIxeURTM3lpTUFidTRpUlhZYXNuNDlyRk1abEFLNUFnKzZLc0JMSmw0bE5BSFdNeTJPaG11Um9kK2t5ekJlM2ovcFFpbHYwOVBwb2tvUWpYSUVudFRwR3FJTEF6bU93UWU4M2pOVW5ZMVV2aitJbktiSmw5ZWZLV0s1citzYVozM3R0SlFEYUxTRmlVb3BCU01rT1NJL29DWUZSL005TWdnNFdRZWxpL092QjMxWmpnM2VUaXNaUmcwQk5YQlgrbytjaDFFSHRiL3BUS1k5OS92Y0o3Zk1pWDBlQmtJd3JTUGlQMXNiWmJ4UTB1MHp3QkQzQzUwUGRKWU96NWs0PVwiO1xuICBjb25zdCBkZWNvZGVkID0gSlNPTi5wYXJzZSh6bGliLmJyb3RsaURlY29tcHJlc3NTeW5jKEJ1ZmZlci5mcm9tKGVuY29kZWQsICdiYXNlNjQnKSkudG9TdHJpbmcoKSk7XG4gIHR5cGVDb2VyY2lvblN0YXRlTWFjaGluZSA9ICgpID0+IGRlY29kZWQ7XG4gIHJldHVybiBkZWNvZGVkO1xufTsiXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.d.ts new file mode 100644 index 0000000000000..5a2ce086ede4e --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.d.ts @@ -0,0 +1,20 @@ +/** + * Normalize a service name from: + * + * - A full SDKv3 package name + * - A partial SDKv3 package name + * - An SDKv2 constructor name + * + * To a partial SDKv3 package name. + */ +export declare function normalizeServiceName(service: string): string; +/** + * Normalize an action name from: + * + * - camelCase SDKv2 method name + * - PascalCase API name + * - SDKv3 command class name + * + * To a PascalCase API name. + */ +export declare function normalizeActionName(v3Service: string, action: string): string; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.js new file mode 100644 index 0000000000000..c3a833c661899 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/lib/sdk-info.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalizeActionName = exports.normalizeServiceName = void 0; +/** + * Normalize a service name from: + * + * - A full SDKv3 package name + * - A partial SDKv3 package name + * - An SDKv2 constructor name + * + * To a partial SDKv3 package name. + */ +function normalizeServiceName(service) { + service = service.toLowerCase(); // Lowercase + service = service.replace(/^@aws-sdk\/client-/, ''); // Strip the start of a V3 package name + service = v2ToV3Mapping()?.[service] ?? service; // Optionally map v2 name -> v3 name + return service; +} +exports.normalizeServiceName = normalizeServiceName; +/** + * Normalize an action name from: + * + * - camelCase SDKv2 method name + * - PascalCase API name + * - SDKv3 command class name + * + * To a PascalCase API name. + */ +function normalizeActionName(v3Service, action) { + if (action.charAt(0).toLowerCase() === action.charAt(0)) { + return action.charAt(0).toUpperCase() + action.slice(1); + } + // If the given word is in the APIs ending in 'Command' for this service, + // return as is. Otherwise, return with a potential 'Command' suffix stripped. + if (v3Metadata()[v3Service]?.commands?.includes(action)) { + return action; + } + return action.replace(/Command$/, ''); +} +exports.normalizeActionName = normalizeActionName; +function v2ToV3Mapping() { + // eslint-disable-next-line @typescript-eslint/no-require-imports + return require('./sdk-v2-to-v3.json'); +} +function v3Metadata() { + // eslint-disable-next-line @typescript-eslint/no-require-imports + return require('./sdk-v3-metadata.json'); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLWluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZGstaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLE9BQWU7SUFDbEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFlBQVk7SUFDN0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7SUFDNUYsT0FBTyxHQUFHLGFBQWEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsb0NBQW9DO0lBQ3JGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFMRCxvREFLQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxNQUFjO0lBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3ZELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQseUVBQXlFO0lBQ3pFLDhFQUE4RTtJQUM5RSxJQUFJLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdkQsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQVpELGtEQVlDO0FBRUQsU0FBUyxhQUFhO0lBQ3BCLGlFQUFpRTtJQUNqRSxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLFVBQVU7SUFDakIsaUVBQWlFO0lBQ2pFLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm9ybWFsaXplIGEgc2VydmljZSBuYW1lIGZyb206XG4gKlxuICogLSBBIGZ1bGwgU0RLdjMgcGFja2FnZSBuYW1lXG4gKiAtIEEgcGFydGlhbCBTREt2MyBwYWNrYWdlIG5hbWVcbiAqIC0gQW4gU0RLdjIgY29uc3RydWN0b3IgbmFtZVxuICpcbiAqIFRvIGEgcGFydGlhbCBTREt2MyBwYWNrYWdlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTZXJ2aWNlTmFtZShzZXJ2aWNlOiBzdHJpbmcpIHtcbiAgc2VydmljZSA9IHNlcnZpY2UudG9Mb3dlckNhc2UoKTsgLy8gTG93ZXJjYXNlXG4gIHNlcnZpY2UgPSBzZXJ2aWNlLnJlcGxhY2UoL15AYXdzLXNka1xcL2NsaWVudC0vLCAnJyk7IC8vIFN0cmlwIHRoZSBzdGFydCBvZiBhIFYzIHBhY2thZ2UgbmFtZVxuICBzZXJ2aWNlID0gdjJUb1YzTWFwcGluZygpPy5bc2VydmljZV0gPz8gc2VydmljZTsgLy8gT3B0aW9uYWxseSBtYXAgdjIgbmFtZSAtPiB2MyBuYW1lXG4gIHJldHVybiBzZXJ2aWNlO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhbiBhY3Rpb24gbmFtZSBmcm9tOlxuICpcbiAqIC0gY2FtZWxDYXNlIFNES3YyIG1ldGhvZCBuYW1lXG4gKiAtIFBhc2NhbENhc2UgQVBJIG5hbWVcbiAqIC0gU0RLdjMgY29tbWFuZCBjbGFzcyBuYW1lXG4gKlxuICogVG8gYSBQYXNjYWxDYXNlIEFQSSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQWN0aW9uTmFtZSh2M1NlcnZpY2U6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpIHtcbiAgaWYgKGFjdGlvbi5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSA9PT0gYWN0aW9uLmNoYXJBdCgwKSkge1xuICAgIHJldHVybiBhY3Rpb24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBhY3Rpb24uc2xpY2UoMSk7XG4gIH1cblxuICAvLyBJZiB0aGUgZ2l2ZW4gd29yZCBpcyBpbiB0aGUgQVBJcyBlbmRpbmcgaW4gJ0NvbW1hbmQnIGZvciB0aGlzIHNlcnZpY2UsXG4gIC8vIHJldHVybiBhcyBpcy4gT3RoZXJ3aXNlLCByZXR1cm4gd2l0aCBhIHBvdGVudGlhbCAnQ29tbWFuZCcgc3VmZml4IHN0cmlwcGVkLlxuICBpZiAodjNNZXRhZGF0YSgpW3YzU2VydmljZV0/LmNvbW1hbmRzPy5pbmNsdWRlcyhhY3Rpb24pKSB7XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuXG4gIHJldHVybiBhY3Rpb24ucmVwbGFjZSgvQ29tbWFuZCQvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIHYyVG9WM01hcHBpbmcoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHJldHVybiByZXF1aXJlKCcuL3Nkay12Mi10by12My5qc29uJyk7XG59XG5cbmZ1bmN0aW9uIHYzTWV0YWRhdGEoKTogUmVjb3JkPHN0cmluZywgeyBpYW1QcmVmaXg/OiBzdHJpbmc7IGNvbW1hbmRzPzogc3RyaW5nW10gfT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICByZXR1cm4gcmVxdWlyZSgnLi9zZGstdjMtbWV0YWRhdGEuanNvbicpO1xufVxuIl19 \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.d.ts new file mode 100644 index 0000000000000..cb0ff5c3b541f --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.js new file mode 100644 index 0000000000000..70b197940eb0a --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/api-call.test.js @@ -0,0 +1,111 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const lib_1 = require("../lib"); +test('can map service name to SDK v3 client name', () => { + expect(new lib_1.ApiCall('S3', 'Bla').v3PackageName).toBe('@aws-sdk/client-s3'); +}); +test.each([ + 'api-gateway', + '@aws-sdk/client-api-gateway', + 'APIGateway', + 'apigateway', +])('service %p is recognized', (service) => { + expect(new lib_1.ApiCall(service, 'Bla').v3PackageName).toEqual('@aws-sdk/client-api-gateway'); +}); +test.each([ + 'GetRestApi', + 'getRestApi', + 'GetRestApiCommand', +])('action %p is recognized', (action) => { + expect(new lib_1.ApiCall('api-gateway', action).action).toEqual('GetRestApi'); +}); +test.each([ + 'ExecuteCommand', + 'executeCommand', + 'ExecuteCommandCommand', +])('ECS action %p is recognized', (action) => { + expect(new lib_1.ApiCall('ecs', action).action).toEqual('ExecuteCommand'); +}); +describe('helpers for SDKv3', () => { + test('can load a SDK package by service name', () => { + const sdk = new lib_1.ApiCall('S3', 'Bla'); + expect(sdk.v3PackageName).toBe('@aws-sdk/client-s3'); + sdk.initializePackage(); + }); + test('can load a SDK package by package name', () => { + const sdk = new lib_1.ApiCall('@aws-sdk/client-s3', 'Bla'); + expect(sdk.v3PackageName).toBe('@aws-sdk/client-s3'); + sdk.initializePackage(); + }); + test('will throw when attempting to load unknown SDK package', () => { + expect(() => { + loadV3ClientPackage('@aws-sdk/client-foobar'); + }).toThrow("Service foobar client package with name '@aws-sdk/client-foobar' does not exist."); + }); + test('will throw when attempting to load unknown SDK package using V2 style name', () => { + expect(() => { + loadV3ClientPackage('FooBar'); + }).toThrow("Service foobar client package with name '@aws-sdk/client-foobar' does not exist."); + }); + describe('with a SDK package loaded', () => { + test('can get client', () => { + const client = getV3Client('s3'); + expect(client.config.serviceId).toBe('S3'); + }); + test('can get client with config', async () => { + const client = getV3Client('s3', { region: 'eu-west-1' }); + const region = await client.config.region(); + expect(region).toBe('eu-west-1'); + }); + test('can get command', () => { + const apiCall = new lib_1.ApiCall('s3', 'ListBuckets'); + const command = apiCall.findCommandClass(); + expect(command).toBeDefined(); + }); + test('will throw when attempting to get unknown command', () => { + expect(() => { + new lib_1.ApiCall('s3', 'FooBar').findCommandClass(); + }).toThrow('Unable to find command named: FooBarCommand'); + }); + }); +}); +test('flatten', () => { + expect((0, lib_1.flatten)({ + foo: 'foo', + bar: { + foo: 'foo', + bar: 'bar', + }, + baz: [ + { foo: 'foo' }, + { bar: 'bar' }, + ], + })).toEqual({ + 'foo': 'foo', + 'bar.foo': 'foo', + 'bar.bar': 'bar', + 'baz.0.foo': 'foo', + 'baz.1.bar': 'bar', + }); +}); +test.each([ + { transformToString: () => 'foo' }, + Buffer.from('foo'), + new TextEncoder().encode('foo'), +])('coerce %p', async (fooValue) => { + expect(await (0, lib_1.coerceSdkv3Response)({ + foo: fooValue, + })).toEqual({ foo: 'foo' }); +}); +function loadV3ClientPackage(service) { + const apiCall = new lib_1.ApiCall(service, 'Bla'); + apiCall.initializePackage(); + return apiCall.v3Package; +} +function getV3Client(service, options = {}) { + const apiCall = new lib_1.ApiCall(service, 'Bla'); + apiCall.initializePackage(); + apiCall.initializeClient(options); + return apiCall.client; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNhbGwudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFwaS1jYWxsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnQ0FBOEU7QUFFOUUsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxNQUFNLENBQUMsSUFBSSxhQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNSLGFBQWE7SUFDYiw2QkFBNkI7SUFDN0IsWUFBWTtJQUNaLFlBQVk7Q0FDYixDQUFDLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtJQUN6QyxNQUFNLENBQUMsSUFBSSxhQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQzNGLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNSLFlBQVk7SUFDWixZQUFZO0lBQ1osbUJBQW1CO0NBQ3BCLENBQUMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sQ0FBQyxJQUFJLGFBQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNSLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsdUJBQXVCO0NBQ3hCLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzNDLE1BQU0sQ0FBQyxJQUFJLGFBQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENB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LENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxPQUFlLEVBQUUsVUFBNkMsRUFBRTtJQUNuRixNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDNUIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpQ2FsbCwgSW52b2tlT3B0aW9ucywgY29lcmNlU2RrdjNSZXNwb25zZSwgZmxhdHRlbiB9IGZyb20gJy4uL2xpYic7XG5cbnRlc3QoJ2NhbiBtYXAgc2VydmljZSBuYW1lIHRvIFNESyB2MyBjbGllbnQgbmFtZScsICgpID0+IHtcbiAgZXhwZWN0KG5ldyBBcGlDYWxsKCdTMycsICdCbGEnKS52M1BhY2thZ2VOYW1lKS50b0JlKCdAYXdzLXNkay9jbGllbnQtczMnKTtcbn0pO1xuXG50ZXN0LmVhY2goW1xuICAnYXBpLWdhdGV3YXknLFxuICAnQGF3cy1zZGsvY2xpZW50LWFwaS1nYXRld2F5JyxcbiAgJ0FQSUdhdGV3YXknLFxuICAnYXBpZ2F0ZXdheScsXG5dKSgnc2VydmljZSAlcCBpcyByZWNvZ25pemVkJywgKHNlcnZpY2UpID0+IHtcbiAgZXhwZWN0KG5ldyBBcGlDYWxsKHNlcnZpY2UsICdCbGEnKS52M1BhY2thZ2VOYW1lKS50b0VxdWFsKCdAYXdzLXNkay9jbGllbnQtYXBpLWdhdGV3YXknKTtcbn0pO1xuXG50ZXN0LmVhY2goW1xuICAnR2V0UmVzdEFwaScsXG4gICdnZXRSZXN0QXBpJyxcbiAgJ0dldFJlc3RBcGlDb21tYW5kJyxcbl0pKCdhY3Rpb24gJXAgaXMgcmVjb2duaXplZCcsIChhY3Rpb24pID0+IHtcbiAgZXhwZWN0KG5ldyBBcGlDYWxsKCdhcGktZ2F0ZXdheScsIGFjdGlvbikuYWN0aW9uKS50b0VxdWFsKCdHZXRSZXN0QXBpJyk7XG59KTtcblxudGVzdC5lYWNoKFtcbiAgJ0V4ZWN1dGVDb21tYW5kJyxcbiAgJ2V4ZWN1dGVDb21tYW5kJyxcbiAgJ0V4ZWN1dGVDb21tYW5kQ29tbWFuZCcsXG5dKSgnRUNTIGFjdGlvbiAlcCBpcyByZWNvZ25pemVkJywgKGFjdGlvbikgPT4ge1xuICBleHBlY3QobmV3IEFwaUNhbGwoJ2VjcycsIGFjdGlvbikuYWN0aW9uKS50b0VxdWFsKCdFeGVjdXRlQ29tbWFuZCcpO1xufSk7XG5cbmRlc2NyaWJlKCdoZWxwZXJzIGZvciBTREt2MycsICgpID0+IHtcbiAgdGVzdCgnY2FuIGxvYWQgYSBTREsgcGFja2FnZSBieSBzZXJ2aWNlIG5hbWUnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2RrID0gbmV3IEFwaUNhbGwoJ1MzJywgJ0JsYScpO1xuICAgIGV4cGVjdChzZGsudjNQYWNrYWdlTmFtZSkudG9CZSgnQGF3cy1zZGsvY2xpZW50LXMzJyk7XG4gICAgc2RrLmluaXRpYWxpemVQYWNrYWdlKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ2NhbiBsb2FkIGEgU0RLIHBhY2thZ2UgYnkgcGFja2FnZSBuYW1lJywgKCkgPT4ge1xuICAgIGNvbnN0IHNkayA9IG5ldyBBcGlDYWxsKCdAYXdzLXNkay9jbGllbnQtczMnLCAnQmxhJyk7XG4gICAgZXhwZWN0KHNkay52M1BhY2thZ2VOYW1lKS50b0JlKCdAYXdzLXNkay9jbGllbnQtczMnKTtcbiAgICBzZGsuaW5pdGlhbGl6ZVBhY2thZ2UoKTtcbiAgfSk7XG5cbiAgdGVzdCgnd2lsbCB0aHJvdyB3aGVuIGF0dGVtcHRpbmcgdG8gbG9hZCB1bmtub3duIFNESyBwYWNrYWdlJywgKCkgPT4ge1xuICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICBsb2FkVjNDbGllbnRQYWNrYWdlKCdAYXdzLXNkay9jbGllbnQtZm9vYmFyJyk7XG4gICAgfSkudG9UaHJvdyhcIlNlcnZpY2UgZm9vYmFyIGNsaWVudCBwYWNrYWdlIHdpdGggbmFtZSAnQGF3cy1zZGsvY2xpZW50LWZvb2JhcicgZG9lcyBub3QgZXhpc3QuXCIpO1xuICB9KTtcblxuICB0ZXN0KCd3aWxsIHRocm93IHdoZW4gYXR0ZW1wdGluZyB0byBsb2FkIHVua25vd24gU0RLIHBhY2thZ2UgdXNpbmcgVjIgc3R5bGUgbmFtZScsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgbG9hZFYzQ2xpZW50UGFja2FnZSgnRm9vQmFyJyk7XG4gICAgfSkudG9UaHJvdyhcIlNlcnZpY2UgZm9vYmFyIGNsaWVudCBwYWNrYWdlIHdpdGggbmFtZSAnQGF3cy1zZGsvY2xpZW50LWZvb2JhcicgZG9lcyBub3QgZXhpc3QuXCIpO1xuICB9KTtcblxuICBkZXNjcmliZSgnd2l0aCBhIFNESyBwYWNrYWdlIGxvYWRlZCcsICgpID0+IHtcbiAgICB0ZXN0KCdjYW4gZ2V0IGNsaWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldFYzQ2xpZW50KCdzMycpO1xuICAgICAgZXhwZWN0KGNsaWVudC5jb25maWcuc2VydmljZUlkKS50b0JlKCdTMycpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY2FuIGdldCBjbGllbnQgd2l0aCBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRWM0NsaWVudCgnczMnLCB7IHJlZ2lvbjogJ2V1LXdlc3QtMScgfSk7XG4gICAgICBjb25zdCByZWdpb24gPSBhd2FpdCBjbGllbnQuY29uZmlnLnJlZ2lvbigpO1xuICAgICAgZXhwZWN0KHJlZ2lvbikudG9CZSgnZXUtd2VzdC0xJyk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjYW4gZ2V0IGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcGlDYWxsID0gbmV3IEFwaUNhbGwoJ3MzJywgJ0xpc3RCdWNrZXRzJyk7XG4gICAgICBjb25zdCBjb21tYW5kID0gYXBpQ2FsbC5maW5kQ29tbWFuZENsYXNzKCk7XG4gICAgICBleHBlY3QoY29tbWFuZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgICB0ZXN0KCd3aWxsIHRocm93IHdoZW4gYXR0ZW1wdGluZyB0byBnZXQgdW5rbm93biBjb21tYW5kJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IEFwaUNhbGwoJ3MzJywgJ0Zvb0JhcicpLmZpbmRDb21tYW5kQ2xhc3MoKTtcbiAgICAgIH0pLnRvVGhyb3coJ1VuYWJsZSB0byBmaW5kIGNvbW1hbmQgbmFtZWQ6IEZvb0JhckNvbW1hbmQnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxudGVzdCgnZmxhdHRlbicsICgpID0+IHtcbiAgZXhwZWN0KGZsYXR0ZW4oe1xuICAgIGZvbzogJ2ZvbycsXG4gICAgYmFyOiB7XG4gICAgICBmb286ICdmb28nLFxuICAgICAgYmFyOiAnYmFyJyxcbiAgICB9LFxuICAgIGJhejogW1xuICAgICAgeyBmb286ICdmb28nIH0sXG4gICAgICB7IGJhcjogJ2JhcicgfSxcbiAgICBdLFxuICB9KSkudG9FcXVhbCh7XG4gICAgJ2Zvbyc6ICdmb28nLFxuICAgICdiYXIuZm9vJzogJ2ZvbycsXG4gICAgJ2Jhci5iYXInOiAnYmFyJyxcbiAgICAnYmF6LjAuZm9vJzogJ2ZvbycsXG4gICAgJ2Jhei4xLmJhcic6ICdiYXInLFxuICB9KTtcbn0pO1xuXG50ZXN0LmVhY2goW1xuICB7IHRyYW5zZm9ybVRvU3RyaW5nOiAoKSA9PiAnZm9vJyB9LFxuICBCdWZmZXIuZnJvbSgnZm9vJyksXG4gIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSgnZm9vJyksXG5dKSgnY29lcmNlICVwJywgYXN5bmMgKGZvb1ZhbHVlKSA9PiB7XG4gIGV4cGVjdChhd2FpdCBjb2VyY2VTZGt2M1Jlc3BvbnNlKHtcbiAgICBmb286IGZvb1ZhbHVlLFxuICB9KSkudG9FcXVhbCh7IGZvbzogJ2ZvbycgfSk7XG59KTtcblxuZnVuY3Rpb24gbG9hZFYzQ2xpZW50UGFja2FnZShzZXJ2aWNlOiBzdHJpbmcpIHtcbiAgY29uc3QgYXBpQ2FsbCA9IG5ldyBBcGlDYWxsKHNlcnZpY2UsICdCbGEnKTtcbiAgYXBpQ2FsbC5pbml0aWFsaXplUGFja2FnZSgpO1xuICByZXR1cm4gYXBpQ2FsbC52M1BhY2thZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFYzQ2xpZW50KHNlcnZpY2U6IHN0cmluZywgb3B0aW9uczogT21pdDxJbnZva2VPcHRpb25zLCAncGFyYW1ldGVycyc+ID0ge30pIHtcbiAgY29uc3QgYXBpQ2FsbCA9IG5ldyBBcGlDYWxsKHNlcnZpY2UsICdCbGEnKTtcbiAgYXBpQ2FsbC5pbml0aWFsaXplUGFja2FnZSgpO1xuICBhcGlDYWxsLmluaXRpYWxpemVDbGllbnQob3B0aW9ucyk7XG4gIHJldHVybiBhcGlDYWxsLmNsaWVudDtcbn1cbiJdfQ== \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.d.ts new file mode 100644 index 0000000000000..cb0ff5c3b541f --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.js new file mode 100644 index 0000000000000..1addea726e7a1 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/coerce-api-parameters.test.js @@ -0,0 +1,622 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const coerce_api_parameters_1 = require("../lib/coerce-api-parameters"); +const encode = (v) => new TextEncoder().encode(v); +describe('Uint8Array', () => { + describe('should coerce', () => { + test('a nested value', () => { + // GIVEN + const obj = { a: { b: { c: 'dummy-value' } } }; + // WHEN + new coerce_api_parameters_1.Coercer([ + { a: 1 }, + { b: 2 }, + { c: 'b' }, + ]).testCoerce(obj); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: encode('dummy-value') } } }); + }); + test('values nested in an array', () => { + // GIVEN + const obj = { + a: { + b: [ + { z: '1' }, + { z: '2' }, + { z: '3' }, + ], + }, + }; + // WHEN + new coerce_api_parameters_1.Coercer([ + { a: 1 }, + { b: 2 }, + { '*': 3 }, + { z: 'b' }, + ]).testCoerce(obj); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: encode('1') }, + { z: encode('2') }, + { z: encode('3') }, + ], + }, + }); + }); + test('array elements', () => { + // GIVEN + const obj = { + a: { + b: ['1', '2', '3'], + }, + }; + // THEN + new coerce_api_parameters_1.Coercer([ + { a: 1 }, + { b: 2 }, + { '*': 'b' }, + ]).testCoerce(obj); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + encode('1'), + encode('2'), + encode('3'), + ], + }, + }); + }); + test('values nested in multiple arrays', () => { + // GIVEN + const obj = { + a: { + b: [ + { + z: [ + { y: '1' }, + { y: '2' }, + ], + }, + { + z: [ + { y: 'A' }, + { y: 'B' }, + ], + }, + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*', 'z', '*', 'y'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: [{ y: encode('1') }, { y: encode('2') }] }, + { z: [{ y: encode('A') }, { y: encode('B') }] }, + ], + }, + }); + }); + test('empty string', () => { + // GIVEN + const obj = { a: { b: { c: '' } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: encode('') } } }); + }); + test('a number', () => { + // GIVEN + const obj = { a: { b: { c: 0 } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: encode('0') } } }); + }); + }); + describe('should NOT coerce', () => { + test('undefined', () => { + // GIVEN + const obj = { a: { b: { c: undefined } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: undefined } } }); + }); + test('null', () => { + // GIVEN + const obj = { a: { b: { c: null } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: null } } }); + }); + test('an path that does not exist in input', () => { + // GIVEN + const obj = { a: { b: { c: 'dummy-value' } } }; + // THEN + coerce(obj, ['a', 'b', 'foobar'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: 'dummy-value' } } }); + }); + test('a path that is not a leaf', () => { + // GIVEN + const obj = { a: { b: { c: 'dummy-value' } } }; + // THEN + coerce(obj, ['a', 'b'], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: 'dummy-value' } } }); + }); + test('do not change anything for empty path', () => { + // GIVEN + const obj = { a: { b: { c: 'dummy-value' } } }; + // THEN + coerce(obj, [], 'Uint8Array'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: 'dummy-value' } } }); + }); + }); + describe('given an api call description', () => { + test('can convert string parameters to Uint8Array when needed', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('KMS', 'encrypt', { + KeyId: 'key-id', + Plaintext: 'dummy-data', + }); + expect(params).toMatchObject({ + KeyId: 'key-id', + Plaintext: new Uint8Array([ + 100, 117, 109, 109, + 121, 45, 100, 97, + 116, 97, + ]), + }); + }); + test('can convert string parameters to Uint8Array in arrays', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('Kinesis', 'putRecords', { + Records: [ + { + Data: 'aaa', + PartitionKey: 'key', + }, + { + Data: 'bbb', + PartitionKey: 'key', + }, + ], + }); + expect(params).toMatchObject({ + Records: [ + { + Data: new Uint8Array([97, 97, 97]), + PartitionKey: 'key', + }, + { + Data: new Uint8Array([98, 98, 98]), + PartitionKey: 'key', + }, + ], + }); + }); + test('can convert string parameters to Uint8Array in map & union', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('dynamodb', 'putItem', { + Item: { + Binary: { + B: 'abc', + }, + }, + }); + expect(params).toMatchObject({ + Item: { + Binary: { + B: new Uint8Array([97, 98, 99]), + }, + }, + }); + }); + test('can coerce parameters in recursive types', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('connect', 'CreateEvaluationForm', { + Items: [ + { + Section: { + Items: [ + { + Question: { + Weight: '9000', + }, + }, + ], + }, + }, + ], + }); + expect(params).toMatchObject({ + Items: [ + { + Section: { + Items: [ + { + Question: { + Weight: 9000, // <-- converted + }, + }, + ], + }, + }, + ], + }); + }); + }); +}); +describe('number', () => { + describe('should coerce', () => { + test('a nested value', () => { + // GIVEN + const obj = { a: { b: { c: '-123.45' } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: -123.45 } } }); + }); + test('values nested in an array', () => { + // GIVEN + const obj = { + a: { + b: [ + { z: '1' }, + { z: '2' }, + { z: '3' }, + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*', 'z'], 'number'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: 1 }, + { z: 2 }, + { z: 3 }, + ], + }, + }); + }); + test('array elements', () => { + // GIVEN + const obj = { + a: { + b: ['1', '2', '3'], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*'], 'number'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + 1, + 2, + 3, + ], + }, + }); + }); + test('values nested in multiple arrays', () => { + // GIVEN + const obj = { + a: { + b: [ + { + z: [ + { y: '1' }, + { y: '2' }, + ], + }, + { + z: [ + { y: '3' }, + { y: '4' }, + ], + }, + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*', 'z', '*', 'y'], 'number'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: [{ y: 1 }, { y: 2 }] }, + { z: [{ y: 3 }, { y: 4 }] }, + ], + }, + }); + }); + }); + describe('should NOT coerce', () => { + test('empty string', () => { + // GIVEN + const obj = { a: { b: { c: '' } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: encode('') } } }); + }); + test('a number', () => { + // GIVEN + const obj = { a: { b: { c: 0 } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: 0 } } }); + }); + test('undefined', () => { + // GIVEN + const obj = { a: { b: { c: undefined } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: undefined } } }); + }); + test('null', () => { + // GIVEN + const obj = { a: { b: { c: null } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: null } } }); + }); + test('an path that does not exist in input', () => { + // GIVEN + const obj = { a: { b: { c: 'dummy-value' } } }; + // THEN + coerce(obj, ['a', 'b', 'foobar'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: 'dummy-value' } } }); + }); + test('a path that is not a leaf', () => { + // GIVEN + const obj = { a: { b: { c: '123' } } }; + // THEN + coerce(obj, ['a', 'b'], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: '123' } } }); + }); + test('do not change anything for empty path', () => { + // GIVEN + const obj = { a: { b: { c: '123' } } }; + // THEN + coerce(obj, [], 'number'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: '123' } } }); + }); + }); + describe('given an api call description', () => { + test('can convert string parameters to number when needed', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('Amplify', 'listApps', { + maxResults: '15', + }); + expect(params).toMatchObject({ + maxResults: 15, + }); + }); + test('can convert string parameters to number in arrays', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('ECS', 'createService', { + loadBalancers: [{ + containerPort: '8080', + }, { + containerPort: '9000', + }], + }); + expect(params).toMatchObject({ + loadBalancers: [{ + containerPort: 8080, + }, { + containerPort: 9000, + }], + }); + }); + test('can convert string parameters to number in map & union', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('apigatewayv2', 'createApi', { + CorsConfiguration: { + MaxAge: '300', + }, + }); + expect(params).toMatchObject({ + CorsConfiguration: { + MaxAge: 300, + }, + }); + }); + }); +}); +describe('date', () => { + describe('should coerce', () => { + test('a nested value', () => { + // GIVEN + const obj = { a: { b: { c: new Date('2023-01-01').toJSON() } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: new Date('2023-01-01') } } }); + }); + test('values nested in an array', () => { + // GIVEN + const obj = { + a: { + b: [ + { z: new Date('2023-01-01').toJSON() }, + { z: new Date('2023-01-02').toJSON() }, + { z: new Date('2023-01-03').toJSON() }, + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*', 'z'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: new Date('2023-01-01') }, + { z: new Date('2023-01-02') }, + { z: new Date('2023-01-03') }, + ], + }, + }); + }); + test('array elements', () => { + // GIVEN + const obj = { + a: { + b: [ + new Date('2023-01-01').toJSON(), + new Date('2023-01-02').toJSON(), + new Date('2023-01-03').toJSON(), + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + new Date('2023-01-01'), + new Date('2023-01-02'), + new Date('2023-01-03'), + ], + }, + }); + }); + test('values nested in multiple arrays', () => { + // GIVEN + const obj = { + a: { + b: [ + { + z: [ + { y: new Date('2023-01-01').toJSON() }, + { y: new Date('2023-01-02').toJSON() }, + ], + }, + { + z: [ + { y: new Date('2023-01-03').toJSON() }, + { y: new Date('2023-01-04').toJSON() }, + ], + }, + ], + }, + }; + // THEN + coerce(obj, ['a', 'b', '*', 'z', '*', 'y'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ + a: { + b: [ + { z: [{ y: new Date('2023-01-01') }, { y: new Date('2023-01-02') }] }, + { z: [{ y: new Date('2023-01-03') }, { y: new Date('2023-01-04') }] }, + ], + }, + }); + }); + }); + describe('should NOT coerce', () => { + test('empty string', () => { + // GIVEN + const obj = { a: { b: { c: '' } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: '' } } }); + }); + test('undefined', () => { + // GIVEN + const obj = { a: { b: { c: undefined } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: undefined } } }); + }); + test('null', () => { + // GIVEN + const obj = { a: { b: { c: null } } }; + // THEN + coerce(obj, ['a', 'b', 'c'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: null } } }); + }); + test('an path that does not exist in input', () => { + // GIVEN + const obj = { a: { b: { c: new Date('2023-01-01').toJSON() } } }; + // THEN + coerce(obj, ['a', 'b', 'foobar'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: new Date('2023-01-01').toJSON() } } }); + }); + test('a path that is not a leaf', () => { + // GIVEN + const obj = { a: { b: { c: new Date('2023-01-01').toJSON() } } }; + // THEN + coerce(obj, ['a', 'b'], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: new Date('2023-01-01').toJSON() } } }); + }); + test('do not change anything for empty path', () => { + // GIVEN + const obj = { a: { b: { c: new Date('2023-01-01').toJSON() } } }; + // THEN + coerce(obj, [], 'Date'); + // EXPECT + expect(obj).toMatchObject({ a: { b: { c: new Date('2023-01-01').toJSON() } } }); + }); + }); + describe('given an api call description', () => { + test('can convert string parameters to Date when needed', () => { + const params = (0, coerce_api_parameters_1.coerceApiParameters)('CloudWatch', 'getMetricData', { + MetricDataQueries: [], + StartTime: new Date('2023-01-01').toJSON(), + EndTime: new Date('2023-01-02').toJSON(), + }); + expect(params).toMatchObject({ + MetricDataQueries: [], + StartTime: new Date('2023-01-01'), + EndTime: new Date('2023-01-02'), + }); + }); + }); +}); +/** + * A function to convert code testing the old API into code testing the new API + * + * Having this function saves manually updating 25 call sites. + */ +function coerce(value, path, type) { + const sm = [{}]; + let current = sm[0]; + for (const p of path.slice(0, -1)) { + current[p] = sm.length; + sm.push({}); + current = sm[sm.length - 1]; + } + switch (type) { + case 'Uint8Array': + current[path[path.length - 1]] = 'b'; + break; + case 'number': + current[path[path.length - 1]] = 'n'; + break; + case 'Date': + current[path[path.length - 1]] = 'd'; + break; + default: + throw new Error(`Unexpected type: ${type}`); + } + return new coerce_api_parameters_1.Coercer(sm).testCoerce(value); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLWFwaS1wYXJhbWV0ZXJzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb2VyY2UtYXBpLXBhcmFtZXRlcnMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdFQUE0RTtBQUc1RSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFdkQsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFFMUIsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtZQUMxQixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRS9DLE9BQU87WUFDUCxJQUFJLCtCQUFPLENBQUM7Z0JBQ1YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNSLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7YUFDWCxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRW5CLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtZQUNyQyxRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRTt3QkFDRCxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7d0JBQ1YsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO3dCQUNWLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtxQkFDWDtpQkFDRjthQUNGLENBQUM7WUFFRixPQUFPO1lBQ1AsSUFBSSwrQkFBTyxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDUixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ1IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNWLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTthQUNYLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbkIsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hCLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0QsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUNsQixFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ2xCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtxQkFDbkI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHO2dCQUNWLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztpQkFDbkI7YUFDRixDQUFDO1lBRUYsT0FBTztZQUNQLElBQUksK0JBQU8sQ0FBQztnQkFDVixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ1IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNSLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTthQUNiLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFbkIsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hCLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQzt3QkFDWCxNQUFNLENBQUMsR0FBRyxDQUFDO3dCQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUM7cUJBQ1o7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDNUMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHO2dCQUNWLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0Q7NEJBQ0UsQ0FBQyxFQUFFO2dDQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQ0FDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7NkJBQ1g7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsQ0FBQyxFQUFFO2dDQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQ0FDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7NkJBQ1g7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRTFELFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUN4QixDQUFDLEVBQUU7b0JBQ0QsQ0FBQyxFQUFFO3dCQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDL0MsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO3FCQUNoRDtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7WUFDeEIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUVwQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFM0MsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNwQixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRW5DLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUUzQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNyQixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRTNDLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUUzQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2hCLFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFFdEMsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBRTNDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRS9DLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVoRCxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUUvQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUV0QyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7WUFDakQsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUUvQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFOUIsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFFN0MsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLEdBQUcsRUFBRTtZQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQixFQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxRQUFRO2dCQUNmLFNBQVMsRUFBRSxZQUFZO2FBQ3hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLEtBQUssRUFBRSxRQUFRO2dCQUNmLFNBQVMsRUFBRSxJQUFJLFVBQVUsQ0FBQztvQkFDeEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztvQkFDbEIsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDaEIsR0FBRyxFQUFFLEVBQUU7aUJBQ1IsQ0FBQzthQUNILENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRTtZQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQixFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUU7Z0JBQzFELE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxJQUFJLEVBQUUsS0FBSzt3QkFDWCxZQUFZLEVBQUUsS0FBSztxQkFDcEI7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLEtBQUs7d0JBQ1gsWUFBWSxFQUFFLEtBQUs7cUJBQ3BCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDM0IsT0FBTyxFQUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2xDLFlBQVksRUFBRSxLQUFLO3FCQUNwQjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNsQyxZQUFZLEVBQUUsS0FBSztxQkFDcEI7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7WUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBQSwyQ0FBbUIsRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFFO2dCQUN4RCxJQUFJLEVBQUU7b0JBQ0osTUFBTSxFQUFFO3dCQUNOLENBQUMsRUFBRSxLQUFLO3FCQUNUO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDM0IsSUFBSSxFQUFFO29CQUNKLE1BQU0sRUFBRTt3QkFDTixDQUFDLEVBQUUsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3FCQUNoQztpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQixFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtnQkFDcEUsS0FBSyxFQUFFO29CQUNMO3dCQUNFLE9BQU8sRUFBRTs0QkFDUCxLQUFLLEVBQUU7Z0NBQ0w7b0NBQ0UsUUFBUSxFQUFFO3dDQUNSLE1BQU0sRUFBRSxNQUFNO3FDQUNmO2lDQUNGOzZCQUNGO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDM0IsS0FBSyxFQUFFO29CQUNMO3dCQUNFLE9BQU8sRUFBRTs0QkFDUCxLQUFLLEVBQUU7Z0NBQ0w7b0NBQ0UsUUFBUSxFQUFFO3dDQUNSLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCO3FDQUMvQjtpQ0FDRjs2QkFDRjt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBRXRCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUUzQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFdkMsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHO2dCQUNWLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0QsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFO3dCQUNWLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTt3QkFDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7cUJBQ1g7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUU1QyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDeEIsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRTt3QkFDRCxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ1IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNSLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtxQkFDVDtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtZQUMxQixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2lCQUNuQjthQUNGLENBQUM7WUFFRixPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFdkMsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hCLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0QsQ0FBQzt3QkFDRCxDQUFDO3dCQUNELENBQUM7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDNUMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHO2dCQUNWLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0Q7NEJBQ0UsQ0FBQyxFQUFFO2dDQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQ0FDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7NkJBQ1g7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsQ0FBQyxFQUFFO2dDQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRTtnQ0FDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7NkJBQ1g7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXRELFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUN4QixDQUFDLEVBQUU7b0JBQ0QsQ0FBQyxFQUFFO3dCQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDM0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3FCQUM1QjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ3hCLFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFFcEMsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDcEIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUVuQyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFdkMsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsRUFBRTtZQUNyQixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRTNDLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV2QyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2hCLFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFFdEMsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXZDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRS9DLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUU1QyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUV2QyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVsQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7WUFDakQsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUV2QyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFMUIsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFFN0MsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtZQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQixFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUU7Z0JBQ3hELFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLFVBQVUsRUFBRSxFQUFFO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sTUFBTSxHQUFHLElBQUEsMkNBQW1CLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRTtnQkFDekQsYUFBYSxFQUFFLENBQUM7d0JBQ2QsYUFBYSxFQUFFLE1BQU07cUJBQ3RCLEVBQUU7d0JBQ0QsYUFBYSxFQUFFLE1BQU07cUJBQ3RCLENBQUM7YUFDSCxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUMzQixhQUFhLEVBQUUsQ0FBQzt3QkFDZCxhQUFhLEVBQUUsSUFBSTtxQkFDcEIsRUFBRTt3QkFDRCxhQUFhLEVBQUUsSUFBSTtxQkFDcEIsQ0FBQzthQUNILENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtZQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFBLDJDQUFtQixFQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUU7Z0JBQzlELGlCQUFpQixFQUFFO29CQUNqQixNQUFNLEVBQUUsS0FBSztpQkFDZDthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzNCLGlCQUFpQixFQUFFO29CQUNqQixNQUFNLEVBQUUsR0FBRztpQkFDWjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7WUFDMUIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRWpFLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtZQUNyQyxRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRTt3QkFDRCxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDdEMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ3RDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO3FCQUN2QztpQkFDRjthQUNGLENBQUM7WUFFRixPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTFDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUN4QixDQUFDLEVBQUU7b0JBQ0QsQ0FBQyxFQUFFO3dCQUNELEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUM3QixFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDN0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7cUJBQzlCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1lBQzFCLFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRztnQkFDVixDQUFDLEVBQUU7b0JBQ0QsQ0FBQyxFQUFFO3dCQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRTt3QkFDL0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUU7cUJBQ2hDO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDeEIsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRTt3QkFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7d0JBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQzt3QkFDdEIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO3FCQUN2QjtpQkFDRjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsQ0FBQyxFQUFFO29CQUNELENBQUMsRUFBRTt3QkFDRDs0QkFDRSxDQUFDLEVBQUU7Z0NBQ0QsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0NBQ3RDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzZCQUN2Qzt5QkFDRjt3QkFDRDs0QkFDRSxDQUFDLEVBQUU7Z0NBQ0QsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0NBQ3RDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzZCQUN2Qzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGLENBQUM7WUFFRixPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFcEQsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hCLENBQUMsRUFBRTtvQkFDRCxDQUFDLEVBQUU7d0JBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDckUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRTtxQkFDdEU7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUN4QixRQUFRO1lBQ1IsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRXBDLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyQyxTQUFTO1lBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFFM0MsT0FBTztZQUNQLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXJDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDaEIsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUV0QyxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFckMsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUVqRSxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFMUMsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsUUFBUTtZQUNSLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBRWpFLE9BQU87WUFDUCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRWhDLFNBQVM7WUFDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELFFBQVE7WUFDUixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUVqRSxPQUFPO1lBQ1AsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFeEIsU0FBUztZQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtRQUM3QyxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sTUFBTSxHQUFHLElBQUEsMkNBQW1CLEVBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRTtnQkFDaEUsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRTtnQkFDMUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRTthQUN6QyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDO2dCQUMzQixpQkFBaUIsRUFBRSxFQUFFO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxTQUFTLE1BQU0sQ0FBQyxLQUFjLEVBQUUsSUFBYyxFQUFFLElBQXNDO0lBQ3BGLE1BQU0sRUFBRSxHQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDakMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDdkIsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUM3QjtJQUNELFFBQVEsSUFBSSxFQUFFO1FBQ1osS0FBSyxZQUFZO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3JDLE1BQU07UUFDUixLQUFLLFFBQVE7WUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDckMsTUFBTTtRQUNSLEtBQUssTUFBTTtZQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUNyQyxNQUFNO1FBQ1I7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQy9DO0lBQ0QsT0FBTyxJQUFJLCtCQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2VyY2VyLCBjb2VyY2VBcGlQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vbGliL2NvZXJjZS1hcGktcGFyYW1ldGVycyc7XG5pbXBvcnQgeyBUeXBlQ29lcmNpb25TdGF0ZU1hY2hpbmUgfSBmcm9tICcuLi9saWIvcGFyYW1ldGVyLXR5cGVzJztcblxuY29uc3QgZW5jb2RlID0gKHY6IGFueSkgPT4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHYpO1xuXG5kZXNjcmliZSgnVWludDhBcnJheScsICgpID0+IHtcblxuICBkZXNjcmliZSgnc2hvdWxkIGNvZXJjZScsICgpID0+IHtcbiAgICB0ZXN0KCdhIG5lc3RlZCB2YWx1ZScsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiAnZHVtbXktdmFsdWUnIH0gfSB9O1xuXG4gICAgICAvLyBXSEVOXG4gICAgICBuZXcgQ29lcmNlcihbXG4gICAgICAgIHsgYTogMSB9LFxuICAgICAgICB7IGI6IDIgfSxcbiAgICAgICAgeyBjOiAnYicgfSxcbiAgICAgIF0pLnRlc3RDb2VyY2Uob2JqKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6IGVuY29kZSgnZHVtbXktdmFsdWUnKSB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd2YWx1ZXMgbmVzdGVkIGluIGFuIGFycmF5JywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFtcbiAgICAgICAgICAgIHsgejogJzEnIH0sXG4gICAgICAgICAgICB7IHo6ICcyJyB9LFxuICAgICAgICAgICAgeyB6OiAnMycgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gV0hFTlxuICAgICAgbmV3IENvZXJjZXIoW1xuICAgICAgICB7IGE6IDEgfSxcbiAgICAgICAgeyBiOiAyIH0sXG4gICAgICAgIHsgJyonOiAzIH0sXG4gICAgICAgIHsgejogJ2InIH0sXG4gICAgICBdKS50ZXN0Q29lcmNlKG9iaik7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBiOiBbXG4gICAgICAgICAgICB7IHo6IGVuY29kZSgnMScpIH0sXG4gICAgICAgICAgICB7IHo6IGVuY29kZSgnMicpIH0sXG4gICAgICAgICAgICB7IHo6IGVuY29kZSgnMycpIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYXJyYXkgZWxlbWVudHMnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogWycxJywgJzInLCAnMyddLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgbmV3IENvZXJjZXIoW1xuICAgICAgICB7IGE6IDEgfSxcbiAgICAgICAgeyBiOiAyIH0sXG4gICAgICAgIHsgJyonOiAnYicgfSxcbiAgICAgIF0pLnRlc3RDb2VyY2Uob2JqKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFtcbiAgICAgICAgICAgIGVuY29kZSgnMScpLFxuICAgICAgICAgICAgZW5jb2RlKCcyJyksXG4gICAgICAgICAgICBlbmNvZGUoJzMnKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd2YWx1ZXMgbmVzdGVkIGluIG11bHRpcGxlIGFycmF5cycsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHo6IFtcbiAgICAgICAgICAgICAgICB7IHk6ICcxJyB9LFxuICAgICAgICAgICAgICAgIHsgeTogJzInIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB6OiBbXG4gICAgICAgICAgICAgICAgeyB5OiAnQScgfSxcbiAgICAgICAgICAgICAgICB7IHk6ICdCJyB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnKicsICd6JywgJyonLCAneSddLCAnVWludDhBcnJheScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAgeyB6OiBbeyB5OiBlbmNvZGUoJzEnKSB9LCB7IHk6IGVuY29kZSgnMicpIH1dIH0sXG4gICAgICAgICAgICB7IHo6IFt7IHk6IGVuY29kZSgnQScpIH0sIHsgeTogZW5jb2RlKCdCJykgfV0gfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogJycgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFsnYScsICdiJywgJ2MnXSwgJ1VpbnQ4QXJyYXknKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6IGVuY29kZSgnJykgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYSBudW1iZXInLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogMCB9IH0gfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnYyddLCAnVWludDhBcnJheScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogZW5jb2RlKCcwJykgfSB9IH0pO1xuICAgIH0pO1xuXG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgTk9UIGNvZXJjZScsICgpID0+IHtcbiAgICB0ZXN0KCd1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogdW5kZWZpbmVkIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdVaW50OEFycmF5Jyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiB1bmRlZmluZWQgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnbnVsbCcsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiBudWxsIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdVaW50OEFycmF5Jyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiBudWxsIH0gfSB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2FuIHBhdGggdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBpbnB1dCcsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiAnZHVtbXktdmFsdWUnIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdmb29iYXInXSwgJ1VpbnQ4QXJyYXknKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6ICdkdW1teS12YWx1ZScgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYSBwYXRoIHRoYXQgaXMgbm90IGEgbGVhZicsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiAnZHVtbXktdmFsdWUnIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYiddLCAnVWludDhBcnJheScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogJ2R1bW15LXZhbHVlJyB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkbyBub3QgY2hhbmdlIGFueXRoaW5nIGZvciBlbXB0eSBwYXRoJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6ICdkdW1teS12YWx1ZScgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFtdLCAnVWludDhBcnJheScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogJ2R1bW15LXZhbHVlJyB9IH0gfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnaXZlbiBhbiBhcGkgY2FsbCBkZXNjcmlwdGlvbicsICgpID0+IHtcblxuICAgIHRlc3QoJ2NhbiBjb252ZXJ0IHN0cmluZyBwYXJhbWV0ZXJzIHRvIFVpbnQ4QXJyYXkgd2hlbiBuZWVkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBjb2VyY2VBcGlQYXJhbWV0ZXJzKCdLTVMnLCAnZW5jcnlwdCcsIHtcbiAgICAgICAgS2V5SWQ6ICdrZXktaWQnLFxuICAgICAgICBQbGFpbnRleHQ6ICdkdW1teS1kYXRhJyxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgS2V5SWQ6ICdrZXktaWQnLFxuICAgICAgICBQbGFpbnRleHQ6IG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAxMDAsIDExNywgMTA5LCAxMDksXG4gICAgICAgICAgMTIxLCA0NSwgMTAwLCA5NyxcbiAgICAgICAgICAxMTYsIDk3LFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY2FuIGNvbnZlcnQgc3RyaW5nIHBhcmFtZXRlcnMgdG8gVWludDhBcnJheSBpbiBhcnJheXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJhbXMgPSBjb2VyY2VBcGlQYXJhbWV0ZXJzKCdLaW5lc2lzJywgJ3B1dFJlY29yZHMnLCB7XG4gICAgICAgIFJlY29yZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEYXRhOiAnYWFhJyxcbiAgICAgICAgICAgIFBhcnRpdGlvbktleTogJ2tleScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBEYXRhOiAnYmJiJyxcbiAgICAgICAgICAgIFBhcnRpdGlvbktleTogJ2tleScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgUmVjb3JkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIERhdGE6IG5ldyBVaW50OEFycmF5KFs5NywgOTcsIDk3XSksXG4gICAgICAgICAgICBQYXJ0aXRpb25LZXk6ICdrZXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgRGF0YTogbmV3IFVpbnQ4QXJyYXkoWzk4LCA5OCwgOThdKSxcbiAgICAgICAgICAgIFBhcnRpdGlvbktleTogJ2tleScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY2FuIGNvbnZlcnQgc3RyaW5nIHBhcmFtZXRlcnMgdG8gVWludDhBcnJheSBpbiBtYXAgJiB1bmlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGNvZXJjZUFwaVBhcmFtZXRlcnMoJ2R5bmFtb2RiJywgJ3B1dEl0ZW0nLCB7XG4gICAgICAgIEl0ZW06IHtcbiAgICAgICAgICBCaW5hcnk6IHtcbiAgICAgICAgICAgIEI6ICdhYmMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHBhcmFtcykudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIEl0ZW06IHtcbiAgICAgICAgICBCaW5hcnk6IHtcbiAgICAgICAgICAgIEI6IG5ldyBVaW50OEFycmF5KFs5NywgOTgsIDk5XSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnY2FuIGNvZXJjZSBwYXJhbWV0ZXJzIGluIHJlY3Vyc2l2ZSB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGNvZXJjZUFwaVBhcmFtZXRlcnMoJ2Nvbm5lY3QnLCAnQ3JlYXRlRXZhbHVhdGlvbkZvcm0nLCB7XG4gICAgICAgIEl0ZW1zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgU2VjdGlvbjoge1xuICAgICAgICAgICAgICBJdGVtczogWyAvLyA8LS0gc2FtZSB0eXBlIGFzICdJdGVtcycgYWJvdmVcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBRdWVzdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICBXZWlnaHQ6ICc5MDAwJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgSXRlbXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBTZWN0aW9uOiB7XG4gICAgICAgICAgICAgIEl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgUXVlc3Rpb246IHtcbiAgICAgICAgICAgICAgICAgICAgV2VpZ2h0OiA5MDAwLCAvLyA8LS0gY29udmVydGVkXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuXG5kZXNjcmliZSgnbnVtYmVyJywgKCkgPT4ge1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY29lcmNlJywgKCkgPT4ge1xuICAgIHRlc3QoJ2EgbmVzdGVkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6ICctMTIzLjQ1JyB9IH0gfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnYyddLCAnbnVtYmVyJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiAtMTIzLjQ1IH0gfSB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ZhbHVlcyBuZXN0ZWQgaW4gYW4gYXJyYXknLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAgeyB6OiAnMScgfSxcbiAgICAgICAgICAgIHsgejogJzInIH0sXG4gICAgICAgICAgICB7IHo6ICczJyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICcqJywgJ3onXSwgJ251bWJlcicpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAgeyB6OiAxIH0sXG4gICAgICAgICAgICB7IHo6IDIgfSxcbiAgICAgICAgICAgIHsgejogMyB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2FycmF5IGVsZW1lbnRzJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFsnMScsICcyJywgJzMnXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFsnYScsICdiJywgJyonXSwgJ251bWJlcicpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAgMSxcbiAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAzLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ZhbHVlcyBuZXN0ZWQgaW4gbXVsdGlwbGUgYXJyYXlzJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgejogW1xuICAgICAgICAgICAgICAgIHsgeTogJzEnIH0sXG4gICAgICAgICAgICAgICAgeyB5OiAnMicgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHo6IFtcbiAgICAgICAgICAgICAgICB7IHk6ICczJyB9LFxuICAgICAgICAgICAgICAgIHsgeTogJzQnIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICcqJywgJ3onLCAnKicsICd5J10sICdudW1iZXInKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFtcbiAgICAgICAgICAgIHsgejogW3sgeTogMSB9LCB7IHk6IDIgfV0gfSxcbiAgICAgICAgICAgIHsgejogW3sgeTogMyB9LCB7IHk6IDQgfV0gfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgTk9UIGNvZXJjZScsICgpID0+IHtcbiAgICB0ZXN0KCdlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogJycgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFsnYScsICdiJywgJ2MnXSwgJ251bWJlcicpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogZW5jb2RlKCcnKSB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdhIG51bWJlcicsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiAwIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdudW1iZXInKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6IDAgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6IHVuZGVmaW5lZCB9IH0gfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnYyddLCAnbnVtYmVyJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiB1bmRlZmluZWQgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnbnVsbCcsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiBudWxsIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdudW1iZXInKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6IG51bGwgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYW4gcGF0aCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIGlucHV0JywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6ICdkdW1teS12YWx1ZScgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFsnYScsICdiJywgJ2Zvb2JhciddLCAnbnVtYmVyJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiAnZHVtbXktdmFsdWUnIH0gfSB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2EgcGF0aCB0aGF0IGlzIG5vdCBhIGxlYWYnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogJzEyMycgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFsnYScsICdiJ10sICdudW1iZXInKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6ICcxMjMnIH0gfSB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2RvIG5vdCBjaGFuZ2UgYW55dGhpbmcgZm9yIGVtcHR5IHBhdGgnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogJzEyMycgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFtdLCAnbnVtYmVyJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiAnMTIzJyB9IH0gfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnaXZlbiBhbiBhcGkgY2FsbCBkZXNjcmlwdGlvbicsICgpID0+IHtcblxuICAgIHRlc3QoJ2NhbiBjb252ZXJ0IHN0cmluZyBwYXJhbWV0ZXJzIHRvIG51bWJlciB3aGVuIG5lZWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGNvZXJjZUFwaVBhcmFtZXRlcnMoJ0FtcGxpZnknLCAnbGlzdEFwcHMnLCB7XG4gICAgICAgIG1heFJlc3VsdHM6ICcxNScsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHBhcmFtcykudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIG1heFJlc3VsdHM6IDE1LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjYW4gY29udmVydCBzdHJpbmcgcGFyYW1ldGVycyB0byBudW1iZXIgaW4gYXJyYXlzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gY29lcmNlQXBpUGFyYW1ldGVycygnRUNTJywgJ2NyZWF0ZVNlcnZpY2UnLCB7XG4gICAgICAgIGxvYWRCYWxhbmNlcnM6IFt7XG4gICAgICAgICAgY29udGFpbmVyUG9ydDogJzgwODAnLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgY29udGFpbmVyUG9ydDogJzkwMDAnLFxuICAgICAgICB9XSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgbG9hZEJhbGFuY2VyczogW3tcbiAgICAgICAgICBjb250YWluZXJQb3J0OiA4MDgwLFxuICAgICAgICB9LCB7XG4gICAgICAgICAgY29udGFpbmVyUG9ydDogOTAwMCxcbiAgICAgICAgfV0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NhbiBjb252ZXJ0IHN0cmluZyBwYXJhbWV0ZXJzIHRvIG51bWJlciBpbiBtYXAgJiB1bmlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGNvZXJjZUFwaVBhcmFtZXRlcnMoJ2FwaWdhdGV3YXl2MicsICdjcmVhdGVBcGknLCB7XG4gICAgICAgIENvcnNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgTWF4QWdlOiAnMzAwJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgQ29yc0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBNYXhBZ2U6IDMwMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZGF0ZScsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Nob3VsZCBjb2VyY2UnLCAoKSA9PiB7XG4gICAgdGVzdCgnYSBuZXN0ZWQgdmFsdWUnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSB9IH0gfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnYyddLCAnRGF0ZScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogbmV3IERhdGUoJzIwMjMtMDEtMDEnKSB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd2YWx1ZXMgbmVzdGVkIGluIGFuIGFycmF5JywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgYToge1xuICAgICAgICAgIGI6IFtcbiAgICAgICAgICAgIHsgejogbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSB9LFxuICAgICAgICAgICAgeyB6OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMicpLnRvSlNPTigpIH0sXG4gICAgICAgICAgICB7IHo6IG5ldyBEYXRlKCcyMDIzLTAxLTAzJykudG9KU09OKCkgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gVEhFTlxuICAgICAgY29lcmNlKG9iaiwgWydhJywgJ2InLCAnKicsICd6J10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBiOiBbXG4gICAgICAgICAgICB7IHo6IG5ldyBEYXRlKCcyMDIzLTAxLTAxJykgfSxcbiAgICAgICAgICAgIHsgejogbmV3IERhdGUoJzIwMjMtMDEtMDInKSB9LFxuICAgICAgICAgICAgeyB6OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMycpIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYXJyYXkgZWxlbWVudHMnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAgbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSxcbiAgICAgICAgICAgIG5ldyBEYXRlKCcyMDIzLTAxLTAyJykudG9KU09OKCksXG4gICAgICAgICAgICBuZXcgRGF0ZSgnMjAyMy0wMS0wMycpLnRvSlNPTigpLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICcqJ10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBiOiBbXG4gICAgICAgICAgICBuZXcgRGF0ZSgnMjAyMy0wMS0wMScpLFxuICAgICAgICAgICAgbmV3IERhdGUoJzIwMjMtMDEtMDInKSxcbiAgICAgICAgICAgIG5ldyBEYXRlKCcyMDIzLTAxLTAzJyksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgndmFsdWVzIG5lc3RlZCBpbiBtdWx0aXBsZSBhcnJheXMnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBhOiB7XG4gICAgICAgICAgYjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB6OiBbXG4gICAgICAgICAgICAgICAgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMScpLnRvSlNPTigpIH0sXG4gICAgICAgICAgICAgICAgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMicpLnRvSlNPTigpIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB6OiBbXG4gICAgICAgICAgICAgICAgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMycpLnRvSlNPTigpIH0sXG4gICAgICAgICAgICAgICAgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wNCcpLnRvSlNPTigpIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICcqJywgJ3onLCAnKicsICd5J10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBiOiBbXG4gICAgICAgICAgICB7IHo6IFt7IHk6IG5ldyBEYXRlKCcyMDIzLTAxLTAxJykgfSwgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wMicpIH1dIH0sXG4gICAgICAgICAgICB7IHo6IFt7IHk6IG5ldyBEYXRlKCcyMDIzLTAxLTAzJykgfSwgeyB5OiBuZXcgRGF0ZSgnMjAyMy0wMS0wNCcpIH1dIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIE5PVCBjb2VyY2UnLCAoKSA9PiB7XG4gICAgdGVzdCgnZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6ICcnIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiAnJyB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCd1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICAvLyBHSVZFTlxuICAgICAgY29uc3Qgb2JqID0geyBhOiB7IGI6IHsgYzogdW5kZWZpbmVkIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiB1bmRlZmluZWQgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnbnVsbCcsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiBudWxsIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdjJ10sICdEYXRlJyk7XG5cbiAgICAgIC8vIEVYUEVDVFxuICAgICAgZXhwZWN0KG9iaikudG9NYXRjaE9iamVjdCh7IGE6IHsgYjogeyBjOiBudWxsIH0gfSB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2FuIHBhdGggdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBpbnB1dCcsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiBuZXcgRGF0ZSgnMjAyMy0wMS0wMScpLnRvSlNPTigpIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYicsICdmb29iYXInXSwgJ0RhdGUnKTtcblxuICAgICAgLy8gRVhQRUNUXG4gICAgICBleHBlY3Qob2JqKS50b01hdGNoT2JqZWN0KHsgYTogeyBiOiB7IGM6IG5ldyBEYXRlKCcyMDIzLTAxLTAxJykudG9KU09OKCkgfSB9IH0pO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnYSBwYXRoIHRoYXQgaXMgbm90IGEgbGVhZicsICgpID0+IHtcbiAgICAgIC8vIEdJVkVOXG4gICAgICBjb25zdCBvYmogPSB7IGE6IHsgYjogeyBjOiBuZXcgRGF0ZSgnMjAyMy0wMS0wMScpLnRvSlNPTigpIH0gfSB9O1xuXG4gICAgICAvLyBUSEVOXG4gICAgICBjb2VyY2Uob2JqLCBbJ2EnLCAnYiddLCAnRGF0ZScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSB9IH0gfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkbyBub3QgY2hhbmdlIGFueXRoaW5nIGZvciBlbXB0eSBwYXRoJywgKCkgPT4ge1xuICAgICAgLy8gR0lWRU5cbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogeyBiOiB7IGM6IG5ldyBEYXRlKCcyMDIzLTAxLTAxJykudG9KU09OKCkgfSB9IH07XG5cbiAgICAgIC8vIFRIRU5cbiAgICAgIGNvZXJjZShvYmosIFtdLCAnRGF0ZScpO1xuXG4gICAgICAvLyBFWFBFQ1RcbiAgICAgIGV4cGVjdChvYmopLnRvTWF0Y2hPYmplY3QoeyBhOiB7IGI6IHsgYzogbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSB9IH0gfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnaXZlbiBhbiBhcGkgY2FsbCBkZXNjcmlwdGlvbicsICgpID0+IHtcbiAgICB0ZXN0KCdjYW4gY29udmVydCBzdHJpbmcgcGFyYW1ldGVycyB0byBEYXRlIHdoZW4gbmVlZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGFyYW1zID0gY29lcmNlQXBpUGFyYW1ldGVycygnQ2xvdWRXYXRjaCcsICdnZXRNZXRyaWNEYXRhJywge1xuICAgICAgICBNZXRyaWNEYXRhUXVlcmllczogW10sXG4gICAgICAgIFN0YXJ0VGltZTogbmV3IERhdGUoJzIwMjMtMDEtMDEnKS50b0pTT04oKSxcbiAgICAgICAgRW5kVGltZTogbmV3IERhdGUoJzIwMjMtMDEtMDInKS50b0pTT04oKSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocGFyYW1zKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgTWV0cmljRGF0YVF1ZXJpZXM6IFtdLFxuICAgICAgICBTdGFydFRpbWU6IG5ldyBEYXRlKCcyMDIzLTAxLTAxJyksXG4gICAgICAgIEVuZFRpbWU6IG5ldyBEYXRlKCcyMDIzLTAxLTAyJyksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRvIGNvbnZlcnQgY29kZSB0ZXN0aW5nIHRoZSBvbGQgQVBJIGludG8gY29kZSB0ZXN0aW5nIHRoZSBuZXcgQVBJXG4gKlxuICogSGF2aW5nIHRoaXMgZnVuY3Rpb24gc2F2ZXMgbWFudWFsbHkgdXBkYXRpbmcgMjUgY2FsbCBzaXRlcy5cbiAqL1xuZnVuY3Rpb24gY29lcmNlKHZhbHVlOiB1bmtub3duLCBwYXRoOiBzdHJpbmdbXSwgdHlwZTogJ1VpbnQ4QXJyYXknIHwgJ251bWJlcicgfCAnRGF0ZScpIHtcbiAgY29uc3Qgc206IFR5cGVDb2VyY2lvblN0YXRlTWFjaGluZSA9IFt7fV07XG4gIGxldCBjdXJyZW50ID0gc21bMF07XG4gIGZvciAoY29uc3QgcCBvZiBwYXRoLnNsaWNlKDAsIC0xKSkge1xuICAgIGN1cnJlbnRbcF0gPSBzbS5sZW5ndGg7XG4gICAgc20ucHVzaCh7fSk7XG4gICAgY3VycmVudCA9IHNtW3NtLmxlbmd0aCAtIDFdO1xuICB9XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ1VpbnQ4QXJyYXknOlxuICAgICAgY3VycmVudFtwYXRoW3BhdGgubGVuZ3RoIC0gMV1dID0gJ2InO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGN1cnJlbnRbcGF0aFtwYXRoLmxlbmd0aCAtIDFdXSA9ICduJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0RhdGUnOlxuICAgICAgY3VycmVudFtwYXRoW3BhdGgubGVuZ3RoIC0gMV1dID0gJ2QnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB0eXBlOiAke3R5cGV9YCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBDb2VyY2VyKHNtKS50ZXN0Q29lcmNlKHZhbHVlKTtcbn0iXX0= \ No newline at end of file diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.d.ts b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.d.ts new file mode 100644 index 0000000000000..cb0ff5c3b541f --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.js b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.js new file mode 100644 index 0000000000000..5cb4186e515f2 --- /dev/null +++ b/packages/@aws-cdk/sdk-v2-to-v3-adapter/test/flatten.test.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const api_call_1 = require("../lib/api-call"); +test('flatten correctly flattens a nested object', () => { + expect((0, api_call_1.flatten)({ + a: { b: 'c' }, + d: [ + { e: 'f' }, + { g: 'h', i: 1, j: null, k: { l: false } }, + ], + })).toEqual({ + 'a.b': 'c', + 'd.0.e': 'f', + 'd.1.g': 'h', + 'd.1.i': 1, + 'd.1.j': null, + 'd.1.k.l': false, + }); +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmxhdHRlbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsOENBQTBDO0FBRTFDLElBQUksQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7SUFDdEQsTUFBTSxDQUFDLElBQUEsa0JBQU8sRUFBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7UUFDYixDQUFDLEVBQUU7WUFDRCxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDVixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtTQUMzQztLQUNGLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNWLEtBQUssRUFBRSxHQUFHO1FBQ1YsT0FBTyxFQUFFLEdBQUc7UUFDWixPQUFPLEVBQUUsR0FBRztRQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICcuLi9saWIvYXBpLWNhbGwnO1xuXG50ZXN0KCdmbGF0dGVuIGNvcnJlY3RseSBmbGF0dGVucyBhIG5lc3RlZCBvYmplY3QnLCAoKSA9PiB7XG4gIGV4cGVjdChmbGF0dGVuKHtcbiAgICBhOiB7IGI6ICdjJyB9LFxuICAgIGQ6IFtcbiAgICAgIHsgZTogJ2YnIH0sXG4gICAgICB7IGc6ICdoJywgaTogMSwgajogbnVsbCwgazogeyBsOiBmYWxzZSB9IH0sXG4gICAgXSxcbiAgfSkpLnRvRXF1YWwoe1xuICAgICdhLmInOiAnYycsXG4gICAgJ2QuMC5lJzogJ2YnLFxuICAgICdkLjEuZyc6ICdoJyxcbiAgICAnZC4xLmknOiAxLFxuICAgICdkLjEuaic6IG51bGwsXG4gICAgJ2QuMS5rLmwnOiBmYWxzZSxcbiAgfSk7XG59KTsiXX0= \ No newline at end of file