From a623ee44c4e1f729f1cd2f59038a1a153be1ff64 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 8 Apr 2025 10:11:36 +1000 Subject: [PATCH] Calling: Improve the Picture-in-Picture popout --- _locales/en/messages.json | 8 + fixtures/cat-screenshot-3x4.png | Bin 0 -> 174013 bytes images/icons/v3/maximize/maximize.svg | 2 +- images/icons/v3/minimize/minimize.svg | 2 +- package.json | 1 - scripts/prepare_windows_cert.js | 48 --- stylesheets/_modules.scss | 159 +++++++-- stylesheets/components/CallingButton.scss | 14 + ts/components/CallManager.tsx | 11 +- ts/components/CallScreen.tsx | 9 +- ts/components/CallingButton.tsx | 16 + ts/components/CallingLobby.tsx | 4 +- .../CallingParticipantsList.stories.tsx | 48 +-- ts/components/CallingPip.stories.tsx | 311 ++++++++++++++++- ts/components/CallingPip.tsx | 328 +++++++++++++++--- ts/components/CallingPipRemoteVideo.tsx | 155 ++++++--- ts/state/ducks/calling.ts | 52 +-- ts/test-both/helpers/createCallParticipant.ts | 34 ++ 18 files changed, 941 insertions(+), 261 deletions(-) create mode 100644 fixtures/cat-screenshot-3x4.png delete mode 100644 scripts/prepare_windows_cert.js create mode 100644 ts/test-both/helpers/createCallParticipant.ts diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 1184f47c5e..af8fe63f7e 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -4123,6 +4123,14 @@ "messageformat": "Leave", "description": "Title for the hangup button for a group call." }, + "icu:CallControls__JoinLeaveButton--hangup-1-1-tooltip": { + "messageformat": "End call", + "description": "The tooltip for the hangup button in the PIP for 1:1 calls" + }, + "icu:CallControls__JoinLeaveButton--hangup-group-tooltip": { + "messageformat": "Leave call", + "description": "The tooltip for the hangup button in the PIP for group calls" + }, "icu:CallControls__MutedToast--muted": { "messageformat": "Mic off", "description": "Shown in a call when the user mutes their audio input using the Mute toggle button." diff --git a/fixtures/cat-screenshot-3x4.png b/fixtures/cat-screenshot-3x4.png new file mode 100644 index 0000000000000000000000000000000000000000..95ccf296204b28eb2a3a1657bbe5a366b4100707 GIT binary patch literal 174013 zcmZ^J1yodB*Dx`_3?SVgol-+c=g?hBrw9X*GQ`j|gtT;rq)K)dnBext9e_6VO29|Hs9k%qdmAqEC!%HNj{i2E0F*tRwB z_XB_`>L_AhG$a$;+u{7JGux{h>R@05aAIJDAuup*|DwWnF))0<7#MrD7#LF77#P%^ z`JDzbe+l{yrW%eqIv7v>!axixOfn4YzYyl%2P4KA1Mn{x1LLozzXiJ(^M9ztSpS=f znNp1X-!R`ljH@eUBN!N1!p_f3y-jtrrR+W21ngdVyl@bJyLtY@fFT2y`U|=_c-t|< z-CW&aQgB(;e{o3th5tbdvNHdR#oI-e)l^5HS;@o8fmuudEC6Pe!)In@mhpP&C}pUu z`d{LIYqG3P-rk;4f`Wd2egb|X0v=vaK_N*=NkOo%ps+CiUk-klzq_{`oZlVB_HQNs zTaU5>%-+k{)7#m@o%tWVb}u}9yk%Kg|1tF6<==ifz@7ick~{3b!ulJa;6D^WApx-9 z|4Yo<+427)_7COXV*iTk-{xfgQ6{DD40mufQ+9T9aEJYMO-@8aSms}5{x8b^IQnl% zB@b5*FC$Modj~n8{}TBR)c?u-FFU6HV@DJW{!csqLHQ5KfBcrx^Ky3h+ob*qOFXO0V3a?a_w@?6zy7v;QaX~SmdvzpktVaEp_VkF$LLll<3FudIN1_VyYT)f z%eP3zY;=3=f|HWb#JW}_brg0{wF1B1{kDyajLDPsJMwV<(b3icyK}et(e=j(_OM;^ zwdbxYuj`7*m9gx;wE2b`YV`=Hhjmbzfb8*2Vw5$smuhTk>hQZ-+ur<=mKQ_(mvL)R zV{L-8RHV200&QS57FyrcCFy(aghsdTt@gs8uqQCzKS=ipE&_SAB!>55NspylJ78D3 zEp_414wZXyLD%)8&jxSof0s$Od3adE*Q35}jb({*>EXH@7J*3_c#5X zmA36Z`^Fg}#y-i8tI&yj(C>)K%|qOzCg`O5(OQqi)^V7~)k2-kk8aPSD5;{r_57m` z31@?9#F2gWPkk4-l8S(9B23{U*JVbPx*kX0yDaQ!rBeFH*>kYZfrT+SS@t7I0nIU5 zH`@!>NqByq7eC_#jr}+LFXl|d#FYf6mlC#yztZQW(RN8y>K1+IkY((SRI{l4S{lOP zPxBSlZGQgtb#}~5<)mw^RhK!`UNU&wd#)qkaCtk!#D+h6s-biHNZqL(&I2p{y&@kF zc-B%E>;}79>-oB+l_loUeKNc~?^b{0dh|nNp%OAkEH0QIT(bA7dwm&X*@0JWLQtBBz$#DV~D)@4u z?}NM3)R)6F*n zbFG>F`={GGzArIDp7aj*t&{s?2#vsOV7=~})W164v_?6S2O`w73BFA{s3nTG;}5(e zd}o6Hnp93b9Y2r+b6T?|N<+x6@P+2Wek9gGI#p@4_R(7s8JdZFStDg@f4d`1sfiQz z3&t1_lf$XLQb86L4G2c&`&@!@HE#;fK-n+NW<$@0A7O!MG?8J0CA6i)N0EaNs#68_ z+>i1;$EyYJl>&7RYhPC|mUB&-g6he+l1vy`!fud?K+Q;|1z-nI@JylD08!U{Ke~Nc zvyunfnV=-3FypC8m%STUN;tCy{s}1nJ&M~iN3e0INf-$L*tQfkNW2TRMxB%llWpa5 zds{SE-mASXj=#G)p34S`zjx*!q+y^r-Yn3NR#FpLpy0{=TE4lQPg+seed>kkwt9#R zKZXA)&(b6)@?9 zhhF;!rRmwdLT*xun;uuwe5R4|CGOf-JZcVbb z%$pTu?ME5nTQ2OEj({UvXoz8nluI1IMavo+U2Mrk>7{;5%4#qE7(z zRIiU<5->#r;x9p(%3}T$JmIexrq8kEwuU<^i{}JO3gtkgU=oQ_?#PcOweHpdH|33; ziIEEmw!N3jE;t0`gI;oU2f`H!+-Z ziaKXFNWk+S-sLl(SvD|P`XcTB^W|-i#Y4oHi~%FyWQkjQu6VUqvxHBWv>L z8Pz4ROEvmqsHo?|ZOeyvcdk^=-}hQ7T6iQ z2RRY8c_ddR&EM+(0SAlXPFdPBP2?sO8Dq=pbwo}U1>y{J(hi%un0$Jc`xc$7pR3es zA4~LtD(L{NpX=EYNea%yCilXO{|4#jL!KH&SRINBdjFZ}6>(gj z*25y-pZYZZ2?qfjkao~$;m8koKWNbryklJb6yK$-8q4^wVWUA8mVMQD&$?(@xXi|m zWMgOlB3&g~@dHV)&U)Y@0D-Vpb<_ajU*-?XufNS}bI-)MNT@84buf#iXi-M%oaXmu zyjt_B*d6D0FrU}GWj+A;***3FuJD2yPDL%rLnubKc(e8;U1;;kN?aKD36aw*jEr~= z7Azmr9d4+OsPB{g6rD9A(|V7DsxyY*gw;~NvWA4y4WjdPksM5z2SYrI^)3 z>)dB*lE}wMxLBbxEpd*Ay)#ZC)i(or>f4LzC?8KoOJsrPJ6~Dy+)TM^RAj_h4zswN z1f?c}<*%&QV8&=+v?0Do@W2^y2s-kW2S64+wU>rS`zDxw>OJ*iEQievt*xbjD>u0S z3f9_HTuSkLtd^udev+b9B6x2(GqnIueMhCKcm~OF?w!fcS{a;a5<>HpqYvnqLK;I= zj_lWHt# zPA5Yr(&iV^cKG^ETsI#Zrb2t(RsRIiurOl15^wO+klWAFf2k9RM+lwnYvpE)KvWt| zvT8pWF7hn^sox-6%%(baC=bfRyjb1x@Epn`(WM|w=xMSV?N?Lo$Hp>xyYLrxZB4!k z`ng;WePl}Er&5_64nn1hBT~*vf3`il4eJv|imRm(rPl{(1W4DqG1sz6l|DSi>Lh2- z2iCp(t|IN}ee!dNu5ZfP|1HwYpR9x$U$amMDQiEn)YAZ30>P}>(XW_=CRaMPzwEAL zBbC1aOLE11xM)M^sa9?y^`N8Jj|_=gemk9j)pBd^Dc%SA8xhseVGC|fxS@IT%3j$# zO#kL!`*-_>tSA}U zu>_PLkw#aozZd`~{N4~ENn^-r3#_n)%QTXjh=pLCI1Nu?QMVQk=t31ABYXgkpaZrr zT(#h&7uxDaiw4F*b=YmKSDZ3Kd8uiXoo-xJ+b{Mp; zI&U~W)`M7{-X7%cP78n7PTbEUUJGm!d#*30cS^WYB3^GMJ+qJqx7e8|TCvpP-oO5` zkwTPXPM{ItJREj}rgg}y>5{7mcBb4t{4YuT;`Qbk+9loVpdr!lnw4Qsar= zB$cVHi6r53dB=~mr*ZBBXxI9vNa$v9Xt#u;V6(*{p2ouK6@1|X*l*(u43qG@cnLM% zn7(AhES5nkg!dN(0OErN)Po77wWZyBX^JUlP2)ywRrM`IrV3B8!gK`e46vji4uFD7 z)vAunik@B(+&G>cW&%sZbN*(v@UY2u;vB5W&v~kiSW0IbJU`mlF*^7=RGYEz#|_(! zck@e>SSBc$)f@M9P^nI5p1`-kS<`Eh*oFQd@jl9LJEA|o%UX?eJ9QyS)ibRdw6jh1 zle&Og3_HuD)2$*wI1((qk)vytVR_TVgglfH-NUKB6K3EtrP@ah!3k}ucDV$2=3SI^ z3X<)u8j(Lqw$pdaW54$JMqASgm20O$D+`qvaae^M;j!t%9j-6Hco5I+ZVI;vTI=ad zB0L)}j)&4mXUx_9;$7s(w1be$_*3nd&u|`HGDK#adc~43R1^u~782kzdVE&u_~Ht2 z!7UIzmD3n-HS(R{zh@JrlA0mgJ`Cyno+7DKMS;B^trKU!u`fb9G9<45f(fP@#0 z2Q$&VxwIm!{VaXdiPAxkcJ<|R%U~=mNyuA$x=D4(2uO|rS)|_NyhiV9X`p)ChryTp z2;ltHT43nekob?)`|A<;B_jYru)MKN>4^l3WpyMlEt}dR5v1XObR+mszz&hQ^<Y#Lrt&JdQd^f>vDhc+&+)Gpd#9`N%-bL=9@WbeO(IgOivIy%Y9WTxdTnGcrfro+E zxd_xpD1jo|-gh83q}w-eGoZ`UeZPc1g^FfQi(q+>;wBlsKvf;`*e#=gABpN65L-@8 zL60K`IAk<;mAM<3K>}zJ1>eDX^ruE4S;gzoF+uA4dG%(+Z0j$948FQ{d~fuh%3TrCieKz=e(uaP53HR6c zV>Z9NkRWR8yF8C>Gy9!j(6`0QF>+>#M2)WW+FP4;bW~%k*-`FJy)0fNdj;B$qEcOS z`SElMM}7uRiZRNS5h~CYd@ikgL`z5!IVe$qz-c&l6nBw`~c{OUa@aVYy4W}DxmuXf~5{f*Rz z#ET;4Zkk5d!G3PY=nr!U7{N%z3rqe|wRjKP`^AZQkYfy6FAyW)&xs zSf03WW;>pJwd~>bT!nB!XT7S5U`EPtCmHNW6@8ZX4cjZH2SZNv2Gt&Y557Gp&NW>F zeMVmiXY6jCLnwjT3fHLchuUs=7n>=8crk zO--Yy&9>yD@~*7@@E`um90$lpoIX>nj6>nIQoHYe1DJOyqxT5R0 z=&oax;iTC+Hd1{Z{tv1k5eQbP&xi{n*bDq!?{fAmYp-&hRpKboEedMzSv1l z$*hmd0zpemSEkcYQ7S>3&pgvl2?1EW>B^^SOFW?m&v^Suz0z|}2p{SzIJ`Yiy?H@y zlZ$?hI2rXtx1#|>#FfGVqc5R5uEXCBowC}dv1I6R$qH##-QJPY(g9>>xS2O~ZA4!E{ijppsB-&qD9F)_rF4e0E7bYv zR=V_(ir+Lwm@!z`c1l(TmB-~5$Z+e+@O3!RM|fi7HB&B8sq4)4#z;87x9>rS_37$` zWAEXj4C)fUNCs|6aJQE)_3Q9rt;CmgOX22Qe#g-R`c|G2+d^bdz9nkXKo-Ge=U9k4 zkY^t(uQZV2P@!&9m?BR<7oA`#rDYY$7l>s?6%da!%DpP_a9HkKixylZFKi*;dC;4d$5aZdQrm45 zb_oyWVK34z^#pO?VX}Bko0e0>)!B6Q2F(u!vd`mvYUt^k#*Yju25RnB9BOzPN>@$S zPQ9&ZN7VjKj8AFI*2+O&pG)GG)y@!GW-DPWWydobG7*VflSz$77&)(0r=NZnfkvb; zi!lvkqYyZd$6)n@26W?%^Rj{-)N+rU@1)6$~loxD*b4;!;)4;JOwi-A>3ufo!C1}C( zyYMXAlwteVzWP;g!mnBr4xRvk!`;ed!d@$4!qFTp&r%im=(!zd=p|3mwm=P2#UvJX z-xPisK)F8Jz>-bX8R7dq=o8bYYTb?l7Gnr>+0?|s!eKvX;VePF9Puf_VzHUmh6JaT zRAC6u4q(g^AMdBg{DOHLqCOk%awCu>L@H3NW)Bd|DtfB9yC3M;&j_=EJhc}lx}qVp zMEu?TOSFopJ}*?!u_ePrh+?um6HTxg<$BPWZhNikB?wAJQ@};acUhJD6}YMSI_4`# z7*(vCbvwiv@%!fuBT`J*-t&Tj+uh-0o#s3`SQJUy`b0!P`)d)og;R#~zpI;hrA#x6 z-XF4jjhVg>t2}ZyohO5A!GlF&ns3YXu)aMVw5^3|+onSECzkVDxYuHp!#;R)eSEfI zjkxU}HfkjK8c5+7a4|>ll(=wG3g2>HP582@q)m2%Wf;ibD!e5U2(DbgB+4AsfHJJPks*y)J@Fc4f<6`x;~}d zDXlG!M<^4D58w!YvU9UK+#RmlPKX&ww#vX4pR(XwNX!x-=3h(7`IAFo>?giZay|OK zbUJ-7Ken@aNB^?+6oW~=b9792J^VQ#T$G# zf-nTZ!A6Xyte*>fwr({LkPHq~B>iM3QB+=aLMV!|u=o@AQ?Ood2+%iT(7$%8sUk5l zs>-V9XbP7`tv~VSY(=M`*^e=wC%Cm`s3i1dAqnO)yUKB$9`W=>R70#*b}REMh7X<5 z8J_G;96KTMif76Ab=#nj1)mR|zn^9EL%dK`!tuq^^Yi=a?VPyS>1i)f;$m2NDN$)B z)|OeMBy?$&9`&F77<22oqe9LJ)SL`|27gwnv!>uHCmqCQG(AnAUU3Uv+v>Sm<7Ml= zCDnU1-97d*#L3H6RBU(*ahm>1$XkNMbwh)YD81!7UBP^%50=)~=X(*vJ(iPL*9hu@ zo|$uYH_Bi~8BZ=7vt!#t%eZ3R@-I-)7Otj8;I7+Vw`faFLl023r zn2|AIXsl{Bn$zz{ISAYMz;8b~#UMfc3WcCPeE*Se)rgtTYb7*e?uuL6fnB2Jq5$Q1 zJJ&V~`+kgzERY(#`|18oWn1U7lT%Hr7@hzW@|`YKGDwoiSClF)JuC*cffvXNVj3!+#e=e9j7CevrTYVAnDR0ss95m~nnX+9e6_czc zOpme*rFAl@4w=%lsb`Vvrjh8Av<}8*8E72n z7e8%9j|ujq!j37(3elG$yx!f|P;G+VaJyjH;0f9@+ESHY4N_VPf&=j+Q=CXh?BMsZ zr;J=46SuzJyW37ZR>XMAr82;BXBWgTa~|iIIYGXwD8ZnTYA2i4r;gGd%{re0)ex1A zgr(XQ9&Wpl3Ni95?9LDQikLAiKqdyuFUGbJa0-4*ZBXNfDB`d2w-j-H)Nts4(sEmC ziD2PJVb3ujCN|6G!4&9ylTL<08?x9lt==NgHL;7RV@dfNJ!}7jgudEzQo!=jMHpKi z!O|N%v30O_iF{W{HS!m^Z0?T1A`U$VRlsZbys8f5CB^gMh>-oB((&)5+%c!Q&1oBo zPB01$f94x8V|oj!VSl2Y>xsc)Zbvr*GtDA{eqK8gb*Bs4S2ALP<}u+L+h2(+)`>N7 zYQD&8%QF$)LwHHXW8Rp_0v?5j!8x$#v0Gw2UYgth$)N}x=0|T|EWYU6bUE7~t0)5^ zva2mfq$&|=te(IuvxO-lOkeOXY$MPei6&s@Yx}W%i@g+9X=@XwjsHMmy|93Nv1p=2 z?$8n)?A9nGoo1_Fq(7*%n-6a9N$7Eapexx70?R&Px(&yUL92^gx)+QYY0BiM7@N>y z{c`>yGO8kZ2Bd1w2dJfgajnCV4}XFvBT~eM-tsBtoj4g;56z#gntmlA zZQPgauRYLIUz7^dKr~!WJ^Qy zm1Eaag6@$Ql?9#K*@`dSFst`+LW9Y7`5p{>>xQvUgxAMTSfMj2$czyEB5WNE5iVP- zCcR&GqN6>{JRqEfPE~YQvM}LbYd4iC{O`6*!I_xB3!R*hni2VMu=4Nh6 zw|;rc1nPk%80xt-(7agbvaQkm1bsU*&@WhxW%s2qmxK*B@V;F>Jp8$;=Mm|vQEoxk z=L6z^qy`~-&|^pkjUDf<7D?r56B(z0Dt*Y6QfH=H6@telb!gP zz#HmMeHOwuN%{`(*bWkA%Ihy{@$_&JdB2Q1!kygnI)+wuhIoCKk8=W_Ne@Sfe38;i z-7Gi(@3dN|?ySqEt1x$c?&=Kz7HKs)ZXK`gbOAKJJqZU1ZADoDU&Aq&)`>W;hO57u z)z4GehqqW4>JDq$PFUlsA8Wo82+6{b44#*up%X^|Lg)uy+QKx%>R z+^5lgT0$R0UHJ($3ZzHbS z;LDrOEI~O}A49nLf*0|1PH5z>FSORpQC6}LDI;Xf zVXmKv$=Z>1UY^80X(_cWY3}WWC*aRr%cChF)EXhAikQs4ejjy)N>|^UJ!e#{o@dE8BzS z1lP@W+LWpwS*JWmS<3lwz<`yE>OT8+UW&+%2mi}Uiu46B^X4Wk;UC*yx^<@+hd7%# z64c(3_7kR<>&26?xGt1@^Z(MAZhwm>PU9c2ZJU4z6SXLaYJv-Ozl?hmVN~cTK+F+g z#*{9^(EnHh9wM@^>$vNKT4)o6nTi&44>;^a7|6m+zVEhaodl6c(UO_b8ra5F=J%w$Mt2WshQ|gwTuDI0+;6 zdDEMVJHV3{4xD{fuLh{?VGBl~BZcru{^~vF6Vqwy{V-x)@&Ski0E1Vr>LtKf==;FS zLD#!=4--Za{~Mw~(&FsQDW;FaXZF6@$5%|;L?xK>?|h5qFVBqz_`t97F2-0x*op`n z>|+{dlG#70DD1-cH!B|RG=fbwazZW?uNyKSQ~?!SBtTXVIz8dq+)57nS}hC}RHlLk z?La{kQDy2Shh~IVO8&ybpyaw*Rg)=5IoM?-*la8n!W}H) zy+M(nzI>bK2>D=|AN>j)a9tXgL1bXcr_&W~h}L8G8oV(k7?xnF1_vPw?MGnWAP@D6rP+oJBZIv@x%=E7s3A9A=)@OL>`8N-dzs?^UQG-bl z+Ee1ncgYtK;7q?f|B?a*d=wqX0`r(NL>zQ;`YIm}H9u*B(}XOnUe!ZNSs+_7$s}KI zH2hf=S5kkl=L!>~bQidr34Z6|W!NCq4jgB~EGNolNY5?Z59^S(gGhR>c8@?5({bpu zp1t^r|AXe^kMFI#F&P1}9zAWI=1MaU&wHBXufwn-5Gvz8pNGbGaU+M8KkZ`Ixi~LZ zREkj_Ff9u6v*j|4<$QZ#~R{oqPGed7`7 zVvljk37>;3FH(zz?!|;sU8Kcf2X3CfII(^BKKaowInBDfeQk=q+4&nt^dVhog~cGJo$+u`JQUrsTtr+^b`kKsp(jP-7an9OY;2 zpb3?BARdy!E?D&QXkD5V-j6@%ZU6y6B6_@snDt#?krDGQq6Ylw#B_o}^N*(8=$QiJ z%KLX#Xh{-J8<)0aqBm?_EY&YMKOJw8m-$kFFcVM$lfb6(M~q~+Q%uK^`qTq&yKSK- za}oR>TW>)L2+Vc$Yo5A7p=PXKosUcitk9iB&q|s%8)6?*;Hu8)3O;L9k!Oi&r4tef zL#`0YT+RHwsmZw<&=uXNw1Ir2x*xNjQYFA;{Wk(LY90RL>kj`a^TW*)I*P0biUGu&5jGQT2(0Jo ze#`p7lBN0<-~Q%RtzO6A!okap*SfLE5h6S3>*HL@tOpn3_^FjD8hag1ea!W1G=ku* ztMr)tSpp4eB9x**oLc*2k8ce$2S)QzM2ipPmx-llPodVBNbb6wX!1;x-C}5q=gr4mG%68{TqnEeBW_9$PK(YgG1?Ug%q1n$-!_~Ep5t^*ckB~i^ z_~7WE<`McEf&HX(}sU#|LUBb1bC+=sD4nqZHAwdNVQ% ztMMsBJu{o60S)82ze#<33#7apw#IR&1hZ+hJNzdr< z_A|30z7&aFhJW?Hg>mMCAZ}G!26F>Je2Zk~UrgNhY|Zfmp|vgk^^+G5+@AAb%wNo( z7o10>CtG%Iqttf7zd>36dVFS#Sd;z6P)2jN#IM~Nk5l)UieKEk%HtBYe`krxv=#kL z=1JSsV6p^6E?=bkP)EG?=}c?>-bcR%+v~XGu>OSd9!(}& z>LRY;#!gzIz{={5kc!ZAM#x-$8yzzsS>E9w`MH~T8vO8gE?f;0{Mr3_s~Q;9)1?zg z5&rUU^l5oD|G5Lv!h1WdyOP%n-5B*g@UaoP!xx)o(ML1UlIb#aH^qT*Ox?iIMc#~* zl!K37j(b&UKj5jAFHWzG+ig`oI_JK(Eb^P=jF!;NF!#B*SpT6%j9sLK)5s_nK^u|Q z*K3`X2X*+t2UvFSCl79hfG}0ji;9CP?mxNOZ}ll3JSOk%Y_7~c6$H@q)*69I$)2n| zMkAG-*WNNWn}t9aN85)b5aoeXr8U)j?kl=cFTh(Z2Mni~ffhe{OXj2zxZ;uI4r(b` z#c!C40bn1{R6m#YM%z4yVGC)?uka4dho2Q@n!V6c<`E+Wn~mI>1gbv3b-^TbwdLV1 zJiW(dgdeG_fnG(`J1mRtn#@i0puu?RI|n)Zw>ZaRL#YkA?W1DWE6;hxsZc%7sS9~< zCCW+ic_iV*=OEp!j3%RaoH{G4_H@%_hlec6J``ev=bUYhh85i6u)19aF*6`3e8kx4 z+Em{0{_m37?o(4M3RB1??{u0Q#ySim4Zg9?X-H@cOS}3JT6fF1#qX+C0+I!dl!%;f z_&ID^{IIQdGAdZ>F=aluD`i+@pg`RHJ~BBLQ)=7016DMp(5{|_!DUaQ3lnu1gG$A% zOA&=!&n@2Dccaqi#Cse^vQG&Ty1Lf;-h2NuU(g*U%xulJj$aXgbp8Uq>yXTn=+uK% z8W;BFtl7<{Sd8mrghUrm`U8?DPlSxxVT*?Y11YDUwp~oLY-v@|nP8e# z6FAF}EKAG{$j7FE^3qGs$&juRrl-K;2O1oCF&`~tue#upKTd-r@E~)ctiI(h>E`}O zTiMEEbXfl~F{YR<+%mEHx0B!PYq@MkEnbIq{ND!ea(`JF=4xu)GL zoso42eMxlTG!p~aFj|vv_+)sBLlP z8~STuvEKpqHy_C;8@7CPLsRs+P2D|Bg_lzETyymLcb1>o?RTPeAx%?86+<@%?PWZI z+|*ZNulL?H`IqSTo~HW9k1D3_obe3k%HSXFO&YtejRfJ)2%yw|3)H~7g7G0s8-YH=GnJ9ylRa3HvC%9)SzE!hZRV^8q%X_{Sh@`v zO0Ia4X+Ss;Z-!>>PIt5o*ySUNK|WodZ(cupKS?Tf>t#y@0ll^-^ly5Y#wz(PoINFC z%wRWW&e0z)$-2q!`^qF%@ftUh?8$OTJ~yxZz_W=+Y&*IO_~YRZ#M*8I;B~$J`qP## zdkZ!ez7NJtzUC#(5r9A;uUk8RUHChxpi!nRr071D9#5lSd}9P`Ud9v&`SvS~L|CsC zPwTk*%zd3q7sw3JklYGJBr~&lq80|E^oC#&(W$-<%Pyp?2E$bAHEs#Q%%5CJWPQdX z%ew2n&fhx}AWn`FQIddGFd95HQm{)=nRv0dYZ~i0Fkl3vF{4;+r`kDjZ zN(dc353FbOG;?$~9Dr8G+_j?Q*Pw*khkfvGsYmX)m=CzBF`UbTpZ)6p9?o!jHsA-c zG|N(I>hx8^Zqgf+3QzhcQBJpJSBC+kGH%vHnLc#|&SNyZo0Qq0RI*Ic%_duIl)(|7 z(|}bK0TGA?-!xcWROOBO@Ca*+iKkV&XUPwAk|8vF5^9f94ZUS#3wyV%@@r-_XY7VI9+Ad+hNbM#gQESUZ}rbB75RIV`@oG zm)$QkZjv$wCo>|tFoIAFb9Ym1+PdNv$_2GzN9r!)&7|@q+X@>KzPd+fg3Q6HZ}d$^ zor{Vc4ozg_uC~^d^~pJxzZFSzpX%*<*uIuCtvD{yiMD;|keso%)*be~?YrvDc1K6M z|C#DnyQus|IaX!X=vv|k3*bS(e6s6R;wN5?Q7O(vARnZ5?8@}qA%tgTPyA3FA-siU zLj?N0<0&8U{LV>hJalxRuN4@G5woar~uVj{E?`(sB-%)q6tm=|}dI`%p zM(vWa!H?}YVQ=}ubWf7*h64`Rm{Zk79O}&ps^G255~)h8kyD`o4I$MVGC*EuDaKZE z_y(P9iJASm(kq0F#FRj{S^ADy#M{Q7il;I(24u&FQ3&F1wD(3*wiT-hHvJ8z5=FTmw7Zp9ip4?t7s`)-y?F(`Z>h{}Y9calG zT53qVb2{Rc0CTzc%Y@r`1FQmX*ep%?TleGG>}lpW8R4^BoyZLm>}tS(N0nfDK3r)O@uA8gwRLC8?*btd>Zm1hhEx=CW#Gmy_Z}eXP&LMp`o^fn_ON@%%f?J?7!*sLB zVsJmc*g6lRX(I2LFr2M@__OUJEkxH1efS62_nr*b`3qlU;UJ?3kL5zC$T6yIGd2Rb zZwtEL)HgaPm1ACjZ1E>8OOPd{1yi5jY(bNw_S`?QNrv`P-|DHrdG~kh{J~IR--Y+x zY8Dg>$cJ8Hh$?*W(Ik|3B0WR=ng+)?=&A3d*LaWQMh!BH9pD&(YvXCa^10tm_iK>| zv8vS>P<#%$Tx@H3$78?VMP3OB6tYH-b`Ls~68vs?T!dxE;Lo%kc!p@F#g7tGZbXQ6?Ed!yplbR?@4L z9JG}>zh+tBuMjh*+pK&uw|Olfp|l=2Tv=gJ%KT(CJx^>>g&9rPY|FdLyL4Q4@CAsy zhOebBF%XF1z!USuEPa4H`z!2*Pv#+c%qFyonqnlfmA2Z`*mMAMB4g3MDk!_qk zD8MHKV*$ot%UBnu1#s#2ZC1&Z8))bE7A!auL-)tA7b3f`m+ss_US~paxRwAZhR8=r zAZB<>TRgS=V$jW)nZ6&Bq6&ztB0XgZe4Jzugc22`h?GN(PYB?953~3ETE{T>o2f(i zo~y%pWary+(D)QB9H~c&mhsn1kJF)$2|HW*u2SzZ$l|}AjDfQ;mC=I0U*~rKI(ALN zJJ_z1)odfF602fVr^NHKPQr)ToM_oS*=I#ZiN-xQbwcepV(uEyF(Cx~_dH6hlN<}4 z&*8CT>yp{>ES7Our{Yw@$=HO1lIO||r40dvB2uFAw^`#Q4R=2yqP+04$hJyoKi<3` z+)lqkz+u7Cqx+X`!6O^i7017tOsyDx-|+nFBu|kNbvw%nN zJb}rc#T;)R3b2^7*z-M8uOq(N)4F{UPKOyDE5r-Ii&1W{WxR3GvSP&L!T`}ihzIQ; zCFBX~H(kfwMup+o;wAPbR4mG162{fwQEWm(1>HS8cam7OWZKXjyO4p@pUt&)2g}?l zbQJ)+k{X)?n`6u}w;KSjR%-q5b@gXt#=QI!+O~~K4Yat#6tTqLEvRM(X$VR`dcgNM z{uAKmvTZgvy)zX`gdT5CG$HfgY9EzWR*O%$tR60CFybzq+B|bN-LlUa%L52RP!rBT zky$7DbP$sx{}6=4y4&yaQ?TIz*Bo!P%Jt3~RE_V0i&3!mSbRJD#PA!Ar5UwQv~zNQ z@QI~N_NJTE$`akc*EpbV}Gn{*UDvpSH=eNStX;Q{Qidm*BKJ+kfa&tl%@> za_ApIy&;P-x|kL3+ok+|5ioN4B^_nL1aY75fQ#-LV@U^OK8ffTA=XjO82UU~k-h>d z|Nce%^QpUu!_F6V44)9GxMv&SN4U9~J4dh}#s)b}d*E~mC-FD;<2*z<8=418JJz$! zW5W0(I5b+Z`B%Rsk#_$n8xSmwIio@Ky{DBM~Hp6PV6I*IH5=r+I2on3f=RqoDj26 z85WCJF4EXxB3vJ0eB-UnECpr?FV`{I6{2dX_u?=ks@DKuHcIh2ZbubvewNaIF`VZy z4{7&I5StYdSSwKR#d0O%HM`sHzwW-%C)hCfFs!YZ(?+E#OXL>v>`AWauC^qsh96G_ zLP8GrwfmLkRh#0B0xxvqqbFXR13e@1xCT&DBX`GrHZH)?6QULsJ5ykrB1W%&({QOQ zyk2(oMTcB93=Lt&O+QUfBq6;$(M@=4CL=r9JV}tcxy13A7lU9j*MNm5(lLQRXP~Z^ zBX02?^yVE$yNdjF3QMWg{kumotsD>f4CSa)JUP!-3sNMv7L`ALOtEq7dHgxf{i303B;N6YIUdI;1b}0Tj4pBQa{w7WnO>8?+Tnh? zWET1DNDWOQK|_drB2!&T!rm(7%RL5_TfS`~k#{~-{X7=KJ1;zhIUm7~Ce^<u%n5ZJV{pLC0tmCb z2r8BF=lh#vSc&oKXi9~Q!Tnd&nd5ySxwXAAyben)0lOCd(uZA4N}Ty_@wqH-bF$5Z;Dy_J-4Pc`cGKKMqeU7(rt7z9;o=S<<3 zYRN~g6MfeM+wnF*ZfEmZHu0>KII)cubm4zwX+<9~6&A%|!hb5xcgeja*Q@+pY5Xvm zz0}>i<4gCciIbtkBQ1`9YLoOnHeQCs^cC`}U#(Y9-el(arB*~up!x}T^mb}3hI~DC z(G7EmBsMp!D#|Q^{c)qR3%z5u9u^)ayQrzXZ$Z5-sDo54Tkr7}cn?v-O+&>$Mm8?8 zP5P5EH+-G<_+1Ft2sudMOzn{JJSu;!0C z5T!fpND&q>dr{r%x95K}(k>t0aE1Yu0S`!=w{K+Or*6r6-H);By6@e#!e>aY#}OKov3%PcV{f z7u%6}{w1flCRt(lMUjY;XXdYeht}> za|AK&D=(*@sej|h;|$jGB(t5(?%VYQ64d* z^@UlpEbs85!8DUEk7e@^p0}>nKKHIO#*V1yWnU3|x8ReCU#S9vT;^_@JS6KE>wLb4 z)z(;-TyeIhn z?v2vcq8X9!)FYkf?4QD|i(|FTiA0*#va_P9_1d?EOjoL=oNOzBxQK5uA)$YN5xBu!{U!>ErQ~J;^s8!Zih}2WSUNGGaT?x(&N(khJB@DQUJy zAy%dWNn%|daxClYl*T8-d_G^FMq%hBJU#;wSyxN)9lPa7N0YFT{GQrBS7Lc?y*<^| z@JdKlb!70T-&;VmVz}99c^%Q8-=Z{d0gBJUF`M5;D$Ikl-an|cJqrupD@k*4VCxqe zdJD$eLUT`FAhCsh7&BhMs2bn#soEhZjf@`{{EZi!J!~K2I*&EOqGZ6oyX_KC3m{ly zCYQ5)>_ejX8n@%g&Gnc88Cm$Yj@2ReSZb>uV-tZi9n(G|cGi^Xa6*UhZUp7aB=fMu z0WiZgw?slE%~Ne^RmV5R@}wk%E^6G0{-c1VCQTvElBXad+b0?O+Mm-6OH8AcvUWz* zw;L$_cv!m_4-Zy?n6^?ZfW>35ztWF)8W%1j@&-O~w&SV@}!Vv|v<-?*+@ zp2ES#8uTuu;UoJY%idymWXs$^WwlRbhsmVUnh7}1z~BwMtL3UQ;X?n3MLW|+s}y52 zc%D!q7lv@s{KMz1)L!x%P4r_YRfL0B_Q!gYpVki7hq(ItVI>OvOYD6L_vty+I|NNE z6^Du`{&7>Fk;4;&sL+5+J@j6k&jA1Bm11>c&>G4;#C!YFs!R06myvf#s~_#<7IYcr zOV;;FbmuI}$aqY(r#gD*5tN+DEOS412f|R4xY;;nlR_l8wugbg44ALS~a!Z~pC4zpg+7k{TP z$}&x#>9s<8+J$d|v;3l$jNN!22fy&g%c3yK zC;IfR87QN3{A>qhWy zEal0hJ;u+2hdF{n*Y~pEt{+~=rAt@yyY-g>M;k!tYA+$nNehY2?cw@A%alWfb5Bq~{#>0V9 z4qKU%IgSz;eOz#{xXi;2x*=Kh2RBEXO_CK*?2nIGv->;N{c{G&K8sDCwg$iZmns7#c#yrYLA7FzkZB$!} zBA_T3Guj=6h&~xgWgw}yQV7N_4Gh|Q7$q|I!$ZY?nL9fjd2|c~%3hm=_my$UBPyDW zH&tI5j>n=MFB-OmX_sAp-h|O8yRo?NctLdd=aXPyKgE5L8b6ORGn-3a!w5rE9|i$o zw8Fqc9i|AAAd9BYA`nD0E-u3Idmk3hy*17=KuAqY>gFg$+Y;3%k!kb8aBOo3ibDqM?d;u2`QnOx8C|Pvr~S%Ab;1c)uc)tmUGutxYu6YfyH@3qxzKv7W6)|Uv~T1XDw;N3jHrO*?r)-J6Yf3STr_|?LL z%;|0p6a#1a(vL-P_Z6CoQn5w`kG+o7n<2nrY`je4o8R9cq~YSAa!`JqH{OSQ$+O`X z_^k!z;A!52(HHzr8RzL|!b95OshE2T){BW1jtfqtf-Px;~eEHX6dPt*|^a|?3KR*oynsa`d8lQ`@L}*)XeZ`9AE{lm$9Lo`6bWeG( zPKKEbacQB>ds=82yJt^J>LXyub%%NSV|9cML1l3l<05>_EWF^okA8Ndb{i2~LRz-0 z{_ux?SD~dJ|M4Wv1yo5;DUXLZ|^Cg6% zgYweX#jLpyz8I3g#>g0zM`RnQpB$ZAjWE#S!5tX&<}1XhQqY?A2p z4wfu0K|aAJl}D4d2|EIbfO1x*6m!lE4|w}ICCZyHZa5*t;AP$p*Mr2j!@5ZA)#r^VGJxo~Avxa=^K>F;Et8OhLG}D-NvM z8ReuubZ%@EIC^BTDbIMC1i$9L1wKX6^ut3lH~JjK*|7Bd;hRw~MK9^k+&Iwb=@>w0 z*whP4`jm}wd&(-XYtMQUMR-4OW!i$D963`W5e1psf%NeFaTs{66v)1bTP6_!AjY3H zAsjJM#A~Z23lO0ra17@8)^cs@S)cW7qMx#J0!@1oCL&}k7E)9dj;g+P>gBd(qMf`u z@>Q=<^V?jSdJT!VHY&u+9-wb1p@dd7h*#iBJ`0WF@nBDPc5*1_(fF z3a&k4m4k^Ak!Oe9EUs&BeQ0~EeAgeB;9UKoJzlQ&L*$hQ6ahQRN!hgrBi{ixk~SD% z@IgV0VzDqkIOSQmCg5#gfKQtSoZ$kmN$?8>o)+U}QsFx7qdoAfX{P6}6`}Ixyi(e! zDahQO41b(~*VN5xAGPij3~Y|2z;W&7tnB&FC-3gojhm$qfAY>xLg%(thgb7FA8hD0 zyNAQSAA^CQ?fFS27;WVA36qjjdd^)Hk#-XAj)xImU@1``4g`%E5d70p3$l=4i1Xvp z>=r4e4bgUJAWA6$gB3g07eS>@!ctknLIO{}{Kdj+Yn;dNjc=8DHzfZi&83&XD6Odu8*gWX={{zDT>r390^1TUP>UPPh&ZCs=qdCthV?1rAPgM zSN%!l-DP})seU?b&+=-_nOhzTTpW*poVWJ<#H@vAU!LW0*obiLMt+qtf|QU|-+Bn) z3`PPK-qtB%eNTyuH-e7jOQT?FyvfrhgM*;vZBkI$1*bWiam;z$7lQzM8;jcpScBl#~JqUVArL=6Sc*iENHQyCKZ<-<}yBa9FPxJR1xAO2tco zzxXe6hYL$FB+vYz$s;@QT+n0$hp95hM*}aB@Z?;3t2{r-#c@1+lQBD~?*(0WxOnM< z;Mq3nd?7epuco}p7BGi@o{53|6#C3!&-sH|oM8UsBaoc^kdb}*g#OpR{`Jj! z@4j0MYb}EJ)NfWlC~w6(C%hGF8QNx1V`5C9ZI&|lS;G{HJR@Yu6F%B2PD?I9b^842 z{`^X|$?`l1yi!;!&oHLXhil_egqw8&8u?q_`i=5DcI%}!$~KIhu|Iq%mVcgGtiN~f zR4J`X5jNh;w~K}aeC>MwXc3%X>Zp!1xn0mDXzCfEkV7K$4yF-4d-+RQ_j~gfJh+DA z39D!eJ-`8rd6F=V1!re#MWx(>3&N8ihBu+bD_5@O?dEKcjZ)C|9EGFc%$k$=we8uw zP#WfpvIYlb<$aC`DXCWqnBs|dqCN9=Fqylxw-B_|d@483rj9oCg)XmNyi_k1&ZpX~ ze@*yGxua3UJcZc#vBD!3LLT~81`c>klJyB~qBC!M+i@0P>)E+@rN(?Wbjka)He?5y z4;Yp*PkS}4dwk4)c8K zq%|8~bI7j~W>?q4hhRQgG|LnJ@lWtyb{_f(=VLqdRfiYO`Ptrq;PCu$7Nc0ayP#ZaIeny^1J7~-~3?x3O{|AZ=VVQ0$(Qrl!Z48;TbDj zSc7+97Yha$;XsHH^t=P%sg5USAvH{CyRPpMU5%h3urQ|e67P$M)e~geW|c`84Kz8W z%`L;}i_qeQ@M_-5x1!4HDn?b=xEv zw|?XAN08jB-`RddLGm`jh{A7#&-wG&?i)rYbWWT&y7{ZWy0W=*%K~%yj8Gj>s z#!x8jd8N1r4){a|JO+8n%Xcl!JjipnuOsCoc}MG6E2ERKte?b_ykFgbU9@ zc{uOTRX)g!q4QZ3{>4 z24BKi(g=RILMzUbJe#DhwDv>}KC4bAGiUHo<~#-KYUU8Ej0Vppxz>K2gIC^%Yh!<9 z`5`JefP4Aog!NCkpnFPEeTsv}53drsC!|3RCp-sU@}nbdz?=xqcqls|Fm)IU+OL#T zW-^z{efmiYDHm5Ea1ivur4uTxt;aD6gx0`jEASDGr@rmMl*Y{)Jm7pVG;n%$H(Q4T zLX|yr`eclPc$nS$;onbyf#+U<92~vYWjKc-1!LW4^l3_i5>xejs+ZM0he-6QUWLEomgkZKw(HR z_S^a1*Q@!(x_Xm5p)+se7L#Y-1OVlM*;$podnJ^{BJKoJomiJIWY^a3{_a0asN&4# z``>>%i|anuogHmaCdRpwJ@(+W?sM)`LJ1MdZ@u;A=2yP@mCg76{a?lE&dL_35*g!ezdI2h|Y{>aKApQ*LADP-XHRJgm8I^nd4(o1Qe3`1pe7$dBH9M z{pgYWK6>!rt?FJ2N!VOf5(=&V^=bVLfdfi{Pa&tKE!W$dZ7wj>NN} zpcw{)Ifb-N;O7C%IKa21=~f&E%TF0f#q}5{Q*Q7gl-m42xiwyumz1fxp&6;SL#M6a zT}ZOtA-R=zNTO7EOhwD7Qy!zaTeU;+JdASSz4Dkn!w(EA{ZJmYewAsKU(Z4dd6bM+ zOkiNh6;;Sb-@&{3p_+I|F}k7*7*A&sQbXqtGN$6sD23z4@w`R<{!uX+$~|Rc9v@~- zj;HdGcqqb$cFy6^LtH7^2zcaX94ic+3fEx5Z2K2V($I>X=7nL z^^RqQ@MZ)8<^(I{#cC$Zc{mu1C%}WiSQ2Y_JOF}+HTj2s@a=@yer5Bo|IhzDp_%v7 zM;2W3;#Mn>ETZ1)PlepNd9B7n8BvOFzWG`_ttg->wlEfkCR9cURi_ydp&cn- z`GZSmcq*Y3980s%+x5(O=U017)N0E(?4aWPw56=AQ6dx>Jn{Tk$o0ZsYSy?@4jE7g z!Zs}JC(Cc6w$g549EkN){qbUs5@5lpga*tdx`SJDULQ5|K2O0|#Y&O4#oYo_z5RFr zQ;%=xkO0=kqX^L%n>wDOwNak#TX086uW&T&44mpx91=w$YzJP(fUurT0m5-;wnm$F z@l4HE>hM_Lk%z3UHT(mY^7Stbfd9#nRwR#)*qyjgbB4+5E&PNQ%oRG}t-~Sue<_OC zhKW1ER54yAbUfbB7QR+s6j2(?_<8Sni8vl0I*3jx1A@`^#+$DvY@FZZQTZ@^EC%*V z&yOwsd=)^n+arP@_DLTYfW^YvvJPSQRra7qV6vzP0t8;flafW~p_nzX8!6^;5G0tc z&P$%>62hKD$VdouorYn#_H#XbS(NmRBKhxSadLk6Xzw>I(jU)2a>hJ_E=IMsQkMJz z0|7tn3N6%bsMM?RhGC4~!o83dZ)e7*Z7#oLD<#1JKgNrT+pCFC3XFCq{pPoRWAmeI zFTNP%!Ry+I0EqmJr;!EHP}H#qfulPSYza5qznkBszIJ8vcYphX9Dkj~_MOdd{Q5UH zzxR8;v-$Fu-mLIQz04Qb!Ap>{<{d0u2TPq$S}Tu+oj?eTIgHy}gd*yw`{0StQE!w_ zDURgNyg3_}vpJ}Ef8c;KZSYp%n-B#{h4umuYuEi49M!jWqoB+`x}-QIZGoTnK|DGv zFiRy&2~@{ITXlX)UaftEhMtwiIGN|8Jd9bJ#^;*w96Fh@&YrCkyj7p6$GDmL@L|&e zh2`4Vd1Z_cbEO@)862+Lbj{lXkEBg}gXZR#XOzb%Ch$@WZ@u-UqCvm^u3z(UGlqy= zRTN0gLuddUR|qm?aA=W9=0qFH2w@hU7dU1fg^qnAZ_CvM=HZ`bU|>JRJfqO_oQ=RR zier>X$R&iyy73j;<=u}g*jX%{@D(N>LS3H;27+^lYwx^f@YOZk@H$wVwzhKdt!GS| z!>BDFKFs{J){*$Qkj8}z*##Bm;`+-~vbgOPxE`|Y=bUy3r8ZeWgC z9;WPbE^;3Q9R*_TgJOA23A zfuiV6DpohIc5IKQm&q%tUY1ynHM|gX8Ue$cxXD9It8OSOgnQ- z-qPg0)6mww%+<|2FI=X7LYe}Yb*6*6yHuUsU+NIVgt=?<>}$T|HN_jb9Ph*Lk{E|F z)601nge|Dlb`$~ zO8G{GPD2cZ>!uruDKu!@Jj;yT*|Sk3)pqN!8fW#H`MP}Ra&7iN8;43{X5iW9&#eL( z=9{4vvxGt>A3?C5yoriXS(Xlrg0V4`;~=q4doA!=xJ(&&QZaX!OTqxXNZh~Wz_Rx_ z3h!vBhmp$j08jdpz&fe6kH#$*BEY2T5L6c;s4x|nzx1UqRdGy*840=>522uaX_&08 z(}%V&4zJ4&C@&%MK6o$U@ONj;BFeYeCBoSdg<>25w3*sv+OcECcep4SyOQi;s<8ym zm^Gqm?+}+3Yqkr=g5|j=jE7O+-eTvy{NS(uzrg)4Uet@5|K)%FpEiH+`@g?A9l@k$ zO0I+k7%+0+AXq7nQSJl;0p?uSY0G$pJu38}PUwM^OrUpor;UuZoLk7dhD#oTFBZeC zP!Bqhv`L9O^A4RYu!9}m-Aill5fi|q#0K=@G*bZG_x)`^e#`C z3308Ujo^nO6_&f6Fe(oi-iH_L$g}<1drbN_cal&S zcG7|d4$^Pxnsb@=n36@^PAtS@EICnU=?`;R%L}&g;Mnw zG#5Q09@l+nZ=NgDo=FB?I|uC^)L=?%E?8D6V&?zVNl*wd0lDGB47!pC>V)H zVckQ54~p%bSZo+uzurpcF^SDX3B@FAHP)grRNKar`Zx2=g7o_9ufM|IfeM{Ka2eq!Mth{9wg&;uPtxtQ$CcDI_Af-@&;1Byyk!(s;y&*#XX8aHylwQ!5P~z$8BORH zt=U8{Uo5E4(ME zK>7$thC$F1>))0=3dGM}da*5p76sG7X8+LFOf`h;EY1D8?+SG-6gG;3@L@Go`2$L3 z+FCP=_Uw!zurMK*oxQX*<<#@tt`eTw57SaGEL`tuOoAUw{Wyxm*-KL$itu^xR!kPm z{U8)&TAvq>b(}6qh+>w)TmF>t2-6XeU7&x^DqL54>oKkm-Vwa!gita=`jtnB$|Gnh zbdY{2DsQe6q{^`t;qAR_1o#*K;(y)z?ce-h^I!dwKiK^9KmJaX-MJ1+L@*qQ6iD&Z zDKHDSGv+y)PyNn8dCc{|Gx$^%EMS;KL zLdtrZP+iJ_L7uiHUq1i?+<5;1URd1vDcY`5AO17Xs$6jG-u0w;zIVSoqC}?Lj9nR9 zr`^NLq)|9izRINx&sCm-L541z(G|t39U(1W9j?%4`jo6?S$sG4S`*1!R~x}s(MaZC zU~=C{KVVK9A*vKfnN4`%rEI=fIuiF;4*i<7gC zSoWVJ=~H~2FzVj}xm%tBucUf<0%(#1i0ryORPU{)eB95OB?ks%&I;i)gC}_m}i8h zkRGAM0}-wh)&T2^`KeLD;9vd4pKreRZ~x8a*Z$tGmJ<2ZZ+ty)v)IMbQ#TSp|8tZi zP49LFNy1eXvO1_d0uPu9E^y}HRY=9W+9jN<1dQ zUjBsdTu-vSnQ^2JI;1otZ|-LWsqkTp25D$|9d<)&{-Gmt?OY6;Je0Yo zJZ@f(R}jx5-mmqx%;K_9qm_oTXjEMagMnh#p?5vxyG~Z+qgw`+7afZ>(Wm*T>O7Rt zRo1~O0jG!6_lJM?Vc@w^AO%@wk@fMcIcq_`2(2P;)1D)q1$p2(f+iqYf-FuSO7wdl ztnJ#jpL*?u#0pFv%YUz3J*N!>>6}0N5T+A7PI&@?^@=%WadOr_RP1sssMZWQ`52GO zUjis!#AVsv4wJn0+80tc`C*jX5k`L7#QF4@d_O4y*H?5~NH>g_WP}x1Mo3{+7P3X( z+BTa|8*j|#Q?=X)xTos%mL<}?YzcjoEA*2DY4k(Q7EiwQ$au(*9aijlX|M) zIU@>uaIs}xz(3l2|1baD=6m1!H=D11v-}Eys_+n{w zw{5nUp$rBgyep)z>~Wt(Vc`}^ld!m#5Q;P9qTUECUK)WYkMJPi-Pd(I2w@33S}OjW z@Bug}F$z=Lgc8eK|L_3jR@9V5dmzT79>sYy0;Jwb4-k=1=n=76Bw`jhG5p?lsI_3-vM62-nZ0#{nvkO^Q+(ZmCeNu-rfAofB5Un zf4=@3+#SvHBT>N4y=A;RMmL6KjDvJMkB6;; z_^E5Du~3(Xe^wZHZWRbdlMt6QjElh6Y3`eeVp&G;*<#32!pJPjidh%ac35T@0BIES zh5@DNquDok>1x`q0?VImxz6x?CyAiBknbI>VP1){lkZ*;z&%`$y#j|9wMO*(q9Kz_NS3t{CY?!kHtAzEPCmDu zKvl=&Qy{D(??EVoIaocl7e8gSi|E(PwjUYI;QRCXj-VX|wf%OI(1#fCgg2C#a#IFF zP6z_LtU-d<@1MW?%F7{cisW`F6Lsvv*M^t)#Ht;HvU}rmt-P>Yi8K~2 zVa2*47Ud$B;TW*z8%`Q6be!}Cy1LND;EA7`}ILc7DJB@k1VG8@lB zy}{Se0_6e^4zz4Rx5_OYH%bPIdQ>n@_^fmKFC{XH#5|cJIH)oZO9*v!XQLnFCdAJ_h1kZSO=F@zE*OvN#oM%cbwAz=4e}jQu-Fl8uL3ozYky*qP z!{`{ft-cUT;ExDsLJg4-U?v}dv#^A0?7#}26=AT*c1{XcWJgWb11O@OHkEZ2l0fQYo%tD!$`7%9`92bgz)hbLirJIKyN2=SWCwSNEQ zpZ(e9cYp66ZGQW=e!CQ+EtdDP?ecCumjYUIS@HY;<6iT1PT!T%PVGFR@MGof;njV{ z=#UKkk?S-7AFYHMSa94AjHN^$M)(B3gx(}Zi3CSrcmBi)41t9(8yu}`4}97i6 zP#W*7JeiDzHwh;1Lh^$Frzr;a4iFI}C@3F-cj#ITNh5s8R~Mlt!#NZ_PS7CL4kY#UO0N ztleSS{U{jfnDhRp?l8UnF_wN=o_^1~o`n#vR5+kR9F@8JDW**B%cB{!+0*QqG09w!fP#i2_(RgpSNo2))(0@T?!c^H_N zP#}o@@9%xDei!8rzWwdZAN{j`Rvw%863%2dQ17lGAX0g2J%OJ>A-JV=7^^b!M?dAAz<<#~aNuFU zI!JMFGO6&CxtZ{l^UPIMPrL33RDv3fNR$N{^YR@d#o3trTtK&Zw8C3LoTa=YT=9oz z+CbxY<-&zm>o-MaEoksn<q)Zqz9yfh)C^La<<8(;sG&9DCI zH_GezoB!~GtbOD&IfWk|)#SM(Y?bjUKZqK|ZO+HD=#Z4Pxuz$sH&~Qm=;(9CWo%V1 z`K}vZjEc-%4zP}A*j}Ezz3vU+mp(oB3dCY@O>BNtU<57(#?Y(?#8ARK0tZ9;=9Ld8 z?%ub{h8yY|P@csa%R%TOqN54X96f6BwFPm=49(QhY#hejFZ(`3Ec*7XC4xh^!0$a^ z82PMxZA^oHEN=TsY6ACB#yvEx9mK#MoABX{{6dOXabpe!X*&lIjyG!ad-humH=q z!yVgDO}8|ETZv$H<+R_ZX~e@9C1DrVcfb4HyuJR{n?L-+Z*TtePycy-1yRT(zweQ; znW$DAi_ln_haZZlm05d1MF*iB%Gz^%NV%#oUkU%J(;kNLm|tb>?4vlQJ$2F4-uz72fgg&VAvyGM-WE1Brzxnh4%H|82q$fOFM&X>a8$Si15OHL3zP0=M$gAOcdcy+OcKR`ISC6P zIQS9=_ajOcY738f4)$7HU+|&MqFbvBCEy?c%YqDOU}_7LpxV@X1%L6c{-Tt~x4-@S zoB!f>{$cQRtrpq|tR7AawLn(?3dT$_c*k2XU%R$T2QS8k*0y-;ZMyE;*yu2t`7qY4 z@>tf+(k|N5wsu_;*l29h;9yG&Tf8gZ^$D!hUC#*|E%;JK8k*@g(NGKavanOP&%K^v z{cDtnFbvO;AV&-MiIRtNJB?n-&jTncWaX1LXqZJ$Pm!i$ImW2DW}uC{aJUg|ylLPQ-8J{ju{BVyD^i1Oi-55r-iEwlO3YkMFV zUBA2;gs%-_XZaR01bAn8l6DM)aGQkaF~;MRqa;|k@4x?E7Uy5Bw}x4TEGO+yCI%&( z0!Ga^gAHRis;xYCO%PX~OJ~XvBCJIWb}T>i<9ktl?_-pmGS#L!5k7&oV4CsIxs*&X zwD)546FjAg@)Nqan3(vVfA`M;x%uz@^iPt1Wb>DQ`Tbhs0v9W{zBUkOwYyb*X(i9+ zuz=i_zs2}gj^r!L<5@qGH~*A5m^@#% z;W-5%ndAJ;bF|&?mw}OdLi^OIRxIWuC1Oc8om&{6`q~1I-+$>}W?Texh`<M3)luIq-$5=uqJZ$T6k~#QF-uGc_`MvgQS1!f- zc(1}$XmU44d%TSYTfQ^x1xJGvy5KQ{2Ef*|5?qJ4p`_luN%?uMPxaSFN>yFwG_%l4 zk00!ZN+ohLOq^#dK4%snt5q3{jL9rqVlv5j7}mK$M)hR-XZli>HK$*R5>;ms z*oD??(LA3I7itT0fP(-~v_c>_tJrXQ`S83WQO6B@r5dYx0Gxgy6pSy?yWFc*3DwC5iCjS<3Z z4sFym{I0xFWj#CChkU85b{3s6_BY3hrLUi1Mz59ayvdEJ^^kPSrq#bz< zbEnPPqMfomH?17dt2sqy@_j5)A5!DCzZ2G>%P6u;2)O=#^6vHNv#Yuf{L?M9?h*(I zkPsM&n;m1vxp-o`GMTu>iJh9Nai%I&GcWRA=8aR8c@*L|tf0l5;-9ue=#Bs!+PJ1aJ-Xu|-u3dbx< zWE01}Vi%o}B(xP4Jg$vECY&YYA`eChALKbhLs{ORP?38Khsk)MqZKOWT`IZv2v9xQ zDC9m*!}F|-=6cSQ*t}>ao(zuJ0hUm?-?3MuFjyE`;!+5%o}T;9WR`au_~dX-6^1PHB%)8bS5` z3I%4jU%0XN)+oDCvjf*fxI>HXIjYF>Tbtd6A}|PJE+juqbb36W*|bP+vI}@Q!!zn{wWPPzM8QGfw%`jhB=y zKGUb-EU=EDV2FaxlyToZbgkhF?JV!b-zM{|22Z?$y?(EP;6`!q;t9TCxV84a zcxWjkgHq!Z6j8FUvVEI+R`BLNZ*?X|$M8_f6cT09iSx8$-MkfEj15Im<(zy{M_YlX zqmtlV|MS0Tl+ljL22bj)KvM<>4XU_O-!s{S@elv-54zOT+v>mmYyYg1u)cjwnc4zH zqD&Y8ij}fbo+mjxtbCaJ!L!ka zWI9|=8WkHhJ?{1zdhTu^A+{b!t6#KMg-D?3&vwx=AHUuJk--;Jlws% zb*~3R;quFexhJ;{T14hFgRQol1AxG!m^_-xssBYa4V$fm7RUCK^4D8?qgDQC3D z`{aSsWVC9B0m{FlznnQk7Bkda*M2nK<(%)1vEfwgf|RZt439hzqwm^$ASGW%<8T7V znE5z7;0v1Qs_l+a+us>|FjV>|!EGm=Qx~P}nKM3o;)y4k=db_zug>Q^&^Sy{#hmW7 z?ql5NL^@-kP=#p6MIK!UF{lrQ*J8sjwbGVp-xt4?a|U$vkSzUY7Hm*?_m z_e)>;;@N-vkH1#~_`ARRzvf+nPt-V@Fedy%AG8{U@2rlrc8(wL;VJ6yi#AHn zgQxntuu+g>D8Rdkv7k)!Pq}T=^W_8gC?7@vFRj9Ie?}q<#2C19&pNo%9t9}hj4G#n zb9F`o-t)j;mf)hlWOOx-!-Z1kQM*T8)Pqk3mXRBwM`0}ngA<_7cvcvcfs(+W?o&Ft zCy_nLZ*s7|@sWD)w0VzbGw1PYwq-Xez}|RkaiP5HJx z49CKmG6jZkU{nMjq7M_CQW8V=dCu#Ndj8^fUyMgHpW}3&C#Q{z@C#$H%HV>z)OYhS zMyL1WKgx)s??{56x>h%XVqzOp3SnVzUN7N(Js!N@wr)R7rve66ZAp8dm&Swioe=N)f;Ml+Mw2uBELUVtQALPkb8gi+cv zWhs=#6V?Bn8==5DAxeuR`8|qs&iT=Mlyg1KL$Ne7hDiF-m%h}I2t)9{{o8+g_OYj) z>Q*Qm2A|t?7{Of7ozXpvNKQtbl%<%zJ)mBEal&uoEC_84ZMC)ihHLFP+>Mt(fBZvAe0#To{Q3~FZzxYZS z^-9Yx@XyFJPwHTN7*Fk3>I+`=F{EHr4}1w(F#z5a*9WvR+T8vd^$4d;JJX-RPd3X; z{pLMB{NX2x&#!;|YjFS)9?GVZlgeeSYuda}P4Gc3^u73q9Nl|wmWc=U?UORD-GiUL zy`GBUXpM|}c#R^7HV9%yhPAIOT%r+q*Wdkp`ItX-|CLv~Q9oaqOqMXX(m%WDf=WMu zI2iRXBM{*6Ud8TLo)OqVQDA^&CTEP$6u#Ww?ych8yboq&k~smwAgz+)%~kGb&OTab zu; zH~pDw2FVD(917*p;dUxpWk3-SvQbK>{gO$mX(KST&LVsA@H+K_QXrI7P&rHE?Pq0I zMj{>Q1xBO58unc4_tK>Br+saKL((4j(3po1-eT`#`C>1z}Z<>io4 zyozRFQy<*GH~7rItwZA;Ba3Ev)O@WZf3`pR-Z_OB*eboFJ%gL{w&fe#z7wO6k3Xf4oF>n}WD$nc3HQ`3B(@=&_BrL@P8;fC3>GeqUE4`H za9=g=lD4JtTkhcvykf5{c|P~2pDk?y)j@xKoUm*|fT>H_P56{!g6|j-uuDUa!8aJ> z**4W9q3PmNcx?@~ye*S*?u~9(YJz=?xp%%g8Vxmyq zA*kLqb=+b9=A_WJsUfBie+&sGIJ^c5FgYBnh~%wD8pfG>VI0hpGS-Y=$+F;=GobqN@Z~i&)w`WWz2W{_y7K-v(Nq6pPhZ=BOf{Yt>5~sh9|G(rNQk_=|jn+Zucw^ zUHle`D7S`Y(k|G2J0=LNGO0q+PVS+|z*wkK2TJhLRj2OLbDm(>^OsL2?<%kD7bSUT zcB5rbSK-6$9Eb4=yy(04M}f}ow}M+R>4y<4V=^$#y|$Okd*X=?Wy$Wd z4MF+thPvflM}#Z}QN5?lO^d7MJq*J>W3=(Lz8Za~OB&~B>5%8aPkA)(F(j_>GM&({ zR?2UPRvmV!xbsdS;e?f6O9(BiJBj1fH{PoA#~D<9Ul~|*7KfJLc-Wd(0cU4UCOf@^wocqw$`z2NQD!&JwL+MxHoA91R1lwO{ zO4-3nHc>3RXHH;3HDgF9+1^in`6xyPU`H#RL#XjN%2LYtE$lP+LQ8g#12z-#>YRFK zBnpPjLwTY*;{eb2nQ@VfY^|~r5~V!xsIVm(M{}3v>yR0(7##|UeK5Q)ton3b7_|SE zy{#B8OPU=s3Y`&18-jDZalnEu=l~|pmb2fR_qYhGhXa{2T-9hq&X%{!m-sWIPW3Pt zWJsv;bVQ;)Z9BB%V`B|#1&qFDmeGjMWLy5ftMr1VpUE_w^HbP$^jgp4W}~piA!mx~ zM0r(#l^M6gQIfgDteDKln(RVq+3kZ5<^xgjGSW((-8|~3*OPj*+fY(+VOZfCiGb}S zthxyzMiUk=?{OtUr4DiK>#6&#>@GW_D#99AmKzTl(T8hc*sefJ{Z$OdXooV~-;4sm zCh!c2H@7J!Z8cBwij!NOJjP{>#GD78qYy`E+nw`2p7&jl)T6&bM0XvdLYcrVkM{B* zMS!MXyv!_HecN}~XQ?uwl}{aA@s;P7@?8h%dX`@^Ok*7LJ8j83eI)3U&u_x*!&5dL zAk1j^{I|U$@`qb9r8K%Y)A za0hHDD}jfBlt%dtq2{qXqX3)X_!E8Eq^tvtC~;?swxfcB_7wB<4{VI6J`N6ihLY*)<3;HzSVdTAoo_NFwurm zIw?vxFnV}SUJOg|QqI<+I}F|3Q-|l1DyqFC-~^I4SVlgSfej1Yr(~Tc#y)#dVJ@2{ z`u;)%EvkZiWdHy`07*naRCQ0-Cx+yRdtbD5w0P1F-lLI{C6*Z6Z{-;#O2`%wk3RBf zM?Z`MqctIk+2D}EfCsCAD02PVm0wz0e2ozxbd=YLB0B`!=tkc4TAML{&dcZ7sqvw7 zByEAU0vE+eX-dWA(T=vYxkkeC6?62;!zv7hN8jK;-&Yw^kZ|kWhR^)TpRhjJ^5lOx z`($=`H7fK>jg*_SE~Uzw`k4p$Ed<#sCM5Yr*^RTXI2k3?P}h-HnLSdAnp&6o_P1K+ zn$n!f@p(Q^{OwA$ROCMXf|D_TMlv%ZF)HauBzS-i^hI}XyxS~se|t7_Rt!kI{*H1k z@V0m?F2l1Ibe!ECz+$crP4G42F$)bCkJ)sQ5;yTK54wUuJ=&Vl?i=~G$Jg>Q-iyJ# zeXbyE4m2Pe{z+(f-mmoSo?|C%xUvZ&=gT$R;6c~Ii$kNKiMH{X^Nxhoy%Xz08F#`W zhciPLILHMAGzHZOIK@w!}N{0d@-y$XBFl(DKr=$K5#M#wA`Bt#BMaun`_Vz%7r`Ews{^T=% z(r5qX-~7(m&;R@f#HXxl&)cDXiL4pLk$WeoBA1zI~XD=I(16w z9T}OGX^Vqf+mg>JLNCxg@!=0A_Wwe&peH^;Z`TZ>7k1HLS{UPu$KIQ7n)^uD*F%qa zaaEs!A@t69jK`eyq41_%pH41aLr*k8Z#e8ke~kwta`Y$Xy#^rJ#Bb`tR}EL?o}|R~ z*R#?s&nnM3+ogegF8`|6fmb)bP?-0&;Dvl?Ye&rL|4|Mw{ePL#<@95YAJ*>nWAiC@ zYx?0FdTWWFkl%xZD1aJ>QNlM}Cqorkn4(M)rG^3a(2dh;zcGV@(3mU0fZs3e8gq5* zhnaX^eJAAzW%)Q1WhvPo$_T{jDhx^R2&nR>=~NK*{^nU`cCO-yauQ}!4}(W3Fcjb? zj2PQ}aF}}$ijW8cPfH!Asr4R8@$~+!*NbNgw2FuTo*0eIzi=BVSrTdqGbJo(8+?-Y z5x_~Yc0>}`VWrMNE{cCvQ`#)h|jXl9)}ImFqFGvq5K#9=?;ukvzJ- zhdP@l^=x?7_B8m4(MKb5g0{22Xy3xV`HufpMT)}6XyE**Pkw*bW8SwHu4`3 zv~O!ToY7Zz^?79wPR{Wb*cPYjbSy6RJ|n>3XlILt zj5=oYL9v}PMu@&10tUfEWu)YhC@&MR<|rt30(7nzP8&KJq)be}O+6D9qP&bQOb%0w z@5>y-dXwOwMCDOG7C4*E0Xn%uS~gt3rFE+o$zjyv*6k3#2?)RV=DhOj#7#6Uo+nfpoL|NIK&xHDC{>x|1KKb!aoc&M# z;$JkxV!IRl2k&~PYZTLq^r^jR9#@lhoDVp~8*6wxm$WaR@{Yl;un|~z&hu_ZM>vdN z`d0rPCTQiqhy9eH)fa9rxZdOK}5X>Q5*uUOG>`N5W1U;_;j@aWEP| zY~UM1V-93?6cEmZM*_u9uW=t|&5M~rvkvJ1r`JEJe+E-O8gwD` zfp_N$NGtfMokZX6kLMV|Rj5bEb#}Z7LNm-aLO&iO<;E*RZp=slKbR$oLQ#xJ-vK%0 z;^Z{q=&(EYmDQekUn?{$Z?wAP1Nkf`&%`L?&E&_N6gKbwg}i)at8>F%NxSO!L22?# zUUk_F(m7&MB38LXEAZ~M$vgF&;?NFH8y+ZYp7|QiEBcTFPDU8t9Xz+fO4&)Nsqnz3 z;r-xV-GS5dz)10V(acJom$F%<$^5G^c$EF%VHL26@)5*SoV#-)UN>h!hNWlQPha$d zAwpXQO1kUr`_7)r#*6>$zy9BS0q&ptlYi3rk^lVrzaK*%`gBrs8mnSWtgLNT!Y<$+ zXohzd*3v)yTO3xwPj8#uZ#d5X(CtD|g0Zk3_weT~+Xb_5(-k)@NV%K842ICoxsF7s$oA2B|iGt$3AxU zx7mv4o|MDS6tn(2z*B|dcm7$l@%Uqpr9JP8WMN9m<4H@V$q$?aHRm{S4Ih;B7?L8t zecwJ$Sn>$f2Cg)k|3Z~noRMYPmoH^>mA2K@GX0BBa-?p~fe{ar&EF%)*i>IyHWI)~yKiRnPM@>I^i66Cv@6G??vp1TswFo7>Fm=cx#wY2@EQ$Q(6NF<|&@it)|8ODc!2z11km6 z>tkv6C?7CTa5=KlXqMT|*}F!?iM*tic%Ft@M zyE7utE<-`NznE~Pc`Bn|u-6#mIr!lfjx9xnck+M_J{X0M1M#gnH0R60NWtNIGWxhD zFQnotyH$h3NaxN>W`lvNAF#R_%jm>t<*BDWn$gkSXW!1Mt1gkR%uYV|-edXAdHY@? zlHcxu-=Y!c&FdNu>90|}$$NBvA9qXZIsZ!p z@edqtxUTy5JjYM*#WI&JV6aW6*Ya4M!~3Fu%?I!X_vJ!LPX0Z&j(0)b^>!(e4s|0; zyq&%o90ewn<^2!s6EH|$xXy?4k-*bFEc~~gx19SFf-*dA_ZbNagfMwYQ8;Zp-}y#| zc^bkayx>gHI=`ECPvPh!e3l{`rH!$e(SX%ma0~r#I4@9Igy8vX7qTH0UK^w8+x3(u z;oCL-+FH2L=O&LmbSu0ET~4pz06dh$gfWFOXC)2Vn1A`RKl@xqYQOutzuT>3-0wRK zBq!H32Dx6c`%QHe!rW{KBlqSxI@a=~=$t9Pi%INRn#%w%CJfpbjVY&(6t&QkFr?5Y zg>L@JqKEyeqx<(ofeZgVkUh-i{h8o}*2YsQi;pBq-fyEk#(DA0;P8-FL3Z9O3iYll zcW072Tek!^59clMyHoBvp{>v%Se(Jvl}SMY8ZjEeSG(|J9I?i-)em@47M!I$+;H;JwnI6N(AL2?uHnExD+_o44pxR&UKnv@9OR?+ zz8JfJV`*QS2j+&cvf$!UG8;WvJ%&f5!S?JS=8bgxOdc3+JQs+198LV-6XyD1$JU_v z)4Tw2?7h=`r+GKuK0iHgS@to`UXLuLZ=I+4T*EbI5uV8{+TNPyr{yaawvn}@Hg=4nM$Q$QrUs{1^+%|CTyKe+5YT+1xVxQ zLTMT`G7cuD9s2?v+Mp*o%kxk^JL_N=s&rE?o_o8(PB~lc=52o?;JjZ0s=(u=LdqVl zI1TFOY`_iU%!4*bzHq6(+q=ZeW{BTw-YR^}2uSKNr(qv8%X^Koe7l9BeJHSk_iz5@ zZ~B!%tFGX6aWym*!V0{t4T!sJ_wJ6oI=Tv+OS^58oH7g@?FI(dcwRCZfv@2yp`~$L z{MOb)D`xAP7RVpZhIT{ujy_Av&^vY8JB`EO9hQ4CVl=VtEq-s%x4xWxd&nEjS=AN*qX4A7tFxJ+XZ(Wm4g=WNGWMs9!gJtG5$Gz;k)@M zMUVU$TAsoOSDWfYaGKIsl~k0S`4UDXwFQQ0*EaH2!u@epX8q%T{EyDQ^3|`L{n!8Y z*`qyesI#i1a9>IY!(B=!T^WO;LvrO_>*uv4>FXGZ!*fn}5PiZ~qcG){?||Dg{inxyFcTPVx&ZyQe~pzxTb=+8a(TZyn}Pn(9bpg*^&9YKst^GIEQy*RMzKCUh>VCKF_zm_sq8oelWZ~axBrBk+^)_YDi(_ z2?cf(o8LnGoDb>$#|C7SzD{DeSHC+S%c)`wf-oCq!~~p^(~62q-_J=Ql#;qVQ81;Pn!q5s3P{ z97h3D0*K6jUA}CKg;7LcN|BDXTubkXahY$Vzpq}T{g*av|3=kK|EuW2G=whL3ckkk zz-UHsFTXS&Y4UA)p$%`^zweRv)mT$#hW-p1gDJi~!aE)$@#5v3CVg})ETo55>Yi)+ zgf;e>-=p4hSAKOJhC_XDJ9VTV(G})mUVbTW&Ij+G{p@F}9Dg-ioqRjW@he~bY85Dj zn_A|dy3~`pHO)Ybk+^^louXDX7v(6-;?uWY+#_5mo&TdWXY~{~(T3ulevLw&x+zjd z=y);ku6(~GIDbISl+z!ftnX&`Xj|qtw4==!gBcqH^ zB=y>2#NJtFVVRE90)zW_$y^Pb;9q@Z6r7D1DO#}lth7ZOwvkuv`Rso1X66J_O;e3; z?oS^m{|W7ZPo6v~oz(5Cq2Q&I@4kCNS7^vkfJ3`*WbR6Rmjd&IvU0{ALHM;pUhcSq zQ4QYO_V9u>%esd-_Jql@9~_)@h1!grtzL*@UjvHe2g+Y^Avfq z#ZiRAv({hcRR5^{sdM_gw7MgCwJ*80odh~*>z%u82FO5;l0h@|j<(9;faI4hh2d+w z^1OyKw~Y=cLVdO(?l1rHFVBAcH-01Ao&0+F0Z+i^h%5Y$(#omIxJo|t6IjYzyGE2? z7{xy$j^?Wnr(A4{_RwU`JlQw|@%CYtk`Mx-hzqyAmk06!UzG9~n)#NcdqcHWg)%;19mh zRhs!6qa$Iavl^iHWJl|Vvh|ON?C)lg1!o2ihIN~Ur>DO)C}r=^m||sRPm=z_;iftZ zt!VD+BVLwID9yQY9Cre2<+T`^citIXs%OKhu2;@oHywI*%eu$Nfy!JGoRKcq^b!>kMOW?4ljyu^5jlKdSxB%G(rJdYwi>G!ChWH3DApgODeUsvW!owY1^%CJq zJ?n{KXcNo#-t%@REw8^5<*m$l3hn}8mB|WH`VGM_s$MjJ|Lbqus59|QJ}vx9pZ>+Z zVg1?9{%JBY8sIU-Nc6$1fEwIqNp_x5W(TraSRGpX_9W_-Y6|R&!J0&tusJn@MBp$g+G0nl04rr6v-SMFtiuy3N7^6x8?CU zal9jnTxvhl2l!cj<6z;@Yn59(HY3NOcYwoyfyLT<-(>O0Uj~*Oy%t0DRz|RwgZCR5 zfn3jg06bnx8|Mb(o~*39)B9uzFP1)IK){2$@iMu1EwHx#6*wb<;bJhu@4~Y<6iPAz zxLv|`z$TmWlXC|5G^uy_$bHvs>!=e<%BsnkmYY!s5{2e)67=9Ldj;N+GpCpnliNSO z0V$XV-cJGkaj(I7n$njanlLhi&{T_f!#aeJFe?uBBHf$$aE-}y;g!Zp!R~nw4x#ze zW1FS?faEOoyw`K9f5ojSj^<5)Keph*#n1s@U`9%JYmvd z{#kx$#6|J)e0gk)DJ4)mAIw7-hWSSrD=6SN41-BdM%KPzzW@E7|MTyk{U87P<7dB- zQ3z%A=YRg^?T=831I|rC^S&uB211=^PQk)&x4p@8Fg4_uzFf)brcnkn$AQmy|3;r+ z?h2OVQ}1i9y%K($jW*TKi)C~;A0}uSSd+zf#i$5j?Wp6OtHa~^PuaoO{SV{?zVJ6( zE&r*DQQ)n+@6)|L5$)hqUB2|*!hQeM`}47<52sJr)+Zx1nStI0I{y92RAi zZ(L3r>W8-bndb8EZYqRHESg-xz2&_w`xY&|CW&I5`yb-8@X6$xUEg+1_%CGx_A{TwCBlmsDQ4vq%7Z{oHhT zSsGpo-J)l&M?T&%Zzg|^OPB0v_G225b|F^aafI7>;@=dETYfVU!3j)N>4_UVWX3+xDuZI^uD4;Dz#A??mtG6{gR^L0+2d z8@^#K%vWI!Y!m7m#^$l|9!;=Q>YUr^c&JbGUH^yw@E;n=`sH8xbmR9{F)52R zEQF94CG!Xs$iU37@N6A+l?Czjcf`u?4?MF#fMKPqDSsnIZ)i(sbtMAnt9IW^xF->j z&J96;t^%5Tb?%VM7x zWW8NyO$!~ZrOm0sNNHmAH6ED@sh6KBtqKDZ1gU1F}@*Ma}Ax5hFp0aeDJY)#m4*CY{Mo637Cwon)gPaDca~O&rI`Sx> zelj2h^88J>@NMf@b{b(v3are>gxrKx3-8(7lYhU z1T)DPCWNFQp@M2J7@(j({P$UgsnIET~Vj54gIoS$;?h#- z|NDP`_H#e?b7x=t!k2|8%7w@SH zKU3Vc`?zvvR)qz2czq?`&UrKaQtyo;D&U!8dA&*rFXTAIpElJipM!!#6Gs(gWWZV4 zbAQBTDf{P7^QA}1z=hxA7{%+qKE@Nw@F)sl4=>BDrH)9VBZZ>0LZ_&QV~P*J1{da_ zu0_V*PJKLZ;j1?i-b-U=_vYVK;n`QSl>YvN08Q?9bsl3jurMBPMFuT}wS&dcqjY|7 zgvS_Q&K4cPK@d^E6R*FL1t_5-xz)FZ7Go&zI%BYSc{_D52G^XE4?f#Y=@4BQnMkq1 z9HvO$VIb`%myuYV$KV?*V<^mbj01Zqd?-I7qVEzD@?#s2*6{cEXOXZ~F5~U*?{_8u zZ^o)qsD_biKrYVkH6B1clQ2Qh1JmZ^cdA!ogCpg{FooC81{Q9UJp7^s_Zt9!ZJnYw=e!2q3_-}rB^#|;{G0M$L zc;1wUH_F#?YkN3hgm1^|{_>ZL!;R+5Zua4+) zZ9a(6ppc8F7z=xkQAC8?XwUqD5d*=L-vKW?&6hKp^G%o=H$IRK&nS_}p z@-6}eLkSB-zMN55zsZp>l6t-!W2DY+e&ZWwkLUBgmaXF%Mh@*6A!Xk{n@d;gu`)vX zOCF?5TSHC6gakTs<19)A3jg~mW+UW1# zi!qoU=NWyJ#u%6sF0WT_afkjAi4<8HRMwGgxp-l3=MDJO9+-s{@Lx8 zpz5OqDzqM}&eUWZoH#jy?9E=lX($EzmMj=s7YfLup>3N5}1W3CWQGb-9 zU?_`M-VCoEwnJ z{O|~-!RAp`B}W4D;#&KzJ3o*)g7?4w16j22!Lu)90+%usLV`MZz*ymm5Z!TOCjL1E z1mLC6Sop&C&%JGJiK3;w|N3A3_SvufvtK*=z2E!2Dtq)B<2jRv1TvM^kf!<>1s=4* zZ{|Zx(!Y~X2fUbTVXRh=dGj?g260-8o90)W}QtH^0pEv#9`_6ch`Wbl`IanFFo_VqxH^#H( zOzeHUy!H1Ug%|Of=b?G}w0oK1DGC)G8nz0*bD-+k2N%5f8BJLP6C)8ml@Bgv6qJz+ zTyP9hFDJ&zqo6EvA>r46jAjw4!F70uLDME@Lm8vaHzH&Bi%b+VDW~ry$KCTDjiha# zw3hTo*tGBj&kVA~0_IQZsH8q~8Tw1HGw%AUjCq3 z^<-f{8m=6ww|qc%sG$8Hho}9B&f{F=HJcyLfIvjr3IGe%-|ra$rDc{MRJ-ueGRv0x zLHW1ddM=tVo=hrY!tpHXwRDUnzZOOP_H|>vA!;vf`NPs<2+XK`1m>|w3%~mq>c>Hs z_bML9=tCWZc7=eUqo5dq+a+-M)_Wi?orF^e6Qv|kj-A*Jlix0Z9gfPR>Cffh1Fi`L zSUjUFc|?|Qc66ppI%y}}cj9@~C?xMD_h{oJ3P{r129owL9CtG~*ef={m|>}4(^hQ~-kLfbdfHYKsJQk(?NZ^n&*=j~Cj zlq+Q=B<5pCZ@xJrf%8#a1o6t9@BueN3$Sa$ybBN4LI~}f)P6aR(s#47vHX-8eq&%h z^{G$RU?|6F`M{&^uacr%e5H}$QZI%7NN|CdI7wFnBgLm}^u%9JJn=+~)OR~-!e{0~ zQncZ$`(m&tSamUElp3S8yzRaNeELWUO7L@<7z1)Etzm#u36E_Zqh!Nx$-jv)+uvv; zZT0xo1Uuc*ENj0WTpOVzQ*fFy zBb4^=+uh+WeTCHtH|3e@l;f1Zs}Nd^NA9x@*VFIP2ECFS$oLrFWNPZTM+OtMNI!4H z*ya+j`5!&0o*yScfW{C`eLsHM(tzJ z+nkgTH^HUoFuL+WK|Dwyokt&iq}zN5mr&Li0x`ZHT%$y$uI~q}5eTKEKJ|c=P`e(F z$FTZ)(~dxfI{8j}ykjevz@%NtlFNlny?ed25k3mwtuQE|LhOY>9v-Z)07WJdI>THW z)%8wb#N^l*v*mBwF01C5x^Cn?m{w5`D)*hiR8Uiy>tzY;>HF&uDxsQ>fBfSu|K%_L zO^4!P?Uq-sk;(m`>j?R=nk_*|fAyc9J@1FOP??q@BYn%u_SQ2 z?@jJeE4$Ddy0~ZV zG774+x7v*%r*Ii%bRUO7v4C4e4(|CHp?ZgZ=lSNHcHor)H*cYR^2Y$`6HvT_X+DJW z1RokuQn|}Hr1F|`;DZBlLix`APsx4b!uY8lJZQ?H+vW1=0W+qpBNm?9dqy8^H;;Wd z%kt%cJ`?sFfZV$pd6mF&E%)@8vk1;BQSKZ|x&cn%OglGX97dl-p3(+G(I?46k0oQB zi*z>N*7TZ>`S-jG=(p>RjE-yfcove-1MdQy;9upa?%UNrI2a|&BgSm%Z+n3i zY`mQnmg4A8h^P2+Eu=xfJFI3%2o|p=hY%2kM|>d?Uv%5@MhnUjFdidgl0?dZ!WPF`yaZ;l$Coa;5la8P0FbTarpFFO?Mi6i{;M(Ams9Tb%;h~0 z{*BR=oAO`=OubMl4e%<=o2=rAgQd6S^D8P55{g9nCHa z`eub2hf-)f@agd1H7%RG+cU%gvW6qTPaKfYV~}~)=ea&~zzG|EFSHjddMd!f*x#EQ z64C}lf+5LoNtgf=U}~Git#VzDXY;)!OJ|92R!ZBbrEzc0gB5Rspya7T@cLPxs@ZF)d#ovWAY6g@IoLcdVPWq z_j%@)(t>f}R?W~C9p@Te7RT*V0Ef#8V1%!NpSn84KKjxS(LtB3U)d4Jn?0n@f8p~D zzdZTmQ=KQM(MjIHo!tWR5~aQbe(jFOJCnu~C@;=QMglPb{dF*c{SfF5AWS`Zx%G9JR0-5m6KQKiV>5_t5HOhy~$l3IT+yqEDVS| z?lT;|=^>w0gp{jxDApa(oYJ-pG7#_Kl!hJ;WkjX%hCGv(0q82Kz?u#=3IKvm@CQalqj~ao^2R6!m&QHv)!77h z_y$k(xBBxNe15BUNr9J;n24orsz;U$EX_!&iBdwW*5=2IephiG@L&kc z$EzWDMhKF8vku!k7&Fubo5M54q8=E|KazGFh(ht)oCu0-Nz|X+L8F`+E~uA{JB}mI zJU>0oad-~Duk>Xz#&|E33;48Kg`1Mn_E}Bt4||I5X5>>+4BYxcAcZj)%k9HOUCF1C zBtlh2R9~)>xp+rAMv0>An))bNE9%TotdOoEP!A8ZeMD=XTO=b zjZU5iWV)hGVvsBpIZgtd!g+YPc-dcCKi?Ebus288Vh!{Zsnm4|+Hi_MzJFMH8MQN8v|~lJs{lAR0vsgg=gS z;rzPyJl8o^9#GDSyZ5(qV!nn%?wuH%Dv2O*nWB*1@&^+vvM?QDQsz9FWw<@Jo^;;t z@0SSVFk2W7!ozsWu+9`NhC)=#gP4+h7|}C~LZFRcOfFYIPTKTbDqLwpKiA@GgF;6j zb@nHuFqHh2A}N2Z+s@Hn3IQJL6{Zff;DtLoD&!TcQ3#CpD395V6`Y^@ z+~;Z>e>HO$U{N2#AVjetI5ZKyLO%+>e3W}TKct+m?|tPfUu`(jD1@@9qKP8u%ConI z21^IV2#*;h;*)f)-X9O%wS3yIlF}za7#UE8F|Sg|HCV~d&}L){U*U%;@fZ$u;Ufwd z?08-nk8(G9#+#J;j;bg#_Z@gw|7ye!xZs^v3QkK|IVzTkzL2>f2803951}jJQ;Jmm zb_re{0>>JQR8;x#tXvRyMm7dsdBM2Jhz5Vl4`#GNSHJaHStGs;V{JLcai8zKJuB;w zR!3C9rfs-%oQA2k9D{=|@Qp*B8LiEzLtXfj95ASyD)d8xbfRzzW54*)%dN-0ShHL^ z?H;Np+?#)gtOmb$;5~ROykicQbF+pWP0&jS&60EdmEUMm9@l6GZ~a}_GmkRH(*0!W zXrllGh+>}Z$$>uj39i(&c;f)g2e(H5cn@Ql&u`7k8P=?KBDBBfjoq@06wG#y-4L3@MN#2Du8&_2RE zOsad6#!G~xqi}9d2}114L9W_(yGxBctS|8JD(J~s93|hx z@Kbl-QC|P*ASGN12XKoY(ZqFepFH})ppR!fn$~abN-sthLPI=$%G+1c7d$yH zI1bO4P#1=JK=>{23L{#i@<=`c*2#Bzl3rktldm!aHga~zls3=+Czcy?pJUJ?6}%))7=%$ptTdYdIIldFw$yzTbhV5rU@(`Ey*1E_gXJ!f>AO zl;7^lJH~?{8KZ)Mhp>5Apq*D?6pTP~o`9MZy!2QFfYC5&nY7P!@yAOL1o@Oq87<6B zco-8~YGY8IfwqM{c&a0KhrwUh>N?lF`RgqvFH-rJY&EpO3AlF9?f!BdGK`KPss>GTADgfzlYYI z>6bDN{L|6vVL0S3of*qGSzxV05}L|aK05N?0dlBJ6>Q)_d%x>gqz-L6wym}YX}2V8 zw(an3m2H04c&9G+rw{Sq51wNrjT{*rXKC}5$I~B<9{%ING9*S&-nsE<;m(^xM_4WB z-Jnphb>MaNlm~K#SEFJE!V9k87iu<_DjzuL7yN{mEz*HA;YJ3Q($^0kz5**JMVQiN zpT#8^&}ND)=$A<6crnCHs5sRp3L=K^#P0q!Fa{@4SkOr>Zr1o0x1?F&y~U;Ca$)8HYE5 z`5YKAL|6j^S&rK!uq`pq^B;Y|)TuQD9U-^f1drCPzPu*e3s7zn=BvR;JKY{TVI4!# zQD8T>TmzS7pHpt0!2<$HWs1dTez)$xiLt;aVGQZ^^y#CUo^Sq(CqMWKt&mbHaA~9` zMr-+KM^|A`evJu6A&pCqJ`y-HQVO$cYZU$}Ou`Z-jKg43@q&J714kz{M3GBu*|Kx{ z?C#(Yj{EW?8V45mr~os#O5{As`p$0G|DC)S@obj0{=zT(LY09K50Cw>>>g~6g@ECa zQ5axjz{qt{so%KRDMuhV_vcH!^c}V)( z@XEobUCNyMQ=dAA&f|QHEHaGv#{u5TTB(M1iZGBz-h;M`#%V(1KzsIP^1=n%f9O4y`M;5opFQO0 z&A^@dSEDVRIh34BI1IQ=)dRW4?|8Y&IrZA0@ZKnXVc`41qY?wgfWMqjnElj@W`q(M zlJf1b5v2OTMkb6%z~b<7Y1&EI)mG9-^?27n<<8(*OEygAf$VyN6(puJc& zkSo8J7;?OX4pk4vp9~j&J>zK&0j7OO^(~3%%Teb=kz9>(+gq!c7asQ)>6S4XIveUz zqK{=mJD#oyZNeo);AJjnaZiFvfUSI5Pfop#gB(>RV3fpBy{A#7g9*|fp)A98#FYD$zMiffmsL+N)6zzDZ6syU(3mDCqi%zcWT@q=Gw^@Gxtuf~b|=RWY@>5e!a^6IBI)8Bvn z(T<40Bwr0gGFwjWg+oh+C%ii&3ZARJ$)}F>I@L`E-pGyuoCl*D`=!}JM|<*7V3Y`a zx9?U>hUR3HtT>mh!673n{N=n#eEKmm-O74o+%Uj9J(3q zUCNini@D&P;rQOLlEN1U=Ey-A^qBniKe}<1BgoFC3mdh;az|zVgjoT0{8I4kDNXE(I@kvt`BGLtq;_Y1{1+C zk1PuuvQ>X~77l|eLrB#B#V>xbYyNHZVZWy_ZrM;V;RL(knqyh`7Oz$McnDnTj?xgy zVl4mRul!1l2?2MU3uXH5cf%dUZ+I=;u3=1H^haG3i>)SHzY{+9oH64Vj1szDCj=}M z2N;T_V2&&me81j^KR z*nynEskW}g8l#XKX<*b;vrm=D)e30pWMK7}nRiuUMeeAu8^f}1owQ; z+VgvHwq@O)vPXyW8-r{*y>@TQEdy-6)AMN=`M1B5XX{k+2iPvxW3eNktsy-gaNro~Z6 zM>%p1j?kokbDcWNyTJ>+!dN^X9A3Hif#fx6$^FZ_w^rz=&&mX@;Ug6VcJ$&TsLD{D$+6VuIVj@9?r}@I?)J^3jz> zCX1``YTz1U&?fT?Ujm9AO8#7x#<{OAoA61UAMGb!YAx@0-naKDe8hB4%QqeFd%^G2 z`ph+DKon+Jl`2&m2y(BA;;>f4B_A*D=4iGo+jfq&3V47@q4Q@|paFX7a-O3@w&rbi zG!IgBHAvL`Ankz%?u*sVNF;<@<{D;$9!P-%$fnQ-Q4eP85eRl5kd5W)dFMC5Kum-o zM3@6XmjO+b)x%6(WstTJk_7%T4^WT(rSkLZU7(SA~5 zlwIW+Uj=FCs!wR5E#)aS0%($zun8G{`O9DKo>i2)5y?lh(h3dXia~)dWeKH?@9dcR zLM9yFh;jSi)>Vcv*5*v$$(!fSymaBIdcvs# zZyHgA3pyg%ml=gswJ9WOn-YuCf9|6_TWv)aYAjPmTM`_> zm0fw!Q-3zC9O0FE^XMDC*H5&Tz*C%)-IU$m`&=IP9Y!Kx&_8v6TmKnP$9a2&Z`qtEC)PYYu!=oIJDSIu30+@K`3)$NL8{haQXgd00#H@^3@4tOYUOcD_EhKNl zvH69^)lU|>EH?05iZgmSym3eNY*S`dEyhtzztCLjIpvy?iSbY~M>Z8!E*1vdWnq%t zajRd_UyC7DFRG(XOZa}|GxZ#fjXnoUYCzQF%-OHD?ONL3qYLIL zxPP9Z0P6Trc}wLw>aFFS8PLt;1Ovd5XK!2gkEpZv7p8 z9*9j1lm|S)M5_imF7Xz7NKXpe{hR-bp zp5Je0LRz|>4?7u2==at&Tc}U@a@@goRg`MiUK;b+TrwuIFd-&=i2O!v;jz&f!y{|t z>I|em?Qi2OV~_^F?2$-X>FcW{b}bCxHGOzFE3o-+6d zLh#jufAd;E99*mOW^QppZ1QObJ&eqJAr#&?UUleFH+q6lKK(2lIk)}r&N^8c8zwVB zN+nhmoTn6&S*n3y29Kn2_ncJ;Ak4}u!rTa!Yu;`)(I~t^m^HY_E?Bqx87Pu1K*~2b3h^SG+J7)@*b&yoZ-k!l zk`F;w;8f|}Y5Jbu2Xo1@!}insdwp8&)bqRb`K)oD?}p4oT_}@2ILhe38T=5!Ificf zhvDH`Dl7~|?iUvX(fyROmfaTF;mQzkcrd6=n)3R;o@AA0l76IOQ1`m1WMz@mkUB;^4M?x3825y>*PN+s|nXwloYP3j0cohxs{m zp@|VM`WCj-g-`DZPkIjo49f$$J^gYHucqJd0jG~X@@U_tf8`ZUl#rsWh-Q?^;n_MG z0;357NB*XsaRkX^z{&mTi>LT@+&hrt1Jp7C$?uR2dUJMbQ@dE;$TH-sNNQsZS*h3x z0>m*fJj~>Cr5F+rxo90#F1?`!jN`1PIcHWW_Z;*4daqMY>S9epsS*ouG1p+Yh4UwQ zQa1sjV3x@zX1v6`=v#-^K_pIL2*uG)6TNn&r=V6 z#5fjIRJnxj2qy(4zxL4?)4v@>_m_Y1muF8t^;DJmgYlw2pBDh1ebx#&`!<<#2u}na zTTDFi$al^jfBZvHlCLDsx1$fzSou2b>Q`u^4c;r^qKsEi;X!|dvCzoJi0~QXX(aMs zzB_NU!E?onlz?|<(3K}Tn@*00sSPxxs5ubQh0&XSGl-N5=fpe=98=EVvXoqCOWb@m zQ#5HhxKXDs6H>U8#gk8cv>SwWo+Wj?^2)5J8lEK6qlDq=IIFqf9!?|*D4--! z@MJglkuxyKhl=P1#{54|gVW&E{Z_y@nlBoqzdEIc%&NMy7j;+Ir;@Z6TwTqGwzBe$ z_bn`;71qqCATViPDzAa1^mIQuA#j7Ot|}giu7X2!7DhFH71h;i#smF)4&YT0iS)yK zC;aqBZlKX7bit~3W=ZX-3>B~86JauZ&@k*>acEj}9ESi<+``FSdGLC^=4m8y=biIy zdw4VNOHaXT-``2z!R_c=Fx6ljI)ctHYBU3Fgk=8O;$0mndMeeU3w zA#Mm9EV%Y1E<@>5*ZOidXAD3IpVl7)yOUdG(8Tu$^*OVou1ke)+JR@2qzYqFAZhVPpsOv4Ze%6WkB^op#AlE0EYJjQ|Q84dmgB_&4mvr2>EZ4 zob#3jcZ0vVNx|?8c}niT{D!sO6GGqt5&$1QqI@VR?f!ixZLYAXcMaO&_SUxGf%jr^ zZ}2(HU!&ggqa1kYFTMDkput9Pp;gKt>21*8Ce~xCGAXl!KjK7KkJ&-1T&2GYZI0Jj z&-D<_!X7>|q96#L_~a-1(jS;#c;P!0q6%q#!{b-8#}%Rb(1)JrTf%UxZ=O-c7{KrD zlZF@44t^CrD$fK?Mx9|HkQBSJCYSr%iD!?h=E>|Oeg(AV)^U11+SOwIGcj2=q|!sp>2%Lbvh<> zEf2P>z*Pr97@Zp{mY;Mj%eH+!n74l#j$DIVehsY#p5aOLQrr?cXW%mo$lwLnJF0@p zOL5@nlzZ~#eGN(InI0A|Ikn&L|9IxRUcdVE2@O0QKDd?w{d8@RzIAgbUE>9ya5i!) z%id>1th6)^L-x4JCYbj`&)9(%{P+rOtT^)%2>f<|KrjZ2fX$B5pV@E{%aRt(gg88MmaW`y*sb0B^55U^F|Q~V}_ z(Pt;srr{B&VKR*m5Mj9UZ0b8b4x%IjqvlDV?h)T0Kf<(gcglt6r**A?DnqNl8gw~G zjH_@hL_w1C9-X8L;JZ>_Do21R9YblJS5* zp%G~bJ;K&o=lA>UxaAsrCf?-*BjfZ!-mCE2+y~|%oQ#O;)AAQJYg7Lxtr6JY-|wuh zH69oBUexpb%H4XO7q@S5GlX7NqR?K;DCIp5J#co1Wr)Gy(xUAK^=Lo{&W%TuPaT{* zs4@)>II5BAPg)e-ea~)5_Ks=O%5#P*5p^WZqHN)d# zFrI$;>9dbL_3^VOpL+7_&Ch?K@FeOc8@@!>fRW$X(cpp1e?{@TCt04UzVWPgC76|O!WqF!l8N_zRYEOgs}!MnKqpe|}VGckWwp#byd~G|0l`rFtcL8yPa2V_eWla-B4h9Az2F6h1H5kqw zU)u|TjW~F8kZFBAq{+{tQ@2FuAAb0KWiG!@g~o45`4S}O{yuQynqnPK;zkt@BVrDT z=jg>P!i>3;e>aH$?Qy&OV>AZ8=fZZojJLVBeS-&#MQ}0D?tRobuh0}z!YP5{HEubE zcCT-)Uf%{sr??{gl$|pn>0CvwG4={F!Sq~P`lEiH8(#e4=Rbe;jjw;bM#Czt2cmSJ z%Otxt?hlS%$=ki($~V<{Xhx7|vGhP=_Zcn1T7#AP89n9e$rHX@6L#f=G>y)7&J5i= z<80LM;kQT`UK<)^gqAjZ-x?nok>UlOBZW>$-kp&}m1^37i+$6aSM3EsFS7dNtcgrp zmoO@fn*=uXXRIA@;3Zy(@#A&UaY0iy~>AAaIPEkjv>6+VaW(R}C%Cl_h>QuJYI ztK2G^sbl13%Ab}^(~)NhUiE(_WN9F>Gjc-9Pic_R0dx%u12W0aAbRZZ|P z8+pPB)|fdhWkSuW4nXc9m{9oVeP8ZA<0umLAmfAeo%`Vef;ic>8QOZV+LTBwZq!jpEYf}qw;{cmF$(j3?b9T=&xN(N>JF{?z;{X;4 z)ia|X@G3usaO8$8ku7QIxBbGCmA%wE8PX=WGCIAI5sqgZZxo6DHz6!P9L0RVbX~#h zz5Z}@l2SteW4R;-0a{FAL8{achWkgJ-m9Xcz!eYigGlB4t3s7Y8FvoFK<^rTXyuOl zxRH^Ec=EvNb`W;(XZX2_-kZ>f**cXCtg1Cp4?M7`laUPW3-c@4@Qff*PQp^+`(ouL zu#5&UJ;u2A4j&?#_27`c1lV&RYVv!D;@UDj3Tp3dzD{tZO&+XwO0?~ak@UHM=kK`? z=}XcI8a%z5RO5MMycLGql|SvzUc(he?h!;1#Y;wP!7F@^F#(^^6@f~Q;JUI6|G}HK zZ-u${QcBn4#TnzR!C~5nQrR-DyJ94~pzaZ(OyK5gevBJMZYvYC@{y@eeBu)wb!@1S zu{MGvz}|4@rGGsJhw`@aYFA$o%#f>f;z9V=N4RkC_9zVohr@Dq@4(FSjg zw>c;}FEuh2yg`%Q`sEo<)kvx@iUm*Laez0O%Cpbq)3lr&q0Nq7!Z&?);Fu4Y6@y;F zO9(8mioct)!DD!jQ4^-pCi+;_^l%mhyf1Ta_zlm)8~AIi)2?zC{l1_>`b@Zu ze~tRQ`5IvS5~D{az*%WnX3!-$qXCLfvWlPZwZCJeUH9{?)d%t?VsLozu00?1g3m@r zw9d3oEQ}~TR|cPe4o@+T43E07n zMx0ps4;1=FhZ?mCtM+Bu;DNzVmZ33^^R{w_@&~8;bru45I14JzlfFU(qmB|1dNM5g z#m3%Dv1Hj0R&GIXOKgSCr`IiZ@~5V>#U@{VN9dYLtj)S$>^ZpsSIP$sD4hi0S)Z*< zd7~)my@sm!iO|>cA`c<#kQU`4z-v6zArV4^twJjy!dRFqjN3S@Ol>pmfFZDAY{rA| zPzD6bYLo}#VInqVqP~aowKv{tS2-l+k8va(0H{YOdaFdQ!1U*Mc8Fl8`JK#lc#ps& z{Jd`>Jdw|?hQY+OS4i|DwN8ckJ3^qHD4m;dJXy-{2R_%poEOf;!n1JivzrvOzL3Qu z>6=u12H%wQ`O21pMo0+~C1L14Uuz3O&+dv~-biQ*tc_(;_!V?GSL@X6N*=ey8y(MT z^5$81gBR41LVbt9iGI{+N&6HQugZ!e!h(KZ{_>a4K9ouGU-&yWrCI8q z${B@8sE2knytyU=dFoMdRbGITj#P%$N`VRdRglR`mU5$p5--(orVY<2T61amqjOs2 z1Op=bGFRY zyokubLU%o&nDOWIEjRE)bPc(GBQU&W@q*i_i=0y}_#Q85%e@_Kz$gAx=R{Fv`;^5S zdN5+>hJJ&)s}nLyf9^V#gqsDh`tiDVU($N@Z}_qD9lYTXFzF}R(?0xf^1O2(kY8jZ z1FTyCpaTS0fn~NWIA@)NIY~1b^0#Pk@dK02%CC-@_=;tW^0_}u|Ln8RoxS%xnLy6( zJMZMV&HDvL4uz%6pN=@2m|HmV6H+1ECl|r8BO&e8+8lLkpW4TiCvbN^l!>P(b&BSR zC!T2h+~`C6@s21E?`u#DCLu8|hF%;@e<&bE5u*myFn}ahD=EYK-H`?_fX70(wmjig z=fJBJ#u<(7-qv|@9{G|p&ljG#bMxP62ibpkYWu)W_9}xg8i8MfvNeBlTn6KwjA8#i;cfb4EY;uB30$U4f%81SP}F?!)(tCgmqM zj6eE(^{ZcLDDu<4`03+&3t1u^r3>#?M^XMC3au$f%G8MB&5S%B$-D`AF(BpyD5Oq| zQv_*4esl)s%sIqcj}y{w#AmSx!3UGPK6qt0tSno~<^3g1oc|8W;^{W$#UAbDBbLP-6B*V9Arl(?9^1jP8 z@B~M`;T~pfUitQb3r-q*a}X+P0hb)8+jGVfY{H$sR;X@uQut_`fLQUB?H$^ed0!`^ z=+FW^8AI|aTvY>~a_Tf%^gWRpUn9M=p?z|PU(mqO(Hj+uKci#8rF%yt`y_CBy+N2>RZy}N$!@JhpU+Tt5*4-+*fvd zXV=p4Fy#eq>u%ZnJUoi@s=}r>1v$^vRix=;D5cZB$hGh;DCfvaL4qM>i5Wlm*avGY zHclu%h6R^(|3)Cb!%f-TnkW@S+qU#k8tXn=w2O}tOjOW!_?9+rf86p%eHX@KjQZej zl;;mCzts&c_ZR$3+ZT7f_X^`OY~$?=gF!!$@DkJ;QEcF&AYZwj?{DNDg|dP`;2i{F z+EaLZ&h{&`dpmFlh4IL@UmbBo8Bx|eF0kXZ;;FPHlKPNy>X`c+lGG8{eEQSQw9jTT z{r=2TeC%USCA{@w-w81R?YrL`hsQFnK#=VRrLOlr{NB_tvFEE9LGh5mmj(*UJ5i{( zx<>#Ip7e$~MI^70*Q+nQS|J6~ycKRRwVeQ6dI>aJDjnrSstoB2F_v0?}y&&y%0FbW|PTpB+Mwi{8CnC z#Zj{DOFvt1Dc{-2b2LkV(!X`TIiqzWc19AM?&~8s(SZW8TdS1Iked8TFgEm>(Zv`H z-|gm1;l%Pv6xE#5&-CN+r3X4fx{*ooO>oIcY2<wdv1dFPgL>cDQ%^m0_R?!_oIUr#SIcjw`mKG`sUMKqm%xH1Gs>d#@FiKr znW16o0B-=k7^MW)3;=$@hgZUz#c}#XKT*L9tg}8f+@w!IxCaEl&8VC~!poE)8N*TSQD*mB8pVL(!0sogVD$^z*; z!=CczA_4L|PIeILfFqfdm9`mYOf)$V!81$(nMMr%4{vw6b;og>i5fFNf&@r{qC|<^ z?X&DZeeVBmjxAfW#6cWH5;Jh#=Z%WJH$ae*z1*EZeN{UvGcq#f9I8sx=n?!czx<}7 zk1xNz*J=A6q-V}x@ zt2G*_-8%cHxF59LGJEg8>-@Syc@tdG)(+VzhYn+5{+D)jn!(dlNR55Y6q!L)$bE*0 zfh?`bRQ~C2^V97y1oNAryc3$^BbpOzhJ=GDtSEvJ1o@h^YbFUi@Cd^c@#CNEy(Q@Cm4VIt8RQKHI= z{--?(ee>!}PfWkBS1v@ASJO7f^YOS&Ra6CxY{^_IRdLrwPELQnNWFk-B$7wvf_u|SY z|MQ>n!0G?E^5r*?jld9GfFaQrI7^j3G8Z`4B6mB}fG*^A_;4Pn1eNe~jB~>0!eU=+ zj}@S?N$|x7w8MYxzjHTl8#wx+yfo`fG2am)Wxk1RK@-nvJ;{PSd1yZ~dt+0^tgXJ+ zJoQg{pRTBnmK=t&RC~k0##_jPdvz;r-Y6(Pn{FshI3ymXZ|3!WD}eL63!!RP2!?Pi zEXU8fuLb9h>*Ke2w4}ea5sZ#oE)3DN9hC`^6DfU|d1()Mz5l_7jUFizysqT|AIUA}LYuo?! zZ~xX&r@mOXu%V%I*MScXMMjH8xP2SK>}=6jsp}mHDi{Y3)KXse7}_UKZiW^^BkMz^ zFHH&h#zTM}LBx!{wKMBpWOV`&bkJ_6WsbHOUo-}TJffF31}le-f*?VTwG-2GqE$wo zJPTeppiUpAeRTQC8+(JJdTF(h8rFQ8cV{t5boEh;+eG4If)m55aVl`dBQ&~k{n$a) zTJwia%vwVDqlJ`%i#}YBapQbOF2AR`AtU>@HYB;9-dq! z6Xi_^mHbU`(+<4Y6MaN)N&PzNR2kcMwjpHwZ-?BNHjk!t%}PG!F{7wsrY3lji`7j$ zx}6cDpoya}isD4bpg_n*5s6Hjz9O&dP>gmY@Hh&x+wT~0657eV87&U}-Y$Tb}tys;ivcFa#RI5zn&& zh>V!mBCsL=Mym^6aVF~|v?%%Af1$x;LI(nbF%)cf2w|uP-7r{pwoB@&GxVElIQsv8 zGHL(R#BovHCYRF?E%ltfFmU+czA=QTx;spAzLmx4t2bxeYz=SE_?Je29!D8r%@1^; z+@_HTw4!w7m{$B@foe7wi%cKAx6 z8R%|%ja<~g-+9v4$KVCWVZK=u#<93>?L#yzLX#?&I+A2T`bA{Lj=#c(`LWPu#sA3pe5aW|di zBT&}zta~tqbV?g*G;IhF-Euk%Gg_h(n)}WxWze5PqfFP}am z<#`QmfRmB5V~5eSYebZnP9^{lyfKb&zGhULgodX7 zDlc`=a_3`B`p1xy0qu6?D_yO9NgH>r&TE3ulpuPwI%5nUa`{b+?nl4;Ak1y3L$kwrSzk?JwKBcFU4(YTL)>PqP2 zy7t#^`0HEt=3yx|_Cn$HL^PlMe1dB4zKGWz)W z&wr8V=Zo%tFSyXSN|%ln`9uNzvK^B|2qI|3C2%oMRHkX~8A5#5HGrbW0A%qD+d7J)M%t==AX;BckA(spA^cv@O^Q^m+uGqU&HjBC|1d9%pe5heZ`CB*XF$ZP^9OBaly7}e+K8oqHF za9szNFWw#aWsRgGym^p~3`ra;=W-+MuO996OwbNTjA}R!`a91gHK++JuWVPxx{?4E zZQs5dz4S(eOmq8!Wk)(kyQZm3qrOCc0)2I^u_^xpV~jbv2o`1pntKW)=@+A{{c%{g zu6z@m%u29=@O}!fI4Wx=o<{fKDUTAUyD(gnM|JSVZ}Q5ykP(5eYooGi!BO{4WZ~h% z31&C2=!odJUzpkqezhIgm1|1qx4uVsivPRo#_$ei;|%$#5EkH9(&lhVlP1UC%{lThA#_?{ zXl{xykmsb{!ra`~e^36x8DldBZfgvC^DAw>ip7?gbMKv+oQo<#Zr_XnFx0N&2o(8) znm(*ipYIbGg`krW1)(RH6vc<8R5JB|mz>1yD5~8sMi7)%KNtaLPPV(fQkIgzh#_*# zxiE~J@hncpU~?jISi}!}QQwuT*zu?r7?Kdn3-YC2$EG3jTs|%=bhntoACO!5cl$hcj@m_k+8<%6Sx%)A%<1Gs+;N z9tND(lEewdu$oq)sFXWR4QwzNiyVx*w4*84;ETBHC`0o{&mR`1C(O~`BDvtH)2^Wd zeRvvNP3xsvEgaNkZa zpwFh|;Tq9N*}x6ZzLggp0$<;adeGuord`Q?M`htNJ$aHo(?2#z!egU9u)v3xqjo9f zRwngxo$a(cJVgJQI-a0UFhLHDcG)~~rLOCO5A-?`O(lP2pmfvsq@W_9jLyw)bvh~v znn>vUd&)GwT#j(GZWx3jJk)WdTe(hX(qrx`D}Uit>(hFbFlW<77W71zwp1$Td(JvZ z(L`??Nmw(7Hl+wc8Um;h41)*e5O(hM^#CnQ1X7v+RiW&croi6PIS+SzkX<;K;U$7f zV44lGwlV|&_!QoK6H#iau?@fQA`2|?qh`JzE+RpxVL3m?nJ|( zKLb@E#r43S&t+1)gDwl}IK!>w51iGBc%KdfI+1h@OK9151tn9S!<#{U8zBwUuoFZ^ z#8yZO0P~XriO@HyO8Kq>C7P;E64AhxH;VD3ku#Q@T+`*yI-p8jr=j{FwflS&)_GG@tZgPGD-|5r^gtJj5$}4K4q8OqtuM&7*IQo z=F_+CdsxvNwrP>~KX|WSAT(lLnuFz;5Pe=FZyJvAm?Mkrk!?7R(U~u9cB&}-H=3e5 zMl$*zvPCwyhMWU)Q}rjt8Bfp){R9FGkTV#=+c@;-7()&x{nWN?@e*AGSN_7^vuAd? z!6Nh!(US`@BDgfwwnpFYg2$V_eN&(5H@N8WDb9bWifs-YcFaBS@eYs6 z=L5Gokiel&4*LA2#JY^cDx|R-KQKCLzzPPa^Dz!)kh;uY10Q@^eql0nuA#Q~hM{45 z%GwcQnE%!BdIrkl{XbuHTIu~VR;bX2t`?8LD~Ftu2aZEKqM2#O@8F%hA=cmlzG1nt z);YZ5;l2C!8YNONQMELY*uY>^Hf_I75~BU$bt^1!e3I^Ruheq5H{ zdy_wX%XRw3X^J{28KYpa87@G+eiTaa7<`L!U@WV*4-84Yk+(+e!MW2(fg}1CP%yYFPeul_7Br&_FwsXFo+A-m zTP!si^VB*A!bpo=wQ1ds(UO#dkEswNsX8PMAr2Kj-ujG(?zNAhqbZ@OGX|yCF`n>T z2PjYKlvL=wl4a4>Vl6)4o2fL;V;zcVD$arvslEpcn!wx9KrhhXhW9y@huYFV?a);` z#n0+-50rm>#n#f>W`WQ5E)Of|z#+vE#> zmIg+;eoH(0@EaZNtcAp^ly`a0ZOS917){McKTQbvg1b@3joZ2ZphrBM9!XjwWm^ zyc%9eAFvSs4)4BeXH6E*f*B>&c~2Jq?4u9!{KaQ+Ci4Wb&ggi<0Wk7A6$6_Q3ZMhm z!Ua1=2^FEy=8QPfe(E5EXh>p6FxeDZqp?KVo0M}%d)|AOXTmCN8GY4{F({aIhO_lf zWoy(o_swVUUUfp+nkflRP;}1tnGXE1R2bkC7knaw@RH~EB=-sOIZZUqu^1J$esFds zv=oKnnd7!b^*j$bnVP9_NJGwO6uSjNz^Aa>)8g3S~g zgAS(l^xs(?1HDFK%8bl)w3Ic5p^NBsrZm7EL*SL+KYW%5z1xn6JpJ;@e*ujMT|H9` zMmih<YKo;}XUwuU*p6C_#-;Y1!iwEcCQa(Z#)^T>sb z3h)=8bxkMj8i@=aGW8d@=*fAZk5M5UJDQ3dGyV>axTCW03tnu3GDc9ILs_Rm?r&tY z6J$%*1`u&H90Q&TuIU4K`s~&H%D4ufV`}?klUz0!%ga0STQYLCxq~d$F{VHJjUIOQ z>o^Y^Fuwlk>jo`k<>>p14x?@77e z!VHs!^S2pOu2W0dPmjso2Kpe|cMl^YWfY@Nf=u^*h? zL~Q*UX2C7ky~dFJt&Dy#96y%a-zalosYl5OI{XNgm07i~RQrV(n-9s|Xbtm~2ub;%A^;HTH4T`Ld zI-A_T6T{XWCIN$Y`gQGERz(c#t69`EDlx^zAi(F_V@odnGBzz6O@a5) z(i7efAKs6=_=p%sGj9tph4Cnn9K#pnDx)G^2G;r*r6yZO1o(_r0uQilHb4spyhQsu z$E?0GMk*YfYl_`KBgO=Oy0A-TQy;BGt6=X=DLA?J*G&0xnj&yJf7HdF$Jb-@vSEc0 zkwl~D%NS};V1`eg>mcu(!k_>A=i<={`NJsAC~x>UJANh-54BHt?uf_sXX}Wce)^Zb zTE%;~=n!7P^+u*+25%Ae!P61M;#OJCZ}@?!4O4NZ@ibVG7C3wK$48kJ8#E zj>t5b%{^0$?8)e_mff0nn`svh$)LlUhF5^3rO6MD;0s)ggg7EwcOU0L(1+jV<94B& zI%ueUu-HQIKl#-sp+iP@kq6J1xrfJO%>6IF^;X`DDk3NF)Sm|r9`v3dvYz1pAtHR1|AQ(g+?oyK_0h#`evaUN4ysn^p~t?S9HSOEqw3eOlF z?DOMfq^ABj9E2RE%pU36iCP(r@A6VZJ2V&)#K0sY4$;FMJ5}OL?%aukNVFY_PP-aC ziOh^7Y3wK+D;h}DPzjmX>VjQf*PYJx_goZ>^hmqk4O|gH?xZd9^-t*fejwHmv->iZ?s@2 z3FPC@sS2LoqRv15@elpp3xj9G!U%g!6AL+I0QWMMBAK$>DE!gStwuG zG5S{c@(|^b-dkAAuHn)Cq;&i>Ee}nTHf-&FqhP9_8oJB~Iji zzSybk^lgl2ozlx}BYu&QMFLKE;B~rMfvItd!NpI;jNXaJ@wO3j@)^g6S%V;C`rA=d z@SsMcBj`4t0A`B1aV0S6hGeSgT4c;9S$(6onMRE~<|87UmQez}m|l8MFqWNJk+SX# zwdsNl36aYKI1WvULEGq`{IuR+bdTn27kPYfD>RHOvulDsJb9K~Z)ig%9H#s67|rWU z(uU0voU)A{acA9~Ga{nP(*h~0>Eww=TLAV5@PkHhFKQO@VfGINdV zjF5v6?Dd{26=f~ro{tJlej}`Q?VblDd0d3h1kSO3MMX z{kD{tAaE#^_D#9C&v1&qTw}Hfw9{M4B|btaXO zMCBsk9PsJ%MUkqt@cTJwifqQt5_UKKPw5?A@ABsi1`H=;|4aY<-z@L%9oJUs4$2fg3^r?;%O*uF+k+U{z z!qlmBu1E3+_H*kfVT5uR-o>rJf|Y!pZVkI9gGGS^>1RLt@XBw0^V=Am2Prv(>&1`! z89a=RQ0N~^gm#ags!I~4eyuVoOPDB!Hn%^1J0$sx0moq{ON~L;&2V_h9D^W0Xx-LGo&2MS=Epgb z8qtHc%7NMb2jBhTwzYof9Sw~OZq|4{Z=1rhI<^uj9Qdix-fBPrvC~dQqAhahSqrK*iXlU2-_O7GobnCqkbQkUhR75o$_dj7Rr>KX6c`$I8G4A86;0KkFjsJi(Fkj9`zvz(ymE5Z>;C={pzXP0;0F49On3f(w32 zt0USTy&64s4{w{FvXznG&d65w<2*Q!Js#$B*sj4hRVJZLN2L?WTdeD3*!Zhkn)Y3iVZ zK6C~rWzm?;0C#=Eyp1;n`y59ZJfjK1(j$aEr?a7v7t~5Ts$caFobV=T>N4h=g7@U7 z<@)jpM-Ap6-?cj84L=GDH#OssHMT@Fn zvh|%QCCPwS>qjQ!GxBf{!{U#(0*Fv0_dQ7Ft8@(vl1F&gIWl&xMVb=ja7fzWw5%ue zRq}zMo#h4GZQ0cy2GvmBJD@D0%Ktj=Tw6GBH}z+cyRX|1&O^r-o)}6I?$fK|4AX2B zdmMyl`1|iiY0*hkY?J^mBirX0fk|)Oo`>%m-Nn)4*Y`Cj^ROyofM$#bBVc`k{CP-_ z9DkKj(e012TPMFwWicvr#QeBESGH4ESx(J^ibn4YkdKt1iO~gFcf6a?xe+@0GU}q* zM#D>%38GkSa@eqd=avaAf?m4snF}=cd4ULk0^qj zR-zH-F(2nMx0E~vVw}hPe!ZM~1o3h^?nXEs3?uX(e)vI|;0>bhy?;N$-0vdb^J)N{ znq!#nnoI24T>G5J(Qfj3k65e&JFeSa?jz*By2P{vW%QdTmk`*o2~(Camw9`wtmwB2 zebiICq#>m}f-m~I{yT{bfR(>IWXwBN=V?=tklA19$KlBT;=F zNq$onZ4+k6nIIE#3ZSpf!{umA1JpR!ntZaz3=*iLcv z!=aq@g7-2f%!qqt1fB0EnCR#uyNWh}v3M^Fz;F(68xA595BAUOQ{rTU0n`aF& zx-sQs#E1_@OPeUH)KOddLmzOz&lu>lHJ8v6j_+ogj^SW5{N@N89t8CDMX*d&pcj6k z1!IHGoR8@vkvCrL)D_34UmW8E1VcwO)i0woBgsC85!x`gHo45GDSQsDWZ`6-18V?c zK%Kwov_?$Cj#qfQGRMfFi4h2%;44EpQ+BgXLDe}&__uG_ltK2ukr+^Iguyj)x%s>R z06+jqL_t)70bUv47~qGdXkl7aAQ=>rX2;h%*+y#(*7~1MI{fx`ziZ#@c}MeOW8_O~Q_?)8 z(|d)GdCvR$C(o&OS$?mb_juI-O?me;j0Z(FXLx-d#idZ+CF&8y*eTLiXQZ83fXb7m zC)h#vB4GfbbY?(mM5+j5?8btpZ--M^g98MiMchVKqUs0&A(ob4{c-WI0eC?khwbQ&3T!-5!gnYl&|!t0O0Q=%G#-+3IZ4d2OkXY z39Eww``tbS1_z)XL1z3!N~WMTF*XFAF*59h=^Btakv20s>fpTh78j!tymy8RWyebq zvfWVmA@5uIE7JB!&2(Z93 znxl-}g%!ClitxH@G=l=qBqlBks9>1c}MPJiJpUw;{=k%f!hUa3p|IYx3|-K_l1b>)IiR4!vD z&?fo)j!N=>7o%F3FK6Z7XU2#p>pxSG)j$i0d{w6=YDo9{+oE^!@;4XzO&kd)Qr?9DW9GFW>uo4Af_H8kEPa-o8A{QWIaK{7AZ@dKJl6wf(@Zgpf)Zy*f7Eqw zB!!cEV4H4fgmkof35Rj&2qa2C(6$fgTSI~=;S`~EobHETf&|ktcN0x(kJ3sEn`cD! z$!c`vKo}GJLEojZ@`O7bm~(!&|H-Q1NO|p>%6dB^S<{+-{ql=W`Eh=}HO}!1JZ$2i z%%6PnN%(oc-^xH2a>1C+2*^D4yoU)c>vU%-EmJsYr!RcWsKY~@qba6K7z!AR7%dSTxPd}CAWH>gmr_T;DFX|^ByD`NGfE>aJ?`Ix8{AWCaucxdf z{m~AQG`(cRHlv%FYUTjRl|!^{%QKpN`j^jw@5qvSwt@>77*+ucUI-XWs|9lCa5l25 zGh>^Ec11?XbesVdP}*+JVKJoW=0j6;+a@}HzzWJE=VeSo6&gIsTT%N)4TUpO? znAdxhP8)5Qt}@b4hT*sG+_p8_ar>szD42&}IF%ucw$h1oYL4-T2uRo&3)2R5GU1&3 z%b~O12t+6_!I?lZz!;C9(yIay>{AE+ZAV)N9FZGF*vZ9cU8bSUWzG+;l^NJ0h(9br z0MBLIZ-gCV0{;@@}3kw=Y3?o0Y3e1_r~8el!kbNn5n96;{*;wrk@N#iulhXpQRUg+7q?5-3Y&H z#%zq(M4j8NNRr|HGET&6-pQQ>bH=_?UfJ@<09ruDUlBM5Qyi18T~i^FdkhI)j8hw< zfPR9Y?np}iB+iGC7ibJGhoAaeymJ=0f;9%#CxXwL6X=F$k+C*D_nif|_St)^IKF(F^|y zKRUpP;60-rdtcdEXFh!5Ic78gFSLPg4IOz%JM>T;4$i2==)!hXPOCB)T1cH53lDZz z7H0xh*IbS=8@NhR{Yvvr7kT^X8)q$NVr+Xg_AeIMY|tFEEE!w#&buofQ9!5T3cX}r> z0yoMliP*>kN3zkrb{LF1o~BPdIJ}!Tz3x_L&WMaLBH%RONgwr-PH2Y=b&4p?L3@%j zxl>mgZ@--d+2~5_Y>dUM1pZ(MgWdPN&68fkihNLk)OAW=9{n zZxryytW$9uu|{=3bY5Q?tb`663HbU`3lki#=f0=agIvpYN-lJPD?L3;dj>x`v`1;1 z`kls0Uj(vbz~%w6j3*3w9XlR{pSF^Nztd;Kn{zPfx1?=0fn5FK7a#Y0If6kiGEv+P zx{?*afPjVrz~|+yhrI)`wvi3In_!w<6pXW%^2iVS=Niof<3@9AAv-Fd_Mj@-n`ZTp zA(>$NjPR;6>D#5uS!WZ-2vo>5-7vAtY9t*-{&Ezuc|UeO%3_QTI>4FhF@zAMW7U)I-=fj$O!G{NZ<+4ohDN4_pzG;huGmd6Aq4eY{hNqDz;?wiy?H20r=? zt)_g5)Ow5WMU@&4_(=L-=(^FH{x=#!o4}MhT~Yq@XaB&7QZq7*u5v98y}@?x6$Jz5 zgyXBuZJ~lgcqus}1DC}C<6X;J9{Jr7VF0Kz%0jqDc<~t=Q&v+ah9URrJjhSz>)OMK z-mm3dTj@mlKheIr+AwEpZX5qadSrtkG@@BLGXB2bPVTI^Fy3B@NZvRf`9{O|&Cs9~ zx>67C+>$65IkRt{de~{>x(+1uz-&22lMcjiG9LPdc4%+Z4d-zXp<`s*e7-yhjo^UJ zUJ)<)Y>*Uss9(9H4=EQ=#kF#tx+_Z@B3c;D8^tgpcXRymm%m8g=QZ={dj`hTp0yQ; zArxGhk^+k(sBsN0eh;r^3X{PyN}wb9O&8D*?Z~S@5zmck;mpu|m8mq5?`JViqpLG5 ztIy~YX_^2tboFo>`P8QK>KHuGRrv-HY2#@=U+k#t1qPcnvOOc4I;HTEK^0iR0bRi| zo1otdpA*#=GNeD7$Z^*kqdRq?x&L~?L(e9y9DuK%c&sj-(tI*$_vx;YRen;AKETiC zm|ZJ}hxk7CCa7{>08;xDm}Jd$1CP*dZK!%|9p`4(8C@DV%p!aGM$W+Tj0xE`tt-gj zXxK|({HqQm4OJs9&otq17MJ%R>^SG;Qo^=;#Yil!d4^W-!` zN}eendH+Q|eM=6khjh&#xLXW9tp!AN$dbMMWbSIOhzk6o1$po6Y zPe#4Pmn_)^ERT~$V>CLqIJDb(a9G^g&b6QTEh$IW;6i@LGC7veM|tPvFTK|u`%CZ1 zG+DW znv}EcrajES*hT~)q~Gd0B()PJPrfO6f+~8N@&|2Fr|q|mL$E`i%O*LG`8|eVMwVk7 z2-M(k#-;F*Nl-77{LOO>4`=+^{4MV{dN;aE8Q(#t;HCp9{p6=@O{8hGz(>N~_H!0V z`t2;T1ru!;0K&eC0qy`A=QEo*a-IA;p%(=cb)g+YtXrIl=R~w6%J-Jp1_tm*fw&Ni zsj`g&;Yeb9kG=BKPjWMK1OJ`i$U!n*aD^Y^d`TPhW@xl!$Cc>~G+Dy~7fxzEZD2d? z_v!P8>4&L0ulwFT-Oz2ILIp+c|ut`oaW<4iRPcoH&+;Nbb#B83I`t% zDm*zyhHBO+CjcD$$6)EV`kNSjG&ItYj7$nYGG_#0lMG$7jh+EFqAUYawoWAUz`GCf zFlfZ7##^wa?AjPKeCw^5PF@4P22%ekFXhA7iT!>#eB7&uIj4Vuz<0viF4T7*L1qSr zEwAsl(#K1KJ@>{jjQ-7tKz>t%1ANncH}pNNdMyweVf(wCb&R+`@Vc__jqU2IQ0URZ zxj5^0gM`%M@W{N>_7BzMIOqqvCrG{%K6DpV^4`1u(Uo8S`roho%fI|fMN=6&`aIuop)mfjh~`U`@5?qjB0GdMkO=1Ta?i;=C3%;Jb|yt2(-u5E`vbm+ zT9nV&jrh!{LL0utTw{`RQwVw4o(NvzK;=_ZhLVA#?A_5711^<^y~gNV7y7U*Eni(X5{3s_u`AhRlz`<~KC26-ky@mo5hc-U*PHi~XP_>R{FH!v zCF#xU<<898qDv@3ggM^LVy;dyCyO}*AJc|W=^U^}BAEByy&odY>lH*dhKK}cJ+vt; z!!wJ0h`d8ac4&=JC?AM#I?|kip&6o6KG&RwDGzn*6a)7}1lRp7Pf~XXL{W{roaJAh z_u38_(WUkth8A{J7>U?T0YOI+gSC9$ zd*IBJC!FU=^&PGk-_WT>I0^tt`x$tYh$45W9)%U5X@-)G6M51#0e$CC1PR}SzZ8@a zsKW?8Qb#Q=(uS^^!^V@z8Yjzf*?Mcb=wA3I;o;Ej(1RN1IPK8D+Cz1687@IY-?SV4$)oTLJQ{ImI|?8NWJkVo;JuxZlW)9hr$#-vHBwC<;b^_a z$QsU^h%ydqRLzg^W}MN{eS9)~Wi3U2OxJ*e=DYg~jrQQ&;EM@l04(xM7DU%w$PF(2 z6mZ&*hgbMxBwKlk^Uz;1hfin@m*qK{D+lhJM-Mm8{Z1vNj;T=7Wl}Y%_4F%FDt%=` z8vV0Fj^GI{nR7mB{opK6(?8RR_v55EEH9EZas?MZ)b&6iIAa5n^`mL@Tpv_jo!s_| zQ*eVHyM?ZJqrKiE!>MZ;RIm<)Q7Qds|Kf1gi5iuV8^4)~nZg?KgmFP6fVScD`AwKB zC+X}@Bo1SXyy85@fP}wE!(avdh5}+pjY?w>3EgL(eU`}JgG5o@D4GcK?YuJLyF@;D zE%M735w?_Xlv?9=Ec#_v(dS=$6}W^kLVv&|P?S=i2^k}dxQO=fZ$2Ao6g0+Ra4b3p zUW1#tUU25qq_gW}qPqFOkGV`qo61QMi@+E|*Nprzo!~ZQ;LuDBWCNc z@@UQxZQE!K9w#BWum2V%P1RWFejc8StOWvs4|N#Rm$Cok0e#TU(BJj+S>D-5+(@uu zYDsydHL7BWDdj#{tW8^o(Npr4Rd{uM27empyO{Y#rUonmhI(cK@Z{3=6zhoJl+zS$w+v~xle9C!t z3x!Acl%u1Ol$5j!{{~i*Remrwrg!1Y;7fM!z>Be*y!noMU!xwHPVhC;IW&+?flvSG z93ELW@Z1m@a7GL=86)>}-H64R!^ARrQ2Fwzn?v^D0&eNpa{`(;Ai*jdWBp@zZ2iS3 z&@Q%&qH;_Yt0wYNai`p#$d%KXRps92`fT$E(E%!X`|_j7@$^ z1kbR}yz2)aJg6}wyo|C)WE}$L@rvX935lp$_ZTSjA7!T;JTOA8;j(Ry5>ikCh*;`Y z*^0&dfnSX)1xkGe0sIl#tA)|XDs|y~PD{^=oWL64i{R-`1f~&qA_KU(=KUE3LSlp> z3Wht}s{9c?({TGy89QI}$+Q4tYWe`fD=f(`%(P=p8jMDHJqISZX-9uHl0rkci0C9Z zj*%K#y60FrF8@lqz?I)Vrp%{DTKs@wBl%frF>HnWAGXjBGd_ycxQJGeHjHnICOW9V1fm+^99q z!RUi58!34}S3f8_1J{M@lpO<-ooS(M>6|=HE<`GC8Fo*yGoD=wNKk^V`f%by`mwx5 zSCKxQ!8?nu(#oB6BlYBiK?XSuqh&!t9a-r!BWDk`DF+^X2FLZ_UC>?sv6Bo<@d1rz z+J-^pB#~@rkDhqu;7pcg*#D*kCLT#>#GrPBkZX<}pBU)Ngcj;?^3Kxg27aB7G2EBG zIW~ONKX6ue1h8cMBm;%|zpnPlG;;mL~so8Fxo=rZs(Q1p5OG@ zWfB?bqcUqich?r9={|$Th!A3Fqc=(?8A_sq7fp)L7H@PgO(Ke*tjbW{-3n;e5ob(5 z2#3DGg_3GlpJ$FcRBGsRY!!|Wne$yd)RQiG<$8|k@0O{vuQQX zgKq6Qi2jikb!-9%vc+lX=`6lPGv$=obs^_xF*ay!RAH@#t{Hi~o8JtUpr@~9Nxtbb zBQC!?9UFS!wP#hxD*Ux!lt72^kW8k7Z4)l*K!Q+dFW})+CA>vTINlgZ%A=~X6z6Wmt^P7PdKm`0+bowhsj;Xm@LKACvcS#R~3 z=E9EQhcnuk&49lImj18_JkN zeb+{R{TKff^>8ihd+py(16+mY2^p=+bV+dYnD*im=s*4b_g8-P%U@OLC|8Na=%q5^ zAckRmg@d*RBNDO;w7$02kIRR6%2OEY9+Zrc6=_gp43!wUlT#uLDR-F|wKdx2fEfdZ z$wO6~&x}qkYn-n!P|{b-!SvaNI1hW7PNR@;!E|qp?bgZEA$0n``_ucxXcWpGZN`@H zT8C-$p5HY@F&-0%<~81dEfKgHuo&cxNLFxL;P^vml=~uY1T|&ANlL@Jbr?f`bd{Wk zuOo!uqV3*OmxI_ekrsz?jI6?MG@*d{OOf2e<8^BA$D`@rF)f!e+9C%%4*9@GuyV6J ztCGhcq1EDq52m!p1tW-F5+38deCLiB;yCP(6O=?siXZ-nayb%j(S=7HcwjNg3^@K& zF7ucCu47>E!5)V`#-1EY>T#&}=@l#tG1}>aez|9~!-?pREx9$6!G)gf=(d|LIN!8m zkygG}SeUA_K>%D+p{C&&cF!Of`O`lyUo@%(zxr0p!sp{$V-ng1c=!`~qz$|hY~T+( ztTzgV`U1$z`G1oaJ=*O9CWECzED(*PcZ;@QOo254gE~*5Zqf{bQG^BjXtAx^pi5INmU0bpi{yA{k_K;xaA4*Rj~H zD0yqDkD_enMJN;=0qT(85uy<;L@=bK&>g9SSdwx(8mQ4qVeJukiQ%wNr;SanU&oOV zLrm?vPZ&i)46Ge3hW?(Mh1=gt+MmOm_e|G-x5iO@@I(woD}(^^v}?VDuu2q<(c{<* z@2v@}a&3PIRwMf0#b8b(HwGUJg183Sxk8lu-J;Bhcm)RDyiODK^<$lp-)%SYknGaJ z{nwK|Ew9l_^kn40V4?%ZsPED`bi6B#g2yTkIE=i$GoTy&q1U!r{PJV@jULKUV#bSd zP%usde1-S({`z{00cD)h{L{)`65oPLzPF?y!g)bpgT1g`cO7qV&OsjnhR zG=(E&cI{w@yBM6a#Ib@w?>zW8&f;!A6l8Si?Y!>gkK9+_qm? z%8jftjOgRx&5Y(E)2FGm^f}~ieK4rGdgQ6WSZIhQMz^9?XMLH#%G-707$V<=5ZN_F zh7RsKl!YHhA%EXCAs>Gvc^o)gTPDU5ex{{Lr{serF|fP)4UCx*3T=ZUnv)axuczU6 zHU*>|(K&~zpLk&umImAA8t-UL+L|C^cVBh3!;Ht_yjH$nZ|`J_f(Lwz8u1oS(F(8C zaghDXv^q^sUGHyY_S(JH4_(oAb!G8byg22p)9LTfd*x3sL?4t{dqB77iu9_5JKN3P z>>qh=%0HLr?Jf3qindk_{y~`S#09t$(J)rySuLg&5&w z1a{{MA#+Tcg=p8NO=|GNuo2v&$WNS>3Cmc&2@K^yY?0TNSpve-wfte2Yf;baauPLD zTn5A|0|@Cv-y2EVMmLeH{3>qR!_2nHI3=GF5JYL696B?`1j&7LfWzXl&SM41xe;7& z&?k-&Ew|1k-{eg`BQr|5Q8*m5;b3?bq|w$3epjT{vVkqa+M1T&p}W68N*zKnzK4)d1@< zg9evItZj3q2jPXEqHj|-oQbl^p(o>K3TdA94nHCvJH>_n%8?Is$PS(_Jw>}~2oPsDi_27d)f*A*=(CM+@T3%uZOe+Ut zk-AP3z6x;Al6+a)@p}Esgbp>3p(i=f&xy)8^x**>IYP~GCXogA^ub6EFUXGe(F;0o zhLy84e|vfQW7@jwH0cvQR(=n<4y;qr(*=D)Cy6YeDLgd8;nM?slJLVl3B2X&$`kn) zunRbpv)#9&4;|3A!u9OR1bBLP`XXTm4$085SFShj@;p3A&VMbfAy9ie=|6w8x0L{hiChHG2m`wz{(cC-?$w&|Y ziE$_`(ulGYLR#aaugWam6sn37VN;LLaZ2h9oN>nMc$C*S_ZZ%{MRPf$3%Ky!2t~UU za`!KIg>IbTWl|2mz^wz$?{Oq{-OQohCV1*Y*GvM7!9^=FP#MWR&R}`O;EL`B))*qn zu3yS?G^QTyl0rA52nHYT$ODBs8IRydsjP7@)TTTM~fUjSz6ger}V*LfxGqBlXSS@+RCw%jC(&pBNFim;&Oo;OiCd z(+4oeLFvo$9P;Z72w?gX=C{77IQejm;GX*wCrUQ1rX1aIZZma~J=_7pTA zaE4>sL*Jv%`g19VWCZP3R>(qkr=btIRX#w-9~h>d=^eT88!wGMHg)8Y{7#z&ZtX#2 z0*{RVJ$da*qz@i=?jz5pqzu^l==&?ozK2fXO%~Qsg!3&|9Y-Xz%dx-l+lvO8^ryiPX zXW=+=&J!#hjynA>{<_zGq+WO!mlV4+_`RyZg_b|<-Eo$;>CBhS=~?mD6C(Xs+VVP* zp8Qy`Q+~^xew{BSf9j7APNSli8BRyApQXnaov#3kFt0`c2v*t$2U8diQwuAA2rnVt zo6-pKxuY1ugWHK^nC!P{4b0oLurMCZjodVI(L|XQL@5p!oTm{2W^FXtkH*B{h$6LV zj+r7c%0_EmQQ=h!@}zCoHAS09Y?Lr}m2m5oRKp)LXll>s&$Jk04ZcXvLsaj^!Fvhi z;PK7!~Eofujn3$WEt$0%HvD7@2Fq!KlX$K2ulv z`|PR3^LYbmok7~sHWo8VcLXZILHo84Zv>7u)84Fmv~F;5|GRI;S*L;0%=*NOcV>?M zX};j89tWfyfeQtOi}uJ4!-UohnsPP-aAq8s`}BpAD7|v63_Z|i{jD+0{iiiXbPJtc zHS#ZB;uGT!3c8Q(=%;)z@p|r=_!<8Dt*`E@Q@t(C$d5oKN1}RkMvG1Oq@F24eYJ+e z;nO{-&M#+eGQ1ADVA_`R^&4)5lQa31e3%OkWQuuu`|X)RPg6CXj4)@&0c+P${cg7p z8ir=dr-wD#&u?Xl>p5c{oxiZS47Ndy=}&^+^ z(}ye5rjftbJqaGjw*J#&DOB!x19)v+y_ykias?x3LMPybmik{l<^ru*h;c}B4cJ9@ z{QS?SLG9Ig>tSEbz4#SOAd1Kl>)e>@BALvqhcQJY>0~r=y?G*uM$O<5OkjF{%GeEq zu#fV>JW(e_@iCg0>QyL@_t4}wg?JIAm$ZeE+R-`z`Fn{I@IEeyfD%;95iPwbT{;xZ z)y?g@@{5BrrNMAGcl43MyB6XeT&)M0igA`01`cKwP8sQ})H7c#ug8rDNh1?e07>fqu;l=adzku`eTxzcH|w0$$LrqItuOX-JtoLCJ;&SQ{<*V<-G z^aV`Ugt9{J8LtvCr!mUrrs zj^#kRP(J$LHS?nPv{5ajgMlAok5?N2D1S432??%TPyaa)^fbCKB2b5{d%2;yoAhzv zx$a0XWu<+=WJ!BdS72f@ z%R1Do5oUep&h6NM=kuO8WwmYB7kLH0P9;XvIzV+LFx4~aKszH5JJ;sOIwTpXZk=@} z5|jQNjwR(8W^z}a#);gycDcQO0*Pl&@K`{=fjBbdik_*T2HFNag&$aCRC#QT;B1C{$>Sd6x;}pXSvf7;cf20!jMh8eF(ku;L8$pOEOkdkt|?UcUBfxN{yD z&abxD8yA1TJ&!tOe$;P5>n*qNC%9;IKQCQ_lP$y&NUiIA{Y-4N}lMIgs?3v55Pt%u!VR(oejmb0m-s8x? z8ox%_fgvD~H&NI)4&+ns?L)ytw{UCllC~+Nz=R=B_85-zEgj4MQMf8&j39p4btE$M zDh#qlc6NHi6vWLN^JK6(j8k#9b`aR=n^wXu_lg!WG(i{E5aJ4THBD?P>q9BGY_d-DA5c?!3T z?Y$cS06{iF{wCM>3I~S$%1v~f=c?euc^G9el*-(>Gh3XMRZoPDkB-ki`>f>!clYn- zwe*oW`KB4kq3f%W2YsyF2(IpVj~KlZz1zHlX4+DQL%=)7B>HoC%;0=$`dRj?ETjeKrkeDpP-qgq7nE>5x2d*$BTmmB%l} zZs<4tq+f#;qU011IV7y&g%q=PB%j*;1y+5Tc|GwJv<(>cj zYttOMf!NwbY>MMBl)LdF^Ti>u`)_5j>`o4XgP78zhcU+K`?YlEMug-gf(8b1Fl3nH z_iH?FUCJ+kjY*VhBYw_}Alt?%S|9oPahes-#h)@PN^>1z5%A&^d)J^<=e( zj5De8N&UYiB4f-rmIog`Xhi6@XwHrsZSE8NmohBKxDk3|BK~^C1Kd4j%m^EK&*~5=~!F8t?(4E5_<6yoz zBbFSDp0%j!H}wm@vqq5VyZ7^o9nV`xM&x}kFcw?AabgU=Q9K#q?0gp_79CPa$x2`1 zfCFD3hW`>{3KvI%Eo}!+^yyK**p?>=^26*Y;ib7hCea_nSz7FUOVsg+@Vzd|F@+D@2qF1 z^uucoqIyONA`l|JP$ZpYY$DJhK8JA2R92Mb?Y!1O1P81kKSSfGS4}<75EYTCP?$_; zO0p2RXH8w=FtlXU4978yz*2BRx5gENrC}Uqy$Yi@Fa8i1{ZOvLoi=Atel`*?wwwpJ zedS5|bt;=W1kvvqjm*>+@cOo+4=^qT?4tQMUNXQ8=fj83IxJ?87(j-bVj??%W`Inc z{qc`~>^!os2*QP7V+061MbtJUgI1+eg*ZwU<%XxJD^b!YM`)2c1fF8yRhf<_Da-JR zqLnqh;ej(etdoIL%0#o0mo^Vxd>v=u+XsgEqRSeI7;5v&Mi%W;@aBAibd8s_kxa~` zjkki!7$KOLzIrPUUul!986c!zM z@tm;tZgMvD$I7UC$sp;BB%PsS#XLoWuAMrccbHE7Qgh{`e#R?n446Y3cc_WtptWmKtw+!eQVpn zi%#p4gRclCxk_JQY>gqbhWS{yAo1gAJN;uN_Wn=7cvD?isdKK65!;zXerhVaFfb~D zn+`G_9#F}Q~Aja++| z0h(d=^VDZ3%|R>YEUh!C@CH|Bk+6Je+C34qdH$fyC`8Ish(>tb>w`*%kzQkH6d<~N z=k9zx?-xJ+MWX$08fmZ5*7lPu_U@FSe0hr_hZlq@4&H}EGOe2k3??c{7F;frnPTh1 zrIUsuCqltGx1YW+q?E?DBPh;C`Q`*=l;Eu_o_Q{U(V#%9_z{vQJ|9H3d`o@4L%|3! zk`&cD%Icsq7+&X$4`^6}oOT#1$9|JWew|z7f+M+gjWSbS?K?PAeNM!m``UQwLD4vf zG+o)!zdG*n6;H=m2ts0p!s~34?Wn;Q2tACLopLGW4YL9Q&Z8zF?d<3-Ktf_B;+*RI zlSlTt_5gQA8?YSkynfBD9C|sy3;N-UgPb_f+$+N0$`=$x#YV`=+s!ldnpWjGq&XdH z0@ucI>ob~c#62>^C_d@PLz|{}!0-wZGF)f1d=1)YZZt*i^n)?oQ3*X(cky0)<~+LP zdh}{W(R6ei&EP%qcRbq?{=A;lFEhfY)v?kOM~J^sXmCuS;C|?JX!atsg6s5Wr=0== z`@=Qz;T>_N_r}Q__=X1X(*{SP+&b@mhM;ycttFTkdd=($s0}g#Q>3`G4q8nt+Mp)!^hzsI`O1jIlE31pY+w9!jFH=ldf-+Soq1 zw?aQSOqsSJJYz-ZV-!kEnTm)Eg>6{AqcQyBB!FOmDT=htFjW^vId zYKHyeFf1m&l{Y6&JAs|H8KTNuY0OdCsgo(W=Xbl~rE3!T%@`}!evT#wrx^*pWK@F( z94AU=e8bN;28WFv)~NbXtdv9x+jh}w%Et)>b{%hx=J4E0GdafcSPR85au?W?Tvp%F z6&Ave^YVoY4)6W!&a;b4TO8r=W_TU3D!u_2S_mBS3X_y`ewaFT-QnG-e<^gRXi=aK zM##4S3JjwTQ!4aA>If;cfz!3C@5F%TY4?XSiqXf3j$83uRD;#-N< zQvbaO*|n>AB}1aox2=anp*lAlC0-AWDdYlN$1ruewE|s75?nARYzcElc}0cbI7_w( zWByfZ838oI(G!7`Xt~!(HOvkk6~-Ak5MF|h$uAS}jS^S%3TJSeZzTIJ2}4{%T^v$A z;dIxGLhBkC;Wgab4`_@5qd1HUL!h7AXC(-m{=GaIN({>Uf680yv6YY^AZTbqm?eUX zCM_4GrU0FKVl<+(@G|Wr;WfHbIQWlZ4vqC0Z@>~^NmY=PeJiitra&S{FgLQRaR^>u z;&V0Qq;`NB!0m&Wq+_k3Oe9$i39`)>7B<_A4E4?H9b90fO3Ll7Nc zG{F}KHsJI-mBW5Byh=lrxLuN#W<>Q zX8J90pk&7bk>BO*zv#&^Tl5w5pi2Xs@L9X??N;ry-S%@|Ab>A3BI0Dnk;~^m{Js|1 zSKdg~Na*3iY?k0q-}Z5=ILp+hD@G{rY}v?%#5g`me*_+;Ji#Pyf=94#MZfgjnhIEG z3?A7OaF`ZSPGY1>cYO)?!7WZN`IL&?sBH+Y`puD|U8kVK`>-kuNO?G>r1HvLGje+o z!yg>w75{7v2mg!gE|j9Fn&?#n$<&iurxo-VcjHSVnOMx=n!+iA2W=MISj2I10|$t8 z3VU|v@1+X|GDx(Afd5C5Qsf6AM}7X0TCbI+mIPg0sW6qh0qEj|0Js z7hZ*Y&Hn!-j$xPKsP%vp>7Q^r1a3xtQ%;7&t+t;=pNFZ}6R{F7r0@w<34^5ye6RL8 z6iCq>c{nRmCa0;XJ~TqBbIPy$Jiwo`b2Wy0jFxCiZk!dV!ZSoCKo;4gZT z-p|y6b{UpU<2WenC|oWEHaeF45&oQa?LfQw;TBk4<)W+3Mi92}j)6?S7^U!(;qYdI zZaXb}Q!^Zx>5M!On7W=!2JdKwC%Lz zZ0BEG&6P)SA}?Ql-2jGORd$cucz)9{sSU@YrkGbFD3o;#r)C*UoTS4GQFk?sTsk zST5SoZ(20CQuH{L!0wTJHicc}EPPs*VK$XYXw_?vkMeM+BRgd6Me-#uwBn2glNZ?s zAo=LK&V((a17sC$+C#gs1p`mRxdqsiiQcySA$RRd?5BiIN3EXQWbd5+%q}cOI}g@r zUBkuVC}a zi@$!}HwH7tj3HQ}q((#u1}M_50bo3+e$=Wl?|dNAOw0c^DeO zfif`$Rbvw+BGFB(&Z31HPf7(vPc`|{^7FIeK%qNz0ZmtM!z1Z9}JHE zquq>3RGc-iz|9ED=t#6o8b!yS=WBSs`~4s4Jg7(Mn(3TC3N5@oXBMr|K|sJTyEZ)r zPf@?=%GKeg#OlpzRpV>ja)}AMiyN= zjBq6NXS#HZt~~YtE?&@z27ZSk;kl`}MEx&QH~qMp2p5g(jKVwD4lwh-^*9gHgGP8> zrSvi*Tf4B73!(ijY;`1mwbv0UV~=4<<9$v7=t<78h2cG1S<8WtVzEP~HMz(h5Gm4R zT|_F5gN0u$^DJe;`fTn9%;X*;kOixK4V@EMC!2oG{^=_K4rG41pt}lg;qx_G=`OGD z%YwIjWGTc{;`{Hi!{Tn9If&7htd$s+Q-WXo>X%pk`uSgzo2Vs%=XC_nvN&{;8GQ>HqOh-fl6V)`iPw2LvzEIBEa`mGb#JG@UuC>?<^ z`=(6lbWwPI{^Vct#iAzL6B!(bX&MfK<3kg__oF@f<=WnGMr-i>VG}Ei?ubGe0E%gt z&!}5R=@en^Z30_zj?7n1PzR2E4^NCZBM26ll85@{!$vbLAkS_s$}$V~1Cvq0@1u$6 z&5S^5JX2?!%PdA)(1yS0>-Jsq=?X-!6QNGDIJ?9sy@OIxPTz6X}{&h;_s3*cTsxT@s z)#w9DKCMg+_Z91p9?dr4Mzh)`XCW1OpPWT#%mEo~_yC!FQ-czGD`z=N+EaUF)7(Fu z;XHo(o8Mmf&2N7fdCBI2(Bqvv&(rO(qI^y>a7~8{y`oD8Y;8!KiP4pvOdYiZCf#wD zEPVB443v>T_+|P{zXcq-3Fg|h1Oma0?%6gfRd>?%2K?G$2(KkLCm)!Z~r@PoK;u7wVLcc1>RzJ$R51zpHF*`TR#d*u9@? zI`I4%4LYYvX@&@qb1=yO06+jqL_t)$uF-n|hZf`t-N=aku4kq9tJ-So`&z7jA^1iSaj@xZ{?#t1=uJW&Xkl=Qu2A5Zyacp+-@rhRhoykKc3Ji zln4%@!z!{bJ0_2if@NLgR<@{q_1#xjK8TU@1hoi}u~fzehAM9wp`_)*p$4nac;P?~ z>jv6!To=v8IN-fLIHRXm&U=Q7$$!&Wuou?S))(#-e{CJO^6e&+a7- zukWy`OmHZJ&uWA7Iar{~3=O(4db5L$Q@$F*ck@Q3M{do7accz81I~EpT0hW}Ve;g6 z(;x*B1ilP$Y~hijQ-U=uhiqs-BLBp7F`&a5AqlAF&Z zm@<=(ZdW5uGpdKjJZHnfe3enkP9K*D|A{{wx2d!l(c1BK&@X+m7K=|t>vT66QG!eZ zeixn2RA>8i$o|OGHXOYRjYj_1$TjiIwJcAQlp)?r|nM(q*RW{k`{F=>Nc%V?qfIW_BdPeuo$Ylz^#AS++f$ zq8zm^xrWPS8U;nM+dR(wFNeQ4*s9 z298r@Y$rM=fOhRXi4n3mJl_(S2iy)Jc@6i)Yue4iUX+gFqK$iue&>&)u#KdO;hX>H zBJl7r1;qJqV(_mLhQ4-RfjLuJJ`DCn=9#nmO{8^1g2<=NEc}I5;iEKkK>N@-ZBcdx z#bK1P(Jy5aK^skYS{iJ9QGZkGrmqa7W1Q(ZQXQP<6(bDhrwK;%<-rH<^#MtdGsmkO z*pA9b__TQ(a&ESrY&RSJ ztWyBrZZD2g8xC9}GkBzLl51&=x%SEayvBu&M}M=n;<*p7Ock24f&*T3oeT}qmVQpc z&$O8Q?wn1g>y|;YBo2C*I)>D>wxFtCg&#b?gpa)DANUr?8~%{TPU%JXuRCJQuVx+h zI-?)wD&qHWWbKCbj&zus+6|kW@gCR;t#JVO%PALZb%ro`n*$DxS%gn zZ?0?4l4tY6)6{(u`D4LOQ&<3`%Bi7JC%^t)I&d!AFUy|UbD8^(U$;XkZr;{byb5+0 z>fGlM@-1{x_|qrz)iocgVL%DVR}s|r66JiK9T&IqstnUq&rIGW`RnbZc`~f9^i$+S zNj>~VX}*g>5mwtP4e|Shwf0bNw`aMkR{|BRIgj9sbC6R*=-vy%(kXPwoOK-XUQcCq z+GAjRWzafEzki-xR)i0Ol@Tp_4-{jECL*-Uq|6+La7WT6qItE=#ewq>jq4PH#B@k- zU05}g$@AMZ4`uF-mC$P=MRg|1p2$@{7(r#F%+aR_|w zS1#k#yTKu}`5G-!i6g=PCovq1(`C}j+i_x?h6uVrL->p2j*V2)jX2IYru3b2@^)KO zg{GhwtzUlpap>!NA2WTD+JWpC$5z_-5uj*=o=+op7Hfw$=JDsL_7CEeOnHgIIeYMx z=SZGBo%84;8jhO6i9>2Mm_DN|!@g@G+7}4n8J)?m+@C!w`+^1X&p!L&%70|) z>T%lr`7eHPmAarqmVs)gKuRy^dnE&HEOz(HUy;LkOlQ@30HQU$m|eZ0_l@` zaD|KgJz!nWd$7oj>mEkW!Py%yYU|kF)Pc8t;59uce!+KWQ`BpTT&*MFLINiEB(r~} zT>r-4!$<$5G%+a`>hEt;q{=lF))thbuPGb3NY^7H*1?9JEDM~PspLuEpGiKylYF|v_s2n_~i5Z*7dbL7Je z!9}+Z9{eoE_N$Cm-V5Q{<00Y!6WmecKuGh1_3lfHYWJ%gqWoJ?6hynBKsFe-7P(2f zwg!T-%H8f(5K-nROK~t?nW>$Ne=x1k=rbiU{GQRljF!fr&T}Z72;n^&6UJ8mW{6%P zO21D+l6#leTUPlhhKwY%nRX6CKH2>{f)9?ZydJKbk%3(?aJFR;owb8c?z?u6LW>YN z32>gp!M2@ld7ie=u1=&16*|_5j7(%~p8k&WWK@ix7!*@46rNL{jBPK!Zy)&FxSmKq z?SX3@KpmqNX`)BG9GZ!wTP{ZL^Dn-v)B4$mA9OMJde#pZ8mV-MHmyQaG2AAzU@*d_ zrsRm8zSc$${PGf_IZ<`~Hoy5T4Mj2Z|k-Z089k{^}sGb7rtF`;wxjBDCZ2kdUU zP2HOrtzXT^7mpalzx?GdSAPBPzwH#3K+8`J>0#F~-=2R*W~?Ir!1T z7`NO*w~ipws%KN~-pMpfc_nrZ6=DRx%*ff-EWI+_lmDN6`j^Vr%65viUwAb^LA#1l zIVN;rM9B|%AwzTzuh0z~*Y9N1##wq5iLJ=``nr6RiOUfJ-k4GagR@nB@p9(uW`m00 zW47p%Ia7lAhEH9GNS`g1v*I&dIM!hCgSSx%d4WH9sAEXIo1RfivOCWv0D;D%;DqN4 zHao&#FJ3L2KV(fSmBDy^lyVKObe6?j)0;OKpRlv=M~aJn>-xh6s6sCAym^7mfkX)1 zY2L|!)LjJPix2|q6rdRD_T0SIIVuC-cmrlz>?iKNj6h@CpyBU$?!xT65kp33$LN)i zj6(DDBKN~Y!%J^s^#G91Z+cb3HyMH4e>dkig1hhL^~_NKBMHpqIXh)TQNvUMLmjWL?hr{4gS)$vGw=&M$=nn^QW(~GirwNlm)E8ci|A63isldc2|G~CV>j=Q`J23 zx1zilt2=i*XqOKhndzr5GFoED^g$odZny}d`r%J94$>8M256H$nR?wt(0;ge~JUK&G}~^{h}jw z4h9YHMu!AmkBvH_kLgkSCpztORTw3|a+6UYnkA2;0*_qT754vAcPGqt9mk#E@594R zaNkL5p(UG^EVn$4n27NQn2w$=J`*0d-0elSWs6!!krYLO3rG+eMkugBN}^Snt1I1^iNsi2M?Hw1SFU+_^i-d(j3g_>GS8lOKH$ zUvAx^yym4uypXTP#V94u<#q3g%#)7M-uE%IB-=(2=2Cnworvj?5Xm6NWMTTk zER!W`>TCU>C+CJd^?U0nPq#>D!n&J`ox?N;UXZ%tpj{9^^e+ zeQ)J!W`8!?OpJZgk?tqjQVQqK7>yW}zyP0>7EP<^+x+lxwS|5wojAa$&#o7K`c#mb z5SH?U#YXk<@pB%el#UV~A#w#kHxClz+|R!`J9zdxPHP{UXIfWv+e}^Bn)cM3`(cI- zfLT^<=u8CDQ_AG?YoG64c<#l7ajrKMrPExa&`CY^Dm`*YU_|zjNUiBE!Ujo zlwODvGSKnQUl=9La}mlSY=ol2=REh~V#l1RZy3un7!L^rr1|T)s}W{rl3RYmyit;m z2!)JWlFyHD4?Xq*HTNc?JkqLbUC+~{m}hfG9!{74Mv1M}E|!K;RLUzWB;u%3Hr!;c zDdlut$uoIf6Rs5s@C?n27}X(fqPEh&;sbc)@Naa5G8>JY`~ALB?F z9;Ht*43x0VAQ>*6uq{efV(1v3;fs}3wwS+?5&6eiI{QNSI0lkjn^-)CABaf46T_)MR3ulVyz1@yVV&+?H3F)VxBRnU_hw zkg{zU%Mzi;BwfZ#sWgXVOgGX}Do2>+EwYF^1O`!_=izi8VEj9hM%6I%Et2l&93~w< z&V;5_R?B-nYxPt@5W-HjGB*4*nFcl^3Sljic27U^e7wgS*$3;1E|+}fX&*u&00S$9 z0Q<-#!` zj_u07D(48OXN2)2a{Kyx>x0Lx16slKbm;nd zR-brrtu)T40c{u+D_7LX8>um;aC6=b029AImzN2@j8dGuGa{h;;7vJS`z&vOhgZs4 z`YAMGG$0JMlKNqIcRS{g^5`EU69$~W=zW*0$jLIu4!3jfY!}ZDY&={Bgg0sFXJ1gO zg1Q}N!<>dWDXmQhcV+^=VUFClv{W+DO(+?Xdg>uGMTkx>VKz^)l* z3EtCZQg80p7UN^;rZ~}pqe6M&QH@9Hu_!^ZT>Dzuj0l|Ym^aHvE}kWk?`Ee;*2a9wr+2qMHghF3N^5z8<^q7b6)rzZQeP0$g}P<_>2Oh zh$opDX?-To8AzjDb4ciGuEqzH$T5B4#n7Y340@9j&JM>y+h^0pEF93c%sqw25e0ov z{%*f>K!5O{iYSFq_`nCwktN2fGE$;Vo#Y-Y#H8ib5gyF>9(UJde5FcNWs1CMGk=n2 z8M#daa~M9QVHpaGI>@ND@zK#UVaw{26mhF<;z9D{fnv1_YQ&#oA-$ZRZ8xd6kxM|t z>k%sG3orrtsLQ};r~cP^va#MyQ#vOad&G#S{cEPjWmP9eUdr(PUIcNy*MONiQDHNwb9HoGOCbEP=SXE4> zTvjOP>PP6Yb^74L&NXZ@eJM(G6wTvMRTtr2%AUeV@S*gQpHj)=Cip%sjj;)RH)TYC ze^+AcI8@q~7!*TxFBkgp)E8lcoR|31uiS9a1N6d^aI33KJ~qvZ>`7{eZcO7C*N0P%CuL zRYr~K=j~b*C46%u%3;xucL}}=kppcT=}6iXYB9fMg1E-4o_yqB$dndFmebO7C^OF- zsK9pict*k(wHamgadz~b@0e#ow(XD|GyJ@ zBq>6M9zGJfow*bSM;6e`_T}Ul8u-v%Zqdyc%J#G92*>+6UQ+MnXj4nH#6x}0PrF9M zp=xrFfoTW7DC}iK$OD7a=ff;jx0LOX`u(6>Z~DE@{F#wsPJ)Lz2bcZ*$_060D3VQk zqrc~`Itm8}8CiMqrvr-=Y8Wdx;XpRJPQ_W9ekPVU1GF?Yl^x}cN`T+FlQ$y`wbIy0 zzc68xPWIp^9^(VUXUyFiQs2htoc_)J^LiFabW@-VYLB{)v3_kN-<#*^(a5D^u)!*{D0-z^?}P_40vMc)I-ktQlHtH}@Qb(i?cLCaVxi2} zOK>$-F#~x0EzI3#|55gPYLTr&*Qb+u-2l z82EHRy+GIy?1O~ z#*mP)X>a-t8sH~5JMs)YI1v%2$`!>dnFocJQJMKR&KtSCZv>k%!l-lz8C;3{NJbEn z@^}IVBQZ4R3^|ftI){-Agr$MJWW;ftgp6(?ALJenh1K-8d9P?9KKJw1IcF7Z$_Kp2 zZ_PavhQND5^FkKl1{ZWkyJ}tp554DJ&U+F*Bu{lqp1UP^ITWVlUg#TlA-So*X7l?jx06hbPgkemm2l6MHM-@abucJX}HoJV09g7SDVOQ(4v zL*p;fA4p55amq1TItu|dLW9@ceB*-`MF|^$G?Wr0pwnH=HClEAvYlt@vci5?uiBSq zY?(2mFGNOB>jXX(O!(Es=-rQk(D}jA=jk{U8HIWF;)F}o$;jy>LX5=83wT00I$uK- zxku!0-W(4btr-dPTskWnjKZCjO*~%8NgDWZV9uulqTMJu@OobXpYXdwc5hFmJ%&sB zcjI}Ag^TS|l$J7^H(-SP!&^#ub^PYx1SOwDEWp7@!KU%PXTwZhv;`sF2p1mnp)3Xg zO^ixvfKrcE7$oqJarC7a0!7P#6JL1q$8js`;iheL zqy?lZ^U!03N;m>5(cAcm&ca!YBAmVV0#7hr_kv+Yi@b2kddZRcI5hU?D(wS{5dpcP zpe1ruuRZWwOkc#4=_BFQgQq&eDGkCmd^URNimVt927xhcWTkCcN6wx^4gE9bMu-}>?=qZln4G)!hK zA7u1#KBKE^pM4Uq=ko5ePd|<@C$^k=2?=7W{wRCbU==#>;4+%dO0Fln##}f-$3UNZ z`3*dS4~Q{fDw!j}rWD(LD#tL2MSE7RJjgMkH#E}VmKL5a%j`U2GnWxr&ugGpq2}G! zfp*$EEhHIk$1uzXY36gT45Fk?Aei&eFoBx2nS*24gy!So6She^Um9Ek(7ZQ#lGfQk=qK9D$pmUn))q$&%~TXo~4hg*;s5m+SZ|uD!p<4}KXm}ycqg9w-xqk6_WfXmc%FN@ruina2 z-hW{TIxm*+A2@9q`O-@-w|-&nk%4`i2!=-FO6c>Gk3X#eU>wxt-(jj;AKu7$M_oCp zM;MKKgX=K4?k|14PF5acN%Q3hbKfGDstf3wO-J5~k*WxXR;zvGLdljpyq8)FM@TZ2 zl0o(7#^6rgXWjL1 zxxyrjP9~Z^xtb07vf|^Dk7r*YtFokf>0Iijvir5d)O9951UgDb%E1$1za5#R(kS1&w>j-z{i#U$P(vln%d-pK zp|goxhQvIEs?df5W7QM`EtK|ILW|^xfjLpestru&;*$qp#TsSE`ezA68iia+J;gbB zDQtA=3yqQ4Dvu~RY4N!-p6dmNiEqZ4BG$GtlPU{ zo9Y+xIBl4(9Uo5nxha&cju5zxK+d(Z`f@|B!A0H0ZF8*9T|zfT4W>rS;5wJ@(8Dzq z#so~moQ2!jW`*uo#o0Ja%Je;uuvYODIlH!>>Fp(LA zv%6-%$~jV8RZICjmp6z%$WEijM_J*Ln|?akotvru?0mqecx{Huv;_ISl(xS0&DR5SCY$5! zeGz40Xpgb*;gQ!<3Qj@|(u&K156vn>TPGWjj%SA{?=o3s7Kb4dxcq14&PsZMJ zlC(Nr2-s_so3sSjF>K1uJP_l1BgW8(&9*SB6tC2Id0f~?1R;t{1a<=1XUPL+`496l zlC&MXs*oa`49O^=&>+uKRm)H+!V5y86Q4F`kGG<@3Df-U?eg z*O_e553(dz20V&l@s>IK$*%8Ql#jW?Fad-@A6c9blR1I=89my~T0Q1;j`N;` z(2aQpI7oemBRrIfPVq6~x65rl9UXYdCZl;Lb4Buu=N%zP@~jIYQZA<_Kg!HA(~4+k zG=Ucks(!|}QnYAJ<~kq2h(#V45{ZF<)A@55*`_(?cOv_6KX=~yGc%9G!Mq%N12m!T zu?lv(Hj)gG2_0rmCT#@L@P{)E4q@^bx4>5X^JmG@I*yF=Y2m6IlY!JL!U1n7k`O~| zo1ZTm-5^VN)i>sYKv;Z|$hHL?h_c$Leo#;Hofwc*?zwcETm=tTqA@L}an)>A>3V2} z-ufU%Gsp!#CD0%cCf}Xh`ywIHqd0V^@l^5wZ8IPUO)(51az7Og5(!fXw9jv*P*7kX_vNBSdVzPCi`k`B zDw9vy^-RX0;~~YSt`p%(X8BhWJd7^At%9Ds{(5dAuR^z2wLM;P(0mJ??b)gsT;BDN zw+6sG5;G+&dYpf z3+tk|LU?C6?2OPxj@2{?Z0_N_JXY~&n;|jZ<0za(9^~^AqGNQ;Wue>pnZM9yTr(1s zi=C^5*?6`cjld<)x6h(qlw%D^?rTdTmz1P7@8tU(l(P|>x;b!Y%^)x;wlYa`rHhR& zh1O6CUNQZ_B{)TK`9hwN3%cQ>{tD0Og(;DGYH;%$^}tYvD{X==hw>II_cM~>gh)m~ zHodHKl>V>pGq4vg&O(Rkiqt7FG@cuY;bAD6Iin}@Wcbxr5_B|;<%f<|mZ6`QJ1a}M zH<22Ur;h%aeybid(%cyQ=-=dD{F!5PCw&>3NXt+PLmDAj)#Y=$=DZ4f>QaYZBh|<7L;LC{7d~`$KbiC?p~c%g zm!ui5ZjH`i0GPr#4|IU=;~}8hxpas#c@vg^cmdJR^)8qJ`+#e2$`CtF1mVYUE(TA{fx-2tFm5y?X`5KdwCoA>hAuRfg{-qYfHg# zmj6zO7myZD${6}WwsEUXT`Svwo zT%AE!ih^u8FeR_&lZFRqsChrnDFB^d;MS2_sx&U0BPT1wS!0w@s7}{TC2LX-p~X_P ztE11;`MW&rm8a!WMoRZdCDh>HXx>1$kC)Fto)^{)@6bVO`po%+1UkBEhldau2@E;j ziFbcC9oW5S7eEr0SkwF%%;!WE;#z1Q|WTJAkbZ9+9i*rlVM0uSD@M6!xnVlEWi- zGD5Ve7CUQL+5bkkCtI`DA`7wS*OX~I` z(e)K!64_(Kx8eDvs?c=;KT3HGRZ7*%nFCsAHg`shu zVKA4uR-d&@@En~xaKhrXS6}NKCg*?-^&J)b_N^E5M!toE_ZQ>92yBlg$q9i2Y=tG) zwKOGo?xh0v_tp&obOJ*oKtuq1KqZswXYxS5zMrA%ET7dgfaW(yrn2N2#a)X{%~bF+ zdI?c0krAjV5xBzON?z`j0j>&@Vb_d2mM{{~JZz^E=X77l%jys3g!rrp_z%4Ikk6l% zp`c6MiuO9pPTs~9a}(37Z)Zf_dh4gH<5t=a*^3rKLl_7rq2=W>YLo^6HQ%6J__W@X z-HLAQO#69!kTwNXV$OLQ*`BZCK70A2-lV}{1c&ex$UYH%m`S|Td|tdCuR{27J=dut zGZjKrOnqn)9-~3)ANlZ{(lH;Vd}HMiW^&^ijS+!>^Pnk1%X-y8&kK>*t%r>Wnbe+CxO1(Y)m9(m4~6Wx zpGns1Pi56#6qWY<{PV0Hbn0LP7!6o0+#DG@ljlM|vr*{vmJzx+6Mmg2#dKgWP?l4t zjvwQ^;g0*qVhWKp3Rc`+_z8^zM&%PP(1PMv9xcV-oU@_N$WJjWg{S|Fe9s6IPE9%D zsTX>OUQt@*0h!3*i%(DC>?~!%ibFN{!QH zlrN;|dnk^hG#R3qKhY0?`NiGPGI!BXA|tbaWMo7?MGN<9oKi2mF{!jlCFqSV!ebLU z95`WLk>2D({ot>XN8_9?CuGiXeiG%*(R}^&*VA9J7g|2M{dvAj*$`atCco&coUqb@ zUukt3?MdJG_P0ydB~NH%6(X3;kx85?I|48w`kZC(5-!4V$-lOqOju9b=Jv=1B65U5 zPM&UrPK?JU0b@YM1KleDm5;Z|>zMl^G(#||&^q`ovCR3g(MQ>2SO&3pLfJCHT!9x7 zt7wAomtTG!rEOUo!o-RSb|!x(KP`b|m8^yebTc_Ua1cJo$xd+e?S@BEc6CsNFqt7F zAl82CJiI9cH`l^w*(c~XKmBR<%6bqO(s$#LB(~S~H-!|aq%shrl1JT`^5!4Ex%=^t zf4uwjo{7xB!Qdfpjs{&ql!Y}Nz`TsK6o`BnTw|T*YXy)z6|@{z7|T8Rmk`bM2u-l* zc?$unNsDlhM0y(^z`&ZX9ud?iilat&5VS;AZoJm(a| z-FP#M38OFZIE_AZqI3B;RACJx>ha<=9;d7oPgD1_>E2wc7w^e~@KBU&evGvDhMvy6 zLBDB|>#mFnJPZ_AY^M*_Rc`@uC$e#v)-{Oz>hNqh%BQ^c;e^J#S})>Vj?zDuc3Pbb zE9G=3G&CB;HKPiO^64zur6{eeq9lz%G~9lW%D|6?lsiL1;ZY1m+~muzo@>hDE4glm zPuyC462)jlRHdAIRxUCca4=o1uiRk_(yz)lJPCh&jS#-e*ezuRK)kX#>p?na7ddnu zieU|%^TRX7j7RGm@|M?ILSBVmxZ~6Xf2+8R)EJWGaNs9+;eCeEif&McU6Q5aV{;fA z43USG7$o5s>F`_f>a}ujMpk*BBw;mM+It7(+^u=h?{ZeVtps*7Q{SzG@)%N1qEvd& zb>>8quZ~lWBUfXrN*jhEb#yea!6;ARijKVYx%aE`nnC)57f4@?L79;QJxBoPo_U#c z(Pi-hALLoExHezNNYGbSHR>mhoj;83NrCx6BjgyyNIvg2q%ZoZKB{U7{r_ujj|jxtXS{?e7+`=dX4bN9}>?{-th zWGr#f72a?>7h`ZSOz|-sJBz~qdftM!sa=1s$$DE1*A_&1cZXB@^&+w zp!D@D_rbi<pK5W%C0()FM6T(30+Pq0G?}8x$(mGWtUOew~Gk#T)8T| zlp~m{ot2jYisYotI2JM5-W}nI3!P9NI^F7g=t01Fd#fJuq<-IWu+_c|?ide>uQ+Z- z7cRlP_wc^4^gOfTi?g7Odh+qWgb37+o+sZjPo98Ud0lO*|Em(IUHK-@lJgkf)IC2> zgsQx&WU@I5KF$lnMxm2iE%>QRdyE?I&VE@JvWUYxoKZx15ZUOYdF3Pd11~xh_Xs3f zd#f7_(M%c#g^^5~p_@Eb@t}wBm$n!na(pvhq%GYqU-ptL;}AK`chDi8OV%1$ZxWU9jO?h-W{fupt=b zca)V`!PLtr82Cqj@~68`KFf-gcw1-kVwe#~w?R(GPkSiPr7kDUu39AGN z@c5UJO+6DTg^*;`$^9(n9fgZ_R`qyy;NtGBpT4#G&Ue1M`{#f9$?p6A`~R`~+yDFj z*}eJZ_wzBG-vqaFyO&>harbG~gg=#+&^kIud*O5HZA(mIeuk3gb}zm7eDc1qyP6d; zcT7k{&_b!w3xBjvkvf9C0=nHtyN0{e7v`cgubwalvHT`6y68_p)L8)bkGEVS;8gdC zAUz~76}<3CYNu&sD)a;E7$nd335>X^%rxpKkNcF|%D?i->m1G(60XzHOa^=N*78vu zD=ezuJ=o@UmT@Rt9wsrm3+%N@Q0Gp26-euV-Sb7)8?GR zarLi72c8_SvC5KBNFCZn&nJSLW0il(G75|(1sml1tj{T4b#HuvmyrrXwfZsSIBXX# zq>qMA-qpB&!RTOUOD=E6;k%H94UDfBB+-{a&mr{;k5JTo_~HYHi4mgc*Gr!m&EsW2 zZe?{5;{m_p7!3;AT;Rw{Lc@tjNJ2v#E2E~*KFyZq8PPEU@>AaUryV?&#vqPS^!zCK z+vfr&c%6$FFrMIzPZ?__tUd--9blFi?-UO%6LOvrK(;ptyq{Ts5U0SqO=top{9UQ_ zp+{sRq-tC1864g3C?It^htK>jrF~1beV>LyxpdCZIhiZ_^Ji4R(S1(w$Ob-a-I&<+ zSKXCzC;B?=KavjaIh{pBTfX(|q}WEw)ZV?wa{mZ@Rl4P^0nzD94zXSYP6Ft794VC! z!YUTZ1$8dkVUiD1@7{@^g<+JeK}8k{r%~P&AcJ%#7USvU8`l5uk5S~`|FaA@SpRsU zDIlCgnd81KLfRQHDiv6A>obd#4iA>W@DGEWGdem4(DkLW*%;FNOuwF$2|VQIDKR>C zKFMyqdGE#OLFnOfcJBQ!FCM=3+8@;GAs`q)2pK=bYWIXcS0SC<7wT+H&D$PwC08CR z1SW~lZUpN!fnFW2H$2Tfu0*itt!ZtZuF%4$@Z3vQxEANut&I_;DFOFs!*%D4ipN%W zcp#zc3Ppj3lW>?yPhb^~B2_qf%d72mRDNKXcFBQJ0VSuyQ*`pw0HhspTrjTW*F!U&}lhN_+j8GE(4Beolvr`0)_ioPIS0|lQz8%R3IJkJuKsCIx(W32d z{HoFpk83z`k0FyL-k#1JT5<+tFVy*ibBo97GU8YYrG@)PSZ0g@pKa*6e+nlCmMqwh z3g5lGO_@pf=sCJFlxRu;N#-7u16!|?H`tcu${{ZW%IFgyd2dDu>MuslE4-_$yq%K> zj+ZY}cE^dy$M|oaCxc-n7d>E=6D3NCi>I5su0ctjzH61TU3rz!hxreDWa!1BXQX zYe&QPDB%Yg(bdpQpHN=-Q63>IdXI4=S4MFR;LIsa_z=Cw0vddnxl}tOcn8gkx|Uu` z_>A6uWMue0BlsHIj8bj>iJssiSGmfcjeo6W{(y_5nfI_Q{J0AT8P;jrYennM?>w5n zUXCIlDnFsb`~!}bleR|d@FLr`lBZIt!|LQ!T8O>G{Ike#mI23LbTvc_js3Wik(88?2zfi-YUu8( ziHlxLotBnaHF7gc-j2JHNVtcBq7;K6LlR7{XM;fdGTFNO=9gJho!^-lmFHi0Y4`50 z-rN1j5B|&U?|<|^cHjKww`)k)`d_{CPH_;&?TW9UEauu&!t%N>akqOeUqE}~Ti+}V zKK$t82v!uSUwkp{Fe%faY)EWUUUI#RNUvigXZho4 zp0$luH{}ROJJD88`d`yBBrde)e&iDiwvxKZFdPN4?F?)98f zsIteaB-ayau~$``n0B5S;cynv^#TKeP65i1QE;^S$P!HTd4J)F%h$Vti05ikJujZ| zv={9er;GUxE7(#~RwrHW8~`{dDhA_B=ih?k#`YSrC~n>~+WR3+VM)2tHS*rRkUA+! z2HN%gyu2pwN{a^TdL1cHiGh%WcYF?(0V%$4&VBjhIWZP#!}ZbaGP*D=*>K0?dlhTs zv0!X8)K4c|mXSxERq=-(Xw4uL;uNr>gMx6eKw#>K6Oek1G|##0A02$)J2EBYiZ-^p|L%9c zyZgpBzR`I!a`Z1h`Io}5oC5}&d^7C!DC67+xzV9UEndVMl`r%?@+mC)L?Rpf^L4G&x!&J7RbharI>^l$ z5QL$GF=U+|Dwo5;!z6bICWfWIMewY)xRIeCkK^v`e8=EQJo)U1Yl{$`z}+vS=#!t~ zKX-xRkMfJ+E`=DH8k>;CHrlCAMB#ki?!EbCwtcqE`knPQ^sH@v>d9v^?EQTAR6dQ` zjpO1K!NKU`={!51J+E%0tWNgA^DpiG?tlJW=3oA|-3Pz^aQDdvA7*H7SJZR6fBDy+ z?f(4F|9tm1fAcrHAO7&q8$;It>X8=9{0T!lQV2Z-o-7-D^_7>Po}q8NEXpn&TxS&C z@O}*2!*gB=teLkz$T-ldzzn7!nE^HQ!OOl;Pq%bqx6V5+%qEBV*Bbey7S%#1ws+>c<=BAqhNS? zx0Bx_Dmv=$RcL8zJmWY9>HH>Ry-jbDoQGU*I1ag;U2U^&6$`_4`ASy5aY%5i@D3e? zHFSK+$+LwExvn=G7+{6u-8naK^j(!ICn@|DfL-c{-m*2qj`X z%;9hrCS3hRLO;H}dpp}lC+-F+dW@;Z)RWCV;syN1jt z((c1(DxuT7_Yns)DeOy%QOFC;o^c}dw`jNWg<&?jrN}!%-JXX`NDz3ZA2Sg1w*8DA zTdqcio|~{3+-BZOd@SVyB)Qc7{PHq#MknssNnm}0g#kOCd8dHVYyq=L`*e>qW64#E z>w&Ki^Jgp4%eFSf=KApALEeKbC*>Z#x2_!-SM5$OYLWiIi@yppxd zfAgas?OuKLl?eGKT{-p1$Jci6z4LDDKs=IoFgD%eO_~4rryu|0?oYq>{j@XNmSc~N z&`PJ^rA#ocfb`=?x%WgA(QB`~ynFkdUnRb3vXWBL@hFziEkHg7{W#%X<=h$rYPmAhv%Z)M-J!Wmqn0MF%x*M`c%GfIr304J$D0dsy} zvzp4XQ!9GRQ}CE!ny%ln43)e!7*Raxl6o(7at6+C?*zH8Z}1Y&rf=2x(rJ>wu@Vo~ zbz#X(eX3q^;E@=t#^J%pcmyY*K_f9rKDSdo-hDnvOS!pbfH`jztof&K^*0fWH zCbZ?rGd!G>%3I-jkS#*80cT#8^unG+3g3C-jqE#jwTnsaBpP58QTa)J`K*$OaJ4CysxOab4EV}g!w zTZz1!IiL9?k&D!qA|uDCOJA&kia2x*CT-#*+Ro3Vx!f^C-dh2e6`J@-ZW#mg5n==T zz?;=&^irOe1_*wT!0X)$Z3}U!f961@*CYy=ddS?&wP~xohf86be5!2U$T1u{XkmZ4 z%6bY4p!D1^U3T5ympFa)@N?I{Jw=vfAV7qFa394}G7#EL$N{%c$rJAE8-LCqMZ~jnVhs{FB|^{r%tXUU@kit3h)^tcPCb55{`5 zJoiLUDX`LV zyC=-1Q=jI8w&otCb2yS%^|V24QVNM%f`1u-3hMT(`53CS=O^ietGzjnavg;+I8+ff zH`-{!JOmGUlrrzpc{}%J9O2(`;WLkvqM@K89nI^R4yp_~suw-#z2<1!@!MONLx{kL zMyI5Ft+crjgX7DTWD6|9p3b2K9`eo;$1@6(gg(3ILQwlba zQlu@L3->uqlp;F8*Sj!d820oWnxrQORWecokh;JKH)Z`8%%#X$U+QH52!a|USiZ~9Wjct%>saZJE(G@*@)n_>osbT=bI;UaYRtqr>k+uG!Q z9727MQ4z9A;o?cr8gZzz?_5RR(Aal;I%3S?ip5W5=nwQa8tj|=8Ck-Q!gY^6;$)Hq z^f8}lAFkyP%*cWlKXVme9(r%`9m0?+omtPVp$XqRUlTr8qk5Km?b$g>mY0)%BQ*0( z+6DtzxOX>BY(kS~gCpHWM*Xxa&vLq3(e{T-lFg1lVt^Q>PMYUAIm&MQJ&W|6uyT5z z`+N4vwluDCe$vVtHs$8J+eecp8G3iiD9b7%muC-O(>q@`)qo&ikq;5QSxcZ?S9l*& z6PD-z8a@nx2vylDMe-Fu;Vj=1dE%aTG2(HiQ<}7yrC>nEK!?RpHHH~gbg}4BD84HA zL|(G-hV0AUlKdRwvKNbQod?FB{_D?oZ+!c^yC46?Lq-`-KmBatve}X#J?WFgZVAsi_> z-*bN%kS#;+E9bdX_`ujYrk?f8kz%lFL2gPTny21i(2f}#bmUtjqhxLe^^VW&+p{vL z{VI7WBzcWEY-)Mt%$<0Gm#e_xBSa=qd`2e}55>nT^r0q+5`2)62c--JO4VG~+3X)> zzb4y9&^4X^%6kA-K&ihe*5gwQ+MRG-U=5pUKysgVZKqhuH%o_4likqbW$Mn&70n#31w>}BE$!FVO7o-n2P^M zX6RfYY&}A(jEs?pt=}0-;W{I`@>nk5CXYJwX*@a`V_;{8D$&4Xj>t=JCc@DOosBpw z26!$8q~CAJedysCLyE8HZl1(;Ar!4IDR$%;Jif>XfU++fDPx2s^rU{qGssqEfG7`M zna5#RH~{j2*^+)oh>*A2d3~T^!OX>u-qXJVTk<=4>%1_=P|!V`4@w^&&;^~q606s6 zsgWFf*SrRJ4%0jDyi>lID;c>nk9C-1&i7oQ0ZaBCLB3?@(NbUitYscoF#JT09Qu1) zo$DSj<$E}loEr`&2Be0gPY_nYIX+z2wLV~!fFTWoC^y=%*&8azh(kU-?^aeq-T&O$ z^>~YjpZp9|C;F150^q3S7#gdwOxhCG7ha4oU5m0mdujLS)z8u~9_-%v)%zKuXSjRg zcH*kfB#iW4n0saScJBW&=ZwL}pL~`tp*^>I_ucpNvQ8#d6HET!H~FOJN49m(hilR) zuBKk`R0#}HJ7EOze8K_NI=f$07)6Li^`Z#ymfFE1cm#_cN)ZaKve-0uEf@ z@R2ew*;k4IX-eM0%lJhO7cLwMVJtsNy3hkUsPdk%lVb%wt#ME&mceJyE7>XbG(;4T zpsNGPTiQb}@`={YwFx)dT#!wTP`+?=^to8ZLpz)^{4>Xq|2>j7u+65U8s)VI=lqsa zAhdQPVW;aU%MhRYLg;S#DrE@{E5yK||IWgPtWL@(ObS~%;)9fJg7C!%#ZJn+ZzHBV zkq1V-A0SGZ>rud^XWACp@eP^QrLw@xD0$9!f`QQh^DJlx70|jRwl6e>mg?^cK%-K6 zB+ub~H=`F$jr!oCB%bKcXqHSl(nqU*&!`6NjE1Bs$Bzs>^P^)JTw&AFKJ~TE?KtP7 z7dm3D++<$n;6=q&y!~0Y93H`cnDi*Ub}$H;wsUz_-gR{Egh0JG_>&3(X47i#;A!hx z^*FBcmB)3-7-(uh5YP$~jPs+&N0F?It7sm##a5A<&4ut7Tp+&bQ&9nKMVqgmZgWX`*x;KT5$P}ZFzd{&eKtR19A7$RWLEyel z?P=Sxjf_<}F(k?ETQA@7AQmb!M8FN81ao9`={c*>l67OMa>D}eTQq6 zfx%fFXz6~&0n>L<`pjn$IF=)^c6-g*p25*39es4RjJ3~42C3) zZUfMq`=1{?M{_o#l9-+1?4`UfuiIt99#e6&7?9LsFPS~FB%-keog>X9h;k=xl_*9ZXJB;haL?BLTZ3cjP`)Q!&g(S;I`i$-7;ERokSx-$aqK2X7T;EZueep`bW zRoH7xTKJF&`Sfc?&WbrFaC#jfxALs4sI;_j{)8<}>qwHMb?xZhy7uhfl~#oZm8@H< zopn6Pa?rSEEJZn`6Y^#XVlX6Re$pJ=+s<;JvRsXo)!E1End?wzYdItweHli^n0%fUR$lSA5zokr zCs(h2lFzBWxO>;jfhmi*EdN!X*o;6jR<|SQ;bMoWBY-YPX@CQcJe?=*B!m@(bs^pd zB?8wOp=AlL?@v>5xhcPE9m~X;I^X~G2f-7ryv(5!VT$}T4UJGttw}koC9;d=;Gb_H zPZnjmls6AbE=ntz4{4{i#Uu1T2}8A+J&mWv!F5P~_{@0*1<5>+YWC^>x@1UDvxFw{!y?O zBNMjU&i{Id@{3{fAWh8T*V!mC^KMcVV%lYh?vy`ZPV75vffdrWBIo>w@8fM1We_SJ zsZR$gTO+80Z#=TdIy{UPco-JBYViZYfSSZ$cMq4J6^IWO{3TzU^39cT|GkwAb zsLT}zV9Hj{If#>S^pVN4B?FG|Z=XsXl-v_pO=TY`iAQZzg=XDOykVTkT$JW#QIJM} z_#!R2cdc(Q6#DU#nUnHSG8^`RwP7?PK#F}cycE1X>6vg8I+(0RCorNtI-#$55$#$k zT%ihDLP%tc9`S4$cx{yCsdGKMpG__Gd;FMD@5t8KgfhvN`KseCwI056ZaPoqX>h}d zj*!9^Jd>Xj^6vY;3jM~xNtP43w16A?lbp{7(}eOZ0vYdn_}Z+^F=yKI#PM{((Rn(@ z(@zht9x40CjpSa9IOZ2}_SRuN&J}%J@s)2qs{uj$!?Zf|y60Nb;hkZk5}59|$`h_| zwgQRR2yf3SsRPQC6JFqv^zG3I3kDOWePV#p*=m>aC*K%(`q`J$M25gW7kjxlhQ)! zFU_}S@@%@KcM3xaRMbP$3SxPZCwNzZ=LyQWT2S|-)BK#fcs2%rQrj}7wa#t1k^lJX zUn^=JdBIwc3rFX3hXl!tR)?`v339eKh-!>i4{wiBN@rmR<;X)_Nk zxz@JINTKDr_;vQ&tc(IHM~FA7ectd3S$ttdk82}SM)L-gaU)r|?m}AH@>R%y~pQum@w675AY_=P7c} z0tbqaV(vQ?!40k%l*d0xH%;df%H*Nf@lvOHLL9hIe#(;3wvpy6&M0WW^Xv7DxP-u7 zc;UGk!S$U8ik`7Ffz07EA9!?>?al*-q;8{qeE@IK+vG4~#$nTk(3BFtjX%L>Ci2IK zyKhcHXwmAnjx>S?17?L29+)S92LmVcI0l5QhKJ@eLlMtIR?OGG}yValpO1V`R?f<;m`ln|eIA5P<=KN2I2_fv*JtCiJ_hBBE@> z(U-u8MvE78kCzPp_{~3RXs?c<`0keQWFu|)v(DFZ$6%hnqi2VUr=K2Pt@_sS@Y%`v zRCjV&oxNS5skGoYRga6qluYp549Ex`0hX2kw!?1K5x!OP7>=n?XQ{&81i1OOjEFkd zS!!vR7|()Gsh2QO>OB6-i})e7gibS#3)%QW$-^EO|2n_i&|1pDQZ~r4`PTd@|(022V#3fnmvvhlHNe>>Je-BH4%{ zWjJ(l*Jx;^llpb3dVOhAJ?-$DENWocRxO$?;N$YKn zUPdUt)uG)8-0pln$C(#!+<)TIGdWJ@jk|zTDjYy^y*x|z?(;-a9!|5lUp$N4Q+ zIKkghLIje6AgH{e%Xx#gUMwY;Sg{wRcu!*KXY!I5?+|!|79HMw_uUS~E1a!V=hHSN zJ1`v5*167sCWrUiF>tgrn2wvCGTp!T^T^X605_?1rK29!Gv{cwPs+54RKN0S$vv>R zN9p8hIuFE3p{p@EX)QzU@+t$Lj%;&{M3koU$b6uJQR+*DLlZ;d~4Hlh# z>f1NMfGikOy58P+j6$%=J=h6)P;PkARYg(ccw{2jWVx5r7?FCsQ8Yp)ckfO6Xjvm? zULbW@)@g#*Xo7+<%J7NVYhvPnM5EFnvh6ZS9hBpm^JzbsNBvuc-g1j%Rd;j(zPB~>NgZgRjH4%mTaKHaam}DIAaEbqu?WGINVA2z(47)r9ADc# zlRBSz;_2?yXX2ePW28{gsN!DcaO>P8Ki*1kTgg2%IZW==Q2~1e1QV3m%k*LX|6k85 zQ2)LbYd|1~5QoG-eCdEbkF?aT(`*r|2qUtngOCwQb)e@EHRrDL2#IUe<@TLmY zmm)e$@~R*64eOuGWS#`}ixFm73Dg&vIDh%&SGw!05ta`0-1GS^d$vQkb(8RW$AF*- zPqYSqN{5~V);oEilStD+2D8$o1W9*DTZY4>S@JHWi;xEF=*mlV%y_7yuU2^QXYp1Z z$&nJJe5-`EdOUUS1d14>Nu$6P&B?{0*>UTfdMihs)aWS5aBvE8mU?9^OLM=)isQ5Z zCbHs32`|HV_ujy|U>|r>59NV(X^YamzI`|e4=2nsirn{D`YrFYf5nI-21H1WGXdTi zfea6p?2VHUPq=Rlk79?5C9Su}H2D1jKZ9UI0X~Y4!ZZ5VJ3|`9(1yoDoO`4t$z%^-^q_?cH(A?l7aE_e~pypDRb zmK3~QOGf(eE*%1gzF`@#wiyE-;8G_X8zRkp={OER%f*Nui&`XAJ_0+sg1PPH2%cN% zqYbNue(syQF=@|$3EkO@(&7z?oR~;Anu*eAT_PuRLwUCGvvRAS27WZ{G1seKx3d0$ z^}=|6_uqP!7QV7b>3XV_?GB|m{Dhj4BG4y^pee%p(F@?3 zBjzqcQiexJN2+s(;8+JfHlkEgktfTG|ESap~fJJ?m~D-;b>bZ zYApq(03=?q=N<8+Ek=P-@gX0IVqmrsDMl(GP%D+zQr^lCTvG_#{o-2`o|R2xVqnxp zXqcq7~AE@ZV@U?s0#CRB9q-h17fj<=m= zOC!`*hXgJmSDz`cg98V}MsGEW2+%zEH!@PWLi_Lyz4IPob%r{$XR8!O6c1(uGB0Qf zC#p>utKZN^TXob*6THe&-r!An!w)?u?9Q`<2fY`ZkJ8T=+<^_f^pUJ=N`9iVADxbT zp;PG=T-B)^ea7#F=U+&B`8HATdG)o|v-QnWrJea4bTV4K`=r%-SzwUj!g?<0}I_>;EpgD0h7IK83oo!>3 zm-P;bLhz&xsYA4tD53GT3H`b|CnJUtfZq1^QP8z<6lSP{*P)JnBV?;e3G`o`XVoxu zZkZlFZ14fO_@#nwIHvMcP`C)+22bk;hkBAneD@@2FoI90>+{Gg)zjWX;jQ_XvUP*E z()(6)-c@NL_bH-_N~kzSrI(NWQ{|C%z|K2d%7ZsHiDAiE>Xzq>rO&oL(OIHUd4mNH zPm^u&SXt+OHDbM{kT;xU*wUhR>5+TQzvWvTCAQUnPz$jOL(VA)9TA@OLUS})0pBRDB(ehCUOt%{pi8Sl>!gFBI9Fd##nVJYY1E~K4B#z9ZHZ9IGgJ_LKu_^ zY|zOvEgH8>loGhWs$Y%K^zK9W%k$4OZI=gNPv2;m6+C#GqtPgZ=!MAh*>Duj&tx?e zMM&w_phtn#Km}I2S|_j*P^O=&C$E|3zWzp#Mh?KKZDFqbEqxgi_;-b2+7y!VM!v0y zEYUaeNU^{#bU2^NJxYG_k>m%SeV-)8S)RLhGO{rWjPT%#QGod@Mo9Z~%9E+5MmTy% zcuq)(aj!uRtY{=H8AGc@v(>*kLQFK^D5DhYz{@K!7=24T#@-IR>aMH>Un39stfsU| z3_OfRSM$*&9wzxN&^y0+w=ng_*0%HZyFfBVE!Tl_%1znk{}1@1b|eWXO=J@_yMPP%A9SIFWRd2DrkA^h^doC!9@oY8OI7xu_Evb z4IO6?Jh_wh)g!xy zKOHKBYiG@|N^>hWv1T1UH&WJi7{x0}t5^j`*JgHHQ>xxB5H6u$M&1H@^3;2z%=+eC z@Zc^7__ZpD7)=WMdK5C84+*H8d7 zX?T$KwUhQqqx#itJE1FCQv2#FuT-J?fSQo%w2RYZDmd#~aKymjWMR?c)X$0Ic~kyV z7HuhPA)SP*vKs`YdaKIbqK1TddOp1ANDA&?%g)@&c1|RD7}<+i(N+f|yha23mKdHh zX_o^*9tvOj02mlY_fSFK5rQJOo~^Xzk(Behn^l|-^73)(t3#;&!Z?_QR_d`U#ii`* z?4@Mi{a_$b%G?*6$d*a>-I3AUIAx+142(q@Mi?+X>07NobS$JC61p+{m(ky7jsu_` z3gzVYm=4I%_71B?E4af?s(kir{n^t}uA!EU>-qku>}EiQ*gTn)4w>R!1wD-;l4t2Z z6#!aSMFs5S8K%a|4BlH+=OUB_vmq-@6l(ewzhMhD7`J;!lfCLzxhfVCH>Y2V7qM1^T+2gjY3|`zFOB3llN7=rUg7A6stvZ zUP@qzXV{7MC<(SXSEZ@uz+PH73E}0JK%%Z0HKr5mc*0m|i$|`roe1^fQ|chd%E6Pz zZO2$?4e{G)duRV=wZD#iGR2CGQ`{Ol4`h^qkq3C&7KJw%hL<@XvJ5Q36JWj>#VXZn z4n1tw?)=s*txTw?8MZ%Uji50DLjjBV>IS||CTqS$a&-UQg?BP@gt&V5@yog zV^f-G_^I+4NRy9Jdof$5GXRtz`Sy{fCN$q*Tk=yUCgqYXA(`~;IFn?==NTA@j(pHK zO5QSQhSmJW)r4xvmz9eX)`i3LuSK6T8!sthAwl#+2Y4E3-AsA(li#QrpJy_9kMk;1 z3By-3O1=285;bti!}oOC?a4=2~3&#E2kp$|r+d70edM zc|EM&pF7&<&bP=PcochFQslQiQ^xa^=dhY|nQ(Cl;l`vbBRE%gkgp2;gqeG#@(4`v za-PZ??}o$_at9Epy6P-aL&-Vs9K}WlPph;yC9jz?DYz!fZ8wrE62;RoZ#z9xqW9Jx^`Hq}9tnXpuREvPkl(ZZNdG}{1;!2zQjc)dWC`Wc z$%gpBTDa(hhI?7i8YQ8#kuOS~SJ&Nr^KvO=qtk+wr`@m^MU?ZV#ll<+{BygCCrXPK zP3e2r0-e2IV6-e0(uw03?~Z6PQX_X1rfoQQv*<7eY3um-mprAviGbj9CC12#rM_(+ zr5JJTLX4Aq2eeeKZGc_z(tDK4v@=? zeIYZ90(?!vs}r0&|20=6L}vksQQO_TrR!(}yhdEnn5j1-r6_vgD&Z!|)0~vI*45*_ z`JwxFv-CN%zjiIlrbBbj?2qMMLy>8p(I&TG^X>`WgR6814moWZ zoTQF*uQznSJ`3H`PDd1x$usHq=Z|N_7e;`wq06pdn~*C$c@y3o=QqFkt=)h7Z~s^J z&HHhd>VJ^!liq0v&x@(WFMMdf)Q_sK=&U$Hp~Z!Jk-^BXm0k3Rda-?YS}1?VpTX^S zWIB1giBzt&uutgHIp$CjJY=Q*>^@6rd~mtM>C~e%XA`N@P1l&2kC>Ku~$%K$Etq1=jH55CP>M}sm{1}?{p$Gv&+laVl|VQz#& zLJ{rGMn)q)uGOP`&y5I5+YJT>`TdsC2}!CDDLRwq6e^mU-1aLT6jlm@N9c<@qMN*E zTHLlad??AgL|)9JL@lA^Sqq&|NF(2a=i%S>iQHK7Piabv7uxV_-78fC!;F-AyKqD} z($2=4WSagLBOF+4vt!w^Z*dr9_09YkQuSKC+tprhLW9(Sc3`ftP7~-!o){3J*oLS= zztS~^=ZSoKo(FCoL~3X%a;Kl$8U&5iZH_@*aKZ;iKRBCXMSpnP9-qT)y+sl3Gq^f{ZJy2voRjNaaR@BQ7?{67Bp z(@wUVTl(Ige7}ole*EJfHy=a&L>vh8Dc?5PG(mqOpPjgP(JHk(kK;11!Z&RN2ETyw zAC?wfG=R?Jf9`FK0^ql#rSDe1KFms=g-e*dUm1e=hm9i0N^8V1l}^XCDryOZe1I&& zQm6Ar)4o2>0EX3dUx%FSq;5&G4-f%yMerQ|ZA4#XrsV0r@JsEdZ*Euc^v`q0$EQcj zt}vD*y`Hv)(qfFXI}}JeEajAQiQwY}n8rg0JvW6&`G~as}x~rd(HrH?^#-s0v^!*9)kA%3+a}JD! zBb6tq4~_IQhK+(<%5CPbc&^~d4QQFcaLel$21Ll2v z4ba#27!;pIHDdBEgn5M9S(n`KTiP`01JjZ*%}}!Bk_=fLrFlK#nY^fJ^zrsPzbZc7 z(thg6r>ZEuJ4K-~u+KjCY(t4_cjVbeYwBglj7;Er`@tw+Z63-Q8NBC1b4epJdA`wL z(WMjh7?@;ac~k?`%l=WnGT00kG_oqpN-Qha;8Q0i#!EO%UIvj7{4n1MdMlrTc``OQap1x`?yzCkt$59z=UC5CmfnP=*9o41p!i&Sx{sovy$R5sr z&skXal}Wp3Wk0Uc!E)r}UXIIG7W^F#jAhGw`6{%zeq36{V?C<}7~;?YOX+!bXiV~C zW$zIJs{U2VQIUzg{^E$VuZkWwtU)UK#Vr@Z{alfNK1CQA~OWUi*=8Dl{bO$ zusm`cyLi8~%#d(G!KkzUbHr~W@BM9{TG@oO*m|ZUzeg@S0LbFNgtn=op+ULXnlqRB-=aO(%085I;FKlxD8uX&nmCVVU3e`GTmi!F7>FhR_E$G+ZWa5cJVJhZj%8ciErI zuAM)R=fa~#n<|oa04qSqZRi}$*A9{TP|SIi;zpl(gG-s@UKP>wv*h01n2kr}1t^K} z5T{lTt=jqyVNISsax4(8$Dk>nD=h8d&=b`plO{25t3$gUUZz}9>&&r6FSjV)a}ipl z7z_d|HAJTffv!ii=o{JSy}a-lMNLUiNS;#M_v>M&{wRi$CDjQJSmnc5NDVs$Nig#C zmttCcocWdU#2E%Of&&G!8NUeIHl&x!r#0i$7F!$?CK2QDL(j7q>|(?l<6lCKMqX(JG!GQ6RfLyU&2 z>?!wb;sQ+SwQm`JTv|=$CV!;bBmGqr{T@&$G1&_`GbW z{-6Ki7rT$Hezg0}cfXtYk#BZ~iuc}szXptRgZE^kBev9aXy{7V-_sv-Un%Gj2P}9b zjf_R!fK;5`M@zPyz%6wJ$3 zV`WruGqF$}U?-UC)sB*+0TVb#XF9~6YAA*4DNrg$@yIF5r3m}Z$JVwLBRZANPbu8K zJtLb%5&ZBwOoZpeIOLJ@mC*b!|KdyU1!sJbRvxg1v)c;0KI$`JI(bwLc0W-U%4gae znp2{ww6(~4*q-o-WFtLZ9_70qeS{`ygU9K6F=(^q&&JaogKa-Ey=6vQ^UaF$@%DXO zNgUtT3-1M{<9rUa3Oq_tSc@mgplIVk_F_ZZOP6NzK%Z5mNZM%wa~g=O2KFG(7ag;# zm4Zvj!lk|%t<&)??St~a{DGwn_o zj}e)<2cwJU6H@glW;CSS{3JLJ9%=8=Nczpd$?)TqQPbVXC*Ek8VRB?B@rQA84_@R@ zz2!q-`69H{9yu^FGl#>_bQM+VMS~iZ;CPgYZTTqjR8?nyET|V<>J)?*+E|7jL<})F z@RH$0Tjkt4$|wIAJPRC*KJ5}<gM8 z?2#=xg?yH=ed_$-vWN9NeC{p5_H062VScD#dOoD!107WCCJ~;72Z$MFYk*KJ!?1|B zfLy?h4l)#7`G?r+xmM>lAP-_~wq@LX2-L~=zw)<80%Y*oR{@5@wA{eM`$L1nTmaLd z7?3yKc%yHozx(ccr7zWcfAbXM-!h>I5EAcLc8P+Ic&5IPyv`uNCH6<;Sr{tx4 zQ$`)=h;C`6$8%An!X}-N4ZgmJH%7x~U_4p%2vbpvo>jpzB!M5!HZ}~Q3SP1z#J~%e zT&l-z&G#~q?wSEWTMDOdSf|e7nfgjBu%(Q&cmjttkzWInk$9KFr&(D`9q?36@Dbg5 zw+Eg*ILvLJA3881SK?g@l}Scs+MQ8BuH)cQ@7P{;vLVa^rWL z1f}8i#@0zEUnP4*7^+rGxf)pYuvHIltUkgVL%Nmqh! zSd+`G)eX2At>hwQ?&RCaRf_q0qHKgC@~poIm*Yx@fV%Ixic3e>(*7(rmcm>Qb3CZ- z;O@WmR4WJ6K51uKAFTI~%=Kzxe}8CmP*1Z=-OGr)+?Tp;btv!gboQyMt5ec8I`FV4 zjdqY!IiA^J-P0Kt-4KFulrCM#7aQ}|>~qgP-xtSt%3z}m7R}d?|CI628I!XeHphkv z4(PIk9?ZPHL)eqON&V^|N)v9}9^|kTjh%NHk#qU33k9q_#siL(kI0G9Np3d@_ehkN z`i(MXnJfioj>lx+C==eS?{EvfnAmRJQB12WFWe{x?0wOX0#6y=Xdp{MFuc{yv+z{2 z0i<~Y{h`Jqb%Bwbc2pGtqM<}V2J8OXZtA`dwzO3#8DeieXbX`gzlrQhN$NDhXVBWl zhIe^}zxg?r*W4PM-DAJp)#tRX`wS0rFW2giMbJ`g)F|RrPe)auI~W`KYI)(EOHsg? z#|W({be^_R*6k?ePd@#utEpfNrE_sqC|4i3Dy*qPeH1PD$Ua)%yvc|!Ba8>5?8#;M zl4p#SQ48mXJj~WM_+JXD`J|0C!n~Jd#_GbK<2x}pHEP0!XgRWTgtmc2_>|0$lQA0e zQloZ`<7l9Vu-5tPsW%_N%NG-G`R4td8kV8aQNCvSVPMP#k>M}nNnW*Yl3ij%{``kO z+*zIV(MKQES-|CUS+KzPfaP>LeeDV_rJ#1|I9HGVyDziOCZG1y^GLIct^{T5Um84s zWjj5%vr3!*uy~#*VT34zUW{EiG+u-cT3_L$MF?I60=DC<{96Sl<#TOhLrC1yj{Fo0 z;l~I{@SvII8{qw2zXjRv^SHHg&^Q*f#e;iVTsTkbQ?BQF@(J7LX=_M%o#;>h^as0t z{P90^O9VoylMV4Hzz4f0pMEkz`uV;CqzWDMUJQAaWUdXX!;PU!XeliS9)$j-X?XZl zwr3FDxnd|!$n!gwjw;D>$K>%`wLP?7-dmN)#*=2rpE?kMcO`kGWmFpK0&G%o3eJuz z-?~pu7?5_l$Uy|4GU1Dc&;bK{)YOqol#osaaj~j8jk}E?f&xNHX{E^i-32Al1zbH^%@si=idy5qDoGpWCcJY&d`@`Tr>QSTb>n$XN-r;ac0`h=H5od* zg287-jf*eC121JV=2D-_x+!RcPT+U+_%Z zlrCL?1VuI#F%XPMMtA4tKF`zWy`qn)L&*1iAeW99X0 zG_r?se|A_59#*PY^7rcqp4Ba#EZ#y`LI#%Kma!pjJ4Y0o+Dgv|{OAduWay8Mp+^O# z3{1}acTLbD_j38OkuzN>M4$ZV8akK9%53Fwvb?&sIi>qIuEELGq42DmYeeH3Y;7m! z9mQy1OO$}Ot9kFzbcm6WC2kFib#?-SJ(w=1QwwELbb&b44!kCsZJfusk$=q%!l@k!0?A8R^`3J1 zZ;oL4%0_3(O_}DN&WlFoX56z2bK6Kg*=)FZ@u9|a>pLs%-u{#_@}E7keFUrhb6V8? z7>Q8?jPHU!#VSLNH3V6Vz<`AMr$!o94F3B4Uw2iRPvx4ov;5Y!FX%5EWGCvM{p{zv zqkOkszc*Sz^LfKOyHiKL(F?s92Kac6vf!axDBKHKfyS8Qqco$ALnn6Rr1F?DHPGmZ z&Vj>7LY?TDIAQBR>8`p8tojVuslh;Rv5xz=cnLLfSoS)gBd6#ThQ2bDyrYjsZd3q7br#eT zxz+a12?!pBj#3Rsil> zZdvlajQE9+GQGHJYIYC^^8J(neY7ksuSpMzWK);LA{-ki4YzB>638rGq>~CfBo0H z?|tuk9qEV&tY`A=Q*aIrWGN_w=Zo)C&&t;_n_w)F^K84dWg9x3j4(nsh6~T@Opu54 zHT-5&>byt(k(Of&{I&sG}mdWftpZAgcCR^I;<$0EMlJ^$SE^-6qxS6qIE zzKmvQ6}pcC9Ytzr3~$W57elfVgD6`~oF6n41t@dhI zzCuD4?N^y~tk7?!rRM=m-o+#BXwoyuGfHLEr-N1Tw=+dvGK%FHF%o2G4Bvz(C>%IZ zu;@nkE2EJ=VGiEy+CPg|jSkYhkHOH+Bk46b`2xXC9iHxJ& z-QYu!)ZhoF8jn1$G7B9nCO}z6X{DZ}Txp;C+L6jL{iOV|EH>dVeJ6Q%%vJnpSB1Cl zW~G!cTFS!1{D-zj;iS$Ojq*1aJeSG!mD7Prwr=Ggf z5UQB{QwgWql$0^Kl#m z8!O@`<=qML$h0jzkby#7w6HTX7#m89CSq*7ut6Rq*YE(hg%ipyc?k9gG8Tg6+41pA zp!ZuY_?xooz*n%~2cxKt+jl-syXSVV|AEzbS>7DyfkSiW&TN3HJ>+9d;ATGT{rBGM zR|@~)FaDw*n=%sl_8Z@-(a@IgCL`>#+i$=9c8t}Hd?I^&OGrN$N4d!L4;;d^w4>kj zXS<#7bR2JdO~(9s+!vhEEw}am$W?;Yr6*%8#Hgr#Lw;78bA0}StB0mz=8%D!QssSOL3sRT=BYv+l#L+&N_50S-$!|TZv zf~}K>jw|nKOZoroiI-wU6b9)G6a|GRc|#S7jPY?lEgEK~!|CuxiEZ#~t9U|)nOuyb zjj><^bch;;FhQqqe-s;mjPA&DX@oOn^NSc_S^>-Sd2W(ebh_N+v8&SRjX><=-_@LOu_P6C>hn2aYnrH z->q!|XXnn+4%#0k{i}XdZchI{{e0z3w#vb}hAosw*2clAJ_wR%*-&11q&;*p@|b>4 zzVkfvnHtebZRs(gPa^`M0pa5Gowdsd`66Xtm_K>GPiNiZ3DwKVxnUW=B!>#?K7Y@a zP`Fr%UOg*0of9W%6rfreB>dB%2tSjOFhmOnmTy<#jklN@*oyCDG}ZxqpQr+m4X2;H8!6*iOO`2 zF(Bs?*KQ|Dd371p@gylsb06Nm_F^DI(jJuZ?L^vjp3#w!PWjPJH}Y--v0#|_yMkE_ zPQfo6<-_aw!sX;)uowPTYpLga;G^u7bM!X1B)oL{!L2GP*CwE;V2T~)>iPfJyR&A! zj_f?p2L}f;L2xXxNY+Tptqa)^_LVMm(T?s8cZB|}enC6JeIs2+Q7uaqu2K==41yr$ z>7d`|T|2+?;SgX|Nh(XSD}nFqDTkG7&Xu`y2hFLN0UhOoCVr`^NoeLw>Y-5Q&FX}w zj2trJ@OC+6eLkzsKK<;|8Vzre%ga#cHziG(G9=0~yxuyGZ+q}o_Sl+`Q06|87al42 zuMce>Zxj?LgG=)#`ZhF(l?xrm;o$%cPbg=9rRs=yGCAgfQty6}seX#vOC(UWm5j|J)>zS;`=~@~` z5$&hn(%5Q8yZ9GRE_#7%2T$7Y{!B-S!86&b z2^S+gmlvg0BLk+67SXVs+~MJAm# z61}~d&)Tn%d8-a zfs9f|JFphFDR-E@u2h4R3kp@;XknCK(Z-{E&jZEIU5GNF0dwvX1j0-VhqtXwq8p7! zw{G8xvbAC4)dOKzdp_aAbg*p~SHS}~7$S4DJuO$zZ!LmB$61& ze(5v)Q5X2N&69U+enea6GJ4!ko_EBQ@?_Iqi zX$n6e#bAyx`)V^vfAmLxbnvU|AJq{2;+MbZsO=9k*CA>{t{K}mv-5g?#9HbY|uT z$((EY9v(GXk~7+}0eg4rAARyqUEe<%pqEqtPRjD77})S=m`unR5upSzQbIv^mg4BdU6dz<;eCfi z1I)9S2m=jGHbx2nO91f$f=}W>oG{zeG0;-)n9w~(47`|9+12h=Q4hnw`*&V^KKTaT z9bAFgeeIN2a?V(W6I00uT4T@gXuVS~qpaj%NH*aRC$4eG_dp2dc$j0D>UBl2qQbDJ z9ukN#BHHLyBUy374+4W{LS8&Z{qX~nGd@7udeKH286D|sUp$Ob>l|3*RC%7XT0|d^{O~Az z6nq}lc!FpWVZR@PVTDyUQH)}>@goIbhg{(z%Fj!k_o8GO1tVo}+Cjm45BS!eRyIe( zQ!uruDgXdL07*naRE&pE;z|^5)>R!GXH`rg*WSf6`bMy`*9+^%GNC(ee_W`n2rU$eZB6l z<9cqJj)83Ibl-6J{{1Mngn=xN1D^9eUiO_;cSj^cjwc=mzfvQL>4;Sw@2fAD&Y zvHq?f&z8chk)@2|IgQa8AyU^UY4oxZXeL*|43>I~sTa&OCh=f*DP>bz;j7|TCeo+e z!k_t&D)}0MD7B7=@;t|Sd!$v$QTr9p3UcnNC(6pVX(*^VbR3C{G9E=)Q&vi!%joH> zRf|DN=XIhK^#;G3Jrd&aB}el-=7*GUo>52UHoVDiZsYRh*K{YpmqCYsQ7Q z&v^VW;hN8)7#Ve|--L`P#2YuhsOPSn1q;XLgsC!`-e>^N&Yv94d<_^%+vNA=HdGvE z{-)c4gr52fmn#`9K&HqCT6lj+GHNh7pxpHztR1aH$%9K;`bzlE+=h10V%|AAn{TgY zF7o`$d6;K{V@C4xe0JgUFK%Sy6SxXfLU#!z+6+?YZWlUB-;C0fwTa}P|M{OE{OAAs zKOg+*pZ@8=pZ(dN)lf53H5{9Rpl=Mb`%jN;=Mr9uqmjSmQ9L|yy>NhM%NFg^`h#y4 zU6qxoqq5YmKE`rFu;ga&=UCj!qtcb|X`DMBpu_uJB$8|OGbXblH}C7@T-g0rfA@pJ^Ce9b5R9RuJy@a02xL^?VtvdIzz3_A~-~K~o7c;iqJlt;) z+suSwlw!8WUTtC2Gx-#1m2QNF66mUs3P$>mk)v!pH~PTfEvvs_c+V)1r6kA$g)cFR zlrRr$*p?8?oXIHbiP10NCKw}-gI`X7dbL->Tw$Aj<_WZ=&(qI+h z7MMKKm*T5XPFppcF%~|;WpY@%e)`YwjREs)cCPipq_prj@@eF#ohXjr;Nk7@wuPOp zU5gP)UBy${hhxfCd0slcv&kpV`^Hx{s+e!*`GSFh!(Ylc;wj4B=AhoXe((MF+fVf( zJiMTb5F-O_R3Ti}{^TL=U&f=rDU8*=j!i8iTW{n!Lm(Vxbs0Rv zjeGj&9T_8(zx>O;JoxEPesb{RAOAS>BY)NQ;kk2bU`WRWh3sz{poB-`(Q`sv5r z<>BU6`9ycF@un>Br&0&;PYv5~_()(uIqQ(Lbh`>{UTma|ZG9K<9 zhlae=dBH4g66WAKg|>F&hx;*f57U2>=-OF*saKkNl#gY)>b#ImA_;9O(bWw{V>lQV z^z=na6VP~qQlwD2k}Eg>?h~P^oS!>)@!;!xVNaai^4nJuYGQCGQQ!73l3^ga`YHIT zM;m2_W_H&V^76@mPe1+S;QQbIem&9q34KY7^wH6b0vZz93rleG@}Z}CP{GJrKguJ)8CZD!M(7A)g%hLY8z;W&L7}5Bk9AjpA1qdVC z?#Dh=w)^?)^Dl#=!@kpUD+bfI&uv$4<(aUaoq5M#%p3HToAjx?5J=(bS9wq5v%DzG zu)?SLHAg@CR6iI$vTeVx=X7j)Pr*CspWf-!c5f4jlcxzYNo!v`_11u79vi+#2Gefj zOL8qOnCDuX@Pj_H@Z&5ag~w73A2W`3^Kz)Q>Q*3fxsF2z3sK;-FX^`C-~aiYVF1x6 zhDF3tetGeVafp7QK&q@l%#(L$3?mImXZSsYAL3#KLwoUdsXUO=ib|Bk@(Cy^44LMq z?FbMd9#&Fv((<0y^{+dwew@y??&H<<)86XeK4Vkn$7jN{o`+*SYd+q5&ONX4=n`K_ zv$-;QaZV@_nh66_5R5_l8hi>zU~X@i&nRSsNuAo_JyOno>R5F#64Js2C1y*N@tom1 z^lJ_y9$^9@8mc)d4;Vgm@ro%&@XN#Kqlmt>ja)l7>abN!3iVpu^-A$X>LvK+VtDmO zIegHqTmm;dKixbSSaa{;2_*9gN}cW)$!T zAAHbv96YzOO332%7?jmV@qcpz3=O5j=>a3fb2Xl*(TlWrKuG9WwqB7q1`pGI!%nF~ zdH8t}rBtUWeV$c9Gg1M+x5D)s{>ctr7`&L@hysfv0$=*J=4?DyU-_u#v)zi36Ff08 zMl6PhScLnz#SVB z5&usI8PKjui(>H78pY2;TJKVT7nt?jQvwZ=Blt1V$_pgSxu5n35c32k+8)gFd`2H9 z_*Y-N#~o~Az(-ngGpQk%z;ge=yj#&NQPP&iEalY?O4m<2HGH|p@Mxcq5>9a852-ka zP@lPC8{ZC%2RrEC8!n5M zjL1&eXIr0r{wmK{m6-aZ8m{dn#4(03B2n_k&mI&WI0u*c3h<+)`H2ZnMe%J*mCc_B zyBJ9^Bt~ywrtqz{VyN`v%2nItkU_?8Q>=kw87o`XNJc#H*DdO!NYyP_an+r8Gs<)C zt-M6+qhrgEle_)?w$QKn6BcR0v%7?Gch_^`{XG0ipG11nPWXIRU{1VOwvw||w|ibp zW^9dUIXRN$?#FmDyks6zzlA38ES~~2Mv)><|$H2=lggA)Ul=C|g zUaK{3W-^nvLLu?Nd1O^Cyt*(bA);g^_DZo1Bd=%b-HkAYpNC4hk9jaC7NU*SD}h2* zg7Pe(5p?y8qo96i<#qltCg0DqpU?e)DU6$c-~fMWJxE}u%9|HP;19F>l6UDxuqGd# zOW#w^^wV*M;L15apXG>NR+~}8cy#Jt`1khoOtMGW8JXm#e_-+Qp|-6$qR?t2(rsl& znGX*1Nzxw*Mgph4G2r!zi{rtl^6HX!o|KtT*3&PW437!^kL^^9Q5F<2$2zcmyIdFitkVc}056vzr`;WIpSn0R~* zNZQ3a`+TCF*>fqhJIV`~XCBbNUMF}iFFN_v;BWOXB$ngi3AnYg%E-Y!VT|L1J@c|* zCcohwt}a~g#`&!FVkoY@daYZt3n?)q;3pgEF1?bseatGUE7?$y;qVQ3$Dz@{iC2xx z^cQbXwom#QWBG=EjMl6|<1AVpT-wCAdw&KWPredA=abUq-y%&r-&KI|fPZ+Te>(a} zfkL@gyw|~NX_X_VgW=Gx@@~rd4v}3Dyt4WrVXb72F3J2@M!x2bP7FvJ9EI{-!2PfK zY|(fR|3$^R|028$5hlks@z}&kzs!!N^^`&|gk?NXmO-h(h?3%|iI2O+!vu4Lh4-~t zj5OG?IclK_KPNREbWX|bPXgd|Sw3YUR zjKGEQ;>$IzjG2WW8m5Q>SY;W@Nb5@;in2T?Ff z2o1%xYcz69d0M`khlcZ%=-@1P39J?9;HCY~wKmteE-o0H?5DixGY@J!+Jx+xG| znr$o`?Pb+>H$u1B=6%|s=%!qhiuzI^+V-Wp)aTn3miZcy-HYIUkq`;*ns<8?g>1KF z?F%~z%TQ1&EYm);&f%AH=P&m=De^Lw_WQDo_p2BR^AHq=KH0_uZW(CvB@{AGp3!iW z@PMuEmAw`Z`&|0WxSh#Jg2KYPHK!Y!f<hbc_U*XI%N%&)uc9%Cu@sAMmp5#~eVz$Y@2)z|Q zMQj2@f$>hQgO^U%aZ*F-*I=15{fe?6a10{Pu1hELr8pCn6jnzrF`$Jf}ZaJ*JVxn4^t)lcEQp5>i)qM(EVI0iO_e3HI&$e+HM;I3!5)ki4~tw&)!iDtc= zIgoqV?bch)A6>uRIgV@bYAsK_5GCk~ib4v)H4Fn|3T}!_pCxq~IjoV2HhpmGt-KfV zRYn%#`kWaCfKotM8qDW2 zD!G`KG`0Qu8`nY;{HRm=vRSlLy$-duPJhRteE7oWY8ZKj%au5d=EbGe#_nlO+{5oi z?N2y8;RU*g;i#bw4|IV_==Sj5o#?Kw>J+KZ9ErM~Ga#M!*qBeIU9$t<-1?vV??Uvq zx(QqBp>x0QN}f~n83Nw??8}3{{{Q~E6P045gwjx)(A*1QRLncMaxTJooXM(q1H3;B z;Kx;?oMr^TE6u&lh`bC0%}X^X$*&$Z#^!&Ku#QmnnQdQiTkuo|m*DfL7K>Q1^Y+`{ zYtGa-Mk9p{aw!XfoK6-7#)Hze!i9mbabGteOg<}Jyg0|}p&*U6RB8gRAs=3C8m(eX zzvXlO>_NQggmWkpI2!U0q^$>VmsG`?Hia(6h@3q4jJGQE({S2>5X;;Xc41f;7*&=Q zfmaeQUK`4}R{m*5P(I75jfLBXfz=iyk<@x{R^mc2Rs&@gg-{<(c$AReHG$5WEd0T5`Gn$d2;q~y&{D39OUmSu?JCaD-=36LYmE{b zj*c)o+fS8?-Y{aCF!3tuwsY;RdmS}K-xy`yje}s-m5~PdWl+3?`%T_JzmpdUA4fKa z&%^tHKV8adx&!nB@(*0M?fV^+($#a z3g*ekBl%G_b(ac^&6b>X1do^{>`aTt;0=aDl`M|mTh zKvIscMrq&qCfkODw)eArIAhxF!k^r)vJ0eb4;<>yhPo-RsNv@6J3avej$X0+J3L~) zrey1A(0!h@*#3+_#`6aG!UF}v!!)5w#yeS`Z>dN|A@b=rm>r)S=PmQpPl@pSZP`xw zQdTf-8M=fnKAyCak&k2^N?mBh)34)@Hqy}WZ*XOFLpeEG7L1>(_yQmPL=!I=Xzw_0 zOwVW|qm_+Dv(RUZ5j?^hPnvSY2Mnyq-&Yf|vf|1Q?!f|Q{pw)0b3dCtz?+va*YVaj zU)Nz^EEy3-g0VgKEc0pET#)hb>m+|@$JiMG;|b2p`OdLfsTLl{PRHl-!LIdf`y!}+ zhIjG(oSi)Rb!QAJL&`Xy{U*WB6&uqu`hpSuR@!W}kZO=u7|;W)Z-yt#IdOFKGsMYm z2qx7tB6WV}VHXPE8>zeT>PBx2XO8LLZ&gp1gD`wDaPQ~Y&Q&Y>|1{~PR6g}!|I&FF z+9<=e&cYBTE^mGv;uu-v8KHn~xTkzV$0{VBn6yJL0hFr1qQvAQB<{2Q5uXY?1+<2# z@>2p>;?R2pytth2D@1vur8wql%B_2gIjT@shV5t(fE7E2@ZL<`SFW-=U)Dr;7&%N~ z;(kI0l*0B7Oq3fXbtqgFjbRmxFb`u7Qqo{fhBBX8?Gpbpp~^{qv(-87qdsGcd8;`gWAh&l*`ieN~)&-c)B?*GR+Mne8nTIg8GfvDBwuGsl8{=op?%xC*cO*=x)+(;lF;{aNrhD;+udmZZ@n-jD_j`G8%1}?clg&x)u)Tm!JFn5d_2g<+@d{_ zFSN?%1sGF&<7MbPXnHP$)rn6+!E4>`DP2Z*_wOkV?o_nZ<<4{IW%p%L^j~Fq8Q>c( z+OgnE?9huy6z+|De}NZ>@i3i)QDJTgoqH5L@r{3`UO_wVr2Dk`yMzJ4ZF7 zM3_U8)1*1F?UIZ92f_aB)7QKFFF3IqDI-XjzRpSvOFmaxaJnwsX{ky#?Gh*ofMFo0 zKI%gW*b%lPg!Gda%7bGx|>N7MyXp`Ua<4R7JO?%Lbvui?fOJ4<$vK)wgHJUqb#kodY1lE zVn!N5kw#{Wg1QbfYP8iy_mql|q7nWuifI@r`Cg6DHR3QC3tX}#gFA#bgy^BDy(rK3J!p)4t zl%s$gSE8UOZ1{5<{?5jz97b`=XGyLH@Z$@Ij5}{$KE@iKkqH|os+HnHLra&vv%zp! zk*5EYdEYV*td0yxzhM$wF@_vEa~$S!EJGHyF=Bx~xKx*OytjW?nhr_!nSNZfCiUS8q^*Ol!3OHG_Ah>b-+EI%$T!&^ok zwkG)|N9UGpF9QS%>_q4Tlo>T2;yCapH!)yB+*x(26i<|SZDJywbzn8%nBQr{k=jJ&YN<3d> zBudT1tG4bZOeG%$dm$d7)eR`Ia zSBa}<{>f;9QsmiFn8gdYQWqtbW~UEy?hnXOK^8Gx`RiP<>&L2L0gs>b(pKsCfuM^4bNtbzq$QQ zWfa}*bp`K|xhC@=$}*G(SugTcwtL}~|MVvxc9aaKj2$?;Ib*cw#ci~4CG#MRw0BJy zCF}v-8tjs|9o?wiCV!(pQ>vnnR`=^jrR(8uP!l77W;W>*s=6J+>H}kBpYgaAI-|c3 zmOMrwMj#I#1{Xo3(Jq`Wd`$=|45+78HH6yr0FQ%c9Ur2{a|{#7vkPSbc4vL2W4{6X z|9Z0^5(e-)O|bRMF$_)lSQ2UU!H6J86%YK%61;U1FdjIigtqr}#;R=EA4AhcsXWC^BxD*;_{l&3}}^?N_%Vi=#733kdxGCHWR(hys6{j#*4 zt)pTTkr=U+C}5#{&f0b)Ovtkq1~cyy{hs?#_Q^xovZkobEW8{x4+Tjf!O;xA+t0M) zzOCAyWUCWATe$Ic5~a0ZnrCSv_m+{6hmxfH)@1UU=Wt)$%28n2^;6!@bI+beu~Evr zSjyez*6PaMhE*n!q}-2kj#8?J7YCwqH^C=5%!`J3_afaEa--B9hYzd_LK{2kTHVEX zSSk!hgt$F~s{C};5Ne6n*1xl!SJ4Wh2SR4&WHeT;TvuxFu)xn#endL=S}YzP=Q<+};hY>l_+j3Z5A662d=tKUZR>lRDopTf>8;V6aEt`jMPKKhIZ~8I=Voq% zp$4NcG#W_YA=ixd#S7V1C1FKd^;~;xw!Qb2Mt#s%`1+?xfp%Awvtn}4xx4?e6NbDr zrsKoIMtw$O^P*^WO0L0}mk5W3crh#8g4+whLAL^O3?EC@?Dgzk7(*v{mGv;f_!OT; z#Bxod87kN61aZM$D|pc#Pj(&KGPn*+zN^@as`{68PbW^N(`ZPZQ9@Q{WbJ-J1wP!v zd*jU*LSsCJ;LL@*92O7Co74o$h-1BJj-d%+WUI`LHo`Mak+g+=$K@3Z`>cud5sCow zBA8G2;nX#_84k(0Fu;CN_fk0Sk3x=+1Q_Rqo$yCd!38fD?+`A-dR`0hydZ6`FkJv<|c7$xnXzZ;D5w z6#B_~C5%XoxcXBUc385(S;8kPwchZN7fmHETF#2B2R&YU?TwB)&*k;(Z9eAhfmQ5NN4o-{cMQy3fl?p#L4=s(}Bq{&`V< zb#~!B1b{n=7fwIT5j8R38O&T#s`U4^M^i z)*avqTTu>%#zrKV*EbdpV-(+ddvw25E!mw-v1XF<8;;DiMh8C^}HbE8g zpm5}aUrN0OP@$x$!#O47I`z3qeQ>x!Ue4w6Y~fiO9VsSE)ArLT9-LeZhfYp-he8}> z)RkdrgD38%-ItNoDVRkU8F-7X>NLn|V%PUyo9IEp)L83ooFL z@5M7i&UxU@o(raW7CfiJkzFLFM~$ELEKNgPUTQNHNP zp;;pp`Ig?;3NqJE`G=q!2Ia?q1y^w>Y<9>97=Z{GEeA{Ay=>`c ziy-qD$HzAg-b^_4?TilK2VOclD@~183Ss-r_^<2S=o7rKk`W3o{c5%}dG+bFhOZa} zUnWFDsSZx~te;VSJmEe|c+EEn0h3uU#HIxAtL8cC=c!xIXZQzPO@CfqaIbs2On9G8 zDenhoco*%9w_Fog`>!1zCwic-p`QqWehsa1Keffr%TP255A&)Ff+Y{_eem6H*W5!JEN^O#ukQt#~m7GwH;LsCPfDYYeg1 zn_U*qJ?k-T_85loe!_U3X;Gg1!z|8MD)UeVH4KEvOINdXx{n224E#%3$*XRPgz;P< z56d0R6H)rS8$PR-;=GUG1uTlB?Sej_K<{P)%4^OGe^wDOBIUo7>4+nFpG1L54Xq^e zgzKX4%7k<6xsVk2&_`dR#@rqw6ns!dD}jfBl8ibe9vn~DY8G-(gOYs8$?s>|5lPz= z6WqN2qaSoK{pWxCw+CP5yvBpg`k`b3Tj3LIR=095ND&K%cmx66XHu<456?U?|$_&MN>z3 zq`D^`YKzBDj=&+*;wV)~1`iJ&+NmHqDt-Lvzxgo6@NV9u{`}x^jtmr~?}b9?+ADck zGjkx`zcJ@yRh75q;VJsFb>p-7nx#Frd~j>FEoqb{coWGb(k5BOkdcuu)8?e(^XM#6Q0-i9Uzm$IJzl84XYtHk`2SaWa*?sC}m`oD$ z!Ze*+iDlMdUI$JK=ef0b)GuR2VluQPf`&YYiC7We?uQJnH&IzrFG zB=|-b1fCG9tBe|631sb8Cq>go*Myrg=CGVO$kN`_$vL6KnsS5#8n$7Y+zfQBS3ety zNj=Nkb#K8-S)R*BbF?#QjteGAPHnF7X^%3NX_edVp+WL>sd2uZ2=7&d%{m^O{!+vP zj~0jKokvko_kTn+z=$FXSXZO*jvYB|Yq@IM-mucikBwvW&hR1!M$(FVUDjxNu=U z0c*}eI!s;@%_0??Av9P2l`B_=rVN97ftPVAz3Z@s-_vg+vw=Ub2S*+CmF>_ayb+$F zgNknoI(3|nLc97Z1@9f1ycM1{@Dx6qMIp1A5&bzZ_;S&QVYqf}<}&^^Mw~LWmAgK! zMD`d^I!!-KnuB%ZlQ%x2CLu2)wAV7KwADPlIA0W+n(N^o5R@-T5cOk^0w(^UvVV|L5m z5TFVoN@0-s@Zj>j%e7dB)d+*|VC);Z5k`WDX=;tb#3yQQH9yDI;pgxEkGtA$zwoE& z{d><}N^bIf*BO zOEjf5E763na=Xi%@1DDx?_Xq8kP)t=&3d6>=EE~HT2QWiO`GL78y2Nbsmdo^{vZ?bL~6l92Y+$E&cTg-@94a<)u2S-te??Yc3c+_%XI`WVhWn zvT{op_|oN>=R1l(LpS$Fo6kmer7GRcS8JR47HgcPBRRE7ef zHi$>?ut{j!zyGrSoQBCYTrXmue(pgTHB4V69R#dr*N%{-{Oe5B#h;a+vBG(dV#mh zRl%J02pT1)9sPNnHTdA-C0D2dHy)5yo$FeD%{UI0T}QEpr!I$iyYw-~6l{5XMkyWV zS3K)~%1-%>R(tofLkZRa3NI?pSTnq{3QTxwykm6$L;jho80F=D`4a7*GzIVEv&J&*NtMySMSgdNEq#$VFG5qJBqy3c=0{Oa*=yG> z)*@_#LnC2zqXB;Mu7VX+%DdN4d-6D1(DLbLpLE-fk3Rb7;Jp~~ zfBOf2P+qsB^}qht|F;w9-+%Y}HGG9VxLPBwsS{ofYiuk<=X?vt;yxU=M{?JWeJM<5Y;o5y`JcK;VknY zX@|m=hk!-cv`G=lcP^_Wq~&c>9_zgKw{B1xsiH}{&gVFa(}M*M0e8MWjai1HHIwkj zg9l?2?Z|2`EJ9%JWJa6baoLuD2Nw7OQ*oA@>N?F470BfArmzqV&yFC1ahO)i8@^IF zIwM|v`r~1ey8VoB3PX5OA0$dqB{SD@(&wPE2|O8^41C+YrC`;$a8kUdgw;Y#^is}O zJE|#;3zP84wyMs9Bz1}TyHZ!bbsm{wM6P8HL=2z8T}qrl8+{Py5Hy9-@#Lid!L)wJ zg5DIeRHd9S)uZDq!HpA8$1b>F49RYd3;J)kQ)Z2dDPwZ}IP-BF%Hf%TpE2TK8dY;F zC36ROzUK+GahmkQdmj30uEFH9LE@wA@X86YjR<-RQ>8ndsP!4y#S@+_oDa@YyF~$^ zw|Sup7iXDn>!IkjRM|+Kbe7OM1*yG`deZ*F*9!ew6oeRPasB%B!fR!j$@~BGpZ@pk z7xu-$U;nrNmM!tkN1pHY9Y){qC&bT?G8{%;WWo~iux$}M;Rd=roZz%e4BY7^b+2p|0R-;U0~+>wr&JF2j{{l zmC)YEAMJqzlWxioW0#R5ew^5b`%o`^A3KGQW#_;8@H37GfPC*XY1`88P`F zodUOQIK*3N#duhE0pCnaQIgIMO0=)@I73bCwjE&jVDeVi<5^zW!p=Kn&Gcie{ z5QfUAg)*s9-0DqD&9}SUPPDDOq^)*Q1aLKonle`QZ#b8%flfV1RJ=X#Z`P7GZ z94QNU9pyFcX%pPGToGFar)<%n^laR6+f7q!9Tl{F zN;RH-`T+jpY*J}XZ|3)mQqupxweRt+uw9Bb4IU;R_|&D%fY!blNf<$;nk_&0jLODi zL+cb9TqKA4_yVmZ#^*R2?J-K^2MztAj-oTc9)3ZS{2V2;HA#JvW^&%@q~bidT=ah$ zqXW;3s!8pJfbhpj;pflNggVfrb>*p}I=~{N^KL$6JK>9Geb31XrJI@a!xLz=MkO}I zWN>DM;m`s-$pG+6SF#hFxQ{OA$N8YJ!79OR9h%^c;;N?~BQy@Hoty{f;IlJtGUs@A z`VmcjK5L!(Eb>AIZET6{&1D_FvKiF?Bz)zgXFm07j^xd}l=vrq@+bKQ%iq^9D#NkC ziww!k1LysZ7>>dlQUf_%C`@2iCSAh{Gp))m+%ai zXQQ{^aYkpum-LT!hV0JkZFTfLs5ea^){;;+7~I=5={u|RHQ zP2aV>1c*ZRSV9EM4(6zy-XpB?5)4RXJRGgYa^LQjlp5xhgjW{-sE@)?XFcUS=gm-L z5@q7K(cUPf&}CzW)$W4Tv4RqUV-D9+6?f@4@aMtqnde4``xx0Dy?E~JVs%a5hgyt> zWu{&(n{5s9!J(|+&_@iq@-G-p%0>}-i7+h+&r#^zODRVy*6_@uF!0@Mb7Iaxn9eE~ z3Q%5*ju(WnW=>)xboD@c3x4OT{hSszhr!)UndtG*c{vQZQ9LNa&^0BSGkD!kt-Cj( zoc7zoD@NON-BPW5LCkoa^^7GE%yom5wpaLd8|8o5I99LW=l+a8ta3>+rl1 z-qT+3tli+rIoPD~Y?gk{aqHVwc)^0N_DxGiC~3#BQHCgOb4;Io`gxW3al#tDW@vY1 zA9n&XzI&PwC!+y|V6v?gUpXz-1Cu#FeXn-SwRe8H3^{UOWI;xR`_TO`P7$~*DRob| zj(~EHf}T2!`0SE9J6LlZ;7yq8+O=5;=`+2y=NM-qxCms7fscJ1dZ8mQ-#?r!dTdqx z)mLA~Fq}L1;g5b;T>5^x`pG8)V#55&6&`v*`r#KWqf7e68G!n-%?4vdF!zU}ik4I7 z>)vm7911^Qs~X(brY0-nTgJ|R1ke>eG96Ttm>1(oQ+ z5>$e{nq(jlPwd#}j#6->BqARzqudIIsdvm*KufB!ED|#!Nj_dG4}tKmp?Z~JDjOvZ z9XqV2jfvG4rj20AV=nFTpdDLx+H?MO_7L(lI&pf*$Au*C2@tLXP1***k_bQc>dG3| zX;a26cZ7J0tPth{6FTuoU}lfbsI+KbXt zFZ$ZZkZ1oO!fQFS(T=>yknzZt(tkXI6`2pbBXuMd1JP~Hx4O085m275k(GCD>UoE! z;lE|~=#&QAoz>SG5%mX-zCf3{O|YYn{hshV*f|g0$8fEmLR-REKvA}R&waRU-Fe_1 zI-n_4L=P>;r%Q#6Nb(ASd-{Uj{i!rOR-Qqd+{ZiSHOQRy;1MtSw)&S@j;n5~q|Row zl+cuI+wX;6IYAs3boK>H{bFDwI5UE?Czc%=UVr`7gtuN#bHb$NhR8kjL7WE0!;fB+jxcJI76?@?cEZ1*qeNdYPww4cK)vKq z^LYNER6bY_Mp7#*?PUrr!ChGnV<9U!3lr-BPSS>BI{aL!aO5FnlT52$@{|l>t6|QQ z`-5ekFUD5J5##QZP3{rg_&im#6t1{0#xiW5y^A8;40D)~5DIa%&5a;b8U=>&^S|IX z!}dp8VaK*9R8>WiXBB8%x+MbH@W=mgu%*Q;HcQzhxardS0cyo9_=)qEA zLUbw0+Cl(vUJNB<2?m1m)?06uX_YZa$&d)K^+Q9OQZCLm0vln(4DaIS7?F{b7^=sq zmr}&Y82D*$bu(>yamfhhjR@`0dl{i5*8Jqq2q*N2n>RRti%~{ZRKX=)ZQtO!t&};6 zJ4S_Ku+iZOJ%iW4P#$mom;ZTDzP7a$**`ylW1v`uiO~lG_#O3|KX0ZhH-a-%)O^>lo!Yi7`uE#o@?@ za?_6(r?iQr_C~@7;MJy={JcHClF@@_46SYKdFzr^)YadDx%Vvb4Ufd2T?oD5<3i+# zQ+4I49We6FS@@4aTggbbJRV$*3q%;uBAPVaor=AX0m zy6}{j0oTTYMiNKC51bxkAs|@2*W~%0_Jd5qh6I8Xk9l(aF1a>ZdmxJG#?i($nUI(6Rw-` z+Vs;N{jid@;hKzhUORjz^y%xF9E2{EO8pjiO!@Fi_7)o%4z8n1W^{#jB1ftCsLbWG zCFZacF{W>c1woDruytz>zC8Q3Ai8%trPirO{n`#PdV^#ne+3~OT?v8Vf>jJ&*kV;1*Pa|@OqsxdxXCvPilMUH0I|E@IxsUCz z>JmW`YI%}%`p+i{Z-koSG-^h}SMEP8a z@U(1hsl%0|e$TrrHp6ULP&kCEi>M^2e68x>Vv9&0{ zwEx9;d2NjA%v%g@``4e5z4As2Z+|>m^_5@N{lL-c9k(1KOSzqUE3bGm?YnIURX8cX z3UQPjFIbq<90D9%x;QJx)U94h9#7SX=bX`)Ih2fCFk(`dLMJq+-ZROwpU}OyDSt(g z)dL;n)e&QOeE4rEpOnvhi7u(W{m3oHdZD3@I@bPHcBg1c-kFEl3r00n z`r%<)ykyDi(GI;nP;kCdcwci`@FtBSO0Co80Gh-nB?4JJE-hsf031eO!&+?8a zxQ7uOxL1ZpS) z{WNrfFG_9tyl8onZ*Z-jgk$CNe4SU(pA_g>@#-umX<@rJ$6n;#hQ?mvinV6jFbZzE>{<&^0;-b2Gqs{x4dC-#NO#E&6%x z9AB*a?x}+TH8C&z^*EsvM$Na&6}rR-XeP-DEF0}@yqm38E74qis*xF0O08#Z^e57^Vn-?b;UNiiCmRgMhO z8VQm;vH^e2;TvgITBr0chuMn7j@TY1I+0M}@qd8z2@d^pOQY7@+q*)by)gj=IGvJ zUXJP}x3%)=--3DJw1iEW#hhr>XEkQ6^=GiT9Qb=qsYVGfDFD68MXSM_Gn z9}Le!!;IqP>U<|Jkg0=LXAdX+v@@wmR4|Sg##RS~TsNi5($HW1>X%VkQGCIfb{H@HhyRXfQb(DpEfNmxolYnBim%g; zb3Jgr;K6TkOC9Rxb)qde;pa?vuJxx6HMrpo$^<e4=ZQd~wpa7i&yl#~lvdA3VIGyc&h zY4DZncyM+-+G+mMKtT&m0ko_twWyFCk}7R63UNpZB!uH$|J?o^w%>Z z3i7^^JdA*Era#RRb9nW8nENZ?S^cFOmQn|=(5|C)@eTvR0K&u2Az>`CkbI8hMm_CI zDi?BvEA^`zEc#X22iD>v`5vbX80j(h`aTo*#-mP0QF4;{EK=|j#x*iC-!dPkitecK z92k_)cE1r5_(Gy4JwK^&?iKFv6^EhvAr8yYVVoADW5?CO51qa zc_7@lOo7~p3dk=h2-v0lbG3d)g1Ch+Jy8q%`0egvHi|TeceI4jHUWsrGp%Qpa-Nx} zLMY7Amz08Jj1CbMC@^mf-6eJ*zN8*ZHhsdp=NcCA%m;i*=rA>y%z+S4LuVFUAGAk^ zDlFRCNI{?m1-@sI*md$jCYU5;@8r#W$^hXh%Eq-f9G0=uugmc^c~U1h8T=2yB4qjJ z+3r_Z(=UBRrs8mvR9bC5uo~u4u!L3Oo!G}me!?$-(GMd?gx{!xLizNw&o*Yf(yu70 z3;dM7nDU1oe%LaE?ddksdh4yXx_p`ULcpq^LZ=E}=wSqOK12WO*RPijDnM)Pmp{^e zIuIOYYl^gov2A5ya_~ls)uU`y_s#lfT}%J~KmbWZK~$}q2XDqO6L56J6Y`Y@^eq*Q zVjAjb!?Wj%N%E8*wk$hZ?&(P7zLkLYt(zw|$e0AD5`~IROMy_Y1YT#C;>HJHQMNo7 z+8pJ51CE>O)Wv|n30khYTYvgx`;wiqj&My~Lr+Fz$

%@T{;`VA2-8rf`(E1BC>i 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 \ No newline at end of file + \ No newline at end of file diff --git a/images/icons/v3/minimize/minimize.svg b/images/icons/v3/minimize/minimize.svg index 50a44ab0a2..01ce17774c 100644 --- a/images/icons/v3/minimize/minimize.svg +++ b/images/icons/v3/minimize/minimize.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/package.json b/package.json index f494ae2389..752c7539db 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "prepare-adhoc-build": "node scripts/prepare_adhoc_build.js", "prepare-adhoc-version": "node scripts/prepare_tagged_version.js adhoc", "prepare-staging-build": "node scripts/prepare_staging_build.js", - "prepare-windows-cert": "node scripts/prepare_windows_cert.js", "test": "run-s test-node test-electron test-lint-intl test-eslint", "test-electron": "node ts/scripts/test-electron.js", "test-release": "node ts/scripts/test-release.js", diff --git a/scripts/prepare_windows_cert.js b/scripts/prepare_windows_cert.js deleted file mode 100644 index de0da48137..0000000000 --- a/scripts/prepare_windows_cert.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2018 Signal Messenger, LLC -// SPDX-License-Identifier: AGPL-3.0-only - -const fs = require('fs'); -const _ = require('lodash'); - -const packageJson = require('../package.json'); - -// We have different windows certificates used in each of our build machines, and this -// script makes it easier to ready the app to build on a given machine. - -// ------- - -const KEY = 'build.win.certificateSha1'; -const DEFAULT_VALUE = '8C9A0B5C852EC703D83EF7BFBCEB54B796073759'; - -const BUILDER_A = '507769334DA990A8DDE858314B0CDFC228E7CFA1'; -const BUILDER_B = 'C689B0988CA1A7DF99E4CE4433AC7EA8B82F8D41'; - -let targetValue = DEFAULT_VALUE; - -if (process.env.WINDOWS_BUILDER === 'A') { - targetValue = BUILDER_A; -} -if (process.env.WINDOWS_BUILDER === 'B') { - targetValue = BUILDER_B; -} - -// ------- - -function checkValue(object, objectPath, expected) { - const actual = _.get(object, objectPath); - if (actual !== expected) { - throw new Error(`${objectPath} was ${actual}; expected ${expected}`); - } -} - -// ------ - -checkValue(packageJson, KEY, DEFAULT_VALUE); - -// ------- - -_.set(packageJson, KEY, targetValue); - -// ------- - -fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, ' ')); diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index 9fbd3937ea..1c5f47d5a8 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -3882,14 +3882,17 @@ button.module-image__border-overlay:focus { } &__background { - align-items: center; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + top: 0; + bottom: 0; + display: flex; + align-items: center; flex-direction: column; - height: 100%; justify-content: center; overflow: hidden; - position: relative; - width: 100%; &--blur { background-repeat: no-repeat; @@ -3989,9 +3992,10 @@ button.module-image__border-overlay:focus { } .module-ongoing-call { &__remote-video-enabled { - background-color: variables.$color-gray-95; + // TODO: DESKTOP-8537 remove this; we want blurred avatar not all-black letterboxing height: 100%; width: 100%; + position: relative; &--reconnecting { filter: blur(15px); } @@ -4002,6 +4006,7 @@ button.module-image__border-overlay:focus { height: 100vh; width: 100%; display: flex; + position: relative; align-items: center; justify-content: center; } @@ -4104,6 +4109,7 @@ button.module-image__border-overlay:focus { // Only apply container-type: size to grid column to prevent size collapse // for implicitly sized participants (PiP) container-type: size; + position: relative; @container (min-width: 180px) or (min-height: 180px) { .module-ongoing-call__group-call-remote-participant__footer { @@ -4625,14 +4631,17 @@ button.module-image__border-overlay:focus { .module-calling-pip { backface-visibility: hidden; background-color: variables.$color-gray-95; - border-radius: 4px; + border-radius: 18px; box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.05), 0px 8px 20px rgba(0, 0, 0, 0.3); cursor: grab; - height: 158px; + // This is just a starting height; the component will figure out what height it should + // be, given the aspect ratio of the provided video, pinning the width. + // These both should be kept in sync with the height/width in CallingPip.tsx + height: 286px; + width: 160px; position: fixed; - width: 120px; z-index: variables.$z-index-calling-pip; & .module-ongoing-call__group-call-remote-participant { @@ -4643,13 +4652,13 @@ button.module-image__border-overlay:focus { &--remote { align-items: center; background-color: variables.$color-gray-95; - border-radius: 4px 4px 0 0; + border-radius: 18px; + height: 100%; + width: 100%; display: flex; - height: 120px; // This height should be kept in sync with 's hard-coded height. justify-content: center; overflow: hidden; position: relative; - width: 100%; // The avatar image can be dragged on Windows. .module-Avatar img { @@ -4664,15 +4673,20 @@ button.module-image__border-overlay:focus { &--local, &--local-presenting { - bottom: 38px; - height: 32px; position: absolute; - inset-inline-end: 4px; - width: 32px; + top: 8px; + inset-inline-start: 8px; + height: 54px; + width: 80px; + + border-radius: 12px; + overflow: hidden; + background-color: variables.$color-gray-80; video { width: 100%; height: 100%; + object-fit: cover; } } @@ -4681,17 +4695,116 @@ button.module-image__border-overlay:focus { } } - &__actions { - align-items: center; - background-color: variables.$color-gray-02; - border-radius: 0 0 4px 4px; + &__full-size-local-preview { + width: 100%; + position: relative; + + video { + width: 100%; + transform: rotateY(180deg); + } + + &--presenting { + transform: none; + } + } + + &__pills { display: flex; flex-direction: row; - height: 38px; - justify-content: space-around; + align-items: center; - @include mixins.dark-theme { - background-color: variables.$color-gray-65; + position: absolute; + bottom: 66px; + inset-inline-start: 8px; + transition: bottom 0.3s variables.$ease-out-local-preview 0.3s; + + &--no-controls { + bottom: 8px; + } + } + + &__pill { + height: 28px; + border-radius: 14px; + padding: 6px; + padding-inline-start: 12px; + padding-inline-end: 12px; + background-color: variables.$color-gray-80; + color: variables.$color-gray-05; + display: flex; + flex-direction: row; + align-items: center; + + @include mixins.font-body-small; + } + + &__pill-icon { + height: 16px; + width: 16px; + margin-inline-end: 4px; + + &__raised-hands { + @include mixins.color-svg( + '../images/icons/v3/raise_hand/raise_hand.svg', + variables.$color-gray-05 + ); + } + &__group-join { + @include mixins.color-svg( + '../images/icons/v3/person/person-plus-compact.svg', + variables.$color-gray-05 + ); + } + } + + &__actions { + position: absolute; + bottom: 4px; + inset-inline-start: 4px; + inset-inline-end: 4px; + padding: 12px; + height: 56px; + opacity: 0; + transition: opacity 1s ease-in-out; + + &--visible { + opacity: 1; + } + + display: flex; + align-items: center; + flex-direction: row; + + border-radius: 18px; + justify-content: space-around; + background-color: variables.$color-gray-78; + + &__button { + flex-shrink: 0; + flex-grow: 0; + } + &__middle-button { + flex-grow: 1; + text-align: center; + } + + .CallingButton__icon { + height: 32px; + width: 32px; + } + } + + &__un-pip-container { + position: absolute; + top: 16px; + inset-inline-end: 16px; + + opacity: 0; + transition: opacity 1s ease-in-out; + + &--visible { + opacity: 1; } } diff --git a/stylesheets/components/CallingButton.scss b/stylesheets/components/CallingButton.scss index f106cb6f8f..8bc9d4a34b 100644 --- a/stylesheets/components/CallingButton.scss +++ b/stylesheets/components/CallingButton.scss @@ -101,6 +101,14 @@ } } + &--full-screen-call { + @include calling-button-icon( + '../images/icons/v3/pip/pip-maximize-light.svg', + variables.$color-gray-80, + variables.$color-gray-15 + ); + } + &--hangup { @include calling-button-icon( '../images/icons/v3/phone/phone-down-fill-light.svg', @@ -264,3 +272,9 @@ width: 16px; } } + +.module-calling-pip { + .CallingButton__button-container { + margin: 0; + } +} diff --git a/ts/components/CallManager.tsx b/ts/components/CallManager.tsx index b0c3210679..bbb6a161dd 100644 --- a/ts/components/CallManager.tsx +++ b/ts/components/CallManager.tsx @@ -122,8 +122,8 @@ export type PropsType = { sendGroupCallReaction: (payload: SendGroupCallReactionType) => void; setGroupCallVideoRequest: (_: SetGroupCallVideoRequestType) => void; setIsCallActive: (_: boolean) => void; - setLocalAudio: (_: SetLocalAudioType) => void; - setLocalVideo: (_: SetLocalVideoType) => void; + setLocalAudio: SetLocalAudioType; + setLocalVideo: SetLocalVideoType; setLocalPreviewContainer: (container: HTMLDivElement | null) => void; setOutgoingRing: (_: boolean) => void; setRendererCanvas: (_: SetRendererCanvasType) => void; @@ -345,14 +345,19 @@ function ActiveCallManager({ getGroupCallVideoFrameSource={getGroupCallVideoFrameSourceForActiveCall} imageDataCache={imageDataCache} hangUpActiveCall={hangUpActiveCall} - hasLocalVideo={hasLocalVideo} i18n={i18n} + me={me} setGroupCallVideoRequest={setGroupCallVideoRequestForConversation} setLocalPreviewContainer={setLocalPreviewContainer} setRendererCanvas={setRendererCanvas} switchToPresentationView={switchToPresentationView} switchFromPresentationView={switchFromPresentationView} + toggleAudio={setLocalAudio} togglePip={togglePip} + toggleVideo={() => { + const enabled = !activeCall.hasLocalVideo; + setLocalVideo({ enabled }); + }} /> ); } diff --git a/ts/components/CallScreen.tsx b/ts/components/CallScreen.tsx index e1cb9b8eea..2e46f7159c 100644 --- a/ts/components/CallScreen.tsx +++ b/ts/components/CallScreen.tsx @@ -122,8 +122,8 @@ export type PropsType = { _: Array, speakerHeight: number ) => void; - setLocalAudio: (_: SetLocalAudioType) => void; - setLocalVideo: (_: SetLocalVideoType) => void; + setLocalAudio: SetLocalAudioType; + setLocalVideo: SetLocalVideoType; setLocalPreviewContainer: (container: HTMLDivElement | null) => void; setRendererCanvas: (_: SetRendererCanvasType) => void; stickyControls: boolean; @@ -489,10 +489,7 @@ export function CallScreen({ )} > {isSendingVideo ? ( -

+
) : (
diff --git a/ts/components/CallingButton.tsx b/ts/components/CallingButton.tsx index ac2d5b7599..e232d3e541 100644 --- a/ts/components/CallingButton.tsx +++ b/ts/components/CallingButton.tsx @@ -13,6 +13,9 @@ export enum CallingButtonType { AUDIO_DISABLED = 'AUDIO_DISABLED', AUDIO_OFF = 'AUDIO_OFF', AUDIO_ON = 'AUDIO_ON', + FULL_SCREEN_CALL = 'FULL_SCREEN_CALL', + HANGUP_GROUP = 'HANGUP_GROUP', + HANGUP_DIRECT = 'HANGUP_DIRECT', MAXIMIZE = 'MAXIMIZE', MINIMIZE = 'MINIMIZE', MORE_OPTIONS = 'MORE_OPTIONS', @@ -117,6 +120,19 @@ export function CallingButton({ } else if (buttonType === CallingButtonType.MINIMIZE) { classNameSuffix = 'minimize'; tooltipContent = i18n('icu:calling__preview--minimize'); + } else if (buttonType === CallingButtonType.FULL_SCREEN_CALL) { + classNameSuffix = 'full-screen-call'; + tooltipContent = i18n('icu:calling__pip--off'); + } else if (buttonType === CallingButtonType.HANGUP_DIRECT) { + classNameSuffix = 'hangup'; + tooltipContent = i18n( + 'icu:CallControls__JoinLeaveButton--hangup-1-1-tooltip' + ); + } else if (buttonType === CallingButtonType.HANGUP_GROUP) { + classNameSuffix = 'hangup'; + tooltipContent = i18n( + 'icu:CallControls__JoinLeaveButton--hangup-group-tooltip' + ); } const handleClick = React.useCallback( diff --git a/ts/components/CallingLobby.tsx b/ts/components/CallingLobby.tsx index 3c48f01640..ba963575ae 100644 --- a/ts/components/CallingLobby.tsx +++ b/ts/components/CallingLobby.tsx @@ -72,8 +72,8 @@ export type PropsType = { onJoinCall: () => void; outgoingRing: boolean; peekedParticipants: Array; - setLocalAudio: (_: SetLocalAudioType) => void; - setLocalVideo: (_: SetLocalVideoType) => void; + setLocalAudio: SetLocalAudioType; + setLocalVideo: SetLocalVideoType; setLocalPreviewContainer: (container: HTMLDivElement | null) => void; setOutgoingRing: (_: boolean) => void; showParticipantsList: boolean; diff --git a/ts/components/CallingParticipantsList.stories.tsx b/ts/components/CallingParticipantsList.stories.tsx index 4658b73735..c2356c0cac 100644 --- a/ts/components/CallingParticipantsList.stories.tsx +++ b/ts/components/CallingParticipantsList.stories.tsx @@ -2,43 +2,17 @@ // SPDX-License-Identifier: AGPL-3.0-only import * as React from 'react'; -import { sample } from 'lodash'; + import { action } from '@storybook/addon-actions'; import type { Meta } from '@storybook/react'; import type { PropsType } from './CallingParticipantsList'; import { CallingParticipantsList } from './CallingParticipantsList'; -import { AvatarColors } from '../types/Colors'; -import type { GroupCallRemoteParticipantType } from '../types/Calling'; import { generateAci } from '../types/ServiceId'; -import { getDefaultConversationWithServiceId } from '../test-both/helpers/getDefaultConversation'; +import { createCallParticipant } from '../test-both/helpers/createCallParticipant'; const { i18n } = window.SignalContext; -function createParticipant( - participantProps: Partial -): GroupCallRemoteParticipantType { - return { - aci: generateAci(), - demuxId: 2, - hasRemoteAudio: Boolean(participantProps.hasRemoteAudio), - hasRemoteVideo: Boolean(participantProps.hasRemoteVideo), - isHandRaised: Boolean(participantProps.isHandRaised), - mediaKeysReceived: Boolean(participantProps.mediaKeysReceived), - presenting: Boolean(participantProps.presenting), - sharingScreen: Boolean(participantProps.sharingScreen), - videoAspectRatio: 1.3, - ...getDefaultConversationWithServiceId({ - avatarUrl: participantProps.avatarUrl, - color: sample(AvatarColors), - isBlocked: Boolean(participantProps.isBlocked), - name: participantProps.name, - profileName: participantProps.title, - title: String(participantProps.title), - }), - }; -} - const createProps = (overrideProps: Partial = {}): PropsType => ({ i18n, conversationId: 'fake-conversation-id', @@ -60,7 +34,7 @@ export function NoOne(): JSX.Element { export function SoloCall(): JSX.Element { const props = createProps({ participants: [ - createParticipant({ + createCallParticipant({ title: 'Bardock', }), ], @@ -71,37 +45,37 @@ export function SoloCall(): JSX.Element { export function ManyParticipants(): JSX.Element { const props = createProps({ participants: [ - createParticipant({ + createCallParticipant({ title: 'Son Goku', }), - createParticipant({ + createCallParticipant({ hasRemoteAudio: true, hasRemoteVideo: true, presenting: true, name: 'Rage Trunks', title: 'Rage Trunks', }), - createParticipant({ + createCallParticipant({ hasRemoteAudio: true, title: 'Prince Vegeta', }), - createParticipant({ + createCallParticipant({ hasRemoteAudio: true, hasRemoteVideo: true, name: 'Goku Black', title: 'Goku Black', }), - createParticipant({ + createCallParticipant({ isHandRaised: true, title: 'Supreme Kai Zamasu', }), - createParticipant({ + createCallParticipant({ hasRemoteAudio: false, hasRemoteVideo: true, isHandRaised: true, title: 'Chi Chi', }), - createParticipant({ + createCallParticipant({ title: 'Someone With A Really Long Name', }), ], @@ -113,7 +87,7 @@ export function Overflow(): JSX.Element { const props = createProps({ participants: Array(50) .fill(null) - .map(() => createParticipant({ title: 'Kirby' })), + .map(() => createCallParticipant({ title: 'Kirby' })), }); return ; } diff --git a/ts/components/CallingPip.stories.tsx b/ts/components/CallingPip.stories.tsx index a42a0cf64e..0439e8f8b8 100644 --- a/ts/components/CallingPip.stories.tsx +++ b/ts/components/CallingPip.stories.tsx @@ -20,9 +20,18 @@ import { CallMode } from '../types/CallDisposition'; import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation'; import { fakeGetGroupCallVideoFrameSource } from '../test-both/helpers/fakeGetGroupCallVideoFrameSource'; import { MINUTE } from '../util/durations'; +import type { SetRendererCanvasType } from '../state/ducks/calling'; +import { createCallParticipant } from '../test-both/helpers/createCallParticipant'; const { i18n } = window.SignalContext; +const videoScreenshot = new Image(300, 400); +videoScreenshot.src = '../../fixtures/cat-screenshot-3x4.png'; +const localPreviewVideo = document.createElement('video'); +localPreviewVideo.autoplay = true; +localPreviewVideo.loop = true; +localPreviewVideo.src = '../../fixtures/pixabay-Soap-Bubble-7141.mp4'; + const conversation: ConversationType = getDefaultConversation({ id: '3051234567', avatarUrl: undefined, @@ -43,7 +52,7 @@ type Overrides = { const getCommonActiveCallData = (overrides: Overrides) => ({ conversation, hasLocalAudio: overrides.hasLocalAudio ?? true, - hasLocalVideo: overrides.hasLocalVideo ?? false, + hasLocalVideo: overrides.hasLocalVideo ?? true, localAudioLevel: overrides.localAudioLevel ?? 0, viewMode: overrides.viewMode ?? CallViewMode.Paginated, joinedAt: Date.now() - MINUTE, @@ -71,21 +80,27 @@ const getDefaultCall = (overrides: Overrides): ActiveDirectCallType => { export default { title: 'Components/CallingPip', - argTypes: { - hasLocalVideo: { control: { type: 'boolean' } }, - }, args: { activeCall: getDefaultCall({}), getGroupCallVideoFrameSource: fakeGetGroupCallVideoFrameSource, hangUpActiveCall: action('hang-up-active-call'), - hasLocalVideo: false, i18n, + me: getDefaultConversation({ + name: 'Lonely InGroup', + title: 'Lonely InGroup', + }), setGroupCallVideoRequest: action('set-group-call-video-request'), - setLocalPreviewContainer: action('set-local-preview-container'), - setRendererCanvas: action('set-renderer-canvas'), + setLocalPreviewContainer: (container: HTMLDivElement | null) => { + container?.appendChild(localPreviewVideo); + }, + setRendererCanvas: ({ element }: SetRendererCanvasType) => { + element?.current?.getContext('2d')?.drawImage(videoScreenshot, 0, 0); + }, switchFromPresentationView: action('switch-to-presentation-view'), switchToPresentationView: action('switch-to-presentation-view'), + toggleAudio: action('toggle-audio'), togglePip: action('toggle-pip'), + toggleVideo: action('toggle-video'), }, } satisfies Meta; @@ -93,6 +108,60 @@ export function Default(args: PropsType): JSX.Element { return ; } +// Note: should NOT show speaking indicators +export function DefaultBothSpeaking(args: PropsType): JSX.Element { + return ( + + ); +} + +// Note: should NOT show mute indicator for remote party +export function RemoteMuted(args: PropsType): JSX.Element { + return ( + + ); +} + +// Note: should NOT show show mute indicator in self preview +export function NoLocalAudio(args: PropsType): JSX.Element { + return ( + + ); +} + +export function NoLocalVideo(args: PropsType): JSX.Element { + return ( + + ); +} + export function ContactWithAvatarAndNoVideo(args: PropsType): JSX.Element { return ( ); } + +export function LonelyInGroupCallVideoDisabled(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [], + raisedHands: new Set(), + remoteParticipants: [], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +export function GroupCall(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [], + raisedHands: new Set(), + remoteParticipants: [ + createCallParticipant({}), + createCallParticipant({}), + ], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +export function GroupCallWithRaisedHands(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [], + raisedHands: new Set([1, 2, 3]), + remoteParticipants: [ + createCallParticipant({}), + createCallParticipant({}), + ], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +export function GroupCallWithPendingParticipants(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [ + getDefaultConversation(), + getDefaultConversation(), + ], + raisedHands: new Set(), + remoteParticipants: [ + createCallParticipant({}), + createCallParticipant({}), + ], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +export function GroupCallWithPendingAndRaised(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [ + getDefaultConversation(), + getDefaultConversation(), + ], + raisedHands: new Set([1, 2, 3]), + remoteParticipants: [ + createCallParticipant({}), + createCallParticipant({}), + ], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +// Note: should NOT show muted indicator for remote party +export function GroupCallRemoteMuted(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [ + getDefaultConversation(), + getDefaultConversation(), + ], + raisedHands: new Set([1, 2, 3]), + remoteParticipants: [ + { + ...createCallParticipant({}), + demuxId: 1, + hasRemoteAudio: false, + hasRemoteVideo: true, + mediaKeysReceived: true, + }, + ], + remoteAudioLevels: new Map(), + suggestLowerHand: false, + }} + /> + ); +} + +// Note: should NOT show speaking indicator +export function GroupCallRemoteSpeaking(args: PropsType): JSX.Element { + return ( + (), + groupMembers: times(3, () => getDefaultConversation()), + isConversationTooBigToRing: false, + joinState: GroupCallJoinState.Joined, + localDemuxId: 1, + maxDevices: 5, + deviceCount: 0, + peekedParticipants: [], + pendingParticipants: [ + getDefaultConversation(), + getDefaultConversation(), + ], + raisedHands: new Set([1, 2, 3]), + remoteParticipants: [ + { + ...createCallParticipant({}), + demuxId: 1, + hasRemoteAudio: true, + hasRemoteVideo: true, + mediaKeysReceived: true, + }, + ], + remoteAudioLevels: new Map([[1, 0.75]]), + suggestLowerHand: false, + }} + /> + ); +} diff --git a/ts/components/CallingPip.tsx b/ts/components/CallingPip.tsx index 6ce57d5982..7a95c61bc6 100644 --- a/ts/components/CallingPip.tsx +++ b/ts/components/CallingPip.tsx @@ -2,15 +2,27 @@ // SPDX-License-Identifier: AGPL-3.0-only import React from 'react'; +import classNames from 'classnames'; import { minBy, debounce, noop } from 'lodash'; + import type { VideoFrameSource } from '@signalapp/ringrtc'; + +import { missingCaseError } from '../util/missingCaseError'; +import { isGroupOrAdhocActiveCall } from '../util/isGroupOrAdhocCall'; +import { useActivateSpeakerViewOnPresenting } from '../hooks/useActivateSpeakerViewOnPresenting'; +import { CallMode } from '../types/CallDisposition'; +import { TooltipPlacement } from './Tooltip'; +import { CallingButton, CallingButtonType } from './CallingButton'; import { CallingPipRemoteVideo } from './CallingPipRemoteVideo'; +import { CallBackgroundBlur } from './CallBackgroundBlur'; + import type { LocalizerType } from '../types/Util'; import type { ActiveCallType, GroupCallVideoRequest } from '../types/Calling'; import type { SetRendererCanvasType } from '../state/ducks/calling'; -import { missingCaseError } from '../util/missingCaseError'; -import { useActivateSpeakerViewOnPresenting } from '../hooks/useActivateSpeakerViewOnPresenting'; import type { CallingImageDataCache } from './CallManager'; +import type { ConversationType } from '../state/ducks/conversations'; +import { Avatar, AvatarSize } from './Avatar'; +import { AvatarColors } from '../types/Colors'; enum PositionMode { BeingDragged, @@ -50,9 +62,21 @@ export type PropsType = { activeCall: ActiveCallType; getGroupCallVideoFrameSource: (demuxId: number) => VideoFrameSource; hangUpActiveCall: (reason: string) => void; - hasLocalVideo: boolean; i18n: LocalizerType; imageDataCache: React.RefObject; + me: Readonly< + Pick< + ConversationType, + | 'avatarUrl' + | 'avatarPlaceholderGradient' + | 'color' + | 'type' + | 'phoneNumber' + | 'profileName' + | 'title' + | 'sharedGroupNames' + > + >; setGroupCallVideoRequest: ( _: Array, speakerHeight: number @@ -61,32 +85,42 @@ export type PropsType = { setRendererCanvas: (_: SetRendererCanvasType) => void; switchToPresentationView: () => void; switchFromPresentationView: () => void; + toggleAudio: () => void; togglePip: () => void; + toggleVideo: () => void; }; -const PIP_HEIGHT = 156; -const PIP_WIDTH = 120; -const PIP_TOP_MARGIN = 56; +const PIP_STARTING_HEIGHT = 286; +const PIP_WIDTH = 160; +const PIP_TOP_MARGIN = 78; const PIP_PADDING = 8; +// Receiving portrait video will cause the PIP to update to match that video size, but +// we need limits +export const PIP_MINIMUM_HEIGHT = 180; +export const PIP_MAXIMUM_HEIGHT = 360; + export function CallingPip({ activeCall, getGroupCallVideoFrameSource, hangUpActiveCall, - hasLocalVideo, imageDataCache, i18n, + me, setGroupCallVideoRequest, setLocalPreviewContainer, setRendererCanvas, switchToPresentationView, switchFromPresentationView, + toggleAudio, togglePip, + toggleVideo, }: PropsType): JSX.Element { const isRTL = i18n.getLocaleDirection() === 'rtl'; const videoContainerRef = React.useRef(null); + const [height, setHeight] = React.useState(PIP_STARTING_HEIGHT); const [windowWidth, setWindowWidth] = React.useState(window.innerWidth); const [windowHeight, setWindowHeight] = React.useState(window.innerHeight); const [positionState, setPositionState] = React.useState({ @@ -112,6 +146,8 @@ export function CallingPip({ mouseX: ev.clientX, mouseY: ev.clientY, })); + ev.preventDefault(); + ev.stopPropagation(); } }, [positionState] @@ -150,7 +186,7 @@ export function CallingPip({ }, { mode: PositionMode.SnapToBottom, - distanceToEdge: innerHeight - (offsetY + PIP_HEIGHT), + distanceToEdge: innerHeight - (offsetY + height), }, ]; @@ -179,7 +215,7 @@ export function CallingPip({ throw missingCaseError(snapTo.mode); } } - }, [isRTL, positionState, setPositionState]); + }, [height, isRTL, positionState, setPositionState]); React.useEffect(() => { if (positionState.mode === PositionMode.BeingDragged) { @@ -213,6 +249,15 @@ export function CallingPip({ }, []); const [translateX, translateY] = React.useMemo<[number, number]>(() => { + const topMin = PIP_TOP_MARGIN; + const bottomMax = windowHeight - PIP_PADDING - height; + + const leftScrollPadding = isRTL ? 1 : 0; + const leftMin = PIP_PADDING + leftScrollPadding; + + const rightScrollPadding = isRTL ? 0 : 1; + const rightMax = windowWidth - PIP_PADDING - PIP_WIDTH - rightScrollPadding; + switch (positionState.mode) { case PositionMode.BeingDragged: return [ @@ -225,56 +270,170 @@ export function CallingPip({ ]; case PositionMode.SnapToLeft: return [ - PIP_PADDING, - Math.min( - positionState.offsetY, - windowHeight - PIP_PADDING - PIP_HEIGHT - ), + leftMin, + Math.max(topMin, Math.min(positionState.offsetY, bottomMax)), ]; case PositionMode.SnapToRight: return [ - windowWidth - PIP_PADDING - PIP_WIDTH, - Math.min( - positionState.offsetY, - windowHeight - PIP_PADDING - PIP_HEIGHT - ), + rightMax, + Math.max(topMin, Math.min(positionState.offsetY, bottomMax)), ]; case PositionMode.SnapToTop: return [ - Math.min( - positionState.offsetX, - windowWidth - PIP_PADDING - PIP_WIDTH - ), - PIP_TOP_MARGIN + PIP_PADDING, + Math.max(leftMin, Math.min(positionState.offsetX, rightMax)), + topMin, ]; case PositionMode.SnapToBottom: return [ - Math.min( - positionState.offsetX, - windowWidth - PIP_PADDING - PIP_WIDTH - ), - windowHeight - PIP_PADDING - PIP_HEIGHT, + Math.max(leftMin, Math.min(positionState.offsetX, rightMax)), + bottomMax, ]; default: throw missingCaseError(positionState); } - }, [isRTL, windowWidth, windowHeight, positionState]); + }, [height, isRTL, windowWidth, windowHeight, positionState]); const localizedTranslateX = isRTL ? -translateX : translateX; + const [showControls, setShowControls] = React.useState(false); + const onMouseEnter = React.useCallback(() => { + setShowControls(true); + }, [setShowControls]); + const onMouseMove = React.useCallback(() => { + setShowControls(true); + }, [setShowControls]); + + const [controlsHover, setControlsHover] = React.useState(false); + const onControlsMouseEnter = React.useCallback(() => { + setControlsHover(true); + }, [setControlsHover]); + + const onControlsMouseLeave = React.useCallback(() => { + setControlsHover(false); + }, [setControlsHover]); + + React.useEffect(() => { + if (!showControls) { + return; + } + if (controlsHover) { + return; + } + + const timer = setTimeout(() => { + setShowControls(false); + }, 2000); + return clearTimeout.bind(null, timer); + }, [showControls, controlsHover, setShowControls]); + const localVideoClassName = activeCall.presentingSource ? 'module-calling-pip__video--local-presenting' : 'module-calling-pip__video--local'; + let raisedHandsCount = 0; + let callJoinRequests = 0; + if (isGroupOrAdhocActiveCall(activeCall)) { + raisedHandsCount = activeCall.raisedHands.size; + callJoinRequests = activeCall.pendingParticipants.length; + } + + let videoButtonType: CallingButtonType; + if (activeCall.presentingSource) { + videoButtonType = CallingButtonType.VIDEO_DISABLED; + } else if (activeCall.hasLocalVideo) { + videoButtonType = CallingButtonType.VIDEO_ON; + } else { + videoButtonType = CallingButtonType.VIDEO_OFF; + } + const audioButtonType = activeCall.hasLocalAudio + ? CallingButtonType.AUDIO_ON + : CallingButtonType.AUDIO_OFF; + const hangupButtonType = + activeCall.callMode === CallMode.Direct + ? CallingButtonType.HANGUP_DIRECT + : CallingButtonType.HANGUP_GROUP; + + let remoteVideoNode: JSX.Element; + const isLonelyInCall = !activeCall.remoteParticipants.length; + const isSendingVideo = + activeCall.hasLocalVideo || activeCall.presentingSource; + if (isLonelyInCall) { + remoteVideoNode = ( +
+ {isSendingVideo ? ( + // TODO: DESKTOP-8537 - when black bars go away, need to make some CSS changes + <> + +
+ + ) : ( + +
+ +
+
+ )} +
+ ); + } else { + remoteVideoNode = ( + { + setHeight(newHeight); + }} + /> + ); + } + return ( // eslint-disable-next-line jsx-a11y/no-static-element-interactions
{ const node = videoContainerRef.current; if (!node) { return; } + const targetNode = ev.target as Element; + if (targetNode?.tagName === 'BUTTON') { + return; + } + const parentNode = targetNode.parentNode as Element; + if (parentNode?.tagName === 'BUTTON') { + return; + } + const rect = node.getBoundingClientRect(); const dragOffsetX = ev.clientX - rect.left; const dragOffsetY = ev.clientY - rect.top; @@ -289,6 +448,7 @@ export function CallingPip({ }} ref={videoContainerRef} style={{ + height: `${height}px`, cursor: positionState.mode === PositionMode.BeingDragged ? '-webkit-grabbing' @@ -300,32 +460,96 @@ export function CallingPip({ : 'transform ease-out 300ms', }} > - - {hasLocalVideo ? ( + {remoteVideoNode} + + {!isLonelyInCall && activeCall.hasLocalVideo ? (
) : null} -
-
+ {raisedHandsCount || callJoinRequests ? ( +
-
- + {raisedHandsCount ? ( +
+
+ {raisedHandsCount} +
+ ) : undefined} + {callJoinRequests ? ( +
+
+ {callJoinRequests} +
+ ) : undefined} +
+ ) : undefined} +
+
+ +
+
+ +
+
+ +
); diff --git a/ts/components/CallingPipRemoteVideo.tsx b/ts/components/CallingPipRemoteVideo.tsx index 951d9fd197..4a5b061e3b 100644 --- a/ts/components/CallingPipRemoteVideo.tsx +++ b/ts/components/CallingPipRemoteVideo.tsx @@ -1,25 +1,25 @@ // Copyright 2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -import React, { useMemo, useEffect } from 'react'; -import { clamp, maxBy } from 'lodash'; +import React, { useEffect } from 'react'; +import { clamp, isNumber, maxBy } from 'lodash'; import type { VideoFrameSource } from '@signalapp/ringrtc'; import { Avatar, AvatarSize } from './Avatar'; import { CallBackgroundBlur } from './CallBackgroundBlur'; import { DirectCallRemoteParticipant } from './DirectCallRemoteParticipant'; import { GroupCallRemoteParticipant } from './GroupCallRemoteParticipant'; import type { LocalizerType } from '../types/Util'; -import type { - ActiveCallType, - GroupCallRemoteParticipantType, - GroupCallVideoRequest, +import { + GroupCallJoinState, + type ActiveCallType, + type GroupCallRemoteParticipantType, + type GroupCallVideoRequest, } from '../types/Calling'; -import { GroupCallJoinState } from '../types/Calling'; import { CallMode } from '../types/CallDisposition'; import { AvatarColors } from '../types/Colors'; import type { SetRendererCanvasType } from '../state/ducks/calling'; import { useGetCallingFrameBuffer } from '../calling/useGetCallingFrameBuffer'; -import { MAX_FRAME_WIDTH } from '../calling/constants'; +import { MAX_FRAME_HEIGHT } from '../calling/constants'; import { usePageVisibility } from '../hooks/usePageVisibility'; import { missingCaseError } from '../util/missingCaseError'; import { nonRenderedRemoteParticipant } from '../util/ringrtc/nonRenderedRemoteParticipant'; @@ -27,21 +27,19 @@ import { isReconnecting } from '../util/callingIsReconnecting'; import { isGroupOrAdhocActiveCall } from '../util/isGroupOrAdhocCall'; import { assertDev } from '../util/assert'; import type { CallingImageDataCache } from './CallManager'; +import { PIP_MAXIMUM_HEIGHT, PIP_MINIMUM_HEIGHT } from './CallingPip'; -// This value should be kept in sync with the hard-coded CSS height. It should also be -// less than `MAX_FRAME_HEIGHT`. -const PIP_VIDEO_HEIGHT_PX = 120; - -function NoVideo({ +function BlurredBackground({ activeCall, + activeGroupCallSpeaker, i18n, }: { activeCall: ActiveCallType; + activeGroupCallSpeaker?: undefined | GroupCallRemoteParticipantType; i18n: LocalizerType; }): JSX.Element { const { avatarPlaceholderGradient, - avatarUrl, color, type: conversationType, phoneNumber, @@ -49,28 +47,28 @@ function NoVideo({ sharedGroupNames, title, } = activeCall.conversation; + const avatarUrl = + activeGroupCallSpeaker?.avatarUrl ?? activeCall.conversation.avatarUrl; return ( -
- -
- -
-
-
+ +
+ +
+
); } @@ -84,6 +82,9 @@ export type PropsType = { speakerHeight: number ) => void; setRendererCanvas: (_: SetRendererCanvasType) => void; + height: number; + width: number; + updateHeight: (newHeight: number) => void; }; export function CallingPipRemoteVideo({ @@ -93,6 +94,9 @@ export function CallingPipRemoteVideo({ i18n, setGroupCallVideoRequest, setRendererCanvas, + height, + width, + updateHeight, }: PropsType): JSX.Element { const { conversation } = activeCall; @@ -101,7 +105,7 @@ export function CallingPipRemoteVideo({ const isPageVisible = usePageVisibility(); const activeGroupCallSpeaker: undefined | GroupCallRemoteParticipantType = - useMemo(() => { + React.useMemo(() => { if (!isGroupOrAdhocActiveCall(activeCall)) { return undefined; } @@ -116,53 +120,83 @@ export function CallingPipRemoteVideo({ }, [activeCall]); useEffect(() => { - if (!isGroupOrAdhocActiveCall(activeCall)) { - return; - } + if (isGroupOrAdhocActiveCall(activeCall)) { + if (!activeGroupCallSpeaker || !activeGroupCallSpeaker.hasRemoteVideo) { + return; + } + const { videoAspectRatio } = activeGroupCallSpeaker; + if (!isNumber(videoAspectRatio)) { + return; + } - if (isPageVisible) { - setGroupCallVideoRequest( - activeCall.remoteParticipants.map(participant => { + const newHeight = clamp( + Math.floor(width * (1 / videoAspectRatio)), + 1, + MAX_FRAME_HEIGHT + ); + // Update only for portrait video that fits, otherwise leave things as they are + if ( + newHeight !== height && + newHeight >= PIP_MINIMUM_HEIGHT && + newHeight <= PIP_MAXIMUM_HEIGHT + ) { + updateHeight(newHeight); + } + + if (isPageVisible) { + const participants = activeCall.remoteParticipants.map(participant => { if (participant === activeGroupCallSpeaker) { return { demuxId: participant.demuxId, - width: clamp( - Math.floor(PIP_VIDEO_HEIGHT_PX * participant.videoAspectRatio), - 1, - MAX_FRAME_WIDTH - ), - height: PIP_VIDEO_HEIGHT_PX, + width, + height: newHeight, }; } return nonRenderedRemoteParticipant(participant); - }), - PIP_VIDEO_HEIGHT_PX - ); + }); + setGroupCallVideoRequest(participants, newHeight); + } else { + setGroupCallVideoRequest( + activeCall.remoteParticipants.map(nonRenderedRemoteParticipant), + 0 + ); + } } else { - setGroupCallVideoRequest( - activeCall.remoteParticipants.map(nonRenderedRemoteParticipant), - 0 - ); + // eslint-disable-next-line no-lonely-if + if (!activeCall.hasRemoteVideo) { + // eslint-disable-next-line no-useless-return + return; + } + // TODO: DESKTOP-8537 - with direct call video stats, call updateHeight as needed } }, [ activeCall, activeGroupCallSpeaker, + height, isPageVisible, setGroupCallVideoRequest, + updateHeight, + width, ]); switch (activeCall.callMode) { case CallMode.Direct: { const { hasRemoteVideo } = activeCall.remoteParticipants[0]; if (!hasRemoteVideo) { - return ; + return ( +
+ +
+ ); } assertDev( conversation.type === 'direct', 'CallingPipRemoteVideo for direct call must be associated with direct conversation' ); + // TODO: DESKTOP-8537 - when black bars go away, we need to make some CSS changes return (
+ ; + return ( +
+ +
+ ); } return (
+ ; -export type SetLocalAudioType = ReadonlyDeep<{ - enabled: boolean; -}>; +// eslint-disable-next-line local-rules/type-alias-readonlydeep +export type SetLocalAudioType = ( + payload?: ReadonlyDeep<{ + enabled: boolean; + }> +) => void; -export type SetLocalVideoType = ReadonlyDeep<{ - enabled: boolean; -}>; +// eslint-disable-next-line local-rules/type-alias-readonlydeep +export type SetLocalVideoType = ( + payload: ReadonlyDeep<{ + enabled: boolean; + }> +) => void; export type SetGroupCallVideoRequestType = ReadonlyDeep<{ conversationId: string; @@ -901,12 +907,12 @@ type SelectPresentingSourceActionType = ReadonlyDeep<{ type SetLocalAudioActionType = ReadonlyDeep<{ type: 'calling/SET_LOCAL_AUDIO_FULFILLED'; - payload: SetLocalAudioType; + payload: Parameters[0]; }>; type SetLocalVideoFulfilledActionType = ReadonlyDeep<{ type: 'calling/SET_LOCAL_VIDEO_FULFILLED'; - payload: SetLocalVideoType; + payload: Parameters[0]; }>; type SetPresentingFulfilledActionType = ReadonlyDeep<{ @@ -1903,26 +1909,28 @@ function setRendererCanvas( } function setLocalAudio( - payload: SetLocalAudioType + payload?: Parameters[0] ): ThunkAction { return (dispatch, getState) => { - const activeCall = getActiveCall(getState().calling); - if (!activeCall) { + const { activeCallState } = getState().calling; + if (!activeCallState || activeCallState.state !== 'Active') { log.warn('Trying to set local audio when no call is active'); return; } - calling.setOutgoingAudio(activeCall.conversationId, payload.enabled); - + const enabled = payload?.enabled ?? !activeCallState.hasLocalAudio; + calling.setOutgoingAudio(activeCallState.conversationId, enabled); dispatch({ type: SET_LOCAL_AUDIO_FULFILLED, - payload, + payload: { + enabled, + }, }); }; } function setLocalVideo( - payload: SetLocalVideoType + payload: Parameters[0] ): ThunkAction { return async (dispatch, getState) => { const activeCall = getActiveCall(getState().calling); @@ -1931,7 +1939,7 @@ function setLocalVideo( return; } - let enabled: boolean; + let enabled = payload?.enabled; if (await requestCameraPermissions()) { if ( isGroupOrAdhocCallState(activeCall) || @@ -1939,14 +1947,13 @@ function setLocalVideo( ) { await calling.setOutgoingVideo( activeCall.conversationId, - payload.enabled + Boolean(payload?.enabled) ); - } else if (payload.enabled) { + } else if (payload?.enabled) { await calling.enableLocalCamera(activeCall.callMode); } else { calling.disableLocalVideo(); } - ({ enabled } = payload); } else { enabled = false; } @@ -1954,8 +1961,7 @@ function setLocalVideo( dispatch({ type: SET_LOCAL_VIDEO_FULFILLED, payload: { - ...payload, - enabled, + enabled: Boolean(enabled), }, }); }; @@ -3994,7 +4000,7 @@ export function reducer( ...state, activeCallState: { ...state.activeCallState, - hasLocalAudio: action.payload.enabled, + hasLocalAudio: Boolean(action.payload?.enabled), }, }; } @@ -4009,7 +4015,7 @@ export function reducer( ...state, activeCallState: { ...state.activeCallState, - hasLocalVideo: action.payload.enabled, + hasLocalVideo: Boolean(action.payload?.enabled), }, }; } diff --git a/ts/test-both/helpers/createCallParticipant.ts b/ts/test-both/helpers/createCallParticipant.ts new file mode 100644 index 0000000000..13a2841ee0 --- /dev/null +++ b/ts/test-both/helpers/createCallParticipant.ts @@ -0,0 +1,34 @@ +// Copyright 2025 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { sample } from 'lodash'; + +import { AvatarColors } from '../../types/Colors'; +import type { GroupCallRemoteParticipantType } from '../../types/Calling'; +import { generateAci } from '../../types/ServiceId'; + +import { getDefaultConversationWithServiceId } from './getDefaultConversation'; + +export function createCallParticipant( + participantProps: Partial +): GroupCallRemoteParticipantType { + return { + aci: generateAci(), + demuxId: 2, + hasRemoteAudio: Boolean(participantProps.hasRemoteAudio), + hasRemoteVideo: Boolean(participantProps.hasRemoteVideo), + isHandRaised: Boolean(participantProps.isHandRaised), + mediaKeysReceived: Boolean(participantProps.mediaKeysReceived), + presenting: Boolean(participantProps.presenting), + sharingScreen: Boolean(participantProps.sharingScreen), + videoAspectRatio: 1.3, + ...getDefaultConversationWithServiceId({ + avatarUrl: participantProps.avatarUrl, + color: sample(AvatarColors), + isBlocked: Boolean(participantProps.isBlocked), + name: participantProps.name, + profileName: participantProps.title, + title: String(participantProps.title), + }), + }; +}