From caaa78c171e2a767ba7f3eda6ad9ccd5cd9abc6c Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Fri, 2 Aug 2024 17:22:28 +0200 Subject: [PATCH 01/24] Nodes: Add VelocityNode. --- examples/webgpu_mrt.html | 14 ++--- src/nodes/Nodes.js | 1 + src/nodes/accessors/VelocityNode.js | 86 +++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 src/nodes/accessors/VelocityNode.js diff --git a/examples/webgpu_mrt.html b/examples/webgpu_mrt.html index 232c1ac47bedb9..b037461321d31c 100644 --- a/examples/webgpu_mrt.html +++ b/examples/webgpu_mrt.html @@ -10,7 +10,7 @@
three.js webgpu - mrt
- Final / Beauty / Normal / Emissive / Diffuse + Final / Beauty / Normal / Velocity / Diffuse
- + \ No newline at end of file diff --git a/examples/webgpu_postprocessing_motion_blur.html b/examples/webgpu_postprocessing_motion_blur.html new file mode 100644 index 00000000000000..e7c2bd13ce6972 --- /dev/null +++ b/examples/webgpu_postprocessing_motion_blur.html @@ -0,0 +1,180 @@ + + + + three.js webgpu - postprocessing - per-object motion blur + + + + + + + + + + + diff --git a/src/nodes/Nodes.js b/src/nodes/Nodes.js index d571d1386c86fb..90bab909fd61c6 100644 --- a/src/nodes/Nodes.js +++ b/src/nodes/Nodes.js @@ -138,6 +138,7 @@ export { default as DotScreenNode, dotScreen } from './display/DotScreenNode.js' export { default as RGBShiftNode, rgbShift } from './display/RGBShiftNode.js'; export { default as FilmNode, film } from './display/FilmNode.js'; export { default as Lut3DNode, lut3D } from './display/Lut3DNode.js'; +export { default as MotionBlurNode, motionBlur } from './display/MotionBlurNode.js'; export { default as GTAONode, ao } from './display/GTAONode.js'; export { default as DenoiseNode, denoise } from './display/DenoiseNode.js'; export { default as FXAANode, fxaa } from './display/FXAANode.js'; diff --git a/src/nodes/accessors/VelocityNode.js b/src/nodes/accessors/VelocityNode.js index c37d5b731db3c4..c84f3be5211a1a 100644 --- a/src/nodes/accessors/VelocityNode.js +++ b/src/nodes/accessors/VelocityNode.js @@ -73,8 +73,7 @@ class VelocityNode extends TempNode { const ndcPositionCurrent = clipPositionCurrent.xy.div( clipPositionCurrent.w ); const ndcPositionPrevious = clipPositionPrevious.xy.div( clipPositionPrevious.w ); - let velocity = sub( ndcPositionCurrent, ndcPositionPrevious ).mul( 0.5 ); - velocity = velocity.mul( 0.5 ).add( 0.5 ); + const velocity = sub( ndcPositionCurrent, ndcPositionPrevious ); return velocity; diff --git a/src/nodes/display/MotionBlurNode.js b/src/nodes/display/MotionBlurNode.js new file mode 100644 index 00000000000000..62d852530e82a7 --- /dev/null +++ b/src/nodes/display/MotionBlurNode.js @@ -0,0 +1,57 @@ +import TempNode from '../core/TempNode.js'; +import { nodeObject, addNodeElement, tslFn, float, int } from '../shadernode/ShaderNode.js'; +import { loop } from '../utils/LoopNode.js'; +import { uv } from '../accessors/UVNode.js'; + +class MotionBlurNode extends TempNode { + + constructor( inputNode, velocityNode ) { + + super( 'vec4' ); + + this.inputNode = inputNode; + this.velocityNode = velocityNode; + + } + + setup() { + + const sampleColor = ( uv ) => this.inputNode.uv( uv ); + const sampleVelocity = ( uv ) => this.velocityNode.uv( uv ).rg; + + const NUM_SAMPLES = int( 30 ); + + const motionBlur = tslFn( () => { + + const uvs = uv(); + + const color = sampleColor( uvs ).toVar(); + const velocity = sampleVelocity( uvs ).toVar(); + + loop( { start: int( 1 ), end: NUM_SAMPLES, type: 'int', condition: '<=' }, ( { i } ) => { + + const offset = velocity.mul( float( i.sub( 1 ) ).div( float( NUM_SAMPLES ) ).sub( 0.5 ) ); + color.addAssign( sampleColor( uvs.add( offset ) ) ); + + } ); + + color.divAssign( float( NUM_SAMPLES ).add( 1 ) ); + + return color; + + } ); + + const outputNode = motionBlur(); + + return outputNode; + + } + +} + +export const motionBlur = ( node, velocity ) => nodeObject( new MotionBlurNode( nodeObject( node ), nodeObject( velocity ) ) ); + +addNodeElement( 'motionBlur', motionBlur ); + +export default MotionBlurNode; + From 9a4b19a0d32a69c919bcc201986a73c8a093d99e Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Sat, 3 Aug 2024 13:23:40 +0200 Subject: [PATCH 09/24] Examples: Clean up --- examples/webgpu_mrt.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/webgpu_mrt.html b/examples/webgpu_mrt.html index c4dff12d9b0220..232c1ac47bedb9 100644 --- a/examples/webgpu_mrt.html +++ b/examples/webgpu_mrt.html @@ -149,4 +149,4 @@ - \ No newline at end of file + From 285ea206af2e9bf6a6bf7e0bb54fa17976b9181d Mon Sep 17 00:00:00 2001 From: Mugen87 Date: Sat, 3 Aug 2024 13:33:44 +0200 Subject: [PATCH 10/24] E2E: Update screenshot. --- .../webgpu_postprocessing_motion_blur.jpg | Bin 0 -> 12189 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/screenshots/webgpu_postprocessing_motion_blur.jpg diff --git a/examples/screenshots/webgpu_postprocessing_motion_blur.jpg b/examples/screenshots/webgpu_postprocessing_motion_blur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa5c64c3fff2b85739cba544b97b0f272df7b713 GIT binary patch literal 12189 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 T{gWfNo_<9e9S*1yoqYd)*?P5N literal 0 HcmV?d00001 From 1390197e7a807ec9e4f3e4e6559e04a5357415bb Mon Sep 17 00:00:00 2001 From: sunag Date: Tue, 6 Aug 2024 02:23:18 -0300 Subject: [PATCH 11/24] updates --- .../webgpu_postprocessing_motion_blur.html | 37 ++---- src/nodes/Nodes.js | 4 +- src/nodes/accessors/VelocityNode.js | 106 ++---------------- src/nodes/display/MotionBlurNode.js | 62 +++------- 4 files changed, 37 insertions(+), 172 deletions(-) diff --git a/examples/webgpu_postprocessing_motion_blur.html b/examples/webgpu_postprocessing_motion_blur.html index e7c2bd13ce6972..5e159d8f59940a 100644 --- a/examples/webgpu_postprocessing_motion_blur.html +++ b/examples/webgpu_postprocessing_motion_blur.html @@ -20,7 +20,7 @@ - diff --git a/src/nodes/accessors/VelocityNode.js b/src/nodes/accessors/VelocityNode.js index 4aa150b7f3e98d..b948a812a59f18 100644 --- a/src/nodes/accessors/VelocityNode.js +++ b/src/nodes/accessors/VelocityNode.js @@ -1,15 +1,88 @@ -import { Fn } from '../shadernode/ShaderNode.js'; -import { sub } from '../math/OperatorNode.js'; -import { modelViewMatrix, modelWorldMatrix } from './ModelNode.js'; +import { addNodeClass } from '../core/Node.js'; +import TempNode from '../core/TempNode.js'; +import { modelViewMatrix } from './ModelNode.js'; import { positionLocal } from './PositionNode.js'; +import { nodeProxy } from '../shadernode/ShaderNode.js'; +import { NodeUpdateType } from '../core/constants.js'; +import { Matrix4 } from '../../math/Matrix4.js'; +import { uniform } from '../core/UniformNode.js'; +import { sub } from '../math/OperatorNode.js'; +import { cameraProjectionMatrix } from './CameraNode.js'; + +const _matrixCache = new WeakMap(); + +class VelocityNode extends TempNode { + + constructor( previousPositionNode ) { + + super( 'vec2' ); + + this.updateType = NodeUpdateType.OBJECT; + this.updateAfterType = NodeUpdateType.OBJECT; + + this.previousPositionNode = previousPositionNode; + + this.previousProjectionMatrix = uniform( new Matrix4() ); + this.previousModelViewMatrix = uniform( new Matrix4() ); + + } + + update( { camera, object } ) { + + const previousModelMatrix = getPreviousMatrix( object ); + const previousCameraMatrix = getPreviousMatrix( camera ); + + this.previousModelViewMatrix.value.copy( previousModelMatrix ); + this.previousProjectionMatrix.value.copy( previousCameraMatrix ); + + } + + updateAfter( { camera, object } ) { + + const previousModelMatrix = getPreviousMatrix( object ); + const previousCameraMatrix = getPreviousMatrix( camera ); + + previousModelMatrix.copy( object.modelViewMatrix ); + previousCameraMatrix.copy( camera.projectionMatrix ); + + } + + setup( /*builder*/ ) { + + const positionLocalPrevious = this.previousPositionNode; + + const clipPositionCurrent = cameraProjectionMatrix.mul( modelViewMatrix ).mul( positionLocal ); + const clipPositionPrevious = cameraProjectionMatrix.mul( modelViewMatrix ).mul( positionLocalPrevious ); + //const clipPositionPrevious = this.previousProjectionMatrix.mul( this.previousModelViewMatrix ).mul( positionLocalPrevious ); + + const ndcPositionCurrent = clipPositionCurrent.xy.div( clipPositionCurrent.w ); + const ndcPositionPrevious = clipPositionPrevious.xy.div( clipPositionPrevious.w ); + + const velocity = sub( ndcPositionCurrent, ndcPositionPrevious ); + + return velocity; + + } + +} + +function getPreviousMatrix( object ) { + + let previousMatrix = _matrixCache.get( object ); + + if ( previousMatrix === undefined ) { + + previousMatrix = new Matrix4(); + _matrixCache.set( object, previousMatrix ); + + } -export const velocity = /*#__PURE__*/ Fn( ( [ clipPositionCurrent, clipPositionPrevious ] ) => { + return previousMatrix; - const ndcPositionCurrent = clipPositionCurrent.xy.div( clipPositionCurrent.w ); - const ndcPositionPrevious = clipPositionPrevious.xy.div( clipPositionPrevious.w ); +} - return sub( ndcPositionCurrent, ndcPositionPrevious ); +export default VelocityNode; -} ); +export const velocity = nodeProxy( VelocityNode ); -export const ndcPosition = /*#__PURE__*/ modelViewMatrix.mul( modelWorldMatrix ).mul( positionLocal ).varying(); +addNodeClass( 'VelocityNode', VelocityNode ); diff --git a/src/nodes/display/MotionBlurNode.js b/src/nodes/display/MotionBlurNode.js index d524ba36d549ec..b073a77434d090 100644 --- a/src/nodes/display/MotionBlurNode.js +++ b/src/nodes/display/MotionBlurNode.js @@ -1,28 +1,25 @@ import { float, int, Fn } from '../shadernode/ShaderNode.js'; import { Loop } from '../utils/LoopNode.js'; import { uv } from '../accessors/UVNode.js'; -import { velocity } from '../accessors/VelocityNode.js'; -export const motionBlur = /*#__PURE__*/ Fn( ( [ inputNode, ndcPositionCurrent, ndcPositionPrevious, intensity = 1 ] ) => { +export const motionBlur = /*#__PURE__*/ Fn( ( [ inputNode, velocity ] ) => { const sampleColor = ( uv ) => inputNode.uv( uv ); - const sampleVelocity = ( uv ) => velocity( ndcPositionCurrent.uv( uv ), ndcPositionPrevious.uv( uv ) ).mul( intensity ).rg; const NUM_SAMPLES = int( 30 ); const uvs = uv(); const colorResult = sampleColor( uvs ).toVar(); - const velocityResult = sampleVelocity( uvs ).toVar(); Loop( { start: int( 1 ), end: NUM_SAMPLES, type: 'int', condition: '<=' }, ( { i } ) => { - const offset = velocityResult.mul( float( i.sub( 1 ) ).div( float( NUM_SAMPLES ) ).sub( 0.5 ) ); + const offset = velocity.mul( float( i ).div( float( NUM_SAMPLES ).sub( 1 ) ).sub( 0.5 ) ); colorResult.addAssign( sampleColor( uvs.add( offset ) ) ); } ); - colorResult.divAssign( float( NUM_SAMPLES ).add( 1 ) ); + colorResult.divAssign( float( NUM_SAMPLES ) ); return colorResult; diff --git a/src/nodes/display/PassNode.js b/src/nodes/display/PassNode.js index 6b768794e77911..1c07e777676b27 100644 --- a/src/nodes/display/PassNode.js +++ b/src/nodes/display/PassNode.js @@ -27,7 +27,7 @@ class PassTextureNode extends TextureNode { setup( builder ) { - this.passNode.build( builder ); + if ( builder.object.isQuadMesh ) this.passNode.build( builder ); return super.setup( builder ); @@ -210,6 +210,7 @@ class PassNode extends TempNode { if ( textureNode === undefined ) { this._textureNodes[ name ] = textureNode = nodeObject( new PassMultipleTextureNode( this, name ) ); + this._textureNodes[ name ].updateTexture(); } @@ -223,7 +224,10 @@ class PassNode extends TempNode { if ( textureNode === undefined ) { + if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name ); + this._previousTextureNodes[ name ] = textureNode = nodeObject( new PassMultipleTextureNode( this, name, true ) ); + this._previousTextureNodes[ name ].updateTexture(); } diff --git a/src/renderers/common/QuadMesh.js b/src/renderers/common/QuadMesh.js index 34822ebe695ddf..1274e4ba75276f 100644 --- a/src/renderers/common/QuadMesh.js +++ b/src/renderers/common/QuadMesh.js @@ -34,6 +34,8 @@ class QuadMesh extends Mesh { this.camera = _camera; + this.isQuadMesh = true; + } renderAsync( renderer ) { diff --git a/src/renderers/webgpu/WebGPUBackend.js b/src/renderers/webgpu/WebGPUBackend.js index 58c66fc32171c9..0c864c4e3717eb 100644 --- a/src/renderers/webgpu/WebGPUBackend.js +++ b/src/renderers/webgpu/WebGPUBackend.js @@ -345,7 +345,7 @@ class WebGPUBackend extends Backend { if ( renderContext.clearColor ) { - colorAttachment.clearValue = renderContext.clearColorValue; + colorAttachment.clearValue = i === 0 ? renderContext.clearColorValue : { r: 0, g: 0, b: 0, a: 1 }; colorAttachment.loadOp = GPULoadOp.Clear; colorAttachment.storeOp = GPUStoreOp.Store; From 24c82163ab1562a7e4c8d957a7984b1b5583d7b7 Mon Sep 17 00:00:00 2001 From: sunag Date: Thu, 8 Aug 2024 00:28:12 -0300 Subject: [PATCH 16/24] camera angle --- examples/webgpu_postprocessing_motion_blur.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/webgpu_postprocessing_motion_blur.html b/examples/webgpu_postprocessing_motion_blur.html index 14af83d9b8f663..56dae144073ca0 100644 --- a/examples/webgpu_postprocessing_motion_blur.html +++ b/examples/webgpu_postprocessing_motion_blur.html @@ -50,7 +50,7 @@ function init() { camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.25, 30 ); - camera.position.set( 0, 2.5, 4 ); + camera.position.set( 0, 1.5, 4.5 ); scene = new THREE.Scene(); scene.fog = new THREE.Fog( 0x0487e2, 7, 25 ); @@ -142,11 +142,11 @@ const material = new THREE.MeshBasicMaterial( { map } ); boxRight = new THREE.Mesh( geometry, material ); - boxRight.position.set( 3, 1.5, - 4 ); + boxRight.position.set( 3.5, 1.5, - 4 ); scene.add( boxRight ); boxLeft = new THREE.Mesh( geometry, material ); - boxLeft.position.set( - 3, 1.5, - 4 ); + boxLeft.position.set( - 3.5, 1.5, - 4 ); scene.add( boxLeft ); // renderer From 213bf028194a4d264a4c2276b2148318ab812ae7 Mon Sep 17 00:00:00 2001 From: sunag Date: Thu, 8 Aug 2024 02:07:07 -0300 Subject: [PATCH 17/24] cleanup --- .../accessors/ModelViewProjectionNode.js | 2 +- src/nodes/accessors/VelocityNode.js | 90 ++----------------- 2 files changed, 10 insertions(+), 82 deletions(-) diff --git a/src/nodes/accessors/ModelViewProjectionNode.js b/src/nodes/accessors/ModelViewProjectionNode.js index cdbad88af24d6b..7114bfaae596eb 100644 --- a/src/nodes/accessors/ModelViewProjectionNode.js +++ b/src/nodes/accessors/ModelViewProjectionNode.js @@ -18,7 +18,7 @@ class ModelViewProjectionNode extends TempNode { setup( builder ) { - if ( builder.shaderStage === 'fragment' ) { + if ( this.positionNode === null && builder.shaderStage === 'fragment' ) { return varying( builder.context.mvp ); diff --git a/src/nodes/accessors/VelocityNode.js b/src/nodes/accessors/VelocityNode.js index b948a812a59f18..31a6b048851ddd 100644 --- a/src/nodes/accessors/VelocityNode.js +++ b/src/nodes/accessors/VelocityNode.js @@ -1,88 +1,16 @@ -import { addNodeClass } from '../core/Node.js'; -import TempNode from '../core/TempNode.js'; -import { modelViewMatrix } from './ModelNode.js'; import { positionLocal } from './PositionNode.js'; -import { nodeProxy } from '../shadernode/ShaderNode.js'; -import { NodeUpdateType } from '../core/constants.js'; -import { Matrix4 } from '../../math/Matrix4.js'; -import { uniform } from '../core/UniformNode.js'; +import { Fn } from '../shadernode/ShaderNode.js'; import { sub } from '../math/OperatorNode.js'; -import { cameraProjectionMatrix } from './CameraNode.js'; +import { modelViewProjection } from './ModelViewProjectionNode.js'; -const _matrixCache = new WeakMap(); +export const velocity = Fn( ( [ positionLocalPrevious ] ) => { -class VelocityNode extends TempNode { + const clipPositionCurrent = modelViewProjection( positionLocal ); + const clipPositionPrevious = modelViewProjection( positionLocalPrevious ); - constructor( previousPositionNode ) { + const ndcPositionCurrent = clipPositionCurrent.xy.div( clipPositionCurrent.w ); + const ndcPositionPrevious = clipPositionPrevious.xy.div( clipPositionPrevious.w ); - super( 'vec2' ); + return sub( ndcPositionCurrent, ndcPositionPrevious ); - this.updateType = NodeUpdateType.OBJECT; - this.updateAfterType = NodeUpdateType.OBJECT; - - this.previousPositionNode = previousPositionNode; - - this.previousProjectionMatrix = uniform( new Matrix4() ); - this.previousModelViewMatrix = uniform( new Matrix4() ); - - } - - update( { camera, object } ) { - - const previousModelMatrix = getPreviousMatrix( object ); - const previousCameraMatrix = getPreviousMatrix( camera ); - - this.previousModelViewMatrix.value.copy( previousModelMatrix ); - this.previousProjectionMatrix.value.copy( previousCameraMatrix ); - - } - - updateAfter( { camera, object } ) { - - const previousModelMatrix = getPreviousMatrix( object ); - const previousCameraMatrix = getPreviousMatrix( camera ); - - previousModelMatrix.copy( object.modelViewMatrix ); - previousCameraMatrix.copy( camera.projectionMatrix ); - - } - - setup( /*builder*/ ) { - - const positionLocalPrevious = this.previousPositionNode; - - const clipPositionCurrent = cameraProjectionMatrix.mul( modelViewMatrix ).mul( positionLocal ); - const clipPositionPrevious = cameraProjectionMatrix.mul( modelViewMatrix ).mul( positionLocalPrevious ); - //const clipPositionPrevious = this.previousProjectionMatrix.mul( this.previousModelViewMatrix ).mul( positionLocalPrevious ); - - const ndcPositionCurrent = clipPositionCurrent.xy.div( clipPositionCurrent.w ); - const ndcPositionPrevious = clipPositionPrevious.xy.div( clipPositionPrevious.w ); - - const velocity = sub( ndcPositionCurrent, ndcPositionPrevious ); - - return velocity; - - } - -} - -function getPreviousMatrix( object ) { - - let previousMatrix = _matrixCache.get( object ); - - if ( previousMatrix === undefined ) { - - previousMatrix = new Matrix4(); - _matrixCache.set( object, previousMatrix ); - - } - - return previousMatrix; - -} - -export default VelocityNode; - -export const velocity = nodeProxy( VelocityNode ); - -addNodeClass( 'VelocityNode', VelocityNode ); +} ); From 5b39722d63527eba882db4de6fd091346e6da580 Mon Sep 17 00:00:00 2001 From: sunag Date: Thu, 8 Aug 2024 14:07:49 -0300 Subject: [PATCH 18/24] updates --- .../webgpu_postprocessing_motion_blur.jpg | Bin 60855 -> 61376 bytes .../webgpu_postprocessing_motion_blur.html | 19 +++--------------- src/nodes/display/MotionBlurNode.js | 2 +- 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/examples/screenshots/webgpu_postprocessing_motion_blur.jpg b/examples/screenshots/webgpu_postprocessing_motion_blur.jpg index 02d51df349d99fe863e06284a0092828a57cabdc..668684cc8814eb21e9da1b65f31005d7fc6491a1 100644 GIT binary patch literal 61376 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 !>acB(6X8Q(}h~E$r8^-7q1Xw`-y2>lqJ{xc< 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�P*leK)KB@S zO!h(s_=eHqAIKhq5BuVbuc6?VSGSnPKTMk-7U$SgvzV2T!O#kyJq+&mvHkW_<+g2>~mJ8cjZ$tlf6;yBy06I{W z2=cv(l}ADpMw`YspJmtL1_h5hKhHxLq9_X4a4c+|K63@o37C;Ror1AmB$e{%Y7lb% z;3dzCp1riYSRuX+kbzbmfn13}I3!`7h=O?m*@-?Kib40jhbT?)eF593eJs>b6Zn}n zI{!lt-c9WhEj}g$Ez6$SGR}|APJWJREOmhBqond=1$LZmaS{3+GioQPl z`F!rLeH>+Bu`EtwwHtr84CocF+8}=pU(cLw*EO_iJIZp5jpd@^wy)8`%M-Vi4JM_pOZDk+Axp|5~$?8s><`zr4L=3Th-k0#?|WistN z9;v1KO5|}s#hTN>bO0e`!posS6$|`&zF(SeA?e^nr?o!43Wh9vR0*N^y*c`>htdnJ zw7QQ9N;!KZSxFpy95)KL4!<`W@^U z;ynma#Qx=WT<-1>uC)D024`dBle)Erck}zy!qO|>o^2t#Keh2QGlf}PvTUi&c(wwBWPGNoe6^bQq`MJ*djvkq?j%#niigny>~SCQzw^PO2sbZRZ*T zVjo`Ez@Pw>mfv@;X9nh1KD%L{Tp>K*Hi_2Cdveo5Z8~0nO;km1vx$XhKz-)lM`0|? z5d0V` zHJ+{_IultZ7iqvt$^L1Fb6aTk2F>@O*BRyM5f!wxY0pJAB5*3WOnIvgCX!(Qe zalS+|wh0VxPF!Rm3tUUuwOMh7w&P|ksq@H4KqKo@#=G|m;HPhe;$F-&k2GSbi~w@)Xo;h1|3qRs1k<7DZ{0@%q29#YI?H3kpP?zcZdK&$rlYTE;}Fyq z@;4IjZNej;El*qHeu^gIN$cpD?2*b747eQK44ApTVvM&9l`GA0l!R~{YrnNWEvLO=UXNmujg`-{1a>y1A;#*E!+ zVsXA-ozCdIPO@vyeK^N8BfIgBhOI-XJ;M~p zM;XiDxk#nfsU&K}rp1(L<}VC@D`CosHFCrA3gDer4UQ2DKfeJc^JZ+z>gL+2iPuOv zJJqio6%ozpZ`7nhBJ9PNVof2chqbKPzBvwkjwbM4bd?3e9kRgqEAEfa707KvbF3Dd zP24cuxd2>=Pzj?@rzYEXUp~la&>^V%;MHSd4e6PEV7{nP-eAwri8dpdi zld@lC<^<_a>W{!@5anhw-41>$y$YG>-g9c)v7S9EbAEPbM#?eg-&c{TXa@j*(oK<+ zBGxatc97CVUwt&wVLRR#tNBjN`GJ*wqoA~AL~GNhH{f&^8BL1B6*Wui)`fdxvXRF8 zeuVQ%M)APM@9*SJeR43@d*Y1QMwbcgF)7OQZS6QcizK@H)oqVb*{?qskTh64e7NiBdT457YO&8Cd2GheqJ8{I1+bC8z z?al(n-!IB@RaJTDFnq7XbT0^0XzI>?%#kEDN44CjvD@_%)udK#Mmc5EBWp@;z41%0 zo-otuy zvh77#6C;_^!L$B=p}MR{9lXkr^*8n#fxc}G(!Md1vhmG5bJdkP-B!DHLZf({rAGCg zujqXHRxPJry$&TT=2NW3HTk76*JJ&>Bx6<#e+aKz<|=S+WE=nF68yeEH7$;@`};8u zEffFpKPp@55s~Dr0&pSTqrR?-oL`@uyTr`sepzLnD1C%qFTId__7rg%!!mcA_x-z; zvE3B(289+TP2{pKBWkoA4(9cxy2u9PozC^|99cg=Oj`gPyZgHobSHcT#|CeD-Bi)) zIHf9TH8pwG9)vtdPfhkFp-10u7lO- z6fJ%xcf?bna>L@|zKZncIYRM$|K7I_LuXeyp0F(N;B`8yR>T5N#0;~+jqXmvjARyN{$2#s9KBYWIO+r7UHztl?h4n@cz)~27>QS5S7z#Z zx+5d&@Uw!?pMHL%Su%pHtco;_6|sxHm=52jQg4?a$;bp=`9~5fH4dY%5@)0PIH+hI z=y)vXJJE-*dy%z7Z7ACfi2_s!iQfdfYEeqVY(k>>=N`=DRSAOwq}IHp`l`yV?{1C3 zi=2mT{14y`Mjs?LMV_tsF5Fh`alLmZ-oOMJ;xn~<&rt{O0TlL+@CKL+0l*A!&_aN_rNQY@r5topKB2xm&d z19x6Ym9e6C4)678Z#HfK<`hIkOqbg1*=baWO-3Bdn>Ya7f%SsGgLw3HJ1hO_f z%{A5GcXBRxQQn2_XkLn`8ZN(*UN$N&R?;1+_wBiYz5cU$G&f*P^-A?H>}{^eOkNE0 zC5?ltnclSH;X?R4k!<4?$=8RkeyDtQ_l&zy{=SDG zXMRd=VBte(c^hAB7l2-xoNsyiJ037wPjDRv$-@-6B}Y72)zLpib(|aS3Q z{qNE_+?<~MX|B2qy{+Mj%{Rkn*GkQ`aj+HpT(yt5SaLUx4Z@g>K$1Qhz5k|R{ixj> zdTI0h_q&iL&7c14y5}FN1qTR(4%QN7%)|dce`#eL*|~p_gefz(soNlli?^EueG5eA z>GxkHD#nq24^#EL{NzfRnL6gAvQvJRI`1kc?))rE{-K`K%#?fezRDXpqTEg{`k#%? z;*`6cmH5+dUl)N?-TDB_8yxdQ5H*XSFDBUb#nzw2cPPW(NoCyNi9p-8C0Lx<5#la_ zy{MoX#%%@txxQrg6-zyCYtJYrS-JGr;r0%@LE-~4*4d6b{Av=5 z*u_|s;5s;zYddpL=%*4t%o#tp!i4JBDcvolg^3KqfWJceoSkz1lf8*~cUZu{LdqW` z88#S(**$T_4szH}Y&la`l|AJb@(gOw~))VG05%BJ^KNfJ~+i@4x1 zvYq8Wxb0J9F=yc)3tJ=}uu>W+TZo|lzy4GLJ?4@o&{$O(w!eyKKl=eRQ@C4YH-)Z% z>_)FZ0aMfrIdA-aZmFY3Zuc)Mr}$nwmm8bQKZ=S^dd}^Ntra8fQy!kGh`UbrF0GEZ zG!a#nnN_}Q%I&@m)LO6DK)Dx%f_E2j{|mt@KGY_3!h9F-$IIQc7zgXJj(PVBBCKDt zufVw+#V5hf4Gq0Z=&-OqPnM2(cMC4Z%AdB^jlLCWnv8!3{sjCj@Z#zU_|-M*Z6Xym zxazU8uMPgzewEWrJ6=Re+at-Wt^9ukQN#ZL3p>SMDg*=m5;>H80)`b@6R2J3o;ij{ z*Zvkiikt7vl(e`@eW(vx`&Q+wL#U_#5W-0>7HrWEbe-D?5*&B z#NQM?Cx_Jhcj8%mIi_Mu_@>qFB#vg!5&ZAp+qPV175?D6mt=2F%_1^g^z zW0@tNM7L%q)RtV6_}4p}`K!2O@T2}1!{J`wn69P#DoR^WaCQlZX$$7qnR?Dg0C<{4Ma>KAoq?_UigXKQx44 z03df_C{Au^CK7N#q zHUQ(qS8JcnN-Tq@``?H@EwO=GB(pl;{rjG=&-XS?9 znUt1c+?`AWj~##*3~ z()Y&RErRYA*>!Dk;v0>~}Z6hPma= zw`Qx6oeW<9z6#yjg1-xVIvW`*np^;n!)<2eHPkH|jcp9Q&XKs<+~K_*t8|^SC2eH;azz6 zuSV2t^><=C`+a`hZxT`He9xJFpo2rzS%T2}-p~FD7yBVvKtJNSykm~P*f%5j$6VgV zp|3ng!T$gS8U2-YTg1^ce-+(aUCQAjwoMxAdokz$G4fBP9>$<^M8o*)`$2xvR~Bod z{>}dY05xluxQi{WYEUd`06*M?-C5iH>;eAQN^yi2#KF0AN6LOI{hPmSj~ME6_@BhT z4SYd=s@)Uj>ROf6xpiOep!0BwJ177TO6c~KwnRA2<|U`>Tl-hVaJM?2!##TWRPG4+ zjkIb{rxKise%1@9xnyod`y~F<25?j09m2aD;q^#}Bj_I=n5p)(dzH&B$1CIi0EE8~ z{uyi5dPl{WwBHHEeE$IP@qK(GWKQf6OELVhT0*2`z0ow$^%v~Z@kjm%`S2UVi#C<< zUfTCoo-zHQsmozI$sz6r6Xjg?70*#so3Tm79<^cna(>A3oLKx#gCt}G(=LBg<<@ST z$ITIo`*!}z3v=bK#7J4QfL_jAep_?;QucEWWJRq0*}nm9ZO516fGxB0I@r!XJS8~!f>2*NMk8*bVj z12^pL@$XNI%A4Shs~pYqJci=jl774T*2<&_v+P5s{?30Ng~_^qg!-q;lbK!>1L^z2 zpT?iGr(jWii?8rk8aE1RlJP97JN4Nx8Z#vZD++k2DsC# ztB(my{d6`!-4A2dfv`+R=Nmgyn?0EF&* z()LpyJW-u>{{RIJ{g3UV^DllYzH|Ps`wI1O`NArdIrbBjPcHqaemKAF zUGVzf;kWFSYjxtAi7(cDT1ahP1%?#KRV^q{lEiWCTE-lj$d~UcBfuv8n!jv&d|Kc9 z2D~`n`Fe%7^52?whjDVv^dKLyckMwbd4J(T>XICCuc+GN{{Ti)=8tgXpJKJY?7RC) zSn6M7li>x$kZ75dCCm=Zft+yIA5%v(dyA4q9eego{i^kiE^B=^;Jxc$5M=vQ04e_f zzUiq!bq+}%ReT5iv;GKt7x-19{3Q6Z<2md+N1)k@T~fs9ml6mabCum3Y^S$EYbn!| z<#b)rRy#`{_$Z(3sAlt{_>D6VK`Ocx;a~j~Q0UAQk+m266rc7&i)p#>-RWi@adZo^ z59JjvV^DnY8FBvr1sVO3z-c4#ZSwQ-<3POU@DUn4jKiKM&p)=O#y^FhwPl8hXYems zeM7}scBzX?2`r?ymU!G^L{l=T2LLt+8O3i#E}ibQCQV6bd0w~sA^z50B83vi;SRq9 zn|@;*)wU10%+*S)6WpFzGRBMh8h+KfEs=*%_${nm7W>UMqiBr3NArotwI0%+aj46& zeE!M*0JS8>G#|6{@qjR->d+oN&zsFZZAlK#v17u&vX||b;V&52_|wB*3uU#v)2>!n zl08BYS$l(q@Y~*>l<_H*hS$nbyKQ&jjD;>~1y zK=@~`z%?tDA8pgkoRLR66V+XlXg;|hALpztv|@I8m@xj${{XZHh;;PS^zVZDlcdpx zf@n1hW>#LzKY3N{A$u`dj!%G}v~7e-Z+Y;CRb~y3o=b3lKQ}b}r9R_H_AX8EBjf0W zK=?hW9zOeB!H>wvLa9%=R(*?p3h*E8P4L@YO?Sb+4>c=WjN)jFu=!ID?zl2xhwDRh zn$?NL^ge{L{iSXEBjKpEzm47=zVN)Mg}7;Lo@h6Ei6aaEK8=sZtzhAOoyU7_TetnW z{{UubA@kqI5=sE;29a{d@(6QN?B*QEZO`rD`!6zWJ~X^SdK2N>#s2`>R4R24ImMax z{{XiS?2mn?$z!hg(pg}Y3P}w99K4Za2dH3SAdjf0$uuj(`D6Brzx|K(Q8$Qw1AJUf zD*cIP(C_qnv1c*#M=|CT?aKQtZ52MKhSx*P{0Z=56Wr|g`D_y>O+zN1jJ$o!lHvY-~00TY*sJYT~r_{B!Tu-g)06gw{ z?avXfvi>=)T9s!lv_`RvQSFwH>5lFGnHr3B50azYlUTc&Xi?QA(Eu>Tf9H+gDUU2q z(BlJl`WK8iDiQRoLA zmC~-2k(QgYb3n83U>-%4jjE?z%WgmV)U|t$LrPoE4%h;gu`Wklkz`~1XwYXrsN6wu zay0^4IFa&^LlOS~$B64jqG!AQ%ipuQc-zDlUlRT*Nd>Nr0S%>Tmo5<9ws>}21Gmsr z$?~l?DlxvS`!dSqA}bb*VU8plcEtHqQP==*E1madwj#gP9?sa@!>5@!z+yJ;{7z^} zXH8d!abzRzf(5Y#ofT@pDuE%_2lQ;w}f0(*_59{$1b${4K^{T7V?ot z%8Gc$zcp65I~7+|w$|?w(IYBA&+gkF%e_BP8LfC=TuKVv1Xf(Ial4OST6+rDIKLOi z9-C(N=>!iN9Kv?6*nLl>2u%Bj{t3>KsegTr+W>WM0|_ApyO5J@brsrYtD1d4XeXK)-aAMEl5X*j32T>Rwt z{{RKN{{XZ%i*DhzFr?b7o8#azwr~zP=DK5~5zQ}%$J4Cg;xyHzW*8+5V~=j%%9~`G zQ)y6Y(Rpch%FzAddwX%kE7+@CudM1<`aYfI%XJ}Ny0ZdCKM}zEX{}hbMh=PM+s_a9 z?@IA)ykN_xU&kzS!!ay2usAvVs^i#4>$k)28)+UV@K%@N@~Q=SQ>r2fOS7MKLJ=AfP_XellL(!5+rf8(K>^JckVoVszen-6*lNFJPaUi|B z4{vtooS{>N$JB~zU}uJY-ygFIe0unEAByyyB_-FqJf>@WAOXdWZR56S}(_;jbB^f4noL~_|la?{%G%tBcCQR$w!_su3F+<#>6+VfQS zYk6<*=f{_l+~_k(1&#d0gqCFVQp2j$&I(?oMpkFoOXBSk?pS7nS+bDMfsi!AE)Q^X z&lS&RjaJ0>H&ET#{i5AcagH`%fPY#BiV1tD*~gokG=y%>=j0LU4@!1SEL*>W!hRso zXVUfiD?6)uq$xaCF|Ni3u?Ha1)d{2IkB$ETvIdjj$?kkr@Q(alX$a-7G-ELHEj#8D zoU(tic^$J`##h{j3v786v^LJHk=-oO1B5O!gXm6j4OXNXTD7IEo9(``c1I`X-@y82 zniD8n_*X{N11_6&6RGA%C5(0bDcyyUHh|v{eiG|r#UBj(M0ESrBhYnLP?2kqDf=X?)8^0my!-sV^^~b~iKJ?GJKqXw z-v)Ghfp?~BdR%e^1O7uO&GgGY03C;J*r=C0w*_Ol(!71}@^>V7{{TdU9!~vUEU*4O z`qVhfu}aLcel2_+(RKj<2}x%~DLvZsJgCYk z^c8YHjDQtMWz8}6)k+z*9upIf3N&4gte>&2{Sj-v@zIBwi)Y3GzjkhJV zRx%R9+~EG0HA>dl5@%GJg_=ekv^&3*f90Kofq$3tsIwX+v)1O4L2ssbX7_=gGD}8P z{K%t~k5knD0A=rlIxob}5`V&5@iSGju+eO#{ne$-{A$-uI~C4CikY_srsITe^**zc zS@>UgscmoLof&Oy*d%c!#4CUXFaSJ?=3M=abVZBb68H{l5d!%4NQYqBBNx!}I|GB$ z+ceUZ_6^ZW?^*D6r+*X;<9jqaFdhv`6<>S|@%q(jmc!6BtyAH}xLZwY;%%%bqal{@ z7e9#WNpp4$4=MenJ~sR_@E60A;qL=a4yCBylD5a~216L=WIXls&wr(91t#vul#)lv zmfGuDD2h2FMw6DzXE{B31Devz$Wg4w@8#XzNgyYd3!D#Ow>0eTGNIHwJq^a~I!lDf z`IuX|-R;PumO{B=(G6&Y=&$+G_dr5vrWxkl&1arn%54ueB>a!J+wk@%~*v{?$G$xmCQIOFGQqWVD0KLi^4RrI2PnL@@SdKpv8(3IAovFrCpiMebN&4gZQOO`VU0cJR zBi8Qay0y`DUm}0udr3ZCdCv!$q?oMDi%$<;!>7fk+v(SAV*`n;83-SU=jlq$_X{)Z z{{Yy7#s2^eyi4IU@ZZFJPTCD)LXDG7`*r^SkXqT#P8bddVOdn&bvKWh^dw$C z_;+VEZ~R@R#Tzcw^L1#H5^VUJ`i8T)>hvZ^az=926b2iF&#%O zf&A&Jb5CHp?tB~jQ+O9b@Xy5=HQxbiR$8u^tjJ|Hx_$gpv@+-C8&Qb>^~m@1uE^cT zQwggxhg|}D+h>9;FC!R83=UiJ1B!awRujXzcaAh^r%gsAx`I~y%x1;oF?(^=o8@a^ zq|vzst#51uO{Cp(r$tv}e^?XN|rX+t{t{nei(~mfA(kNG~Ej zSUqvhd)G5lzQ&pZ_>1AS(!GVh#C;#hVi+;hVIcJ+0vjWmJ^kzjS#|G+@B$a&HlH#! zcSd!14o|k@Rj*-;u!rG9lD*UT=Eh?n#MY8(ag|~2yRc}ygG0+dXfK1`12wqYSnvmn z^lc+sIV^(U2(Axc!#p4MgsP9G^-$YBa9TxIPH}&c6Y^0_pKu3pusz zc6dR$zH3$|o~pf~U&klDXq3}dHBqtab`p4I!X?$T-vPr4f$}V9p|SKFn$MYbD#9IN z!(No$Nnr3S0Jdcc5qje$o$fsl>m5cbn|UOgO|(<9aF7v(9g2nnJbQk0uKF;#Mt}D0 zhNC>T_LdOJp+J&JU3vBAr}CwDVY?qRe%T+jo|$0`{{RR+5KnIv-aNfiRJ7VfxW)`| zupGCm4xY8L_feFmrIGS2=Z9>r*KVPIaVlpl#^Hfu?}N=v*^y8F5$_DEKFf9>oH!FP z{QA?o124puIu@4)oo)7EAv{LQ(0Z0*`T$L71s4700T8lXEhLsm9!{_F5Iwq#(w8m$ z(CAsR(zTxy>Nb8K@V1XF-QJ^eu-n_(!g+Q$3NUg$rjl0!^h5S({hvHJ@F(Gf9v;>0 z#Mk#Mlskjxdtvoek0!gPrEaedd!jTAE0m%7=YE!t{wx*<7 zTsLw3hD)C)Mg{>2bDo^zpTr8TT{j`i$Vs$@(JUpnf>GtWmSB5&k;fD`q4Oh@n$%n~ zz23eU?jk%c?mqwk{Ha+kqrK0Szu=|+00(9s9Me81cz7bq2{tzeXvhuoAs}_b3=IDO zezi@wkv)%qt(65GV@t zM>yfpe;$5>Q7%+!n`c{V@e4uLQcWy)esA4Lw8?cDLb*M82BFIPB9a|0qLvQU?W9~3 zDU^0qka66R&*4*cG{w2q?b_PgQN6N&LS)*47U~a8%0S0GvT3&Mbi(L^Qj*U|4?5_! zuN;h8U^f2jdyoFL7i&Y5}IjkgQb$r_GBcO$)M zrOahCw?0R=@Mni3GANDN$-{<~gDj)b#;Fpz`rz;C(Jjr zg!bRrxAtt-{yMtrTB*3v{50n)buyKoPy@6hlBj>a+!(`+{uhqPg(>n<3EjD9%@Jm?0ro(46%?^l~Mr z`I|4r74`kfnCv8uK96xEigWZ`)N+N*OP$6gYnh#qKoG{3`$m1}wf7zDQM=PE^>y8- z>B}nf=0x!i!y}>T`BSn6?0j?kTK?1e7lyTq?}a}Ct)l+aaM5de+!HYt!0^b2vvwq7 zrU!BpQHVKQ`8HYB&PRshT%LI)VhS-X@)POCaZ7Sdoio8fB9HBtvP4}2uFMdl`=>na z{4gm!0JkQQVv&8GD`kDa^-Sbb=JEp{QSdj1-ZwgdDYuo|{0Hbd(Qqn%WO!b|A5ghK zRy4>g0+0afoN#@qY6sX~@JzqiZJR%|KZ$%fCAG!J?({o(vP^Lvvk*rFj+pf)(u$Jg zMzrJ9`yW%%d^P4RyV*v~v^1-hC3|Oqlh4w)r5MTTj)dAAo)PfP>ZI`7D2+)D75?uy z3<2ckrO~E7c@>AleHLv-JG*U4Syi$&!!8%;k;$o4BADFWtXsd*>~z}(x4ML^N^lSW z0U6+Du74`l_9Yo`%crg3g5OGbBvk>1S}@yb+lc z9_yd;_)r!x^_>${l4Egi5CpFxLU!ZdnrWd~l=NLTZ9KHMRs(rq^A6vwHtq)X<>Wuv z!41m->^7)UGJAb}>PLMKxW8bF3ya^`XGOR`mgv_vOC0UAxE_1-&VQ9T?r9lW9@4VK zq)dUl_uf86^7jMzcC7A`DL!Oeu)Wt7N0RO(46I2&0bRM^hYE2{B)4<(cSX@#OtO6wRGc-%mD9pQH}4UZ z$RL1vcA=nGH6AB{*(04nPT4%3{2WnWA-KGrG#*WeZNTMNVEt&g8RTn?C)$=$ib>}R z+2i!3b{d)ssoJ6>w?Ra};0>F2^*H17qhPt-{?7jZ7(6HN58~a8?}(vO;q7i^i&L6T zR?0$tON?iX5;K9&pK7?JEd?z$KR`S=;ExJCMeM9Ct`c#)+(gV(v&bq~=V{}SnqJKZ zJ0tNfo2M#%=m&J+qeOAIW2Y4PP+g*ol50qd4ULqaXO(dzaw-C+)E37|ZCMQy+<1OD z>C)IDGpW^4i%`#QFK+1UWl9w~8b+g9A4pt(!abc!BQNR$EYKU=X7HiW{r8<>U>4}IQ%d8beFc?Hu&q~4HD|=EwWkoarJ1; zt+DD1-#71Ae|PSV`L97G9)~99)*c`IrhXd0R@M&}=t4O7Unf(CXQluTO3j9d=xje| zzlYPdSI62CIpD~;tSSe-HyT{5EX^G+_Kf&l1c9!+cca{&_HW|;WvFqnM(&sUN_;N4 zkXt9j4GsneaT02fkUhx_#U!pbqB=W2kN*G$qPCJp_@$t{l8_5Fu@}mJ-QSb=Q){_5 zyFPyXtG{i1Nuay$UJ;J@TL*;LC<^40k*B%(t z+FLyyd+VF0GF(cwY|SJ7UzI~v>Q#xCu&BcU#+xx8`Uw369H3-) ziu2>O%&Q`NJk?emz&RRQgO5y=C-F4WL8;t+#=oItY# z<#~!5<%|Z$Q^s-7RiuzbHqX_4CsXiVi(r~PpNzD4EN!C+4V|szYN(@tI{FIblxHV) zbn_^Zf5O1<(rO+}mc6B)GZ>YxQy!e0FYd)0HpDr zbIvyt#wq(ZU`>k^_lAm*55yZt0&om>hzRU?&l#apY)*D$8kdbcAL098U&S^q`@!7z zYlc49>;C}OrO42^ud$n|{A2LU8a>XdKCNQ#+S|zNR{AAVwMoYF(#Pl_7%jCG3(sBZN;#+fAhI}}tWDxjZ1#~zilU57DQ1JGu5l&K8 zvn5|1#OL$HS0fiOcT4!C;oV#%jJ6k+@&zSkxwhJ^`DY(WT&)Gh>K_txsi*QZ^^nYq zwL;prCmlx^Cp2=fzNhFv{1c1Cz7bE^b49oDUy3yQJBV(sx7*!bM;k6?V~i73C3YPT zYt%er@YS2mUmIx%z(-V zJ^ALXE0WPa{4HOFH*vHd@SFH}hQ{c>wBcpPt~Y=6>GG0(e16=TMTdcYJ>2+{z&cb~ z&Yi8qE?ylj?la{`$L1^sc+PSCXmPnmk858Oyg-+!YySWUrlN*S6)OpDJuo`=rO3kO z_M7ATYmkQb!@7WAR4WS!RFmA1w2#)GD+J9+{8gvhf>CayW6zelWcfc)vWBEPnD=_l zo8lXVl1(2~+&CpPx#IwjQ?P$Jn=sRIrmT|R=`(1M={kkf4uyVeS;GwaWE}JFM%s&8 zA6WkY!9IU%Jwr_Rbbb!}Vs)~=(IP9PYI>U(((2T7jh)B^)37HcdVSj3>8%O2r_lFb zwC}=L?H1xsh@KZLqdV7Jw+x=S-5~yTDLag-FYOcXcToQTNw)Z-;npYaG1o25N8rX_B$WwpO1l#dC=97LD;=RbdNwGg@VD`DQfv zQ2TXUAEz}*Se;K@{g{7i50AeC)qES{?+5Femxm-FF!pkJwqyIqNW&=p=|4lIntO)`glgzjOJ`P8OKG^n3{V9DT|QUkBGv9ezWqb;03ml+~4%`T-aidtoj zlOYXf5ybczj8g<^TWR(gpZx|NBRKug^r^m}jo;bVPq4fAtKiFft0-lTZD0wKNW%vi z?hjwan;d!{tbQK0w>}MWU_yT0vFBj>n}FN&#~7}9jjCp}{v)pN^_7@{*#)FPVR-V# ztu)<+ioQICD}7p7t>RR14nv~g=jtnHjiqC#@R0NTHw=?}?X-N&$?02J8AyE4LAjgB zOzb@E9@R}N5=E<8+dhRR`*b`Ws68t_jB)sn%pcnW_x}L2jg zlXe^2rKZ{18*7klV;4rLHZD6AwOtcMgeQ}vTBpuF?YfWYSSHJR7O(Uj4fMBn(X9zFoRe<3{#B`)Z2YzT zsco(7J}`KdEN#*e7O^*$B0!-toZ}rUUZ!mF=%tmd;#QG}X?|c&UX(IRKVq}FwsUc5 z6o+x;;|J5$n{MD^U)x*9B*7p+HgpOHYG7h+GGSyTf}z?QoOGh>4yQ@e>>Eg$;jE!D z2W&ZvXY-`nxF1G;!5S~GZvHEHn#$_(Sz#7A5lJCs7?9(G#}%X47RTt|va@F;ts*!) zW--S#1pShcv9f60+Rh?Dd=nV{^;C8h{o^{y7++k88YLj^$Sc;NZfMP`%{xzByKG?@ zBRGh2#ZugsWb5{JaU%IvkuS;oF@fCB_XxLR#=mRZOJDd=nw`hlqw^zVDJH>{JBLHs zicPk~_K(cHKnu?iU7Nw?mArkXPn#T$nWS6XW$X|=>1Txr3fLt_6bR7xZDV6S%=Yuy z#PO6Qqs9p6ds2`iGHoYI{@3#V0JClO{O50yxa;(*zq$lhnpT#vBQBe64*X<7zNgxU zxE%heX=`n-UM;n>afGrgfe;O?>M_v!(a=o&8U2f|@Aa>Q9ub#Vy_)T$(HKbAG8qeF z7|!hH6+KyZ*zR<=V%a2qQteq-1>3;+jb{e#%_LCqm94kf5`VMDyb=TK83R7Gv|fl^ z4tGGfxRUBEtv+siYFLR-?eDAGdZ0?IOH-TpkbbbW|!JSKmXa# CoS(-4 literal 60855 zcmbTdcT`hP)HWKV34(|SN>>4qF1-`6Pz9uS5J6h#H9!bTm0kl%M@r~O?}Uzk5PI)b zdO{75gpc3*uJ!$M|GD?>vu3Yz*34OJKl{wgnc4f9o0*#xzylQpWd#5M0RTX7djW3d z0l|Pf1pmo@`p$nsMEIX3CL$svA|WOr`JX~cc9(>djFg1r?!CKYN+We2U+ zD2iS9vs)k;Io;zY^b8y?IA3yci-?MeOGrw+efM5LQAt@vTSr$<-@wqw(&~$~jjf%% zyN9QjH`vEFC^#fE?0a}bLShmuIpxRC)L*%I`33O8qT;IRn%cVhhQ_AOuI`@RzCZl~ zW8)K(Q`0lEbE|9X8=G6(|8{oK$0w&}=NFjED*^!F|H8S|{|`L3zzOdB=X28k@DSYb zzAc2*M8wYoNgm2;l3KXZJQw=4@51UzIhC3(bMVg zSNurZ$ykesYf*fkuhoZ41cN0&ly8P#=nv!$ARyG~gu^^p$$i>3bF7tCk6E5!XtVox z%b4m|9FyWRi`n8r=x+e-j$YdO;oExl!oJMFgSV(g(X82v9xt)v&xVOge)&%}WZtO& zPZ_lGEyhcH*j8=;0IIIB`Y4@R z1-HWWMihUACx4==+)wVq%;D98JgdD%GVQExJ(DtK5Gb?q`Vlxr4Y*$8D!L1s@E|)F z;M(@BaT4;wP3;+JnW2&4=FM_Vs^LAIHB5h)LOz23FoV2V`dE_X1aWy-Ngp`Y75)D2 ztMW^ym4;*OBQXpcZ-5M5w@*(XbK8^Ij*WFi_&ppyB1bv(t4?WP&+OgUn^zx|%2=k( zHbc05KX5}RaD=s^ZR7TxhwBi(aJe9srP{I8zcIwp!fOH;E|T~{I|S1yW2@Yh#MDt& zAw{TK(1knj)P6hNp;o#`x*NR%QCy3b=<-c4esVC-s6XrmmsRSO*fV7RnRCTaXy^NG zK;XIc4d8>EmHh+9k27rWa-h*7dyO@@n@t#W{)*R^Do}*aNxE+KMa}4U>+53Vy#!J? zkFJCf$5>iYDP)|a&nx{7aEKRc-7*7ZCa^ai}!*XcBqTF763f}OwZsOwUUhftuhy|ky zVjr0?P1qy=h0OPN2Aw1&j)x`T5+HXePl23E=at9|-?;^oZnp1_2p;`0h`PTwpSlGr z_s&v;wrlM&Y)3;h;GhFCHieMjxF}fnC6aCDYO<3nUbDuZ?*?%9Fstap6l(Cf+v_BX zSD)Od_KX#{ZHI<6<=8OOMP>Cp8jt2`+Wh1z7W!J;=9Ax$`1L4M1$IlJ%iv7eSl>R?G?VM`RsL@_ zAQY%m$UHEGYIRURkeX!i;9)h*H{2Ew=J+W4^X7}i7}fLI`g+uI`}~2XKqig1JIG;_ zCd6`^2b!ZHTADM+m<<=_nz?+syY%I%yO^yXw{8PiA3rJe@sQFez5!V9*f~HS?J*1v zlwO5>XZPO~3)6{_XusGrPW_kvDBER?d6#Vpt6h#8P5 z(U6`!JwcAhQEFW^klLlNpVzzp)CuQ`} z?%hzn`gclBweu;#KYe(%9<^=P` z>6-BFX`NT&MYCeQUX8ZNdhW{-^US4uY?c3tb0u*+N4xUx#Yb6xzEO8mZ9Ki`0M2@^ zO!sAlTm?iy^eO*M3FN1Ps4T%BW!vNHCA8xjd-pvqOOEBB@V$hj#LCTp8YWg+#24p? zd#IAt@(ME4zLANzk)OR@q(}$T?@tDnF89k~@+kC6LP|K5R!i;3%ZAXRO@8k*wYJo2zb!FVbc2rNYYwFIlZ>;n zYU`y1RuSdu8?uE>2RLcW-SIPCCI^{4AKQ%BT3kz4%ztVd&b;-DzUnCsa7mP9zlCE4JQh6wI(NG+CHYs*Q9~H5aRJw_ zq=Y-=G)xNQ)=V<$M?0|zI(Tc5j0Qfjl#2rA9S~=)a_V0HS+U0b4zSgbF}?wGD&{)f zRZ6_(jTJd31)c6_6^nrS>3pfWmS?+G^?PCgMpzB>i`t@jd*AK^lieam&xgH zBtmZviB3jzuggp_eR_`bEHTY1=3TLY1o-Dz3iRe=UnJivk$J!7AMlVMY=Y0XkA%m` zPZM6fKBJ8)(Snx^?X03jPd8rf+yH9C4@?<)=aS*M;SWN|n3GJdZT=R5{|VGMR6*We zQyocZ5JI?7eFu!L{%D%@l<$W%NSerXJ0?AbB)vgbhxj6ed!dVyp>EJ4dxRr-(?Vwf zBTeXd{LJEHfaP*nCgs=})nl-R+4Q*1=z&%1xK-+zm2Oiw%)$keJNlDmA)|BO?xQ2% zCuHE&cBKovJ z(!}B2S`Y4ODbKm@+v-}Me)hj*3GU+g6DaX zrLLLMMjoyiVJqw8)522-E>Qy?-Tk%^rtF>^>2(cx+=@+`y4|cUl zFXzP46Op3)BQp)+`fHN(KnK=2`Yl`1?;aNHsu@H155C9+m$+~#8W;Mt1=j7Guzm&y-=%2ZP`^%W?+2+)x*ita{*J2o(bH_19 zyfF5~RPE#G15ctb4g5qrd$3ROXxr)C=9sY=na??GrXRVaV*YL&1b~j_?vLii>Y-mG zaVQY=up~%sPkXDF%~_s5LMmfiQTocbQV5?jdVH;}y7+DBkjQz2NOMTNJdu!4;e2i5 zu<~}R*uurL!C5(jDD=^O77DqF3>1z1ZpJb#I$CHuRdA#ZN}G%)o^YV}GLgL?{?$b= zUV9+1VNzLnHq)^LKfhda6kHbU%_2DVMOrzUW9)&?kG)~vNk3&1XlIILImQwG{@QWI z6qCDNUhgezJNCa{*M9Q^tQU`tu6TOUU3f*dcR&9mNa6f#2^ zWQ0ub)1yE}!QGxXe|fi$_X_J)Sg&q}!&sG7)0j-)^cu3q{A*J|4r+WgrqWfwQFD?^ySowKU?>kH9j*x z9**$tJEYdSoYKlXF=2szmLu*Z}D7qpX3%cgRzMgEMNAdJf-p^qAs0I}USv7h$2;NcO=LcwI-(Sc)<+>dV zmu$C#VHgEJXuW<9-s_%fBTnpT^5cj56Bjkqj>QQ^D0YXn-PP{Vmr0#4>rMAmI)&qc zpoAKn8K6Q?mq7BDiLjweI3qVqqDHZ<$Uhc{DOp_lNkR{k&_Dt*2{ za36EdO+lF#*L?$M;^wdqAj@McY+a8+;ELPiRH~#vMsJm!T7gx6>@*5=8%ihUL^mU4 z#kFy9EyQb8ZR}{V))KLbqR-pfV9xI^f2Qz1^0B#>{;j{qB!P3T-!}Fkt{7-@bQh0= zvW{aNS17eVrWiF$1bYQ(!dOIO2S4xY>R6#(`R~CA=oKI4v!td=!gP7rg6n))^jD~8 zFxzV>k)Kgsh*J8R>q2(?Sjt$^4CcAZ z8YAWyPQ7Lezh9Wdjudg1$TG3xdow}5S=k3GzY?7b+Tcl#%zqd!D()mM4BP+$^Dz2~ zwQ^*bbSK?se4crWe@ewRlT;r#`BEm}J(s^FI%!IRc-WDN4`oS|hFW}kez2%E{c)xh z4B>2KLbo5PlZx)V{Ik_~anZ$ivYr)c#2RJ#er#7tt!0D9fBNM;F6Qr_+t&3Mzg$czNbK#Gl1u)5*E&hfFnn;4!dB9$%^!x<+9~Id8NhF~lAr|NtZlUy z(XkCc8$KxTA>jF1BM^vjypVO3?47kez^`?Y$s*glJT`}sC*J( z0G3pnWt-~wf{F6{qMl^zYz3Pw^Fe#b3U|iYno&HYjp50e}XfAhB|(jA||F6Fi^TYbZ~i<4vc_uV%BxKHSMd6I-Lv7}o{^OJS08L$YnpNirz0sZJ$5>r^bTKz*nk{5l=n`N1&?rL? zqdAH1zk)^JN2J7HvJc zW$qhPb6(d9HMr~+wJ&}}rF<^Q2@1@=^PW6%k#*xXa@IC5PTIyl+GTiy)kbwsUFGL^ zpk<>}*qXGKMY=MwH)14ZN$GdF*bgO*ldhZabBA;^8n)v~6|i_?w#=|g?Z&_H$KD71 zYv6sn!0fzI2s2jlz7Pg^blWEwcxPK>pMz=RLY--i?c47R1&}#`3Bk<%t~!zbpb-O= zdCfAX3yT*3#Yagp!1Wr&y1ip0OxoB5UGP0jvqAZ( z8%I_%X@escRi6QhL*mY^A~FnC5@5(5`E4WohwZUORX|$@rv$VmAzZ8bli!44nknli zeBZfH*6i}zhME_uJ_Rjt&+Dj$++PSU=j-mfPfWcFs5Sqt-Njmc*vft$${tYNnUlr} zT@#hL*vKkl41U}KQC?Hi;`7&|la5nvfXuQ7eZ$%1TV`LSozsn5R%1A1*M(lDnPz-t zccaw|_#yI_8=_bQ-c@#hke1lTo4kdM7d%iH4_SQCRjZ((Wv5d@uDO*~#Y|4?N~e%)j<1RnC-^HIkaFIwD9+G`W0@)JX@pL;I3tD$wFb;!@Q}FsML&J6rHNu`WO-wp; z!mA>$c?^N0&=)-$%MY=LO!`wrL3Acs7%!=Q?_ zWBx&nzJTs)EIb&aNX8Bi_B8hq8^3hKFfA3K8P|rBf5~6#gX{1vE~uGhuh3Dc>H(qM`YOwsIbHT0Kf-LA;@54NG_w{2d) z`g&}uIML{V6f$=%v&bPJObS&v^d%-m>)SWJQVjuw+Ecvwb8w4h4QabJBdS?Bq1MGE6f|PZP>VIX1SXsv*;CB7^GY4ilp?j^jT8;Rfuw$$EO`1`sgB~WL&Q`z+Kno-QsK?P*Z9A>rM&OPv{4V@YrAq zo9vEurs*w-eJH1B$&l>RI`i$ttPvk|?XRop0@c}#d&(ew1pnY5^x&Vb>Ym)Apbr9$ zyvmM5eij->;u?d9Rg-RPe8&S5SH2Lg_=R ztDlPVK69by^` z3wtVMX=&m5QPIME;W&NfDa7YL4S}JS_x1CV_s&eGH>Y#37JX3WbqTlTGL5BzdF6b^ zfMnIYvI^^3wb}WB!#HKeon-H^9+x0zA#vI>7Mo3HMazBXS?A77`Y9-p?c>zsZx-(E zRi3FnWtxi-3o0$iM2R8H_C}5gOZi!I&h1Ndti)#>plrkW50!65OpJ`4D?d3&^rC;w z78RRQ9Ni(S5tq_Ybrf(K`D66Sk6`^OikS3cNq8}T-#D-`Ea=o!fAvw9(a1rCjhgQk zN9q-A^4lkO^?BPfg|8;6CB@y_FpVqDRP$JFG+*z})mE{`=2S~Q8q7(c=fH$++GlR? z;~di}ZEv~fW6m5+AvsMgErz=CQT|1pO)E_4EE98LBUi@f55^oksVKma*IJ#@@K|Hh zSg$qgZwPL{keYwgB8b84*kuPhRKtry|8W#{z2BOMwE2c5vog{qpIMJVE6 zl%n0e#pMrXw!Kp)1_`fmT)XzAe$)G`s~}lz1N2)=%oOEocDg{~<|ri^cXf5~`x2UC zi4$rwSMM;49mykH&Ubgd2!|7lul3&m`fQC8|3diI0?5jyBb*DW6Rbi(JN>iLIj^l8 zUIJEMvkp{ftFnY&GhxK$_STsf+e!${j5=0l^Nx@5gtOy@9u|>b0#@p`mG?iKDo&K3 zE;_?$cv+~&G*1!{8j(*!SaH)?>pR36htFJb!+EU*pc8@EAZ$u0U{p zQCwa5Ym%9DzdH8@0D}0A@g32r{$Q(Xf~__D%zOL&J3WOGJKYnxnkI5TTmK;U)iR*Op_XM0_jyfYghsY_mI4-XFU=`2n8wvE0RXDHalZEoCwl ze9+)xu!_l;tVso5_ZDnYN_BhY_y)j)nY0M6nKxvZ>wLlCxSmvLx%=10ayoI>1+a$T z9jgAIXJgnixM)hX1onQ`Zk41R?5ue>yLpA|sd%(24n#$Rfge*JbXOd1%>lFa%ye{e z58JQrDnz%ISvF#nQRCeY=30-!As|a9)@^rJHc9%u1gYuwQk05IHlmP$^nzBH*r1tM zh$yBhVKkT*Q?^jXYa4-+)_z<5TSK*p`Hkm zU46Qh^-YACV)>mM94PUEYxn1wVE#|_d$Yq_R{>p_ur&l_-&#Ph>YBheU%le_ayn3? zofQrXa8Dvk#*&HZ+QQ$QCJMG&=2J{+|26T@Ln!Xy*nXfCdvWGHzQthRnpr+a)9}&< zsVLS4kg{>~-&{cSLVTa(PWp6y7gi&D08I|F@m1Sx_NkaS#>%6z_|_b%3|d;<);^VI zVs`{WF2;Twtr3^ z)TMcpTz-V#e-}OC_2_KZ{Ow^@NC3Hva1K^-#3Nd}D_M9^zCixGajQnrJLMC<^3%i< znyG?m&Yw&g2jB9+=BgM+mN57~FTH8~xm1N0HML5MpI@7P{Q`(u5n!oRIcGARJzhom z^*PuyHa14(u(ONDkVs$ji=1)y{Q{G&_NKN`j?Wv7J#B1Cpc36|dJjA9{;f5XzVZM_ zehsOheDdk(+~nTHZOR2GK8$uR`Z>h;Yy5B--FULx*ZiFWQ|X^)@U*VJD&(ndHEyiB zIMnGe)8=<%t*fPI`Pf*WHOb!nv?&~NMk9Q=2D#t04h;3J4?R5!Ki79Nvl~~WnKvHT zX||j5CT{QO!15gb=~Yp@?fx>tT{nPgn?9VjcGcwRa@Z=Q&X78P;@L-+wKkX_p}H_-J^JP0 zyP`~a$GhO$*~yt1V}72Ae(@d3D*Klz=dHB;P|=%bKx^;sPO*uNLHDx`{B6@=5@JKP zuGQeB+w5Xz+dy?@Ks0Hist~t6 zMvYl+QN1$6Nx;tmWXZD0qD<;vRo52$C5KsC?Uv4#`u?^36BVHXn5;DMcKaYJqb*+< zL@w!GnvmS&Z3qnvFFa#ABb?9|L5-H&>+&4g@7kuVYSGG%(vPZ3$vV4W2}6lds&-uw zpvro>7Vg=I)5#-`_?B74x@I*z{{_$(e*)=t45?5V>>|n+M>o+dRAlL$Dm9Ne-Vbt& zmd9dMJ^9AP&XA!}h@LVd)&~%Q@dK*~IB!#Q=>>>xHpz2mBF1$Aus8%Ajk7*=m*KYC zo3GwQ=xzkig1>cO+GvNqkX3l@(HkqjKj64jttqcvI132A&5&!%)^~~B07%<}?Jh?4 zrnF@CQ$6eFo(igLPT#-F+AV)UdsI7vJt$ZlGXH*?7V+*{j$ol_L;*wiLLRQO-RXQhusM&Xia|gO`okjK6yC>zoa+aLFn`&kM)V7YE-^8a*tJ5h%5k^IyBS zOW0Y1(kA0y^aWZG;w*r{`)Xt~)?nE3zUB3sL2Hjm6h4_bbW}#FDwK4djk&mSZD32$ z2LS%=WOp@1jsVj3ULI*MD=_)8tJ zlH;Dp*)$`$=a{lwT*AEec;?iUDp#`CXJ+PlVo5XN7l*2lK7YS!HwbZM{fVdE6g4^S zXy5y3j2-(G^#Jk#nsk2_UC}qUc?0O?BkY>FTav^~<`3esJVCBstauwhKIaH)0GoqXwp%)EtwXN|l{ znp+ANde2xbNh0&uT9T7+VtTuA>jk*DZAeuezAwr0Fj+H9b8`Z96z&@v)i&Y5N26|N z8Z(BTM+GfxwfT2yUVQe~V=3eEJFzwoh0-ql`(0OEVgSJ`9RKN(Jg3hqa@$2}N%ZIz z!gFRY+MW34Xr>&Ge{4!WEM#T_2`^I%$C6@xt`&Za&fE&<&YC^y@qQycpW*(lKAMad zSr{fOWkIk7GZ9IZ<*g8b4^LQf9&HKyqq#%b*Y{tBNypvbx!!eL@{akQ1-q1lop&%ie*Yul`5u7 zQb)yPzU;4>VrTL)&6(2J)v>gxncZuKpo+)zK(E(Q^|_w1_rZN>dReuwOdPVbYuM0~ zQ%bW{q>W_>G}v@mUVjyKu7S(;6bM7yJA!bcpAVxCMPB9^e_x4&6iA>?3fZlKWiGh0 zV_;W6Vrv+u^2(m9WhJ(8z2crlku^2)70-od8&7~>Bs%2{CgfTd95c9P(>e60Kf4R= zA2C|7X<$XeTd^g!kj}3Xb^Cub&-qsa%$)kZxqJ@7^sGo|M7Ef&&fjyS(nyf>49}j> z(|0W*Oo|-|!KiAal{S$PM%D4bTtpwvV#ly&`n7XAf z@o_&~-ue^4WsGoNt&acB%kmuV_+Vpev6O3NEJx_9$n}sGc=Pi^iMgTSt#$%=`g7VV zB0&jzkBP@>RD;~Bg1W^6xyH?{e!F0*SUGB}&BU4UftfRbJ&WVy-tgFb{0lHPvpM0Nz1%W?uCBVe62MYxM_ooWD%G?0S_Y=QxdcYyR-7kB*s2Slrp@AQ zz*LTX4wJU(99D3`ZkRouJhsww11Poq7V9F{_$GjXuZS0m!IjByxvn_RS@y*D*%FDT zY+b#aZJc)@>dWc7e+VSM_+7P?L+3N8&!^y?RV^NM;Bf(bjao$|q zaMpug`tN@2Tb;}GOXYd#g|dBVa&lSxL3MJaXT?g0AF0#Cn6D2vJKi!3#HQ!IHpYlY z-HColH7xDKhZL>S57%c#&1=+Gg_)wYy9?`*-v}AKAw1%U)egd!Qus}0{nR^u;?3WW zXgC-0Wm%@n{nvI9f=2WX38;)BR_Vu_Kh@GGU!xxzl5K2Wr(y?xDmyn`v#_LXHycx+ zQoehZe@WT8lJBx+J5;0fi_cScorCo^E(s3_R=9PeX#&Neiqi`FILLp&6@y7ly< z)a_e*U@OzrWrprPkK}kEvgmoy>2NG<@y~US2w8>Ru}#hgO<#R;KDDf@<0^cQPnfcp z<=rKkS+zS&zH}L87>u~b3ONn^J9`OXo>)Pj7cT+O8Bui?RlV;E^5Xsb0e>C}F5dC(R8?jiuKp>d1W#wxHj#i!dGcq5 zjc(|m8be8Ehs6>`%lq6>DQk5plzaBn^SIRAHx)0SI~JqW`|g+1BQC=(zkh5#{*{q} z%*DysY%TG)$bLXROiN_X^J_@gm%>+6SxcZ?HM$@bPpThy#8rh@k z7c9?W9HCEM)O;{r=-v$e`O^E&eaTb!;DpUGop;^T*CBQmdnNIAU5yf)*lRrnn?E-I z)JHxeJxo}R{n%_jc~3!$8)eY8`76laMEnV>x_p^kNpFu?U#yXT5{SWLBo zRcZxlo%+FMY3@sTF6E)9z%q~Wb-fIy++x_S`$y?awreN5m?bV$lC_?#TE?E31i&ZW z@(Taxii}11Zf*RRngrV8h&5U^;)afFo4I6$(<-C6KE9~)p+_qDhC+AA1rH9UE6Sc3 zvIt+>o0-_V+DiF8(|NdvI=a9_+02)7Wh;K&!#~xx9^0sj{u<^{%)W8o&)3CncE)C5 z`95)G^hz0>@Z&UcJGwtqP2GTlg9Ag^KQ>Y=)CzxA)w*FoQY9*RzrRvgja5-Q`ab~dg)B}&q(lTw1%tX5FW z_n+gWJsK8{hwAyR@UTfWL;8BIL4{Ad4jLOokqZ|_F-vbLip}2w`kd;SB@V@uHZm9nkv)fosNKAyLi87u~ z)ih6&ilu=Fqk)0tW!Y%fAgoeyl!^r^aU)`zp>0hlF(PLR`ig<@*1%;@Q zTf)DBJp8|f$h88P&kFEZ9OuJwlaKLNL;Mn|nj<;+Y2PJ~8$s zNv-e=z`>kZV|Do}!%$hH1%Ez;m*Agn{v*-fT})?DasgLoli%P6f|{na*D(~mzw(39 zj^N8VXo1cHIo3y5mC+WN^Df8Mxexm@Y!`3;ZXe@7yLRQiql&%yDb+b#0Y+I0*w<*U zv=szkS8DwOaW?}5$xv;{{{Y6a5yvxDqN!alyZ$ksyEe(!20a8fog?FCYnaJL{+XBiJRb(^8G>?xI}Ed$+!o5v`s*6K<}ell;?~PJbluk(1GLy*;9vjx=X?dks@VpRdGcSRnK**=<<}*1vA|i zp`G%nVv8=AR^dXNd;j*6(+UvLuk5w>j_>R=Vkmsd3>QkX(N zXAH<(SVPDZ)B$xujC=Bss&(kz$|8)fwB(fFo%p&3WUN2gr`=k@a~ND9~nu9Dlj|ItNBX&HdJPj*_7Gx$3q|6N|q^5G32Ob!$wyr51+d}hx-J+|EhAz@HF zp!W24M??3n-`oH+u4U*R8h)O*Ydj<^)>FguAVBI0+)1scge@A@@^;o96Sx6b-vEM} zbffB<^iqlqmK9TKn;$30_21caBa@^*-_DnO^H48g#I@+9vI_qYt1RPcK)!g?zDGmZ z+1_Kl#>Qw`Jx|VO697S^ZZCn1%j=3Ea2k8e!vKR{tC*bTCp1ys= zNbKst8NPaTJ^SzRKyvrKy1`S~yUZoSQR%A#ez1Sqookc2UxqLlie1-!4WjxXD!B@G zJ)uHWHvkho50e~iwb61r^=Jpayz+b;RB;4)52L+`{C)*!MzhZ4XAaz5t5V`O1nAkw z!1|viE=S;lR{t9Jd>KtK=Desl0sbA983a~=(`Z6>$Od>u#cifNo$3#bTW&Wx&+IJu zmeMFU^ppP`QC(^G*S**J_z)~%aa!T3qwZCS#@0n6@73U{5w>=Dsut@rlL^9&X=>lT zGx@@SS@t^~>z0g}(I}|{pq<~)o4s|j;;XW)RL8aP{MzR;#Y)z^@PXb#y@UwWcXA-M z5l{2kw3V{DH0g|c+JUCcxj&Yau9Zx?Bstk64i3~ucY{*5BMhNqh?>uxj@o@;1D&vC zODCOj!LKrHJaPu1+cqehE?4}x_gwUJpN~SJM@S%}zze;40(QH5fzRd>R4z)Q^yS5^ zyrCkvIJrCEw_T5$%2V>p$`)%&khXip$mgZ;MV{=!aj&0&cY1UZ-e@_X{E&0i>q9-; zGyKq}m7gNI`{3;al1S`H>7{PD?!GsIl(&|3?yc&isB=VW##F9ro{6G!frvzq&5!&a zGz?K2A$!XIYPjq@QkJVLzI_@m$dm?kCp^h>L^$|JlDi10%U#H24Oi+4NVA)BYc{TW zvDVofkl=OGq0-Ti!u~yQo4}@jWnAy^{(mCxnshV|n zW^&^Gn9J#j2b7o(gwT%OKbIxc#ih!T8tse^`DEL>YzbeF`|%tws=6n$2ld%QD*toj zce{WZ=L705_9F8dOiA@IA_lNh$ANu90Kjs{dYz@+iA7PtDX{m$R1B)uv+||F9 z{Os;TsEU9>G8#DtHHWzTYSM05_!Vz<`Z9mTx^D}_hQ(lorT(H_UfP6}D?SWNy^&1)RVL*7%JAs&Q)%n~`bjFLcsSqCOrvoRL0B6NI){P&w26Y?dSR-`0{aas(NE`&odmLY zDZ8i(JI*fP+&a7Ry(&AQtTe`CMxurNy_()?w&RKkSj$lv9+cmjs_p)C{PTt1(tKm@ z1QQp8sa7Po-P2i(u+3rxzkh^}`R3gK2(N9r76uu6T7;S2t>ug6P7Uuk|HAsgAkJ_M z%?ETwZ`lgszTH^fyxFvt=2l6R|Ecyd*Po{-ACfk=8awmUm)Cz&h$G9sM!5fGQDv)-PiE!SP{W*nM;iKpM$1xo%CfZEw!DD`Cl>d`H*i zqQ&`dOQNGO>K%fNW2(X<()fpwvboxXV#3&FvM7NPOP6d(7J($rI?cFN%* zMxFo%_j_KhTc@OK#H6eYfV0k{M{1R!JRp7Fkn%KdCSMbmUmf8C4>xM;g}+swh|WwV zhcQh2<44$3ge4m}OizC_dv4r2HW)b#;V$A8QkV9;0h~>#z(pE0A$9sPjBjuia#B0z zuWY4&QR{(oQ?H(V-$5agf@ge|Aqpz(n*`ka( z(TwF0dSBR{R#{ItkaT?(fq0s*rMNd;IT6tDL5_YWWtm_fqMiRQ!K6P2^sy$KiDT2& z8aEDUb#Li~ew|jJEWt=wey$qcS&-*ML)PAY-)UBW@$v8Qrh`n@p{2Z$B z085Kj$XR2J%zV-|BElF+KsG7xoW)peiz^!X#+Xwe2ACny+ugrtYl4Hzu|cFTS*v;G z0PwG6P4GA4V5J#a(%|cMPjFoQ^-q9c*&BHSk}s5 zW4x2@kM|^UX4vUY1)<6d9kgJqcK!r}hAw1PHpTaym_C!`fj$Q#5G6ytAEgS9tf{p& zL!fG96j57#k&*KvX*P$Wg&*ie4GiC}se$<@|}%=QOg zBCHv#zQ(07338lo5Y|{`wVqWJ53-8vHv>m7!(3^F>*6>kKj8j+f&FdtZ27w<)dR@q z(Zd=_Va;mldy(Jki~q7yGJKX@fC&U0nC&}c{6tqZ8?g-9TpQw%byXsR>pJA?6rod2 z8sj!&8Kd`wY`*?uy@&NL0iEof<0%jgBju@{K_4RoH)TtlX1ThkQW(wWnIeu)J_vQM z6u&Qzy1=-L6eVu|fS5`eb}HjJ9649{VoHj4rT9wEAIA}O_3;gqDBya@i1b%6rNrQg zBoi-S18Rxa#fgVf#kKE^C>;(cf}jyz?c3i$Q+1h%HZ|AQ)TzmKP&XhVzs(1Ny5Zlt zJ4*mWy!@qu$B-7+gHJG?Z&Fw&%+Ih4Y!zL+Ho8CkN)`F4E3~ zPrNivZb`5K%;2={M&Ki~DWs1#OIGrDce3`Qrkxpbe_@{!mk+(8Ow$f!v&%6xVdY|< zn`PSGxDdUFptIRdvH9aG-p(3R-8(&cOS<9bvsyT>kMF0O{RMPwbij5ogY?x7!?$GL zp4(C5hxMCUr+d?UYVOt=SkPH--N9SM*MuZq_%)L64N1&8ahaA;nbqM+fj0AA5b&hf z-ybg>zw8|)trer+N&LBNR>iQPlMlzFFWVS*hbdGy2boj@1^1fM&q|q?hkSndI`5;) zca{ks>zc=Soq)~MwELwTywMM*@6o$#LRuFn_olBqiv{a8#FqN9Fc|eRwKif0%T%L)<*xpE3q=BJn7k~`1cDe6+K??A!C}J^*UQ7T z9<$tv#rVHh$wAi=#`aU@^frm_nkS-Ll3h)VtLb5cp?%3uD1kH-|e0O9&ksrf@sGZ-M1!du9m#4IiVenikP>wxOk&no&9kUvV!=4%IL>jk5$TrYf= z_a|=;`$C7W?!#|GijfStc2cdA$Le)%^U}gyn@{yG2?+VNTn}^^4YY1^bNKOkR*JS~ zn6|TD=!bJACMN84+Cxs8kgA^>_Z8fvq9U-%a_v(+YxcVNAk*9{#?BkSBO!I7j#7TB ze7o7};`6h;3pQarl=s&bj#Ynwj;7dd$NRtsh9&-Wk`?rKZkxA6eX1~#6h)u?_S}(w zf3yqj3PN{%{Ss3m)ev@9+EAi-X|7eEpcl5?@x3-Sc-kw-aAd1>g8y@haz=&zW)yYn zWNhJ+3Le^^(tpimW_^`mX!utaca>7tVvz}R(edbO=hn;uL}zSp0IIx2kS?(pq<10S zR9?b3-(jDB9QpNcz%0|o6`_LWx8ll=TDwOVECTeH*$(;)@*0%qCH$qtd-lVP!db8wFZh{*HfYpLziA#6i*gPE_$e=Pr6W0Ae2GV*8V`Cl$-DL>63J%*-?4Xax&V zUWet3wgW0HTpA<*)wgmKWR1#-ZP9ej1C1h}a0zR9F?;eJv44a< zl%{)}MOypB%JW%z3p#~pmv}!00|B4C7t8-30@Qx?GyjL8>x@dmYvcBBSejazxuw)HckT_9sVOPt z-c;sJaZiNG)HIdU)SOff+jQkq;aW_uPA*=lQMskIu(h^WJF& z>`co)9x_Q4QZN2Wa1(NXl^sBxGK4@(ocx z*`8smCMj}9B4Iq|C8u@f156q#vluZ{-n$UdQvft0BhQ{tG-<*xnqRBiMr52ep;uI; z2G}Vc4~Xgjk`HcN`~6$E#(6igEEU(iQPK?vtNusF-h9O$)r!A-rj`A3R@12>?fIMg zvXi;);b`5BPv4wHe3h+FEI?d4M=t)mGe&VDj8+1b`R&!p$0crqB&9l3Vax0E;G>1G zz_0|?AFdz+A(6#G&mSJ$u+(5H?}%uvVjpOwLwgnx_PgZf?|3z|LxoH2@}2VyGw=u0 zG0VDUN&eLyo9;h0m*V`7)<=pZvd@5-fVgb(i&+`!kLzcXsMKLn?fuhk=z)4;>dhVL z;pUN{rK(+ve{@6!LDwQzoWZBm`V)Qx zP>xt>B@`TRrsMym4a$nN=Y!ydL-q~u52A~D6995<_n&$T=Dy**H!atRt)5B&tPlMtl_eNNe1>v92u z&1Pht|JnO~kv|ggoustXU*=7ivQHf^X+IqrWzpAn%dUi?AqR&*5i)Xlz>>D#2(a!)3kcS5*4+ z;_K}PgZc*2mB?F7$Ip z3vSu`$F`%=U{v?1!$b>o@qx~(Zy6KFQ&Y;tZ5jU=DF|(xk{u{4lIL;VmKfC)x{xVB zq0i%MMu#Fkji|GG9V#wn^8BLEwE2RN!;$Y8=Z%|S8 z1q>0q&+>iirlU-bEoGVffcoc6IW<*eRHkEWk};59M%Qo{^NNND!_mEE-wdjv-<)MY z3B_je$OsGO@XIZFp2HVjJ!(x>8kCNY{8q)2@C(~iESD!~{*D_WzAmyF^Zj%JRsK-V z4PJDnXAb7rrO&r~BoyaJ5m_w^`4t*tj-dsLIYDJ1H7m zaQHl|(BW~{IgE^i1`w6!6d5Sn_Q5Aiaq1BV%&Tz%7k9gY|IuNygV~%iTgPSb5L`t^ zGk3@``tuR!mi3ol8i753+a4g%o+VwOrQCD!JtS(Gzm~qQ`^{~BwNi4%yp4nJ?YO*s z?6V>omht!5fABX%BU*2BZ>)w?uHWKZXWag%yFu89?)rnn7czSAjQchBfEv8kD&PCH z<>Vm*HB@(fGX@X%Y*9qb^p+G3T8nxXmwZu_FCvU8mGB4~NS^i4zCXOUJd@xAHJqkV z-`C#BHQiqo3_aXc5c7?^5Ng7BfKZP(vLH&2!|bN{Z5(WjMIZd569rSSPUqiU?~_A_ zx_C=1WW}ZhTt)APSNz(;{*p~}Ba(qchBArU$XAu?imewo3=u{Qy83QPg+(F%I-Cb@ zoKjCY-+Z015EUqVBuUTk!?s2DJh}6pWBTl%#UIKhIo%`Azo6^1xq)dqy7)+WU0YvK z^)mX5wAg#8SEYIc;e74@$c4y1SFuA>?+fhx@@3)#sL z`})J}QW@u>7k2e@BCfJVRW6ZZY%T+n2wxQ~TA zugJ8f`pw-!cG1JJeCu9Z#W4gwSg;6oW!S=YTdbk&auzIfV7|wbBCPChMLn%P3{9>i zx}x*7pCaJ?FcKfR6OT{AX(hNYr%EYUB&_1|AzYm1FC=xeF1jmSOxgOh*DVx?>VVB? zFQeOM6v*1yj;Hq%avjUE6Xr2qYqLFG0$T6;^Pl_*r*{V^Hu-3ZeOFpA>{h#b#t*+p zTnH0a^T^#u0=YFYN&KUW&)5I#rg-!I_}qKNz2CgH*}+W0SRL8!0!iKCd&n>I7m(9l ztrN|X=NUd{yIlKKO1np&5{>H*1ZRX3J(S#Q-IOlw8#?zr5jdGkUIB`nXSO&Mq+aX9 zbW}G~Cf){rF+V(e*>v@8m&wCG5AukCwVry4B|w9$P0}M@#Dkcf=I>UNj{l<@c_&c! z!PK%A6mXFRzg+Y@ljC;EUE@5iK!7rJ3jLp(8pm=i1$;^3a$|?4c&KM_7Ihbk*Jazf zjCh^4`nUZJ6gG-E0U$%W#7%C?o1B5}2dL+S=lMIB-`FCR@i;x?v%e5$1hV+MsrMz?TShj-NTC*F-D!vEOL)M@zP0&Qm~E<=Vd>^<{sDOMwm>O@afp3OLG zDTAudPyasZ{Q31_D-O~d+zrW*UeI9cDZ{Gt)s0eUS7K-$!SYGt$UfZSbTag)&mNqr z@O?LyS%xRAz~;sVpQ1)t;9sPOMa{*i0Fq++W$Nj+}u!DxK=+ zmbmqZrLo_0|M>fdc&Nm8+jaAXiowohJH0a{1OT(;;)rHYQzrBd?i&*?&%z4kbI%kK zW3ENns%9N-k2J&BINKzerq}SfquDyWP__-D(h+%ZpCw9Q>|^GdZCmaU*7;=LK{VbM zXdlC$tQ-rhx2ZM9TvM~d#-T{C zB@+Y0yXwf{$2_&SBO8ntEBwEHJ8~#R%U{FiES67B)v7Ckzx_!6u7ehm+&OV--K>c$@rjkB znV+{*x_3MX5WUjchSFglQ^#H0+eAJ4H|*nJsq0gMcYF$GbS;@>z9nL?r!2cc#CG#a zLnKk+*In8B-UaH-KUn78M2N{6+m0Y^ZQvYs@BW%6WAKgfE?%3HE_QYvum?4N@l!&g zCO3Zkg$QRj%deFlN{|;w{$$AF!gXhUv0=I3CzCHmTyvU6v*Z5i2*&su2D)8J|1A>| z#=D#$W;QLY>aBLVPRb^eUOYiOcpmj9*=|Ii^l*-OgXt z$wYe?P`WBnPhsfdWQ+higT55|?Yy1z~aD_+p+v z$+l3dFxAdnKuklc03#Qaz8#N%JZ z0rVXx<}KQKAbvXJZY^+8lqP!z?#-1pF+VBm)71@0>``-5*H=k7aIsBw#niEzR^?=R z$L(;7Cm}8mXA-o-h;a_ zsSIlt^SJewlU0m>yB(OFVa?l5CuPucnw)%|`W_oh{_?L?5_nu-olS8-H~+x+B9(ZP z8vJ|@9Q%YiOElfd%OWG&fb3%f#h6@+CQ=zf0-wARJ2+6VCdTxm;Q9yjx6?FgO`Edz zn7gj01=W?tGd~Ruy)M%yv+)`+bBx(Kg~y;;k(GchB&UDHb3zG4yiBb=dq<&M^E}=0 zlVB~=pD%)|!WnZe+bOO#9gcy)>pL|B6W@8bNbV1&v}pY|vp&4lED-%eEmG|sN}A{w zAq8@1;a=DPT$b;Pmc-%PuE7!=1!@!4XFL9L&}#cU^XvGPi{-SVq~)Gn&zS}#kmy_B zv=mOx6SH)#IM3LV+SxX;{}i&uZWndKH{?$%`}F%PBIh5&VCd2qzCXY4{*`RwVb#Dx z3PhDyvV*1hViXME+M_;wd9L26pL2pG7sC&d`dAMKG&+TUl zjp8#_P0-i_x1ZToPDxn)Uk92GqxL`UUD3u4zgI3v$>Y+pK!dM|NU&5ki*Bi)J^+=- znZK!uaoa{?m97?R58R~OxbXpk^A>_hLI+$Ln+K+A6EMTWB8i_QhaGMF7pVw9MFu+9 zvqBSy@{vsSa24)1bqR>gXk?Lm3ixoG4~{+I($y!aiBTCYEZP&WU5r6k=1wuoty4Ku znMPj(PbI*omP+kV3gc2TTz#1{TibFnZq`h6Fh86=4inPg zcctk$P%=~nUhZ&P@bc$8!xU*1C^tE-k9NznGeO$XEO4G8DD=;8pRG8~R_NY{rbpe( zd!?@6&9VN{hc+~cyNuIn?Xg%c;sLPf-*b8vQu_NQSm7<-R>IfLe^z<{= z;@yvraUKho-a5!HuLE9m4Xt|7)P#V!1NC>mGF0h}51tSL<$aFPqHr&=JbwSW<8cPZ zXrj5)VU34_i~pklW3Og8L}=Kxnc3?xMN=yAzn;M7zZ0LwbLQvt`S|g^nMud+ zNAJxR6V50%{xm*Omht05m4)f!#d|A??iNlewzJMjh1RY{@29$+B)+>Wbp5YCZ-&_T z(oPP$2Sepyq~8h6=(Mn>Qm*z>x1@4)28uq)oAjqu*e+xUl#8~rXtL{DY8>ndX$JkU z>)hFuBb@UbQ4bhSUj4{Dl|b}`cdZ`giN47ALbE2u9vZuIPAdxYQ6^6^vRbO>+mjkO zL{lp2+;876UmuNP>#p+d<_Y~mZjq&b-)Xr-dAR}vohMV3D8|IZvgL&<_oCiu^|>jlK?NA{vt363=U5sM6%e-sgAB z!On55!I#Qq%M7k`e2oLzjJx-j8X$IB=&4#ho)ibkvj1=P5{ENOI8Vl&nA3vM>$`VN z&(!PQ_-_QPRh{l}oWvk=-_YVSh-yjZ=c!aR@`CYL|ct>DEsVLOq@fTezA?;6pO^R_~-~P4x$% ziWII=VnxOar8_s4bAk?wMC|>!HZWw+Uzw6b+ady0jDppi_`jCz6Zd?)N2VEWs|$~( zkDR|<&X~-3Lk9fH)5YBOVG%U-KzS)?`BpXM<>JC6pgbhVP46yeTU>@?wNot;lXYLI44 zuegUfguMv6Ej{XgRur&#I!lD&7`p=XLt%Kx#|d|9E9WGf(bwr`#9W>0WeHF8-BlLX z`L2~rmBWu2zpoB;=>4s!pVVrG%ATx$u61FHbC7@d6+RrDW|M*`37)`?mK{)9%EEV* z-b9l6mKMM5F!B3D~}q8q3tdX=8R-XFJHr!k^>8aT081aedd$%GN%l`6?GBxa|Iv zEy{^HfL?>^)mDvZB`m-65w~lLW%I*Y8MigfCHEbry9zdt;|ZBYL~N+30f9MLuO^W|z& ze?@Ez!9*3B`r0ppfx!1IM2q;;w7x*$P4(@<8zTGhL+419l@24!<)Ezqa_&;DW?#zw zFJ(Zu4LeO!cWe{v)is&)-=O?_e?ek$gI3kDexapj?jZ%sZ1`zq%QR4``_CzM$;yU% zXfOc}`y%4u;_`0wP)}uIrr+Q84&vYvD%Fi$XR|iVU2MxAChm{RZx)-297kH81)rm` zdI`08BWCrbrWS3WGq1x9Bbt{y8cF(2?o^CK+};R;lO9gBI$+G4xw8}w1hlRx>2TVL z4`Ag_BfAzI4PO|PTgTIiEM`jySMKS&yPr?PbF;|uXZI;iWLKj0GjjMcBuxBWWmkY5 zb)d1jHX*gw$4azWpV2=inTQciPRgTMx=OqJ8 z6B#eMqt0Sukh(a|9f^JH$@j)9q7$nW)FmROT`FRMA0e=9BT2ANxZLk|oQ1Qbofyl` z2NA|EWlHXVe6(mzP40WiuihLb{r`tXlo1jo;Y8?~9_`a~D(MqJp^3j~84xC$9i7Fp z((_u)PX?y;wwq1%=Eu1UYfaDN6?>hQzvUZ&^(0fqHygCSbSRs+KqcL?^_q-#Mtv=I zGMbo8N$EtUECh2UVQP&1eshb!GoIDgtJim51Hz$z3Z;jCm_Ez>ZUvjkmbHV6i z-*brD`OmdcZ$PNZU`xT~ZO=-TAc-0@YuUlnr|1uYxo=pOY{JxYUw%v32uSwyD&g#G zqG_KNK(5%2G!zew0~wGL2r4~3d?15SiIz%9eD#}htF9c`)wus^r*ge&Mbx(mH4#7Q z9R!aplmZVv4y^(C{6k0?=V_JdTG;mH8yO?*FKcy5X2NL~OTEM;A{vPwdsxB7Rl6g0rfV@!0O)ZfxM?A-H`zEjYrj~M-N(;x{!55Jtyg2mgRYU;o`wlr z?woJP)63P_?|_NP2C-&tzF79@PqoXN0rMB-IYa-Widl63asu3Tm9X<}?_5G&lY`x* z#j^bJ1B5UP7^TT0zpx#n)QIal$IB7|tFOp*ua^hjiu45S>bc?t&wm>ePfW@>Tla?f zd$pyO^<<%y)m4Q3PC&TD?T?*h_l^dCie$Wuf=?%EDJ_1yqNOBIo}Y_n+j8L(?34F~ zFA=|xoWB@lKyLdZCM0b7bq;iHu!shR{pM+1j~!I?NFjJAsf+>SOy!X5RHR^E=c_Hv z1H5&FJc{}1IVR_T_Gf*^`%UL^X2mfzAE!2zhml7o20up%Guv zvTE@obz7!+V~Zsgn3r(5<9!uv82oGZwRz)!KUn#=0>!aqW6_?CUaBHl14*RsdSZ5z z2)}c{JWr>#i104x9P@jZW=wCRQ+NAaqjZ)(L%^ZbHI6uQ!`_C5t&zao?l&&oohC2b zZc!aVqKddBMlvV;X7`)f;Ogli{+Sk#@|jL*&f3zIG373bG+i1&)nP2kRO@BDN!J)D z-Xx+~FLtuah%{<~f{^J)GnmPS1W*T%v%G4wS=NQs<>PI?GQy6mm}-rxg%)ZJh*9cM z4@3{;dM@4hdHEMexBd0q@SLBw%m@?VXHUqI0p2twO-QA)R7l$ce~laOsjhENhg^`a z=rBku*0%T*OS_?NND9;exyVaP*z5lHxom~N%o#Sc8=>}sJ21;2+SsLYR$qJ-LxAiI z%Vm#}3W-2Ia?FFNsQ4k*FQ{ziGPa$F6*;&x2L6idkp+%FgOq@UQ$z3E-~#$T z32ZuOypb#=$!oh}AN|s(B(!@SXl047>l2F8R@`E5l!} z$S%yNJbYZaabq}TGkb(dG3pMyA(UlKW4)dD!%4)T4gin5)UEUQ_LfWD!M@Xl!!}er-H4zY>>J>rHxGou(8QaW#1iV% z;6l}IC;B+zD~um(J7!Ty|L6?+kI-QY*Igs$D5m6YJm9MHq_B6roFu&VAKmN;52~x_ zJ03b+q1~(EhIg_^YDI=7n$~0AQy-!^wmdsnCv}Kg8KagB>+g%obfu5xP!@a+>iiiY zFFh3R5Epit^38=ZNg9Ncn5Tc@RG;c!-95vhU37vgz`$;G;kMSGTQng@D;~h+&#wrJ z<57Q%yRf6yv|@PL{dfAyG^VM~h8Z&5(rQsUu?unx8qhcU_Kz;pCE{Mc)DA6XoA{@2 z%cMZwCAd@T2FhRs%HAwSuIJf+vz)1t!B(T+D|K?sMDHI7asgE8c@gpop+zFniiq$* z5G_;>ic_OmAM~`BVk@em%iqdmmWynrqZ6M2iu{wqZbDO1>(<^pn1Cb;cCL@??_q+# zb21Ql9oDC&=(a|d`6rhAR`~;}a*!+vjrPU!6deaXEw$1dPygIX`CW{Ye+^8DVZ*%K z%@h7i5u{~{ue`yD^}T$T79rI984>W>&=QAP@qCk@xw&OB;!5G4LR%22$@aHU3HAq8 z=L+_9@hzP~D23s`UMD`y{WeHALS($i2UWGOT|VGiJu=ZdmSb7=Ze1XfHaSKa#&3Kr z$Tt@HW|&qlgmNI8o^ey23^SoW!*vKWG0V&7$%p3Cm0-SlV%VD<#hTz+u~DJFRU4}( z;>zd65(S4SNbAkKW$Otj)@RrxqCFr;fACW zQ##W+-#%aM>B0$ODH?fjXL28JAdLuUzTSPwj#dqX!{FeRF#c5dq$Y@P)B0xKRmTM^N+4*ZeS4=<>{1^#PBg#w!=cN zHM%YFju34KvMdH*bWfv7qCJ$f&v4F8NBUSw%O!Y*ORJKVH_}V-O1--2300i1Kf_@* z+32z84;NfYXRy}fcwt_3t#VWC&q~ZgkBZFL+K}FmZr#&J3MA3~n~_LgLep5~i7!%c z)tw@iVkf_<61!$H+zmzh9B7Z(Tq3V8sq<VSV(f#SyY~Z5>BP+NZ!!yN z&%gcJqqRNzZL~}9xX5nVC0#*vl#2D;bJD9SB74Dm;99w|4 z$7s%{O3QVRi=Ae@>?b30)$pq(%B_A zw5G~(S8BKBC4^HG6ET_*99Uo@txE=MR6JH#ay8 zyqCcvRr&T9cflBBh3;bFWyo;e+~{_;HEeCU z*etnWN`nU~CflpSO>4X#ZgEFpZ~5+~?OjL@Z2!?pRN|*iLIG(w;&N6C z>-3ZN9QK*a(udQXAXkkto5A2-)-4m7L_EG7Pz9_CDDJwUrZ903@lshW{-#YZs!7q{ zbd*CBdXsNI;ve0sXLkGVjzIYk8?yIGRK4bIuBjpb{OdOU(`fpFw+Iafa-1h;*OJu>$l(U) zE}1OGAAd#$NcNXMA8IxGkKh`Mpuq#8*!~ zNRH%E;vHz6)DD{=ne}Zp%Zw)8=0dq;vn2o^Ql}{`u3>6&$#aFlowNrfDg zPYz=O(Ao*EM2EU~XC_OCLdc9H_<|Kyq@YE46&og|Yhg@b@gkT~SYchMC zqwwoE@`L4=hd&VLY-8~&%#ueu4zA3%+Pek|)__qVOQ2R%X!8Y4aysGu-a_A_B-F3x zlhO*R)!l}u+}|Zn;zJdk6|{$5{9YoIRVkTujW;X9{|jkrnF27vz3?T>jdxC%-aYR{ z?|fhNJqZqDa!Uu#o7m6qRw_$fou_z^Yt}buv&HD;(~nORlWK0Z{go<75`v?0T(k|+ z6ra5C-13>HKTq_r7Ttz*06wKKSMY{QdGKcmB>kh~dxbg7OS~t)S3WLOqy5+yUE$a2 z`Yeg;QL>@v-<|$;gdLVClxFM--c!>H4c6eIqR8XTIK6 z5K9Pxl`PyIXjV@=-kF0r1=9_l)0@h;b^Bc3cue9dyl3OODR7?T{esxCD@6csOtgnRwhKO>~c%Xt1gS}R(Ks!jmu6e^+4+<|n@~b>C+3DJH<}ZYTB(8+v5(J8(u+?FZf+^CV*av!Bi`7& z|0P;-;{e1?5vM)1z^*48RU&sL#eh0-5b~@3dWi&?=Kv+kqvgy4GoedK9oxs#`S4fg zWj;La`g);JvVRtyP;Ka!QuH)_al;DK<8^68Z6}FnMtW=B3zw-6$sFL(E174H5EG{fs~rXZ=(xF0&4K z*U6_lKqtiCNeIr#9jnZh8o&HU=PDYXb9!_CSdq#JHzAwBACOuq>AO?YefCT_xUGif z<2Wu<%SdmTp)bfJys}b_Y8Y% z^x>oWZ_Hj%CF8N=CQ$r5#K-0PVF|O-kosJIo6@Tgjr#sLw)b=lGG6-owbs7M>afN2 z-6~gn!AUbS*ls7)!)ef`J%5_!gdTZ8Mho`51=ImFX&&peu7M7O9%u@kiUatQa zvzQ6#dOuei?5fTBxjj-h`>HSd`p^zsak*vcFNAp-O!UL6ItOl9=5Hm{_|`}z2StUp z(xrK9S{)ekHch^D&eq2z+7hu8w)v+E81l#YzgkL0dcch^(8uAk)ds#zV7SP#BhvXF z-G#?q%TR{7t!f~njyB1-QE~YDa%gw&^T)>@dfc=p8ra`K6m(40NtMnp2fuf(^@n8)FP-YenQf>s=V-gW+-6(Pky=jvWJqda7qUHw1&7on z$2x(2^I5EkX(*k&mA0}h&qr2WpMCg`&fC7(A(EP>AL)~q(>O}u9tU`}0&wG7wM+Sx z^*AswsyO9PdmPF0lWgj+crMjV6J{jF+rBRTtXWiCa646!c%SjTT2sfX0)8#A6;IJA zgwtr|ufQ1s5Eb*#XIU#oAUoA&cX9!S-B*ijrxly(BFeQ~f0vGwj(T`6|KO^8gPm#A z-@+@Ds3?9dmkkTdG$4Im6HTVsi>vMP{5UA$LDo=y}{gU3tA z)B7_jT#XuMSDjdcSr!NvzcL0smtLZF@NxP-5koQ@h2IVM z1?M2Ido69BTv^Q_=)kTfH*p3S-f3S3xhH9b>T47V0rBc&W~X z4>vac8(pl~y_ie(4e|kMMk!1po`#&&zP*RY{G09AG-Q3K?E2pVsg<1igGsxMsybFB zq4MfcqPp)?0rO(syAWz0U2xvtQR^Ev&o`;82yC<3hz}i5go;h9A1FlCRdKpWr1+of zUkU*wI@c9P3~g2ILTOD3vV@VzMWc2E_CxinUZ%CSki*ywX>y3hk%;`%!G1KFi=v$O zJbBN`CXmf=AVph3VZdKq&8|Z;LQ@8IYhky|BqaiHJD=BRWe-!b0vlpOgZ0fd!cS2rN~5n zb;fP*DWlAn*UGdbW@6d=Jf6z5jV8*B9kH-D^SH}mtZDl@Y$V5^;umU`~6M*TG ziUwY+Pd@^L0;(nRT)cX?O@1X^51)qi&9=mB)ndlk?q~Gl<*?VNqiDdc!NGIl<&wxB zHSo`pC55XrLHPRy`WL~!^VdIJty~GBZ!4KTv-#ec1GhPkI;1_n2yiRQU_}&WxKmmw zB0Dawp80&)% zialFYzZ+`&8<^cn%1MzBQO7JD}eq32JGc#Z(vX!8$~8NcdC=ED?~v>iE&_qj@&V4X1Xj9nQM~;bx<9?8Nhn%X z7F~2(;^{H=V+&0b=>kLD9^MLshQbwXvm!vjg;tvfqAJHXFDl6>)~ad;npQ9U#1J(| z`jzC#0;D75F>$TQy`A4WyJ=Pj#!`<-gskZt=O%z}#i^Anv+SVGL@C#X^=TT0TiXKm zQK>GRRh$+#1z+w!AY6`+dcd9 zL5rdwZa`D5uq)~jL6~w&o0Lu?3BfQrxB}Vd=ax#s=m!o8IA@v@E4k`$*T@g_z9+l4 zkon!ILsv@$M^rP=-@XgGtc`NZ%y`glwb{%s=IZ$NXhz^qzjg!S*1qKDaHXQ@R+j~W z9?N^2W@Xap!WXqCUt77HGAw6|pT4BYHxi8llY_ubEXhU951c?3ff92rfQrQE9GfZJ z-I|*5#@B9>%me7;-3h@P41sRSLf*gCn%~C$(#vfALS27CKK$;g5;l_hOLCf9G1#lx~eM2l0c6m^Q%me{{A|Uu*y^WC&h0-KC>cZ1#D^ zgE$e_B0)jN;MjoYZ-tfmUR_V~&V2eMdc~DC{HV*D*^{Kc{$rBu@^(dOAP z=q2>-T_TcHMifV1E0&N80$>=+b)SM0Ijun`%dgi(K!&C9$>qV z;kaGtz=1!T19br|$wP0!l^i7~nmK~Cr74=MG$@x3}8%MUGYMZbLx8Y0K zYKVf>)i4V7{&{$d3ygP)@*)P?ecIL|IPiI@i;eg2H(x;}fWe<4n{8O!ze+PVl{b18 zK{6|}H}_+xH~aylqW{;2`TJv1KcCrKR=TSAkGD?s3?98krI8Lxu%3;g?Y7R6IK+c< zp6IfeVq?wDpz^q+%!<+Vl3DmFk)Bj^{)_g8S_xp5!a%5M3A;Dk2y(e@;j>nfJs{El zb%zJs=q13`%0=hB34OGJ8ZcPXv;>eJNbOz}*HSu!UL6o*Nioc_dIv}!xOd-FFjx=t zk%r?WwX@*Pz)iGiBgUu6pxwqL$NCAj-Jp}Nyi_>hdig{867j(Cts?=w&Z%t{3L9Xt z#}!3n>0G*id!wk(fuelSZ(AFJMDa_J>&_VcdD>3_Z3DhDmW0CR6MyIYGlsBU_A7B; znneVlQn_5buda_e=BlP$M-vPIQBfb~4i^}nTNcJ{R{RAmDqcy&y;0&UD>#jTQ3p6a&R5~ocn1`BL@h2kWaT;EnGFMF4W=bKhbY^ z-YuMo1JwFKS&$9`4vP+9RTl}`Hi_n|UjogxV=89;EDzh7O)1tocQ)G_kG)*N)lhD^ zEFXXJnJHm%&R`vpfJxX%V{g@4gi{`Ho zTU)PtV+{v{c3-RB^O|htMs#vJwDLW%c34V6HEJ;a`2>b}Nil%)lJWNC8D z2$RHUbTz9XhG?DK!f({=RNCW$eyyX92jFN`^Xg%@=boox_~n~5Ws9WyVSQf=wgRA? zFdVvTfwMB3upiaPw#2mnkm%sH>XSq6)uzRsqMUD~N@!RQAU^^s)^|#X*0hX5Bp*3b zgUD7gfB|CMY`>j$JhwvGVsrCnlf9lEL&89%3t?1d{|LCwA~K3!ZWQz9K+rPPi@goC zrP)DK6KS=&i|6IDqdR*5R` z)tvZ;vre)sqI5wre+tR`Kfj+DI7QqWJGEVc?bs3!U`rSP{*WA6_^fc6wykw1e%*uo z6amnW@diakh^Tk_=L9ihUK7!f;oGCX=OssrVG^UOu80{gy&W4iPWsurLT+6X$y0zD z-0i%$#fjyTS~C;5oq*Jg!`W8y%(3TGrv(-y6OieSQ8Ukvm4wcdVV9et6cJaG`t-^) z#YyqH3xxY``hy2`3azr*6T7bwUGUxQSca@q#dgqiB-Xq+TDc{)?YV@}X~|vD5jdY99?p0r;%A=&E6by=Kh6UR)?Dm)vw%F%&ly5Q07a0y zq@!V%|CKhbn4(>*_nKEU2(NAGwUfD}X}rRld#bTy8V<69gwrxd@z@w{?Z|z5$YGv* z3#&vw-Kn_2vtIg1;dx97?8nK=33Dj52Ny<`;{*cww-^IV6nwpU=g7~-$|xc>wyWBq zaBrGbK?XCJJNTQgU&dX6`f*&UUg!B-c1QHy;7VNZ0XXG(5-T5+7PL~~nuGEv za0K!bG8*Kh_rOf_;F^ZoZ=?%?CW2f3x0L@_B>|t4vlVwWma&{YcnCdQcoHuA?tON8 z@s}SuuGPTK#w_dZ*--<{+)Bd{Zxqf}r}BWJ?LZU=&bNRl?oI*py-tVwc?-(+0p&4C zghADdM3!Yx$F9oWmSd#3BRBSQX0pW4k&|uQlk4F_sHE+Ydm`^b68QUIxrkoRemCGK zfgrMOTNQpVptjGWhQM)BagSZ$P)r+=LBL0S9er&{A)84wA>S4W6w25VZ z3G?MGJW2M(;{M}|PK);+5_;#m#`rru=(_i*ab4Np;!anCN&KvPD>EhtKLZ2$MC_N` zZ?37SxwP0&Cz?-Rmy>n&CBYY1N>D*`BiIR{F=#x5!=KG`jP)`HcT8T8lb2c){k@DQ zX4Lzc8Mdnj^2jC8^RLvAB3L0@{*%;`uHOy>e9E`(UKHJV{t>P4LvMD=jtL z^AQILFKaVuXSD)-yGNEvdB4pD#3xy*zl`^Bk~bKf_p6Wx*#Rz-MZ2tJJ5E6#SE?r7 zeAfuD6Kjm({K_d>_fFAWi#gDzB&=(VE5kDRO#JCSIR`S7`<-Zuv>?W(qsDwE18 zs^rWOaFF1)D@rCt-%BYz9h& zyd^#*lGJ>hdCCgq@kcYMo&FK-&H^vj%;|-E;K%s(h4TII!;)$j745LQXHK%{YVBJw zV6QI9SNc~Ze4PG z6(fD8?u_qOSNokC&mL))023++jT-U+3y|%fIa~y-+e`-TjfuMpd#=?@%z~r>5Mvcf zSgaNNI?*)zaMylfQ`gcTVi2a9S_x`jo%uQ#w9Hk4_>_Mpk8MKrNyoMqTAia>{a|3U zN?#UYNYGYS%_Z41;PvHoF6uECJ+5jkco1Pc^)Z+SUzOULXYCK`R4Ggx6)!h~;-FUT z?iYFtc|L{%@hM5)J<(SFs15Cv=gylZrblUuX0y)HR839E1;LB%vo4YyWHHn}_WT#H!W4i*r z3MYP^iIuvzu16|aFB;gRmP=0{Wd&>TPpV?L7oMMICS3n(PM)qf{vSnG9oJObhEaJ% zkdTmusgy{Al)xq;Eg&ErQ$k9*Yg3SpNlQ*ik?sa*1nH8F(YcX>h2Q!9X6*cS&U2po zxv%?*S0zDe#Vv~OeL8BkW5JL7AieOn*b21ArP)LUcTYn`M0m!QnGX@;aIXs5hZH~3 z47HokbAnb+xwfynM(AobY{k1)aYqMJu-^-=(#$d9OH$(M^M%x?Mz_jIMHS&y(S09} zBpCC)JEqQfz9htBBLx+rI&)9jLp1=80ePU5+h=q2&zh2jzy$U!pMYq?cO zPX+aU6et`l4I4(z8U5zunqBF1;wS}tA#ysJd$f)(bs98=mmEV=56;@8dpfFDtH1NXk3u98LQ@Al zjDpb(m6cXBpUn1vIWmq%uGP6e>;#{v*0GN^9t6vxQT;159dYsyLczMu=K%O;mj@)~ z-4)pPa>i5F`4!BDAjH(0Ce3e;Q-QwJbR7$bg{40f?FU^&Z zI7z*4S4N)Oh*%^IQ`by2fC=6K7=eM#?}t^kCN?l%HG4n@Ny2lm2#4#8^7p;gBef~m z&2>%Ers^7u))`xavS6jft60?t8%|nks6&Yb^g}u4$>frnO{SVr zG&RDW`nx!+R(FZ_Fx&xUeO-N2U~(Q0g%`Prj{e3+h{xDDjPJ$g z*|*4UBqjJhHb%8RsKimv;g3r`=z#jA(n{*JL7(Vew_y;0?BE`#Q%H9VDzNl7^q`JBVig!zcRjFl9CQrF5z>p52c=LNO@^c$T1>+<_= z9xnmzU?p^5Pe;{pr-fKqD+EKY9=|ztcj&6~bo;te7hp-+yfqZx4yMrJsz6-)AY>es zCuvQ>gdFroC9DMe?zSd^o_|-Dd_w2?u8C6%r-}c7y(;5gCdVqGoqA~0q2GOCU5B?hynA%F@vl4O%h)ikW61Yk$EGjDOn>k3mG=*482!?jm*hGr z#NIER|11;7Rb}@8CUd`R_mb{agf8Ik#H2YRScomjTlRBOZ)r9znm+$hkM5I0R@nP7vOtXgSBik!?C+DF$5j$8sB(dXbbaO z@Y`p|Aj9NCCZEnd1XT?oo5=mc-VUo&D)`Q=)N6M1q|85WQG?4BM(S6g7^1m<9C2Ni z(u_FEY#CB9&b2(~Z6u*SJLU{^AG=1a_4geE1O-mYNqGsHo&eqX7U zJLPC-9q6SbRQcj`iNkL9Pl+Ns`@7A0-(V?E#1Gg9(8vY0zGmp*{k226Zsg4mIUdvTxsd+`vrY%EvsSb3fk-Rl=(^aD`JQAi+|Fc~n2JVil(I66>$$&D>~Mcw5{I z_$PY1JOg;&nbN25<~0F@Yz#?<7xOK{)1xncQMvYv&9B+UFHfjg_rbKP8n`OT0*!Y! z&%`Rr_y%#OJOr+>!IEv6(&|FiWOl&gprfh$M;-dfWp{H$Y^l6$8CJgs#*wMgu3x-! zUGOOca6an8KfC6wWwg#;e6EGN)~Wx!rJ)cX22@T+Ww%7|q`Pn|iIT z{%kkL5%pwhi%_^d^hP6BHQ6#qg7CA>VbiSQ6YFqY3yQul`=PK{th0-NQB)h)ERRQ- zAF7v{hEsrz2Y~CGDjeWy`^r?+F^KMtdvj21xHMy;nX!yrYvf5IkROA0b24=s+ zzmP_==kLDl1n7A0!u`o65I&s_KHvd>ObBolvE-6S1Si9kJd-~y?Z|vvNhFW!G506; z&>jC$TdLrRqr>7!6WCv5b=!fQ9k64?%MQuWj60h1{WVe@1=Vhc1KTl_gHW_i)&+^l z5DIVHXdC`&WM+18WVS(AKpw}_xCO*L91T>bJMc4%L!(fL__MPXv}+fzJ7}du6B=|7 zBP?X3x6MOGzn4L|eXXXmi@HW{5@&(bzx;p5DfE0_y;;j~ zQ0@93$y!=}v1<_bd{G}Vq8S;=+n{sSW6vl z;53#<_{UW@gT|ydGrof+m8&AM;W!IL1*cjBqDt z)b;hEpX*vf*tvicJ42FggnGK|7kE|9>%bgXiX-jI-$UP5=TqZQ{Kx-w`Pu24a9f>9 z?AAPu?=KcKN;)>OmJ=5krP#~JUaC*=x5-d%3NG<4r+1*cuJV_Php-AV+D$-6^z_3X=)sGEcru)YmYuL~u1b^&Ux7NNWtD)QbHX@v?Q_D; zuK)0Syp;RtEZl3s4(&L7+*Y%%qG72(tPMrdC zs|EU$)QJ9e2*4=qUx{pgoYtG8fToE$cCnQYT^p)SpgDR>yY{^7&4<$1?By-aBH(lD zXPOrRA|YU|mv@o1OZG;(AA{Yjw_?Oha*%-fh6Sy>)dK3Nh+BR-wi@2IdRKwWa4M14 zp9#AWoAr@KS?2e~*%t4jLE;mE67bvv+#d0naVNEZJ>qlZa}xd1U*Bk6xs+R~w})p9 z#OM+7!DQ8%@(_kr1&=|nnU=I}ygIkb;5RYB;4n#T=L06yet4~PEKCRw!+2#37j(XGm_l}T~Kb^_>2GP zxEOd>Zw9%VZKQ`0N`~=d`rQHyaF}eJEvz-8FTs%6wH4yvE_F8#)BAr9|}Ut=W>akdWMHU;&MRDv1T? z*)^K(L#q{lT6#ucGwhi1s5gx}Q521(q%8UJTp{3%PI{fSnmxjN3ib?7+4#kDF31Eu zaOE*9Tz02_oh>8Y#OKM*)$CeBtZNxeY-zta{2O=R&uHc*6vtg0R9>5zswE)X2c71u74?9xuphw{S zW?GXDJeEK_usL_E4)CrrzQy=<$+d6*3A&;pP>p1ZYVoYwj~;1+(7+YVCiOO_Mhx2{ zkPh=qeNIl5X>iK(bfIjp$)r*m%h~SenyHzhqcNhBs4ywaWK;v}oZoU}XY7}SC{~@n z+*1VcaXj99_dYlZ-EfgO?kfM#+8x8!bM5o#hw44eAt4`l^(!@0K$NkI{yxIA@3qtS zp8<{^7V&VbMh&5G0YwuA5*j(C>l_$;%bFMitl?-ZZXNO&#Ej>@$SCTClk)Ud9D5CY zDt$Q;FXx80`~EZ9J&^pQHmJ0U(bcS;9}e z!nzJkVFfDFPhQgFABkXwZ)C2M2{3D}wl$zun1zIS3<3(EISpJU6P$y1XRkV?5u3hd zKUHj^dmiaidG?@TSMNKx6KHDOouHvPB#0D^Zfgu>xEFNu5J_2SP>^3h+^q`v!y6-e$kGE+1H%_rh_FM6aF>fdpT;_>o-(qEI&!Y zsUfw6HcdVQLF!%@o5Lryz#khCvZAFVuHX%fiAtu9$Ks@X5vr&k83C!;lgccr zSUBH)Ayk{+NVVzSt+pc7d$AX2I4E@VvWNi@OXTvK>;nubgOvGVf&xqLMx`SXZm(9E zRoEyWK=e%u6RSm?8;S?_q@Hb*bJg;*Lr=#!e{*AzJAH1FzG-}R#SsW9rHqo>1t zUflAbCGSUb&b66$INM`iQSRRj+%QR}v3O^lw2lw(dDGc$_fd377i$k_ej={9_XI__ zPlKA@tL?cVPZon{pXI) zgAH)hut6U^6D3T8nRl%?|1+Mp-sT!+3_?D9beYJR<+*5>Rrb)+1gYMh6rg0HRBEo1 z#prKqfZA!jfz{h^EjB-JUXJm3=kDPBnDlLAo`keoNW3PF9PZ z)^WTDf3!pWk;zdXiHWIx$LAy=>;|mpX+7=ep6ISA z_u)my{pX}{Ekm*VT)U$Iz8_R~(hk^g3Z__rRZ7OQ%K{v}X)1@!h`hqT0H!3O%H5CI#W#V~~=&`nP^h_amp4h zsm*`4RXgD^>uWsdiqD14kQ*miqR|n!1_9R z{u)LuiXFyrU@K4^AzlQDb?uIgxZ4LSriB@s9GUO_W5#!WB4fASH=ii_^m${abFZx8 z{QB$cXpNx3;}^9=Chwu5?a7TGpLuYUwWlD{Jw^5ejj`4b+6F0+T!J0}R+X`Dyj0Wl z^7p1ZGh3`Iu&^1wps!DR4EO|>-%mK4KiF?4@!MAcBz;Dz7)qlP;}^44^DAmrRJimz zdMnbTHe?DvZ?*JC5xi%D5<&cjNoQ-?9Skm^QXp&Ta<$07pna|pmilx-^Sq9AZN^Pj`O@WkTn+!bUl#3 zy#xZ@`s28;VyH40-}rgU7a<#8J;5V{QivMG63r`ikm-omwDI4GY;Bd`lYb=CPlr+$ z(>g0fYnWeuI?S5ot4`eW!YTjF>Hjsu`bOoB=4;#4Sn=DZ)*N2?`Q^qMIio; zpiH9SF;L3dP{!|c>5{?E9(3$#+cq|UHY)+F&juxN^YBIY~Dj5q|T&-v*h1mg%Ynw3xNQ7zhM5^gc8 zjJFEBpoW7?g@R-B#;)ht2rt9v?W^QnvNWFGsM%3wIttlu8u3G|`G$iZ+9zRsd%>Kw zZB>nW)n;1v2Dcj(6geUbzc#fXK|wG=c-_k9E>{Mugm$q0bCTMhRZNYwP}N(jUaDKqT*CknkGvh)5$}{kIki;@lLu_Y|88=|Mug%C zJ8hrrgI#f8;#3X^w%?yAqE&bO>S>ve@&ZT7G9CZI3@<8)&>gy)Ff7Sw*SI*Z;Db`i zn2W^eziL{C%6MJtZzvwJK_Gw}FXkT!sl0*LJWVI^6DP}rpj8rR0rb}`e*#xDlme=l z$SU}2sD^@Gq+u@$jj5!&S7?KDgzB=Me+V^5e4MNM%aWSpaH4?sl1jby9|=%f(^}Pj zV~f|-Y6lr$!70=-t$sPKo|xN&mJ_PZyBYR*MUN=d8T`Y)3+KYQ&kf>0Bb*ETv7%@ zzSOr{7lMSZj4SVp(3;(^I{ZIPOp;8O`%ZMyQ1$|Ezz2$%MwQFyh7Xm2>~%%`sF!^ToJ4v0|C=7^OS*L|{#|{_$24 ziymbD7OD)_fVXsIyb~cLg6F<`KvOiT{Fn1LjtdVV6cc6q;^bY+gUm6pFv{x2zS-HM z2FFAZwz0TaG5OLHU_)&I{ZbBTV#DUbbi$G0RhclbV+|ZhENc%l>Lsti7MWp1@ zN8AY27^$lG8cK)J(p3)duGGyPjcqgB@P4V*O$KJ*Fp3_ovUQ00~)Tua1OZ zgc0^T=9{_de-(Wq46RO`r$IX2{SDV6I@^G6?~Ojdjc@eO*%PA|%%nIKq{A2C#b+YP zwm^XEHa0Yxhun|#eDcG(Q_thJa&Wj}!dnTO8jm73dXFC&IPW9ZAUn>0VlHCXL5uWPWHlZ7Ac)k6oATV26DMKlk z6mwB#(pUyp-k;97_|J|dF2GsqnV4^^oq$Mc+%;eB-(#W>ah6FG3)Z>~xILMsMaU}^ zXrqT&+G4}L^htfqSLr6KD#d!O&i+{yEt9q4;$1(RHd+2hqR>%>fJS?&Y14MS3HzyP z!7*XDu$}k+U^JT<7#QzV_a(oBUEWw!d|;Wsnd~gFje8FLK6tcWXa45?%baZ;?DqQ3 z`@e4780Dej3*6aNcF*{Q^uaV5vc}Zg5dvewY)7@<#+n&SRd^BR{2QKomqX({wE=172zaaB$Ya~gpv94=F*>=jw^LuD>2VFTinij5`kVwjH4o@A! zT3cSkhtP{>g!Bci({1eCHSuSy@V|x!9|=;Zvy%82U8&5mV(Eim+|zI3Ca{qlI&sPm zenAQ@r4d!6!iv`h_FAPu<2b7wWG&e*r=HnX5JsZc4f}q#OWCD)5$DWC^uN)v3Dp^_ zNp=~UZCYpQs9iZEv$hgGAc|mr8gc<>(%GKTg51w%(Fa2j0Ir_zooUxJ-Ohu}c^ZeF zqgnT%M&#|rZb!MyfaIMV(jR~t%o%hc_HZ_>rWrZ(CPUwl{s=t2A zu0@WPJIS8*S}?Im7N1|@#f=U+{E9nPrNh%g7HlT+7Lf0VH){;Ihc=?V7ZCg5)o0_t z&~r`M&)rS@o`WOV%un%@fkZXHV8Q`#ota#(k61g#ssoWrQI>BT=Y)j@ADUiw@NejBq#M%L6lOr)%tRp|kU{?WJ# z?RSmX(e;YVO(3c1bLuJzZP)oz&#G!1HVSl4L=LQxA#ntYLf3R#@=drL-4$;0%u~6% zaOvkBc>d@2@nuAZMo^~{0H_77O8?Sf#sz)9E#mDaX z!gU_0C!glrR$3t8;N;7{B8%uLAXvs7um4pD<(Jv5MlDU&oE}Yl#7@zlp68-|U)~)@ zwGXGl%Mise9X(KT)A=59MczDq2O8Tq_cp&?F#j+xl71}nwA_@C9psG$tsd;6gaX%c znkt-rbnG-Z-){_A4CrT5{{o+vCp^jio1}JecNEJ{6Y}3!;AlAKL$+`Vt0_Ccu;|T+ z@TTYY1}GY6@WYyKsXFs@Q~9;V(+T+H%*}nhelj$AUNn%?)0B&>*nNEaA_Bywn1bybN>Y3;?u7!E5|vJd4YV zbn1ILM;#!_FM_XiBIfDT)wxw($c_4b@1;B$3N1tNh3u}gug$Gt1} zmb=USLMAevb1Y-!Sj-^1wmu z(C9pPY+DZ#{^`d9Z?Hjc{dmIPueti8FsBjZ?RPe{hG(wlO>>;wJ-wIbnrBsemJ9&b zQ0Mbuevm$P65a7<%q#P&a8dJEj`<&H;iV|?Cm!lt;&0Ik`<;Dm$^6hct4Av*4Zvwg zwK!s(T&u!C#qg*e5C3zGB!b#-qK=GWTA*$ui&DZRXV-N0^Gg%V^=vHGT0%z?lD=Dd z`riy7Y=IpUDfobmaeipcGH(?U+DiI;KbEgPRA7p| zHQ#RPEnF5XAAfzm8ToTt=nn$x6Vbnb3-xz}gz{Zlyg()VBY`;@WQ>2+&=Ap60hYJ} z-s_D$IojOAn(JBFFF>^TVA`X6qd7sU7BQa##qu79e`qHOvPXYzZd;IVn2~N~`1R{i z!fB28+YPBe-;y1Xm^VXW@J`Ei7QfH8BUV+TvKSY(d4`)S2xl}LKW%dRl3TJRfwy?S z^R=zV%9H{Q7UVW2Qzk ziR5`WLseN36b)H3oLs>3(_xo)kqy|ogOJf-jhwH!FvKF=G11+o=&fQ~p%~?oodBDp zK3D5o9*2~fLBF~~)b{+hig_w6q`aG5@%IsH)8|tcsVk(duZ7o=%cgXA8g0B+L!?7H znRnIaH-+NuzZsD8AwA{u;qrj>79B*c=p zX_9lS?Krd8m|uB-4F#3+6y=jKM>;a(W`E6|J8b~$H#~dbAi*PVo$!pAbTIP%*$*La zhxz4;InR@;!F#a@i*!`fLXIH{@$1_}@*zyZ&F?evGLOEHY#%1pi|t2xK%T@I7I;)I zRp9AM)<3wFl>im%fx?yiO|cQ z21f0rPqXu;=v##T0w0qkKKpZ{0e*WZX-44%3X+!cqGm4YxAI=f2pQrodP5)VP2wpBsgkUNJcT z86o;IK&|q#nVH2`ZLqCU!nMJV1#4;j^gTb{!!X?IdEzMNy_^O5cCsZ=A=trAaEM`RkUrIYXJ(*`E#*ol@Zg*37ql2r<`%>0BR zs_-K2Ou<^_OBv=InUEi#Y;y6^Atp7htKSfyfuGMunB-Q)w$S7NcMtvf7~)O z0v`|(0W}K~AqNb~e>BK1d8ifE*YM*%(sZ#NM|g8bh3UlLjBEi9Z@{~@!2R4y;ei3E z-?a%jsGQ_0Whd&YCI^#{=FfXQK9E^rf=KVtaEv%YD zR48FqjorjLby4lkbqgiMj){V?x?!olEw<$ORNn-0X(^dskfJsN+37r84XUCg`&$qV(DxX;Re~uP(Hmqm%Vfafxv;Y*iFh7Yx(y zt*iWUVf>@1zu5sYq`y@|8Ir>rbjBKUIt~9N-_i?3zp9uw>el3z0&`9PA%)&=0;voo zMG~gS@rA#32gnxKXQw7n)SyK3ljLBleM%5ut8`8Q)sJ# z{~F=enw6qMK;Ge9j*E;mX2YeEQT8tH5sEM6()t~Bo&ShVlzV)`yGm(r#=M^aF&%R-p+T*EYv-#g9mqt4ToxCA? z-5)FR`W9wwv&i)8f;>D)#2WPAw zYy6YKd9}bX*Ti(3tuW}j5>NCm?yHmq!-b(?B3Tdgei`h6gXwT@QB!ryVO@zGWBQ%dp6XEPin^dACw-xeEyy( zLXhq6r`I3U8B7byo=FxY`FqfuM-32kKpM{Gf^$u4&M$zX{EwukjBI@-)AuF^?;+KO zU4)-{Pv}?(mAOIK;~iMiZgbssRPBJI)4eptq=nM@Y5}{=2lo`OX@?Eso$r0o7#kSV zHhB+{Vs{VixAeT4tg;|Kkd(DqVowZOl5)KPH}!d0vkF~6tZvSB9>*SHXu3{>3ZvGG zHJ6<~i-w~;x)nkZnR~2JD%W{_8apQzD)?SH3sY#1|In?6SMAxoT5--+<=N}@xq4+* zzf!NXZ-9V-`OoljUT-92yNna$c963(%E{>>eB{NW>BC1~i{`)aW%(F#D4uhk&HGf! z<(=`Z^`)#L*!=WBoLC*RXJO$bBst6GM}~$RclwvfLgel_LEe}1>E<4=QkB)x5ek{& zxa7v`*|XqYw~)W0(|H&q`5rCD6<}SA0`pDSEnZmXEFaw$Ydm6kz8&4QII6cXKZZqI z>=H8Mp=c1$fQ3b&2l&x0-yb@Cos;Hx;t^mA-%J8E>nQaX`e^J75)d~hTa{22FO~}0 zr$1OOBA34AJ&X_B=8d~;yFX7|=XdhkiJR>sX?ps_mte)hj2BhAplZZnCk;u|-mJy=rs?(eF!Oil1evJMq^fOoxtBvYh zp+EcTttGXlcCvxkiUka`6-0OV)^t5s^b=rsF}guYeZ*Vp@DqCe|8Q=*}Qrr4{b zBZu9lC$3c*`$Y02w9jVuFovnuef4cmTIJ1-D~jw~K3SF=L7;pG5Qo5|Xu@c;yfenG zr@mh5hpB^$H}j~=SK1Ku1G%Xd%Ykx$dgq4q#*}n-+-T=@v=qdO6q@kFnx*NqVk8?D zL|9Z=42+(CKL5pXtN44b0!yx4u`#^U0OF*e8x;8gFT!AQbIG-~yEPUiV-^p~vYtVB z(+*@xasgM5A_B~n8mOP4Bp-|O%~zneq+2Q7b3HpmO5iZiV0TE4plIXJl1 zowsSMym+rE6YMeZcEEo=3x}pMl77d?&L(zW2g|G4<+QTQ*VDmV<2+#7R=@rCJsUK64EA{Qad}&MedWyVDME-y;Og{wj%yK+t zPWi)o$l*EeHMgAC9G+i3f?Lp3Fu&@2E8xBg#E$+E&@SD=Ij9HU|2P&TY?D2$2RWEi zYT_gL?-X%TSWv!x;jZ8b6uS^lQ`nd|UoSKcPIo?q5jxLz_P?FMrK$OW`r(@=+Cb1# zV7X2J(!tiM8<2K{7zQ!bJm1AA^}yWzkrXz+v}@S9Do0w51bICzzoYF zya0+UdpJZ}w>;&Egz_!S6u)ssq~}Euir_XYpCL7_A(QJP$aM>AgK0sLvRU=) zZ3Lb{=^{DBbg8z2TmnUKo80~qe!=NSOrdi$t$jNGx4xsH|IqqY!Ej%}+Wlq4+ghy3 z3rFw(&+FGs#u-iHesXKUfTT30OBzt|76ID0r`+USTYZC%AO=ZNRK z<<r<#9K1Nnj zGDKo|;j%shyvM!TKb)2cw z+H`OKZ#hjJp$|@YKP(kcKo9{21!=L8Oa#v@W&A^$hhA$$ijI9?(t56;_e3W>aEOdT9_ z$`-5{VxZL3Bwi`n;B~3Br85^qh8lw};Tg^>pSa}T1{YP# zGMv2(d^+q0tY%p&Po>oNK^7)+tWBPxV4T4a|dW84OC) z8gBm7@40b)JtKcuU0y2QO(btXXQ=v>!i4;WJj&S%2<2ldOJu)C9GkwDccF;n5VWUZ zv+8s^H@0t$;;m5McXE~^(MK!=ho*NIw~3IT0PHsIj$ec#7P8jTVqw&E>hNG!`no=2 zVlfU;m+LAtuJ+o9>{jTZ*^_wPX0Ak`r7YX+!+#{W7Z%Hz`vM(QT@kk>q~Zi<`Y%zS z6rEao*a(m2KN9R?vcne--Z{h9SlDF$KJ{1K-;Rcj*8*>CD7F`;1Dimy%CmW{jz)nQ z&}SJ6Ljv-t^&*s2;#m=Kv2o$3XxX~PDSyC2e)SSh4_$@yirm=EkpXg+SLhJ+UEHa% z^W?8w$0rHK^NIt<>LY&?s82vxUg@qld7)~&5k{jDBu?wxC+A58aV%v@;6(!EUkjE1gDAH<=3bsGU3)huvb9a&cFw>J8dvr%R-N;=-L`VCqq+~i8g176q%OA+zpW#!D3XMBGKxC*Hq*}qH= z(Zf5H0i3kZwMwYy^WhzCgoswkNwDaoyGi+*dX5FQ65;~jwlfQAF=*{Qc0@Fo&!~SX{OCWS1D#Y)gQJ8|;U30+Bxp^@ zr`dbQ&6uK?{B5K-kyGIx$@E0^+pUr9HPAukI~CW9OvvJ2# z;b*|59+jr1kECv!p#T3*L#`_e(rY5oNAesPsg-W2$%ocrw5lD ziu-Sx0%#HiQ9vbKE%`@M7hhJa5a~*3nh)o$ib$dSrii8rn%IzeNgTXeyP|c#JbN%uf5`&kfF%h@Fx(7WC|(19SVSt}%T+ z0*W(@v8JYs>R`2cS_fdsq}6#_wd4oaKyM|FNhaUB`Y!77X?gB! zh!SDh_`~<{F^m;3IszO>ZOOVj?pVC!N!p$gxx*_U;~8?K%5uh`zUupQp?Zp@4aN{8 zg;xF5@t-MHqRai~;ffA{g<1L?_W(XAwx`c?d z=6@#%2|iV$QV{P#X-(KBkK9jCAMPLgcEJMV`Az~Zmypi^9epBEo_Isd2Pbgc+Es`{ zI0N|2ti`~HXT#NcGV;lP#h3CCZ>2DOZ{Ys%@K^4-qiRB^d60%vEX zw>5c`{Onc3I9rT~iAkDBv$$A%BlA|qm(ubeYhW8@z+6qY3+#aIc(uL#JmCzf6=_DU zsHZ$v{UEGU@u&_;)mybLZS>k=L=gO2*7>WIL@iPBffSpymGqBPE|vi+_m#<~H^SC6 zFXCy$*ZqkOD#lr%#7jvv)fGtPW%y_W(9$nG+G1h;{e#6t^F}8ynhXAzzfn&g)3oot z3>CNasKR8Gt4qpvsRg7oQto>V_eqr^eSrm}^}EXWgH*WR-$m2gAF}+jKOLJi_~?z{ zE3v%{zHnw>o~kHjSdaPdMD}i&8?Ow=5@NdaX=DK#r23P*Xy^q}qNnH3{piNl$Euxc z>W+7|&ZIu#{iM%H-fBycD2RfyJoSB|pRQqg8zSlmOnno}DshE-Zss?^7gGsl@}6U~ z(UR{x&*r<$E2nCIoZl4~*f4oya^v}(hvCZaeBCymJnA~W7!q<(Bdvaycd8Wbs?}E9 z5>{@nS-d>=q80R zQu`pF%$%nz!qy4NXlkP9>5}Fv{dflxQYCvMV$+bcxNw1d;Xt3k+x*9?SQtb3?cSn` zu#xNwo=o~$zhz9~XH*l(YYAYK^%fL+9nlSnO2SiNdhsd?X1pkM(ceA3pk9!IxGYE~ zz+--6{u<;8eKGMi|3h>eJEuCnL|W`ejhyi(s+OBspR)h{=9)-M5=db|X*rdBQGFVD z0NyX&2v&wlhRh>biHp!0fRWR=LJR2wk#()0yz zT(GC9C6L1u$oq9cQJ%omv2?^}9odN>#oMCu z+vzdkpJP?D>JFZh3$4@$aOR-C7i;wVE_0QQ2iwi$x*@dNUcR#DRC}=bp$5P|JC?FhNb@PrY!r%?@4H!gk0+#C+ghXUJ zONG0!CCOO1p#f_2Ho|^%J&+>)O=>A)X&<%&$3PqdUbA>)ZwD<{XeY{*mcPgzJvV$2 z$a7}#m$JVlA?a|UXkJ->+eko^iAb)Dp)hG!!0V6e8s&T_*dW~aZlE{_4BI-N5TB@S zSOvEpp2qsQx47_iNVtI)sjop3j)yd+ZDmfjU zct0qD8~r3t*e>_3y({bwvJTOW_=u!=hrS3!(?DCAljt0qYtzR1g%XsP2A_@%(lOKR#wa?-uHJ*LNhv5nS%P2AkH17R927_pbDD-mhSqL_w0D0P3~+^-4q zvR3^x8I3WvLZ)3Lt?L%E zC}G=tvj0f-C*RDv>9zdbk_UEp(oMn-@S`Au>2{%gC|xU`t9z-r|B7vnQ@VU4`lf2a zJbRx@{WaA8)#qj zBa5X3Jqw^?YoIVBjThnuO^8tv)uZVTsXKd^+(mzDhcEo*AJs<4kBuH%9KEl#Q+Ef- z6A)@Bl(f5Y^Z1VJ;{?ZXMy`Ftrrx(S-4^leQ9MJTroH8!$fsE?Sp+|OMvr3?NZCr_ zY*;Va)$N@K{=U9O-DK}(|F6t{B%(HhF=Z;xEw_{ZYx64@X!+EGHM$_jtn`@(!z2_@ z3Y;TDy=kX_K3~F2Q?OE1F75vwywcWBwH<}Kb;ou9EH%UguSB;swB8phO(_#-((%3c zqNK_^A5e&r7GX;$bzI4MAvDgmgvsDk)TZ^ycYNE*M@D&R;Fl8aR^ zy9CuBBO8?kd8Qw{Mq!3UY;a-Y(7qM)8y)g}7;^_Y8*r4x{7|)pJE9i_Gg_%Wdp{sd z%XMh{n4ERz1dgM`9tbNijVsZK>YyM##6H>9p7Gj!$+*l@9hm1tnQqZyD$gA$vq-JT z!d#@M+g1SovYs)`W{5;tT#SM?vT4AeFLQV4&sirH1IEo3hR!ZUB+UjLwN z=z){xK}c1EN%$Z~@5A&MsST}{{@-&!9EQpqM|)r6P0`c!-`{yPFit9Q{Id0uWwxrF zR&##489b_i{RFIy+p`cmf&+{dFkDse_bf44=-;+9ag+&1-``TJmWbUh7aQ10tJ#_s zYclz}b=0x?^M3(KDYe#C46JN^2x{0a2*u#RUgPd$P^m8Az!_$q~z%Fk!;9`;?0 z_g_`o%75>J`r@nEuHxn^c&GjfYp3|v!xw%N@fYmTeQ{~1K=98R>Z>Z1KPe0ZM1jx$ z0A7Uzx`#6Cc~9*B0Q(;NLipEdsO$d#2!18#Hu_8#u7gU}o_D#lQ_8DtkDLyNzAEP8 zfkn$>)D!**v+>qDF&)>$F9?|l;o&zx{vf6?S-HTjMpnB20D^3MWsN+`uNi0(j?A|b zu0Qf0G`*y39E_7g{{Vt>{?HyA@g=8@yczKqMbhfaVWZ2tg=AG335x*x@lfM-y+y0#eB^o>vpDdit|Ky=)V-)Z~_p(s?@iN(a= z&-@ir!y2snEdC5#Msxn4>ha~9+mF_(kevtFf5A$#1GT@w8`H@kwyhrDra&|}tL_Fj zj=$ibJ_q=j;OoByd`bPBC%v`1i)-8e0BfTr?#zv_6<~P;V2XUHJs4}$@n3;I0`!lL zo-e)dw}$+8X`(P@eLGFpV%>8jK8qx0Y=wK^1CDW3CuMP@euDf3_zmFSgMJo=!#)zz zQrZa4ZYGgQp5d{~k~RTmKad;>=A8MNqW4y(r8SMD2n~v{Cjeyh{OSjBZLMx$Pv0S5 zO{7xLn;gf*{{V`f6ZkpcyU&O|Hr1938z{Iy!+g)#5qi5Z-~m?{xjP_d=Xb^ri#|F1 zqdaatBlz89wy}hm^eqgbVPzJ6^8rL5*;N98 z6x4MQ`V;#We#-X$00Mjj+NX$QBgHzrNhYIl7zA66q9Ae5XOrCi70*^`PRnBAtdC(| z4nu7(nAb5)ERFLM84lU?9AoQQT%vWiH-y3v{Db{rKma)GIP{}nDlN6g+nV0#i^ece zjtM^GH`4-`9~J)q!A|}sUwGSJ(tl^a2;6ygR?>@|bL{7bllUWU56YvHp5#|WC1rL@ z`yM@K;rVT?;2l2pWylI zwQ(WV?nFfM4%}|_+<*Gi?2^ZLQJ@e1u z(xQ4rjaf+hgh+LHMZcPe6asexwTGuq$2H9DV{63|{hchWo-8Y-;t!OW+}~gG-luje zq9bhLOo<4Hb5iZvKweEW4#U|De{hiSZ0AF zEyNO}{&;5kF&HPYqTyrnr}pIVz0ZZeY>Vk*3lx4K(P6qW?BBXYB?#lE3M-~IbjWJV z;h=$$u>dH_K|v~TPCFd>_oB+cKUwi5orS7fTw235;EWS4!bExFt~&GDs@eg_+AgJi z4b+#wl|o8Ba2xdh06C(-eRKZ+1he>wKB1y`gW(pvbs{aSziQLtM+7WvKyaXp95xSs zy~Rak?x_wPkFGTT01hRpt6Sa1Sju)6gz@lbwq$#ynvKxj#Tm>2VkYR_mbNs2MhjeqF6n+(WE8_Qp zuKWe#{T3^|F7`YJL$+8Pec2HI01GMPALmIfS@R)ET+y-l&++H>WAO*T9~`fSyhnQ_ z#l6IZ^gVJY@Rx9d(TMx9D8Oa>M+8?&l9JHD#@m?NhMfTO#EM9aTA<-{QwbU%KTix5s<-BeVLn$27O{b_ItzH#@Z)0htP~3gp z#|PTE8)k;swzRj6x5%n-kQV?b`sSwYz;Ztmej|7r;U9#rd~@SXdK)b|!X}#Pc~1Zi z!_=OD4oM=dCoK>ko8PoI?KR?G+F!Xaa`0sasoFv^J86-d-bSQgA;KIH4xk91q5Cj2eHz&xTiiD4r#2;J!|p zj8yrPvA`hYerW^C)RIL;`;XCrMQ{p$t03%sav5MZp_?|r2S2-Cl|dbWJCCO#x$3`q!biX97N$wFJTH~& zv;m$g7BbMciY@Zo?!b?NTNpmoHz_4zp^0u^Xh9GJ9m>6N@6xRa+oALS0Q?k##}@tv z{h9A#o?k9aQ&zRHj~y5pJj1~M0B{3ZL0&{XkA!0J#)*AwkwrWpxcNzKr2Zsx-n6qK z=%!&8Q#qFL9x?&ivS$G2k@TwAWlKBVD@nR*Z9B`6@wI`F5rdo`Ow-kf$nn;_r`z~; z;a>7Io9yxstoUX)^r9pv`x|O2{G#HV2$r#T+{d(uEZ)(j_vOPw| z?lii~r|x%Tschuq9jiBR)ah+4;h2dO1%;QLr=j%CMc5Umv9o})MQ{~C;1W1JXuohi z8vg)-vRKEXc$2{25bfiQWiwpqhGql}&K1-D06=_aftu{YaBf8Ytz&ISY_s7@jY9tbN@(@HT3buP2l_lT^@o$*4}{^t61jcqKnNZv^a-~f3foPk7X!SoJheM$cS41wZr+5_Rfl?UxZ@h?=K z?PXi1(zKhn?c#<)I1Pl$kRE#C=nsTTfNc>NKrAvh}uE%Siw%6@xX>|9OI);!VLJLmTDIel?wm(V~ zAS<%n=k1mIK}(_?LtgPUvW5YZ$kXE?iRduHoY12b7d?mJ-|Y3T{?#4?u<=*zIpS;Y zGJB6dN3qjgEwLE{EUkp(k<-w0>r*LmKXlT~txGzO{1aQ?EvqHAk*au<2+8C7ScT7~ zcJa?S#Y(F&C?X&DcaOpCE=0P#*L+OaA1IGlEC>DczO{bVL*zpr{t4mmlJGpXTBnJ( zu_t%-x}5RT{ZRw);)PmBe5mGrG5*K@00{mMd^OfSCu&-kh&Jgq4J!S%{x^h} z~e>yU9vk`~nk*+TdB)BUlnRitl;`coae`Cb}? z<*<7E-6-UTV7oc(L-zXpxUKY(Vfc%rPY9D>LE*TgaM|mF+uYMor`S29c3-pYzr>&T zC|0pQhW`L*Zxc&%qIhkE$d1AkgLT9Fv9{>bu=6|js(i4G*HOmudY+Z6{{X=#zhzi% z47TawIMiU7Q&~`}lix8DS*o%t*~F%w@JsL6UPO5Brtt%=-rOf2K}QvR@b_1_Nl%roi-%5ktGqomdeTrT;z;&=iaSF zB-}@P=+CBY{{Y~XpRk0WHZxBd!=h1QNifXijks)CJ0D@lr%n)3lj@Mj#E;8DyHVN&>_wVRxU1@@hOV??H3qAnIA1-}GZ5YC&d6}DTF2-h!{{RIO{k64}^X)YqCOm<@Hqle$ z9>+8~bi)w|nItAGr{{Xh1?L#3a#hQ+t zZ)^@Elv+ph^f;%>6|h{*_=WLr#Ge&)jTXz}HR|7J=TS$wo*Q`Knh;lMWsw)IJ9Iti z#?jb!Z*%DFEB*<+`!?#DZM^zVh&)D#HNTr|!&=~};o6rZ+7?Ok~sZDa95#>Px=r$dRsABpGl zqm~_syCS>&uD@*iQdRybXv25}NPIOA{QhofxI?gBMpm=?ZhqRfFqkdACh2lQ27I>g z#776%sm(PAb`EJCZSjBhhy9_xGidN=9~dXn_1guNZY|y|Iw%_5f#++1xehW2$jIWZ zDiPHQw)Z{5;2-Qy`xXAspAO;ievJCvrlSxEsp;`*yIS5};N~;(o=82%y-cMzvf~KJ z8v4Kd6EF5_w?{Vz#4Q@O7*DNkEsmdc0I5|ZKW7u+YmXA@x}KwJp=tU^xSmPJ*`kbY zVoyK-``p&bH!;1>y}x2F*=I)hPHp}vd`q^DUld)!JeVXI8fv#-G561N+o11U^=e&m z#MUvf_5P8o+uXXfo9tCNasbPJJPPGCHLh%|;UeEc3`m9-w#qDJLWv7*gCq z1Ka8GE3yythlPn|&wpXhtvfMnabFj{D|l<*N5lK?h?>s%WZGk~(^_ONb#Orm8h~?x zc|L#>RT%S1!fwd?`SBj3uY5!CW$(nViTBV?t?H9`k~EA8Tc_|wnK)HZ#yaM@v`Waw zuBNV;EuEZE#}(o>s4C_ip@Ms;Wx5~ih|yx;)H_6 zWO|;bsKl2sS|WL}5UIJF10#|+_orkta?&X+K)jx2k;35-qSzae-ldAi%zyAvZx^SD z}qwk1S=6 zuS%jUXWZ&=YHXGb0!SJ0jC`jZeTk=V8?N|eFN|+#0gL6@3ImKDo&NyNXs}r2JYu)n zI!yqQ-gtrqkIX-LvDZIe!kV?j&#b@TmbxANhrzE9d_mONw%%*MXN|nA$Wjy>4&-ig z_|#T*vPP8lK8VvI`+lP()}a*GnRk~bYH{2Q_pFU>8it!}(L6S`c~@Ndp+g}jp~qa~ zr`NqP7;{|S+8K?url~ANQ_E67IUJvV%8yVpG+!TH!*MO2iFA1vB$T*~inN@YtA!G-y)Bgb1T18(@;JzdF3rFz|oAz{` zd@r2>yiTK&k;hzOyw|zVX=%{d-;pfy861Ksj2p}-+*BlxwH)EH#w}bl)w5>|u z%?84fBeCP$VDXOBT$Afx_$T+rd+!qXS-uYVp5iN;%?UH6Tu9?D26|+Ya=Gc~aoV$~ zAGD1i`X5Jm_mJE^=a0*C{;4bUo+~2CTK)XCkd?QIWN;2aW?jSE0MkfhRvMM< z%#l0Js|zUd+9>i=`X5fz?O|BCPk~GV@ODh{q>GyeCb#wN%>pM?zO={_bcIoqyrGwvFxJy2?qyJh6hK z>+Md#V-Laq02RI_`~dOIw~YKDa~j7R`Fe$cbL8Dc{7As|J&$99Rijp5q~g!EJQeYy z!oMB-2W{~m!S~V_(Nru@JBU+i;J#-gAYyZetkO`p-tzb-T+*ul0A0rVIql0~Jlj zvge*Ud-@9GXz%;9$a#7*Z@{Aw_k3(ed<~r^*Tk?XVj!yp(Nio-G#~87t{{j zJ?Ur~mUUkq_+!8t1;(l3eNhBfmdz#Hi+<={{W7U zh!)!7&qLA}rh{ZAD7$}(X9EDco_&S~YUzv=6^vx=&o% zfLNcWJk`ZE_7SzrBMZT;iqXV?lnkRM(C%>MudEPfe$8xv|~YfWQX+jn#JRod~cKX(}? zrUA||oV8~;H#;qjqO6Zr@c#hXG;JYnZZ$inXwgE!EI{Es2ON{?a%vu|pr6HBu+m=Y z%^|vy;#OJy%L!nL3HfqPcMb*zf2Jr=13oVh-6fmeLv1o$o>DmhC+ax%`ctqJ?CiX8 ztlHe)-N!wgaI-as+GiVjeeyj)=jQx+Q}CEWq89R*L4(%PTmLHX&0E0Vl5>lri5;PCLi;b3>;GibZ#n9f}u_dhjS) zi2V`$g*+180{xS`FQ?wTVec&(@%+v=8Kf==cXe&hY7!9n6EtHVFVOWVg zL};s5q8SQO43Xac!FhgW>^uL7mx>Ift{f3=NzBUnr~Dy^AF=@w`>0Z4L##u z4x-EE4-(z7#S;9B7?p<~*18h35zhW5Q?|9#Z1p#2)r?^9uA~- zt-?+Vov$um=2ks$2mb(Cns#>?`d#o_#$Ok{B6u@E)ild}Dt!QGmcY$&vMlCwV;sXP zka$difHHYC%TZHOea(})Jwn3cQh{fR+&Mr#a?W?Ertjin(UgOju_iFFD$#hTy+XK&lHv3fOMW4)KkR18MoDR-9hGtZZ^z* zV0{Q5%85b6*@r_?-$b;XmK(#+WQd;`IP3oa)})tl=w0x)h%bH^_|nVAz8OVHtYr-+ zC-!|t@R68Oc!tw!no_~LF|3O ztu!)woOg(3()A0Qg9=;oVJ#eW-q&b~Nb8~8f#&tW#$^<6Nw66!qn9hi1*-%cv5 zq^!i7i@EQ%zqQZ72yY}?--&jyC>SXeGP<8^g+HZc>C2)n>ieAyhwYpDI>m`EzA)J; zk^+HmFbX^W00&%D`x*8hG){^y+qd>t(CtLf{7|x%K%3S-v&zN2G4lO-`_%gxwj9y! zXlY;YP_Nm$P)4|);w%Si0=qQpqtE;XGm-jG@bg1bk8{WW0BTQ;zBKsdVQHcKFH75> z49OzPad#e_JZpME$Uvn5C=WUAN1*3eQ{+U;U5*<~_*3yHX^TC-!rgj!OlNB*n?BIT zqhoFkJ@~5SWZ9AG9|XK*sjOF*e+jj#lM&q*lS!AB&IlhN9cWzZVYstbO!#^6dryR} zoA7s9iADzbY$fmO@^Sk8C~=oivlipRA0KCSv$gnhc#I#GYbp3#^ZWz(ccsg1$IByg z;h%>5Iimbr(&6~m;;8gJKFkZth%cd$T4D}WK6M-tG1I1LxVS~M32UkL1<&oN`zoc) zzMU_{{TWeJw#f1lLFfR=@y36`xjmH4IiuWE{k1=33w954@w-7)18Tq}U?T&NN!y&~ z*P1<)gPJ|cH-EMV?7cKgbEkZ9&|?hXzwbC~oM+}4tK^qp=8tnq{{Z&K{g`a*BfGWu z%i;U15#|VW51p~w1RwtZRW4Z%nmx`3<8SSu@bkpq4mDjP;eNeqb*NuM_FGGP8BCJ4 z{{WTb+L^`%Tc>Kc!KbM%O4=VP#iIC%#?>IX@Rp?RNy0;H%G~pg)pqkEmR*ZSLh)je z_J0FwF$Otk-qDF~eDXNWH5Mx|mrd~kNxZfAajBIgEp<5DBBE^{C_EpR{N}Kf9G%UU!8h%*`#M`klkuBI zm84O+RJ@Gfjy~u-f1bIi_HN;Fo{9Tze$6(q&vk$CQ%GiccB;I6{P&y5n~7I1mb$&YR* z<2e`H%-DWtIY#imG+a}Ym=ga0!9YJ`{bIsf6!@uc z4Z%&>T{7w02L~KRar6~Rgwwc`qI`St7f90lWAT?=*M19LHoK)yH`?bmx_!btFCZnx z9Tb7MG3np0r$;O0)Xl5C1c%_~j(kO7_I)qmX1947f@kuy$)so9$pjVbdVOe0Nrx*L zr+f_fhvC9w(!LOD@%dntxBkhQF`f>7LrwFysB*JHFA98fn~P6`I^y%TAlh`Jcey(_ z6uB5$MLW*|e0G}lF>&zX`CY11rL(;whs$$%TD)DKfrQk$G^ii_pk_SwH|@7Zp`<(T|f(c_7uD;sWa zl;@26yaArSTIcptWphWlAN)37?3}g`$#L_u1z&gX@@j>nd$p# ze#`J&7qa;6p-&7sGDOp3liVB*nXBZNVCRo<*Z%;v-|WvAd%Hi39v!${xiJ3#XoYcs z*b$%Bmn6FfG<%;ge%0R;J_&qMk^Fh!j~i)AtXlkZMJA??OaS$|M5=~~7v)?`Vh zc*|UBPi!?L@b;lHvhEKOHa`s2@{?v(7rrNrP0W56)S45L6|K)7h|M&c6`6^DsCd#D zJeBZO@X04WUvI{#MT=7xRlM=6w#A2pXFy!+-VR9m0Zl`=tn7Inj7fokIUZmbr!C1f z{5@}PJUgd>9Q~)Os5F4ZuXFijEo*D zNPK7y(%*#IR+h0Xvgx+sI4ojVV-T*`*BumNf%L59@f)6@;euC6+NT4|VS(wIOK@eq z9ojo7L~K+ni?jobe9cI-Zr_s_wT?1XUf}Ol;5Sabv`M~XC$k)oK>FR&yeM0043!z` zXzDb6YX052h5P=~9wveBrYQ(Tg$$<=sEsfbb{w7ut!X`xg#IRc>!!Q0+|Ef85D7m@ zI*^Wn(#FZI!nK@40l+biI#gZQ7UrFuoupT540f@qZEulK0n^fu`V&P25y>LQ3Mdgb z3ZQos3#sfs@J*5C{?HfxZ_Tqxn5OP_{Ntyk6ZlOjd`HCOydAzLDnc#_oDqf?sFToXYE3IN z`fZxb#lb{k80RN)^GW<7idQqdJv7au-A2-}RG$c?xKWPYl)Dbf=QFF_T*+~H=3GeF zkyK^Lz{>ITrwzu>&;J11+8Cn!qkKW-M60^W)thSLEwzSzxBz|?(LK?FJWE}QI3ylS zYM4=tqaVOO#MBAyN35a{NkD(nBJD~bj*CUo^v7GcUrvCdMhhW@a8DfL6fu;wjT=X{ z#FpAsv}{ymk_80w>?wthV*P>1KNx&LW>4;av84Ui@b!bYPUrJAfAZ|8A9wh6+TPnh z)2Ft#NZo{coe%-fJjzA}onr~oTLeuBFK>Xs~CK>fO$@ttsph z_*wZu;~AzlHu9NRw)}1_&NrG%bCjp2M;xY4H3MvmFG_6sdmQ3%g9&zBwK(u zK3L624iG@r{$oOgx1X4(%`oU=_>`FRxaExPY<=Ou>rOj}`!n`r)U_M0*}p`R=Kgsb zW2WgPB<&199G-*Hv#6EX)lI%rukd}{)5miI+{jQyaD~nX$U9bRVasAU$&*`&WIKUD gka_i?HYc&jc)<{B^TZHs^8W5Ps*`-7Pgc+W*^|t<8 diff --git a/examples/webgpu_postprocessing_motion_blur.html b/examples/webgpu_postprocessing_motion_blur.html index 56dae144073ca0..3e2c2d91d8f8c2 100644 --- a/examples/webgpu_postprocessing_motion_blur.html +++ b/examples/webgpu_postprocessing_motion_blur.html @@ -164,7 +164,7 @@ controls.minDistance = 1; controls.maxDistance = 10; controls.maxPolarAngle = Math.PI / 2; - //controls.autoRotate = true; + controls.autoRotate = true; controls.autoRotateSpeed = 1; controls.target.set( 0, 1, 0 ); controls.enableDamping = true; @@ -173,7 +173,7 @@ // post-processing - const blurAmount = uniform( 2 ); + const blurAmount = uniform( 1.5 ); const showVelocity = uniform( 0 ); const scenePass = pass( scene, camera ); @@ -204,20 +204,7 @@ gui.add( controls, 'autoRotate' ); gui.add( blurAmount, 'value', 0, 4 ).name( 'blur amount' ); gui.add( params, 'speed', 0, 2 ); - - const uiVelocity = gui.add( showVelocity, 'value', 0, 1 ).name( 'show velocity' ); - - function guiAnimation() { - - showVelocity.value = 1 - Math.max( Math.min( ( performance.now() / 1000 ) - 1, 1 ), 0 ); - - uiVelocity.updateDisplay(); - - if ( showVelocity.value > 0 ) requestAnimationFrame( guiAnimation ); - - } - - requestAnimationFrame( guiAnimation ); + gui.add( showVelocity, 'value', 0, 1 ).name( 'show velocity' ); // diff --git a/src/nodes/display/MotionBlurNode.js b/src/nodes/display/MotionBlurNode.js index b073a77434d090..8a90ffdad2144f 100644 --- a/src/nodes/display/MotionBlurNode.js +++ b/src/nodes/display/MotionBlurNode.js @@ -6,7 +6,7 @@ export const motionBlur = /*#__PURE__*/ Fn( ( [ inputNode, velocity ] ) => { const sampleColor = ( uv ) => inputNode.uv( uv ); - const NUM_SAMPLES = int( 30 ); + const NUM_SAMPLES = int( 16 ); const uvs = uv(); From 9c0a201e671018f62a5ce9eb0b9c5fd08823d9a6 Mon Sep 17 00:00:00 2001 From: sunag Date: Thu, 8 Aug 2024 14:34:57 -0300 Subject: [PATCH 19/24] update imports --- examples/webgpu_postprocessing_motion_blur.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/webgpu_postprocessing_motion_blur.html b/examples/webgpu_postprocessing_motion_blur.html index 3e2c2d91d8f8c2..47c42c6ed48420 100644 --- a/examples/webgpu_postprocessing_motion_blur.html +++ b/examples/webgpu_postprocessing_motion_blur.html @@ -15,8 +15,8 @@