From f083a8ece42aadb06ab8d2900aeeea9dcb2ccce8 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 28 Sep 2021 22:34:29 +0100 Subject: [PATCH] Add SSSE3 implementation of Adler32. --- Aaru6.Checksums/Aaru6.Checksums.csproj | 33 ++--- Aaru6.Checksums/Adler32/ssse3.cs | 186 +++++++++++++++++++++++++ Aaru6.Checksums/Adler32Context.cs | 15 +- Benchmarks.ods | Bin 67682 -> 63703 bytes 4 files changed, 215 insertions(+), 19 deletions(-) create mode 100644 Aaru6.Checksums/Adler32/ssse3.cs diff --git a/Aaru6.Checksums/Aaru6.Checksums.csproj b/Aaru6.Checksums/Aaru6.Checksums.csproj index 14422c3..c665861 100644 --- a/Aaru6.Checksums/Aaru6.Checksums.csproj +++ b/Aaru6.Checksums/Aaru6.Checksums.csproj @@ -50,19 +50,20 @@ true - + - - - - - - - - - - + + + + + + + + + + + @@ -70,16 +71,16 @@ - - + + - - - + + + diff --git a/Aaru6.Checksums/Adler32/ssse3.cs b/Aaru6.Checksums/Adler32/ssse3.cs new file mode 100644 index 0000000..9461f59 --- /dev/null +++ b/Aaru6.Checksums/Adler32/ssse3.cs @@ -0,0 +1,186 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : ssse3.cs +// Author(s) : Natalia Portillo +// The Chromium Authors +// +// Component : Checksums. +// +// --[ Description ] ---------------------------------------------------------- +// +// Compute Adler32 checksum using SSSE3 vectorization. +// +// --[ License ] -------------------------------------------------------------- +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// ---------------------------------------------------------------------------- +// Copyright © 2011-2021 Natalia Portillo +// Copyright 2017 The Chromium Authors. All rights reserved. +// ****************************************************************************/ + +using System; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; + +namespace Aaru6.Checksums.Adler32 +{ + internal static class ssse3 + { + internal static void Step(ref ushort sum1, ref ushort sum2, byte[] buf, uint len) + { + uint s1 = sum1; + uint s2 = sum2; + int bufPos = 0; + + /* + * Process the data in blocks. + */ + uint BLOCK_SIZE = 1 << 5; + uint blocks = len / BLOCK_SIZE; + len -= blocks * BLOCK_SIZE; + + while(blocks != 0) + { + uint n = Adler32Context.NMAX / BLOCK_SIZE; /* The NMAX constraint. */ + + if(n > blocks) + n = blocks; + + blocks -= n; + + Vector128 tap1 = Vector128.Create(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17). + AsByte(); + + Vector128 tap2 = Vector128.Create(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1).AsByte(); + Vector128 zero = Vector128.Create(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0).AsByte(); + Vector128 ones = Vector128.Create(1, 1, 1, 1, 1, 1, 1, 1); + /* + * Process n blocks of data. At most NMAX data bytes can be + * processed before s2 must be reduced modulo BASE. + */ + Vector128 v_ps = Vector128.Create(s1 * n, 0, 0, 0); + Vector128 v_s2 = Vector128.Create(s2, 0, 0, 0); + Vector128 v_s1 = Vector128.Create(0u, 0, 0, 0); + + do + { + /* + * Load 32 input bytes. + */ + Vector128 bytes1 = Vector128.Create(BitConverter.ToUInt32(buf, bufPos), + BitConverter.ToUInt32(buf, bufPos + 4), + BitConverter.ToUInt32(buf, bufPos + 8), + BitConverter.ToUInt32(buf, bufPos + 12)); + + bufPos += 16; + + Vector128 bytes2 = Vector128.Create(BitConverter.ToUInt32(buf, bufPos), + BitConverter.ToUInt32(buf, bufPos + 4), + BitConverter.ToUInt32(buf, bufPos + 8), + BitConverter.ToUInt32(buf, bufPos + 12)); + + bufPos += 16; + + /* + * Add previous block byte sum to v_ps. + */ + v_ps = Sse2.Add(v_ps, v_s1); + /* + * Horizontally add the bytes for s1, multiply-adds the + * bytes by [ 32, 31, 30, ... ] for s2. + */ + v_s1 = Sse2.Add(v_s1, Sse2.SumAbsoluteDifferences(bytes1.AsByte(), zero).AsUInt32()); + Vector128 mad1 = Ssse3.MultiplyAddAdjacent(bytes1.AsByte(), tap1.AsSByte()); + v_s2 = Sse2.Add(v_s2, Sse2.MultiplyAddAdjacent(mad1.AsInt16(), ones.AsInt16()).AsUInt32()); + v_s1 = Sse2.Add(v_s1, Sse2.SumAbsoluteDifferences(bytes2.AsByte(), zero).AsUInt32()); + Vector128 mad2 = Ssse3.MultiplyAddAdjacent(bytes2.AsByte(), tap2.AsSByte()); + v_s2 = Sse2.Add(v_s2, Sse2.MultiplyAddAdjacent(mad2.AsInt16(), ones.AsInt16()).AsUInt32()); + } while(--n != 0); + + v_s2 = Sse2.Add(v_s2, Sse2.ShiftLeftLogical(v_ps, 5)); + /* + * Sum epi32 ints v_s1(s2) and accumulate in s1(s2). + */ + v_s1 = Sse2.Add(v_s1, Sse2.Shuffle(v_s1, 177)); + v_s1 = Sse2.Add(v_s1, Sse2.Shuffle(v_s1, 78)); + s1 += (uint)Sse2.ConvertToInt32(v_s1.AsInt32()); + v_s2 = Sse2.Add(v_s2, Sse2.Shuffle(v_s2, 177)); + v_s2 = Sse2.Add(v_s2, Sse2.Shuffle(v_s2, 78)); + s2 = (uint)Sse2.ConvertToInt32(v_s2.AsInt32()); + /* + * Reduce. + */ + s1 %= Adler32Context.ADLER_MODULE; + s2 %= Adler32Context.ADLER_MODULE; + } + + /* + * Handle leftover data. + */ + if(len != 0) + { + if(len >= 16) + { + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + s2 += s1 += buf[bufPos++]; + len -= 16; + } + + while(len-- != 0) + s2 += s1 += buf[bufPos++]; + + if(s1 >= Adler32Context.ADLER_MODULE) + s1 -= Adler32Context.ADLER_MODULE; + + s2 %= Adler32Context.ADLER_MODULE; + } + + /* + * Return the recombined sums. + */ + sum1 = (ushort)(s1 & 0xFFFF); + sum2 = (ushort)(s2 & 0xFFFF); + } + } +} \ No newline at end of file diff --git a/Aaru6.Checksums/Adler32Context.cs b/Aaru6.Checksums/Adler32Context.cs index cc7b4e8..648633d 100644 --- a/Aaru6.Checksums/Adler32Context.cs +++ b/Aaru6.Checksums/Adler32Context.cs @@ -31,9 +31,11 @@ // ****************************************************************************/ using System.IO; +using System.Runtime.Intrinsics.X86; using System.Text; using Aaru.CommonTypes.Interfaces; using Aaru.Helpers; +using Aaru6.Checksums.Adler32; namespace Aaru6.Checksums { @@ -41,9 +43,9 @@ namespace Aaru6.Checksums /// Implements the Adler-32 algorithm public sealed class Adler32Context : IChecksum { - const ushort ADLER_MODULE = 65521; - const uint NMAX = 5552; - ushort _sum1, _sum2; + internal const ushort ADLER_MODULE = 65521; + internal const uint NMAX = 5552; + ushort _sum1, _sum2; /// Initializes the Adler-32 sums public Adler32Context() @@ -87,6 +89,13 @@ namespace Aaru6.Checksums static void Step(ref ushort preSum1, ref ushort preSum2, byte[] data, uint len) { + if(Ssse3.IsSupported) + { + ssse3.Step(ref preSum1, ref preSum2, data, len); + + return; + } + uint sum1 = preSum1; uint sum2 = preSum2; uint n; diff --git a/Benchmarks.ods b/Benchmarks.ods index 4721897aabfa222075bb395f51b7917ec91856e4..635b1a4daf5afcda56fd20188c5cb079b6afdfc7 100644 GIT binary patch delta 29754 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 JhHt+8rMK_%u|vtz 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 Q;`LXOV zQC}wLdzg;5JiX)?XF%K9*&o8LtdiF8bPjOPNP=?Hu*` z#iF(9m*eZI9q&DQ`t-Seyx+6?q2JEi*VVN=vAgqq@+-^o>A!?kOQ#6+?P>4a*K{<& zd)kqZw|-&g=TyxKRh;o&?4C7u%CWDd=Y<;ix?ewS__XKCmjjObGH0)QUfuY5Zj5yB zz1yto;{WrPU%KkczEiDdr^u zu6y4lEx~GA>z~R044(%6yM5xL&XXC58H(rM|F&OZ(kQOfQCe`xe%YNH@84ZJTz9neo7cU&$Jd>k%CBG8^5sBLjP?e`GY4Kf+AQ0% zyFYgB>HiIO_0J+SI3}iB&3pgtbB0f4h}`cJg)zcbQ(s0cyL$ey;?uy|Bkg8S+ZTn& zRzLXH@L_{q66?aJRT?}w%kLjOKE-`uzm4?=ACHt5H}mBGFg^^trMR2nzQTn4Z}kZIx5lD*wnVIr-;$zWRY}ldF!NFfpKQauN6m z6Mr{q)&~|ZHWR3Ozy8C8%;mKVJQBxubmm`bxBL2T;q`N0LfINk)diGKZoC_Re=3WF zOwY#2U*1_wKl4NBZC3d1`&s3x_y6v$^;7o;4T-a#E?#zxMcmNaW1?+D{okLn_inhi zcHi#wOs}LpJ`sD)7An4-Au9B5?txcMI*)lDO)~tJkh`Q_XZpI+UNJLN`5w=F?Z0>B z>X~b*S_K+&Zj|qyyP4bM_5AuBU1{EXrstiV3mO-`^RGl|$IRIZop02e%I{y-{w6*1 z`??Q{G>S~Oruj;q|IUAHn)vC*+orRg+8FVuw$n0DOnFxdkJt?z&s?Ts#bJ8=Ow(=^ zPt9{Y_vUKx|GNLbkJnc;7qb|(xVZMb4&5{5`CW6~*go&FFY!X=XP!xUmSDBJlccYW)I9(Eb);$)Y{$08~hRBYMV_0#2QUcl8pVU9VoY>x}o_g-CEVQuK< z`SE26wQfdycc&bNTsIuvpwR7*T z8_%-OxW8^Y^Vx>)(#N*LR{Jei2y`Czcpf=9FL;}-gYc3U`}QoErfV%UuQFL;&xxx( zZx2^#&eWbaYyKu_vslM_lP)yQf0|w&yu$0y56{${YKJ(No!r55?oG^`W%*lo&E7xx z^v~UvM?CV*%{koqTdw2RMPVZ?m^r$CbFLHLIt_Z9K{;awCgvl1b`>rTgO9UtKr4qq%U) zvs^W)Fq`oG?sHcKZ4+I_qr_Kb?f8$e_uiH%y>q|TZ{ZDW?<#f)wa~a1{zO|w>dupZ zpd%%-6RMpjv51%TXtpwV35q8CtDL{x^VpSdTb@XGN;UmTZ`}Ktc#4h z?j`x|XX=Wy7pcFxm1(vpSOj^`@GyJ;rlvEC@MZSKIguN}oZn8UvJ+Lsl z5n6Kho?~_MTT_LvD`%Rkx_n~J;ZL0qxS(}Q@S&qCg+sGbw!aAo3}C#;*>5Yj_QXs+ zxvQU_f8w^ud1&79|2fC`__cPSMHZ8HO*HO&d$4O+^4UJNHSd<1*1Nf1zghGBR-mm> zmtC;idh?Z@x)&lU`8G#Z?K{uFgF> zol7Op{6Ah75xcm3!w>yKN}PXQUKbI&_a!=JPi;&~dEld?@u4w$J~TQScul(Zx_VXp zx;^{)?|o}+?^^xq&OF(pzn=fB@4K@(-&Hj6>?CL73)N9~X9rxFUnOomX~p!d39oe0 z3iIY{KlrMO_s7{e84p)S{=KyKPQe_zh`!+drwc>k)VbbSok;F#Sz)swM)_XMv*_oM zdsVJlFSI!9YLv+z<<8=k<}Kj+?+~Zb{(H(5mG91^EtJb%4>?VuGVpeTEd`TX$8t_3Xn6rw{6!$4{M*7ku+&dcW!^`@GL5{X3q2zIi_FQstLv z&QIbG`&~0QdFq}*q7Vm1yz$P=obPjX)?YWOef1+Sq+grk@6N|(7s>H3_vSF$Cd*7> zm^6XEfUPd;&+9XLS1e8z)AcKD=@Y+ad%0fFB5^^4^zv2S@x{4k3tNxx+jg^J`x6!S zg7bI2C!4HZCYk(9DD#l7YjtjqlIkfTLFF##w}w8cKB*6+5B~njRPpTVmyA~%ZnoEL z=Kq`4&KoqzV`?^!RfF4$trvC{zk8N-Lp_O4>C4xBF;5@eTl;T~`I@8O^6rPMjhk4$ zRV`M(wZ3+%``^U=Uw4&O9__bIKink$cXQ{;ZBgUv!W3_Kv|6qpfqAmAz?`wKBIHf6QG#V(c^mV#Ub*LMD$nc-|bGjm^B$iuLy0WWMGiWTSxi9R~+wXpgE&#&+m zrkr9QU%4I?x^*q;+}`N!cQ<$aKJ&$nrE0IqvHWD4j~zeCgscwsuG(*O7@;%s`~^<8W) zAFlO?eYGQQ<-VCl*XCta&3*Ou*ju}&JLaa(t19_b-yZ&-3Dh1|zk2W_H znj8mJ3fb%ea@mCjh|552c-JPdyTNVy#1<2fe?X(_GFhXe>r@zBuQ$~%E~(5(E!L~Z z%^83}_Ii{vjRO`jHCY`y9mmeama)0YjgQLqvHD?ZxgJ4zuZ7Z zB||Rd@8+D-ckd>2E1ftT%lsv1!TK#O-bVr#Ib6!NzONmxFn^76&?L?EYbMve&JMbx z_aM5c&3Mkt`#kMmY$yNEHLg!6)x74}wE$hv ziY^+_-~QIw-)^7vb$b2Iu4f)K6Y>tv{b;hZ_D z%<*;0%+^F7>puLrWJ?X?e1s_WD|XrfawAi?`-E z>b<#I{{Qp8yX`8+S(zlA78xBps}*|Z( z9Q{7?_;ofVN0;2$K3n$sdR!OVoZDM*^4L1oFb20kMNc!4+fG4!-;$SV#5v608`GHh zrs!z)de#Uv=DxYRITv|mudxZTxfOG?W?6lf{feyfoD9no^*6XAmulYQJEoy&A9rl~ zqIn-|!%jK|q@UJnDKOZ3(9Ae*=huuikF1_sHE>@3*uZ(2FX}>CjezOqy}Ry+N`qSK zr#?%u-~QNkc-I2o5Qj&cFKx0Y7dcBpYulriU?@92*y~$Fuj~+q0o-bPFi;8=%&^q+PHFT%gLzc@WF|6r+isw#mkGi||{>$aB%V!_)cqaa- z;ORd0MgJ=PpR>z7w&?Mn1VK*qt1p}~c38J*Ha=>~ZOlG#+4HUaYE6#i{=V!DWs@4u zsuY^MIeNL-bB0y^nKwt4wA{M;_{;ozUwSfw`niH$MbxKk&{LJ1xWT;sm7VPlTci1M zJr}NXO}aDxns9W8KvhWas_PlkQe;9c-|T2wkgUfkCfph?aP+3TK)@!U?5)$<6iW|o zu(I7Wb*6D><++tJ6oRTlKg|uRIx41KaNwG8z!J@7t*>X*LiPtA-m5yrY|mSl(_P}P zzAp)$J7wD;UFIW>_4(>2)-SmDUF+tpn?BYJRv~dptD2i1Is5KAwD6%XpK7X8xn^0> zq-8rwgnTp^GP+kVeAfScM@=&LZRSbCNql-*l{qRwJ#iZ*FI@FdFd%S40n6>e(qo0& z#Cba>>rCgw2%2tF+JDXLBkYw@lBgn%8G47An)tySSdYWbe_oI#-Qn ze;2M$-^%uPd9v#FgegHvT3vl<@v-><(-dEHd}>ljpH{GD6@S~R1BFRR;g?IR+28V( znF*}yf4j%hNyYxqw*WR#)+mp3?;RH9i?VuUPV==kSxu0wkm=Yk;W6*BS5No+VOER& zVtVNRbHTVhH-Cnle(3Yc?VQNA`s0~zdQGk6Htd>yO-eRC{qv`_fwn@f{}*@N%L$si zX2Hf+L1&&_+S5jC6shi6wJkkfw&44hF9{1)*nidgrV^^JvCusF?Bqih`o~{Mv3{I={!!?Hw6ERIte#i= zwwQZ%)<&DKQ?FfGcQaNxO%&M5eogwwZSUDr&%Zjl;3nr$NxjRRwi|*#&GUw338v8% ziJRR&d`jBZadzI;@K;BF1T4I?XU>xZxBdSdDlZGvYn^&X%DYw`XHckr?~GMvFy4sY5{?%8^4 zzHZaf)Gg-Rk9J62Kgcb%x!|Jko`Ci(y_U%`o8&z;SS*;?xAx7|{j+0nlHB@pp)L!O zzIwS^bUT^et_rR%{rYzAk^`j*e7z@+trb;gZR$R<(B7iASt9w_w1k3X3HKxxd#v2# zqSEmwtePoUGI;6tX)FHLYGgf2e3SBI!@=Wq&HaDb+;e+WCa&5uV~2x`(*3T}Mcb~N zyrG`NsPyIR+NxiF%|AZ4R&Q>7t*H8YzTc|2nWx>R+9|gd&oyplOs{9Vs~pHJH!+l1 zX?}Az>xzvb%cGBaXx_FiXk|3elxYtu=yi76k^VLE9Vh!8;d{^KF-|=HP`up#PvpCq z{hAA|?@V`i^7)V5yPL{hzt7vh4>8&HDb}&epRt z_a_AISaV+N#nA=&c2_Ta|KH(f8d9DjSyCL(7OXRAxwOAP#(gPH{ygO`y=H$NE>FL| z>Q}y+Nr%{X0q(gcZI8Is8E9OqWnF4_=KG>N9=_vmK1qJO%Q9W^Co=N^x%L(g`1K8oVi=`aDv0rqo?ef02r5auRpF{da8o z+Ok^v^Bdoy_QSfG`!x&Mq8IB=vAA(diDk1`V;f;)8Y1VbJcSh372dBAL)Fw^zHtN%HT&lacb}8Tdcm(^hIl5 z_#>USMeZ{_U1u-9vUy>pL$2HN|G$5| z+z)E^@1MlSvzwiPVV^GAFgW*j&3fPb*$x72?|+JRIO~hfe`bBma*Nkh=TJ?r^B39J z_K3a-D)W3(f1h>sjj2K>x7n2KJZLoU``pT7X*T<#uTK5Ow06OqrMr@E?PAk;Y?+$6 z>VMT9bEUs|g~sbS7qfEA>=B>!OGY?<`^tM;bso9|Of(2;_DGrbfi2?P=5=gplj|Q( zu6KO-Ht+lapZm+!S*$s>CwFE~C)d4=b38=%iZ+EZ>%NtrsP)j*(b(gg5sz25bZ)ql zqqadv#qN8O8oO2*NhwWVnOFNF`#Q@BO~WU<8bj25gD>V7r0m^rN2V&_-SoV!Wvr9B zRU59XO2w`4NgL-rW`@-mM#KNXWW zVTt&j+NG=hg?|kBuuW}~`qa8#mkTR@zkU5(Uh731YcAip)a!Gn#U7tG?S4g6+2YKb zyvtL~XH1K&k1E@nd9(DN`|iCBH}~`0|E_j5En)7DbysA#&38|D&BYS;ugCc2d({l4 zHw!OeYQ_X{~=Fh*hg<-Z=gVh$s zPZ!vx&(%y36D-=U6mm`Q+X^@Fe~gZ)4;OCwFhTv~;k380)4u+=F1CA(q|tQAS0QKD zF&*7l_+3l7dgG>x=Gwot5|ZBRN=h*@e3fuCyisV;HIXD`{)rRYr?*CaYTev4E!O&p z=(~lF7A4m*pXr-*v#xEjS6QI?Ay>9%N&a^Z2Aun4`ZaLjj}rkkIU4^g7o1re+x7P7 zBYjZXN^}+9XvxIDa8nADwiua27(^H#9l*)WKTT|G*VqJa`JQo!m63s=nVErs2Xu4+ z9EUJ4FytoYWu~PTm*^Fxqy>0G41jd-CcpSC!!((3^20we{KjZf^MA`QU19@CO}_b? z7t}%I`76V8lN%(WXJ~+`+9ud&N%T)`b_RyesSFI#aO**gFu}qb z0KWyQ{>g@aWSFYuK~j^m|L`h+JQdSFxyX{0f#I_Qx`|6PzzQcooW=WFhDl8iEaLtf zq80giA5_Q8GX*RB_Y0yB`Jj7Lg_SlSh5Cl5?z9R1zXx%AI_Lm=kPjhvtt$h=^Z+JC z5wPo#&jS~PD1ee}?vwxjm*)g|aRun4=;m2u zz$cj1gHrojl0UIvEAioe9b0gO9-N~cae$cPa? z*QQNlWK;xe1x7lE}ZVk0_KB4fvI`LbPg7TFXpeB zev+9{9&9GEbA(_H2Gb&Irt`BgDu7ji(+l)uaa5bj)=vJgUJRamK;uxbVJK0sF)(7m z`sowd7?nXGY57Zr$#45)Mi#NjxxaW|LG8JJve++pNT(j0eElaVpeH~4FT-@}(DZH= zNVvZR`Op8zbZ%CJ|2~|Veu{-r7B;Tr^~G4{MGr%0)b+aKl}p^ZGlWux-eNFP-gOm ze_Y^zf%y(Z%Yz6wj<_)SU7#|mksyany)b!RfC8#G$g1-fCj0zTVS|>Bpft^X5uSF9 zCL^WknoCIH3co;Ub$TWG5~M?8tec7 delta 30292 zcmccqk@?XC7M=iaW)=|!1`Y;>wK5ZVf|%CIY%V-l%*eD>W^(@u$<2BD8JR$A`Burz z#oHgSgV-B1bm|S?#zyCegi8D?uU^P{$n^k+Zo~&Jtv6pbd(!adDnRF?xnT0yL8#aK8Q7Q)feO$Ugu-yXOfBI z6VPX?5S;vIhMCPD9=q8OD{eFDlxFPI3uHb2Xmjfiopl_Kw5FPAiJsoW9_;_%bdvSw z(BE&L&g|-XAYi8*xa6>a^p^M)x#rV6R+UXVbZY7ypIa4P(x8}Xc&5ND#E{vL7ifm*`Jo|JJusP<2BMOMlMM$l$xuUZ(Pi*Em*2S-+cN zbgzh?mv`fx-9@MOI&L*uDwi&}`c-7T?e`B&@|K~(ZYOR|oqFVisNl|bd)lg={x~8wdu3LN`KATsov6f@~N6(k*mwPxpVIbA3E@)XtKmk zC8g{C)*|u5W1|-$>3cHEYeCUYPqlS1>8E$HH^#jO>rn|eI%uoNqcRuNg1vzBhl$c9<4zHc?)cv@3=xnbCN&4ICztzk?roX(&OFSez==hm}MCI!R zYHL51u9^{-*gy+fvZt}XlcoGajE(?5xO>mN(SWnI`I;a{K`dqMv2Zu3IkW^a>y z-GVM4>2v3wO3hnw#X?+t*A%@M{SVKGtV=v^(p$ga@D#ln{fSY<+vcB0|CQkWQuwy1 z-bRZo*1v`x^;6!xyjEd!Fi`tNzvH4W52qaK*XfILtmhG0`hD$%9Ty+15dCsoA@Ek| z>|@>DmS8PYmaV(GLj$U#OhUx7Vy8r9T7Il`U&cWqU_d;8{;S03eS zb6@3LoosL`?!c!X2OBrfz52sK_SWy;+xT;CU*BIH9(sLSZ1v6y+az>37jaJ6vMwgg z-B6-lZ_=&@mAj)2Et0;c%m@>bW!uY=%`c|#Y5xa~d6zg0IOm%mY~CQe?J&a?hBn=0 zfv;5WoLBrff5-mTt>>KQaqp1VT_&{d`;khi$h_~{N}auz1uAb&x))jaevQ)mHA(N+ z2)$nubbd|Q`(x!+o5d8)$YpLweq}lDaD$&<##gyk#&h*{3s}t_<~a&Q-)XAX^mr`) z)OX|Iht@d<#3Mc{6y5C$oqPB%%eDV9UO&0t$tT>|6Xf>(!-{OCHqY-flvbopDi51k z9=5amTFUt~87{BGj`WKcZ<*wCj>Fs0culzMa+&oWa~n(fAMeW$ntJ9_o$y@C#l}*F zZS$XO*fsHS4_D!w5B2QHon9x!;#JQTJvQxIl$?;&d;5UOm4Euop_a)HrkZ?EJW`rz zHo@-ett&3Y@-__CS6VIym9x%R^J(9~zq=%E-)t-8fBa9*h%ce_{>{yk`+~IQZk_fq z>&uO0Ygy-)xTxPV`(Almy8mz8yF0QXYe5{?T1^J;7Paj)>a6SoHMV8r3&`rE%q} zdaW1kE`DHDwp?w!wdt|B7w-PtHtFulv#6mf)y!@2)&AU49QF(SPJ-{oJ-a?@T1h-Cmz_H#3A*sfB;yd?fPTKPzwzKU^ zNkYVDMn3(^@%JJum!F;~^y~n~(Yd1A8BBCV%U_(Hd27zQ8>&6l3wfg53v{ZijdMPx zHoQ3;<{{3oNcr#SY=*oI5x=TR=go+%vOZt$5pVI*KbP%Cwxsv{j>Wy+Kj+KY8$0S{nERe8?wt$f zzy0xH%Htzz&N)|Ep9h(1zMiFG>#U{g51;rZRq)0}x%T0b_j|b&GQIuneLi%771bZm zcC=-fZN%)i_<2PBbIF(7>VNOGGt`~(n17E%+2dtU-WT)B1xCD~M$Heti=I({h&UA(&5b?4 z(-eO`oz2l}deP$jicOPWridDI)D`L08*>Ehnlf9$+--;SM~iKLw7<+2+hB6gOrqiV z#=WH#KQ0^$T6XE_H4fv)dpb6V&8$1PclV5N$?3f{&qenJ%}Rdizr8%{pg61Vio&qm zy>f#oa+))3(txPh*jc z`_7M2?vJk=2#w@jQu;61=!4r4vzqJcKRb%nyZ@Cg``7;6B=cS8MeV6k3X8dxudXf& z2R9y8{S}=VccCm}=bg6C2OO{ZSFV0gAK=Z-k@!*UaMyDV28PH61_nq2ii3lLVXe$$ zP}9f+)HDilmH7AlUfE8OD2D^HoER6!ED;wAxG-hYRIg0#yBz*kRte13=w+?>#L8;o zVPcrX)2S#W{N-%Nqy_qHs|{Z?D?RLFf26y|;Zd{UgTuf6f1aP{x4c?w&fx=k#>;2^ zElYoP#{9qe{dtzv=Ssex?0e_idQQTGIp1&w_dnhGWvV~2Y!9e+GfY!sxOZTU#WT_F z-yb5^=5N>Ec-@8a(+eF1#CL89Tzlhdt-*JWeLhvK@2hr)$LDJ>vVVy5 znjogQ?S8f5w!}3Ph5z~-{`T{Z?=6*6?|vT+_{vv(H^67pM`3lpfH?He{_<3xb~8o$n%TC zEb6*@D@~Vmv;Rrj)4=$K?`o%rjZL3>-pNTjf3*dfDqQKEtaX2L+_jyIJIj4_%GbY0 zonEm%m&K!|7kGIwzkN+Ih|gtYztBi=8?XU%!_GJETOYUVXZ1 zk*OKjh)bSxVy2zgTF3~tXYP@cshu&^;>94-AyQu*xsjwwa$A)qZfEK}0Ws4%F4$0O zx?j-FqR{lb!@l(({S#x3UH5pQ;-}aB#Ax3V7xluTNR{ayMJ+&1Qrg+0A91PPb54xd z$<&(K>3)x%Z1T{1eEMODkot7jBFT8$6(F}xI{hQb8)nwBS1Nvb-cKf7Z|*&{bn+d| zohje>o-I6Lze-QI*6ZNSuy?t7%Rd;e@%$-twDi{np5xOCxNo+L%yY}th)*(Un=W3& zE&e|IhB>Fpz9Shtv)?}!+gG0vGGjKI5=h#0^Nv>M&7yK=n@&uZ=zVy9<()$ZN?N@? zB#S)t?m6}$Sakb^X`vSSyh`zp{u}y4hQGSMO0~J<<;74gd5=xms&2^>^knnGDiqGH zn<~-kxU1xEGgtlD4G@XBcb9yar?WdO$%O6YCGBF-e-l!!d-WVsh^_zSyZ2CbWZBvy z89bMkzV{9LQQH)&U8ut>+Yx9rgY!1m&)n9=ec#s2bNb)*ZQq_*B^lN&UqALXxqm$hvpc8`O5KJ?A(t z-aytbh&Ok>h5ziUaa(@g>w7&{Dqe(JuZvw=wW)j3LD!WJ7L_CfmKQw#{l~RJrTy1O z<~OsmPTyoJ@%p0ZS6Q!fz**GpeS_|dS&Hqp?+)zO(|901HPzNS#$lE5jZbw?qPpvS zWsjGz+^!d0x~J!5_LsBPp-uPB&*-yz;kxBK>&vD+(Y(FpOy5^9;xwFiHowbLAlf9ly z`4oOCetk@B%6W!udRN#D*mKQI8WzoyK45LxP;V`$|B!vI`UemH&2h^uF5Y22f1vnL z%jU?M;;>!~>-LqJ#}41@%oR7B>vT*o=R;F@*`>+LZmC9VUT@?pzg2bG-|EfB=veO! z_kY}wznY(FYizOq?w9U=lkH4F;KW^u* zjMuS7<*jn{(Mt7Pv){};JUwjI(T{E`&_MCHkyLjcQ4Kr)HvNC>8c^%Pi zotCrLd)+RVvJ;mg-%OY$z?WIbxAB1D&8jkwY>xIVR_zfFCU|dsGhv$mUuH2#=Du%Q z`x=gi6GYD`idj5aELG;A*Wz3R;-tj4$!;=gaSpR;ua9^zp;5&;C6uFmO%X^}cJiAE zR~2P8-Lh0!hB6p2Wy@~9B+>P3%ZjzQGI&2Z};ck6J{wp=PbBn zxb^hax56xE*LfN**>}wTF;!#d>LdRdK=s?iKtYcUYzz!1vKTO`x6N^SUZ7Ec%^Nft zSfQfuQT~L}_ za$X3;TzJ6(MD07TH2K3f9xlW<#bmt;CNP}>y`g?`eqKpxUWr~sZq8fj z+kLlpeBB$LSaESt?S#_py5(tNo0)ZX9Z=)HE%HL!eUYx>6paaAZoI4i%Kj_WRz-E@ zrxTmrNUF|u6-tv_XvNeE6|*1LJ4G1kviz}ZyvrK@G-AQ;m(xVGyDE-_vz{`H@2qh3j=54D z=6-AHq{WG6D_^|x;!plRi|_94=SQM~18nsto|xy^&Aaq~y6B>qo7?WJW<9HM`^LP- zEZf?$U)i4QI?wwzZ~N@GHLkDS0#meed}kfujoq2*5~#Ydmvh>x!rOCqmigA7KHA7r z)~aOYD^Q`|mN#w7vwJNI?_StDN$k?%y?6cF^1llg>(}4pG5eWXtX5OlbtB=i=*FG1 zr!G?evG8nx=gf>hJ@eY#Jq2fP>dO7sb2A}bu`!NSs;Kn(>^0WYIM48W+A-b6O~r27 z;}1bBbN5UO{?)CqNiG&kEOz ztxNWvHEZ4l>5vt(CLCONb%K%4tE7x2<(n2>Ikj`Dqk8I=7|GqfWtKuOXZmg4V$Trt z_s56V8|63EWN@hFt`^o<8u2i zmWFLjPF`snm);Vp-*K6D?W^pn(nZnJO78ysve?*GaaKscyn4}7&C)lfr_AZIzRt9s(C_W+4J5nb3%jWaXt+_xXtT@sFq*Czff%hHqKVfPlq?_*ZZ4(wNhTP zELTh_$Y%QfexuZ;8BEvfMT{iQmD&8}_b8bgWKwqRw3rEN$Q0#B-?`dI?S-W9YCHBl3YR*sFW))Ml&yZ6{HJuU zst;aArRrTZn%)J3bbB@ZTAeCVoO#*llb{yjg2d!rGQB zyPIo0-@1Z*$F3Q>yei(j?)ZiT_5l9e1&a@GUX4ocnQs+1@2u`&zL~6{3ehh&p5HOi z(l3AIy!EH=CvI%Lul$F-|HGfV&w`J(*9R`-JG^V-U4P~D6*mL>ug=|Z?8OVK+2Zf# zUS;0=Lc8=!lxM3^liTTHL+(S_{?hCH1qvd0rWbcMYTNjk-AMYhXvw{K^m&{%Z9>=8x`D*DtoZ`&^<__C2rh&U|Qf|8vrxJsjeJkB;3BiQDtBu`zg(>fGz! zxBe=vfBLm{!!2<+t#ww<%Q8e($FDctbbg;`Xh-@i87YUCUka872mTF-db7#JuIAUd z9LXa)%i_A8ewBJ8erC~9_3*39r-h#S@T<;h_SFp*Q!c%p$x}Y}iJ{}1aJdLu6}LxDIxyTUQ;Jl-8Od=j+9z zIi+EGuS528o`S2N)~@^XJND`QH>>K7_5Twu5B(Ar&iZ#9S6*4D{o~^gx_5iY&AR_= zb-@FdUAMyj_Q)SDtl8?^Qc``&mT!@1V`2Su-=~suW;-*O_?a4BIiFSaLbl~l&&Dsy zzlu$rnlvRrtv~zro(H*e;-)mMyM1wI#OuZO*F#&btz55Xw0g&nH=Z%6qVbXR+=p3XP=*2 z7rB4(EC2fawmUzcynI=IzMW+9SKG?}pDwo>TFib|XTR?AgS$Kb`E2M2K6B@1#v1(} zi?%NDTC}>%dUd*oE$=FUBikkyJi8yEB;N1xK2qsI;>3^ZB~{qgrR{q!e|F-9wO8w2 z-muuEx$t#`d$7uvXGh+Y-Ksf|?>(}A_N4=?@AC~=NCZd%pUa_pq#^&1%rgUmx#nR27^h*oeqmJ>?je;T!ZnKv6C2}(;SLzr&Vmjav zB(u5R>aT73lDq>!M=nQ8A6zOv=i=+<%D*a1SQ|iG^L6VpPHb0K?K%@E)obGQ-$QP< z*QwTaw!iZd^i0oBy}JF*FXj)NE9`$?yYTYAYRwOOP)qDk$KRcy91ILS{1#|UvBs$? zDD9Qs(@@$glfysq*1wI4?ti>ZwC??S1DPcm@+JFs8}pelv+zzh>%5Eglb83FC3>n{ zQ*5^VeqHV1Wwdl+Zsjq)O%COaH&xF++*$Mdkn>x+zXcj69*J(YTK@F&rAud@GEF!1 z{bW=d_wV;<|EL{*68}zD-*xwyVVtVTJ<%OGTV_n-{j;;-a_U~Kg64VC>#f7qX{`EO z6}pJ&`f9bfi(J$1&b-=LuKMM~)+sjMOS0RG>b#%Nv%TVSJIG+~ih#-aCmeW|DyV1A z%1V{^vnFIo@HDAynY-Fz%I~mGnjT;M?{D4u_p%4GT?11%vX0L>VjI6T*`+{rV*K;h zI?q+=U5;$L>Tt-SUq32wCfoCuKR9dKIdg@BRCuI<`aHvV_I~p;oRa0b_UQ#r$+cmp zGDBk;XT9-R&e?n3LB!tff6=SVQ8>2~gn7?EirfMCzXVl<)c>SKI zUwx;nUVmO@1Fz@1nXjL$d2!$V|EKj9hgq!*pI@KJ_+wYSmzpy!h;>#}{Tv~jyE4xHWZSiGraN~}(Cv2qzUR-?n7$ceZ&#i0 zZcN~MKFQ{+vEXJ)AT5@^HAEc|75fX6m$3zv!mNdmLO=b95PIG+kSIqj08G zW~%pdi}m~8=Zc-KGc_ywtFpE>yK+wC>9XYRt~oM4#roaLRZ>@+V))J_#J5@P_}8X# zBY~qY!UX~@32}cA;hlcv=JczbQ&;)in`QGa%Juag!JQX3%nhh&?&RKawEnj2jx(IC zyFcviJzTG^`rS-@$>X=?Rbg*F-&db2lOOtUnv?9ImZ<0dS$n5Nn(m!{cN^PU-l@+! zY7Qv;xG*W7;Yy|Wf=bEBu}xcb{Doq&4AoeKa=JZu-_1WBqv{!c^=(_?m5d!LW+kgn zO!(5ZRU}l_pO=^SdX#T@&-wd3?_T%SANgdGZ4$DKMP173L)8l=TXCLpsh+anEyf?i zeKUo`3%x!`Wqn>DxaDBV3*Cj9O`Yo6pDJ2p4)5tsToK)t+!^OB&TMezWyEcUu=wA# zm2=JCa6DTmk|n1Wn>%~+F3HYk#`~82IQaO2lO@Lm#r0Ef%oOi_T9f*R^YY!@hKCjz z|F5?{azCi!@9g{~-S5tZO5fRC9>e{lSNz6pZ_c>DxEIA-dvXhzw%b0|=lCdi^!LB> z61P6gK3uW8G*`IZTf$vl`bC!4rzdrfFU73Z{oEI7pBSi9w|DCai{FPbIHhOF{BGTl z`B$ab|Bp!6o6jxw)7LtDSJKy0sgiv5`OIgdONTWc)X#pzd{-;E;`g2_U-RzDX!li} zTYUHHw;2m|oChN+j?8Z+j9j+>rURh-JWh7?SEvBx;ynAtYM!yUxlYw{D0ShbM<>t zEdE8k@2dK^z4?9pzu3H2^A}xJ{bc_z>;1ZdiwrJzvn5wO4duIJzU5@qb>F)mb&eJX zZ(k(Wsn^8NZY}6|z9eBYzs*t}D~7BEk`F`*UR}Jp__bD!ZOv+>3%RrBzcGAzz1n_( z$PV7)3qMCRMH^Pw9&#z1!8h@C-eK;TK5nDy6|2hk6$BlUU774su)f~5ZS9m#o`2_V z{Qc4EjZ$Ezdbs}X+Bs#vE#7Xs&aRbOX>{^Yzt&oZ{|n#rcz!x+q^b7e$R4Fl&EaRy zYD7MpDq{Y7<%H#1LJZbdtn2t!BJ_9J?UH%jn^tASnf<*IeUO`9eZqRK2%!a%1+DUJ zr)S+3%xizW>4m@g#qX`z{Twq{wCk~^vx@B-9C55oi}eL%HND~%jLNmnz**?-`@m}hPe}?JeY1g zT)+NRZ-%Gz+b{Q(Drar;6=vg|@pIbT1z(r9Bs{yJ;J0r6krNXS?O=+vJy^QuUqE$> zX8qF1pHoT}y-)ddI$wX<{))<9i~ z#6{~93~vaj8iwwkeARgQytGh`q}{Fm&oRv`ti8M0Wx-*kr}q^sT+gH=K4`BK`8iLT z<=@GzhEMm#KKS+Ze}TH~-4fmNEtXfeC+hY3`Soea*ZVy+{$+c;Y>$D-T#YZx-dF9H z*tqRq%sx+c#x%)U>yo1ndj6mBN#nol>94t`O&6co_Q&CCy+>tFU3|L>U#_*0?R_&@ z)sx4k9Dl)Ia{XKE<))-f3fC4!r8uAJ{rfJ@_D%SeC+mOQt$p(<=H~|?{?d-P3@0An z>z|$9Ke;#K(>uGe`cl3B%)e%2M<=HIT=trM-YoazQ;R=YY>2sTyfAp?yxdz^a{QY8 zuap_LtWqfU^V~rl@yNZ4+JcyNpU*|=cHiS|pm7chj|(;@c13P`dd|ndRq#pTcE(+r z7s8_!sU~R#D!kk{_x~yWC#S1Cyo{bs+`6fJk8jsp#y!sSeot-xVmJBiedGFuT_UfU zyuVo7{aAE%f#irtBgN4Typ^R>Lyzch5m1i9Ex2D1Kg z%gokRoOGN0XHqOj{3K<&TNS-I!JobOSnP`|*GWuYJO5%@%@mVOx~uPqN}qAJ=Jx!e zbz#El-v?9f7AqNUzcAVH3(LhPA$^a%1xvWB{3P`j-MH$Jd&1$BW^&~}d9Ag~xz7~=-1mz`{hIx6@@if2J@M#5rU%RAWfD;@_vT0xb3GJz zv1CqYcK5BcaD|!iFHE$*+cJDT{=0m6-HGmviXl7Z2KiX5belf$;Jb?XqP44>-qea4 z$oyFp6?fZZYDHnALILj%SFx9_*Zx=jf9E{uG1J@$CznsGKlssU(Wfg{rtUesgY`)TRnJE+wyDgM^KoANd)CdlGo~$#`EK!dxw)9yu)lu+9d*29m!oDxerC;ilNc~X8jzWJ>~ zu)|Z;1y-{(?XEn~mXW&mBp^twWO|aidS;im`oSqqOu2%h3I9^(-&ROowO7~D?b1P4 z)qY<0u8Z7dMj@saOi_$teF@g<)WXkwTf|s6>FFiMRJX!c3z)@X-|gzryp{0Er1${$ zqP+#iXG_;?T<|C&M?$tCTU7do=)xKG-`f}6yCU>ueqZRF=0LB`6&hAjdw1PipyO}kHKtfdOpFAEh8os!Al5Tbwmsr-f;i`EPNv+w`#=S5Xzj`*7!Z$i~IiXJ>5$ZrYzZe zeaqT^J3q}bi+cO|{r=>F?vb(!lH8|JJGg^_MRRL4oyIy5Cen`C}HE zN1vU1$U^`4D=F5Gv(G;YT~PLQ@-M6B6~8U!o}IPTChXK}m)6~$pIVd@v-sDTcWj?- zwtC*xZpX!(M>*6V&#fT!{{S!>2Igbl91O5nKgZ~%$XO{ zssH^Fhf11RI=1!in>butfDnNfA|`g)&J(~lyUlX{czI1y*Fpt z{(jxPLH_yNy2M*kCMzdKv2VC*Fmrp@@6E0ow)A{UbCfZEZB=nFNldS*N&MA>ZHDPR z&R>-|dl}LnEV#CDbE|y0%bCYlcXn{Ntcg3xksi3BEINPH%6)sMi|pV#Qoqpf=8mn8 zmN*nlwD`ilyig$d%pD=0c`Hrwdjc1PL@Ein6l&WxuI*WQt=jv_KRXfA&jw{iMK>NK z?>~6Fu6ePU+a!;xaXv8$d=vAJrdme7N_vyLkwNU&voPDg|7KSdyxuR}YkEKK?^(~Q zr;BfPTuNV3u&y}G;K7*%)hb!XlvicdH#{va*vM!)?N!lg3C+}M_H_m-K3vBaipD&i zAown_c3Slz#_uiLccwQyE&g%zu5kUd>SxJPFG}A@Cj7M7-(UT$v3)vdQo3D13WT=r+yu8)wuantWNYxk+szj7KQd7eEA=CA$V|Kf`C zSC?rAP1tiSjw)5|`pDAwaqYto56pb-dpzW~xBVSX28bf8JXoJ-I!3OO0ENd1KQFw7X!DwWyy=v@V-ix%TW0!DbKdKKUVQc{u&c+*8k0Y6##D0biyQa^n zRR8cfvD(h?`pl1K?`7qOeqEjMc}mqb6aE!vU;U|%xBn{+8WLFRtP!|@oq=JWE@qv+ z`A$|8c*dfCh2-YI9K_O1o8(q@(2PmrRLRXc7ZGX}UP7qZd&LB<=Ey3rn$7(yq~Oax z;}+_}<^LZ7%Y&DQik|(;2%AX(EfXy{(gvRN0oir98KG`@BiOFZ@~y^Td4)Bq@DU98 zR>{e;*Yd$a>pZP?&Q?@^o3(ZK{;Ti2Qa+Z=zj#skS<{9;b#HD>{>bs%(A#6) zz5f5d{Mc=SQ2wk7kE=Zb_Qv{iB>^b+O_34KCjw>z;qkQ_rdN%<|NR z8K*1Gam@+Oe&&8}=e^@Sy-yad_O_LJeLd&Jt-TAb&1!rV*{BkEahk+2hjVVHlHOTl zt-X07&8BqENtJ>#J09H&o>af`XZh~Adq115mv)`Fc%^8z(Dj<5(}K@VJ;JvvVx^kQ z^|HBL;U}17-*BD1W8(N|ugtE9k7n1^Wa{6xtqa{FAouoZol(us`6k!9j+bmW+5b}V z$0OcH&Ar#poV~hdg6)HLzT>QqH+?gX;&t~lHvfKV`%SLT2hTYP*)mEcm0p)#W9_H% zjQ87)>9%erc5=rbx(k+kit>AD?=o@m%&Zd$*OQNY+Ty2|z3uG5JP(hj|0?1W{6shd z_vYN2R9_%qeHq%nRVTHZj9{Xp`^LSeWK5pwvI^${hLqhW1wC|DEmTD!uw>psc(0%HsS1PNv ziKmNI^eJ9HqhzW5>plN_`=iox7AhO>Jj2r`F7)*Hl6BweZ}T(zNgkf`RTDJ3lAq#s zKAh8aZA9=qmAPvcY<}->w8199R%lOku)Mrt&CRWkKF{x46sdL8dhMTzmkAlmKCUp? zb5Z2SMjDNmCXlF-wUvh(4Q?U>Ib{;8OUF zmF0=f@v7U$_-b!g{=NM&u-G^_f6DVUO`J+w!&UFU@?9TL$ntgloJJ!L$&iWW+VOw; zc)!mIi28U<*i?Jos{4=UX*tZ2UMJ~d@TIKj53}{I$xheG!Y+%cuuhp@ue|D#&&Pc# zkja%vHp_0aL`zRnvDlvEqsekXDv z;VtLuT47(b7jW!asGcSn>fnFUN8def}Z{1s<<9cCbj*-y(h(jAs*-30- zI==DXx+SlViT=vYSq`uzuq-1Q27?A3RKHtMTV&v<=s0 z`NWUE5;w-N-(#uwPZa#i(fwaZN9g|S8vn$HesxEVzCP|+A+DPDC-&%3V|fXd#VRlN z>|6i!{M75;4`#(ztk|*Y{M!o}*X;dGi_Yy6om$@_>dp7n;q{i7839-3M|I13UOBwn zeq*}h9LeXo8+OGp*EPzXwJ}}2KWk>bMcn=V+}%>Aofq!$6S)&Q;kXEAU{%6Cr#<`5 zn4jBR<+;jap~cZkqbxotcNRA{)eg1%wBHlMUvk9FyX7eGYU4Mrof7Z4r_2`L$~)uY z-u=t>WOA^k)?Wfmt)#FxoC)WCHSy4+0vp92lUtHgpMa)T{suR0^1q$)Mf=fBlOJb& zZt=g{)Bi^=CzW^dnl-#aYK;vaL?_R_Rd#(|RXOiv^=;y=S9i2rn0+fxpfuq{c1rdO z$;T5|CbZNv1b+yA8(;m(ZLMunM%ga+jNK3KPPVPF{vw+FwmzivD*%E$CBWRJ1py8q&_iWo%PFcxQqg?S`uOU6ozkk`c z*|jgseqYEfi%?eW4B2^X0dq!69`ju5-+8OrVwILDIK{v3PE`~0`2of9&Iv{P@S=wFMD?V(?!0< zld~4T4&xEJd@|}(SbV`2PJ?14kq2vvehXi0D>DkNKfB`4TAhU#Di7&Ch*0r5(m&Pd z`vT1`>jScdbRIq3+@-o@?bJD~!JY2{?p7vMi8IZOlX|pWabAT(jWt*9f4A@$9XID# zLzi+3^%WmYH!WJBeLW|w{oTbyMUTRA^y{a-y}hy4a8KURS3!+6rEB(FXutO-qet?7 z*OjGikE9)5DaQoKe_UG;t9566{kF8=>T3s1_v9aa9n}1J>PI1^gFAMJuJ+!0WOcGB zZ_f5Y-b;t0C+@mZxHq8IICYI>=y$89w|g(wohpnvZ*%p+I ze*1Bt_k&ZX{;?eUsa|kMdhN2urK>}N7tB95*Yen50~TiPoakgPj>D#5hdBR7)*t@R z5OzF8FW|mZp6hb!yd#`e?^L#@8$@&dJN3!(T2Wlno~wJ0?fVv8ebP!&Ea|lL!>4;L z>i3%MfB#i1Ewb(TZQjsNhvxp?Hd9m8(8S>B%L0iOiOTE+s~e3&@-EM<(*3+M`DRmr z^27ei&69+reyM!cyeoXn^HijWO5&`xmSchSeeW%bRDZ5Dy*s&MbIWCm1t0s)`1hIT ztmN|AUHEa|tJ^p0eN6xGv?1e9cwy9c;{tZ*P059=r8J zYMz`rBd>?R-v8^4tMc7_=q@Gy=)`U(zUSBeF}*BMGm_kF!cykr;&U{xttV}2(r%wq z8lpjAg-7bku1Y=HdN1hzC&BW(Hw%lSsy4rKx!Rzgn;+9Cw53C6R@!Ba4V}oP5H-+t&9u|`OK)%YZJ_X1h^O&7>Y|Ob5e^zt6lC!z0JS9 zL-PN={Z0iN6PeZOUmwksuI_D)-hTUTnQq&%qZ|C$XDv!uG(}@V$(%d!``h&=sYV8g zEH8ZbjK%lp^Y0VRTgwO4mDf%;em{-Fv$D{%``N=Y%B;^gbvLcPIsN?o-_tk0{`&sj zN0X&9)(G{LTWU_xziO*|iTRn+x}rrFuI8wBiMmfZ71~&&6wbB2!n3QsE4B2%x-&-K zZu;3wz1?~7f&b5td)6oaO!+-OJ2|DC(JciQRHgcYJD2Tj-A;YbkRX zBoe=%fW&vUD0lm z{)S&t{)a^{ zrd}}X%mpovDI2sTUtO(U{_xKErT*L>MD@dY-#sg_47%OuRV-PaC5WEM{{D|&e3d- zHFllxgY%%zy8Ab`tZTRZy(WCmtXg#qrl$+4g~M=5zZK4&Aypy~#<~VGqB#ZPFjcsWJbSa&K9DUgxgA$g1TVca}GES!%?v zo4anao%%_0QSE~Ih=P;BPydSlb$GELL-tPOnQs%d^LQTa{r`Obp4s1<50y6F_t}-8 z!GC8*u7%o zRI6mQt4;&aT^>C3z+u;;B!#;WmX~;{H2l zc3u7zkPvY3^-Sgf{Q$878tl#kJ!9$BM+ej)q0oXTO}gG&|${Bhymv z-KVcFk++w6{=K5KYjv-`=DNRc=0)FYvY6)eVSSX`v4xwfw(h9-EERjkX79zrZKoo9 zE2Z^==Sbaulc+U+`nE^ncdnoBbFI${JoMd;WtqyU{g)YqU8f5k@sa<#&yjx_%Mw2G zEx|FFWFW))#B5G{dQ}QZO%~d3)8%_>H`x*ShKgQdguL@zlmlS8wpkx*yMyZrPvabYJ31ts9qo4}YACq`tss z^E2U2x0flno3K8awJiOq(#7vC5C7<<%u%;o-1+^L(G~l{d$SLBa(|Z037dbo^M3KV zuKeUTiF@a8E_>lBnsmX|&ert3BVYB(-#uL~=O`bqJvrmBRIyY24@pVSRzpE!hMSjN z?rXi&D`7BHxw2AiPoT%!C&j5h>@EELX5H>A_3BH`DXQ_(YI``_-1h4i%ixd7H#INr z(6*W!81ry;(v+v4-njkLwyK_zQS4*FacuAIcg0dq>`%xf?CT7y3+?(F%b|BJUa)6g zaLwFV=O_Do+Hvofb&uoa>GhUIHoK#g)!Dc$J|1|`Q|6^(;XOxFOm4Ou`(|Dl(>XW& ztTSy6=JdbFkH3=B9k^NdT<*3bHOsU=b)NWmyS+HPc~!8zzw>R8tUd2o=57~$7r1`1 zvg^ipLAgDFUF~^Ogqk#67V;;ybncnuc+T|QtYa(t_jO*{e$eiS_WhOLcCR+7?@zN` z@L2lpx3@;Z`)N17iDnwYJUsr*p-AYo`>4$Hw{|8P+osckS=(__bB)?ZY2@Y^PT%Kk>L0 zd?kP0odxqU-}LRBDQN3@zU%(ItNiPaocaFL>w9<}=f>hS>({Tp&wAI)uUmFNNc(fN_TA|mxqs^p-wfPolVLO?e8TIen@-jz9FMb`-Sm%3>P!9l z>c8NHD#`NPNBB7y7{vAPwJW$87#NV3(Z=Q$-##(%U)_GErQYi%@yne1-JSP#ipu)1 z>Wy=+WCfQ_UtQDS;c-OQa|6SLNuOV@XIIc{VmVOHxMHGb`^qVM4%paUzI*xd=W7}N zJ}iHJ^2ZzR8A}3fYRmlu?CiOhH&;mb%HN;+|LyhJ^X&d#{$2lDv96+n?cq@axijhy zO^U;5#(0i#n(}44GcTR!e`9m)!J$uAjJ#l-mjkxLV zApIW^i|adLGw0V|E_|=Zc1?Y=LifAlOS2wHypl}4`DW4m?OR-(HT>j$izMIEpEv!* z^Fouqxvlk8RZjjo$Ayx8?Db=v+M7l5%>0j8W?8&we|%xnv~QeBe^t%S?(3TyI z>xo0p&rH3MbUm}(^TQLb?2QR>sYPZb>gk6|Z+$tvc=L&Px$Ir}2K8J*=?{xPSd|)` zma>ZfGPyuZ{ifIXgL|v>pFa4yZQ19OwKFWVwNEsy?PH6s%`&;RT; z4^l05@w-0goHpf>O^1&?``TSRQMDUyJSlt{Blqa1$P>2qEgAMT^IAPqx|<69$^us< zUhb3Lsjws8(EE?Yy90*~ajv~uA5i2GXc5QP7W#VX)gy)ZlfEf^SmJ53J7RI%`aGeO z#Zvx@f6rfF@c;A6$KCcmYU^S%HZEOg;jw7uX9KMZs&9`^)(Ttr-cw#+?}zTvN^SM5 z+5Xua8T&Qj8ZRg2Uj6^~<>R{vB7RNc1zV(fy8JgM{CadHxB7gZYFJOAw3?F;MA zJr6XKynbG2TM1{aPupQHjSpvj86-Ezzo_jzw7fo^cfLt#r0CK0`@iHyp5OK3>KP;N zLsyLEKfSys`v1DiB1yU-o3_OyJbynuyZMmJrGKxEGOrP=;y+|X5*SDU@Ws2|JU3b?a zVh{hbNS=GPQeWynRfRFD{EwcLDlj=Tnfu=7l_Fx!kAJ3A?OPI4e{*(YGS_4suFIR- ze>}3|Y`$OhUGay;iVJ3Y*Az0=ceRx*I_Qxt>|6Zr`i;y-z57J-H-xCo+LEZZGB`%a zKDU4^|JqHht~aLxC2aeQR!c52F}ZiarofXfje-<%y zA2N7(w(0nW@PHZ)`KF&1w*|6%7bGcK^<27X@nhG6^uXD%dWV|!nKQ2c_O52mmrcKO z!@5gfvxb;&n9O9d=j^w1r*q*a9?jo;RCq?+I^m33fkR99-8O5?bh#W?ymD@;yyKn3 zFA}K%UOMI7Mb@YH{{PGW_v`Vi^_SH)^M=V>>)lYWXI5RBW77A1KM%Lv67Q&)6{o*l z>g9Fw-!pPdf6rjq9B2|z`s7jNUhTI`Vp`sh?l0)dv}x@-6L0JCxbS7`RkjZ@U)&0X z{u*!Vo*rk=C$~K8LFPVJjmP_Lh_UIf@MJkXDK*#7BlZ7c@go|7^w1x60 z?S4O_|MSXi)7xgsTA%*-HR!psiR`yy2Wu_Zx@$R(X|C9KAVPd%OMig#rRGxAHJjdK zt>XGB(%aswAh}Hc-(rn3|MePLo7THOe6YR5&a?jfzYjV;<)?35b9+&#)@iOwfd-p} z#JT(y?78sOK5+xDa|G+-&r4_S4Ve)A`c#5f*}U)iXV!cB`wBj6iOkQuuQzvr!>t!j zy)#@CyS{RLHT}NPC*nxc<{$t5AGp+Iw!Bcxw&rc)x#z|b=?~K6t2_;AxBOc)W3zcl zz#fR5bpQ+bi!|9<^6}YH$10o}6_%?QE`j@O`u3_)pKaRTkeqdu99C zE7KS4%)NN0%=qit2HT0Y3wBGWK0Lg;_{x9p#FUhucE7EdyZsiQ)UjW4;{HL)^n z))>X?<6^rhbLPX{N}InD?1!gH&yH;0oVJ%cxb5d#!!Z%bKzLHxQD?ht z(#I@sX3z0XS#f3d;W-Blrl;i2IlMva)SBMnu7bvjvxRxHe&02@Epza!n|s0Lt8W+V zzw21uxL;Jz4${_dWj+;!8ZD)UoIVby}k19Y14`6*RR|E|Ml8DBxg_-j?k9-Szd)R_+)8`;g zj{4IQtDh}ySbt-KgS`$%(@J4(u@|1)L6%vJ4RsL-EnezkIv4o4Wwak1X=43lSzhw4l z<~j0gJmr@e9@vyN7F=d{u&+G)v*n3J`U};aFW)*_e__kF)Qmi1?FThGV;;UJYF!>G zSN@vmK;^9K8)vgIJYUJ(Gn<#;oG|l^i}xQ-yZ3I#9A6`@OBYvjoiOt+z4epru?6SM z>u<$2`){A3%^nje|8}S1pVGBYN+QavbgX5k{q>fcRvM)>z3YgQAJJo}!*rmmNqTLgv+7}9w9!%lnU+UkXFI;kAwcywv8 zhy7EfzgMDEIuBT8c=3u&O1gH))j zQ!|pg4dfM){`iNkbq(?mJjdErpUK4?Ro)n8xktppasKA_NvmF6@aB4^k-CQa$r@jE z&7K|SPnH`7Z=J?*$LeYumuFAfp0ia>T3uWGcSoNIk$uzWu}t+E&l$h11$(0P}uH5$o$4?@zyt9N};S$mP^Ue3Ay-`3Qx z->nqS6}}lOEtXukR6DbB^@X6?B@>s@7<>^A2mOCL-*8CCfkh+)hXs;3@^G{ciFxb<6e`>aioxU2jBPix^A;)uZ>=? z{GytS`|J-#8w!gp8a|s{yTc@#oYx#XZX&-+l2uqR#S{^{sE)8g5MX^y~?U$~qbCviHC&uIn!+?GpH+Dal~UR}Ew{&+1kxpd??Z>Hjv{`$LT`X!Doc{U~C z;-gKcX2~D5)A!_Fm}m8E%0r=+L%RB#bN%r^bmEji zWzX&ewHLnY&pnw{UNXVp4M)0@bm*U4<2N1mZ?y35*_zcG>0!^oO>8rht+4n*%INJP0nQ^T-w_5q< zlZLUr!b`5W`E9CQx6E7W#-7>h^lVn^$K3S`7dH!tGYyP04P2MEVm0^dTRDsNWG#xh z8x$^Xw)Lh<w$aZ(KZQ~#XW{UiU&#E%ap9xSZO*PPHeS2y@Zg4@(pI~7;|nQ`EN&-TYNzHRtY zzd~NfaLLA?Q_IR!VkAA{9mU_@4n#VT=qt2ftGz4 zXTVg&YUT}#+g9n^OqDCU8ZcF}nt4Nad#q{5)6;t9ffGMh!MJBZ+}}{{m1pO}+PBQV zJAG#T)IT?$?puFiLF~KVT{5>)Kd(B~w72s{YNPe*6=#<2y?9D*d)Q3>>gN8t_3Jk3 zE#GFhWa9>X4g8|JKYuvuV%v3NPU;)y{=JKgIvd%_!pBExujj1JkQc-fHjH zC*1hHF5^|Yv+1o^fPapF%ZA&Q#f)E%usNUEA?pGX$~Y2Zt=ca4)Wgzl`4deK*}_*p zLc3h6to)~OSgV!mFPL{DpyTS(_}eMU_3c&3&eq>N8NVKDTXA~9*0XF5wi_D-7x%>< ze;N?~xFyqk`3&X#<>^m8+w~p3^XwT<(Gq#J7T&c*r@e9~?lW1qdxoAxKLDDykzF%O*fU|r+yCJ z_wKS|{hgNz?@9!|+y4CS+$;a^gh$$nfGY)lw`)Ee?0s(29{ah}xP|qy%(nt3j@a*y zgQq@}h&WL8oZ)k6uuAI@FT-^kb0+Vc=+(I7x_*S!ve(NxZm##vJ(aS~^{&>2AeFYn z)VhY3yEGqh86Wy2GkcY9UiK-`HJ|wnV$I()noOJ{#3o&Dq#9ild1|TKk>~CQVlS6A zAHE!io1*9aNS?Kn&-7H^fer0?23{U~`xakie<@V;mv`B!Yetew zIF+OH{%`x)H08jw9}J&MrC+Er{ZF0~=#??sf6l_`f9i5?8pdyTi#j~XNyBmLk~OVQ zGuI{>7Bz707FD{%5mEp7V8x=+>7rL}uC=Y-b;mT`dd6yA4yXR-g_T&an>SVCvpFV2~`Z-zlB`;KTIhD*U0_;UDV>|M5d;L>+s``{= z7XN~KHx3-TDERck`^qnszCU=4XBB-evaG*!`$zCPVFQJ|z591DpMU%Dc+FEe_fsF$ zRg0GBtNFxs9oJR!xh=spKl%NXf4_CVNiEmClga(PEpdMSgnzR+oI4F;Je;FhF5Yn2 zAUnBmpXaaql^SAR30{@6eKv4q@EiRtpJ#T}%C`d)ux@gr~h}mKo8fM z9Ray|^~XNPY=~PQW4-+UHqYvvL2V6;MdzYo1A~sln;N{0ka_ZO+5c^7S@oZ8X{c>k zb6fAq%oQIc-(9u*yWKZ4PuL*Xr*lHj)`H(|$`4KDQs;lUACeV^V2_a)}`R*Rbyj|)Fy zs&bL~JWD6Wdx@<6wxSpH6JMN7-&G*J^xcn-`&_Fo-q4Kw(J1}kVck2=UIQoZw2sWL zxhl)ko+my`eEC1XKBcKw{OKfbUhDE;>F|J=n_`2HL@&=Nzr8u`_~b~TWtk%W`#;u& zHub*hdUAltryzH~m*BIYDc@J0DY>zJooC+n*w!(^uuGzSH*L7?Kkf$`&S#UdR2F+`m+c_ zgZrXQy8|bjndWzO@-36%?y@Zhwg=t5_&#F&flk@ebz8TJTdz=HJRf&7Aw*nji{#JD ziSC!4=06DMNI&sWxQXc(mv!{&O^Nz7aqAp|vsZF&3#yRhxg02wrmz40@x$xWmnYiH zxP4SnrD9Gd+y8z4>p>HG{?^=2B!w9mv~HjdyiML6EMFg+J9*KGY5(@^U$ofnZg1yI zH}C9IeJ}S-T-k7oRgB}ur&MOagG@(7MZR8tZ^;>zl--;9y5xJT(IT!!oAp1RSkB~J zR{yu!^rOAb+e!<*W%J*2)fbe@zga2Db3FL@=eg@R_uJq5`}=hLU(p`7u;DolvA1+^+bK~Li6Td{xym>k8&E>kc{yq^^ zsvLIrcLtjL{_;^-NX7IY$Fph)B4_wKb> ztd}p|ungb0q-;^dsweZZ-@V_L^LK;k|I_iBo<%=uWo`<8Iotlli0gL^`?dPosJ^!q z&$sSQE{T*%mg!^P=lg8iO4iN0-=58|ZJzx&v*dg0@7IsF``kPF*&YPg}b^e>{wTR`V&~*L&jw5wT|u zC;XFXdCc+4>HCbw|M#p3+&riHxJ5k2^eO}S{HDy5UvFpH_bo}tkl)rKeP%!N+ix~f z(c2%@E%Rzv(%Ms_e*d-G zC*5!$6otAd2Os_--X1e~!`awZ%$GMBp4oTu??b0&x#k^5fBrCN z;%_>z{p`!T(=+yM(0?Nn%snTQ-?UnEYeI+Nr{*6g%Y3qHy{?`3a#;9KUrdd)_uPq6 zVd369;%)DZg%01mY3$EanRG(fd7i|lBL$gB9BP|)%06=WQE%nBuwdci^C!5Ddd(C2 zv}MBbRvX{x(|L|MV(;xUnWN=)}aoT{$8S&$qp_ zJ)c`+`itqwT;*l?=b4w)SNzRu`SVm^m+0%;UuvI3@%~Au6VW@`{yS;opMuu3y^X=I z(l}=6s|A~OyxwNH<@t8OOJ%v%O%sZl-}P?T+VSV(mAv)p%?J4FZ+}Z%w7*NB?S~bQ za*d3a!;B}(B^><^y|lK9RL=1~J5y{$n#9fa1-sfBS`2SYsgZq>CKO`LQZRR3qR9U} z2DfB4+5gLXUA`$_pY8C+BAK|#rZ2pov-i!o%_00P#gy-Mw#4K!%`Yp8rIzmh)}a3P z-o=kx3uR^JI?DgeiY!VrG_M!*egCsh^5emG=@MqHXA=TUmrr|p|G@RlGxuL}u8uQS z{>=79JTSntHv8f1izgEbEPt=cKIhBru=6|DldJ7He^L_oJuS?Z8{CpPuf*s!&)mbz zhv(MA+pBMLS55w2?vj4&59fw|{1&TCQ!nhDscSA%^VglHFYD#?;@cOv^G%|D)@Pkx zzUH;9{<5$w2K{TSW8E*<8(sLlT>d6S(ZJpLQ?)gq1>$g7trjtN zb}uS)zd3v1-+)DrS6as3ul*S;{rB6(7w%zu>t9A6J+URQ6n3(AFp* z!{-(6rSKPR9sNg&R(P+fn9L;0nDoo%h}=u-5;qsl*Nk)h+FC4@TvOI<74hJGrEUFl zije0Xb(Q)Fd#|}KGSPVT`N5fKp@ELI8kxsMR%os~WZ0%GuN>cZMbu_p{&UxVUzIO! zZ~Q;+!)JG$I~!K!Phpliwf*a+iv=7jr9NI>CRMR^!j$tu;mLi=-iJ(j_d3!xM1App z>DIf?|1S%Q`?M*3AG^MsVv~+^&4i*=N3T|SOqr3xvHtNyT5?UnpG$M%EcXznur>3TOC-`c?tSl&ao+Q=@`-rz9ZAJ=mGy~NdHrVo z;C`~Qx^3Af?M{wkhu%2VJP+|y4v`W`Eoa#1{dUT7=8N}dI31PnsabbF(EZomSA4F? z%w`2*A70)+z18vVjRRXv>tEanVXa*9SYBUa)kT??bMjYlU2XgNEXP1HZ_1-p33pfT z`+8{dwsl#tek-zAo!=L&yY%!)dhCbWxwSV89QJQ>nBDAoqV4&WueIWE z!lGT*T<-3^uMp)P!DH>T;#zNof|TkZ@jC~v6tD}-{&n}?nsAdPayM8?mkHR5*0*+d zeq8kKMXxw(>ZyR`7hbRVkvP5W@4D3o4dw2bFO1b%^y)&}xyAe~w-)T+`Yk)t*m|mK zyS|4@N%C&vIbSFLE?Vy`wk?7q@Ojzt2j99M==aMYI)9 zINS_4-|=g%(FtvRc467lMPYN>CR}btfV_(iK@-6zA< z{;quE{4a9r7Pe0Uzhw^_zpCTe*34^U?f=KKHX~Xxhf^RrV7rw@*s}-DetXR=a-xGS zpB8%Jwd1;+!@r3lSrM+uYyEq8e=I!kr6_|tr=x1_jFk10dqWn_W33cm(cdI64E)Z zH>dLWKU``5cz46DHRt}TqSX_Z6}uQOur>e1)KsoX6gnwM^>UvFnEsd(ivJ4CE@u~No7r!Pr2TPw_)wn?093QjT0 z{jnqX@xgk#NWZ5dGvIWOfQHnT+7uTv;10n_R=fs*lv~TuiswA`TWM!rivH!+5SscR<61r zsAYOIYbqevT|37x&# z$?ck;es;!&1jp)R*`3DloIOxJ5%)h@*bY+xi9h~ z?jI?Z3OD{`?p3fN>dcMspZgywCS;4R|I+XAKXhf<)9)YdByTGJbdvegY{OgiwZElz z+&GZ_#9Vesy4#*h*P}eni}`+g^1tm%e6pSL{!@1CAt!&tyT=tTN`F$_*W%O4v-i%5 zh5Iv))w{UVrd&FGB46>ny6c@w#@oKieR`I0?BA-%7px_Jwzlk>xN*Lj!~Cq3vo_A( z7C2vZasAZyR#xl2n;8GHxAgcQarf2v8`rw(J^uSNO|dKVW`4W!sK4Y-o93^{xvzH} zssHaS`$r`G%XirY&qXzz|6dWf*dcZEBztfc*QIRsFQRVp+l{_#UBEYgN|abV%iqj| z`n#|AzbiLb3eM4~UETO)jo`Om`Rsphrix0`O8;MZ!X-uY+pYDCZyk5))J|h zzqn!FyA}14KhLW!sefYpLzz2=zdi4_eB#`5N4|EqOJ7wO& z<|{H8=a=u;e|7#*^{8K6Z`G|<{?D9nqWQDx*=_aQ9~G>hO|y&K$K9~+n(+1?sf$*$ ze^D}Px}m_eZu&JwTdvgXNwV#Fg|gz;t2UY+v`N~$e;wCj&gOcD)fy4}*K0Y?6h6o} zvSZ)s35lzotgMofJ1X?@_!Q+c2Dg-&_}20l>PFgsE2zEU#NKVwXz4X!-Fv-`jJH2l z^Sx-UvYN7%yK&ypDSpS4Ps~=_+gEj!d4YTVmkQ` z$Jw70XI%gN^b%VfdtLCB@_LVZi`$)YV&cUOuLTOeZ{EYYtzBqwe6{E94|1=BCtIys zy;%OE%+n2JwTej<0rL+pZvXmVUz@x1Q{iiIdh0IF{+Rl&QonZg!-LK?EE(db^B?Sw z^Ld{C^SVMq_<`_C>z2QLp9@*tO8qub_TKEw-NyTQ>Sz3| zd8Pi+wyuhOK2P7hCE3aL%=`I1R&xEgdZd_V)0Ila92=jFYHq;<#*G+;lJj| z&YQO_Y`yt6?4Dv5pZwiXUM!yHTa4b??{@X|o-5j03x9FQzS!^grRDeZZT1%;-|SR4 z{5bU1|G!mpFaAq^{WI;ic16lx&5NJ^zWv`OH+|cG>3^rT>~H*)B$xha%H+3)k3FBU zeQpc?i^{who9XX7s+ZRJeo1`HV!Dj=O0o3whW*oyooDSXXL-N*`87%VNwxdA#C|19 zzh4|;f5Ka}evh1Lp{1mH?q9YaCFPG*U%a<1G>X?pV(D@z5M0*W8x3;FC_o9 z{WZUPw(Z{emwyN>`+K#1e~nok59jO&d(OWz+kO6VMdRM%ALFX#9@XW3<|&aba>Y66 z?`_XVrzOiwg7+KLuk4ARbEKL31*5(GN?V_L;p2xT%+Kdc-!|#S%p3ZN`^(CI)d`J@}{ zKQ2bt1x)()$y?Mc(C*(puG8yJ7T0j5@7Stvw)~f!oL|3toyWmHJ)f079e8%#=e)`N z|2eE5k{{ae{8^>pX~!y)t@CelW%HB=ztuH#?B5nRc$~iZb^UdVugCU$Z=YiOKd=5c z`|Y3C&W9!3+jMXTd)?B^J&{Q=O!aD?AC%1b@z~pF-`z(JhrVVx`X39gF8urD$JgT^ zUB`=a=KTLWb?=X(pHEsf{^%&Y>i_w^_a?iK!c*dH?f<;__jl{(=4or>A6Z=RzVDxA zVKIaM*;D(4e_lOqp1-&L@2$tooL|%bwGc`SyMK=GFTYttLdq4lFs($53@3>Esz#9L1 zs#f-&_T{`?+DL=F{!}l>)SJDdQPy>F=72CsqPX`}$z#$adTX;x_ zfuVgWY#5AzgMpu6t&C0ZdPD!BLT(0zLhi{CQI7S@3;{kNu8fS#jLc$OLee5EjM9P} zVq)S9T*{1W#vEemEaK+E+zP^yDuVKMJjzzmN?MW{7RsEA%8XLVBJ7Idg65n|=926d zazYl0Jcg>0RtEBh`UZ^59_(BZ3}UVflHmgEempwfY|0V*27v-<9ufxLQWnvy%BkEc zRZR6JnG7~H;#TRhc7+<|UP@*W#+HsIrlFcPDMC)s((V;nPBCVV-e#T=s;+4&J|*T} z=>~!I-pmYMl5DX&3~}-dKI&}Vnj(=ZTv19Q;U*G3R+{Nb3|Z#fdB!4zy7C3KY~Ie+ zaSqD4PV(t)+F3!?74BMPfjZTpCa$io&OY_wVLl#Vf!^`SDUp?FSz)fJiLsTLVTsx0 z#km$F0>Lj#T#a^i1ySoIACzYtimmd-gA!-nnB( z|Mu^T*|M}~)y~|r7a#fW5gZ0e2z7~p3;u(*E zbh{3+nTCd}aMN;My(P*yB&z$`G_kcB7n~x$E?66-Q#X}ki)O^EtlX!omu^_p^i8>7 zf)ICzq00e=jgv%$V@|XsnBAOvX8-rI$L5IHPP&=W-cx_iGTp9hdgbrg)6Ku{HLvU! zxU=WNa_{^9KU_>cztCm!GoihuhbGK_b>aHYSL-TYslVRxB>MjGqyIH$7X06}aPRIX zdzRF5E`Rvb`XG`<$5T?f7k+8i{|4FIG>8{w~+HabMSI;eG9m zYyLBCiCeq>RnzOwhEJsHS?>RM^jk`2@Bdxvec5WWw=7+LPri8HgI66pS3YO>Z8pnU z%xukyqVzrY%Q-A-*7uYwzi0FRy>X39b7O(UoThzmXBd1m3DkUFa{J<8l}AsWNx!Nn z7m!=Kkz4(2GV}b>>Q$BY&&v16|5vCp`&YF^^~dYA{QG!oj@K1A3;vD{k&USrsbPC@ zd8+rhU1ee3_O?%Vmsu=(#Jfj8m9MUJPOR%?{nbzWPyPKC9L@8^cGahQ{R*4(`y)S-0kFt@yS7s~JPF2Cug%N@R`_3LgP7IB5YrsA3}&s{f(kG$IIjLj3fm$qHIC;5JN zDBtIuA1C@=W>EjKd)tR)b8N!)yl1Qp`?TSVWNm#yq>1p;X?150zI$~(@b}(OjUu=I z%J=wgFRX9mDrmX)KI~qxbg|(2jg}Ekov|*ngbm#v?R{b2`fKjI|FwtDuZ_8Cc;xvT zb+h>i-(nZdIvG4`_QTclUN*$tmpmBsF4|8;^u29z#D9y6@*1nwZo2iqV%T#(Z}|T72@Romuw7{C{kNW9MhSqWBp7 zrQhs7sY_+;P-cOjJTy=4Ic>Epal}9^1T@B0@ z2!Cp^aJ~NrsrH*^epM;N@z-b1KV;PUxc2zNfUhR6_I!D5y5_-GPoBqhUTQ_r&zrva zdu?Wx=_@x;j=sM52HDf~O@y48|3{(1LSISEX8*ia`NCOvz@ zogKZqp9vRkStj`Px4d_x{rhGa{&#G!tE*LrEqx_Ivd<@M_q>?&YAQ-5If z4MB&wf*x-R{S+Fc*Ezotw42u}y{!E0ny0U-+)J&WmFWGJ<*k0cV%kMXhefsz_f^D8 zhjyH_o&LQ~?+(j-+q?YJUoBm#P<638?#m+ay)Rt#QJHqOzw8s2X@6}ty1I>r_2l%m zn|)uKy8r z>4&zwyJP1oD08h*-g@!!uIVLrnv<>-Z|gtGXL|R+lq>Z=x{qHxZTFzW{Y!o>gHveL zL(`a|FNXx@d>5Iqik&ImC-lF#pX27X|GNy6w%Ib>uX%Ix&83R_bqp2-5%pQx;;*9n zW&Iv(EcNW}^tv8kwkESG;*`5#+;89JokuzUPOm@zdr#zyS<~CExjo>l)?Cq9EA^`9 ziR%5<*g*L+0$saI{MY~fB{-ugZI8fJt2F+KH&1IXGKWtWdR6C`_}b*X#~fct-HUdo z4Gu8=-Nd7Ru>Qx-b36IvZkIF9oKms3K6#aN*7oNMTA3d#jz9Y0%j?Lf&-%POr|p~J zd_C%MvslD*v3)l@t=NjJ{GEAKd1WtcyyL(ozEbez_2ZSZALP!_{G#Iub7x!r20HbAtuiSR_{Dxbj9K>N@8BJ)r*wzPem?a#cXr^brRk_2vgZmovAo&0x2Q-t|kR z;`6rZ#CeQUs{1D&Ir(=-X|ehG=$%cWlS_TypBJ<~lJ9Xu1d%AqSMO_m5mRxld}W+( z-)sKQe&zMAoNubzud@6)d;XRw_ny38`{@S`i%E8w&WCK-m@=NF1Q@8n$(3o zc|%0)3xDM#J1(l4?fo^mPeLk4hNbM#S9c}dz-%39twW-FqvAi59bUrEctWb=$KiYP zzenpIeQvMxz1OU_KBnOMyNdH~ZYnP8du8j=e0TNzSFbAGPv2voSXESd&s*CUYp%NY z_t!1S{Ac>LPqznNe^%Sa)>E=_pXP`2Pv*>j_ABlB%liTS=CQxSyOJV>mtBo}F%eV_ zVa=fR;C%ak$;;AP*W8{2{f#^DysuJSey>dBjpz6Nuh#owbmwEyb%agK-R zUVWC^Y*DxTCu%)(bu{+qGvb+gE&SHP)~2w86(7pV88mjSGLlj;3wyb$DhoAZ>LYg?+*EKl_2I75hvt6D z|I=8oIQ8MN(}(s(imgkoce!_dj_8&*w-)XxSpIJ1qU68(^6Ja3oar;3vvsod3U*oc zp9>x*$d}Bq#K=`1BN2;qxoz7=J9z&-hZhK#OZfH%Z^STaVw6+s%5+TmD06r^MF>o>e0D>B~5FmcL&MEFfn z&6q6zMuw?TdGY}b*~w9Fz^>c)N`{G96Qp?Z>sJu%uVk3G^gtrI#;DqDf<-EY*dA~& zFtFD$FrYfY(-@>JZ|I|IY#RCKM%&R~Uguff*; zdL_d&-3uflU}yld9~#65zR56&1WYdcssZvR?^hWnpMc3vzo>zDwO?eIngS+oyr94X z2{t4>djclk`=$cB=mDhfOTc8tZ(w~OGqnOIGkz1BeEzEt$Rv<_Qs89muV8tQxibPM z&;FtXlGFSq!*nTdvimnp*oi}b-^noX2Th*-Rvsj8^InFhB^VyPhLa6{h=ZdSe30^_ zccM%SLMMyAQv#_4=`@dO{`Z{>Pj@$5 z+!)CmCWhY0^H+#Yw)w#W_OZkPF>Vfa28LP{22jQVc@>If`X^67_&9CasesilgCBvxz#s}S5lVjCh^!tOyn3%>m}c&r?DI+r?0)0}7C4~# zAk>XrlM~;HDS@1Xyjv1<)&fKUh&;T9fnoAPs50cWU7)R#AO#T2b(Dc&^2YDtQ6STh z$G&(V@=!A71_MKJYDr0EUV5=!MQ#pienuV|V_=Yg>VZ%ZuP4VuNlji04Q%9c7d1@& Pf1AAOhdNv7Pmn$UXL?z5