From 872882e771cf0873f5e8e78ea7333367a3f87d8b Mon Sep 17 00:00:00 2001 From: "Jason J. Herne" Date: Fri, 30 Oct 2020 13:28:23 +0100 Subject: [PATCH 1/4] s390-bios: Skip writing iplb location to low core for ccw ipl The architecture states that the iplb location is only written to low core for list directed ipl and not for traditional ccw ipl. If we don't skip this then operating systems that load by reading into low core memory may fail to start. We should also not write the iplb pointer for network boot as it might overwrite content that we got via network. Fixes: 9bfc04f9ef68 ("pc-bios: s390x: Save iplb location in lowcore") Signed-off-by: Jason J. Herne Signed-off-by: Christian Borntraeger Acked-by: Thomas Huth Message-Id: <20201030122823.347140-1-borntraeger@de.ibm.com> Signed-off-by: Cornelia Huck --- pc-bios/s390-ccw/main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index 43c792cf95..fc4bfaa455 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -43,7 +43,9 @@ void write_subsystem_identification(void) void write_iplb_location(void) { - lowcore->ptr_iplb = ptr2u32(&iplb); + if (cutype == CU_TYPE_VIRTIO && virtio_get_device_type() != VIRTIO_ID_NET) { + lowcore->ptr_iplb = ptr2u32(&iplb); + } } unsigned int get_loadparm_index(void) From 5e592947de2d12f6696ccea0472b833ecaffc204 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Wed, 4 Nov 2020 06:59:34 -0500 Subject: [PATCH 2/4] pc-bios/s390: update s390-ccw bios binaries Contains "s390-bios: Skip writing iplb location to low core for ccw ipl". Signed-off-by: Cornelia Huck --- pc-bios/s390-ccw.img | Bin 42608 -> 46704 bytes pc-bios/s390-netboot.img | Bin 67232 -> 71328 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img index 5b57ea2837680ca6f6e98e7703b89818fd8fb316..4e4b3207c4626e5b9f04be7980d2b6a31538b0ee 100644 GIT binary patch literal 46704 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 literal 42608 zcmeIbd3;pW`9FSUvKj*1gajt6cOXDm5+(^t0Fjv_Y=SUs8l)CNGLY14BohJKYSh%C z_FF?fVzt^jB6z`dK&wPiVx?MJZ7Ev89UK=lE)%7I0=d8U^PGDpD-x_f|LVM6lXLFb zp5;8}InQ~{b0^o%m^agEwTRFsO!P(GD2OOB%AGRZ;^)*UvP86Sir%6Zo+I%Mm-Q%< zpAM;|Q5KsidJ7STuhGvct3}5Y5ah>92`~Ca80BY4e)m^dVWtW_Qa{2KpFi%G=_4J| zuq-YQTkDYZ+>ektM?ZsICffwlN3@yr@jyaYJES66!U?6}h29SrqAbcN?{1=?-y$?N z;GK;=i$Rx}3d^{X;#K2H3MY3+OFK{G#+>Q+m(mCY7Dfqu|s)b)2%_LNY+m2 zvl~AYLK#MXN8H^Aco*H$s0#7Ohy%TY_bK8)c(Bq3aC@V-VT>icSwMRd+W zr^sHY#%KeCMVq95%k9z$*lH`a)<%iQ8?0f`NG%Q53wwhQL$xuw-slkG;jf#9is>TO ztvZA@1pU2YBK1#5CoDYg2OLVQsM9VIR@4*{%%z6{s#1!wJP|hA;S>qOw@uQ&xk(k4 zz8R<~6PuhUr7^o@7oNxMUcZI1x&1Tk3~1)Qnpdl)xY#As>2w^k%*zejq%9@L&f`m6}ky!smi zZQ34&_KRMuvYOmt4nV&WOUNF$hl1qtZ(+0avX(XEyW@84XsE3H*|@sk+{j1FaE@lH7)H z5s%Uf4(f_fgiDDN+ARGP^%XsH9jf5mr3ZRj_NziW))G93R*In65Oa6!QcxyDlK{Zs zw_AgeoEyirqXUX%w@Bvv%mYyth%M){s8`c!?x6?6IVXGcM~{<6k97118a;+^4~B8u z852fSiyY%NVU7{i0+nv50b=GStivYp8H+bclhNsW5PAm3EP?BmLPtcvic zW8mwSJk`&VH$2VEO&Q);C&WY7IMq5~mL=S!J;Ea<1k~UIVpG4-%1~{zu5VPukj~=< z6b!IQ8=RE^9C~SkC)Xj3)CSw5AZL4kiv=?B6iK@NCz6QxJ0Q)Le)hPbG#=_6(o*y@ zNVi8th3H=iZ0kw>4cVTG=TVIx>bkx*eyAc6vnfBg?e|DlAz zswQAS+I}$j%`#4!Qon_<8v+Q8(C?T*%+)a77y1(R%H4pn!GQJ}&Bl~^o`>C#FFak| zNc|T*6HxIG4s1l8g1L35d)$h;JF11{_q|{d^w56D%OFVLO6qa>R_eX#-hhf?J20c( z$)bl_RTAVnXnLX2>y>^+08~u zrCS=JMM6WY=pRu1;ou~8Sp#acumf6m16yb?Tp5<5R>+WUy_Q|=0=72x%OwBWzwesJWyfI@2=Yx+y%{Bp;b{06iq z_M1Rmg-wLJRt9&YZaeB6LL7NPOLB_(2e5XhV*T{fPlK+B+&7%`LBNle;Q=?A*3s&R zet@!oX4ntSup6Z{O;3|%07u<4g6rvEBQ!%JX$5MhSRmU{E4BxF*htT)-@yDQK3GiA5jG&wRkR=|)sg2Whl-Hwvsmt$IFqhy* zyOAO_O+O5|zeP(@j=JK4wg$VfL2IwpelFT^TDwK4CbzYH`X$-mByk>iUI{*fa|AQS z3i;tVjIn5^;-Kdtzu`RFkQbN3uR!XQ&BRZyzTM#Iw~SFZu$WD~D z(GEVvA&rI}5iXbC@=UsubfL6=M~c|Z7Jnq>E*AX5dTTs}wexLG zx{tKsrvX?Rkhv5QmKd)k>%sUqv`lR1D~2;RmkSGHv)cA6qH)0Ogo`!TmWRI21MUpg zq)u>k51^~A>-t^F|mXd0i#&f<}ad99uV zu8jL;tKWi^7`b_=e=soW&D=|%mND~atW(w;qVkyj*Ub<3hX7tPB-o1db6T?>^lJ2h zQv+D?lgXyOaD{fKn7(-=$G!xfLJ2kd_7^u$oH)HPB(<4gJM+Jm<5U zpg%;<9JNN|rK6Qi=m~c43TK^Y;@NKk?i#BIU*--zgr`$YbE$RzjJyP&7!dCsUnkti zZL-!Rq4s9&8WDx`Z`##-Qh8F2O?GPhI=3Bd?Z9Q>N&yW~$97y>Twp~uy+xykI6g9v zx>5+fBdL+c zT57I(xE*-BNpJIbJN6Fo4FrtqOfJ9g4X7(^lFLb3xbHx1JuLeMe2?j+;5N8OvZ6ns z^^eklK@Y-j(n}<%Jm$4%_Xw3uXyNB|T+bYfUQ7AO$GIFQU~tdQwf!i6+RFKtD1YiS z=a+K+IIIN+YksyAxJKogPbfd}L(T_U?SLt;19T_k`!Tscas3T8wqSZld!PyuH#qTL zE!n!A^yxb%dG}35pD}WmRs~t!v`fn!h1T3VfCQfIBEDE}Wc`IU@D+rE|0;IxXoj?k z_DUKBTCTMI0l(0mmLu^PeCkfB!+KqXQE30CU0+cqVHF&MR{9yQmcC7K@c7A5!vk?D zYC~4aR_v8qv1e|DZv4;YFr>BmN06xzP4U!+@CHuQ+reY6b!5R78S0RGQy}YV1pjh4?)LA zh)vYfHYaHddgg-1y=VLU)`WYhwEs*z>)Y;!AH|+H8hUUJdcYp!x*DqE@?0@(v+##Q zb4;e1eq(?|tr!klBnnox^d7iePKSlC#di`zoX5DT7!j?wBuaZgSavPK9`m$N8f>Bx zINlqgpbj~fhyJ&~O4*|2>i;61jNeLqqXw~zWpchB<+Ip!h>9cXPrOK@fXifmL~kbk zdG!WET6i~k`Cn(_?92NYw@pNozLX(i9l+W80YhZFC-Pl}Sit3n7~*ef#=+4knC148 zVOKG?)H32q><6NCoky&pJ@D<{uzZnR+dIlN^8&N|_SKBjEVmlm%3SP8@E4ym(U$NPN+*2B9Poh;uvA@*E`@kSE1-@K1pyfy%9V6uJ&+$D)y1zF7?+1iuC z&=ko3F3f9h$ox~N-+>u=kZg1x?K2DMd{6EACBrg5owN%Y`Ag`&ty+I!v8BMCj3(a% zbk5emO2WW)J?7v!!h6D-)GzWvZM(qU+R}&0G8?!ogYpxnaegf2C++0?2*UdK+uV}p zKa%HvB5Vwd#PdIi=RcC?|M-hcbvR@Z8eL?Vc;SR-1MWjHM{!Md`1*Uwwe1?($I5)U z)UdeYh!4;2rP2HShNU~2U{5IJR@Z_Xqp2=B(zZoAcIIJd7C+_~eIDD!eJWXcUVuD* z#5lu-#QZ(+ zuT0MO;Cw3QD>y%r^FQG{Yx4=?IX^)9amgN;^#7ob-S7;Afi`FcQA#@Ht&6DVTT?sA zB~kj8gQS@->3fP~QoN)+BEn$RR3M+YOxaKR;R5UnD)xn2pjE1o?m>DL(p@NDhje?u@BgLLTZx}T(!AnM#)~!G$zK3t_8q-tBdSh%@tlD# z*PecoVGT)7 z%?XAcSucX@>k5Au6yWTG&OHAaM>!8^)3d1M_@l_(U!M+G0C4e7@${Ga4CCoCJUz>; z0?ZLP|B_pB{s(e7pPwf5Ul^`3t!GEzXCv%FDzJke58Fn*go@%cab* z5y1LE;(b>V^JYI#&pIRVeU_NVp-sYlKf!$F2I_ppa)uL5C)K0G4GVu2(q#nW&9Mak z#IG@OJwGS$^R)y8W!HDy!QXfvkg%eKNPL(fZ7}qfR}AEw+`9;S-kZXXL&rrkr7uvg zurDArIOBreqk{Zx)RON2!j6EqUvtYpbIUh6w;cZp*Sy@hX3otd2>~~T3wQa0K01xO zQP)u>V2!kqiOkcGiTioP`-rog`y*kH{x0Y5Kxr1f@}#^F_}$0&K@)*z>^~hphx5av z--y=xgg;>ZvS|Mq|L%bi!F#2jG2tRxhBiglmpb+*U^gJ^qE_5ui+4GL&j$p$k>@%N zu+kfD6e`l4+At#ontGv481d}PTKd~^Bjysjc+;aK74U3;AA~=6 zy%jAX(`fkmculkk^A=!v9E+B zaRI2_#U+0?v=!Uk{|Pqwz>~GMT?c<2+#1}9R-?OGZHHEd_(JxXSA1@)fm$JVO&> zVyDEO`T%1;6?W9%#GP0HYjJ`gJJL8oxQ6;5X}bQO-(yx+1k|0Np8ARF@eErO^V^IZ zb0>~8^fiP_ria>C_HlkS=bz;~+gX;~Xm=~{mfHSbu({xO;QB4xmMwy>e#)aW|1zQd zFdpy!U-AB*$+Gny-v2W%Wej=$&*WbJVf~-EipyF5XHMlj>;LpL&L@(8i=dv!HN4OY z^4Zc;Yk0BY;SQiwB=>w@`l|zIFOqS?#`icR$C*2!S5`{N)%9Zx|5!QcnOQjbA_>QB zioBVn+sxQ{s~U^e=6!Dj-S@%}Gsg7kYs-3{ zfaXnvPx1A3IC%9&*K%L4`kro)6RwgE>?y()D=3L?_+xWbC6^ZW*r4 z76YA5@NTvU$DKzk@-c3QqU5P=!pIJc_?DFXo563Xx6yw)_m9Bn1D%kRZDYxIt;FD- zBSkn-65r(rxDAYo!p&oU_I(e-Oj;8AVC6=E%JBq4chdd4ysz0TK*?lKQHwoiD*W?( zRIypmJj2IGZAa5+xUUG!TSh+38|j@hyD{P}%o^=`!|G`y=mqjVXf{PS6$kEznCE>! zp$`sB=6UcY?E$?7T(iKFu@ATR*#DVZQ)%x%^LxlkbX$ASAKLrnT$%G^;KgwlBu^Ph zEVoI$Ph$4cfzb{4)&s(YT0`%XBvWTrO1#c455cKeX&b={1?d2iT;y#z8NS}x8FeOg z@Ychhxd~^vZw%?7yX#wnhXwXQmf>UiQNVr-vhYHye<$N%;FpC{rzK(_YFF`XbU5y7 z0K>9^R%*r)UQLq&Y8}=$?1V58D_0ZRFM@sHg6I4h4H(=mYi#P^9A{wHDPjGG=)0xZ> zB7pYg&HuKD8`+|m0!-K+!q^VRiSZHksp<*wklCJ)*;;WO=FfwDZvZsO`$(^a{#mK* z#BFA+{-*X6d93)hPU`JfaDVemJ*1cEg7*&a78&ro`rkU@c-sjRM}sHNn7XQE7&zRQ zo`97P>ut9Xd}CZIy-?}DX9$JHJVbCS-uL2h4-B4O2FZYR1lw>7B;X`T2Kygt;I##9 z;9(YS%O{HqAgfrLx;NX-Gn*oP2pC}^q^J11F*dP1^D^d6PuK~b+)q3KR{h{T9)Nl4 zPZ$PNEY>>6>wajU3lfu|3x*gsPZVpx=l1w)j4?RTj=DHt9gmp>-E!7#yIgTACH-Fg zdXiMf$3*3s58$hKm7l-l=eJ2dQT7+}ev>RXK-ddCW(nJN@aO)m{;ivxq+Mv;2Zbwr zoOf@ggI3uqfw*y3VO0$bI||)m3A>q3lh7e7?OPZMPJDp61Lq*>v6r}mQwnKs^46rg z>^=+8#X8NaAE({Hbua9bl|tlPs%;2jHlYT{A4icHuyC|DLL>YeBV6H1#R$t=M?hIB zbXv@|k@`vGZv{ucieG9Q4!g>S{uHw%0*5g?ou2Z+T|FTI_EB6;++mU32O0y|Xd{H% zl~^axe^h-8PQ!!htQu|!OgTN{+Kly1wHSl#pSWMp47eOS)z(!tP?YJn2rq zwiX)t_so@I<_gwN8``}3ZCtmU>k!A`-^#hC15UEgF#gb{@||vy%bY&oCQeA$Q!GgD zajA9K)e%iG8BfokRCMkG&QsgPm}fKYEf09{Nz^fvAf0}l_C{!+ZMdTyBJV0(adqY@ z8i5f=_IEOt{jti~Ry_SQv>N$a==8?ty11D<+N0EN{3g!tp!_&qXQ%IDD?pQe&~YDd z{hjCw%Mp^2i&cozN!v5)Xq;Jr-LH8JoEDL%dxZ8d`7CmpZ&Sv@QbL<@$jsB+=P%&< zb6n;D2limkvRLWVXtAbet4`cLE0EZz7A_f!-I`Wjl4!*Jx1DxeE>}b4HD-C|xSvt* z{{eEV--hkiRMzvS*=PCLJK%rFZX5Rv_Ln?Ei~F)2L7&?h-0E}(w*dFmkgf1~oFQ>e z^97u+>+G`~YC2YXl8mlF8SFJP#zq~BQ!GnC{0jyT-y=Iop8H4rjWE-9&<;#IaUu2t zbP3nvpes|<5uJfxa6QLkh=VJFKEx*gA6xvc2@Z-0Q*Z+_koDoo&4MGr5}-l1GpAx3 zD6TOK@=4K*F(j#hVDoywZb9@F-9VlsxR~Qb;AxwGOIvyByddJC-^vj@Ud0 zk41YajYY;?xHH|^t6ggarO}Ax>P7c)PNa-6e94Hm3D*{41$spf&=2fqE2@>e%ub|C zA-F}+;uW1$V;(@J-%3NUsPHn3AkBM|?=`Ll9b za`*-za;d*;O>mp84QAo|0ijC!6Uim437_00F|V;5?V3g(Y>&;D(`3}fqgM6dMj6l7 z3ZzQFB0|S17q5b>F*MKaxD;*pzkoP2dV$iySC~72qWYk4>+8( zBhcBfP6dAC)z5P}qw|!SSe&>;--Q@qDZaUA&6=v^NxJtzN&ih2e{U%jn5Dk1xEc}v z09x&2y%L`1RB&b|*~RR@V??82MZCcrn3Jd0rBJRVH*V<7G6E7a$=Dj!Ddr^4(UgpZ>X9^^et(EI2J;N2Z;NEcs%j%PfLy^XYG6zx$vO3uQX)0ia*^NzauS z_iu|oeLwBVJ-{Ie(+)`ci9?9Fflk2w6`eQ?d~Jp-S(@T7NKb8)B@+5C9;=;J71n6y z-Xx=)OHDdJffL+8w5U3^K0FAYAoLR7Q(118(tU3(q6bnyg@8sAe9D}Rs};6-KtTbd zgRqlva($3ubyzM$ig;uT-?xlqPwzKnH1?;-7!~UeG6uYmDwqK~%_c!`Iq!9VLqkKO zj|YFQhu`W_SKYmL!xDdxdKtJxpw%q2j;Ge}zdx8=6MU4pnnWHKOLm?k_+TEQ9vX&- zVF`BpjZ5g`hNS>H%)aDzrW=vM6K<@bhZ-w{CGu_T z%NlGLzij}bH+lpAI4v5Hd?L7;v5N*RaTNrKY^&M8l6IldPJeKZQv{zysv+GWt$&8S zm%T&}VWg?pL*zObCRgWdCAb6Uif1VTfbaVeEf(A(HbL{yspMI)sp$x5L9*5$1<zv~O9(B9H@7p$p10%wmwC>4+xg|!-DBA~aD-EK82a2Q&U=0-S`!x)uxBCIi@ zKyf-1tJH!hvEYg7Nh6@1>L8C)0^NhZ*ey6(B|J~{jRnnf+{2U<&`|}8HVy1K+ zX&Xb=te`q$RxQ|H???M|Zj1Sc2AT``b-)VY7$%$$Z32-o?IZ|M3N7!UJj^JkdXg-} zj!OG__+vEQNtVYk2RJ{1*5RlJInTbXqpwrR@IP`%Kgy4JmGg1j@^;Smpub0-QjJUKm386xRUPtrm!;VTblVf*? zY`afJ$IgOJ0%wDNQY`c^)RwgOIl!@@IAUP!EQRD#gg#k4(e;pPvgx%o`f0`*d*ik- zxW8%;*Fu(PCrM$b@np|QKL=?>z~ECy@_&f#6J?NQXmyNAe%D0vJbPjlNdn}40H~zf zQ+uctBD;uhDXg7O%%@R~!ZR%6=39cGM2vBf=VN$MBkae2JP+;EJKzX5LIye35wVnq z+#(>99vo|Z)U5ztXVY#x8&Q=s#MmdCQN>D@3qlg<9YP3V(tqt;^Ps4siKFt)I*l`X>7=}odph(`kSD~}t zMUZuVXJz!C5-8f~Bybvx(^#$0zzH$>PXVRbn1AG=IqH-8ktLgp^iHg(8uqg13G6V0 z+31@wdv~`&rF|_qsU6%}cw_z#nkE()MS-rnkW#ezV+MW1%So;~P5Qt`Q0j=N!!4#G z5*+j?y+D!d^OWo(Ini{7ViPr}w~0FH)pRFCyrNf6tOwctLD{}_bkru)3D*PQo?l7g zSxWSYrtQerz~-b_`Xt6~XIn_F{z0wY;h?bx;v_i$y_tJ>9t6&k7a*QF>D8}bPR4>O z%W-$a5g9GFA-9|4u;o^12N-hxIAr}kd}rc20pI$7yV*&;#+~4AU}f_>fe1GAB8%)| ze8)h;S*hgI4XoiVkUO-wN8F+vNA57?nrVjwWr)_;(m(s4IX zd3>DhPn1tw2pc)fw$oNU;OBIHk2r!jqA_T36sa8?`YW_oEUfCjA_G$67s&@N2p$g} zN9_Q&+MEK+57C^{%0r|+&4fy8kE8Y}Zv%%@z)yd$ic#6EfRq4!Q5a5VlYdG z(bq||Vs_8er+}V1ScS;}U$csyB6yOe={fivne%nveBX2)XCEkupxQHK7!e*uMA+OC zzYhBKGT4qcLe6}wpAa+Dypm=m&mY{AR}uUSa{gyD2DaB%Nyy_6Qyg9@Ubp^BZ5VtOm+q*G}sLcXSHb*Hz2RtJw_4>^j+f3cF||FLJ# zEzV`~t)LXr3S~Sh?jhf8s8l(7j)iYYsIh!R9Yi}IG_%T*B=fE5|fVw z{QDJ*v5{t#@HiMja>9As2J*bBoAQXS#C!0WPA-vTW1 z_bN*a;WD~~8@PF)sz8^KZDv8u3`m0Ir7y^e8Ce6np|@)%-30n+w?;G_+KjY}V@@Jo zPuIWtJ7gEL6Hqp-WLZ`Tx0jwUaHHD*#_er>)s@rr&XsoUJ z+k1y>x&v_Cc_`OXqA996*)r!~&)}QEH?`St732@n z3QzD?vq_g?-tq2G%R0pGoodwvL-uw@8w`2!{|{|2{A=){jW%eem>1Rt&G+MMG*rH; z*771G@mg>O7AGt|#Yc7;4|qG9sDbyCSLQR?_#J zYqT1VR%6gAyD67i!ON7O?Q4m+0e-6Q9FzTFXie|9G+|~w(`<-FIo9$d)9@K#{LLXe zZw@GS_;~rPnB>`t{l>k+HsOvyY&=idKV+2l zxnpM@=MmYz{LP~nF^8WwFa!;G%ZpzTSKDcc+B08LtD(Q7RzZ$N9bU?LK8+6L`-k9u zjMk%Tnd9C+-frpiM{(4qgo5IJ}^2mOUxT?B}@@c?}stz&N5+Y1qn^BD;T=GxuU1Tf zRi3M5!KCYL&*ppN3t=0BdaNA8J7SE)Y{j0_o+fRum1^Tqo8DC|c9>e+(ZP1>Tnl)G z1P@r{8Zf>3U(wdyxh=&YnC;LawsVWl^Z50GcKjV^%wx|y)tp1t!*>d``(`c1 z#?HtX-74?C`L-khHbVj41|`3}w1)lU9j87zeqRDNvRh#j^|$CZE4UjRDDK6MV!=MH zxNzdY=wtXqAg#h7+^Yg-mr@G002+VraUOp>xTT8NZBM}dlU}A#pp^C+=CnQ*UNnjsi>KBt zpMV>?jCqAe5+|oIZO0rop2v)#zwb7-*C$^M!QD~{W|ZC?hON?Oo~5kS!av)kR2e*i z{%9+K+Xf-(Rk1ro&9+p1dV`AH%c~z@Ea8{8ihlOi-)Vp*ejWNG^t%Vts`(&j|Z?!7Y`aK6^k!ePnp%z+h9D<)y(k1`@SQ?)d*6U884 z9osJ+_kt9QF%*Ae>C}%L&ilaUwGLDn;}Zu^`=ORbnnM2;&*^x62WcYGH;~$q{+lGA zJ%9DNWPLK;BvBo>MHK7T%U_x3Tx-ZvJH6gKtKA%pHr8T4V-|^5DzG7nK%pE{(rNA$ zs1;|g%~9>yXRqx{U$DLYKN~*N&pzfk@yR)RU&g1M`~;sg<>$;#J8Bl=J_?b(kXSk~ z4l$yA;fdT?0SzTO zPaR87U)=+Ht#yA^jd@&_uMvW5@?0IcUBS&&&F}aX+po&al^1 zM#0P+7 zvv6O#ScqE?^ntbiIYzk+d*Wu!t-P3AmN) zhhLKrm*Sl%crG7;*AOQas)J|s@kAGR`5`!xYvWxNQj(_a)^%GFd~^@(%2X-F#J|xm z2HM8Z8+WkmEx3E$C!ULc8j{3sfW5WCmb7bvuQeKFCu$PG88`1_*g46Di8_Y&J`j7L zA7EO0F|Gd(=XddB}oqhJG>UALJ3SrNSzpU(9L1Esp6M!#l@K z+rbFa%a7m8z#WAA#heF%4e*UMkZ;V_);DJSV$Kjg8+|$oRB{B)r^%i1CEWVad$s4l zt>1e;Fm5*!Z$5d;#O;&UJLA@t-!xy)Epv#kL-MF^3m=h)Z$q~>I&j*&36g_bJ_VAf znz6U1^AtC%X9wMNSaI7Ixod@Rw23Gp`yFqe1eEag_1tVK>}Rv;C8kfiTZ26ul4XMyw{99NZx7nleaEQ zd4J>k6YbRLJ8Y}KmsjznxB7l{a7A-;b2Odk=|yHl$;KX&mP@oW zP+G6mMq^LZyb-w3Y>t!Bknk5Pu$H{hOA#l7w|*j4YKZs6x{BocynWGAXr2Z?Li2R= z6L2`J2~m#lVjy~hYWhAbR{~%+(t2nvQiZDmzw}bmTmsMWdQ|})Hhf3I?;!f#YslUK zU+cPf-}ha=By|Am;sC7+cNgno@Rf|$A6)+CBEVp6bM$r_#qZL){x-r=V#d6o6a7eu zL30s%w%03+A6DuQh0#dHXh{g01>1%oBCQ6IYRsV@3y(oZ84sdPa;1la9N16u1pYuf zwerBAU#XB@e43Fg*S$zz=V6#rs2VD!7!dix3}Tx6Of{SPZ&_Vtt_l$0LS9rIm?&H#}!y4ZSa7 zLF63HO!~Lj?-2hOb__ViQ(SvaW(~gwm7RVKS^4A{ z+%lxFN_zhZDg5DaaY*4=Q3fGJRH5<`QVZ%QU|oEI{&u_zn+W?k~k6OU%CjP}Gc`xE)t0u)#Z$i~fwo;~^{_1r|Zl4aTkAk0PDYulwQJ z5EdnXkCWh!j0NwyA5zQ{uaOT&VYkLl`2NUPtfv|IpvlDIgO7j(Y^)y{i)_Y%yn)P% z5AFjN_%)Uv84G?t-~&$xiX5f;Ooo_It@x*3<4IBKROmZ!XogViACT|V1Zw= zX*(m*&Ileb_YhW;;UIrAJHb8nyIr z!fKwDPQJ$Q3@zP)G-46#iW;Q*kUCNRCQ?=NMuvYc>~ZT7!hXRIfxS?Ox8W}WE7&vP zi;==23Gas#_Dn=NQrI(5JHHRM??2oI+vM+yEu;V^oq&U_I#^}+om_A9GqAJ3&B$LN z1vjJKK?;j1@^hr1BWg2J&=DDd6m&!{LrQccelI%aw4o#Fzn}wWw+?h{0$!ja;uEAq z$6lmF$3mo_Bcc>3=!i&13OX#?kb(}&&%O^GM?S<#kL43h$YMlX`EJCOzfLC!bG2h_ zrr?`oSdu@GlV9icbm zB`^AF?@p%sj~MM;{Ju3#^6;0vqj}G)wUOs|8t&FqmlJUS;Npq9@he)}<7p>Zg%&F} z)igsoq8^|#o9!ZMarnz_oxWx^9!8HW?TxNZUx&LmeSNb4FpbmKVdM1mE}y;#Kb(4` zoi|N-Fiy;-TQKd|iT{JV0>cxJu^iVTrKscN6OS78H?TaP2xwphc^^kT)&?fC({{-Ol^f{ zsgb;~g!T#YaK-~(ADm1Ra&l{gb~)g=*{ zq*KoWkJ#?x5t8NaCtFN+!pq%}N^d($%9`G(a8@%qza>8ZZhZkBq{{=t$ z96JwqY41fD-_j!9hu*1xC^xx3>>+_(M^nRDL$~E%sWkxF3?y+y@%I9x_ z-J+lMWS@lwKI9=im!357>Et0b;5K$h{ftMq_QO6eb)PR5xxh;nM(t?kB%nqxruK69aQN+s$ObA}%l^t0dol|Ng!;3NC zxw`?6Vwqau#k7Hk+eoIowz;8Ol;S+D9MOt{h)st7B%wWQ!;{)dD^AGP5a;vYzd)3e zh5Q&f$?&e)%jjhOj^upv+U~%&G40B=-KX7h`&nu49`s8}5`F1yWVd_p z287_9bFEm(LXhxit+bV0n!oPBn;wF9Zu%yM;C*lUdOa6{cTW1)V*W4b>-As=-nr?U zeKz{!I{b16ufuNfwb$L}0hj*QR+n;Pz};{jaBU&D=j1P}Aro!~`7z**km(nvx(~nS zi$5IvFWxoaKXxAQ%gzHn#j3o!_5$Z928x_aERF`kjoP`2BO;wheEk zxfSfR_&+AM?WJE-Kujj>^pF-?CFn1po}YeAxLE4)d_viFKgGz4XvB*R5s|j15NYSN zT)8rh$ zo4M&6?N^7W;r-wsV*RiZ;t;KmcNS1P5UrlZ2y=m9bT;17+8oVqbK%!u#o&M&|6{Wb z(R@zZ1U!#|C+pgT;dm>6{$t#80sN93YS9mNO{gy-;6B2C1s2;T5|1#WG~0i-(f?}+ zCgJ@9{i97z1vjMn`+0TvUj*R0#fjevK_nt>H23q3=3$QU_Cs!7qZ=g4RGeTa#(OVf zyq%b8`u&4{BF1|o@-rE#R?=4a4uJ?#=Tlm2Zk5FQxKW9<{~I zZ8&PaG%hjv$ONtBCIqrEKYY~m@^?FJxyv1c}RByQ)VRdDBsajp;Szo~; zn0>q(Dm?iAfY}6Ob$)S)r!XxB|FKPVtY6*X6C)hy8JXiJOq`T8Ie%3_p=Y%a72e8> z>dcHODl&jnu9oCiuEBWoimSY-g~gQ;6ros#@vEvUD#|N?zPiEVwZ{ksYEVY?tIMm) zK$^%YuP!O%9;=JX3e|jcEcWKFD)F@AMM_zDnMbVxImN4sJ%yuU#7xGYC@v|_FH{#S zR+;Fc{K`VLu(;~V7%^{wE7$E>bjh^kD~!(-fYA?_1_~WU>T$HO< z6BVWTYl;ih;xe-$JJd#HMsgztUgcR+>M1jMD#T@#<(LeVRBoV&tM<^CGxBES$TGn_ z0zDyp`1j-s(z^dR1|GNxrwZysXQSq|Bk4 z5FyB+GK^p0EmBL0ON+g#XMKUkQ%FmRT1v?>Xe+)NU_6y9Rxw@H7K9{pRokW=X=8r! zpms=guEUWo+DccI7pzQQC1I1)K-4bs9*Z-- zx&%a$yrl_2gIDBNmP*l6*FYM)9<11+{4&V&`r^{+QnjqQbQQ|VSIe=fYq6(F%`Yh_ zU*{lEJJm?T-(>FGYExH3n|y6Y^e8Q7F5A<&NXrY2(b$5s-UR4 z4BD@xyx>Z;3RBXybVknHTs6P2uu}FdC@%xq)hrfr=@26>!Ey0*=%0#=4mO=?FDmrl^y z4~D_pG^PFG+|b*1m|tF&%5!LFe`0-CIJfWB7S~IqvYSVYZbddj%qf%GqSVwN+t7+U zBa$Q_+*PY82tSjI`nHhFnFbeWa=NI?5KF6Q)iFg?1w|fc;gmL$F`7Q3#$tEJUT+Ky z%H-^k@{xK6%CQT$#@LH<7SDmW(%8Tc<6P!iG=I+gSyM2oDb1H;FTw`Ap}g8_O7B=T zzpARbl#ny!SYA9=_l(*pND*WdP`mFDeT2V`%bs{3| zzx=3e`d^qb<`*ME&-Uceqo$^%jtdox9lqkC>7l2UQ-(Q5P8*sg4Y)N$#YWA~t}H1n zE3a5vX|}BLR$sMl{f4W}=MJeWJ12L>%vrPN808nwop;In1@485%yx^HEWPxyyk(cm z=T^&6J`)>aSm>s}CdF=5Tn3qe8ed(!rn-{#c#ONmlV3&JyS%*0GbKi}dsb7-EpACgv0*g=l6K6sGxM$ExY_)N(Dz1d;H6)!hZOCR=<1v-1u?*S~ z-m&Fs?A0)Qs?=4*-l{gERAH2})pde!>B9EhH8l+lf;!r`+QMB2Baw_QK(3-KuBg1q zE2)%!VJ4rX9NWtS-o5_d6XV~?%8+$aFq+iCLX^Qe^ps&1$w(1nVJcQ)AD@o%1qiAr zry4<8Cneo6N(jlZ)T)B2;weh9tcmZAOa_PGlf;9-+8wZFMnf1#e<( zFIVwAsRj8J`31$^uJGj<3)QnMl;Cd|zM1%v?(6W(>JTcL>Y_!CAxHQhchM-L@^WFTQ?%lyj9 zd>nCbat1a~WMtGq8-&b3FyUqSdBwC@NOc*LAF^YpjLc!|y`lN_r0Fl;I#zSzX~( z7nv(Mn@#pyta#{P6`z^aWzq`GL1%S}P?s;p!u4K(@s`idFF{6Ko&#-PNhSEW(E2I} znHp-3v7wPu-JUWsP^dkR&{|-O)LLMS*jhj^qykCh@jWz3F1uAi1vG9oJPO#63JqKU zhjd^F6IY4Hz?>=PQ>~ZBa?3+3Q?-~kAslJt6OYk~3ehMbtH$ue6Y|;M7*k%>w$CNy zg>(#M&MYS+QkR1FsWZwLzvbE0RRGaSnOSbo#gFQ8?vhjFDY%l_$^mftg@1^E5jF;A zTG2r}!wO7gsG(^#@taeIQv~^UQs;Tf)_99(}sqeiAAU!V-%C34)q5O1r_&@F|Z02dXdWv9g@1FGQZ%;)S0Dn4MI#(%U7r7Y$zdY7gUhxQ(l>RNfocO z`Q^Zwj*O`@$v?;A%!H#b71J%fk<{xlvKUh5lob`jOfjgNQ;L}=D6aC5yc+8kpXBJn&mB+XWR1IMLzS9aS$vg8os-KIW(}MjYQY8^DWx`T(}#S4T&#|Oy}^x)(WEvWR|@S* zzOgoaAX}+$I(eW_%Dl@RsgtfS;k2*GN==_|g)v$Mj%I4URG93)2w^REF~dG)o6Q`p zlpBr%Ua5q98w}_X_=a#_?l9qWs!2aSA!KMwql1OMZ||2XhJ4*ZV;qFitJ zk7R>2%V3A}*$V4n<2ll(hhK?5rj^szcjwq5#I*-wTH`84RWT_)lJ zBjx_(_`yqhHXGsj8>8MB$9Vd|l1KJ;J=9H0WO<`ejb_qJqvzIKm|1T$vpS887|fa0 zmS*|?(r$5p++JODmcB;Z~~_Dau=-l9!0da zO$p`+k?u$u$#_IKdxvq&_Eg*lUvu4>{T12XYNR4rK8OC|*cAGV!1_OKJemEo7)It{)hRgRX>_~P!_lH zi=LhMnz)($Pf`VjGg8)rW*e$#3;$v~oBTBNaF~x80WBXV;^&Pr4gEFyQ-K>_v%dlV z+Lcrxgqhk*KFH!$`1G8IuL0NOgQ+k7xL)aZAQk#;(h znf)nU-MPOXMfCCUU+~dvZ#;+iN6+LpH|q`fjZ}`$7Fiy)k{;T8)HZps77r%=j)h9vAaA%RIixPbs+5r$0xt+;qOJ8Es?GQr4B=J$P`duK940>0JPznafya_^kw zInQ~v^PJ}_bNvzDKGN^^nap2~>Cd|+FL|%Ca0e!pYJ(*yn6nrZhq${Ex3Q_r{E=@bbDTQ=SN_Po05K7@>S|}bJO*^ z$*Xg}rJu$mPjge!&rCh(BM|zmlSkeSdp_w(our##e{0sK(RzN~_ft>FOtJJ+=^}kg z)1}IV=kN41x-uO*Z*H8ZI50~84`{{MB-J>P;@ehGgLU!;|3-^W_ zUV28JC8Maom|pUdchiINkUx>jL8SMTFL^fbWc~@L<=DBCpo@LIwvi7ViYR#4BU3Tu77tNQf%de_+vo4x{kmS~$ zXD*t5$=Po0yc_y@^5x-uLxI92Jq_ROkEge!Z}QsRqo1UIxJSCzPtwyJ@XEXWBt161^z>U|4`sR6!;GX{zHMUkpeB3Cqt&ZiFw5pWzNo>bxrRxNxrbjHfH|K z`hK7M&%3-SW_(wFv_4>ZI3>n7qfG8i{+xVgi19h~=1^yyF->*GEOYGyg-&>iJ)@>{ipDJt&Dj%Th@?;oqBrf8{S zv+_^#@(+yEwO&Xo6;k5#pvytu4B*xJ4$h?aDje!OZ+bbS;dqf58YyhOaPfG{Q05Y_ z1iRL9XOyjcIO_vofS>=@5$pQYiUCRCL76j)(k?%iN=s+7RGVf)UH_W@ikUS-P2GYz zGpKNZQ|td3X)|0dFW&dAg@%8e9Q=bT5qdjEeV ztj%}BC$sr3{zo_8$^Y=?JNO^kd^`W`%?tT&wHmlQZ7#jE;;q`-#-WbQ>1^PkoCkiKu1_naf;zduMDQ#JMP^8JEOowoL;6E&?f zgo>?|LdDhy|3j@|S1T`jT+6*dxg`m^wZin5?=v1s_Y};oq5c@HKU(XL()tx%eeLrF z&rtuuCd-(ck9MZn(3)4#!iaOsCWGwH6gnbB7B&|6!>?3ZayAs0+5SUkoXLakKXAt7 zwL9hJB+6C_6#C)&-nCNx^lKyimo0Q=8Gj=&Md8}_F4tZzliYc`;9I>}LVgd;J4^Fk zl)Tecl2>a+r}ZsTgU-!07H!OOrscbB%#xBPoG09GpVAfghc60VAsjco>8n`6BLzpX zGK%5!48`ir!P@@wlJ5V3{4c+pIv-PKTEuP*Ny;H>Q>P z@2WpY+Nm?JKFgqC93J|v`cFO z75XQ-Jk{==S{t$F`=q7QhauM%64%{Sk~=Xiagta5E!DK=cUL*zF~0Rdv(jlx zt#H22=-sya14^qkta;l@c}pp!`geXEC0>#5mpm+x&c6lZ{{Z=Z!L5?- ztJkv1ao=_N-c8eW)H6qG&0`eOiPV&S2)3%Pm#PIie}L1rt1XYerlj#bvrcN%zYG@& z=YMZ~Px|FIlb~dYb4V)HGJ_~>FH%Ie3Q6t$TFQdL5v#yBN2PX3UDJDJNcG5=IUD=> znvvJGop-!ODYOU`HOH)3!wA!6Op8gPmiPISx%xILkKCB&i+i=EO0Aaj zwMHr#&^Nb6DK)lvH6~Ca>D3sbHMEU;ccOd_0m(%Gx>FIoZ zwmhDU(q1#%nc(b9)p!&-9Styy1U_dy`WZ9k_QJ$THe;c4rs)yv2DOB01Np43^u_u( z$58SaJ_C*4IoMPL#{>sDqfH;D)Z|iTZP<$CJHb-Jvq#vD8T7+nZ8e)Uwkc&4winoD zP}BRVRO(Dm4zYG%mNbF9HfL_%t?SE7u~VLUbq^eBQ%#Y1u|AExqh>}xIFtH?V5_4? zh3O+$FMOKR->5u9jXCdm;l#qnqPEq`sW5}WHoU7a0iHdgATx7=;#uz^Dz3 z`b%x(N$RiC`gf-5t{7_q3F@Mq6($Un!o5Lg|6J+^3!PH+TZci9$xfB=6&GO(yJ;I? zXH+Vc*DmE28+yXn2Zeh$hZtX^pKTT!@T^Vk(6XbYR9;>O-_AQr`4%v1L}C{n2KFs}_WX4`(1?IJct*9-kcn2HqP^@jl#=w@vrE~9U{Ny?v_&StYc%} z*e&@t%L0Q~#7h2I^yb_x=zl)B>tiN?1vCvCP4dN<)l$uSUCYVlP`vW)rtkVX z6LQ8Nr6(uXMtuNk*9 z6{90FxJAB*TQe4 z`*1Y5ED>(b#}6qtgMb=~hLg(^AupvLZ}2`6O$z<-8t8W&l)AqJC(~^TAT`g1r4PSh}Kr zDp$0Jxojact>?2i983O^naJzZyoT9tP3zPZgU$A$rE_A*cyKf&=J1)tXKFN-j43V$ z>fCjWQy+Lvd|Cgl#iliauP%PPC4Rh98(2;Rq8GEdPn-gzwx0RNbv&Ohcu4z%kB;6= z!7}F1c9W@N24v2e%ln6>d}H5MmNz5wlOHmt{prSTt*dIpcO1zl*wjF|sK{$I*ih0m zWb~=kYS@Q9wVKGJR?(!r>eD$h)4kjEuSl$Q32osqrc%2S;Ftoh7mUo@GT7~jmEyDM zYsJSG1)gHCEQ8C>z+fHHQNTddTmSd^CUH9Z*$htA8Jtc8gH?>$U!V=zmtP&t(8QXr zHcxppmG?SkvtsjRsm&{LuEplTpGbl52qP%}eU@=ii#TYOiXm_0Zr1XF5@Z{$>)N0?9r5(nKi4{Lh^QqA}}qKF^F?YVB-AewQ!@6Ca^> zu)>)KF2%8omk_nZj(@g<`N!h^9Xu_kHg6-(e4=fy@eJ_1lc%5O44yv9Ek*xQietU$Q;iK0%pzsd zJ8UUF5Tj@;Qr5Zz%HQAE!^Xy@=R{EET=e-+(;x0`QoS_jWnFR;k+}dGV5weK(6522 z0rQ31$qzd;GP!ME8i{^SN`BatMxOm@6nM&?vdH{anVT>#0w+9r(SmH8_JWIQvpj-8-1?Ld-AJDe?(#CrJJd15{CzRwfu(d|s0SdX0WSL)3X`{~W0`|Zt`E_#z~CBteZ)$8bfp39BA zR+k$&pYp^?=KhAK^z)BA>1Xb6p7b+t4o~{&pZQh#x$Wis^s{f*{oLJMWb(}Rz4sHW zz;frgifuhl@uA9h);K=^>$aT-GDb{9!!$x$bFNs&ZMSEQWj#8NWa&{1ixD${V8r>S zM)iGr)uiLQ#=3hq>_cWOtC`+0mVJ^nmMKl$QPmxJI*+TNtZ}ucj;r%ktHb!P^D^UV z2>Lt|nGiBFLLqltosbz z@^QxDUDF|Vbp{9I3xr?u>ZGh6oH%&Y%boH?y$*YpU;dRvAw^S11RGw$f}Z%XKC z1NK3O_x7NJ|0~cT+j@pN%f-CIyQYJ#op#VcEZ4+r>-hyu{feXPyhryz4}Ug2=H0gs zdVD3GocdVhYXXgUAN;9#>#`3G>=%ZMg3*BKTug|=;n zWm(d%%Aa7@v@xX_ycp%?Z9GO45wA;Eo3&&gJ zUFKq%SHFFF7S8{s{?Gkc*SPu{vgtW@!QOGr!r?3OcJ2pV<6_R(1DBWgj*HTV8MaHG zZO1Ea?#T6Tj-J(@ccBM(5&mA_l(9|Ko4{!=UPK4~w$I9<)xXQHs;+6|3-3XrN&BD? zGhL5HxBnYBb+Q%J&v!v1Y=v2s!3kSY{Wv&vVJn#5gizGHuMyvx|1IX|NBd-07r zaNDxGMB=(#$&(0N?qcef5J4`{+8>fi z?Yyl#shxKgPip5^@}zbio`A+H`|u<}rtv+X1V#a+6s$@GO7|k7m_T7|WP(7+xq~NA z0;lt&?Z7g%BeH%Yaq~{=B3-SCeDb%1)jCjCIy=@xzPSGI^{s=PGEeCJ$%F7q*FQe_ zG3^if2HR(68||N&Y5!E(Kj52de-675X@5wjeb#?k2Y-X@|61Dr_?>k79}EA7e1q-Z zt?g&{|FQ7j-ru^@*C&5-PSf@?{Qp?^U-1pLKT6xr@c(1s|AcRj{wHsd_CLz-|0Ci5 zM6>9d(*KixqwQz-|B>*2@;BK325mpX|Br64yc#+PQl!*ca_JnuBIN!E|jyB<#bcyE51mMQnVo(IHpIPrhzi~1busg6n- zH<~q0qnx@<^WR?sHurx?Y;OLN*zCuLWhHvKuA>#1FT~+bJZx{cKojv`MWZqv?1`h) zgVi|v9&2cLEHfmMRKL^NA8nLN>{0Qs33rY)o;a)vY{V};H%$%YR3GJ#uA;fvxT|Q2 zN!!j-z2`BC(SGP7QE}a)R@51v6W;FvAEA!;ry1&;&@9wJl2@?@TI1rf7eRK8Xbg0t zhfk^ZEZiTZfHpfL)86bkOQ!MTXTQHU|2bQxeG|pspZ#*0Zor)3OiRo3VgIg7?;V>L z_J@u6RIyq6jbJl>zu0`H*qru_U^8jI*sM})WCTfDpZ_yXMPJ=7HWvvt(O>T$8&{gQ z%iPDO@Aca+|1ui4FN+j?xNDvBy$wzoor~TpI_ItoW?Li=tD)Z0)4AQ9Ci;Z&jxFhzDjZ32~YrN;5{#V%T)&D*2 z2n7qyfObE3hk5AJ_7L{Z|MotLe4J-nJL)Ghs~mvcQ&&_)ID)< z3}*{zcd+98TX}!KM*hDyaqs7Qj^X?}WsakFdcNm3_n#G*wphp)h$!nMW zZWr9kDX&SULC#QQ&R>{d;cI6mW6W0Q(V8iG-Xgpp%z2!doao%X*d!ljKWh>At|Gcu z!b!s$O&O;;hIX9l;AF-%^dfz>W1HX$Rwqz8Ct=&1B~FB*Q-KkVhD_k5@@|~S;|v+6 zLlQPA}dIkoJVqI`#9re6D>5sM1w8#GIXTB^Dw8W;|+4Q`7pZOy# zk8tN)?{H~DK*}>)Dqx3x!1PYUZ73V;wj!@Rm6#CM9k@2*td|>-+-M|}pP<&BsbOEJ zS9M5X_47)HrF3{gxX&J?EmHHVLRKGVy77g1D#oRpkOHPNTjHyxC;bQeD$DkBhS0~^ zHNW;SbB+awM3sbE?2@Nnb1gfcxF~ld@C?e`05-EqX&*n{L~RRX)}YOR@B2i3hsifwC%vD4*X>fI+r=P_G7sj z3uaNyW97oRXguFYFQH4CCcvvrz3TQdx)*uM>ZJ$QnVEWBdR_PkTo{qCz&F6z7-G(; zRh|1P)TftK+P|UFKjw;!oYTAqynXa2U+LGDdRzLzDZCG%jM6=QPLP`QE%ylaasn?A z3PU^OmVQ)+!}--#ovi<@QyNtx#qaP*u3RfxtMF^szPy@F`l$y z2)bNnCUjW5YT&39I+qjIh0y=tSA6ja%|-O6Cpe)G;8fPKp_LxxwJr9?C&3@=63{Fx zi)b+R;EN?C(j!*G8Aybtt1{@!7i)?Ytm1wIPCuO?(hnUn_q=@jMd%>1yr$Z=$2JC% z8hK7#CVTGvSBnnP{}-ax>X}h1Ua?}(BspjH0z3NE*1J^jpVBoI-g`HzhxNYCxH&{L z`~{wJS4>aA?c1CWPo@5Tq5OY$x}2?}EjeR{{>LqzxpI!u7h?YX*GNsW*{K+c<|LcL zR&ryaMq*AL9{mIl<%FCmn84>q8H3UsdG9BBa;%V1>^Gb!c^!DaskWOrW1IXv@2|t% zHN#kS>=ZoZ&l>F}{Epx9& z9J%!*;=Os&zVCHT#Qdh(YB1}Em|;a_QCr^%Bxc6xIXn3tI1S>t30!{To|SO>=X)qk zXAkzeEZ7GkZOefExbqXyJ}|VkR=pYQQc~K~ar#Z9*>3dFXHMXuKMwgh9>s<7Lh*9a zk8-V>Z+H{RckSo&kdtUD4zNT5l9W*XB%6U2jMhN8n&c{hm{96*_Ncc~tqx_Yi!^X% zkk$pR8SYeY9?niC#hwI9;p7%R8zs`h$=kl6xGGKQgnQq`yTCZrwX5WEr-j(oDx?O<*#d8{WLW(+vuH(s8C^nC6AWaAv%Vqe z;}$#=R{XGPoPmv0h7I2sZ7BnN@MM$pug1AJmFj0jhKA*)h!La|AQ9a55VBngg)Pop zTh!1|z~v@Z->)Sk%?D-|$q<`Kkx{{qwU-pe9RA}aU?cKfZbye(70|pW+K_w?dT(-N z!_4U<8?g@ANDNWm>vFNOb7OI%HD;y`Ll3rbp8X}De54i*4!in22 zg+=;QV?R^4XJBzIWaPZOwL&Z!a)A%9hyIpvV}y<7euz~4Uif+B6;gkb-d=L#&-MKx zNk2NN@8`(>ccy4bjl^#{RdYj{dy>Atq3_3ONn1-+Y043rJ3-$M*Z1G)`!p@7_U6bd z<$Z@r*3l#MUC&p~+Mw@$lv=Z1)c4=%`|JANr0<*b{TH4c)$`*r>cPcE&3Tdj%U+H( zQLF5yi5R1x#=dvYT4b+&5Q{f65?UQ1e-yFtT)72fdIR@mad$wsZSw6~=P{3(NV$Pf z+3(EiwvDp78nC0yc`Efu=G)6qU3`mCjL8p*B)fj}5$Zd?^K0#SZ^7uDXZ2lu;&-^i zDwTSBfutM}*WAanSKOsVNk>bL)AyxX@=C9t>MzmHDDBG)0LvwJ$BDcZVo6u>4fmz(~K z$~mUD%yFynt(~J&TS{i3N#|k}Op7IX*rR*FVpgI6&6X36d&2e!Y@qsEP%tA~v+|_H8P_BzX%=Z)X*&3Wvs^l&;R~Jn!NTPbP|^@Yk{C&R z;lH+gnw(GXuzBEZiL{6YCHQK}d;eX^C6G^3&dn$pf351Do|df<9Q+5#f8T4sGd0VB zA&{68;6;s-b2_G1qu&y*(}#X^6Yk0VbZFKy@OA)F?h7wUglHqsWZ^qLt^WQE+>wwk zRF}4q5dMokR5?PQx8+6+-%SNM`I@#^)B4K)H{V6hGUxHDWk>Q-Z4@c3B|%nXRt7)vM;bh zD*a=Ct@<9UTo^Vzq#QamQ_3Fov6PL-jUk=NYVMnwD?6zV5_#Y`8eEn~qDk2?d5o)z zQf5rPt{eq4o>lLjhNknS)G7FSXG6I#P^=7;(az|; za>L%5Js_R8;_0Lrcze1&Fb+{!n&QD2%o$u@xYAmBaUu?;u5NN4T});x?rlpwoLM>C zP}nT}5Dcez{4O#h()`x`ovZyj$hk0WgM}_`bOZXh_Y~2D>a#oVW`2eDFq2<*VBRfs z0>`z?NF|PYv{;NIpC&iJyp+AHiLeEJz}bd`wP(TmE%dI|(#+&36VQ2X7Hom)!S`Uh zPzQR@pb)VH#Wv3wmGhyz1J9iKZRVTIM3}*<$7`O=YY!H=oECct+#A=Inj5OYJ-B+H ztcEo@zeu%nhYjoT+@e`CaE2Mm6QF$XP7So3|d z&L1=EHteo67~dc6?ulrge+0xez19d!SSSe5;Gms=q2#XAW!)fnI6wn*~~8M9)h zob=K3c?|uzo%js>j1)AOMxSLCpKjBlq%Z^c7XIyo;zD%$GTw6at*_9+9Vt~_S`!77 z4jk2L8*ZBtdXmo_p#DSwG-xPYUHmlBj28zyZRuS)3*4E#tr{^D{5MHII%+oh8gi>E zV*aSzn4b*=4Sj2mQaN6!UY$z4v_~nQSIX*C>S@0FfcXUe^PlP480lMTX{WwD*r{*+ z;33+(=_ZHgBwz&GUNY~=50)kRNss#%hOK-11N&wV6PMOy(7Z4*H6~|b4&-x#ViZO| z8&n@JbvYj?xTk-kk=aC@QV%$1?Hx{n`KIbxXGm3PNR6E#9oj(~k1nPYUF62FQX`&6 zSz@U4CODCMF;bPGskf@^^UZYT1%1nODrJ9xuM38Bh3sOq)!-j}7(}VlJM2lww z2VcZ(G4*ywiwdiw)hjZsGMen!s(M9ki#4Ldw0tI%kcio}9rs=xx!W73mSO9B_xhcR zDZa2>FleJG7`&`#u~}Bkt+d5xbG^CLnL3$BZ^4jCyP&KoPU#b_9s{z${J{*9G!vB-?I#!PrDSSfclfJ3S>9QQ@+xS!c@gnVX{ z#!Onx%p6-QZAMmuV}0s(k%ou*H_pg{aXT=mFL3q><8Bv*)^AI#O#2ZYXKvnbW=Qan z(L(Oayq7*{^o7|{PtmqSd0Z%1SUj6p^Z-})Bt?DUdb3dOrZGPJt^Vv5sZD(t>_^G+ z)W>r767Vj@0< z6eS{!AMW`cbsfH@>?|w3hLPg_0k>Kea_gFm6nif#;~>1gkv8Y>nJzepPqb@5a6sDj z0FM!Smv$H-oVr&T3B8W5H-n)w>PBlu7JiD*aTX-?3`nn!$W zwe^(9U#KxR&fJ=x8ah+v{?wVMbuQ65cM>CuIkN&m51vZj#P11=MqlevJ}db=6t-Ib z&T}^q0!<-K1Ev(lnnvH|wF>8=#rd1pav$ni8G+e(4z*eeZ0^8x3Vc6?AF?*3USzw$ zC!YbFna(udWQ9^J5DIG&(Whi~T0=Jjnu{)56T{93yOV4TFx2RRpiVwoC zs8GM+Lm7|Vd7H?uCpKD__AJ+MLH8ma* zS>t)5^mEqV1%rE^B38A$x?yQl;Evy*IdV6tZ?V#A{8K{tMGxZ3-A~V@_NYYNI-S+U z-T&Be?#I?SZ)#wpZ=EHa-|0pro{;haxnJYroOM>hT4$-{D?k@yHLhCjZv$)mCGi&B zwUE5F4MS8zuzXJicn?x?Huiv107gzP`0gcE1-1*+n%A0n8-}ct)qpzfi~UqUq#KzG zMr>w1(DYtnHI$EH72rU^S_(~g$HMbo1^!~i>79#-mU8pUv$2wX?YM$DRe9<@=PvZ7 zKDCUVi`TLsYOTYzgJFGYwKv!D-J7qi7AwX#>ic+a{CSud&vIxpRr6{kZ_F&6t>qF^ zUJk?u$kq7?G9_~9yZ0<9)$M%8y^rb>?Q?Bv0TkRtc}AktZl3e9^-8r#v?@!Z8h#~k zLYsxJ4NvS%qZ&w-kWUrlS%+-m9JqMqDV z9c#>UH7eBfWi@KoDV;T{L3P`DI;~Obf&KV?A#iJFYBl)_v(r4N^FTZoNGf|PhF{ZB5N=bfw;XX1{JMWa^iuN^8KdB{P;)I z8JX^XHIYuJ{isISZc0NEsG2@LQ|@`GrD=<`>>0s}xVgKCG2nc1WX2-WKnbF4%_=F! zE;gJ0M4KbI_xz8hp|F5EoeCHGR#^#qm8)gj7%@0kW2T~QL?-+bc;@mw>CU@W!oyX; z#=t7e^q)sU#QGT@XXO{4)!9*Rp8V^lP>s;Ii)IaZ5S z1%(O+{@C*k3pWf|RRqp`C^ZdgNfg7^sQQ0ktkF1C_#l^%$9O}n>phFGMS7HtMPtq? zYfns&thz`zehK>&)<*2MzpB;x^fo3?>;@dvgyfNtLd}gd`BlFw-N}h0bWEvO6;W5?l`qb%J zxnVHXHPD?8WH4+?Jx)E%5qkms@s-Tt&OP6=*FyhDU3{$Y0QjtX#JNd+Rgq9{>?V)q zxk~eT--VPE+N!LMec7Y!9O0eNGtIAry^_&QAQU};>|s?sIK7<*a@R3yJpmYUhYWEN zW5)f8Js|7Bw2-Gn4~c(me%`C!!ut!}`{(5U5+2+yI-+qKdvlYU=ilH;Z2O-CD*1J4 zWpoT1ySUM;TmVI6tinQhd6nA3TfICi7^`xguOYOM`gcv{7W8##2^@EpYa3&D8!Kfr z!P|(bw}Cg5@CO{H0VfgZ}ffcC%swI zC%N9q=eeZ5%;!};e+gS#n89wrW7%>b-w*U)nmLas)~x3MvH#-yE$=1lE${8aOHrR} z`(vGL>Ycw92z`2!Zh)QfPVW4<>#;~~(RJ?ZHtnU{`GBNaiAI0gdbDHvcD z#xV;$Y0MQ#WG1#Do7)Y?2zFx{gxg;J<6genkA`P7zfSB2b!F`YDau_ZsR!bnw#Or( z&;BgbZBV@)Gs%N;MSlFWKZ4QWV(Vmg1apfzjm3@@x~tzh zTIMr_3hzMGfPBG&`)hp-!y^SXGUA=I;&9!u@(}y@0^FA_vjE}L^cBa~X|$tP4fcK= zQeufExF<(iRoo7h|M@~EnK7Lpx+g8&y-m}P1!r^OMz~5WombXlWYiHDcmKmp>HRMB zohq{g*V~6Svc49>qrJ@xf;RLF+O(yv05>DJdALp&95eV?r^b?N(>aNn#YucB&lZ4} z(xLD=psdf!bB@P@;GC_{^X}zQyErLpDa4I+1xos;a};{f$caZZ-*uSmmyuDD{d~!|dLE)5l_Fy^&|q%*7idXx=@&WY3EWZN;cbkRIlNZeIno<* z#81%l!;aAO>D)9e623;t9`-HG6}-lMq5OC)KU8j}PM1IYs7!geX`NV=FQRRVe5i#V zBbqpdZ_6b8VBx!_k8bzM57qQhne@$4J~)wEoDVWac1aXZzyjt3N4q!SKi98WR&F-8 zEHkq2!?%IN0*d9AGI$@YwKgv{#CKNdJSMS0o zahM6ZJ}OZxvEH?*&6K&FzTHq+mwddkj{D9IPm0a0;;!{q6i*$k7TuxHZwEi~tsCTh z@{7o+X&K{sjI9+N9;3TXD%NPjki|(_de*s2rSDDGe_f(?;#FR!eZ9EREK$#~;&fK< z25Xwmm@2LkPJqdgK==-r_!>`EO-9q%zx7M`|Jf7z|1_u&+%RN`%q4SaOYF^$7MmsV zl%)cprIemWK9G8Z}59IUqfP{AC!TU(L%_wkgAtKX`YXwmN^XViAu z_jOHwg|S{rPHNjXrWxq2$Mc{&|ch8=jh&!4fcWerB=m;ehq<0yrGxwkpv2y z9Vu(839BK%T5G99F5%z-Kt6=uP4F%H18-P5VpgNz;Tk0RU*6sF|1Gxe&T-OSqc0c) z=idPxSx7Z0^fq>BxR7NPw-k9_n}HfjL)|I%U=4L%WACEBnORxtAIdvdb5$!w{!lc@ zlu*Jn6RnHOo`8Cty$#|y!t;aJH%H`R5wXo4;PSje`AFn_(M3Ylk#ohHV(Up;>SMwD zj+gPtdPMmp2G?g!U4XB`+9RV8bsCJytzV)hTlqw4CYJ0Tr~W59zBi{jtS&N zYhCXq5w|3+#hNrFpJ`!&qM9>-eSYys%)M135sx!YNj^O(Z=r{-9MX!+l197xGg@ww z5kO_5P_4=b;N`|Aqpcz8OMLQr9qT?!mSuMl)SCy zsedv4RT;mACcp0R8GAgJ2|Tn=_M2pGddK@H*)0y(GwP=~)$b7MpG~v@HL!9xxbJrlBaXqp?OlSyPPPR%cpY1;kUdMv1>H1hupL&x6@81MR&=J ztck{fgsn*aNdJfFN4~zDLrc$_zfoH2b|0|VUsFPFK4ZUaoB3ADFrnq1eJY$npBm}Y z!X|X8q0f3-wf-i-DE~7cWiV2G?W36fK8=&6_0(P#vy# zb0tV*ArY#vS>du{U~bHaEm=IQRVn%wJGiiwK*J;8w=3qlF%ffK*p7`u<_gn1xLdSJ zJ=&26tJeNZC{3^Lr_^yyaMC1phcY*&wNUa|c)3wqe2(0^soA-m;lLlw*!Fj^H+#W- zRIV-cM}6Owh14g^+-&vwr60FQ-++2B+;V$%n-lDYXJ1p2#tLvENn?n+8^_* z-=*x6(v@~kO7G5Sl|;|i@Og+GKMPnpo1c8hS;B6eph*>#31ziMnDp zA~CE9crv>YuW_WL;wKHnW?0P5EPnGyVnt^a7m<4;zMsli`NT;767$O z>Pt%_|66v`6_-(ZNU#tn`IUCeS82uEQKP|Gh;=d$|kFN5;?B-Y}9?J zhoslgH<*?UcYY^)k~W65Vh5dci^DcX)-Y>qOFhdkE3~D=E@z$o$m~PGOipdZ3K3~% z6j0p<0;4H-Bi(ng?u&j0obgyKR>Tr^e_Cf}7<&p6ao)Xsfs7RrlTWWqA*X8jA8(~D z`(Z~B1q8#2YoO~g;7kYSa9RR}-@IZ_irv65BQbsu3h>TK#YTUucf5DY5u_va$(Xy( zP$YZTPn9yYDY26(>#3h8wllM^txY|u;~e{~Q$JUEaaYYc;g*q@u=X2Fd8#f~l!2}2 z`Ez?^M8-b|n%a^4N<>9O-)XPUpIoXo>o(ga3(!s3Z-Es{K7cYJS|V|JmQ=TFj4M zQj4j-hbcYHy-xlQ5j#?!YGo(fyFwY{2me|)$2S=#1}bOL>#@D*U6ZENtvIy34huSr z8pmgiEVZeBBIzM)ueaMx+nSk}55)s32DR5kn4yEY_y`l(-vce6e`cm$j?dJPBPmGE zb5ghb4D3fccI_Ez97Ik&IdRRIt>Ydi1_U;+kUiyFZEA$@4f&Z$Uxd@dT13w7Bw~-c zu=^_Qw}=L{_+*c}hm%H(RBCk}tI%*~#M9?OtkB5frHnhh7Z=1ChuKXi^RffnahNkQ z(N>_#Z>ixGZKIvffvOP>p2zT;e}}s1O>IzK{XXJSSbn^~ijJI|v(&HB{i7=e6GuU> z!<=iY4BNTjTf@mR(}+7y`V^7fh;6I=9rj|xjt5BP&Rl!{Cvo{bNGmVKJdSWv4^`M?KoBCpYXKxGYphzu~oKFFO1|X-BxNyVfL@ zu#C?Wcs#4pE%VfP$FR#-#oM#h^E{3}N*P&+5RSX8R%^@!UgMXSyBK(sZWI3Affk`% zY1u7J*f!t3;QRDZ30B_+4fLsn#oyJ_c=F9BHc(_l`=fk7iz|foLY3jINEtH>(;eI@ z($;WjJNV$sf%BO3ny}R8dm%VhA%(J+6g$;&gy5LACBS>pgU4@Vc39V;va*-YI35#- z((cgzk^g}QprUBdL_W(XBf6uM9QtAwB~^EZHf8Bfnv$wJL!WSUhq}{vTL*SZ=eSDJ z(B-ZUlPkaGh9{M^E*|x;EonI-4mzqUM<4}iueLwx*(;H5=pc3FR|9uBF1P4EE9Ndl zC9k)ylF}y#eR%c*6RYLXsKBQ8Ek2=^=)5;`c{Dw98TzC(w9{@0?2b2n!3i(^rTge5 z{x#)vS_siXqqM+t7@wOm{2R=-QGA;&R37pZdRYjMC(BL~nT?Ab#qaZxu68lP4l5~5 zt)*JyM&1hXH%2q&`tZqG*h!g^y&YNuyGT5f-6QOKsW(OPJJbB4J&675R;NxT_miff=!gc1^$9Zj28YY!fa3`nj)x|U%_BoZ*qjdEcD$Ew#~ z8AR$+k75O_fraE($UIESDLxD3jgOA&JNxOlvY79cUV4R=x*A)22Psqeu)jVnA3Jt7 z`s(^Z2UZwTKUBTbbAF8`WJK>MeGi`-_4hR&W}Y~&4zH*1TJ!cVNx4`zLldA~rP)Ixdf*N}+v=u^In6l;qIq_oT%>FZdG1v*YBSAn}FU|I8aZGq6_EJe~X>XRd!3bzXO7 zL1{0QXcJ=yT=(7nN@GuctISTmt1y@0(?fMehxgnVgzqd$%3OaUWj@j}4es81%4|;0 z0mvW2XF6#+bW~xVNGi4Uf<$;LcD&{CElsXvW{j-XF;U0Vp~ITuU{G6W$HM}7=s?~g z`qtm2J>M&{$5nSs6}vw1XCh}Z{@;F5A~qpviqr=WS&X?l(sLSsVlpz1#{0%|5R6iD zXwe+C0lMenKkK<&N&oO{{ohkcOZ(N@v3+jZZEQHc;lb)S9riJ6=LVaH+u-5&Zj)lh{KSuXrZ}oaUL_n zS|c$*bJW>U8=Lb;YL^#bJ;qs*+SN4Q_!hp*-Wt4L)(aj%?+#}b(l6^D_?qZnaMZxE zQg|ynKSlbB%9y_npv{XTYq1>la;Akf+S*hi5~>lJsofs*V4|jm+IZPj$V9XNDn~|e z_e9tVi#3XbEIVD+S|Pu834~v}{oX8;>My&OTbqSak(wI(Mu9^O^;KC33JI+TU+AUe zik~2S*nBveE)a+b zHzPOIw1^kw>XVi^T`>`gjCR-Nx_u&?Sg5ylyr=UeP9lxtM4V{i^D5&KAu|)s(E8uf z`WGn2$~0vH+FmGeX1h=$PTyZK{+72&#Jia149=Hv<1jA*Bl8fEDff&>o2QxP$jcOt zrI4osxjyxZ^jY!pYo1^87^lhmy+ne@_v1gUl-%1s!+&3?B?fAVr@RRB3-~CTWi3~F zE6{FxUrGf|y3O02gVc7$sdJ4#3ZJ&m`(M;x4T$}9JG!nRoE6%O{Y(t?^hD<`;Mq^; z&S$b{Jr+}b6Ehcm5zDkfARi#N+Q^7DMslEKQhZR-rwJs_ZZt4k5T8N4izp}B`LIi? zAs?&YFFcj|N_t4H?!C6r3z0C9D1qPI&3STL)OvE4^GvRBoK%bGB(XjnsaX49E}ymx z9{w3S9y%7xL*Q2=v0dcXwrKXWVV$)3nRW^A*Z1NdV;i9i_iGcntay4jNxP_K8;;6jMdnB|8!(< zcFS;0%{Rjtnh5BvpJG79?(t_GG;FH&a9E`?$j3Uk?2?npOCW6rz(sp*_L#aINYqcuTB z598`PZBLBgpYY40Yegmo^>oW}mz?h9j7BZ>GRNOasX{3+aEDtW+F-fRe<2>h_^W|b z=}gPd)z*pP5dXb1!I=~0tzb#6?nG?A7CXl;aQhyEJNdGL&AdWR><7&3glW#lZrsAm za;C{)^b&R1|1D}MeRj(o7cu6E1y63V`d=dbt})zQSaJ$_#u*zgvm*WIb;rtCp^P5`xWiD! zc_h`1@RvGmyWesxg_$lEqNHDSLyg2)j~0pP`}n_aA(+qY!$Q#Rr+e`05aCzft6QGP z=2s$WvTgUrLKD8+oQiov!iEj*bRIP;mo!HJYLmG>BuwRew~UNpB`>+-iIz6tGswk9zAxAYzRV|( z$Gi1=lKk?l{13^uHUE0e-$cIc<5;!GQmU@fPCD#4 zaqxYHprheRi|<49dtcExI5Cu)#cX`N_7&sU9m;pTW2|#dD!Zf;Ji=l$H}2SKbK1$y z=X($4L;lLJ-5pl+iq_axCN7s5Psctfo&cI6zI?yp2zXsAtB(u5OWKVahBOS~`B1e% z$7{`{C!6M8l(>jzKF>K$AK8Cwx>GL5vs;OjI!3Ulny=&R(K6l=Su0X+P{vz3>}tvh zx;C61Z;OpP-kyM_%x-bN$?d{2-p-a7%!)a1?<$}VLT_`OiXq~A*O~*J0(xC*e!Mt0 z#u{y`yT+7nX11a0v^wjkH-|&n%uIDP9Oq&gq|hQ*-p|UX z!~~8`eFTpxkOyYZu_CdW{IXA5iW@F8e>(X^W)f?t2ARbJs$Zhbb>JSvA7p!i?u*0#iUE@dgecV&SiKZH6`GQw8 zRAWW$nqJaJ>dSiOOr9D)9PlsRhDdZtO7ebcqp2wZPXCBi(1&qXc0`EB$M0@%A79$z zoA)I>zJ9cI6i_QzpY6|+wNK92tn=F1j_vyk@;4m$8?M|Ppz>GS-WEKVQ?NgT@*%i0 z2|9A3Qu*^^m(uM|@4W;&nP2fra4HbLJEO0o^*#(FVW8^jGq3oF+(B4<&D{w(GcutuDVrMx;9Q!{6(C*LPB%l~Ix&3LX>iitLt&>PrnXuFpCQ{cwG$ z!jdBFU_JMdi)XZ2Q}GB~-(c>%`L54e19XYF=SD8B5pIqUzjd^(PY#fML$&5`@XVJI znv3lA|7T?2RlC%CVeObynH%SdPjrhdvfclG65(5ddKZQ43-;Z@nK$};84~XA?6K<`;zHVr}P@)x?2p66M>)q^YlUag`H}~qr`Mwr<&oU>Wo#L;rAv*S~ zTB*;Of6Ht@W@+Pye!4n)1oz)`%+iXCJ8D!ynF#ySxpZmg^Z zOKcQ9@6P_X3Lv<<&W5xMi$f9J0aebPICuk<7av6uz7!u@ zoB#KGRD7x>4yn2Y_285IS4uJqD0e+k_uQ|>E9O z0)NyTx(I*M=9H~OStqn`3l_WkZDU6Mmr(eC9q@v9Q!D^|u7P%Pmt;IfN&`2SwpIz9 z7V7`B;Ib1#(eHQ zF&2IbtC_W_9i&ecoGL06Cp0GYm}fWLIJN6(YmAz*_o_!Si#yPe_z|y2oqj)H-1d+7 zL$!5-oF|gLj^`=y*_m>J#XGrQLG8KDth|?j&`a#vXE#D|bBN3!7!P<2gzdWgaICI} z`_1!T@#b*)i+VtjmN&941qDJb0 z!wJsCq`Rvmy|mU9QsUDYTC0v)ld1J^+J8YOU*%Q!;; z4GOoxZ~ur{340N(R9lPkiOhvPYW&ip#t!EquwKPnzs_C7v1IL0D60{7OV)2D3NJ=n zQK}JB>$jwAR2)}HE7o(e53%&Q(ls(uhXzNms>|uByq77*ES*O*#g@r3zyai`%M}9v*{Gy7;>KdP>)Oq!!j;!P=#6l_O z;x4OHg^GI-yQkec=cnt4ERGQWz^x^*Z8JjYW}W2K^N%<FL>g_YePE zzxOEp1$1Utlu$DGXz9w*WkPRP*0kJQ=q~4cR0f6a+kWa&koc{C_(>7l4kJSvz3-dw z+7}#@R(=1*o6>6db)`BJ=qvn_6#wwGUdjultn;y_D;AtCGm%7%a&@}KkW_-TbTN2L z5Lwo;oK?_LkC=lLk5U(p_CIFpv)HYX#VXZx+BHfr<#^?}!CG{FK5t?JPSB`9H=+dfz9FRL z-~mrgM3;_bMXHiYb5meiYaiDanM7aYRfXIEgUo3-qDT6R4=*ZV6YLtR}fsCUmeh3%yy zIOh~#&-wQga7FhR%N`fB4epg7l^0dbhg(5oq_5fbY}h9%{r6N`OFcX88|GRr-&BpB zEx^}4#mIj9lljjojM{QJtM@{U&O-s~rh6i>SwnOX^iG_f>M&GV9B_ z18n%bL;+0GJHVL#x6!Mid}byXyJYuPoUzTAzPqHSu7taM5c=<$Ta8B15<38yV>8oO zI>Ia}oe2KDqU4m6Ax~$KijGKpmlea>_PaL>SsLPbJ9usN@Y)Jq7xI0(_np~1`!0g1 z9p3jHe6QyFPVf6pzDN1K%lp2I?^S%??S0?P_wa@@X{WyZ2;z~x;wesfJDU=gjwL63 zTd!&geVrtI+4&jtoh+K@Qavi)+S(@yCxJRs^hdsvE8|h;@w!ax*U%>g(&z0GD;~O@ z-QQ)@XqL2=@z1uRdFltRu z+2T1f6GzOPhbmtz9apIt?cON9dNMGHxvxfhSUU@soy1z9 zjI<^iUY#%NhG?ZkGm+#P)EbEQu+Drh_?Ysk341kuB#=Vd^Cq!4z#0*auC7Ydte)zw zL-nf{Eg$-Qk)hzfnqr)Lyj-+bc9=@9cRZhHh~bsW`|G*#|Fy>x7LWr8TUO{LW#>vP z67z^XQc+T%fSL|u%7w|PTp`h{H--pppT6u64}ez>jB4K7pY*? z;B|%Tt@;Y|PUT+n%DuL)a;inr7d^>0;B$KaTP$9P+1t)`v6A8~j1URpQ_trrwat%t zW5`>i9LYy_F7|v0xf7{3Wj`iOM~z8g*(ye&(gqdsYBp8Jx>qJTE5u5H2Kl zTqd`~%l)mS5&={{u4f-oWriv~fkc7yG;hxwDND*B> zrqCS~H}TsnGH;-loC3SN^+WOZz)kmZ^mr27@EgqK8eIir>Pe)AbxC7-$O*Kw$(;+P zvKl*0dKwuJ)AJzG^1t5I-H!($ala;CP6x9QPwEb^`R-ysWLridy;0~HEiq0@^vz0_ zQ@UE)ei;tGE2V5*?d-oRtJF_5{S`_yXUdC(elhdy1HNT2v77kzOeXJfzO5AxFD*Ze z1n4LEPtwP;cyGsp^7Guy_jh^j;&~3wojkAQxr66LJh$__f#)`!_w(G!^H$C_ma>Kl=zHR-71(VT?CJJYD|b*zaQdzBLmbz^N>SM|$I zqvwA6B%xb@tiSo~@Eju$&&LeOXo12s(CsXEXeUo*{EA&n7zPME14&?1ZeVf4B zIkeL~!t6rYg2N|h&gsZ~R46&*aiOGjpHOnh!x>86OU+4=Hh8-;HN-s%HHQ6MVfJ&? z*kOe*A_L(rg>aQZSdf9R1PGjk2o+1a#1!RD8foupu{yTi*I|v+I+tbY+{LK8jXI2~ zT8C(**3mtr_66FGP{cpvq)eT=sq;2<`fHtNs24U{BA9MXxo^za>Mi$`D6W6V!I_$O zQu9~Y^BhL@FqD@)wrj9Panb8toTuk|CFi@#S%n*?8Zn)egLI`F&8Fn?NHn?1jrmHQ z_EX%w8Q6?T)N}Wo85?-aO(e1v(ve~`+Lsg?ge45qPh(%NCGx*mLUV7B+#>PYHf8iy z?Ead_mA0;xv1()z;7tT7Eb(V%3{N}D&C){Y(RqxvKjn0ZX!#iDfAA0R%_Ec8gF)<6 zpP4-VOr9w-QTX zE!Ix=;RqhO_b>lgt-(4W{0cZMXW(5SyJ?UQ_gA(ueE@$v7V^)| z)S0g^8nnG)+N)1(?6NK%EOlpQ>dw)+a&KR4YJ=8&w#&N2PpLa1Yn+lDacdHGS(WnV zKE6FvZMD`4-i)iyCV1C7SDMfPtF>O=UqBO(Y093<=PEd{OK`{wG0wbMTt?cBaw}G( zS>s*@;_(UeBC|kBJL6WT{HLmz1BQYYtA%7=7y5bqkH22_LDnXc}`+K z)C)?PQF6z2qNa6$35eZ5=dLm8@9(}nIFWBczalft-33LY4wDn|;}32j-fk!v29sTi zkH+W<4`ohcTsk8~^V0l9ztkJ;_9pbbkv`0h)YXZl3u4U!>q0n(mwa zQi;ohevupNWTv_Wd)7hW8g@=|1A*+BCVJq}cJSrt`n|Y)p)Q|zu0%CCH4~H3cn>b_ z+Tc<+b(!-hHuD1ZhPS0=Q;Lx)^^DlG1O6b=RXEa_s!@!qC2erArXAp=U8?1Xwo$I1 zmv#<4oq<*8&JLRbJ#{SS0hxtUy@7S3vFPIGlHweh+DaLsckaxWwhOW7*d^9zTz|Vj zRsoda4V+y2W!Aw&aSQHa|BT2#LBT=A2e2$)l#|-xv8xksX?Da&pj-xC>c=$0Oiz zICy}6P;O1kb$lKkMAd0g$DeMK!9hmEVz7HeQX{4AIdEi>IbV8xN=wzIo_AA)hUuIv z`$gSlTSr{;r1^bF-+&? z&l6nqoO@~Is2U@84+Z7-Be~lp?kjwYw-R@Rm;UMghb8=4m(RJHJv~I&pp5JJ$Q|Xb z=Ob}VMj~30G0(-}hiIt8MS5`JeM34mU*>UQW97Cnd>fJP!11o173`;{;oW%OVCEd< zDek$_G2AbwhEh+{x;=21%%5(9{!uH8_Hu4~nmG-KO2HhN{|RL!CfkwvNLTbr-M?4* z4NlV!4*JylX-mlrbz`dlL?zhqD82|yGtR_5jw9&AiTo_F7H zf;SUkiXY_NLwlH{{^J_T=2CVdE3~@S)6Egvd*HW8;{*?{vbHNLJfqxiz2D_ssoFzk zc($&tY%&4YW*?~QjDv{tNKGVx9NDwj_uM?4&y_HGkyE60AhRE6(CK*Rncf0lSDfgpmFH&gi zk3@?HKHZr@eg2a6`?s?m7?yEF?BYYf79M^mt?_B(qib}5zp%?>6FZ1<1wYl8mlod| zM}yeiAl`Zjqd4B1?+Tu`@SQU>9eaMZ&WAhRZLwR?TVf@ioaNo*Qr-7w>HQ|Tmo!_Z z^=Y+E_Ro@3w|i}2vXRI)6U2o zscJ2ETG6stO4c-?Wk-?i=?G0U9Vc;8#^c6nlUS+i}Wq{m*hn?GYoykO;XoDqJRb7*U;FG7*J8$T=5 zmi3q#S_fx33r-fnpRdO$KQ}1shpzx}0xkMo%6$o&>Yb@`@@-FOw4S%~*rBu-p~lo{ z>bI8GqGR+0cj#W9IX45rzt^dgXxDan9jGCDSp)+u{pKg@&MklK!>`B=#5Gr!70TSm zex*s3iC+_*(L=qhz8fVc_)gJof?I8+e^%+P`_cYB;4?o)i0E!Py*wcK{^n774th0W zUH(55x!PC}30nRor$q$I4}QhPU-Bh2l+UfM=BypdID-*kwfdtO?A!k+YY1uyVw1^J zW0$$ran-`CZ_4T8HtnAUvvw)X9CDTr{%{Y^RG)AC3@}G{(zGJc)z$>__0`rT%j2@o zN$f*tvRQ4zCD??2KWmN7FTc%|zT@mBMy*Zs+*{ZeE3kUiUX{>xIJVX-a#k1Tkhsap zVHMbB&NtUu)BRZq_WxF8jwi7zX8Lzo-BTOi)yGa4&g4FExlo{AaCY<4hV&=VPFqc6 zWl!6Z72K|DBT^^Q{1m>)JrbdnE%zM3Dzys9wVC=4G(2(PrRk(fXgxO=zBnyfjxW2i z3y0b5{;z+ys(S@b36`Ya*CsQ!jb|IG)0(ed_lSw@^Ha4#*bmG-Xg{xw6L<|z)W%}B zpPSyVWq#%CH&_Wt`rO)=h{dEnvd=KmwiN2N@-^scYxDA@$osOXy^>CDVpB|(CbpcD z)UB)vR$KQ7Rgk-?=yCq{td!aQb}b1kU6{!4+;AsvLJ1&k3u*C1B*al_GZs7dawL+c zrL6TjViMlV8dDE<1XNqkoxP8H3ENDy?E|g5R$fP`HmLvduYlFXscyv^+E5Pg61#v^ z;jT#XP(L$2mxKuvuqH)oME}o&?C^Hy2mMiq?1sV~hThUMf2FNmsafGWu@_|*0g%Ew zt0K>lLUcZLlr|Lk{PO3ZFmoBFT)S8tKXpoPj}jRU|R^BsS`r{E%5&##&8x1~iB*3utqR!t(U(Y4Wr zC+2Gz;(qG%2<7)sel*@n@9yr5T^F{6uSy%GJ_GT)VkZ6#)i`>73ptInC0FiBd;!h% zg>xda`(zdt2z&X0%*CJ;NM0$s;R(J?^hw%Mg!B<+dNn<*g7gi)bLBW-{f&>OYp06^ z+SD$Qm?>bHQ_GV`?+4^G0(JVaoLT~QN5iF+N#`=sIgbP_WK4-R{Mv6bOSeGI0kyT9 zxsf|FSHR(|tRgKTjrrO$X7Q56nqwG-0~?14)nDPN{cZb3^jcgtGTTJy!JQzWaW&3=Hh zZ;`VRe&`*S!pS$Y3)NQn28ms|{=&l3bhvFYV!ewyNM#ON*2`PZ{tmmDE9TtO$B~$m z%sL~U4KpK6)${$_D);n4IhVznoP<29ABaYzG*JChs5ec^y`*)xSpAabe{D8DH--iI|A?0Ql1uOUy*Mi-gzaQZSvO?` z+XOcdK&_sBIVl#CJz#2IF>h4;^wY8MX zT{<|AzwD-%!{3)L%irJn$MP4xM&WCL`Y<~t^$~7Tr--yhsTcSU`<(r(&)HYr$61k} z70TH!{DYj8+o*-J8>hbLbM{MZE0nWe;KqmZ{ika*xUAAi4~X9V_cc6{I|PKd2oINjtxOKXKqwGP5Swl-RuL}=P~(W{p4xR zl&_mAq7`KA;27gT_BpW^q&|LUQFJ@^jz{iiPTut$a{KyeS^Z$I;GJd>c&u@AmKS!L zHg?mkG0m(o#hPW-{xP!~es9dFO>1lg0Mncz}avIcR>g@2CjFt$@d)-Xq*3x??(E8-}UF) z+WA;4D~_V+MbCo&2({geRKCE;0&rped(o7MNpC)3hAyy;j@k@s+05oE<{qK0)Q^$U z)h4-ODSHa)>5Cf8qR%8vTWgY$@bt2dwn*D9{EeRh=YC3H9K4_(`2E}?1lO_r`zV#N zTBeeHQqOj!-%_Ptvd@*+!mR?XL@bp)N?g`1JKCt@>Ue)&J#~~?#ioqFk{ST-5Ge&- zOHB=|4=+WigSX7VgC8xlscD%Lt)39LLY)xy05=DV9kr`vAG`M6L1uJJd;MY7anRgw z>r?R!mNN$Ukcms*L%w9k`Im+Iyvus;Y5JxCbGPC;P)!gksdPs5`uoT!>u|EmN_M34 zl?0Vel|ACnR`JEa*PTy5=w>G$YiZ|2RwvBLGb@@+l3N(#wpg!cIVf+&26K1%4T>Ie zu_uOoTCcN@tk2K+KwE6(oo7Bu?moVCaQmWa@-Ad@PF`ekQS0qz?t*(*M)TsN&%0Rt z6L(%o?4)Tk)!p@TbLz|;W>G(H&iZii)GF%B+J*}|r!DnmJs*oi=0Bw^Eyp&|nb3Ii z%pu-b598$JWE|Szd)3V;Uq>65iBWH{oc~VV8ZNSXL{>$yB7iS*#8QroOEz3MIK4hB zXTjCWab?7l?v_IH!>g4Oo^Uw?znd8hGsbg#LK37*QYN!9LMy zeonq8QO}8ELrDwyKPmJwKkjG6_vsGqd`C~wXa7~=bf1Zzn^~p0`J(A$HZTiCKY}Z3 z;=Q=Xac{@nkK2P=#Fcbu+>N+pT)FqY1NSZ5owzrvHGHor@Xicp&pZx@AU-wkX~Z8@tdr7wVQuIyJO7- z&EFF5!@^xr{W3K{FM;`{rL9v%=_i>L{T5Jz{p3_^(ce!k#$i8sANvoH5RtU{1Dq(O zH9|YpU4@wmZIO(U-X9w0E8Nrv`Fyg2{EqG_XOuq;_51p`&;HV%`Fzpyh4DUiy!XY( zgVYZqr{6(7Ewvw?k$s$l@x?PSn-h0;Z z&GB;ToM4LNTGIRmG|1KB0}mKPI;;q%zhSk2I`R&k#Nu4^P4azB*8ito#ycVO68s(B z#L3#t0f(*7QE(?jvHrQ-3v^|y8^PubaugBy{U>7eX&$F#*3G|Th%qOG!@Et$`_d~Gz%t3s=b&j{vzZ3n9C%=c-tRaz2oyD2#uwj;rGQ1boky`YwU`?>hu zr_MggZ6e$nA+nKR6fbhYNEnUtUY@v7w8Y)S)de}7+`M-vVP|fBGNxMlX3}=FEnCU` z{*GVRGwUgHE0{>DxdnF<821pq>Pg)fDSYBIV?@)hJ-dv%pZF?!PzLa1KUicQKI}b{ zM{m|yEAvDj5`7^j5EJgkui(xdq|#sq{K9spdB)j;fz9d4y>Ra|vlL>-QeqFhtX}CF)+BFOvuf8`lCy`(7?Zsme1(>Ct2(;ISWj7pDC_0@r)Bp& zCvN{8K3Rj3vl*;IRjZ$ueYEB#*_VVo2z**tooKil9@X)tTB4u-Ys!;$Bs09>32su= zHL0cN`gJTAv8P*P^fB3IS{D8Up0&~nxi=kvjJ4eg6mnR%@NLZ_z0d!0^Xr^@5M3-;4jTa*9p^_xC*OXzQ3yK%!^ozbo^;MR_VAGtU59qL`vx9*PdpO%=ehCz#K5-g_uW6}hkx{e9S=UVGr4Pb zkZ#Z3eINVy{!e_;`D5KZo44F{`yE^Fbbg^jQ@b^T`J<^^He=K2V|KVu8cS99igis` zDw8RB<+3T4)1!7cmCbn>dn{WSCBr?&R4yCZYh%ZU=RHkk76VsxV~Ukh&-mt^UdxNE z6bd$%Dvfx?q_YK^@s4KGp7lzlLaE7ETP}m7HN2(uRo*E4V7{PXl~OJ`p3hcn5V+&zBBgj49~a80jF)FIiRU~YbFKN9m&v9o3M*O4j-^T`v{rk(bRnM! zeF|e16{({u+4|sxChUT%7s)&L#Ak0e!vA0koSjbX<=F|b~u&x92Q|XFtT|hAxaiGwr5Lp=tRXUZ$M(NoN9B=Y$}25 zpd{dQR>gaJE;UkC`A&>wqPx9cr|Lo%t;JEtT!N2`XG>1Lgn!YU4fFL)bZ;q@J{;XX z=Gq`)5-kiz6DM+l?arcCN>vJ_=!0c#X%7{^8D?jq+Y95q+-*lYMPauvSE^zUe4Gk+ z(ZT#^c8C`zor7a=BAqRJBCmeCrTRgtsOC|;5>A#3NDBlt3)%NDwKTXKrDL4!$CPnT}{l^X!mUo z`+17AJDYL}GhN6CJU<3W8_tf5!yQqk+5B)Jh#Av_UEmcJux;zpJ*^e3u*G21Fz_(>{9pJ*Nod@^JT)Kal>L_`gG_Q7}}6l}k` zV4BKn!c-12(wEsWZ>&%{AvTJo`FhewhQ^17y%M&Gm(TRtObH!hv!x?t-%hD1zn4~5 zn@6pU@)*F?3K~rA04O}jmu-8K*|Yi1*tR4UV9jqrDiXNz9x;vM`NR3bvAi=*OcQ2_ zwR^YkO@^gpY)9Fy@5tB(`c;1;8&^sZB#`_LU@w`Q%#K1zl#?wU_j1|%`0>v4@Q6jL zK!SB0<#j-Oz$;-k_+idYcf>y;NDLpw;fC* zK5o6^MOBpMp+X?aHLMyIwOT7NbZwO^w&Ek6C7BlBxJupjNy)X0q!O{7tOQemLL>lGo8Vo@+wSodrcaO2y!d8%3g`?u2;C<52c6c zeQZ88=Jf^~3iuFG&ehOa(VbR|OkoTq3QH|K6eC#066wiW?fh*apF6REL>n#N2M^ni z=Z%rt4tX|Zodw@H_|P6JNSG!%Ze>Uq)Z3&&Wgc`gV#`IW7gR$rrJX7auwh!h1r5mm6sq%;F?fsbH3yYCvOeK*B(}JS1F#= z`I6S|q}rvzSRj>tR_WYm!8n}#2>m&|c##8(szWY_*?eyIz z=J|v0Q5RlX<=nzgoO^^jdF46sb>ID*bA$L_wR?m!-|`%}-nqYO`2WA)6~Fy(o%yix z&gW6UtFA6%xb$q>?%g|g_byzxupc4Vw|fVgZ*G|MY1$&^#L%;>tDrW@g&ciIMom*q zW!DeTf?TVX#wh(1rlQz#US@;9xSS3mON|P0=(4NGtTK_7EzWK*m;72>Ct>a#UTLWC zjF5;LBR9FY-d^r!>g_fi{{TBEkM07jX`eRlQ6f*OT(Z0{_D++tc!CKpQ($S zGS`De6SLP232x+X^d-bZ8qM|fCh{%!{OKZxgEj;ol3?`i-x2<%#6`YyRKs1qx*%U8 zsU#fNkRr0JnPm(fvPiD*2|GeFlsjCe12F{*^a^^@^~$2xGcqu@)->(LFhx%iq)N6V zHlj~pZT$3%a5bKIz@ozrdzG?iZ+K(J^J1urQk-Wq+)7HP51r;kK~#n-#a_gy$;w;M zb&494zPBk1csK~E2@@47YCec+vd2mV&~^4Uoz2I>P9sQCle<&2t{ci+Cf1k65DyVZ zhqM|#0vqhhh4B*VyHps*E^^UEdhYQ&)Jl&E84UJ%rI0S<<^&osT<3-imr^4#q;p+U z-t(Abu&F$q>vk}$7;QtffK6ci%vvnQ=({t=q_=?KuJ4-DrHSd*Q8uohq;08%A=Zwc zKb1~1R>1%$oi21*LOpj5*`Fmo}elv4RJW*|c*WAb#L<4ja(j&Yi@kC~X_ zB6#!>BL%D&wKROnDLx)E4_*c%Ds?LDu;xTS%wJ znRbA1foU>?)cW#?^s4EZxk?V-b`!#(aCE{dpo%LYNZ&+i$97~nS?Ke3Z zw7j`?_zLIcm6u3~bjAunf~k-#)L zwrUA#q>3`i6)Sd(S%-`oW`SxC$8p$JIv2q_q;G7C+8@py4=l1A&AUBFvzHNz7}hE_ zMb z>*Kmflc{3TsZ_-|)~zPk75~w*#CrDE{wPDcRU0qUe6*dcE2Zt-mhp!)gLS^bX>VFT z9892glyB9-ZC44xbd6*yT}QmJaeQOtu01<;Ztu!vhvbKn>YBy5Di z$kGyOx-)57w2WJ7T{HM!9vYJX=}Tku)$+J@@jw5AbKiXamvg_r<(JEUrSiZ3JqP!# z=dKR_2S2@fx*zy(=9d%Hf9jpf!=KtdH~dO?eE;sb>AwHRj>_SGpGCgqLE?Z10V@KI z_>6Jj{B)1v-hdQcd#+L78U?OV;2H(4QQ#T{u2J9`1+G!x8U?OV;2H(4QQ%iWfkO4t zj~$#koh#>E*UGt9CGcPG$Di}d3r3}P`2G+0Zkz8e_1(Z}a4!p9@B?IeUY=>^@SRNe zX#N75d&L_h!vBB$_@G?h`>Syp9{bR%mxI*s*y1-NykVm8l)At9tR^G;UFZMYA$1?u zYWOpgqKjd!M@?tuM814t%(<14=`4AbAOcfom2yfA~KrPXailX?#5t@U-rJ zmojk8TIUb{*N1Ohx`rP5iSG}}FFJpyH}A&p>rRcS#s79f0zDbzKj-K7T{DSaXcNd> zkiU(vkMLW-PaZ!$(9eNu0)6aK&C*N!+xZ3c3G%<-5{7zt8vo_+m-3VR0(xrxhKYb* ze`|^3St0eWeFFR?Y(GEcJFeCv)Vq;D|0?((jpPaPH}jt27nJYkU-YUZG7;b9qq*vz z{TJjHcUV&TQGR{_%M*lf kV__0`3G&mv=Y-FumwfWma_6Oy{8Bf09&t|iKPb=qKNN(=(*OVf literal 67232 zcmeEvd3==B)&G4alLZJc2}ziQB~M6%5D+G8vbf9y&;TxjiUzF`5O-A6)S`76Au78e zimzMifW!y)0kMJ`>08?R+SaDHTNiY&rH#r2BRhG1-|xB4Ou{B$`|~g1Gr7-m*K^K2 z_ndR@J@-C$j6MBSm&;Ize@Q9_&k~UuO1r{|_e*HFHc9AL!&N)wSDjTSyrKAJj4N(8E`jOV;u7u2Mt# zEgmZM?^kt9JWP}$j`-KImVZ-2`-ea!#CTQsk)$gnW>rpUcwo!$?$gdFZF=*SIU|ZCm+p7chDfI@aVwXiSIv-N!EZ)Kp|I+a5j`$9INxd_{uO?oLTl3F$_*Lp1l!%|*z+(94s>UCqO+6n- zv{I(Jv13o zFBWm)BT^jkUU`Ve-|2JWU8FDn>HO6nyup{$J6**L@z06>FkW8A{`B`J3j9QYpD6GX z1%9HyPZaox0zXmUCkp&Tf&U5x8n27_R8c+V6*GHSd-jCtzr-Z@+p-Mj_mo*FgJR7PD_ zdsj}THNv*nxmAfDv8=D~gv?%6l^SBbj5=OdNmiBprL;MPsYP?^eQ52)r7mB(Rh9I1 zy&tvDj+(w}RE<@klFB`Pm316zW(zr)Y&YujU8|PpHvGDcWVBIjzZZx!67veLmF-bQ8599eI0?Ejzzb0ALM13`G{*8rIQPdw>iNC=b z7h?Q1hNLR|t*l8>H9^m|S*-8!zo53hd^#y>buu9HAb(cWvn`}%ugg&d@>In1DLbX5 zd?~e>fBQbpzoXs(tnDT3I7wS!%~I{G2UUAe*Nxgop$`<=yH(26Sp#g_JKL%@N~KJJ zl$oD7*BWD-Ux8d!Pvu7HRR~k8YL{Pfog%q@(I)*CCp|w<({x1~hYPM+=Thh^BY^s< zjG>A6i$UEDD%~nU&t|D!fy|~WmJakNC*iQCtEQY^o+g!v1x7~xk{@518_+p#z*T3y<#Q3(|g}-L(1H^b@4ftzrt454x z+Z_B2#_E|fwibVVu?SOzZ&d6JJbQ$bD!0vM&TV(%uOFOI1CCeMD)fx;+z4V(xxIcS zo(Bg&LzF>X7<<5*^##C7cmgk4xoJw*2<%U*uSAKV)?}5%@$=mAh!buKyeo z6{)Po!B_?B$h5%Vu#A*m{x}zS(M#y*Usy#(2D#*#t%M~>q=M^g^iK+V4cN|7S#kaw zR)@NTBbj&P1DU;q7yFPat*Vx_;Eoem*NpYnEw;@(mz`)m(DG=U$7j4Gaf2k!8}j@! zX*-$ENoD-&%0e3>B*!i6{{S+pRzTM0a{!ft!(N?>Nb^-x=nrY*N2=n zQho*VU%Ch7Z%4k-lCMni1tg!}$@hrl`zP|(}rAj#J0+mfg=zkAt8gGqA z(=GLnkHfQ8k`G!29gYtQPW0ZuzE>TAbw27imC#bwNIUBiG_FqX1OQtK_KHBUOh-5^3+~-bZh= zL+Lc-mO7j54^V@d$Te9@Lv;?c63Y&+1%(ib&N%Y{)1O0*_xXO6jJxSi zfWqSwJzLe1Li&>qsPSYeH($!tqFgp=CM+@%uO2V)=OMnG)OQo#&8MVHP|{{u&3pHx z%D?)UGM@f3({B9|J&<|D?dv)KCzl!wD&|_FY`bwZRuj_^!!ebK*mm#R9#A*n$xzm5 z_8yj19mn`&{3vza#?D3qxU+dr_r39DCQ{4^`osA5VT_kb&wB2NP)wIu2> zAW7x<)Qzb|#3?nLr5Z1j5_ZfjPr5`NO6+t>l%hn;DUmNFq>cOc#oI`2(RJLf;&r69 zU`5*q0kHVLqyyd&A5WLC@%dN~?KPmMrdoUKN{2!hf%_FSfMKn}XbdYgr+4&R6FShE zqS||tK`m0P8-A2BUpM8lPEf_(e%@|YiRxtKsTAZ{R$h)ZQD~E9)y$wWHIGVZMG(N-m$JgWm`q|d;7sqW!DET z40o#S7*wO(>>2xILMvLMSal-Qv;TzH-;p8egGyb}%$}J2TdQ1k_xsUr<;op2J?VIE zAM|-V6=skS6#ydNTpu8621GdyKe7A=Qhu3LjPj;O)%92IsOf1By;!XLh{-%u4K3fX z25+X7CpKxJHC!3lT_E*RL75@ahTrOI+o>(gw^RX>5x}Av*4HRy1iF}NsRFE3_HM~r z!d$7Tt^Ib%680N-T+KcgHLgalaqJh?vZj9Mldkq&%j*H{eafME7ho8k8`d;$sk5H4 zTR=4MA4t}+0;Y4d)=bh}GI~}+V&krrx+-y@uy@2o!jq76-=r3|QXvHyp$<4xfr{W#f z3wk`j*vmhV=TZFI(h>B2ELN`Zy6kT#ZIWJDS@S%gS33v?PlFrw+%u{u2#bknL0@c5 zb^yKnB_)iv7PZ#__5s#f*v`2DGxp5t!6q%w$lQqP?(IjrRyd;&6#8xEE0F0k+4jDz z-rUtg!_4WK>w%5B3MtvZGYCnYg;DYtEDhi}$=9H)4faOCNROpOaIn?-+IuUkvJJoqz zNcqT7fu~~Y0)u1gHi9q13V#hBdBO#$DUyF$lThtfXyZ+JdhlR)3EQ+SM}}?M=l^Bc z9u$bqO29V$VA$HyoBaj88ArNKyG+V{PEIG?E^XkboBI&@w$RG;K&rKlxC&1Y^AXSm za}12Ul+{y|FVTk?=)(+fvk~5M__f#? z4$jH+76yE=6|0B%$Ppqp9|*;sTs=tMg+rn-@`jcs;M>n)S7^Sy^fqfx%TA7NZNb;N zV_|J44lA9Q6{*x5lbUn}pSXbgMeK(#ineRb!s;I>HTUV*gG3nDy+t z2oz3g%uyN8@*$N;NT)upM*`Z$oM~g{rYlSpm>H`Ngqmh-Om3QG(&F>t*N5_H>f;XY zZ49@Li!Z{S#tKvwYMgY?xR?~%h;gxz<05#7aWVBFfhz+m1XrL9kv9979z8KcJIb&o zD$Hl?-PE2|QBpHt%tYBPqX&nSHC`EIrMJ`O`2rAZ!A#O@x&qc&sS3f;sLDJZPkyT^ zV=_Y1s_OhALJ!_E5T;pGo*oF@2>%bEf%Ksm7ym-}0u@5(+YzF)rwk!VXZ!{sN_V~h zAxdY=K#0-W_ zSku-4#(@G-3NjQ}2MU_52xK%}S=-)(T$MSG^w6Fgz!{CeSJo&rmw+-@aT5);QS{pv zGEQ>ACm6;Fjn?qJBex#BQh&ISJI!R@?iqrXFw?=)K(zeTj}67tf3xk~O>ro8e+4MM z{?VaWBTzh-fZ|C&@y(A8#q9#c)d?sr0~A|-bSSX$fF3DMKv4)NFl)hI%=_>+EUP#F zpSg2tCZX8%WgLoKo6z#k9~+8F(Ym{qC!qKhv^CePe^gpjJ|VQ2l7Qj@Kmi-;M}|Ud z_g&o+P;>-MME7WGBI>M4`s)wTnmgXF zg;nAm!CA}C9)QJBh_#Paiz5)!7Dpgqad1A+esm`0``Bl(Mnbzc+y5x{C7>%!)6msh zrEWrXx>f2Tl!L5N17Y&nuq#3cHz4#Q{v(8@Rh8oYLD0`?1O09P4d|7Jv~~XxP{E#Y zpMww>mm(xWEJM^odmmtIXR4v!2&rXMvh2cOe8d zQ$Ilniz?-7guo+pDMH|pl8g{|q)kRhJhFcX9@}4QgU8VS01wRF4!~mx-~t}W|3XMS z)*~by6A=QBz{99R2t2UU_X8}(?UOOm(`81J(8+;NY;B+>_8w;vZ7fFW z@m$A}{4ZIK7w+cB-`*9o%#HEUzuf}~9Qm>J^M%;gu>P<;0nK(X>iheGVO@9vG$ z;=B3Qrz2`GgKuwrT9C?_Jm&eISXKM3_x47fld!vF2CySa*mpb{#Li}X&tqTZl28-4 zBUN?)E}S9QU2;^juT$$cDRtpx)`y3heQi3#>}%IqfW?`8ZE|K`pUUiu@L|@Y?Yxup z3dW9d@iS=NaUb{<5bk(E__!J&S1F2iJny8>5q>_xT#+*Sg14-B0_zCK?F$n##e?NG zW{Qd{nGUQ$Wj)N9;$jUeN6!e=W^MVPnQ5taGH0e2%y(v{W399{?HM6W8zZ47xWbu< z_PStZnl*Y%NLd%4y?~yXj`l!zG`I9|!hEja9No-#^036r`1{)@zTdRsi}u^hjE{!8 z8sEwJ$AIt4PJ0L8dsOYo%)jEV3H&PB(D#rtf3@Lo_#G8Jr9Ug4I0pRY{ul7OFoEBZ z`>*0~_-Ve`b0=*Jd9L2G@u+C5aX$IzaW>W*4rd33#ZEZd2}d0R93zh&js!3NFy0cp z&)Fd}dql|DRg$I;Wpcnfqnq&_@`_SPIjd$j2O)Aj}&eS0oi$^U74 zeU838sqG_-ff zor|NF1LwlmC}FD~K@J$4HypA(J^pvTfAr(<+=q{zu1B(icm9vl{=j2s|BU})`{(HP zcl;Bx5mTP4caA*dqnkIKGyNFg;ymq;a2-Q?RmafY5$Le}Z3ln)s;hHWaX$U^D^~N) zilgZl&Zy75#hFo`2Y;y6QCi^4s0$La#)-}>mDp#GJ`OYLt1xRUaAwp;GfPd8_J%v{ z1&^Y=phIolUi&ufVK-7RuWnj*RG4Buer{*$%9z5uf2GRWzinqFwG~&)kX;GNS77}D zesKoZF-8|*b+zDH&dfj2lyAEJXxjG*?&myv^tc;bdvB$6TilP1*1-6jO6y-Df&E9u z*LW|%*}&0~_P%Ldftc*9KwOA*^X!9GASQZGt@kN)_Qwu>oA+H9h8`)jn9 z4PNRwdVo)_0JP<$aZY;^&|cO-?FBSF&;C<_p2OSlZmGk&rEPiF_y^j{65bsO-X(se zZFu+S+8dW>?}%f?MGHZ<$FXu?{~cX>*Cg6IGJeAn?fqcl%cSQWeV*U^DoA_a( zy(8mSemMN}INbWAjKia%>%=#Yq22S2(C*F0(C(>;c8^G3u}lt0UkBgbI{aqO(YGJ` z?!VXmH=jD~zili673zC2XYel9UxB~y7qIzE1j^ct>0$wN%(D6z;kkCg|EQ_ zzv6Jz*&ZKAgFD!VWcdB@9}uwBZ^@$a$Siocr=(x5tb4Jjh@A^v{{Ph5kR{k+tPXmYnF9Sez$B$)E2B z|Np^Xx&nT%@Ia4+%N!q5KRi#tO_yQE$6ag2mJt(;MY+%9s(voK`FyIQ#z&shD@?OL zF=HG5ehYr6zz2S)2~19Zhbi`xgqtu;`*UiG_!++eFa5!)hCZOkPUGxcs$x&VOE(MjS_zM~T=vhE%gh9}}v@X9t+M}J<8oB6Rjo6(q|+@M#)1UB1Qh!;erfO!y_EMiagdpcecnf!Ab@nFe0SMIAUP!qcWE zyr|ed>^~JWJ%Bh!XmDNwF$OTEm-JyNttmW5sWB|CbF+UM?}!aoa^B^vyU3TTlfic; z_wUfJ=_(y#OKG^)-K_%R1^gtSEJA7~Qq8cbxSlZ^zw6iMhv9RNJ<11_qE|Co>4$tN z=mnlgNE2>c%)P$6+Q|{*9b?A`QRYLSQ17S*b-CfkjQu$K;{)L!WdOlxt!={(bT-bw z{E^thPc%(%YqmcnetIkrOW?POBOB)*{Bpvty74|jgnHIQeSYA^vk%}cz-O&gs>1J2 ztMG)DnsoDPGx_e&P|3^932j7VqA73ig$Kn7fuxh}UV>hqw^3cn}K zsvz&8cdG19SR3Xw9|{G=RhTt6%ZA#x ziZg+!M$nA(w{i{mfx@~U1?+jExS^>KD zA#!H6$~Z4jv+PlLCOpkj4lK#YbsBPW&RPQ9@^o1!_PoH9OFd$gRrq30SKvJKx_nib zRe--4SzUr=4e^MV&4`y}xxM?)+G>>S2ahPXwU`*dUw&u(0>&{GWjyAXfDbi81CI;D*x zYv==6;`FKk{rUv*mr7prKSsv{@UIVY?>gt49Zsqoz(Fb4z5fi*CpqyNNUdiXvm$UB8%lWKrip}En7QI$-{y|djlbm8DY+fWerJpw6!_??xN&PjS_xwSg zPmt$&c@D_)%kqr#p2)LCo-5?}IZAhoKRKsG2?FeK)*rd{0Rt0ntAn0`N26g#KJiFw zIev+`>M`)*n1FAU59xg|3R8HF^u!sE<~Wm=ypwOITnam75b||Hueq#o$va6`*1Wga z`i)KR1O1k)fw<+NDG-TJDviLe zA8;|4LrT%ZU^rv(8!u9ob*xXSrVMaur@A;YV5oIg*7GtagP{rbS zpPs>1Pkqi>DJPk>I&h2rb>O}cHQz4~^wTichm~49z?ie~~)^1qSP=Ox`hCVk=Y*#%+>}+Z7eCd93mF_S|u>EvIw5HhP!_ zsP6|9T2YZt~FsxMX1GaA|P7oQ=s=KQWJDOBkGUPa`O-( zas%|Pw%iKPZm-5n%93(l>4lzSl05#!JoeTnn43K~Aa zTNAEki(~gfHh@+QMsX^b1cjTHRiXZ-v507Bk+4sQH+#0q-<9GOSC>;1O<=4XH; z<+W0e0)!cI`lgRcts9`{8ur4`IR7fC)%LgALKG-M7!6z5!)(XCS=y2NZP)@Sg5M>y z4(r39#$=vyuY>;c*YNanSb6)b9ui5MI;jD=d24L@umLgzWCFg z861Zyi>>aeML9#PopkG3jI?Ui2|SRZmgM%va~l1>th?ze|Nw!_7HW0qsG(T_(q>k6u#xWl)dygey9yu+yXjBby2Km`&?K)(?Gj1s0*^fsjI(L(wVmtl_KwI z=S~J)o4f9%nCiA5UI+5X`D5GX)MMg2ChF0An|F0I0+@?rjA4X?XksV{p4N=2xUM>RN-@%`$}JDRmZfK&l&Xr>U~2 z-vg{r&rWEPmNxYntdF_p!*)j=x6GN^)XiF*`klIUt=*j3Kv&EeIZ9Jgt-eWH_>B70 zg$prnfz_J|JlaC-)CMff?mHjI$GH6c(6YuT-OlhVUaj(TRwshF@*c}{Mww@(NZ)QFxQe!NKY z9HvG6%p35{bR|-IM&&$0)MQFtW*OdejTbAnU1NbxKo`Ugng};2BQ9SRgQt28^G3 zy9h?uo3o)$DnUs=*$+@2hj3T`*0+rAD=2YwIpif_agu*7X1UZy&X^0eN?e(}A3Eh0+`zzEu7sTWL@e%Rdn#v!fQdT?BMBo% zUCSEecwO^xqJL=z^6XVLent4*XpM7wx|%?*kg7FI(1mZnXJ|Hh)2Kq}5Z*45 zw;(h{KlE=IQVJ1{MmPuIFoaLwZV-+tQt)L`5F?=`Z&mh7!2Qo%U-HOZ2&5pWXNpAa z1uQp_n^D6?^z17L$vKM={tf;4p;IGpL?0GlJqK2t=Iemz!Fr)mBW440qvlW07rmmG zPQl89y%87@c13HbN22~3K*5~DuF#n48kF3X#&C&Kw903d#w>lspuPa1b(pOBb9TJ=M2;b>Z2F>#d{;ri?=z<&PLz1?GqPr4?8l2hyM*4 zIgI{lLt*>MRtgKG2`UeLS?AWYJ`|NTf90)0>u2rXI(Rvg^&;e*V@q_+9;g3?F4A=d zGG^!SY=F45v1XBZnK5P@+xWwQ#0haZoJ|Xj+)D}AU`PCGi4Qycj9z_#4;MY zpf5XG8OFoVMID`%pwpB+>5SL@3VrNmv2z; zgnU?iZD7mH>#ns?pB}ph;A<5RG5lsm=Q3YL2G&N6dvT+jy(Ccccuwu;2sH#OPNho! z1S;Fq$Yo~4z=~8EQbq*Ki0HE+z$QX_VillmwtpL_S)Nl{)~56`-&cC@=lhlZbzA+z z{yz02*g>>?Y149TPQgwz?(Ipq2EV}P#U5&xd$XF1< zhxM?oip9FxLVW~&PwbB|eHd3zWF9=M_q>P_d>1Y4x?0--!3b{sS}%5Ot6j$Z;TLGx zAf%2`s_H_b;0gkYs{2++`{})k@Y87Wd}bDPp|HfBsSx!5KfryA_Q^*#h&e)D4K6 zF7)rPp7(dc4um(<3W-Uw{b5N;s6gdZs@13t7(xUn}1>T|u$SSYvr z`SJvZYCDW|^A(`k36fUFeEo;Z+!#07#a5u+2a(GCn-XxLo0u%bIv#Gjon*lhg+~8I zdT_2#p~}7k^xcb6@MW|2Aw0e9_>vK&M^|lpWG%WLbqlWzarArr(TU zY(;w3;({r*nwi&jY%LNVD&;L)#-a&Wbq{kr0_AX1fwme^H`e$dQQo7pS#$#5DU*^suAn# zc~bD+$7QXuhAT0!`EEq$LcWtRafTy`ZuX3RE0^ALhXM6BOxjF(8VU6@jcR=tL8KGDiHHPYuYIH=1_HlX=GcD{x z4(IOqt_nyiKDTeYZWl%dZ0Hd&-d$)cJPYf%9=0oQr&bJp?PE}=KQUT(67Itjt%5$s z&8u92Qfk1Xn)g++kzgjy!_B;Gmryw7L>hRk9{M=^n2S2 z-bs*$hlP`pY{5RX?+Ju7R13BRx$mSou@$O`4pb=uRkiVPAS~^QG#gOnv^z=gMh`6h zvq1P(ZIY=f3Saw}6o{ITCo(I_b}@B6?uqh1!ZIBoLWx6^Bc}{0O_xz|BoZihsPJ=C=~EVX22t1O~7n^hofs};XG4$ zv1jVF3TSoMS=fDBgW0SbP>h#(j+@r2b~)I zSZ2q!B8#f!Ce?VVA5ip{)Xj<3VJ)DXq@d0SI1L0M4B7o;~Ve`Hw|0>t`nI$ z|Eqwx{hivR?VF{AdlT`WBEF&4_)aXJfpZ*tp`YKg9X9=T*b3jJ;P*HD-ox+hT4Ve1 z2#+V;yTb>{wE4eh?H%7hJojo7mIC-hYzU@i{YvB#_Fc40o4<^)o+oNuVHxG1TN2YhwFqsMv;!fk8G@!-kbkWn)nNs?!`NQ=KM!=6g5!kv@Y z@4!4ZIg|ILUV_|vkeg?+jCs#HWs23ltW4f=>&TssftfPyWG%D*-Fn=ql-eZV-`v9W zi4z>`M6>i?gt8$gHGtINNEJykw?**2jnL2CNlAk8T{Z1e)-r9tBZw&r_`VfeY2Ia$ z|0JibZUNsmiJ$wC#Fv8d%UCzGI(N>Exws1ibUj1re?!-A*Esq%zCTro_P8^21Af#q zE3A2(@j#o^G-gq@&hukr;)ngv`mA%Uixs8ADEvx5u|An&@OKE_F2EiXq%T(UCI_-T z2G`jz&l$#Z%CJwy2sT3+y{I>&bIMIv%fbp)I_PGnSTwbp)QUChu zFrOQ)*H)0X5Wgz?<`9E^_j+rw(~xZ44&JO*^I?+}!)FPalA0Q8OU2Y(n3v?{t%kgs z5Vv6#%NRd?MSUgYa@Pv8AuW(sNz8@^!k%=|iI@#RRuEc|=l!Uag@5`@LW^0^O0vlW z0{B$iBId>KY~JYw&WD@anui#n#`=b+?p&J(n?4|-&Q z9?;tkJ)pfnk7j!opj3?`0rP%PCLp|*Ji2J^1vRlXb*IS9d?TWjXfr1+i3F}&2v_Ds zsBevRCTtDdrXb~J2nGA%dkQUjhmW{&RxYLB>xWUWUH3V6u^P9MFF31dYj>Tp3MDvt zU#L}n-e#@F@TTor*0I2nGZ0017Yn%Lmw4*OJpRd2`*n^6?G%qcWst;Qf_p^C$*Y<7 zloClLG`#PX`%A6)yG#BFymvI7-`_ux{}i3y7%6R-&}D?MRIJZU;};>k8!N&F!?Y7Z{YT3wZhv zd==3%umO1E`e8Dx%_>>#`XykkD#P5PY-UI;Jw@gqrvbJ<@$PTrma)^b60XL|>l|YqVN@Wj#l3GSVew6txUFif}G0 z5iDm3Mnx|LKflTf4p3QCoim#WJ6J9!+E2RXOF>e-;KLY=Y#(%~tY3-Y$m4DTw~L!Z$z zud$!DhMUY*Ygn%+12%P1BVilX_xp3A1>u&ySUqiNOuS{{>jTX#e-T{Be==j(cRA?! zFey~_Pr<$mTPSA#tCL>m^U!VI-&zIerg@LEW7t|#ATxVPdC&>vH=>27wd9FQumw|@ z(yt?GHjaStJgFn{{V*hI7umKztlpAOSv%UkMq~->5W%mA^_A3v65l#{G;v?@NlPhl z-Zf0sz*$i`eM0L_*{QNhA>~vqx%)6{eDH?vj1nd5yO@;!wSkD4PM<}@bpn6%p>HB) z`dB&5%>xf}|Dp%-jjH!U$A1*>i@mwv1^A!Y|90-w{R_Ey{+lubF~H}|_J;LcYQRzU z>r#6&?xN8(a~C}iw<>e5OxOB+yw*M6NUhcO`|vSzK{`~~|0EC0XCE1JA0a)8E5V!e z7n9l*cbuP(rS_a=2S{CYfy3BfW-Q<;qg^2T(pZFl9} z&f?83Rso;WadWq5TYg;#_vdp(_8mfm@XfgX1*ViK+^=1O-|T?T=VdS8nKuJ_1Y3S3 zp&P8mPViX!1{x(ZPzle{B4bj05Hsz&8x49az%Q%;eNr#$CLxFL! zHN(GKzg4Rb^M%dEU0nf?!mDQbc z_a_`73&l2QHxF?W@RK>y!d&JpUVvSTPPEVvUtEtdwJ?S8?XHHk69nIJC*e9xe?S13 z4}jx+z%dOizYZ#=u>9grq~70&KgUt@3i zOuf>eF2#2m2B5Cg1Ok4~e?TfV z{(oRLTE-BD0_ITjwFnryinSdiPj;9tk(+5&YzwFJN4@p(lx6&xft;G6wnD%168VQ?$ z{^GoQk~?b!=%3}@zM$^`kdHPoV?wS#7-6&BNJ!Xs@wSRy=MyBSaBR_If#qRJrnMZG zi>Aw%hIbC+RNUW|GX#;yjbnXm3v!vGT6<%Xv-bYY;<`81%K%xQ>}BBJj*z^qa;Art zGvcdnLYv^57^r=x!i)s9ac12YzX|wu%ZWO^z8POYn$LL1ZtyVlTyblPd!qES?9bHo zlv(9!KhC$5`OOqsBwXvSwN0Mb8A?hAOj9_i_chpg@FI2?WA%OwTk1Vk>J$GalqbH+ z@f(C(Nr8y?r-^;o`;34uoFuVk>{)V0?=j#)+V!I_LY_uST3p`sJ^?)gTp>5ZkU`Hk zVXW%;S6%m(kltI89mx0>E3gLvPs4h6%A`S0%Q=epjuN3uO=bTqeDpx6Obx!DRL)LF zWzYUnnYx)enwnY8*YJ(L?RaDT8YbweV$zV<6~7BUUyXik2h8Y`t{8jV%Njah-LEZ# zPWe4{d1E1=(sCE|`K7Msow~4+2oLOdUH1#keBx0hG(Jx3tK^7KgDcSRG=&r|g5-&y z_oN?>qd#J?a3Uax&ukrkvIcl!O_E;JuwT+RHUen&=h!{7gk!7Jx!OVif0BQXOF&xz zXqO{q%zn_GRM*{xO@R@KeJV7B-6&|fqK&R_#|Y2ih@7=wXHPBoqaI1{r{c`!c!|Sz z#yl()G2^zFv&RLCi(i`2_LJ}p`z6jbBHd^|9h4&WT#?kh0Au(A=|?#q#6AQ>%ZU*} zS0lW4#V@IJ`iMJ`I>;q1SnzsgFwTl$6TYwFb9)RPNF zYmTI^?VhD#-R4F8NEWE(dQk_~)_kOx-v?UNod^n2a~0ixhe@l8Gur~hAWiBPAI;9E zBUWT>&pDWtpjD-Mej_><>q@r$73?F(5c;u$Bk;uiKS-T;DK~u2QQ}>Z-A(Z2|D4!C zXCFse&EK`(DC#D?!aW}HK*zfN9EE@|RCi)a2zE*#$`$T6mj308Pv?vi+j5^Tv~zQG z3r`6)`##X)8GSQN?_A<3%3i{F6VGh)lfQAS9xtGhGio4PHP2&zoboG%@c@!t@9A}b z51J37fSj_GHn+3Bqt`i64t4uLk=gjsAHOg@>Iy%^8^`lV)><&k;q_th({7+@dstZp z;;G*`4!SWnYz5rT!QDy(j`Zdz%_ff5~)P%r{JD9fRjR|7K_ zQ}ucdIC+y;gJn3~RBb12j&xqxL?HCimVIl`J?dK{dg~P;zjQl4n~hJ zK#XH4qHg*O0C(@|w%B9OzBA|oZymeJ;SaH6i;jGB|ANyUz zzAX9w7f&LSd)*A$PqQA1QIhd%e&WF@yQG6akyU|ikJ(E{!m6oOC4oq#OG*=3UHSqk zjqkELqsBR5kpC_74tOh`H~&UJTQB1}@m-#weJO>}FRA!m)CM&Q`W~l6tTb1z zY|7Ph0NLq?$9h5P-|+mix`81hm!}(hziasPno0pqw(JD%Ljq<{B;AhD4i#m0RrVa) zd6E0>$=Ba?wO|R;CIMk*uiMqrc%bx!?y|8#*lWM zwjMr@=4Z@V)sPiJjZ$C@C`}b4lu48g7mYwQaP8iIO;O&?P(3Y`%7!Gs}N;A zu*SK1#bdE<0(%d=YRt{3?GW39^v|VEoMUbP?J!5)tmo1OeRo;wAmsT<^7ysqKJsjf z+XhG%&O+R7=+tq52AXPTQq;eLa{jvQ^^|%EyUVe;3U_eD_?`xMd5N`ExD`(#bqoKk zDU5g5es))4{bWco`HedGo@c1%?wRMDu?d$3RaUF!1!N`i{U@B?N$A~k(5@Q26Vy+E z9>94(wvXEYE|kBt`ejtAe>#3a`LLNF`#FD-Sso|^UTF2=V_AMrw8-8pnxNYL8uc0& zCGXLm(YUlNq4%TM2e=i1whQM_kHdC1*eCa#Mmn1@j!1R;(o~FVa5}J5qkk=HW>49B zot44~IE}NHE7|w-h2#%I7Np9F=GVY=Ct=UcRd<%`w*ctW&WLEds`Y)a9ds%zjK ztTtkQ56`18_P@l;gSd;n=vjcZF^pjCuY}mEnGy|VfV%K3_Xm6)6WRo;Qdmg`v>E@> zU#_+PS7W@5G~zk2>zW$a_k>qY8n6ZK9(%AC;uAbMOJPh3>^JF$Z<9c|Uu#+)SdSiG zkg}YyaQ!@uJaG4FEvGm>tV8h4*8X*g90n4!0khBHxv z2P55uS;G^OIuP@-CnU#TCC5u_4-|a^mdiHoTM}2nv4FYUuVPj&-WlN217SL_gvjNc zS08f;~#gQyzb@TlcS?-vG`m{5aoD7ww`YQ7Og=C6esb_1uLgIa5Fy zp2I8FR=xVF31K~r(3bl$?t|M@o6}~OP@u1CNY#X z&&jgpiLZkund|fU{dVJb0_7O(35OWb6h5wipTiT9nBlgMMuJ$8$2x5X>q6Kw__8}v zr_~L_9KoaXDy|EuhVzCeS;aN{%GZ8rhOZrR(!4dJLhug+UHV~djpq)m#kO66 zxeL;ME%Cc5OuTUwIMW-*D$mVA%3YEYn;c?3*RAr_=q-o#bM^b=d_TR`$@hZ8ldYT(>fr>Se?U3 zyU6kOr-jNJCj3ZE!fJGua!Gw$-)7D2V8iC9vvUg@$MT&g4DG*jWel-{8@o8Im*NSn z1KO}?uM+ljAR|m_7a-PI{qG^`7MSNSAM{BB1`qiHIk7v!vU;|MQiB3=*9Wk7R|Mh9 z7>unY=k$Q|Wm))Ea>pK?q8_nNeH)Qq_7;2a8$ZYq40*hiK>L=_mhjO&#aFP?QuNw1 zQ(9(5u}&Zmlpqyrnuxm?k`ecE7`vSFAp8a*?pCP*A45CjVb;RaU2ZiIG#l;EtjM7m zZwJvd!_6+}F?gBRDBNg5?ZeYby6oNPwO&H&K~A~CgUgxl>j4%y`jjwwFBAO%3PU&W zyta%aK(QoPP`5XDXIKRa!ZPpeAzr=v`UuXHQ^c7P-PP_Dp~iN^(HnJ?#0gEi?IXre> z<3qyXs3rZ3z(bHT9?VPL(|ki%_dXK{*O24NqCs*1p1_B|9%=h-iQ^qGYrq#ub-xYg zw&-6l5_SbCB3SLa7&81oEFd|s-}PsFzmwjxl&HerQpcP$QtS`52*y427%75=-^0}$eu3QML3JI9U}(c{0VD$lxaN;d31uk zOLmm>9#Tl|s%qU)%A{86nknZHs=&pv!X3f)(D!jo$<_DwTB@jt^7b3h2{MF~XV3Rt zliQ^t1kS8hw*jI<%8?EaYgvI)@rRWo@cYz!{lnx)^S+Pw>*Eo)rG`=r@OQW{-p41u zq5BvbxRbzI>u^Nh##$K@7!TC@1Ktiigpq)qVDu2B4&({@sM}ZI+^UusVpd`-Qzkd> zTTU5P4{6z<58fUDEn853lGgMsw$QA%j0I@by~4YFdx}=d;rt@n5dWU)fa~je;`7y+ zld#5z6^x$VGL%&(Upv>2{;p7WWR0Z`Ep93Edy=ejL;3yqLhQvJmml6tLDQ$CCd^sb zVsRr%U}OM7J;rVHl{&dx=b=T`EmP}v$^A|%Jo5f#0^UCI{=WyLi^m_WguPuQJ<=vU z2>M|S7|qpq3utRhHlb^Z@KuxemuD-)4rUbqp< zgw5JgH^3&p>+jggQ=1f?6iwu`ykk9>$2s@bm~K3`ht=Z3%6wXx-)sj@()3`Z>Cvmt zmSHt7MOyFEvGA``p*N#i|Xm){d|K{gn3ARFxASVd*KT&bh2*{!ZCRy^G54%kLb z9eHmfE+Yad4 zP3Xhp5?q!eTvlZp!1Gqneh_Gd({!LRW|!!JlQb<`et)QR^g=r){Y6Tq)^XX7_iOOJ zziu)nL$c09t^P|qxf(daZo*!ItM`o+exG-;zlQvO4OYG2Z9{$sthB9{gS)QBy9=oo z6P}&xC>t@;7HiMjLfNi^S7W%TPmmCp-;l`;F6fhggP16_t@rfmtT) z9a%f}Vr3T8!J29$4RIIZC-$yRN6Icq&l9~!4Jq^gz+4Y3?*>H+CZyRq>A zpu3T2?FY!nDn=U4!`dT+UlaG&lst)*q?q(VFU$c3^W+OSs~zmY5PEDqzQ6|=n^?Jn zZGrtg_?>aCrzwa#IU{&qBQv0LVb5_^u^Ov>uX3z+9g6jZHGrA=V?Z6t)&kTv<7U*XL|TEusHbM6N%OsTV9d^c3+ zQLg>j(5heiw4sGof42Vc@d(4dk6@-lf3{-Op#9nM8w(?t{fTE#5q#Lt=V)E{p0wXK z+!9X)`=4mn=d`Q6*qXWXa&RoxQ`kR{?j~>->nnb?s4L>q;4KBe2(*z2SW=+_bWD55 z0}YjUOvwtkvk%|4e+xg}zkdrG4%5Hp0sV{jcrWeOzs&c;`WIe1j#c(JdEfg-r%$o= z*Xq5K{S5Rvc@MpcQ`L!{&5j@*bVnQ|0CqI>PJZ@^S|b8}ZGz=PF3@XLdR>TgE&SOr z^)or;sQS5S%n#^iKj2B{C@V~swKiEwP;4LHadUG`Y7djJhB>LzJxD*I38LeFtu$c$Ec zyefw>wU^xFx9f4PdG`7_?zu66&2QP_*VjvFT8(ETKiaUaMyjqMUCN##`CgQ=Q&DyZ z%0BMMNtxf!ff0+Uzs*yB2K-{XD*TdX9{>+LRDN9#+GoeYbAE8f~?4GUAe8yN$#N6qorJO0_Td%v9cqb>~4Bjm2#(ICaON}`3N_4|5M_n<-+OI26 ztMGn3?wEu8Q5WI4pGXSyap#LfidU;3`pLNs9YOd^$hX zW<;pte5{cilX)ucpj!?p-XM8peXaBTYzzF+KF~|=K4-o}tnxqC_u}|Lx7P+^-KEI* zL(~rrqnELBA1Uxl2Jil?96c&!c(1i$iMG-%U(U*8+%GvEZA6TSfNIh0S^a zY1%kRD5>Q?{k#A>yr;iHc{TV&p0(5cgL@{@a5DmKqeB9FQs&L|KEQrg$Iqp;Yq27@ zQ}?(n>*V=Y(k5ce!99w#;0~Bq=Yh|QRSLLhgPI_gD?7svvIQj^dn$S|W9J#w-Rq zU-o-)qs2<>gErfbVJ^n|ta0n9^x?i}2D;sSS`*qGZ#RPqh4_uZ$^~51F$;tKgrxXK zYtK3LgQ9!;aOJ+|7Q)i=-xWSTW(D-X#YzokN}%bIyg|S;J&2Ut0&wS@a;L}=u9eYu zrR8ENxk2wDw45(*F9N3>4o+CDuuqfNrx3f#iQR?R6D9UB#O`)taUYRgDzWz?c8?Rw z`*C_p>^#Kobz*tLMmLGQ9kKhISl+kc;a)}0U#_1Lgax&47uI8q?4efCzGlBUlPgMn z^{54f29t~Rm?d}ZSw@QYJX30&6g5dx+@r5}=bYT|(7aDLs^_>k|L9Xj`#zNt0}iq> z3R*QlPwZFYo82>MDfBGEo!JFg#eput_Zm)?(mdOEu$967b@enQ-)t#60A+`w?6n+k z2+sm?Dht2Hjf%R1GCSk8hr$0z4^thGl zK0WSY-@;qre$=LlZs1)7l)X~Jok6S*QvydfMUWU&HC(56b}_T2BaiAOKHYhlBKzQ@ zPAc#2hgQ{~S)#>YXW~V4*?WIw>U)R}gDawD27Evmv!^qpHP&DDkKKB@_=LJE%#fO7 zf|6s@6A0Z1Us|7E!&QkHx<0Iw6xmkf587i=p>uUUpX ze+4*_vIbcvQv=&y3Z>+1MDA?|;<>w~O$*KTU-?xGO*7DMrE=>Vad7`1_mAZqfVLIb z{;r!?bAEfurd)6p_leh^0$M@q>-^NckkFi$%PAlFHE{igHDkT>n!NR99`*Is&n*qa@-uxVSXbyK27Avc5;wrtU-PKM?LkcnQKi2!DxiH^M6s?m~Dc!kq{oLbwCr zJ>D#6b?){hi;d$&{0FEn58?Yr-;3})ZxLepVFY>-Bd~$}iW~I2C`TXHJ0R6@Xwvff zl7pBb2+v;xy1DXxNsKahPmC)MGcC$sjM@Le$odeulb9Rt4(=MA}WT!Nx%9(gp*h1s6t(5V%jte#eR_Lk_M# z^u-?Eia;>7QuK)E_Lhl`PQjhqJOO|^UflS;21ox&!jfYov{2$cbmSK_3%xkwR&sAz7&_5nYCE)wJZ=G56*(P?q~Vr7W4I z;YdZvdU$`$ggtT#b~3XRPWRK|MLwKDvR?q^^c@shr!ErAtL(cFBRJ(hz`C-&baFqM zh?hO%wC@DEVVS=GWx12A%lwbD|4&Jy&7os!B=+OPyR1KDvG)lF{A`6T8bjJpX;$AD zxoKT=*}yH3xsWM|vX@C+zmXQYqV;O~t?w-#lkz7e%8!@w53szwPRi3KiT!fu_IFD8 z9tW(47Nb6{tI?L?>65#oo~B!I|Bom32J&O(4L`kC5w}p{8rWL}<>)y-M+JBmc9M~f zas`AY^#tgmkF!a|>5{7Wf#xD*j|VMM6ps#}8bA zRgvc)i83+TFlQhyIoy_u(ag7a4S#gXv3zUU8mH_9m~AKFMg!l>Wc)Q}y7`xUh&m|^ zv}6d*gg1K>GY8yz4SC&jd$e+ifi*I+&-;%Oj24ddC z@2nMY9R*`NgdPrZ%^q>3fnFgMt!%1MZl3-D48=mxOOX%lc{5oq-lFaS@cEgLbkg@2 zn{snyGEV{0a(oh)d7xEkw`StE9F}J;)+^saud;{E60DC$iqI>0U;HU0O`n!-*$k=3 ze$Z5}jDWh)U__`MiBp{`fSTSzt(&p#QW?g|lxT7C#eV&}H>_!IUu9hl>+TmgE75F^ zp|5pU}sHfoY+x zsZEQ+G0Li7Z8qy(VE#6#&YehDx5{DJ#Qt(6F+zQ7&<6M&#Gx*UW7YKlcyQB{#tJ;* z;an3diH_H~gW)D}17u!Po4TsiP_5C>PNrVXac;`%$o($sDM0E2EAyK-Xc;iV>jFP| zrituN?(Ee12SEQ6V*_~+nYm~<;xOpC?Jwf~HPHQ(@sxva(~l81*izeLOb2Ghp2K|w z$ykR&yWo>t;QwWtn+u9%jPNG?EgW$e3o<)TrCfH-QF?d8;Y+zs!-qRmeXwpC6Y=+8 z4D_34Chjt5C$|wa0E^|w!=0V+_=!J<`&WUy*mHrGHC|jL#t7r6l+?7vkihybgH>gH z8`RPP5%xCD=0%Lm%kY$f+X<-gACh%y)QuXbJ9XXHwXF}g6ud;fPMeN&!lCnw^}_cW z=Q>xT=3>K za_*yL`vH0~h&pO{6AUTRj^mrQ>6!XWIynWlqYDxV+JMsWvpn3EN^j`1Q6nu~dN_Lm zmApv@sh3#ZyOiG(8OHlF5z2bxmppO9UHd`Uq4%?$gm{<%`ceM3t~e0 zfHtzK`sw?Y_a5@{NTH4PRRC>3i8CEaVb={`XPnZ8QnI>`%ynDU=Q@VvnH|EFigrUs52Yi!@5I0L2*CD(c?>Jl5>e04iCi>C2TX=_$y&31bRDNdz zd}sWLRQO~IZt!i(V?0%^={OkNcQT-nyEYJtCUig3mWG>O3(SnLf5mSNp&s221J03v zvsmTh%s}y6Ro6{bVsC$#RqQg#kcQ_oi8tC}PwASk6L`XmXN`&Y8yUZOE~((e>sBr& z)q6jPxZ(Tt)b$_lWWzOqutSW06=y`xWuNZGGJ=O1>!(34taTZqA-@OU zbO+BWu;oi|+m{b-xH*!%g0~@fGsy+LvDXkep4J6Y@C^iYN?jkjJ}XOq$tnjYQDjG^ zpB*cMTtof6AW4T~4{w9I2->1PF=L}Pz5@NrozpR-4Aucj9ic$dKQKCw7uIK}uD{%L zkcs?0+^U@x!OkAMaSCaf?vKx>)Nj*}4>vTS|JOR}g4yy$`)Ux&fghXsIpo#v8M#52F|{#SV7V zx5C#+@C!oyAcd)ARtkyfcrAI6`xg7>_IetG*C33S*MH<6rn!DCsv7-=_YsU+F3*8j=(Hfn08hvtifdYHdK16B_|f#4sDknru|c7 zEu%el$A>6>@yPa$%vz=`y4+=GDVuRpdzur=_TjanS3qzFpxC_{-nex}3UDPR8UQhC z$^xc>&o*zj7z3Mchqh;zD#T(QLHoGdAa9qvOu{X(^oYWY1Z$UKQEPgNFQ(jHiBf}E zSL)*b*WT3!M|EBIyOKacHemsoEXYo-9La!TrIj!SWD{$5g+SqJ`B03}II!A%D{a`_ zx9q+JDQzYKGn1qrsRqY0P2-M*$BeMahg`?4u_ra{kW4a7TH)dnCIrrRiKi|~(=?L?p1~*zh&ExbXWM|Txdg#UX zmv~R<*u-|=S|$2?nBm2EzP2>Y`EVM8F*;TH726%aaAIret;#s?V@d62Dr5D2PmB(! zW=j_PXq2}T>t-d~bd1@t<+nis>0I}H#r?#uVgsk^^N}vugf?>kb_T`}xYy3Jd=Jts zzD~NuxXGf_&Tutl%G5}QG-wyUQ1nxE6@7|kikFH$ zs0C5xeylH+8s_0`+r)0vfo|^s<#2}LA+FKp;ykX=ZCoRK?+q#LgdJXLSb?|sI4=tN zVYdch{A}Ybz*rhuE(b+QKfflwQ~HrgO)Hyob5ICD!1v~;ZGRW-htKKjv4+|e_Z;f9 zn6>&CIQ672jPp1S?*E&GO+r}Ecb?gn_q>Mq(`p1jn#c3%^3_P$OtWfaMXQ-Ltm1=X z1k=~#!#)`3Ng4yv=}v+cY-nn1*6otk&-9mU!*X1NyI@J*Bn@%E{Vpwy!=3_kS_@KN z@uV`>al782Z`@cn@nz;fTksjQlJk&XvP~9XP6k#+1CQ6a9uC4!R@5uCd==`oDL6Lf z;roUN@|{#e%r8LpHS`*sE#_|_R6yDdNKaNk+Nx@bUPgVr_BBCP%sCoWv1Y0W4SUB( z&c3JQY)(B%^HW>Jn1a{V9wmKwWgeA(F_HOFXYYdT<5i5NKWO4CX`Vo|N+_ z|0Mim32wpJMRD7_nLX(o3`D1h;WZs$r1x$(D> zz6$RNh|nITt)L5jMQMOf2XOHR(US3wSu3$pwIM+K%EU{oTe^ey1w`;A)@Thp2VEyT zzDVPq@EJfnGfA@CH_^yCb3bNbXHCms>`-#;XV7{N3QyRB^d70xLuWRL{k31ZaU5X1 zp=zRWQnkhGAGg&Awbct!?D0M8I}6EpAI*mYKWeG3pg|@!%X>hWd)}0`6D-g30F-s9IE_@DJZ=;y! z3;FgfU5tG-FTa03ot(e$r=ojV1E4(d{tiet`R`oTL^xuP9r^%<^8|7(2b^YD5O)JukrXtN#7)JXf8_Bsu?S7&5-qRB;k|bJn!P+_O?=` z&|2mI+S(r6x*>0SXsSMfg=lab_cfIMgSqBlkKRYHAKwv^j}1%GmnWh7>4bj(8i>BP zMRIo#_m0zPvXA4=URrld1S61HP-^1BG+GVrOe3x9C0b2+1a=WPRy!2)7bGwt!9^VzrS%p5Tz>2x-QM z#gz2)H6?YIzOC*DM6W@0m@PfS`Cl&Q$BAZ>|C@+EuhOd?8kX5PghkMUS1AgHaZdxHTMNyXQ_#8=#*<)@wpJYC3E6z2+iBOZj(Y$xpzgbgEn zZoM2a`q(hyX*IsgeJ`gYNH__oCEyV)0pr04(pO5rIp9MxGMA^${GSp)xA>C;++94Y zCEyv%=8y!OnRo^gFkT@66!HXzC<$oPz4eOH)7O*)37AlApoZG7kp_nPav270@-*0z z6g;iD^V#c2!}_3%xIB%JH0*V$R+fh2ntGMeaCB}?Ee(57-eIQOZ0QS__lRKD`}-Hc zR=JZ`k}-Dy&#h zx=~uyEk}!8D3s=a8qne;?5Rb-Wxndwf{X`OXl4K*O z0m_U`)e`JJ=HLP3MV|tW4Yg-Cl%|&jd`EqrPi2J{ zVRa#t5CZIwH&PuEkt*o-ML2~;Jrd6R7eyD*t)1&fw~{PGh$?aER6v)w6yKIdiObqi z4&5@bE*S12u28K4NUv)Ec!!aa;4Q7F0ezRAXdXqVs=+b^4`EBuPNwnY+*73yf(vd6 z7j`#pswO+|D6K_a`7g*0kF)1b^R7GzF1-+34H<#W2!738`5|OtKjivZMR&}h5{BI+ z`pRjs$ZND@=gq%-5pq<&a{{|WmE?jCkFtE$kmS|hAB5xu7Zc=B)^h|Ou-Ye@uV9Ws zQf;@1MGXy@3-X5GS7B4zK|}1XM$8tR;hkRA5Sol=@JR_U2tGVFe#@KQ`6RrJO^mgJ-v*lr5o2Z*>T9 z!TY3`Q(Bi7C3&kF7kqXRz9`+L#(aby?hf!79DNaA7yNafil9UhsHRz*Py{2su0YjQ zn30x6U#9IqvKeogSUxR^?QL&~v9lY*q7dGc{RHWzct2dSR##8$o|fPd_C>%Jp?TqP z_+Y6iJrMNH9LC!u=z$raVAu3GeArh>+?v-1ECOinG)mAnOJc`ONm(rw<&b@_dg{>h zDz}{Ko0p@?2u9Rx?w;t)%26l3sK3Pd4_Y0;r~`Anb!Lv&o$o~*AcbUOSK~(`!6e)j z-128xYc1t9d#vb__62_%FMJa71y7Y`Y0Vma;xb;%2Ys-1IF1}m*yHdNti4$gnfN?O zEaZkl&xe*v+Pm2T_!IbbGCaV-`x4-nfSWHiVFrGT#w(>F+4{e(A{ai*+RcITR0;cz zs5Cw$g1HHjO`53zP0WhUC)5r{vLzK=EAcD+4OyGlrgl%v(LBwQ_&tIjpGc#=4)4zw z$Hq~gVs>UL#`l+JcBq}Jzxq0AfSWf_XIQ(aJL&u9X*CvZKk^dgj(~DKXc@D-N_O9h z?=1IY?9HVu}zlRU4U^igtG?VA<<_eeSe)G1hZKWhc!149H;by(*mgox0*&j>Twa& zpjK_qj1rxLk(t|R6a{X#W1ct(*qh-N;BJCD441w^cmOWNXW{zc#^A1on}^#1w*~IM zz}*e^4xUGOK-hSHFX8EX5gHe(rjlxizQuPQdyBA+8tRJBdA~SjDzJ|e=cTHE*-Q96 zgMQ;R$mbYpUIQA81si8>=lnIH56#@pvsn+I*3IHe=-sg24!olsOg`L-+C@1rM~m5m znL8lefi7xQpie`Gnr8>Sq2)l!0L}wF2e%dOmru*-p9TXnchGD$aQ-XcPG14}99$YX zVwQFK`*3ml(~Q2)Wcm_AB3pAY_L2V*FrOyfid_%Q#Zk0d(n;S1U014cWXL;H``Ch+ z+TtX0thwqWzV~+tnrEpxO)z~a)HDBC zt>Vgyngd=5xe3zwlPXV0zMRG%Jv1 z6V(VV>7F&Mm|3nJj)b~6?LziM%<7a*MK@C6=%k!2eU?pV8hSgQxwIbjJb99`Te$R}0@Pj?-SG zGQEpWB6t+^g#;7bd5wwAlx^a-TM^c-Xo%9lE#6;+^&n6@$vx;nC7nb8mbYG_&K$}7 zkSm!q7m+H%xe?C@GAQdIewAgvECX+0zaiDgx9Szh;q=RjhCKI6lt$Zp`*mQ78vUki za^XR@P1gOkZSvROx~AskHdzO0y*Dgp-gi2{+7W5tw1)l|ktB zs%q2=d8lXjv6|n)`4|aU#EsMVh4JO}F6_r1$2-t#J3r91a`T<7(ScapN(>Gqb<9VPq|zBXdo*WK=AFW^G*4?xI-VGZ!DL>JnzDbJS z%&}-H8JDrxahb4l>8K;-ghk`=oR!aud_FcL6VYVKip%3kX9yWK3*lThv{MF#6IVU; zqKtv6x)50>*HKv4(JApF9ov?vXl~FFB9^pe+&Y$wS<=eo>|DK&GM@*MQs6Dduk?n( z4`pl)b8;zvA(M2ZGm-^_-i(8sg{&j@TKTM<$y+j%vSUYNchre?5 z$#gU~!nN9G#q3Pn^)ZYxDpW^Rvee*-CPBxsGDIc?LFL(L$CHVq#gyqM^7;Efd;gXU zi zs6#9p-K^v%o3oA`LNnVesBX?sGOv7FVn^bT%Y0n!vq(@01Gy@Zc4Wsr{(%w4%CCmR z-Z<5|j&dr3te}L!=_HGHPbxZ?XZa4NJG-kS3c(4if|@bLqAF7&SX3E5wU*Hf1@MzuQiOGAuz63pyr4Ft$+B<}j^; z{QGm!*b#qETD3uliQi86!y_rec6ZjwMIAfm-G2jA)1n5Ans6z+^k|ELnC?Fol73GWN$Y|n3$A( zT*gLHQfuRiJVRDA&cX67Ih5o?8k*APZE0xl=%B^mOibGG$1PSU8K*zs-|(<02U1rN zv(ewa{$ZUbi*_fYN@2$AIKk5~khDZ{umJ9mGEHU@wuwn|!ZzULC*&)zCNJ=Haqkb9 za;}MKzhO)V#q_8y$+0EmPRTxK7Y-kV*t zWQ!1enS3FewR4afc`TVj-E@}(xL{l=E;F_x2Q5bqaL1ziD=649F|JOTu%NXe91_Bq zuYi&VlpDoeQ^JS$$hn1t(R~0F0)jZAe`UGHsRhWq>Mua0Av=#AzWh|uBi#6dli&Tz zd;WD}hl*GA_GbWDS1)b@doE282WrfcJA+|YFm*M6K{Ue&qbZOFeUVICX*)MUHiks= zvq;DX3WA)_Siu~nsu-8vJ)*9VIg+uDXOwXv>S0z$xxZ(B#4RN*Tk>*MOI&UbvHk_m zZ9|Dnj1L*ej)(i+aPq7%DpBcc_oN|0Ktlmv85 zP7=1>$1I6tT!7*#>efdkS27Zn2y_g0-sm4$P}F5uc|whaj!Z{V0LPM1*}W|cV$vh( z>grko>*At*D~u;3Eo5ah0pm=9x|9rjV=y2YrLBwG8LPgcZIJx;MvQzB9~7>=kz@Cm zP#_y`HGj-2H_g2jX;6g8&D_dcIdoT@#QhK`oj~s)GtsowX*gu~;8IT2P+7sPl8i)R z3`!)HO7M`3SQbl2Pf~K{E$vKdWHl1qErsZI+mB_Xky;K|GAfk?-rBospClwiJvv@y zh#S;d&q5`3DjAXaEUXVS`D~OsMKD0RY4PPNSL*O>`hp|vglT;cA{o;ylPKHQ*W2AH zh|85fzwzAU#UwGVaHTe-C7(FC))ilQgvFhuxU91&t=x@j=j^nRN|2KtPt7PfaJ|~C zlb1e!wz%&X|6p8!mh)Ne|c4ZP~kb_ukG03l@Y>Sl`|qXkl~1 zNGCGq=fpsRt#lxsc{>GN6=xHMQ^{4`;FOXcVmj$Vm=x6KTk+Kd<9f1=EES@zkj3r; zal7y=xkvRo;)<>WLi8K;Qyi-6<)Kcivy*=9q9xzLe8V1IykVnEXMkfs7xje2dU~n- zj`q(N@5Q<#Zd4Rio-r{WrPpKTOBL=BRa6G|ik><#zeaezrJir&YAo(62^oU)Q@B5* zch5f^W5_Cfl}TSmS{4snffSxCUMwl#K^Ds8KCXfl1F0iLIM1aafdk?o)f%0dN=3oZu3+a=n@5zEPwRsb(#AwvcnHMXnzqP0k=+L>z6 z5IiU0WIG`?^^)Fav~EDShhGy_H51MD1;w+lI_ot#}jf3Aub+;%Dp6Q*}9_lQF9yXx*q8-ejk zH_lO+WE!;Oh0?=lQ{015Z>sZ0V=>sW=wR#=V7S$2EF zJ0p^Hjl8oZf2V@X^B2;N#R?dff|#c38-Vm`IfWFnX%oLm4s9C{;h<=ELc>r+m0%Jm zW3(l{*0m0_eR@2aM{eEp(4gr}wa4dcl>3#RDEGOKYX7U+{oAX;zkpe_x_OV9{9pYe z75~+f+8x$zM!RwC9$a`MBZ`G#H6$1*Zul&u*s@TOU?4}2YyVSYMl;8_TEgP8beD-a zwrC-R%aWo4R!XQ&2-B#rg>s-qG)to(vXasmmBzW_H!9t=|Iv5zSQYbB+L$ACpGXdy z9zTU<-el73heb?=8;ece$&tp=VovF}y~ZsJ@+gALX9JWiL?!&BMYu~$I<2BIzD?}U zjZntQKsFlkP=dnXFeg^yx`vang5s$*#yQZ=UHlFIp=Swn9H{)E4DL>4FpuWL?PO&x zChwQ9Z>brq)QX|0epSLuu(jmZa^bRV$WB{r&QQS_YJ=@*rP_{K=|USi|9soN9lLwl zQpo}OL4mcE>#&yjDO-{xAtv|`nGT1T=Z8?VpfSWD)=arW=&_Trq*7y@a*hQA2%Iuw zB?pHFpwDie_^PzgI1EMyQwO9auZ4^z#r-q6IFm(9%($ZW>$}n$H>sIVGZU)X#hbd_ z{0Jvc>G`eQH{W6Y8hd!zpP`Az*_AG&^g@f&l)Z-|H1Uxt3g zuMh(&9&LGO3j{zZj$msCt}018%7gy_*jDEG1pEsjMejcEQs7+*{QsqZUAppfRr@L) z+u(hk@>d)Gd>ucjT#U8Uvq8JJXxFFR+q7$(TJ=(WP6yC%ik@lZ;OiOc;ruohO37;y z!T&!x-ju7ozZ<7^^vVm@gH(IM^D2ecj@Ava`^abho!t|jUn>8}jqIMhOb(9|mEVww ze8_(ypk8np4ZpZ4P4K(!Z$<&0B6(-jL+;qgeKG0~J>ny#m!#quE``&h@u4s-RQs>z zP#Vr_B5O~*`VG8CjQ`sB@A*vp)^NB}uG+e*Z?)Xmx~{cdb_CitwYPV)%T;?Z$l4Zl zRJeaVwpO&}hhT*}(E-uwSi_EJP14$MR3qg9>B*1XOhW4+!_%s5Dxq;jv+}$DYuq;> z){2|4n{!6Zp-|e?q4-p=CKT z08D=JV|~WON0onq(8A-<^7nynW>tXsuj7^XD5caf0h5AVlOHlRC%l}V^3l)me{M2Q Om7)8`=0>>XiT?%hlsK;d From 5e49e89cb6e71c8bc06fe9dd1afd4037917b10bb Mon Sep 17 00:00:00 2001 From: Pavel Dovgalyuk Date: Thu, 5 Nov 2020 08:51:57 +0300 Subject: [PATCH 3/4] target/s390x: fix execution with icount This patch adds some gen_io_start() calls to allow execution of s390x targets in icount mode with -smp 1. It enables deterministic timers and record/replay features. Suggested-by: Richard Henderson Signed-off-by: Pavel Dovgalyuk Reviewed-by: Richard Henderson Acked-by: David Hildenbrand Message-Id: <160455551747.32240.17074484658979970129.stgit@pasha-ThinkPad-X280> Signed-off-by: Cornelia Huck --- target/s390x/insn-data.def | 70 +++++++++++++++++++------------------- target/s390x/translate.c | 15 ++++++++ 2 files changed, 50 insertions(+), 35 deletions(-) diff --git a/target/s390x/insn-data.def b/target/s390x/insn-data.def index d3bcdfd67b..b95bc98d35 100644 --- a/target/s390x/insn-data.def +++ b/target/s390x/insn-data.def @@ -379,7 +379,7 @@ /* EXTRACT CPU ATTRIBUTE */ C(0xeb4c, ECAG, RSY_a, GIE, 0, a2, r1, 0, ecag, 0) /* EXTRACT CPU TIME */ - C(0xc801, ECTG, SSF, ECT, 0, 0, 0, 0, ectg, 0) + F(0xc801, ECTG, SSF, ECT, 0, 0, 0, 0, ectg, 0, IF_IO) /* EXTRACT FPC */ F(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0, IF_BFP) /* EXTRACT PSW */ @@ -855,10 +855,10 @@ C(0xe32f, STRVG, RXY_a, Z, la2, r1_o, new, m1_64, rev64, 0) /* STORE CLOCK */ - C(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0) - C(0xb27c, STCKF, S, SCF, la2, 0, new, m1_64, stck, 0) + F(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0, IF_IO) + F(0xb27c, STCKF, S, SCF, la2, 0, new, m1_64, stck, 0, IF_IO) /* STORE CLOCK EXTENDED */ - C(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0) + F(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0, IF_IO) /* STORE FACILITY LIST EXTENDED */ C(0xb2b0, STFLE, S, SFLE, 0, a2, 0, 0, stfle, 0) @@ -1269,7 +1269,7 @@ E(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL, IF_PRIV) E(0xb98a, CSPG, RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ, IF_PRIV) /* DIAGNOSE (KVM hypercall) */ - F(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0, IF_PRIV) + F(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0, IF_PRIV | IF_IO) /* INSERT STORAGE KEY EXTENDED */ F(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0, IF_PRIV) /* INVALIDATE DAT TABLE ENTRY */ @@ -1301,17 +1301,17 @@ /* RESET REFERENCE BIT EXTENDED */ F(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0, IF_PRIV) /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */ - F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV) + F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO) /* SET ADDRESS SPACE CONTROL FAST */ F(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0, IF_PRIV) /* SET CLOCK */ - F(0xb204, SCK, S, Z, la2, 0, 0, 0, sck, 0, IF_PRIV) + F(0xb204, SCK, S, Z, la2, 0, 0, 0, sck, 0, IF_PRIV | IF_IO) /* SET CLOCK COMPARATOR */ - F(0xb206, SCKC, S, Z, 0, m2_64a, 0, 0, sckc, 0, IF_PRIV) + F(0xb206, SCKC, S, Z, 0, m2_64a, 0, 0, sckc, 0, IF_PRIV | IF_IO) /* SET CLOCK PROGRAMMABLE FIELD */ F(0x0107, SCKPF, E, Z, 0, 0, 0, 0, sckpf, 0, IF_PRIV) /* SET CPU TIMER */ - F(0xb208, SPT, S, Z, 0, m2_64a, 0, 0, spt, 0, IF_PRIV) + F(0xb208, SPT, S, Z, 0, m2_64a, 0, 0, spt, 0, IF_PRIV | IF_IO) /* SET PREFIX */ F(0xb210, SPX, S, Z, 0, m2_32ua, 0, 0, spx, 0, IF_PRIV) /* SET PSW KEY FROM ADDRESS */ @@ -1321,7 +1321,7 @@ /* SET SYSTEM MASK */ F(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0, IF_PRIV) /* SIGNAL PROCESSOR */ - F(0xae00, SIGP, RS_a, Z, 0, a2, 0, 0, sigp, 0, IF_PRIV) + F(0xae00, SIGP, RS_a, Z, 0, a2, 0, 0, sigp, 0, IF_PRIV | IF_IO) /* STORE CLOCK COMPARATOR */ F(0xb207, STCKC, S, Z, la2, 0, new, m1_64a, stckc, 0, IF_PRIV) /* STORE CONTROL */ @@ -1332,7 +1332,7 @@ /* STORE CPU ID */ F(0xb202, STIDP, S, Z, la2, 0, new, m1_64a, stidp, 0, IF_PRIV) /* STORE CPU TIMER */ - F(0xb209, STPT, S, Z, la2, 0, new, m1_64a, stpt, 0, IF_PRIV) + F(0xb209, STPT, S, Z, la2, 0, new, m1_64a, stpt, 0, IF_PRIV | IF_IO) /* STORE FACILITY LIST */ F(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0, IF_PRIV) /* STORE PREFIX */ @@ -1352,35 +1352,35 @@ C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0) /* CCW I/O Instructions */ - F(0xb276, XSCH, S, Z, 0, 0, 0, 0, xsch, 0, IF_PRIV) - F(0xb230, CSCH, S, Z, 0, 0, 0, 0, csch, 0, IF_PRIV) - F(0xb231, HSCH, S, Z, 0, 0, 0, 0, hsch, 0, IF_PRIV) - F(0xb232, MSCH, S, Z, 0, insn, 0, 0, msch, 0, IF_PRIV) - F(0xb23b, RCHP, S, Z, 0, 0, 0, 0, rchp, 0, IF_PRIV) - F(0xb238, RSCH, S, Z, 0, 0, 0, 0, rsch, 0, IF_PRIV) - F(0xb237, SAL, S, Z, 0, 0, 0, 0, sal, 0, IF_PRIV) - F(0xb23c, SCHM, S, Z, 0, insn, 0, 0, schm, 0, IF_PRIV) - F(0xb274, SIGA, S, Z, 0, 0, 0, 0, siga, 0, IF_PRIV) - F(0xb23a, STCPS, S, Z, 0, 0, 0, 0, stcps, 0, IF_PRIV) - F(0xb233, SSCH, S, Z, 0, insn, 0, 0, ssch, 0, IF_PRIV) - F(0xb239, STCRW, S, Z, 0, insn, 0, 0, stcrw, 0, IF_PRIV) - F(0xb234, STSCH, S, Z, 0, insn, 0, 0, stsch, 0, IF_PRIV) - F(0xb236, TPI , S, Z, la2, 0, 0, 0, tpi, 0, IF_PRIV) - F(0xb235, TSCH, S, Z, 0, insn, 0, 0, tsch, 0, IF_PRIV) + F(0xb276, XSCH, S, Z, 0, 0, 0, 0, xsch, 0, IF_PRIV | IF_IO) + F(0xb230, CSCH, S, Z, 0, 0, 0, 0, csch, 0, IF_PRIV | IF_IO) + F(0xb231, HSCH, S, Z, 0, 0, 0, 0, hsch, 0, IF_PRIV | IF_IO) + F(0xb232, MSCH, S, Z, 0, insn, 0, 0, msch, 0, IF_PRIV | IF_IO) + F(0xb23b, RCHP, S, Z, 0, 0, 0, 0, rchp, 0, IF_PRIV | IF_IO) + F(0xb238, RSCH, S, Z, 0, 0, 0, 0, rsch, 0, IF_PRIV | IF_IO) + F(0xb237, SAL, S, Z, 0, 0, 0, 0, sal, 0, IF_PRIV | IF_IO) + F(0xb23c, SCHM, S, Z, 0, insn, 0, 0, schm, 0, IF_PRIV | IF_IO) + F(0xb274, SIGA, S, Z, 0, 0, 0, 0, siga, 0, IF_PRIV | IF_IO) + F(0xb23a, STCPS, S, Z, 0, 0, 0, 0, stcps, 0, IF_PRIV | IF_IO) + F(0xb233, SSCH, S, Z, 0, insn, 0, 0, ssch, 0, IF_PRIV | IF_IO) + F(0xb239, STCRW, S, Z, 0, insn, 0, 0, stcrw, 0, IF_PRIV | IF_IO) + F(0xb234, STSCH, S, Z, 0, insn, 0, 0, stsch, 0, IF_PRIV | IF_IO) + F(0xb236, TPI , S, Z, la2, 0, 0, 0, tpi, 0, IF_PRIV | IF_IO) + F(0xb235, TSCH, S, Z, 0, insn, 0, 0, tsch, 0, IF_PRIV | IF_IO) /* ??? Not listed in PoO ninth edition, but there's a linux driver that uses it: "A CHSC subchannel is usually present on LPAR only." */ - F(0xb25f, CHSC, RRE, Z, 0, insn, 0, 0, chsc, 0, IF_PRIV) + F(0xb25f, CHSC, RRE, Z, 0, insn, 0, 0, chsc, 0, IF_PRIV | IF_IO) /* zPCI Instructions */ /* None of these instructions are documented in the PoP, so this is all based upon target/s390x/kvm.c and Linux code and likely incomplete */ - F(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0, IF_PRIV) - F(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0, IF_PRIV) - F(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0, IF_PRIV) - F(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0, IF_PRIV) - F(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0, IF_PRIV) - F(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0, IF_PRIV) - F(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0, IF_PRIV) - F(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0, IF_PRIV) + F(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0, IF_PRIV | IF_IO) + F(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0, IF_PRIV | IF_IO) + F(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0, IF_PRIV | IF_IO) + F(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0, IF_PRIV | IF_IO) + F(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0, IF_PRIV | IF_IO) + F(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0, IF_PRIV | IF_IO) + F(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0, IF_PRIV | IF_IO) + F(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0, IF_PRIV | IF_IO) #endif /* CONFIG_USER_ONLY */ diff --git a/target/s390x/translate.c b/target/s390x/translate.c index ac10f42f10..be32938f6d 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -1214,6 +1214,7 @@ typedef struct { #define IF_DFP 0x0010 /* decimal floating point instruction */ #define IF_PRIV 0x0020 /* privileged instruction */ #define IF_VEC 0x0040 /* vector instruction */ +#define IF_IO 0x0080 /* input/output instruction */ struct DisasInsn { unsigned opc:16; @@ -6369,6 +6370,7 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) const DisasInsn *insn; DisasJumpType ret = DISAS_NEXT; DisasOps o = {}; + bool icount = false; /* Search for the insn in the table. */ insn = extract_insn(env, s); @@ -6435,6 +6437,14 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) return DISAS_NORETURN; } } + + /* input/output is the special case for icount mode */ + if (unlikely(insn->flags & IF_IO)) { + icount = tb_cflags(s->base.tb) & CF_USE_ICOUNT; + if (icount) { + gen_io_start(); + } + } } /* Check for insn specification exceptions. */ @@ -6488,6 +6498,11 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s) tcg_temp_free_i64(o.addr1); } + /* io should be the last instruction in tb when icount is enabled */ + if (unlikely(icount && ret == DISAS_NEXT)) { + ret = DISAS_PC_STALE; + } + #ifndef CONFIG_USER_ONLY if (s->base.tb->flags & FLAG_MASK_PER) { /* An exception might be triggered, save PSW if not already done. */ From 77280d33bc9cfdbfb5b5d462259d644f5aefe9b3 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Tue, 3 Nov 2020 13:32:37 +0100 Subject: [PATCH 4/4] s390x: fix build for --without-default-devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit s390-pci-vfio.c calls into the vfio code, so we need it to be built conditionally on vfio (which implies CONFIG_LINUX). Fixes: cd7498d07fbb ("s390x/pci: Add routine to get the vfio dma available count") Reported-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Matthew Rosato Message-Id: <20201103123237.718242-1-cohuck@redhat.com> Acked-by: Greg Kurz Tested-by: Greg Kurz Signed-off-by: Cornelia Huck --- hw/s390x/meson.build | 2 +- include/hw/s390x/s390-pci-vfio.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/s390x/meson.build b/hw/s390x/meson.build index f4663a8355..2a7818d94b 100644 --- a/hw/s390x/meson.build +++ b/hw/s390x/meson.build @@ -27,7 +27,7 @@ s390x_ss.add(when: 'CONFIG_KVM', if_true: files( )) s390x_ss.add(when: 'CONFIG_S390_CCW_VIRTIO', if_true: files('s390-virtio-ccw.c')) s390x_ss.add(when: 'CONFIG_TERMINAL3270', if_true: files('3270-ccw.c')) -s390x_ss.add(when: 'CONFIG_LINUX', if_true: files('s390-pci-vfio.c')) +s390x_ss.add(when: 'CONFIG_VFIO', if_true: files('s390-pci-vfio.c')) virtio_ss = ss.source_set() virtio_ss.add(files('virtio-ccw.c')) diff --git a/include/hw/s390x/s390-pci-vfio.h b/include/hw/s390x/s390-pci-vfio.h index c7984905b3..ff708aef50 100644 --- a/include/hw/s390x/s390-pci-vfio.h +++ b/include/hw/s390x/s390-pci-vfio.h @@ -13,8 +13,9 @@ #define HW_S390_PCI_VFIO_H #include "hw/s390x/s390-pci-bus.h" +#include CONFIG_DEVICES -#ifdef CONFIG_LINUX +#ifdef CONFIG_VFIO bool s390_pci_update_dma_avail(int fd, unsigned int *avail); S390PCIDMACount *s390_pci_start_dma_count(S390pciState *s, S390PCIBusDevice *pbdev);