From 3c057b501f277a46fc6d798eddae936ff13685bc Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 16:44:46 -0500 Subject: [PATCH 1/4] Lay out the native compiler's functions by the code each kind of run executes A warm rebuild ran about 3.5 MB of the native compiler's code, but the code was spread over its 69 MB text, so 64 KB fault-around mapped about 20 MB of it. The emitter can now take a function layout: a list of functions in tiers. It writes the listed definitions, generated helpers included, first and by tier, each in a `layout-` partition group. The LLVM helper compiles each partition's definitions in text order, so the listed ones come first in their partitions, and a helper that places functions by group keeps a tier's definitions in the same partitions. The rest keep their order and their source-file groups. - compile() takes a `functionLayout` file (` ` lines, gzip-compressed when the name ends in .gz). Keys leave out module numbers. - build-native-cli.mts uses the committed packages/compiler/native/cli.layout.gz, or the file SCRIPTC_NATIVE_LAYOUT names; an empty value and instrumented builds use none. - scripts/refresh-cli-layout.mjs builds an instrumented compiler, builds the runtime workloads and a corpus slice cold and then unchanged, and reads the functions each run executed from the raw profiles. Tier 1 is `--version` and rebuilds that hit both caches; tier 2 is the other builds. - The release workflow's cli-profile job also collects a layout on the release commit, and the CLI builds use it. Names of closures and generated helpers change with nearby edits, so a committed layout matches fewer functions as main moves on. - Forked lowering and emission workers reset the profile counters after fork and write their profile before _exit, so instrumented builds also count the work done in workers. This applies to refresh-cli-profile.mjs too. Executables the compiler produces are unchanged. --- .github/workflows/release.yml | 29 +- RELEASING.md | 2 + packages/compiler/native/cli.layout.gz | Bin 0 -> 216519 bytes packages/compiler/native/host.c | 25 +- .../compiler/src/backend/llvm/emit-module.ts | 89 +++++-- packages/compiler/src/backend/llvm/emitter.ts | 3 + .../src/backend/llvm/function-layout.ts | 41 +++ packages/compiler/src/compile-types.ts | 5 + packages/compiler/src/index.ts | 18 ++ .../compiler/test/function-layout.test.ts | 147 +++++++++++ scripts/build-native-cli.mts | 10 + scripts/refresh-cli-layout.mjs | 248 ++++++++++++++++++ 12 files changed, 591 insertions(+), 26 deletions(-) create mode 100644 packages/compiler/native/cli.layout.gz create mode 100644 packages/compiler/src/backend/llvm/function-layout.ts create mode 100644 packages/compiler/test/function-layout.test.ts create mode 100644 scripts/refresh-cli-layout.mjs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 799337e0a..ef0b764ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -100,11 +100,11 @@ jobs: if (receiptRun) appendFileSync(process.env.GITHUB_OUTPUT, `receipt_run=${receiptRun}\n`); NODE - # Collects the native compiler's profile on this commit - # (scripts/refresh-cli-profile.mjs), so every platform's CLI build optimizes - # with a profile of the code it compiles. The committed profile falls behind - # main within a day or two. If this job fails, the CLI builds use the - # committed profile. + # Collects the native compiler's profile and function layout on this commit + # (scripts/refresh-cli-profile.mjs, scripts/refresh-cli-layout.mjs), so every + # platform's CLI build optimizes and lays out the code it compiles. The + # committed ones fall behind main within a day or two. If this job fails, + # the CLI builds use the committed profile and layout. cli-profile: name: Collect the native compiler profile needs: check-release @@ -138,11 +138,17 @@ jobs: - name: Collect the profile run: >- node scripts/refresh-cli-profile.mjs --tsc-ts "$RUNNER_TEMP/tsc-ts" --jobs 4 - --output "$RUNNER_TEMP/cli-profile/cli.profdata.gz" + --output "$RUNNER_TEMP/cli-profile/cli.profdata.gz" --work "$RUNNER_TEMP/cli-profile-work" + - name: Collect the function layout + run: >- + node scripts/refresh-cli-layout.mjs --jobs 4 --instrumented "$RUNNER_TEMP/cli-profile-work/cli" + --output "$RUNNER_TEMP/cli-profile/cli.layout.gz" - uses: actions/upload-artifact@v4 with: name: cli-profile - path: ${{ runner.temp }}/cli-profile/cli.profdata.gz + path: | + ${{ runner.temp }}/cli-profile/cli.profdata.gz + ${{ runner.temp }}/cli-profile/cli.layout.gz retention-days: 7 if-no-files-found: error @@ -300,8 +306,8 @@ jobs: with: name: cli-profile path: ${{ runner.temp }}/cli-profile - # Without the artifact, SCRIPTC_NATIVE_PROFILE_USE stays unset and - # build-native-cli.mts uses the committed profile. + # Without the artifact, SCRIPTC_NATIVE_PROFILE_USE and SCRIPTC_NATIVE_LAYOUT + # stay unset and build-native-cli.mts uses the committed profile and layout. - name: Select the native compiler profile if: matrix.cli != '' shell: bash @@ -311,6 +317,11 @@ jobs: if [ -n "$COLLECTED" ]; then echo "SCRIPTC_NATIVE_PROFILE_USE=$COLLECTED" >> "$GITHUB_ENV" echo "The native CLI builds with the profile collected on $GITHUB_SHA" + layout="$(dirname "$COLLECTED")/cli.layout.gz" + if [ -f "$layout" ]; then + echo "SCRIPTC_NATIVE_LAYOUT=$layout" >> "$GITHUB_ENV" + echo "The native CLI builds with the function layout collected on $GITHUB_SHA" + fi else echo "::warning::No profile was collected on this commit; the native CLI builds with the committed profile" fi diff --git a/RELEASING.md b/RELEASING.md index 42bfe75ad..42c253568 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -18,6 +18,8 @@ The release job builds each pinned LLVM helper, precompiled runtime pack, and na Release builds of the native CLI optimize the compiler with a profile collected on the release commit. The `cli-profile` job runs `node scripts/refresh-cli-profile.mjs` on Linux x64, which builds an instrumented compiler, runs it on tsc-ts, a slice of the corpus, and the runtime benchmark workloads, and writes the merged sparse profile. Every platform's CLI build uses that profile (`SCRIPTC_NATIVE_PROFILE_USE`), and the GitHub release attaches it as `scriptc--cli.profdata.gz`. Code the profile does not describe, or describes from older compiler sources, is optimized as without a profile. When the profile job fails, the CLI builds use the committed profile `packages/compiler/native/cli.profdata.gz`, which local and CI builds of the native compiler also use. Refresh the committed profile when compiler code has changed substantially since the last refresh: run `node scripts/refresh-cli-profile.mjs --tsc-ts ` on a quiet Linux x64 host and commit the new profile on its own. +Builds of the native compiler also order its functions by the committed layout `packages/compiler/native/cli.layout.gz`: the functions that `--version` and rebuilds of unchanged programs run come first, then the ones other builds run, so a run maps fewer pages of the executable. Functions the layout does not list keep their usual order. Function names of closures and generated helpers change with nearby edits, so the `cli-profile` job also collects a layout on the release commit (`scripts/refresh-cli-layout.mjs`, reusing the job's instrumented compiler), and the CLI builds use it (`SCRIPTC_NATIVE_LAYOUT`). Refresh the committed layout the same way as the profile, with `node scripts/refresh-cli-layout.mjs`, and commit it on its own. + Publishing uses npm trusted publishing (OIDC) — there is no npm token secret. Each published package must have a GitHub Actions trusted publisher for `release.yml` and the `Release` environment. A missing configuration fails diff --git a/packages/compiler/native/cli.layout.gz b/packages/compiler/native/cli.layout.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff1f8b97e93e958cd850eb6991d489661b1d678e GIT binary patch literal 216519 zcmZsCWmp`+5^W$5++BjZyGtNAi!JUBK^F}U2_7`KEFM_g-Q6`Tt|3@(cYAy9(;sjC z%&D5HGu_oy^Y!%fP(~xa`_BRYzM^wEaa9P)?i-Y2A=yhwXJh1he0%4En$|8ll>(2D zsO_j+m|19~Bl&{)ZSE5{b@0s@vbKFS|wf#1ci zAxjK|TbLJ&4eKIPSl`5_sEXbA+XEWIzFJ059?b-4zd%hPmF17M$~JOiXMPmVp|>rg z$unVi08(p9;-P$eRRTnOmhde$D7`g#qyTr!&sk*q?@Ox`F1<_)=v*{zCNfvQd^A>! zl4aaJ_7m$PV{5S}MF~SHn#3ExS=LjvfE|NYrbt6WCXKNymXC-8>LO*?92lJ3>L&t) zTtzmSLd=c`eR@;)|0Z@mln%H#JgV7rYbe>O3z;{B3MpN|E959!UmjzYxg@&7{j|f8 z*GCK&u2DiQ z?-isQw~N@aqQzw|5_xD_ASAI;_>395D=Z{_QD5s^wDwja#Xc}c2crx!#Y+^a7bSMk zk$CcaU`C@?)>qiK$nLd{+D}ahbFEzoGb-(va8lH+=zf~FAJu6{rm{;OXfCGAp)^A$T@2;s&&fIy+sPZU9YR>WyN!0|qsG?Hq?XV~F zX5+EY3DU=zWm;wM#cav&WWUF0HxqP+0|ee_$9#b%Gl|cHez0j@?FWNtM;#6C^MsFLN@T2j|-O zeVg34Rs;8WsDnQ`Dpkg?MN1RAL*v(LHnZu_^NtMX~KCTD@yXN6T(BKpvvE;-$t3Pg7E&2?e7mOY`h& zZS_oqChr*G%OnNw@KWPtXveu1DTxy)F@5?bAUDZ7kY%Q$&y1hV+d7iYls(!Kk`G@_ z=qNe--6l@SmM@t%pUS$bl1^;@N^m3#*{KjByyc#+HO8!q8o{N_(8x~rJ|VjGC+<;8 z*evx;ek+5uqLk%)1zLfzlwxnf7|$F}3YxyO0LY8B5-O`&;c^AxpE`b0vB`iYU(^*c zz*84csah+s_R?UFCc7dsr4sPLYjCi3Q0$Kxz8s=6JEo$QdNZSvd|whHBC(E&mZtk8 zFz?(QyG8zcjYO_u%9<x7#-=CvaQDN*c@{`-7gA+}1;fAf%L!7q2xXY-RGeUPouVde( zfcNz`>8;Pj%Q~koo?j{K>(6pBmkr%&znc!-<|p~{S1x-tWB={0ZZ>O%VB}6V+q@E| zf^y8;UqI_(i&(?Pza2MqYdmu&PjCH-F0Z#tV`OVtQeG!1%l|rAQyf8#SXa$Izas)W zW395c2&zH&nr^|Q0Ya-puVHejh?+CVaffgtBxg&6i)b@pj&m*AvhAh%)2YR@ZW4c$4_e=b}dYH|H1GEWhFxhekm zj<8~V+wp$gLoyu2WQWgPpx$T$bBbqGYhCw?a`!+fdxstQ1U35{<_asZ^VfC7&eAsO zC)3-2#`0H;_2&;obt;rYyMj-jiJ4AEBH*6Mk|U-ZL9P!6^{;OK?jkn2>qheEeE%)u3(+f#ZT<3wJgx?RlKk7oL;E2+u9Xhh!ELSWGX=Y z@B}yPtjVKaBTYQwO%XzDV`MiT(>v)q=uoq8{KC~T%41h)Q?w^Hpy8AM5pgK2eZHbv zV-^Kf$Ld|P{W|{`E;F2x?T^3iuo%fN)zH|6x2;)yGfQnaLklm@63!5nxFR*;0um;Y z8IVTIL%%V5?75ZwfbKx7j5nQ+lUhB=A9gxj$+l5Z#!3K6qIcFe5dk%C$R=F2V_Cmf zF@2<&Qg+AiS87(nmQc)%Op?R+2M7~v@q5Mq!iU$DtHqMX%`Q#PY2mg$`a4wP=>3Ry zyJ>E}#$#%LKs#??&ei;?OkYiKlT(i19GQK^&p96a1!)k4puXLuv=aQljw`-v7NM}N z3@M@f4>3z?lT0=wS0s8Ve8jX?D!w?N7MaP8kIvd-4Fi+;yQmJf^-3@E;KZ1giJ#K{ z{6NX{$?p)qU#hBnv5v_b+A-Sj(V^yZNqm~W&(37Zo+1c~vAuvLgR?(t=kX`qSt-%A8H zpRKS#j!U#$(~ZGKiMKAXn>C9q!S=@hpU95B5!RS2vw?Y#&yAt+OV`ey#Im~ML&5Gx z_Nu_~^3BDyaz>N+&bBg3PwmmevQ)K+IwAd^FVjh`n<#sM8YX)x-(G6zhA-Q{Y&%U<@xgE`F8!l*lypkR{4j`%fmZ* zq!=sR?&=L$j>DY8@#L=OyjBzRj>W~D0?_4d07!m$?UNmiUQ_ace(FsD3V~Ve!!&r8Cz9L}c6p|=_oA@vK-TWMqbU_s zZCuH?2R3Jx;lzk>?e!=3N;)k7lBE6Asg2>Q0;ci4$mboFuFJrd34-K3`j)>s4D{^U zAL4S?!*wap-wG1(<@W0R?X_8o$VbyN=f~Fw1L&c`+rnF69P>sxZcMxeq_Vbk%M?`( zR|4)~=PKaIG23w-U4({2d}nL-r<)XjLBEf)!l>=;dqW$aQ=#9!D^2F2B&o^fc3)`5 z81!fcaY<4~YGuCDE3s+N{`m64jqOS}^?`icKh9cW_%g%tq2u7!XPVwi#TtKHwp@g9 z#{WPi2E9F$RG(lQigF(|d3;v-K_$gnAn-avkC|CVDJmt=qNwn{@OT%UmA+qTvO7qjW4z&PqS5G+GOEt4M}H`OUbLM9ZQbJ!WCp#RPcPq8=sY z8X#&#^8bW0Z01Gydd!GAN-^xUK&6UgT-KriCFcJPWv+gt04<6JzM--f^(mFs09h)M z{}1HL)%(tu>f>RssJF+T>Jw{iVwv&3pcTa^w!mfrIwFuQ!TblgGQM8H0B&v8z8-1n z9l5LpVxNs%unHXlnHP!x0Oz=zVM+cIti5^yzX_#}-WOXI4e;Rx+tDFF6_6nb*Z^AU zbh+R?j*Ufjc!}mB}Qfq(~hwpnE z;DhZD5um8Z5CUuf9925}CoaTq3b0-~n0<1rVq9uats%)W;}z1-6Cil}$_D;Is&lra zrB+j#W2PzI3-Jw}Je09S?1KT7n7xUv2P%9*9u~sQ6HVnU#TS zq^JWdd?+OoL{c3Plt&&Q3JYv$UOG^Uy9oY-;=ku$3nj$CWYj2T0(?!Dl27%aDY%*} zOg2fMoVT)b^jj(JlMo95l&DfVd`-oY|0E5rrs511alN8CKrKIACD>vNZO{=H zANqv}@>?D7D<5@I40a>G{PbIC?vpT!6|}(yq9_s;CdjNhpeR3G=`(lA2OmL!%sOR_}OCzIP^GHwy;>X&80J0O*FOyrGeM&$6 zA9AV9kpD+ACx=xa6=2*vJ++^U9jTJ`f5QlK1I+#g@^Cw0K%PE~!A=+*>NX=c{9hFe z5<_;m{*SF9EUTEg*^y2L|4Z|KegCiFe?!KH!AcK#-~wEkr|lo@wZ^}S#un3>AuxevQ1d^QBLy>bM97ta>n%36<_!h7-8Bh-N}sjq<53#U8;$_ z%VyQYv%1-&V&0@H->*h2_p+RttN!%)>~lvPStymG|L~K(_s^qq)Z#o!-CAttPxb#q z=)d-r4!mDYZFY5nO(f#iJ8jYxK&xA4`_O~N?p(Ef>gVe6fpRUkSDy!2*z~15cd>hS z9^`prXc}nRxqD2F)m`1P6Qx|$vUnzrk+;>{@)&SK?&~wPtHOxkf3%{~w46b)!ZHxr zp2dGvU}QXAHS0LPCT43!Gl!MHsLyS$L@P^0VC8{MoZq!k2YQ6Tt_ItDr@*J z&3D_+L&Oo9xp$J&@^;cQ18t!Aw2?W9(!Gdn(pE6)f|nn4N20#X3Ha0799$4mr=$BoDIFYF&={iZQ?0gZ;oVct|F*qW_eg8!`0yMnj^VWUehon%sq-g!bVMxb*f=No zjCp0XIKJqp&bkBfTc@(cE8h=$C~5b$)Xf4e0Lo781yjRAst2keZY!BrjG~3^7CdGd zSVjR!rzLrG(+Ggsq9P#Lcm-aP2Ytg=EkoNII%BXAPG1JK-~oNnY)gSq2I8=Xr8aZS zbXQhk$lM$bb{t?V#WpkqGGW6ts+O~F#;oAC@hSjGDnKY8;H*DzkF*4;C#1!#7p5uM zXC%2L=4J&KB>s3lmiP!I!MgZoCtSIorMZvH+|yIo=~l!vX-&<;TN+_x8=STl%+Bya zCn&6E=|Qa)y{##dAf_w(wW%cL0MRz_kS0x*ThS}*F93Icf-iSUv6o!q8lTS^faKJe z1n(v?iZ%L!d(H~tf+t2j;0ok2HwR9K8dxA~o%%OCC7T5Q^)au=fbed)Vc8TbC=_4! z!P7Rd-O#;-9sx^?+>=xu-{bg9#o}o#9k|QbF}cPG36xS&wv>2;?Nnu5Q(C;E!x{1Igg^wOv-&wuK-vnnGvmRWRR(*5r^T!qF=q=si@PoFayo|_{ZCxv4lUU7A5Jof~wZ$h3YYC!-7*ORvjMK9ltFAx-myF zW5KJ6ey)?=r%F1+;-iv+J(oOp2hivA#P6&nW5qZ9QX)F|I_-At=d(6bxZ@)pMg%b; zIzJ~A1V)Sh)XiiG_4cSh$1DDXO@a1Qs3WUMt8T7EaTD={zfDYizg9ai8)IXAH&>X8 z)=!{qUA27ecd?D;N)iHo#2?a_3B@%8Jccl_5vg)l*4edbzw)41?=)yq0?)lGjqdbg7@$=#tcl1RKKUv0!a~sljFv&j+ zU4lIl9ERD5ZBF=%XN?pyp{pM3g)Vt9=@P?VFzfQH^C1s>a>UlkD#cf&4FH1HLK(Fi zK0AyZ9cG{v)Pqr0j)1w||FUz0$1;Qc2iqXRSv64ogUrw|Lbd-p!5nVSt4<~xUiuiC z{quWE5l&@UC4*%9M{;ZTF}M8C>||xTtx{&n!;PI@{&xlNs+}Ko^c(j_g&YkNE00+dxdb-a;P=!?kKCEb84Miz zFj|v{-3l|0vUn1(XfYo?Vur+KVug!{yG7X|$w(O7VboP8px8rWFXpOl2kQ3Sbz(*O z3-`e^giRZQk?t>&gP$?lG6K*@PI}~wq|N-7SaaZqro?=eCbkQ8U6pS|I4R_|nx#aY z#K8Y~(7{xEz(6Z4r7t3)g7lX&Hz6!%Z8zk;Kt!I|O0%=Arfj5FX$;~k zy+zF40*zDKukN!OiRyD5Wb_7;oVpcUxeMiTXD0(|jmlud@*8M~KlKx!c4I!8}_&9iKyo6}=`cp%?TcSba?dlzKB0L!kJ-9H1@PjyB7 zZG2^1(AVQn>D4wq3VP58Z}Rc=s=k&$b7 z>OU191Y3QGios6`{1+ATg@#FdQ@3kJ1g^EY}x}Y5Ylc0QWBB>3gxE|)|4$dmHmL3q8jjG5?dXz$M{VZ}t)V$OB4iS1Cj55^GrdWJX#U%?#Pp>jn zQjxVOoto1+W9OenPf;B?XzQ9Y(8P$^h5E9p*zh>bP=A?UNA|=X z*IL(S^3J`UiY2=14{1o3nX`Nc%tc0vFhDq1>hO*<%o>N=*u={HYFAc3P!R^|=~$u( zoPwoz1FVN*BoKNhj%oPK~l|F=8(fk^kk}w~b z@PTQwiI&&aevDaY3-_9(gf6LY*0rACr)**6km`po6ua{t1(@qcFBS|5R$ZUD!pvu8}>t9oFTEpD|+= zDiP*;A;Sn^+C)Wj+|&r{@Am4VPed{?5JIfBNyBU`oiV#d_82Z4GLn2C6(04q$lMvG zu&zD8LMGCkI61KoV-AfQJ4by7-u-DSO;mpdSKIrmPLIqy-G@v?U5^k4`U;E3*{`}U zgw@>t#`gn*qa9CKKUv?0>|=&SPt0^o(1peH8VxC*CS&g}iR#w1Lg7+m9p3j+VSJ61 zjuyCc&8zz&P{qB3hHX14E8vxGWaVD`ACLtD`zS2^yyb4%s7ft4f((BHT1WOM(qa5z zt%;Lj+_0t{xusH5q{8|-?v^kq&JNS8y3vDuj5z9A7k8Bet~!iHZ8nIs2#F3 z>Uv4EQ#mk#^VSja5F~wmj5XiOT|@}eSzKfEqz69~RaxE2 zuyl2)#fpmNW2^0ah?RweYbSBwAHoEyD2!1Xz-u2EYt+nqY?7?ITrU7Wc~g zRkbjQLUbIPXc-p8r2INP6%{T$2u=_gEVJMBPIPCZpiU00bw-R8EVm5hai%|^Xy}KE zxigrI+F%aCe8pgSA1AFv$bP~9Ve)!y+dJVq0yrrP>?lA+Lopg1(;{|t2hL~>j`L>I z(69J}hpt04FzAzDSB#p=Dfrffy||m=xYq?E;h3mLch!Ye$|9^%v=PEHf`EAVI>wQV z*EC>1@oH<4apj^Z?wBeo_v(MJxW|}S>6*-ZsjcSz@_mm33iAcSe0BfHe%-~4wMOrs zShWo9tBd#6`)_mm3+ld*V50-W9q=<_TfOdJl-{t)5xj$q`Wnpd>;y(Rl4HHNv8b0~ zmhO`R8~hX_Q4iX08MZ_zvLn2AXR-`Mo7PARlStkJ;{NpD*2rorUcn35@Yc|N5{xxJ z(I~F{6Q(}@nqSE7+?X_TlYCKo;A1tKxlz6-E=nj*Um#Iot_X87h`_oYG&;^c8`YCp=Z5LbqNt4sgEHNMBxR}mY6+_)M`GZ8Ehss0|u zgU%j;ye#BLXf6<=5t>2v0jKSpQg%tiA3NV+J_%W0GLFWvkw0>#agM1^N9q@{Awn#T zBgTIkgRDlQ)lDIrP9qYjp6!aAPrAU=#|M@Qol1fcCb$z$M*MSry7H)NKQXj)Ex%=w z@*QQ8I((qZn70;;Yj|@Xd6qvytgGS8m{TXU=-7VLk)t=K@}NFAVC_iMPbEmkzxKCV zlO1xiZL$2RQ4F%4Jy^5bE9K27GW*D!PV0Lsao+AR9=x-!w_psS`28GlZIs3$7zf9> z?kNINv?UyFOvY?Dm4E&vZ=vidJftwPIVfYj4Ch-x%)t!A0`?-fXL3BN1T&@)bK%2gwG zCZJ65oSx8TWbVoA$S6%(arpOMmB!S?@TA!F>3vO7-t>r3Oi)yrN^8op64?&^oy98$ zsxL*R)q2!6OSQFnl#r#jj^Qp7DiW+LrYF)uVdw}SW?+}$?GqYrolaVSf>Iy3lN4q7 zp=|qtVndBqV?pElzZh&2Za+ua0Br?nIVMA`LS0gx1b|62>XH<$^y!J2+5L!dJkrEO zEX90xHr4^Oc+!f@&(>4^B6J$kKBrfT2%7sPC5$9@VR)f#iPpZe!pxHjRS4tAMVI8M zXLLyt5rG|3?ux~`zoKx)!fcctC`1ytvzfbnagw1iDx1SsVz!|V3n^|Q`{{63f8D*ptSdARKlOcN4=t8loyq zN_18fo2`DJp>-mY6h18wo4S~vz0|CAEO{p;0ZgjNq8oFMIhK(*Wvaz{P)Q+U6Q~7l zs@NmB!edX+Qg`jg>nh;e&bX%S)qjK+Y@;c>Wq{;}kqx2hiZL;KguFK6qqpCqAed@D2)tF%^R&3Yhx> zx^rqmcQR%T?hj7<>ra?~GRRvIY`vg4s%noP6G6zpS-VlKROQriBi^y)YfT;C6Whod zrzzxD$gN?)C1Ceei>4Dtqv)kh<`6KZxW_-*5uP+2lMPBBp-*N>@QIxXs?|*V8M8}r zW61`-6{&0;d5-+l=OGm7>lGz3*REMuxslyxdvl5(UFKC>0_|Ll`B)7)TdNAhRi#DF z0bZn=;T<>uYU*8Z(~m`NM0l2kUr2pkB24esQSvXzW8-g)&8mKR*uay?X9i!@&9%xZVjxs)*jr}tOxsDSs7S9X~v}R_H|$W=Sx2MLacYI-KvVV z=zXKz*kl(dV$K4+S75;qGOZCnk@s@o0J3aWK|1&cIeok}d$JiMGvE^UcLEPD90!8h zBr;Guy}oRXQyh9kRl7hVkof}|L;kb%YE<|m_{NX1yD2uzxz&T1u_5eW3tUQh;X5G+ z%IT3;Bc(xO@3KPm(r%7#oWbxYsnT88#~##dd+=X!4v5K>JS;11k6m`A%$W#$=1tJz z>+Y$vU`z3tVq#rtTilSqap(~qmRDB({CMy5L*YN4vM-H3+fRXcaF!mTC__F~nHBDJ zlphW|6;jqrM)(@ezrXIRwwJ_CuR`nAbxB%{^}~UAI^@BE6_zUWW^6E1UkAa{vfNgt*y4MdCqC zZ}b70e5dy{PLKCgp5X?Y>aPKJq({Ne{>_7smR&{$q7ugyuOW#r6N1o~Zw(~$!ERvn zF%nY+gG6aJn@fN8MYvJ-KVkIxO+5jjua?^V<&On|0nFV3#`C%=*+a&pxT;GLp{{!| zH`7Mp>u-^&C0t_}w-6s!?k>^)Z?Uw>p@gq}Svc&ka1_I_W_T)5X=%eAto z;K%@G_BXu+t`#pNJ3KaTZDw{M7@n_t4m!xmrJ`GQ4gUcYU-L)*?V7$$ZYR~GPVR0gFp z9_gI|gzS?Z|9rgH2HMwWC!Y}9_Y<0YqzKTgCPhQq(|0l%^j!)u=G9m@F!j_U>8P^T zosTb-wTtTRy{#4r^7~#LfmQD3Rv)o2=Zw(?S|KpLkkRLjJyvn}I#cWw-f0Kje-Bzz z4wJ~hRBihmC4C02;w(2UA6t9OJS^YA@uDNw1(3gy=UthOjp@J081~yuUZEnkR#M~w zYuCpP-eS}$mo~&8H0I5lnG`yGl(!5%HHT2v+Mr3DK;^8!IlqxQ+eK_D#Ub5i zq^b?XLp5o9dDQ9M0(Fe%yM>p1g40RQN_TmRr@D?&fbTWJap6Qvr@zvm$A*XGw2nz6&;fQcpc%>)5yVx`h>!lx zhtua@3RFv(i@yZEEC@sdzU(yofj(r+9$H1Zs{fLb~QuxwB79jV4CK? zM9zS14bzEXxT!#ZunAsk7)dj+F9ZTp`WRuc;0ZvJmyO5 z?#dW`aK?7yS@FOz0<}Uf*nX^L$mr9qji^^A!S;0674l2)3vb_Jm!ohj7f4W;&DG&Q zThJu*WWwzgt@XMQ7wH2miBx^*bC~RY-IH`#5KFrI^H#F@0R_p*Y*aFkq%D3RozvcD zYiJNjhO4b2;aP`cyn>*9OFfu}`|xvjj|B4sf9z5S^5SQ@S9BoChjn;Ecd~C|S;PWm zi~w}T=XTRT!=UD1oM$4|^Ip0R_&0i?5nXH@?PD+Kkd7B}i+BaI-Pkc{jW*GOm+1{VW1Hvlxh?>>3ofq;Ifj1G2)|r<&$&TqN zNLK@CZcfm!?|(lV3#_NP8HY>ut9{W0W& zOCcKV{6?T6N^sCiIb}{}QxH#M`?1Xv)WOcdZ}wsSY}KZ@@b7w1-ytCxBs?Wcy-T;# z>#1sdzfO**xbxhzOZDaLcL;~Z-Xrx^=FRMLpcD1+K%i7wh5cr_v9;#KdU+H7aQu8c zf5_N~!C*_ZVjlYD&Q?9DrAd;4<86qq_jC@vZDod}oTZZo=VI3HO2;W@m9rxqf)+Ip zD%Q&edjA0G7*KVpe!svCq8bsuN#@|cRxZi{Mfdv$u4YHrcErs;A9nAP8t*+Fj&WrZ z4D_2P{t;{R zc!UiGp_fCH{@v9XW)+(5U6E~tGPD&|D#Tk12ffIgvPFYm?g$J*6AGt>e1<(M__PV> zAuPX;9}vr!Zjz|?%1Kjnw=fud=VXu8#D8weWPZoV!V8(fz}8C>$VpJx4nHJEX$n< ze7~J{qMG?&zYs7eHdR4!#IR7!x7xw|#H9fO?`tkl1lNP`3oi(H1jE|PVjt`^3Ks)( z^O{w%b=GRi#b#@r^HPo^=9qgf(p|3qp<`~&nKRzxB|_Z53*U7c*Snej)hzQ>AOW(q z?%0VJJ6SA;2W|fC3pC|ke^{wJF?qkGY$&dy=rl8IoW$e?d}40+?3DW)=h%#zbxvCA zbGA(uvnm$r&RjEC4MM#`;sm;QO##=ari)d|gQyYDrb*@!+$DT@oq7DV!6&ul&zL$~ zPAs>9+CKq~eK=E#5%x!U>-ctDlxVx2JRaJZj_xIXE|g>)8hiJjkK+A;Vi1MXamr3b z8`{eR#5as>5h$J5Q1trUeFY3kJ{D>#5(x|PB0ZYP{-$l^^$seF;JfCil*%c8Jz&R= z81{>1OB_{6Pun;t>x%elSs{LmX$aN5v2^r>En_M7hgmwBPTT6X(dpm_^Krd5c$4Qs zE$mI}LPiK$>U|O@=$}NcDSx#3Q+``(2O>$D{JNjow4$CaJCW;$@+er2S`G%H) z96l^aBs3+jw5fdK@}Wj~Xeiz;|GcJN;>!^$Q+ptRQ0G}iSw>x1`Kg_(Px(xjU2AC@ z(o*WE4@ukzy%bn{?qIW2{!PEJYgGnIYC=&mpS`*CfuuKKa1Fg%&=_g`uDD59407Y& z{jtrS8fW!mlX%tmbkF*d%+?nj++Tw8*r-IZ`&L)KpZ&-Qep^p|3BTk1Sq_QY-%s6= zgTAGWBznu8w>O>s`_23OG9tu#|1e_2(;+;EX}UW(lf)0$K?I*=KbKz`PFv!XS92?$ zxXW$Ca|a+g(z;GNQ&q={)Ah9>tYzEnz{gY(fVeN3aT|rtaQt;s&C;-zevwmR!LQ`9 zZn)WqEiqi)m^bA1&)j()1Z-mqA6Iuea7h1-=6C5QPVGrpyC1r5Y6dlJ)HKxAGVc%) zot!oI6s@Ulv5VX+Tb|5ilKf1mNca(%kh z0|7Jwn8%$_boeF-o0W~Z7RV`bAI~ONEk8;Q_#;Y^y>3z*aXvYtbgDn&%{;xmsD{;$ z>v@-mE=Y+gk5&z1e%yQ^itCojRq#FHG&H_Sy^C1saPf3w43DI_R;5H>lC3JLdK@q?eXI6r}}AG9!v&)@&;{Qf+T>_0TqFy;v;l zSM}zkWl3^T*ZrKM@g2r-{z+Lbw(hT~P^FrZ*gbfIyOGoQ6)AmLcqt<|zopK@H174; z^b0Q{%;=RSQVeOVh)zkrhGe+uC;Jsl;A1?JS5oqc>z7@69Jp3q8 z@uYDgnOq&kfxCQ;y4-APNxj8b^2c6a72BsWEbPuN_YFMs9iwdse&Mr!;T?jW658!a z{!wqIy;pTS-EJF5onev~Nm7SXstgi1f4Tv-Cv$b0?A_Y6o8hc9 zEUUr0?#QLW*yxln*$XRjzJ-F`>3`EYf0mflRi*H}6DH2Y^*AA+h1l}eT{wh5XNN*R z3MVAIeP~bqLFS#_{A=q1^!pw|w7Eo7Lsaa#Bk#HVW3ae3_db7k(`SswY_v&g|LM^Q z?mDyPU@ooQ^E-Qk4n${Wb@>h`laK%#^%8c*9&Elg__QSWGF%o(s*f|Zxvu-xIr#PS zb~5Dkk7qvxp{MRXhiQHa|%TyKd1@Tjj7EOZ3>^k^eI7xbNGt~qr79^ z&%TIr0At9kGI32MMR|HvM33dvnDAWr5Ke`NIbP)xue2Ch^9X5&wCCci`1XMN)B$sP z8pyv}oc*gTCOk&%gh_ReV0&lnOLOE#IL`A6iFk+pOTp8;q;1SpA}C^I^C2C;(k@d1 z+T>kGq}w0-ytqR@Fc-syvG;HPToQ95=DSr_<|}i)v0!l| zPwD+xHu;Cr3;W5X4F-g^+huNgpAU}aXbcuL@;!mSGs91S?tiMQ2W{c01vd@9&8=$- zp0lU(Anto+ELDvgIu3mB4p{-w)+(s>6p4!q)(iya3Q`RScy7X<2|a-lBvwGcgw&36 z!E;fE1~My0S6zP`zE0oSz>pP?W zI?eD&{LP+$F6@~4nS8FX{J3fq%g`k$!(^8)?bpvj=c=(UQMg&v^*59EqaKpLAKG3@ ziq`1OELC>iAhcLc6CCNIRnbnyra#8J4l5wDio?_O{C|cDRYfDQ9x}5~)uu(2OiH_{ zZ*B2QLiNzUi`;u$Qh;x-G$#Ij<%?)t>0xjt{x<+z8`#G+XR* zuRBf-ad#X=8CP8~tleG`2=C|;yAX39%rNzmM!z?Q^2_8B74Edv_u`16PD{90oI$D8-(<}`03$d;3 znyZ^;Fu_0CJ?GjgC<5@j37X3&H@ot(K6}u-U4Hz0|m@VR&`D;PEt1KC>zWi>pqmrEoK z+`kGHmjz`y?OHH6WI=BFxG{M!UypMzyamUPq{7|HJsL-O_23vdOw}eTXPoGYaeapCF*4y&1()^?^{;Moxf9^^ceHdOKXW(zV-poq7w@By1){r3M8)H&Ne$Lfo z&{)o$27^WZQG4~zrIv-ce)+#oE6g!yE(N{twTZsG2FXW(QdaYMcC+ftY6(LiRr zUel;<%D8r!^ZxuuIq9zNSfV*o5U|ydVB`=(=isKUmUC}sH?lBk+a=+K043O#a*hRV zjlOXLn}d;}&@7n3%ev^D@)yH%UFR?=&s8T2Q*!C#uy=z8?y2P>4hDj2f%ZnY`94+s zh<&Ah&T3W}%{v31i;(5hS2qE)h1X*_+;gqB{){}jsOsLW4{O%m zTsgi0Wo49S2>a>oP1AecnI^9#xk*vH2KJI`Xt_~56BjD=l5$?^f0D6r3ri~x@DzKC zp7Kv`&CX6e&x%>Xv$W7toE^9L$HX<5>B9pxtu zu>Z;+ffxJt&Z~pOamWwO=$h!1HcvYpA06t;bz*#I&9&eB7n@X8JD(1WzaK?Xi}hfW zn6)@^q@)>S-C28z@ZfkBO)F}{oe;J;6DQp5wW`uTvX1LcWq-%VN{{%{JoB-g;%oV# z2*UgtMf;t~Q*J+p28p-noA4S^rje)973bXNcehL7O~MBo0tF;1Y9kJeiqp#i0WB(l z1l#Qo398?|?ndykIYl3uuwi8Fc>Yn(^p+8gL5`pC)#fsSBuv>KxtIm)?)Zfl2USsK zYTq>DlHcYP*$(My9oEqei1GOaY4na6JX+o6ZVBU%-69OCUC<&>)&%Z;yC!+uhrNIL zZJz0BpQnj8KtMVrA5C+Pq})|Z3c`|<4|eZN`XyIR$}D2g>IoajjOTZElE+!PRxF6D;#^>7NS8_Paes78K zI}*Wtio!86>)CyYBX#5u>1sJMrvY1?u=niI!^#6pA9V`MS3zU#8i@$3>^;Z_^;T#C zB98cVuJgWi1MK@JMSiU9vkV?q2U@ltny7puVUH_F)_%>ZHjrffn2V^o|bXXN~3ftxjKiMdkz zAk(e#F2P&oNqKMc?61;AE{DHu_tY5E2SmI>AIJ06+>0fo#qUR;t9u=;66?+$1zBMJ z7P~eNi+fVMb#g}76wvI&RO$lroAC{3*5G&CQ3o z-!3^*;vO@d;tSM0`r25u&pc1eumzuba;^6Dd^ImKdZ(sbp2Oc$iSXivELfl_I<-zqUh8pfys6AOGrws}zrCLGPPlp5f%X&qk^PgEjd^ zQLcYE=Nu*V@_PrykgkDP2Vsa){H!R6;5|bgMT~ttP~i+ zvn<99luoMn>jb^kz2_xV^z#urU*`lj(eJ;G#**+c!Peq7IfglaDAuIsYC#mfByGG; zdVnKCqr{_Wq<)g7H$Ls`xvrdqSM!K+N%O^qVFJ#7C(u79j+rmHGhY?!$L25MB3_yf z@$O2GrT26k>P7$MlHTY{;tvPIW6?=Hczsw#3ze)C!U;HYg>@TDF zK6`zB!BbF#)0M+ftxy;PR)7-3ZJFKFw1R}5lF!BYm;*VxQ${vDT=oYp&~xWrC*9YJ zK;R9m*anMvK{@JMw3Y#k!L7sr_kXPj&-#XBVzUg2X=}}sY9;;D<1&Jiua4C>PjLM{ zX?&gS{I?CFEOrD$90AwwCm8>&E|sQ}4fz~X9-0x*+xhK&d$YO?tUJ>A9{@8z%)d~+ z{47_X<00E`z~Picnqg!FC%a@%__Y0sBRXxj{|Js>T7sedw!oxL5CUE$Y5?OUO0Sz= zkh(Y;W8Iw)O>Q0!PHi2(#Wz@Pla!+_Y`GuSLTOp=E}Qhfnku0R zJMgZdumU;T+!9#ZrVn~U0`z3bZ_-T`-NpJp%yp|MAL^f`txVm&fSaf}O&HBSZ7J6I zN*?ydq)nZHuHn-!{7Zq6_ALd2*P9}J zbQu_aA7t_ZaHKRfysuZhV=6A?3`+=X@a~t7+u0|ghm}m*98&a&!1xW~SE{1u z_ktyYKf`m_nUV@`>a>yMer$+2G-)k+LZ-Sl4|TQf$fzegm=abjtq$G{2re4I`vyD) z{7%#h&iLWD-FUs)3SO8~UP4?6_r?FcN%1HC^txL4CK`5a3LZiTy^BUC!qDs7CC_JP z?dyX}vf=uus^jm|?M7*&(|Onww7>Cj*vK1>SEW*hL%LCA-yha~wXg1+#lJw7j<=nF z%ZI*cCN~e~yLP@dU6mA+K1Rdu5Q(B&=XV2tsAEw#W5m7bpT0z1wRzu$1AXp8y+8Ed zebDCR6M-?>u;yOHIMffv+CH^S-5k1rwPits;G7YB=#M?ByVq_x*#uL-w{YELd-O4y z{|m=(`%YB7#aPY0e|x$VH+FRo!VC6RaM7qHbIMW^%m}6L9M!*YzOF8f78xk!z`-Y$ zhW!B%m17QVPuab5a{CS|G8x`sgyi?Bwc3SKWRoWU+Ez_l^;K$1K3Dw{_JHFMF#{Yg z7*Jsf_5b2|%#@DFA}3ko^I7>kEr}#tIzp8BfAT!1orIilnXky-yI=l$U-*DV2j1zM zYj+VrL%*rtT!k8Mi3^RZ2V_dm8NHuVdNugU+eL!J8Q!J!u4@^GJ#`j%!m&y9kW*bLXZp6a>^ zcZh~te-|6zE_pv}kH?8#&+@8uTxq+;EM?<@^w-+M7>8>Cdq2$56>zkbr#-a``#8Qw zjGY58F-YDNd?y&!6qpuv4&kheH#d90huwaNCK@chmmq3s?6fd-Gur+5ba&wK*#qaK zwdjiAb2Fkh=?xblCiI4NQR=4L77iV_k5#ddLzeq1x7z+g^cs_EM06APHK<yU)yF6ZGT)%zcYt3NjGoI;qj>-P8cWW7N@!4&0mKLs8_vlytFzV z;5SOVS30&i;T}@%FP#(0CboNWj>WA%Opf~1ZL<{S@oU@kO&{5Fm_)o+UomZvVCASei$lk;J+C2Vlx);*EJgaulW;*dpTjMa{!DLgifZf4yJkGo;oX)Wx-qoM3jP?F7q@UlIO8Qq@5(X~ zhv+`F82ia*Dkiw0eY@OS3;8bUpu8=_1#ioLhZZ-@%JWL19vIkn{}i= zY6oQ%9g!DltKL`mL)CAFK*(zfw>XZ+SZiMd;}u_D{hg_Gzk>M#j@_&7k8V{(dMjsW zwg1+U(?@rRpUm<9AC6S7Z$ZzGAEJ$rcK?eP#&@_x2%RxiaS1*7tLbCD@fg$Z8eh|BKfT59lb_=j`iL0Ve&1=^JyrYR zZqeWi3u%e0QKyVkOX-X_F_+>FPjx6Siu5jC!A!k@97dv}>#I>TFAyI5gR!ggI@>=0Y- z?ylmy%um5oww@O~;1XlibyOR_Lx`V;jneLah8PLLW+org6{^QNdT%vO9)b%+@87vY z@>RI50|r|3yNfbbWvq7V@^oidLgB-eAA{j<4Q(yMAOHUnwU=Ow8lGbZ!*GH($E^8S z_oqeDiUw&<2c=gHBW*bD|AHaTpDg@RuH@WN_%QsTj;^dxc&xvxjrZHV1%Ct`YFqgc z8Xl`U8Ev0@$QqZ9Um9Ex4%F$-uev)+cm&@@PEv58H$!~CaP<9kbEsW+@0u-~uvlD- zG#IG{jjK$j1)meFD9uw79oI0pKc?(|tYJ9#6>Mc|%Hgd*(eV%`#4lF3&-hf;hwe)a zYnVe?I%C*(v!()S@5_l9B``t=)Q}GMtB%)edvX^pM|#z#Gs21^ZYh=7=Ci4NJk=1^ zsXJZsmj)ic#OP!*BLt^C#IJZl7{dzYH>eL)4WG^DRkUD?jNiY2@y5F~-u<%MgM;q= zIt}CB9cnOwx0GJRDoN(~T?E}7BgKs4&X-Fhb_N(D-mS}8S^WZcXE2x%#xe7Y9UKd( z#i{DI(2b{(eB_pBd@+RDeLn2G6Df9v52N`1-S$nr2;oN}HjHB*>at11FNWww zIAPvNE$*QMf6h4#9DEqDC+C}QL!j1S2fZ2Y|LbD=pyPzFDu~A9iSrg`r5Mq{7W$Ph zgWA0yi%+o;l5PH|+i>K^U-dX_1@re?E*C1wjJ}HxyFS9EM%(y`Gp!G+`oVb*VQhGu zv%-a-W>;;K8KW&KbkO)p7b7lI!i?dnFqND3cu#e>Lkj~y)WtVvmfPlec-7}f*nWic zWV*o=)x<)PA*8qk2f=pZ0fvx%ihz(z9#;4MQsp~_J&brcMtx6TnGwAa=X?b=KK0JF*afCn?jkLq^35s4@~~5Axnd9s zL@wOGuw|W!Y|6V!M}!eI1)|sx=Px>4#wnwo`~qf}{nqfhs4j$oBbUNp*ypH^T;-eh z;ZR=F?8BB4w+tIBGYPomu5|&I-gmnUtLmT4kA!zePex5)(Q{EA_O;qW2)2Llheiff z?X(jsnbY_~6n7>^gtJ_2Hw=H&BN6KFK1_wioDg&9w(25ALj>E@-quzp!fS|bESrP( z>CbHssmNjZc&7=q+zhwNw;K~~cDa8q=LA10uF+jH*Vx4i!)NGjz@G1uUnC6{-M6NP z|8&iGRZEx1`fV`HT>}3Pu`pBVH*39fl&u8*@k`M27J>Wy_V`!j`X_%hauFR3-7!VA zW?bf&$1VvSau7cQH^KYRs6!iucSNT3D@I}BTPi28_Oh+$RlBIhSLhK@16&U^SX<{IYjPBq`y0z z+AEvnSB6WJS1~^9_D$O-!-s7M$?$NrX>TkH%4srhxF0CBAiKTa*z7mUEn#gqfg6lR z%MTvFQ8V%k`MtU0U%W>93CoDhNFAc}w3SpDEKYWz(UD#nwIc%IxnNtQr`>H<1 zx6Q@j=~-%DoyW;V!r$Fk^r4r&g?&P+{oTF$<*#cGIt96gXRVT5JC=ScM33Dh44gg4C? zPyFthct(5otLpkN-{My;%^B&)@6Eek{up^e4-6+7i!G#m?}I&i_>N*XCEO)^sOyAA z8(4$gBxSrF@Z$l(hw8Bo7w4tY(p29O?RD*8uuElxfh*L&`=(7Ah6mo~{chch?!=x# z&}*ydj8AMrKScHLs(tKIuzor5+Wdf|FLcBYs(kYyAv1N?Y{P9GcXnyc3D+Z83g!AV zY&6U-N@^0Ge;AJ&M2|s4(eF*QO&AJ7ShR1$y&P8>u^T4OhkIVu*kk^BYPPVF-#6{6 zqKaSNb`2hnoc>-pH%5F;WURsZLnPl1`|WUuFp>2AsY=bgOJ7X6LEAco98RrMH(H?I zpSE=`5-RifP}M&^nfAvr_9wKDQ1?kwh&$GA#z-j%pZa+FyL~cA;C+9*TxS1%`J)=b zro;lw&yi`%2dIDEccxxr|M6k?OzX>+w5$iefV_%Zk}|*s&hHhprnOJUFgz{ynGh6a z#NOSHG2wU<*?+q6CYOWR-U})#%iV)VYdMpp_hG$<-aZW%rz{*4yJh+j zva+v=CY-A7TiSaeUVj(6JAQ`s9=3;mx2!h}r(7U_ldx%qG=D~AP#wP1 zDcGSslCV|xG%QQguqOj;h{v}`*&e#5dr|i%;Dj2hAF6~ky7zK`8%Eau#=?M43GH*R zUWX%IVPamS9BLb4x4@lCaBd01tQ;)BiL6JcU$3%_J`O9E$zGKey!Z8TZJn=V?|-F2 zy;>5snMVSJVw~U(?UK>A``H(XVU3nh+JFn2RT8wE0lmte@N_KN%K4SVAGN>OVhLZ> zZ~ARWHaRPmBar3REwj$E^)mEh^H^E4{Rm}$y24?ZR6=_Wi}Cv2vC#=@h?nwuV*Y-U zuz0y;1|24e*EgY;45q?_CaprTmODz-U96lbUtHCV_TYOvxTpBh$6$t=Pm+}5uzSs` zQ19xW%h;J0uIit5&{sBovEAJVMDMk@%X;C<(%gVE+TgMLb1=9qvmanv-o4882Hv}E zRiu_^K&NRwCv=+ix#}Jcg-z4btL}TV{|G-}`@T+l`rlnsN4G%V;=)K>mB$pq*6fP^ zOWM0F*_GR9!mmUU2ZEO#PkYAEcH4j3J$AuSy z`SGxL0C9%v!-}Qvo|4|atNqq~1it0WzsX3y`1nmJ{JWo73m($qXIc6u`^Rsd#(TWM z6UX<6QvIn-8bLnBr%w-%>*ofa;^XK4`6brp6^)+O;T4Vk{?2X+lC(l;C0h~(y%_jK>P#!%G>snHe~?I-F6S! zzP@hoxT5)~)fX+-zsBDmZ1JQte-Qi}F8LVxhdte$9tX$A zxBnHM2c=30dZ*1-v4>CUq~GfUHkh9`e#DdHsnxBf#k)_hU5ae>%8T<=F^6CNS>L^j z@BZ5zyo$m-r%k#@M^dz?Ge`Zb!IOg2<8>4JTUh$2JiHLuAS=IG_Hx=lfTm zexvTMcrSnT>5uRKNr+)hkb6G6ETP@yfxTlV{zSkJq*N*ZBLx z%*VgSpW<(?Ipntnul|%Y@;vx%J%JxFGkyhsoPgc}Fa4&VeheRJTDa-{Uwa|`kToJd z{!@)!b(sGUuO&Kv`1AXZpZ~1y{1xl=LI3*r+jv92isgU0RKI$$Nq>5{(W`gmSrh%r zMh_mxhivK3$Y;U#y}$mD+}i#|KYhMge13Oc+47YX><>SDc>NUr`u6kvs)9d*{xQD) z@SQ#=vL>(b%g=v%)dk5muT%!#Sen;;aTc^pS^DvHOz#r;3}@nQb_8T*^J4=RHHk3KG^f3F`Nv-5thf8Wo=BOZc2AHm1sHow0qY|||L z;AGzZ?MW7UcKCQCcrbReJ=ZE2k~DoHm;kJ{@d{p@7~}3dO)-G?!Ct^(s}<8;4J}B z7U_A+0{ia$=lHQd!KX)>{EPo79>M*uJ8nh)^OoM?6|G<2@QM69rrZ4o{tpi*b`yPj zu)p#+d~`AX&r=1ghu|Nc-6((ch`YeM58wY@?JxSL2X6k?*vF2@`~81kk`X-|g8Y8} z-#@;8YE?$ACb!5|5wKGc>Is}?%QPe{a@dG`qg>+ z$dh!-2=P!H(m#;jJeeON{_;?Cz=uqtlU}e-;T|srxd)nk(2wztWH6r|Xz?iz4`dw|}3Nbk?L-;SccrIbA1oWaL`i27G~8-Lc~ z#w-2jNB!{Fk^lJGJMvY7NAAc=qPZV=u04ezKHBt&rAUYN7tiNMSg4PYinkZ5?Q<%V zPmi_A*ppws`&xDP?RHP$yN@~letZh<`In3kNUyWUf`z|s_0Xk#Zt%yCKYaf4-yaH& z$h@yAYv&pg>9kK)HWE|iZP zp`SE+wtYPAIsTIle*Gm2++$bq$E|<=K&9P_=3i-bU)!=SrBgS0N<;Y1eCI#0u(z_E z54@gF+3udN#uLl@`;Twme|-D-?YF7+Q{zAUIb#8zUa{Xi7lrzE(`@wE%lDLuH!btO zJHP$0RQb)Osrvl)`1GrH4@N@#tidC1ZB{=2;k%m=F?Z_!`yoC)vUnf9dwWqg@oVH~ z{Zl-ho<~l?4el?6MZb;yhwJboaT#CZA9MWr^p(5uLjuaD&mV6Y4PUAj|M7u%g_ky| zfO-)B_QTiNiN4w3CdTP^-#wy!{;YqA-{_8S2LgZ2FrZ(&GG)`P(eF-OD(Y+OLmHkR z-s#O{>?t_u5f7Lj{;_s{dLUx;R-5J(I+}mrf2$upJi;aX@b2yZdtpExipTol-P_Np z`bfWzZ)1Owx%rXqzXTnA6Z*mQ)8{{aQwj9fJR(o=U=Kkv1=%A6?5}S>|M{0s=|l2m zd(wyPb{g)!V)#GPe(q_sNCO=Hnf6;2?Kz0rdT9KA_`Lq^S!#b$%YierZgYaoNBa5E zQ+TU~cf*aTiXz@8uKz|i&{e>kWgYl$bTbV{U%VUBL*4u&80D8=lGohe5`o7=_ipq^ zZ?7SnKgECh-eh#zhxkU((ly`w{(YJlZi4MM^HIF{#i!4|{q&~~YJd6no3qzbmb{B{ z20w4H|6b_(ehz*8bbfey|E1>M-~9UBXBf}UX}4(ate$gK7^iNOsq$Xm;ur7Uz5iUZ zb#>!gUap%5>}wldFJRs9B^C9jOojf>jQkSmskgeXuWNfN-EsTZ{dVKc3-&25_m|X# z#cOh}#cfG{VSl&p-rB3${M-9K{<$zFm2I9A^Ze%RiOL24Zrdk4(=R?h+~8Z={qrVY zHu~{V>XOEZ{`L3YKNUWI1d2(2If8T8W z(^h37?7P4+NQ0q2qtj*o`Pkgrsr!q@^Vjb_{P5c5AAZ>B?)kb#PnYL+KYaf1!{^tw zylLNF*C=eSq5c@;+&XLf zIp~%z?9G6UNUm+(#r#)%{QH~M8=~OE{!=0PYs?m&+oV&kF+pc4dZSfhK!%KP^#Fdn5%QDamIsf~Sp`jUKw*)+`TxcV$HX5_uo@TkAtXFD(# zcGVJd+KleeX>yG@6gUu}muuMjnBtuWLb-;0Z1Ux(3(9@(h|#$_tX_Us=f-^y*lzWF zxNBoyfV1vLAvT`Tb=R0ZQF`ZQ7Z^hu-~?;b-yXD=;&B+|I`@OHhoHL68Z(KZHOEoT zXEa?W*1)M=WA>sk_d2J%Ut@H%b7uT37V9ev00GS{tG-_YJIpbi$m+2OhIWc!LrM(K z76!e^p%OFO#!diYyT(vBDmpKD1oOuBco0{w!9uifn@siGRfrm~o>rcbvF98PM19nI zV%>u0bhmo{4N1BU?HBuRQyR5qQPag?(K_`rj@IjKXYyXBwTt!k(Ou?|c`=`8+?EB& zD(?p%Ph1Po&!{opySIj+<$Qo!bn^i2yqFg(Bx zdU^LD*p_y79pxHfYr54p`M?@u*0}E>^_|7Jbd0vt+XW`P4QSqa`CTY9zz3`?L4p>p2_6Y-jI|<$cD}b4Hs;>ah+WGj!#PZ$D@V4t#O$ zspCYtu}kHAXt;Y@dzzJF5%i~n#EWz!az)EIU$gAuD- zD~9E=hitETFs4A*d^XRLKJX;mGG-rF7=vw-LYm7_qYHOVG+h=QW%wh$UXJaDtKG9iM`R$YY@x8ly{hrM^ ztwqPyCe)a-+{cO|LM3l8qmA9CH`^sfnhYR9=2`}n=CXOr z-D>(NeU70$5HH3WWA4ENt$xd7sKRW_r+&+YjO`pH9pxF5*+G@ajq9-{Hd2V_^?etS z1&)oO<_ToMn6|@|qQ+<@E$)4{QDaV$pcZ}B^Uhj?qOwG4gR$u)3cyje4IW>bG?bBX!wwynI&{cEjPP zw~Oy$rM&Y;YF>E>hj)#mwH&l|5Lz4F>if0Kgc#8g>#+irl3nDBZx7l$oi;!@9~}+) zFsHG(#>g4GA}-FnPVh5vG#ll6sxp=Kat)d_M%i4q^>`;2Mb3&2}o_ZkEJIG$-zk9At7Gf5)KJGeVc$0g>|9>HAkUAwc{ zkbsLfYy)$jY^T>U`Nqwn;m2#9d(XASn;)umI$IVjmFaucW32$4!x?LuxLrv+g4?Mv z0c%FLe5XpxnU22aWGrci4N6^}gg2`(*5-DxQR|ott)mmL)VeC;zLUJlsA-~c#Nlx^ z?D8zy+NW3jk{&dj(&~G9q&qi77OF98bVX#@wakCEdgCK- z>b*GIXqq5dFYoCwM(LBzuI0uPyru+AId^F0x#ebi(+0A3J#E0e0BykG9sCNk$<| zx+fNX0qqXZH{O-8UO>h=b(nYO64U`b1ro+~0m98Jy6oH&eO^GMomNMZaRoZ&3vAfE z&3yqe>tevZs9y1|IF@gKez7fmhjv%)98iN|M{0F=_Ife<=>tuL#p;O6;L5*_MwLhPFc4LAfBAe_26)?JeF0-7w$c$S}f z;a^q@TlWki+TL(6`o+X)%H#oRXVll6tSJGt5p&m| z!@5on8C(-F2J+sVY@RC+kH)Yy_63M>p+Fxv@d9MX!8h!ERpATJHlufHC+Y>AL&+n? zK&lsXLQGtyi@d&8lQ|R+F{ED5X+(CAy5a@M9TshZ78i3miZHjbUM#49uGmXXllsO8 zB634c`dWk7+L;@=Uc3r&!a@)8y7;=)dG|inj8T)Hg&R*Y&3E~W7m&t*9Y%B26JHi- zxLpSKtbi||Lo7VIyVXZU8%-P$y0~5f9cmE`j_mqpAC z*k_{5Ir}*E8MoF(lYOj3eV$BBG+?FlP=n0QR8a3)gM2m5cen-C6Zeg=wq` z^gMKIk*-JJVs5cne6G_ko{-Z-IV4;+Ux0k*gy3fF0u*iN5Ex!B>gmg1@DOuT_zfV63EO@S|lBOtau5iaP|kp>t-q`f{@N2kP+ZaA+%tI3)OaY2HP znSmWg*Nbh5wxZcMcQrCuLGG54H0 zh0izwwCM7jg0pNovU!dx9CpR#OV(+Z>xZ1$^<&b`<@%v6UMOeaxjZkp_e>>vTi4%< zeza{ghH<%mc)GB4?Y&>(sKM}d(w@7oan?-6)}@#8qYk5u#&o7#;}+VczNcT(jdb0V zZhcO^ydNY@XdiI5>-hWjq)DUeaSx@qCLY({JGIc`nqz4PTY@5sRnvYmGnzpqoDe?=B^_-SAhIzRzYo2qM(Uq>p)e+rLL$B%8N_G5X zMW2`Jw>HGm2}13Xo-UuEMAYZJq#N2h#Q?qZ-``zJKQ#3KW#`!!e8sfUVzk9T~1YM_JuFHl%JPmQ$ z<-Od*^PHV-#@GGH-Y5cV)8#vzq)%vUp$La{Z1r!r==2`u#oopoko!>v#1S>mqFD z8}I%}rH^e*$?Ot$V8!%4Rx8%|O>4>m8O*^^LHZPprf;ig*0k?{2d(#e2^>d_rkKXhyvoQv9KNV!GzHtnUS@r_H zr31r(>Z3b08N5$G^>)AMG=`-*%)DBct~xg#4&UWmbT6_YlSVn0-Q12yl>FbDzL{L8 z@t)&Ju#Y+hPizc*tv=_Axyxs78`GFiHh z)et712Ep|}bEA`cwDP0VOK*klsZsW_Va4I)P(6@uhUpr+@i{CN#QjXebbzQUhzCIHx^bowtAr#IJ2SpUYe@QSB21{h2yks}L49MjbU?P-c1UwX z1>rLoZ_bp}PQx7Fi+fD3=nE)wJIfbH*-H?s!hu1pgd9rGwZ3{qrQn3^17p|Z5MeDO z?7*j*3t~etMd}?&$nJCP4fT0JJZ>;HnpB4YNdP%gw_Sbo?M7oLOsTdJ#rE)23G7ut zw27R>G|MA}sm5DWBoj#?FrI)=xq-uEiq>4HaL97ha+FG4F%7CL# zG%D{kiH|K#c1jvUCqy%%;jY*J4Z^**RAr99su#xPh8S~InxQut+1oK~8RZe@X^v|Q zx#&eiO_xJRIbG9K_y?6*hc|4|!(h$@)i$!DoZY+i^4VfPo_w|(D8J~ijcr5vs7~E2 z;si5k;pin~tL_13mt<%Tq&+3Qu&IRXJ{kd1NkAr11G9BMZ1x$FF=$K1DA#4qG1dl` z9(-}#rp(nLs6!pB|8D1$i-pFhN^mOG)c7G#+&2^e_ ztCmg{X9yf~<8m%5)J0ZXt-6t7eNx|wz+OV8w@x=9y@Z4$3ushII1XAehpBUe+2 zrp^&nFRP#Er<2cex@*8xq+yGsgow=J!xvPmy9kssjss?OURLV4`qbsC+Qzj~v5TDk zCKY6N+hg23)+>nPIYZp-RPw-z-W#@9!^(k9Y>>Q7r97Zb@a(~-=H#{aAzd7oSF5Yg zR}-*?mFfPC3NPpsdZJo7-ASn$j=jq1I?!6OI#@N(Zn}i}@;)mnwfo$G9&?nGVGjjH z+8w>xqYZn`)zfTN&IQ+|@ZPz6tGDdFGU)JbJo*zvW#^q=u}=x{q#oFH`^HZ>RqjT{I>VQm=UYxCE0$YFUhPtR}an(6rN*=*IRj7-|Ngd%C$*9<;K1< z-m8Ml<*N^mR_Te~*inrKU*ke-@FXwIw%6}~D;X}z_}UV(+op+Zi>m|S;ak#!eU@TFbR8y( zc~v&v3>0!xKQMe;9IL=K*(F_)%AWF7YE2K7G%xt{%oA~_e7a&cS_=)ZT$`|kxJ7MN z7Qr{+dm3ioSNWtzK(`lsg%|}V1 z4^VULOrX{39^|1m$+or---avg`bKv5%@)EC{=<36LH&6{v2E*Col9Ts@o3+@t_7Zh}yoBFx$_xXY%T&UX* z+?82hP%7Hwus~~9s7$FRaiot6lq~}#FH~DEsMy1nozd?43qPZ)K~dwS!(zn6H=>yz0t>mT8GS}^7i>C1_r5syJTMOE8FOEp2_|!!Dl_KAyx1n& zbO{_+sIayHQYC(IR%g?lftnf5RilK@vegHjtKAk89Av&)T--FtlBK5~zb`XBqZZ$s zS{>AtdXrv%)h(O|ka{1uK(^^4eFc>a@+U*%<5M+`BXe z$#u1Pg@S`qJ1}02=%Z=09b;d-3V{>Po;dEug1(@5#@b++weAAt;bS_EOA2ss^l6>u z^b6{HY^ClP+PTZjy#M$wYJYyyx&@7S*1YQ``+^!I)XoOEyW3w-vyHtc@4GC^3kpHG z?cU+;N_;^@^9Y*lt{d_TipGM7(^0QRo^Vuyx>DYU+0(j_YMeC|H* z3KhC!b8B?9s?bE&a2o{u3Y8ilNXFx;ui*<%q^O|DQu)SCm#6^cYR6YOzyw}CU;@$THNC^^hjbG2v?S160VX;LP6xj+Su!LGOs zu2AB$c`WKzBOYpEb`aLZZexR#tNM_uJA_U9%{b)i;uPYL-eD-|ytqS{ibEc>1x}m+Ec0TwanYi^2QgmFYpofZThWt#=(?(5=wrRu(A z+(_uf?V!ezzNk#&T%vZYzNN{<`J&F2+4SP_4iWaOBeu@8tG+0$I;nNCb%{E_and|? zfl4jFa?4Db7bxM(E$)F=TpFnyONATY)x35e1H`A`#Xgd?%rdIOuU^pKkW=Cf&UG1znxXdA70g#$BLx)=KnF zaz*8)H)n35IulRe3P1AI(&KKui&OFow)E8W# zAmxzAo(rwOaSB zwxeBr<045zY;WV@L@yu7&T5vzO<{71}tqvP{zk0Vbcl4Z)sXQ)DjxOsN zKtg!+Zl?_Z4#~Kiiuw!6)||mK+tmw`XU3Lusz$F+uFy{R2^XhO9VhxC2fjFk8pB{n zn|s(53OCFajjyy(yJ^T-%7-o})9wp6hV^+aPR_=iF7DFWl^$R(f#lRouI~0$>3+t< zaV4E>SJ=I$kKNV0eCL%sILaG8@V-KAO08B5?DGnxll6>aSF(Hf+B{;zk*g6S z24bVWS+7t><|bUt?T6OKDG-0}WeNTf8ep-!OvQaSmAHl;5|2=jzEZ zExeldnleCC$HH=-*O_QCU;vf#)-2F<8nijeu{L$@2K!(y=e<{C_%yG(MS7kw%7QFD z)?L2&hH;puXL<(bavgoOu6_CDQ|_7DG!F}3L|5w=yveg{*xe#U&zPs|eXjRYyWTK| zGub(`Oi223%v=B4?=qQr#Oxjw#)t`X6Tm&$;u&*fZ0eo#-u^yefR``CWq!~8^MuK?Yd&PGyV*LQG4APv zKTaFvoT+)s{5vOF`R%kJ^48K_tHKk8Ti2mH+TFy(PnhYrl`;wNJuA~QCZnsfsKnj0 zJWm*zJL|)AMdlJCkpW$&Ei2bq)&?H4uinb}h^wBBnOUJcvkM!vMzf75&sqAkr&LDN z{py_Qy5-$#VP1a!K4hcaajkowuK>TN2Y-en@7`_S&A0Rd2~4kZx>s2F88St2NK7uC%qLiHc#sbD zdpgAzh!93(xLXP7vY{vqO*9%B0Ms>8iDV?4mz}v){-F2dRhDbN=htItf z^3RanBlgy5<+>p3?mUJ?4Y6rtJnx2BJwu#NX3XxV{31MCXJ+V=UPI1V%a2Am5cR=2 zSjH}UAvz9yx4WLi&k*+Xewgie4ar(>(%UL8N!GlzlnL&|xIII5x5*8n-T)p%F_e0g z12JUmzzIC%M>C!|S*4Bg>@q=9+pz1U<9yrFy=s@ljFkh$_-7+r`!O6?#!g^lshey{=NOIQO||6ugGgueo^iawjMER$nLwJ z3E}0Dk}!=lAaY3=(n5-zH}rB{)>hB#F`dh8T&B&Waf5QY%UkzJNPYn!;%>|8by1|5 z*{9K>hHUN@DNvLUiY6d{v%DnAMm>1lRqH=PHno=W2$ZXviPbi<&zef@Vct4$)Q`=E zo#mUc*WAZmLBqO2{Y-3~bN9Zv{-W&?U@`7yB71^Z%lZb!$E=3*C0VQy%1dIzqO%R! z$;asmg(eH&EkY*)&}HVAE`4o%-wpcAHGBDc*~jzCG|db z6cLZLs+XR;A34TeUP3nZ4Ce}^65=gY-PX#-CXI}40O{6x!GCA*ge7ZaI=2!cBfSXQ zspr!zQ)~D<3|sy9^;FqMNV{8y;~4_C0J0#fA-eR)@L}b2;iL#8r#W9hLQdzq zsV|=(*k?o*MWynKkagJ@bm}icIY(yZ!7HbWiw+uQx$P37+=v(74eox1#PAfg@0QAa zf>8RSD<4=~L!@OX1+avXH?$IB zk-pe#N;wy4X;sLWlv6{N#1vvHX`Kx1=fs|;hR|+VdTvoY5ILNf?h8u@_l)dsT;FM# z;0#0LVjx9zisq%lr!VG)o9S@b%TjL6)6OopaqUK_+a9G{(wCzlh2702@(hX1W?Kix z)tjU}Yw;;TeK<91`nloVS}H$-+%KDT57uiK5$cv%N*7%fJW~q@m20#!W9^xz*Mwwe z@-u4dZphRV#Kr_jyKKLJ?6KN8lgjBDkdCJ5^;bhYlii{Baw9BLV8*;(Xz~TJ0At}Q zMa^y=u9+vSmt@+4$mL|R#tP!lT%x(wM=NWPV@T{$80yZtGC%yOKRQOfDXdbzO#!Hl zNY<%)QP>m2t^VlP*w_a*D9=j<2#d1Z%{2H72~`&z2TSUCdK=NwS-kA!@NN`qMa>bN zwcA)eW=YgWmU`C7R!gI!jd?O#0d6iKm~mR+ULNn!7GmdERB8+|rgh3*(MvVSXb!lc zMVOY5NOM)=nu8vl2%)VsRF;q#ryqfh&e za_N99>nKGpU$_B`iy&j;%B6!$>CSfUW^R6lWRUa*ouy1W5E{?f*Djgtfs>L`X|T$r zLmdZJ)+WXpvbzmO)^d+mkymRI3f~GtzFQrDtU8Sp!3MeeJDhf+_E-)PoNj5_pVOX*U^`8z8rs%NkBCNNTf3wThq5FrWX9hTGW!-< zXVvfY$=qT2dR`0^^JsM6rNVM#0A`jBVym_hTGlApd(7h(QZcmjhy!egYY2Nk={mJ~ z3CY^*>>A})L6ep1L*`OK0*6w%s8S8dRI|udZUQ7*tV*t>8wB*_$wz{%C?SDImTW1B z8H{##&q-^R1C7ppU=1qu@-X1g(Pk!CLReA~&7)SO>Ikkdd=GDn!QKh~Y zko)bCgR5vfoDjNFg7@?;u~N#Y{>f{&Juz& zW*iv87m&0{t;OZ)&b^pUrei80(zlH!p``>0(t`w?I@XX8Qo$ZTX-Lk=rqA{wset=5}Q>ZKeDTf-tF`%2Fmut8a_G`(U<2&EPw zs21MAc=OJn*qV^pIvH%81^Oz8w{^@!vDCwZkE0Ni_bCT*Si*T2N_8jrt$fzOQ`5Ti zO5NdsrOgjAtGwGfy2cyZ<#mg;))5Vz^l1{6&sl{ZRmt7#!y0(lY(z6mADWoxXeJs`lEdkq}vwP1D%`;Gt|AD5xc=5u34^p zq@(kZQV#`sQP0J?V>+jEc~MRldC;y> zn&IF?czTd%Nqez%@LPCU>C=_rB^0e|E9ZhOgilMK#p6D?! zToMt)OqerxK$PbOBU4a2H>?MWlUfwgRUQiJcA7%e8YZOfV(D#Py3!+MD#lD?6!kzd zvTjPpR$e(;GTV{a;R2F%qsN8&43Zx?>846$FWe2sbdJ*L5P4*6h1F)OA$Vky1-J4@ zF>P3Ky4LrJHNAg(<_0Pudt^a1J6L~F>H$J^m70qrn$UR&)H^)^JS(h7sZhX~RL`bs zX>`STvXD+@qbM(l5D~Ag2O>*sOP2R;;khCstC2%w{{OrQ2H#*?Y#wkgp1| z#*To9i>tQCcu99CRROrz8Z|SWHALot)q1TA!=-1mWxaL`#Uwu}2(vUUW)&~nVnn4z z61BBK89H9_c&PoXWj!$FIML}XlArO?}2 z+GAkJ-=W{!cOcc+B_v~`{hVQSFN_AAcg-cDGiw_=i?5fE%o*7t&aQj$l<__5dsL8U z5qWES=`4%UXI2wMsX4RIbu#%I*LOP7$P;d@)GlF|an`g7EiY_jDxv66JKkVK1|@3L z);c_bxN-DoHAICa5)baO6``Z)(k2nnbjeaH#by zgHKSad*QRtd_(DHoF_NK{G<-2qCRXjSz7xnQ3o{)Zd|fB)EAs^L@KQ>H2RvbHnvj# zK?A61R%0wKrookP}?P=L@>S0k-@@RLe#wB zlD6w!)b}un3kdR-y>6WI1s6}KooK*3Wyo=6oZdPJTPf!gWpPN+eM(|Rl(n+AFBmoC zfRl{Oby`8VO+UBlk*kI*#-L1PQbJ@&ri8{buGWSR-=ugheMX7TmMJo@6v}RigZ4RR zYYmw=ePVF=Mv^d@EskBXfF!9GYK~aOs*+^MvKHF$%9@#}@|0kEE4g_Rn}D;~^76u@ z^CXx%m4Z-a(SUY*w9?*2t1nA?yq2Cvv;fA^O>)u86z!IN*5xLol@fv}O8YD=lSN5O zc0JI+IoDPy69JGm=Pu*itp@rGA)_{u0l*T%fUu8``X(q_X1HpzG^UYGoXe<9t$SHE zGu|mmA6C+J6gAbL<#cyHE$z4C0+Q!98I77u@63e5LQv{`X=etX*1(|rqODAbc{W=O zu|C(iUy1G+ax7xZ#ibIJY+xqgU#)Z?BZEvx(p!{%7i2qaAIQD5<&bT&COm1B2Qz(R zbR4R+C|P=hhBSpzT|-VH3?qHsDoBhx+8U#jxG08XEz8WvRYIWCQEa3&gw4E@cQ3yv z)|f5bvZ#ir3C@9BGPV@X^Ok@~${P?t-7^lo-hd;drYB1!mXLH31l#>k4VmfGg1dBE z_(&-e za0dJhfas-w$eq@ldN!Bw9qHw;y%9s{M9h6^CW@Y|B!}E*h>eJGG0^H`Z<$`|9Jnuq zG+$BajL)Ox!#6jUmxM>^8n+2*-HWAqgptaZghxP3-%=YR7@CpC=2Zrw-om9scSZ)3 z5P&g+l*`xw20Y-A6<7EI5}Vo@B{$EoV^5MJrPDcsMdkofURQc~Mux1UJ$LCc&N%0p z%^P~%%XI8b<}Q7Pn3@8Z52$yW`Z5@q52l<8%?TOi%%xI+Ni#sMLzGHOCf(6k&MdR5 zFl9ERL$lWRa^?1(C{(`(u*(BSMfYXxdT)RWH7dM@ZF zXk4eCV3C!z?6zY)kcv2D_*^}ZO&>ah=>oF*bPFqO`Yh3GWLAhW*%U95mi0HOWUhG$ z;U1xp$;xHr(ru$oU7D1B7rbMD*#zz7NAF{p%pcTml8sK| zj1x7pWFzbIHLtaRY-6XSdjc;8ikr(D)c44Mb|#5yQO^aI3dw1+q;RR`1dXn(%xcAFEv1_ZyWHuc=@;Fx=2mBeWGv?J zQsFZjOc<54cVZ}yU$V2!`yt2Dcuc9!@0g`Hg|X2>8xwT&}#>$^mzTq_|YfTVYP;mXWTd2j3i$?@YevbuXuN>?Tx($7EqKNIzsPnc10n zsI!VuFD*e6^vq4mYL}vkc@LwVPBmm^mjU(OYR{NJlu(eXz9) zh(YfyYc-UReWJ}{cPooOLryY45f?{lHc$bv+FCbf^Mj6uxrX$CZlqee!_AqA()+Se zTHxo@K%SBXJxa(?*i2)WYTzk-Em*S0DCvv9ap?!@5XmXjVjn(KCT*MI(GUhkDMC$2 z`X75x$sNu`Y5vWMt-FRe`Bb<1+GjXWBh#_U+o(%2=OaofLQPfZsaA3=S67cN*R5Vt z%$=b?dpp$Bd-t=G))|xsb7yelj5A9m*xc!OMwy^YYlw~21){VZ&W(UP$Tyeg#afr} ztd|`%#5`*`N$HL;ZH$SaQD=vn2BJM(t1kvxX@TTU^VE=_ktI7zx9Dk>iX}OxwA4*A z5rxdWP|qbxWnikv%Y$iwXS=~Ji9Zgri@z^60goFTxaLj%Qs12#iY@3l_4OKX%#GqVj2CF^@Sv2!74dK!QT9A z>0TNY1;^CJ-FF!nAeb`s2Io=*kky<{-{V+)18}3Q4y}$072LE%cuVPtCAiPvzPAKk zkY_2ii_UflrzJ zOxS%xLs+GCOlIHIBJ&27CvSoe4)j%Ot|i4SKAzE8CB!XS(yG!mPb7;QsJoYby&?#n z&SS&M>86KIxXw{eSAtgT)9NJgSx>7OD`RQtkdR9x$QXOsr1u+(AaZnN}3YI z%NTiS(B@<9!c;5VJm(fI^Y9WMi)1?B_`}yi`d0gaIne5$B88 zy7x$n0C3ET_qUL=HJPd|wu4yZ$g6E>NsP!o!uE3g2aqjQ?XxCI3%Prqs_pNsA>#_u zZ4B%ox=0QKwglH7`AS%asjWLChcmDHhTiP*SvfU=qc;q^hIZQQNgBv;uz6Xn?e5?* z0xy<)Ukj<-j`;3=bUkI9%IN>WOQ&|E zIS^qK-$^^ud4}OtoUMzbIO59#KBBz@QRZ2EH7@=L5^K%kXXzoH1L6l9tXz(NS(g15 zz=J<@+(d1{BabR{KdRUkweT>*jd9ugzWCM?P&FJaB#QwGrI-0&Sb24LWx2Hw&B&d{ z+f)pmb1H3@+g_S^o+4L_+h>pPBsw%0qrEclREu%-^qLGjD`U)bX`9=?SbS`>=indJ zVltj>#hW+Udp@JpapC8*;ZjCto-rJE|CF$Ecc!;48(zo**Y%!3gqPebbunvwX1pxV zPG5A|*^51eL;%6& zirxCb`6QkZJgH4V=37^RO=a!0kUf{(fiQar;pIDpTQi3*-N1vGw|@#_Ip&00-yL7x z5W8Y+?RR|@!%)&%)()mIIO*byw!2j$j8uGrZC{86ixs_ayP1(3jj^<^MrJDBLT5(p zAs)3H#t%LchEaTC<>F`|i}{pnVoR>deBk&e^}YWg+xPISleC3YVk(xVYCA46m6w;@ z)=s0GHLdPi-amzXjU9CR&t69iK%!_vPONGh_dVK1ci9H+(w2wTL}y!aQeCq3x>f8^ zc1*=K3yX~qKkD?_KgBlktxc*OI$y_2+|k+^6ZUO_xD9rD*f?)@VUd1xV>rh;bM^a6 zz_@#J_O3>b3qZN{Ze!;hI;bR}u-`nQSg~$|w^lrdmr-nx*+Oy>Rt-G&pIS<3kmXpd zwOSAvFfrSl0#4mWa2KOQ3$fvBRbkp5<>@*~|HQRj3>m^jY(3k`uVU;pst`l#vX=o4 zAc1`utBkp*3N5j9VadQfL-wTB=9SWH@HoNPLrC}90oJDP$k58FJcqM?O0f^yvA%?= z)XvTt=4baml(#GpI+r-X`9X<@ZbDMh5bL!)ItD;ZEP z9+>fir@*|dx6-A1$hpM=AuTVh%$pZymY<-75D_^OV73rG1ID zU9%LJ+G(s*_VB^8y~E0$GE0(G+hB<7O@Mccv}N*Af^>;<_U_lJt+b2dYFl?M+j6p2 z#%}wR1A9zC;(i(r9O5WDzMX(#D)o6cwMV&};;4@mJ$s*=jdvSOYn1}zi0!nkKR9eo zN|`_o{l0t0Iwm8N+aJ1B%r#0xvK`%995N+I*A~mkB^xDxI@|0KxhflG@zVBvDdBh@ z=dAuI>ALT(!Ra70RAT{+*4`CD7gm0t&mF-0LA`ok~az&P*&hqA=Hx6V*&%Pl0z5N|aF~%IT&D@icJg*_BKq3zzw@QTI$*&_rrB0M(ZWeA!Ju~thPM92ysT(#?v}j6qresY_+vo zI;Xi*{IaFx(}^sfDxS8+MCU5eZuWlYbe^#;Oy;(fRwpS-72tUPLqaZTrtRLV(}(z+ z$!(-V5%#qRI;~4u@m$nBXO8|UHz*xsx96jx=w4Obbo(FDJd^0s>7Qc7-^>OrkFjF1 z$PAFSm|RyyE@?7L4+)j+QL0HDWUsyMJ-pgWhi-MWQ`{K0g&3S=F?;C<-Fbs5#i!lt z^bERI_FwC$)Kg?Z<$rDWT|IKm7A$Mie)VY8Ue4%mpn6MgYVX?@2kSjnv}S(W8>rqm zlL^OcX#@1;7!&z&dw0}ZDymB-W#8QlW*a-(D2LLN3Y_U}(}&a2_2(T5|-n1$~ixq*6_AecJV2R!~$4z;R zbx+VdKY(0WceA%1F6C=%Xa686RawS>WfR&eE9FX{s4!l?9m@U`NYQNVDHR^WWQtq= z6x~4pWNoxtCGZvtB($9Es@GT1Ls;u#RD+9^kq-SCVDr+32ye3))r#rVSM;GBwOzG} zkfY7sR@))P@(3-nfZAttJ)n(esqxaRveTA^Nv-l24ZLUVQ^%P+Ja#`vUg4h`clQg^ zla2%I+vY@S=?^8SalcCi7#$)zZBCiyh`|T9wh>(|HAh?bx^4EL=1d>A zN`Kq+l3TPSkNWarP0o+Jp0?REnj(IriqzWmQpxqk1lBUQR+@mKokRCWJXkgW(r(^f zN5lqdX`@bVON?!ty@rumSP^lcu$ zqd1gWUL%{v>PUiZbiroqYZDH)0yj3Jw45*8*0?qt*S6BV?YCq&_?YU3vN}Fsa zV6Td(oA-oqR)L*8cM|naQFN+2+|hSei_=ADwO%eegHwvOz1?H%+_Kr~PurK{MB|8i zTeE8?V(rQaYaPl~1dS)*VC&7XlY)%Cv8@@fyLYb2CTOjAy9#c5uGQLhR-dy00JX$Y zMgZaz)N8pK?a9Jcr86z$9uklftv}N$xp-Hi^X(zLch$#J>wGdQ^^_!M?7Qo>whlY3 z-@_OxLGBdENeh{H)SaNEOf;UwhNv2+hcH{Y8b&L}Xsmo^E|xY=)VLfUIc2u4z0xZI zD|w36w`!afS9g0dzu1aWTa%Gnx3u|*>JQvDBf=#6uuEC<-X0%&|YSLIgup6?Z!z*c~O(*p+Zt!07w0;;Lll+*6w~h@T8xS46XF~RI zN9f6^`^Zs3e&v|! zA&VEt&~}MCjC&SBXzNaM7^#_CdkuI8BtVosSN}r`B$rSxo$O#)^TXOkfgJoG%kf@P z+MzNO_sIT2=5yR~4`v^cDpU2W+>vcus~mFEu3c#B#(bVp{8bUV9lH5dF|()lKcr!5 zQZ>dcB%|Vrd$nW;j+l1tC2F@IN96@L=4~rE%lC>Q#kJn{WfezyC7reTZNAV)#<|e? zgnSXk9xx8}KU6YNf-Y@#k1yFuTg6+tPhXmQ%aPshFU#@rhot-T5WR4GN}H(bdsL!8 zN%OX&yBSgtbhccGzAHdc!LRl_@&l!5S}y18A;P!5*Vei1XR6|ydvX61S~m}m)8_rv zg<8qW<8KoCW-iH%cHb2Tw?jGGVn$b>QJVJH)`GfL#_**)Es35hUKk%M zzWo|?U*Mr^Z3dRBoH$v0Thc>#;<^E?$HFyYFNfi6wuXQB2bbq*{fBPn%;3@=Z;uJ% z@&*eB{s7`zLnpSE4!2r$M(l0DznjkF38m%GLV|~_tWBteB)UnSzNptVr4ya;I`&H{ z26^mLeEcnBV+;uS!7de>snSolt*-K@N)Ey`p?`{2!uF-zA6a4X$@`O*FULz``zo1A z+m{>{E0_eW$d2co6}g<)O3!+-EC$o)ZOqhZ_slg~{s_+mkil!Ul=3l#u5EP{&=xY8 z2r9eBS_p+!<@;{W=@^w@apayhWio~*&ZDy0@NtZoL?+tbj{^8a)#I((LwpSOw4MYZ zAWAVroZ8a(fQo@&4r>$MW6p8oj;U>MzUXE5or|Qsea7^pJ4#BsoyMwzNws#>5tgekl4@$@#5eaSn_gh;4Dg>HNr=>c3m7>r3|pJwLIe1y>q6owoEjxf^y*Y zw$3H4li#JBtzjKBE^=<|9k@YrV)5K?TmBujxu66`>#c}dP(iW!TE`$E79)x_RXs@O zrMir@3ZuavR;gIh2BCwoq(M!*y;=tE59z>~ZMZhLSmIC2Xi0#B#m-(%)LwIgU81ra zqdz9zWWPlqHLL1R74?GlC zi?;i24g*;Ep#$h308v@~=o;b6$n@N*+c3xQClf)GZ2Kt>-rGJVZ z&+7-<1ee6feL3!G@Ag?muh&wcwd-=7#I44&^`7U_lzD@pUoXpi7E`l95AoXG341<` z+{1)uO>e#DxvO@HVt{rVS)Sn$uvzu9g!WKMB}F>MPN!+R{1Xz59Zk-7_iXy`|l?W*>OStH2X&LoI7)iZ;@%0X4@su)L1INq+Cxf`Yefe3eX%<>x%Lr`^wP3e zjJu6}rY99i^MTego3V3M)~vSa7a2FwrVVMUyfWurR1^wr{3sLeKs-2FzjqdMH89OS z{UUQMMEtPu^$^oy$(Md-$dYcDmidbO{8j$;ZH!$CZ|l8}eIZH|z(Af9XkQ2ep7pY&jKd?|^1 zAxg+=Ef(*dan2s4+C5&LgAd}8Yvg_F^L-&ImS3`_(ESRP6kFxNzO1JYf>))L)<%09 zL~#RbLB!RKx)fbPNKs}rh@#m8EUoVDUDRW8&N)u^F6O|X7^q!8Vyn)3*E5r=5HQAA zQ>LEFEkf^#%)OfR0Wcv~R_>m*2=pusFS{M$B-*lR*sOJ!Lt=2`GnwOqKv?tUII|m5 zz*sJf#X{B~*0Cb*kVxwg*O3#_u$kMUSy(Xkgy`P(PG0JDrPvLEam$T}J6Z%O$Q@Nx z)*$2#*lYa=QS7P!_q;fUKM1WFb*@2az85g?Dy0PA?pJK-x^wf|%}NG`QgI>~M_U9% zB+c7>QQ#X;YRg>hGi1z)M<6%*I>gkZRD4Q+d?AuF6bQThbi#yl|X z#EnFpG+q(uFN9{wiW}`SCXb?SsEc5OzyTV#aKGG8AH=#qhsTU=tjeQ|1 zBw|FC9b#Y51<359LkPy+JhykFz6}A#I%_uH+&rTauxdl?#`GLYwZPzJoz4qZ+>h_T zz!w6CEs!IteMU@UmlM#v3+<0j<6Pez;vgIro84(TWl*^z0P%DP2^P|c(#^hTks728 zYWCz$l~P1_b|-RC4e$yrI`0ON!_3CiLEXC~Z?ssjyEA*HzyglSt>_SDw@5OlG+#Cj zyE2N@+B*cCTLF2dZcNLv$Z3#BO;2&|%_DD2;0~d4-7$(KqeD1U)|_l_MjaRG+6a!) zJ!6CCK2`679pbDZRBFf8A#!YDz(Sm^+UOQ1tMp6D@c9iI9?>x z4Z_YX3an|;tuY^~?gjTLLG^{$pPFnP-3f4?vRatzA#kVO9;n@a7aNUby5%2fCHKz@qBhcf#%vE=MYRv>Wv` z$@XGAPw}5GgkF(j)44<7Qf5CgAzOqMK}^ifqOX{B-A%wcdwrFQI))RB?pJokKAB+M zI$ej|FZ#XIz01*yMIb1vL(oJX6vm)61{7xwM(hxIFolL$_bzc1aZZ=cQd(8KnO+O2LsW&( zxYu^K^RK+e*l3d94k78W!JjM%UkG!wQKFyScw~&d){fTNs#1hv+lA4s^*uDX7+RRJ zLzqRb;(KlO!VRkoSS#7*4sj@D$#{~fe<5y`O5u`49fHrqfH&db2Qll4vp#XN27v$! z1J~1$|Amlqbr$7ghgcOyVY*Kb2Xelu}F*Ou0h;o z=uT^!jZ zDs+c;R^KVHJ>TO(cSapiPh|s+Zf;BZ$Yh?2-PfR?V_>Y^opVPI)}4`Xb>mTdmO56n zyXA4DQ@NnycHc`_T?aRw&OSX^dcby<&h8mW^GuRE+jq%g`%820zU&K?=S3s!&K9wk z&s9vS4WjB|fwQO-J4BH^Aj#=gP;nnhNG0`k{a9O=SQ9(1S`}YLuCEn9xS&5x6mPo$_4V#&)2AChS@kWQWiRo3X_T=m!yUpCvIwx^e+7opM zVch}oRH*qNs*F^F@pLPQcIFyV#p>PLUOBOBZucIc_s;3py73@7cwnvUc5PytM7xoX z{2+urpG%C+r&J75^F}c|tqzevvx*41Xe8NMyeupjd?PSdjJ%k zWIJC78dTXxC!5)48y{^4dkU9)5I#py#+>Xtz3f|r&cxB(D>>{VI~CKqw@vzpl5B?- zQNeCY-d(0jlAm^MjKAOI5KfKcZ zX|&&qNbxS}d5ed95S4I~Vv1b^PYi>mkpp+5ZcLktF1yPS5a(dvP#MkHAZbiAA?P$; zl#b=Y%X>jhPZj7|FciyDhhUjSXVLmUbi$ONm8Z+8(Rri{@`1PemFWODQ@BN7mV%Yx z=xl!75Q8T$biN$jXZt=>SI-7{tqixr;?BohXTRy|bGa)&p4ygq;sX zSyes-znu?7I zr44Nn8%F6f&ee_SwNmSZ7}BgUqlGcHZtEgeM#tGXEW2zMBOXf*kaXFDMx`c%lXNw! z(0G6tOgi3;DYF(8L+mcXYo7=Z#(olUeIYPQnDkOR`%=E-(iZ4W57W7kf*9NJ&=Luj z^`GTpx*RmW z$Dy>Ft-ERY&52-Bqx&kIrfvWc?@mJJN|G&|^v>3HX1ePbJ{7M%2w?!33$*iWx()-J zcRjVNzYvwARwQ{{#-00K5>*udr$Zb$JBCM>tKe>_TZK}(w=K2`ubkZO*64XbDQJ%F zh7%(Jknlw3UyqSIgU+0t^%($L=l#@xcL1SZ=*>3 z%FU{s-y!x8ABWfOcFWjM*)k~9SxT`l*dF&_cNdFox!AVIYF2Wb;%3IpD$Sl8x9D%E zQhS^4r5Kkb&w(ce-4{Z+{A|Uy)*xgTK{Q|QZfl`;Tuy@3d00a)qZN_8K!*rSUAR}f zJ}hFx35(tJ)MxQcPK9o_43`5Yd$jxMC$CG#&BU&!Iq;5yDxD1zxzNiw%GN&Po+DBv z`^`6(b7Ug9LU+&3lB$uCW$E$^66?lyRlLhF%0+{!4lp`TUey$p#PQ*5pWzoIe6}ZY z?p$R}-zPoZ2XRKF{o1-+wNH}P*D@`-b1uoZ>LH@e`;|P2ml0}Lcaj{c3+!+gzfG?2 zu2r&Q_qKvQuAx5Vof>~~RC=vp+@@XiLOP?}31i)85%)q}=cSwdKon3D8{OQ-E+UeW-0j{ae9gHP z$ht92;USqEuYLX3@PD-U2D4U?T(~bY=3hXzx7~5{Nnid4Xx>1nM51H;&y`5y>Ega9#(w+dukme+ zg|LWJULWKi5F5qt6Z2&yeFynwucY1=Y<4gxy^oprq^A1=B17(_Vxj6F6TCEo&|c>7 zACSdsOip@5gTEjPJwMWMFQ?5P5Xq{>i}hO7UyyBAaPo=Oj!j)M&6dv5&eaJ&KCmjU zI>@bD(Nnp=?R1vbo>#HL>qGv65UjbU_;W}34)V?V{`{}7`S-!vDWzGi;5sd(gf*NZYUSf#;3?3&N{pwnCnTi(e3-Fk@Y|+P5l>%UzuKw_RSz3t8rQ#x*~X5-ZK? z3K`ZyoF`ll))q1spdZ$~vV}+(#tPGJ)&VOxL7IoUmxjer>Dx-}xIn2|kFl#twS!Pq z{^X4P%E9>qqP5U>ojNTfr&Q`ItZo`X5f_5r6YT`p2p+6McH3QB=(@)VYWv~|GSYsq z1wiVC3w$KHy=IOgQD1|cXA7BiHu_}kAy?3NxNU18#yCguz)B18Dv9Hwes3WOh*$5E z+vW=bd`YLIysWu@f%sTBHXLjrayQ^9A6f@lM^4h%JlfH%8gs~edvd-Y=L)1Fu68lZ zV^d&RQL=XsIygT<7}Bk}$wkLebvEfO#MSh0uHAhkv;3NO!M(GE#Mxc~eLUI;h>DOX zkyAUm3B^TqePuf?>A3`j=V%v0#@Sgu-O)_|jzgL0O5nh46}d?z?9E z3sOGLilW5m-Ut^5nOZzO-l+Syd%k75z92r1v3S^QU%HgKNp#;HlKT+J zJhHKcFypoG;q6No6A9)*ZtcwlQ^!==C@o|jOdzJEtA!Nve)-O_Gfox~aOSY=A&WvO zBhj*jaQU2FpAxKpKzyxn>0HDX5+S93&Cx>kCch^gvYY93ScVn7M{9Yk6Qcwc)J{8e z`%0 zlzLh_e7W0@h}`XwwUX;wjFUWCh*S|gAn)#j-C$>Vl;lVfx< zz3H0TQo`1*+g#)`s_QBK{sobUYa;Hg z6fTsjuY;hOmv=4OefKOBEd7t!E{3y8wEb9dk9CkOSI;g5L~bF)2gy;g9UbKEl6Wae zdut(%bW1d>y|x@WPyu{dtSzKcp~F$5+jkFFe&6-W*><-yw(qj@3>o|ZDdhu?;ivr} zxnBH~Yu)yZY|6(|4p&-;M`^S0Q?2R)xntf{Y$4p9M;Gjr3h|2eZhz+-Ar%#9Jr{Se zQWDY?s$y=lh{R(tDN;zao+ZT_+ zikHRP$%u8=-bYqz98eHe`tzH_=3gMm_BmMEwUdmrubAHMw5=>Ai6hrm56MlQ3uo&x zXBc!RfdNAcQKxl_h^jMpc%CD^p)wg;2oFM@hguV(LL?}~1kn0ocwf#@oJg}fO8Hdy zH78tbf9O`dd1()>_Kj}kLnfVL?GKSj@j&Qq4Hag|bz!e_yT!ngaOXCktwVveMhzD{ z>%P7q?okZb+q3(oInQ0N>0SHtfk<7P&EoVoQ30Q!r?jiPv#FTsWR0rWwH6|Zj6L{1=39@bELGb(1Td zGGNxw)*YS&qYoDR!3)`n;5|1gjcjOwt7C?&r%4<{S z^^_6|?H~xZQu=nZu0~tKG%YNtg_K^*u*tJE2yELDuslz7j(>qT!Az%iBeRO|=-|6r z+uLZYK*ogDUuJYFU8+Qa`lpm_2-A0awJVXKWl6z{TS#%Dh^&6!HRi0NCT|<>Gr_B{ zhxK28DW5Yh+|_uSJcRf=c|A2_?G9tAN(3{U|A?sXg7p8|Lq;kyew6`=}I9Rid zraBBOFF14S4tBU$78|E(3n@V!^eb)9%Aqs`Htsv2g#;WMr8(LiHa>B%T!z_t3%r!C zr`dRB>U}}BUVtc{GPjVbsTJEy?YNvd-S`N%5e6sNM{>Y!ZxhaA+rbJ*WeX|qb~ukV zTca3kia#Gt>n8W|c*d$yo^~2_2`uNF?T+bM{HSK^r~61e2}qa8_0vO2MHqovzjKsR zSvi>7jVy-Ua}A@9_XSu9{o&-+42>-YM(#Aa(TzK#ra)F}kyUKCqVqAWTQ9+Aqt1%c z#!N!Th;5A6`eNc^l8vhD=^#|q~kKZB&=pbl( z?F=~FO=B(`2Pa=^1JR{E#w(BX0g>D@{U}zaTgX0l)2bYl7E&ZFy2V@fUO9P66vj5T zZ&aDDSa~(Aagv;;6iN4OkI$?NES2hDn`x9bv6vsI_pjFGUOlGX-pvpbHg;-VjafQS z5wcX;aY-6sG~?p)u=(}(e;@z+tyBj5ItLy70yH+z&V61WkkvD5!R6$NtQ z_0%8qD^DiQnfDU@02O9X9OGg0jVh4?5fCbYx&{LG+#>v#Lfum!Ht)T!DK_2tHm?Ak zQ^`=)K@4$+3N~3Fe}Z(b-S1)W_rbcZBk?JlqcS)f$WpxI?58$<)-5hDk!gMSC)2S4~H82o*(`S-!vzG?BqSHu9iejV5A^vU;K9VF)Fa(OjQrVm7R zQ6nTy?H~z4#aPlf-+ul5+x?_IS``mApKkFL6`9={MBNIY&7-&+mU9caY0GYvhPFQx z;6XZwT{$FA3 z4;m{L_X>?}v9ezaTVo9BmKaxM5hYPr{HRa=E3E62OjEy;xiOduf>KF&K7hNA#~>|L ztTfykNb%f;S;nyL%Lv?8XUNsrt)rmL8dU_e$KL_@!T9_M27e!{8>7nF+8*I&*$-gl zP=R?AW8A+3@`LXG2?l>3?9s3P_LKkqU%m~XJto0^vf_SWVDPoFSZU85BWIjT>ls7( z7tALE!thy{{|5$lse^AHuMPVTOi`Y57FVaV7?#5hit@6-{{@pvq3%rT?KFdNmi^TJ{b<;gfOI|W9%UHCKF-9meRsP-fk{T$_QyC~^`Zf{-;SC20n;h{d|9zI zY}1hb{IXKkRc5&T`BhF-_2orj*J5N3+r>a+?VQF~Y(8^GzqiDxbc)4QIp1M&PTq>> z`v;gK05q0Hf4(QJEK!4f`gczOT<454Z~F~q$%&Wu1^%3ttUvw3Pe1?u?KhLZ$gkh- zp(6^k_|MS*{pa7~w{JiBfB(OK{dN=hD2%nYd|wRwKO>7g1OkdJV}Fk{`Nx0wFTa2D zfBsqi`jh>?@|S;%C*Y@_fBRj2w)iE#{dbhFrvLNTUw`@a??(R>@O=9ZfBC1s{y#te z_K$!2+b_TV9{#`kgtfo@yPto@`JdvSe){dFUw-~Kzx%zy9*yemus1 zk>7s%Ccpg_zyAKssZwZ;?fA3T$N%}~KcFUm`OCNQ!&dlVEB>%`wXMJW^>6?9d-xBY z{x696uOfDb$X|Z_cR&9h@(=%3e)}Qh-^y?QKK}WKkbfWl{GWgS^{1czp?%Wde*NY5 zU+kB^e1rL~L)O0z+5aj8|5e1l{xd0m`HPDE*T1Jr{{xGEKlJg`e~6#sSNZ*yU)$C9 z|0Dh(e*gA!{P#b7#qsk$efyjI^y_cm>`d`BIq=V}{HU+v+h60i-{c?S+pqEG+N!Vi zpXIOrO5=a~^{3zewD0B5-^PF)ev$RhiG82OIhMtM{BvIWr}2zXD=P8zXuMSh;IRK( zB>L5O?I2Zo)}xVVvO>kaAB}uDPwe(vh~fHb z+*e@l?{Zf@jTcN{&F>gyz8ZBNQ~WM)@YR?$V2hl`d>}*RHBsnzHR54j_q$Bruf`&k zK3DzqpAvJ5%6%ncHMyYXXc7cnmg5PWQaOLp!~pT@wEYm}tI zqcO+5XZe2ZaeJJ(_c&V~|G9y#7J>DduSNkQcG`~vZC4?GUKk60IPWENr6(4h#{}&& zkr4>?;{Z`WuD_GsB0?pFp^pW-LsA#;cM9{L#@rfC{5;#vC{a9=4Uefka9!6aqK{Xj zi>D0K$9SAgGt#zlyc&xvV(XAshfb9i$h7BwUYE^j-|0<#8flM&5&mwJ$|w$h{w5P# z^3s)kG#01Fsw|J!AXE+@(^>cN9Uqr40w3e?o3}o5WaIgG&kKA5X>Wc^_MHQw_G)#)TPhW3eq>r@k-tR^!@1FVVtx9>!4xNO@MADi{E4E0! z8ui3g9`smQw9oMJyXj*qry3?&KK5g-h%nF6IyPU8v|zh^=kWV9Rwfepy3gJ^6#4QT zX5Z|WpMQ&A|LNmqc_5?eBOvW%*iz`R#TQ>T9aW0(83?a~w|Izyhw{s?WhjR0bKqq! zbJaZWozKbTnT%PYX|F~+k_UI? zw!vQcW|_|UYUHfylziDrm0225I+?HEOiLJ`36I{&M`UYn0Q_eECG5ZchoAI6|1In% z`OCkNzx?I(53-9Rd-G$aWM9cOZ}?-TKPQUkpJsT6IowebybR_9qNL~Eskd9pv(Gl?2!xgN! zr+vTdKLx9$Ax{%er{$O>O#kSuBA~*ysr%JP0Cxh!W8>B}Sn7ay*#RZahaC6f>py8$ zjio(5OQl=#D@XkGpMk}aD*jsNTKbqngHV5Xl4zd$NnhdDU?sb*;^KU4aQ1N~j17Cg z8XX1ZN%vP{n1GFaU;hbu^W!#p%)8CX!Tsc=J{r+zYRQy6c6B>(b2H!9^~!9_ENz(A z24}X9pwI8JHa?9}q2jvhJSNCe0}heDc0Ws_q8ZZrZ1htn{C5;w)#$?j{KlbIBOF>n zBgSJ<_`D8L*$VV*%$?`z%g%MAz0hKv$13$b_%OX! z4}JZnY)!op_!vIdS#(tPosi2{BhK<;g+6uwPli2w1wS4eQ1ZAr^z}6c^27=d;^RGI zmvqG8^KQ&ZX=CbR-Im*=w%9x6)mYUKP6uEADXKZf_Sb0^l34CBdd*5P8jmgJue(zC zrG2pEnZIvLU}4b}FO$7AZ?Y=NUpsoP6P6N*_tmHq;?DJQz~<8Bk>}83nIx}eaqc*; z4zak2I*i9Dl2z8OzQ%csZR%YrYYlximYQ=_Gt#TkD`Oh%JXT*?nNwc$Wv|9v=FzYgNLCEV<~Cnpv!nQ zCJ!p!(Dm)N-$noO!`lv2LfnjX?qi0Fxd9c6#K<3wwbyL|fmatDOWXOt`hK(l#@5n0 zj>owOFoIpqpvP?opsa)_dB^i;oVXIh^0Dg!%)F(i@*RWhr*Rd9)eZ62V~fb)qr!); z#wtIOyzBLwD@$esI?gyL&R6=`55p2tc9 z|6JHco>xE8Q%kTj;MEvqG1Qj!ed8RW5prLiT$qyrwr&)8HL9*HsQ!4B`N^UZ9wg7k z*i0_-^_xY_BUk;kT;~e3(&Kv=MlkuvjOknFyRl?$zN23KGzy$rclxjph%=YGzgnu+%u^ANmaX!PMm`e!!5eNtKFkMLZt6$58!pvm0q&56;4~9L3N)j?3p$^zHQ&9%Z$4*@-yr3HV+8FmfdIWjzSBFk1 zB}1Io9$z&$bsv)P`b`1FC5!H>QC+Gn9-aa?FhTS<-e)7N%DN1YZ}H#%_Uj7~a}GDj z$F6ba%DajfEMAR=cKLr^!*o`b__W-I=eJl}{LUftxV^wRb&yNk^ZHNP!S~8{MAu)9 z9=uA|(!c%oiv3n??V4~c^VMaS4D;~yI7IFkguW)_{y=9PH$Hsi!7-h;<)(m=yfntbGt0KquLKr>~(8cRS3NFR||pmH%_IcOfs zp4Qz_H5YTe8hOmCTVHFa_SJQ$Nc&!m!M1$x<8}>2wmm^fUxx_sCR9aX{^1RzDj{w% z4u8F}4XXkfek9xgWvMJq^vC@j7^Y&WmfpvT;fcO4?)&fp1J8?Ck-mrT4|p#>Zn0h` zE^p(z_2eTFr7mPLFlN5)dwkr8)|wA5FfegeqR)8E0h4atH|(`(aS=)f<$5hd<~fQ? zz+W3bix5I8`Ri3`r`u81;-gW=T4y@@>#>f6%JV*dGv!`hJYEAYFbB$}36CQ~@H+1V zec18_nZClw|{;hoGs7AqpvQ<09+CNvXmq^hTiYV^FNKry5p9{*{e|k zSzKRVu+DM!;&mRbeb9-cEE9iS928+XV;v^XMjc~(ujBmHSVprF;;V5D-5i9Ev`f%+ zCX`_A%fi=n_ug6B46jB8iZS5fLV`-q!2KyQdo=Dbho0-NJzw|SI)>#VV+6F!4&7rv zVs)T*6`Mb8e7)z56>7BZ<3LcFb2`Q=6Qqg_H*@fJ#I1ic`kl(>^);zhs#;a6;j2++ zlzPm|;!r~o8?^TP;ZdTdB^Y?VD}?+sI>#z`d0yYwu6_VHDiFu|2y27ErfpmGWiHud za0nV>HWsT*C%+K%$V39ePfDf8BTNrgB1=n9H==>^bAG$-y3-;%QPq4^6Fc}cV2bQt;))bj3^yJ^g0=fK=D}25B(gf zxqhKpXt!H2RI0Y2$+FrgIoAq!%~p+$mhS*xd>!kKh9W^np1s3e5Vz{Ha=EWLD1$o;Q>Bs8lx?h>MStzHkkJ^O*&tG{?i}c_n*%HfbAnRx-)mSy59t#64Ca3 zKtxAFo5w>B6=FL$%6vISA<*@$j%EPknMTO7smtjAFk2K?g~0BoL7T@a!9v`P*?gAV z1MU{n};A-okZD7$M zT3L6l_Zx%m52zgMyXEM=e1E@u`}!~MzkECS75(S&ylV)E`HAe9t`=@bw;s2MstGOt zOuxZh#YIQv9j^QeMA1Y$n+GwN_{;bAFYo&=AeSsIkk;2&W?p{NMB_f&V>fSlIL3EpkL?m)m$A-L3bOS6x2Hj9ho^EwcO33k!M)INQpaD`*Cde-e@;IyBNV6WGXK;^ua zBPY71t%x2&kV+tS*-eo~Bp2egv1w^qv>bLv5m$~4w)MTyk!ojJGCk{2(MInJrW?(m_d{WLgeUNkFnB z>8P%o7eEV1UytQuE{Kj??%ojv2H#CNEe`=eQy%(cp~b3Q&1hU@wC+m8u8@1tR3k^| zO!oy!VI*gdY87u#?IJm6_3m=gAlcF@)4Cj7X!+AioA*>gcdPd{mxmIKt-hu9=)#anYpmS{hZj9cy~$NPK%*~p zBb<1gi>6c?AA8JJx<=qfOX(m20a@p{+F}_Hz{$um-aP{?07hO}5=rQ^e2YdKa)KX{ zX>S30p#vjiE-j+HH(<(=xp#XJorO;8x0Uz1x&XkW_8@qL0wLRTw0jJyDO1~bxq0(T z0a#jEdpt!)mbV#h5}-1Z505L;9(qn6;bR&HsE)O&+VFbs0QL|0EFtZg0eqUSZ@)X% zIOw!?rbb)=^e^%z9L{$u(KSzGyW}#c9+0vzDAP>b zo}uU_^JG^n1ci9HqdlKvY%~b_2{%Vk(R1$N)Uy$-pR%bhn$0Ey;O(CKO`Fj*AFa4F z*)9T|2aORIjctuKAkw?gX`A57st?Uan`SH6FG6eDrWpF@8OXHKUOU&AS?E``MOEK? zaLU=eg_lhUa+kDYwxC9b*S`h3kzm_C3euC*ofw1PA&^mSon<2TanQgwn~4SwN12_E zutg0IkpHHm-pxkmIl5cZM`^r3rI?P{$ae;6KBi-*bqUr0HN0+Bzj2)oiaC$3dSej* z3LiDM_|knF&3&i4ttgBbo%T#+Yc&!u54DnJcfAUrNzf^KzEjQ62vtZkxgGtoPbDo{ z6lkk?M>dCw3|+I8V|odhDAKso%IRFhB%@15>`Y&buE|n&Oe(ZBxx7`4yJikR=~sRA z`a$4*>+L1JJ^L^%Rq@LYueiNs>YLtS`TO{RxnK zI(qiry&xfr2Jd1%hL-nx)@s{~fwngHKH+R)IQY!&lk3fZcQh2Qt+UTvXzsjK!^!BP zrKcGM*DGKU{pOBqBLdAvk8YfOx1fdcEjhgS5?W#(Gd-Q{ng~FdG4&}@)}SYAz8J?) z5b{)aw6EAgN9yI~>20*vdS*slj0NQfdX|)Y6V7AL{lj+;cw|WFY*Kz8(As%#>IA=- zcd{!Yt)_#($Nf9rpy7vVEPqUS0VjxRoS3J*oWM0(2ILL?tqsdx!0IWmDVP9Ua~!`b z4j6<|@_R0qLol*wkQdPRsGL+*b##wFdz`)yTaGFho89#Q$CN77;?@%s5Y*0j4lPtw zr%n(w(aTY6-qMZo8FvI$h%P?@KF#(}^DWy@Y_rDnns(;_siZaLr%X(!?6L-t$X$0D zx+bxN9G@UBu|^lgT6q8r-)iIVH4lx4u4$>oI&*FSwjpRX$N&u5{&WWjD%ZHJ#jTSk zdX!t-=2lc__@1`pO0ffQ&h*DJH%Pm#Ijj36UIO;bniQAxdV&aL&CV~kbPcElugQLQ zL@G$rt;u`7^lJkhsducaH^63oO{4Ycc$V?y>rcP@ivEK~8?Bwc*1rpzJbQ@QoZQLMKBW7Z5lk=A`*Z^7M1IP9P=X5 zyn~vQ1HnTxn=B4MUUk!IqtBjXBn_LK z_5@QHRLPcX4ka3>Q?D~+9sAK!^eAo7xA_!2^4uJ>{9yMac;vbd9{3ThTzmhReuH;Jx!x}`khfKu7AJI2wg3UBBg ztK%oo`)qqZ8gp;Jfm%LC(%hTT%HwVD+srFaFjzkG#J*f;RcycGwTsLPf!A|S4HRp+ z%8I8$(OmAjtvvt)#>y^%{S2$E0siAh3)Bc zSIU-&j&xrVWGRO z@NTcMuqtD4UvFC@_$Zxw8e#+ec;iv6y#^0-Loc7J#RM772J4XEU?J*g%sCWA`Z+Z( zuZQyUE17DYM@VCHeH2>ub^?vnE4ej`TJvZkuxKBC3r)r;Ioj(Z(S|TB1~rG@(P=-b zW^zN(X}1>b<{*IYHlL)nB@n&7lUw)wOMyQWr$Qz;9o2W*4L(m~S~{0XlJS zu-4T+6x{7T?EA%raqO;kyg&8OD?6=5(`sEP5IdtgB5Mv%gI#CMxulhTE&^kz%vOy; z;C4?LbrHzJDqC3xf%5T^ZE_?4^A(e{+9v?_Y4P5DH~4*?(mZDe18swKiAdVf8_m?0 zm?+LPlrFn1@7PN9DC2Os+Ap{}iUFuB@k+OhA8!AyTC{(Dm-&;pXLY>kA;Eu7TTm`)ZtF=LROe;g;sTu;G>mow^DC_YaEEW^g#@6Grvn&|xke=*_JFkP9?s^($+($_Kc6G=1hc^J! zBiFOjMZRvX0ifUeg1V_5fYDPTDJ2@AxOC=VLd(M2e9ok^QNrMzB_30ede?fFRBD}# z@`UfTF#|iJ$-UO|<1>Mx3eVl7YtI38o4pGdGUh5r;JK-*Gm?eC z8eD!&e(3Pf){}d)`K$xL#}pKA0P;G|_Yn+GK_HD1YVEy+z&X-0jX^^q(_E#;Gy$Wa zb&aOPU5GTwq?12p86W|~q}FX{#$Xr2q_tm@Yyg#)$&EFRZ$UTY+qw)Ij82=Urq)|P zNQ3E;Jl`H5OU-oU3}Z>K9`hRAm%0@RhVYs^S{#!>Hig%WQ}Jqm<%-*-U6x?kipkOwIE(RMP_U=bWQ28^BaanNSCa(65j}n zb$1KIKlGff7~~G!et4yNORygHpT9Z_V|H73^o3-+AF92Kr27)RQyffFys{aoKMs3eZ?Y zNj{wBgFttc57PyJ+A;$+6zri{bcK<~17dS5dRGly1UPOiHg>R9fJ_yO%`D1&&}u10 z`(774=(H`)us&uX0F0R&?eUF{+^dy;>k@zY^Y4H9`u^_QpMJjR|Gb!DOdzSka`LcB zYoh@03blAJ%Koz4Jw}dtj;{G`SUMY8MWiIxnY95qkG0jqeN<8)kOzM#v;;4S?Mx*ThG(IJE-YGvT+wiQ4dPKMd zR5k>I_uM)`t267JvuN~g2Y|(ohg{^Kz*_HB>UN;#!Zz5uYGsDN7NUKJFVN9sTfVCE zC@4l~eYu%;p%w-|r)Ho)!m{lN(fy_g1XK7hi9+`p)DcjzARL_9uZg(B0vkVUNE!EK~`CxUnW>LCqLW{n=-F7Z3h`)S& zKmYF6-~au$Km0Mjw;e3_?^@eG+LM96&fkk8dI5Wrt4_-s5dvwg`C9c7fNeHO(~+(x zw@kHLaH7}bJf8R542sI^!uy`L6R_U+6HSXfWWvF2(bkdkKagZ&_cf1yG^_v^v($WC zQ0wLPInvd%SMbB|-AU{*2U>6Z#Oz)y16c+3%C(&a5-De|y++7Jv=WYCA?@1;w9{H? zETsuiAd$~8-W@Hu%;>Z&bGBX$6c9x34(IkVbY#mM4Yfc~QLMHpn({!Em}61B&KQHN zFo))A=GFkh=o~RsSF^#vx7Phuqod$JkFqJ%yN4KpJhZJT0qLEi8L_ilY{2`B8~aM^ zwGjB^oKa(dGA}2ey7dBpXK*{0yp67T+}0Ych>5_A)nODM7jnMooZ~!2r+r4MaSz&xx2oSz zvkjV9dCv;nEoK6~+fAd_ehPRbk;ZHFEk@wI`?NwK7{0x@B!?YP#N;mdy`Twa^lfxj zkqnd*+HPGUIH(@Wd-p1651IS%eq+va80pXRE^X7f^H2_CxBR@vQW zXouTfEm`}+^`|q4EmwaAJjt8gL575Q`JDdzGX;n!@VT>WpSTa*_-#U3_y9!#K6gtE zn@FLJPxoV-$Ax}Vr^;e?gD5!d?H$xGag_GCGrCz}TtK~RMu5{kaR3XQFHd`Ias~v4 z`1U&Dk0*-8?uW_dEgb{E)|k$_P~nlUyhr_8MvK$cR<5kPfJ@$Ts>`C8?-_S@cMl4_?v;6#5Ym9;H+cE6 zEVNH~-67|_*90&7E#uSfVrXrDl8b3P)H=mY(WfSgfF9viyg4I?Cs5_#XDwku#=y>! zpYd(s>5cLhuURyw`)I)Xe6eFhcN?N38?MSX#ago=f`Vaa>u27UF?YR96y5&28Ts(s5G z@hW66@7D%~6P>p8Pwbe1fK^62Y)WhB4g~Jg1a$}Nth9aS_H;DW$nX`^wlxdgkmq`7 zi@;V+#-4Azt4Om<#=bIIs&*jowB(4TJaj{sNOlK6=*a7Hy~_vWw4}4-K`IV<&SZA; zQ{^alWHTk}QGjZxOgl-BCu%sA>Dqjk?sP?9n*{W1gKlVdu_j~zr$?EcZrZmyy#Ux$ zXHC_GuKAi)Jjb5sw6DuiZIR&stZa0n#C7-a?jv*`h)IRUWwNb@r&P8DHth7{g zx2=?Zf)!-rg`6~I)D(0>?k!6{;nzfdI7AFppoQX4wU|1i5sFK-ZyK69C~x|{!@FlT}LlT3sNzBisU?Lu3K2m@u~k zlS_b-w=mzlmrOy9PME7wbRp$VVTs_=+aPp9I)~W;h>dcLglq%)rga#o7`#!_L_FXs!+sL?#27Y%Q(9S*e<=0Qy=$_Ur_Scsu&y9ilV6kGr=ND{6_e4{n?3E?y`sLC+Eg+6U54qdA8vym7 zirnt)&_gK1l8UHSa{vVf(P8t{ZS86V`n;u0%>*EQ+9O%_{r8r-|N4IY^SAH+44dji z#aNZvq7s1C0*`uZfH$SlHl*vo@KW=+pIVNdUGEsoXT;lI?mJ)eJ9^BwCC+%rwnwxk zjhS#l_aGombXCN3P=Cx*Z^u zASP3-S5rcd(u$Lr`v8d+Y2Tf?oQPiEJ#+fn5&|TL#nR7S$1mV>iI1qMTagXZUxQFo z>u>%6ya1oUROX3>(Ysl6wDKSrMwiMK^+5vi;@v9WCL<`;aXm`J_7-|1U$>qYqI`%) z(z@qOL65T2Wv&|NXX?8=?+x4NIje}vhYSpgj&)!J8jH`fR#pY;Q*g+9F$apwLY7}Q zPf#S3(D8^jqegHEJ>zCmbHN~lz33h_0?gVjF-(fF*MZ=hH_{Crd9=Hw;-F1koLq;k zTcIIncS$kYFvqF34xbn8+v1i*8wr4(CuyEww1kzSBdd*STD#f5WYteUKlDE~Z8c%; zLa;Q=3S@00=eo_2MO}H4(>|Ub1WI9&JVfX4gKj!`x2)Tqpy(ng%cr!osv=PHoudOy zzp0&Wbwzz{lGYup;%A^ETjy%t5EKz-x7r^c?;)_|pJp4;Zv;BGEr2Wp9=|PH4p*^G zrjNmiDv8pahjOftR*U3YQ*F5C`SRyhwEyKt8F$IYHRh}dNBha6W0at&MD`rxbp!D5 zFW=wiQvdL$pE0pm_Ov(BmVr(L*%Yp=tO=^I%>h_ZpJW^WdAC`2Yc~K;w{>+n(e9}` zdv1)}Yk$c<{_z10mF#0lWadN_UN(vgs)3JF(9w)2BaFFp!hm z(rpL&eVsc`tT&N0n4Ifta2*SD`I~ny^#v4g$kXLtw3E2)I(Swvinwl<^IMe~ICe`Lu$-$4smaOJ*~UkA0mF9bzUy0$ zhQT9`%qx4M5amX67D%U}BhQ>`a=^Iso;9vY)I)=CPK?$XLA$hjSFBYnXam4UL#JE@ z{A9ULGmn-gI&FE|gLp7{W!3)2W1+Ted9$6%t))y6SYzL3<05cLclmNmblPPp!hD{5 z`D1?1KfGVx_ka3-qy?V59mSG>wYFb7w?}3m&;6ds99U*i8!Etp-{UrTj_oRR)D+sm&z&`9|B* z+B$n*T!85;)y=SR74^qUoqm!thvfebK5$aKyR};X8MVDgwViy&7C_5Fs@hpOZK4-n z^|)n5HrSZx7<0x7Nf2-A7(ES3EuapeW6m+k9)U7~4z|P74)Xob-mKre_AWZ@hd0<8 zlLJ6$?{gtEqw0{SGPMHKk$cV9CH4H=FL}|kMwV_Y~bw*=jkP1zKNpPR=Y^48lE~OPgf}9f-7T=bv=4svx+jEh|ARs8hz- zFN@LmPMNuqLZWIutN~bgemz_dcM6rHfZyI^%)RM3pge*N(jyTgdC$)6S?R=qp=?LdIj19M(=nvoC&yZuxrKR>K}HU3Itx zY>}0i^59icc|b|-Grx{jR{?xc<=O8=h0t=ri%#-tiE{+{xqFr=1n+E?i#h^rZF|!Z z<6YUU?(u;LtnIG!URXPT0&ow0vLX##^JJS#U$}m?#nzi97flR&JM+FCGAmWSmANN9 z(6FamL%FyF-cZS>ReH<+!;|hKq5eS1dQFI`ZRZ$mr*#vfi+hyipxZM1zpCB{>siShO`@w0Qbx z=e|F@KkNs-Xx+0Nstybt^sIP~!hu+^>TO5wns8m$_gWFA3&sHKS&??E@&A*!)i!3J zkb>WMN1{hW4D7nps3l(OpdMvyg^4X~dI( zVr=a@7o)q4^Qaxv9bGe5Y^UD5ATZW_?F)^LJTYkVxEBrI&DN&5aI&=5q^Q;2kr3>J zb-`J{>d4$mjvmEHw5yXBWI@&GwyIr=1p`nXMO6k0lw7O3BLKa{RsT%;qHfKnvgu( z_h3MS(NL2vJZ-cw3R~3WY_%WiH);4*iX+GnPJ0J(=WDg4FMrOj|NM_I#*CJg3EPOg zrI9W%Tt=bs-sIAQgF^8*y`l7+fDE8Tq1Tv$PYc@(zzNf&@HbgDAdG7+o^7Y%dKVo$U-8<=6J_UkGx?9}na-w$820yNf3#E;Ad!@GwGD>po zBdpJ$d!Ke^3`x#HOWS^XD|huz5%|uh^9X@w?laG8u@(T5-Rllb^7Jg7?;by(3eo|b zi{=fbKz5I7gtaBG=#45V9cw(SOtJ~skJ3$+}-gaKK+1(caT&;eQOHh1pg=xJj z8}x_i)d-bctoKWO`~K(ret-GjAkg! zMA@^y0`a%_gxdZ<4qEV^nbI?c+3x2t23-oEWvef;nvCQNT{ENU43ZB$>ptB69aiXZ zT2DJ_F3^*&?{s8MD}kPdzN<|05^`G7_t={A&lBBHkA+AT13 z&^+44Mborf*AOVJ2tfyJqN*)jW9UHNQMISk6GG-YTC06HW)Ls|(=JvgcaJ8zA!$pu z-SVFRbhkxs6k2Jzsc*d)0?NEvEtyfL6y8u+@8}e9Q?w#q)hz?edK*(`X?vbK0)0HA zdBCD+ACI8@MgcmN4SIGitrT?4MM+$zKsTigCbDx1Wr!Ng7V*4*Kxcz*cH5{4I#TD> zIGTiRsCQP+>VV&h4ND27bp(x&Ys(hq7-$eOii7t7n*eJcL*_TPp}W0wMa@p2f$!3- zg`?`Nb-AAs{6t4~M&^!|UwS*S!N#wTxEh(P}+V5H{l09<4J$2Dd@wCYAw8f)TI%)CO`}vG$8H zopnH7$|#t$BMp$&GfL6h#sKGs$%6jBH{VDJbcGh96q^ASVxu$Gk=g$82yD7bE9E5w zUuQZlSp1ESUSeCs5IosTu}pZ{*WNR|p8?>dE&{fP9spYjWG;ULz1k=BB(`q^*65X~ z3aAwu)sjUs5b4d@DL1q8{(-=KTWNKn8DO)Pf+G+zso6Chd>z&EuMIgtn}fv<|>xx3yzf*-M2-#;)*g zL<8Vi6c)|3{!88Fzy9g#*Pnj*{eS!8`<_4FU(gY@MLKE(9~RFcVuvPLnR#vBZRL8< zk*)co=Nu5-HQ1IFj@%O)yi&||&^38j>r^Wss2gjhoV63ZM^5TyhHg6s;65=leFH+V z@u|~uwWIHqZQXdTJ| z542MoWF$9A!7MV}iFF)t^@8ACX?tjmpe+Py{ zX_*wC0%Uhns&g`lfaixbdBL-&0CVJ{f_OM+py*g-Ol~Jgur0B67b*^whi*u6oTz(D z{=JC%pa1aFufM+Uu#Rh8e92Ud?R*MEBd3RYHqLmp8P*teLC8hf^AD_F>E zjujpQHJMxM7IimQ04{;qJa4^Y3oV{D-=oJqQ2=9qLq_M#E=5^R}CXA+VYJ%o|OB4IauzKrYP8iPvZUF9-~J zll3M#?Wu?)Gebw-lGq4#;CMl0_fG`6oTQ@f6kKaAq69!tx%ft*KE3WF9IgT4l9 zf$o+gBCyl7R;4oWJJ37uHTh`S0reW|RI9f{?DH=tf4)E6{Pq3Ax9{jby`+Z-#oR7a zJ9XFKWcBR)U@(!4X$a*{w*)jV_; zX*b;iFxyblxd7AFynUdeJ7Cc@@93^rMjGJem2AoBpo`DE?mZ&=qHSPIo2O7h@ zsx|$)&k2A$vbcrk(KXwgU~vdqCATcP6)(~7ZOQ%OPUMVXE#A9ZTowH!w|3W>if1yBLL0MdfweF0Q52Leiw;GS%qmgHKL9K zt2p&6^nn`rU#wi?(gp;HCePjB?GWrt!rI0Su13tephinf$b z96)IG(JE5W{ZQz%c8^bTq*>s@CyV)gAW-R<%hbY27Xm{#qqE2eY!`A;x%Q)=&^wi& z!v}$YwM&C~?vydmBUkR*3P)i3=d%-uv#T^dEDeUj!$xu?*P zOCD9L*`gymnQZ$a@o}FmY)|JAC>Z(V`^b9P1utj{S9EzAM0GwzZQn5k5dD0r$hFdi zzL;sZM0_JN8gH^XyDmgJ@)?g*=3KxB*=M#f)Q$p~VV}qDz5=BdeV#))6q&{JnQ9s=X@eG6y@a~iXR-x{E_;?#-wD+49DyYGA5ChdSNx080>X`Te(v{Ps& zMCM_1&5u1$E3kpL(((nZ^*c8LI~Ox43NS#NF75SJOhq^JTv|mK$=^8Dd*r7Q=uP@s zGh$Bn13`0>$Ur~AwfxenX7_OyAw6wh-YPY1*NX1e z{hdMj(D1F0GUJ>FT{AWBs~~u{x$WIu6GX4RZmy5Q03fqC&ybaSZqTUYysT*S`Xvag z(^`8Bf)U=!}#Mtkk4M+m%agWE(k@IJeDNY5Hb7RUMVrFkCGLUw*{g01gGToyU}S=m$a_&LwCF9OVxo4 zCS3MMMm7(~<9j>3z3yuVi~*N(Ol=ivt#N6dr1^35e z(JM0mYYdk+-YW#Uzo{1~$a+gTbT9Q(bVF5laDUq1v^uDod^u2Lsl$a@lNr=1U6>Rxtj#+Z(J=nN;cIrOV4Q7F6FuktB z#+{RX7(6!DH20D~;i-)~w!c>71>h9pyme80X!G1w4k$E|M(++WdIz0$ZI?aT=?Q?= z#!+)EkYR1_6q>I0U3A)*y6)W@^oV-5x~$~A(ZpigPmzaSbj^K7-N%GJe)|vs$0N|0 z;@(%5Zcfh0(6LQGDo>o2m`Jz=zoB zE}wc31H{`Qyd5Y4?YZ3CSMa%vj*L;hH%&ovWIf_GbdWuNf<<876< zQo;1FM1xhHQ8WU5{4s{pQ(~aU>oIQsa;yM*+1oeGR3Zd{-PToSCJLs5vRgowpk+Rm z#%gg!(6Q~IX>qj><;q(Dxy1zQqSM+_n<8!n!Q6V%0p-`jWwk%rMge?;GcP$*;O)h3 zANSmdvF34RlX~BQ&)FH>aa!`||5OQoLI0QaLfYZ!hu=rMcoBCaqM_$tuhrxc1Wwvk zn+N)MlH_RAd$29Ynm z%u?G(5P&i5M#usjLC@Ig(l#dOw0n+fBTCT8;<@>8%Z-6{E6=U>)~QzzY-JMLqtIJ9 z=fz-ojt1d&`&A8&@k8*3UrfHS%-v3+S6jlZ+=Phko^|Qe3nZTHdr(VS!ERLVAN_pA z$PKTlLd{zp3`9136L%}cg1M>P5fpL%4iT8z&h!^#x_z%zW-ka$+}l>%F`dybV_S4D zAvDVJ9hAMt(SZgbyKCVkavJo#+vn(V6*}!v>3*t#qV0VuTO?Z1R(W5F(c&=$!IlMW zY7BZSw{^5mGCZQoel68U4C-`#oYF=Kp?Rb^tt*x=P!ROvk5`_&aI~5zLB<0xOudVEH0dFy zgDxiUSS%ZDKThla*1HoeU*}Hh;AEf|f3DoYCkLoS__;dP)d%x3=gsBg)Igi1ZpFNj zFHqFii)Aai5a6Kr9YgBQ8NC0EJoo8tz5f&b>kcw1P=WC-4zdq_DARXInZ+v5B72)i zF7qi`e6AFgto8~App$!hn_v5P;@?01`u*h}An(tw_q0@mj8*+cb6?qzzq8+XZ`>;i zbQb-#Mb#RP3M78-n@QK;w|n0ry3BAXxz*Mxxfo@a-&kXHpAwoV-}Gm9x9AW8Pe`Yi zfwrSR%2X0T;`aXdwO27CdsKhAyjI3Vd)%kuvkuhw_UB9Hom)_3^8B1Nixp+*Ue5Mp zd=KSGUW#qKcA6r-$A9z>Xr%Ue+xfvT{*`%bev0y6?RRjwmADdt+f(j6D12$VnAfEN z6jGPHHY}_SY%ChQvTF;Y)B0;Rvgt%Ol;cQrBP{sxYtQ%gnaEGh>qyOE@qn1T*U1}8 z+dmM2x4cLnni1-bGEN@A#=`4T*fzOnCt7cIUkM|rNUxf$eljQ8T(zm54PJsW_*HGw zeXoOrMT{{cTR{QT=3;axsvWs31p4S^7zefI7~^z9w<4lm4DyvDH-n`s#-dNFVF9*G zgUqX~f8miUr7SOyPK%LeOMBNi1aIr|%neE>G4|_vO)QX~j?tYAz6JH|#JDTZ&~9f% zpsJ2(_wFAB>}?yq%6Ywu9=S{=&u4H~Fir=o z1f)D-#`D*tCi5SHKYUAb&sNvJ1F$(`?q#k{1LQYjKHeW+Fp$0L)#0^M1cRzd>kV*R znlunNC0`IL$fyKO{fjCaP@)PVZ);RBkVy+#m&~p!sO|nGI)nisoXz)QoC>}*iCPd6>+p=C|+_JSmWEyQaJv$vijzDpiI2X_?m#4}t48FBd8Q#p2DLa~K>U?IKhpvQCfX z-Qam87aD|4Pg6hzfmnH4>wly2UaT!+oqhG9Yu<4s-$Q|YbK%!~E!Yf?%(X@Y>T-|O zX@fT3Mt94jo80@2f)Qfwj`V%ug3=v|_ZDxkC1^u>ilQk4x18H+p?(0K+jW&hHd?{GO+F?Mr1kz9ggcGD`3E#o zS30Y6$ov~TiKp!Q~^D4O@BM@?Fd7d>KUGvKI*7Zj}3;9TD zPTMHr?4bTxU8Ic}I@(OfCjl;BbYQi!<^>LDp``jo+zUurp`G6kF$a1aU1eAuJrhNX zySuv;cXxNYP~6=eieKE_;o=u}r$BM{;_h0sSo`sQ|MtmlCX+Lh*-dtGB3*2_#3&zG zLayzIx>ab{vu-jEbjZ* zOZ)!%PT*|e>}O`!i}$|=k`9)L`CdUcdbx+sv*_rmKs?7^({q|zAQmZ=sD4_gikZiG zWv|AOt05v>kmgUyLJZR|TVGAZ8`=$em0PXSVE7~quRo%~*c&H4L!b%O94Kr@M|GRF z%DJ&gZYWk%-5lb~abj#UmSAAm44fMJt~nMvLfrWk;*eC!am(e@wg8w)q^`A>R8c!(t<5rtl{ zsGo_78_5H}U=yhp+`2qWNTIRQ>7R=XXjj=1!kIh2#8mhO(IU13Y|saH{3R7(LWMG3cJC_#;K`uZ_B?Fy%S9eC{>)k1|t@`~Ozl^uNKr zua2tsateovCAwdG6rB^y*JuXjLMSr0rD$d2$<4^JR+q;R%>9lxY&*NmCTCesQ1UO# zuk<6S(&AiKGNE)?Y_-LTIJ0H(Irf^L%5-&7Ia5G|GL8-Z!s203?PX62;^*X4^13xR z<)7VMg=$Dp@h|_~S&J0*gPY$m1!SL*$3JS0J#;fq%5*|QPTa!wKHs_uL6iC`pq6U& zaV{B?yCM;30ATLqC}XsYQd$1m$U1aM8FBP+`y=9#NTG# z6wTqW-U_v%7l?^k=>zc_E-mD*A-J-fcZ(zL~A6wZS9tU^V>FR=gf39Y~Yw zwouJ4Ql)&}b6fWWfKY>7ciwooVe5+YrR`A%*kHD2et%`L#Hfr%->bq`{Lqt2dFY3? z5t6=o1h~(DE_gQncr6@iGE6#XCz2?RZN2&58V#$~ery$>Fx~9VfgZS-tq`lAm4I9*A&I0g~V?W+0b%6zS zK#->%T}#(5bu}TKNbc+>NS>*}xW(FD7BpS>f)~Oor?qGGV%r)ph5aDu*VYrEpHF_8 zNU2hc{NZjKBnuW2n~U#$#K~W|zp~`tC6{_T(N>YIuK|GmPC+s5sSk<#orR+jjd}7f zQ4D@mOPd0_BBwWjx-9qCWWtN+f2;Vl=HWxl+DNZ{{ul+7Oy6k1XumPO_o;HKQZ)ED zd9(SfuQMz&vq2p5mu2eDfm-Sgdcq$pK?L6!IFb$39wr*%^g|Mqm%hD8M;8@U*Y!*p zj4|<^_qv#_*>Kcp>>t+#8+)Nvb2QqD4YJ8@;G}KCx`p!VFy(uF@TT zB5jHJVV&X*6FbaxOY@*(+ItlHqn`OBKv(D)iq$&*?W_)Co!mQV@y)u)Gfb~`fL8FC z5aNeT*a~RugxtEVs1g}cDmm{>uQh-YL{{4u#!wC^+7JdBhG*Zt5Lg zK}d2^hq6N+ZH26VFjporf0hPMX2o`+ss)INu;7X2a=>=39&^0GvrUOrOk0iMRe-2? zy_3Bd2>;;HIwboq&CKtLq_Ttz%G3$w17aWwo`Nm~{mbEYbFbtuV&{{&--+j=#Yo#v zzOLg1d=llvb_j;>wRNh#J_$x;Cy^!m!0a<|A2c#)cZ9`_r!ixBlF)n~gj;Dza4 z;K!Ga94}ayv4Dj~8^3}{F{kj;cT>}qxC{=IcXJLr5PKdw%o~zDIYJ5%3FDywiQD*6 z&c+&6r*uau+~1GWvOrf<}(}egB5Q+tX`>`>(p7fh4O3; zPx2XZz}OD!p}9(EH;^%(+j$<+E~l!-L#0{mhion3fry#KL#o}?cio&Ks}wucz$zsA ze`T);dR<7*w7sm2A~+AlN#Y!DVkTVGfp2C*X2yx$8x*nx-mhmlfUH+sW;myB7#p5XSSTR;*0Yfg*mfh3VQC z>P4+$3(;$!D^K}@+-L>D=Yu}?6y(<$tvu&+S*ru<^Ydy z;GvK#DaWuvp;4L6m=)c}ch@INMJHm}mhT>*r=#Q&YJ;{mblW$KWbJJE!9fUj$T<4f z3ug;+IrX37SX~&1k!E*Vo}QqL8bcKTEF-PD$yx<&z`4UqpW4`_jGEMyRa&3AwR>d{ z-P)FDml0C~yhd|VC(@do*q}iC&wicH#I#|dB#k+Lp8NsVgY4Cs*(JaEZ7qSZ;1Zq> ze2QkcwSy&ExH9R1FA^%;>JB)+epfZV7=RK{J(+O*&dTA8H0=b+Q7e!Y+SR;ErcVgP zrJx>@sI9@{7)cE_9L6$Gi&djp3W^LN`&mooxYoWUKj0OFX{gXuTbEGsRW^A2!zqv= zD?{6ooNTqFTp|2m&pUC_>!1Rfmh4@G-DNQ-miP(9yl z#YyoK+RzIy3{wt!qNH)Uu+;; zsu@0tH9XFI@M6bdXIGl~B6W2I_hkSyFz3u1`U5GdcS30%H}XK|ZlhuU(Ck%-jj&fd(RON!9k zgi#Xui-3uj$nYCt36$v=`_dX_*Pbi+nfp_48e&4ctoZ?pj6~IDtr3J>wgv%apbI#8 z`KN8#Hp@D(lG4m#H4RZc9=cAy)OYeGv3-F9k8F}CZCa-)yPD`^-!PVeojfF*53vWI zZ9X^93L}cId_6_()zHE9ml=A*NOe(P57o}l8ZVq)jM<}LjpBL=<5LCmMhP);jC;bS z_4M@+Hdcz6HZ=4zDkVJPt}J8ml>*$*^^tR>n@;G@`w<~rtA0$jBo)h^iUbcYsAG1z z=2a}lEl_|u`_Jpe%FPjzVi!1zR;J^nCB^{F?*A$sZ`vbthN36hj{$Vq)j%p$#qg8% zV}81ezFrG=@ZMrN-PI!Pgc0C=?sUgDo^s9`vkvH{S1tk(B@jJTA9U09vJ!|dwk*M0 zY^AG7>dx+`MwHD5VbeB_E`cuxzLaoKL&2#sb9<*TzyD5z*o9n+}ZgLo*-cTgzpZo|t&E}LUEQhPus_x6xg7@6 zdU$t))_8M|#ni>d-v5WFaP_k^|D)G`DAtNdx82!%;tbH`J}L^-F*_C{zxbyA$ELm* z&x+2zMJdd8jki3=}%coSUXW$D?R|6D5kU#UVo^ZI2w@3R@G(@VTOA$R?@BB`~aRj9>^odfp& z5(wjVer5V-cE4bMV((hYBU|(PKXs39EemkIP<|8F={Eb^3!c7Vr0tsHgCxhkUFP~9 z;3=Bbs2Q_eku{!{X^8BaYy<6rx_Q-$E!r1OqTr0A3IROvM8WQ6VU;XT4aTt&wTa>TpeOlFPxcG!d@{=S~L*~@cO3!+i@Dl@BQNtF!zFb`v6>&47lD+c%M}|*C zX}srcjFkQx6*xziG7Vi3{|9%|AGzu)@<7*T9H40|PZ|-!W?xNet^29FU;ne4 zdQ_PYYTg#fCummVVJGlaJCOP}3cuhBsy2l*L_Zbces3TTF0lD@)SGI{M>FlU&Hpf? z9?<~1X5RjH+46HGN1L|0^Gj+Vv01Zosy&`>*93iHOgSEI{eq; zTyE{gpJYku3OcduU4}w;@$z4tB$GqmA2CNA>M~;_+=ij7W7$uNGH8xig#_iuXc;Ko z6(&w?QgcQhwgnF#(~dE7H3*L*wc7n(BA%S*1bJP(_y(7FOsUooxWfq3s256Ed=pG| zuxj`1A0f}ex|X(otEkg=`ynh5@fh1Wm`}uQFHfth0JofX)0fVNWiw(Zm0J`!2>YT3 zPg7?@1s;fS70`iUB?Xj7Y+UPa|K5%ZuiZHNHHe!=3ZQ zvR~kbA){v;3R-52=eqi=gJw2t78qp{*S&QaT%Uut1NgwPljH3nfCUHEDkO}+isY#2 zu>84--Mn7kXK~6g7ehjK7She$$kZ8m8f>*S4PhaGrq&7b5Eg>{gMQERskR@Qj28xcuL4;s zP$;?iJIq~GG7*8EgbewDQ(7B&#jr$$#$~IGlNz6$8z;Qqaa=Jf1H})g<_lKds#D<; zxb6Ip_^WTIaJDxDvot*%ruT+Wnf&{*9P+Wdg<>brsVPc^_qn6LO zya*qZCUH`dE(IZqY3dHw5pG#gCizTMw>bUEJp`Z3pk6+x_!S>hS2(d1w47mKelRL- z$M1e&2QXR1sp(jn91t-yYNt6M{4`6@in5B=5Et2z;|3I$kH>w{@~0>mLg6Y}dDY_O zF199gO~lv^>8VVX^NXd@6>Ae%@X$dU_$_razU{iY1Ua0lj;;UmE3Zi~*&07sW0Tg! zAmI{9TJ+nOR%}@>et(r5s7oG2Yb3X8Ilju}d5nkSR%%K3qyTiHvP%3sllaO z`h_LqCagTV;bLG#_*ZF@iuEPDiz17TrBE_X1>E3nXa+9jSOGo_vR9ogB*jhk)t<2OF3w9*A zUsmVqP$p&s+<8Hf0qV*3v9gs}`l$a{gdj0Z;Zu$w7wzSpmw0ID1l-Qf7=l zQp#f^u4;2C-xPVhHaO<5YIsVvCm&cG51%=!_rKabKW#)n%C*bTjHa012ah=|&G+a@ z!8-7F+jqi>!?{>0TL>VVuoFys$^s-HvRi2_*lNW;%J>=Cr?eo$7Hw3T%1S6wlN+&J zs6m-9SS8Y`I<)L1i=8was4~;R239SG@vxtqvsA^$^h132Aq^H+o076*ecDJu4Aj90 z)?A2vBg~{rp7_&zo)xYn!ScVXxYx1kPfH#49Tc0uyqLI5AOfnfY)(^FmOmjXpZpxa znHfk=FsGK_ZBpcFT3{Pv(~mPQKjhZQ%F3LN(=uQG)nJjHWfK$-(;Z>Fku^H64}{E^ zX+S&fU4+eeB*r4^IT^NB%wqeQ#s=|GKfSb#2jTz+p?b)qsh>AIJ6cktwZLNBP}%8eEB(z zaUw9MBf6xoVlQulpfdRZS|ZA6UsT|I%s||AA#K(v3_cAq8$4bW&8zF_Y?x8n9F%%Sk*H`N2I(D9b9%_V9P-YIgMM zZ%h8p`(GcJKgTheXO$9jyE>OmTYxb&Ij?DC6a;@gC>^8)`1raX-l(2~8Epeya<{;9 zp_ESg5yp*S6IOY@E38snl!NSgcFYn#f~i9{_5=m4XekB)EL;~#)W#qC_=H?e(M*=5 zYK9*kyZ@|_F#kmI5p0>YibeiKcjhW)px7>^=(8EO#av&ZaZ5k8lU=oBSGCl@7ZLth zy*`B@5XDHSLHJ4FkNry9x=h=P_M?+0ZiX{KL!I#lI!C>Ido3osb?x|sd68gw)E~PQ z#KS<0N7IS$fMLm{ON27mrCI^SAYR;~gmAzwG{KVKubven?$Dv%1dzNLLgtP%))1G}Jme14 zszR_bV>->FUSj_m8zI+ z{5%rYWg~xEm2|BI2oWysmZE`kin5r?Q6gd^!=jk9A8(?Stj2M|hk(u4Uc=5T9_aH=5Y>z#VExHq|^PtpSSG{Gb){fl)!$};rb^`oO>q|h=+A?-- zy7G;SoNBURohmdaU4Ebja?D!zBTqr!P2qGj;}kq^Ie_NO)htjJ_BDb)s69zDXZJK~ z0Ib*I6vATO9;!T5G_{EAN^2e^As@?0eN1^yeA_UqCNxTo8PaSX$zfHHDp1suHIOx8 z-yT)KO=B8qMUddACgHqH-SM^3lI!-`4{gf}ow|j?y6*9shfaJp-$)}%n$EA8-`;cR ziHqDqK1B8~PKLQSA&0Pfi!%)QhKikWRuDvFs-p{AX~_Ayso54fWnvJcgTVTw01NRm zky=aabs&yg=4_^#o2pow7@41IsWzEqT!~(JDO|u_aSTTEAWNEF70w}xlMv0;GaPfn znoIX>E-jc=G?i&^+!l7?SZRQmH6Lqk)rxUSF?3pt#U4{-P4&T?4xF0=R)ft|v=d_C z?*&P+CtnQ5oP}--DW!pIs$k^StSFgg4K!i#{$$Hs&K%w%WxsWMjcM>K%5^q3Rv}YQ z0mcj%B*>c4w7{tqM&e#lPZTat6yn*p&-g0K4$4A6Rk!CWQ09W+}*8J7E$i zG14bH)8g12pNmt?ur{si;>7a+jT~{kcA>Mq=v+oJQ9FKGu|^1=1fTCu8D_$H#Z=P3 zQvH}6yWr)NPt$`!tj_a|#Ew;;0O@9zO{PuRIFDVn%9&M)Sez}CqoK0I)^I3z%A9;> zVJ@E9rSV4Bw+jhm&-qRGvwS*5OB19sHZ_YohVYe!S4Bq}|Iw+8EkoivBm#fZ>%?gX zn_~kGr~Lg()4%$Ur-pyhGdE=O}pLh?M6EOQV?gg2NO^e zTaUg50&pJ&EK1igC)Rnd^yezF(KbsdBsUmGEe9~)WBU+UJBEFjHHjHl>Yg+Wdxe3( zDZf;Y3HS)D?t=t&v=A}BkVFs4ozmH}TQ*x!PRy;DWhY-Tf7xj(4)*dMmz|xc8x3eEM z-AEB7WltfRRd1W!U`zx=gLDh=4wK(cbD$|w&My83{0fU0Xeq!{L7bfv;0rE#hPq~y zI4pvFb!+&cX}fZ`<2BU5`XzM+ieiRd_hm)B7x2E{_8F#Ji|n!_b|LAbsF|-x@#_Mp z>(2m%X40y1y&Fm9ywp5$!HWf}&t**Q<$ zgj6y55M+E3eXMnoCg%x0%?y1Et9Wd`l7D2(atn(h4L!h86MQo+RKF{{R)+bi6xHU} zv?w6O8RL+ZXGSRU2cF}a_QZl`cfuyHiKaa5oS>9ixsG|}&NBGS*KJj1oWN5UT_cx8 z-T4&$gq=3p1AEe{48Lq66K}~a!>-y_EK{g}$}S2p&)Ccno+_P;Wp>x1c5FIOC^n{Z zP*7PSnXEtccqv%yG%T2~kHj&OHR{P+MR-cLC{Px$lANrWXFgf`yQp*#Tb7>>0dm?0 zp(^Xk58Fy@@FYW2&TKfcX*%n={V zqHI!9tnTkYa!QjJp4f0&nF=7`k!g*s$M)3F5ETh*h{u$ZCE1S&wZceOb6k(i6>LCa zFI~%`tyAh^4ayY+U`l123d(zCNuxq46Kh?sWenNt3B&}{LHeO+8`=cW1nV`3@R!Ee zqm{uV&^LM5sjiu+U{yj0wqhCJm#E&Sn9{x%9z4Yrn7WH8c#l2Q85$r}n-)E5kV)j_ zBtg~Y$TBQ@-xjm{SbJm+_i0~yIi=ZX#b|ALMVZ#sk_`EFt_6s%MC?@8*Ec10C5Md7 zr$IbCL%?VGm0tEkRk|CwyQDV3;YcWCF2gzqS98!UnFJlT{87w{o|j0?IialQ76h9x854xXi*c%= zNtubC2D*2diCUk+n_2!eM{%b0WwB-H9Y*B zOa89%od|ArL2?hZC!1ITL92UN4Qg$k4-8kZO0BvhM}p0oI^FW@gZQbQ@da=~9d;WC8nu_Lzd&;a8jb;Z}E zt_+5IO`qx^Cd)40^S$n4D$44Y5Pv8Y<1kG@hL;b#X{n(LjS5-nXu8aEPIA39^X#S` z>e(tB3gNdpxXV>D+N8#CN`V=vQCqoYwaSkP^$L>%m8P+=A_kp?`P5knWL2a}weSN) ztR|Ne)8;s7lK3Yk!UsjFUv@*R(?Du$GV^c_O2n2LAjY~9NCf|zFdmOOsYlj?a*NB7 zw;h{yO92pD)uzGMYxf7AWx&)KYD`%6iN!pDnlHMFNaspNcB#AavHw}4~7=; zvEY&D+@s!AQeltWz%OEj0Or4dKp1baw!7{OllghBF{h519Abgg+Do;GL!t&G*S6cp zPaRQK$WN}g!X`|B$&IyN-bw`OAFDTa#FJh50FB-xV9 z6PYCFNOw-!TmU{ytUKv^p1KYSB78+VGcX)6#;u^(-*ZNKiKXIKI#}fawnOXNUBiIV z)cSs<0LBijHHnD96lz1Vo2x($wPMHHlI;38`kt=2K$&$k6JTs?!fHSIsZ1?)JE+v z7Y{5B+seUH;f)7=fo?-6Q&ky&Lk=M(z!kU96Uwt1`I_aKp4=mZ#XreYOJ>8xa|jz& zW<1ld+1cFBk-PzD-?pR$cd^`@&RGkJo~^WGNMRvO`HbMYZOFXho0Pie(-M?2;%6Wrr%jcGe+ z?16&0?)$QE^kkm(?iF^L!_e@hCxgJ7VaZB=a1hO{*gIMLpw<#0=@wYHkP*v?Av z4z^x`zpa3q+eE~C;+ww$fALT>^RN0=_7Kkas$+V78;In5rFex##DyQw!%L+={%|b6 zbR#ZW(5S?0>G_F;TSM6qkJJ@S(KGQOZ6aSol7XVvLdZcb^QGqsxy=*C$r2~$!4#h}2qB-2I7x#!?YAnA;l;qdMldJ^_)R77oYW%ywxN-=fbzD0O3;|YS_)+Z z1fV~Ik3sEHXCWz5)=G|dWSbdBt3K7viIu^Vv>_v8A#_~MBSl~c*N4LMs6&pK&y8i1 zG$mX2EUNS(U6{C4Y;+~pB2mwi_2m@`bmQj*+rWh%?<;XrtMR2r=7lz84`NDhe_yDU!_f$H~;HZZoJZDzS{cS;vp{FVOdBa zW<3S@VbLv(&sNLh!d!**D+(~pHKV|cq>5aT+1|EUBkY(}Cqbb%DOZipDtakdS~1Tu z!{h!BwCUX-e+Gn`keV(%uR17HbF+lxrA>-5RPqz$bprl zLE$_Zw>2`}?jbrM6|T9VB$=t)%r+4o1iDIv!`@afYjT7#7XGoE_@IboDP^Sr_l=>= zSJf!)(!4Nt(ke;2yq!9Cae+SC_=r;EmVfrgYZ6tI=FJrczi(CkfUgSL-*_Pm^RO8( zma#0k1?HA&_}I|f_!LxSG!VmuD**~nQ5ELR-%4$t{7s6~s<@+RZF=Wu&ZON#wgB)d zjPfD+ig}8x4|4)~DKe8*4rCxG=srG>55c@%R`6Fnm!Lu%7td%#fvPC2T}iCWeDe}~ zc;Q8^(`-x*mKbn4aAYPFup+|Woq&qk=#oL%YXuaMNN4}qjoQ@tGdVXR{s%o(aqU4B zYS14H_w!*`nOWjNff@iYeSeZYY8&xIn`t9f^`W6^0|RfXFGV@-+cgc!>N(4u{c!yM)8;d zRK-6@Z>!~Q0U#p&U>i$>Vn46yu~D{Sj0+ot&UP9PQEdrqxQI1<+Rjk70nDgY9rI7( z75=zmJ%%q2MB(~;S?Wcg`KI4VUhbI2NLN|24w+*y;rV9V>ktiN=9R~`oMhyfG3e?~ z!BVnjZJX7_nDdj4QX^Tg=#G; z$t>D;fUF)x9UPaUwWOYACIji0*_2S*W7P5*#TYM9ZFw7l^34|i0v|Db>K4>0b!r^* zk9eI92zYS1=nMrqc8cXs9lKLuf0BJ0@*@>y);W%K_5Duj#q#}A7^jL93oY3)%4$=r z>e(`O`p?B0#dB%Q7(n`^U9@3Js0r@)wrzu2E_}o=Rz(zL^H07@sZLD5Yk5eOanodS z1AZ(-3#ojVLUh7L3q)RAxK$)EZeFKfU;5_Qdl}?U zM@8E$Add{(vjao(7`1J+jf2iV*|6tRK88&WyaX)0*0Ns&AGQmRWh$3AE|b0aiLk!9AK9M62X92o&Sw5E8R9dQJ; zt4UTEtTtj)273N;QQM0#tv^d4{}`6NOjT7Pd%(AT1yW_I7ZXuY*mK%wh_mEop7{~% zK9Sch>-zwn(9xfm&jmR(?l)W*h`Li`XY;(muBUKXxq!au7-G2DTm?>tHoRY{En=Zq z5%H%=ZCk1#TSMh+&RAtgYrn$Na`_q1+F?RsfIW0?r0}6@!Dp zH9#ZH)ibfdn(US;v>a3)nNnH2l0t52uJx?fK~)q+M7j1C%b(?^8&8COH(^5W@H_)C z&gXNoHYo<&^}?qr=Z7>BQB$Im)(mWWDNc3TqTf)|^oUUWO} zeZu*w5VEYD>;7LJ^@cmx07r)NsA8OiH-S<{+7vUr@u!GUEVvwZNf_@ACIiW@LV09} z@J*IJ2`tvlFwmy-`tBuB*dZ7OU_z-mFXxj0!alX4X)n>lyI}ZlmekG>&K=N^M}nTu{}8Bx0BY zB!QNuwk+#;HL2-iDr#6Ka(&91F1{4(ff86DRBYvE(N3>Dr@KC3v@GC)5WVKY+5i1J-CR>KS)25LaK4yh&f-ilIRZ%P!3w3nO z{N+l~NNUt_$J3HP7oYr-@X;W=5Q(dbAGwu|%#Vh=!Crd&@mDr@F~z#UwJ_ z@!`vI1aM}Z7#Pvnn9LI<5>CS0y|L7AO$SSTH^HE1u(e zo-)!`BQ1fHi$K6>2P}3;daaSgk{o0p1xkh^U|(uIYediBQ3nqfL9+suoCA;+|n754N=>94KQ23oVf|UWZBlthaSq?HdU% z8cH~8styHK3QV#{vqog?I5(dzh^s+rG)#9+ox%KLpmLLqwVCHturld+-XDApj`IWT~va!WZAe9)yA`f)YRu0Te<@N7nH`~WNsHL0cADO!l}-MtGc*R$lQXpaFp5|m48`7*Z9AWd&LVH%8M7^$&l#pJ{-&&!;PfX33ZLus(Ep|uq}wQ# zj{nm~FZky@0jtB5jHVuGBW;iXIhWCZT}kso9oO#JfN;}mzx zx!Dme^F3~#cA>Dm67jqNit2I@^=|PTpZ)lZvc=iTpFESe&^GR-^UC4koMl3q)=Pge zWK=@!0FG);6Q9LH1$l0RWEgT}!~3{2ag)a157TORgGS_2&&WHiRqrj$v|meU6V7kdWIc~Q-%RGBYBpIkaT$& zQ&f{SjmL`Er;|f}dHD<4fWpWy%VyYec>o!ta%{~r87dQ{c@5wQCREA!(n41wkPwX( z9Z)97HX;cZzSuk*4!RvytdmjDF@%NJcbhChold8mXk#3K>6Y>Aw4va1BB$sibzFrM zl|f-oS$n~0jdM`?(+MRDUO5bPUpt*jPHI}XM5&tO9?hmhOH;4r=AG5iA>4#)wfbD_ za193#ezQ%`dBuhAu6F!9wWmg=b@bTz3umz%i(@#moU=^=Wi|mu+W5k;d2uyIFp0iF zR9!{H6*PkXF|JQArVH-yDtB6>kkvY4yADAgz z0!+k4K33$o>-DAg<%~19g0;ZI({K&tTu{#%=@ZiL5d?Dc>cwdOu%sk9Sw{??td`Xb z`u5W~+nworPOPE(=I2eDl>`pUR!u79ARm(ewZ#ugK_;p%;rns?je_FFQYq?+uW__S zc=C;k8Xmte`mvprJzSvgVCA)na6x%yi(3iE@Hrx}_BjPnCZW?CLCLBzm zFV2|W2f}rS8kG?ZsMf}*7!m5Q*dp%xsslLm`OrM9DM2lEbqrmcD0pMMnFv3r4bqFa zB3-FMXL*~{o8S)0UTvt zmUa1hK=ZI+ky zD~koM1_M9BZ9mvj+F@LbHpsIWY2Sce5Lm9=(3xB_v|*b5&dADb?3bl`_Q(Fq}Yh zhwV4ZhH|}y25n&0&v=?mWN{gYFX0qxehYD|u9$9ec6I)@jm)&oIE<(SP}HM_%+XjR z*&57Fqfo*F9x1FM0$213FPeMjqnPKuIy2B-9MjC4G)2uuR+x%MQ8rk-Y@X&5*>gQO$eL8Kk?^v9QS!0WrfV$g&*ud0l5-)|~q9P6dUGo-od-o;a+larZqCL6MN z!|M6_lkB~Xj~ADh{-Z)T3ku}-ZA~P6 z7a{wnAnE(7z?gXFUFm)m&p#-z6gWEM)SX$F2;AD6PJLhQn{j*hdh5PLDj#irFDoXt zBuxm|Q7i@UuwCUB-h1?K7m%I_?KqJp0%iFNcK%Unw)F?vLUeXbC$@a|H8IUaub95R zRY@4!xq7^fDDQRZGyWl~2)8+}9#l>xoOkW~kAVoQ>sw4FAqn1I%IdR19{@%D()$1~>oM6L+kBpyS*o}RyK?l^xo?n{ga%FAZI zZ^mTonBsuRjPkc@dXyO^H!cr*Ua_?M*GOoujD&@2f(M(F1KqRftbM6QSKS0YPqxeT zmh}tRyxw_#pqE{*510aE&h-0z&scnhdqo<I^&TuQC=k>*oT%!>^-nDEnb+5H*?4Dj z_2=6OE!X#t5YknxVBoH3{=}!lKsyf=?p`JKtv;uqvkv_MJkj}@#w@>zNo*>u-w(q7 z5wdg+JFpD;_h4fm;l;MI;PtPp`Ih2mM{zz&K{GSwF%ld41=-E(Vh5|-KL(z+{t`T) z@N=G%_NISN4I3oewLc1gVy}C-%y63uVUsuaAJ^@`o3oESTT5rut$*Jyq|tC&nffOK z1QvgdKW}{0?_80s7T|6j)BpUpR zw)w@folpM-j@|>>$Cu-Y6M+X8L-$|EPuhVSvGgwv2r$-*Z>p-@_q>9>dXVkXaNj+B z1XT1RScX2jFG-Jl*j|@?uNoBR*F4R;zuzw}dW|wM(WJYax$tMq01p(`ufEjQK-#-v z2j$$^y;-St>$(N`8A=yA)Kswbu0aVQ3ik++C9owh(G3+Ag9$Gs8Lx~`UMN~S^j9|A z40;hJXN=#wc1RQ0w&$N>!F1g{{LW;DK1~dr!sBO6jdj8$j(RGyjO$+ij!#aI##Q~g zm4985efrv2PyQ3se`z0l1>d*luUPmhT8do(TyJCC;4O#=^9+2-dD`#&lFOz63ypQ3BMmaydkcLEXy0^&4`lf{Z;Yb-ui2?#p0`Eym?yN za-Ka?!3K$T(4XsVAkx3pVG|LDsI1)u?Wn{;on5bhLgle<7=zSTHXAmF-sR=AE%bKn zzC$5l;NiT-xSjrD`S4&VMUqorZDsnLZRX z9aFYLW*k*?i4#3WJ5qldMe_4l|K$*v91~~iyuQiOrs27d?40@_^>AAoCH5JXx`*ph zas6i1`budm{p)G1#p-lv9aT%kqyxHK`FK-0x<9WiCH2oj+YbE z)A~X0{Vp)F0+y*1|C^B9fI~`9W<%gT#c1@4noFhcWR)G5ss5tBzf5upD8t>6nGb^N zO8%;vSx@gvk&~Bxe>cPb9W6&PQ;mh~8kOsQED#wnU^Hh{1EdbZeaTCC9Oy>5I@uUf z|CR8t*y^+J_vRt@-DS7dsUF!ZvLh>eJWYC0QG|C5UkYv1*`_b>#jCqJT=A&9pbH24 zZ$RuDWdNrrT79tcIdZF|C}`^U_qM{5=)lJ4Y~z3bav}tClhd%r#?nO+BY6K1@%IY} z#a$Ww*&ykKJU$?z?~i%C#9@&~x(l|GJ-Sw*Y{Nzb_P`Ra~{s-x2h2__tL! z2Z>I)s&`aInkFsueEIx0zmLBM+?2w|N89S@?8|@9jy)*IurIj_% z*UjqS7hdT8Nc7nLOIxq{D7taLP49TDe#%Uy&PLi^7#7;y;cPs4bJG9qT6wU3`{o2^ z&N-oJW5W5)yLj}oEdk+gqMV1rl@DYB!iGUhSYkb(#UWjt*Nc{{<~oWaewufemW5ic zPM9S5?k(_@eo*rLqU*ocYP}~;n|}O*zM%g0s)tt>v@chjc$>Pwo&KQy@4h}hE&OcW zA$8u;@CJdE@fY16FSn0x!Xt)e9kcZ}l7{|qPDM^}Vq-rVZ<``yrhqEP%FAIX!|dZhay+VAPT0K^V<|2nb1 zJT{H8PLCgOlC$ULqQU(_KW39Js9`HZT~+4`4o zawp)HfUWI++?@WFlbOaEVEd$sjDCnEwvT);948bQjlUc>{B5;XUvxAgCJPTaIH7X# z?|XDFU<3ai{=K)77F6^sS>RYX$%*{7SP$VF4b_=7&&+Dh3jRwwhkD}qYjK;oqkl@* zny+d2?ZaE3_s^l8@Ydjm=Jr2}31p}|(YV7*OOy7IFcV(dzbKXcWQ5ni63qjLky8Wz z9)!=%LeWh5C~ou;JHIa|hKJTNyupS%u;llNULGwk{`T>a6f3sL-THjxS(3pvd0RW` zt?;^ge}%moD(LN@2+nTv;^!E(B{(@lR{Nx0G@x#n?=|!t?t>}p;Umo?fsazX|FiF7 zhMF1vP4(cl#MCTSsgr*SB|pP|_NseEb_{&)iM-YP zXSsf3banK~*`Nz|cF4$k!}o7ULcftQN6C)R+~0Udk=W*^w)cl1QRCaa-wr`dY(J)W zA1r^ZDhA&$bvxETvth`1KXq;I=mHh54}cpxc)=SVx&QPYCMJLeJi-0b&WV&4S!73B z0=pHzcRYWvHDL*ie=DjNe|X?tYRmGRq5;^EG{eYmMdqQ6t~wV!wV$lCzh!2!9P#Wc zimvWh{NwJJ3S{i>Fujs*LNv%1{k}o+Wvd`W@nKZ?42X5mkjZA!_qC9)FwWHbEzt%p8@>F%cBph=h982|hVHn8O5spn(Ib7v288+xA; zZ!e(#^uc)2mb5+bWXQGI_>wZyg?Vn5fA?|3;+5VwfrR?=^AwHl z5{}o~F#nz4cZDfv@mf`R7r7V0Xq-r}-I@G>-pzgrZ|&^;e(~&zW$MX|_*ax@^(n8Z zv2az)x4@Mmpesk%uW2^lAbSd#$^DUj`OUbYo7wY!-T_c|S7$GhWMsh}|5`TIa3Hoz z%zJERXTdKUA1puY{|8qX|0(i_!g4-A zUBrt5`x7$H#=05H-1_!#e4sNDzdt{(r5AvP@-xUUw0|Q2vD7mD>Lcv+;a9nSv$h## z^t8M2VjcPZaCrRoI`U&dzImb}?aw0o>MV~p0Bn)6hsWn?wYR!@yM6OkPG_ju#`Xt^ zD%?s;z6|zfI=}svcDvK-x5vZNo3{vgT8;%2Uc1O2=)K*Sw)^Xwd~BQF=(x4T^&KX4 zT`*>;KFfYt;@7X*KZMCVf8XWD!e0eK5o~PF@3yCpwlbnA6Yq@U@m-o3buuDiI5In8D&J$eL&wpQj zIz&6LK;CW7Z@2sJtn-`Fe{G?7vpv10;~P2OQXDo-IAw-ceFC9q+(5RKyfF zvR@S+Wr>=*rq%gW`s#}L?ZI2%<8!Dwf4^8BcL2iM(_Bu0pRey!DOn8O?!~1Sup(2s zY)Z?XeJ55bo`tA1gVz;Fec)REP zIkaKa&D*UU={VoMH^TU-^flLZhkWpnsV{u(*wGTq>HoSa(Db?Uh+{+H&8!5U)3*GvuB;~7WmnA zW_RdYkXIjX-?yK;eRwz=&$Rnxesy5kpENOWAP<>XI1t^v!;PBa|78Ew7QV^lGu>E#&(d${ zbT)g&ZN$wra9rEBkMe(?%+g}J^NYtv+4F7C$~rqPKjh6WClmAM) z;V8M>*~jsho;RjdOW;{%9oOx4LS}6E4h&_v<}bg*ZaZc9vujRgs+~g7yBb7sO{RB~ z=Y+c>YLuG#>Qk_Suy-{u_9yk);taRm&&q=ep zM6r9ybZ?s?#RV&m#Odzm)Hq|RX{kwjcN?o_JZ6s5#g$*@s-4v9T!h8gt`s~cvaJn{Co8a&}4sptEiI)d|w%g4=EGyyVZTTf@8@uANyBI=lxJI(u z{P*@FwvwNE3v5B>=xdAB!h;sLcf$^&ip!1$Nl=1jlJPu3R5%qaY7 zcX)?%!_UM>CAxlB0>F64Tz#H=+J?G;^O|BSQi6F^*8OFrxEdPvc1h!*Vu zB(mp|agqGv2}~gKC0zo`EDHMvG#L!?>U_C%U1(=+P5-!gFv_-zu~T-Y9L{S$^at2Q zRa?dF<=qkt{R6!>SL{0gu`r0!O*49q&+HUtKoY(w{*Vsv&2IZKo%OQ=b%79+k!Euqpb;EJ*jSg$JW%GpT~2$ z{1!KQ%Ae3O-GnTW635?Uy{o#R(`ox=$poT#hP*usY#3L{C6Mt*k8c5D$w>KT|J(L> z*xOM9JqCYbFZ+s4f)ti7QJj5-fb;BA0H7@S1MwZ-43PQ*^2@aNmfP}wpI1A0wlcik zKAOw__#1HdeSrRal+~{6Wo<0WXIcAr7h4v%jOU9zo#y#sma*P$b#%e~BD(sGKB5-; z{VkZy*_VI*8rYKXDfXxF->*eiyThi_TsLo**ZXFF>+K$Q#}_wa_Dp`ECi#A=V)+fw zzJCq7wjbpBAw}Znqv-Z`aCFwqi5@Pu{0jylc8Bw~hvRb=EE>rY-t-)WwM6FMc=2WD zd|q5zxY~bP95$9GdTmC?7n-lvOTgRWX8X>t`_py;=m!uGo&V_JtKDJ#y5ca%&!&eT zpN=OvzW?Q7#=1T~irefChexwCp1%1_j_G3hK9qqio;oKfz<%#iA{| z223A4lOL>Z+ru6PefMh1UxO`OXTmhJb&ou&-~E00K#`$mOp|qZvghUI^W0=^}w&*Ka9f;U2@BZ z5bBFrv&Yn9ERjDiEAcs!jMHjRCs$}4Iht=HmZ6@mkDJYDWn_QIu2rP!mihRvJuRUc zmq`0dG!cM)y!@;L1y|Dm`27!0yYu$Zf_t7rnE`Hz7NPyw!l98)RsD1N?#=k&>Mx7q zyAR>EM|%J5VTr>20(4R2?t?xjTHgo$nYPDO?C0O*)ziZX;4Y_?bpq3*t6vM+s$oNW zHcJPPEE@jhm8|>k&B^~|n00m?8}w(~k|%isvd&xmXV_Xlm+$+<5iMP;JuY6f?c>va zep}L&I4ubRAHoioIHp^e%f;Xp&&LCU)T~;bkE7*7{dD}1e#Bw3wS3sS7Z9`_e1?G$@3kxem;d=QG5Pi5K4BTR zA|z|_zg;WVpNcO(&yBt66C8e}KLKuB$Nof#{>A59bDDpdRQ=D0SL-i)VNi$M^dEuG zdA;Yu!*-sot@IyJA9GsPzRs(8c)aK_E5F4jpxfiW4E+Ln+-+~cULSD6Kwa`xPIJ2j zl4qC1OL{~$r`k3T*XDuREDimi^8W91dW(c_56AP3?k-%&&u!sYpJKSSz}CJYdjsR* zLdxl<^4BzA2a7TN1L#Zgmq7QgpEA@hNQ=-~MJ;M9p8WkIP5;XCEKclZd%Ls3UA#Yk z=2u2gB=i4~_HONs;y}ChU$XK3FrCeGX1Y6B*-U?Ho%q5=c9>xBAe^-4*MC=4Nr25$ z!u`G{vx#mC5JH<$)l*pzkWL>&kmuKYKo)NnY*%+OEe6f|tzu+QI4$n1?&h>olC=Ve z8*^C@+}Kg<{}wqSPI;uToG}53r_F~v9sGPtNy3CLDK2;2jqrTfY)jhL1)N>Sb#Bj;{TC*b-}+M)~*KY(UMyZm`w(v1g^Jl@;40#!rp^H`=Iab+0A z)8#z!oeB+O^U-oG3P0cCl>xsViGTD%o*iFN+mHNcCeu1-){$fsVRbrCxQqAoW*Tnc z5d*vKs5!MQL<0{Xd;K;oho**qE==PHrbunI$sZ)Nl{%#uM1G{^(^3O>%EpxW%g5(? zCwp{bivxpHM67M%~Zn%Xee;_Bj=86L9@G8`niV5ftWfOK@J9FKtR)5ElH0{_NE1zWFQa z0V?waKa#y?7#0`%BlvT2*k|clbhRXN27uUYofrzFGZs!A-nqR&^a*&mqCx#Cx1VH^ zXM@RbG8v9m!)O?7F2L98;dn8hZ-#3#>*8yYQ86O*Ixy2{wONob_Bu??67seh$H}6* z6F((4qhvmxPuG*xEP~@~h#mr3<`?``%6ODk2lDhqR_?jiER-`vRLoO$X_DJIV+^?- zbV>4id5rUPeMgb8o%X}e+W({B|Kvx}ML!C^H1LD=+c^KhVjyCD;P1SAdMZA_u6;3B z?&GwSLW@eXIL)!aVBr>%V5ztm%2-a(L7A}@#jq~O>&MbQ4ECLctbp{m#6`4BEgGv9 z5f5{29f*GCVji`iHzE$X*nfD1%EQtXI!j$d%fmk5KwD%UTa1=TT*dWvS8gv zlWjmjX~Y``{fPAtNG|8vhq-s4*>Y24$+dga$^qhH?lx%&>W}S0e6I}7xh6P+|ulXvVsA%%zA^T7p3ET(|26$AX;_ygJ z1RZdfwknF`yLcx+#%+(4vIpeiaZ)%`3Y7<^qSuboNi-OFBljq}TBR10m#jDLrV9kv zMnOq7g&k(xTtum5vW$Huxm(celjW*RldXBAck`Nm@-&;ldXmF#cSPqxR7m#qAH{(y z0L7(QA4;2ksKzXULwt#geBz5INc}krRq8Dqn0Fm=Qj{%=FkW{t1Aigm3YMUb; zG$ep^hH!OZgl<}CfHnnAC0hu5muJagL-*3oAgi}eU!K`6_%*hDNZ_T_Noqs4-p*vJ z-+EuZ+b)Q2edlgQoT>qk7yd963Xw;YB}e>a=u-ll7$UgmSHMS}3Rz&8f8vT}S-=k+oR`hhfnB5L*Q!rtUB>gn-Dm z*mC$pBhDXax;I{9s>Nd0l564yVe0@)^~}ZMeMd4=XjjFAubg(wp>nts9u9q+7P>uJ zA+nQWr({IQJxyML9ZXXQ)Ul}0*{rU3uLd_kfC|@jW6JcSuPO&AHJM+P$*Yd%6cuH$ zMeEI`1irkHb147TFlh1_j%$gVILq`dJob+PPKu;7w})Lzi3l(ThXYZOEMnkVb2vGX zWx2QAaG`VNQ5@P7ikH`q#=M8h@kI{)r^t!F243PVE*C$VNB$mIa}>Uj4n<=WBxjt4 z`CIxSY0|q|Lv@mN5?q8v4>%47O@Gmp2Lcy8A=COJNRdEX><)nIXVSs*Rz_rMwHJ`l42q5HR7~zY-wa4- zE~S3iXu5A@xJ*oL4M*=$a!fQBN5dw%_-kw>qlg0CP;H`j*epvinsSUzC%)x@LPaR@u)sTy-7b(Tfntws?qU=c#1M%2n9SQ`M zQ@U7Rh0na#^uqE1m^P*K7>UV~|7XgggOG~w`u!!{nX(&19=TMjE?prOaPiPxni+ev zmDz>4ht)r9C?Y$6RTxqwc`dVWMRj_@F!s}|bRe}&qeEos4%oEAt7z(1uCfe5TYJZ} zqZ(Y;n?kyi^FUp^dLj8+9g&4sFYwLfX0r+<->FhfmacY>#pl(w1ZM-$wDuKKJpm%l zKe#o&972wl8JeM4KbTXqT*v!(-PHw-qM0`kN;Ek6HlmG0!;$=v%G9xCl(iJS_&Fcd zh#%Oahi{WDXoz`J+Y>#ka?yF?o6u9C*TUu6+)7rYa{$`B>%Ray8!Gz9fAyw0t!*he=3lmY0mEJ%Vde198v09-Rxfle=pD3`Y> za50}F2&aoB!hKO`z9q933hpAR^z8(~oTyyF8lAlgx*wcE`mR_w_w~9Aj$LTT3OiLw z%O4Z76g3(ZM?Rl>(j;^ShVRkP$<^K*b4p}XXHV{cQ9VnQ1)NtLL93$FzCAQv9i4n| z9`)8wu*4cgb$HWT0T#lesJ4HiUpI0O+?AkVY2+3{+)MoJ0;ukgTnmmui#RLSX;n~& zt_^B;#Sy}i01K3o{)_fYHp2&>*w%T7@!gG=Bxr%$K}KVCF@z^{Bhj@2!=o!9u{X3h zY8AWb8~W$AIXp=@0NPYs*^icTvosW&MWA$eRS!n4zI^?6k8{Rz@z>&JOD`rDIOq z#CO=f)hQi|O%VIR$_pr>tmaMys1)j^_{`U_twJ^RUyDE15H?+sm#B|Du%NuXM382J z9dBB%5#R`3??h^i8U=BlI2=O@=ijMM{q}cSR);vlD$>MxJ?ba3PQm(URv#aT$T0-0 zkzicxrZ$?j7O?F0gtse>3t#N?EW!ydE8LUw(q$ci5Nw-b_10PpOiCJ!=6=SPu7uZ{ z^S0GNK+T9VTAXw%Cl2}V0i+Hi*1vFc%rx>#>1)>diDB3B41WWf^D<+VoV@aq6Cule zT)iowIuZFsZc|&C^2N@`(?EckOO@#$*`dP*13c(kj87b^CbcF=_=tBf%5JqwDU-_=)7Yx*cj*rR@J12FI^|=hdIPRJU9QYF ztwRw|5N0&-E(X^t_1$`ebW{|#gNC8$K1a38o0menTJx(?jJy*+XQq4rO~-p-@|H5@ zkgQ~0^^iT)QHm@IpZS)q?sBr&i@Kr2=*>6N&1k+ci>UjO8mq;5(X>AHH?d}BpAN)T z;Wl5>ZoX4IT*j*u&hxBh$pQ+nB+Hymqf*)uWegDLL~_cLZED}#1>j>1TUm&-=Am)p zQ+ooJ73XW5CmFcK@zUn0MBw7GT6hwS=Tq4WykuH$n7XC6sYn>`YgO$v&`IZ{+xwiA zlmL)U$2>8DB2ofXELl`4gFb%yGbd?B%1&r2N&xTV^!h3O3Jo5lP*@beYmw9m-_ngJ zb}1JnDLlUp=oHJBNMnhp^Wrv@wJ@3SHNvG?O*rEnT#-y&Y&%fyr?M=zZ=l;PD?7U> z*1VRbX%PY20@XPiu zfC^D%!TQyk^jG(JX9GI^{|BUFj9A*Qw4f8rIK2ZD%$BkbQ&#YfB@4%4WevLA9_uhu zQTxnEi4`S`%yrMOZfjt+b1JIdOnz5nSw|U@3J>}EP{F^abQslL^v{N54ShN6v%q?2 z=6s5*HDz@drx`H$oG|w}X-sHegF|oP%DjN_{;U`*HXZQ?t*6v;V+Y+A;qq{)_eXV2 zq)^ZC&hVhu)z+&KR;3JI%sEbO$!x+FJHYv9M_FZ~*={!UW)rTXgj@X?S@w!tOa_!E zkd%28$X%*<@1CX2rhd%7{r3=4I@LygTW5a)ks4QAW#*Rk|A5R`M0#jxg@z4hoY|Z8 zA!9otmNsSZ*S^T1i~DT0++;;jelL)hd7JhDjBQ<_tId8!z=Ot9gyU#n(pUyr_gQP2LvG_upv!VHo#s;7 z+ZKh?9|a6Tc3NmH9deKnp{9Ho>;rv=@4y=2!0)WW4n3M3p_TbW)|9U^T^+!ZdOmcg zB+8BMzrJg@i^cqflq=Jld5Z4f=4jb@J znopONQ*bv*H8WA&Wi?$s$FKnLn_nkNsA#J*S$mtQ*GtSgi%S!}qCY8WT~%a?74{oz z;p|hjGMO3zHBdG&bm~3t%>6tRYgo0bfGSy2e44yU!tOL!YeA7(K3>Oqac`T^hK0&- zILLffTPuQ{us!W6S7Nt-S~_~yMI^+AtsYRcEt)SVo8M<@@ys+|w3P)YAgNQsVn7b^ zIXePYrP&>JuX`l7L?G>%kPU!@phN`8*8zx6811?kHrBqY&p3t0qiyJU9dAe^2W*2D zr!%Nh{D;Z=>-ZVl^zM*tQg}0)bY)7Cwc_Cmb*ZA zdq9LVldO7J`-Jlj0diIRq9VA5UyNj;=XILXlR$`}wB4JOoHrj!@Lf~J)J6nhkn22(kd z2Xfm~_6~)(T?u9AQc_Tk2D4?HuiuJrVW)>v(cZZhcEgTGgE{;1*N!H@_TU*B9K@p{ z1j)HdfKZBxQpcocKR5GfVKmH?oN47 zx+-@-*ny~>Chv?#ltszT(} znJG=ehHP=YEj!C2M|1k5C){ru06A4k`G+Y@;vGN5g$M0U2zG1l1UfnjAgQd#Rff%2 zobwK&>AHH}mn;Y(dl~JbH7KLw3woW&F(*U#VMl9D-(>-3s6l_250{-rX;o8F_ML|h zQ<68JJgw40jD7gby#fI$|A@2i?0BFAcM!Cp1Y^~`c8#scuixT4?~0SVQt>BH`#>$| z=Nb@SCCxV+1+^-&?%2!al_@tgU5G!(RgSuEN`L3J)h;6|Lg$CZ4#`UJw$Rtj_do;x zac|Jf#^{afp7;6HZk3wcEj%t`>)8tF;g5(OTiokY0b09JMdg zA+p1=I^~WTXj0?A)lhFu?KiWH*T>f~lQ$h^^jcV5NCu6-tx3n%KJ3&!Sbwr<1Gm$n z)En~Os!1+vhetX)qqA%ZaH38H)*=kLwY_sGfo{A4zB*ye`!ZPkqCdn>v!af^TV?vk zBL+`7#aG*mP9S}YAW3OvZ0|7mk3H$iUV;>pd*hC4lw04$B5}@swnH(G?33OZ;cTnsxyf|u; zeESdYh;sXB`QZ3

D8`*YEL`7aPFyg9-nIxdjDsA9NfqmY?Dr71PSF$g?AVV#>Rd zZIu`rDa7IdSLC!_zQ5L_R%4e8Qd)D_*4}`;a^e0!AnRfWoZ~UzSV{SG$qA|c z?d-wL_u4qXDNf0pm+)l6Q)>#_iOyGRlLG#71tF!6Zs}<0a=zT>+P-w;rR5!<_q=n` zo#g<|?G?RyDloovDGCYbK;z|mUVP>}{Xx4x8xUoI)E2pd)+vrfI|^()Fao``FEJHXp2_ z!F(Le0873wjRTLoFmyh~Y^#a64}j!;kb_x{&q?*ow4t7wq>ekdn4+ZRWOK`_H^Vws zfS~cSIPffb9a}K&k%Q3}_i55P!^diN!1*#hH*Y9=#yK*Dpllk1ve~{vOI$2C4%C05 zZsObzZqj(07q&{**4do;FVg+ZZ(Ie(Y9NyAE^J*aHTb2B*X*gGO<$+n#SeJOs}HwW zk`OliKux1H8nQ`2JORilfJeeEl<#+svVc~4zF%KUaiAt2Fi3_2o_bupUGnpcc-R2P z>`_GC*S3`ftb22W$hrWQC1ww+^^Q*PN1HnEhWheh#Rm88a*2fxf0$2r8c3!5J}(EF zdA%1!79KXhiDfLLxr97L^SlvFq*v50+f48(aW1Ge9^eVqJW>K{8AQiLesqK z;9YIC8okXw(z3|u>jIgeYs`Jr{q@OBDo5jI6s~6PzD8<(aKuaqM}?WMCYJQ--F6uH zl@L3@k$W;!Y9KJRqQ&4Q1D-PVEI6ZREV0EDi^P=!Aopc@g2+)cS;icls#q?lyb-|! z-gh;@ciamgPq$M7?X)Rz-=U{tTnr8Z5F28Q=a%{bog9esY!Cc`YknyYlo|#Y z_gZ9+HUgoCJmzI1Wd?`EeD>DU(O8{RmY?0*nJx=9B;T@rS|}~TD4J1t2)D>p*)>B& zP4XJ)JRsW_L8;h2{kb8kC#xIMamolWlNJDbpJ?t!8IG=$N#jdw!R$`zY7KL>Po0>@ z1suGo6YM^JGvsHcoZ_CsPbhBfjCnq2pXGe{#s?Mrz~c1#Seoq6J->@+HOv^fN3x01 z9rFWHW+H;+#6eq-1yJOKNjzmMVcf?(I34d}2~)B$hGuC~<)Ai8omqIJY7W>w+lcU0;`2+7M#uS2#d zJXJUzj<%ygJt+TQR_(u<^Jv?$Y-5~n|N2h{Qg!Hx&gcC(=H z*u=Zbej##(VfHnzmBjc3T{p=r13#n$#XKYlgR+6wpj#4LK-NwL_c@IsMR{bOEDb;J zqRkb;zi|CDh*P#ka!)s_?}th`B;xI>*vsxtZeIcE#r-s^(>DoN83<1MA6V{t(%J9t zDNQ}{hOWWZ&>W~vdO@I?yOWoySqo0+pJo-fqHAdF3zj`pT)k;Cn`eB756E71*uZUh zM82j!tzH=%F+z>f`T?J4W`2V0|B?Ghcl(&71^anQlEFV}-W6JUU-YYC_*bVr`n?5guC*Q+B2szL$nR@=tPNEptQYyDO@gq0P$q@ChjhCDEPpXYacgc;&T0lhe=Dd1sA15C`oY4tyeKyK?cxJEZq-Im85S` z93U}9=vMu%WKO${^Tm7KVIM2Obz@|Uq!l=1?2 z!;I$3D)S+K9Ps9p3*n-3PA4M2r2mC(?xRQ(a?kPeYX@0)jc7kPI{Q1aQ!VH?fgA#P z>%{*BSG9FO=9i+#v?gA-V{*Bizxs{rK6+?g9zNFDI`nPI;&huLi~q;cB>ZInTukDM z#d2}3#1(JRbMeboy`DzPbZy81r&}O$_}4{ZwkB7Qf{zr_e2dHX*#Sh1j^zC8dum0T z1^)EVSa1XHZX-oxhA$M)n9ys>NJ=4wcdCw;41U1D_8doeVa16YEHoIE8>R@O4a*^`i5C%)b&9-qCz&PwY ze`!K`F-77Fb#*t5qXddQ8nD&TQ8zu#qu1iqoYzY|J^?s@_VIQ)zpj#CI{ei z?m|rIp>ywVi-R-9ZsmM^TxWjlm9y;bj*D2D-r3I<9$kAvP5Z}$$V#XojvlcgLi}Cm zvHWfcK)bk<2jkI7omm8Y&C}XfGx>?swultV^K0&t&{6G3V^di9Vq8=}THR$}LE3OZ zgp>N(mjV{DIGEaB7UbokR7}wgefP%h z1L>wuvPJIcsFe02E^a-I`TmL@%YwA+^>st= z2mLogp%akeB~bFEw@Y}B@Viaws_Z}!d8x{9<2ITAaYHyu9yHmv0GOCKdChmRWRX`) zO%sxy%S3F_>P#-TLx(LaP_fY&7ya+*>Z5skqC%(9XX*hvkz}D@K#~A;UFas!@?c5G z;!H+#qaC!n zwVzDs+Bl?9%A|9HCHZMFO*!RJak-tikWF$Kl^=Y^+06nZGG0uk%WWC&-=2?o75@UI z+*(qP`i$bqDiGYuGgFT}>o?qg+}UqaSK#e*Sk3a{$&;(&gD8Z4?W$%V>@Rcdf7KtK|jGKTxDBVTjp z^qsUOPyjo1N**vmd)dj%uW^1DTagKgH=NCaPB%cvImqcYDpjm0siN3%Z=U zM|MUJ^P80CXM2UbRK4;R@8!i5yAJw=L-i(cKr@bLZ~60$McED4tKRgSrO4vs#jd|P zHF>bYnJ=q$IWoiv!~VF%UVj6S(y!@Achtd;+Eb~z>{|Fu@}F!-=N@1ImD&~n?`+|0 z@k}V+_@XhO2fnYVv!VY#a!pjvE2o3yef9$zrtt(%Tnne$Qym*$hM!Ksssq#c)+XJu zvKRZ~Kfk5jW5_A1aMtC>P|xZ-Z|Sa19t#IN2klHERvHAn=AsU&h+j;-oCa0YIz51& zR-5f+qZ>^rr{hjmRe@+tK3XUa+qW+VntBpf+h>e~glEG#qVk&35_AtATLfG;%p$-3 zBIzB^swngM6>(8GTl%Agp=^p5av|->bui8$y|!W zY-c>Daw{qKeW?8aic+!B&L-XgjbmLYzJ?#M!#Q)=qbWD6$EAd0%xGY`cd0+WrnX`m z1ElJz;MeAfuSN0B|3Px%bbb#^Vl!t#s;{Tdz8zGvHF>bUhfr-bB*J+eZ05u|zsJYF zjM?K8&6;wG=Ehb4aRcmAi|kNy(pAZhUcvomTIKM#X*Q>%DXjL+YY0$Yl%j9orpN27 z$Pu=eeHk3)=Z&lg9lwXl)#oWCv8Hv7Z}Rlr=UIrB%dMKPtw!XtYE5SVTywsi(BMl) zm~`N)rdk`-xxMUq}1~n(fjy@_6om7~2Wg`)%fB1+7KGHSj zTO?H1Ynkc3?=2{BS918-ie1uQghRi_dum?Rx(HIwh8(~EaK1*V7h&-J&S*S6% zV7oO`{Rll=u<1NRPm12957Q0BNwgrn8d55!<+_nfE|{QMoT`9J)%lQo8Lkp1m!d}Y z2^X$vB)%#x;j`@#+dao$WCB697(yinA802^+F3f=oG74keSkCMnf_!*br=o;BbOV* z<)7HHgwfzKY^Y+6;gEL~dQc1kHSpXAuuhVgt%F>B{;N=_G#^^doR%WDxrV?IlubF9 zQJTW<@$rdGfjaUmKIsUsUs(QEOEkd<>FH5V3qm4tjJD`p?6Njz@mA?3X9(&dwd-?H zcU)ji^xz%8K{#5B{FxZnaRH)z!ZJ5hX{K9v<|FYzay2QD9P<(DFts$;HG~6IjAf6g zFrs;6ol^IeHQ7dCUP?o!!e7%QF{qw{HD&YS;jl&STRy9Od@K%?^8OJQg}K-K6S%9+ z#}cT~2xP)5BC6ZzCSCx>R%N`dG)cSpWSNUV-R-}ijN-T97|{~zqdhz*ci|)!7SEP3 zYr*?B&1Sr=Ww68H?(8X=TRyEaCb_h_Y}kWWTE}^jll*|l)Z-{1;;6@@o1O(}p?jRAEGI z#Wtf4K_}dk`3H#`dPqJ93S~3Uc1I$BcvumHEhior&QYypSc3C4|=GWW_0J$ zB>AEcxLC$jv7=E(8J8B`rz0)$093_WU-~^heow81CjyeuSbSuWReVlaKp#s^SsK{P z&X?Ad;_9qThvHo)mV_@|yV~L`#Ej)H0mNPubs!C^qV&J_r8RiV+TRZO?V-+{t$GD6P0qTbAgmgp^nR5k!6 zz9wI^yg{tu~mLj?%_k5`J1ZB4=wix!l-^Fx}Yy!wUxV$emW-px}gbFPcv zgKt3Z-UyJS5xcm{;tw$ROgSt0jZ=n3TLy>JsvXq>sZ)NK9*(8k@tW3=6m7tI$?m9E z!73+RY4vi7yfg6kxjo3@fG&mrs`)Q-L`DW*Ol4Zb_;UDyHktXAt}^qds5t|IvZSV! zdwyl&n|f2n_aaX@{CWc!_G`c{fQzY@cDQxV+e0YL(H0zaN#f~Wmyr*-#^~Rpzrg*RDy7dcr_QXd(G-PGjaI?oWCucF3#NsI<76| zB-@`RaYdm{;%d_!pBCPi?kqM;1En5H0P-Z^k0H1@R|`?@s^R*|6R4z^IJDQIz;!1? zA2tA&D2OrL=A7 zxiTT)$KZJF^xa%gk*JpPll0Jjq18&S1F=a zzcI8&58m}n5xRiuvNApd>*2KU!K(7ZF8stU0!BSTuaQftQPYJ95qOZgF!(ezMLsC> zzSWFuOw(W)XLU>?)&p3k_O2-JgBQLl%7;x45G-~BYPbzO6>KRF^?#RlE#)8OyZFOY zm(4=q5Lj|IQ{x}0FxYlZZC|Z<*Wdfvnk|=*p?)f9uk|*oEe|~xY9%KR)b{7|O|e!} zaW7N*EnXS&;te$5CG&oh#a_7)S}AGf4=H{tlJFx7bK%726bY26uZhanYoM7UQI?CY zn4>UdXbKV7y;~Cg1zYt;LAfL8$XA@Ycl#`^jJ|C7A%bw>I^`r%ujC~2hQ1^e%=ZnM zQfScVMMF3DAlBX>Q;Up+U*BUpb!uOQ4H@XdkA95z`rJ?LWFX1?PAvm_xTD<+U zb-!$H3+ib+M_u@_{U16UqVNx8we@7Shb(So7u9>8=+T9SqvyCv?Itzh#(2JT>Un-E z%8Jr`UDSLRHb@ikj0)Ly6ut~2`rabgKJ6f^zH<6vmG1uhnO5t!(3M`|?balISPH(5 z--4d^F)SuufZ+Xs=zJPz{oOI<_nAt$*O0|67Z^iWpllOv1w!`XuNkQ2!eNk6 zuf`gvu3o_6Yqa1ET6O|4=)7@TP00+Y;m zFy!UL`u$q85ka5>FO3vF|Y%43{k%4+Qdy~{(TFsmaG zyXGn|#`BE9W0{Ab&yFvI!e33HrF5~u3Mhs4yGib1+T0%%=ryN*h8ZUVq(jcKS05~k z7jf4pOf0#Zy?^hnZO4PCX@0qNmm3atyr?lxQYeaQqO3`xuB%^a*Jxp?f71!2o(~Yk z?axMQB?NRl7%ew00SB9jI;Qv&f^ECtbcmqT-q}FHK0?IE>?=dJJgI~JzI4RuxRmbE zo4S=6oWV;mh!e5nHiJ1isn`i7CqS@wJebNoNV6l?Dnfji?)4dJ0lW8^r#Ysa{D6T! zIDw_vWb6`l-G2i$+l!UPzMWV2Y+M{e_kL&MxZY?B#YrE7GOpIpOChT%_%6>FWi*`m z$B=VF*$2BL-X6GK%WF7g>q!jC%t&RX7BT~cK5Sa)W^*qFP*lab$O51785wN)ImuF+ z1S=)g#p+-%m)^KWM``U+o^!&8W-=khx-64Wa(z5lI7eAECj}w?D1-ZM*V%)RmQ$v$ z3O4Y<9c-SWAOe3p9JtsI>5vwbCvptzn^@d$0Y@Q%ax;&QL-F<+y*AF|(C zt1aNSPL$I$B}QAFkB6g{3*K{4R(C4GxwpdzmHuUp5Ljmgc`GOZkwhdZ#j39>np`a? zC;!%Mp8iL5h*xb~6=e_jV!FL{I9l3xN2TbSqEdMddmk#qk1_V`F7e?%VmiJ9pXQLY z!JWq=hyZ;+g1=^IfUfTcl^NOT;+5ENynHuif3>o}zD}i;+7D|tet&NrVj{7kUyF@$ z@ky&oeJwV3xklU^b7>`r_=UkUm`z&6TJrf0gZ3H234OnE6YA4!B+{Q>Ye^OcohkA} zE&R*utKhHeP3ObA%E;srtmes(vl(^+ZzyUFpm`xcp4=6OJWxZP1X?Q>$KW8*_pG^F ztfqcxbOc|tZDIF_D(Qe`jqwb=ABPli+{da-Am)VPLjNZyH`!D~%u z?}@Soiac zg%Gv8+AnOeGq)e6JO&7^TQcZ^ate89w{{1a%HZ}#SseCX&|FBWsl{P$6l)~`qGu*G zJlBb2J0L~Rq}3O*DN3J~1npXfvpRzBVZ$Bjz5>tIroPAfzVZi(4h}-7d@i#`AiSCw zQb>lf2V6+aEAQ_Qpq5f2_dIH&fN()}dzQWjWi)R*S6%fWF1sW|{1l|1WdI~4Csy*5 zXiICH_~@b!^&CJJu^|Q6kbX?OHMonM0jLJa&+z4tY)$26LqxeqH*L=`lnkJBbdB51 ziyMh*4&E{h=dErg*Fy?z4M&O)L85LxR~x=JQAuG!j_AUSe3PNNd>`t+DlKHw9ClaB zUkVV~;6iHZ$Fj(Z?ZIf}$nr6qFF)h#9mV#alqubb%2iP)58UTD>>+g-tlUfEJHH?2 zScrl&D20`epZwAm-tThxe&@5y!Klx1G&qr1+8@c~rQ4xSFbcBi07Dr9MRP+5B0Hn- zY!waNW`kFASII7|)TCboH}`b~mmMbvEr)ucKZ`VfHp&v>gw*XFCzujzcnV3I^w!l% zDQ-2emYjI(emtIO@`=+89y+l_HOOlvS~&DSEFTWJrQ)vmh!NO?GP_1WJD6zb5@T!P z8RLjH=Nm=i)0J*aS&Nj3fWcFocc(vs$qL}tK1#QA)H7unb#i`yNsjrK`pPa;FL0M` z!&~Q6w}2tHaIO-Vsv=fzsNyUW1gxZS};(e8AyQ)*Dw?({4N8sN0 zEAD?zCuN|yMiRm*3>@Q}_#P}UngDzF;cxPt&0;im#%%Ji5wETe(im4bU(y#ZFNSob znWitmnW@iy0dILCn!c=VX^)z6l3_8A}Tqim(0tAqs4@o+L*u4zU55~tZs zclj61$PAO(w>m*RT0Tb{i*thfap*?75tp7~bXiEXQeKcdP~LTrBJN~n#`{!z!Guo#~fwM3kYyRKl-*8FleNnxVtI^D-`A>>$h!tZ{9 zdKGo5{Z7U?EQULdXw@skoqc|blj1XgxJn*2K;(8D(LoSNN46Kycncqqm{)ykEyotG z7jMJAaQ9)k&s`%V?atIW~RNlcR-DRvAc zCbdrY)FIlgm(iPJ{^%EmlwA^k+>Aa^N9nIqf(pqLVw_kBn#Vl&-JPZ5-My#y()y%$ zf?arr%swCBw!2~YjZkyLF~M`3Ip!O+VmFAgf%qk}Ej#oK?X&8B?lDdh<@oy)8&4;B zMRxlut**PiisO;b3-Cq~n)=8d`dr200*1%GlV22xQQN-_`jDUA8tNLn4Ef`>f}G>k;qXj%G{L_8jlB};4Q7E zYP&K=@ywP7mzOt_BL}-N<)9@ug+#(ttp@m|PWST}4_bqm9}Z9}kQtg?6jiSZPspjl zOZUv%122WhdiGaUd)oDq;;CNXr37sxeB|7z8$BRpn0EO?b?>B_q`Ym;MM(pF)h;kPqM)st;gi zAeb7@2&mOXkTw5y{yM3(lYZ?f$CbQ%3pgXdU9RLfY%x9yb$6xQFtp^NQ4uQYoN)$T zjMA&qGV4&$u0}bw8Bc0)OR7yGxIjv70(X4d1Ijp!$0U4{IJquX>n_vk__IJ&&6aUhmFenG!Q4$< z0Ge*cv*ngm!)eL?*M!r#&b8Stl@rS zyjX5ZWB#N5E72-&yl+udZUMmUa90-pnOu2(FGnMJzo|ZSA=3AG&Wip1DEFgQ){BH$YP!Cu@yIT8-r0idOGa2@9f%XM`snha!#?`-XH6@zhO64A!W!l}h!T<$_VcF^*KbAIeeaWzkNoK2TaTeTlo>crsb;GZI;*Ns+4}&0=_e9g?Cy;gf5mR%h@L)If;I)CY20 zmAl(toUH&Xa1{*Rc#X@D^OrO6M+`W!px%MpTyJutrrFaXb%d6D}&EO++G0%Tv8n?$dO z8|)?Cg1mds z2b>j&@)h}gu}Hf>^qCAQE+Gp(O`a@TK5zH7PX8C=YM-qyg*x0hUc@C^nt;$4cuMOg zn^R7A^s2ct7di6l{ZWsZTkU6|DzBTBPw-K$kDu|4voh+JG*5J_%3KmGEq7JJI!Aox z4TIt)Jz5*!FY2vAU(&7*tADK-mLsgV{4ZkzU9zu)THbfdTQl4yuWc}waf;* zFt)w@weN4LGw&W6FdHX%b-;XH$5~un@K|yK!eDpEhCKDXIlB`Z{@p{VN_(G?7j-nT z%=fN z1nr_0%R&}Q?rFgRC^6pMGtM$?%q^Pf4j51;i{(CDzmr?{CF5)zfzh0yx~B$k>882N zh!zc82{TsY>ohaHOFh|b$rP^aXgoy0u%T6%vr#3@HR+`(i$`}}QHKgkj#mhKBcvpW zKz2%s>Md5RfhP7n&aK(~qNjs;z0ejFLeJyTyQ1X%SN#(J=5?l&S|#>5?H(yihqOa^ z6SDi-rsPfeHMVc6ryLWarGsx}czVwlpkM17f{oy)Rz;c#U^*l@e^0@utMj-C<5z5G z!y2SJJJxAb#|hlHl;5@gfJN|%gQ#E;Er4IE&0LGjnb!HZNZ2{9;(L1y5;72%&_#Yx z;1QDEr~xtM;%|?jWA6NJ;Ak|BM9%1;B#Bv2x+$`ZY&={Am^cY3i`^e4*Pg=_%N?Rd z+e&Jm$8?Ww?=7}eLW^nds0PEHr;$YElG_(I3H$^ipJYXjzpzX6G-`H8)GPe;HI6=R zzGNSGTc`?P9^nMi(2DN~uOg|vPg!-jJCR^%jp9-zZ$k^B4+y{d7SQ)#ecqO5oGMzU zaayR?DGz)jP66M#VM-mwPAJx>yd1@AqciTHcuAjPbU0Glbx|7GQ31Me4=P#5a85?y z>g=%=EmxKL^(W#m!`HqHC4Y*p;8DAz6vqsqu<=ENyg%59^OlvTs< zi@4)i;B^mm83OE3W&MPVgd1y!mO&Oa{Q+Bpr_u70PJB?R%<**OgYuhK2C6{RXHKf^ zK!D(keliJwP)i7vW=me4xAvgvLHP5<7wuAT;v6qGWN&Ki z(9rI9%D#4oRmEN}(4ai^u4r7%U*@Q$Z>-V!qHy4w)LQgTg%yqQljT3{d@lZz2Td|* zTV#SY7Hve87Mx1tq_eC1I<|U22ld&wjUp^l16E89Sl?qxk~{vC@4DEh#%g&?hfW7_sv3OLxjTM$=NN503#-C>2G9rH73F&$BQ6eolu2%rEgUeM+Rk?nZZ)k{a84f0 z>YTKF03e^1-dcVb%bB#x-s*nrcfGYeO7H~$$U{N%$E0F;X!m<}9Z05bYaD!~b@%{v zb5KrRX!2_U*o2L$A-hc7G~A1n`uv#b&Y5Wjb^+WL(oE@-^<1(?(*tyWzo5N{i_`2T z=BDz}G-lij5jdejtUH%3cifUPR_OjUvmt9$`O_2c9v%!Q4l@)+C?ef=A;5jk&7jmS7%Pn#@$zKC*Zg|1iK+a zaCMTH4Qo%L``iNKPYXDSZ;&q=UD+Q4KOJ(*>9GN`mD~Dq+JqeNpwl!7`#D>u?sE7h zTq#HL@|r_Y1x6^g;u1+NvbS-W`ILufoiH2L2iaU@pi6n~dyyB&pOg@v?}^`pHsml! zal`KY2bv9XXmFSfm+$6SY-BaVDw@Ghnqe3C0Ibb3veEe#e%PpOoSnUfz@s!;Wq3z> zh6HLV+NX_y7gl)pws6;U!~Zi!75s71_Yv(s96kAk!`O3PbpV_VX}7XzR)~S#a&@ymI(%k$gYU-7!ijtDK|eEs$pIF+6`C3!s@(-Tc-8{T9SS06}V zkB!;XCnE&9`m^bBXUc7@D}^4Jv??C*jDC(xq)f;rghR|>xnx#H;hnQ7>ug>nK(A^x z_1jn&Fd@ZqMx-{6bw_b7q683CQ6IE^O}l|jL{Kt_Ch&oCA)szLWqUaFPE{3QHapqL z-W+pf(|86_H$o@S0DIUd;7K|bpCeV6Ub>EbeP_i}wh#b8x;at}58iN+s z*}Ub;Qlr@HhFPE7RLvcw{7$)RpDCgxz6HO&d6VVg$!BJ`%fOe&>t64L&nr?3n6%#4 z_MmPd!yUC*k%4};G-YgMcB8KxyWY>(J(kL!40}(*wflVFodWnlQTLih%h*K_UKfYF zLe`#h26l*f?G=92W&yTIf06eVaM7Ey$%r(vt!AB^k63~l{CR5>!{>aoeB%OSF`AS1 zT;s9?##1K9KA_evisR2p^PTnfI;E(VM^fYQwM^HDvS zbi3-jG2W?dQ>j5-^ReqNv@a=hHcyEFq~40C57dwHX&ka{c}IRS>Rb55y^F{V@z zo`SD>Qd<@qtD83U%)Q7&e%N6j(D}R-!`ltsoxAbz_QQB*O7+&~ZI?Iw*adNFoh%@5 z$W8KNzk4zUr4Ai02F`*)IaA#d5L@|9NS@abVVhj_onp7Z{$XhKQW`v;b}8Kw+hsuq z>O#_NC^&U7T;|Q);UrHd3=g$1qI40pT#>lBU~-=YMX~>7jz(O}a6em&{P{3LNWXnS zi8($@QxjObE$I6&Io4-iOls|$_$Z;OUjLzcvFS2)UeE0mpP;R#ezhewGj6V{3Sg)H z=x_#GxHUdM9*(|VOyxYlFWQ=qym{wnkf+~Kt$&ybo&5M>^`auU==Bqz3)o`X`h2uc zmLMys!<^~R1u|+4LdlRRab}ic&jLms=^&I2Nm&3baAoJ7_Sh`Iz$Y?wDM9agt9woJ zYA#~0u{G22Be^pHQs&oxT;6q=r{5?AGdj!hJof_S2AdoJUIY`YR6JJ;?FOF3MXyxr zw?FDPtzoVaPbQckeU@@pBb`87;zB}0l|Hx5QTv{X$0r^(LNziKsEQRsAIpL=NQjRs z91Iu}OAQCuOKa*V_iHEkyhFoK+s)87_XBD|7LfeX9*Y#gh{g2Wi?7+pc36sdvJzm0 zg81rkvR%eogVc^4W3RweIP;E-1gNFlKA_ZQ1-T5SIT*m_wO7(t8ni$*n*|?t+@|E4I`T?jaMKJ zv1X{8_G;h27eG+nszbT?(p8}pJ9iMYT;^gnrJX!BSn(1m-;kOcn2=Ai3f?Sj%}u#R z`6#H+}j-SU#ovh%@D)vX7MOsvdtQU{m$wq-gi^eRO^>b)vR%KGt2LPX^BF$cf^w z({g=CE7bru8O)b)o)_fLm$V!>;4+nA(tvZDJa_JjsCG7q-^1|G<5cni- zyI)gwtiv9@iMsR-d!Q1L7+aNoA_Mb-BUlVA&9~C*z+;O^){6P=bkgaTaD`<-Gvgym zWRjk^mLHs8nORKo<)}_A^Je;KEqD<2QDh(V5R!H+OD z_DG_nPp8W*J_fbu2b8hs?^y5NZ?XN8%|2K1QQ#JQE3(Aiwr>zZ)K@$CyI?XLj;#)>lY+~46t;)l`3iYtG$!4nidpVFM;aA&T@<}nT zM6~3&g1Bdtn+AIeq4)@_K7;Im+Z);ICVdZN|Bl@WsX=x9<4^eiGG^~J#G&7s(5*fo zf^1fWTd9IVBZ$wqn{IP2@uYL!6$0v@*A$tkY1)1%)KA0(EN7-Np^oCP&S>}>C`s|# zi+JGj)PO!U&$nWmu49#>bxrRB`L!iEY3BjxK3u4c84W?PV!%k(hTurj6mn*iAaQfd zgXN+R`a|-ksH^VNUzGS;_DF97-{+K*ps)LVi&rLtUu9!vxyrH|@*)ZK4RP4}W? z0|9IBtPw(W^5!bRTQ-k$1x`-N)Yta>nRfH0*QGC|+NXFJ?rnTG;Pn&(b&hi+4tABl zmIchFzvD50u4B9ErsJ7v0+ z3Hh!lKS@PXTpKSz@3euSL;f9?5UUlkvy|19a$6}?vK{5C$&$V`BKaj&>QHCj)4l!q zX7bm(Bo_c^so)%vWo0S&-YtXCrjRh&J^1u%C5pdjFtKmG6z?W)CR%jy1BumLl{T>j&;8Ol)KHaAaj`yy)wwR9W`#|8~8BKx5PDTNCoD-NH{lWWH1}k^(|6}7O zq415f{qfTKDK5R0@iNYn=RLcNZb0d}$R)pm-}zt02B_rd+MN+>w;sBXIxjtP345It zma?yr9Rp1S3OBrvix5XWGLbC{5f<_^8}A3^mE$lI`C>(Kp<-fxYG+D0V?$T*UM-Oh5)s3f; z;-6+k#w1bTQRw3c+2kDMZmIcu{q@y(gsmf3T(nf`iE6 zgig9Vpe%e&nCAm)({v!`xxi}}*6G|7<<3icf;K#L-%wrfYLG+S`|IPm!>!V;i`^>C z;fy=2C7Oa&TB%4CAtI(ay)iubOxZy>ahRLYIus=py_=2$r*Ol$_wbT_EZ!-c6siJj zdYU&*PQSrEY&fq+Q|WdT+7K|s>LZ2 zy=Auqd2w`h!dYF!KCSOXyeO#EkA^+-V#*wx*AAWXm?%Sn(lcilw%Xq(wx4XYDOn2p z@*luWM~8kX4+h@{Wg>UE;mm1Pe=qk)R|_d59k9%#T0q1`UFLh zxV1i$m9T5nj-r;Qr9WHJDr(vP!=>0@7S;Js%_jZzibk?%Bxn4zKPL#~GlA`@0$oCm|6nMrW=lGgAIZ6(aPhQgz ze&8pNu60RZQA?rjxM`L8ij$*x^*fz3Vv}yihxS!%j20?kl$Uu9;afybk^Bjp7)H*+}@kb7oxOMS0}byF}=lk2VE%9nrKcWBWz%AB(0grx`wwpjm*$!LNfc z!^F99Nnc$xOkXXH`Tic&vUhruJWvB-v8>ADx7wPmrnY-eBXUBu>{5gdY)51k z4$m8mJZ7=m8l%4L)3rMnm8;LVG!HN{c#VEZ(Xj1HPbLuUh`51k=O(w!R#*1^C(c12 zc!!Q5`F|ZLtRc}!m(N|}Tv{_{{?J|YYW|RAseKDwTGF=N{(FeCZtP`EiL`NVb5LTC zU>Cx>d!@?!kY#+VsH8e2#+rZG3nShbw3-+VmLCNrn99s;{sFt((C@%%m*TE)BTb6s*+owR{Yo zx?3bQ=!1kqoJ9dZt8|+-ivqYh8%1vDW+%Yz zU|W~N{^JYPP8zvPu=<1aD&o~pcXYz!2enycRpK|5O0ip2(oD`B{Y z_jztq;AAVOL2e|tF5=8sy+KctK4?_`2-dc`US%1ZRne;N41MDBfD1s1V(sf39I>WN z1Cckd?e-an398FodT}M;v&y0QV%KskC)rgTQP(DWh*~q6BxRJSJA!kH%5!I;9#gzd ziI$%7g@t>JMaCDVIRCKP0i1&r?GkajW9XCXgSu2Y@!7z6h{sj0aiAf zNV3*GyhCQseX4Rf*!7@fp*fiMr94z`M{N{7vlP|F#G7zZ#T zwxE%6COT|!#S(EybCCk@#Ep+DM-=~m}{IGTCw#?~`^KUB(%%>3v1 zm6{Qpm5k=H_#;aS%e$dC=bEDUWd~c+WQnwe6hdyG0s=Lqkhe|`l5p@D*pr z|73KbC&cmI1oDSs5^^t*r3L7md2(1Lj`O)Nb!c^tPsWOb*|-8@AzvT4OKtt3ZsL<)JYEz;OH4fc1p< zr)@Natj_br#AaBS${kNk!=NnZv63YiG@Fw2cAe<(AuLE6U*HHJ7Oc6q(!>c28bhCsCQQK<25UC}bH}|1 zeXg^$AlCY&32b2JyZUT$%e!Ayn3-W-+V?aZL;jk|x84YUD0h7dXaiqE1t-h~(+~3$ z3~eA!(7t?!r!>|TI%lXVpk|3My!TPT{)SZb?@lpjZtfC_DpXD0m@@q^3BBXc1EYo8 zxHja`f?u-A=$Okt?8jSsDHm+87946Y!SEIzF`-_>$+UtPTj_2oGhwVbUysKuKOXvs zeYvc6uU08w=-`0UiiKt{?+kwB7Oie>P!^El1zay=yi}h)Z=WR~@*}J=JDk%z#9|{u zmws+iXDK)fbMyH}y#_;ED}7PDFhLdCdR+r&WZU#U2};!_JlpD9cdDdmLk3+wn4;ZU z^N}kvyrr&6;(qW=Tb~u~KCh28ykJZSN5{u?xj%aOhQCHJ3_i2;nIe5p*kQkpZS{i2 zeR4PS3mYFf%%#z6HW;s_>%nXu{m$=J)6Fn8QIwd?^ml%@p06k4$!If~uF>y)O$G}W z!+}SM22gg<6sGV!{gvi-xe}u|o-B6+&=o>owZr@(uctOj!XasXbt14CI%V{`VHGAT zww>Tg)$wBO_qjTh)zrkRy?08cF5OdouA`nrjHk7eCxzWgu8tys0p!HWR!+;(f)Lzr zQ`&#kSL8e`a1T4>odDepMY}P~patZ%iBat+{!)2rpW`aEo77n441poCbA;L}i+8Ie z4mE){&Ya|-0bJ3JyOIGD1>laSGWTgMv=6q5pH_U*Xv5zq9l^uMZTdto?;PnFoMn4!n&s>aOZ5OhRVMSI{$@RMM-hcv?BLfzrV{q}s<% zF=bgar$~Mpk!v3*nhdr5*$`MQA#Sa4{u_lptin}vp?X#aqPI7}JTBXodK;)K-+!nr(QVU$f z1f0UDI5?zCqGjq5M}h#u)6!s!*Myywex>9nw-v`I-MGN8n^r(F04Z0T?6{2makb5K zL+B!K!nF3v3iNJ{ETVgdS7{UH1tJd|kfohO_0CU=6rMy&8*fZ@6upnJ8LguEXtg#l zO#Fx?jcPwiZ`RpXf>XO$w@RA4CZD$8I0Eb_qvFq z#bgz2W~0UEx9MS+jwhqlWIA3!2qV;fXX5-c6WdB{9(Zk=OBSf#` z{DwBHTa+k~373XL4VjpbPl&DbbP_~-Qnb%?u|Iw>)u%BzM5^3a`+~xcCVYyxE=^^c zb7dTQIhoN?^rdjYC?L>h;sw4r1W6$dd0J7LAsV5JEQRM|S@fzl;{{h@fH^BF1vREeOLk`i>|BO3M zgQ~}qI)wGHEI!h1dbY`Qz_JzW1oga+b9m4;9W?U@D6{T&ouX*DBBxGx_&Fs%<5EjA zO2y_^S~&sH?jm;@N$yGbOVS-BKRCEw;c~?qz-6_@K80;yLpO7^{RrvTO{3-Bm<;_{ zeDtm=un?G%Tb@5>*CgVm;<+ZKD-sd2nk(sasNik$Hb)x_Ml^64 z&7exf&AaOE1E*u3v>lm0rehgSO!CES(0w=MM^KjfkjeX;->=meZj=yICz@0H2|?dX zzOCNiL#Fnb1}~%Kns-cae4!)M{2dRiV?6eZmt|2vFSqG@RE}y1zzm- z)kVgbb39;;IYXl;8O-OK(Rek9sb(~Agnu&p{hve^{A3cZHyblp%~rGdZ=e^n&KW-Z zJ$%%IPp7lZbTy6QLGOLH%|AV8GFZoJGg!}u=8{J|!-v0zN56-o7TE-(24|DyNw!B+ z?jtvleVWTpExizN_FHY-n@GYli80e5iiCiU7qjWo#3kp9CLwDHOoG&}HO18E%Zb@^ z`Buo|u#FsyYg1hx!&jOAqoXXx?9n?#-5qV?))w^(Tq&1sS z;J5827OhL*Z<5sRvl!pijN-1Tx4fjL{27-h+IcoxZsN6aLrvRW(+%_!!IOxYtU8OF zGoXM{%4G&0p9-`)pdE_7Yo1Y-BbR;S+5CGzOLNXf@6-CBV=4yjec~G&-!_v(#gaQx zspKE~K>?2GHU(B!UoH+D78LKxVpp(W6wWSGBSu^IH^iTGscsDmIpN~3;oiRHKHoh6 z$$Pevtec?J{ZKQT%@!x8E}&SJ3*|Ae8g5bSBydkbZ!w_A?yfe86xUm4)Fx!WcwWcI z9fi8|&w^G~p@Dn($%wva_k{GV5D{3|&j;R}f%>23J=ajR?u)kPnsa`~V$a!0?s7b= z&AouS(!jp_8#}*fr9X^yz8oU!u}0T9_=!Tk5kAuIV5Gm|LUrIt@_fkl>%a2iGv^>? zNYFscso~PS$x!OW`H*sOnd`VLkD!Ckhs%_XP|!Y)%d(WSQX^+#E_YsE=(=J~0tNg@ zqQsb7mSgMReCUGfwL&t2C~*bzA?L10>9Q{cX?K`7hmc!NfU;6D0;4l@E@fX;P-53{ z7MJONF5MOh8x&=X1YilK?MZivqmskQR%vyhT-C}4Gn8!}Desa2;{i+|bIN|XDt^7@ zYY8e#5JCBr51>DIT?@-`mN18L3;O<^q~-H5hk-;5<}*27RHug@_9hQk`($>-hY2&z z0h#mE>J(2hoFXb*8*_5RqLF)AP;k3AuEV(C@YgD3of}w>4+OG#2Rca=pQP0Dk7 zoO`$0?m*H-Z7XRFn$Ey4q`_h3?R&2IzU|XuxZup{EX3mg z7a80cMi#SWoF5-kv)27i7c)6jYW5^xZ$%JX`7U_RcIOr^O8sV+R?mC0Cdmj;{7+*= z_X{eeqJJ2`5y=bh6p9*jw#-Sn?j@#$O7f>w>MuTXXLs9-%{(5?$BRh-i{kZUyfDLf zF)ra#>DGc09#E)vv_I-$toEIuq29Bllg2g z9IitzESW^})oL6?^Yu7@ZRYctiB_}mVzvU-)j5 z_Xo2{G8inz^LaE+`r*xbGo1{_$zU+K=yuM2F#O#gM7=+lPe!xV#tg=j*j#i=XFuq_ z!Xg@t=Cf!%j}7W`>~WpuTbcIjKm|BBaE3X2bjqa?ALpb@+<10V7JD?P$~li5H1PrT zKE_cli`lYD{&R9ppzz4LE=r8XGPV^yqo6+D8P4hD24>nyTz_kWb} z{ta-6sVFndp(;oYG~RaR7J?|q;;t-ma`y(s2zbKiD_%b{)j4@oF&|C-YT@i+-Pr z%z7G4M~lU5F$-~%$uJqshSTw^GoYSuv(Y+Q&7;X6S|jc=&blqxtXZDdWxB5bAYJde zy|e+8k?>g~Z(dp7Oe4w$NK#B}J52NUI}@Yz%{1cuJe_CW);xYg(PX(ltmqiQcem?! z{no|i^rX8uPr&-0N)rmJW+!g@trLVwKx&m=W?4dyVo<>CG+MZtU&?rG>QD{DkyFem zbq}{heOrXE#gA@HL}P}N6~Tm zp%5VQba8|5pY|q=w|QY%1ZvNo7#%ysloo}*C^{LePN(x_oD?kYC9CCplWu2SXeHYu zFGY6!k99FRh^_rSK_LeiQZ|Jw-M+~g+a{ULr)IO5n#CIY;2-u}Ok^;o{=wNaA^2nr zXVbVbdvs~m7&zvv=m_tP%^Ob=@#X>+Xh9Cy<2p09bSS2{Xin$eD9ddDs-Ppal$;gv z_vG|KUHUM5Dcn?7C=}S@3av9bp5aa zf8WLL=9)ggt7Mn5>ls*CYuxZcE&?3;PO(w_FLOjUCe0om6aWODGUwxyFLCMngM!IB ze5RCvzrM3W5Td+P;EmZoqiPBYyz)ar*Say~jMg${&rlh^Lmu;;)gFBbE|!@3iq}(0 z^F#;9AOat{47EsUY>|EFpN}j5vEKy{UQSc|iW~DRMN9+I?z6Ny{jzNj_OJHI`ysZ}le_Bc3K%qe$kQ^bM6Tx-Y_&Vj4ltJFOQ#z;3NdvuJfAkZb zkAe1RKZ`Qy7QAs{Kj?EX8;I+~;~U8jcMDto5p?NufEL)MJW_hRqgK{cGH)00VS-XF z11~USd*ERs#+XeqUJqB}!8l36PYBpW&;(h(%x(XQrxaJ-&=4O&CHtR_z0pAI?p%Bc~d}z!HU$Aa@ zctPh&A?KWKdGch$g}zIloK*&j^|x6gC}38~KTK&mYoyuCDSm!4+jxDXkIHrt=ML+v zCbhsaAd{nuD8Gw$Y3E3y@ouW?=*&cbc?MFGfVrlrWJ^e6FHd5KG6X~}9Pd;Q1ulVOQbpQW^{mss< zxsD}>-I7F#A~|fpFyMg!12$?JAVspA?&`|I$*eN^?i<{Z=Va{I@$d{{65ra7^y-%) z7Z?AI>9E3I@!UlJLsjJ0|NkSr`iFo2|Fr-9FZF9>3Hi_5L3{uE|NXz&|N7Uz{rapG z{q5iKzx}5uW@G=izy15a{9vJdVgHN$?O*J_|3!m8{78TQ=O2Imzx~U9{mah&_~S5U zfA>-Sp`-tg|46$36Ij=8^)LS|zyJE9=Jk)u`v0B(?Jsjn{{!@2@^2k8ieLZQ*(Ki% z{60*-yMg}D-@gDh6XIjQ{{H8mJ~MQ<-M0TW^r?UFuM0r;f3O7qUw?Oi{FU!S_dmw} z@6N5r|C;~(zvSQkLbyQT@8A5}zxGW0es27QXGrl!^z8Rf{-py`@$VMn@1U=-!vFNR z{(pWgTBG>e|LUpyKYvI3W!A3!kAD>F&5YlC=QH2pVE9jvp%hFD%HOZZ{Jog(Z_D3i zIB+TO8?_Sv+GSVxdPc{twGV$}s46`Ow zzPs1fyfVyofZMV>ck{4v;^f}E<2uQMRQ2Lxfe$-$FaUyyf**Cou*56FpAOb5mPYN!5yT&O3Dv@0Bc zK?ELb#`E%iK^)=WLs$6xiW|AE9%}!9Ffgn(#vgulmw8jl$}JUN5c6PD@PqgT$<1|E z(E04H#1aj!Qut~}7a_t^JCt9Lw=ZjHo&5#zZ4aOJY56scP8R5oA07UJC?Li`%t z9)II=cI+`@Nny>r&xUy!4Bjol>>G;U6Y&X2-MXLdv%Vm7mB@DN{Z~fM?+`&EP` zL!CMO0lB>mH30we=KBF*P4P7mHxB)BhYe^Nh?`N~CeJzH% zN+Cja?pI$by%=sh{j25uzkY}#{4S&8M{s7YRwya$l@%`)6$T>mX|7=wJ5frqp zS&Gy5D)2*j$l&3h10#O~ae-YDU-msMZ>0c>1+VYs0)QWogxL45ODKKsZo5ODGM2t$ zblkpIW}*0dwa;Sy2IY3&B((nQ==lkBwDv;8{EI&QB*kjMMv;Q@ni%YdG8GVvqAqyOf4aghxj=c0JzV>x6ku$%oV&r zckS=Cz;2nocapy`v9HMCT=j`Ts0Uh%@V+rjxi}s9`*&T6<8M1``oT-(28RmjHEGW3LvtA>n!h zCb8a8k?-+I6)!jYC7Aa|Oh6U~n0%f;r)*I|jYr@fp}q{!?W!-aL|oeSR>30Wy9 z-|LW|fE@5ae*Si%bB=O81pLOh!`4;)ZPU_S<{LT{>wRN*`E}3uUK^yXyVkd%@;4^K z7n5%M{#{zN*qMF_2K@nJJK`RZU%a({#9XwDO?E!_1tk(XY>)4AmC^}{ZR!48KX;{G zx7`7%Pt4YBJC%z+&#?=~NLGN;fDw?rPUN?pc|o_`^!-bS{tpWId?!y!|wfp^sy%Df4)+75K!|VXu(eiJ*j@ObfjF*_- z7}K>eUVQIC-e_0D6TkfcymJ$ptHbB-Vnj)O>y~`(Q$8dwdBd>3_?T1mEB1Y^AHIu@ zEbynF^Ul`h;kJrzpA5UvN_2txoC|)2=y=cjeiL!<^9`@=xBblV2nMfmwUT~Y3L8#I-Sf8 z-?qA5-yq1y__=;mUp2qs(YGD0)=Wye>wdrE)aZfZffe7s%j_=W1pBrn)YVy*YJJbC zJ_@PSDp=o`WNo@o)#rZK4tVw94EM7wTNH5)seYdcwt^F%bqxL!17~d$*#3QA7`}Lq z!t~n@U{@ux6!Cj)7z-{Zlfma;x_3lgjQm_19S3n)n|~o>y=7QiP1G)2qZBC6Hn_H> zxD_aFr4%Uc?(U>Wu%N}g#hoGrin~kE0KtP>a0>x~Tj1pR-t+!B-=AEQwPwlQx#yal z*)!|DxPQE104AMWZLBULXJ_xW7t_y7UnQhyF8r@WH!XH1Rum>lZin zv?CVr)^AM8U@%%_XK{8jjR4WV4$K)|L`a{}UEJPzvH1bHdK$Bib)cj9$3XE1KxGDQ zIxakQlP*^O$iv@N@vxh2tiyNv=y6Bu48Rwjx-om;{`C-$Pi z?!34IBov{xT9ogEdk6kVyv}}^>YDkrvCkuu>Dv<$uC+_w*NM$efybBWajdMEXEaC- z8Q+kn>g%f*=M{^&k{(UMB7;V{WzyI&j<7~(kB3xFjfghy_p5CERXytzsTOI^Y-34dl93C})FKf?D z?3gv}XcqzuRv>}Hy7!T8if~gMLh}7vkzpOuINO8EcE0sP;`MRE&BAMc-xyr=4=k55&D<^p z(MK&dR>$t~_tWZz<{Xi!fYvEOyZ#}W^%on8c5au9w?_0B4g>FdMQXk{`Ym1>eAudw z|BdNKUj%L|xS`1r;$URH<2)GlN9*5RH2R}+9`22eoA8{;{Uo0 zjm@&FResxW@3s4Ygg;z>yZYc&F}cgm!Kb8_$@ggg`#6s4#aOnjyDmgkr*tu1CZCrd zPR|`v>mtRyxZKp8^l<|m^iJZTrc3;Xe+naFxCPYFCBB*9&pMUBd4q25sCu}le2}@f zYR%@*JCUcEd^livj$zZG#Y*?r_xuz4=>E&=J977K0U^unvCOs{Qx62UubjW%%>7G% zhk3KSAVX^M`1>`cRFmzRp=W^>KicuJXY29J^Cb$bsTcgMB=4Usx&{8bD;F1rKRmN% zG`F%2R{Chf&Jg`I4WQtu-9&xons{bCm(O~=Kk@5zA-`;y--O6DIf*c?8WQF#squfJ#!h_At-5`apAj2 z7l*0geAzk%x?y->tS;(>u>9EH3)Y@bZAE}`(o_sh*UO*DZ*!b~<+$qgQ0SY2gGD{J z+O8E_?+t3^^y3{D0>VUX@lHfx`=TuY-+tzFzgXNU>+|fdy)0Jk+~2rMi#XvaLkBVq zcoz}7WM(`BIPf~|0Ir_>((V^Hm-rW$)EWNf?xlR>TjD~|SpD=st%^D8U}D%8AM1O) zW$KcqS#p2dy+T%GV5-&&_9i?m0$3`z4Vg@#^3 z|Ltn@OLMyOn2{xFQ*oanMu#>gW_!}5(o~ptJ~uDoLpLw}fT2%R5C83_B99GW7v!8S zU73!85|mEiqltTyt#aYxX3zcIdY-XvQRs|g&1!nXaQh<$DBcX$dlr7L`ZtfJo_ugJAJlwi9q zb&_P$gpEuA!yhZ_LAKHEFKBh3<N<9=L`362m8ffz`-jZdxV#ga0-20^!GY=!5+=A&U7J?&07e7G}yF# z8VT1ZvgbCEo+LUv`?6)L^yg_M_9Jwxue^X`TTvYA*AoFg+LM$iqV{|Ej>bT-vRs2)Qw>H~f7W`dDGM;)Xu>Ab194Z)%tHoq( zjR**A@|Al?f5*mc9h%|tOkcIgctHfvOlZ>~b`Vnih=y#07~8Pa?_c3#XQ5L1>ewYR z({|}A2kORJWB8zzDtH02^|fOy%x+1yVvt=>4`+ju{aI{`{LwS;+}K?C`o{FdF{;HZ zpp1^~F?H34Lc|76b+c8HQs>#8UTe&25T$9yXxs^>z0jbs7p#SU41v^4btH{P+2JV! zD)IKCk|Xj5*aa`5_#dpvbivv_?U_m^O@`{!D}|YCVYH!q;cI_v&qJM|dPxIKq}}B2 ze-D|Y!#q<{Jmg~Bfo&)4xaTQ#6*(r&)$?OnQDWVnH*;^#Q7VceZ>b5c=?iap4k{`X zLP9o@Wd$2Y-(93X|A3tCo(T@LJul2TJxk63$)rj>s?3{ca8OIKtpO;C=g!>Z&Lw*m z4ziety8NjHGmx!2A={666}3e5f+4Fb)e}_*ZT08 z<$t7XPwmXF&qt$zaOm|3W@Jlo{;)&8eGkFbI2y(8sEA?eECh>c<){QYX3q%m<*k2b ze1Pxqe>v%3D;6ooDVR2DX7%^wxu*tg>`OdI3GG`GL3Gh8W2q{SwHtd!Z52(Z=LrjZ z_Gj1Xb@yH@hM%bGb39Ti-u|6kV{9|*|D~@`FT-ttnlX}=@0S?`c)_Z{C{Q_H&PS)2 zc~>Owh41G-FVRK*Og{uQr?`zPQ6X8sn zJCfc1Pg6n>`Feeh-cGl&{SOcQZ-0kjdX{^2F7HNA`o8k}LTT1t4P_;tp`(7Ujt%Vi z_zk?k;C^v-+MaF}Op35g(6qfHCdLqyttj6&YdnxnG1fH_GoS zdLv1|l%4b}jLki+0J-w;p|xl@H=mwCJ!8f?Xx?adF*NtFpgP z{JTXrlr!Vlcb0pZ6~3GjmJ^J#)j_1(VY_^EPW5Ef=4E4d=rm2>qpWS`poX0&ek(<$ z4G}DB=v>~zz;iL)Cvh~(k3jH#Yg_>epLPrr<6)o;%+*V5+Wj**|Emkv1Y;xg= zPz-rwpSQ62RMu*Nc+zMJ4E^Ek9wXN!w? zrq!)nlpbXHHDJhtxZZtpF0T{NR%$|VtFLNrT2A3~HDd3D_bofs{RNOIxwzPthJ1Ym zjN?gx)BpJ$Z=fw9SIAjwl4)GAH|rxfW|b7Aw?jiUOUiRVdJ%q|llg>=eW__f3D`+X zAy*fmdl-BI3lZBV)vXiHrK)Uaqk%j$Pt7cCM6A%i<~u;UNN@SlgJE-K^ryH)zx}zb zYJTnf|xzoC2YrO9jm0c6d*ixhBB?Frc=MMVf zBZ4$SdVE;PL=x5Ox8{iT(G4jR@03;>KlaIQTAAWBe%nMNr&x>B=h;kDNWOG;f^sx; z*J&Ak#qvdCFvuep(qK$X4z8rYa~I8#o)!fzHR2TVuAvC7M))gs8};Y^{&6TGfuEyS z>kJUVCEJ3Y%cAG3pId)EMx7-u1x`TiAL94Vc;p)J0{p&nKg4=Fg>i`HSPA2f`FUNQ zWzRQXyCmxeGT-VZ>;&jRJ`q?`G%txf>QNr#TGsdT+EYOru6Vm{t%>+9nb0LMOv*<@SA!=(zRDac?m-M1 z>d|8$FYa77PzBFWx@s1sy!G`QC!)@U)tyRJ5yXR*I!9Y4mNI=n#_*IJPAgsJsEmZ@ zi<3QmihJ=|UjitU_K1w-xSY(I@`?p{vD}73j}_^0eYXC1+@p)wQSb7R?&a=G3II0( z-RAR3y;CpxWU~F!=&KX4#$=OThoHyY&{i@m*wNPq)FT`t7(thewMUCfG@NBTC2rPY zxjT2HBkEki+?}KU%yf{qu(*Ys_FjHjBFzL#jy7 zcYP4b1=7Ko`07dxE!A|V%(SN&B<5ALy8kY|LYKR|5)seAI(-@JO;ax63vo@yk!06@ z?)b%Uv1o4tR!T6(0c?(d33sIVr!ZG4Z~<2b5YEa9**gsJ^SHmSJBVu+6}YQW`lD~B zL&%HBJ0yS7j5<< zEKNWUuf)dDYNh%zYpQyK11yr47l8wev+ve2Q^)odaeWy%)6q$ydPQz|L$HS8&C6a= z()Hi?rel#?UcQlKHSZ%FJo#F)<<(W&pbR#_-=q)u#`si?pRk2-7+S!%s@X4qnT;1Y%(lnt(;KDRGnCy?1xW#{LTK> zd&Q&a3dvq{o`_yAxR=vQ6cXolek#Qmez()A$xJ%cJV2t zJRj8(4mlHo5CaDrM)Olu{yuMQp6qezX`lb4-PQZE2S0+S%_fp={bK3EYms@yCf9ru z_2e+&H;?075(IOl6Ggs>410W~p9PFXAOZ){zjS!UF!kjbob{7`S^OUNPEm{2jH<2r z3%xWEo{@9rip~hqXmC#RieYNLuQj4iy>qnvo#8>A#g}V$;W*kjcClei@y*ufL=iXm zQna^Hf3!%q6v33Odge`a8zx`YT7}8@mDpFFt{uA@QK%XqK00ygwzlV1Mr4mU zm6xov0V2&*a{%YcW=#Vp3o$n;E?@S3m`q|Q7nwM&Op>CDK3msjEx(b5rOFywG>4cU z>6;AYp{xR+&1x1W&%ed~<&mBD(mU(h%Lgra>n!N^~5AgkjY) zNDGMp3=RM6D)OAM5UuT^4 z#Z3+nnD&HD%^SYj8u!d20w7P_qpj_kTX4I{ih5ieoh`1u9iyp1Gtx{OShxT=PP-r5 zy_0r-=j;|(6gbhavUVmtUN6i&4q|@n&L#e%y=EUQXd9J)d+5fXv0f z{?8_%HELD0_gG?51hHifOXY+9E*7(PgNDK|k)iy8GfksfEU&W_+9c7HbR`o-o6F)U zi>I^+TDpX*gS4>V>HOD=E_YgF@5K`N^W-?%dW5_zZb6gG=+upfb#1;CEHITna77`d zZ@`wmg+p;OL7ij^*@LeH&LC_f)}NJZ_&mq1QHfvZX}TChPUqU$2(r(h;UG zrKedU>P3ES{3-1bV=lP0_E-V?;X+XE-73t^WY`QO%`Bsci44fBsGC+)A;@^`1sh@} zSVrh6Q3a}(+Y%VESx|ApJ8&L3wAhx+&Z;L3X1JBSX&HK>aPbbLrh@w~%_@8b@yhHt z?Y(tfWb4_`HgknC82Sr#NS&n;?4jSrRhrrGQ>DxtCa5S(b+Vujs7y`2c!N?>JkWl! zl5vj8Fk*gY_;cy%+JgACQAbu*vf#)oT+R9NU+NN$pr}a3my8Tq?Wy>iGc>AqOHc73 zz%|W(3X`wEdMye!&=&HY>d(2TL@gWzFu~a^tQm3rIEvQ)pY6xImP)Jizy1jDtRotA;vp#?VXCl7u-1PE7e@{km6%UQqh_ zq_20gh!3Hre-F}|-)BLRL#mC_hZ1*|1`8PwMHYw`ir4%WsqudWPDlp`Bw?lSUR}CY z2yy;-52MEHH;|q=2XUHI*>7Gu&7XaQPx_Ph%B5!5U;#Ya6bVU=n3v0&MF@fMX}4zH zkp^0}(anD#gWCJb#7Nf2YH_-(wok4%WD8 zHhHZ&$|uFaNmRLruQX8`#nj{|sI(wTiW5~jUbK|47{4B&m24ihPR{`L!7+9K^pouL zVs*%5!(?F*w61Z5Npy#Mn!a&JMnqvW>#y)lQ-chhcPSjjpghcj9~e2AA_7Z)i(UBA zmk(($6l1f;C)IXnIH^YnR!m-K&+yM={$xp7_v8tuH>-~WN;;8fP<&aY(Ri;!ggfsL z|0e)>NZ~JG@yhKObVE|9#0)KF2Hv^w+}$uLI4?mn@>`CnW8ikEC-Q-Neg0ctv4f4*JS&$63HhZ%5Njw$aHr%5Bn{ zsVGWT8D0}&OP!EPW|8$QeTHGZ$q4_^Y0Isra{8*Ek+t$f6UmT$nEaXrvoRi&Hi^8b zY4e<<;?H8-D9+Ys%4m$NIkMr0Ywe|{H}p&~ggymcdCUg%88pvB7NQ{j}V5d~6rH!?~sRh&%n{xszIyZl~cV zU)IVQtT_=WekXa&e@`fgDS^^UwX?ru)pxC)G!lPjjJ+C(Zoyu_=KsCFl-yp<-)`wN zXc)RvE}OfS%;6iw8H4D!v$JTGDHPTC^=P=V@Xp%E@Je8Rp;vH~IKyzo5BLS7^x#G9 zR*kbYMCGwz@w)yaDhVu7`10fP9~mcBqKwZcMvy!m8;u`wMA|(f(OfoA-;L6}HlSm` zf(eWI*Q8cyL?Qi0=AMs-z3MJ94RmxWG!C7sQ{Y}LE?CC`!<66$MEgV(Bo;>lY>~u&dbWwt<{jLGp`3>ppimiUnTuTaE>!gTty_bnjub6U0{^;+b`P#Va zlWW^N@Yf*0Q7ayX-&7zmvB+#UN+cqzsw^uK>8S3RtSnc>$aL9fLVz$^=eqz<7#N=HLqwd~l zZ0f!qEKXVMEBUGPL`hG{;r_!DSB(tI#{7c@jr)iT4u1S6hq4)D9(V3tp|#E@izmWO zLQr*vPIhr_%>@dfye~#=lU&#-#w4p&?^AE4HK~92{j6q8+%10u24IJ{%9`9}NJHs_ z-6}v1-jGl1z(BqU;N6VyPf9+eiKnAA-w))LV2!w%D}P6UG^%6syfUCix_FbmtqQ+1 zbe}|0B*O5dW{zw_0}?8gwSFS2>I+}K*2Q_-{Gw1_S1SZ8->hJr>h@aG$b$E}S-8uQ zbUkwKQ%VKaVAs2Z6diZZVoo`-PEB0wp9FJlomg5aZAi;^fJlJ}+qf2%Ck`Ok5`(bu zXHH2#2WXoQyi{EeZWwFbY3Eh-a;+^8P9tUr}66*@E^?5F-hIb1q6E1VlEVtBb_L5w4{ z+`C>5^HhCL1<~Zn(+f0Xo)R$9mR*$6hB9ijShP6;N)^crI2(Qp)-ei#)?`Nq?cW-d zUm>mvN%OwjGP<|%%nQHQFGes&gYXJ`A8+9RhbUj|xv&^|f=*sU3Zy>oPD^}{VnLMk z@-ve~98&LCrkLfZjIY2`tkpy@TO(A8ierlkZ@wr8k;#04xih|xeJxPkUd98%wVo2( zaje_>!`YeQ+N!I*5^%MxrTCHx0u?UD`_gzCezIfz8X?|Fo>|i3Iir&+CGvfZnX0~S zq0rL-&ucwqpw)t%t${(jQN(DW?ps#fvrW+NUmn{_dG%AO+vL`JX%*jCG6bGX+F}vX zEKuqXm$=R(q5321EvxGV*2B5QhyHGeJg<_FsbL_@5B6YM$&T~zs4M&}v5;uLlq3|= zdNAIrpYq}H%d+ajm`$wGrt&D!T#M^1$9zWRlR&*JUU*|#Q_G9K;%)|XRRDXjI!7K+ z;g*+>)hqd|(s7cZUXEX8e%VjB^V#UXZYiqb|MfsW*`f4sOzIcb4-8eEu19@Mp6NZA zw(RyMTs<>_aZo(|`Ta0mMHLk8Ho{I4_V|#0UZ}-+I;oIK5xs!zlu&4s?zr5jaic5R zSRA70w+twi^B5Gfz=bK<+j8Q*pJDbZ{@yD)L&FnJTv7X`gLj@0_xerKm!izaQf_0B zRL#DQj&N-|`;$c$G5_;C&F1G*feyM0jtMpKG*dGHMP%A*5w*sobU9bm3-7Liw)1Co zmFq+2W4#DpKchTW%kGbAD$t$#wDrpd;651hJ%-)N-FXaL)KsX3w8mQ$=KY=iwbTYw z*!H45a#Ww3;i$ssa$(6G@oACY21n122z-xSvRXl#eS@Q^KNuG$5>&CvWEbWYdCd%D zF`_Vce7_%jm-o+-u4K~C8I*H>xJ>DMV(1r71D8&8N23i@zB`cE&Ht?43# zMPJTlu~~o|&(R|SmQ%%yQwR#zjh0JqpS1Zxp_rRp(46$eruFo!Z6p)WLJQIAeAtd% zIF~NwbZxrIlP&moza$FYWG`9s@vluLeH3R07&V;+_g%RE@n~y=Zod~{ zR>l?UV6-sRVwjK}v#p7e`V{BCz+>fBS#4aMGFd8IkB{=$^Ct;S|&^5x{}8Q>?8XqE0QcW%`ICipv{Zcqp)SG z@PkOdS%Ej<&JjvC7BKStj?W?Bnne5r;d6PPb!X5MGo%!+OAk_`tZv%}pRq_)d-mt0 zPhI=>ek#V8W2DXxOUNahHcji6qFdnRMw#QK~}Jl~FZh6DDG`D84^DKL>8; z)=bW~%W|gY(kgYrXWDxW6%atZEz=B_r0pjn=SP{}I+6Q+Wnh=0k8)UlNFCxf{th}} z)aMBSlv;R;rcsMF<_RVMB8zEnoM4DSg{6l1Y3Bn)!d_{z>*w1A*_T3!ER@@q*9ZW7 zHh5jet711}CWV#6p*z7mD%5$Fhg$iOf6H})%klT3dHom4{x$<6#TzT$Brs3W=Kxp? z*rA$EYNwy<$O+q?l&27C-kBZ0iK=!g2NfPI?u(47d<3n<@pPcs6zE8~keNt8)Jvz3 z?$o+EHndbgwXz&xva``FLBn6^vS}BwT+SlxI8E(XJ7G^Xm+B#ra^gxr=h$pv?O!DY zBX8rdRspK$d4-PMuAfzJa~Furo`_ye+AsNYWKcxpL^162D}ARV|ZwB%@#QFPq6%pICTiWd%A#^-%Hrcs4z>4rX$W?66eZAKEfr70S`PswN{@3B8oY)yqdHUid|8L%Bij*GTe8n7h4sRV_A zNAx}SuAXGpNE*D(3GPkLJ2zZE(7-B)W2eYU$YK*JkKmxlbkN-(FPE5nh|#-r($~fd zj@C44`$K%YR>xRwz>ld0z{~w+Nl08T(AiA8HH3vxc45xUvuv67N1@>&p28(h+PczV zUe-kJDSFpXXP-(Cf#FNP*0(6{9s#s2(~6%;LK%%Mc=V4PXS)lCHkIdbCViIPRcZ|h zeVh?Iouzmxypyg)^NRR*sc<#`@{88eW2}H+mHi=MD4eT)jxj{CJNv+A4EC2EIn3+x(_4C z>C-kN8VnIa?^8M_Z4{ZcO%3!q*SvZ(c>hEf5@6#{tzm1s6!GWexPuKM36p=w?N^ed zZMHkAlL(XPe|hXND!2x5S&wb7>ls92rpA?K%lEACg4lDtreb-mLuTB|SooXx)jh4l z1wodJ(Tq0nIF*7Y@(f4o`2gg;d)lXAqgnA|n9zF|@PqkI6%t^L{za>fAF)S#*YXWP zr{GFn*RqNmfFH3cYeN_~d*^q+&up*^bSkWm0 zheNVO765sWO?hD+n|ej0OoQr}pq!u62;skA+1xX)7P?+?o`3Kl5+k}=X1oni2k&`(u8LjlF2irGWhobC?X6kD zDxY%4pAwv==gB&L#HmH4xm6i|e_f|?rg6FfqTqCw+KkXe-)z4P4G_KP5b8^69lg0L z@sy1%_r33*PMA$^C<4~_8xQquvX_`gsVVZpf$JOXdf?W4bH$?1@7i2Vw+b>)3qEb7 zcM5{FibQ@#^#TKws?%KAJS@?WAEdzgsRYI1{1Kc8(LK)o7JjVSll5R0sGrJWuV&Qp z!Y?Wh4cUlgPTnm87^^@-WMS1_out{Ns)y8NqU4*;Zo+M`uy&H~iUeg9GhDxqhdQF$ z`bnx!1589Si7K8Vq*LOeBc8t2p?=dTU_}VQF?#vSynwZ(Mpiy{%OdAlE}T2E+DxI& zUGz-SOYQlK7IxJ(CF_LgL+Xc~UQ zih5d~jD@&m&-cuW;mj}AC(JTv*|>elip+;zvEwQUIsl%26ne&qbj#Ma2!-a>^^=^V zW|ov-bMh{AL+_OL*K?~XvS@KG0Q(GXNbmIZa`6+}!Dd!zh2pG9`c^k@$XB@fXUrPv z0^Y6Z+=?cc0t~|f($+c?re)7)7pD3MnZ^t|!h$129m4>0t-yy&?ZEi8OMjH5U}jlYP{*ohBCPcNY{=On zci_j|s{vbOSRziUeEI3HOWU%m=%Jn5RUwa%esjhQBJ%rFJ4TYvFO-&=m(W*R!lfRJ z2F^Cys6>ySDk1w}c9BAi@2BK5?f=lP^aR`IMi+;9o7XB-7WQ)3D`MN21u-<7nnHVI z+l9yeV4WE-5NC_XA+6X`=VH8!iXR(gwDD$nlO1HZo`^Hx44rFw2n{B@8FlXG&+71^ zZ;yD(tNYPQ_|R&q`V=QAi5T+&k52Bnu=0dw3oKq4km3v}a8D2~$tcGc(0q_DOxQ6z zk5G*tHcaeu8-^aI&D{owSiOb$t+ujOm!UgKrtOZEq|gw^hc{1d@;gJ>B= zQF4|2yWckRn^?-ihJ}nT3vV`UQ`FmBwTo6VR2LUMa?7Pp6Ml>HjEpV-J*TtT?VW)Z zdOE68m8ye6gpxQ&#jevPyNEMI`eCzOx74t@Qk;+)ArT4yoTVMONOUHg#bD&U`*ym( zDH#Y1T{K(Z&XX%+Em1r;h^?;MZFP+q&(LnYh(l zRnf2T(KLs?eP(e6o)f18YV{dkE99SJhqACF&~bUxlMUS~@Lc3khMkE8UU_lUoTq-$ zuX+QJLUl)3qzzU@^%sTmjlx@p?DebqCPUr@nkt+>t$L#^g(+^JB-hDjog0m~Zc)cN zJNbN>LZ1yYeZKzL*^-AXt5Tm-m4g)*BR%Go$-FXVKzYmLVV)y*1y0`b%ydP>*lfB4O=FAPX*kQ@3o)gm zSONp>60hAk@Fk!%iCJ1h=v2?^H0P_ocim>kBJ&QQL=WxvSZO$BX8a<&)^SOO)X-Q6 z;bu3}C&Hg_F;@wegF+ko#jmqcv|b!U55lMRiNTg8O7*e`yAp#jRnZz_p{SNk(rC0x z$SIw_#lH5ek?2lYsvQxL`7Du2Df5l4kCCCc5`eN%r-@#G1(FbeRukw>J3KP;_i#NX zQ|It2hZabm0@(;yHpsN&zNwK)ClB(dnbDjJxJ5Fj+&oClXYks)Z0P*(k9hX^mFIzN zsTWJFZE1}c0o{u#=>$1u88!CnBgl6i;x(6#K#k7ewf@{&8F-V4;7+Pnend_Kt}88U z$6B?kHXZgdC&x-N2g@;DUO30HFRLKL<88p0OXV0vjaRy_9-ZsVzE#&se^F;s{-9B{ z*r`ztNK5M!ayOje9Bo0i9y`X8ABX=erTl6yva9f7+V{r#*SfjARi6rm?_SUH!+|91 zq_(L2I(XsLm7B=Y0-s+M_(PG=9nwjqxU@*jsGg_-c0<~nDzlB61lQ^%C>=j0`m(x zwe6w3XHtYeCq3Ymo#gY61ITw_PVdy3+2jyGP_z^0o za~^o?jJ|3z@G*FVagy^HW8-syLK_r|BKhYqy?xx$k8L|CCouuyOywA{ajf7!?E~x~qe)ZV*&s z?rzUKCe{JQsv9Fd!-#zrfGXJ+c!~FzTrm#6VN|ggs~wnMV4Qv_rU&v0b0ybx@ZT8i z)g5{^KV;_rx>*0uMHR+B|K|T#1f5{Ii6Kd^no3r(FItyt*Dz&5<)3`TTz`_T0AfpNv0Etx%ga z=(lx`2ZT0(cf56@7n8b}(0%Imn&?Q6c{(-=DeC5SA`621XodBWXW66G_9p?CWrQ0j z6I#|sWMesCW3+j9*kv$b91iUYKumvNW{v`b8PoG zbz)64zsFpfGiToXOUPv~E&!9{-NgWkYkv(q)dMLGJ5nX21+)0Pbh)D0q=BDpsP{mY zeSBojbi$({sSln~G{AukEUz|#xUdJ$sko#i^W}?OtV{7Z|F&?*hOfvlBp)nN4Ecg^ z=DjOtjl-HT7d+Py5zRi>5EPsFc8a1rMbVw;7((+s;&>xO{A9Lk2OC*mITGGZ+*h;x zg0Ot0LE!qb(VbP>jXx)(q~#NJ@S8ieeLy+;AYs*<$0NN!2GL;|Jnv7}=*H2Uj;sx3 z_$aD~)0p3D2h+O5w8Bp7Xk{ih#w&Y(3vsZQes?G^_Wj+Kz1UdTGA*A7az}CC;UDIQ z{=djxtu?-T0>&V|3Ip+Q%)S2)ts5BZ`C*_bhU90$i1slk8pq)9zX3rzixUU!zNjbpD5${{`+1#`p>YLCgRUz`*PO1=Q}Cjq>es1t!u9jNAVYc>fDE?IjGL79|%ve zd|ThenXZYl95;?~i41GA`lND((`@5WU{t6c9|?Fxawn!!~~(;#*4?eIWrZ@?YuwR3WKkwaEhamN1b7$;`i4)On%opv=4h@;&;jH_f+EO zi=Hv@kcXUydzcbp7WyveHpTz?GRNG9+k4EjlJHEd*VR9qfmcsy`FG*=0dV`z55-+${`b(%2a*Y|YsM;%Ki%O3jT zwy4Fi+a21@I$%WWLzC(Qkhl9msq~0%z?pX)5qjE+zXwK+&Ni=h!a6I;+?m)V!+b!6i#0BgxBG?8HdcWS1={ zYW1q-A!pA2CP)0?%G{?+`+l$U{sj65twE8oQ0Du{&6(QKLFq{FiD z3fl%B4F=a|CH7CHXk5=xiqq(b!FO@HS76I2fNK^2a-Xhv-TNi}f*B;nnQB?%^+2%= zHkks|XNUYfr+IB*smybq1zwHV!ao@A*p|M3Oi4f)w6JygJWe`0UYFFt6-d2h@R2XM zc5rnv#dcCQ!w$VIv$6Spt9su<)Zzlm_nm&3n{nX~|w| zPo3(r0?xb0S9lR4cpZWK5b>&TR*t=TO6O%FS6zpEf^<)raZ9wmYaIjbX(Y2UA_IHc z!=r*HnAGjk&2#$GzGZVIeD%00X zah2vqjBOcpDhlsQ`>q`gkNf|N_YbSRx%kniCxKnIl7i-f)uVVHjtF%QraktvHD1OR zpA`sHkRcQ-h2OQBaE+;C<;MnrpJY$`t6r&X|4An^6l8=Pk7UeXEiO!ozCOQM z`i*qG(B5ibY%mRVe^Z8z4sDqs2)>EwdrN9XTG& zPvSiv?6H12TS7+f1&)`Pg$GTO|BRhJY7e3ohE4C^PImqIyYb`3L70lRyxP;y-@Vsy z&BpaC^3O$)_k*4@y7v==^x5y5=h_Dzd!a@ zWA>DpZrssZa{;#W~f`+=*K24YxD+qjF6H{dJEVlK;d6}WfgxfS?pT?${$A3Had*lnm9e-_h!r`@VkJ)iy?Fz}Zaen6L$xiiPlR>d#s zLvFwjc2sX`({AdzkSu$qIdm5x`z@@miety1ZM&{^vDxIYEE`ab#L4iL*_+ow#vdc3 zV5{8YIKLiC7^g_cmLUrgoLcX*FNk6?4HvL_NR|?RJ888LxLi;ZrEEwmtx9g4aP3A8 z(lIP-3CKvOH#u0eWb+oqH?+JuES2ox-LwzA1oXJ_4HLKv#wPgOyaQbKS~zp?_{=`G z_f^0@Sl6qzX~re!eEF8OU#E2A!rS+`V{GETvZ!n)&wpWz_G*1Lv1}XXE#wHkpzen8 zvZHvMM*`cuy4Ad)cDqP$6|s6hnJT~CvO&<7R#xBnlv~H5BM$q4ma}skVSxz5Hgluh zGWeVQciK9>rmKT@(?Jvb)oZx((>+NyN)tD$s_l-xoLlXvV8bf6)J!tt(wUsO>XlC| zT9wL|N?@IT+DcuF&t-S2DY6#E3Zk8`wSsOw`_uMDfzs9lnCG($ok``bs~-pUzlF^hO3CJRw&l2dLfw zZ;NFRb=zca`G-QL4b04ez|8bAcc)`uw5M$Yc84Qqide)p}PO%BA2|)Bg8L?k)Szuy5h!t`QuFE%TyE5%XE9DT}vEX$%VaTOE7Y0Zf11VYG-n+eas2^bzhV+JKbRP zUwuxr%wNhFp_`{gtQV=!Epzh;FNZm8&349Q?&Y@-MA>5p6X6KuzecnbHUk zQnGHs{aEt&3X1RgBSCaQyx!-(x)k2695366JYt~F1)Y4IIw!f!<4&x&FJ+#_AZbhE$I&SUkK_H1xj5mvlLMAaWBYQrFJ-LNn%Ty>zSp4gcsU`j6`|AfmYH?bRTmaFjkb>;_r?>xf|aZL!mESDdb+2Rf=@^|7()ZR7&CB zcl&zaxMulG=oRxW|BfY}IG*~aR~y_z1+X^PNT(UqZ7S;M8ku%?2mIbp#q!v94u)!& zQYYzL0r(~_WsXi=lnlZ@wH|K?I9V)ye#XLQYYrc`V|c}9`z`8r->u6BJ9cB67-s75 ztaUVg&gGbz$998tTQ-B1a$g~wdO*w0FUH#d!Z#jTbrh-iFYfKJjj`X|+AN#{zt}Q3 z>A=NIBHMGJ3`&0RrHmrir_0T(MHDVrM60v^i8bEdmrRssH2vfLB-yR1edq#0n)I>B zzAhOECkL^G@9SK-^7Yw|=&#OGe^|Elh)*v@ZUO?|h2VvL^HupcAuUN(YGhnU&P59Z zQAj9^$3x^cuDEP=^2ZIvWOgN;+(-)KCn@&HRerLS1o9BH&e&$=SEHJ)HJVKkZ4%M%{Td z*zMv@>_W9z zS0%`CDODgV)WcaVN;H_|$h{PYXEkUl__v}&Wsy8;kkk3N_wG9b_RQ_y<#C2`s1e;C zDKBLM_iLua*BE-g!7RyXIz0MPmVk3;_q1p^=X-DXCPMvFIx3epIVoV zzI(?UlcLxB9Q4*5`(Qowop%5jr)7-2Vk0QplnwR1I4_vP^%D9+&m|M|*)EeyN|teI zxwgyiiL~W=w3@ezAIVh%r1#4?J(rq&o>`x}A7e0GSfc|Nm`c3>QS%=#hN*gYseVC> zxpx;lcUd2pS9a)=YhFIJW&H%7ZkOW>2Xu+G<^{7w6Wgf^erhqg z&6L+I?-}*Rv-P%5T~JYPGYG=4E*PnIG~c4T=4(@a?7mXS?{eHk?AB!5juVvz$X_+# zo|x)cDb9GgFVNePwI7*3kZCs zYecOs+zDH(*^HrjTL`=Eqj6gG(GfzQeQD!5zf*pCcuvQ5Ip>scB#7NBwpcPTq+Q+# zqLywtT-Ad^M6?vgfw~AKqOIN+UTS)Xc)HNWOWH_A+lIBCDM%Ib6fjeT%l)LF)omix z6df9f{kRI&yd@fpI$?~cIbt+sDo@DZx(1`M_FrtCPf3B3_Ly`o??jA+1TD_0&mmIMD7_SycRqOUra-;MfhmmW z_*h>xRi4<#Px;Gs?cc)ACr4C|r8i&RKt8>ukv2#qJOMT>k{BKZ` z8fzZV2Ok`!P8ZDAYCA(V7cA20*S(Il1ID3#)?9o!r-+Quj^lEi^)9WaOismOv=MF2 zLtlRQ$>YDO4`pCmv}6<2_irE_UE>hcjKG0oJLxvBL5+dKxpg=5zrPRv`r9u*{Pb_v z_W}81`0kf%#eu4=o#wNyj|LH7=3yybu%Svj$I^OFC_NZwXPR%tw2|0uQd5`*Wm@6Z z^Huxr4;T$OOLpC}jto|02D;Vk&s-m504w#ZDmIp(cfX|HkCAHYCl?od!8CeP<2ufc zv0%gWEj3s%hMx_cQ`xs-Cj|{Xu&#Xv^IW5?)QPT`o(_t>>%KIxvjz8U9Aa;cawZM? z;<0~Rztnp$lNF%R!J5-CX3y?~d7byh1Rm%41wxwd6!U)Ep#5~u6R9J+i_ zTUqv*UF33H$kOz;Uq*!;mhs)b@zR$=olZOFGP*l;jFu^!^Ma{sX7ARD))9~%q%g1P z;3H6b)4oUD`HvW3dT6W~VaZaaE!2)zPy2|>G=vqc^}jR2tRH{8&eh@3cC@oDW5;Q2 z$=Evmf{hs@S?Is6n1&sI`tlt{Ssy}P=YlPq8xSw^|Ct}!?X%5EwXT( z`7%auI}?w_z`AYcj?C0nT($|E8%fZ>F)qjPnMOmUh7!4_|3rpg#<|?oW&sFtO*QAf z{7`g&N-e3xW$K{*{`kCTZX#f~Vn7jI=0*}G`P$QGNBxeX&+gob-R_ySO4S3mN zGaO;ko-Ak8wBdlohLX!9Yg~vYLp*xK;3YJAUcxHXuQYQ(rbbo7zt2Mg2YMd1rWBs+5>I z_w*gM%Z(#wZ5|XJ7Yt#qdzBIsS%CEwx4uZ&h>lWyOH5|RfwQ2cVjjyE-O4YSV$4k$ zbgCa(x;IMyg?sIrwr7v4dAft(!&WHWh3TRFWO$=G)}N ztW!Ai$bkN6SRHT7Bde-{E<_2;;|Q9qXT7y^7L)J=vx(*%Yi&PI-2sEB)zo30 zxfqN?dYNHnv`mRwm%8f23=Gfhxl5L+#o}pn!E|K=;*t%>A}ho*nX}$&$-p+OIWHry zEI7HlZq-T6+I$8Nn7=z{{>LxBtiRqCFsz`9<{_wjeylWbQL1*I3#OB4#i)5ntQ4`9 z>AEZ?bc}V-2Y7u&R0NDOOLJT>W6(V=^;xW|E$`vt^5s9*kAJ$60J2&vHD7dDjp^=d zEm^%^ut39};naGca~@k^Jk)O+ZeBWEL)xWih1YJoBdY4xy>1_P zg{bZDivyBZ=J#Us#d`1SAMk#`Pn$zVTqeAA2)En15R36TYh|TKtJ^EKe$H82FFXvK zv`xcl?HV*-%cAL>{1x?kvRKf@Y*>TCY+=SUO>01i({tt`oi5|WrVL05((SmBoKFnB zI*WPBXxe%k?S}cLIMTR2i>+(L*sb5NwHl);U&hKEZL|!T09>EpA91+hveJcm8B;RD z?byNr!6-{l&RU_X6h5cKxnGc%GcUs@I5i`{WE}RZPS%w2jMp z?ug~$`*5wO;G-+f@iS|1osYSpSs$< znwe|{m*49re2;Niv(1+2WqY5?nk})FS%qF5m>(It-X>ip&)G<6PU>>&3;EKfnKW84 z?#8-#-R=vA=1YHZ;?I_K!hP3G<^HGs9#ZSl$yZ(HPW&K-pwnw$I*Gp9 zJTn$wup}>DvZE$Hrn59tbl|c_o76M)eV=&Cx8!@^c9Q z&5=1Hd-!E zdrg*Uy+;-$SIjoex%Z`DbxxEOgYDuj%PLl-J#!OTF`hV1vH{kwacV3`VxLM|F|)j| zEmyCrt2qOR<~UZ1Zs$C*lMwLO<+u|xGNr7Rs!Zt<_cpP*VwnQU?ErgCKTLLwEDK+& zU5-m8gneYLuc-}nFF7R{LFSs5VzVh(SELzft@D)Fbod~qtKXNLMKg0X%2Y>Q zQ}D9ZPquaHvv;fEt4z{S3%6Z^J#*1!vY1wrXy?j+>m2)FT)oh94Yx5nw8{`PS8zXQ zxsxuK^_jH)+AACAG-~TmGrhcaMmt>joLbG4Wk+KTr*@efZO!x-k4q)qw1bocmU4NO zH`vyEaW2Eu9s;OB7w6{Oyci^Rf|qmZ=F>%@R#r{V2}ji~SxnRO8_v|p%c9Q*A@OFs zEL?p;)0~y6w`lqt8p7?i2#anFgy*gdxHCS27s)u70bQ)7U>R2R66*mtkRRSJq-m{26W=+aWU4cOyHtTJdEJ7NwmQ>n0X=i+p zUxQwbJIg#1h3af8J>?%#M5YqyNC#ef4ZoxqWX1N`xcjKS7wMSJQuCmC&pLTProde8 zSsy&jTOT!6B3*RE>M&~Yl5`y=TNLZ6K>D6;K2EQZLh0wAX9m^f8Nq0_Htiu7Y<1sq zPOBs|ncI@w^FVc7mHFiz=Qvaog9T9>;-J*^pWvX-Idol~ABx0oz)}4lg5r}Fq1C-o zvN$b|qnD&cp(YNH85rw=oldRB0tX@es4k}>WFojB~zO=Ock07ww1T0hR_Ym84XCQZiq-z$e|6Y%UA@K z!I9Q${iukxBW7?R2N6-7>%_Ql&5NwYf`>1;eRvoi5XluD$dm*>3$-R&%3B zI`8_vtg%3|mZH{JWUUxAbEfL{mc^W!OIcx4F=O|$Pt;svS=)dm)|{8)B1zRvTf6i# z0`_#J%XnrTxW}PZbIc_9$c-D08uk+dH3V8VE*QfU^rmt7y_pQP$#yOm?1+0NE?>^+ zpe<8o&gD4I=(l#8mupDjki%=$kdN5mo+DbTNkOu4_vWtp>SwY5jTa1iEhTm#)M z;f!3_QbQWHF2}7i#|i(c1OCLEKN$Vzk6%|Gubga4@Rh4?ObyJ zXPQ-AYKxDP1h%wh9bbIn8V*9$1)Vi0-LQ$(5Wn~#Jkpa5r(nUEKD}=Vz!HL^drCpj z1=}0@q04q!VvT7TKs)Cac6#CUo`>x)p|}tYNq8`UE7uUA#F<;R^@|fr&I})RGWn%q zf`@4B3x|swok?-u&SmU6S!|;Ocv)8*8|ZDH3*V=loho0z!I!>xJGp*r_1o44(=x8? zb!V&%1Xo+Rk*^pw7$ozu-Ov;g9B1CNcC@9q;Yu2`@{MYTBya3v*R_gv0$`+tHLR+A zK(dyu%h;9FJyTeq)lgn0EN2Bklj<%~fQ?4HS0&|AfXL+e-RibaA&Ygocdg@-W>{mp zZdsReZfa=J=ec1UQp4b)v81pMG{vk{uUPccB$LSNeSwqIX*zp#rz^su%+=`C<)w%~ z9wgf@$00hI+|n@=X`O8zqq-0k$w*eu^6854IKK48p`@7P<=Gp&^d%(*SJuDO=Z-6N z-}XW$Z5J^w!3nBdQDGiQUHS z7hbP(bWAmk4RyV(Bi-Si32b`7&gz_X=a+L5Wm=Z$fC!O+PS3I=nOR*U8SzmRn&b>@KyKhDyaZB6i%(e(Uj3jhRTcd zj4I1QakX{9BqAE03-^d-ID%s9sB3@K-Epiiznycd1&n>s1XkS}jvm`}J)$cEYTMSO zhD;a3>1vIt_gEKWYuoIi2dznm)KAt#)^i&5Ou%3BGN#*@S(@SVcAO^R_cE{RyJR1n zIblalyHh)39Py2HPpg~5FdAO=V7iUC_0umJe!9JZTaU}0R<|#)h`4Ycs5deH5G1P4 z)-!>m?{+DUQzzOOPk>Rfx!> zNl{&u8Y%vo#N~4Ny@k9E-$;5jymf-vE`AO@ZKh7m*mYm72acSv!0TR04hseJCM_wXUhu-3Sw*ca`-_X({S`5GStl$YZ^m=H{yFW74AGTNwn%hk6X zwLzD3{?%PWm-^a#4a=?`d(RY8yWG^C$$t$qJ*QwWyzRve+rD7uLsO7zoxp;bfww&_ zBE<`ILRTHF#vn2*?Wuxy>L9v6Bb+~CA{Xq4cge0+Y@s{OA-BF*3zh+=#%2~oo83uQ zB^+81sxfW*PGTc$`CutKQL9L6>MVgYry;IH8Tgmo%N(2}{|9UR%gWlHnOb%=Upv!9V)21f z^UBvuvB}-#Lj1C3dN+A*KNrl8!pN__KHK?G5I6WDXu4*c9pZ9{n=a|{!G9oiA-1H4 zZ(nh$18WJmi@{lS!MFr<iFa4ZZfMsi3 z#!pEJRg!j_l*BQkN+Q*Hu(Yp~M1zY8!P0ck`sP!GomcM4X&X(RU)Ha`{_t-<)h6t{ z9cr_t@}(DNW{g;Cs^Zesn}za*3zmF+8GyN*b3rmmALuoNzZSOHl4GI9WtJtKYl_ca z=1{Y&RQcEqezBkZua^d^4-K8QntSbrlJm@{O#f>$q(0V^x`V)Z+B&R9wE2D-DO#4fgW& zm)}x4ds@c6`_eBz{P{0G-kYUbm`h9MO8T_fnN7RN>f^I!XAGSTW7__t8Gg8C7l{Uc z+HAM(Es{U-lV(I?&ZeUcU7t0}WEf6%;W0mJHvNpgfnvvJ&GKpXxp^P^tXWb-X$mRR zXIDD5hiPPz$oZrhr@nzB<_6%iW;jQmu*@2M)@-D(x}8JTKWnCVdgoN#lFyo**$I6h z@MnFSG~j4*HM)P=OqN?nk~)9ZY;IKQ5v{k+nn@#S$h+&O&1{eLk^0d;dwXRY_wb4m^o=>lICyV0TB;ud`Xl6oZIqsIv&gLsA*1*R4^h(`TG4nGs-uaK4 zrS8+@Z3p|O%|?&r=d76YX|t_aC7)stpENrSfVqvSpEv6=e47#U&u+-U%m)i{`E;l` zd={zB%o_NtnRVO#k=gaxSAUKiX}Z|pAC2VO@#xy&m#N%S$+#=6zw_z*^ADCJM77~b z?nEB9^=b4Zn;+bJUARRq%xKZPtXo1_a{G+|`|reF*Q$nR=zK5E^$wJ|J%Z?h)2SsTo@6wofmF?C(TWBV8T z`QIyPmo+g7nT|E3!kV_ZlIXR%53Qxzqf-~V9Jh8d`8B91G1iQhhjpmC0BbG-yURu3 zElHA(Gf%AUO6#qU)-1_)DwZ-G8@kktTI<^UWJ2QQX=K$bU<|LJwd9tuO85_f(EsYBg*9XSH;Wa#AWAa|@gRQ4x%D4m5VN$UT z+z|D`)MF!}M=a|#TxXmGlv%P_y#>ZS@|EA0^v%?t@zzq8yxwc3GgohP)&(1>2AD7D z1rtX(dvm2dHC7(EaqRojPfJpkbiUMk&ATt1e7M(VG#g89Yg-L3*`(c0L-OiQw<&9> z^6o-k;=g{2pMI-Nv}dQlY81`pY90fnS2k>$#_ZBspZ&@Jm10Rfa-DxWv5BM}6pRa& zxrLdgQoYCN;&ogg7piv??2DNdbUiAmqpVh zm%i+YZCF3+f&~-dK&-AJ(^QNbeA;EM&`gxiJh&QOwe;cRPGW<4&vYe`eWSkY%m4fH z55-qzYhVK(fwlC`R%T02IaKpNZ7tdjM(P${urUUoETF5{-WiG$xO@c5X%0cNnnz|S zc#+f<{W7Vq45V7hAYA%+&rkoj9nM^kF-36y+SP_j=89$yb(_ugeR&@!$vmFk_oO+;f)iM=%`;(T6ZdB_5IEa zQZ}$ln$RAQ(Zda=j!%1_8>XYSrg`ll(Ra_dYrW2q5`B24REdB+R$y|cyIy`TXrI)c zuH)ez$*jz4oSH_ulS4=cpNkyLW^89sPx;r1WpTSK;gvk@H`@8lJj5yHs59t2W^8PmRevrF67 zImd+!ZLcJh5Nj9d;JrSSK+>&o>C53vQ9f9`q}xW{x+P|1K-$JY6DD7XBetneoU?gd z+V9lUS;qltD(>Et;fMyiW?k$pC}7L>W&Gcoh3dTgGHxVO^cvBHb@C+4t{l zmK&)!mvPlO$!k;Dx?Z18PYrq5H8XAd29-HeO8tTv9>6oJFJb!*jh*Bl^?Pv7EdRCU z<^A-KHkj~KpH7x<&+cwvCoHoXS-bc$@nr(vSe2M z`Okm3NW|an1Wh-rCDJ=Lea%wgyvz;WdN+;LFFqk}{eaUt zqdHQ&jdb5YsybH85LZ7Ta5?8Du*vD3ykLQ}mh{So=k185u%^{{+IxB*S~RchZQh|b zXrXxdy$+F_?wK4?F&xsDd(<_ycig@_LMl_2XNETR)o0Dp@;)K61dmn;9Pe5GvL~K> zIcF+!P4-bs<2~!el0kmf5=4jIF~p}=UylQ(j^(nb?7$Awl(nBx$1cyQppO(6srMQd z?qn$9nh}@0X6cN!%eU>2+L&Z**8O4180$L6M!Wo8q>y0DUiUhVbL~JMR_AL^UH4?# zIknv0aRcTG{KBy3m@C_{VhTlBsD*m-$OB#<&7@KNmfR7xIK@2MIF}~y01>)Y_MI=y!iSu13Ck<=yf7; z7C}lulFF;#tUO`&aoG?!+f?)pUTd9v!mv#XSEX?AJPK0(q)u)=Rp()A7kxLMD|Mm| zTcw!vX(K6$sl^4`-iSCU#tN3MlMonk#m;t$9HuLlfpNk!D_=o!s2oj&-^<65d|iM( z=<bur|NZ4XHmzWRHqPRu9dq6g?p zG9}x>tI&?G^hfLoQEPX7#lUF67xpx_&KZX|t1du1xh_W|yM*=K7Ny|xUNxoO%{c45 ziE4_pTMDn@+`9%MeCOOd%(e0d_$EnBYd@7v*SCx~!`i7EWZ!#@U^!BqQJxCSz1f^K z80?OSFp#2h5+vrC$9}23cIP9UPrnB6+-K{lvb@ISoO6I?e(hzl_YiZH)yI_>Hf<~QcnNp-0s&?NO zXGPG60MT14E^^l`18vsCoS-$cMtN(c;*QZKqbJ3DeGhZj369IgHfr(gS$*b$72LR0Iu z-m}zZUFnanL7!k%x6FlAzF;d?3QpBgA8gBzM*v>>vT=}gyGRQJ@8x1V>@ps3l7pBh zZEnRUU3A=n!vN?3XpjrYR$*D&(45}YC#Jz_ipM5#*I3wA)FdBxofaQ#* z=Ie#_fj*LyM=zM{hU{8>M4`|+W=+{;SWK>$lLXk8ekK(J_C2XC4MJ&(Nnc!j3!zhW z>4(-@#gerFI$UJdLUrO!TE5DB8mpZQ)A_huLza;WZ-5$$iiLZ|l%ut5HFz!9wZoAX@WmyiRN z`~S<77Q07uf?X-rBK8*D{U}`e5`0<~=2kVCh?ovDi6-EJSzl!Bwmggo94m`*>obZo zIi*kcxcpu+`7OqaZ#Lo>EX96dNR9)P??j6l>yCporX6mVsrRfiPF5gZmcO|a%j7Y; zOuc7kad)cr*0J?uPk8f%7U{G;W9ZgZx74RW%WX@$2oaw~na)qE)v^3E<;JP?bvdq+ zoE_J^xYGwy@JjNLim?E~YFd}+r_Y{buE+IqoVFxcfITk1r}Ol5v(@+W^rL5*B*W?j zTf0vir{*Rf!09ZMWT+R+1lJ&_%kYy~sA$%?roA1QuyAIPx?eCHyvK07oKydQ(%x-3 zk{eeSexpBl073F{#xvf_YkAE$Z124;D|i6f8mpxaN$r{5PyYv`QdRO;n%H+$_`Xaa znIw}0K`>QF)lJghNu$juE*K2c6bx*L5jc1?e(2b0m#iU4crs#uCMBqO^i!~Sd@F00 z$1S34y^;h?66P|&YA{eJ%=E<)fh^SVXaKgQnqW=IV~5UG_MJkGZahnsZIxp&*iUjr zv8~M6qna#YGAKmwPU&&6mBE0q;q|1^2^P?2t!T_m#^9AQBXUVJ1=#B9cj3digXkkoK!Kk9OrCKvC5HmXR z9#xnuS}_KX)}c0|AB(Y)9G=K(9DFcJH~l&}9P6W;KW2fF9S@Rb4@%AY$k9rcIEs_pwk&ZXs(_pn zKEYVdvi6hQP=eLS6(&Ig93`;==sZc`&j~OmAF3KBl5$W?mTa@7(y63}dRNm6%{J6= zk~17)u4>E>&nd#|_peS`PRfM?$_blejm*j<9h6I>7nHNbk}OHM--rRG9Gy|)>8_k1 zI$05gF=GQ~=PNkp-57<=Ibh1bxrWJgDaPV$GLxE|Q%RU4iQD9!#l#ey^C?c3yf~AU z&tt&J*r8}|jO1(^m%O-GleEHU#`!9j7!=9DLz8ML+f`$X)l5EDRpwXdVB(TtSevQ@!KZl@9Bn4)CQm~^Q!)_Qd&jlL^pfI@7^j4o(q;EZ{&~yz54!(CPdz1`^4-gKkADmZ#M3i< z`b-ZmKRrF(KYsd3Vq>oYPIu4$`TY1WGZ6KOs&P(7Dd1m9dKd{0k3WBXc)9yb-&1<| z`ZU}h_359KzkB-j<>m2D&)+_OrkAI?GP@VP#%bNt%iUv-`FKjtF)Wb$A8k(-}%>nK6a>!r~LKqzW#WZzkm4U?$g7pfQ5B` zi}2;{3*Fy6&`)1Kf1&#G*N2|t)rmfTdHMDWy^P4+^Iz^hNgeCLdtSk3sW;Qhp1<6u zm#&w81^)T?R3}&X6a6cdmuqoM3e3Nm`Rn6L>Kls*TJHQiJ^lCH!}nhwiqxZyW7X;9 zDV5);{^fO*;PL6(U;lOY{IaC&(eLl>Y0r>qDXa~C|0TWr*5TTo9_XLnKYaJ{uO7j- zI`QYPclR%M5C8qz1%5v~=b5%)7&tvqd3>sW`+9%>)6?V2Yai{e3l)nA&Q0ZSk zJ<)T&J@m6R=SuoLy_Da+lR!)9Zg_lV6HgD1l?>cwp3>)hM-MN5d3pY6EFAONPu$(p z)8GI3@b(gZetaC>fjM!yzt5@szPgR{nNN3>o>zn~sr;Tk(J#N`aDoxtLslskN=?Z^4;SD-+k&Rcq;dlo_@Nj`Yx5<`bKP}2b4GQ-T9e* zd@Mr?7)U>*r}Vie1%G;Yd>P{WKTB8i>$fi?Pb1&d76o&9`11Lem-KR1{#0J>{^(vB z*wdG%$3N&HJrt6{?9>9lsXRVBKi<>-h+AMpA08jS^wPJo`I(*{@Bg4#xqx(BvTM2i z@bLVS9$xN}H2d*wLa?Xb(nGzc{`2jWe*I1i{kzlZ^obsRd7;iO_u41^={2pKd|vopn?xm;u<+rcQeG@?A-qLGO{V6^5*9uCX?_R!teER*T zr@PO0@;Vlr|9R~ZCm=sPK1jK}mg-E&={Ne<|2#f*^&lE~&(diB7d^;h%b?3ze?dfkxisjd5|I^cBq37o*?ev}O`lP4VQkXHUJxK?d@;&|U zhwBHWBf;s12l>9fQog^V`#R^H{`CBE{Txidzg@nuEeQJb!_#X&BR%ny;ZCnZkzejF zU13Xb`t+aAKa^kYUTBWv|Dtbm{PYWbmS$h1aQ@@9f$w=gJw1MUN}q3%{&5K+Sdo5t zNMD|Rd%VT^_BlV^?>X}LGlst~&ee2A3h#CJ`y?B0W|U}8e|r0({!E4L{-CFyUq_|W zB8_nRE`5=KkF|0Ew_DdOp^tUmpC|CetMQ|$e1*1x@m@=b35<|JSEjkRE| zPyYJ3owMxem&dP9g=8@Cvgq6lxVI+wKB$xoeOf)0x9>0g&yUN3_U`oK{l-`?hWvW>`4Vc`!r}E<==u3F zp6%QmryuXvtlpX=QUL0|0rkcMqR_ zc}e;1{_f@5l;}@Czs`fCx7*z?O0nEMe0u!?|5*lSQ=V6+zoiG6E7w&I;JkZ#;MZwa zdAy&K;^{BahM%au&EbA{xO=%v_jmtyUK?e+`Tf^tsy|)^(gXg}*$?pj*F~L_@z;+s zES=U3)cS3Z@z;Bjf$w*Z4>FIP_Ccu4=^bBxy@d68$L+0TWF(#ZVd(Tk&!@Aa^waYj zZ&JTcV&&bV%o1CN!231j@&5iK&KnsvNxX7az;ap~w!FoNyn$CE>VJHBxAY%hPWt-O zTz=u@m%sc9mtSXJ>OY>#ZzmJPF>nx|>jl^eyrhQy*HK^&jDMc=dwv@EeKAjd>%;E@ z=e=y?Hyk+cdlFuMhs$qcubj(D%Ij})_-zlr;qcoXe&gZy;r{+`Pk*?lKio4OIPt)V zN6tZSJm`%Fz0n_jUv02TAAXy|Z+rL+hu`k-`+9$SpxbMaTTqAJhugz}4~N^s;r4L2 zJ@~`#gZXgKb$E^TP|Ow&9DlIqQ2h2#{Ps}%)*o#12iyEXmp|z82VLQyD;#u%gRXGU z6%NlEuJ^xcb=M2s^*VPo(OvK04mY^k=dR{msd%;XP|FXM{7}aaRs2xH4;B3I5)SX+ z@CvT@q0Fz$_X4@EPbaO^>2rFar?-#C5)ilA=XdA#4F5zM@VE4Q1ocX#{SYv*#qMme zJ6mvfCGM{DyDP)$N#ciq$s@*{y0|e^uimh}@rL#84eQ+-)@G&B+)!zDD$PzM?5>2} zm2PFMyJ4)`sdPJ)ySmeX-Ic3~)dCY^!%k(`sod2(y{mao$3m|b6BR(*lF(HEFqUto59fmwaN%#F{N*>xgj+lg#0 zw5txr-soVg`tV&lbL?vH(gG8eyPnDJdM3N-ne2_8$!^PT*E88w&tz}(Om^2Z*Ue*j+zhSN(v!(GS>NKVWzLfZa7` zShY$}AHJ&72dh>GH(DL+S{>|K9qbwp>>3ZO8V}rPJg{p#uxmW9`ryH?KEkd(!md8T zs>(t95HNZ6ZH?M}Al$0Dxf>q=x2ukBR~_A|I=UOx(e0|E+f_%m`Utoi9|5KGD+ciqJYm{y^%5*nI znH~P9daVP#Q+#^VH?G(F>!0cVvQqViuR0WW;~VC7-!QlPhPhQ&QM1Uhl;xn6?Yw~Uv)Kp*OmBPSK?QFbXfE;a=P78R}VJ2 z%+4!fc3u&)oAjF9q}RC3`|ZK@%CIQxoo8d^ySU-H*m*8?jtjf|7tPTV8-gyWP1@yV?D2a=)6}-fx0^?=rqMTM(Ys0XZVtVgLhokCtG)y6N3ZE@STr@<`|x%%-ra#+! zQ;q#*u;3R}-0!_Se$xW{rUm##3-J3E;5RM6Z(4v~R7t=0zWCky-h6NT=ELDP9}d6x zaQOX)!*3do-!z_;3&8IikKZ&NziB*S@!<%25AANUvzzPeraHTs&dUE0_6;v=8eZ5m zys&6^Vc+n=rs0K6!wZ`h6c*o!u>Vd3_t9H+rYss|*f+|sX_R5pD8ph981{p}uxZO- z)0V@cEr)$u4x6?dHf=d9+H%;p<*;eXVb_*7m#wdgo2DE$O*w9wa@;iKxM<38-<0E~ zDaTDyj*F%o_f0u&nsVGU<+y3eaq}^Zi)J48%{*?JdE7MfxM=1(2T*P zrX9ykJC2KX9QW-wZdyp(HIYR-j{9~TH|;ns+ws?vKKxXN-$(g-E}6GK@$knSe%s^k zaQFj<-|q1HcvpY@Z4PFbgBj+)H%I=#po1zn*aipN4i+447|%*Sr!S}a?cpSe41T9? z*Bx9(;E#0wm1YpEu7TAx%bWT6t=`069|jtljq>ebii@Xs> z#xiNdk<@04=#l?Er#SoZ?)l|auA=f(2!eh;M!3J^nqgvweC$TEY!pZMoQmRS`r}Ua znM&T9`@8qm(h2d9v*Lh`2`i4^GF!!wG)Yx)fLD1cj+A+liX&slP;ms8=_#h9W)t{| zaozttWn9vL?KsW$@Hyp>wqi=S=Bzlti-Z+Z#%taA;ej6q&NQRN0l$&X;>eujvN*z% zL>5Q*bbcX!dPw)*p6>?6JkP}upC!3C;L{8jN4!mMaX^;2En3bjvBi-w$!c+cHz_TS ztR|nu5tt{lI51|JELwP)#^Oj>b9io8}=eMFYRLxfMQ3 zdvPG3KmGbdw5n)lcva8(j2Q>WtJBZ)iT?HHbay`m|MkDet3Fq z0rYe(%;{)vmAU1}z|$|~@e8fS3?Iqsa$pC2djD=MKJ$~jFD*Dr`f_0O8DCmxNXB=7 zUuPiCpCn7>+W@R*+{hPmBrcN0w3N$eeS4!>KA8h!OeS*$gN)bi{`#+XkH&*!8@zis zJ-@p#p33Qo?kPRf=^xMUA{pVGo|G{@BIs=1vvgk&h;kIYE0<$;FNk-_DjP$rJrX#V zh{*o^yq60?P7aUNM!zR4xgsgBV`b}mN|AR&s{+8)(k12o1p)M)G2~0Cl?#HpB9_V} za*rfKK4-0!>JT4lsHJ*S`)h*Il&Sdoeje8aNg911@00DyKyxh)v4X4JlN#mF1y$|k zWcv%Eol&|Z_V34sTo3~}n+m$-)FZ`2W4+b6zndI2q=Dk)po~J5Q0(> z%ZOx!I%pMAS2`vUdCCz}>fVAWI>*e#urFt(3g%45TXM)(lK{P;p&o&7HW?$W=Nqx>fZwBtcqi+D|8lsWsK3XoSNAo zNvUcpVm3XJt+%YJx+LJaBE^(Q1tNEK)G5cTvnwHWwmDG1=Jj}4?2#M;dGv)k3!Gy) z>cF~e`fEI}0tgVHdq1wAwd6T_U3!F#%PE?yx_aQ)xe$`Y%Tdhl2x3sls0gud3y2)R zCNDL=LkbvetcsTdn%@y`l&anGxXNpk(CB_~J z)&Y77r7N9iwO2kNlJ1@~qK@d0T3>#RvRG+lLA zRNdE=?vRiMkxuC@DJ7-5q&uZU0qO28X<_K0Q#zz`NP(e;6c7;jF1)|*dH7@I8P2}@ z?7i07``kLm31jb=2-Ws-84ByCqy--e>xBlx+3B>;^BJT-FQe64DmpS)rPFe*{EbtX zwu!Tu>D@0uI;Tsn?wuYV^@3zR&|+1$>B|`eqtCZa8mps9^xKA#s=bpT3UV)~MsXF( zX>twc!Cc_*Hj|e_2%;XzND6GRi0DNL;8U4+oo>S>Z^28=N%83~q7eJTy>M%j+%kzCl>{wmZcHoJ0-LIA=RI*50( zBBPrY6lO&8!C>^!#6KuFv7lIF3SoywL_@n-7 z6xNaJdGfiuS@>lYqVfm>_j7uguQpB$PpB@93NI*lTb?H z;1q;~aRi50)=Xl)%IuNkCKzx|pwL))mqJlZso!M%7 zOtbsw?s6GZd=q!!q~m?jnh|mbeTd^o(^6WwWBFrty(lvH8Eg{s_EM>%#Lmw(DCA7^-g)@a-MJ^jqoP6J-Tz>I|((L&EihQ?O@Ye==@yum8yiO9SPbW zxXr5q4SLb!1xpo~|xl7rwf#=op&=sKnqwW`lF}r8 zCIu3Pv++_>7LL!sXM~?svLJR{&6xh3kOZEk?#YCmEMmv_#)-N&Z_z#S-%{OPc|?BM z3WCx2ZU5}wvVUtRuGe;B7IGYOtjmJ&w!K3zi*E(jk!jncFE1 zHZ*SkxWMpKkE@ZNG;Lq#r@e!NlI~$^i{0+lKZhItjn*6CHKUe*%3sKZII7n;^&RGy zf2kr_Xn&Zu+jvEU)_cyDW7>qbR(ZbbRYkuJrC* zeb-UKeQ7L-Dq%XX*X_TS^*Mi6$LKh!9)({xM2gz9X`Tgd!+KX+tyQJc(%3L|1}sP7 z>HrVhZ5`(Qb}c6|kJsAYL9$w3SC6!nR#WX=iA^6z&KXT-HNX(6_M_fs8`Ss>xi}qu zNQXJWbnYn^UgpZ!Q!qt!R5j@=Cz35yxHi`&Tm^66`|2L|bjU4>Ziha6;^ynGTf_hN za)+&VLA%l+&!C?7OP%h`tHY8d^{avH)Gi*+6~R?J`j=5CJe2=NK{KcBQJ1jvei{dS zn#IWy>L8$bm#n6Cfd4~kM1{rwl?pwStV(F0Ua1FX-H|e7p2HEb_*b)%A|!z$3f=Bh z$y%#7OV*NtXHgcPbjl@vSI5t5w#{qYqZ5uDy-gMdbJkgrYKLZ;gd94{Q+#hHxY6sR- zZZBap&AMyH))#ZIP#(h-F|J0tWvp6#h?waG?_q4MPMxDpR0=e-UQfsILzFv|#;T=q zCBCF$gw3oKenoA^4*Y(+`Hi>q!l5IUU0uFMpVgrSi{C27vDTVrsS(Myy?$ zho~(iyK9+2QW0bdF;8N0xx%h|DTd=9gsq*=9lzO2S1IhoG({3E@f#4t#wV~hTz#&} zPw_jTO?B*o==*h6k1sCEtJ!g1kg{XjYl`yFceP4ZHk)D-OX0*s)UvBoj-;!IG8`3T zVv;)4WA|bW`sry~e<-`ewy_|W!H}6k#Tss8$NkF3_rV8mM#}7<5`$-Fyj8;Nyply@ z=?=G&G*VlgwbqB$0R>|)TmNK|c7GmenlDX7k)s@QGCuwgo}|=1LUr!i?+C^E!?1hc zz?eQ@zs5b#G+f3vTm|+*2D4bt&@?o%xlV~Tx(uL!FcFgMk<9-{XM9QbUijVh;2fnn^r z+b*@o(}y^P%q`hzJrwP|2M28WP&FA}a0KuD{fKG%0GSb1#*uF)bt5DtVQ_hozA!75OzEP?gOg@YC=S zI#&4@@L}`_y*2_}LwYVvRwY6GTxLNB+4@7EM_|L?Hhf0-y_?c>p<%%f@`Xz3%Q^ad zPr=f@h%mBP-8sN1Ef{=^_Z(nD42JGfDZ5}|Z`@umUs;Q6EWf^t$VE?RDdo-)%w-Xl z{EtH!mjSJy6;2G= z24ENN7@jU_02h#&GbU296c<|#F(&`TFq4?c&*NoO|;O8 zf#lCbj06o!&Y=Z^xkVLi5=?>RiFG_!16CD&?^JZl;YjON3=4GFTDl#HuPwQ9ag*6B zI06&{udxYxnHS=fLLXY__s`hl-)kucdsbE3C(U{jF=ncm{y-0nwNBJJfmh{>w4LX? z>eo*Jr*J|<#){|#uYvG=K0(LQy#}V~aRPsX$GMv+dVNxXT*_&?A@X^LcVCC=KwzB0 z_D8wKgvq~ryRik&kkD`bMBxn|DJRc4f^v$EfOrbt0plA^-~~;iRPRRoMYC!Dv`MDp zG4{Ib{bBU_HH=%tC1FO{jgkBsR}&-;Ge)1Y#ynK<@-j}M4LreRfie}y2i~=E%Dwgq z%$KO+M8xh0Ng@aWU`g#2_=fqG7TnCr8= z&>2H<(CCy;1-sKW>qjnKg^;&c|K3y=b{6!%b8FXGI{WJ$GrPVUy!HJlU2B{BTN z_k>-CaOogl$oq|r!=_8)A7?cKR%ctHg+gaSkHeI*SvXW}7F>ZFsLs zheF{4$j`Ym2fByg^?fbiq{9?;@2=&Qij&*Q@6B=aV+LJglxo$}={($85>#Nhw~bWa z_)1e>+>9C-hcB)1AzG}vKHIi9UHx}zUNmQCW^ygt?zX*!;T!i8mg29RER2n8dG-|{ z>49qc*n&ScvoZEG8Bm6BsSWAHth{Th1jZX1E;-bB3kJTu6cSXoY+wfeOPn(2;q`zD z3Q10!AIZz`l{8+L%OofWT38=W?D2|@qNMF-Wjla5qu%EKwk!U@6bK%zO-lO2&S|wi zg0g#{tK5lvn5d-GRRsQ#Ub(Qet949MH;@f^(6ak^6g{S+-|0eK$fdQcOxf_4!%r(m zL|7BvR67@vxd;9zztl)xsbmhi7K^! z-y;==a=+eBfM`?c_|5H+8&?T@WV^`W^)fgrJ=#Ti-&9}N48*r&?{0m<&5oE2?Pc!H6455AZ;z{vgF%UM}0~5Yy7mv-1^@|7DgMwoo<~3qu$BdHqqt~*R72{&nV`GOAmvO z-YFknsgIvanoE{I0^ZZJuv*>Jw7aJIR1eO17r z4&t7QQ#zInog!i85_TMQFd!8k#URP@-}Vr(&#uII^8>f-t{%=X*o%f#@W4JB3~|$U z45v%6HZ5q(=FCrh+wKax`$?cdKeQNoi1|w2Po}u04adepp6^HFH5zk$xt6be9)G@t z6+!0sLwt>O&4@dUeOtxQU0L&B8_X#Et;#3_&+q#|>sb++eU#RRQN6(4T2-je-{M>TcK^E6l#9Szf5tryX*CJ*hS=*oW+X#lxN_>JCAWI8vFk5&I` zjih(@vujP@OFPG7Gs5q6)J$^$p7d6-InW{t>`Jxo%E}*VzuO%a%yEs3(Lt_6_00U4 zGFlFCKq)Rv#4w1B9?eND3WQ6Sp4C!y2Gc` zm(qh&%Huvs!CFG*_&VTgILr!Op996dZw}p^`dXeVJrS!=ZZt1fuBC7lu;mW(N z(ZaJSgvKrN!)TfuTdfZ{?LMF&OlN&Tq1pLY`k5|KG7jV|c->8YW9${gDVy_@+d2x^ zYZ+H!X3jr##iZ%8p<=|E73w9Q&kZyy1EuWZK8A){5Eg>MdMpVQ#}|Np)(_QJU=+Vt z<45hiziUjV^he#xb9UKH)>3MbY2$xTy zesStpn2y1&KjTTbCTNqXS?>K!ZP!j-YJgQpsK}C=8;X(?s;q6#=~ZpCWW_CJwrex_ zmRyPP9!9@%pPC%zruAU{J3p>h*M$3{U|v~Q!X=`&twj2hlU-(RCD3${ zASW`NMNXcKE0E$rj#}4O=*HO32Srw{<;N?CU*2`q)wIK6In?(Ci3N^z35k(OE9(}Q zP{K3!ZkH1*48!$|O0-ktjTYEfJ1S5Jc{3v#xE4*0*hLU>xN3{79VAO2G+bDmnlK)! z6;L<2W^VSu~EkxD&32b$nH%$J;9MbJ3Hx6BGgtQc6X7Uz!ngALOZD&77HGX$hxD+3k7- z9b_3`BDsixw{&*fr&Np4LB>-N;u%3WB@~as?^Wq(TN>{Nw*BV$1%)aind-b2M-XV` z>)4mtJ$J!Tg4V1s&k^tV;Y_r>nxt!&Tr2MlmEg*Y#;drVJS#yf!$O|o#_V8uP2@W8 z^Z@Moz_>vr!o(7->y zuqKM-4|JvZ%a?m{`6qxb+~h*1Mn=rv%*?uJ$P(#_1$j^gjtC@4(1n$!2q&3NW5PtR z``@RqBB|tL8_tpV*(_7o2G^ak2CQf~Ce6HSIlc=Qf+qxSr@lukbK`-SfkDO?yxb%v zyLw$%nbzG%Ywpu67aSM}lwGO)^2T3jH zl7u>@v4%DoAXg98n!k7l9Xs%*c5uNnljB<|D|l1hBnwUF)I@prUe-b7pW9JuLn?t1db9H^&GzK0? z7a&yv!Pgz&HSMO1Eh-ifK@Quhcc=-9HupEg?zOu82M+qx1H^ay-a&{$Dr%rSX)R~J zQ$EwS+;FCyA}pktxntFoJ5$Vb!L&wo~uU<~J4T-M1Z7>!d zHVo-^actq!Ky6ZM~~+787*6?vT(;N5^Abzom)?p~?PB0vTg3EvQiFFJJi@ z$uXL^*ICbx#3*`;2!GcyN|r1JIqZ5GX>##>Xm(J4FtRhFS=xr2U+Z~DNigxXY8?|W zU}R?q3F=O?O3s5s^lk=xY?m+14+nLt@a3f`!6z23^Y^;3(RGTp%jef6-?ipRZ3pML z3@t}b?sA$*(+(ohO`K43f2Ebxu;6NQ4)9?XB~N?RO^64DdEEq5 z={Q*`N$1eRe?%B#?bV-EuZcF|;+3Js3xbm$JZv$w720LEydyzEO|A@f>D?bFy691> zOl=0kHY?32>?f0jyu0vsS>tjOtLgV*sYpH#t2xK`tu(r&?n*1$1j9sRZv8`W1?OWY zXsbR9!EOuVHUyBZ%nk=HI4#GJ6pVAXj0!xxyHxjB)4XJmLLkkR!^Z{nD_O7EGpA!e z((6aAZPUF9@9uAWfDMZk)|0y-y5i-}kA(et@8qgRYzK!9^P9mZ&EG2n^!npo3a4O^ zM~7Km@IEV5YRA@eR$@tJ19isO6T^Qs_{2jv5 z2AC`7o-_xMadfsk1*ffb{G8FQT{Fd_gT`7*v7df5)s3Uyr=RKb;eO8nsT+r0(|X!) zYHhtp>XF)M?PVBn+kFmnoAzsAx`zm^go2w!-Jh8eZfzQM)U@UfZokkm4k2w}iwuOKReI&Ww=gs?Q!}p16l^OfsP5 z9BiNWO%a{w-5~P_NV9l!6up%?Z>*msgTS3_!o;>hV`)R zGIt~gRAKL$Z>@h9uP&%%&Hgwz;45b)IU@2^5shVP~x+MEZ!DMV$plE;sTd}%5+QWnabz$IF^3i&@(`Tdg>o0zQ@$#3bc=v0X~q4U+0I)qkoc6N|m zi>&N~wKhYBoFfj=(T*PJ9tmx1a^^DmNzg8GtQc*vo5NO~g|_TYx~cWN4*f32q)?OO*=w`uy<;LwzTd2@RWut z;gH9}qxH~xBEsEyDl(8g4?3?}+nUf4gdv!-l9fk0{ zdGRSEQSERjZ~A}2UtA)NHP3$N>P zo+6)d9<)clqC3;0^Hqn(ymoQ7$N8tyt1OYBpI>H+qrQaqye39j?C%&fF-652pB!H| zi%+LuVbOCC#*!IG$2(dQ(@uWz&NxyT(PlDMfV57Y}-Xt`?XFhRlW86r8qHRZ>wQ-L_eV-q~_o@1Fz1W zsk%1CDwYni$=W*JMXC^soMVq;Jqof_XHL$B+y~cYs>L*kwOom5z9CYCLdIFl-0RAd zEfiNq=-xyrFv0%u$iH_?)+}gx-`OQ}H+gxHqWN=k>GMfigI_sE(Y!Hfe?7|7!1x!k z@;y>iw$HFA(1e(|aWgo~F#cr*w_#V$7%#)5A-TJn{1t^W2=>=IF@J-#x(FXBMej>L ztzA!+f&S7T)!K^+28Y7;FdyNhMonFqnfrvbR#5TnnaoggZm2 zEuQvzY#RMA`M4{7N{IJZ7*VeENyj92k{8AD( z1f^7>>2PYeh1Ibuvu)QERo>>0jOX=P{~Hxlm{`!Zn(8)NvWH0Oqz_+Ux98=nddmjN zJD+3l#5m;p@>NRvx10CcuBD!1(ZHLuLH@CuG5g!R(CsMOdpxtv*JQ2{C_xw{BCX6r~WM zSO|;D+UCy#QWDVJ7ZB64cDc>km@65Vq%f(+<*b1OQX zz(Onwo_1vjLIqzg8%tJ_!fR1GmTNh?r5`in#&zg~=5IX%kHw_s)9TwvL6!85yLZ3? zOnbI$AaOxEhu~LDKEfxXr0~@A#`=$%^VF6g181>@bLzP<-CR|VeuT!uecfG2ofIsP zvEjCXL}&{Lc#%t`?ZK6WRj+)(Th7L_Dg!@I1(9sP%Rzk-9j^O+`Lrwy{kvAlFmyog7@g;lwX& z5nHq-`vtf9i}06NOS7qQg(m$ZYRf*kQzaUPL!GO;ymIKDQ&CjJ?06g=lQ_*HH9azx zw2T~_Ya@j_Q<7rnT-jhkhF9;#B4of@=u7*^V(O-=Bf;~Kuyp^nPMWIi1Br^+SOzza zlsd0ry+6804OfY1BD+2|6IU1fFee9JR_{0T@Huts@Tb)F;;PjLH22hc{_OscIkB|LA+KTT zncEmQ7i8|QeW4z%d9JRFQFp)kiHHPB*(c5-ki!A^rgCN zL$~og!^~(fYme`G)fN#Uh4hlk+BimJqCW|E8`4<)<~L6GeDPHWK}1f1O2_zHwsZN~ z4{8}&$4VxyT20X~6%Ry#VQW}g`Hs<+^BJyJwi8ts)Gly&Q$n&$GCS7(^oE-MXpJyG?V`gW6zhcwVR zq+sdUTWF*i5hmd}jEWU??=zPK=<&yE@9AUDIIXrR?BYCEx$QYrRwcg!T zMyDhr0bQzyx&;TUy$w;5&{nesMnxa71IXRi9!ZC5;cyXJn1aJX1ikM5xT{lS9QCb7 zwu(9Y+a)S_;c=#6JszfE%QP*qqDJ2&D;md3jRKauqXzWKnw?lGCAbLv!`nbp(<#}7 z>5ghVEO@3u{V&Q)i20_xIgeelLyZ~@?4MmDOGeTwSHBoCv#7H&FI1(aj8tX9Pc^tC zhG6R192pu+(sr$9WrOV%xK{cTUh%z9_O)B~0{!e(op)1e`zS5aI);}!S;eART!@9M z)FfWUY(}S_F$~Z^Gc=NQ>+^bo9NtgQmT!Np$xJ=JFpyAuo-1$bQm~F!a#)C}U}n

8*C7Jl&XUDnY5Vn!rYIPy4wm9cB&&+~QU<9QQ8BZ*OZrjnsxsa(FK!%@$no7? ziA-EeDWMXJ{l|QlAzj1N(8D#~!w-2@^B2>NmtVA4m|j9@W@6KRxXZ}-NGwztj|Ny` z)2{zec2XlJghB?`w6mtDeb3w)&fzu5#@Ics8CZ;?Oq<)py-P(PnXPvU@!Y=stG?vi zYPnD;p%G6(1wU115LJm}471*$!m^Xb>l7@y%GQ}t?8Mm4hC^e*W{DWS0S_aQ;lLYu zPv-b+rK`5*sl?=Jyi*xQ=Cw3Hk08^zSACjm z15=t#4!;IcAxrzz^csz2RTMEx!t2{`c+61EgAoVCeecx5BQxfa#;sja`GW5}&Bq-m z?Ci4|c5M%TTivv@kQCbjgocTHQiGc|{3>A&v6-%85CR1UadA2JTlxw4f&}voLvapE za-hu{X8t6;Uae~&xu#-0Sex{x$jUp&fEwcX#pM?hjr4HDOzKDai&hfarbB7odi$Y; z#K5`)BDP;0kd=Yqg*POjiQm}5lqsuTN~R4G42Un??@z zSK#kO(&fDFFg@m0TDpU)<&k4u*z0<`EpEG*7VBR>mc@C8FMU$Up6;ey@+E955!tnkP*?1MaD zx7aR;vr*LjeC*)@%h_lO-(x3U+9HR+{@Ny@+_9!nDAd7~T&~NnDK52Y`U`(FPYD_v z0XJM`q*N{vqzHWpIT}$I(Kdrz5~O0rB<|HWp4cTO-?2`la174&3)WO6*Ec7adQvTs zrTHIiit4N!7-;-($R;MkRB6yQ3?NPoIVPq%bh3sPd%>byI@`MXR6b~>Hu~3=bB(&U zW-Zhs>8>TvDwZS#E6fi%QlaP%m-N)J)%zRI4<4!Qu;UQwdu(S**)9_WbCvfgZYZ$u z2P&O^Yu(Bs*yq&%Zz*6#rM+mL9md~%^U2XcQ0l8%!kfmki=^m7Cs!g?YgbCWN4B=; zX~Hu0N1QfNLwG|;D;(xDjM6=bmx!!fE3rlu5U|1-cKr>YaM16sPn@fm$+g%nK*V>x ziH~C7O3Mw-&+}L7T0zO1&Q4j6=gb#P7LG-T8Q;kiw%#>=U1DO+$uZioBQ@AvF#T9E z5MCZN=w*0RkL_lEUq#+0Og|L>d(g#}5gx`Ggxykv!3(K5SH*Ne8GY}$iEOtx>CrAG z&PnZR2RyuQ1cn!l?dD+o+uL=T<4c|EWc9~g!}XRH7RR&W#sZ^?A*^A1?6FbUVEM?C zM)AC&<1c9_9)f!-11>Hu>>5rLHupA(5m7^ZM-HBkdhLGX@(bb`$;nLYhaTea3-M|o zIXAMfZeC;>Ilh{h$Amw%bFncr zjn;E>x#S%SbSfdikyxraShJ@)HoP1A(7Q&ICTMqmFcYQW!Xr1sFq8G4{>OjPz*Dt0 zJ|#a1gf)EvynX&PLPd;m9>j1%dr3+b&o_?|!%N)|Ua57AyJV8mwMD1~mZmn`b_1afNww*zqY&!fwZmpkgZaqD=Kh#Hr^ z)3z7+X%@+*l`op-Et}#Dev^BEYeut%#Iri%H%;`Gz|E9EBb9(3#|? zDEuBOevVZJ%Mjjz>6X33e$?M9#S(?~K|%10`se8>1>B&$`%XZ3Hl8z{kOgEM!AffgWqvmL zY_^rDk!NctgPAz4CCgL+34eTBFs`zNq_^A$usAT3k>O&Z^otnh4ET{dHoGP0H%~WH zqn7iAB4P9(x^itXkf9P2SM1*e`b^dWZb$>F$*cw64ztJwF0wF7-zWoKBRr+h$OT9t zxqv#-mSBv!eYwd`5`F1jAXDTRg8lQBz zjL-I+wa+j$YCL5C6Qz{0=J)9=Fe+d}F(t0F=D(Q$j*h$khc&im$dnEOGa#X{vK$EH zl>iW!}%E$=~f`x}k-;~L&xqHJ%?G(YuKg)vt@ zf&NmU4uI$`&&U5D3g^XDhw@VPaG*E8ba8W_H)0CN)6Ek($wft)Qtu>T+NjAjye`OO3h z{3AiXhy}U1v7bN`c=`k)z`1zno~QcZo~Zb<257+b<3V{G9cHlgnbV!=k-W{7e#N_8 z;F$}CIfeZf;OHZ}3Hn&ox9^`|o5A9os6XMF%hdclT>f2(E_X&v+i(bXSA<5`kqS~r z?~^KRyHf#EwRH)viJqpbrP6kcTU5JA;MP8FX|*SaQ+52`v0sNL-mD@)K3zmXrNvop)CP)YXc`-i zhcZ~cX2*~>Cjzs0rhRrDoviyRhhMjO+TmdYt4kOtB`&)*g0HeXLW|*pJ&*dzr)LVm zljS5X!d$q#`sUHGvqOULcvUpaXlGt7Gd2UrYNy@0%;$4=07M{$#;%H4AzHNc5c?lf zBi~lHF4OCHE!9!%Wu|68r(bM)G3cB1Q2Yn!zu(RCCi>p`07ijGC{X~B2mtUxsEz_(1`tyIZE&UVQZTfxo}cZZw-)ZV!!Q|smjbe(%*5+3s;T$CG6gBQ}PXa~vS9(s#)H3eBTG-ua zUE(L|;_yFNQw@~U2$zG^6bGSMsl9)S**iSvuSFz~Pf<}cp=zM2`Y0L_!3WY=fsKfx z{mXbUVWTv1CI$QY0t!BU#*SR&qx2ler%_2!00N21t%$Qpwl3YTi12}@erAL|SN>LX zN|cI0_iv?)@aj&yBB5moU;U&2ebS35K}+^fw&VYfZ1beuQ(2FBHT(*VPvi%1fWZUGu44Gps@v^qv`6!~x2;y$HMnlyIWRBh5B8svv1pt#gfdbK1;Pp4pA+<7A1zR`ITqY%xw59EF92XKRwNm`_3KBVqYC?TXObhdg;x zm;CaxHp#Pz(~-@sbwL+nJ;#lV4P(o4fq@l+_<@Pd{en~;BaQKdwtwv`6&5k;LP+P9 zP%nqxO?OA#JiP#CO#G~MF%tc@%*PnkBzwf$W@+EGx3J!B&Z&>qWsI_KrHgUc`o9>~ z>b;^d^@}#vAP-*8gtJ@iHP)l-gQDUSI>_+xS2jD&W$i7W{z;#Yp475Z>C^w zbD;X?n=!i8^*~VSaj=CcLY3yAK}U;KxONd8H3G}JJ!I^F;{HG5rxL7T0rTG2fN_r6o(ia^K3NalI*=8sApBJ| z7fkPpzpRusT@50kpG*;;+C`s(A8{R@Jedk0WsabZ2?_l7!mYx;&smYUSN-vXfiSc` zwDcgiU;BNX9x0zmPz?YRTs4^gCDKzcISSzBLQxi8bpDrVlTFq)#Rm8PWm@|xGq|=V zEtSlR{%Hx_!d8#N zhu-wL!~r*qx4*eZ(^5}@KXC=SeR470Qn=&#YfR54P=6>|-MtMABBtkwzx|&Ynd7`M_M?186FLCRoS;n=EoPsP)-s2eh$FXj+EM~{Da5x3$1dP zD=471LXOJIcmJkKz~sTti7EQ8eE#)Ws<5arL_7M?!ZbJ_eKe!#@;~~%C~VMvJl?u_ zYw|tVqHOWNah9Fp>fisfBf8f2%YE>*+3oCG`n7N_q8z`Eb@g{3iq-NebYs2TZjOi^ z#10)~hSG7PB;n}$dV2LTC>j9t>=7>%yPL)EPl++z`U5w|`;YHRvzPz=VmtxhLdnsC zW>(IzNuua93r2kGp>e{(HQEc))O$w%KhSLJIK4Q-x-He6r-DtIO%Nb7G1eIzn=mZC zXy)0c9B@xL5(81Hbl^|P7oW5C#suVLmVZY7O>9>~J0DtzahJ)hBPg}eBXjnNpCQAAm#aP~=VnxusXX&)^ZG9)zbJnV z7|&c>o2D?<%Ut2Ay`f785Ju?=ntEpL*HdM9!vOQ5Ikn)gXaSZA{hVGZIcE2)uZe8| z_rD?Qu=BV3Dg!t{80|x@KU!O6%jtTWX-{B-2Kg4K1=Y!Nb+FTmzK%=7-koe}PM4tb ziOG@(%rHtZJ8C~0syhh@r{XgDo3h978*zIk?9p8(!g(PsiG{$nor%m}1*y9{fOMzX zzi#R2AF_5aJJuv*{+gHL0OrX7#Ln7k9^8Wy0l*&+ov%*)Zv_1PF)Qd|nmXym$3+hn zMrTNX&~Tqjgsx3I6N#_6;o9e(<@AXLXjq}S9=CTP01ciXoCiR-)`%&Xo2QwElr8Re z24iT!CNUAtjD2zSTQ*154%aN7?li#$z4_*keN&-S-|WDDUI3BbfInpG@I3y{{35Es z0(@6@;D17^H*%b1-FQ{}EPDg`Y8Pxc3jYbDgz={owHA+RknrW0=gGfmSGV48JN0f| z?rF!`^fk}AYyzgU3S2n{Jk3RW=mlgf8{Tfe(-WB#)^hM|gUhVJtGD8_1BULo?!Zg@ zqu^rGirC#hhJ$C=n?LSooPIoC%&SJqzMMSojqxh`O&&b=Z`MIC|io zQj}Z>`?J+03P||#e18%*)vYvPCghz00S*O7S0(jeb-4?W?sP2ggsq=bg1=+e+Sue5 zkp2m2PE5i<;^N-Gj!*tJ|9wyC)0qat@)b+w#7qU~qtAfK#h1$EQ?CCk;BOFE@5gw{ zQovmeV;e+3mFaNr6hhbq3W3Ol)fYhQJ6hS{ZqfR6)-y#4H_k32D^q0~6s?UIhBN93 zU9`>Y1!M?EPftSs$}VnX1Z|K;xd(A-c#bce&mU0q$a6zsBF+XB zok*_t#n7${UACA{8GR-noa~g^je_~V)M82AK7pif#~Gvh#aYFu9;|mGECOqQ!nZx7 zMBLWqb;UsiE?OrF!p(Rqv?JqpTIzcqMPe6%Rj2KfEAY3-g6xD-{#w9Ugcpf;Q;p0emLM;9PU<&PIXNE{$)sqJ;P;kbY2 z$fG2fs?jqQLUZ}4W*oh2yWfeTSaXspZ<^iZULRCEUU~I$3z(8Jn+}fYzOmkl*YrNb zC5kG_0^EG&1I}ua=3RABJqbJ6zAZ0qqu}V7YSJKgAun*bMqR6nP8|eVJdX8rR?_si zuaEtGWGz^w@>vgUq5m+_O@BZb8WB`fuWS%W5vsE!geyf3JH-IDX5H zFNN7IEqhMsv+>p_T06I8^SWzvZMQrNAa-i;CULl#b?NWXOZ}&obn&b5s-{*=ERWH? z({FWAwg7^X=>wlplfb-&Phi&7xAdIdB`O4RT@3&l{u=)#A{^{4`F z{>1-)s^ln8%J-+A997=Xs`6DdAs|zZ8I$C;y8}w)L;tlY-EX!kd57Z2>h-3ZgBU+h z{W6|A10l-zvx*rr@E;@<@-c+MsO#jIXK@CIgjF1T!&z?IE4~_Wclp#=jFf<`P z`i;!{ZKo4(Ipyw2n0F?wQ#Xk_j#^6nSPgEY=T4xa25KPP#MnRn z*Ye0tX(7`7{a?Rc0}-)PI(Pa9P+SC`;sc;Y;{)zUiwnVke}6&AmH)I@fR@^yL($aP zm!;U@MxYQA-|^de-NNd$p+wD96|4`X7-U+#{>le9!dMK@{ay;@58%-*uwrahFZN$Zj+#FK=V;AHrTh*VjBLp z5TN5MnfH*z$VH5~vfy;Vv_@3vYKUV~^ad;1<^-5l%uP$Z8Md$$aKn@jBDZF>V`Crqq2hMN6`%_H(ywrK^bzC5L zKE2kJ?nQ$xaJr{BkUYh%WNkc<@hHfK?}W&YS7;!9{>xU*taEFGti+(Jp{N#joMl!! z;G{{hJ;D9MHmkuy^?B+pS^fDL#g$eRzuzmIk|xT_zthv(aQFu3K!@F2t+Sird!NXu zrC_E*&$+=Rad~TtsCCEj7eMlwtS^|-KZXwoJRsIyaWPHT8C_0@il=ru%ypY;YpnWy zhw1({y3xi!lGct0I=z(PE7i(o*DgYmX$DS?-ZD2rN-sG-UgQ;4rVgGe67;Hkiq_Ll zn<2dKhx~_h=h$vw8;izMViHw(oZsstc5>9IGH2hjM|?Ki5;SabI%& zKLa70dP|chpH2~kDpLng(_e=IlAu}MZu9bC%@X`Jsw&J<_dxq|tzIWhXavo4anlEz zYkrg`@I-j@s<=cef&Z+l-9fW|<_{L~fFm>`T+5J0Q`hTdj&s!p4z<0>Io|!K^CZ{Ksro?U zv#y{@mvN^sYUcGsxI|*Byz8Cc7~C9$-{qYmF7JwqU$Wt6;&)nb{GML=Ukej%lULAF z?$}UtrbXOrb2H_m_0(?hY$7Wam=JG6|%UZ{a3S@iqfsp7hD)r z&{f$vpsnCnv}Y$e$UJeqDejL!X_RTY+D~(;(aU5v3F^uNLaUCG3K^PsTl=(jtL-Td zk*Kl1OvXZhZexEb~4_^t-j8`I3Qs?IQV3zZM;8)LjGGV1#bLaI#C<}cm2N9D@bAa zTU?CBicjWDR;~E!96|Ltx_m0oaj-f5mRHYV-J#My26&@7iH$1uyr&2k+&DJai8|c2 z-~r1cVBjQyz+&UrQyZmtDh>wL_i|bli+;Q^|IssBvW_VGx0R2Qv>ofaCiQdPG_;_$#fqwM%i%_>CE#wT^hOY^PKxF zbr<75MyKXp0rh_(@)Z_4FSl^c-!jKCYNu$g*0u9_ce$?zk@RVe(vZ^gt^dKEs!;tu zqP{#Hs`vdnsYFU8QLCFV}U>?2@qp;I>%Rz7cAN%;xA>KwYb#Q$FH^(>4&u z&XUCByadMBurGIWGana@M@{8fkc=M|<_LnWX;}=iw;fy5r6!sA{D}a(3&0p9SDS0n z_Sl=OE`w&Dgjq&rK=7TujPAulw2?`MYYK=>_!Z3-?=z9r;t7S*7Kua?u$p>tO221x z7FiHZiCM!-%}RRw!Zpuq&?x_OA*-FYj7Re%WfsKLUrBjEZ8~Ra^ap(sbk0-36h-!xSYwFs59HZ~v#90^QqiWJ$@+x3i^~faJd$UrIB-8@{xx%`UdmrBw|U% z_q=`>&z^MlqX=HD#90rMbCY(qrEjPsqjJ7)(^_b0+{*d?aIafXq#t0~VHQPWs0NlDodx3oh=v#k-S;83$|0D88X$zdJ0v4Y0`oNU2IHG-z+H(w|hQc?&XW%|ulr=Z9 zr~>!~D9LgzSeDOl5k#9-UtWS6cjFggLcD{nc&L-53|+h3&Veu2xC}tr%87ENBokxg z|CGX)??JPbQ;3#h;TzItVD@5%e0@N(PuD_`QtOwe$zbye8$2FKa6O*hrW^8}2xsuh zC9=Mg?JcepN1D>b=3^r3f!<1H<`R*y>Wbw(_)!In6rGjg`anN0Gs!{d%X`n_(;W%Z zRmT=rvFJ<^N204F*K?bnx_hy&3xVGM%#?z1zLdz;@HcTP%q)M@F4kD(=IjpeC%~bh z>aN0@0w%|Sq49l4NsCI@Xq2y2O}*m!xwMZt6(^h*VYU|mm;>d=z{j9qD6Zx5TWl%e zswjFEuIUrJo%BpwmDmcVk4;yl>5P^dOmJ0UE}5ZFe@*|)CHfoBRok>7+T%gU@gr#v z&{T7!{n2T~od(OxFk9P?Z>Y^d)Y7PNOYaYo$r$+0_KO@yDu$p|bCNq2t6LBAIU$Tr_{?g)A=Ve8TlL9>r+ zJdp#Z%q$uXl5w?0WeBu;G?;h5%u6XHmS25KX2@VMI%QiwJX>s{K$dCq5LMTYWtq#A zt>bmtr1Fcb`b!fynC(s^6IbLTRO45ny%{JV7MNRor@2l?Nh@^!@#PXf6C7r)l;5BI zi$uGUV|Uabh~B|L550xi8){`zQD? z&+Nz`eEWN>kAs!0i9x{mW=DVZE`ThuN9kY~SYLmS!! zvn;h!r6!hDNWu%)C}hsss509XQg~QkR#oe2?;PWFFSbu%A7}>O!Ud(mg#@>_t@>%E zOyp|L>>MDb^UM#qJp84s!S^Dzp3kK!yrfHZ%SNY4Gh!v6q54O$RbVKd#$tm89>L#H za@&C{o-b1h6g}x6O6eUdwG+$;(bFc&T_B2B2a;FZnRwAiuR)t5Te6H|(vM&_HBSc+ z8R(dnyB6NKKPFMT(Qt2v%^$De@yQS_@n6AVx4W+Joo&q)Jf{8*Px8y-7LNihE;loV ziN32q$cr>6ZN3K_uEj>RMC`Qf%M-@RH{X2lnF(Qt=tOZW9yLg{GH#^u77T?)r&h;L{M%J$;#mZRViacY; z{u_^#2q+>Gmnn8VV9CDoP=|U70ZSIJILe={ipYOhrE}-;2wCSH{~sVww=hT$G+Po1 zz|y>U|Hvq!EE8sW2KNUZ01?iU%uz257y?SP+482K#o~vR3GD4@n8`i)V)K;s!{WJm`I;$)0YYmQbsYm zevTwt8g0_Arur@>`%?_8mYed15V6jXvwG@&0oce>0a95x9T=fdxkBqIg9MnvOh~9` zV0dM4$ObNw#ZpUo4#0m~KB(Cp+JbU@ehd|u^)IiR8O=^>nkBm2Zm6y@ zd%nrpa4ghq>_zcKwPY*pei_A-qay}q{aF8qtQCW>@D?}Xiiw^9%{}v(GqT@V{Hone zYz6$tup!P^!KGX9m>NJoz&|VYyE~Fe(9syyKDAwSY=w8&xK6*s%rjkA+2Q?a^)KS= zRqGGiH0)#fuu#y4RqH807Y2wnd6fHnkN!Ut2`rJ^R;3oeuo7Nw ze*D_B{2p|$cT;GQDs;fIaFz;8IyqcbjVPftO5`YN|CIg0)8xLRN|pncgN*#FE**Nk zt|G5#5!oeY?sS-ph&jLu?2_L(`;jBPN_}2`_WXMBKeqSBp6J5I`fl5%Zxz*@RMnA9 zUB`%lfquVhMfz(=j*p+2rWW9M>7XCp3-NU?t0Lp0ySD16&qo%aU4X1$ zVr4o&bBDiUevVBOWy8SAr#@fG+S1Ff>o#eZFV}L41j2_xq2!8IaMm%cI5A)NvetTq zPWade&4^WLTmpU(5cpJs>aMiLsZ$^S-qF-M@+@R^#3syk1dWdYLVX_9PH`a(9RZxL zO-*YWG=I@m(YY>qh{!TYrG7^D;6`u<+0_x1y0J!#$Q8n1h0*fgj>&Zubt% z|CFX69H}se`>P%kue6VHK<~~J;-zMOFRB(S*jeF4AO2xnFV!zMs~yabU{1+VQ2lJc zC1MIYmrQYLUyqE2^eHC+zoSKuQ)QJb?!GoA634c83)r+(MT)9cc*hp0xODk3GGvy$ z6w@6`t3ELKW;eN;)sXNpo(otD8K-`p%$?P->i)@`xPRhd6Aa3CjDI35tThEC+zwP4(H+2h98oh|IrGCF9-j;3@BMspE%xTh#v=!- zIS?QpwqF3c%|p~ClL^Z+-mT09q`FT5i7qCvy#9j4x(WxW-PH)+Y6F_p%d7OvMOO_x zYO6FpUD~rtH50{UJthstoR1ntE-S?W8)MbjJ&wQUUVwE~t>9EjfXjCwZuZ?$aDEar$%Sna3zVXbn9tutZ zSB2}cU9SDkp!C|`Yx@i$W0cL68+T9ru2F5gJ)|WX+1aE}Gd##dLI1P#)eXvqhjsJ2 z9rnkhfcCB=Z&kMZ>p_mVh?*UwB$?{cGcQZ4Z}G|;{-@LuIKA&Rf6F+wMkUcvcMCb> zpUfFN{xCma08)`)a@yRtgG*YL6N*8O7>vxA9Xa4IXI?cTTLi%89<^@zYTgv~Zn$ZS zqKZM5n&$RV7WmPv)Ou3zw2oS;{3nvQq&lFa6ZgyNiVM!pZ(Fq#ZJDir$%S=(`sdnY z)|0bZu02!dTW!cGQuiHFYSY5T9^o4OLE?C2i815;Hyk4_Q3PtK&n!n_myk@ z;Vsjuhej=@?lkAbFoowEs>?8wyDM-2U-((TM8AoSY!*373MCNetB+MfChlPF{1Pxy zj2XjBS9urok5Zkc+Qt@2yiNXTWJj3ej3(Uxe^W;O@hD|58lSS-%`ZHPkjyRUljpm$ zk2#WT0ApA*FY%aj{=!prwBcX0`qoYEEGcyYc!6-$Dgp0%Tl@Xr#}iO$GoWz)^Djqj zPR5$fG=NxsoWE}sXOI}$$vGxT#*gqrERt`SarSKOMb@q%*capHRT>BlLCp07gWK`c z)6Qa6y%Ez{9Y2NsDyU7%tM96CY4`kzZBK-so>b3$?$qFTzIaJN^^YEx2!Z`kncK>_ z<9dbr-)Q*?PwT+QM1)$69>h%T0XMAK$PsA#G&OQ4yciGa5T-(?&pRc!Q!${Yf#V7^ zIs3)H%i9A`Fcx&FIcq#Hg@|D=7Rt1*$EH)%*1=GyB2?{%{aaVa6I^YOj^-oaB9hc2 z9RH>??T@Up=C@#YveG+gTD`Alk-z1wAT4p?Y1uzWrfU7yE8)ttb8VvUej!IHjwP0h z6yJ&GltHaExQ0roU0t1-`MO~Jf+c$0;8i0kS zUg$EpUs}>pX@@Q0J5|tZt4kLB4(MJ?Z)C=m>Z9TOZOW#XTYQiMy|#Ccp7})J6@*6; zvNi%ziUjk;34bl1Z0Bj)r8^s^{hW`{v_E42qukuEutT;k)<(ZLe%~D&^oUocjlMpZ z_mMk;@xnjk;Qc~M3Rd-^D>lyW=OY@i3FP97?;lv^$1J+F$jA%k`EERqtvAQ)YqtBJ z@|Np>rTEsGoY;;mo0}L9;|qAYL_EJ}(y*PT3PhX~IYrL28g~I*g8%IZpz5}1AQMm& zrkEd9Qlq|KzrLjulWjw4BA}mMdMT3gRhQdC&l@s5FI^` z0VT7XB4gKTg##V-rji-)=a@g1RbW+SioKLe^QMr`m<(iKa`h({DwwZpTtE)!ub}>$ zJ*rq8>_JlKu5^3z$u@$VaQ}81G;_yxRXZG~IQHI7Z-#WEC?1~<(u8UmxmRZoj-!iL z&^Z>bkfZhT`hMlwI1G2I@Tl*vD>18jFs>AyJ@UDxu9O2G3}t@pJ4`m{nBy3~eIs#> zPll$$j_gwhq4V>dE}%I+k}*r977{xkv3r^3n6>=g;>pJbPq|rC4zZgCzH9}_t0Jq3 z#}F{HZTTEqA6@5jx3BVNlcdK5WqxNW>@0xe878ho{Lir+Jga6a%>AlzgyL?wK`HFb zFvti}pRb;167k%~0dflz7`d>6I*mtzTg>_+q+_PwqH2&zvwM29C|){mjelf_3!(!;)g zs3v!pAUrVw>O2MJFz}~~b*83dO}5&PE$q@9B|_txQxq_nKfQb{p@NEHJjR)+TQ&^F zuv8$;$%(V84vV*7|4N6Y52#(}YPPfm=kMWef3;{b`p42L)Efs0zxNv8m_o}bL2@;a zis97?ld8UB&SPEr@AT$yA)snLT;ng~LB?1|h6=e6Hvx}-$U4Xs>AJ6@0QeFpRFmyn zhQ3^Vzec8BT#u9h7hN9ztL2sp79z+DUUwlts++btLP4q&Sm4zsHF%&5&8%7fhe45L zGd;nn%aFICY^mR$vM_5~3@i6Zu5m{BHf`^}qxCf=q(Soc;5Y+m5@ywJ^0NQ=gk+xA zuTof~Oqir_LKjs5{k^cFRJ8xr`g|tYwQN(>HMp2 z3OEtD2upX<(`#9Je*bvwz}JRfvim#}(jU4tSrqrH}S7FX2%A+jlhjNIXQtJn? z{}bJpr$yfMDlPzv?eCZS?Q~$G2`{VWPoEx{DjuSP})h;OmmCz$MGbk%8*K9RP72pWaZ>0cYWv@Z2T}zrt z`s9*}(F|%tV7ze2=s`H}ai}nlIanOt=+^@}dR_C~AG00#fQ9QZC0)Q^rSG)C(&%W?pg6qnJnx-#i{WxVz zeGh*7_p-C)6Q8~$6U=acU>U{g1eMhe-9wP`ae3yF1W0A;W@NYj!}K@%;Kl}XV{eHv z#T+$RM)4cvyR1x3!lY3jRVY04AaE)kW0rXaO%CF(o-y;@QaSgwv~^({Gi%(nb63u$ zodOyZFr}7FJBbV!?ew+A?(c&3(z^oYfhNDe3iKVB{CRs@2N7y|UmO=`GM=z+5c(MV zM9oQVy7$4Wj*ZWJMe%H>k0w!jw6S8G__q=>oBsk@+|Sw~Z*;QGmjhs_YB;*>>K+8a z$%~sD2p+ZjKZy7eNTG04FC$X>asPQ`5!u8&#u(c7uD#4}lDyv^n8!q<=$KOvB`}vA zuga+}Mq$rPBsUkbBZum?#ap$zd(P7*JHO(opo+_lN)x~HU9;8%czt5jEBG#$#*@OF zPD-vvr$L@s7YBcb^x6!+a8y+@nt{9})VsxiJrctr8RA=c7CWJ8M-$?P65zdz ze0Qd%Kd<5L%754#(dC%+)x^9Ts2g}WQGE==Ltv(FCxZ0g7ih1%YLq`nHyKoe7fI$; zr$bI}o#NOXB4>v!VXA+#UU_Ug8)|pc!oXDG_os7NQiXvCLSCNiaaI-SlMYqcWf#6d ziEH;10n2ZGpRYZTu?1MZ(fUW39hipM$8jak0-EjixL4;0c?AW-(#u%hQ$Ds10a4}p z^`GNIr=!AiE*7Ng9U1OrtrH>N7HHI5fzAN5V=HleSoibP#mRcBa)<4qqtZ6#*7prz zPWjZbl-jeRukos?^nhW3X&ouparu+y+8X{6z1}sRYW;BDl3;)G!Xfv(iunYBl=i^a z9pTt4M$)x+F~82=XA8=ie;8QWPi?TgBqvutGo7%rzSKOF1jzmka={Fzpid{~T?VqO z1}WzjA&q$)EMM;!YUZxJ$4sQOO#Q>U=1yaFi^x{z!;nFbPRSPRaTOo~=w6#?ky&}z z$|o`_Ri=H_YggX4J9wnu-`L#6tO`E9Wlk1@{T;H@?GNRMT8W5y;QMa-Si;rx|6;W~tA^%HH ztT_h0=`A%7`LHbt5XkETAOW7|O@xW;)bn{aihl^Y$k99k#HlU=0k>`kT#XA;y6UsE zPaXk}Xy5@TScz1UIZrb*t;17)a;51-u{)6Kpz_Z_&3W_IyXlb2#$)9=&Mbk4p#yI2 zeWyA)G|iqs-L35SkuPYf|C37KVSwe+Wr~Oo3P;SuXLuS-Tf7($rsurqY@CtK^qTCN z1zMPb3SNKr8ntE%P$5Sy!YExDg%EDHa(3JN&se20syG(~3Z;*esFy7aQ?k_F0s0nf z@tsKq*e$LO_y*;J85@A={(ZJWb?L|6Kq+H$2@~%^?veZ6Z>oc5kQ4LSAJbaxk<{f4 zI7hZH@6-J)(*196)F%zF@c%MdmX$9(Vv2xvX>_TPs;XQERy(Fy&+}n3Yb{uk4?rE7 z3a1@-f59>Ay}1*r!nU^g+fBj5P{P#Zvu{`MiqFblv{ZE2%QjQ1I>_|45{WA^EB>hVYLU8XhV0c(=E`_QfBn81!O_KmWaOrTnZ`Vp|ISFizo~8-%4z z`PKD^Fs+1yUde`K--6GzF3s5UTke0asopaRc3@0P?1ukloOt`Mv($vM84v4noxl9m z-nr}W)4RL~L`T|G&gMue_SM9h*{$CC`BUDkP4=RMt>6VQYEqMDC$~WG61(p?Mi1|d z*BBPd?;1qNbMAAOsLCXQ4VbIOtv8$3(rQH}N2*ByEbr=^9JM9}9*GN}2Wuqg?74F% z8!XklG=JP?(H3hOK3UtqCY&B~a9itYecU%ZK3ksN;8WotYu>oaGafh+pQAzWvC0Zh z;EEUius4wBi2h?a#lMgZr8%8S1GnPGuM8dRsammBpV_oZ(z^zC+uBB*r##<}B_z}rjW7ls(j!hvwm3R_M-(uALN0mN z8=yXKsq^ISXhUueoS8Tbc0Nt5I0pR~K;ML&yj~dbty_6i#mH~W=(mBr)n*NCZUbM< z8Tab*o15`(m;7m4Fe+^f5%u1xMkl;_q**DknD*9lX)vGf!w;s|(dhCV5$8|co+=bI1G9<>vzgSEw@R59MOCCQdos1H4GTBTUtCwih%mA;# zVZ9e2YH-qcfawl(L=|N6lZSrh5A}(tTM1Ei$%PHtVYwUbBnPMF*x9B}FOX7-!ovlg z=L=xX8#kn1Dh==7b$8(YIS$$?R7>=(LQN8?;_{lt=ch3!8;RLQste^6EC;+jD6`n% zu4ZD1S9p`3e{Lyi$}uFEHG1*F(EHwm9NNRf`iB`)m=KLSJw2yw7dGJ|Ql&Fe{bII9 zPbC@G_jhoPuVX4|7{3mN#Qzg8LAcaq*iWt#a>|zdzz-o0{hTcx-xRA%ITZ+*O2tq3@M^;!obx0;LP|K|4DRi`gAzSUJe(G? zCD32WbUOA;sO|EndpPe2oFPB$!&CR;ob%p@qvL{W%v!QeO{>woMBc-zXWaTkSWt8N z?T}|XI$y_ErmnXb*Ow!2e8gc44CZy#p3ORW2^yPFy5`Fp(#{QZp>@aC1}C0w)&6Lk zI&J+}#;RVs#Qk-psKpPK9SWn}hS)$q+p~}FNa8J-{azuRSSH6L=1zX=fBT;0RRhR^;XrJ(G>eKKxIn~XE=FUps5~^_)CXJrZEG8wFa6zYVIW@B5 z(1pe+ky^Y0ZqTfO2{NLbx>SJwiKc4bGcX%=T#0pO{v#KV(QEL)KlS;+bx+&C$kR)# z^BE_MudBX4K#a?#TK&a&Hq@NRQ@nFFTIPCxRqUpUME$u-9-MbSFF6|5a|}9LH_OTT zbek@^McsOH^a#d2#^8jyEpbKf+@VxsOMh>XeNaR0iFLT{sXN=+2AC87+@r!<=Zn2W zJdg<|2YGAqsV1=ejWV5nL9hBe2NkC3uhvGgM?ZMo`hF>mLRNJQO5Zcb*;tFQZ}7Mi zA&OhlYIeEvrdVS0*;f*wjpFq@3@ZSBz4g1HW2YW_&7;LwQH&o3yJhbwnM)9lln5rB z$BxZjAU-(-si^d$m=L2QksmsEFd=~Haw9k_p-)bEv8>5FrA&Dk@8O7QPW~~e+qIB` z51_kpwXvp`sJ%*nnf>4{&<%#HwzgaMeM_B)3Uo|>M4ik)na<}wqwL=_|J#6ROe%SQ zAVqhHW?~ENU$`E4(C#wrgj6k8EYY2F`D@no=viZL^Zd1r_yyET4DTY=^p1r+RGN zE}KbBOMS0p3L^O5lWE&D&wTjhR73%!7FrUgKEezCtIyqfG0#2UK8IdcITMNJe4J7` zr^s$BY1#kugh^(lg_>2qO%(~tbYZ&;b1&l3(K=e*N7 zR&GUR283h9L(xlK&T;brQD@?`69Q?J+%JnTz!@j9ZpVc;s7+N(p0UqD4x{TEtX|^6 zJg;mZjSGlrXBY<%0UDo0dMC5pA)%q9LSO7E7O*%Zr-D&%Kj8jpBOrwvy+!>K{+>OK2fimCbbh4_$Xl3cu8&*dxBe z&wgk~riY94>3^OWQ}qxj=54{peO}mv@;0N30yy!W51+8&bH3>2h+h2^sU~i{cFjEt zGd24-H~bCCD!;JrR&s+lb@7NE@u@eh))y-8o5&sImuLf7_#Y|p!Nzd3xD8TD>5pH< zSB$1(H_MOr=U+Rv5h?p`-L$E2a{G%U7b^cde3DG4U1PmG@mDIG>LrUs{eJy^&-jSn zB=arg_--;~SZ_FQ%I#8ZMvu#By){l>hLr~~Pd`LSh}I(d;D)+}I`?bJGciA=1m-3R zG<~CZoD%9hr5<)`B8hE|FZmHQ)4N%t>{LaMt@J9YxY;9}3D5kpORg8iZ~} zT>OR|w*I8-K0p(hIr7!NPa*{IZcU(Pl2G16H*$K!mE~7aV2E||A5Z8CL@2MnYx6L+ z)3H(X+pLplqv`K1L@302iu2ql{8Dk>Tkk9*tnDAEORKMAHl?4@dT*s2m7dnOZ8!3q z4z#YrpOwz)n$jzV6zmz$SIPQPVNDjB(jrjX^}NiOo7RZ=n@Hy$-V}(ar^5*Ck3zo0 zkuh)fsPcS|VImDa`=y#=0IB&f4!pLA_F=KTmdWB$S+|>!couqB+>@p#AZl;HnP=6e zsvcH7fI2nI+dcW{Op%b1;!7f*_!Rqwr#KRzwcO?_p5zv(-t&Qj#@@}fs2=uqF|CsN zD6SwZ=H~U>hJ%P!i|J%)$o|`ZJ3NU?0>$pHSCSBy9@NoK4GU#Sqoj&+p|n5G_4fxb zvsesYh&#iNSsH{ZF0};^F38(_R?3`{#?t;JrbUhW)B1ME`v^7|UFEOgiZm)?uS!;0@;!v)V_4bMeFve@Wf>s73*%FJd{M=*s$ zI9T0>s?oVd$Tq2XHHI7R^(FT$2zs`3#@(Efp1efrN#_;d6%(tccPZMB>h>mQ?NfZY z1~m>TJdWz~7R3eI`LPTK1&HT&gylv@omQFsyB(vtW}2*`R7W9t;fB_mwG&ExHd9gU zEX-ZfQxY;A2onC}=WWb8%~H7biTDqnLCqZY{A2f+qXN06VVIG)`rg|ZePZ-jS%d2Z zO+qy4FDsFqAAVDC>oNZA%W;3=t<32rw2B1Z-B~pv&%SXf4ex+!0M+7~2=va3ae20d zulKBSmRP70!dv*TZt1+w)G;JfkyT5tI)>_)m=4&M1!bnnZ( zjmL6cE%F@UELh?kl;CRYR8qVCbW7?ho<1g{i^QJa5m8HDz<$2Qka*~4v2k`WqyB>O z&7ZEAE_GOtVcELC=?PiJzoObF&U|LR#Bo#zR&RXiT13XpXg0CiS)EKJ^Js+jFCWZ@ zUFg(S@S_x^<+f^pJ8^@ zz7m;YcJi))6vRp)oo3+@^P=0uqn>Ln$h%^jMlCjX z>sIC?(&7XTB8+QOA{W6scQ(r7=+joYR- zHO;q39iE7oPEGdVz2}1Q-;@&H*tr_w){Mm7c7XIv(+%+vB77tNDTpI-KZ}*UaFN1^ z-${#1?sDsJ8AgPpEGjN81oEbi*GjjWESjlYphGX8l;2OO4NoTlQpo7O#fadVRrS=^0b*=T8_`27PR zusER8;u8~{@a>~Gsi?zwW#KE$a{7%8FAC_eZZc|WvepcdLm8D|QzGG1cgVV<2fS~j z`{epw;R}&dMC0OIb8V&&CEo_R7Zn#0tEOaG)doS`$nJcE-n@9FDjNwS`jh(6JO(D{ zy`{$Vy{hq(<)kX1aN6zw)pIINv~(V+A9MI=B?9e(iJmNd7y682NX?t_`W?^V2#a#& ztJ2iuLW_Dft4Muby2Rz(EOhstLf+F!gj-~FpTDyiJ`;N3DIUAxQo%8&8(`vpr&{=nmujCzE_jMsTXxwJBOWB-dBjbOJPK-uj5NP}H}}i>KJj47KfQfCxsiZo z`L>4ku@oShr0sU0n=-X_2?4&nJewEy4;>JC#k|jpbHuXVRb{(Aq;M`=%A|=Cb?%i} z)o@GY*ZdG7V~YJ%BRW#5XV|Ff7Dhxc=2X9aado*VYQ1vc_1K@>3EVQ$kob(^aQ{m^ z4z-*}SIXx1+mm1*@EN?i&4XpUBNe}5=hu06Uugsht1?23_43QCoz8Sj*ILKak2u-K zXE`oHCf$GCNdD-tgd>h`X>Q)_yfrR%qR8ZdwL;_|5#m;KBPpY*-m$?h491py^2zSR zAPXzQYJ~k((&(b%q@ql_7lxY``mn6w2a{^ze%7Rw3=+L{DdEQemDz~99Z$xiU4^sX zCb2d$8PKrU2W`KjV9O-sGklyjk%G3W9({=-UnxuWV#QT>&Pz;mC1C4S{1EGDg+?Kf zl{q(rEJxrGykgQJzXq@q2A@6T29oc;U(Q$gr(V}xByU}yF5wZUinZfE<~xQDzaJMTDdVYVusRF2s_344X1AKEtJP)R9R$d+|6xo z)GwjhF?Wu;e)7&g7U(y11`(K^_b2zh=qigMd)`GRsS86`1F0x~<`A#!2WrY%{2i_l z8p{s6_Yi;Zu$001u70EOft=r0Qh#{yBkOc39+nYkaD|g%X3%&$=%=bCp&{|MXh(u# zaPbcjgP2;3^4)_4u*$wi~K4jFzrcUcqMPxF&uTSEpfg(f4(E$m_2(KLFXskI z>{%hO^+4J|L#!HVjoTU*bWyP&RI11~lbsKr$yy*79q zp9GL56&G}JNmRQ7SqE=nm3aXfZ2RME3yO4`U{}oETi6CgfPAyKk4%4a@9?GF;rSiP z*$X{%8(B4L%)7&p+izhWw_zDr9sQ{zeS&LXn8pD@A%1()WO~!Hn11f4$gL2J-=^D_a%c3N@875)M)~{xC!72 zB@nP{9^GG3>;f8=siE3M7VtlA-i?&%kJ2`xt7Joth~V;Lu-3^%;E*8?I3xzmcyXA0 zYJVYRLsq8#n$$&wHj$b*zL0eOFwjnuC}>9~S#+cD&u_~81@1Lj8U3)vOcR!;;JWvs z!G4BcV1LnSFs!P`2Xx6Tu%9jj+)w6T%GopL?=4u{zXzYL`~`Q%K|bLOy8mA4A=PeX z$)T*wJ1pBmh|@mvE@#O>FpN4fAfsqtAN(N`kij>$Cws^d^I+qWqFO(l-VD|5O|89P zSSW3Crb%Ee-G)3J@hvQGQo5fmbsQYS?aInL(F3ieEHUrqd;_06)WN5g1<#*JJekIjUx0nYmjoy$|_F8N{w3jGOFHoY3c^}5g zfxWUX|Ml5GkflZ@UChJxtQ_aI{G%Hta+g)5E4Jjyx%z@e_4EyL(dk#PRLbQNbTP9| ztQ@N2{?XYs>k6>E5&vio{dIOd=$u^nQg@K$PCQ-AkO3=4cd4Y($V=a7zT7o-z4n=) zhyIa>-%(4ysg!SV(Zw)4W}PYjp%z!TwT&(x>|oxxxv|QwH$NT3kr+kQsmaP_84vps z7ofI7rF@-@F6Q(@X{EuwZFc3`({kmpKdF>eE+0nU+ji1;GDA_ouDI}EyPyx|~%7=2AH}|QOJvZoLR8cZYJWs&R z*?o4>%^y#%*!eiisFWYFXWk+OWd|-(b#9Kbal~0Pe`3?>ri&?j&&Gk=l2$6lK%)&E zNphNHI4b3;YPuL+3pNhMc3AW)Mz9lyW!}-)-DR(v*$B!WAE4?KP6ll_fTLwQ>~%NR zqf$N{Mi+ynXX8k?0}iBaE5Kq8q?C%=0Yxmr%eg@(sFdG3frdv|ITF&OlmxDT z1OKpcYM<*cT!-7Qoo5s~hp3dTG{7lwtQ^;M|+7nvtE@^V=&DGT$` zX=+v1nO5|En3!#fY#P4$$T z0bq09loN{EkP}*6mlLW38)hwHdA2tHK=(nKo{UW-Xzd1@<;2sz^M217^yz?pOke&N9SQTdufiywTU}rnSVV!kwQ}Eg*JGb?EGx|LLLC2xMlQS63cuzcY}CC5 zjdWZbu^e-U?X|w1Bzk6^NlI_U{K`Yv9zZsg}I+1zKe_Luhp%6t>Pc{&oK zFpGS|s$z{b#DeRyI}y@_B)T)nSNt}YWbRA3`aXs2J0+CAoZ0#bKQK@DjTMjF)s+so zZ{MKXuq(DMjFa|y1?%IL!F+=k_P9FAlvZ6=_~SL>jUZ~;Rqb{X_S%+9Jsn?1`F&@j zMclScZM11Gc2_b$h6L|3Hq`7FS3^gp*_N+te#iRG+o#Rjh|fa}U`^}j4au(Z5QROe zhAl5g3*Pmc9s6x7KdWtXvwe-iI|l`k)j6K83K@pEpW-+CtKzCWoM-9fNkN+;bDj}K zio1BvH2vcG4R?Wq){RG9WufTXm~Nig!S(9tdYI|(oRx)L()w^03@%3v>tX6eutIj; z!^PTtS*z#gQQ1{lTOE`FpWm)>o zs_DKLMzBR$vA#uX(@FDV?Y1b_+#OAVCMn~hw|P%}TariJKrfI{P5QapeZSr&mJe2l|4ZHGlP*u(w3F7R}DiN5_O` zG!OjRFI-}9ET2bIrQXeP*0PokNA<+^mo5K7Hc~r1F7BN7ke@T6li$8=j&N}6U(K08 zb*+?c`gd5A@Np3qE+*xJ? z)~OUiCpDsQzcBmtVvK!dYsP4TYuAJ&%qK6PY!)(E+qc(?ufThEs45eMmRd~W>zw&5 zsDyg+?qo|{Yj@9N`x`euW&>HQQFr`=cc&fe$_xJK*zSL?0@@s~hmWlf-%7(J2ny7E zP=a$hIPGVz54p}Yi>}65VXS+QLs?hh^6jGmro=DPe2QC?;B8-nC1q86`|b6m30Fd3cb%S>`y2;K2q{_Jp+G-e#5@cBKw z3i}JWd>R?HZQ1miU|&(yO=nTK5B0!EL%hB;Uvo247?b#l zr;t~l6x*H20aH~ZYd2r*9C0T)rWT48Kmpxikc0igaIuz0DkrMnFO&s>=@!^A zGC^`eao>FDG&V*Yax0$s1#3NP)b_9&m)FjDf*NrWLsujj?k}O5HaCb@W00D}o@)Od zjY!X73%j%iQ^gR96eKQb_8oX&=cbvTq1(mJ-S!S}y`uEokBxozUVS8HA=5CM<3&dE z^&_6M)}!-YDGg&dv#;Ybh>w23Dnv0kU$q1eU7km#*DgY_Y}ZTT&rDv@DML)n^Si$*QT_*X0ckoc|hO z^TPT~s3!F*KjxhzbNBpc?_b2arK9!L=PM+xIH zo|ghjvEw+&DBpRXt16#)_HTt;ErZ{fb5l%@j}Ey1>dIzJ#jFo@gmK9(YeKBOTzQiC zBU07QFFiS4{B`Cg{!>{)iSMH04lQQH_1AO7=o{UryUV&dIL?kDkq1%sU z8ng^`Xxjz#5Y2dD17M7GIZ~Ido{MUq>*Ua6WTn ze!bT1r*@y^L(rdz`J~6{UUS|EResNZn$`w(2@1-d$TX;~hpM+k`}SWH!3}Mp!dosB zOz<8UTI&$DJ$auom1`YDWjuV@YPPDJO&o9FjZ4B@llwY|+}E($2}-ScR=?{12og|s z<`0WX=3a}ykB5gt@Ag^+;J8{Q)zI;z{kD&qS^5D#DJ@7uG_&JDJweJlsZTF(JN49pR zq7Mh&8Ce+zDH!l#<~=K+Ny}ds8!Qw&x#uSgb}v{X-ERu}&$_SQnEy84_C%GidnL1f zU!NcKCD-AW(Rp0NyGt~7(TDCg)+ZR=;}8NY*ChIJBHTM;eHM|N^?lGedsYFZ`c$b7 zp1ySvbW2o{+fh}#06VOq^c2o z>5B-VdLC0XIkQakoShgGu6d0zBSs-k#7{)Jjcl(H9X@(acA(4IT*lOHD}+GW4%R-@~j$gQw!4{EAI<>E@ZKA83%O|i*#d|x7x2A`Mp|?mE;yc zwRe?eV3VNDB1wY)Q_!L62)7yCek0sB*>A-Tyy(q9VH6<|7u}#|q|)ls>pg)$8pMX> z>=9iOs3EG=n*=#ha@p>0!faZ^!3wHu{?UNcB35Gz3Nt0@^=73hqOne5B;l*%ct!fXdZw@{J4sycqF6;e~2#kg~+u#vdW^b(gs{5=Ytut0ftWA~*+lC1F2mh@hc zBVC?RT#D^mUU1hN-n|SHI<}4y1_KfSA@&$&M}5^f#tEW$Pp=i~P7MizI^6tRxO%-$ zG6Lx{XV%z3Pc?OEgf;6=dw=>#Rh?(Cgw>x~U`N__`@K9JTdTwAbZ~Cp zlrT(t?83?Sm)q%^r=-$qPnWFPn=ncxDUe{rzqx(Dlm7{y*nI4YjHf?jrF9I9>?dMM zRtpFP@7J-UgDJ+w4n-uq#}m321}=W1v7^K_?cy+sxV?;;Fny~%XB+9$+t%FS$+}S}_O!XNOYYiB&i7-ce`v{X^sh=e5uJ!Bq}?PL z8Mh^H#tY)AvCW0L>UB)w2I~vo4Wdt1Cb*->Jz;dxm>3a;Mu9yM%^jjoyI1!%Lj9t= zX(sOM2R0M#%r}}$Yj%tjD-_H?Bxfs3rokJz!^^`<2%EQ~_OD~GA{V?S2)=8#757=w zi7U4bra||TY9lK~>zn5OMop}Pe@X>kYkqmUa=M|{vw&d-Tz>&vO|H44&oRw~*jGZ@ z`6LgE%H3N9=SG@Li#hLIPoRd5*1v1!O&(N$cM|umEhYY{xPh~WMGi+ZEO*E>jYIq; z!j?SaA;GI(bYKw#_j@ex_XkiJ>yXE?xVBwZlPf2xY_X6%@kf`FSf@$S?ia>7tgDPX zZxs3y)@9bZN>)=|!lE$V`A>r8ki^u+)NqcuEn&Jl%02Sc!_CM|aO0pmqfDlQi{Aa| zY69I5Yckzo{O)T-U4Ti*k8n5CKr@D}>KWGVsR0uvx$?Os)&%=c(P>9GZ5=c|LM__8 zGcf4W{<3&S7>za5>Kh>vuroKvy^#REVa?w4zPf493Cv&+dbfqs+`of6LP8_vQ}7T& zBwR6net+L^gGsWhsbov|Fkr?4bRlN*n`ycdiTm^Tj+AJh+~FZXZ_d3MEa8yl<3_F*YIY+-4(Q7v*#b_TAoO zag-pbQHF2rOaHwA|9=2-K#jk;pZ&PM|L!h!jnTLIeeVCr*}cYdzV1D~m3FRjoGRbr z=e}!^+P~L}opYX34q4&vp6j-pu4H@s#I#jbCHz z`+Xu|`#ru(AJ?eIw;w^XyxHYG_V05XBE{CXdoSO1!d`W!k5=EhevhX-;A=eR`Cj9Y z;BAa{eD51Sa(M4?E4r@3j_>vRBR}^ZPdT>NIDz4zyOi(!XNT(1*P3Bp-FImNS7_V5 zud`c$Kd2u;%4huAaKC0aU-n~=NmDJ~`^Jy_+iN`M-rnP*AK3Zrd*Az!S9_0doOXTR z^lSVmhnB7C+P?ktqnzy~$^DUhevjAEm-rqZ>qdrt|MnAq{OI$vRlnm-$9Br7 z)Ans>ybvYzpjzkH8hOZ!0i z@$288rJTpD*IvHugtPSRQngjTEH30(~dPd zuEh6xJU2ldP)Gfa|NO|;zQubE1>$E=G+3b5<2g3Jle#c{f zwEm#Yt^w|`}cJw z!nFj?B#ftg>uX$Q+itn;@g48=p?T^V{L@=i`favCeDc=)oJIP5f9JFACHu8Ct=G4G zcyDu!17rN#4!MuEE!lMM{c9cl$fv%?Q!e#2p7W^h@qP^1Tb1+s`(A5VJ*Wro-{WT; zb8B7O_j|kRJt6OH|K{6&{pa|QxzRjBc}8WDYMM>Z{vPrb@erimZh4m*~XM!8?9jf1)AO% zxf>dDwlZ71Cfy-tliJ&?;o0kGqpvB;)|x9~Vr9t`>$>7I%u!0~t!wS^JJczo@@9BN z@m^5Ug|kc2E;lN?+F3-=OY;nQB>vj+%z)(p>dfMl)?6V%&q(QON!q z@e+&JtX2DzKDvhK+1e<|S;j#TuQ`+mUaw3GcIMomHzg|AY}UWbei_ z9VN_(wpN+FY0) zK(k1jtF10J;w+oRR%>IHA+v->pLML(aq3hwJl^cC6W_&_S;A&-ZFa4-ws_4kMOj3G zep|#AFLWV{7*{3%S>HQl4U5+lTWo@JjoRY#X&+r=kVvQz8cJfPR{en);-0JVf5SqV zYY97RrH1seB8w^fMm3R=!{U zb4!~vKm1yFEi_M*^7i%wn~?(qmJ1}+*?-BIs59( zcc6f^!6zJ5B_6ft1Y7A{bXvU4HBg$XqOHVj0ONP4T5qkiFj*GXu3&xi^w(5{Q?Ha! zG(px%g}C41>Y~H!uwFQ4qbankvn*x#G53vG>63i>SY=s+hPE-)KUBC&Yh$7oWUEmS$njg8V|k>{@~E-n-6bI=mKv=y(Zt+v*rw<(%1DQ!(6%;{J# zHmY7Z8A`fORU50dWkqIK31+>`xw_63EjBjCRcAG+ZLJ6?YF@o5wIcyzo8l;%ea?if zDq_ZNRxDtc7B*HF?5l6AV%>JDtMwj?xmrgr#gN!oV~v1Kb_RBrp}}CQb&ZbKqSgLY z<9{$kYNju?R1KJwAq6qqHNsw18@(CED)eL5h;^UyYg(1?iE3jz!Z5@73h%6qp_4}E zoKO*SUEa~loN+4A{=>K~`e}UzOa}Wyuhy)`-&vWRUssLJMrEBF>xE@)30oBnz#2}B z+NYcEQk%t_?BegN^fJ~=n95kCve?5n$9~mfb7~Pum`R^QFaT@3f9nmSvh`}ggs7v{ zWwxy7Y!>Fjm`k*^+Pv&FV2bd2;lCQ8rEVlxQHzf-OO>^%RC?@&KR0=si1$n^rGSk# zXEU}sn_;?h@-%5UZPP4b+yf+>wZiUECvoi6%tcU2!er^9qA&nL)^K03 z4~?70q=N~E{e+kPjY%s*sy14F#*IbT9(uu8(D>vs=O`18z-qh|VVm}4G9>PC6nKv% zUHQb}cc}K)j%;C{@r`M(RE-ytD#6g9CDDNAgRLfEDX4TEZ4tK9xE54w7K}pzD)D!G zfTG>n%FsfJS2$3@_Fh*jh|?)HP+aG$&rz|dd3BO7sbkeKo5jC}&C3%G8#S)I#eUQ# z)L^mjiI%u!GzyXj@$ZRRW6nUxkN3&$KoVYB+6P#zgGJe;m4I2RgKc6=ON-AMrwsQg z(RixXYuDMkj1nA|YIJd_wJotO@n-}3sSgzI!V|deF+0Z?7Ecqz9L5|?y0(O^CA<*S z^}^=Z$S|3WMfU=YSnD>mV{4Ca3boSaVq>kysjYyGX6T=*)E?a2hVClX7(VTYe~&;! zVaB&PYQR>lqSWa9%^STi0teI;Yg;4C+{URP+Usgdg5TNb-m0bGfRq}4*HlZNwXdmR zTWz%y7Meo3YW9T5vO&|IRTI{$44B(JOqN!sEnPCIj1i&+t>P)n)$3pr2^hA@QpEs{ zuZ$TebWNdd=X(Y=E-I_5)X^=xPPVH_@TsJzNMl1KEMmQsI9)p5&vY&tMTOt>+6(Cy@>M>QC0ZFDv>t4gb~nXtL~!m)|5 zhBk(8aJ73%_8XgR;@?-ZZX;rSEUbuvIl2;NoR*WILYQN7Nbju*)fdwurdA2{5y=S8 zFehH{Sc{U|07*j>*97M)yq0OTEY4CJ(SB+KrREZ8o`nq<#?CBA%vm^Q8!OI?-ak6R zQQBl;pDrSL@m8=N+QQ8$EqJ+22&r-mango2t&Qe4b>aVq$)de1`cpL1Xcafr-c^R- zLf1oXXShY#L0TFBqA%nKc@>|8f2~niBItyzF z4FKa}!1HQ^Fs;XRzGiVGn2Y<(^Ex)~1Oj(==IHe>YQ2=X#G@aI_ehXnJ+#_C+o z2yB&rt;+HGx|xU>v$pDNV}yWsZ-x2Nnz7vlsH)dP6gLzD#8C;VPyr?u~xj7S@C&>lxPETn7ENtc|Y;-)}&sflVu2I62auc`xXKK z;hJ=3?HGZjXk4^Qyqug9zjck6Hc~*ONP7I;s(q0%R1(w?Bi2RhTM0?&PRb06Q^~o- zN3g>AJiA4&0PjOQyEog6FWO$A&q;(JIHld(SmOhY84i?D*mTJ_L4ueOBRr2I*y0&X zD|a)pbRI#B*n}=JY8@6#@lnQV)E)JrJ$zZZ=bB-S*2IfoC2%s3Yb#;v9EHUB;D8=l z;x%A}eR_~OKy_3d zKKY`_NeZ_rvzi=##6(F-V6C>m>ll@Gb&5gWYmb=Cx~%(-8X}paRaTCXebD%Q$o@?2 zFn-eGwN5yH73H*vznc&ktjaVEHsENae^;Gz;eQ283n4(WCea)nZTSvwy^%_d*m@<+ zIQ--DvAm#EbD!~E4Bw^nHKztUZ}d)F!xvIKg9$X?=XUJT79sU!LaMdKaGW&6tw#5ak@_he@wIffW?-+T9SJ{|5ZUm3B7EA>mR5JKEk;bn z7^DiQ&;@# zlWmIFeT^C2F$+nOA=c{*(VH>bn%XPPK`mtC$L#Qc1)4^WyCeQu8wOP&*v7+?tD=?W zLgC05Q)ChQf#Npe?`S?uT){omfaxsQ;fhtK38TVmGST8CjW7n2rB#hj=UK$MJhu1^ z36W&{mNBB)HH2heEu0rEZad^S8d+{%FahJLO9~aK!4ATPU3~O1*N9Ip!;A;eWmaS#j) z&!BG1Vce(P3aXL8)T*n+zqVFiDxC;a2n&x@2HOqW!HgUADrC~gjcbezkioCqJd-|{ zNMm)X3vulTw*+jEu7#11^3H=GIZ-C@gk8X73?sE!C8p`d(nhmun$X9bG;SHedk)i> zOdKS62w&5TIar*eMzF$3m6mws8&c6UZ5>nNthT0>sGTfFaNEmyqeT}Kg{eXUXhUwFdVE<=aa$cu$1;dy*Q;&JyNUuIo}3}n3I>_koZ2NVbfY!HBf z3R5J$mPzz;HYc8kuQ%bxFIX5oZjMgv;#i>=Jw%x%p;1%V=ZH^5jQL8a5-Z~ylhVDQ zfWCKeO0(q%M>n*r@D+sM2BxvD5tk)fduffu7c=Y7X$jnwYAF>$f~pm14%YZPA_`Ef zSDEov=9I;pHPeJSla}Pg>cJeHu#zzx!Gh&A$-@h$kf6>Iu;y_xM8u+lGO-n^wy`?p z0pHkyF-yfI3S>26Do}Hz$K!G?kDL+>>t)5C4Xv%=84T(1&k;##9z^SwFixOZRzq(0 z8zYdX&b?%h4;V>Jsl+}cI6V-77AtqQ7Q!jhVDCEH)1rkj4gYXq9&j4cagHnz>DvRBPsL_@9IIOcsgS*!=s*L4FlBzCsAbz;m#7) zmw0Uesi)p7L(3{A#u~vs#FQ@n49@V47#4o*^c4=riI6_0D#Us^5v4j?WI|1}9x>Qo zkl2v8iq{m+lt8xCunkDXLBYSoY1M#vm0fq8#bDz~HPUxDSr(iLA$hWJk3DQ0Frw5Q z@1(>et28GH8%V>VI7g77@ogp3!Seb_)z70OuJBL*Lc>M+{pJQrmzB6WCYg5x|)mqsT`oCXSs zi1`w3MMT*Bm}oIzi3La;mm2pHe0g!c`m$y;feNo$$WQ94m?G{3;&D!Ol3I9UVo-`_ z^}7jgnypCT+)lA@fQgpL8zq1!QzIsn&oDcCI50(F9l%2&Z5*IWw8gI2rK}rbdS1Q?h%(s1`z>lwM9PX)zci84|xl)4vy(7K%$- zS!}Bzj!QWO>`GbVr&p7j_J1ue z=JqV?p&GDBVNSQXN==U-6umV+-AlYp%p(YOqsM|WxTCUQ*Q>>PK=m5fHkOIjV5k$c zZ_dmgJsJ{VR6Ve_M8jFDH)Ea7s|zFtWuhT;LDh@I-#JCHya)~PUaYx}8fz~+LaT6; z>no&EBL??;wKjEzBa<4s<<`}Z5u%w&-`|EwUQ>8m8!_1`G*^w) z(hA**=sc|1jIps3Qo!5@7`!q{N4?@KVja;rI8c!-sPJDoF;=%0&Qk4f-%@NQh|&&S zy)~U7i1FqMHq!Bt+@T!W?5C6}hs_uQ1AJ&aJ<~jm=8Jrcs-zah*{4 zG)+cPi(iib&g6Bnn8Kq^0_M~kQz4ZwPj~m>yupBpds(cKm7*cDuz}JMqa`O2mV@xLdkE8RSfTHHP{#dBQ;t4JH^Tfl`-KxzxV~F0e%@ z1vFPO>A__nw7aG!JSfc%SW{1QJF_4_1Or!Xjj&|=87Vp($%Y~Ljn#rq1Gc@@V3aND z0G6|eET-`mrf9>A7!vEH7sMBe<0umf-si#}Tvj|C93S0{3|^(x$n9HoHDXE-)nd9E zMF0({Zqv>~8$9?glSBbwPOWu2>wl5fL z9^AF=1UL<|g~f#p81{Eb?&3eFiB4gtvGXW!qKpQq3gn*GD>2>kw@yJ}W zPJF~gP%P{_Y~B!zT;IT!kh~6g6b4JDq7bS> z{M{PMOOse?0kYx=AJQU$4(aj@9-gC)Hb9;cWyVu`5HS2p#8@Dkhqt1hkQ>H~if@`V zfRlwP%}f|)`}ET&Y@HN_k=hxIc1AEQ!6jux)?$Cc+G_hjWd}oK7k<; zJGnN9E6}mS5e5g0 z^I^<3B5{dSFvX?RsmDTWBXRvAPLOR4SexCL!SuSc& zHiQC34JHkBlH$i0=4W_5X-KhEaW+6p7%qzV!4W>Yxco!G@r#Ib*h*x)VvP|Wl>|Cr zU=6lE-M$AVf#D6t-`R2whjZ;CWE05+A{OD~My+LFd-%K!53UW4C5{i083Ch6QC<}U z7BPtQZduiM1fw3(JjPLzHAe)hH8HpX8aHZX!(`PpjmcI+VCa<=g=ZQub6cG_THMH1 z5qd68oX8NXfH^?w8kL8bE8&7HT%v3-I!C0OC?gLZ1Kgb3_y%K1iF#pPwHZ;~B zA?n$BVUG3a?wT=~spWDVrie*ZROEEE{5vbl$pr%3`Jz89~$GeeAHeQ)v&Y1Yzk zHd;+T^B&BtxxzwtJe+;%+z^#m;qkEXkSd%d3Jf3tFkNqxa^?642x~imAnH`K(h$s8 zq-bSn#1FW>!cH57r?lVcLFDn5S_Ds0!F#334HnxN&^!S>PAX*QOF7wr`N-d z>ERJ50kB0?6Qr+*b>~1(DJ$XcQB!NU*nc7kY-xx9ud$oNv~KW2khV-_m@!MI6g zs4WZcg}67Q13Z!VUZ9LS`JNDEix_gJuF6y6vvbAXT-hK^YN)<1Y1|f`d=3}$Qg`em zVhimi80Edj-7mONO)mrjIayBZ;n4Bp8QhzZDmDF z7j0HJ+QKXGbUp85j9MdvieqzOsudmpUcjOXd-NG+ALNKR)r;(V_&VxTYF1AT%x;1r zuCs=cq1cKT+*&W;ZgJ;dP|9%7ybdQ~bEu*w9KY&%yfzpoJ!0feiuel)cd~E_Cc=DX zCA={LdJTe@YKfm58R01di3$;mn7VSGSGvV(@)@v<8#&O3z5E5&q>a~vKkCGY-fF^- z=3_r2B_+^YAQ%`h=U8Lu zX^rQTLBlA6GT*wwL^6^~PT*PT&nZG<&Pr-6e0BC9I4aEUctz$GHOi!4zMqazq)S|( zZyTXS-i(3_QY-<(C*?mY%IP`=$%dF}V30P%xGAuqXe$uO8#Ok~t6Dsy5U@eny}JCF zCWy!syvRA@&!F78UeyZ4IjDwlnoJ$D_P!$4nmVPEGQ@yE<~LIFXygRUbsWesG)>nW zl$unhk$$Hi+-WWtX@w%j5-@Se>f(yQ;WK#Nh!a+{##h~3Q<_fIyt!|TMrn|qnJ;0< zqIW`u3rd}p@QLt^3kf0!(D9mN-Ia~E1^<}*A}@`sa0!I>RuPzkTSZM!57!)Cqm6`Y z419y(mm&JJf+{8$Wzp;_6pBSmm(M=*eZu=B2xEjYQLhTmFgg{H;-U)i`(Y;F33j-T z;qOuXI#4>G>_2?l$(dkq^t#%J7zI7}vn%dN)s@JhAgvZHx#}JirYK3m@Lr^#Q-tNE zAwUm?CDXj!nS^^04-ON$YoQ}Ud&jzn%Z+FPVirPK@El4wyCHS9R@@m5SxUzU%we`^ z+$KaSe~L1RARgA}3DFF392?O@s;C@JjC;0Bl)bWQVoHZ{;QZgoUIDCc#F z%<$}#E5KXj9EjKSqy-U8`aQ(o5j(}B^J1xhb?7E&Vbu_CewB)oG&5A1!}mj$kK)Ja z5`Ev;>gH)am&p#-q-IdGu}O}&_rN`Zd`Xp@gm1JK;RDKyEItC%DseKpN!)s1qgCid zRGLNz|HDPQ({4@X9NIqF@VL96=ST6k*MEm6FyTcbHZ*2DRZN{Zhuc~rhB6TNH>BAO9v192(}OTKBo zE-yv56SV71BS!Ge)ffrseq-LYg^XIGy+Xvy&lT}Zdcd41C0?2v77C{=`cg={1_h7S zyfPS)%?#D2R6o1=G6iyRA7HVQdJ;HiuW>&MoF#)SmHI2 zgy)Wkn2m_B+Br5fMt)#E&~OZUAV?FoMz}~`p^iW&q@>sr@`!JRmJFU-_e$4Qk|&8E zDlS0xCLQ5@LQ&D>+}j>ECF8EncEA#8HrZ!4IeT3#L(-3TKa?$ zOd(@GC0-M6iUSH&N(~t2l$Y{ZDClah_AuB(tHjhqFP(&yIDb0qg3xuS++rIH{0_2T z2+<@?%&ic_PNa9@#1- zO5s55Zc9MCB68j%Mz4xjHZM30u#zZvXwGa6Qv&6W)!gc_xK!NUsh;2rRlK1xBepdM1t6KwIvZ9zT82vQ6=icI~ zofPSKpG3;bBBsoFw0UFVi9%T16xu~ii@(E;qVkC}^@-4m0XcvA46k+r9v%YsD=fDKZLd0L!TeA z<1{ttuJ;pHyUgX;J+J?Zze7>3oA)~lK?j(UJRVzFkWF&TiffxjeHL%Sq_6sSO*@_Q zKj>%RoiGzd$-+xBFx)5A`AVrD;?eP5@UKyAwCHJd$V>#n@qKE9hLS7g#LajaSumO*t5HiZDYc z5)1YKTo7l=pfVnIk3qU^P}@SpC}L<%5^qKcEkNGMjCzL}INIJL6=}=@RjdaH$>ibD z%ut-t*46IVC9E3M^JCsYrjuC#ZDwBMOXCKzPyB<w8CCYzJ5N|PR)FU^?H;3Vx3{cD>_EMjw)GuLh=qqw4T7o;z@zcDx3lj0!z6IVnj0APsQk+QyQwZ#{|Fnd`cp;FpVz3>IurXyWEx7u`RMh?F8AU_daNT4i zE0%>y2QXeKVXa}|jAGL%g)$uJ(V}qy<5DPEOa9py&85(3eqC0=i2wGNjUONq*YtCw zNN{Y0!o&!K+{1 zD1lGySjVqJ{3D!uFIm^_+6yJ_1RmT%RMSJ`0c+D67m89L88A2#2+5+5BoQMgMQQ4& zEnbt#Mk2)4><31VDIG?cM8sVBlk;uF9b|g+8^e^s!!m!+J-QX+0i|bfc_1tB2;wd;ltmUVRH<>kc)ACh6`DoBXxZaV#jr>_gSTjiAQKgh zYfPORToL#y!66*#L13>mlK5VbfkAJH#ANV9(A_~|&1t>CQXfi(S@igp#3@L%25Fnp zXWXzb17F!uo9TjHPw4ggA%W|xAIcC14dN0;(v&6{7OlszoUT0PaNU%EHRmHYYC~qi z)SFT9&T51xuOb2>(OVjX$slHV^J_@gsdXz{6L*1yl ze}WEXycZ`m5reGBigHqrbKTYmQA-crAkPSm?0ecy-%cUhx0prebX$Enm1`HJhb3#p!8X@a31qBH|k>WK8r+1VDLw6*gWwZd1n!?zVErXk< z_AdAZG&S&+-E5m-F|$Bme$&1$y6axzHoUK}1i4#J*3rYtRp4gA`06zKrd?vd21ODi zVaYHBjM@QoOpsfN_em_;uyx6req(s>2y`hmRtZAh0^8qK`q}jQO@cxpUOSsh1bfKS zYQ!d1o41Y%S}I`bEpc7FEPNuk_tgBrfC#rjA=>b6S`wER>S+TZ7D9SqSx(9jAvv)5 z2U-lBsn>YLMq>DTcGsF)N(Z*EgwQ61yHdO?B|d^P_MPEULo&z>6D*UVy~JydCQ6$) z8hFRAhwV#ou{SCS&oEHvCK92%(}1}?Ew#xZi2W*0aiO*zf(qUe(210>v;w^n@jO;@|M&`JC zX>^Mi2FB#7GdNlEm6oO?3!*^4oOVU)a*YQmZZ10m@z_}t#0FNKsu*vDKE|ZaC>sxu zcT({-5p_k(n`V#`Ku+o#6VI=EH_jk~Kp8wdJ*>FkflRhHly#jjV-Z`0dNdnT;`YOt!-&T!C0Vq857;Uwm(t{-#PAwj)1-R)zCK(0 z9eeul)}LtwEtgD2KypS~%_(+9p_4{CXHqdiw2Q`G@q~rtOM4m@#0|frvz?b{Bd5|M zCfy})RYEry95yrwg#y$PTxVC2LqLoghx9vCF*~}^BPe=X6c8)w6#n-IN*c6Q-RlL^>mDPKx$Pt_D5#aCnI`7nM|2 zkKdN69oTV;|D+kdNLCz`jZ+f!clNQQpi01 z5fPZWB+o6{%iae7?hc>6#@}HRLa*%f*9e$-&)q>!hxpu(qRE)j9xk{-@~#)bw2GM= zaaABH;mKIci20HCQoqxP8EHYLbU2%V=)v49-A8vuIEnYrLK_SfPWUptr28N^GZoFM z$legzEl@v1$B+>*r6imWZ!4U>(r6S)tf5AYdYUXXoz4q^6!eYt>Q-oT187D}DaY{U zRbiVZ-^Ym#O*_UeJp4s%TrVpU^w9F2)&J%Ql4A|-DB)mN3J)igmzNVggw7xLhv5s4 zrPqTg?ILYB{moCKfboe?0jCjqcyvOXG<2a;N3c9-{6kUZBCi$#)X-}Nu|@Q!f=!Hu zDv1;F$hF2tn6O|61?3jk@*uoaokt|SC5+Gv#UWzpnyv}~gRh2E2l0otpxB^v7N!I- zL%7ZE3&r=M-mO8=U5HyTF`emBuUbQt7UvyFAoE_T0rJ+rkeJ7c*hH0;_HIb;hD*{+ z85XSi-Wf1LU>$*k8GU2N2+w$xt3<51(E`2H;@|5Y2OBT{C1Ase27^d!+zDv13?Z71 zH4-tB%hYZnryV}+bkP{~JzNqtDegtZC@vyaErrM{l|3V^(aLnGxfbH0bc<5g9i?wxn;Nl(9RRN*s6%?oV`}%5O5bR*cz#yQU&5|jN`gQwq!ZmNs<*|)ZQSd z?_`C5(XETf8(rtZtEL4rJudmH!J;Pa;tg_Wi5+}kHg9yRsweAf#H72*7bk!vY>vSi zS}jn7U`#RPe};#kel=pu>*9*^;nONjrlAEAsMUyx`wL1z zLYSVOq$gFyLA>I#)7F(3Ku1a?U@pH$salDd0E&c)n}?Q4FqJAG`WSb2cLO%OQve!# z7Cd=HER$k2w!`@STob7=MQ4n>VP82tPZ9DA?~{@&`VWXp;|Gj_HCQAonHh?~kCRUa zgAiUryS~xRhbG=L{=LCrLOD|neKo+?kg78uBQm<89b}DtBH=rq|AJcRfirA|kdvR|)yfNfYs2Qmto{tkt=P4LHp@k>d zavdeegfl*z4Rn8uxOWIELQiw9S+l62hodA;XPmLrQz!cE#c6vpZg8-I2K|rwh^2ct zCRC2HiKhuhL3^pVr6W?MT@0TToKUM5@5QU|kQ$y6H+Sb=OadHqr3@IU3_6t~F&h3J z>ccc4wVG1Z+cfqjTVd6@{8ukd0m=+^6w4*`ppEVH_^uWZ`G7KS$1i=%h z%}D6Rj?YY+UzhYucYzQ#M<8rUk?&!2(X)h`XJyR7iFS>zaXOS_chD?Uw#V6{C@)k+@Q2`s$1h`K$3t2j% zslDh=3fURfeT~?F6^67zjl?fhP@Nv+YFsN|B&fX5iKbBzqe>dqlt%t1d=#oEQJ^m2 zZK8t@(Oa6$Sed@i4d85|3xsOII+fDiMxg|ZBn`cF(T9xpxp1Nki!!nTz;wMF-5|u? z@U{)5Ml8W#Tr3aYc5VrtXuz;Yx{EeNG9ZRgaY~tv7#48>So5OB5?x5t57=O+NsZ;% zu8dH)I-`gK6eOZ@>P*l0 zc!+6r?V6ge(1jCbqT56C!bpPB}}CGA(b|89oC6 zPO3=ej~UTlAt9b1RvS}}3Nf)yPr?R_7z^%>w-NZp2EDnc$giWvoq*sXCmZEF;Z$4{ zvl2hUj19pSYQ_-k!<8?=lV1p1BAr0+J5E7zh3nP3Hm3K;wjssiTSW-q5W&V-@G`}? zqGu-@VMM>}_Ai?fj{?3rvhw2}H zMMZy_>q7a4})ZRaG~W$aeuCad?aj=vjCs4+o%CcH8N+fEZ7DeAv$O@xH0WYhQv z-Ua|Rt|g7Yg%&*O9G=$+uME*o%21G#4+%cbZ5P&I&kkWUq|u>*t8?XMz&b`X6}hQu z!iWO;>jd?o=E0UV?+i@LuSCxj zP1WKpa>)sVKUYb2x~z%B0uHOM8s$X+Uohfn=13r$9Fa9im{-#A;3Hm>G9N0OhsBf| z*_!Sudng#k`$TaC4;f{n@aWCkwrX(+yYLlW)JbCZBdR}|O9-H*0|h6%Gsx^jv1#`h zjzy#otDl->M!i2H1Vv4_tA)hBhsZEq=1P)rM7yxukVKB0F>KE2+I_IeC1T#vikboq z{x0(Fl)BDE4NAC|mu?XUUyH>uNVt1jh3+NX5mSiSDuk}Wed2BO<@Daramd9Jol8w; zr4j!g`#y&s&TV`Kas`BcX|ot0iproNqaGP<6Zs9~IXa}k7O^$GoiurdFa<{|gubmH z`Wk=d6l@wVjv1#50&kv%E;Fj5K{)bo5j@cNGYWB?{zYlvH|A7a=pPghgi8{wbg^=D zM#F0%#zAXTytiO2(5I3-CRBzffM%#*u~-`PiST6+@VVu5%I z1ZnS!dBoN$2^NF*<_)2`cf5+Jei~I4Qo&1W6qcb0DNn~Pr|Ah?-^N=4 zj5v{;xpcy#KcIH}Rv&Z8JYPCQ`Ztw^bGt0Vro<>Yb7+DrU% z20I0+13lLwW)#TK9WItj7;Pa4qhX)K6-4V1_|=M5ad;_gas&hErqv@x6C$DiyTuqh zodsZwcp4$jF?xNW2@Emr`z%Gn2I_hDW-#AeCWy-%=yc+cK<5PWWI*vMhZQjB4fK*l zULj(X1VdD#0)!9o zO2X)G0m&=KgL@Dfcb{UV6)s7T1BcHjPYIWV9zaDIZu_?Z3`SuG7RC&=IGVXsbQ2T8 z8;+QAY(wA)EH)Aa1u;Ji;6QyL0Fab!zUt+F+4Nc z{!e4))+EPqWa;<)HF3W@QV_Yr8H%J48qH%_p*um=s!`ojT@Z!&^=scrfIyzChQ^FW zYlCNI zID-3r2_bekL=d4YHUgb&$m!PRBUZ5TX^;hn?*{=5kQ?eNcFQ1MR-BFKj(QBmzZj^y zhG}p0;8b}KBlNP1(b7P3t?Y*Cu__3H5i_-A(k+_cd_%#S(~P%hrvo-jX3QvX4P-S* zX8JvoOyDGIi-xSlp%ZGV68pF4|KfXO5Vh=Rk~E7Gz`1*-ullggC=_#!W0webc~*{g{IqJe@F}zQ-6-Niz)f zh;Kw2UB-UJ0B{r|s@%x%v#=SAt{Y~sEMmI2KfW6V z)e*hQZ0t*7h?A0bJFS)&@cUXcmhJXyste`f*l3u5$Zx}-&&_XjrhlsZGck0u!`I=A3si>?2XSO;&5dj#o>j0>8fd?{Q0 z+XBJ?{3eEUHs(fDM3E_-GC$qMs+PReR!L|rmT_^WYtOpTVhE_VBnLG=aP;JSyb@`I zS5RGSivdI@)lEkD%y5^7I6>2NqQG!qh=+FP@ccs#@nA}N#j4t3*b_==tq%WWQT&9# z4GGTYQa&Krxkb#YJVw?(P{1@i4X{7(gfU_O<=@GuBSLvEw0`X+8k|gIPoOtWdzMUq3AZH+ISV5m<^%%4=pm)h~&ZKMy z4JkSRzFSGMO@j<;@9hfwn|;+PZWilZ{un`>Rg1y9%CSp;BX|tsC(L&#?|V!t;B?hY zlPil4w33O;6E7of-|!=g#Y~zBVbeU-6ZK!iw+7vGbSnMfq0#L|zcydOpDYKX{;!srS! z=`N`#7h*(UCDUsW;kB^;spgK0B8QNhEKN;cI@7-=)q(G5@BrA$jNVMLvG`fC5+Vi1 z5N7&*OuRBxGnpMyv52}p$`8{Y9*Z5cGEfS!iYuxyeMPb&0b?=h+Kf~*?CtWXpdsJY zxvlm>&>O*)3#LQ%{qP!QY?OI|$54Nq$V{}hJ0`q9^xY9j+{LJzLK-f+bHOkZ&n2E# z@K{x74!#iDT!R#D`$<7_tg7%^+2IQ1=_5Bp1_Cbyt9P2Q22Ym`FLcd==1(#6WG>q(%mot_4=H z&0_${FytM^K|v~PHY89c04hIb4tOJihHo)>tV16~btUe859CS1e!H252rRpfeFE}^ zHl&hDvf^PHGsO~=Ymi!)S@_ItC_xCsXf5#8TP%(av0lbocI7xOV8RAhZMR<*Do&?JR=Ej#_L9z2T@C;bM`Niv_q%TIe%|ib)`f@FnASA zF)2sGqV%6bKNvye5==EvF_!5~om;zvEKsbZ!Axu`XQ_J8)J5NG7lSnb5T^OE1>`(k zfC{bKO7rMDGm)|&ihd2HKxHMRp+4;~gmE$ah&I)rz%T_yDkc?4sK|n|R+Jtr))9;e zGN+0j1NfZPaxxGQs{0Ayfkv6dKUwZ$gA|Njh}|(V4yvpqkk!tUB%0!=T0|Zz6e%H| zw(6gAl>{8M(dm~5^) zGR$Ylu)N9D&z8__#B0lamNkjXnfI=Fdu;v1ITV zFasK2!={PJ06?PQJ8C*HG~Fnx z(qFe&5GF@ zqmyJY=K+(E30jtfpd~1gRY%G~UF@2GVu>wEk%J`f2c(c}0xMb{!*=2ao5z4`qa5wJ zZoJN{0b@(M47bQxwu#qcnSwNW1cx9?3Kna)PlQ!o+7Ag19?o-*j+ZC^O*7dzJu&+| z3=64g>4UH?c}~pbBoT%y5s+do4LJzsJdfv6Bs(iV3i00mkhTg9g!j)&n7a2A^} zio~|Viqf!hH$Y*U-yOoSP0nR?1ZF@^j(#dy3ZdwShOnIrvX7YJV2*4hbg?~Xf`X&5 zw5yOj!KoWULwjtvHk+do6bJR8eL4SJ{K8{8-N#j0uTQ$a?|F$>6)8$HmLr{I?L96hJxqurJJL zL9TEXqn~7{T2F)`L8#d)reZ3YJF*GMVWX&uvstx?;SIM)EfzHq#)O7*n;g>Tk6)024Lb&i=qo5*^11vO@H0?8C z!0Z)BOR4@TAhFoKp$Nj`ue_1FNrhTwbhIcTmO0*IhKA5sNJ zP77Tv6X7AXhXs#%N^!_TRn-6>b@EYKB0}gTrf8068T|rWJLnM>8w6^ol1>GK)tm3v zlO(J_T-ggqj3I8Ie`t*WVzW_727};Nfcq3|)m077kx%Sv0B*1m}Qz8~7$D9W(dYaYYujm&v?*`87ePnJZfcRwcc z9qkjwEI;OuF*u4p-eRnU?g7OEaISVgse7X2MeEXE7ohg5Y?12UT`)1jz}X_dv0(Y zMr-xolco<{ZpH#XW)Th-s}P&mC36&|p54vE9B~wIy<~~mbft)afI$Sui4SP1kjb&` zG=(xu{(z5wnF^k-)e*rh46f1)F(CnF)V)b^9W_cDtq$=9=r38UgKv`1jRT%5+Lb|l zbqB1-&NxIgkAhk05G!JJj~0s+Z^%YLe4+PgwNaEs0rDVfBH{#5YLzNNO9~8u~oRU@g}~NH?0^bZ+u#9ek?p1(BhYS83{p;Gbk$<&!~_CL`@pJp$MY zK519c2Ng(G2nxv@J5|I4O4a017A=O^BS7Kmbrgm!L^qkjjFz1xdj&~GIt6Na-%VRxR82=hm=Q+u@1T?#N9hcHX zYC}I->zZv0Arci}P*Jkqqk|9X3p~5Ex#a>Mn4p+DJXUd=u8j(yzn)c$VDv+4^{#cN0aYh z^ZitVl?#$1ouMkye}kA={LO6{;{ZMv+J+VbB|()E3XMIXR#$mE3@0Ze4<;=pyU<+0dIE;lbsbQG` zwb$M<%DVImQ8wT0*X709Kj8 z!T*nSuAK{YrzY|pP6!^Oa-&w-u;Gz`O0F?7TAvmJZPgK1N~YY9B~6a>vh3ddn6r)5 z>TuuIvT$LJi1OMqoG!)NaDPcM01R2bZ#9HfG z=2(oZ3_k+VJhw57i{uiADAn+oKw&%vub7B3A6MCLD`iT7QT$HwGds;D7zwC(XSqv4 zm{r9rY5EJ_)Y(TOwwq%ogfA8+5px?ywxO9jRTb`Bq{n1PKzYR1JzZ)r9sKByh0yU6 z!--;sU1y0H{LZyt>-*&t1pLB8a~DH7fDEJg{ES}A6y}+tp1n!jYsNrS6O&&9=Hvm{ z*jRkpph2RS7Dqpe!F^I0nw8P?7$Wd7jIv`5^wq{i-0SJX|4{k9!P7E#pUh;B7+!-P zvFVIPBj`QpQJSE7VeIy&S+ao2mUi~GT2y4$iW!-<66&7TUhYyDV@8FPvwd+#Ky*&R#?@@IiLKZaUKty9 zMxa0ikBQo<$C_l|KC*i~Mk#r;5Z#iQ=2sn4zP>ZsJ)BpqQ4|`SRdy5I$ z%ByP;j8)^Pa;#Es8aTP^RUoc(|a7BU@OjjEoh7{IN7==K?gg ztpkKF+z@j^oC}z%DJ)Yjrqr)IFzsV7eApxezn^OCLG#3KA?#v!MXHKn4F*IMv((^` zR0tkJrHjwGnV%h9KlCv1Fw9|hOnhIV=dn(-my8($Wn0Wb{pE!GP3v5%BDRFBr2JBiImr$4E-s*pr70m@hpRGn?=G%;%-{*^tX&@p zE<7G+fBv4K6hr#aXYG9#n{oiec+t{M5ciY;@Q`aWK>!R%;UYQ+j=Eno$`s zYNYC%d5L@URZfL8(RCdpJ|VM`7JLGLOCph$(yUSqTL=3TfU3h0^5Kdr^gVeL49x6Opv!IEH-53y6-m_Ca@vm z`?VN|r6@*^ODT*24ql$0(FtYJSc6M42J%|l7^EVA*&q}Bz5u+0k`LI}njSKIA4C2s z$-g32Lr^?Q@^Un^6!DUvmfEUypjuW?*BsN+RTK@#fWv?Yu{}*NNkNU>xJ&Q>#nHP( zl*$23(t{tkwYK8xGujhCS44yNp92{-W|PC>uvnECq~V9Na4 z7%3SEBJPlu-cOJ>Xh~x7<+nP^W*id%zH5sWd3!Rt+hUMH8GTd|PcNh)5KaA}1-JwD zgff+FaMTF*_{&`8ZfpQEu(cm%EJXCAXR*Ytn zq!!OT^;$bbg8@5i71G(pK->pe;I?S#$7~=2C>G}AFGN#omi`0nb&KH)6It!DBJo%h zM~`xfEhi?GHB|?Y6th#I&Q3xmw^aMRm9<=F6lHZA8cCW$qR6|pOo{E<>731u?z$o z(5FjNFyk@#QiyB2kg#+`OKCr3lS(7PDK5V@k$(bF5`+M;*!YMA2S?RC))2xZygTHe z_Ay9tZLSf%frWvjIkw#pVsu|+6k;;#1>6d}BgDfigmp<=_4cE888hEYX#8XhtHK%<~e+mC%!`RuEDcG|^8l^ZSdVoAFgsiSzE z-Ofc=V<^^>5z=E=&-E&+DGQ;|#XXItg#kuzba{qPV@sESuMrvtjjt$Mj6R;cpz9cZ zNKE3GP@69%WOKq@3!+c>erS|~Ob1YGF?wGUy-YW+0Qx0DZIc(ag|fulNQ1wg0$0n(T;i0B32uQ7I&wzvrnksB0 z4+$d}N`%Yfzb2TI!gITpCDxMQ>S6!AQnafS%F^yOlTK58mszAe9cWrWx24$WpB>Jm1~8Of zRy8bOkti%>$w{X%dJGx#HUNeDZXjV~d`LEDF`DiooHnD;l^~HK@Le6wx5ri)e@bG} zW0Te<%0k21y~Nro`N;5Q`?1JlQPyk8{vlL4W*wEnT>Rsz($WHPkgW7u@JXk)IT7^q zTUI4x3TbMZG6gYe+9-YG;$vSetbf7XBgJbmTKqV2HQLM`qX7Yl(hU%?Qw14^BXuzM zSCm$PSu^59Q@tUER7612vHM%i8v*ZJes_LM05s72S!me%f)q)uppEPBYsat?h*+u6 zxjcri1*!iqPZAX|q5P^}7kxiGCZz+?Y`P~lKQi;E`B@A{ZiaE}=I#1~ouq&|O3J$! zlIJ+>@`hS0Gtx=-vH5f&FHO>IT#tRfngs&|%4?V2$&ZH28V%!$pfuiB1yNwrO(6!L zu|>JzS!gCaBdKgnA93NyASD=?ye&oz9ugfQG{b&wR04Db}5#i97Ehhn_pyrH2QBnz*8tlJvEST%4P2B!Ae^@fI&WeW6SRVYzL@qg z8K37=s~r=-3#Gxd3X*!Pp%(*~&D;n|l+Fi&7fAkei&bQqnS$}Dw^(baV@2szRgZOq zp;)$ACks{-%4)dSOk-pf!P3Pu!O_~zGe!x4kmec-lo)cCR6C2ISAbTk@`3bzwrn9v z%NUyj2s-|Ibyd<~H-8Rz$fI}!%(VJ`DpI3`5p6w0xu?l^BqN?<_cM__;xsxzt$7S1 zJfZxJ#!!&rA94WTlZYOJK?{_Kr9?(l5 zk*&#o4h)d$VX2wxyBN`=sa2f7;IWPvW&>qu!%LLMaAUofeT>IbB~R>v02LRH0R$!K zPRVblddx!QBM54-u_{k7{Ms-9218UY+_ziW#Q=Kp(odVCqZ-Iime3;G#R}Ey5~Z%^ zG4Y+!d&3fl)2C}e*MVlYn<&tbJ4@eiYT zseIagDpU1C);6izF#%rUK^&!d@3A>5m9*qF|DrFQo+xBVKNmR{BbFv+tH-DTkCE|} zv8Mp%KnnVZsrxaZZVx0jg0JLbTYYm-57k&zVe8zz1p`zJMd9HHs|S{5)B>M%~rv zj{&@U6xV@g;W5yhO#+erXeR_d9Ci56{MyNr+LW`p=U-Sgl1|_O(ER$qmQt^PnY@dQ z#0aCpp2r3$9~ecTkrtb)xkbyysfNfvJ}VbalN{5Ewc;+w8=QQ9V4QL;PtH}>LOIW>7-+vW{}Ncsgis1&{Xo=g8^>^u#YmQ zVhuZYF+69%6Z+hMX9s#Nl<5qvR+0qMDXR2rY{McQXk6?8oFtF&g^?p>x0^>InXV%J zUgACzDaB%gMtGiq@7Yy%5T9#c)J6~0@K#fWwU z7O`G6qnb-=Y6u5ccQIhksl76ZEo0Rg6t-A;OxXx7HGTO1(Eg6A_m-s;y^ z_#*M=h5=-^8ntertH`l@zZsf%Akrt?#%fgesr3;I*AJ?UDFyE|%Co!J5T>MLZ}@;l zL-wenUS~yjVpI&tu4DCMc8WiM7|U+3#zZ4ZoVNP<8ynFn=0b7D7GiWFp>(v}JtN5g z+JjWCRn1ak1`Be^HoOTj5(eNHz4-{)u*aoo+|i-37>>aaE;D$6ZA`wiP&u$bw*B~o z63G(n;qI{!*R=r^UyBt%GFWc;Cq_O1=NgePeIaovr(ri zSbW+mNV6OZ5t6L7i{YClHGFfzA~x_XtjIz8EhEWbNG4({0ECe%!p*eFtVBYR7djw< zkav%WDr6+os;3fztOnLhMReF=boyASA>3_;q%&0zB%=sompA2#gtlk&j~%IyARjFA z`zvBBS0rZO+S&u6I_?$QdrT$ODCSB(+&foik!;6xy00 zMTx-0nL}+;KVss|98}4xT^u?n&;Veao1XwG7@4!dU?Y%SJWLN_Saa$p!4A zue-C%^+v%?zWG^V5rQVei3l3XG%VVcM6iLEJ*On>kwC&eycka69Z5~-)5Tsp&UyRTGv$ReI`{^ zc!+p0d~QZes5T(&ChAOxdVkNW%DKhle+VQs#OXgrhaHLon%o}a90j|mrgd1dd?Tm{ zVa#M7E&Nw{MARkyr3NWPE(Wf~I$dCLv$P&YX+AAL+ovQZ)V2R!h2S@9=sj7XdIeSh zI6*|f_aj#k8z*$1)u(I`YxCtm#?J&HBIeO8iV|XangJROLJ!$u{3FhYGHkUN<1lY0 za*h_lH--)oLO#V}El_E#RpQ2#kK7F*V9(6#TkRvis9}?OQGFfk z4uo^NcF0al7b6>1x3D@+Sb^4TMCDTW$Ri~!`tts3XfR>^3ZAoDY*cACGcDMS#smqu zp4yCrQb-XB{rC=u%+6oXbT~aSvauK+SFeI@*}GogY6XV3iY50phM+=}ML=>aA@3$o ze?&v8|DN!|c*Zv{@fJh*0o6iq;n`ye3<{M@Z(nkObSnfc&Hj5$%x*2otwMoaaRl^U zS*ZIp0I5T*EEe;Jkx>g4;IPA*KUoZfvGGHqcozaG$?~`qf9MF4!XKjuxZ4e>q@oYg zze>3(Fv_*)^EQ6dcr399G&9UKhQD5y>YBx+F&^wE@5Xo0qO!%zPyR02iwH_YhI~f>9)ZQ%- zD#B~gnBhJ37@!YT$Y*e9;nPV1QHNwS=db5YetQmiZGZRtIF3Q|8b1$qhB)J z6hL-3>TK^6V7bPZAKehVsL;KN(fCM1S$uTz=jNv zD%8~FDjzK*CYG`-8@PLt4@;EmldNVFpnNpJrD(hQ4RdOxh!lOgUrdhi2c#)(8|=%yc!!(~u`yBQQ8 zeL~z#fF0PWi$L30Jmoe#1iKFnlj1u8Qk1)K+fLDpsWNqfH@$s~mG&y~F=T_=8$qpm z%B|H=LMuTu1eAB}IvdZ5sl}!-c zXlo-?ToDm9h|*Bqh7uhQgq5d_bfiRpQRqWt|1BL2C2k-c+Yk$O$&V!y4Wwg6b91e9 z*lElJqNYk&-u9v@9;Vz+w?)mW5-KPhRh%{wC) z04Nd~cP53xoQZ${;*VoHCsYI|3u@(|u*H_&@%_9g>M(NvsS>@98Fs_Kt`hGW@a zA+2*)0Xb}jEs023? zAFoXYkSLoXsO=#%789Avw4Y*)FU`qjs=SO?Q8oxDsoE8zt$?qw7TFd`Bsl<=3=zVV zGy&K|^#?a0Bp#(DJ?Oz&2*X)A1yonJAu@3wRaCsDg;=eID7nyWM2*5I=)Jw};204$ zrbcfk$fQNPeX9Ji4Y4}Jn572uu|}<$6X*6CI+=MLpO#4z$L2@?s#RqogI7bjCf|~7 zQ}W0Jwk53(JKWkffCX)^R#Yya*8tJ+agZLmSQ!D8mTjm|3+*`1`*ci&n4+b+iWce- zlx16ctrmjN%ev6@R9VIY3qe)M3LQdzW2@W%J8v&py!RS&fJwgzHO`z>DNOZka|u^n zT0~u$$TkAefi^!$&De%OSa*&4+jR$#A@@rcUxlSNH3b3SYugY7TtsB)I9X^Q375L$ z$hVG;GP~4^03c5b^)%@XfuXhoMyU;E0gA&mgr1c2H?m<|8a3^KPt?d( zwZT%4C1;o5R<;m}X40)OY$tTFl+jG9l2ChP**PiNZ;Ktg4ujbf$W6ANq6R`qfCWq1 zhLA&u$lxUFr684pT?`_TmJ(tppaG3*-hRa`CH#X?8|gL+(zQsK8sdJ^J%oGsfQDtw z@Rq;;j46q#YNt_|=J1T`=4(Jg5E=ZzsBDu=9GK}P(wj0{bu0m3bYjJ13)u#uk7PF^ zZf(DX))1pHU?;n-DOWY*Lc2YGP)MzIM6&zz19nD7CbquK?pl_cTBMt?J@u?LTJ1ed zBYQSUv%^$EVrqL5@*YC44x237ixL36Kn+3`q9%gSe=w~G%mW5I5V+vm{0Naruz`Rr ztw&GA1bJG9W#h9q%=)?;>(zMr~t2RoEV|Gt1F#!Zl)h z8i0T$zXn-#`@F!mlPf6w-(DA!V4)#F32wU=MMqF%Qa;^TjsA0|Bts z3}A*d-i#BND9HQk=yjgoV)dZcOTfe8> zOp)?F;2^tVP(gCAD0Mp%;<<#}z!ZyQdx9~k?*UZbdbu69#TJ-*vq|!kIME1TU1|W- z4jT-KSH`?yd!d>w83N1!wjq2gDf}c$t%y|MwHU>36FijRr{tDVL!TDvAkG@B%4wmw z>bWC76YPrdNr1RI+@KKULA)MA5CzggRQ=MbAG|$7G$*Q*@245)_Cz{{@pi42#xb@g zdifcDrQx9=g9SYJEL73yKi z@gtEUB@o*t=0XL8Iwl`WvEd)hrh?gLOKICv2ah<0M4yIv+<@qvlmuC-MT@|zV_M^{ zO^A{TTBV8?4>2^sf=S!O1aRsItpvg8W(Nd^84?m~#)s-?mS=g}dUX`NdP%$TsJCN0 z^8(cb1hvZ+LN-7%lx8$J<-i0Rcm(r2d+8z)s+aQz1Y~@Vq{UtHw0)iMG zLP~`Wy}{K6D`!$GDZ*?|Bd&(MpnZ)5MXMK%V%H_x0cRoAMD1srb<-&)-z~zr2MeLa zma(9=W#PcH3KL+22Yj!B98Z-uUa=6lY{E{&bV)#3p|A<1coYkvcZoQ~3|2ZLG^E1@ z1lA(D9u!i-w$3RgU*|F6|FezYywR!t^tLTptd^GaZ{XQ(AINH)hX+ry+8MBmq+%?u z?z9knU?^?bxFdA_`B>4tHHTVCvya0K_4?DnPKs zLNpK&9gAT*=?_Ys{_vMYOB4cW8Nr0_dD1k#8FC0?W+s&cUmu8+mA zSvAq1v$l;?T@+|AD|V2R1X&N_)!i%v94@K>)$J^(6~$W$R}iiP3ek|fw`svxZFFf0 zRcmq643eNUFwQNYT#jtAD+$w>5CeZJ{2<5hvIV68s+=$gY?TR(0rRfBWV^6sw%U!)PVDD-;B8e8cDlM?P*LPV=1AgVcf}qt`DY9 zWrrLhM6o#Fg>6GJd03P*@#ywQX2*sOX~mlTH0ZBG1qZCMIUw#rlv`1Wwzd>^5PCj| zSKfXM^4et_YHoix16s`yk&kF9q1^UbB_Z!BaWm9{fx1+qwkeIQ220>1q9NvIXskVP zj|!&l3QSMqE@Gb9_iA+x+&QtA-iCxGOh_)9!!Te;G|Xndi6JjtivXjf zYj0X|5I3^mVR0JHQz4aA$TYSg90ZXuM=o>=Uz-RK=r+k!Z5yifBMLqm0CdH?;Q~UR z(+-G8CjC}CGwgt<_&46#Zk1D7uuZjHwYoPUI`dPy4Kr_R)-z{`?n7`g(ZmVu5Lpur zXxD|$#RPVpv*8A3rYi~RjmF9L&V#lNw2_M0wokrangXZ;Z39T(10BTXWP1alHBDw? z5Ja|@kc6PHvk6V>QGl{7{N_`rfhz3td(-(Hk7msq6`wYOYvFZWpX!m5Vk4&TvgxKx~8*=v7VbGCbp3( z-y0Z&(RZrqIQKl=0%i&UOAZ3KYX7l#~2W8U!!c@6E_Xbj3uDQ{_edr6U zbm$4#PKe9EtE6+XeI!lRk5Fa171SpgSLpC1OonzgA(!P%w#{be>fI%)4+C^eWySPg zx#;b^Wqd@}NP@=Oh}w48BU_Vjw#l?EIcBSI5(1orkZRs0{gcv&K6_xu+n+*784l${ zGkRL6$$1e7mA#zu7-?E?8LMorg(q|of-My$*dNXtiRSEkq2xj3A=_Y#Q#3e>irL2Y z-ohh*T27(W9x#G06#KG<jP<@9GE(l%TxLb0B+ocM6&Qy(#SNPLJw3v^m2MQ#-Vzb^5Wv6LyMs01t!`!bfN zdAn9Xg$LbDIzD3;fwI-%j=#PNM1%+t$X-I%-NC0hnKrn-K#4wfNZ$mU3nXq`Z zgN169EK8*{Vj*;w>Z)tH{a9tAQUE`txLqpHwWlpE14Dbrz?TLzR*4sFLv`gkL+_B9+sotmx}5J{ z9q)cyHX9x9mXF)TFc05--0t;q`N!#QxwTcyhaZpE(?6EKKKGw5k9W)S&8-fvep~MT zzFhQ+H#W%m@Ze{QceQ z)Ai=9t?iF{^2_q}#p|v8@WaEahvW0}UzY3f#s;k%zJK@b{gnf~c$8KTKfizTaC-i2 zx&P~jr<*6#`r-BUc=z}JSU%hgA6_r-j_2#?j+^pt$MgNoXYhHmpD&NUUXJhn)i(cc zxx0RKo7bmb&&TWg%h!MH_4)Yp{M+NdIMj!CZyq1Mx(RpZ#s>Y54L-i=U)@Hp%=hQF zk2kg&pFWoFj(5kKujaqTTf+{!>i*Hcjvo@$KP*l z&<@|7&c}xrUyXVA_@KTyA0IwEpKffELOcBF;qmV8e|mpmR?eR|0EKOQfa z$KP-5Uee*!@!=~cTGHoB{;$jJQ6!aoc>VbPa<}~Ocz3+s9$HhW>zB>%y*b|f{pL2~ z(>5h&&TU;xAyPp@Wbitay`9Uep!Bf;d*-h z^qBwj_|om|_3*>P%jelSiNBuSozB1Bhz?!F^89>yJpYUEi=&)xb$guKZ1wUOwn-*# zg*nPMPp5q-2Zr^_`@8G=%kkmo$LG@vZ%K~n@cOsolkWTT_448NCYqhUvWc$e-yWZ@ zFU4NGVWqc&Cb~a=I3M4g?*4pwemY+7e%o(Z>pZ-AJU{EQmV51V>y53A^o2L%bpG}A z_4wxWaJqiDwOu{vQ~&m1AyIpMJzj4gudUnt^!s_aJpXojy0uL|{Ic9VUhWx?zjA8h zKxXjgUH`)+O4!{Nu{`PJk7a{t0;ReL%7=lP=Nwp>2m zvllXf+Uxote!e_jAMYL?Zf-LVe`a*LEcbtTynp|&e1AS&PsfMT|J?lG>WGK$-ajw* zKRiA@-46eJdRoZ;zI%WBv#YZoet7(Sx!n2!T8wKp_VE$EdOQ=pHL$jr4xhp=PUdW+ z<9+QwIeyHJzy0TOw`O2340Es|Jl}7_`EYvv z{+`v-+moMq8;8^Lzdx_j%@=p=%^E*mE{EsG%k@8&4~H6;<9)xM^X}MQ-m1?x;SFMC zwZDCNtGhCeu`f$o-psFTHIHS!&HeuEoAUBjZ`<3qIivDf1eEsmW{KxWP7a51&j?X_l zo|o6}FPFz(kJsI?UwSv+eDV5SmZ#(8d3k+(clGGVhsWQ~%l%)McTbO(TmaI?wt z-SOdg`N}r49G)JIr!#rbg9TF$hr8qXFU%(2zI(cU*v0$dcV$>VKHl7aas|)tAFkh? zua^&-lxqkR#o%r?5U;l6K$?K=fa=d@}DXkOp#|!!4^!Me) zhsSozvj59V`P=bwVitLMs}jax(fa4R%i_OQN;;g**X8oe`e^gJyDjyeJ)WN*AC{lq zU!UGz|FV2BH+`@o#+2{e0Z-D^i2z6%wK=|;<@=2H62dR-~RLTd_A3i dUEhNjUx0PvpZTOeJ>dWI{{e-3HpBX|4gf+>H-P{E literal 0 HcmV?d00001 diff --git a/packages/compiler/native/host.c b/packages/compiler/native/host.c index 24d330cc0..f4393c5f7 100644 --- a/packages/compiler/native/host.c +++ b/packages/compiler/native/host.c @@ -80,9 +80,30 @@ void scriptc_native_unlock(void) {} #include #include -int32_t scriptc_native_fork(void) { return (int32_t)fork(); } +#if defined(__linux__) +/* LLVM's profile runtime, linked into instrumented builds of the compiler + * (SCRIPTC_NATIVE_PROFILE_GENERATE); other builds leave these null. A worker + * starts with zeroed counters and writes its profile before _exit, which + * skips the runtime's atexit writer, so the profile counts the worker's work + * once. */ +extern void __llvm_profile_reset_counters(void) __attribute__((weak)); +extern int __llvm_profile_write_file(void) __attribute__((weak)); +#endif -void scriptc_native_exit(int32_t code) { _exit(code); } +int32_t scriptc_native_fork(void) { + pid_t pid = fork(); +#if defined(__linux__) + if (pid == 0 && __llvm_profile_reset_counters != NULL) __llvm_profile_reset_counters(); +#endif + return (int32_t)pid; +} + +void scriptc_native_exit(int32_t code) { +#if defined(__linux__) + if (__llvm_profile_write_file != NULL) (void)__llvm_profile_write_file(); +#endif + _exit(code); +} /* The worker's exit status, 128 plus the signal for a worker a signal * ended, or -1 when waitpid fails. */ diff --git a/packages/compiler/src/backend/llvm/emit-module.ts b/packages/compiler/src/backend/llvm/emit-module.ts index af00ebc2c..24c32d2e9 100644 --- a/packages/compiler/src/backend/llvm/emit-module.ts +++ b/packages/compiler/src/backend/llvm/emit-module.ts @@ -66,6 +66,7 @@ import { emitLibraryIdentityLines } from "../library-identity-markers.js"; import { InternalCompilerError } from "../../errors.js"; import { targetCpuAttribute } from "../target-cpu.js"; import type { IrFunction } from "../../ir/ir.js"; +import { type FunctionLayout, layoutTierOf } from "./function-layout.js"; /** The function bodies emitted in `chunks` contiguous ranges, each by its * own emitter (LlEmitter.chunkEmitter), then merged in function order: the @@ -228,6 +229,61 @@ function partitionGroupLines(functions: readonly IrFunction[]): string[] { /** Ends the group of the definitions that follow. */ const PARTITION_GROUP_END = "; scriptc-group"; +/** Writes the generated helpers, then the function definitions with their + * group lines. With a layout, the definitions it lists, helpers included, + * move after the unlisted helpers and before the other functions, by tier, + * each in its tier's group (`layout-`). The helper compiles each + * partition's definitions in text order, so listed ones come first in their + * partitions, and it places a group's definitions in the same partitions. + * Everything else keeps its order and its source-file group. */ +function writeDefinitions( + out: string[], + layout: FunctionLayout | undefined, + helperTexts: readonly (readonly string[])[], + fnDefs: readonly string[], + groups: readonly string[], +): void { + const tierLine = (tier: number) => `${PARTITION_GROUP_END} layout-${tier}`; + const listed = new Map(); + const listIn = (tier: number, lines: readonly string[]) => { + const list = listed.get(tier) ?? []; + if (!listed.has(tier)) listed.set(tier, list); + for (const line of lines) list.push(line); + }; + if (layout === undefined || layout.size === 0) { + for (const texts of helperTexts) for (const text of texts) out.push(text); + } else { + // A helper's text can span several entries (one per line), so the + // definitions are found in the joined text. A listed definition moves + // through its closing brace; what follows it stays in place. + const joined: string[] = []; + for (const texts of helperTexts) for (const text of texts) joined.push(text); + for (const part of joined.join("\n").split(/\n(?=define )/)) { + const tier = part.startsWith("define ") ? layoutTierOf(layout, part) : undefined; + const close = tier === undefined ? -1 : part.search(/\n}(\n|$)/); + if (tier === undefined || close < 0) { + out.push(part); + continue; + } + listIn(tier, [tierLine(tier), part.slice(0, close + 2)]); + const rest = part.slice(close + 3); + if (rest !== "") out.push(rest); + } + } + const unlisted: number[] = []; + fnDefs.forEach((text, i) => { + const tier = layout === undefined || layout.size === 0 ? undefined : layoutTierOf(layout, text); + if (tier === undefined) unlisted.push(i); + else listIn(tier, ["", tierLine(tier), text]); + }); + for (const tier of [...listed.keys()].sort((a, b) => a - b)) + for (const line of listed.get(tier)!) out.push(line); + for (const [k, i] of unlisted.entries()) { + if (k > 0 || listed.size > 0) out.push(""); + out.push(groups[i] ?? PARTITION_GROUP_END, fnDefs[i]!); + } +} + export function emitModuleParts(emitter: LlEmitter): string[] { // Function bodies first (the literal/unit/fn-value tables fill as they // emit), then the file assembles around them — the runtime ABI’s order. @@ -942,21 +998,24 @@ export function emitModuleParts(emitter: LlEmitter): string[] { ); } if (globals.length > 0) out.push(``); - for (const line of helpers) out.push(line); - for (const line of ffiCallbacks.defs) out.push(line); - for (const line of shapes.defs) out.push(line); - for (const line of classShapes.defs) out.push(line); - for (const line of classObjDefs) out.push(line); - for (const line of emitter.walkers.defs) out.push(line); - for (const line of emitter.dyn.defs) out.push(line); - for (const line of wrappers) out.push(line); - for (const line of asyncDefs) out.push(line); - for (const line of emitter.resolveThunkDefs) out.push(line); - const groups = partitionGroupLines(emitter.mod.functions); - for (let i = 0; i < fnDefs.length; i++) { - if (i > 0) out.push(""); - out.push(groups[i] ?? PARTITION_GROUP_END, fnDefs[i]!); - } + writeDefinitions( + out, + emitter.targetOptions.functionLayout, + [ + helpers, + ffiCallbacks.defs, + shapes.defs, + classShapes.defs, + classObjDefs, + emitter.walkers.defs, + emitter.dyn.defs, + wrappers, + asyncDefs, + emitter.resolveThunkDefs, + ], + fnDefs, + partitionGroupLines(emitter.mod.functions), + ); if (fnDefs.length === 0) out.push(""); out.push(PARTITION_GROUP_END, ""); // WebAssembly modules translated into this program, and the registry. diff --git a/packages/compiler/src/backend/llvm/emitter.ts b/packages/compiler/src/backend/llvm/emitter.ts index 5569599ee..0b0bf11e0 100644 --- a/packages/compiler/src/backend/llvm/emitter.ts +++ b/packages/compiler/src/backend/llvm/emitter.ts @@ -1,4 +1,5 @@ import type { TargetCpu } from "../target-cpu.js"; +import type { FunctionLayout } from "./function-layout.js"; import { relieveHeapPressure } from "../../heap-pressure.js"; import { wasmBoundsChecks } from "./wasm-modules.js"; import { jsTruthy } from "./jsval.js"; @@ -487,6 +488,8 @@ export interface LlvmTargetOptions { /** The host's process primitives, where it can fork (the native * compiler's). */ forkPrimitives?: ForkPrimitives | undefined; + /** Functions to write first, by tier (function-layout.ts). */ + functionLayout?: FunctionLayout; /** Exact frontend sources for dev-build locations and variable metadata. */ debugSources?: ReadonlyMap; /** Pointer width of the target C ABI. Native targets are 64-bit today. */ diff --git a/packages/compiler/src/backend/llvm/function-layout.ts b/packages/compiler/src/backend/llvm/function-layout.ts new file mode 100644 index 000000000..00cf233db --- /dev/null +++ b/packages/compiler/src/backend/llvm/function-layout.ts @@ -0,0 +1,41 @@ +/** Function layouts: the functions that runs of a program execute, in tiers + * (scripts/refresh-cli-layout.mjs writes the native compiler's). The emitter + * writes a listed function before the others, in a partition group of its + * tier, so the code that runs together sits together in the executable. */ + +/** Layout key → tier (1 first). */ +export type FunctionLayout = ReadonlyMap; + +/** The layout key of an LLVM symbol: module numbers (`%m12.`, `%init.12`), + * which change when modules are added, are left out. */ +export function functionLayoutKey(symbol: string): string { + return symbol.replace(/_x25_m\d+_/g, "_x25_m_").replace(/_x25_init_\d+$/, "_x25_init_"); +} + +/** Reads a layout's lines, each ` `. A function listed in two + * tiers keeps the first. */ +export function parseFunctionLayout(text: string): FunctionLayout { + const layout = new Map(); + for (const line of text.split("\n")) { + const space = line.indexOf(" "); + if (space < 1) continue; + const tier = Number(line.slice(0, space)); + const key = functionLayoutKey(line.slice(space + 1).trim()); + if (Number.isInteger(tier) && tier > 0 && !layout.has(key)) layout.set(key, tier); + } + return layout; +} + +/** The lowest tier of the functions `text` defines, or undefined when the + * layout lists none of them. */ +export function layoutTierOf(layout: FunctionLayout, text: string): number | undefined { + let tier: number | undefined; + for (let at = text.indexOf("define "); at >= 0; at = text.indexOf("\ndefine ", at + 1)) { + const name = text.indexOf("@", at); + const open = text.indexOf("(", name); + if (name < 0 || open < 0) break; + const listed = layout.get(functionLayoutKey(text.slice(name + 1, open))); + if (listed !== undefined && (tier === undefined || listed < tier)) tier = listed; + } + return tier; +} diff --git a/packages/compiler/src/compile-types.ts b/packages/compiler/src/compile-types.ts index 8ec7b5ffd..2703e008b 100644 --- a/packages/compiler/src/compile-types.ts +++ b/packages/compiler/src/compile-types.ts @@ -54,6 +54,11 @@ export interface CompileBaseOptions { * merge-profiles`). Code the profile does not describe, or describes * from an older version of the program, is optimized as without one. */ profileUse?: string; + /** A function layout (scripts/refresh-cli-layout.mjs; gzip-compressed when + * the name ends in .gz): the listed functions are written first, by tier, + * so the code that runs together sits together in the executable. The + * native compiler's build uses it. Executables and LLVM output. */ + functionLayout?: string; /** Eligible packages compile automatically. Explicit names override automatic selection heuristics. */ npmStatic?: readonly string[] | "auto"; diff --git a/packages/compiler/src/index.ts b/packages/compiler/src/index.ts index ffd56a1bf..ace268af7 100644 --- a/packages/compiler/src/index.ts +++ b/packages/compiler/src/index.ts @@ -48,6 +48,7 @@ export type { import { compilePackedLibrary } from "./backend/library-pack.js"; import { node24FetchCompatProfile } from "./compat/fetch-profile.js"; import { libFnSignatures } from "./ir/builtin-signatures.js"; +import { type FunctionLayout, parseFunctionLayout } from "./backend/llvm/function-layout.js"; import { InternalCompilerError } from "./errors.js"; import { frontendProcessExecArgv } from "./frontend-process-args.js"; import { type ChildProcess, spawn } from "node:child_process"; @@ -57,6 +58,7 @@ import { copyFile, mkdir, mkdtemp, readFile, rename, rm, writeFile } from "node: import { tmpdir } from "node:os"; import { basename, dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; +import { gunzipSync } from "node:zlib"; import { clearCcCaches, configuredTargetPlatform, @@ -774,6 +776,20 @@ async function readNativeProfile( return { use: { path, digest: createHash("sha256").update(bytes).digest("hex") } }; } +/** The request's function layout. */ +async function readFunctionLayout( + opts: CompileRequestOptions, +): Promise<{ functionLayout?: FunctionLayout }> { + if (opts.functionLayout === undefined) return {}; + const path = resolve(opts.functionLayout); + const bytes = await readFile(path); + return { + functionLayout: parseFunctionLayout( + (path.endsWith(".gz") ? gunzipSync(bytes) : bytes).toString("utf8"), + ), + }; +} + function usesPrecompiledRuntimePack(opts: CompileRequestOptions, backend: "llvm"): boolean { if (backend !== "llvm" || opts.sanitize === true) return false; return nativeCodegenTarget() !== null; @@ -847,6 +863,7 @@ async function prepareExecutableInput( llvm = emitLlvmModuleSource(mod, { targetTriple: process.env["SCRIPTC_TARGET"] ?? "", ...debugOptions, + ...(await readFunctionLayout(opts)), pointerBits: buildPlatform === "wasi" ? 32 : 64, wasi: buildPlatform === "wasi", runtimeAbiMarker: outputKind === "obj", @@ -920,6 +937,7 @@ async function prepareExecutableInput( llvmSource = emitLlvmModuleSource(mod, { targetTriple: process.env["SCRIPTC_TARGET"] ?? "", ...debugOptions, + ...(await readFunctionLayout(opts)), pointerBits: buildPlatform === "wasi" ? 32 : 64, wasi: buildPlatform === "wasi", runtimeAbiMarker: useRuntimePack, diff --git a/packages/compiler/test/function-layout.test.ts b/packages/compiler/test/function-layout.test.ts new file mode 100644 index 000000000..8619c5b34 --- /dev/null +++ b/packages/compiler/test/function-layout.test.ts @@ -0,0 +1,147 @@ +import { execFileSync } from "node:child_process"; +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { gzipSync } from "node:zlib"; +import { expect, test } from "vitest"; +import { compile } from "../src/index.js"; +import { + functionLayoutKey, + layoutTierOf, + parseFunctionLayout, +} from "../src/backend/llvm/function-layout.js"; + +const source = ` +function first(n: number): number { return n + 1; } +function second(n: number): number { return n * 2; } +function third(n: number): number { return n - 3; } +console.log(first(Number(process.argv.length)), second(4), third(5)); +`; + +async function emitLlvm(layout?: string): Promise { + const dir = await mkdtemp(join(tmpdir(), "scriptc-function-layout-")); + try { + const entry = join(dir, "main.ts"); + const outPath = join(dir, "main.ll"); + await writeFile(entry, source); + let functionLayout: string | undefined; + if (layout !== undefined) { + functionLayout = join(dir, "layout.gz"); + await writeFile(functionLayout, gzipSync(layout)); + } + const result = await compile(entry, { + outDir: dir, + outPath, + outputKind: "llvm", + ...(functionLayout === undefined ? {} : { functionLayout }), + }); + expect(result.ok, JSON.stringify(result.diagnostics)).toBe(true); + return await readFile(outPath, "utf8"); + } finally { + await rm(dir, { recursive: true, force: true }); + } +} + +/** Each defined function's name with the partition group line it follows. */ +function definitions(llvm: string): { name: string; group: string }[] { + const out: { name: string; group: string }[] = []; + let group = ""; + for (const line of llvm.split("\n")) { + if (line.startsWith("; scriptc-group")) group = line.slice("; scriptc-group".length).trim(); + const name = /^define [^@]*@([\w.$]+)\(/.exec(line)?.[1]; + if (name !== undefined) out.push({ name, group }); + } + return out; +} + +test("a layout writes the functions it lists first, by tier, in their tier's group", async () => { + const plain = definitions(await emitLlvm()).filter((d) => /_(first|second|third)$/.test(d.name)); + expect(plain.map((d) => d.name.replace(/^sc_b?f_/, ""))).toEqual(["first", "second", "third"]); + expect(plain.every((d) => !d.group.startsWith("layout-"))).toBe(true); + + const names = new Map(plain.map((d) => [d.name.replace(/^sc_b?f_/, ""), d.name])); + const laid = definitions(await emitLlvm(`2 ${names.get("first")}\n1 ${names.get("third")}\n`)); + const index = (fn: string) => laid.findIndex((d) => d.name === names.get(fn)); + expect(index("third")).toBeLessThan(index("first")); + expect(index("first")).toBeLessThan(index("second")); + expect(laid[index("third")]!.group).toBe("layout-1"); + expect(laid[index("first")]!.group).toBe("layout-2"); + expect(laid[index("second")]!.group).not.toMatch(/^layout-/); + // Listed functions precede every unlisted definition in the function section. + const firstUnlisted = laid.findIndex( + (d, i) => i > index("third") && !d.group.startsWith("layout-"), + ); + expect(firstUnlisted).toBeGreaterThan(index("first")); +}); + +test("layout keys leave out module numbers", () => { + expect(functionLayoutKey("sc_bf__x25_m447_lowerCall")).toBe( + functionLayoutKey("sc_bf__x25_m12_lowerCall"), + ); + expect(functionLayoutKey("sc_f__x25_init_253")).toBe(functionLayoutKey("sc_f__x25_init_7")); + expect(functionLayoutKey("sc_bf__x25_m3_Lexer_scan")).not.toBe( + functionLayoutKey("sc_bf__x25_m3_Lexer_peek"), + ); +}); + +test("a function listed twice keeps its first tier, and malformed lines are skipped", () => { + const layout = parseFunctionLayout("1 sc_f_a\n2 sc_f_a\n2 sc_f_b\nnot a line\n0 sc_f_c\n\n"); + expect([...layout]).toEqual([ + ["sc_f_a", 1], + ["sc_f_b", 2], + ]); + const text = + "define internal void @sc_f_b() {\n ret void\n}\n\ndefine void @sc_f_a() {\n ret void\n}"; + expect(layoutTierOf(layout, text)).toBe(1); + expect(layoutTierOf(layout, "define void @sc_f_z() {\n ret void\n}")).toBeUndefined(); +}); + +test("an executable built with a layout that lists helpers and functions runs unchanged", async () => { + const program = ` +class Point { constructor(public x: number, public y: number) {} } +function norm(p: Point): number { return Math.sqrt(p.x * p.x + p.y * p.y); } +const points = [new Point(3, 4), new Point(6, 8)]; +console.log(points.map(norm).join(","), points[0]!.x === 3 ? "three" : "other"); +`; + const dir = await mkdtemp(join(tmpdir(), "scriptc-function-layout-exe-")); + try { + const entry = join(dir, "main.ts"); + await writeFile(entry, program); + const llvmPath = join(dir, "main.ll"); + const emitted = await compile(entry, { outDir: dir, outPath: llvmPath, outputKind: "llvm" }); + expect(emitted.ok, JSON.stringify(emitted.diagnostics)).toBe(true); + // The generated helpers written before the functions, and one function, + // in two tiers. + const names = definitions(await readFile(llvmPath, "utf8")).map((d) => d.name); + const helpers = names.slice( + 0, + names.findIndex((name) => /^sc_b?f_/.test(name)), + ); + expect(helpers.length).toBeGreaterThan(0); + const norm = names.find((name) => /^sc_b?f_norm$/.test(name))!; + const layout = join(dir, "layout"); + await writeFile(layout, [`1 ${norm}`, ...helpers.map((name) => `2 ${name}`)].join("\n")); + const laid = join(dir, "laid.ll"); + const laidOut = await compile(entry, { + outDir: dir, + outPath: laid, + outputKind: "llvm", + functionLayout: layout, + }); + expect(laidOut.ok, JSON.stringify(laidOut.diagnostics)).toBe(true); + const order = definitions(await readFile(laid, "utf8")); + expect(order.filter((d) => d.group === "layout-2").map((d) => d.name)).toEqual(helpers); + expect(order.find((d) => d.name === norm)!.group).toBe("layout-1"); + const exe = join(dir, "main"); + const built = await compile(entry, { + outputKind: "exe", + outDir: dir, + outPath: exe, + functionLayout: layout, + }); + expect(built.ok, JSON.stringify(built.diagnostics)).toBe(true); + expect(execFileSync(exe, { encoding: "utf8" })).toBe("5,10 three\n"); + } finally { + await rm(dir, { recursive: true, force: true }); + } +}); diff --git a/scripts/build-native-cli.mts b/scripts/build-native-cli.mts index 4d3f00ff5..a26c50209 100644 --- a/scripts/build-native-cli.mts +++ b/scripts/build-native-cli.mts @@ -35,6 +35,15 @@ const useProfile = !sanitize && requestedProfile !== "" && (requestedProfile !== undefined || existsSync(committedProfile)); +// Builds lay out the compiler's functions with the committed layout +// (scripts/refresh-cli-layout.mjs), or the one SCRIPTC_NATIVE_LAYOUT names; +// an empty SCRIPTC_NATIVE_LAYOUT, and instrumented builds, use none. +const committedLayout = join(root, "packages/compiler/native/cli.layout.gz"); +const requestedLayout = process.env["SCRIPTC_NATIVE_LAYOUT"]; +const functionLayout = + profileGenerate !== undefined || requestedLayout === "" + ? undefined + : (requestedLayout ?? (existsSync(committedLayout) ? committedLayout : undefined)); let target = nativeCodegenTarget(); if (target === null || target.platform === "wasi") throw new Error("a supported native host is required to build the compiler"); @@ -124,6 +133,7 @@ const result = await compile(join(root, "packages/compiler/src/native/cli.ts"), sanitize, ...(profileGenerate === undefined ? {} : { profileGenerate }), ...(profileUse === undefined ? {} : { profileUse }), + ...(functionLayout === undefined ? {} : { functionLayout }), emitIr: process.env["SCRIPTC_NATIVE_EMIT_IR"] === "1", }); if (!result.ok) diff --git a/scripts/refresh-cli-layout.mjs b/scripts/refresh-cli-layout.mjs new file mode 100644 index 000000000..d401ac62b --- /dev/null +++ b/scripts/refresh-cli-layout.mjs @@ -0,0 +1,248 @@ +#!/usr/bin/env node +/* Refreshes packages/compiler/native/cli.layout.gz, the function layout that + * builds of the native compiler use (scripts/build-native-cli.mts). The + * layout lists, in two tiers, the functions the compiler runs: tier 1 for + * `--version` and rebuilds of unchanged programs, tier 2 for the other + * builds. The emitter writes the listed functions first, so the code a build + * runs sits together in the compiler's executable and a run maps fewer of its + * pages. + * + * Builds an instrumented native compiler for this Linux host (or reuses one + * with --instrumented), builds each training program cold and then again + * unchanged, and reads the functions each kind of run executed from the raw + * profiles. The training programs are the runtime benchmark workloads at + * `speed` and every seventh corpus program at the default optimization. A + * refresh takes about 15 minutes on 16 cores, most of it for the instrumented + * build. A stale layout lists some functions that no longer exist and misses + * new ones, which then keep their usual order. + * + * node scripts/refresh-cli-layout.mjs [--jobs 8] [--instrumented ] + */ +import { spawn, spawnSync } from "node:child_process"; +import { createHash } from "node:crypto"; +import { + appendFileSync, + mkdirSync, + mkdtempSync, + readFileSync, + readdirSync, + rmSync, + statSync, + writeFileSync, +} from "node:fs"; +import { cpus, tmpdir } from "node:os"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { parseArgs } from "node:util"; +import { constants, gzipSync, inflateSync } from "node:zlib"; + +const root = fileURLToPath(new URL("..", import.meta.url)); +const { values } = parseArgs({ + options: { + jobs: { type: "string", default: String(Math.max(1, Math.floor(cpus().length / 2))) }, + output: { type: "string", default: join(root, "packages/compiler/native/cli.layout.gz") }, + work: { type: "string" }, + instrumented: { type: "string" }, + help: { type: "boolean", default: false }, + }, +}); +if (values.help) { + console.log( + "Usage: node scripts/refresh-cli-layout.mjs [--jobs N] [--output ] [--work

] [--instrumented ]", + ); + process.exit(0); +} +if (process.platform !== "linux" || process.arch !== "x64") + throw new Error("the compiler layout is collected on Linux x64"); +const jobs = Number(values.jobs); +const output = resolve(values.output); +mkdirSync(dirname(output), { recursive: true }); +const work = resolve(values.work ?? mkdtempSync(join(tmpdir(), "scriptc-cli-layout-"))); +const raw = join(work, "raw"); +const builds = join(work, "builds"); +rmSync(raw, { recursive: true, force: true }); +for (const dir of [raw, builds]) mkdirSync(dir, { recursive: true }); +const log = join(work, "training.log"); + +const cli = resolve(values.instrumented ?? join(work, "cli")); +if (values.instrumented === undefined) { + console.log(`building the instrumented compiler in ${cli}`); + const built = spawnSync( + process.execPath, + [ + "--max-old-space-size=8192", + "--import", + "tsx", + join(root, "scripts/build-native-cli.mts"), + cli, + ], + { + cwd: root, + stdio: "inherit", + env: { ...process.env, SCRIPTC_NATIVE_PROFILE_GENERATE: join(raw, "build-%4m.profraw") }, + }, + ); + if (built.status !== 0) throw new Error("the instrumented compiler did not build"); +} +const scriptc = join(cli, "bin/scriptc"); +// Phase timing shows whether a rebuild hit both caches. It is on for every +// run, so the rebuild's environment matches the first build's. +const baseEnv = { ...process.env, SCRIPTC_TIMING: "1" }; +delete baseEnv["SCRIPTC_LLVM_HELPER"]; + +/** Runs the instrumented compiler, writing its profile to `options.profile`. */ +function run(args, options) { + return new Promise((done) => { + const child = spawn(scriptc, args, { + cwd: options.cwd, + stdio: ["ignore", "pipe", "pipe"], + env: { + ...baseEnv, + SCRIPTC_CACHE_DIR: options.cache, + LLVM_PROFILE_FILE: options.profile, + }, + }); + let text = ""; + child.stdout.on("data", (chunk) => (text += chunk)); + child.stderr.on("data", (chunk) => (text += chunk)); + child.on("close", (code) => { + appendFileSync(log, `$ scriptc ${args.join(" ")}\n${text}exit ${code}\n`); + done({ ok: code === 0, text }); + }); + }); +} + +async function pool(tasks) { + let next = 0; + let passed = 0; + await Promise.all( + Array.from({ length: jobs }, async () => { + while (next < tasks.length) if (await tasks[next++]()) passed++; + }), + ); + return passed; +} + +const programNumber = (name) => Number.parseInt(name, 10); +const training = [ + ...readdirSync(join(root, "benchmarks/runtime/workloads")) + .filter((name) => name.endsWith(".ts")) + .map((name) => ({ + file: join(root, "benchmarks/runtime/workloads", name), + optimization: "speed", + })), + ...readdirSync(join(root, "tests/corpus")) + .filter((name) => /^\d+-.*\.ts$/.test(name) && programNumber(name) % 7 === 0) + .map((name) => ({ file: join(root, "tests/corpus", name), optimization: "release" })), +]; + +// Tier 1 collects each run that took the warm path from its own profile; a +// rebuild that missed a cache (it shows no `frontend-cache-hit` or +// `executable-cache-hit` phase) is left out. Tier 2 pools the first builds. +const warm = new Set(); +const cold = new Set(); +let skipped = 0; +async function warmRun(args, cache, name, cacheHits) { + const profile = join(raw, `warm-${name}.profraw`); + const { ok, text } = await run(args, { cwd: root, cache, profile }); + if (ok && cacheHits.every((phase) => text.includes(`"phase":"${phase}"`))) + for (const fn of executedFunctions(profile)) warm.add(fn); + else skipped++; + rmSync(profile, { force: true }); +} + +const started = Date.now(); +await warmRun(["--version"], join(work, "cache-version"), "version", []); +console.log(`training: ${training.length} programs, cold then unchanged, ${jobs} at a time`); +const passed = await pool( + training.map((program, index) => async () => { + const cache = join(work, `cache-${index}`); + const out = join(builds, `program-${index}`); + const args = ["build", program.file, `--optimization=${program.optimization}`, "-o", out]; + const { ok } = await run(args, { cwd: root, cache, profile: join(raw, "cold-%4m.profraw") }); + if (ok) + await warmRun(args, cache, String(index), ["frontend-cache-hit", "executable-cache-hit"]); + rmSync(cache, { recursive: true, force: true }); + rmSync(out, { force: true }); + return ok; + }), +); +console.log( + `trained in ${Math.round((Date.now() - started) / 1000)} s; ${passed} of ${training.length} programs built, ${skipped} rebuilds left out of tier 1 (see ${log})`, +); + +/** Functions a raw profile (LLVM's format version 10) records as run: the + * names whose counters are not all zero, without the file prefix of + * internal functions. */ +function executedFunctions(path) { + const buf = readFileSync(path); + const u64 = (offset) => Number(buf.readBigUInt64LE(offset)); + if (buf.readBigUInt64LE(0) !== 0xff6c70726f667281n) + throw new Error(`${path} is not a 64-bit raw profile`); + const version = Number(buf.readBigUInt64LE(8) & 0xffffffffn); + if (version !== 10) throw new Error(`${path} has raw profile version ${version}, expected 10`); + const [binaryIdsBytes, records, beforeCounters, counters, afterCounters] = [2, 3, 4, 5, 6].map( + (field) => u64(field * 8), + ); + const [bitmapBytes, afterBitmap, namesBytes] = [7, 8, 9].map((field) => u64(field * 8)); + const valueKinds = u64(15 * 8) + 1; + const recordBytes = Math.ceil((6 * 8 + 4 + 2 * valueKinds + 4) / 8) * 8; + const dataStart = 16 * 8 + binaryIdsBytes; + const countersStart = dataStart + records * recordBytes + beforeCounters; + const namesStart = countersStart + counters * 8 + afterCounters + bitmapBytes + afterBitmap; + const countersDelta = buf.readBigInt64LE(10 * 8); + const names = new Map(); + let at = namesStart; + const uleb = () => { + let value = 0; + let scale = 1; + for (;;) { + const byte = buf[at++]; + value += (byte & 0x7f) * scale; + if ((byte & 0x80) === 0) return value; + scale *= 128; + } + }; + while (at < namesStart + namesBytes) { + const plain = uleb(); + const packed = uleb(); + if (plain === 0) break; + const bytes = + packed === 0 ? buf.subarray(at, at + plain) : inflateSync(buf.subarray(at, at + packed)); + at += packed === 0 ? plain : packed; + for (const name of bytes.toString("latin1").split("\x01")) + names.set(createHash("md5").update(name, "latin1").digest().readBigUInt64LE(0), name); + } + const ran = []; + for (let index = 0; index < records; index++) { + const record = dataStart + index * recordBytes; + const counterOffset = Number( + buf.readBigInt64LE(record + 16) - (countersDelta - BigInt(index * recordBytes)), + ); + const count = buf.readUInt32LE(record + 48); + for (let c = 0; c < count; c++) { + if (buf.readBigUInt64LE(countersStart + counterOffset + c * 8) !== 0n) { + const name = names.get(buf.readBigUInt64LE(record)); + if (name !== undefined) ran.push(name.slice(name.indexOf(";") + 1)); + break; + } + } + } + return ran; +} + +for (const name of readdirSync(raw)) + if (name.startsWith("cold-")) for (const fn of executedFunctions(join(raw, name))) cold.add(fn); +const lines = [ + ...[...warm].sort().map((name) => `1 ${name}`), + ...[...cold] + .filter((name) => !warm.has(name)) + .sort() + .map((name) => `2 ${name}`), +]; +writeFileSync(output, gzipSync(`${lines.join("\n")}\n`, { level: constants.Z_BEST_COMPRESSION })); +console.log( + `wrote ${output}: ${warm.size} tier-1 and ${lines.length - warm.size} tier-2 functions (${statSync(output).size} bytes)`, +); +rmSync(builds, { recursive: true, force: true }); +if (values.work === undefined) rmSync(work, { recursive: true, force: true }); From e7a088f90420ca6de0d81675e6e95989a60eb215 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 16:58:11 -0500 Subject: [PATCH 2/4] Key the executable cache by the function layout's contents The early executable cache key covered the profile but not the function layout, so a build that added, changed or edited a layout could restore the executable built with the previous order. The key now includes the digest of the layout file's bytes. An unreadable layout fails the build with SC3002 before the cache lookup. --- .../src/executable/executable-cache.test.ts | 3 +- .../src/executable/executable-cache.ts | 4 ++ packages/compiler/src/index.ts | 20 ++++++++++ .../compiler/test/function-layout.test.ts | 38 ++++++++++++++++++- 4 files changed, 63 insertions(+), 2 deletions(-) diff --git a/packages/compiler/src/executable/executable-cache.test.ts b/packages/compiler/src/executable/executable-cache.test.ts index afae8b2c1..68aedbc33 100644 --- a/packages/compiler/src/executable/executable-cache.test.ts +++ b/packages/compiler/src/executable/executable-cache.test.ts @@ -220,7 +220,7 @@ test("early executable cache misses on source and resolution changes", async () expect(await readEarlyExecutableCache(f.root, f.options)).toBeNull(); }); -test("early executable keys isolate compile modes, paths, implementation, checker, and FFI manifests", async () => { +test("early executable keys isolate compile modes, paths, implementation, checker, function layouts, and FFI manifests", async () => { const f = await fixture(); const tracker = new FrontendInputTracker(); tracker.run(() => trackedReadFile(f.source)); @@ -241,6 +241,7 @@ test("early executable keys isolate compile modes, paths, implementation, checke { ...f.options, targetCpu: "x86-64-v4" }, { ...f.options, profile: "profile-generate:/tmp/%p.profraw" }, { ...f.options, profile: "profile-use:digest" }, + { ...f.options, functionLayout: "layout-digest" }, { ...f.options, checker: "tsc-ts-executable-identity" }, { ...f.options, npmStatic: "auto" }, { ...f.options, npmStatic: ["commander"] }, diff --git a/packages/compiler/src/executable/executable-cache.ts b/packages/compiler/src/executable/executable-cache.ts index f26c4c89a..ed351e809 100644 --- a/packages/compiler/src/executable/executable-cache.ts +++ b/packages/compiler/src/executable/executable-cache.ts @@ -148,6 +148,8 @@ export interface EarlyExecutableCacheOptions { /** Omitted without --profile-generate/--profile-use; otherwise the * pattern, or the digest of the profile's bytes. */ profile?: string; + /** Omitted without a function layout; otherwise the digest of its bytes. */ + functionLayout?: string; /** Omitted for the default tsgo checker; with SCRIPTC_CHECKER=tsc-ts, the * tsc-ts executable's file identity. */ checker?: string; @@ -290,6 +292,7 @@ function cacheKey(options: EarlyExecutableCacheOptions): string { ...(options.detachedExit ? ["detached-exit"] : []), ...targetCpuKeyParts(options.targetCpu), ...(options.profile !== undefined ? [options.profile] : []), + ...(options.functionLayout !== undefined ? [`layout:${options.functionLayout}`] : []), ...(options.checker !== undefined ? [`checker:${options.checker}`] : []), ...(options.youngNursery ? ["young-nursery"] : []), options.npmStatic === null @@ -333,6 +336,7 @@ function routeKey(options: Omit { + if (opts.functionLayout === undefined) return undefined; + const path = resolve(opts.functionLayout); + let bytes: Buffer; + try { + bytes = await readFile(path); + } catch (err) { + throw new Error( + `cannot read function layout ${path}: ${err instanceof Error ? err.message : String(err)}`, + ); + } + return createHash("sha256").update(bytes).digest("hex"); +} + /** The request's function layout. */ async function readFunctionLayout( opts: CompileRequestOptions, @@ -1546,9 +1563,11 @@ async function compileTracked( platform: buildPlatform, }); let profile: NativeProfileOptions | undefined; + let functionLayoutDigest: string | undefined; try { if (profileRefusal !== null) throw new Error(profileRefusal); profile = await readNativeProfile(opts); + functionLayoutDigest = await functionLayoutKey(opts); } catch (err) { return { ok: false, @@ -1583,6 +1602,7 @@ async function compileTracked( ...(opts.detachedExit === true ? { detachedExit: true as const } : {}), ...targetCpuField(opts.targetCpu), ...(profile === undefined ? {} : { profile: nativeProfileKey(profile) }), + ...(functionLayoutDigest === undefined ? {} : { functionLayout: functionLayoutDigest }), ...checkerField(), ...(youngNurseryRequested() ? { youngNursery: true as const } : {}), npmStatic: opts.npmStatic ?? null, diff --git a/packages/compiler/test/function-layout.test.ts b/packages/compiler/test/function-layout.test.ts index 8619c5b34..ecf4af7d9 100644 --- a/packages/compiler/test/function-layout.test.ts +++ b/packages/compiler/test/function-layout.test.ts @@ -3,7 +3,7 @@ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { gzipSync } from "node:zlib"; -import { expect, test } from "vitest"; +import { expect, test, vi } from "vitest"; import { compile } from "../src/index.js"; import { functionLayoutKey, @@ -145,3 +145,39 @@ console.log(points.map(norm).join(","), points[0]!.x === 3 ? "three" : "other"); await rm(dir, { recursive: true, force: true }); } }); + +test("a changed function layout misses the executable cache", async () => { + vi.stubEnv("SCRIPTC_NO_CACHE", undefined); + const dir = await mkdtemp(join(tmpdir(), "scriptc-function-layout-cache-")); + try { + vi.stubEnv("SCRIPTC_CACHE_DIR", join(dir, "cache")); + const entry = join(dir, "main.ts"); + await writeFile(entry, source); + const exe = join(dir, "main"); + const llvm = join(dir, "main.ll"); + const build = async (functionLayout?: string) => { + const built = await compile(entry, { + outputKind: "exe", + outDir: dir, + outPath: exe, + ...(functionLayout === undefined ? {} : { functionLayout }), + }); + expect(built.ok, JSON.stringify(built.diagnostics)).toBe(true); + return definitions(await readFile(llvm, "utf8")); + }; + const plain = await build(); + const third = plain.find((d) => /^sc_b?f_third$/.test(d.name))!.name; + const first = plain.find((d) => /^sc_b?f_first$/.test(d.name))!.name; + const layout = join(dir, "layout"); + await writeFile(layout, `1 ${third}\n`); + expect((await build(layout)).find((d) => d.name === third)!.group).toBe("layout-1"); + // The same path with other contents is another layout. + await writeFile(layout, `1 ${first}\n`); + const edited = await build(layout); + expect(edited.find((d) => d.name === first)!.group).toBe("layout-1"); + expect(edited.find((d) => d.name === third)!.group).not.toMatch(/^layout-/); + } finally { + vi.unstubAllEnvs(); + await rm(dir, { recursive: true, force: true }); + } +}); From f2c53ff2f8def14f074780c91a674c2d81b5fa34 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 23:32:41 -0500 Subject: [PATCH 3/4] Build the bootstrap seed without the function layout The native bootstrap compares the seed's LLVM, which the Node-hosted compiler emits, with the LLVM the native compiler emits for itself. The seed's build applied the committed function layout and the native compiler has none, so the two listed the same functions in different orders. The layout only orders functions, so the seed is built without it. --- scripts/bootstrap-seed.mjs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/bootstrap-seed.mjs b/scripts/bootstrap-seed.mjs index f0993f126..fc9a297d8 100644 --- a/scripts/bootstrap-seed.mjs +++ b/scripts/bootstrap-seed.mjs @@ -51,6 +51,10 @@ async function main() { ...process.env, SCRIPTC_NATIVE_EMIT_IR: "1", SCRIPTC_NATIVE_OPTIMIZATION: sanitize ? "dev" : "release", + // The bootstrap compares the seed's LLVM with the native compiler's + // own emission, which has no function layout. The layout only orders + // the functions, so the seed is built without it. + SCRIPTC_NATIVE_LAYOUT: "", }, }, ); From a8080733dff97efd5da28230a44033396e178d53 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Sun, 25 Oct 2026 23:42:51 -0500 Subject: [PATCH 4/4] Build the bootstrap test's own seed without the function layout The bootstrap test builds its own seed when CI shares none, and that build still applied the committed function layout, so its LLVM listed functions in a different order from the native compiler's own emission. Both seed builds now share one environment, which leaves the layout out. --- scripts/bootstrap-seed.mjs | 23 +++++++++++-------- tests/harness/bootstrap-seed.test.ts | 18 ++++++++++++++- .../self-hosting-native-driver.test.ts | 9 ++------ 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/scripts/bootstrap-seed.mjs b/scripts/bootstrap-seed.mjs index fc9a297d8..6bce075f5 100644 --- a/scripts/bootstrap-seed.mjs +++ b/scripts/bootstrap-seed.mjs @@ -25,6 +25,19 @@ export function verifyBootstrapSeed(directory, revision, sanitize) { } } +/** The environment a bootstrap seed builds with, over the inherited one. The + * bootstrap compares the seed's LLVM with the native compiler's own emission, + * which has no function layout. The layout only orders the functions, so the + * seed is built without it. */ +export function seedBuildEnvironment(sanitize) { + return { + SCRIPTC_SAN: sanitize ? "1" : "", + SCRIPTC_NATIVE_EMIT_IR: "1", + SCRIPTC_NATIVE_OPTIMIZATION: sanitize ? "dev" : "release", + SCRIPTC_NATIVE_LAYOUT: "", + }; +} + async function main() { const directory = process.env.SCRIPTC_BOOTSTRAP_SEED_DIRECTORY; const revision = process.env.GITHUB_SHA; @@ -47,15 +60,7 @@ async function main() { { cwd: root, stdio: "inherit", - env: { - ...process.env, - SCRIPTC_NATIVE_EMIT_IR: "1", - SCRIPTC_NATIVE_OPTIMIZATION: sanitize ? "dev" : "release", - // The bootstrap compares the seed's LLVM with the native compiler's - // own emission, which has no function layout. The layout only orders - // the functions, so the seed is built without it. - SCRIPTC_NATIVE_LAYOUT: "", - }, + env: { ...process.env, ...seedBuildEnvironment(sanitize) }, }, ); writeFileSync( diff --git a/tests/harness/bootstrap-seed.test.ts b/tests/harness/bootstrap-seed.test.ts index 76b1f6de5..2da27baea 100644 --- a/tests/harness/bootstrap-seed.test.ts +++ b/tests/harness/bootstrap-seed.test.ts @@ -3,7 +3,7 @@ import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; import { load } from "js-yaml"; import { expect, test } from "vitest"; -import { verifyBootstrapSeed } from "../../scripts/bootstrap-seed.mjs"; +import { seedBuildEnvironment, verifyBootstrapSeed } from "../../scripts/bootstrap-seed.mjs"; test("bootstrap artifacts require a complete seed from the same revision, lane, and path", () => { const directory = mkdtempSync(join(tmpdir(), "scriptc-seed-contract-")); @@ -36,6 +36,22 @@ test("bootstrap artifacts require a complete seed from the same revision, lane, } }); +test("seeds build without the function layout in both lanes, shared or not", () => { + for (const sanitize of [false, true]) + expect(seedBuildEnvironment(sanitize)).toEqual({ + SCRIPTC_SAN: sanitize ? "1" : "", + SCRIPTC_NATIVE_EMIT_IR: "1", + SCRIPTC_NATIVE_OPTIMIZATION: sanitize ? "dev" : "release", + SCRIPTC_NATIVE_LAYOUT: "", + }); + // The bootstrap test builds its own seed when CI shares none. + const driver = readFileSync( + new URL("./self-hosting-native-driver.test.ts", import.meta.url), + "utf8", + ); + expect(driver).toContain("...seedBuildEnvironment(sanitize)"); +}); + test("CI restores each seed only into its matching instrumented bootstrap lane", () => { const workflow = load( readFileSync(new URL("../../.github/workflows/ci.yml", import.meta.url), "utf8"), diff --git a/tests/harness/self-hosting-native-driver.test.ts b/tests/harness/self-hosting-native-driver.test.ts index 1cc920bd2..8cfd16eea 100644 --- a/tests/harness/self-hosting-native-driver.test.ts +++ b/tests/harness/self-hosting-native-driver.test.ts @@ -1,4 +1,4 @@ -import { verifyBootstrapSeed } from "../../scripts/bootstrap-seed.mjs"; +import { seedBuildEnvironment, verifyBootstrapSeed } from "../../scripts/bootstrap-seed.mjs"; import { execFile, spawnSync } from "node:child_process"; import { chmodSync, @@ -89,12 +89,7 @@ test( // seed avoids optimizing the huge compiler module before ASan can // exercise its complete traversal, serialization and LLVM emission. ...options, - env: { - ...process.env, - SCRIPTC_SAN: sanitize ? "1" : "", - SCRIPTC_NATIVE_EMIT_IR: "1", - SCRIPTC_NATIVE_OPTIMIZATION: sanitize ? "dev" : "release", - }, + env: { ...process.env, ...seedBuildEnvironment(sanitize) }, }, ), );