photo-sphere-viewer-lensflare-plugin
Version:
Plugin to add lens flares on a 360° pano built with photo-sphere-viewer
389 lines (343 loc) • 198 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@photo-sphere-viewer/core'), require('three')) :
typeof define === 'function' && define.amd ? define(['exports', '@photo-sphere-viewer/core', 'three'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.PhotoSphereViewerLensflarePlugin = {}, global.PhotoSphereViewer, global.THREE));
})(this, (function (exports, core, three) { 'use strict';
/**
* Creates a simulated lens flare that tracks a light.
*
* Note that this class can only be used with {@link WebGLRenderer}.
* When using {@link WebGPURenderer}, use {@link LensflareMesh}.
*
* ```js
* const light = new THREE.PointLight( 0xffffff, 1.5, 2000 );
*
* const lensflare = new Lensflare();
* lensflare.addElement( new LensflareElement( textureFlare0, 512, 0 ) );
* lensflare.addElement( new LensflareElement( textureFlare1, 512, 0 ) );
* lensflare.addElement( new LensflareElement( textureFlare2, 60, 0.6 ) );
*
* light.add( lensflare );
* ```
*
* @augments Mesh
* @three_import import { Lensflare } from 'three/addons/objects/Lensflare.js';
*/
class Lensflare extends three.Mesh {
/**
* Constructs a new lensflare.
*/
constructor() {
super(Lensflare.Geometry, new three.MeshBasicMaterial({ opacity: 0, transparent: true }));
/**
* This flag can be used for type testing.
*
* @type {boolean}
* @readonly
* @default true
*/
this.isLensflare = true;
this.type = 'Lensflare';
/**
* Overwritten to disable view-frustum culling by default.
*
* @type {boolean}
* @default false
*/
this.frustumCulled = false;
/**
* Overwritten to make sure lensflares a rendered last.
*
* @type {number}
* @default Infinity
*/
this.renderOrder = Infinity;
//
const positionScreen = new three.Vector3();
const positionView = new three.Vector3();
// textures
const tempMap = new three.FramebufferTexture(16, 16);
const occlusionMap = new three.FramebufferTexture(16, 16);
let currentType = three.UnsignedByteType;
// material
const geometry = Lensflare.Geometry;
const material1a = new three.RawShaderMaterial({
uniforms: {
'scale': { value: null },
'screenPosition': { value: null }
},
vertexShader: /* glsl */ `
precision highp float;
uniform vec3 screenPosition;
uniform vec2 scale;
attribute vec3 position;
void main() {
gl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );
}`,
fragmentShader: /* glsl */ `
precision highp float;
void main() {
gl_FragColor = vec4( 1.0, 0.0, 1.0, 1.0 );
}`,
depthTest: true,
depthWrite: false,
transparent: false
});
const material1b = new three.RawShaderMaterial({
uniforms: {
'map': { value: tempMap },
'scale': { value: null },
'screenPosition': { value: null }
},
vertexShader: /* glsl */ `
precision highp float;
uniform vec3 screenPosition;
uniform vec2 scale;
attribute vec3 position;
attribute vec2 uv;
varying vec2 vUV;
void main() {
vUV = uv;
gl_Position = vec4( position.xy * scale + screenPosition.xy, screenPosition.z, 1.0 );
}`,
fragmentShader: /* glsl */ `
precision highp float;
uniform sampler2D map;
varying vec2 vUV;
void main() {
gl_FragColor = texture2D( map, vUV );
}`,
depthTest: false,
depthWrite: false,
transparent: false
});
// the following object is used for occlusionMap generation
const mesh1 = new three.Mesh(geometry, material1a);
//
const elements = [];
const shader = LensflareElement.Shader;
const material2 = new three.RawShaderMaterial({
name: shader.name,
uniforms: {
'map': { value: null },
'occlusionMap': { value: occlusionMap },
'color': { value: new three.Color(0xffffff) },
'scale': { value: new three.Vector2() },
'screenPosition': { value: new three.Vector3() }
},
vertexShader: shader.vertexShader,
fragmentShader: shader.fragmentShader,
blending: three.AdditiveBlending,
transparent: true,
depthWrite: false
});
const mesh2 = new three.Mesh(geometry, material2);
/**
* Adds the given lensflare element to this instance.
*
* @param {LensflareElement} element - The element to add.
*/
this.addElement = function (element) {
elements.push(element);
};
//
const scale = new three.Vector2();
const screenPositionPixels = new three.Vector2();
const validArea = new three.Box2();
const viewport = new three.Vector4();
this.onBeforeRender = function (renderer, scene, camera) {
renderer.getCurrentViewport(viewport);
const renderTarget = renderer.getRenderTarget();
const type = (renderTarget !== null) ? renderTarget.texture.type : three.UnsignedByteType;
if (currentType !== type) {
tempMap.dispose();
occlusionMap.dispose();
tempMap.type = occlusionMap.type = type;
currentType = type;
}
const invAspect = viewport.w / viewport.z;
const halfViewportWidth = viewport.z / 2.0;
const halfViewportHeight = viewport.w / 2.0;
let size = 16 / viewport.w;
scale.set(size * invAspect, size);
validArea.min.set(viewport.x, viewport.y);
validArea.max.set(viewport.x + (viewport.z - 16), viewport.y + (viewport.w - 16));
// calculate position in screen space
positionView.setFromMatrixPosition(this.matrixWorld);
positionView.applyMatrix4(camera.matrixWorldInverse);
if (positionView.z > 0)
return; // lensflare is behind the camera
positionScreen.copy(positionView).applyMatrix4(camera.projectionMatrix);
// horizontal and vertical coordinate of the lower left corner of the pixels to copy
screenPositionPixels.x = viewport.x + (positionScreen.x * halfViewportWidth) + halfViewportWidth - 8;
screenPositionPixels.y = viewport.y + (positionScreen.y * halfViewportHeight) + halfViewportHeight - 8;
// screen cull
if (validArea.containsPoint(screenPositionPixels)) {
// save current RGB to temp texture
renderer.copyFramebufferToTexture(tempMap, screenPositionPixels);
// render pink quad
let uniforms = material1a.uniforms;
uniforms['scale'].value = scale;
uniforms['screenPosition'].value = positionScreen;
renderer.renderBufferDirect(camera, null, geometry, material1a, mesh1, null);
// copy result to occlusionMap
renderer.copyFramebufferToTexture(occlusionMap, screenPositionPixels);
// restore graphics
uniforms = material1b.uniforms;
uniforms['scale'].value = scale;
uniforms['screenPosition'].value = positionScreen;
renderer.renderBufferDirect(camera, null, geometry, material1b, mesh1, null);
// render elements
const vecX = -positionScreen.x * 2;
const vecY = -positionScreen.y * 2;
for (let i = 0, l = elements.length; i < l; i++) {
const element = elements[i];
const uniforms = material2.uniforms;
uniforms['color'].value.copy(element.color);
uniforms['map'].value = element.texture;
uniforms['screenPosition'].value.x = positionScreen.x + vecX * element.distance;
uniforms['screenPosition'].value.y = positionScreen.y + vecY * element.distance;
size = element.size / viewport.w;
const invAspect = viewport.w / viewport.z;
uniforms['scale'].value.set(size * invAspect, size);
material2.uniformsNeedUpdate = true;
renderer.renderBufferDirect(camera, null, geometry, material2, mesh2, null);
}
}
};
/**
* Frees the GPU-related resources allocated by this instance. Call this
* method whenever this instance is no longer used in your app.
*/
this.dispose = function () {
material1a.dispose();
material1b.dispose();
material2.dispose();
tempMap.dispose();
occlusionMap.dispose();
for (let i = 0, l = elements.length; i < l; i++) {
elements[i].texture.dispose();
}
};
}
}
/**
* Represents a single flare that can be added to a {@link Lensflare} container.
*
* @three_import import { LensflareElement } from 'three/addons/objects/Lensflare.js';
*/
class LensflareElement {
/**
* Constructs a new lensflare element.
*
* @param {Texture} texture - The flare's texture.
* @param {number} [size=1] - The size in pixels.
* @param {number} [distance=0] - The normalized distance (`[0,1]`) from the light source.
* A value of `0` means the flare is located at light source.
* @param {Color} [color] - The flare's color
*/
constructor(texture, size = 1, distance = 0, color = new three.Color(0xffffff)) {
/**
* The flare's texture.
*
* @type {Texture}
*/
this.texture = texture;
/**
* The size in pixels.
*
* @type {number}
* @default 1
*/
this.size = size;
/**
* The normalized distance (`[0,1]`) from the light source.
* A value of `0` means the flare is located at light source.
*
* @type {number}
* @default 0
*/
this.distance = distance;
/**
* The flare's color
*
* @type {Color}
* @default (1,1,1)
*/
this.color = color;
}
}
LensflareElement.Shader = {
name: 'LensflareElementShader',
uniforms: {
'map': { value: null },
'occlusionMap': { value: null },
'color': { value: null },
'scale': { value: null },
'screenPosition': { value: null }
},
vertexShader: /* glsl */ `
precision highp float;
uniform vec3 screenPosition;
uniform vec2 scale;
uniform sampler2D occlusionMap;
attribute vec3 position;
attribute vec2 uv;
varying vec2 vUV;
varying float vVisibility;
void main() {
vUV = uv;
vec2 pos = position.xy;
vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );
visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );
visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );
visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );
visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );
visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );
visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );
visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );
visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );
vVisibility = visibility.r / 9.0;
vVisibility *= 1.0 - visibility.g / 9.0;
vVisibility *= visibility.b / 9.0;
gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );
}`,
fragmentShader: /* glsl */ `
precision highp float;
uniform sampler2D map;
uniform vec3 color;
varying vec2 vUV;
varying float vVisibility;
void main() {
vec4 texture = texture2D( map, vUV );
texture.a *= vVisibility;
gl_FragColor = texture;
gl_FragColor.rgb *= color;
}`
};
Lensflare.Geometry = (function () {
const geometry = new three.BufferGeometry();
const float32Array = new Float32Array([
-1, -1, 0, 0, 0,
1, -1, 0, 1, 0,
1, 1, 0, 1, 1,
-1, 1, 0, 0, 1
]);
const interleavedBuffer = new three.InterleavedBuffer(float32Array, 5);
geometry.setIndex([0, 1, 2, 0, 2, 3]);
geometry.setAttribute('position', new three.InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));
geometry.setAttribute('uv', new three.InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));
return geometry;
})();
/**
* Property name added to lensflare elements
* @internal
*/
const LENSFLARE_DATA = 'psvLensflare';
/**
* Property name added to lensflare elements (dash-case)
* @internal
*/
core.utils.dasherize(LENSFLARE_DATA);
var HEXANGLE = "data:image/png;base64,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";
var LIGHT = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAAAAAAAAPlDu38AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfbDB0UJTFxrP9+AAAgAElEQVR42uy9zZrjNpYtugCQkiIiO/PLa9+ubn9n4EF/PbBfogbnFep5bvXznFc4g/sS9qgHNfJtd5WPP9v5ExJJ4A4AkJsgQAIkKCkigfpYjlRIDIqiuNZee+29gbLKKqusssoqq6yyyiqrrLLKKqusssoqq6yyyiqrrLLKKqusssoqq6yyyiqrrLLKKutFLlZOQVllvdylbvwdZoAqn0JZZRUCUFZZZd0zqMdC9Y53hUIYyiqrEICyyiognxPE/+PK3+X/J3AkG4+iEISyyioEoKyyvjygVzuB+g8r9/N9JjB2ycKKoynEoKyyCgEoq6yXDfRqA8D/8EK+r6nEgRKEhHdYSEFZZRUCUFZZ9wf4a4A+BeD/Tp77Z8/vf8r83f4mEmy/M8/7XxkIQiIxKISgrLIKASirrPsF+yWQDwF7CqB/890+3+uffowH2CXC8B2UlyQskYNCCsoqqxCAssq6CeDHgv0c0FuQT4ncU0D9l8s+3+uvDvFgukQWQgRhDTFIIAWFEJRVViEAZZWVFt2vAXsX6NeCeyqg/9GOn//typPzN+ff/1SlgecSYQiRhFhyEEMKCiEoq6xCAMoqKwr4lwB/C9iHgH4J4C2grwHy39pt3/F3VTpA/i2SMIQIgo8YbCUFEYSgkIGyCgEoq6wC+POAvwT2qUAfC/Bbwfxaa4k0LBGELcSgEIKyyioEoKyyVoF+CPD/TIGIPMcH9nNA/21GcP8oh9d87uZf/6fEff+88PsHsQyOT1wlk4S/JRIDlxSsIQSFDJRVCEBZZb1S0N8C+EvRvQ/s1wA9BfM5UP/TnX8AP68kCy5hcAlCiBi4pCCVEPhIwQIhKGSgrEIAyirrtYD+FsAPgf1cRB+K3HOB+ye5z/f6kecBvp9XKgkxpGArIShkoKxCAMoq6xWB/lyUPwf4sdF9DNhvBfq9QH2vtYYspBADHymIUQmWCMEPzr8pIShkoKxCAMoq604APwX0Q1H+mgifAr4r3a8F+msB/LPa9ndOLA/IpRCEGGLg8xv8WqkkhSBFHShkoKxCAMoq644j/TVRvgv4vujeJ+HHgH1ukF8C86+v9CH9IzNpiCEHP0coBS4pWCIEc+rASjJQiEBZhQCUVVYu4F8D+rkA/xZg7wP5VcD+VeZP6Jc8RCGWHOQgBVsIQQoZKKpAWYUAlFXWlUEfBPjnQP8rB+RDoB8L+FvBfhXIf/XCPt1f8pODJVIwRwhcMvCuUvhlIxnwGQiLKlBWIQBllZUI+lgA/u/NzzGR/lyUnyrnp4I9BfevXwOQ3wFp+McMSZgjBSmE4FdDBqxCEEMGqIGwpAjKKgSgrLIyRvsp8v6StE9l/QL4L5sUbCEEsWSApgq2koFCBMoqBKCsAvyR0b4L/FtAP3eUbwH/lmC/1AXwViu2AdCepIASgjXqwBoyEJMiKKpAWYUAlPVFA38M6MMD/LlBfw3ge0F/J8C/V4C/W4LwS5xCECIEW8lAUQXKKgSgrAL6K2T+78GiJH5q5PPl9OdAPwbwg5F9BpB/rYD+IgjDL2GlwEcIUsgAoD0DSymCOVWgEIGyCgEo61WBv0/mj83t3wL0J8C/EfQL4N8/GXBVgrVk4F2lRtMOM6oChQiUVQhAWS8n4k8Ffl+0TyX+VHn/VqBfAP8FkoIdyMCSKrBEBAI+gUIEyioEoKz7Bv41Mn9MtA8A/2j4JtC3wJ9T3r8X0D/feGbAkd8HOOUmA9Y7sIYMWFXALSncmB4oRKCsQgDKehnAvyXaXyrZmwP9XBH+tQB+DsDfv5IL59cbk4dV5MAhBSFC8HMmVaAQgbIKASjr1QJ/yMnvAn9I4l+K9L0mvjsDfR/Yv/+CL6xbEYNkQuAhAz4iMKcK/EqqB3xegUIEyioEoKwXBfwx+f1YU9+aaN8L/HcC+gXs8xKDvUjBWjJgUwX/l5CTp6xRBeZ8AoUIlFUIQFl3Cfxui14X+H3R/pKLf0niXxvl5wR7F+DvAdyv5Qe4h7z/rzseUxIpMITgkSn8N8YpAp8qkJMIOHf0QgTKKgSgrPuI+JeAPyXa3xLl7wX61wL8W5v8XgpZ+PWOyMAHj1/g50giAGjTYFEEyioEoKybgH9u4Lfg7wP+GIl/TcSfC/ivBfovHejviRjsQQaiiQDxC3wIeAWWfAIlNVBWIQBl3VXUf03gv3XEvyfof2lAf2tSkJsMrFEEfMbBKxGBQgLKKgSgrPXAv5Tj9xn7Ut38awF/K9jvAfQF4F8GSchJDFLUAdcrMOcT8PUTWFk1UIhAWYUAlJUv4p8D/tT8fqrEvwX4c4P+PQL+Xsd0L01/ch9TLjIQRQRW+AQKESirEICysoL/krM/B/DnNvXlAP6toH8rwF/7d99t/Lu/vTCysPXv/nplIhCqHshJBIo/oKxCAArwbwL+kKt/TX7/WhF/rmj/WqC/9HfevYCLLYYwXIscbPk71yYCKYpATNVA8QeUVQhAWVHgvzfwj0D/CoD/fsNrrwns78r1OUsa9iIKa/e7lRTEEILH/6Of4/oEChEoqxCAsrICP83zv1Tg3xrl7wH87j4L0OchBnsQgjX7fClEYCkt4CBCIQKFAJT1moAfAP66Ic9Py/n+0fAkqf8NGcqzBP5bgH+ttJ8T+O8R8HO+v3sw//2283FtIQJrXh+bHkjxCLjlgyF/QFEDCgEo65UD/xq53wX+UOe+UClfbG7/moCfCwivBfKvvYxwLzKxl1qQsp89CYFVBADgA1eLnQVLWqCsQgC+QPCfk/v/fSHPvwb4J+C/U7R/C+Cn+9gD8EvPgP1IwW+Z95+6j19X/t1YImBVgbX+gIi0QCEBhQCU9VLBf07uz5Xn3xP41+b2t4LqXqB/dbB/m3l/v79cUpCTDNyFImBSA6lEoKgBhQCUU1Cifo3XG/P8e4P/NSP+3PL+bmD/9oVcnTuQhRyEIGea4BqKwKJPINBZMEQEUtIChQQUAlDWC436/wLgRxP1x8j9t474U/P7ucB+C9BnAfkVgH6587TBYQ2oZiAMW8A8l0IQ+9o1VQRbUgOp1QJFDSgEoKwXGvWHTH6xcv9ir/4bAv8W4M0B/JtAPwHsY0D+3sSAGAxPIgcbSMFaEM9BBNakCHIRgUehgL9rEgAAf3CVJS1QvAGFAJR151H/XE2/z92fDPwL4H+PEf/NQD8D2L99ZRfw71tJwUpCsJUMXEsRuJYa4BKBogYUAlDWCwH/2Kg/JPcDaXn+2Fr+VPDfO+K3r7k30PeB/dsv+MLeRApWEII1YL5VFbhZWmDBH7BFDSgkoBCAsl5Q1B9b1rdHxL93tL/FwJcM9G/TAP5tuYZ3IQqLBCGRHKSA7r0SghAZsGkBqwjMpQWoGvDDj8D3kDFqQCEBhQCUtSf4/3VD1J9i8usj/ozAHwv+14z0k/7W2/sE/HszAx6u2C0wiRAkkIFUQN+SJoh5TU5VgPoDYkyCRQ0oBKCsO4r6feCfM9f/UqL+LXn9HMB/TdC/vJJGQXuSg2gycIdE4NpqADD2B8SqAdQbUAyChQCUdWXwj3X4rwb+K4P+Wpl/F3n/ykB/Kd3/rkIWchODNWmCPQhBDsPgo33s71MiEFIDfvgReA816iJYUgKFAJS1A/inSP5rov7Ysr4U8H8NwE/BuQD+6yEEUWTgBRGB3P6A/9ZcAO9rOasG/Nd/qp4EhNSAkhIoBKCsjFF/yOi3OeqfAf9bR/1rZP6o/UdE+1uB/6UAvnucB/4ybtZbj/P3KxOBtabBPTwCQTXAmAQ/RHoD5gyCJSVQCEBZGcH/3zNF/SPwv/OoP3vEv3O0fwvQ/5JNgPdEBlIVgVunBWLUAJ834F2l8DfAqwaUlEAhAGVtAP+/rjT6xcr9147410T72SL9ncB+L8Cd2++bV3Kxf7gBaVi7762kIFUZyKkKbFUEYr0BKQbBkhIoBKCsAPjHRP0W/NdK/kulfbeK+FNl/lsA/x6g79vnmy/0i/DhSqRgzT5/X3ptBiKwJj1wDUUgpAasMQgWElAIQFmeqH+r5P+WAPeecv/dR/0zwH8PoO/u7035HtyUEKTub1YRuJEakNsfsOQN+G8AbYJBsKQECgEoKxH8Y2v73Va+exr99or67zHizwX8BfD3JQW5CEFWIpCBDOylBnza6g0I9A3YmBIoJKAQgC8T/GPz/VTyT2nluzXqzx3x7wn6ayP9HGBP97EnyDfqZX9na7bfjf5DZmKwlhTsoQzkVgViFYGlvgE/YCgXjKkSKCSgEIAC/thX8o/p4X9tuT8lx78W+FPBfwvw7xnZv3SQvwdykFMpSHnt2hTBrUjAJoNgYKaAqwYUX0AhAGVlAv8YyT+H0S9G7r961J8h4s8F+rkA/0sF+1sSgmuTgXsmArm8ATEpgTlfQOkXUAjAqwf+EPgvSf426s9R23+v4L8G+FPA/56Av4D+7QjBtYnAXorArdSAHFUCri+gmAMLASjgvwD+S5L/NeT+FNC/dbS/FvDt67YA/a0AvnHe89OV/u5HF6hv0ARoCznIQQpSCcGtyEDO3gGUDLg9A9wqgeILKATgiwZ/n9nvPTiA20v+ucA/W57fA/73DvzXAH0K8E8v7Mvw8coEYS0h+LCBCKSmB/YgATmIwGaD4N/TfQGFBBQC8OrBP9TPf0tXPwD4eqPLP6fcnwv4U2X+NcC/VdrfC/SvAvQpO/74sonBGjKwhQjEvi6YHthIBHKlBT5lSAnQoUJrfAGFBBQC8GLBP2aELwX/2Hx/Lsl/K/Dnzu/vLfNvifJzgr0F+GRwf3ol35CP656ekyBckxTckgzEPG8Pf0AoJbCBBBQiUAjAy4n6d8/3r4z6r53rD+7ritH+WuDPBfrJgH8loG8iz+PVcvof4592KzKwxS+QQgRi0wPXUgRiSEBwlgCA//77NCUQMgcWElAIwKuN/OfAfynffw2Hf0qu/12GqN8C9GsC/iTAzwT2zZ1NA8wC0FcmBKmqwN6KQE4SEPO8HCQgSAQCvoDYCoFSJlgIwKsC/1Sz31bZP0fkH2vyi4n6KUAvgf9a4E8F/y3Afw3QvzeQvzo5+Bj/lC2E4F4UgZxqQE4SELOfFBJARwv7KgRKmWAhAHcP/DHgv2mE74ao/1EupwS2RvyxwL8H6K8B/K1g/5QR4F8LsN+UKHzcVyWIJQVrCcEqMrCzIpDbJEhTAj/8PWwOLBUChQC8usg/BvzvOerfGvGn5PlTwf8aUX5O0H+NgF8rhobtezPORQguV1QHdicBOysCudUA1xxo1YBCAgoB+CLAP+T0vzb4x0b+OfL8e0b9e0f8OYD/1oD/BOCSuWTxwNS4hO8KBGAVGfi4jyqQqgjcSg2IIQJb0gI5SEBshUAhAYUA3D34z9X4xzr9gfnmPltr+3OAf3A/K/L8a3L8ewP/Ye6Y7gT09wD23OtapCAKyD/elgjcSg24ljdg7vdL/QIKCSgE4EUBvw/8fTX+vjG+a8v87jrq3zHiT4n21wD+bJT/dF2gr7/gOQF7kIVFYM9ICvZSBa7lD7ilGkDLBAsJKATgRUb+/z4D/kuR/2iE7w2i/ty5/hzgv7fMfw/AX5fBQFchBC+dCFyTBMSAeM6eAT4SYNWAQgIKAXgR4P9njGX/1Br/Lf38bwb+K+r5c0f9WSP+AvpfBCFYQwb2IgJ7qAHXSgvM/f7TyqZBSw2DCgkoBOBmwO8D/xjZP6qt70rgB9ZL/vcm9+8F+msAfwvYXwPg2xdWSVDt3E1wKzkIgvsVlYFbKAJ7EoGYlEBICXjkCj+b3xcSUAjAXYL/kuy/paf/3vn+paj/mhH/Xjn+awL/Xoa89pX3CNiDGLgVCtnUgQzKQKwqsJsikJgWKCSgEIBCALAu579F9r+l5B8b+edw9sc4+u854s8d7bdfeFOg3IRgrTJwayKQWw24JQkA0lICc2WChQQUAnBz8NeRN48Gf1+Z3xa3/5bOfqtk/x0k/73kfm/53lNe0M8J/K8B8PfsAZCLEFyDCOylBsSA/LVSAluUgLW9An7AuGtgDAkoA4QKAdgF/P8C4H/PgH90g58VUb8mHleM+hMi/tiofwn4YwB/se9+RsDPAfR7gPxjBrK0CxkIgNqnOyUHqcRgL0JwLUVgQgTuOCUQmia4VB1QpggWArBb5O92+LsG+FuA3sPsl8volyPiXwKwa5btbQH+nID/eIcgn5Mg5CIGW8jAGs9AimkwNxHITgJ2UANyNQ3KSAIKASgEIB78AeCvCeAPLMv+bxTLXua3p+Sfq4vfUp5/NfDvULa3Fvhzgf7jKwL7NaTg1oQgmyLgIQKXO1QD7jUlECIBH35R+D2yT0AhAYUA7Ab+wLi9b1TO/wbgD+wn++dy+IeALgX4t9bo3wr4XwPgNyeG+jlj056MhOCmRGCDGvASSECOdEBydQCAP37xNwvyDRAqJKAQgF3Bf0ud/y2i/iXJ/x6i/omR7ykv2K8B/C1A/7g3wD9EAFrmv00BqlHMD1if9yEK9m+tJQdrSMEehCBXamCXtMAVUwKxFQKUBDz+oksEvzbmwEICCgHIAv42758y1W+uve+1nf7Jkn9ibf+e7v5JxP+0HfQbxbyGuT3Bf9eo/mF/cN+DJPRE4Vnt8jfWkIGbEIGVJCCXInDLlECOCgGXBPweGCX804/6sf8Jif+FUh5YCEAEAQjV+n/znX7slwtLmuoXyvnv5fa/teS/paZ/LupPAf9bludljfRfENBvJQY+teCaZOAeiMDliibBW6YEclYH0HRAiAR8A4XvoAoJKAQgD/gDg+N/carfnYD/NWT/PST/GOC/dSOebKD/8DLB/hF5jHsTYPucZ397k4EUInBNNWArCRg9J6FU8OokYGaKICUBpUdAIQDR4O/r72/B/6eL7gGQW/bfkvM/paQLEiT/vUv7RsAfEfFvkfNzuPQ3g/1DXoB/zPhlcM95bG66kWzxuZ8ykIUR6H3eto+UY9hSXjhHDq5BBmLSAnuqAXubA0OegHeVwt/gbxRUVIBCAEbgD0xNf+9XNvq5NvhvkfxzRP2Hhd/nAv8U4N+r6c5W0N8C+LHvvbmDroJzoOWShS3KQQ98n9e/9tZE4FqKwGVnNSB3SmBtOoB6Aua6BRYS8GUTgN1q/XPn/G8l+V+jqU9PACLk/jmZf69WupuMfBsi/Riwb+6ofXArWRI4zgHaGkKwRRnYWk2QQgyiScBKIrBVCZj7/UsiAdQTUHoEFAIwC/4pjv81kf9e3f2iyvzeki9qJqNf1oY+C1F/CPRvbs7LAPSPLwTc9yAA1yIIa4lBzdSuzYiS0gIOGcihCFxuaBDco0IgRgko5YGFAEwIQCjvvxr8EwnAruAfCO+35vu3DO4JlfjlBv9Ncn0i8OcA/eaFDwOqJUPD97tphgBvFRn4nPb8vZoQbSEBMSC+txqwhgRsNQeGfuebG/DhF/2zjwRYU6C+7w8k4K8D8H9JJOCLIgBR4A+My/2W+vuvGel7Ndn/SpJ/DBD6cv6x+f4l4K+v4ZhfEe3fGvSvMWnwAdiVAOQkA1t8A1sUg1QlwPteMyoBt0oJ7JUOCKkAANB5GgUtVAZ8SQSAf3HgD0wH/PxEfkcd/3b9KbDT5xcA/qcN4H+RrI/814J/I1k0+NeJLv9asX3B/2HYGsX6bQn0Hx3wbyQbbTkBfm671oo5jhzHEzqHvnMeulYbxYbPNcNqzDU4d+22CSpXkCQ+jX88RFxLoWvVfp8vKz+Tt4sP+Ne7hPscXe8XXmfvtZ/Mf/8ZwKevBs8WALxvtZ/rlwvDrybg+97BBOXBiqIAvDLw/6sz2vfHgOlvrtzvbmX/hMh/z7r+ScTv3MAmJWeefYUAIxbwvTfHx7wX1uNOkf1asHy4wZfLbQMcCq4rxdAuRL25vARudLwUoecoMfSeG8/7XaMGTN5TRpPgFjVgqzlwL0+ATwn4XShcDloNKJUBXygBWDL9xZT73TX4R5r99gb/1Ja+LqivAf9rAP5ewJ8K+A939OWy18JSKVoTQQByE4JUIhC1Ps3/jb1IQA6D4NZ5Amt9AdckAUvpgGIK/LIIwH6mvyvJ/jnBf+sQn1Vje1e4/dsIhSC4zwTQ38IPtoB+CuBvBftrdRSMIQC+56QE3FsIQa7+A3OEoE4w/WVRAlaoAVtIwJYKgZwkYK0nINYUWAjAKwN/YCz9z5n+gLy1/vcC/teI/EPNfbaAf+h5jWRDa7nHOJC/peM+FvRTAf/eWwbXTEWrBCmEYC0Z2EUVIDvbSgJWqQGZqwSykICEdMDzio6BMSRgRAAqhZ9/9k8PpKbAL0wFeLUEYDbv/7+dTn8xbX7X1Prnlv33cvpnjfojR/fGyP5B4CfI3kqGt1zdHNzpzXwJ7GNA/qXMAqiPDM0534jfLeSg4te/UVsw/hRBBlxgr1akD1LIwEfzdbysUATWEoEtFQJr0gFLo4S/Mnl/SwLw87Q88Av2A7z+KgD7sdm8/49Oj/8/UsA/cd0r+P/TKwF/C6a3rqWvuFp035OCguC5jq00iF6nK2wRqzsuv5+Y9790Dm9RAWGrEuqIVFSs14U+f2u1wMeV72upSiD0u5gKAd+97B3SqwOW7qWAUxlg7vVvO53mtetf/m1cGWCx4guoDHiVbypr3n/O9DenAISi/3uR/Q8y7qa8N/j7boSx4F8n3ujbKxOFhw3nNxrgI1eXWVEQTKFTDKelSPV5u0qwpA58vhNVoOZOT4BASiBVCVhSA7YaBLdUCNyDMXCNKfCNUPit+AFeHQFYlfefM/2tyfmvifxPKQx3Y5nfXGOfvaL+zZH/DPBbCf5ey+dWAf1pHZCfrvyFc9Mfz4FjeibEIUQUchKDJVKQiwyGwHtEBjxEINRAaGtaoDbpsP7vZagUWEsErp0OWCICrifg93+ETYFfSCqg+mLAny6a97dSUMjx/+YK4H+WzHvj3gv836w8wQfJcLgx+D8CaBKj+1vVx28F/DmwP93pl3DpuHzvSTA1feFz2jl2gethhgy0mZsx+YC7kQywjz0CzafxJMRGMcADtkuzFWrFZknAZDwzyQM8AbiseI/2fjH32otkExJgx5H0v3s7JQFnySag/Q7Ab57H514D6JRryNT5uWOjdsGATgX8DuB9O5gK7X+/B/ADdJdAnQpQBv3ZayIBr4oAUCaA/3Aec+v9v4I/70/B/2vEg//atUfOP+bLnApUzQbwj4rmIiP/JuJm/pAjAr8SWnaK9VGxDxxPd/w9iwXSVjKcQg5wz/ueEIIMZOBzZkL4OQK4HykgPcarHHuSgINks0pAqFwzBPJLa4L5b/1KgLuWSMDc/TRoGDQk4J8B/HfL8Pgnhbc/M3M4+jX/8m8M//WffhLwClMAr8YEmJT3/xbDeN/PmUx/a6L/cwpovp39Z3T0711Py+C/RfZfMjKtkf19AFQppk2BexjqcobIjoGuU6wHwRUeuyhA2WPLQRJ879Wej54YJJ4Q3+c+ZyB0r5eYLaabcCPZbBnqljHXS9+rJXPg3Hd2roXwWmPgZWZQWW7z31zLYJ8p8BsAhwvvDeHffze85u/EFPgKDYGv4o0s5v2BccnftfL+13T7by3ze2NuEB9IznCunW8M8Mfc2Lzgf3KeI+fTBw8ro/wUY5yI7GLXHdnkuTkj+/aOpgdWiuEZQDVzbtwWwGtNec9Ln8fz7c5DzdRIEXDfo2sOrJ/TmwDNnbeGqVlVYK5U8LKhhfA9eAJy+QHe/GNsCvxCSgNfVxkgLfmjeX+33n8p75/L9JfKUOci/z3BnwL/4YEtRhC5wP8xInKpI2rq58CfRpPulhKxd0cWtZ08f3Mu2p0D9FsO+EkRNLaqEWuEk6BKkHnFXCdWEQh9phMl4JQ+CKtd8X2LUQOWhgqtVQPmRMz+dW+33zNDj7/H8vCgEaH5WgeF3wL4o2UxpYFFAbin6H9J+nf7/Odq9vOYeGEmTfXbWOq3xu1vCcCogDgD+MdE/17D30z07wP/lKj+tCUUz7RovvceAX5JAQAw2+O/usIMAF+FQacYxEzp4daySJ8itKQE0LHJNVPeUgUbcX9aeW6SygU3lgouVQfkLBFcGiW8plFQqEnQ5SBHVQEARkrAK1IBXrQJMDji1y35AzAZ8vM2BP6Rkb8F7MdXBP6TKOEjFnv55wJ/VxJYA/798xQbydKnteFqBlCPff6eAL3b+3TOc87zl0IGbJkhBXVqJIwF+9MMw3gOEAixYDh0L+9P5DtYe8Cjv6YD59V3bdHH5lIBSxUCH93fO8flkoA3hgSEzIGhx98C+D3RUPjOkICQyS/1ccBjCoTCN9Dm8D+gycE336EnARRrXklVwItWALxT/qz0T6P/6GY/O+f9o2v9ryT7Txi73efT9GaRK+rvwZ28JqbOfwnYRlL76eVF0/cA6Mmr5kAj0wE+A2nI2eAn5Vrp/+5zuLcBVQIW/QABJYD+/tPKc7FWDbhW6+AlT8Ca2QFrGgVZP8CHSv830Q/wkgnAi/UAeKX/v5hfutI/MJ/3vwb4n18K+DuPNQs5wq3g74v855bPee3m2V8LsFeKjbZ7Wu2G48nxvtb6Irb6KvrXnDTR9CkM1BOw6AdQbLacoFnwBqxV5JZ8AUi8h2zxBIQeyFI9hXg/gK0K+PA1wzvy/O+/g9cP4GJRIQBXBn9gLP3/GCj5s/X+nwP1/ksXRgz4z61U8A9+QRbWZcUXd/KFfwpECBnA33cc9EYUI/svgX97WHFTV8y7XTtSvzbgh953rvMQ+9qt79sF8q2li2tUg24FEd5CAmJJwTVJwNw9KHeJ4BpTYGj9YvCBlgYCQ2ngLxc2Kg2k2PPCSwNfdhVAyPVvFx3xGyr5gyf6n8v7r631f5dAh6+Z81+aCfAEf5uANeC/lPePifxD78Vn6OtNaisBLhYgfftKAb8tpMH9e2uOdQ1RwNEQ6JoH99lKhucu/R6zlgxsBfnUc9VK1qsAvu/cQ+WXYWUAACAASURBVCzwUhLwsEwCasVGaYGl951EAmJ/59nnm5UkYOl37nqXmRy4JMCqAADwvmU9CXiFVQEvjrV4pf/vPNG/df273f6umfdfW+t/Ddl/rrkP/eI/AbiYfdh641Tg992EaCnUFre/BX7f3z5Ljid2m69nqkFu7vlBsD7e7otIwTmU0z8COJ9n9rHxs4n1ErT0Wtm4fH0PbA7++XnsB7D58lg/wOh3M96AJV/AUs+A4HeUvi6yQiC3J2DvHgFzfoBJVQC0H+AHrvAvJ4mvDgo//IiJH+AFVwW8qCqAoPSPCOmfgupcp7+cef93se/s7XLkvxv4L5T4fQRQR0QScyvUvz/0Nyd507lSPw/4t8ShTYG1zSyrVzuRC+9xJoL93tygc4He9xzFgGPgHJ2n7zP1fPrKEH2qQbXy/M8RstDvaGtn65xfqgwApmV/jWKoH/wkoFEMjxHmwNQ1Mv5GVgjkbB08qg6IbBk8t3wVAO8B/BqoDPjlwvHVQQ5VAYYEvJeMdAlU+OnH4TU/gOE/gJdaFfAyUwDXlv6vkfffIvtvivxzAFZAgnw0pGFLO965dqsnhMGfRnxbc9lzQDEnGa+V2ntUpVsA5EMbBaQ9NvuZW7A7xh1y+OCd85lKBFJTBrFpHPfxk+c666/B0/z30GcInAXkmbRAY1oBPyZ8Hy2JjybyJP/3tHSczlqbDngb/If/nvoOeU2BvlTANwinAtyA9IWtF3PQUWN+t0j/OWV/X/TvA/6loT5r8v25In94ov4Dke0/LYQfoZtMrPT/MBP9n2Yi/5OHDIQmtqXmi1NLz6qDaYJzjgvL3aY5x1BUfQdLSNa/rdB5EZKhc37na6BznmXSftXFF4Xbx9odzxH9m246gKYC3Pc6VxoIjCX2TwGl4NMnvxS/R0ogNFb4GumANeWBaxoFfVooDZxLBdixwf8vgP/75aYCXh4B+OtMwx9b80+lfzf69/X5z9XpLwr8CdqfVppi9pb950B8iQQ8zh3Hw/D4Y+BvUwIQzPufpgA+F6EBQCXZqJlLcj7YdptZeKHbjQ6Iz1VXKm6OwF2sjkMwhXMiAZg7X4uE4OwnAmsUq5hr4DkAoBT0fXMOns3/ue8tZiaCBddPLvhTgE3sIJjFE7AjCcjVIyCnH8AlAW/+ofATMOkS+MJnBbyIFMDI+GfXXybSDVuU/p8TbxZr3KQx4H+RzAvw9vF7AP/QsqDfzNT4L4E/IsB/KfJNAX96w59tGX+a2SJZg9ujvpVsUuY2J9uvmlcQCXq5JwF2KtzxMFZd8b3fYBrBPFgdpnL9cUZdORoCWB30drI1/AsXhP3VXJrJlwoItZiOGUNsvxOPCd9vkO/dY+JnscbXMzdNcE2JoG+9XXhNKB2Qci+P6Q8Qmwr4oZQB7gv+wHzN/1LDnznX/1XAn1zQbzGV/Ze+HEvEYO6L97Rws0m+MRgS8PiYdoOKAf+lfS11+WvniMLB+d2Bjbeda8dDoJcL7K9R/24BtTdaBv7WMcO5CZEBwdSEPXWmNPFoNgv21YGhOzAvII/OzQzxW0sCfJ/pQwQoUxLgpsliegbMXRsp3/VJE7Cn5XtK6BjeLNzb5kjA9B/p9+0tr3EbBH30jA22uPTCegPc/QEG2/36xvyGpP9cef/QxRIr/buS/9pIfxFsZ0r8tgB/6zTtqU46CmtCJUsP/mN1b2oxJX+03tqN/uci/9NY08zShnbNivUPhHq9LwHyNVenGETN0DUqOCY5Jv2Rs53v0jnd/NmZfEAbSAf4/AC+VIBbGhhzHkLlgkspgTUDhVLLBK+VDggND0r1A6SOD56kAmqF335ebhP8V/3fe08D3LUCMNvul4L/HwvSf0rkv5YpvlvQsy6R4G8j/TcLUl9oHRbq+xvJstxEP5H7Tu2LSh78x/o4Q0CC0n8E+PuO9+RE+2csN95ZkuhztK5ditTnovdkt32iCpGiTLT18rmYO9Y9VQrffo+Ydh2M6UJoW/+mkom5aZMPCQTFtg9+TLgX2HRAakogepHqgNR0wBo1YM9UwNxyg8QPDcO7P41VAF8q4IWoAC+jD0BUzb8j/ad+sHRlbfYTKV1Z0D8kRvzBsr6EKX5L0f/cDaNiCu2Jof7M0BC26zveuaZ/c53+ThHH4cqwLvgDpi+A5P1VH7rhh0Av9DqxoCp0CSNx3Zr6VIDfwzQ48V/UDMIcW+c5F1QhWFIrzoHrLNc0RXqMXcwdMdDgqJUM1Unh9Aw8e1SaE4A2oOR0x2E0Ma2bp/0BXOUnNFGSThQcfXk+z9wzPNdeaP9J0wTJrSa1T0BKjwDbEiD0Gl+9/zsAvyVMCHyP8AjmTx3DPwvV9wb40DC8lwj2BrCY9QJ6A9ytAhBl/AOmNf9wov/nRNf/nMS/drk1/j414M1MtO/Lnx/MNon2Se1uTMRv64JTwf/RSI+frQT5QEr8HhAE/6XcfyyYhaT/Sa72MG02k7tMLCZ6PkZunaNAzJ2XLD6CpQNaANWlz2zpmGLUgf57SNoK098fA/utPOckpSVyNdd22nftzZBX+iL6fX7wvGcfAVpsyzvjC3hMJE7RrYM3eAJSo/2RKfDt9u9syn2eGgKtH+CVGALv9kAXy/5iav7f2AtvQ+5/acJfjOuf5v4vnp/frIn0n9Ic/LFu3yV50DvN7wFAx4EHoD6rSQlT6Aa2WPJ3Chuw5sr97A2Xvs4Cq31NlViiNxs1LuxjqbPc6uUgX0zZXeznPHmPZL9CEmAV03HA/e+FXCjyj1dRzpjvi2CVh5AqdAy8xlUhfJ+pt3zveewHmPMC2MetCtB/J533/Jl+F0R4zPJcz4A1LYRDasuBKdoROHgMAFZ7AlL9AIAzDnihPDBXaWCoN8BvXKF1egP8YMLWF9Ab4C4VgEn0H+r4R8HfBfXnDOC/xCBjXf9zzHYN+DcPLDhQpCER/VJ070ZSq8Df3LkarlueVkeGeqaUKTryP4Wr7k5L+3TAv3LAn4LOkUSLa3PrMQNkjof1wB6M1mc+T7GwxSoSdqOvpUBrHwteP5GqwpKK4YvG6XM7Twe/o6MEuPu3/6blmT7yEPSLyPjhTz4/gKvuWfBvmZr9ProTNGPVgCZR5bsoFl9BFNEx0Ldy+gF8a65TYEpp4OeO6VQAUQHwr/o///XMX2qHwLsjAN6yP7vc6D+X8W8N+OdYS+BvJXxaw988MG90X8+YfhAhry4B/+PMDcTecD5/1vuuj87M85m/44v+5+rt58qvTgHwD92kO8VwljwoqS/V7S/hGiUCnWJo64Ds7OxISLb4B4QH6IFtxsDYdQAglN+cSAmCiCUFEWSgDaQ72hng72qGrmb6gEOb83dD18vRQzJDQB9KSbmGVve7b/8bYxBcmxJ4DCiCcyQg+fpINAWumRJ4kXl6uvjWHAkASG8AYwj8H+bftCzw7y/DEHh3BzRb9kc7/lXPvK/597b73djtb/OEv7fLuf+DW98biPht1E+f+7hR0nUJxKrlae5TGwLwGUB1nm8S4zP+rSn5o6a/Sc7fAYpRNFdxgEsIxdCRwUFbh9T4JG1Xdp5bnacjYM611ijYH5PUgUPHAmWAkod/535vZiRoqs23NUNFTIWtYjgegPNlUFfcdECrlnsSnN3P+YK+w6Hvs7fpANr21/4c1SaYnkfSmtIaBalM7ir5Kd0DR7K7zyAY+GzWtg3uF8kZXGb2lZIOCKUC5qYH+mT855njiW0V/CD0Yx+E6ssCf/r/gF89bYI9HQLvLQ1wVwqAN/oPdfwLAfvcpL8c0XzUhL8Ik8olAP7eL94M+Ici+VAqICU94FUkTmTzlPgBQHNW+CdDBFLA342sUsHfja7mwL/fhwEzSK6BwvyXbrGmsVAU2wNTglFvDUhvLeuL3T89vq37pumFyXVMPoSjIQF2Ox6Mr+MwPV9nySGoEjBzLqgI0SqtFnSBlJHvOh6RVc8gqtnzSDpMnp6n34eHSJLvNg6ai7qtUbde0TVw7r4AolLGqBQpEX9UtP82/71+SQX41DJ8aBi++VfgfwAxhsB7UwHuswqA5v5/9JT9AeGOf741F/2nXChrugOu+TI9JYB/CPgfMxxHvxnAj9mpjQZarlAZEkDr2+duTt0x/TzGgv/oJmdu9ADQGcm6kywIapN8uCECIoEQtJ7c81aA3qtt8KISYOr/fbYG4Xmfa8iAu7mfg/tZ2XMsCHjH/H36GdPPKYYE9NdaxPffbUdNL2C39M4lAVtTAnYnzYmhflaLgUeu6oDUHgGpfoC3SOsPsNc9/EPD8HGmQ6ANaO+wEPBu+gAEm/445ZWTsr+3vuh/p9x/1IXzNomUror8fUDa5/ZSbgxz63Hdr+3fawwBqCTDw4PC589xx3FaiP7nXjTbr8CCRD3Iwp05X41kEETu69x/e2rdjwS0YH7vuslHEjBTgAGoLkIaF4pF1a17X2f2f9jxC3s4AF3DcGAKFw+o0se7xL4JUX8fGP1doXRvAt/f6wLXhfsZH630b3beKTapoad9Gvpa+tNwML4phaFL9nnmug7Vzy+R9pqrSa8AC7a+/Xn7CmBdnwDfmusR4FtvnM/VJQGzvQNswwByb6bS/jsMXQJj1nsAv3p6BvQqAOkN8M2/Ak8/A78abPrVPPd7AD8AfSoA99UX4G7kiOiyv/ct8+b+9xzzG2r1O3n+2zFbDfX7p3X/ody/a/ar1TSKdhWB4FS/020+5/rI0JiqgOasUJ/90YeN/EMNf3zSfeWYsfr6aee5NFps6/G/LTAIxcCZgjT/BTD6uT/mAHjEglqMD8D+Lua5rlegU9r0Jpp9by5KaOWQddKLzJ3Sx+A79ssSgfGU8/lIk5jpN8Cd60c6z/V9rvbz7CccmueIxu8HcL0AANBepmWBbpmpr9lPyBfQf482+AJ+d4A85AlILREE0jwBKX6AD/ZSiiwPHE0O3Dg6OLU00HoBAPRtgl9QWeBdpACim/58i0H6d4E9Ne+f0u0vCvwRB/5bVgr4t4qhPrGrgv+kpPCz7gvw5qzwxpCBJqK5ivs+fD8/L0T+rZOrxsHfwKYe7nToFIM0mwUO+u+abFyynkBwmS/f7ubZl1IFs3/rsNPm7j8AzL5jmzHhe6P3UJrBlwLgkvXgLxWDrPXm/jHf5+r+/aVUQGylRRVw29NrdjQ4yDOdcIsvwFcM0Jz8qcPd2gYjXBkQUgFS7plzTYJyTQ0MrVFZoFk+L8CdrvvyACxN+/uNnGhv7j/B+Z9CFmJd/54fk9bTjBw492V1wb8+MTw8hIF5zejXmP24y3YJ/BVDeSBOQHOcRv+p65T4/NYjC9e+6NCkCHg9jSJ9wGEBJyQzuyDIq3hicFjS8A8eVMUMumZYHXn/PlRvJdN/+hA+DyFC4Ht71EBpt06xnnTZ53E5AH0P+ub13GyjskBHHehkANwP82rO6Lo/LhPXkVpFosoT5j0LcyQgGKGHPEJMeXeSyxOQagrM5QcI3YBTSUAsMaC9AQD/nAC67nBa4M0JQFLTn1D0n9ruNzX6j6WgbtlfykrJ1S+Bf24GH9sz4MGz9TdMriAMCXhwJN9T4HhDzv+KDGcBaQ/rRmr9v2vHuU6iRAoE9cFI/4QE8EAtuY0u7VY7EegSsC8qBgZMFyPxQxicYioCxMLmPv9AIuYQYPWf4Yx64Hvf9imjv+0ZOHQA0BwM8FcMbWU+B0JOLOjXjtpTm9/Rz1Sa57kkwKcCjORiX7R/XCarbWDw0Il+fqd4EhAy2fruF6P9PCw/dy0J8EU2T4n3uTeJymnq+OBchsBPHRupAO8lm20OdEfr5geVnPvfY9RvSs3/XOR/iixh8XkAJg1/JBtF+/QLWJPX2BuKG/HPyZC3WDb6tw1ruovq051Lxr9JXf5hrEpUJhfu1n7b5jv03zbyt6DfGeDXD3A0BiSkJ7/JAzlPwdTIH8AX/AA2p7008CZkxIohbHuN2m0lAySHYArM065WdXz03i6ecxW1Lrra4EJ3ctAky54/SuC4ms/7+z5L6/OQpv6/938s+AEWvQBMAWd//4j+Wubjc+d+XnO+AJ+Z7zPZT9DA5xkrnMsTkKtHgHdw0My17PMDpI4Ojm0VvNQm+IPjBfi1Uvj2Ud6zF+CmCsCq6N8L/gkyzvuE56asy4ocV7MBmCmTTgH/lDGwOcvMnsmNrDowiAMbpTvd446R+Cdd1jxRcCz4SyI1U0DhjkogPRI4lZnrmee5ALWUTrHPiXn/sSrO1k0mXgeuALB0TXUk8qfphIMBf6kYGvJ51eQzoue9JiqAqwS4BKEzZaFyYZBRV8d9Fkfzf21gNkEbWSUw6RdA7hv03vF5K/m7QTogeF9TbNO99S326xL4fuG5VAX4KHXQeucqwH14AOZa/oam/Y1WRPS/puQvNk+Uq11llugsIDOGbrinmS14c07ZjmyU5z8/D9K9OPgBbk6xqA6BG5PPoBUw/vXgcZiCAScgwh05mQKJ9BgGKRmwcnOIDNQRn6WNSGM9F/0cAMWSZjwkr0OYVGwlBCGvod03d4C/c86/+7iPpHHy2UoPOQilAkL/9n1PQtdnxZRfGZDrUgKNGlJqDwvfnUayXdMBawOYmIDpkiEgy+EF8JEAnxfgGzMn4I+W3bMX4GYEIDr6R6boP4X9ReeGVhj/Qhfy08b34fa/P83ckCrS5952t3uWfLS15DnuNksUTro7Wr95nvfxd4XjEahageotmxCXELC70j+9AdMWvp1i3tx4HYjER/9mqu8O6IK7vnHxERmozWMg/6VkqSZ/1xKBTjE0ko+eP6cUxEb211g1hjSO71ipOS7m2JaqAujrBYnuG/IZ0YjffXxOieFuCiHCD+CVimceaz1mwSrgAZgjAUuyWGXIgB0kNLfPWBLQJDYUS1EBUv0AoXtnDkNgKg7MrRemAtzsYKJy/zb69+X+3yQY/1LL/k4xF8OC8W8p9+/KXaO5AA/TfL/rAXDz/746+G5holl7WP/5bx1ta9MAlWI4N3ps7DPCs9Z94O++r7PkeGSql2qpCtKZyNiiDncMYxRsecUmfQBo7nqS72/G780+t6HPCaylnHhMXf9k7kDN/AX3GSoDmk4TIAg5Oa6utp37usV6/xTi05sOuQBM7wH7WXaVP5KfS1kJptA0JOfP1Ohn1w9AxwZXZsbB+UK8AfT33OMPsMfSTD0TbWRP/mf6WdsvinnQnSNgxwp/Rvr8ANopcPS4xxOQ2iMghx8gZV5ArlkBqXMC5FF/zi/AC3ATBSA6+v+NNP2Jafk7J9usjvJXRP6hKP/NFU/yHPi3B9aD/8lRBGIifjvxbE2P/PGJNTc1IdAewqa/UNH10XNjp+B/DET/fOZYrWzPnciRytQ0+heKQVZ6Qw2IiqEzm5sGGB1rxfRzFzwWS5jd1WyUN7f/Xpp8t3Y90V3NOPytk3/tn+eOekKlfnqOKfjH+lU6xVDX0yoQqgQggkxMek14rs/KpGNCRK+KzLXTdEB3ZCNj4Mmzz88Lcn0w+k4YJZyqOjUZVKo3CepAqhKQSx1wVYCP96sC3LYV8GLun0T2bsvfNwnR/+NOx3+R01aem/P+TwBkPvCfi/pPQBRw+55T+ZQA87znmCvvDJwPuh3voWY4ggOQ6Ew3tZh57KFj9NX8cwpaakoGehCpGDh0214tBXNIpvTPzN8euI9UyL44Uz1ADZGMAYyWdvtT/XF1vhuDZOjqsFJwUEAXKAVc6iIYu+h+Pis26cJHT+0zBm8FYN6TkQNEQPHwmgEPWkIZDVICUNdjMlCb/XZuSacLPo5q0ykG1Aqy0deGW/UhawbeTNsAd7BDiLQK4ANFGxl3BvwrbroJBtoEV0a6n9sXBXrbBKsz5LwxHTZtjX9trtfPEYD86FQGNIqhflDLLw4cY9J97uNwHL5WwantkH2tghfbB29Ybqvhzx3Dg1D4Z6NUaC+A6lsEf/+dwk+kt732AgBqUAFePQFwev7vm/tPlf5Tyv580v+cGXCv6L96UkDg747a4h48rXKR7r5vnVamLTxNTSJH6lYXhRaAqBQea4buyNEdFNo/FHDEbJ501OJXjfv7965/YOT8t9I/SJRPoz8aUXIASnKAKVRmvC3I8QgqG9vfm8dracYMG6DpqEKhGAT92gldUkdJ36hHvda+ITwldxdDEAQfK/4HAM+S4TAj8Imkby0bHw/M0B4+HMeBnOvOOU9wCcECeRVMQXQMEEN/f0gOqYae/50BB6s21Kasjz7uk5M7xSANCeCKQdQKXWtSQkQXlUwZEqDTAD5CdTwAXTMct50l0INix/tZAkcA5yP09+U8/U5UgQoB2jSoHyjEFdqOowLQkOuiO+p92/dqg/nPnsZDLgmg6YDGmA7ddEBtzu2nCBLQlyq7bZfNsdRcDX6Aj/o6vkSSgINkwVSATwX43ZKAt9NUAF3vAPzm6f3vA3uLK75ZAZ86hk9A3yJYewGAv33i+GiuMj0jQLnYeO00wO2qAOai/z9mnP9f73Q8oY5/sXLTPa+YXP+ctD+S+TvebzQlUBHD13PHvRG6d39nfWPqGgUlOJTgqA4sGvxH6YDDKLMwjug8gD+Sfn255BrDuGAndeAa+azkbZ/fKYaL53fU+S4CBrXOtBm2RrSD5zGaHujkVGpfqjKg+1va6GuEGqR3ehzUY3FwAN0nzc+WmjrXDzVUjj9U3v/NRvJe2leCg1ds2MxnpcznQTtAdh6vQdT5m5H9LUGinoBRMyE6gzghJVBxNarzbw0xwUn32RBECYhJK7jrMSIdsGfL4BwpgpSKrFBVwJamcHRcMDCuCPgWi90Br72uSgCie/6/D+T+n+2FvaHs7xauf1/032ysq+8ls09xzz+50T9xV1Pg992g52R3ulG/gJ0EWEU4wT/+oSOnrlFAxYGKe1sQL0n/ndMBkDvRf/Bc1mPpeDRYxuT3e/AXfOIhmIBbNYChD/hcoF46z5N9BMCZbkLFgXrMoq/h1XBO3f1RYhCyIPjeK32OkNMOhJC8/4woebJ/syNg7z2PNVAZQ4H0kAlZTckAnSHRt3v2pD9811+lGM6mWZL7OR4Dr40lAe4MARttTyLthPvL4ijhSBLg/W4lHEeoMiDUKjh1VoDvxr017x/qDeB2B/wodVAb8gKYgPjaJYG37QMQ6vkfAvavdzyWd5FX0RbXfzK451QBVNhF3wb6BRwBXa53YKgODF1go4Pa28PUGOgjBaPtoJWAy0WH7w8ngceDdpTbTn80cJqL/ul7aZwofxTxk+i7IzXk9Gf63FbwHigkjS7NhhojY5olAcJjUHOH+YiZ1r0R/MWfk99hFoAwTXiWjiFENOY6GvevcVoDC6LaWOAW5HyHGgH5NsAQAeeYaxLyp6gA9iDd7w8dCewSV0sCaLMgr8cm4IFp1dQX8OwyAgc4HyIi9VjgnftdSpOgUIOglHLoXIbAZCzYoAJ85ekLQCLka6+reQCc3D/DD2D4C4AfI6P/fkWa/1Jy/7FjfkPXTorrv7lRW15aJ1+ZG5TPxXwkHcxa56oM5o1Jk5Mp+GgpdLbcTeq/dbwoXA4ShyOHOAl0tUTVmLaqJJdOgd6Cvxv962BdQYopye0j+NopASQ/N9WYNBww9mYKONV/nvHBvDLPYeNzx9lAUPQoYnuyyf6JsbCrAaX8PoBemueex+q811AnNSkDUxC1x2hJ8uj08RSC0QkOtEr/bD4fLjkkFESla91rZRr7mO+TJVihcKZv+Us+l67V59iaCwWArlbomsEj0PsFDgr8woYWwaYVsc376+vdSP5Knx80w7V4dnLw/bXKFM7mSe3Z+Q5h7AvoSQAjKQDz3xPQq6PipEYuXJtD7/0A8A8jsqAc9AN4WgY/egTIFFPgyPy3YAq0903XDxAy+S0aAokf4OzJ47+D38zse+77gBDr8wKgBdoLw6/mOdoLoEsCtQqgrukFuK0CkBL9PyfW/a+W+WeeG9uIAritT8CCx1ytvhf8PZJmSovgUGmgLYeim/ezsP93NnlzLnBwkM3dLwV/V4rt5LiT31w3vnqGFkujAGgj2rjjn68F8HCD46PndE6kaoFLqkFFsFvnlLq5UvytFg9UAdjzJ2o22pbSGnTwEA4mKq8HcuZ2aaTnTJDzKj2d/ux5rlzi58r8HqUoVlHxldtWnuqBOTWAPmlODaAGwbkywblxwksRu43MHyMClxQ/QGqToJR1yXC/zo0ZFpvemP8udQe8kQpwFQVglNew5r+l6B9O9P/1re54b/Ptqpn5EqxRbGuu+i+QjQhG0ULgy2ld+qHIfxSleEjDhFjQZjwOCQlVA8wdY9coXCDBTwISHKI2ZVSXcZtf303cBSXpRIGCKAmj2nIKErW+avtWwEzpML4GuIkQKxO0c+Iu5/Z9G6mcm2iwo9GLYn3JmVT6s7hIDsmltxzNBV/JlJcEuI/V5roSTrSyhUDY89E4alAnGVTgcwiRAJ+apIz5j6oySvIhQncMe3TEMjzqAzcHK2tAtoPzH0xpb0drPht6zmugbvV31aoA9jM+ALjYKgWjAtDrqHXK/PoSRqZ0FYAnQqbVA/ZJ7vfM3W+obPCEcAkuVQJiygO9aUjPixvF8BgYHOQjAQ1boQ543gdVWT8k3Mp/vwGEfGpZrwIA2gz4S0AFIJh5DRXgugoAbfwzF/1T+R9E3oqN/rdM+5tjmVuNf6EL/clhwLlWTD2+UGwW/H2Nfs4dH21uVH4EtBteci3dO936zqbV8NJincSpYngQYujoR0bEdjOGLBrR9Z35jFMcGIxfbvRvjWJuxUBlgck4zFuhy7Ds+5SuG93elB1FoDOgpow68OwOHXJUA1e9qAOb2zjHVie45r96Zh9LGz1Z7j7lytSW3cfFcf73n4Hg48/aOP+7avgsZv927Wn3bM9lPY7GfRmTE5k62DrVDyMlxFZ8MNVPoAyRadfM5yoB1YEAfj1/j/YpAUvjhGM8AT4VICWw2eoHTmtcBQAAIABJREFUSGkVnGoIjH1uSkXA+xkVgHoB3v1JmwFDKsB/XNcEeN0+ADb371vfAt7GP6Fxv7HgP/fc2Nx/DuNfE7jwfeAfe+GnlM08ez5twRQqA/70JlVZ4HeixmPoqumPg9FwsQdlQVSCI22a4wD0cBKBiwIOFwXxqNAeBQ4HPY5VNMrUv+saa3oTplEilww4DrXhffRnozyla9olqSt3wcTKx9KOG+4EwBSO1gwnhjpvDgbA3rgZFLQicMEQYdbmd7zV44N71aDSr0Wnn0OvlZGvQHB0nd8HICqGrh1ovaiBpuETX0K35Qts0iB13aFrh8/OnrsDV/3j0UGB/bzMZ1ozhU5y/W/BAWXPjwFpAXSKA3Jo1MQXCMiRSzQVA2+1ajM6x7WCaIdoXpMLoG7VKO9sFYHDAbhchvduKxYEU6Oaf9TGE9CMVYKKXO9np2mQ/V61TKEywN9eyPAgybV3x9MrYGIMVNqc27cO9gTzwOAJ8PkBaq5Gef6GEAvXE+CL7oNjiX1VC56I/wk6b+7zA7hegDcAPkQ2Aup7A7wdtwkOeQF8vQFCXoCYvgA+FeDvRAUweuM1VIDdFQBv6Z/b8x8It/1NafqzR24nNb+UYvx72gjqudfRE0l3cnAtd2B6q8ObfXJVs9FmLd9tzWZLDqmv4ALgc6MAIXFiAqIeqwkikNPlcmjnOonuHZCvPUoCjWilSQnQCLQxEb80JWrudDmXRHDH5S9NG+DezW5JSsWC0wRDUwi9eY/a+TnXhmnapTOteXlCG16ff0SaqL5Tg/eBk+Y7nSffT3+uDLhWhKByx+ciK/28zh0ChOV00iiyPYxVAB4YS300KZCQIuBGyu6Aq5ZMDmwDXQTnlAAk3ItCfgA7QTDGE1BvbBfc3/siqgJCpYGx9+pUHFn7XFeppioArQj4821UgOspAHNvKtT291kZQN3g/J+Tdxa1oumP+6yn24O/YAqtM53Ogj8M+LsaqSBA3d+oPe9BcMeXYFrbnj3XROVRAyCAywNQnyu0Dx3EZzmAj9P1jYK/6+yvWwXwoT6b5v59N+gKOn/sfmUkGHhnhsg4neXsuWzcAUPkPDdqHEHC7se0p+3PN8au507qLoLCaS08APHAtG1HPLgzCJy8dZJcb3hA4zIrhSDALa3eDClMU59aoVamEsN0VLR/zjr+Yc19Fby5fwDgLSAFA6RWgexnhBpAO+zPKiT9+7LvodLXS0fOpX0+lwwSCpeOG4+DHHsiHGXrCOBcs5E5kHoPWvs949PPpjWRPO1uldI6+FmxYGXA0utdYJ5UCJzMNUo6Bqbk+RfviR/3u9+9BTklER0CnyP3G6oIeNPp7oVUBYBRAegXSHfG7VWAvdeuCsDmoT9fbwT/ey77Ozhs1wX/WrG4JhobBx3QaoDeoCcZmORD1F+bQTeOa5vOcLe5cLsJmpM2nQO5HKKlS8fBOu0RIG0EJvs4A5CtAj5L4KB7BCjB9c33qLsHQosLPfj7ombb518awtBIjmPfE55MACT14pI8Jp18b8s5wDmkYKjMz+AcXDA09mdj8Kr4cD4ayfvzoszP9jwqzkeKQg3gYnwDnWI4LfQUoBG2jW67haZF0eBvo27B+iFIgjjxqRqwtB3qYRhSXQ8NhLgZxdw7+k1Pe3tO6gpQ5hyD88k1N9q4MRSKQSHw9X7olSFfX4Zq/HzKeQ4H4FQ7EyPJACRX7ejVAEchsBUyPb53XPe/sN9F0xXTJcaxI4VHnoDT+L7UKIYHkw6wmzvGme7PKgK12UCIgCUDPiUgVBUQ6wc4hHoXqO2Kre9Gv1dFwDOpCLCNgf5ob9oY6DZlgLGlf1vWPZT9xYJ/ynq8wudjb0YW+H2yb+cAIm16Y59jW+W65W/oBhDkxgBmNxd0KsVwuZgmQZ8luGR4eCtwemLaNX4BILg2aB0wMst1M6V/VOavMU0XUPOfKxVzpnAg0jOV5KkkzYUBdQCdIQZ1NaQRYAC+Nn9IOOVrlizQFAMlEK4J8CK5NxKPLeec22wDnhDpSDEBUlJjzZA1BX7F0DGh92nO2ZkJKJJ64TN/k352UjHwWo2fK/jo8+6c62B0vTjkwP59W7EgPVG7r2Ng77E5zJCxjqNlCp1RzGj5X0zDoCUCFwJRulEyQAHcB+LXuBctkQBfEJbDELiVBPjW1xgmBdqSQAC3LAm8DgGgjX8mkftc298Ndf/XXBeZqe1mzOuv1EhIQI2ivIPnhiU8NzrpqAShTng0l03VAqsScE/r2stFqwEV5xBHgUPFx3I/AfJJyVg1He9rf+mrB+fE/d3/VxAiAwaoMSD5vADUK9Df9IWOZoVgQKXJQU+aeNhT0GCYhudTAChZ4CYaz5X+7yo2GqxEP1PrZagjyQY91v58C6IkGJWhrjAawSydc+z2++83sAkpAyFy3CdRO9UCYmZGgJ0tIEw64GD8Le51FJqa2NbjIVbCKB/A0JzHAm6f7pnpExCjAiCgBMwRAh8RcO9lsSRgdVXAwuOh+2HuPiwp3QHfR6gAgB0SNG0P7Bjl91QBdiMAXvNfSuOfXSJbmRKlsKTcf2zZX4zxL0ZCWyISMc2AYn4fivhEQFru59PXLEgKaiJPdzNtXEf+s4sGwM+tgmwVasFRnzge6gFQhKeXfx2I8KSpBfdFSVWNUQMZKgXYx5jQQA7FJ8fvkoFeQZB8Ygh0pXSuWO9k40JL5KMoVLKhhJGcIGlmFrimPdpQaMsmCXGz++/JgUMM5jZfUySrkvRkiCgE3AF/2zTJpmz6rRo2+sFZFaByiIAlfqP5D/UYtA/kcVrmKQyJuJDvJ50XEDKqjsoBjxj1snj0uPtpqmD8w7IK4CMBJ/o9PeotJtigRCCWBOwxMOhp47041CJ4L5NgSAWwaYClxkBXMAPubwKcexPfAvjJ0/hn68jfOfkmZtzvXmV/B09+aw34p2pwtu1vxVQ/vndu2fvMBcCBjFwd1IHxsBRrzOoZn2mkAwdgOTGvNZia2aaR2bivv4CCbBSepUL9oMBZhbbiqJ87PNt8MSEdNnLto0Da59++B2PGsiOAZaX/644N7v9LP0/F0HKGSnS6tr8fEcx6kmHL/lADleLaz0BGCStjZGygDX9ccCip+vNxMcRYCNUTia5jEJWctGl2WwJzyfJxfMlGn2dniIpUDFWnjUzulMCQPE+HCVWGGElrWFQMlRmRLFttDgQAztlQOir1eWOB/XOmwCtjBDTXvxT6+pfdMO5Z1gp1Ozb56fHAZM/m+q9rW5zF0LSqN1g25NrmlTbRXQB0l6GCofcUEAPmuWP4JyGHnhat1J6bzphUfW2DzZezPfs9ATZdMHfvsHf83uxHSMBz/3+kdwb53j8w5W0l3EgGcIXmxHpDYKhBUGh08OLY4I/DPfSyZ1ng72NsoCV976BL1c8RZYGhkkBguTGQpyTwRSkAQfPfT85b+Y180az8HwL/lIl/q2Wct+ky/6p+/5FUtl0gB1klfzIbwPv+PWqAqMcjbZdkXze6D7XI9ZW6ublw2SpIpvB44qjfcpwqLcUKxwDogk5PBmpCQGwenkSMwpCCyjxYkdfSn7liYJ32gNMcNagcT6LVyRAhDAY7W15ox9ZSFYRGwjbqdjfuTgBU+VoH22OogImaI6tpkyHhSQUJ59hded6WQvYKABcTRYU5yoBvowfNnVSAXOgc6SpFrqFPkA6BnWM0td/ZA7RJ0Jd3t489MtV7XjqnV8B5gZjjmD5J0HdvcY1+JwAnIxX4zKI2LTAbizyMn7+1VXDsPTNbWWDGQUFuKmDODPgVwcI/TwPovdIA1zcBWvn/qyX5/6t1+89h3tij7K+JkPH3AHi3fKXiarGk5TyTUgj1ee+cTnU+yZ879ds+MuDexL2koNF+gK41aY66Aj8KPagGGIC1mkr/c2N6pSeCpXn/niAQ1zoXDC3nPTFgjuOcpgXoflxCgFoPnbHHb/Pa3ml2ZiSxW6I/OX5T3TA3Fjh6q5jX7Edr4Jd6FIzGChNyZGv+Lfi7qRRa98+F3qRnazkfkbQ+XUGJhiN6ds4oYHsdUD9DP5VQ8j6Kp9dNHQBXOOko4Ux+pN+1LtQUyyEgsSSAbiEDYeiYeyKAdeWiLjA/7nzfzLHeZpD8t5oB/+XfWCiifpkpgLmpfymNf64Z/V8km3hk5pz/h8joP7Xdb2z0/wgER7TGpAXWLBsJ0Zth37TGQwomZMKhnpMe7rRrX4CIoAHYQeJDy/B04DgeBRSATum9NYKDQ41uuIIY/0byOdPlhHx0k+F+edlHoxWD5ByQEpIJQHV9AsPOBmjp+6LTFh0qzoHezV/X0nQY1K9tjQTdKQZWsWEHNUzaYkwChpa3228hnSKzDeg46YqhUgCrAdktzxpwyZ3qBMBlP9qXnndKnBrOR3l87/WhGFApVN24zp6TaYCV+Vw6DLMV6HS/E5dDn4PGfs+HNr9gqk+FWALq9gno1YODqV6h3wfT10DYn7nSHfskA1rZR/rnyKl6Sw2CLKCDpOmenfuA775TcYXTCXh+Hvpt9CqASQWEAL9eCVmLPQRMKuDJKJLev51jWuCOfQE+dwwPQuG5Y5MpgagUfjXf9yvNB8hOAJyxv3r5zH/vyQlZavwTOrGxDCyl5W+sXOTL/aeU/W2J/hvJVtXgPM984vaGOcr1exrJdI2CqPUNlD5XOiqABllPi2BglCfXv1b+3zXDcdibsiSvez4Dj1KiVQz8IKBqhpPq0HQSotFtYjtKUIzxq1Y6h0wNYDXN59qGPHIYTiMxmAOZjXLN1qsW3CgEtgadKd0SmCk96BN6aA4zGMc7NRAKaywTDAfFIBmHkp5crCERtWKQ1ThEcAmKbZGrbI59g/zfSV1/zzgb5hlTwFb6cb4gKo4G/Zh8vo3yVQUIztFxiQocjaE/tIoCtgFQOyVnfUMlockIN9clt32fMXhBRs2bagXRaBJwIedKVPrare0Ap06NInVRMTTNMDqY+gK4Gdt7OOjruZUMopPobDUIN82DTM5fpwHYuHkQJVpOy2DBVJ8TGDXUOi9/nid6LTikoCLNiUIkIHhPsoDqDA1q3IFL2NAm2JAAnxfAt0JeAMykB1wScI5sBZzy3K/NtanNgAq//awb4n31ncJPP04D6Z10gP1SAHPmv9DUv5TGP3ukBPaQ/3PIVY+LD8RF/CG5v2Kqn1gGYDJBbhJ9k5+prN+3r/WU3PnGtE5y5WrwFFhntx2NS0u9qPTdNKZR0FmiEhyHg0BthsQIp6WuK9dS93dnwIA7EWYo4rTeABvxSTHI1wfPe+WkuY3N8fvkbCp50zI46gVApf+eT26ftCEW03Mcs7npBbufyXVVLcvE0nM+OsVwFIOfogIgjZeCnoOWDkey50v5UwD0sxnt10nDoBqnhew14PMAKMk1oLfDREAqyde1Pw1GPQEW7Ebkwelg6VPN+uZYMymBzpH7q4PellQDNy1gqwTaQJviVNk/5pa1tSogpSxwSxpgq+QfWv/nPMVfWxJo1w+earp7VQAmRoVQ5z+6/rQS1B8zfxiXxBLBnGV/a75Qqz/xmUqAM/xjWmePDaarWzNum0vB1h3W4kapLYn+OxLFCsdpTZ/jHkSnFI5HheogUF0YOtEBtUKjhta/tfKkJpwELhcMbTtERkMzmSG33AEjwNGBOYPiDJxLtGCQnerfH3flfhOFtuQccDsq2O7LREJcKP08NpyTWpnjU7rSoCcp1q/QDeDcSAYmArXvQYRwzlGFPlJXDhmyRAUz1zT9/O11wa16IPSbkwAUOFQ7XB9MMUDYaJ1BKvMY/NF/RQGsUpDtoJrYFsCDCoChPbDdT8WAVo0IX4dp++QDKQEE7CCm4TmUKEtSMsgrBtZJdKbt9iNTQxqNtPulLa6FE5FHf88pCXgmCqCzD3f0sG0fTAMGqwLQ9QDgc8IxpYwNDoG9b1jQJeK1KRUBc4+7qvJviZhlVQCbBrBLmwH19fmHgVLdEwD4YQz9udMA+ygA7uFR+f+rhNr/a/QGSGWAl4S2lL62llH330iC8LiCTLSKBY2AgrQCDkX+3tc06AfZuODvRqk0IpOK4dyJIfI20Z5bVUCjUmoupGN40QDyDwXZKRyeBKq66iNtRboR0oqDvgWtOwGQ81EjoFCERl+nzARAKYXGNNOy1kasB2oOFAyV5DiYdAIj56OvMCBqQOUoLZ1i6DqBzuy/b49r3mtVafC3KQ7laZUbUmTc6NoekFUeOtKnQAo26vQYiv4bkkqpq6ErIh2BzDqhlRNz3iUTwzkwygCTwmsKtT4JKcYVGpX5x8GQg9HnVmHS1KgHc3OOz50YjUGuSVdMtw+GqDwdJ+UwjfEkNfjDXMNHYGIopOE+BX93jPDSNtX89XYy323f82KMgkkBycP6e90eFQFbMWBLgBnyqvnMgN8C1+wJsI8JcO5gf5vp/PfmCiN/t9b9W0YZc8HFjvqdu+Dd3/WDOTKkFypmRBsK0Eyh5VMSACcKp93yOrOfWjHAjMyVHpCUFXNTtyYA5DSU1s8lsqv9m4rKkxhyuN3FpnglcAbUA0d10te2vHSaHBgHd3/jrsZNg/racPveOqHrxkkZH6ORNnGzywpgUoFzAQ4d3Qnoen1uarpbEm1yBVyYHnTDTU8Aq8oopgCu3fWMCXDV9Z9PD44AeAWg070H6NCfzjxuBxV1gqHu1MRoGVJkpmzeHJfpvV9Xcoj2Td4enT9FYM8phx7hy6FNghwAOqFr9aG9E6oVaI23oFLD+ZaCoWYMUnFIzuCqjJX5zFin+wJIAXCb7wfAhf4e6x4PujcAuNSeFcEgGNCRMcw2t68kx7GSkN1YceoqTTb7UcCECFslYOToN2TiwrV7xdb9H1qJCwF5Ic344KOCkAxdM/67S3dqStKDYGXyFycb3T4zrzJAVYBeeThh0V/gjg6uH9TEC1BDn+slJWCrF8A1BO7WF2DlqGCfGXCcBtBr554A2RSA2dp/OvbXF92nNP6JZWc+8E8J+VPq/qPzUznKVx63qQbR5xRhL0CIFNiUABSflvNVg6ROI1pfFEpLxHg17vJmt6rGpKa+U9qU1Z4l0AJVVQF1NXTIswasaqoG2H78lQNgVT2+AVOgs9Hy8G1SaJUZRCPQR//MifQt8XE9Am63Om665NlIXAo2iu4PYlrSaEGfehmYGPLnoc3u1x2rW5lUAo1M+374cihHDPVw8JV/2mOyx237H9DySebxRHBMN6X41AfhpmcEmetQT4kpVa060oeBRvPcNbiOMXXUGMsOOurfG1OouIKoTUlhE+74Z4nAeELW8gp6AgJdAlvJZlsC51iNYlFKQLuxlXqzZ/o3oi9Aqs/MVQFsGoCOCbYlgX+eBtY5ewJcbxwwMB77CxL9pwD9+y2gtkPd/9ayv7nOf26J357jgiumcJa8vyIEV9qx7FQGLC3BlDYDCz7q9tdL/0tRqFEW3BK5UdmgR54f5XJbBak6nE4VmKjQCIbmLMEroAEDhxqZ/OyNnyta32/r0afDXmxka1LjGrCsKqEYoHRpG4fSRMBW7DH91WWdfrFSHFzK/r1J8l4loOvaJVCJQQWQ5LqRDiHpjBFbkwD0aoM973OpnP58ikBOT3IwI7EzQ0AaZiohBIPowsBkLwBuzlsrOZQkcr3kUJyjhYTkHALE+W+VGTAIgd7N3xmJvTPyvoT2CHCropDPZ/I+SbmeJiXEW2I3LkfHT0dI10yhqRiEifapJ0CYBkyyVahr4ykwkbQ+ZDUZHUw9Br0ZV459KmcgmPBebPdNlTOnU2AFpc1/a+4ZngCBqgCz98wIT8oeZYEpqYDnAIYc+bp9hroDup0Br7jyE4DU2v8++l/p/k8p/fOh/ta6f6/SFjntbynXNSEXj/DK/5Q0PGC+L0DfFpir/iZzttGHU/anScBYztQleSxoFrT11mAKQupxv+ASrR120oMdKVlz5eNW39RHRIB8kftSJQr+VgK/AF1tTIHoAF7jWGl4blqJygxx6dMBiqGrxq2CuTnmqhMjaX0UjZLoXpj3YDr4ggkGBY5WKtRCQXWql6oHVDZGOM77m1TF1NA+GLotLOOAMjcM3g1pkLYCuOLopM5xj9IYgoFLOUTgtULbslEKxUecguTA+AyEAljFIDudda8kN8Du+Qzp8dhyP/Oz4JrmcKa0DA4OLgDZMQh7nZhz2JjzK8w+QHiKFKZjo2SAUHoIkCn/Y0L/bEkVs6WcxhDYNvT604d/Nl6NVsohJVChl/UFIZ+16QcgCQnozLVlewV0rQS47Al0I2Qf/dvXAKZclU2J5uROXQdIdzNV70Lf/UnL4JNGuhSTYQhUrUS/lArwEYWUssDQPXepLHCuJHCPvgBLZMFNA1AzYKgngG1InckMmCUFkH3wT+j3Kbn/2cdWhPyxzv+USVZJSkOG6L+KZMNzz+vqweDXkKgfDvHgrUJloigpR