From 1163beae3a76ecc1611345caecce2c1db7027649 Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 17:34:01 -0700 Subject: [PATCH 01/11] WIP: Add Gradio interface for Kokoro TTS application with input, model, and output components --- ui/Dockerfile | 15 +++ ui/GUIBanner.png | Bin 0 -> 497204 bytes ui/app.py | 9 ++ ui/data/inputs/test_timemachine.txt | 151 ++++++++++++++++++++++++++++ ui/lib/__init__.py | 0 ui/lib/api.py | 75 ++++++++++++++ ui/lib/components/__init__.py | 5 + ui/lib/components/input.py | 46 +++++++++ ui/lib/components/model.py | 53 ++++++++++ ui/lib/components/output.py | 37 +++++++ ui/lib/config.py | 40 ++++++++ ui/lib/files.py | 87 ++++++++++++++++ ui/lib/handlers.py | 139 +++++++++++++++++++++++++ ui/lib/interface.py | 55 ++++++++++ 14 files changed, 712 insertions(+) create mode 100644 ui/Dockerfile create mode 100644 ui/GUIBanner.png create mode 100644 ui/app.py create mode 100644 ui/data/inputs/test_timemachine.txt create mode 100644 ui/lib/__init__.py create mode 100644 ui/lib/api.py create mode 100644 ui/lib/components/__init__.py create mode 100644 ui/lib/components/input.py create mode 100644 ui/lib/components/model.py create mode 100644 ui/lib/components/output.py create mode 100644 ui/lib/config.py create mode 100644 ui/lib/files.py create mode 100644 ui/lib/handlers.py create mode 100644 ui/lib/interface.py diff --git a/ui/Dockerfile b/ui/Dockerfile new file mode 100644 index 0000000..0266b19 --- /dev/null +++ b/ui/Dockerfile @@ -0,0 +1,15 @@ +FROM python:3.10-slim + +WORKDIR /app/ui + +# Install dependencies +RUN pip install gradio==5.9.1 requests==2.32.3 + +# Create necessary directories +RUN mkdir -p data/inputs data/outputs + +# Copy the application files +COPY . . + +# Run the Gradio app +CMD ["python", "app.py"] diff --git a/ui/GUIBanner.png b/ui/GUIBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..5536b57564d187999b777cee3ae578f3290290da GIT binary patch literal 497204 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

Kj(pd{G9F^k&mC6p0MmMGLo*2 z;M-UkJUA39{ivJso0GFt>LA9`n&j52b0ooAjK;}#Hg(iZ}_4E$JXfnu-^WKd`0 zE}%>R;h$+n{a`o-Diom!ge9o1ki}~I;e0NF-p!pfZ${BNO(Q6 zqrEUNA+Q(#5*L&Q-Z835Fq$tsn4Oz1zx>NjDKCA=OI+6e{o|%r0{1K`uC_nU}-O!SK+QOFK zc6@3tvuDr-G@T?%1H+@`1Mh!-Iq~G1`PtyLlIboiSNbljK!6pXmR%s98A)S&^!fPB zaby-l!8S*ihqrF^_Um7}sJ!Y`uac2|d%5cJZNGFCcW zZhh-plm|cP!R0ZJc}%(W8MiIlcI>oG$Y*v49&u-fS#uQ#&vQ`P4ebJJg$|c zV?f9}6WXT89(Cka?S!73W54bjfL>zWHHe2+2X<@F64h)w8MMWQe&wI+tU-Hs&aAKlND#3t`PNvnTd@&?^Gq08odu2-U z2wHI5w$rv(Ix2ZYHyFglW+IWMk!Zp!2sYqf&puo7c4pAOZ@K=`_Zm99X_9W_J!KtU zx0jvQyyQBt&0m0H=swHd{lXOd*W64wxMxqf_R6cu*S~U6`RsY0abmqFJG}ScLEGL1 zU6=ZcI+HX*mrM#wYssGX)iy%4x_;UZU>|E}^AB(vtLw8|j^+KipSFt`j~aNpY(ln! zE!VO|hOjvR!C8Q0P`tFRiblx&jAY=1-8;(ze(I;nlb-yfa@V`wwQN)JN$`qaJ|uZ{ zdqp49UH7>jwU2V*T(|z*W*o2*q^-;Lq95qhU;Wizd1V#J1^wqdh;Fb&)?%=Sq$3g_ zW|xL#|D*zzVV3J7tIWI;H~rdK&n(aR&ENFbCFUgy*lS6M>lZg;V}H?=(eJlpnpiP{ z+n8D1wd;hkfA4s?$B+GZx&Hd=Re#t$`e3=y?b#-_?e^8>x6hHdQ3m|Yee44FU=xTV zY!5_ljv4hEpU3Plv&Km;^oJNJ+eDcuH+*<)JgEHTU;lM^_3PeR zre!bk#eUc+)26ALZ5>-C%#P+k+I^q9@QFU?3uaWR!A<1v)d+^TgUQ=wyGR^63xd z&<^at23^;$evrSo97!nmdSFAqGIZ+3mv~@Q_m6GcRzC8PkCfZo=GJ9KF$;c#6)^5& zr|kimOxFP27@W7S7hd!2E6Ybd_~G*ESHIdzxOwb@F%F(r-p~wo&}RmR{ACY*OAesl z?37|A``fS?d`*RwLDW$LvKWu`$^R2O$ghx-IHswR>A6Mq(|rk_$%GO%Ys;2xWpZZP z`*X9*_=_gu9W&Rry~QocgC6{#^2kU1ta7_Mdyo^kpVfK4yiI%xI~)AU*eB@RmGK%f zPiem((mX?61RTdln(xT5+DmN5*J#jNXkfh*?^!*;L@CGGFO8#podGf3H?RKLPU~6^ zuE|Hu%}kZEp8mA*#S6YFyK%$`HWNGmGLDWQ@5l-F(vAl__Es6BRW1>#*~DxoNYkN9%cED7%?D$lFFCE z61dG61vz_Wu{KNjj;Nm?ZRh#m0Wpbs1~zQgwQ|Vn!=R2)=CG835zu_yKd<^{DH+Ht zmW>+%tAL8PszYBpG$Z$jj=F~Xxo1g&cxX|AEWzh^zm$spv1L#MjOD!{kO&k@!;`-^ z252kwGQ-9*9+zEqsoI2L-t3o>Y!QEC1#N7p3*)|3#~7J&g00^v4+t|OY0RdQC~-ZC zVP%sHVL&j_4y=$Z9mgQ<-xJTLkaXFxL%;6>SUCs^1C@rwBa;GTf_{HTf%gml;xEcW z|JToye|phBlzj?VcJCZ3TgPIwj2G8r!pK_*)0w4V!3aZtW`tSN0-c~K*QBAvAafnZ zaIU;n609995C)FVFvLA0(goh9z)PxFH6f*zR37&7uWf1{PVTZxE-x=r(tGCP&Md#K zVDi)Ff6@*Z+2#`vII?u4KyFt8+7HmDo!hrt59k}SNbs6RQdqJD@^TB3GiI|1==n?q zzh@?Aoxto?V$Ucjdctf4vN<&|sp~hDA=w5yeaRNV1o!djD7DnO#-}*wgXLXvhVC)* zHa8=>L3bTP9-U~b3=o>pKbGqQ*fksk^?~e<$_|b2Nd}e65;k;|`l*LEebPVd2=?R< z-$qnD*qFp4l&7}vg$9sMWDwAd$ez(|w@tj_H%rD79`L{ic#F}Zc4@3de&c6V4Ftz2W4xA-B0>7BKy2;WXyJy z{SjzJK&JkAFccfBYq{T_0nmD6Zb3+f6QabBOmj~@}qaVqx5m4oO04`(S+yC)n+Etg?wX3C;5j4Pk6!;WdnvJx;$^({qn&N63}MLfaO3adE_w} z`ojtsY$mc`l)Ny~g$+Viy=0$b$QX~b2+?0qTB6uUiH>3cj&sehZ zpLBjfiNVa&gwDW-599b%7-0~LE6Zv0N?F5oWLswmA zzDVAP)jioHWZ(P{E-9{HkN}^av2^zrdZ_C=q=;xDp-%+N-Bvr&A6cgPO? z!1p2t_7V8FLB2Kw31VQJ_7VpW%X%reaQxt;`ZMR)g-?R23d=9=g2F$Ln9~0B>LN7G z)p~pP?k#V8?Q6^99&=`S>NB5J&OiUtPV~oQKgOE)44YxO*Y&KppicTs8=(>QoKG?x z7@zjU1OpwsZ9L<*n2e0cO!N%f;lTuCNafP!w1Xs^lm%b%5ijC=>YQdETYQ+AoHpII zZ5b`wl-q1q40p}9zg^D$*H@IsJ@(9U)-#?_-YL7w;5UN-*7e5brtJr)Ggnpi0_x?S zwr%D<+YKT6ZllUgJIuf&wjO{MT!Tyy@6j)S0VEHwY71Qwh-F>A>dFZkj^Q`CpTUU1 z!3||hIW7K}Tl12?S=j*|hg3mPfk5JRY>*C%zzU&=33t5x^?Te z@`4w>usrdJPow|`&j^`=kU<_kpAkdmZ2U0n5&TE+1&WnYQv!krUNHiL1APwuxE2hD zAOTjJmn5_--D7F$kc~nntNd!C!EL9%gpF;`!y*Vdfu^cDA56rVF2n6?yc)&o33N+uysLZ^|m*C3j%u0!E zBym8{RSJd2hn57{HT`Sgc#R498$-u7le4QXzoK0FtxMFWBceZ!FB~1uwKK9rpXf7& z7H7jtHax4P{*z>Fm9c}qJR7?J@8s}CM~A)gAbE$eWoZp`ArYZ|`u3``UnyfnVloQL z)ds0RgE9$$O}pC|>e9tt*VMQgST8zdEeDbhqpo4e9K3`s0|PuuGiW(D=XI|w54`Vv z%Afy#e_Ce7$IC5Gy;(V7`!>tr21d!{glFaKMGnzJydT&knVNAROwz?ZK>*M4ZBqgO ztw2)0P5BsSFSQn7Vz4Vlfk{#s+`vF#L_zkUC;h~UGDw2#X0XV8BLw^^7x~^gw#5M@ z`bHbKj*XP=lAS>!10W>Aw2h<{gPt}H zyA@8JXHerMfFAhJKDLwVNvP3>c?DjS&G9+ehyl^hdMz8{;7drL6@64ajqPBc)e6`g zzfD+MzMIYSjl6J<@BiwDufxd^lrSre9k|_XZzEnP;gjtI9jM8k*UPwSsOA5NHvXou zA|B*uMEc7p{54l!UB3LqFO|(|Cy&%1)7VOAOH-gDeL$bFm3;1un>EpS2G(W&+odIVWU^b0m!{IwxM(V3fR8?Sg~Cmz-mS75-&d#4e=-F zz2#JTPd}iwzjH61#=u_0F31Xehc?g@n-;Ro01t9`NPb&(NY^4$#16y*@Bz9zW)kJF z-`K>trMc42v!|-(h{~4qducPrCgzj~ACi0xZ7y4OZY`5aoTaTr5nP#Cm@a+8@?9gc zsT&WMS(P&+U)8TTtMn_5P!hW&9*%4qErVmjWl9P43^qw|2&?J%=wPd&_}?`*mFOkWFIN)q0XBIS5-X*+B+lO3)ZbyzeNcVV zzTzolnRrJ+?3f22IUML8lx@LQV?&OP_sCO-XR!_J^Ed~#=u@BiRC(-UA6tIy>AzOK z^u;ff5y{Y2$qsT2AF+4%Jz|fDM~KB^u$_SjR`|pWvaZqb!6DICG+=*^4lHT zModUzP93@*+H*YeO>MfgX3Z(7iWU~ZP6(rD!9If(5 zwSZACj?*wk1o+K41Tl$ete67iae$z zJ|!9`n}lFU#uev|L-aRkWpp|2QFFC3M|fDiWW%9$(qE5ifKn1hOt{8MC}I=XqhPbV z^g#DxU>FVKUPkeuSqKjd7qfK?;9f@iSZ>WS z5@0l#z!^hFLW6!VvJa045I~GGgChhH3_6i`6TrXkJ?|<{f9kK4m%sd_<+|&xGtc0o z6ZSP^l70g8%`cb{?QE+gQy4|$nl>Rz*aT#VdvI7>ha92v^qH3|p{raAeOUI4gW{QT zYznJ#&=K0kEIvsy$p|mAaS|-xC3w`Aa)wif7QBA|XAVuNpE4Nzho000vQLmh8_l0a ze_6r@PpK0-!Hc*&t06jDXVe#rKeGtfqz-??YsyJLcML=sjg8M>7fuf=m=sCM?w#AL zx72Prs7@dUTC!cefJB-lXZgKkY$`OH8sA^u{_k%o2PDfpw~wqcSU|wdGA`tV*-6Tt zn3#6Irg&+SXvjCOp$!0CLHaT}I^;f&j*gkn=scgjaFVl8IwU(m(6WEup7M!vKjEO` zrUu*73Ts-?ZX7az8wNM%n!}>c0`^(~%GjMXAG-ch*FY`=@ zd^vcM4d`l0m%nX5hBMJmUk+bsYwCuVOiF$z|B&noI-#HTH%>y;R{BDnT$6o7hWxf( zowqF(Kb)uwEH^G>(f#6uK_s6Hm@#MqKd~jqFUbP|CluNq z*=}r7tcY!!kRPCYe>Fn&*5<4Ru099vTF5-Sx5lgB_4ui z_tFwd^2@*c%jGk&O`By9nGC>QPzHSGzUbc( z(*Qe1GVZuUvWyKM8;ciqh;Y{GSZEJ}W}eqo#Un|>r@PQ>FV&}@(xOZD;y zBzj8wQ??ky1kh93z|hk?gSetEZi=PPqoN@%!TI<{&-GyDZ$9@o%2&SfRmTnJ6YYz5 zgMs6l0@h~}v){z9$vb4!(D>XM&}B+yi_W0qte*2gzlwrx=qtyWjb=3i0|u<{kR(JQ zf}=go8jubK#U_!#c|k}7w&AORgw$Ix56lq@_9KW4rwd>x`JF)$9ft@ox)(%waW0q_ z0Wr^Y(K?JDn1+Pll@}dB5R5TKVV43GM!Z-u!^|ineehsxEChlNqtDFG$T*52a&C-f z@)oy|Ei%e|YCn{dvK*45oR+cRvtWM1p$N`1dVBVb+YpUyi{<4Q^9>j}DSrQ;g1r$X zDiZLyg;|$9px*=9E~z}0&#}*&eCL&f4~`6$!wN`w!4tn3^<;*EYd6R?aPP>L5kD)) zx4l6e5@pbK-t0T4e*5F?%xnlTwk%`v?4*Prhmw$VM7V&YClH2&04aX=g1Dx+p#qkn zOzgkDyzOmo70(z+L=I#?RNmOA=p*@<7d;rIV}=O>g|Wd9V8j`qV5I>w*eEbdhX~-{ zCp>1xj9Eq!&nX$40r6sNc+|#-RSG+H?)2w0{^_6p!Sac0)NiCDAyMc?Bt+aTNUsxN)vZMSL&xA;1H1Sj+}7 zBRMRYV!5luSV#hc!6rC?=6vH69dqC#S@H<9%HleZ{Z1m*Y|&qwDgk%EVYktv@Ye0< zS0YQR7$ETdYC8!Lj*w47yvVCbo>0#H#K%{MwYfHVarDzm^tCR2b@$c=a?~v)+`5Nc@#@w zadOiWlYZMgGt?}7-LY+(2Q)}_xEET|HXJ*_6+m!7P(qSOz(JA$vfl=5BD3B&2?mTt zbPrB39RT`4xghk$1~3B4TQ><}SsKinhV$*g@FNj^qI)=tK!U2`w=MG`It(86l=fqv z^BbJ?D0CYfwEwVcU<$_OtrhMwW^F1iRpvTn2K|d!-J3Q;A`$(*?3p=*4 z(jZm^k&IxkSYpKtA1`;oM)_^WUE9&kdQ$A=TmVE#vlVo%ai!~_70+0!IT8jLZSjmeVsQ17@h%5;W6V217s(O0gfst6bR(^%LDdo;)i}|I`NtrWbWTcAQ{kdYS-*;D^Lq zw9q}+4Q5H;yQJJU%`+$}7dc^|k)@)4^hbYKc<%z=W=%i`x_*lmiBj@8_#MIukU+Jz z|M;T7SVdqKinhs1c%xKfL_oI+dz!Lj2ZTuvRP5!K@iabn+!efagTeb zz4GU>MYPicpgqd{eg~3OVhq~uuc4@K*YDk9o6Iw?%n)OD<`q-1QtFVBT)zki)IM=h z|DgCQ?9={+KFO2fC2*sN$Zv2+eu8h-&n-%RnF&T7rQ^gk=>7N3vv0YzdgVn_PM3^wr{eM8qdMuJ4UhNOGwFp~|eyyLCLV~RWJ z&+IJAfM;}$#8Q3Hu`-~(|dJzxll1Q|_>*42#bU{(BHevc*cB z7))k`BrnkmpSuiI7yV-O3-*A)JI7>dEA7MY16)H4fo#|&s~yxKgXVG*SmIBbL|@se zYVnPw_L4o@;*Ea1QoD|GutlD!7C)qs)+_83f8;@|;DtB%o`d6)<=Mr3Xxdkk=O(!5w9$O2zh6EqS*aisbL_h*bI|(?Wdd>Y!u2ul!Sm}RaU|ZeYJV7l!(N)h@p@+3$(yz$6(mCNkp40w$hQI+@bPaxNhBG- zkZ{ch-uM3U&2N6wOM>`)L;CjJ02@u7l@TpI`2G)+M?CaltBZElL3ZQL#;tJg+ImK?F575H;AlX4r z={x73BfmKh{kWg&pcD5)1M1Bnow^B-+(*%vKHzK^_@Pepn|6^<2Hg+2JeR3`5?1!P z7hX?IO?GUO0~XN&pniaXBDYJ(Xfx-z4|~LtrbwUz(thJe3H%cx(BV^5a*UwbOaJK) zpP-^o(1GJgcjSdF$H6vmE@4hG_P+POPjpeRspB{*=ms62D?u2t0k5Go*HGu&T+C1- zYXq)C3cjE}0iK#wC?df{$$bzuQ|plBzy$h4U)$k6hVEV4*;!dfR8L|^b9dUpvrAS4uk{j zb6uZw30ayVs8pHQ4+h9n_W=giXs30bWKu~mG|%$@^)aJid1}y)7rCzrBvqy#)!<_E zLym7$2@f_0{?K*oi7K$Jv6_Sduc6KTWz>P50w-avq~ck6mdSfbxXS(V7r$5@^@vB5 z%PzlMbW%NjYpZMPK*|${%;!FkTWnVzujvJ#Q}75IguLZxXam*|?~jOJTw#0kMK+iO zdt%~%S74!6wDq)8PwmuC67_=&*kA}b>ReHIrE>w4LA;ez%_dLSuC z+{7SRpb|)C*JQsUzLIT}tPl$k1I>7lEmlHJ%C>G(vP~(>Q02=_z0yWUNdy@Lg&#Vk zHps>|JRgvKnNrM=?+ZcJ@o9X?0y#y0v6~<8jj_}bY@ZJ%WsQTJjnedJWJ9E z^o|6a!BOt<45V}yJ*3=3Y`6yjR6ceU8Rj_kV?#+Y(#K$fndwbg-?fuL)`+Y5?Y?Rs zIxt(#bs#*!UZwAznwl%qQ#@a-v(@im`5OB3 z!4H10Jmo1*DermThsp?pJ!&H{P0oVT7ZTgFqsZw-1^vY8&=vkrXV8{MX;@yKK0`5` z>c{5H&M*iNb_u@+KwEeP-?%>@43n3Ot8Ruj;RP>8CO?}J&3OKp>nD^qz~hj)h_!<* z$bs&+oQUq0dF2;s-;%D~DjgeD9J>GdJ>@yS{;cx*zyJH?JJ()k{m&Wd8p!=_EYM!t zkH#6W&){cwees*m78958;%t-$-3CMjzibT$3~iwmvcVt=k1bF( z^ep6D;a5aTaYF#LHkOE0GNYtxB?LuVIs+csWcj?J1JWnFW%`+zSf$}i$B*q9L z>+^?3M%>O(zEh~+fKRlDL}jRNNXe4U@rF5N+2@1iXdg4p~{V-3Hd2cxiC71%C_5C8BF|K$E77mOP65)DSf7#a3+p^_iJ z%!wk!zsUm=9t~qOZ%RQ3&vy`>FhjvJAKW*2aKC3YagYS!^qKy!l$O~QmQP{Kr>7@% zp6~bWFaPo{|D+&wM)VScrHGyxL$)kqAx~X|7NVNuxW=_0Wqxf8Bg-U$Fwkt`L5kD|~z%CgL$zMl5NL$MnO3l2 zXC=DWdEu~hKM5V9tUUJ&j~QryH2j9fAUxp(4Ge5RSBx-0DLnU!yrd`S8}ug`#HjWS z^egb0b%MsAP6kix!y`Kif)NO&zA#hFDCw3hB&Vh9+jD*S>%ac1@;krtymGw~eCmNV z$T{s!aNv7H$3#Z}-D6;AgRa#<9Z|wBhoGj~(K18NNGnUtkq@3#gH}Ad83`CV$Wp^O z=}26MO<_iKQSwUrnJLIodCz8vK;skpJww8Ca|3cV%s4RPvO(oCg3OE@x<_5`nz~u; zMYE@7lz1xuVzmjw$UNW2Oa?O-Q?pZ+3zm7a{0nD}LqK1!uQ*HW!j>^5kfJ&I3qNcV z;fwl*gZHy!qC3I7?TaZNK@K(so5GgF2a51a8i6P;-GSbe2X9ly<2P3}Jn%M->p$sR z1PQ!gW>Ajos~25VKKrT9lvz1+2LZa5StOEuv0wK{r?JtB6gPLtgF zDi_S-c@C(LCA#kdf)D^5gT6c>fR99vn0>I#6b~5OB=F}x?svc-I&9j6oNSiZCqD`=#S_|z&4NZG2fUPrq=DHIR*4OZ zx4fv3nR1+u>(-VxpKlVsH>!O@_$&G8LG@i8u3Yl1ZPZ zL>JwUE->rufqpkl+otUaj&Vc>%dvPw3WzKN)>JW7hV4GHIJD8u$qF#87 zzM*>r$vh+L7oCy-=^o;Uo9(`tf>rtEjcSJ*1$1rOdLjAM!Ib9))4wH#-&qY?<+YIZ z*T_BC5BA}6nLk{v_~s?1gGAiNRjR5MMdx^yTy!MllaTuPasBapFZKkv+#sFfiwY#I zeAR?NxR1}{&GQZj#W;$&4k-yI4%@&tp;Q)MZ}2-E^cy~*2LxMq8~((0)g}9=I*H>p z>pXQ#PxHL*A^A=v;^HSZhVMi3W@_3^0!-d{u9vqia}9b4 zvKqocymXr7{Ll$s&3iuB&y^XG&_tV|)PVGq*>7G-iT&ZztMngno>5|TL|yA27*STu zpa75d;Oo^kksfEPF9H zH0qdU8lRyps~1>(W4o?88N9)+Q5K?3%!{1)y*nzKIF!Lv{5#^oD!r+xS^I7hKbE+o z>p6&sFXdCPCZ>Qk^Ne!8a|3J^kH{>RSDk%!dB(5)YPskuUy~hTd3mh1bIc(6@hx-` zJj&#yo4iPlZyOU!$jRBhg^i1SUP9-W#mZLl2p8W1XJr_sYunDPWplrhYS}jO3cm|L z{N=6W2JN%T6kdQN=D1|^gJUhLPJBYbsJD-mlw*Xn^d1nAHt|I=@<9r{fQ}v^fv^9St$jUy6c>9zvGVncFgh~!Y9B8z;2eey9uiy! z9dPuqB!h1xW4xI0V+NW;G7|{~NtiYD5-jaA`^u~}Gms!OCxC-jB+Dd$Tepts{te~5 z?|yf={E|z(+zcmz!#Gx0kMgb`M*R+FjtPi?|WnIuWbu&h;m+aKB0qj$L@*$y3 z=U%`yEYF4BBnH$?pI|Tb0JPWkR2WG;13x4jP4KZoJp|7Tmc;1yZ29CTKH-@j`iV>- zV+;)Ci@&Is*$uA*paB)cAc1J9I=PNMr|ddOl^$>|g0@X%aw=8@&^GE~brl0tn6uA) z{`1A-Z7K|)RwC?jM! z2Cf?jBjFJVW$I!|(e-L$_%j~ai5 z-obAMmDw^_gU`wd1->u=Qa7^4J_#3}TGIiSk-&M%h#5r5sBI298H1GhI7}jS(~7j2 z*m_nl(takKI@gF69?(K=Bm>lwt2QYY+lGH>L;7m`DSc;9U~|8cbm|^88{)Bywm4KN*2hAdR z#*dPS!5?%f>WlWI|KT2h>#Z+Ud)WuM4+!5FegT_L-Ltd!WyyyUN6Ik0wPj#QXd|G&A@CU*;9ZGU(s&XZSh$ z7;=d2=WNrDc6=&+PxXWBQ)adedEq|LIw2ZCr|wF+h^eTHKGXi;p?Iv!F@|goZ>OH0 z%f%PRCydFT zRGN9wsb?KPKaxK5i~I&(FUg1tDu4!D<9@EA4hCY{z%k-Pz&s<5TjbqKeP!p)?e;OO zSYfpXv?ht>YbUIv$;nLL>;I1dGI#ZR zC?=y}USi{W1G#|!tAlE*gIgVkJ}_%Fw3Dj#mzC86+k+)?`3`i_8StjnG`Km-V&FcW z^=klH)%3EX5@HmX31zenIQ#6Emsu(C_HEnjkXZJLlSx2!FueH;H~l9;MzPtqp)sAA z-R$ca5|DjnSC|oDmXMhcUd)6MCXnX29WQGVotbUhKfbTL?)CqsYk78>r9DvX*kL_# zvJ!ZpqPiWP@J3HBhm>A@`NA)jCq3y&9xdYyp3Lq+3uM^N589~RkxYqa^g(h0t)Oog zkY}7WBmTa`7)fq(y$tjeFCY>B8Tn)>9V3hza0+bIrlHYc2awDnGNK1PkxOVtSz?bM z=*T(BrCkJ|PI6QS`jt8c)D9gH11Be@WQgO15AZ*q7yIysKU{wIcYm*3dg)~@JC|Kq zH&iCU0LSU)l~-P&V@Is#eqLDRtOYT!6;6q^A}bDdtgp1CkvH|f-wtq7@zN(y`wZxC z9Wp^#o_XWA0ycub$r-+F-dFaGkK0Bu@B@%sVMkrQ%0>^UhdzP$3Y8?*SyIj8$Qf5gujsizxLT!1WE1$6=@Zy=nHek=771-VH z*2f!>NurQv28Z@sdtLd&x#yNmazHF$KPdg@8BB%=4$!*9HZSCk-)i$=!g>&)T zZG3Cn@+gFN&>`djKNSN+1Sey%_t>R>dC5O3ked*l38HF!SszeWwlA>;ep{BL81MsK z@bZ2kzjLV>HjBU{!DUJ2SkW=B`=@zXk2G&q%D1S-E^uCfXl*~Z8+qaJACR^swCzlS zXF+Ytxf{)9TVu4P7vyo;xf*n4YsHT_1#{>D@{PO@M0#KJp*#i?(LdV=ZPCH>9RPY3 z{&q?Fwy{i3lQ7WEr7}G^UdBcS%C@0_a@|!|l$Zb0-RBG)suUD>&7n{A1orB>NArOT^q z%MS*mOb|c=^RkCu`^MMJ`$&2Mi9hKhGk-?i5vXI_D4;A^V6Q*{*~gD`WLf+8KDNB0 z#;a58w`6l<7kCd1!92+kGKbE!f!Gh5fNda7Ft3t#LY}dw*&x0RUy}(V_Z?P4;u-t~ zWm{-Bfj@eW&*6IPI@pFx%0u?UzjQHlBmC+iCogPSLB=)`2xcASZ&dI8{rlVpObY!q zsez_1vVgLOqH?p!Mxxw#z8&Nd!8WjxVn{Ru@k0PKpnlq%emvjZbKt-}`Ml=QJRt)R z0D28z^Rj=?XmV=Oi7$Pk91_*E+3=M(*)g;1K>Fhvm_4R%o10Gz5{J+(ZjU&dm@?u= z>aP6(^d1@sI`a-0;smI~ik6Ay5hQfov4xNUVXrO`Z5QRw-*V2I%HO~E#pU{a`;KA_7 z-}i=0x(`Gp@=fi=!y9#PEdNH%#`lkV2HUZa(2t1fxZ|_NXH#b)eQ(?LeCa8A*FO-C zhR&&7=99`A5nnI-@|Vj~fB9F+Rae9pGrT++Il(@z02weMJ+5iOK07(cA z0O3KHNSM83L*-@X?HF}mG7Ms*lGeChAekjuW@d~wQa%bx+YuPH z2zJh>aEv-xVutYeoT$kb!8g%lfDsrBCvCy_+M()tMvlyM1fdZI->d5|3K&0x41t9y z)XVQ2g^GG&)ST-HCX-&2)iGGAKNZif`PX$I$J=zG9*i$&!=dt)p~?l=MB9%RSeAk2 zDE^F+tAq%4j|~`+9u%EeQgOKwpmRU^u`<-hk{|U~G=#3uj{fBc9F7gz@CIQ779)$C zkeJYCu1Cf&#DM$J^b6RweVfaMCVugd3?Q*nI?VzokL&xADv$Qeb6!OY` zS020e0^GfOyPtE%X-tzu>VBR#!}PGa;SYW<5^4v@!z=iB@Zh9rxqsh8hgQ&reaeDH@R=v|}kK!iS@f8P1!n_s`!w1Y;-3@RZ3dD@L_wl1L)lEL7e^h-X9zz}-?eD<@SwGEh6Vx2r% z4eCCw2l86_hCQaO>|@*6M|b(1<)#dKUvfPsek_QVv$}p>Me!9clC~w0WrO%lP{Rxq zOaFMm6VH=ELukjbBNT@`+wHIJ>Vdj%_5Ml#A5u=iwSXB6>3G|g+R3Nm#dl^*8%+$g1vH$+h@}_gv$}(% zO4kF_Lu}!JDk1ym9f=HxZ=(IQ(JLlZHf^N6AnoE<_JKCB4ci}+Vc1^IQzz|)e(bwW zZT(dU)e(J+Syj$6m`vZ8=_7{c808=)v^#8jl$F47e&YiHc$of`wh`Yjn8I`D{KoE3 zXXlw(od@6*?NovO4R4Vfh>C2*dnkx8lp`Q7s)Kj#{QZkwsJMVnvoWv|U*Mrk+Qss0 zzEXhfaGaPQ`+(n}oyZ+FF8wITK5+-_2id2s#K1#}OU!$Y zW=a1J$>!I-`sMPQ&wX~e?wV`;xCiZrF6#lV%WI)Y#3PY6^(rG}f-Uly_5ozS4aCm$ z9iShMQ}vqxb`@g1M&6Jgz&=&}lfgXbZu+Q7zxP1DyArvghvjgbG9y$#8k=lxm0pA(5oAAsM2(pR1g^&QKr%lJX#~F*0t<@j0ce9qR}c_yBQd2v z2s6Pe&!%{}gP6wkltW+|h9DALjss~ZT(0V&pBQLq98QI0Dct%l9kt5jY*g z&^Q>b5)Ii<<+u6MrOa%uVy`PTu9`so3n6|jcv`)UaN%p0}HqwAC*^u7QdV`O>e=r5oD zXXV1rUr@FwVC1cpEHS|lBM%^QL=sGSonyK$>tPFU9lw!-)R#2iED4Tee3Kmj`#2Zw z_0lWKkt{68SklG~eUd%N3q0p}WaOCZkP}uJ;BVX}9LmQGV~uss`bLz9Z9(RE?u!?x z(FYzYK&ME`nL*~Ifbc)xY@4(E%o5=6Sjz0=M|D#_br49y{}@3H`{t2S-G{u6ZIP2x zFsY`hog{2>28|9tlk9s99A}A=F$GXS|06&W?ev=w@oTTWw(KV;R(uByui&Py(x)u(5#e zRUi2D4bPvl6c9ZH^BHB!MO6mfScW_j2jxIBzhjVAHjGsu zx*=(cUqT*1;yUCxWg29l2t6Sop=@N9lAb5wDm*#_w_tn+I)j5S?ShA`C(U*oUAMFZ-KtOvzitN2II7 zC?v)7gR;2}y2F$HzK9ig?8wlFH1P{{Z_>3_UUhl-tLOiP;)|=wA<>F28W6X##isJE z4`@x>h=H*aY@ssm>ae}V-ihbPmOmfpJ}DU`$!_EVS&VlDFsKmM%r7Wz63wP%NAL~g zFTCH$F%`?VDO-BSH4HZKRUj3wxI%psjSoz+oL=qFy~G^E5R#6@{xblQ69a*@Ee8|0 z7Q0WLfc?du5`XaZ2ESWJdj0YL`e=F6>)+_u8oQK(9to6@WhNinknt-11)B-r=W9$~ z1k`O@4Z_9-d)Y#3`p$1+3=hVD$c1PJP&SX@d4fsihil+V4QtkpG7z+*z`bBO17dUq z#@mrJ#-|1=wG@zRz#9q}Na{qf=&%X91~GBYqMHp8kVY^O0@VnEv)}%ns|*pxGN7gn zB$^;gerBc#4ta~;CMAy3E(0N;Z0?~96qlq30m5KlT%pH^3;@9bG_k>Ln3yzjqAYsG zzybFk-B;>Ec$uANpStL)lZHlEYoT3>{$7SEg0ZxO+3GqlSPx*#aVS?^^3C#=bIx&D zyo!HvB8-(^kfHPRl{PZs%HRwNLV(Nw3^HXI)OBru|Iim?pSsvm9(^Nt!w7R6n!+;z zX=s8mIJ9`A{Kwnh;Wt-fw7%OQn`ca*4O_PFC?ER32g@7YaE|&CGcy4E#xcV`j4Ype zOFhB?lPq8q66h<=n=O36NYihSeO~fJeY^G!E-WoV_L+epIpKT1IGITW zzq}3d;6dI@9driR$Jlsjz2uJ>TKL8>*C&2bpZP7v75Wu2oMrI4t-~2$0@w~dp|+@g zzWY7zDeryndsQxpI0H;LSlqSB(0RY?Ne-NEKsta|TW~(Cf*^>ZEc%NshVF-ac~GTl z18qhxp+7Q{15fb53Ae80c^a;R*3gV|1R3ZeWuuSSCk7Dt4dVDIr^ZY)(AE4+d6rl4 zg(Ml-rYyF+;DkpSA}C-b4FiM)9rx3wT0RnR2go4(Ucz=@!~HTF$(j;R z23)9{;G;8hVx1#IUJld^&~}_`yl73ob?wDpyQqBY8y9M4Bk}$&yu7{4y`auW!khHLEksLB(e$ho2m5+YxV=A>$ z#1()t>o%F)0Cqq@ z6if0+SXe@zZw6O|<|)tZS{_-$-*W%RFSExW`)dKbOQ?gI^#cBBa&p#>LC`i2aEoNv z5bB4Ie6DCo!798X5Qat!wmQ&iSkaKN^hu_M#|E?&pCw}#UG&xRN5B7j<-#w1-siJV zrnhZp45H#s+0vivQ}U(;uFHV|be=1CsV4HuY-a-Ha~(*Xl!cujfdY_Ime6+nX(Zs8 zjNedzuh<+XIKuBXv~}atpZ=5*Tk%RRWtPOFIj#uNgG9Vw(LulL8iQ(J@GD899XBx!jw5%E4yxk}iCuN;dzk4?0eKKq7-*K)%3s@ZSr#E@HoK zOdGro{l$0UUs$DtE?b_p?o1Ns^Fr+RXLbN1FlMH1^Ar9I6X{ zw^1_0z#MNnC!r=8PMQJuK>RX;&@7DxvOa+F0e`lN7sjfs^o2MA+7d$%r)4~uv&giS zYkhrV2RMekhOV?7**AZ5J@wSI$bQ-Xi1+Z0HlZ_I!;)fjkL%o?DF#UKG=n2-lnJtj{Rh%6SSrprIR`0vYAS6(jq zb?r_9@jUH@C)u7FparYfsK+#cKGFgB%NIUqw{s}j69yQPHXe9Wxy;U+W{O)U)rWoK z6aKQ0A8!!dnBbUD+xIJ8V^HJZ5SotIdjw@GZ2%e5*QR9TIxQ zm@w^P4gi7PZ)_I7835!ZWy6wdeG0T1Mz(Eh#4h%>x#g~*XNqhDG3P8aaD}pr$z7jwvJ_HURjI|LY zA@VYB1V{S_3PAwMgrM-d#$y2syvi~&8%8DL!E}&mh(U}1%YjH9)&hbb%H}?TM}#7m zcH-O#0thw(XUo=YTU|cav&;iPANg&AEyKw^%%g0;?bAiek_bCg0#<^}2o^ICOC{$R zxEet31cbsfcxHK^sNrJ-UO>CNeS7!0t?&g$y%Ma{7P$xgx3RqO^=~NGedjx6L^L5# zr(L}G!-hdJU_)vdks*OL5>lKDBVHRA@fXy=0gB5xcX-XL@4yhV$8w%3V{%%7tj&`iHFKzpADoj> zpDp_jOcXxuOn((P9=BSSI&^T7S`%8goEoRD9gKXKy*@oHsd$ zfF_iaWpVA^y?d3oZ76dJXn0G0jGoKUNsq8mT+4UL`PMYax8EVK22eM07=vMHNV~x3 zGy%@EoEhIZuYtO$H-R#6Na$B0@{c}b*{lS>0b?s;R9y*?oFOme!`#7p>;i$`a`_L) zuOEQ&o2Gq@BxS26L6R5GaH?O}H=f(xpk!{7+T=Hks!s{aZ9pXP1h|aKqw62}zz5`v z#>ih%awM`kq1L};ut^u8DI|L&q#$;NWR<1;fof-Sycfb(H%jfG zCw}2h`#K#Ll^X2U1G2wqgXBo%uquF;+VEm7W}*lCW6;fmSL!tW4%zq100(24E-#Xc z8TY6KUp6zRfSYWhUwWf!d6x6rS6^8^@V@t!?_7Je+sT!Dx17%;deBB?cWB=rkh11; z*ayz(T4t5l^1Od1uF!Aa$9Zi)AQB{eiYTD+Y`@Ga2LEJB)CLBWIyOLk_29649?0OC z5gIgfFgCy2fNi2Z0OfzLAnfpl^4SYMuXZw!s`fBK(|}1O0r0org(TLXX(=QzFkf^F zh`+#A@lG7SDZR17=845n*Ly3wZvBEsF?)(lMK2iC#lQOVf@&Y}7|T|PH#pC#BWxVL z3S{DAEx;!8h)C*l)E~NtO(IbtX2ce+$n!`8?((1@#*lgjkp>dlX;cQ=kj5QV$ZxKwMBe;Znd$(EgIQ&O7*ZBIAkn~I0mwW3CdSKnnOFp!iW$w&t&U7L81k<= zgvSb@Ytb3#M!bhFaeg9uKte>4%{RIwY4T$^Gu`i{z8=I>8}})8V4%Q+tKh3&{YrV) zyWUmiB^%hPHc%%qDZFIA4ah99F7cQjTSSfVb0%_^2K7#kalP z?aD(Q_VDsszxmwqg1`N%^0HUFti0ltXO~yL`c>uMUi;eel7Icz^4E$TpZ1JjE%&+q z1Io=$JI(h0JA3z(N!15Wk3b*zsyeN2`ibtO3;?!wjmSTzm)j(G6}AH2RSj4L81Sl*HXv&^6zBqFU?;HQIRV0Nw&cIF zGfX1Hr-bP{gH-6YyYHMTz+Z$}3Au1k44#ogN63hOdDxyudlTqbrbuVX|5C&A1GGZ;1EJZoGDC?8_dX#z47Vnt|}?dLYtHrk8AK#&?u#0m+z zcvb~L;5^O{<-<|&U^+=0?Ew8izqWpEWj>zq0C)vH$^~%mG_%(#iy2rF4IDbkE?4Sg z17nO)X0$RL1~jHl>QAFXu)(<+Xft#sab_PurA`b(n?8<1nr$jmDip0H0OF(lF;Yn2 zzuY*q6|fBi6n*N~{;RJk|Nf>oE7(&(k_s8x=%WX(PlOjgH2yJj=`w` z8sI!q(J3zmJTTyqXkwVT23k64XGTL2745#$859&W}E@Dga*7KabpN3x5IV;8|e(Zp#Bk#xwn*`GEs`SNc#H z+qTv6z$Xz7%8_6DopA;0i{-Ri+^RhHw*a_6N56lkyzJ~(miN5x1La-se}8$?+y1@0 z<_)ha|MJq8mKVP0h2^EMd_{TfId3d)eb+n6JKp=A^4d3^Q-1G{pI7d2ue+6#PuZ=+ zYeDio@5F|YQJg*rH_MyZk5NwXUgzNLu>y$^&JbWJ-Ip%Buzc=<&)V@ayFnmf6!85- z>=3}HGs||kW^j=26EApaDZx44W=8gs2Q?r=$PM*E=M2*9G>|VHV}EpnM>EIzzd}g-Q=Tt5)$-=;+i!0HFOZ#%9ttu+85`hh46({$ zZkFp~FoJqAh_k&@Ic~pb*h!q#Chmi8Tw{Bo_TbCE{G~6IPkiFzZU`Ou0w+xC>eigVa8W~KpX&m(Po_ckH#&pkok%oyN%3meMkzwiaOQ>5t7BI685yC@lT@~XBj zir2ENMgW=3-yr=CeU|*IkMZsRooRSPJ?xwAO>E=@Ucb4YWG{UZ=SX&^6$22r@zoNx zyd@vG0@pJ$jUUYzFzdJeseJ%n7htv!8R0xUt>u{|*L)Khe#JLyNy6w0)Ds^?7h*%+ z#EcCl4g#=Sys293#;919Z6`z%^neo#YV)`U$rN#^<2CAS_K}`Ceq*1PkfDRv2kN39 z*k^z~U}rO4V{n6OS#r*Or!>|Di9MT3= zYufVyGV{}SCLAvBe)l{5E*JM-7cbXtVtvuA@k80y8uHoU!6DI7g-lgfOdE0;dNBQJu&M)s!^8c&4_Q!wx$ILHY zp0$5mz86~t&qN>k(=$F$TWD{M$*26?0S3n8U$fs#Rt`x2KK!8%m5+byT-$W&fj2i4 z7NrAAiZNMA@8$E-lJqwWu6tlsa@MuK-NEj7^hRxWE*O2S2kJe!s&eu-c9ioB?y_Q* z<@BDAk*@97vDLhGT<($p>29 zQ?kMJwFxksb0}2?mI)gfEpL!O(azuH;9O9`Mj#sJ8klg{Gsh@njF1JfaZm)?PP!ym z7%Bj#$}-!@36^lm;Y+{?Vi;*8h(_764-C+=g|xZk0^>BPfNy60u#|JQOe#3oujG`s z9?r^;>^rdEZ}%OaQDU()uj`aRO3>#P=gOo400Mq>Neoj$NOGbCbAE1G0;GBvxmuW$ zTp(0xw+w5{;vVs`Ip{)rNFHd@jG~qO2PWM%oH(OW7*$3^a40+rLz@9;F3QNz@Z8L- zmo|tL>NgIGE5bR^zYZTmzf2QmLJX>{_DTX*S~Q|*)|wP*a^DoU?1>IwCKtf zMMU6PF2XmD%~$aU1;Gh2*Z{w&2O~{#i~{w^*$`A=Yzg}5yDo8iF|g2u!~@5W12mMw z?@gOGD0%&?5d+QWB-vxs^`uHcx+urfE@^epkoa!r*^sI){T_ z5PueBln53GuoJl__1DgxK0*72{uoTJlEFxFhpru0vhn%Pecq0gJ_96wEdA#BL_Z&o z{7B}JeZK37t}_aZVI**eZBx>5oHDWmWdMoRUrf@QYDpWQ1qRCZ*fFBx-z| z?*|_#dk;+TY1NKhMAm}G8=cf}3|=y0po*+FiMVcNkT;6v=okIR)&K-v*?0KL5+j~H z<6Etp4l`S=#8QZ?Za{_!B-AeI%xA1fGNxv*E#Q2a5V9&^g4H#m4aa#|TMkeiI5??R z1U)EclBIR+`S#EJbRAz>v7 zvwI?$u8kMIaGYcN$0zIz;RjBaPp`f5m9O%Q!)6S0BX{VfL43iwr;K$W^bfTDH~I)3 zKEj|foWvf9re2Oudv%@8V^afEHa1FScWj{c_a7XW>@gT9dg>~A35`GkLkAO*Ph^~D zPW>p0d?z|aYehcUMwN~aQI(UDmuUrSybXR<$vSdK|F~vJvO=@x@dc`nAeE({&{KQGRR?Lh2z&OXTIA?lP=z)9Wiato*ERq${ zjvDKgE4^@Sfc`axJwR_Sx$H98XZd=`2KI76G^)vB8t4`tOCZ3;MU{ zXFNsodFeefb$k!n10{kv9pjDai@Ii7@;amYCS=E;jBZ!?%#Ox)%%L&KG`;}&R3>42 zH>)yu&Xmn@>F)lBk;)?{(+AEs47aON*@y~tDx1%Q%=S?e)V{l+b=Slvc0kLny zHcAHNi-~PA$oF80%Ez|4ZZXc!!14)K`6|kI~g-qipe<`Z*&TKaMU+@7bT191$xeGU&=oK0abbK5kb2f_CBG zpzVap<=8&SJxF}IUw)H*DExGCPYg~HsM}PxEVpzKmyX;LPm9Hdv~ga}FB(~9)Mi%A zAryW_xuOkp5|hj)w)iE_B1?O@hVv|2<~)1{H_E?o?nB4Q;_bJc+%fBw~|KNwq zd7t`BdB!uJ>DU~*H7=h%EuDhr@PN2{PPTD=MzYs1i%AE*l}-}r@3YIM`zswf-$tFV zoU@&mpXZTIo=dZIO{0ZM={Z@xM@~t_R33iTAme)g)3n+kni~ zmV@F5>0Bn&OztM4hxpny;7>hJ+5E17&z-SqjqghD+O0voRQ z@@IOLArPklD$x!1f4~FcO`DB@XPF8GVt7~{;}73!JGNs-`R{W-CeOgAoEoqDG2Fa# zz@Q%pB0vY)0P_%1j2{Yis~@^+bEcH5F8g}3*Bc03?8tDG`py3+1A!aK)YE?Dm&^O# z|3MkTO=WCs*or_>g>p0dWW|wUa*T55C;esSn-TO3Kv;(6=eooMFDsN16XZ-xP8XS! za^Ii4ziK~H4k%$p37Lsu6q0L5Dwvt$MHsvQfYD7x>gX@8uJ=f%7(T3ke?W!Gax9YMg+NP7mi zjFr!Q;q&E|r=MEpWF%uHf&?E&tM-`I4WLZSPNaa3ZP`)|Tz6ghg(p0roPYi&%XZ$f zZ6#15E&4mymZH@_!VHahkpari^Bs(mV%&L#$Ik$Z=3e40rNQBF9w!8JXU`>bO&>8@ z5-IN^k30`Vc@B!Cup}Du3x~>C&;0fBXV3o&E4-5(5v!9(uMk*7_q%;aue&xweDw9fNPTIXwyi?L7Lpdm83w;Mi2F!c-N}{)*z!-VN zK~p!69iWd4NYQVC(YZP4YQK`{t=rY_xw3Enj3`&i1Agj$<&TsI|L_mr(RAN{EU@%Z zbdP}*oQRx%BYzQmi6)|dz9`9dKy@>+E8*}=Itl94S6^LT_qx}WH^1f0<(jLnE!%f& zDKm1$!!oWOffr!#a4HGtUIMfMaG2gUzj2bZg?cfLQ*yqKc=#jA-~Z!3mlIDoQ9NBx zTS{4+ohlE!|NY8kmt0atCBp<}1pL5&>Kzh&7>t-Wa8R_`B)VWZFxs?Bv{V@jQi`ox zd9hanSiBqsUeNzO={o~E9ETS>wr+E~zVxN9mWlBLb|}1vje9AXm*O}WQz8dsf7(Ex z3?R?Y9(wx4SmFhBkqpjE2mQ$QwVkJ|cpgxei zj*aoDk;COHU%IgT*&qJz@~w-%R>l~Rk$u8;5xmh31~u{}Y$WB-h8YFRu+9z3*3R+B zfauQ5JLe}Q*95A5ff-SyXocR=Pl6>8+VZ7~+#es8ZurGrYA^kQZ_|<=zVSP&wji6l zKjGf@zPGN6_gS!t%AkJ1OXQJlLh>sCU*Ul+_@RAdoq=dR|ckM?O@}{lJIHrQf`~eDm_F-Cw%8RdUF3z>O-OM_`Z*f=hIBQ=j~j zbR2n`Az*8os_vl9mhn5DaqBWVIOL`G$OKF8pb4;L%c$vM`OtRP_T4%*R<_AD`JD=6 z-W9ME9lx0`{9&K~`_5<2;4cF%;B|YhFPC3=MY;0ZSCxw{zSwr1uSKf+Wvk?K_qI_F z8g3iiTKYEddAL{sfq#a-m;r)e+d9b_fL|j)!`Bl?!{3;h0~-4z8^ItjfgSSrtY@B8 z9{#XL>X_tC)ZkN!1j-(yP#vB%(Y|dQ=hQ;eM}9&ArRz5wTUEvazJDjunnbLZLtls30*|)?|hfLm%n-OKbNh$c3T$@ZxlZpIV0dqh?m`9 z>&0!A>!hp|7-n46f%f@^&k6K3VV@2vu)fDn+(UAHxLm7vXMA$P zs}_kxe68AonV@-)8_YJ(>NqCGZ+@1vp*t)c$A-`h^w9o)aKwok$M9Fk&;Gr8%6)$F z&gB)aI=ftR@g?O6KmYXd?L8A^gYG#%A5}h|)uVTysxo9dXcv$iM7roXZG#TroZ7)~ zF8B87CMG8QiO!K>(`nD1yf zUICMnbNUT`dGW1mkInDAr<6r0$y^iT1*fpp z(RP4%x{jMTV%~{HY-uBqK8ux)ht<}LzWUYjyyrcyoPXYVA{U81gIG(B7to`v!^G4K zgz}AS%2e#4c!@zo_@|BAk?)*18W=uch3&>N#pHv^ee2ubR(|}R_q5xsA$G4VAmT?Ro z=~NjREK%oXFOOOD%LzXFxzCrE{L9PASEXnSjIiWngXr|{Z+lyL$j>~u%rH}>_CV{E zl4N<&Jqoll+tHLr2$4_31&&K2(Wq9_vBMfE3bRQIpwZ* zyK9+{adR-&(03(>?st{7-5*qJB_Kd#5XK3x6nfjpSowqB`JM8zm%LQ!E~Bd;jlhao z)Pc=|<)D(Z;jv*qhXQ@+56=W*+#F#n=DJmVQ> zmH+(k$JB-+avZzdM(FD0loh#Zg9>fD-|S%6&_@h3K)qbYbKbX>p1tu+Zz*@a>z&IX z$vOf5?8N?Z&mX@>x#Y5Mm#rf)%YdUoW^oQ&$73rZU)i;LOS#4Ar1MZa(=)D4YU3Qga!ZzIFZs%NdpeThM^MLm!s%k}yFx0*)8H=|WS+!xBQuElnX$*NPy^mCt6 zPCohMvO~80j(3b?n*NE~;-j3a0|^EIu$|J&!9FK_@`aenLUS1k;tk%$r6JJez}wGC%NHy=mYXcp79Z#m@RZ5Ch1^i7CNC1IauQt z?x;MjK?YcchiyYQSqAB)Zt{lMm|y^?cVOcUA&(JQ(9_=gde#hILOkaKFwdIOy_PDQNZ<9<*zC@cr-Gi;ehT$ogrJ2|L zlL}rZc!O?B&P3w!*hfFA{Gb2xXJz}=tx(f+>UTiW1Y$z3{!p3BmiZVr8X`de(oX`` zd#({ZIMzL`P+SSVD;9s$IloWfy6dkmfA_a9D6e|WYy6Ge-CKsr3EQ`pom+R5Y5AG? zxf#C%XjnE7IiMfNIggAGF!7t`HU0Kl(T+g`9^rzA0nuJ)iLb%$U_b75*SnNwJ?qz{ z@3*qtn0&Hv-m3rD2Pe^{0V_Ph&M`~E(qZ1KK{CxFNDqI=L(3(Xe8ajhJv}8IlgwD2 z3Gk#Fx{rN;B%0qtvfGjp9YMBY#mud5b4L05m!4gA-|RH?M>d!*5D*lr9dS1x{@Olb z=XD-_!6WftH9+QTX#YOm$u#XE1{szO`p^eIRDSV^PxinLEmx1EN8JKx3i`;`JD~;*U%nc`0Ohx@zPd~v9QO*U$*Bo1QN<1rPxA;5dV&okxx(g6 zO-#s6_j%v`PR1Eqf^Xz^zhwQ0bbLVm{F?7vUmo+Q`psmLCQBTKxoWlX{`zypopBX;+?{ReH&U-jC5^E1)N zB+s8uE=Wcs{?>PBT3H11$TmUe(Gf$OHxD62bKJ3-esf(uvc}-d>tFx+^2dMphkhgu z((#(7A)O~z@Rv~ZM?bKY$m#;CVO2)Ne)z(W%Pw?j&)tWP@Hj>(3##wYXFj&PK)#hS zS;>RkZ&KVF{vz&6-?36My(HQ~hr9+|O`n>{G-AhjbSPut8mv<~Pizc5_{RTX#Uj7{ zYfmp<{``eUCDW{MjKMwRNimAzb#lLZ|I|;FKmY5$@f+Tm6Ivsg4xnHR!_WQPLWATMMo(%WJuhHsMS{Sp&F_fRliOSz7`*Co8&-rN0B}J4^Rac(jIcL@5bm>?4Hi zf91;;l_x&&iRF?@FY_B@H^}+_`CmN0{LXWqD?>kNqqkZzO@e~q;`t9={Peg-KC+zm ziBDQ-yku4FvO>#=?U>E=bG~{S;o)>|LrjiAg7HwAWxNq-)a@#X*UG_^BnHj*q z5%4%Mlar(@9A!W#V*(DFK@VPa@83fsPB!OcSTQavSvoj9TmJW-{7HG<@BM+4Lq=8x z5eK^(MEAS$n|$s<$mL4lrED@PjP{}sWz` zyup9uac*g@84XonAfu4Fzb}7jfuTvGp}f|`ACi*?|*M7D9w2b2IZ-0BQ3c;>7oZ8 z{n*FL%}%?e+Q>j0t63z|Y7>d*paPvk(g&P5BgxPgxyo4*+r>t2qi&U}|FM7Y>$+>N zD^LHmv&#EF{9*NhnF%>7UGN*f^;@=QjMQf`&Hc>0;b1bECQ)Eknt?!Otv~V6kCcCY z@r%nP7hUYtJUo&@@Z?nxqA$UkNa|T4J4Z=96kuS7_bb>pNS0`$p9j}Z`m}HVKFd9Q z@uzjvmUNH=F7V4fO80u?T5W{qluz3!pR%DRt5irr@m*u1Tgv(8f2y2x^P8zgc+&7% zd`bFs_%CQD)9E*;9~+E~LEbsW>`W%nw9V~O6Em5nFX+v};!L^fnk&oeUiGT-nHDB zUh#@o$dBz-U^r>MG4M&-=!0bgd))Lj`->chpA8w!>oT#h-4RcrStc6zy9jXjjX95G z%g+^xbj)5p;qi|v7k}xC<>XyE%4sK_pkQ;-UwiO7SyVUI(g$X%SOLd?3E-Ek$)<^z zO)?E1qitz-;SYMlKp%3kLw^4^f8#mjfe(0qd`7fCpKn#8rAx8G46uB&tWo7>GR@#E zFF>2zf1v#IPycke{PIiXTXRO96-G3N8El1&DlaD-Vn#Z61t}QN<2=hwZ+7$3%gbN! zZ`SFl`DqmZpBmYAOMsv|v)afOyg=RubX^S`t08Bm63~+xj(0MR4&y^u{le1DKaxMi z?up7FQ|bdvv^N>oof6$s_7afCV ze9?fSvV`oZ|2`}^f7@H% zTAp>*Grby%CDIJe#`DJ!yJ9}!7yX51*aG?s4OnW-0O73SMB+-~7gm-WmR`c&xrIaJ zFaGk+%ULR)e1PS)w&SufY|TTpEoC(0hqPDpjW%RLDr(q}6@ycR$HwDF@UR9{*4-Du{jn41@!z z$Kfq8U8#q0KI#^qp+D_!_(7bKe$)D-<8OWQznACyhT{7J2h9G#evqiVF3z_T!*{6W+aodIstiCx^CPdd=C+sfoc-Onj9d36!@hnyYqkqA(xG(v) zS~87ab#B0K(G>n-dlPa(VkJ-%Wx2~_dO&nuQaJXkD=f>GnS_DJGab^ zkW}#uCNjjcX3R8j4CHX-rGKI))M0&%vW8YRJv8FK<|M)R|7 zmf4Uj5UB8+%^7#NeR<}ypQZAc#nJr|_|JXz(@sQzEneqf(xS(%+9kd5Ud!5i*_mIy4z2$%?Xd6o)(aXm{Z9{TV{l&w3q+aN+4c!d0M zKZ!Il3NRBzIiBTKoyZg5nSSjaf`{r0-$h4Zc$SkTF7JBRJIZy}U8DQNOVNw)XEm%1 zc-FBR)YpPIdHM%ld)>9=8{hc4+KrLhRA&5an34?Ip~m^M7syIuIM`wsZCn%#$8+Aa zA%b9ug7p7m4G92=HFeW&Nv8t(jb0+g((W^Ee}{6{yZor63@1s6n-q|aM!<;URo%!ZWx4Gt zFR=!AjPqbsf}My8Be>Z&zOP(z>80wk>Qlmkb7O{x0A;i4BdJ@EebS|6Zc=hHw@~h* z;Eflk{r2zvUir~`{6rbvy3Io(=;E|!H7U8{+3ra>0Y8gp-COW%*n)@zdf6$35-`h7 z(E4H72?9Lid{BWm&)<%YY$;Q6nDmvIC_m$+zM0;l3f%;~ul{>LQsvR#bTT+=20fT{ zW=Sh6;HG%CNet#Q82hIbK18B2oEdrp{n5eDHFP=x7ZSw%d-j%(y#E8`ic7vF z2hCun?58^Fw|1*u_z&OX}5&*@L;){msHA5W3!|` z%!&|@G1I`z56|u9qeUdF=!sai#d*o%yaKQV`5W!?95r^B2HoOc+ixIm zeDaM!7fb?=Iv^j|0%QmK4rFr87ZWy$p1hHq^U32u$%pR|ZKxOd35*1$9^B;`l8zc{ z;QU&UerP3ZgJ;Nu8G|L(fW9%~`R#9i+w`Fo1h~Xwbd%Y*JKX+<${XMCrt(k!^3rnO z`#(^+G2&-(dES^6Xdug8c~oF}TJ}sfLbZ#}@oX_tA$%NF@FpGD&V*~yb{eyUgK z%;+57_V@c%h&|LM247eSgN_r&fw_-eaIDKQwK?MlbeHEQxz4l^vPuk@%2<~H9{NvQ zg!N-q_;ZnN2O%X_+rM$*w(UZ_lf0{Q%^6qy~B^l7u~De=cgW|K>ZQr2~YW@ z@{7OpB>AZ4l|TC9KPrFqSASKW^rR=12S4~hYKwfQ>f5zrm+Dw5S6p?i^p$~m$)AqH zxo1E7ndQV&PAXI4#hm1E@4@jhxiD9zmhf*=O4z{}KRU=`G)xq+d=_M)17xy+7?9+K z8FB2fh-ckr0G7u-i9hk{B!t9ptk{Y{HQ4~^3URvqx$b2}AaO*WWB@*5|2fX8P8Dif z$v{5zRdwZCms};9i>`|sBp(Z9{Gi%3$H166xPk9!ORpN-uu)|QH*6YK4mV;{Me>Wf zA6*d5H%i}#eQtL8>E&Mczkm6KUwTS8=ilF2p8r>WQ?~Cq!3p<*`f>f9>+K8BVU{vu z%lGWvYsz|nRej=JH0UickNer!1tzR=@CKRjBdd}nUxOb;J}^6K(t!!dyvqK^m;6h) z?*kqvSzRgzc$`wQzMy+d2T_bINSQ|Vn`1uSLC%FNLjRQ2L};AP$a|T*Vv@)G{Lh!a z{o5BP**!tD6JJGmVh!T|!D0MW3@G8>=@EOdh;9oje!)$uNb4MXRd5aR9W*I$2q z`LF-{Pn}afBHr^tFUOP>P<9S(tpwQjCGiPlKl_$`b}gX2e&$7$MI@s9b2nNE1eb*-wr!Gk-(C)D_t~P9nf{ z4s;O0<~}Q;j?s^wdFVsS%}+bk!3E!eyzH{eZ5(kbZJ_)b7?sDMPVU`T-ul+J$hk$b z$Y`+zvYB~vD^*t}(im%;4oM$$W}5=+Zvol}m-56XKDj*dk&lw0jTHkZ9y1ci2?h&= z;9iz?x@;*J3PAZ02!wIrni&Pv1SdQ%K>*HYlrFsROXa*zoa<4?W0kEN0_X?Emo3ZG z80E&$`k2_|84m@Hd^->x!3XHc;|28Jj~Lh(EP0<}OE?4+Uga<&ii#8L5{CWyv!7G8 zY~8LP;GmLSIWig3BTPMtE)IkRoo!r2RzXY(&ZAJ??o=Uq?Ib zaK%l6Mt_r9JY!ZgzQ1^EG&)P)zN{cIIyfbo}mxJ|96OTcc=C zz=sas?|%35H@yGk|NNiw_{X1Fwr}5V9b+{PfD@%3UMdSebuQb>b@22X-@Led?V_)g z0c1-=WqA~k_6uO<58g97%JOZVcP2q6QIBA&`)2rAm2uDe-lsg~agX)#z&Y6#ma_XZ zN|Ixb_Ny)Y2Hh@|MLR+Eu{lmcg*ga-wS>Fc)v*obHLrP1x$e5_+=ecsF02m7FZ?2) zVT&A62m4FX%iciQ5kRt38N0m7@$B{~Fd^wdEVys~^`a*_83{P|-SQTvJ$DQfrzR-bzb2~giXE0S|d5{F%R)2`KmP6>xQFw%4oSMZ=l>-^jbq4SV zf^93&f~wu?1qQ0%4{bA_wa+(@X}>7Zk?juB4sEk-_?z@6Zinoy2RMb;UM3G%B}cNs zV6M`*GO}$;8QHo`G1=+m7Pq=(Ir-$9%a+KusST%|a`VDV(yqAbDwV~OV#VmHX>4?$ z+~M|TI6>w;MyyofT?#zjf-MCZJO%wiHf>2{Vt|#&ojAvJ9zO-0+@bb~hAIoB z-EO7&;sILihTqUu*O4GEiB14=feofV_zvtT{)-rsSb#Vb9YAKF%dE~V%1GYw7N?bm zJmQfan4gurGXUsSEW~E&M-J57SV-Nhff-e3^$Wl7i{-9&`!NqrGEl-w&!t1m=Cj4>YUo z?`pvHTpN4|nYu9m-;wKxWn{P1C;E-AH0n1m_Qf7!Tk2M>Svv)#ac=Vi;xQuNwdZ?AaH;QL~B=pESqiM^6sF7HDvp8Mh|1oOH?8-WH4aJ4vxTu zHri;)5SSKX8ZQpxUPdn>fr)40812CU;7qy@0Rax0{d(jZ=UqE+9JY@&=Q}`RlNc)9 z8^w!2b=*#fV6KZ!o`jt9d8IWzrh8Cg5~@>AKTS#3vn9~*=dho%MX;C+IU2I=01Qn3 z@KE{O=RQ;3|Ni&G^jPvK+VOnTY5<*Cj=foJV8jO=FuOo-#q287IPLUXmS0dpjgut7 zW^|els?$Dr4`1OGK@0;R80-uHNB}T?w2>KsZCl3Zy=O7u3#$)?D zXo+5Y`|rt5dWz(gXZ&W(dlDFr2CEIo_0drCmxOvbqF>fAWJmgk^fHr}$Elw>?*CH{ z&^DH4@iM?DHNFuJk8zYFO&Nr&7pM~+U;MR;{p_0MULZB}OZ9l}YWx7p$Vxfoq!Y{g z-}lb)QxAEN^j6MHK?|SF;TiI!LrT7d3(~J8^~(W|DCALL+mw|s09gT9Qod1rJ|u^~ zv=}d~p^dz_hF}6Py_zlZ2#vsAz~BI7FnT{bBUzA)`g2zf3^DR5=l>_~JpeQ*i~RrE zFgb4yM9FCh2J{pa1Q8`DC@3aSF`=GW@674WczR+M2@(VmB?u@|O6U%AUXbOKjSVSzdot zQzaF3&^bEK^fYWR$veAq^EVFHrwFUkA@9XeI^p_P$Upjb?|t{!`{R3Eqs?#tngcI8-&9u zcS!Ue5)Kx3CwIC;an}f-~9*zv$dyS5+W+P{|8?0G(mT z2?-ga^>nW-l58$~@(E9#vHf&Rki^QF=-2eSK?83aP)t20Cg8I+__9oH%K$y=m^sov zAbK*xN98*bj43wIk=X|^FcE<%qn+#lfJD$X;tytVu^YX^2wngAkhW?fn+5OS8M?;L zd`r5juF6MKk3IHSyZovv?JbAD&6g;3b$01qbaRF1rK6CU4B-THR4`BAif%$P_=(LJ zmC*4}F%Gz@T9vKx`k;4|L4DC9MFT?V)L3y@C!jp!44ceSHU=DsOeojCKAEV>WN@Y+Jfyx!rN+ zJ=QxIGRjPet+v?Qnp;{zUv!P7Vss!FA1xJTXDZ1!?Mw85BIyVFPI%`qafJMp z6vpd`32SU@c6!ico+0jKGcA&RWSKU^C*)!T3N=K&H%I_>vAvIgAv&+vU0x@8hu)~y-F^36zBdc&$|J5Sh*ARRk~4V5gJH=b zat3k^t$|AWKQ6?)`4Qk5%AuW}JBY=^+rF`;d@Ph=NiT7Qk3y?X+|RUkY>IyYhWEOS zmeh_ASQo}(aa{$_JAv>3%;kr87&m}k6nZIegg62!mNcp)h!b0v*hU^#?YklhInTcl z-Vjy=dpchin27Lzx1l)F1{~t7S+l&Z)ElC;wYH52h7(NJ*dPMn9)cQ-3q%E|AIS{@ z1W*PBmR4aqWPU0iH?kY8l2l6d5s0prpBh?o_L1#0A&H@ny*Xk>aySc?sxW-f|iB`CDEd@#K#lEGI(#DXbX>XqzfhG z=p(OHO0=Z#I8b_Qx7unet5$us-DZ1hW@qm{dRLW%^)mgGsaQ)`Q?|{O*h==JB||+Qf|`u+0wfbcz?+HWP9q#r(%R$ z^=H~D#;T#d$&)a60$sR<%%R}40R=}^eZ7%r5r$apm9y}vJZ!Kbr@=c|-!)4KB?$u~ zS&Z&^FQVSfbA-~BP;Pf++fxP-%5sr%1?{Qt)>~~Y9>;F#1d^1L$Aq*el~DN}4@d|^ zxURaZ3HIn?kN6aC*Img1(^y3Uqx+$GM!g;W_BYwN=bdM}?Y_I5J5#qMiwdr%DDd^9 zO|}QS@4=cXKN|R~9k6E!zAjitItP$zK6gi*+}5a6dcvUxfizABom*2v9n;_>%c>*v ztFKd1iZTJRANfo^&*&_Oyq7V5Uk!C{8IhB8jK~|nF6motxs}bGJJ&k}2q1Zu(X*WL zN=GYGa|zb?ywPnp-Dr3G{bnT;N>FJ#^pJc~ege;+cRp2I@=GGkyJMXyJPF4YqYy*3 z+Y4T3n{K{^WO%Oa{px)sV^hS(_|yqOA!X;Ty&z@doAPh(?MK#KWMyD9L zg|FyPb8CzBORpHAb|13_K!w>6nGO#4;=#LsclvvgeOKOz+PUWP19&!`&$~%r)Eeh0 zdYhDj_rTnF^K7HdH}j2ZXfr-~+4AK&#=a!b5&AhDM1y5ZmX5r|QP)8_>M}6GR(e9B zw-KCs45NEHI=byK>_wO8CA;eDaV4J~_^J%vj}8S7sOhMlc>pYIU*7IASqTJK1kt{R zQhZMy!YlOEdFHYg?Iz)Y1pSPV74M|p_)6~Mne~Mn_;@bBM`;RL07;`nI<4uH#y5TT zv!AtFZoNeT^xbyqsi)do4}ZI{=K{QB_L;Y@fH8XM^oidnGh@{ph%c*yImrM1y&WWU%L51DF| z|1XyhO~9-(@|wq-S(6x}&Wdwo$C$a~brr&E=b4%XXNbRuJGh$;dy3|30LU}?%e{@P zl~xjjP1c`l1W(?vBGLmk(`9KMOWv@{ljLqd^v9DmAZX zql<4)t5Vn{Vhlcm*^Q5YP;T73wQkq_@AcCEvTTio=%j=`aAp*|lTUSL?}jZEU%&l` zBdw;s-gn?;83MBB_7r<2UN94Y&HKQN6H2wwd#f`)a=++&$U)UItYoM|{+cqukxxy!e6V*?abpSamvmtGhLYl4@GJH%0pJyU z!>+?45lL}Yo$EApVHU-#*|WU9%vvDkVRJZW3172w-1WdqTm$$`DuiQ0LkJKR$#oHH zf>g!?j67xWJOVl1{CMvb5zy%JvjC%OzB8wgI0t#7@w(YZASwfXfL^0aVX3K$br*hvJ;&8F*VJnFmf*=Dyk#xV^bNx zotuymV4OO_8;BqWu9_s_5OQA`6Ux`pNT=}|3$%Zf2HY7a!w;*elaOE)L;<~r2Xs?;rW7-EqfVcG5|w`1Dd=>xm#!cRfiP0P4h48`_H!Jn`sbcF~{z>@>pw zVf>&|tp8=bH{YO+>5HS^MWz>$O||NsC(xW{c`x57rVsPzk9^o^NfPv`z4n#y=6x}> zeptpCz5-0)3!}l*an`;P%tsL8#!N6(2`lZT7n7+=C<8mP!Z+3c9rL4OjPL%r(WE4m zhw%U+Kne`tj=B8dz!SLwh)R+2;C6X)YTf_Z$$(! z63C_-cKyv7N`gufY1$0XerUluDZaI*(9x43co99g(2mh4l_x~T0c3MXd`WrbIS|Ej z1HzFq^c&BIQIW2QJMan`QHR;H=h|L-?_*u^^p8Bf$ewQRu*IF7-W$7IN7lXZtxUdq zTt;87EIyD>F^$VRI#o6@>r=Gdn6I=)9(}|EWVcJw^=q!b&Q?ubWjig{!hZ0RAKRC| z`E6^NJMLO2t zGfE5pd?!fpp2UF;qLdZ?ycQiLB4-ny1VWZ8=j?DePbqesZ}dfO03J| z8udtiBp(x@+W07dcLkMvQ5uGcba0$QPqvTse2-L56e z?eEuLV^2Nupvl#E2LNReRQT(3e+E3>gROS5){j|0*iSaji)9_meBiTXgF05(8{c%e zH8oGSNi_|&-|G&t*-Gw*C77N7stnps-3ZjMA1TA$=|n&z_48Q~ZW@Mckj@v`QV*`+ zgWG@fVaRU#yOMyr?y^3~ph6^1I$8JYpoE$|IecFZ{VCR~Jkec8uKC{uefjhf$jHYa zdRCmPa&AXM7DfTukUT;cXbljgaVrkoH$RdMp!1fHm8qC~W{T;I_$2Dj#+vYt_3ePS zSD>FlMpQNSENE_M_M~;xpP=934Z5XzdHuYupziU4LUz-><==Ebfga8Kh+-gq#cvb% zv^a{;``A2<NX1VB@ESV}|G|(A>Nf1tDtSFt{DFHPvWFgg$bW62UOO0$#iBh*o6;xCeU=LYFaEl#!_atr1-&N|-QGhVB6q`0g^Z0O%Z> zGjFa*!ooe`MI*u@Y*iGU(*2A-tHJciuLr500CD^+JS#jNhC?$L4 ze;2wI0k&d5ad?%%>mjR=?)dk_6`Np>ed9iOBALeaLQ?=4%h53J_!Bz4^&5!}(~a>f zISm^AA{UHc@mTp;Lh6vCN^poB5nFh<}zObc{^hk&CwW3*v zXhvDFY$c{gLoH&Mk&a^hpx62`FuzH4!oR?CtW)wFM7I*XF+%@NJjdei@;zY2G1P-u zYOt$Y{s7*xzCL^qO90uMLhV=Enp>Jhhr(X#ZvdZ8XN4zZh5XRj;IgB#h#uuFT<2qU zOtqSVPnarsl1~wydB*STz6bB~I`Ez$kIzIiV$=eVSr8i)HazU78t6C@Ya)Av{JGuJ zy`aZSeqQjcpab;eUF`LQ-F?@4kFssH-`+nF)-}-UW%wJ_Huhy=;9(?pfG&zh7|>z{ z8L=7P^wz1j16go?jEo3LeBsyye>&gVJKEhILkF*`>g+RTX_DGWp1>zcliq$!WsC>- zI*)&KPsZqFz+Vm%69~Oy0C`jWu#eCTnH*G%K^btBchM1oy~CywZ?ls;c8n?a)SFM@ zb#->f=6O`QfI>RPgAi8VRayec6b-Zu`=Iv6uOU;b0hI-TNK(ao{f+Rsz^Q?m;8X&J zjq5Iug@afdaPN2kadBMqIG`Nih$i_oqnIi- z$X^Z^q<0mdm&_flsz7UM+1XryF~&FPLx6(NIG_L<2qrSp>k3(=gy=*V#p%b82fiod`=JkXpqKyROD?oUN(^T-*D1)yurh^q*gvfRpFn~mgq#kElmUz?{7F8r zp&P+sr)bWnhW6TX@3>b^8GvM6N;6@m_5)>=YK-OHjMF)CIU3M`5Lhgmm(30OV zR&=Nk0D_#OU$mJ-Ed%mejFR5PcLe|PmrK=l$#w&q1}fkv+QsxFg2GYy$)IBZMVv5J zH~|mR1wS~={KiB5Xon!On z&9=GoX4&jHGi}D~83oR=X)|Z|G=F$Z0LI#8K3moCo6^itbrzt`Dh1>Q@$d&O%Rc!CodaqsLZ+5@a@Ny)f?Q$wb8M80qW@P!V5khQ6v z?6CPwIT%eKA+4*gwWUj!xh#8!NP*lR`l9DVY#a`|2@~`YBM|Jk%_;Qf837Kp0(d7t z-2lo@bUD=f0fHoa9eRum^E-jx;}1P#ci(oK5*-C318igydrM>x>h?;suBvj} zP$y(MIuL00f}M7;Jzlw|VoW)4IkKI0-c`Z+d>npo-F#3{>+#&L%OVBMZrHbz~0aaf^Dp?RpP9G2RY+8PdG&nIv#y* z7PSlhyRFta?|}wf2lyMH+X^dm+oTkVprh^pq%DPf_PWVP9T^g zP?MCZUg+oAxfzgh&N1uA^n7dvHk*;nC!ToBe~VfMWStXu9-1(73E4##*9Ig)Wqht6 zlWOXmwh$b#XQHbwn_ntFs{^L0j83PNfda<-UIBS6<5*AvHq)Tn4ou2UNoOXh=k;Kh6!_~dWTqM*XW34TUYg9fvL%;7mN7+61-R-d` z`i;L~R6Klt#sQj}tF(hz%Gtz43CTR-&3gTA?$+vide;(DVv99S2Bxh}xx zDUnr=i^Y?q1N`O4wXA1%51l{AKl}{35FhY7?I8~3bB!!dB&X!>ko=IlQI9tPAQS+J zq;gCNMJNachL@}jaw;Ii!ElA3#)eblJx`-Du;sorK{9G0s8k@77vS9lN=;3%ArQ%l zJ2MfGzcHi)R2U9M1Ne;u8|E|o@4G1$@5TtwI}YHkFc#2;GSzB1_ekje5l~Kq9T5^o z8FnE;0#cu#Grf*czwzn_o!Dp%o_j!)ilcRQTt?ugV@xrcs`B0@;&~lcooh(ZMjBA=mNgj9)33#sEMs?j>p1(BN$rpEwdA zv(}j<0&T6WZm5wV>J*!RsGY-%mNS(mI*AzdOP+F0S=5yyGyvSF%ZLFV`OwjJ%nyHH zi=TQ@WM(=`O>F9;GTA*B+K)wGR0m;C852fE>MDNspjR*?dcWw!yW26x9Ag(>bdg)YEw|X6ci(GwINqc4O1#T%zvC{u``-KQ;YS{|$DVvj$4BgryY8^7uD;SP{PP8N z?jO&$8*jYH?!W&5d-uEF?XrY@*?sqy*uJmc&#G&h<;+$YyMa!f!iawa5t}=T?1(&q`W>YGYXW34>Y>21IJ#{t1?A{Gwo*U&d2e^8FOzuq zk%v7|)sG_NBstD{?@$<^&)2pU`r*mN2n|J4fhQ_{y2`G<<{Bkk_lv)DG_f(5 z-!g{olsOUbTR3X9btNOp(ho7uccYJ&tOnRKo*Nv(7e(^S-_8rsl1@nMTKJbiw|4}2 zy^K!FKKLvE*%9n5od6CKS5Z(%`Z$U6n%cI(K)iqyylbm1x3pO^XZmLxn_8NEBp2`v zC}s2Os@WZ%WLWl^kzn*r|LC;F_Jha_Q~Dw>mQN}BtD-qv>g?{dCl@aA(M0%*enMk9 zWC>R?Aw*7)_uxsyE6|nQ#C1ayxJHnyl;kDlF`uNa^$k@%Di-!PA>_9VygNEMV>uJ& z|9UXCy^L0YZYR}hSxL1Yz0^f#udd6M`Py>vfev2p+5Zg4_YylcH#Pf!TKZ#v+@?%Z+D*)v zNj1;W9&!lcaIX0bEYXFIyt+F1InnWsJMOXn`1EJ(Ud250f6%GRrif5LkB!I+v?$}V z0eD;q*vuEc=tcI|zg}S<|Kum^u(uv&Z+PSD?X?HI)?V}4ee87y>}#((a6iY_>ipHO z*~ebF*Piy$m;al+aQEG9*XQqQTW+(J?+jko*x*a<7`$*lullm&kZK=){I9&DxDu#R z%HFzy+eFD@>USluEZJjW73up4>3;GJpFyK{c_*IktF2>mLD5bZN5xn-$@)PO&4h`BgX`O7SSC~5arY3qmoL`jB@5mg%CQ64Q(DCQI)HB)M#zv;)uCQ~?Ios~L z>u$g9BO*F(Xb5K%?@pk8T<3ilW?8kfmtB03EqZF9JN~AI2Ae%&rqd{-CBhS2Zb%#7L zP?vO|9Qm8Ndf=;i(Qc*?`P3n%tBaSce+Ltr?%Yp#K^JOY(}Z)l)?sRx{w zp{~BcX9%(EhM*joXI4XE_jnI>6d6KpsR#9CW(Pxv#FMJx}6nBjeu5WsVGI$RAvNj-IDdRs9g3r*ND4=Bf;0aS~SuUh==c|At zn9l)~@kS-Yy%W=o82|&KH@+U70s)^*Q^cVeH0LOFmdQDK1)Yf@upPvSpm$IcR7))4G0AwfX2%SP#`qVboxH40#n+|!@M8=ODwaYdK+NLdB6GXBY zG7psLJ2LyAxQ0(B`2%`}=mWqPM4 zd%cuci#f}`DYx9Vgo&x-*JK1i(`9}Nrzkk#&R}4L*gu6xl48KG!!Ey&*FD|+DK?^;f zxFH~U>K*2aRkqw>OZ)oQzGlDp??Rn?fX=k5fr=Asf+F57YZ~yQI z``x+c*?AXTVt=~g3cK{m%kA15ZnQh@x!3N0^ig}@(Z}qeM}!YOW)Ix|fZcP~?RNe3 z*Vxy-{&mr^)$^rF$h>eoK>qVL^bVS$%Ur{sxGt&4|%=bGb@Kj&g#O7Kk zGWWQV6#;28LXYt!;N_D=5YIp5P}G6HDG!6qv<82_uH)fz1k#8O>)DKY>r3;HU^Febhnk=v83N+N<4O_LrmT zVe@heAb-pICPLaw z-2vL;YrYE}yUdC1&@XnNpW0YekoDlJ8jM}i^YE5y@$G4X z)f$%rUq_{5_duU*x7~KO#a3H7Uq{y~4%yb*Ze!c+xPwiV{I|}S?n$WcNUMOBSsVe- zDCh)FsRzEx{g*JEC7l$tsvmX-ONpaX)$IIp&$a8Wxyss?Ee+cxTBx~e1>OVTYbc+# z=Q&fupsC9g?a`6zUJo3y9-SOQES(?l&L_T?UJlZ@mm@a8HySJwB}S&P2mHn|rGj-K z_d3S=m4L4htw?b64lwj%R5m8U4Gjc6`p?VeD-PIQ&KW_#{x>wY_;=M=i(4aGL}wcv zEPUP%U|9g|ApU@^ocpL5{z(vIL?+^#J(Sgl}1ISnU zbpCea8ZVR~WaBu_huKR&^(rH6FJmQC-oG}eynkH~dqvwh4?2w6S#d$Uq(%5J+K4Sv zY{?~^GwUj4HewC6LHtV~=}O?7cO>{b^-OfwM7%;^T&?TG8rUS_0(b#<;H|#_k`$L4 z*#z{|d9J^+EipPx%nMyt`V0}CSp|*tAHI@(AadqOVDJ#&yo?D!pYq?>R&cBwWjse` zYxsVArsNpu)8D?PRdE8_>IJJ5i0LHPKWd53!Y1&J ztP4o)lZgC-(2+VJ$9aDOWvwDtf-kG|Tvfg7CUQkAqk9$mtr(CV$nOj*4joqPhn#`K z{Uof!cCt~#h>G2*-DKI^>e>ctlFgnoeRlAf{vY?vc+m+eM6JydB`$T^hv6b349WA%W|*OC1MWMs3Cvm*t7&kF(EJjZt$a(bkG1`_>aGpEJ-Ubpk>VkvA zNa1`57QJ^&1Ok>SFs5y6h(&Kc#KYJoKx~wxM$X+GsTjoO3?zM{=6`&Ep&-Fo^oT@H z=RX><9%(o-IRN1eJgiKl{oGNlbfuHh%6Z&%$DMZ5->$bBMSkq)3vJ5aZ7merX)ij* z=u`lm3CI*Q#t`{uL}d5&+4nX6DI64!M1_$D{ojM>&9>OwYL(z2j|7$&Y=RODFoC5z zMLk3Ns53l9PCa-UF@kCuQ_ASq~+%&t^0`S_y`+y8#|f9#02zTH0Z zfe+e+7yQYderlnwAFP+-;!{u4)P80$GQ|v}2(|u~r?>C6}pm z{Mbc;ad%QBfL0i4j5PN(G{)w0lnsq>#_=vjRIvlwSE=k{xEKV2|Bq>6lB9(l#MaJi~X3EA219yJ>UU zMYrK4;P>YeDBsb2NhDhYG6bZImb3o=az^Lnu-XQ{u#Z*swYI#c%VmhE{&bwNex8vm zk_$E{B(6J(Z`iKjU->h=S=>FA#U($7pipRYDxiZN$|Fn5E)B<<32<(fPDu^>}zY7O)<%5Tj3v{E%3fEC|Z^A*@DZA+8g#R za3XNo#@?2(0H@;!$Ul2e!B|;b7jQW$(Z3R?uh&rj%eW3*&%qUZ7f1F`p-ypag=iHc zsQ}j_Zjq&tEb=#H^$+wZutpz=T~v0qX{4R&-=6ga-rzR1#0KQmJ74&tpiO0RI1$i( z+J{{z^LD)F`5ih$Jg++FUqgMP%N+pyxCeSC(t(k@=Wk+v-!)nP@Rj@&z6Q%b3i%B0 z$a5g=dtySgVHETC{Ci!2XYemFxZcsZ$wnKwEFdF5_@wY3B&wA_OpD!5x^hhV_-sdH zU)5nFQ+S4*>Fe&Z%P+giKK}0?v%}tWsGWS$Nw$zLy~wt=G&WhAVqs!DX28->j}3F0 zsa)PgJ$Mh8Np&K1Eo0h$=ab}{Yw#$Mj&C~q0_9&+$MokMK_Boako&!}LG_7y#@^?% zn6ZDVGxZiXL^}q46dOsm0Ca3kkTOJ_GbUMI!2dI_fWL$W9Q|Cs!Bdw1kU!vWvp)D` zMx{xx@xSh;$RkRUx>gNy!!JPx^d2`*2nmYhjvV14kk;ShC4@LJ4}QfE$AS=Goa3|z z{-eD0fh=cTA&3?MKkuSGd?E=z$Vr?LD4ZX=^v#?()7yliyMpUoSqA66d$*4MIhTUy ztOY^gP_Q)vzatDF=WAufIzUklBR}-Ks7hc0bu1%w&vwBF57a6U9?@$w7Ni|=8qf;< zllZY#dU<=dk4TZ!4fOT6aqwOF&15_HO>gx2 zu?d>=)14Y4k}A{=J@hcuBovgovLOgP_V5owi0pFR->16dTC@!-y6jbPt!Am&uwHprZMedmX#SWytBcdK7 z;i31Oq-U_NS8ZG6Q(7C@ys3JskBnUW=Zox}hri8U_Tt@bzrFXi?|k#W?BtVAva7DW z(jI;CFZ}wKQ6T&g+|$z}HJ(gsj!9RzfqSTJKVDI=M=`7v|2I zDUSrTj?#NiqQ#>?{VpV#lIa(Xp)<&NAaVl+6!JcTC72{fH(3Tt$5oREq>y1`VH8K7 z%4_Qf&>Hk$OULr3HfRs^#C9Yf%YaUH-Wx7i)H-RiSc>KoXsN4%Bu^xg8&se)%|kLY-0YAw@q>lzwe4pOff zZJ~#oDc*bRv4`&t%oJcp=_X~9P`~O``&jF=8HG&_gaz~-(+TV{B@$B)pLrx2j%SPV z3Jwx`1)b?kLT|3V@^U-#%rk7slBfNiG3%YNvt{`k`5WC1yUwOp00}iC@SVjFIUTmiB`a?4avzCFwA8UiisG>LQX(17(yetKm4Iqx1Gu*IG2wo)?2 z-y(?b=|K?bv*X;3M}1w7R4$l6phO@H2ZOfEoMN40>> zkmoWGWF_(*X25y9ggGKQ90gi4$7&j$ZqzT^>I^7v^S8U(AC~;0kJh8%fzs;zDb?)kJ0a`?(6aIIe?P`I>gN7I zZPCH)*Ru8=r}^Mu&^`1i5c(q19((F<;xjs$S>l&=CV#^X{Ij9#D`?B+&wHM&l8pe^ zTy=6G6DfC`bbo6DV>Kuq=0RUhqfA z-y=SD49aE}DC?@429EiB@(4~TS~C`Xr+VG6f`nU{^-A%5Shg5LT&@#PKCc9R!%hR< zp}&TECxUDSVvpz~qgXmPb+^-zWS?0@bhcs(NU+HfRvVf2p4ahEKY}pH zori!}js%Ea8m7+pCNq9LdSAx_oErq-g=yjL!Y^Txiu&eN(Cdcl|7Pc&bB+|5 zW%q(tskI{Kf`EOtqksf`n@O9d@!^cG<-PZ$>_OH|GTC(CvVO z4%B-ZUGQ1k&bmo>g|Ui+c#<0}moe%ro}{d%b1WM{*3Q8PbQELB= zwF1ay$uuKyeUjlRx^MpM**16PG^>?9bT03*+it$izV(g&w)ej0y|&LQ_q2a|;R|fP z*Sy-^b;ObO^)G+b&OGh6cFh%6+QP@4umR~ry$pDbct>K@SR2SWdlrBZu*7JfCj_(s zxhjyq%Q$j9vHaUQLDEfj#{)Pu*FS&dryC5AM*#UnW(cmhMgoMKu)zv)gRGZlwE)}) zfBb$u%MrWePEY0WX)vbaGHan)Ww43cBswNkE_$;{uLhq>;63TQs2^Ac{>IVtEMMZE zyjZkoVd#~fA&BTvf<&8eLeK{KQ)k>UM}l3FWDS+hr+(7C*@!v!<|rLFXy1|Fi`fx+yLJoNR1r@m+PLO>s?S`?2uNpffoTN7n$hl+azNhkF%IAtC?j=HQs;l?3>|2R z&w)SbZ+y@}`kws9&#h#$JxmNg@0)hG%ln*cCvjyZ6d4Z4Ea_F^gP$7t8 zfZx{i`!k0w(UqHN29bd+jV>-R~ z9x+pZb)(<^j|O7Cq@edr6i_~Yt^nKQ-xU^3nDS1nRa=7}i=}?ZymwF*Se6%_aa|B^ zP#%1wR48n=`&0f3fac@n0>1R7gxohC@-A@Xn)_IEc6FQx_-67p+iq*MsxP*d4gi*> zAT#bKF_7Z`aV;@GE-U5z0Ddz+c_qyf|K!(*Jw=6D*?(f|HpvwOAhi7MyY98`|L_=l z%i(Xe7rgL=w&yEeX&-ps`|O85{Gt8%{PXSpd+xO!$vbk`AfG@|%`rMx12YbT)*Lgb z1V-dt^dBFK*hAGHL4RTt_&aT4U?kGq%M2sWi$uS~NmJ-piT9Ri51qyX@=bCs2I=}0 z>kbV_XAzeYlAkiejB{jScg@2QmqdIQqTv3k)U_FA%#1 z4N0)+lp9NdiKV9i92Q12Ua zDFZ=fV)Ul0UZ1jJfRsgE0{tG@1DTfTIu z2WqUVV+57!j9R!bim@1CJ~_f}%rocCDGWzUA4~KP%@^-Z(^c$#m^H~LU(_`Hkz3w1A@M44N504QvreY`{ z5JIa&fc8*F0LO%I(GxbLcAs+6Nw#cphc(tUxWYsNi)fC5|E;?7?P&k_zj#ApH(Bn^ z*Ig?4rrhe9It5iE-eyN0d8E}TS;lyw015DofM(9TdG_YR4|heyDfTKTr@eHTc)LY+ zenYWq>+Af;dPqs?qiF=mgEN2W!HByg&6KE{bl_BYIC0$3De#yelw&fv$ZcJs|Q+NGCXq-0LNtBp+CCPxu_wIU_$p82oM$B*`CFj#Tqo*(s_O7M5ox58fcM~AxRrnm8Ko{j zeO;q$YP~gy_bj=<(vXm~wYIr^XBG=n(i$3S^*26Kbkut}mOE#uLCB2Rf}Njlb7s$z zEE7!Wn(pVbmpmh>j=FiZ^_0}WztdYFGFQftwZ#P%+UoWZ%D8q}@Z;Y_e+3TOYMEBJ$>V|LS zZ#7GQvy6ZxOZZX-59q+Hw!s0(Pd{-_bST%<#OFAdEnBMkt5xC??e--uDu>SFv}daW zoE^p7@!H!5Z`T54-i?n1T?-^Z2ar8FZs2u!6f5~3OK_qc;K;vKQ+>}3_hZ->$spkc zNCyVAFJoEuz$!Lqq+ax)FdZLS6>>cuFnt@o5gU-y5D#WT%qS|!Ak&QTwYuOj06qz< zQ?e|p>MG4{^1P3r1V75X*uWU{nIgX$ou$qv{g#k^BW(02CS;77u=?*oze>7{eAm7B z8@mXi6Zkb~na`FHK-NKk`^TV)1V{9E`op zs0$r@0OyEtnMUX?i5^pEMLp*Wvd1@wQ7vbH-paSDN07(Bw ziHRbpW88-w5$YY1a6e*Cx7&U@_b)twT|!6Isu4a!Cmh9ynxYGO!jU))UsEd^9yW>@ z5K1ULDbur}2ejhd#6g3KJ$;6yey^ABZ&Exrd**c8c+N~E*enfM>7Q;r<YcSx)LWn3HJM<|2XY?#EmxIPiEemZs1c`EdouzHpmaH59) z22|3+A&mgwy{Z^aDbBzE4PPA^<;>~r2HfyM6cM{J83wXq2pj?$J%N$!)6h()DPu$Q zrUoyblN=k0X3>Csf;D58QjNU2*vp zayAllz1ydDyP$?~fbJXvtS+r1(?s$#&E&f=B`|0yY4HjpM5X%Ap?62U+#@uVS=NfsTS4fZoF2 zo_3l&_2lDjfPfsWD?5c}0`Lf)0g{e$k0Ra1C;f&xFPdDW3lrwrPluaAZ#s(vYl69K;` zKGzVoZd9(YAE7s4R{5JcbB&(QG7tpPCinm^kyZGT_2wK1y~IY!zW9}}&*dQOxdP;i z_ED#ijX`vbj?XIJX??J_*Ox*peEKQxjDaT99sR5X`B4!~0Utq#j=ru+ff%FHfKUBa zxg6)rnPaa#V1IXBd>0uxraoW->tnaxdTZNatF8PxWziW!hf^(^!zfUhDA7I z+S1x89mYqIil`jbiO~ixQxLOKOX3-o_QX!N&ADwbO;cfjse;w7!Z#cP0FZ(uK*CVAqFc%FCY@Mu(6fk z*y}=ZoSNLwz03b8OshOyG9HnxI z$%*qAfZ}iN=e)NkmKx$?m@P=IL5Cm6#>mVxckTQ?o@aO5 zc8j$yTjH_%D)FaYF({jfk~i>`3w#bSeXZ>AkbGgp0?}z!=0hcTyf3|kzvw+V0r$~S z;>dNkufhNE$`}veLB{GakPtIU%DAC{_?r5WllgRS@sy54_f_78(YjCh*awgLa-0^z zqX#{a7DXT!PJw{#wBMX2M;AK`BMcaRo**FibtxDbAyX3H`nIg_8ql1MOrg7z7Pi<;Islmo>g93!1lV`EqM-UvAgm zc)eYqV-Ihj4mZ zn_Y6@g|=kz648W?CBDJP=6_OD-HU9ZGd#mN&#}xvq;>hDGm6n^+QP@`Yiep;cUgMC z-vdLe4dF9CY`W6x_Y$;I9tJ`u-fr{|a!pd5;2-z%UicnlgsOU}^oJ?r^>U=}h7Jfu z)moaHWRR!&MoxTYXxZY$cKtQi*>6rd)lU4?v3BNf&#-&%ywjE}T4XB*`n}VLQHR>b zIblGFBAeyjTnP9Yt_1D)}?mNIK8{ zcI|a`!*$m>PoO!r5)^$QX_{noPV5TXj?vV^pCeQg^1!@Y3VSoRC?Xt_R z_KLmsLU2@q>Y)F!tu7C%K_wl=!sM@T)lSvz0Di@Ikf@A0=`@M*=1O9)vg2 z52Cit-eFt1WRbmmkC)s0jW$x5qdqF+Cf>p|cJ_^H0v%TAJ#k(f9cWMZJC3w167-d} zXwj4Q#N&_I6AwS^JE#syc6$2;{VNFAW}n*K*``&PR9e>w`H|0yYCVE!jy@{p;l}zrcuGmUIz5pvx>J@QzN&dDu1NjQjA1)JXN0UtF;3 zF1FKxoy9{1Y2GesfIN$iMf<5w8N{a5!0%5S;ak8+Jx8GO?@Ac^KG)r>8@O6|V}TgZ z^{K!SohSfVD??@d)>b>e0W6C3QB8jbBgfTt*0GX6z@ldcnqHi_)G-% zpRw-``cLwQKH^h-a75Q5QBqlogPGQhR54I;@EhM`jV&$SxkAY?x+l3;xvSHB6jp2R zYJabpK5K)q)DF2!8pOGuj=S(1`feY};+Nw*B`%!2c#kAYSr13BA1W6rcp$x+WOYzJe}e zz~7;FajKt@i;m?TcFncdC`agX-;?x6h$I`|5PDAh#H=#zA;;l&{67ALm;oMRHu#Os zTV^YvwhVw!HZcR1jpvxn$*48=QD1zm&wN#Ro(#)2)rdw7I!;xETNIBo`;)K43@8y_ zx^#)%dehBz#buY-DJP$5#~=Gk`^gV~Xea#YI6LPLf3Umnyu+3#)@9BKBhU3Ub zk>;%vhg3c;g*r0Y42_bC&vwdnUy#(5Zhvlhg}blJD&=!ieGTvdG^#3Pl*0S8AUM+Br!Nedl-#|2mJ#>w%Hb2 z*xs++M?x=|Eo{N0M{c{mXhk**Co5`Aie6==oVK^OyW?57u-zK#Qh+fS5*`eu7|kYJ z9bG;CE!aQ)`2w3-Q>B-NZ~%-J(33R0ieB32aUww?_(qWEz2!(RO%j&l^S0mB&w0~LbKR2@B`egEAi1lnH-t;?!{}M)$&@#eSCoSCnbI;z z@}ob55^@Cl2w~A?iP8;g}48fK(+oIR7fW`+MK~w*AkyzH4F+e*~rWs+zfKyiTo9F52BymO`+uJ$M9%gfALD8+PEqdP+ zU)P6WtyA#8Cou>jFh;|Y7kW@JQZ=GCqg#~C{sK%RLdU5Cw2EnugZ>P_H8!7O?dzU< z?`1D}`5w0Qw%gnMjW_a6Ids>Z5;W4ioD+aT1HkpW1iS|v)rN#hO)Nn2Sq92q8@RoZ zpzt2-8McRnp>I-q}QFn~!n~Dx1n zJUN0^x{vbt#2i!Z7cP9-j(qof>`Pz$hOHF87)WDEFAfFBk*+c@b!vTJ5)~|fvb;k> zKz*=%)DQmg_uRR2lz`OQe}C!o_U-@rzRjQApt{C#gXNtaE_*n4ilD9|qlx+h*Tc@; zJ$(a?ERUg6hpFI{J#VA=cH)V@wgpNqa;IJF)@mTRU=zLj@3_MbKlF{(xola`RsUG> z!Sr|lu8#6cvdG4Gv`M_u#{ggDdQ@N1yP$ zIvBBKG?}uf51m-mOhuR8vf*H#+CW{=$7SuEvS4iFCc3MAt5!~tuC>_jes`8Vf45yF zU()xo0}(iFR1deWI_5Qp(&&2phE7HS{?Tmn9$M8pHeZ4E}mRoMIpZw&f zcJ?2BZ~eX9K9zA2wtb2c6D6LuLVV~SmM>uwouY!GmCFu6l}>73$y4Te; z`X^p~C_Vq`SHBjU>#5CPj64U8=wM`Y2Y#mb>Hp;tVMbHjbqTJeT#)@)Ibd4AeOio(R}k7FGtXje(JJ$A_FYpOE$-VU;IG6T?_* zv^qr6ISMI132UyM>Ql%h?Isx`sD<8?!)V<%{_~4=>IuJALL$8)0Y)YY8u+{P4E6$` zvlH5Z_&b2uiMW8+f%4g?2s@3e(^-shV}|0-k2~IG&Yfo~^&B#o?eaK!4Y1bEgtgG8 z5=Lacfat0j3ppa~9YK}lSI9@@`=ABa=ul-D*>}G6ZTqH>O-<_*4>6j#Qhv@q;YmlN z-sN$gcoH^cs`H3%EMqUxA7~wMg0xe*%D3Q$RBhUF;Qp_(AOHBrBlfpSv`1u9&!?9B z)p!t{d+P_4G^D+B+ENt0`H_bow!_|dh&}kwqw+n~-Y#M|p7YLfwHx{H4gy^x{$<$` z-zJ9k#MuCTBK5lbPLD6tKI9O40h^{)a~@N}>BNSuEb-yFhT?nT#1Ooj-|18W_`6?a z5L?1ZX@~QWchD(BUPH1EFP#4V{!kG*YIoc9g?7LJ2iflb_HVYumRnlejOjL2{$`bI zHL}Gg!%)GLVrF@S9tJ(qzR;d*<7kJM&Lu0@7~Vf_>{aM<{Ejyx*5upXB+@afkFtn? z{CDK9q8tXKuv^fZpXdPK8Eh^`bsrfPpuCABbQmnoIr1J9f_n*W`F=D3B0xQO zXHMsVc>E0wAS%p25lE`}oBJ4nsH!)e-8W6aPHTOwHS3-x1$K2Z zG9>b?&5b%L5K=i!3X)oNFN!&>waHo(kg`sK-IqyDnRd~na=5=$*wRqzWi>DgC~VT- zEGMa}()(3Ef)hFl_%>;^l283)4O6PEZmLkh7^GjY)6S|d8+FBc&QPYYQzT-qo$LJI+nBy~O7INq zwbK=(X8@Q$XTKGr%UUfT#SlH-dDKz1VAln{jugY_AMLLej}?Fc>707lyhc?Wk`d$@ zdc&Gk?;McR7m-{>>4ZQ>G5EvutVyoHI7cU9npxW_aK8K<)a@2JIEEXzhXt~z8tn8k}C9Q za8R~JwuKo*%a?bk^ii1_4`@pzpzmcY1AnvJ1^MdjQZl@Fi7gfKIXi3)zKmXUW&q(A zm{N~VWu&6Nr_YAv;Q8B^Wk`njjEX1V3P7>H(0}I4Sw52|+a`88Vlx=wAoxUIQ*Y6G zX2_s}_)cc!pzAIRsy=prXJt+tWBPlQ`>U3wX1DEC()mXfc>d&=pVJJK zur^V*yzm7tww4()YJt7~cl13E(L}89u9JEs#1lAv&K&(MQ=zIPNoL ztau*qPVJ)ImG`d=yu+k~(8;kl&(5ic1;eN62Y=R=py?fwdi@?9Q>uagHeC2cY(?z% z5;hjyp+l5%2-q|3#AbWEs^^$}3Aj$^Rmd@X%vmu2K4N?v+x|*=RsOy){lK;em-kB`>O4*d@ zGd(?SpX9MNz&T|V?0QZh=~4!44nSOq9iUTflZ`jA*X@6xckZI=T&He95B!znTNpF> zA_l|X;rsBPkj&S+OA=X@iR{s40_p}AuZ)dODZ(lq1XFsvqZ@tw9mDIAY08{vVS&SM+EQuW9Zz_TIfC~ge3%EsvKmDdL?9|%iukG zf=Hn0QNVErVIgJ&PGYyN<9NzIuT~-uqiVWWb)$}Jf^f`LQtByQXM_NU#WX(Zgy5#} zVG69*OAPh;=st+spyY;UeYjukg%K**+relsg6>lhf?W2PMgG7?;iMOs3 zoaghL4@yt?y-xS~h8()DwvJ6UrdpklK)kbksh#`#-`NM=dz9_H*IwQ;y>Q_|Z&Nx~ zW+#mFehStl5ZDlq_Q7qV>q7kPKr%09$vp&J{02>-J4TodclcbZWQRmvjk38gwbkfEXX#t;S z^7YV4#uz;$$&Hx_?7b1m2EV6`!J+Y<`Sa)7JC8WRn)ME3FoWhw=L$flTG1BEzvrv= zwtDGhM{i8YYE(VwRrUanW8q6E%M&vl=^Q2D@lh0=1MrJy@D=DI_KWx6=dn*$U3Hb+ zd+)u@yNO{hR!04=JdrvRSid`hFU0GPXkX!YtkYlLya{y)mn2) zy|uJ9+4LFB-g#W#P-U&tT6JC{pIEPZ8mv*tJ?A9Y*v7{md&EvX`9wSLbqCt6JMU!w z{*e#Zy?5W~fgYdbtDX#P@&BXf09}O0df2={-%rE8P@tcae}K<+7)LI+XFNd0>J(kp z)J(P)zW7D@n;1uS5qn4HP9ckw56{N}!B+%{bT*Fv26Tj&B%V!O_d4qx0Dg%jZ|w6y zhc>^ndEV2Do{oC!KC$W<0luP)|7s9EKl~Br8ye6_I?9k6;;r7UZqL8ae;;8kbe7-g z{DeQ)1^g(q#}=n=!3LmXJV#xzQ`khxM?Z-NN8(m^T=4f_3EaOFa-8;gLxRg0Cu%#L z#!{rPpP~`5NWRl`prDV_O0+F!u5rh{okn`sP@;z%RpX3RkCD@Oe z`dWM6``;&9I$O3iY!mn&LwtSOM|N zL~)tZ{2AyAy6PRnu8Y{zh_Q$}$pg`2@<8rOEJN^v!HlBgLirT4Pl*2+_@iT%{0AB3 zzU9l8sh%sH{={_nBGr7tI4n3_0ol{%=Q@%oam-I)`8xJ4=NW)?g zc_gYJ0Zk^@dA$r?uL3d1K}ZtWAmqsCO$DU$^><5Y=~2sfU?4fde25AV@WBX-DWkV> zZP416w>uLi6EIW}0LSPdAMYOMjgbL*O8O?Lt&}Nk(76PQ=Ms5`7!8UG5{MNc6gtnOn$Vmb1xaF1!ZKt~ zI~EA^RiYAJkmQRb8HK(2>Z|RJJMNJ2j9$6!?oJQ*hxHrI2s$%`f0gJ#GC@xelEDUJ zd|Q-Hp7bg418QpOJc;11!w)~)X3d@NNp2b_r+I~9BGBEvd|GFPb$52!{`>E5yS?xQ zUI%Zhj_V5;Fb4&5B#+PpBToRND%f3j-DBrpaDgY0>muvx3fVHIx%P{x>s9<- zl+O$fb`xg?#uTMUk3af|eev_3w>|cFx&82m$5>})mm6$?T1JDBJJ(^^gVljLY*=u) z7R`}Gw>2Ye4Iq(8Ua}z`wh?;9VY6)5g+qgPbAjwYAZk%6&LZI!)YWIflOa z+bZ6>;emIpUVe}Cje0OOs=uql{&>#0wnDa&cCaIHPMv~3^u+rN6(M%RQ8pU+2}d?X zIu^kQ?ML^p5r@6`%{FiDT$d?=viLm$u*3wCEIz;0t03crFL|-O}R`mb}h5^_Qkez+0*vKlaJUv_uOs|J$%32a_fzD^);8< zHNx}%bgrFv;<5f!gG(;C(5}4d3cK{;KidTtoM)$L`2B?z`JY z^XJ>PTW@LaefJUemp`9pgFT&w)v7~pyRxAH+VBQ1zp%GuKyUpXnOouy622IOh!M=t_tARc zEAbNmWwP%GGj@n$0C-Tw=M1Qu(Bo$zd?oSkm(68q+(sL1Y@hwiXRWy zivcU^=`<*KQ3eJ)e3p{p0r*qtFDrrg09w*P3ewTzc~60r(9qoI_OXXA2teobPld4h zK#F8LmHRdf1_El#tQmoZkuBE$dqSwT^E>TNq)gh#CVT{i z=mBkK-3@vIp9ttV=Xa7JAfHD_`3)T-_~#y%dtC>SXK+xwV^gw5wTm86bZPOzh4z&% ze$n1^$RT#?Ew}o6BQXm@8ID=Ssot&(jvF3QZh+OCquRohcc#X|6L#Lmm?In1tEHvc zpT(Z!bU^_6hpfeZ5g_&v5=Y|{pX1Cvd ztF<;Y8B1H7=hAoo{-%;u)Ele|;dI;oUfPY$D{6t*&cymZ95x_9WiA;MX5)N4(<*`}8M2W&ic{uiL37oosjBcDpTGveaqJ6he}HpjLIqe$|Or ztg)oi8Q?xbHvY=~z@%eL%M;DTA9QKuL=RI`(e&GE_tBfhu z(IJ1OBh%5D_B%H28P(AQX##@a{%Il$gI&l@ee51Q#m@HiMZyNS%~sp$L2K$xcGp(upMHxd+7GGXoWq6hP)Sg zfeF-!-vI0^x`7QtXOcfz({e&te%C(>YFMTyAIEH~*By9(?ISz5l6By!adr#?;=0o# z+n(`rWg9YIL57eMpAs+opNO0xgLI7XEH;p5oYwk#K=KH^1BaZhybl|PZRzS_mKK{Y zD=woP(K{1x;xl-`G-XffMSuJ*dILYWA6?*Y?)6Tj719-%m3m#DrJQJn66*owQRn^s z_x8@i54R)U`gXhc!i%h@v&(hQze1ts#^s$42CScMU@Ng}v=>?=q->KXq#p-4&%s%i zAR(9RicZX`8`LiL5}NEC6V#A;LJO8hagLAaSG-Fs!~G=QZZif~S{HGue$RNxdE&LG z0Dee^O%T+%yxjwL7Jmc&q9RDFg!MHZ&b$&L3@KD;%o1RDB7qFTkp>H-&W@^9BAa<2 zK!7LTdX5Ce1zp!0>zn*Lf<2wR&R;eiTQR7lTG!Y}2JG(Zwtm(INl7a`d?eKLq!OsHW{5EYl!baHoq0YKKNP@O zsi2gR9FX2Q61l%ze2HCs#TC|2RpV>(NRarpEaku(l*C8AMNonUlozKJ3Ev9uh(Q^u zY8fT3^QqZvlyK0&Z?LVm-A3gpX%zhlgfr*@P?j;EKph%Pog}3n7`B(cYA@SjBFvF(2IBIMo)r}8#+Xo7CUdwbnEZ! z(K`nG`|87@Y1~t#z&P$@Eidn<9F`XNr+V}bU!EYxf}D`#c#tCfa#Sdk7{&6v0H##gRhR!&LH>UB+cQp6yTV2wTmC);KS0WG zkR3S;8S{VA!`{L#lEeho#O7y--ul*e*!J7+WK(s&UsC&4F&$X8Bs(3)plHA{9Z1O@7`r_G z`S#j_4pN!b(s|hr?`e;q0eR&6-pHS~SI@HBJbDr9*rQXHz$kjBp?lapY#=%s@;2GO zl)xHSXaubYequlXWU!Vb)5_`~j6n z>ODN!qr?<>sj5-Bta}C(EYMl&)4#iWY_k0KRJC!YfE4q z*W(AP(6vd{z^p0N3y;vC>-GA(P9#7VYv`aDo}}O9HwIQ&qjVT-5D)7`OGYffTKFv6 zz&C}NKFx+hteDDREoP@PG!Tz^vXk z2Il*?hPZMsOP6xC2EbAUuGh;ZIDbWN+Q2!x*rkLc z6(|sW8-t~I2}H(SCWT?IO1d;2t^@dzHmaziV zM$mOsasX|kopiEJ8Tk?hWd&cMdCa21W&>_--FJz8x|zfU8$~R`s2qNVSzC0H0>q}+ zl-?eKa`8^>5;r{1PCiva#-|$^To%`WDM#>!xD@+T#vJ5HWY$O-aW7?rhr|-_&i!@? zpf~X~F%v!yeh~*Vb=Z?J{f^yt|E1?CkL3=?2}vrz8saY5EUt;GUhkwEJ`|B3(FI|J z_^*a*gK}A8P<1P#j~;VWeHc_hf7tl(t6%$u?YLk^AB^#&Onz9Qn0M|%|1x;oUy^C} z3&>Y-jhGD?!_@p}tP5S~Y0( zvJ)+OZ;f=~%1bY`w;%E*JL;WB+8uwtRqs$a`h8eA6m1Qg5^eLQRseiQpVEFfg>8|@~^M$SApDdG@Dok4)u zi{-t@Fki=^EJ)72QM?0sC17gCfZtpI=k&rd%0j$EuQ!$Usik_k8}v0mxvYtR2A2^S z*2{dZI?2sAK)E2qKp?metPGN=D?&z4?9*}7780f;kiS#c0fIu3OP;}yh9a->sdh|L z<{W}E)!V;&tanofl$>55%F-<(0eGDP;dKGZEdvQFhAwH>*Eb-e6g@^GPF8i}oDC4N z7mITQk&bQ?sJ2$`<^NA9)B17R9!H9jLfss>-UcNU;FfD|HB%jdrvM}t|VEB zrD)@FS$z5`dfWy)(PmadqAy#J0mIk>7*5`UP5^X{!4r^RjNpTL8~_ zfT7>f2LNN@JkW2*D17!#Ht{N)YV@q4Bd8fkIth6{hRS(bbU>k#(7EV5VTvwEq&pP- zK3NWgX{)R|?&?@>A36F1_8*`5tnQcoOQzAw>@XXJ(3NKc)DNJ|@TC%HJG4Sx7_lFq zEox{-dxvB=Hq#@4%(`JySPqkP1kg{;Q?8LSXvaO!&jV-CSErtcBtRn%a5gYdm#kZ! z`{sRmA2Qb{WQoV6f4Nxl7ab??&pR~4GiZXPArT>2AaF(gVx|h~UKP;lh*xK?1e_Gf z%>4Nq+dJOzc9$cj(q#fb+XF{kRk@DXg&ftGs(|E;hrP*W&Yo)nqAP3K=-@%ODWej2 zH!}iAT>UeS)X$Hx%qQQO@1u-<-T&m1PufEdJvee58{u}vZEZOAGOigSu;NI-j*Nhe z475(0=5?V1G6C6OnlVS{gPd@VjJXfg>qrP#>*NA~={wt5f=if`y2>+Sdo104}`wt*y%oHw%HbT^oKsG^Qj8j zd)<$64*(B6S@+6>O{?Tx2KLZ=q`D=sLY~qd(h2K+rDz9s0DB3q;_C;IC}6wcBX*Fr z@MSrFwty^_@wtG?c;%l7*kWQ3bl0bn%P%mS#791rRM2^XO-~&|XT0-6$T|E+#&{lo ziY-r`W8*!c({tQYT|+0{nt8Qu`u~rEjE@taDWu=Y4t&=~*X{1Ty#a+XjS@;s zmm^AL%j23LE0TyqiiVHxD4z)+_y9pJg2Fmz+Jw*%^wJ~7&_CCx1HG0w2$)4M$ftmS z?0JK6Tt|4h$Ls6LKgo>;gzxMf-Ha{UHXh_}An$Zz%~5|t0}>hnOpJ?P_xHrPGhF;} z)OmbnOhLDhb4K79$zUW6K}z5(|H=-Lkz-L80CVTxXcW!3M)GpcU3c5fH{9qvXQ~u{ zjMUdDsPlJ*u(Mbnp{r+en#M*KL_VF=*wP#$#d@BR>4l3Hxk-KXYxlG5w%aa7f%QDf z4`d>p29>sF{iuVV>vs$aQ!ie-|NgdM=LHIK2*~I}i08O>R89jhC<%->(GEHc_^cD1 zMHm}oV)CR&q&;Yb2KU_SQ$6_`g+dpA%JSC+7|Zd3r!>I5qG3aQqka67pR`kcbDF*3 zkOQqp*A}-gw@%TMj(K`4SzqrXzBTNa9;3dss$1vs9(PVTQjPIoDl$7jvJ52_E9^7iquAolDj9Dd{jLBEm>a7?X5lk46QD8g zN+3W*XR!s$Vqm0~da#3WYjcyW)cG%e{!{zld*AEE8s{s5>0I!L1zk4isRKo7DI z#}W1;aNe9bO1f6qDJPw1OBOHnksqJ+p!-N{q7y3GfjuRNawjLd>FrVVp${Do+)JQJ zCm1^LrZ>Gw$<&nh3CralC2 zLA#(~%<>7j;k&~wlZEr7^SDZZGFS=lBenIm+iv&7I{|xEI(JAC3s*d z9ykxN>8f{8l4NUjI>Uc?59?pqZ?k62wPSwtW7~M+jlDycjzs^gr!W(Nw8i)fm$w2# zc1G=ct>l_--&aCT14Q1iSLwR|^YxW#YwV2??e_0i>*%N| zxZg?H`4NB7P-S4Znu%aU7(hnNfU_J?ssmflzQPu;!H{1^YzejSj-6?ELsg z0Uc^(biS%CBXNb=2hzE{(=NN(@xMOVw%m$u_e&lIhTZlNm*}PfM**EFW6EOwo#1vr z2u-0S^1UV<^XFv@<7*k{rIJ78Aau$yXw=^yvFyMApZASV{8AoAI$yaD+tkz3>&Y^H zpz?kEp79Kuib5AKf&0-j;?TuUEwsZ9eUp9tt6#Ati=Ot;ZkDoQ`}tBr%nn_D$PP)4 zyf5r59nwK3uBW}@d?ZH`ABjcKacnW@v6afC97gS#&fTv#F5~jpkXZgrwt!J-Yy!GJ z&>u0e&kQKFe_{zG2q+Nd=sgOMd0D*BKjWd>aNa;pze1U4fZUWffDsfNJq?8!$sn%L zAg-5@-w|MhgZsyW6g-p;%-}zhkc1?*CkT2Un_Mvh4KsKb!4S!>3yz4xk#cDh&t|VA zy*ym^Q5GRV6XkVx#iyl66e*8;5Khk7H8k5g5paJ(o_o?<1nw}>zbhx;`@TTg5JDe} zkE70cFNqV#IlPE9ml1R&IE_nnE7v1|YanG1R1;?~4dlFY&$h)&miVW+~@m@KvBCz25xCG=(i&?yMiEkQKqqc}zK1-mZ_)hnSKXkOy9mhr8GC|EmI_sNt z<%p0|jw`h8QzLE0tQmID8{XiCi1)_xlo#ce!GkkzV@%&cmf$f8!!_SYR>7toma>T_ z`j2*DERQ|*m!iXB{XM$z-RNk_h5_VYK=i~dQMrwH$xxtuud3q1egKUuIqq!JJk-28d zBp;<_%a_wnJ;grvAD_`Pu}l33z=t&@G3yAaCvI0%ze=EfjAo{tAh`svF}ZOe^h}!K z7@3xwZBIFeE}U~6d*!1gx|i$R2YuBjFC*);A%OD7MbXa_!=i49bbKsXved4=@+vt- zru>Co`I=oFsXO;E3kceH0HnI3pKK&WrzFc{n2v^?0kn)MQwJS*kjnuy0Adsfyd`OOL(UCJAWKMF)C6}n} z;TOPBTE#U2t3+m5folV1>QGlk@w>XaoSuspE%K3lDAlLn$o-tk;s}kPJAY%VplSNd zl)2EO*dqkHMj}odp|cM9ZHmpFGhOeZ3<53^@CdxhfXIy|9I^{^m{A942i>rdLh6z< zK}yG<)N&LHc`p72%7Iw|<@gbqq|72|FY7@0x#D)6;GHnpD{Rh;`Sz>hPp}<#+S%IM zyR1XBok~Yw@wpz#j(|3Nm+RX^I;Qty`^M8j+D{#s7V4cxiV-N!e-mFLs3XuTb>hl@ z@ILs)x6z41C_8Cb#`OhkNEtUYP$zU8+0IVKe+DFdpdlUP*b!tLk_`?-CpeIwCFJOQ zkdC0kK8mMv*9nyo@}Ss41<c9|Oh#8=Q9 z+F?hWC)8s^tce>U2KP8ca)oSB7W(mA)c2VJ_Qrjh+Cl8K!%jQci6@gqoCmSIlfQ(>JDBoGY)9_kop#bq>=OQfdzzc; z9Xa=SkGM+b@C(}ynR|QL|0L{{$HR(eGLAtTDGrBzY!Pw z=m+1oZ~fQTtw;Xn*#dNe1|z?5EMyCh& z&`$0X#k?$NMbHLte;!Bc8}%Y7@9XO}z6s2?=lwaI3X0BSB&z2d>)MNNb}8UzK=S!rq4^n6yd> znW{1dB{`18dlIQr8G#H!F}#((V>`Tk=)c-X?cJGT+axDAoE{}c*b9EgIG2+Y-pO=& z>=Uxfeg^OWo9myp6Ro0doX3V_$S7s|^kwl08^S$li_4JhO02B^M8GIte8)HL>64x^ z#hdq?_s8>W>7vC}FFkH+ZF3#2s;TpJ&h%EZ9+u-I)wf%`!Zr~|v0kpeF?K&ic9_LN z`A~P?SMO_^Y_f^V4S^Q^qh9xWTS;sR$abV1@N1%10-Kuk4i4D%J1?*U4nEjwCEtDh zd?u<&_aQbYUJ;_^UgcHBeAB2 z>2i#=_xRCAUzko^*wFIm^GI@Cl*#n@k#m(zu&Js^KjpmphCCR7=8cjO>WY8hUI62DeoV&`ZAEf|v;jt~ z^|ycfT=GB?LgzTM0i=E`4|IegV2p0#E9qRD?6Z{`BqxdZ5S8G_EEdX**#V4pjE;ok zr>Ljg=m^l3>Z<7E%*`d8C#4W3=%}M;IFR=10yS=~^16hykVs(vVQ8dLL z(eVR{0RFdx4nZr*iueNk>HGE;(SbPccjXo$% z^WD6=Nv5-42c8{8>}+(_B*uG3F_tWVF1y@c!V%w!jO+Z_g4->%k2X_Y&}!YW5}-#J zDYJ|T*p7ntBZLm<3iY5)e$MYj*&70ooib+m>xz{y-aTWHHjbj}o@kIWW73xm zs=e55fNSIc=(N*7ztymJ1u=w>Jyzfc_czNf^Pa)}(ak2|0aJ?AJhyp}Gl7_b_xlnN z;d2RPI;1?7uYn4-)L!YDeDU@>?P#Z*cDfz>#y3e*m4x*Ty1iokJ~(xX;s@C+uGQ6% zKkow^& zX0rYIxL?_?k3Y^;{jEe0VMJ~d^a|nk#}Zeg&&e`@PAcf^$4s2NPMZV-scsl zgmPmzhrkE`&tu5(s*dE}l~76O5Uv;r$*J5p9#4jJ?ty*b z3^`^Z2=n+Yk)AV-Bq6jD1~Xz0AjqsUAlXi!9xy+R0d(*{8ObVu_aoFWkMFy&sTu7f zXu|n&?&TE7dA1J&RK=Pg6cT5NQmCDD3WQKZk1e~dbMDWm&Iy!P2{>zlT4=^pVmd+o zc-}eo$iojwQS=^p4WP3Dc|a#cIvkQUb`*q0w2L;=7UZKw%E&ISr{nkdd+i0omScb0sJi^-T)8ySr?&O*gYwzxvg>8UZqi3U#a$cMJ-S5E;UNaWD0& zWA{UpM{VPGcO;@K&X;S@l25t(`h*j0+0tbp6Qy8q!-0%oQD;f6sIA~jZD~{z^Qzar z&VKWUKiKgnoocT?^#wSG=brQ-e`+&p^lEFPhmsAh z;1K|gc@Bpi1}5Z?*#`~M9RQw^JZJEh=RkIn@x03i$&21cfR4_2;Gy&B)7yM~Z0Jxt zQ|39(_>@y2_D7MDPZz4!-*oUaurZ7r!>c%Y{T8k1zyYBRNZrtjKz7QE5kTlmXAXLUj$luqCBJzxE*|9f@T13@4wq3nJyR&_ zRASk-&_OkzdXVHdw>0}Qnctp%n#)<8l4shBEvByU8JmeMa{D8Ffv4y+%Q|HB)XrL$ zXQs!wUg{ml+&hnWr%jtVJ*M`F(a;JgC(3IBX|fQfFZtHH4?FyDo4@g<)-$AlPr*)O zV~ckRz%%R@&Yt}qsDJ1#`n3W^4F1e1X+I6N~rYV|j<#3_YZ?a3)cr;WJE>@pu4| zkmtlF)B<~sDrb9!<|G|_36bj5!br=B#ki+D|4y`6gcZ|xO(zRE|?m&#T% zTM7HkXWXC>vND;@b0PBR?=LVQ`9qNJ7vw9H9O&;-^~V5pqTbMmWAX|f@i#n!pU6%b zvNJi$rJSU_^RQxSBpp6wcpcVv?`(uc;pGjD!d1x677f zi6iuNUDmz$c}Aq6WAcc&rpynX19+Ao1{wW-4LrUVEg1K&lYioS>G*#9oX1kKKhO}} zO*&#fu%XZpeU2%{wfaHyN5tWW?o0Kny|xn5~Jduwkw&kIQ2sG{bLT8#136(0$|rqZFAK+&@r%A?L&r zF0U%n;|dbcssSsBsQZFN~L?Xv({x1Dk?X0{8Mw<^c~X!?Aeqt0TWbqntVd zunTitZMAQ-_2g5J+nK*T!|!QrXi{L^B}YYKG+HNs4uR~1;2NJ9gT^r$q>DPzgWNBg z_YbbHU0$@aZMV~o*3E927+F=Dx`1l~?xo08#jWrQzHt4WM;>X-P4%h|d=fpT#8fXA ziW5JUDV3F}u~hV+`3?zNZw@`PX8DW{)dpZVMuY{#8+W4? zOP4D+)3eAOb%F-q6d}Ei?7Uo8i)^j*DWvG78+)|@npA@8tn@c^xDtHlY1N7QQWxER zh-Q&wMGq;+IdZ{g=K$VW2B)LYlW<`eUg--h(z$ez`TMo^&=bs?M5ro`;t#7r<_U*xEtqP)^ySQy|wD zA{!({v}dbrx3TSa+(9zRW*W!Y6*5Fe7j?$pMctz_8G8q9K@XIq=j>y_G;#M+_%gMRcTz5aEboDrs4qbp zeh>L#gq?C#l$Yzlgw6@fqHdxyEO6ma-4!(DyFu@0SDR!3{Rn!3i*CqPVNdW`UT2{v zBcc%jSIXN6pRuFDGC18-R@f8SAj((0Jn41b>oGl(RBdi$zJl}`1Uw)3-sU~ zY@ojf8zuDhkizU}1V-vooO|$(&lOIUi~=rtG(*27mVx&s@LpsOJ;7Ft2TPVL@iNNq zUK2QvOBk_B*k{iFUx#uBH@cA>L7*pfqA`gxHaqy2`XOHF8oUCKJ@mwIzu+w(&z5;zTv_Omz^iF%6Kv^JltZbX>1HM4<5+mQ#D{f)-(y%AXbX?;9$r)mx zEY>08e|(xdMCMKmDgO~U@MpzRz1n%{ZD`9Gq!NyLZ1yn44@i&J+SGa zf1@}N@J^?pWayd53_48gI?&&ToAJMC?-co3-*Za!_9dNySVta%$@m*ZNp%OHevf^GmuRLOh~;tA9XBBp?ZqYFpN`9#2)Bz`6+X=!coK#zcq-Z2D)vS>q2 z>p^G$lIb+8WnhyX7(>sEk48%eya!s(SK3y}^?*XOq>WQWpG=|?yjMuq+04l|X_8_h z@E$zroH8nrI#V7WZRZ>zLzy^7@O^4M!Kun*nhn!*5r}nhwyX(&HUv&rUvZV)eES{V zv&6fa8tc4n86ZM?rWEsSSH8mr&!HKLGp(i7r&C}sl3!0RTI9y(KR^EktC7;hH)r8# z1iRpPJwYBkjRRa~6l|4bqgRTu&GtLkf?ZyqBorB81$yK2qW2z4OWmz+Kb#| z0*qXt^V}N=UaTiU&H+ZJSwn&@qwk=1Fv;*>U`TQ?_DqS-Z>{q;avA}N^jPP-2VG>X z4Q(nLC+L@fCx|XmN1o+6JL1BJnKNeSILR)#Tc>R^d&IynGb3weBpW8%6EZVZIlP2vfXUnm^}1EPwn!yI1lJhklmC_@SS-y$4B0R%D30<=N@mVH6 z9Tz;8kk0$^Fl?mcH~gsHTG)k*LlPy>;S2OUvdyNI%o6a;WNTydP<)Kc}^g>78!`>bPHYmRWut_QJxZ{qy?YQHP^R~Oa6{)a`3F|_8;w$nG zRov-KJPci#S;RH`CiWKeSg`n;9Dw|U<#7Om6p}Kt_8Nd7jc38K z0Sf~+mMLHv_?tijnIm{$H)HBBpdb~a3Bd_~X)i(uu?YM)E?d^_WyB7;yo*3rL7(^+ z)BB>Qgzr7CU=1oGeiBMX03A^hmF?3|QCbP{N(B?XW=ss3s%M!ZGdwWl*QQTvRgl)_ zn{}~q57Q(uFen?X1leqdM3LSjf>lOeNG7}cdi0zU9hFCQeWN%XS)&%;44z_-KJutP zpSvG}qQ36aah1-5yadH08E0qNlTP}zO%)AUJK4+BNsOiVLA!X~pDq3|os-_3nyIzc z)zR&A<~ev=B_$oy-#yahjW^oFUb)9UGQ=dNk}c6;l9EIbOkysBAYP$37#P-A@)<3@ zOPjl}dP1r8Ajky8lbOaYx~^0?%`I(q;6ZP)>MA9E3YdL%0=F!Bnh3p%nUkhMMVfVHo64GrG&N+J}e5ExF}k>B&Y0-^ny zp!|CVy&0VIKA)MQd#F1>1vUXgjpLv*09(TSeDZ8?g%m*g<2&1n=+Fi`OWP;QX4HBI zladzMT;7Y}#!l%E{TJ^9I7?*Rco{3(2OY~;2AnDH!Ilv?qWestpWfQ$*H1d(M0@zr zhpn})!Pg%1ja2})KuNzk`IylFkgVWEKCrdNEB=Lw`&+05BW}V_FVpi1mmK0d4!t4fDT7SF#rM>c#a-03ji4) zfkii2tH*b}IWppp4`8VPfZrfs;cEc>1MIo5Qu0Q9q=ufvl3b__;sd+CVncdme+R@% z>^&66Qt*Zh1lyE;l{Sv|+5Lc)!dah21 zJ@yNU$PP50Zm)ZJ@1XbxAlDN?$Z-&nbB_;nM2`4!Mzn7fy)$_|(EZIC&||iOZ?u{7 zG6s#-9ceeRmbQp%(2%m6rs)TzoF0o+{w=_kCh$D!RqnWOUP}LX4ta(r_z2#IoM3;^ zu^gF(@5FEDCAK`}f%wy7A3cXH#Rjb}pm$}&#+5Pja};^kv%yMO+waI}CFXSrK%9$q z&;$FPJj~dfbAE%4k${D)h^uZ#W20OKtgtWWM#M%5{+)1L^LMKpXyCTKKv=#e#M+dR zM5>H=op=GPl>gkjCiRE?K=K>;U_!`LymW|sfZtUd`O^GNH?IJ@@PIQFTdvstk?{z;G@>8ASn0 zY=%V(bQGIe3FuFkZXI3c8a4ZwpC5Tk^VtAui4ob&RDz?rE^kX%tQDimvaW15nWfjEe-8%Er4{q=UqMHgEg@5fZ&i1dDbN0|^# z-a+p;G(^ZTR>%$l>P|_)9Dy5wBEg=1vM+u4%RViUDJ;>ULC~VIr7Vo_=z{Ux(%ihl zWli^#5e4;tgL4&1ok&`^^`L_ew&!iWrPq}@hD1HhhMWFw=U#BWefeu&v_lSigKe|jb~a7-Oi>bp9CgZoBzCYN zPFH+7j*cB>VX$dj>H)Hb!6(QdaYA>|7Yq}>dnbLsoY561c~oDy|JXW%`ufK7zYOyeKGN$XiP z%Iz;}uSu|HN%nTzc~?13Iv0xsR=P_&p&z5wj9x<@Yy&{uppAEy=$g~3Knt(O~l#U$HhG_FjpAA5H=`)ZOd<93A95LI6B|zBNoIXjN2yFS= zJ4HlGkaOq-f4B!<%sKpXy<&8|igj^OKIdhCRteN|JfLpy$=6n^-rgCjI)R+Kz16cm z(ySt;%AbJPP2co$45{>fJ?9~no~2`t9k}sl1f205{wn!I{LEx~-qu^#FONIke)`j& z+eY&@ldWd6DQ3GBfj95eOPN_k5I6$v3&yr}BFJ_lqifPXcs>!0%7C7Lbl$?xB}*1d z4p;c-2=-uY0Kc;g&MTojY7K5^Kwq#K#5c$nzMzcj3p|qpE6?P4Ad_97t*uSx;=Oq8 zGGFL>C4Vw`_jBo893zQAj{tO~5;AT@rm)ZdFF@I?LKEZ;nvqzn3E&I&p@+~PnV~Z_ z?Gfd8XR~PONAZJu7+B%Ab?ewMfTNi ze#8Fu_nYjTKb~Vpf8@iqV7KR6Lu;F2wn^5ZSh7#C@baz!w{f^UshG#dEXi@(FIpj& z=tw27%np47Vumns9SJn&%yxyQG1E`+wC;nh*`e#5SK^U>1xI{6%4v(s9<3P*=r1uSG)4~7*8;SQ=di^tqlIkp8Px1l(3^_8*TIYM054L# zymD)T6!>(C-e@GE1lh>w4Wx1sjKbJ+z9Av&<3tq_s0@oZ^fWT1H`*4{FA+k7Bd1pr zkU&7cR-BUnQ0LChZV?%QgaHaX5q6=tD@Ew?>E5i{%j*a(BM4o+1G>)CxL`OtOe+78 z!kKk+^(lDlRb3}3C{>`;-EZA}N;LX-W~GlDGFP9`hVEX<;y0n*)74D^9=|&l@2zca zwEn?9-P>i8rjh_UHIy7*t56vFP>)gJ^Mprj$Uw4I!3(=%{_2;iz}X|10TMa2|M|P_Y_EUA{%Q|9$;znKO!f__np;?hS!az(w3-|0tx-m( zMto9=YEwm8(!3_evLJ?j!jbHmik6tr%@v%9h9)opFh{$^X?<9UiY$VEOO~s z)P(v)Z)ya2B#3UPgeVnt22mz3ovwET=^wjHSF5nwZ@<-k|A*hpipppzV1tf~WN#?Q zdan(T$wY#Ie#sr{sxj)5Ypbnw=1klDWiPXje(F>9vtxf{e^DZE%?&r&WmjEoXP%xXs`i8eDP`a-_NZ$`bKhFGcuMeP=k z2!7dB+^1?u1a!&EfQG40KCN5#xe=D`dD2`2F8s}JAbObeCz)ra!t!=@6rXGj%}t(o z5d7CDux8Z!=9_O;^7fCJ23-lr2D**RVBY{b0^E_Q9hHEyLY86x7|V}?zVf%^H+e`-q>FR`Y^Ca(|l#$Li(z9Zk>zT9mg zj+J%O01kIh`tkHr3q_b!?quoA#0gbTnPk;^_A{UQv^6)@OE`vI-`Ssm-Se5{Ad%I1 zz5m_V2r6l;uaykcSZza%)iu`Y-MZe=V2#ZMVmow=@7q@^>BphBwl>*^KlTyZX1i@= z>!llooXRhH0t>P(j6FSQJEOexsAo`J1`qBE;5(_v>G8)OXN#9SEt(Wbzs#Zzu74>5 z@OTUs^iH50?&Ugk?d|T7+{A1J@$5FORd?sk( zJi&P;I)V5JcvcDPN~?)rv2-kDqx|lP0Qn%m139mRO!g9=YapR6e}@jvC+W~X8p6ho;zWRt9WU{!gjJJd;|nB0ss#MXkZ>h7QAUVFxnDGxqImTc zd+%-E{J{_GFIQe^x8HrYUHF$v>^ndBjvexrx7cnk+Qr&t&D8UBBB~r!mE(|(y~Ru< z{1vlw64}#&jz(r|Vk4RHRtdBSvzo9%hT4~<35OKBddG;$LLW#}iCMf;U4Ju3NK#6^ zg#C-;G&(sb65n45Eb-)C22lHz$5dC5`Gt{ zsJi}-X~_57bB|qo;l&DU71Y)7EwPwh>x4um6)k%Ygzj%>YO+HQee>w(4297k{l*`Y zk4w3nr-7v zHdZh?)22Dg&wx_Do&EqeNCyZyG?tYg_S{}x>* zfq8$gtyHkozI3Tick{$l_-&X+A&Y|EA|wnra+&>p`3 z0ek%6hx~)__uhB6EnmLWdBZxYkgrg((O%D>fh(2}C8J}7&(k0eaW6ew1fRM`M|kgR zZb?O+)CN^%^icacBpG&5B9dy+G#mgjCw;_7iEa_J5*Wf4 zEDjJ!HijG-r46j@BtYgnf5KJ+=?a;<&SrFI>`1Ars*aL1gn9e+S!L%jh zjQjYTU=SXnhpCS~OGW=)y2s1?Te-UI<&SC0IzY-sLgmv0u_Pbd$Efhe8*k!?-KRhK zNo$w>G$^s1B>tffe7;0n^?RWr2|tbod&;MnXpeuxUw`u%Eoj0zW^6vAzpNGCYOAg6 zu}2=YbIv;3uDbFnd*ZRjlz>gOd2{Ev->FvuPKO@P;JkQG>ICxa^^oj&C#lZSNo0bV z4jr8x_SBP4*&TP?X}8^Si(P%ym9}`%5)TrfbG76N3b;)YsyGiS&}kAAr;YBVeesXG zgEsnsU;WvR&UV{))A_dLmRq_XaAD>-{q7sGQ~>pNl$`R9vYdkYZ>o0!_SuCOoM#W; z_mItKYj%6fD;w$?-PiJLbrrq*VXyIP(7jeN!X`1;+w3SF5N#OogjU=SqE`e-?sxUi z+o}I^4;?|d*%{NS%cJuy7ZvB&5T2t>k+jCL26i=PG~D%B*O_&q>i9Ho{pmUj_*yz$ zq^@q;I7%l`OK8Gp|LWy~y2R5-k^x3*I;H=V@xm9rz&`WYPuthO{@?bpm%iNn2|7X0 z#taGH?2b}&vnO|YPb__)-RLCtFcT(f!*BcznWClCWrT2Cg%3)~db+#qXTSWV{E+;T zKTFjqC*%c5MUSCL8RA{oi#SKFc@rIkNEq?L!3Q5Kx=IEmqgi&ss2m2eaS$W8@BsaQ zAC#MPhmX)U(M5LyLfGy|JVDxyeM{uG^#RIY#ErUg&hwN*+t#JL9Qnj&uzBi(ci(9@ z-f*3Dbo9k+4PEy#3i>B-j=Z8z*b>?WO=%DI7x{tC+=tF%cc~Ni)~MXKyzOnWbqy|6 zx{3ce@8cb-*E|1Cf1XfzUnNxjzJb}fI!sVM+73tjavWMB= zUNA=wp(P0y{(yK6KLJm%Mv*i+GpJT4qvgxL_U}pxH4zjnr z^{w`v_Z($!I^7~jW9`>1)Tw}JTmklF@E9r$7(5b*c!}GS@+FrTm zE1iD4n>S8+`1b3|^&J7)L?Xb5!FlJMXaD(`|M1a)eg!RzwoplT+-e||^5jiH9tq;< zXa2$3l}ux#mapN;^bA&`%#>UwOhAZJbxCgVwc7-?n` z64pMk$qv0o%en{bfc;)=Kl}MFC7^nz60KO95rBcE9d3{X(2VzB=wYJwrk8-W1C$j{ z1Z0pyIoZQTw*{MvwYM+xQH)z}xmf~ovE6>_t+w!qr(6ko8C6u$($dyqH{5iSC+5Dx zt?0zmTH3~R?I9(*tk+{r>{q|^1^ec=zG-zeQ~cY~B(Hv-NRM;Movs;?B7gu8I25e5 zIs^^+V*n;ij@}^XIv|1#s_M1X5^A-Fkt-A`gE8t$U63v6=klh2(Z5lx-{=+MH>NuB z44Wiio~B->krssupwdar^Ly_0E$(Q_pSsifTbDH_6;41PR;(>>J+Zc!HaLb8A{ zB0wQH%yyvz?MmX9V*QEFeAYhl@lRNnl6#4W%9HUd%A~H8Q3;d-@IF1@_e}(JU;)AL zu|PQ(38$Cp4b8aU4X6m>>og@Le0n0m+o0E%-$|h9ayoJ;?sq3y5<;HsQ=;{l5}@1f zxWkWsz4R~kzR3hctT!-XfG!P57Dz;CJB}7Uq&*oH zJs}D7<=x0Gas|K88(Qj+M*@xw!=;f?BYu<_cDiu^81xVo1+Iv5J%RU zS3>dwKqkrnebIe@`><79Yp89or=NPlzVnT**hLqdZ%r+&ZgBmZ*8*rsn|#fs-c64+ zx{EI0jF2M$`S5p050aNmlU_mMExG^B_r7ljzW$I{|ElL#P8!>r>k0N6pxic~=<0MJ zFyx)^1)2hLX3ev6&Nw5M;Wtb&$d~!W_iLwlEJ8J+QsF|mm8aNQAcchZdyny zK&VKM4%u8^!DX62rYN7lHC&R>6Dr>l|Uu#i;@JM zjIFW-yKZma{oZ%1RtYaU-_YC=_D>GkZ=>9T_MF3Sj;vYZJ<>S$Sxk3+>WRnfKR^8m zyYuFoY@=DzU1#|2H1`plV2?N_Nya_`Db=i%MJ}+TtX=c3CMXfb#!n%cRNIg-reSA7 zTLx%~9KgryP>x_J?q_KNyzmYY*>jdZCEw_XVLCVTqJt4VuJO5lISB1Ta6ezmJseufz}a#cRVg;76#Bc^!eo_pGx4}Xj8zWeSrYvxQFl5EAuDlJ956`f?e#SlTK1_Exl5S>?JVVz-jT_9zpOrU>W?-FoN87h;8N?5Bssd${Az6|M4pDB!Ie{*`PC)=uDxlNqo8|YAL zk?l`$U|7 z@t>`E#!T@{&tgC1f4yEsSqZDtf2@40jUScIS4hLN2I9;zjM%vXct3hYEX|%4|MBV1 z+HuGJN_x=ce`BlYaCJW~TabRtM*?NHu-iOeS6>@TyCl2l1MxRD20dUlUB6@(pZWPO ze%aomm|fEC_B3UC1lB^YO2~X*O#uJl18vRrCg2;&P$}Q5D(F`R%F0e5W}hNI*uMmp zoJRd5*Sue^t-}8CWAUC2#r1SlKltE-cK`kN`qyOczyE%F;DHBh@sj1TKiDtIAqJ1w zx!h*>1`j-jD&j4mM>KD3YE(QNpX;M@7TZMJ=rIcZKsE~=W6#k+)=VeN^>7mbD)cfG^yWagS``mwiUbeo@W5bC3r4Mf7qF&UWx&VwM4=DHW z;G+c8u?!@}nTO;+Od0qMe?gm8s%B zN?cxh(1G^Z&;6%0G}X%{C>IpJ#=dC`M58j{gD2jTs&jTiV?@;NBEe7t31BcZ<;p{h zG9V-*&lslh66p;MDJ%f>hG<-AR|3XwC@3T72oAwpb8}-cO0*(^cbyXi__1g^_tJKf zZiJEzPJBAFeygjRY;Du0Sz~LnO_jmzlY{S-fHJ*fK!VmU9F(&jmcW2372phuL`)W7 zT?J!3WyGO6s;<0XeXU;JjAp5nmP{>{5J(rY-C1~ zic*4{qlhR6w176fq7BOJ3aE!!+z(I&fksO!!&FXo_TM)li=eDbVOsg4(%s zsdX$_V#^mVw8e{_v_~I)z@B{cQG4{k`*nQC9)I{j>sr3lmMnZqj;&jPzRH(K)u^8J zDzv#FzJ*F4On_Wn>_(fTfYbvS?dg%Bmi%JqNDy*V0Yid}J2vi1I7+rMNbV1WwVhkeI;l$g0b0DX1C+-CG2Q zxgl2qIy{03L}@pAPp4N-BO>t~l$>w``K@VMn{B_-j`pU*4z-Vc;^TJKx#!qlue!>9 z{hO2Rs1JU?cHDIbt4EHW6dya-!BM&;c}}M~n)F0npg%Mj8jeIdKf9Duhmlc$d)QTy z-&ixCxDCs zyo2W{+dCG-e-eug3A_WO9lVDQs@AqPmw{7GK1GSJ5;xH|KGVTSd2A+D3Ft-g2p~Z~ zwkew#CbhB~j2N{@CiqTxjbwC2Ym2ouH28*o;M0#iW;b4YjgKbZdF$Wp!F%qpCmw#- zo_ypH>+g~?Rh??}T#amJgJ@i@`qqn%4Z=pzhs0Tx5N(+?61E*#z)^E;B+wO*Aj%xZ zQAmdv_2+jSDt0k=H_GcWa7}*MZo2tS1vWRkT*E_bM!o|G+R|Y+N}F)Kqlq*C@9BgA z30`pMzR{R$4P{q?J9w9uz;Yr@5IO9ijodmlUY z#1nnbhhO~iS9ah52Uu&%H0u?ep*3~%5k(mR=a-(zL|UzKlqECzwfP;h6Zd6XbYEc` z9d$n1nK%~UC9wc^CL|?kb6{bI6#yoZP{1oX8SpLm8UG3bJQTk?SRCk&_^7B?CBTC+ zW+Lq!l7;`Gej#rg)<&!g5L=Y-9}Tn{yNNu~d5pcRmjAD7pc6mnns#_R`eZ!nBd^i} zsdnDS;k7>9`67`fBpVZMD*zN^iMMl z%U;QzvEG`TpCo>+TIUDKEy&D9Z;yDyC^ZRmCf5E8*Y!Lz>S!}Ep&u06OP|8{+I81m=Sj5t2|*sq zkap4SB=V$dPfP8B-!$MBdA z*y40T2;&q^6e6>^6@}zZX1ti|{GNgVl+P3Ri(s02^ZvB~jG)(p_dHYJT>t?_qmp1Y z)rqBhgyX(-`Sd%WHfmK?n#pwf%%SHJv)EnM`p0@f+s z(Etxv?*_jKq`Zfx2p~AG1QKiv;;?7|5=gUIhv_{&U0mnvR_&vu2&>9egWu(-z8Sa8kH)5dU^0GY*12< zj6^^aqX8ZS$v8wnW*#IXKQ0>z(y6}(;KT4CH7fTA11gwU-7n&3((x@HqLv52X^XVGDUUEF_(&+T#79r=}i&h--`snZR47-NA zyt(X2Ds)cIBBOI4i3gjMu^Tw+r@2%5j*uML{#=i2kuiNj>I@>Pz)1T}=KJ)K3 zYi5g&NcQzAQCC@mx_3M$3H_UzSYJEY>5mabv`}GqM1mJKA-=`z0h4IYXaULI;w6i` zvxs{oGGkHYI~IRGTS&W7hJMuzn?fDwxN#(z;Z}NGL2996Br4GzD)KMyC_{oEU+1RcfAr} zj$n<-t@7V>P4%pk{i=mNLOSDWkQ?2D9r4}po&J(D-3!9^u%RTeYI6yZA4W^~f`acZ zFFOS7;UQ+J5)>P_1BDgWTyveO%QXF5zdBZ~D0@N#}AWG)3pNZlZBZG;2ykS7T z&{6u`-LK@CPxpy#n{2X$9eD5|cG9m;v1_is#?CtT5B9dVzu9KYo^Cbu)jk?MSwi56 zsNTuD7!@MOfq$MftA43xB-Y3QH22HMhptiQwDBIeJFoS;j$i`x251|6p!3{6`xlqp zrj(Bf$U!2y?tWE3z0qN=a}8eedq;bxbcCs&1lQvTTm|q90U$@>G0GeXG{+Oz|6>5Z z;Yp%*{)#`YE0RgRAd+jP*&#V+x?zv7OO=4##r^`r(me)N@^5&?vy{hu#BU5}#8*Wk zhDyD3c`4)wsFWw~*g^*XkAWv3=%XLS2hq5kBoSXRBO~n*GLBzkRwM&fBBJXrcIBT5 z@CrMCpBs(IBB@&w@+E|^C_h;sn_3df`bV52C)N$^wwryU)&tK?Ie(Zy(} z{DS-v%PsMv9)Bwa!;j6FHOCh0vYQ=p*rE2dZ~eEOef}Tqnj8OSSN!c-JMpwr?Zcn? zciZQ+d)vItHnEkG*X1n96Rq2O#1r<^Q%?n*{T-oaYXWrI z^{j-?7HAha?XqRdRCmSDb@gtO-JeP4n;IH@ZxY&yufRXcl=$YRqa*17C6CX=G6qlx zjTjn=9tM&$8UgXW$3oVFX=phG)z@e-rIs>ykp!pQc<(_~8DNe~l_8B6z&T8#apmi4 zf{A*C5<2?itn_XiP-A1W<;XPXMz1h}1PKHs5Y&$ZHlhO~*wBIAN{nr9UnHNr6QPJe z69);gG0rGt2xA)1QCh^iI44N}VkC#2^q@2E%${hBH`m}t3RW4IE=RklLrlk4^2@Xf z@dTs4&2~H32ao=c-FnOIw%>mH`Lsa5%M?v;AW^4PwtU%QJM+vloqznzl(xY^rVNS> z;=A`Edf*p5R}n-VPw)aANs7F~Ms=VJWP<5~_4RzuE{v4(MNK7q zA&90<{;3*hqKLMovC$foOgUd_6?}`QyqEgW!VH$U7Hy1A3?$DPndS&hDTCf-<0d(VlqtQD5V@Hh4k?1==^ZwmGu)y{3jqgg^mX-EpAyL~8HV${SN&;T6EU;TL*GhuE@ZOWaWdp*!o=arbPYUIvz# z7z79;ou0%Aks&bKn}BR%FS7?W*XO&ANzRa4U*oB=Xq%U-^88xS$@6R=c?tS7Egf0c zJZ;)Eezo8I_6#}KZk?`BqPx_mfuR#V6?Pmz7r>--R~Nn8VZY!P*F9NR8=wVdf%{$O z#CKm~t#+n<^W969mN3-{S*7Dlmeh}Qka_2u%452{%ZBKO+%O#tn@5LNbUYL?t2UJZ z`>0!rBYGV+)$N5U$2s;8$EwrSfE}>uD4`lxU3s-V@#GVF4jxCF6UL56PYkqy?~oE) zdXlJM3Aym^a(Wgx3KEI1j|CFEv8D`J^51no8(Y$ru<4Uk&#@!VmEg}v2eCigTY0}& zRnQ_vXR!g4&3*9G_c+iwn`|;&yS=m9mUj;ZcJ*4%fc$5Hz5UX4+3Cshlbdh3l^t}* zq4xd%{jptn?e%uu-)^v9pL~kF`K^cBHrsCPNmC~yC8{HS&HaYTCu!mR_*d*Z!4CYu z6ydW*1D!bfx1njbcWwnu))nGiaSlyta2TL;0$=B3e^xw$onSpbf3K^a|6c)ODdI8g z4so+D&5|ABOE}mAd{}wZ9=q?dDH?|T51rr~4Pw?4o#HGHL7(xZ&MTDz{-Ype2w#HF zod`WnE1}2yBgo)~?1bn65|i^cpY{FFu zdGv<3f@{!$0h(pY+wI|pAJH|vQr9S>4A?o3i3z~uoy<<>zl#)Qs z-I!u4)h-a4@poBQvD*XkN7Mxyz+N3OP#DY1ybiJf&LhP>+&3`LqkBVk-Ts23Yo^CG z24953Zd6ip_St9I*T3>LYiVtLduI?U{ABxFy)SD4Wl6oM^ z<=wuUxs;=>PQObD_~aOM>|*+){-%!H58nyesVl$3fA1yJIrMiLiS9UJ{sw5H_pXX| zxh9Z0dq6I-(8h0l^E>v=cfZ?Ks2vzNcLr(?<KJyv-)EB<$Bfunb z7#~Leq#1f9lOdI>veA`FAb1=PDiiSWU_???d3edxTI#?jUrsscMElAYK5yNf?UJ+T z%y2nZ-Pr&MI=lXft|Y{qXAtA`D9&kT1V$^&zk@A)@I7%x%KvoXrS{TSzTDcEwtLyx zPCo*vhZUU*+?%!sh-XKEzsqZ;u}%7)61*vDPlx^Vhu^k8%2qbkH`y}rq^i0$?1*UT zW$QUU<%9FXrlF6q23CQI2-|4d}B;#z@Qs3BMC!Tz|?YPTs*59q5TULkNIMeY$ z6KGS0@pu@{nxIki)cx5W09}EuTWqnpEnB?U_I>56?7n*+uo_j7&H*}%n1T#Xcqh~F z`8-+J**@J9^@mT+E47$_%N>}YpIz2fC+^RBW7m8Zjgq+Bu!~Veo~IKtZ5Zd!n`cSx zyjQpc(Aa0%=sDI*>JXzwrRSMx0i+BoU6roKI|=@=9h3v0ce&;??KUH-l#jg!kUfC^ zD^9YbKXR14;SH}>K-j9lqQ!#^x5AH*dbpnKQ>` z%$jM_XUwpTHrmK{il04qj>{BCwV z*eCb|&8Z7CkB;M*l27o7zOkl|IA!+S`F7fGPP6%&Y*OquGty!Q_9AfEksKkbm~nh3 zfX|}*)I0XET1EGET0`1 z=(9%2Uzcpy(eHh~-FoY7uJpdaAo_q^(a|@`lZ^meMxd$6a+z1#k*Q4hJR#D(*b)2( z9enXgx2bmFUoW#2dX^-CeIEEsDz=Je%8+`Kkb@ZsmA|jn`CailfrRr@bn<$Oe$NIf z*G#h%qY|hCbf{CZ`1wzM+D<(7IN6-oQ;5z@nuOfr3$W+JEZBqe>mAY=PdugT#9{1R z#7L*d)5OEN#w@q)fnodl*S~J>f8YB(`NWTueY1lHM-xMNzapSA*Wmqe9NSL#$Ge)8 z`&@hNwRXfi-eEIm&a{m;p6|A*skO;xw_?Ni{MxJ;v#d?ATfO2CtXsbvq}|*iVnl#8vqaE^HHH=>3_o?Gsq^LpxxpX9puO&@f&e5c8)K= z3@AY&Q72BO)A3v1`i{N*9dGy8)ol{fOG|MYn*}Fb9P|#_h)w4@d>iw-U@V76AqO%6 zx9zGY)9uM`d%L>D<9FI!x8G?^jgfEgRUUwtl^g~;fd9sx_x26ip09qTed()TRa_?D zrFN1NO{{%1s=}B9GyuaxLP6pHF;OHp?rPW=RApgU8P^5~F=csRqw_M*n^4B_fcK^o zC{L9lN$pg?i-CUfsVCj=a*ZI?12z3UUCAWE1p?H8Iuocs#GdYAO_PX#z z=pOjR<|*vhmp#|x13_6hH2|6-d?*bPB`vZDf(ziJ-CbSocmR}v z>$I7B34&YOnyi5xF;!3MMY-^Zzz-n7@9&Gm87GAkWLgSFIY<5A8+8R#yhEcKxY+oN zd(was8exmQr%W`Wjwsk@uVX9+$SHWvAKgRH!^rg{83kwueNwJ@hPdz4lYe7F1i^YA zqvW*P6R!$*;R{}<;H=8-yZ?T>>WVAuPv>7?=bdw|{qBs@?X**WW4}G+H#(kTrxnLP zp7jU2?4k?pmYZ(2hws177C-r=3XBxQN@iGpI(K@T{r#pJMI+kEG@$|MY%yD8 z1aw~Lx67T7a5<5-Rze!Y|6yG2rMrksgey6FV=@2<3Tx* z26!JZN&0xrRae^+k3Xv9NNrHkOaj3k2-y1!K(YVm3P&Jih9kBOUCDE%_v1wAKt!K# zy66Rb9aj6QSdXpWum!Y_PKZi~9)0mq2iVC5Qi(_}NhHY^Gf$`|@)u58_D@&|1WiLj z$QT_?vQrdX5x|xK`vG_dtPoS;sLNul{pBxzv1Ln_NqbiKy7Ra<{NTC({)*jDS@YZ} z2hUW$#>N(v54|G+cX~-5kP+mGzq98YTS&Y4jgCjAjVG{i%Ajm%|3GhaHnP8jphr3f z*SnSYcM1DdmM5@kn55O$*s(IHK>_4uTW)R(p1-T@^V-+gp>KVQec>x#wD14$`*!;8 zPPYp$xzO&t=T5ut;fL+sM;^8Z9(l;FzvVW&^siUg$)}%g-~G{#?6Y6~k{xyQ(YD|I z2igmEf3eNqcvB_Ytxk9B4?9@LZrt%5Pudwf=11qunjiyDDIzvdz>BPx!2MHU z^N=V0c6*^`DGNQUgp8vS@uyx#l|#_~uLiUydCmE{0(Pu?KhHz|n)*g-X`3!vjBSoV z3FyWVaJ!JPQBelA8JkP+%{BCj>&RlxN=(`lZxEjlf4DtgM?K$AKpnhOw4m8@4HJe%BV8 zZLUPH+itw!db{A<^Ay{iWIsOUNA};}_@;g0W1qBl9r12EX#WH3N@B3}(!l$hUUC+G3b$PVQqB8-T*cXn}lBh z;VXPZ2e4N$IIz-s^&C>cULV*c_A6ng758`oo9)qEOP4P3M4GagnOKI2_>DdSX$zkT zWMWM{D2F4{(0L`ipx#__x`_tpHuja=Bx(-u{;@n+V~yMa>BShEzJ4}G>G47-oY4WM z;u16xMDlWgkqeZDN>S;N^#-~RTpRG5_q+-#g^b34Tn~((W+F(!Q#XtrK^*la!1d|l za&{y}&U9h7+DF^?8}MKZ!2@+(RV^o^-=drWpVrB}1TpMLi?8N+-j_)mkhDq2zZoGU z2q5?)*rrVweGE4nX8Fjo5QhyfDsdu6x+F4!6-YuNEaC70UO zS6{8a>wTmiEPtm_912u@sW9F!%5~YbgnYKt^q1Bru#2Muvcfd%L>3{8?zi zI#75D|EVYUQU_1Kbq!;v|NNXC#d+WDx8G)0DH&nPQ;v+KOqF5Bop!X@b7p(OKW$o@ z8@7hVddU*XTP-hRA}H|hrB%XckK*Qb(~v@C#YMu(RnKf4lyX@VP9-y*Xr5sWXmT_g|kqVB^pMucwk1 zM%!D(OJtY2bau9jSICmNy~O6AH*TApMgB;A$3S}o|#S~Ax0)2TXYzejxu_7q%OvRw(;dAJ&= zEH&5ex#xa+=;4P%Hv)|4L@3`6O)3F-OrTwT{R%Ag46=jmR|#$_NpKm_@bU^;P~-CR z=!Mg#I5HEZuMc}Ko2TNM8YWp&OSQE$nKif6+U8qqYCG(_qb=BFfxZ6q2iS*>e!qR; zOP{l!{`@EQo8O&gmtS|S-G2W)_TW=b+TBW!Z@A-jyX5Mt?9@N}-hOhz@%Hi0f6k6P z`h&Lb8(wcOdgUu@{#ILB+q`*J-PCL=CFlJs`fX^^3LB8m=_83}HrSAC@gya6io_Xt z1!W!7KG{^^uzVD|qprj^q7#bJgKV;QqN%r<>m_|jdE=fjpnJF+zXu;i?;SnI&w}_t z{wDD(%U*)(t$0At>fiX55Ao~8t#lXy_#^Hm&_rL@h=e)0bLb#8tr9#T zmV8i0_vxiTcOpOr%J{Di&;uO<*F_&aHqs&OI_HiBKSVN*2l@u%+vM;TTBB!qBnik- zCv=L~jwFG2Bs%vZQ6?_K2C}>l{UV{nHX{$blz7eSP^!yw4ag3FJR%#8WB$!3Z-&^mXl_=YAN0A%hVK>suD}OQ4_W^v-UA_F z;dcUhU$cf|(=|rB=p|1gQYYvEKwJcvwvzx*BPY1-Srd%3LkLiI_C#}zU{yN5b){Vy z5WMja0|wF-dZ=+0po4xt{`ljqXOLi^*V~2Q$4@A01R9(}KjZ*m1K7bYN0Jdr>g*$Q zI(Bw;Io(i#9DU**_{=Wf7+sDyw5&@W;R6UC0P0M@&AU)U5*VhDXY$T^oRRC4M*v9xNK#BSh82vGEPKMN08`?r=P{Cje5#IwQ%!MH zRsH(FV4qI~Kk3Bdjp>ctm%$_uqj|+2>j{;zyEe!G!)IHFBN%8#{7Jx&`J^{`$oF9> zSLAiMh~N@Ej3e^H2oIem$Pt|k=x5Go!1yth9$Mz~r14>_ZarIo|JfPFG`~fQ7Av`r zPd=18-_jn@=9KL+xb7GBBzD4Pmd6U$Gvow01=9XJTd1^C)StRtfBoO=(!c!0<>;5v*evWe8((OoY8G(i#0D8*%uG49xfoUaZ1-NK0g_Wt#glK24Y%BEH{JSoyWzIK+uv@x#jd^adb{d|8|(`4o6+NMegFIR>Cb=B4uAK1 zY`-@gV%zV$v(1{nk<~Z1SgjJ|e#s(h>sVvQbj(#u1629Fl83I|KIyt>E}fpl=5(@Q z*g+XkA0cN7_s9lOsvAf+4q_i@D|{#?H<8?K2wh!IeVJf(0z5-DRa@6z?n*n#G2bGy zC3z!AoaC_ta*wS0GllO%R!J-Xc%SUgo4`^1Sa(ReBrw|4+}a|)jE+aSv^_iGIHwZ>&VM=iOR7!)7$4+mA3_-d2+8!L{If6^scTA$v}rebX6GDX*?AXCT>_HI~tz@U6R zorbDAM`Dp7`GmpY0sH3HzhRwAm-$RDY&`J+@pH!HK=QQ`*9FQ6HRomYYm_D8@-Cmb zE1ocbhL0TR@3pz}=G%uq{9$WRY~_O&{uF+nxJ3MrZh)Nk%BR!m%fJ+XObjqxUu6;_ zV8a3I9s{v}+j!|8c94#)@_<$)WZnUU?qb8ZUw*@7Wp$dMw~?PvIHOS*S`0Ad`7=7FJpj9EHz~2fcu^OQAbH(l+LnX%m27-a2U8S}dTCTqePs*za< zT<6&W{rBQtzh5t72Xbf%9a;L|j#Kw8S=Me(KDkg;h)?fuPXfAJU9B>lhw0M5}3kMxeSbP&dNz!LbpWz0vTyE;tsL5Na>02w**F_Q!AlEgr8+`8;x$5eT zZ_vVT*DcB1|Hs~Y0BUwsW&eBHEi-p|NkV{-1QJ@X0Md)nyW*!PQbG?Xh!T(*nl$x8 z(GNlFBBIg-=`A575C}b?B-A96HhpfNxikOg_pGztci(g0d*6F!CIP?izwWF#=RIYY z)z{wpoZ|r?*$fOk@`E$wB_06A*~y@E2SDzi1^1FHA#+@xdhPzI?(Ab+zpy=UQmHMp zK(B41g#Lab<9mQ-#HG=+-Gg^yYL*~TrXgmA+msua$gO3j{~)a766G1`{)z* zfeFY6h}^L1gKZ+Tf=)Ho?P4Fd113oI%EcFdwQRrU8V|++)(c;QKg8$I_mD-mhjJRE zZ^(uDgJ*70aY!y2nYh+B>P{a_6Cy17$|KIIwI2iy zC)B*k-+%`lg!aYF`3&?7D%Tq`v#|?0miH&54&mr|e+)Lz%Uku^??2EMTS$VHJoSAd zB>X~V;V-@hKa%>(vd;*O5`T_9^rN9FR$Lb@$S;DG9{6bGw^u$%z=$IvgM$n2jU3)24}d$w2R!y&JviuhG!tC&+xxs~igJkxIHG9#O&bLiM18E24vxlF~b z^24eQo#Tz=@SA=z*nqwf!yT04hv(Q_&hdR`K1H=ga>F&fR;h)&(7uQ*`K)R$Ag)4Y zkP+fb+Ft{8B3HB_C;bw_X5ibV{dp{IhVSIK$R7IFyqWu z+KI5-1>=LU!LZnfdwcYwM|2+I5D>9Fwh&Ak7>p&&5QzX1Vq-8N9DU^37=#x?#k0cs z60JH@2(%MS@%g_#@PRTub-1h< zLK%XexvU!Cp1cp?Btd{@1PggC(aIvFNkg9jDgzHF3o?Yza-L)%4IW7=*YQlc_l4{e z3}LK5_MtP5k$rf;%yws{M*Jb*r%a4_wjlw^(mw`;sH+ZcNY*h<={RiURfg-xw|J%R)Te<$a>wOJ$r(MuAoN2U^^6flv#MY~2%@(m3sJ2(RdZFpG)kZ+T31IKddkmXJKkbDF9?O76) z$G&NyelT!HA|q)~U&Z(4rH)4nSub?tB`FLidt-y!IyYgdfdn+^@5e5@7j#0FVn6teT}7ne5xn#f z@ee`-0sUrx6l8y?K%fi# zO;6DgI>gEuR3rv9@sHTyu-o`=Syl1G!M5~l7E0%Gb{ap#>{{}GmuT_!=|TLL>ZZ6yB3CyAU>A5Chx`GVB34(;wi7(I2~CK5$O%Et1t77r^SrqhJE3ue zRKjvs*_Ehxe8QEY3=ogR8Y4oYl%qEZT(?w6fx<8ztzf~RR6NQ`!6y)5pJO;Ql$`dn z&vOJ!@8jfhAb}tTV+GT9@7Y^6Dqu$e){G2$MhBzIOs0zTlG99ZpclyfkqiWSRtPCv z1T2LH+1JE=04+d-o&Nmzhd(TDd)wQ}N*#l*NweW0p8JYtg%E0x{Whert1$*D;-UW9 zfD&YnR)Y{;4%aBE>y`6@z8GbY{WdTd;-FYGr7qrX3$@1fEBV)P0t))YEV%c651Wlr~ zXTzY0WaO5&yp`J7B<&492*i1wowt&*yqjfeJPRGNkWN)wl4}2seX3O{zMoOitx8^h z@}nP=XFTI+N?xyXA8oiB*@Fy0iZBc{ZH@+TLLg2A9$=WL6TSQAfBu*9kN@yb>aXfj zd*FKxL;%nT$70=4hoB|bMZh3OCb_{tJAoBVN%FjvjG%M3y47hhD5h&u2bQ8kO9A+n zj-Ga*BiMr7d-mB5^aEszHUpGFyIH2r)_p);B#+2M+AH>t2B>Eisyu>4nELflU4;u%aBUu`G*Ehvf(T1cQnMkv6u7t$Jnb zh;;=u-V)1S)u)DHHN(S8u;o zK`l$~NGMj8>4OSZy)2yB?b#@fx$Hzq-w|O_w}Ujd!hS$5U*mkxo}sRx&GY)VWun0v z_>Ju3ej>We&zZ4CE@Gtwz_;o2;)N9aF#Yt8xEY@forqPiMKR|odnr$^X^!IZ8lrlFWW5(S#JM}KVOzB{+bcbX*X}8UZLc8 zbZo+dkNF+_6^cPttQu6y6&Ft8@E90SoFbaY79@iw+;miGnnh#EZj$A9>Ta_GR6ueP6Nt9A|z4p{cR(v*P#@g;c%pU?r~ zy|8y-|HJ1;-&iSv?!jN)iNj-#X}>ZNPsscs{de-E?FX=_&<-6(@7rB;>?s*^VsE)p zTbn*5_@$rXD^;-4nnI9aWDR@F;)!omz_JZZnSx|6B1;iQN5`BD!!VYsI~Y*{Mj(jdGppugKpo=cP5{Jr04n8y*nBF1 ze%N@Z9FOYHfrhR>Bai}$z#-KC{h<$)Yqs+tbzbfjK{KN<2s(;_!Z<(>vhR^`qfCyK zh~T-qtOj}`gaGu!(PL1UF^29eA!Vd81Nk~&rB3c=2{g!l&PZoMwQqFV&WyS!gMlAp zkZUGD5;o-SX+R03)-`*?Z%e8^a z%lE$fy>i}p=X!)Pl`s?^I!0gbaK;&B^X4t?4>H9$+RpM>Ml;bTC;XC066}DumzhA8 z2;t1aQK3U(9{o_C4$tsOkHh6F7hhC<_nFTqm$BqqWe*SV`M2RPmM%&3wkRNnmp^*J3r$M`6VGO{vAJd*uT!Ku|nq%|_J%tY# zXztm+KL+%m8TNzcU0Gg@&A!te@9gL2307}NpneB9jjd$lnrCZh#Oh%_?KRi<(Qo>J z3}muNe<=&Z-emHegG%TGk5EVuygc9EQ54e>j|Nf((OH}v&+GDSd7gzz2Zy|%Pe2Sj zuCjciGw_3fRz}>%Mj7~tfjK97+9CsdqE4!=f(5N-`YZu- zs}UK(E?~E6faaWoSM8(=$m@}P&p!HBw2yKVQa3~{^}CdBe)9+Ahd;c+<#(WJA7H=M z3b?uc;EaM86^INFOrqBec0{lq{fTQ;g7$gThJ+Wt$zwV!_nuZGkSn^x=SsL|VuI%r zC6n^METLwpIjd@r+e8t=m~xdb=1N&3z-;5sI;8DN9wp3?rFzg~9zYLFf6-(_Hti7f zSGm1p2gu{ZIq(*pVvqwJz^0>53vBks!T#pW- zllUTh5WusRj%lRF8DAhDwQV>WpuIJ=!ELYb#s+9~;E>`%+cD(@qBr!7*z1sa5cDP% zh{t~Ld)QTY)CN{|K{+ouR(Ji*1@&9eh|gz&mGnqiNjw_Bp4K$R24fRcQ@O<{r`YF> z%eM1PanG@ofZFzfHT0?nfAg`Aezbhzlb`gm=e8eqY$85_9!wHs{K9r(f_yOS z7q$+Y2Cbar$|vzmHjgP18Qk);Ta}xgbaThhlT-2Kh8pbKR4%#&rZ47Ere(?#6N?aE zx?DLYIilO9YvBua6&*E?!cdA1v|D#HTb}uzR{eZZ5~1V0CA4sv_zkaFokv{b98Yl$ z{bK+H`tMMj4^LrscA?b8pANO{#2F@>p zT?j&TF@U8x6bYj-g8n%C%4KDEWT=c!jdz|YT`|Duqpn%KMvRVSaQ=|Dh&Z4`is#bS z@EuVUigt@nPOMbN!DeX+iID@Q3fsUlWbv$+7||Hx8W^>zkrHa`2lLS<16Jru(#(u5 ze0|3|-ccqG9xCg3v6c7&3@I_-UU)ydb_wdrL74?+9~oWeL;b-+-q4I==eag@&c=hm zh8bpEs8_=7moiMsSW2r&-k7->kYWt!UVaaXHUleG`OVzCFzm4EV5tbtsDSJbsflYy zl%)iN{2pdzSbUV_m^nDDq-u?nfy7vHJ3Z-dcaoT}CAmj2sEfAx(>Umx_77kXOe57d zBmPYDUCALQq3V_Di$Cax((`>}%M;1D3Yn5DFjz35LO%3gAMlIFLdHYEktdcuGm~`M zZEjsoKm9Zt6DM2HP<`cEo>A@aN(kUgYzc)pALI=Og+7v8f;jvMWa$9kc9ug*Lf5ZZ@8!cJ?wP!joHE$OGm*$O_0)rGk!S~II})J-VnQ$n z9oMbfAp0@s=kR~^k&h~`dG#Nc)#@{=G8~ww{n*HqFY0HY1e=3h;TZM-+A`QhP=oGn z*f0`Fp035o#rN4~oS@(Ju6MOFPI;%y`G9L`><5(PSrDNOb>qM-JL)%|_&Ojv5ufyu zW08FzVcNHkcL&6^=@g>>JY&TYaXA9XKRS+XP#7cHkQGBty##B}fdDYU?O6b8sQZZ7 z2YI&EwoUD1iTC;EpI<)x$&ZV-jHZj9vIzwLyjQ{_wdynUhd+=gPekWUn}#od0}tKjzN#Mj2X9sntto4S9QR99 z)FxB8xs~JWAC_7B)F;j>yZ7x8jpKPa-gJsASXJWkIRMYF6)YKq%`79u$6_YMB3DCO zMIDy|572%561Ifzvr>nsBKxL*Uws%;fOGIr)J^cg%fQrgcQR!nv6dYWyIo^#i)@c% zAb7#yd>HR{=%Sc63+rpsOY)A1`7kKgMP@u|%rfAg+bibAIi!K#l6uZ%{~C0?oY#JW z_r-VUoWP);dg4KZ<8E?-^+9Bt1xZJ?HSpUpf#eTczjkD;XM*rWyd@ty$EptW9RBh- zGRjZrHTc9g$MYHVgX)`S$b@{acQMID&gjpF8TZk4+Rc_@x#|bHE`&TsS??#k6Wfq8 zP_9S&^tr}1a9u(@E6hM20sP?V)m}k>PX%}c1-ft_62v<$R?1#shb1N|5c|PkCeM@d z>?d)`q}qPK&%21CANWU@S~iwf07*5$kzd^hv=+m!9d*_*?;aM(ZDZ6Iq19Wwsd@a zY`^;ojYzJT*uZb33`{8w<1rR&*@TiBsD(e*P3n`i((;x%RS)1XAXp<>J{xC4(xHpQ zd4brI*wTOctN24kcUp1O@h6;E?sMP!${zDgex6TP`-xGcvxg;H*o5V)*h;s>cdQVT zh7){ILhVAPxK35tr>$MHx~v@k1 zGKnpI5TEFPNxT8`S@!G?^(P{K&~-@mfJX>HVneQzTb4Yn^5iHhnTR{#9iL|XoyVV9 zc3ij9eD;@M+&d=QVv>V*C-FjDe{PO4)h<>A0wW{LGRHu<2eNcNBpcb|u}|@y!596$ z+uiQwn8PuW?lrGPqx?h6u+@$Ou;a2vM*_qxB-q5no|I{90YHhwS$qk`_DL$p#3}Ru zpyAZyr0o8zj)I~6 zARZv6lR+%@!8F>(5>v@3U_eP10bbj9c0ql@SpEzE$qD@)mM~rR-S3vKUi=k>oH2R}jp}9lR#uWb^$SEm z7 zGxA9g4zdr45p;|{OHpYfa*4zAF`dh2l?gnMQ=BX#q#<8Yc7hM>bFULs0m_@o2O!5W z;~p~Y5jyQdC-$RW1?|*_OzAj=f`#ckfBK#8eAm}Nw;aLt+iZ31W;y%&+~+=)JK72@ zEF%Jf_*u|LZb)b%&{rZMp2$MjAq*hPG95qs-sR;fPkdtelh?kceDf<`E4#1XVScY) zJyHf5S)hNs@Cc{C$S|{^o*5O;2X6@+Dnu4QC&1c{P@eSVnya>#zxsS?zw zr<`(%>6kOPL9-h|-y}1tz`D@zmZgIP$@GKI;pBT6c=;YOVcpT4Bx3Bhq5Cq8n7M}D z=-kv)%xXd3#n{xvg5_6q+q8L;Qt0A9g69MlTQ9y-8m z8FJ%6Qt=5IG01|`b%5L;`wIa&nk0e_+z($F03dmEaHb#y{Uh)n8=vyauQCZBaN8^A z=Kw-wjC&?30vbXlEK3aLa2Eg8ELXFLtBu-Hy?NF&gxM*A8`^{I^sNnW{gm1OpYR(3SiM0U>O6LO&xxT zm#&Y1j`Q6H_maP*LeT1G7YN9f4%pn9KiY5XF8m1ltiW+C-~aZmfph%;nj;VSLOFPc zT*JHcp#*DK31rnt&%At+oe*DTu{~H5A#aUG&tGgn$U6EFGq>m!$bLUSM{KKw5oF#UNsnc&Wo-{X7Ic4k+`mttgC&Vfl>m_Z~Bd0!#-k*7y!vwf~1H3 zkVvyclp3*pi={YiJQDr$?0SVug{9t)AF9y<_M#m=iD!q0C9lwu1j;dUO9yQ4bx+3g z#CZ5^Vrk?a@Bp;DH-s-WXMipD3ah_PPxn%9=cE0G@Cy}PU*iOCBm>rHHD zKQDt1T~cQN_(r*o#l%P2!vqHt4W1Anrk9LxJhq2K$93f%_q=x*9A53?J}2F3Yedkw z+sCYPDS*Aj{tze7=d|Amlno7tZzw+d!j=`4^e-Oo3Enb`&O1eN@TS(|zA{R|RwOlu z3?9aI9Jm_C(pnhhWOI#}-Uu6lm5J0sfKjfK=D4?uM+3CM%#iR>7KB|Tq9s!}Pq54E z3+EvqTbvq8zacOJ5J4C(+lhn?8o+!A-Nj+66(e-Pn4m%6>^>zPYiK7q{Q$nYFH_Uy z-{1M~=JAMlOrLo!7~@Ib5kx0H>U$=c(1Uw9kB~w~0%>H7#D+j_&uBbr$p_$f?H=`# zP@Xd($z}QH)Fdyild{VY^Tt@-63Fsof_X%TXPkEJRXfyH>c9>$!w0etAk-|aVRmZ& zzNs=fF{PyIfa;o(Z1T-$?W-O8RWAb`yLay|yGN%yI!Al=@=U1CO&(ytBn%$3iy$3m zK+>e&q6x>+xFk)GDI6;^-RK3fg#(5jtK@L#Kc5=I@Iv3L!_HZKLXPfsx4V}UPdw53 z?<8-u55Q@VM4~h3A-|z1^lJnB;1g@e z5&HzRLxZcmDuV5=KI+%X+Vva7mqT85e?#b4LK=8%mmQ7j!VVCO(HCTbV-7s!2+3TQ8X4HM zq6^t)R$KXTnUoGNVy%BhnFv3gLlA;ifH-Sja5%7hpd7#T_;UKGw=8$R%U#Q@Pdlxg zc)|(g<|p2?oN|kk%1v*2Q}u7HSEX(GufF}i3=7f2furOX1n>o1zjfPINj84mhx-D&$1cOKoE>e$ zh7B9yktCh>fUpW*sBQQl`y_N(Ww-HX4cyKOj};`1l3v7IPWE+}nd$h3toR1)8E_tm zcfizuFHXP1{f>7;TkK=RJMnTN^cemS5AYIC2Dg|sHelz#7Rwgm;Zope>9^GT>2rS8k#%C&`kBX*nHM_)IAd zz5o60Uv9!DvSd$L;mT~YI`8XkBPxVe^v5)-AU;p3;|E16*%7{qv2J9fY!>d@wY$9d z1%FiTd(XR<7oPpR@~Mw~tnAu#y$U~E)~p?tPZbSUs(ljc!#V~^Ds@^mr3bp6<+2US zWFxc%R}Cq)QjEt^a|Zeu)W7h83(7+u{NVD2*T23Tm>gH%6pN@`#DmCsJ|m63&>iJhy&XujwoOAkIu4(jR1E^QO&;k79*0FV?I5|FR!{^P<@t??4FmhzR+< z_r15g?3`DX4eN(h+3d?b(x*yz29rd9rJeuzuJ@G9$8Ym8f}GV7@7*w7dXl4tjIyxL zae_^@BxnQ>9u2Gm7oc%y37K#tbd;gF45Ns$GIh@=)3eTcM)}-l&-H8USt2{xe7?r* zQeBKh&<+eMWeu*3fEJ-*%jhg^OW-)OsVr-rP=c^y&))L4fB%o=fBp7vJ2{(HP!Dt% zXd}dL^-22#m36_qb=d@`|76_lSgU znFM9Ryq}qFW{lNumP4ho5Lo8y62eGt2%uLEuCf7Q$@8Ng{s@(^x?FeNb-spKNq9mK z44|Y8!UWybcD0{#7++r0LYc?|!0Z_T!mt8;fJB>wiP=Dep1x5JyhiXzZc!rmPua8= zWg_tBlsR% zD1nx?Bns^Fd9*$I$I4bY^iO>1ljY=7Zxv2h83Ibq=p^mtnebP={G9R+fB*NQu@VJ4 zAoxE!@a^n2a+D**$gD?uwZCR)*w5f3a6il0#+A5{pfFIhS8Yn?H6$L~`u4Xj4|~KT z$}imUPUZNUo>sTO60b0-(EiZ>CcomzVVIaM?e0N?l~-Z zT3uE)_fRHs#3}=LvwEcYESdNc-(w|_jKMVz2xuDvHq2^--9Q%Mhx3{#v|18HTk>WegzJ686PC9=ae?X&$Eqwuy(}Y>Jr-3|%zv8n%I24x556KCg|GAHs z*T3%7W&0J|{XG8Y=(w+^t!x>|N1j#;D3O!=Kws<yQrc#__SqX%Ajv%hCG@=@!W>z#}s7 z7n=&$=1UI3nGKhX8#l&GznuQ2O`E)b``g{#1G-zcZgr4++;PXbT^l!TbQ$!;Z}nGD zkh6c|q7~nVgtoN7D^plKq`E%(k&l%>e)Vgm7qS(Sseu*oLP}(v0VuyKMD6j?J)I{s zpbS<$5C}p)D4cv?3&L;4xYn&(UH;-te_rl<=ex*F6Hr2j=)bRlhsZopzwX>OzQ3IF z(ifKt&po$n8(HfmhNF8&RhANCU4ow>a7B!h&XnV&^(vPE0hWJ4TkIc$h1MP2`_P9z zwEW4R{_k?)&2Q!ahWiMnYT#H6?cZ&fD}hUcw!HQOWTS@m{d0axMr-h_Pz@dZ7cF&f zBAS!OLRUgxSowg>-L`E@`SfQ#U4He~f2&MPPN*UROz~H8g6!~VMEn4cN@(L_NlW~v zClJI_p3_6`*N?2X4LIeLQ_J7|^FPZ5-&BcOtbl{h`Pd5Y%!oDtx?hgQ19##h<)^Pq zp#B=#{ES}B4_uF4BwhHOK`-%AySz5QFYI~lx1p1SE)r_n40LG`kgLa_6U$;r3U*z; zqx|Zl9$Buv@>=P)`mFY#ztoK$@tb%LUB(abQc(Oq_G3u4Dq}qAf=9tW{8RIswSHf4 z@fXVq`P~W02Ri9TdJczHyN)JK0-#xkZV1N`fWFnxPEb9&uC@byT%bks_WjA51p3G| z3KmXl7lsEm!pOxK;!&tt{bHB_|Bh&bLQQEd2z`kcZnr;}I z%C&<^%K5JEGTAX6Q#f2!s?7c651)T_dHxGt;QMTAxqpc?TL>b#?LyKl>A-3-`b)gB zZvDpcduN?h-u2FZmu$tdetfrjp(X_%xYqYJa!Fi&E`RN-UoUTd z^P9{2-}`?3j#z*78s#}W%5q@JJmRrN^c=u%TCYSG>Ol|qq!xaeNk;nN7vJh!NWQ?! z{iA*KYVX)&S*AAq)tld19{TV{`rTFdB3{ror1B0ZU-S%+ZExCNtZ{6YA5^(3B3A>j zMaWRno0whMoA(piD;#+22jD2|U#FOixb?Zud3O2Q*Dg^%O)=}1WdL1}OgPR{y*#=) zIzH|k?>W!?{jyr|E$0to5Bnw48`rNb?|tw4$~ot}tgPR#R>8{b86yaXk>S}$W`wqE z-df)Ep7)iF+qRleB-B6#t`4*+gA72lBp$O=Y+*_gvjZ(fT1+yHLxS<^6_h>s%qNyl ze(V!s+zRn5p25xJF!~VF`3R{Axjfz$9LasW-5Z8sWT?xtbtDDMj>(Yj9UUw0dH;Wv z`#k7@9<58d$IGK0`QY-_x4c!! z+ge|PauNupaq(!BXkt2x=ke?eG?q~6Vhlkp^M+p3>*t2lZs?!wPoO;COSv)_7<|f3 z;|O1Ie0CC*!+FU|UQ*ujmbW-~UM(4h$2<>&++ZNm0c5)=4_R=~-5g7>G9$CiJO}h~Kha<=0+ z@h{5nJnr#IAP$w?yLY)y{uVOOB-614ayuKSgZk$K&P6iHzWO6Evay|>kuw@7=biV7 z^6FQfqh$IDzsQj1&HfADaPaI%%z-*Y^FKJ1$*X>&bSRpUGr0qC4XdL^K&pfmI_lN&m&Sgk8K{k&z ziD!r!$r!So14@}p^No4G#anWSoyV>WOW%Zzyt zo)eBgz9Wm+6SgGKw37iIj-@?jOP!W!(Vu;_z}rs0be!+E^Sh=)&L{#r2g$YA2im~$ z^S8hK?d3%;dQsWEXIEJ(J3ciX-^|`1zc)EHCVI;j$nG7`eKA9&ut0W$c6kY%=$W<2 zA_>(7?ZX=0z44SMKe;?Xdc9%&ddWAwhSekrGtphOjR3@Nd|kD?Tz&1;>0{yI^wx^4Me#ta#JQ`>xVD0i~ujN6|{FU zHFD)h`Xzw6=K7D>^yxQP&nku^fo>aTL;E=WKN@J}f%4{^i;8esEvIz3mJccnjJt><$QoeZc zm&+mP-l(oQES)5VU2%A&WF`{!1ayuzcKFclz)u<4{AvHj@5cnnA=#Co^7g;``|_HX zzp6}0J~Lj+zL9w6J4G1K!*?LVj#1=W7_>k}Spm6Pe$WGa`aOL>dMLh)jZc=% zs;~_VmUhd-4?!#99b^jGBA2kNN&b?yrVVw9K8}+W1K`&tMa%uVm)C!ggKyZdzMOIU zGs^w%fB$mYX{VK2oO}!U&=cgxVuFh@nCQV?Kx@BHS@K3b_=`Pz_LLv~=tt$ebI&X9 zfB*Z+SHAK!&lHcy->+3d$%~|!U?jG%9bxq#`lRwykdN`KG;JGHtRMau-Qk@i@u^#N z#kAw4%wFxgB39)sE4&+Gy6jVq^uPx^xV-jH{ZA=dER;+G8`p0ryLap?Pk8+AluIx9o@6n;!~`94-~xNVv3|+) zlI4*H(E~{|;~8p#CWHrNLD&ff720^4V8#mjL5?2hvjH^_OnGG9K}0&R`OAz1d8LEY zG?3^9ffT|A5S+6Qu>hPS`vh|ioWvarXx4*4p`ZD@jbAz?hVjBDfFPgeR3oVS*#l?_ z(moPtl;Ypt@o#?air|P@8k}%0gMtPL7zO%HA|3RX(#ptiEketPFQZK&NqN?Do?Ql& zQ0!GAFezah6)(mWV2>+E0LO&;<$U(ZXzrD8?vWDjo*2`1wCvGuj&TkglVXD`)!r-P zJE}UyrY6fCCH%Wb_jwDBPIBLheO>TNq-8bc#8~~XH94IRw!T@4ep#?IJ(c@SzKqeBP^SX7zmaq4{`(5SQYqtA5 zPSr0)fDesq-Rjn-mq+~Sqr6X&6CbHxntIYMj6b}go$0*cF|&#za#{rMI;})uzk@zz z$31AG`AcX`#zURHkZtf!VoKk{Ma36K5F@{FfFsl4QcXP4jm-Di~l z_2@^Id)@P{<(_xDbNQ{`{PpsG{_2h8`E*!j`gm{fJj0h=4N8EHP!4 zObMlAf;J&D$P+6JpbrSWIY&SQt(hG_hf|kG#;lu4wy>HW?cBew-20dBQy%o-hx)g_ zX)Inj@q)gxLJUkCdwpb}0$u9r2QMNckOHtP*b?|mKUsZ|dV}p)Jsj87kjX>PKy4O3 zc>WlhgL9`3$P{H92~aM!I$^bJ6$1|6{QB3+m%eyW8Bn>FPaLHrf=3Vt&e`HzxF1Lx z;(<^7#?Iq3N#2=lh7SjI{?~r}(dF5{{~RS9k1Q`a=Vj%bSH7Y=?HNxmXFlo7@}P%2 zxZLl74=8uP=RL~L|Kcx{({Fnl>*1ztTP-6b)KHc|kqHG_lL}x{@5iLO6SA>W;;TpX zRWF|{3BMD_agZ6lMEZb^koXh4VXq$h_{WvUJ??St3+Dz_D8ZM1_{mfdL3)KUZD+_$NP+!)K}ei1>|+={8+Q zo#?R#r5nV#hx?VndD08m-(w~)a^`1b$9(ja5*wC%`*?W=y8t*xLO zfX=H{#!3eU)H{iE1tcKoGP6?fh?%F=L)gXcOK^xk+V>^IBO?lECC3DQltn$@k=lr( zg<~mS$a0PSfV!R3sPFh^V$qfIZyPplFz>LbB+|01rYV>_MNhEP=omf*y+ZH#ZN1Yz z!8>&j9p@zWh3aJ0l~kF62$lSDc-|e@ z41mtPbsYLK(Si=P!87L4Yw|^G;ZlL6+J4W9WR^sldgzmr=a$Wx&kh^JzrGe1M-VTE zl5puih*Kkq13+K|F9TriGjUZvm_Vm7YT%q@SArxk=Z`f&3^mhA4Y8<;q!~v9;Rt|P zUL1lRNWD zoP-UV_HD>oz^oPu#oz>q0wZnk7#c7_#2!$Y#SRXVLV$cr^m_x1;4zJ8cWMeAu|cQKA*R5W1yKG z!P6`)S1>Kh zU1pZi{sU!_S+~IzW%A%;JU_E~K!z@6JXQ~_5IvWdAq9ZzWmIr`Gct;k`*xQffA2fx z{7-$NeDFQ*DIa{_d&`$Eys+%P?po1!McKM#qgOL**|b548M82I;|$NhPb;|JtG-K5 zlo&aLjU~`cb z^y{FUuxB9~UNbYw(%&|ud?ePuycFSZO^_@ z|K<&;`DSru+dyWvS*{F{G-9|JDQ6as*?Li3O;Y_5mBR({0a*tb*s;A= zfP@~t^yM!v4}a(*J*yNvRo_)#Ea#5daUNB${X~X!FZ#!I1WPsO?zrDfDCPT?f4^LO z@x`8jF;8sYWEbLcUyCn7PI%N|_pV(|jsWU`#Gp)&^i;Njx*J4Z(zd4T!)ljfw2cur7zHN%jPX+ z5H^)Trv&>F*%I#Q4CFTF;VV+U*A|KALoH}T?1#S`** z*ij}{(y!INECE_WL;MiDTDx{cM-Mxe#GV1etbh}*vG42Ft(UFB2FoWkvI=c`B~`~7 zXrEU#s$JAc+|P{i^PcyIW#fkR_RAbcE^q;0t=k^hRT;=)*bIUEX1+NbADY*u*7&o# zI)0GPGYLh+GNitaC{7=i9G|dZZCR)IZG{}z=Nm&G->`#cGYnnV9sD-sqez_bNl;F5+jNK^|VC zGR0%QPQjq~Z$I|&<<57#o9@FeHG1f{qK5i6w1+wz3yiNeFbk}D(Oc1p!EZZA(bn#@ z!a63XS0W{N<%#SipTQ!=htB}HU`}q-(6w>drYWuRM_fI(9J)a+yEV?-33;E8f2 zFf`(z5)_07#UMDyq_YN|6*2*Zxz7v_!5hCBCGZjvKU){q&9Je24*s2;x)Xcv6p93!bY7yy5mr5lp7gHDXvvy6(qdsYLUYoF(Q8K8)P2=Srk`GdrTsS4#v9pW>5yrm;;}DqI{1z3 z&rQY`13??zuj3K_=!Bgb`{9kl8k@{8;uLo6TO zv16Coxvae8#V;#cw{G*>Ls=HZCxDneCfJODG$oOP176m~;0OtWq}uie1af8|g5B=S zvV&qF&vW;(Egk*~X;%j0(2(DhkDfR{mQ1c+x3T=mpZr-laobJgs|B^)-|_E<8&bNp*JY(#i{4*up$3xk7xq>Ux#i30Op zn7-44%_E1XO_v=<)-ybLtqSkT~S39v`V{fuOb!DD>42bE+HiM?30 z2q5poBG4*F#$c_r2e*l;!FlJ}YfP8?f8CC05L9D3h65dh_V#cQlY^z8P!;j&?5ZCN|CM)IjR zLfsoC)>jjmjpj45d;$(X#snElzjyDQaJ%u9@G60Lk(V>$W5}(%>R0VXE`Tw|U_453 zpzPm2QFbXO7@Iy+?y4mEtY(GJUd zC5OTBB>)MhKZLEuxPvN;iXbL$g2T`xr13c#NI^6Knuh1->--8uw-_-Z2;^lm@%BZ& z3y1?G(IPP8jeN|ODC$w5&WMD{RZ2X-HwKG@1gffD1RcZ4GC6`m5hT_!N4-m11um+43v*FS6Kz`Q<;J8UL28RdA=g$9J`R|W>)Xrqhns|0~ zVv?6rA}FRnq!nek=G?b@~L&G#Yk=>^aGqjKW$H!lY#c@|p9 z)B!n}5Rq%HBh`=P=c z9RWsN0TQD$c>N$hd~XAw{(b!$Un^hx+QpI$wOzDCp#itKF}@Ff_`}L`{@}U(=>NVk zzKb0Sj-0|L+Ur1A0aY#!M7A+_7^w*U)qgqlOwO3ii%%6`1*A*5cSO8J)_EiWS;hHL zHo?I7{_(PQ^*Wt9R3^q`WOXn6CrLzhcxI5L(|pQ@XKlvE_bZVc^K<9C^o4IHlki`+ zW4GJS_sD58yhg)@WXSn`IU|{ARH=WYdAZ!$b!$XplI@AIci(OqxiRyQ=kodX``&${ zeu>&+fBVex@P|Iy{A2W!8Fu9_YHK*@pw|rvFb7SH(Pjn^mNmiDzP)=rfWc~qX|)R* zf^G1O34yOqo(8SkMO6z#-j$#yJTMAorGD|rC=Kn1@ZT(Y=I z_Kl>J;{@D+;V9aOjRJ5^==MtCmoK`gTz2{8s#9%{PJqiLYrOTHd-x7NvXk;j8?eO; zN?G=lFtE>aQ@I@M;Sc*&;iF`ebX*=P-_Zb$PsBH?9b7d|HIXH546^tIFLK6=i1RW; z+tD77I!&8$-@g^u@;p8AjQlY$$4Gb%l%fBAM}YbVFkpJKo8PQF^=VI&tgeu5O0Oh; z%sOKeCuN_!I-t2e>{!qee~3+3(daU?NnrI1gHo4X`fcg`*Q}4s-qQ}2EwUVxzR_j^ zlYP>c9oJl2_U_*AK`rzK8-y71GBfG{pcQRCs6K@L^9Y6P0Xn8O+I|a|Rab=y7?za{ zo3}}BB2l0l`7%B>^P(x)8$<4AL-Ke&r2jS2{u|+55I>l$kdGsZxj9KlK!Bnd5`^SXtQbk2GiWvHuA|n{lrFc{ooM1 z#ukSCPq01+Z7an;d?(lQ^421q0kG%TapIR%D~4qo@Wt2%bS#j;=p58R?lSqt#_-u2 z>|c$&fCMEm`phKf*vY z?c>v8ld{8pq)I-KB#)#W*+N!G;&h?)75h3UUB~v4K$AEVKk(I(nS=6YgX?q&v)O!_ zQhH5&qQgSq_iikRv-=3`Yx+|@&*J9q`r2cGl#kqCSD*|2344RBhnTz=k~cW(LJvgH z<{8;e@&c|;S%?7%m6J-MC)CgY<#;qtPGi zcLHUR;w5F4VCGR5utlJIW*{L7$1I$saPmp%IDN3}AKkCI_*#VMC%;Gx zJt=?ccxpg8KRo0CaUQR;?N-@`@T=HK$7_;x*#^3W+^m#%PmWG`Md8ME>zlZQ)fEh@8XfSkAUjS$ZQXKVxUE7775BuFg{7{YU^A(b8*O0OVABfd3 z?D%tL)#F_&S?_ER3B?=HmuwyWG*EGPaWFYK?w2vJoQ$`#0widj?Ny^NNIZ|m5<0$v z30NR#oEx|_K%nCJ1V+DNrYA>VQwin+M!|9^GP5flO%cr)Jt6qU!Hp>?rW^u6oFu?? zAkWB9?-*|y)-{nZ$80wa6eXtLFTX-ONyv+z_+@xtx$yFcXL2;5RcqAc~LBr{MEDv8yJ531Pe&11?MlWNhw@>tv+pi~4!`>8F+7_>JGN zd@*1GpE=KO2L>&A_6qR3^+sz_E=YQr#pU~f@A#LuYdhwI6#qb5kSqF!(ViBKANPdE zmouOIWGgnyT%n%_XiNyns{Yg|wLM;%$E;iO3NYQ8{?bnP?KhQ+C(t$=U-l>aL6SQx z9S9?i{3FYzf$qV_|~-Rku62hTgZj41KuEtv3-cIKcP7|@oE zV-4cZGU>hyIiJPDrr@x6t37gnoupmZAoztG@m)vW6wfhe!?&q3QL2GHLvy;qXXKVC zNQ1u9a;ywgE)|dyJ1^0k%ZE0ZQ>2?Y9}Mt3^+0m9*(O4wHv#J-9?6Y zi#LfXa!Grz5#!_21u1;WQ=YB>Vx8Jgpc7>z9IbbkJ zTi!DM*vCG$oN(fa(#4P?&t@|y#{gnu18YEUsgvtSq}nfZ;yC@EQ9$vocfHFm>|?ct zdSE`rk3NkZgy}*zZvTld3`PcdGd@qx-X1n!3t`cRZ*djQ65P*a>I+^ z#5K1WKo8U3%?I>pK3M47kwWsY7cZ9r-TO(X5Z(UerGHrnGI0g)m(b5Fm+pt%k8=Qa z9k~SUV}xyhKY5OQk~0$M7`%=K!7~qzI^n}%NJ1K1xpKh#hu69K1)I!lIQBGFCUmhM z*#1`7hK%u`Wv~9!10mpz32pw;PJme@zNUdrJ0d|}q|ex5k{A3IF%5AdZFcOTd)Y^? z(nsa-n2ZolwB;C&X0TF^N6qldwx7C>NdaOj#}5r2E#O;{{`vAl_{soXznS}E0jvxo z7DvVykYB5Wi4|i=DaY|wAau=mI05}Yeu%4b2A1~I7ZN7NHpsOtV9;s>F;9~-Kx=83 z_W|w$IS#h@e>6~+o#h@@Gtg0ThtqF!>+;m6JjLHh=J{agfsG*dIQj|e5olmiTlUKqHXwT>Y3pA zbI};OQ#NwT#3Z?!ZH@Rvvb(Ult*hBpFkl7s4o4^h6GHFNO?yp%0(=%xC=kG!XrxT%IFpoQjTY+_Jg6 z-~}%zzxK#qlR+$HQbv+zy>ZSwAL^w#s)&GgzMz(}c{?Lg2p>t{l5Y%nvF$?0Dtdy> z*w8A7KsWr&btT^f>&OnH(tKKs=Py(C6MF&oWU!duA;;N5cd{|R*;2?p2~5mRFE67q z#(eq;WSQ!KwgAsbZ`iQ8{PF8vTTVFPc(qYZS8bEp`F_tn!8aS`3Os5F%ncHc6k-M{ z91dIPM!yIY2&k|HI6&+pt776BbZn(x7L`d6z>?24zzfQTR99bftsgVt89nO2M$r?? zT(eb$4XXEz9M)jnLXV~6E9Er5@|7=_^FH@kzj)3Gp%R1@BnfKctR?cI9nDhdZ1hzDK~v%q;!1EUHK+AZ&e?&VkMGHgp1e$qks0gN5_q zVu6(sPFO`}DW7Mj&$#{V!&#yOy=bUoAYj{~_F+$J2ziK=TiDZ8!^_IIzIACi@4WLo z0zNnt`UgMK9+4C=2#t;9lYc|2dFFn#-%Ft8h#ydlvSYwHbr?*43lE)KGYE_>6oNP* zGXZk^JZH~rT&`aDS%aWQ7mozm_bw)pt|9rGJgy-Jb&zyyF_*v<1}1tLV(Rv+o_Gve zSF3V8<0Ux*IlpVyZeI_$9@RlI!AdJRWak=L28bOA`w+=3d`B<+465W3{j0GbP)?0) zU|abniw4`JFdT0cAQ6@#1ru-kO7Q{qrkKYM+3xJ9r{bpZ)~8y z^Z|P=3Gw4-o40JyF|?r7w;ukM`!l`2sGTgchvM|g(dXc zy?b{V)P3-Ti4yc626g2>md6r&4Ve!DW;m4r|D+r_Cv-w7%o%{{i=^|}9*5H0(1H@Nq#dh-P zuwHQl*U~mW-o|~F`!3A>)dS)gW;zlxB@moK6XP}L(-N?Jw)l`oIlMd%!nCm=6r&{V z(W_oSaDnm>Smv@O2YbRU(R%~uaV}2m)mE0EKq6-75J=8p^l?N0*HB+3(A>{43@R@` zvSNz{+yhM*fpH)&$%Qt|*7%s}b7Hh`^KNvYFVF(V@TNDuQM?uZ)L&*vQ7CBZrIw-x zf*&*R1lS=a@$AR}I~frAu_PL$x$9l;D!hvW1Xd-GWG@B~%G}aEfNekC_JdRg%9=08 z&N@K?>Ra9NmgQdezPFtPe1smf1H@5>)0hp&!F+9{Oa>oFfKXPJMD0hrQ_(c$%kp05= z`YnxKDyjra$1oPiF}%yZClW}&U&=z4*(b=ru;&a2`n_}K&W>#GcmT&7%f29zbf66l%6b7khI4Ya?;r9%5YWGa8pS6<5AV!(+mDBq4< zlX@5|yDFj)-3~;1njbCT9JUR9fymtUYqqO+^eg1g%gh}!MH12mt_86*_Q|r6y^6olio7-U9UEz%hv5(q#^I8;W}0kPE1ZI_G}&pgIg+}RZOX)^oMIL-;VL)@ge*SzQU8D zx&~fwFLkY3H=;Nq-qGU;BgLrHN&L^(GFTP%tlxcR`Hjas#*atnGM$eJ1L808N)q(Q zC3yatbt4JnX>;vIub5`3Kp8c9K%?5?XPYZUPw|VGn~9$05dhw`H99&~M)&Pk`|CDy zwhx$DCS=US25?*43IiD>S-oahM2`U9%RH^*a|v=ZfB}S=DRBLOYiKjiF%qEc+PxbR zIq8K+2s41tAVh!#REoiJ2>J~`1DH+#n?j6WF#^LVC(lK)q@5+Hd-m@WX&Aj=NsEj@ z<8cwXr2=&=h!Wn!gqVR2L|HJnBy((8(zr?v{Ij3_jF%lEKmRLJdVNA zXBlwOhJ-rN29sLY_CVyX#x^AH6Wc)FX)E+#pJlwvDh?_*izKS}*+tJViU*XjdNpr7 z<;84Dw4tl$&a;ys%fpZd%0hnVKlfn6F1h3qe}mk#k-RW^EUAg)NKIpzA^O}w(VAt) z-p4t~zVU3-jP#Q2o}Jg1Pk!VhW!3VTGCa5P52;!(;>NCk=sF8_+$FT*C!@iKK5(E z``By-v5>zQIP*Y~ZvO7KFDa9we9M2O{D7`gTjvGt5ze7w3zHvhz9b+k&;Vq=eSaGq zm{r(@_Wivu0s7QH8xpwA`rh!#ywZLfWU6Mxzwim0MzA3{0Fivu2wpl z7?Tkklx~SHJO;qy5d6OQ;;%ZO4qCE`06QBin|KU?)j-fCX__=5QRDp+{B|NE+reWp zRnr#*Z5p)!n?>7_))_w~|Ea$|-iEv`k!u~SYfF;QKHr9{w-*BNhd77W1wFyPq8qz* z?sjmGpVm*=O3_HXAPFI1&OrzUrm?%oYQ~xXw4^=gBImKkPL6dCHu4|;?r+PdKKW6V zGcNnR+=JxQ!5|0|NZl7I5hKu6`qp2++L%D%=lEL4;3#ybeeLT#(bLFC`&=(%EukA*(16TKjwy%u2b;rv3{b!y-mStwzY+VO@@pC7T@}Qg ze0gPhd|D-mw=CbT7x_0db*X5W- z*ZXB)>dCbH6t6Q`wVhp-t0#u zo4ji#A*gv2fK&3wM5EBmyd|?>_OS$v7j-nODG$D=okpO%J0hZP#)cZB0vcNz3ea0ELFZa4v%uZw2 za3&~m^08~YBXEE&1h<(y&j$|LM01y;>tFt|bIPUPyd;7+p_kS-G=nFWEd}6fH*F|? z_(x}#r#|zUWy|`_l0CIkgvZG75)@zG7)azZ%3AAQMK~41eK~jaP#teax6T zXl$NyW>%U+0mID9I>!>G_+GCZUL*&+ai4%CmRwOD`kM6OMLHO2fa@?+1b!rH0Q4rH zin?Pd(momPUAy*{-MjW%*6wkydzLr9`K@KsmTkH=mK#xyt+XJM!45RX6I^eFM+^Su zqROEk!1urZeLu@&USe!@&a<9ikNV&X$LT8$lClUqxEF^4U2$rhzjnv2@|M5(8#%oL z;z0z?9H;+T#(a={Wt7^h48)iJ{_uy(4=(?n-^M;TpoDl@$(ZV9wm<1(84<#JR!kt1 zIWUF8Pr&IS-Gge^i6@>YdgP#MK-QlypHoCW!JJiY-YeOEN?>u06X#iPEM<2=6 zOgaAe<4j9l=#su8=-b>>LC!dEodPhuaN_SHmR6(9ec^+4m?7`bMCxcQD(rQc?MY600x6Q_Ec3bJAANw z=F^`kmnxy=xps6BejRJ*MStiA0=8>Mfh0IJc66)31mvr31CaY{;b)#tTnu2N$c5HO z&cA)hr6DtdUWs@O9(WSc2kJ^)Wm3SlQ~nvieq8j0FIpy%O|A#fLGHmWTFzu|u%d4X(cWY7r)quNtDQ#7&VT zvVx7+8e8YdHkD)lrZOpu&oSiyG{F5||Jv6be=&eX8Gz;F81w~5de(@oPWf2~bw!y} z9|qP8msh{;HRTCUd6FlScJJ9MIg8jVCNq}#+2>3Ui7^2tAlWDPAkKzQ<6{v|5wkHk zhCap2Z4B5V%f$20je%6>E8+nI4r|m7y4g$suZ5t2*m5=TY<(&?ozCZr7*moUBgt#2)#{NyJs zpwP=B9byo|NZCf+-!?us3aH+{Q9yptMHgAXX$#;HM+rB^&Wh70K5dSz`XJ@9lM`(^ zTj45Q1APc)c%vcLLE|hN$Z~EBs13qmAyoz=G$2`d)T16LXUJ??1k2DW`+ySw>2ErV zI*?lkFh*;YtfC*+U%R86`S>T4%fEM-6YW()!=9DI=+GXP%N)@0L;B4O^>hC4?DA)C z`tx%9&2C7c7Zxb&c?@?NsWLB=YSmX8`|WkV>)1v>vF&Y<8Iv&&$yQ)fn`EG zhXehmgk1Ubr#++m(?9)7*?QdZE(4n5Xjy7Qf4h&6K)u8p7T^Ii#_^G;e&GvWFx{Xz zOYE_KJYx>_vV|KqZnQ2zWBSj%9I1N zzed-@wLt?ykw%*Jn^i$1*U*1vhGl&527UmUAwXkAhi5FB~j%_*XI|4l)%FkO9vHnUiQ83mB0PlzqNcMpg+B2 zqz3FF?c+N9Eipm{nSObkc+5*d_wU_jnFI2AbUhN*c>e|1hMd)+f0+y(DFSnkr=E5Z zT}S>Seu%h$I52c5+5)oQhKwWpxw%>O1p0i1ZJ_=d_?>lwBdgbx?_Yj-`OK$3TgH@B z_!_aut95D-V9-@aKX?-}zLeD{EJKB*F;IbBkBOMXp+VVcNeM3}oSK{}PnHh9~ZJ?|g`;`Z;u^q$@*sd$DxUziv zyWiDsWWTv+2@r!4U4A9R?0qT!`p^GT_U_)N-}u1UkJ8*wkbNhq?uV0-=}B!@4y`VK z_(v}+Z}{JTR(|o9?kvAL0d4LAa;pH^_{Y{&sk0m=pPH*!)#o=@P{!N!489svhV9w){KT{^Q4s9w)D2x$W} z`QZjxXqNsvg_Ksb<%SS)_ zk#dJK&M3!i-6|tH=;bovU{Fd`$Fq`rj%ujf>XxUL``_<=W$(T{<+95zFVixBJpYA! z(H{8CwJ}&Ds;eQ$IRO|v%@Ib<1ANvYjTgwu0w)fV3EILlF>2tHo+Bbiyz}7a-aedPU+w`#>D2^;g&UWpDb84)H7!hHBRy-k@KkM<)o)}_JO)Hsiglb!^MfAZ($2~nH$eC4Vy>I{*nkWn8BwRXv@G5 zkItx%std!7j(z((-z^V)*u%@(b!)@^LL~Kvrc<^-`o;a&8)!|pkso%>``qWsGtWA! z{NS=5D%j)&B}1kP<-<4j;mR_}f`t(%^jF00fgY$?m}`F<yb!HVP%m7nms|RG4Qka) z3=r|i!^oNuC7ip7Gu#bQ}Twbp> z%p719!>aNF*_d13`nKhEx4pfB#oguUPk&mu=nEH?LFvx0?De2{0nPbj3;+vhBPHUG z>5V_%A)V*5ECA0(^IidFt@kO&!M;YIAiIFiUd~JJ#>+Rq{Lx^}|F`uo>*=T4;Y|CJVpRLBXHh4%$wl46j zAa!4V{is)$FvxrQ>8IOgx-V)^Lbcn}+wNt;TwO7})M)6y7C(tB;cKutHGL8~$$;*y zV-%on%6!1RzEAywMXY{I{URu}`5ux`64KrBt5;sRz1;I2_wW*Cc$yIL%F^t~9GIg3^YLOX zpi+JzoZ8HU023i++~JJ!%fIr=w#`>vy}j(-vq!QsT{dpq*tA`I&=!Bl^X8Ki@y;gb zLeOE-Lr2f#5;xE^p=mj-WS!^#<)e_*b!$ib&Z?;?CDX$^P8O3X*e~J_;t&-j zd5uXkbd>=j$N3zG5ftCpDIU{8UsKl9Y9Hg9%*0#i6PftfuSAjn=YPKZ{2hM2Y}v%}+!z%Ky2c;Z(E|`ci(sKfPINKu>fTeI<8qQ@Kkux4 zj15Menb5KQ`^#Vc#hc0>z34?{r7nylisz$o;Np?4#{qK8iUO*fSdPO|N1XlvF9kuM zP$J}j=0a1pU;gIT%T-riC1dg{o}sZZX!>LJ(kNrI?^6;&_^5r9ARTgEiarHzBiYVb z;zX{Y{0<6`4I2RcWcr)6Y7pQCD4cReAfry`wz!8BZ^tKJQ!` z{S~?|W>s~s?#C!GIKe(n7bRqAGJz0E4nhwQSzyGG`go?9wp)J)z$9-&3e0HV^*eW# zcfb3+Dto%z?sm5;14>x<&aGd1;C4%9L>FWO`P_2c*77T&F)w`Ean<(n!|(r4@;v2{ zaT^M?4Fe5*7#Z|Sh-kZHm-1*21~m+K$fU1T60k~rMLtO~XVe$2;TaKLAi*0YH>}&B zJ}QB1mK31}d`lPIJ21syMHnh(KS{j(&0w{i=K^V;C0}K;@U{{7q%o&OIvUkog*` zSO_GeE{Z_jcu5C*^j6n-aL}cx4fcS$^T?e!e{A%qNvEfAI^lH9^B66+VDI zNnb{#Yw%!7b;Cz7Lo^5(IwU!a!CaCm`73O-Xtr;3%+K!OGijFxTWBy_apJ1&SC;Fq zy}I1>E_YF&HRN_;tC-QSZ?7JWfKSn3xJ6yI5HgX#<- z9!8*>_CZ&ILi{Q=ZU4Ug<@bO8_shBGpYNrdJR69A(5~qmc7(cgKy6H9)eOF#WR5mr zcL{>&1N3Kxi2FQ4A{+D7uYI*V-~sn9+m1ipzQy0N)p72fo|=@Lu=MkwWLpBIdZ*As zwS{Lhse$htV`GR@{USSftX}dQFZ)zX(1`wc#v5N}+pTjAJwReFc!RECE9qyABm~e9 zxgkd2b77cRbl2BJDMs|d16Q(DiK}#sYq6^g?9)$tnLjC|at*{NYmD<*bf5X=k_pBRP?bv3= z^*hSzU;p~@?sxrX8JCTOhJ1Aco)Rwxt!OuNB92B^h?Qk?WmnNFdLRnl3>Y#qZ zqd@cv9woYc3Hm`B)Nsosewy!2uUWso-0hxsEx&yK`<2b>Hj)7PsF4ienj$#4k23%enM+>C6YJA9g;A|+xi=jo~#~WV7rO&rm(T_iNQJTt4Z(+ zc|j-W7fCbnM7)**{MZ$20c3zo@Qd6DSu@{6f5Zp-#Cv+CCD+(H>Kv189akOb$gOU5 zYI*TXUR?h0?B|t}PdVA=C*%iXro5q;c_aO62BWwJ==g7b^N;H}CB)XRU=Wd;X`@K7 zjQ0-cTGO4&v=63Ucw)sd-uy5pnMTf}AMbtdd&{-gUaRs#*Ffmtc(1wEdZaBfe#_Ht zS?+nSdv=m(+R-jo=JKrhie)h8_HVuc+ff!nr4e)kRp7CKx^>F#E$NqL1mND}( zRF_71T?CS#ZeUYqK;996A+k}SJxWU4oz5k3Z`?1{)3vdbN&$%&M*y;Y`}XqWCqJcJ zw_|S^9+bfoad7S!WsEn%>>!O2ns!hZ1fpMzpdmE07vZ4KRL_!TW(EL)QTn=)L`%FP z0Hs7`ApT7W8V=%)ceaU^vIZu8@!8esiJhyGK8LeKik^yJ_4?wn*(re5gifxOJ(@J@%3+&2R-mX zeyx8xJ^C32E;~4oN0-_n_p>%BDVIRG=07w}S=j;9``_3AFw=4~;OM(2V+4s+e3B3^cWD3 zoU5%YWggo{mc2+gWaM!g1v#FMmmS*~?y09{sD2E^F7V_xBSCYSkP;m#gS$NJ(PNab!%#AY=on zZyjuoC(O~ShV}_KI?Ipb9o{mle8Kq_l;@v)cDZ8vbr4R+20akrU{<%|{CS4}G(#^* z+OR9g9r8!g&A|qdGJy9v>yZgnK-UVG}Q#-D$q3!tE zcbMP{0C{1}Z`+Ufr~hK*4lnN97H#du{o~S1&F@qTwI`pX4|K0@W+ov8fYM ztApF-H%SumO&ykZp)M~6{W&k$1nKK45gq^F*%=A^?wz~Kd*A);vi-^{B%<*=+lcDL zHX}dOF(sQrA`PI23|fFB%e<(NL1DI&`aL!=u6jwflnjV&w68-=$mVDeoGF(p(1#z) zellx9U_}{xwgf-W2_|HJy8E#u0Lx>{baeKG$aMX?roFMT_lf$?a!tTO`SrP;sBW+Y z*fJR7-|8Rz@ip+vMRUA4FX)_aeupjS))}%9`!(X{)~#Jv_U_$N{^h;7M+Ku`$qSbuYcnk<^B(Pko7R> ziGAQ2`(TwAfg>~i#5>J1){<+L?rkPF5tKuu=o9y{RWt3&qW+M<8tDV}g8JM~9jk$R zT@LauJ*tCYuoE|lx0FE~k-i?JZOBZ-MVMQ)OMSqfx-1LsY~Vin=`!FcG9`2ppgK54 zV#muMpD%vx**oe|crh6MO)YKoS9B5oNz_aT^jrO);rMCnH@4J%4SK131|axF?7&L` zU7y-9JizLrXfyA#*fTa+F1zfqa*6!;EpK_NvT4g^%MtZK!Xy#8*!>04vhHuS&U*_% z@Kam0FB9hZAZ+mbP`OG2{B@k97=?WvU1D|TbD#U%^3e}}-0=%lLIY7q_p5)p4?eTy z3kfujM^o4$55c2|Bk?=vAQyYKS~SF8kwoz#Ev~_qUVQPz<%~1VD7QHI=pe_Oxs0W_3=c2O(HQoJC-H$5Bhf@d7sE%{kw^JI&?*rpnzIYHg4Kf?tG`al>6T2 zzW!Y7-hF$OgX|I=Ctc6ruo7DN10L~$29(4AAaa8JC*C4fU}AwmR$f5Jz%F_UT_Vmr zRMyCkkM56|=X{xAPNwi8)X7OEPtZ5jpneh$(q7)lF*Z7`gu7X-*wBC#0nm|SUf!)T zdE^fJCh?a)f-a@};?Lc_yzHEpm6yEuCFPF4c*nA4gh6(`WHRkCD69LJnoz%`0B%Bs{YV<}ren||+YX>#VH4+vc1%$x)7M;cjr#^5XRcpuj=WD90l%qN zH0+g3FZ=#Czc{Nm7)F5af1zBAM)66HSDy0<1?Q{9{4o_sg9yC44P#W4=a4sV+gjfL z-ybTQkKg7ILL2x7D38%EDvpsL>T4R=03*aTkOV}sr*c--FXiCA2>vM#!~h})Fpm$9 zBXo~>%wx)zzx-tpph)nVmmR?vA#b+LnMRB{kc81ckAzVl=SY~j79r-mXWq0$NO=ph z%OF5g`|ZyJlEX4SIV~exyo}&ie&v2Ts)8G!eK0Bv0N6d(3#bEOsOeP$iI?dmMZrO> z8X71sdEpDo8~*f-Wk7A_%a(1}21b+haf8G#NsT7DB;#4?r8A7&j{+O$H!)wbi0EAM{ad&_Nadt1*=(k^I4 zJ;(>NWXoF+56f9$qz=ld{p2Sjyo#Cg!{V8Infl^E zUGbu;8{PZeV|=Nu9U2@d&wlo^%h_k2?O9j!tIMB&+7}b305uPmAF9g^-Kc@~*U+}# zoX6fUd(U<;FsuHiO|{*hB_mB=@;vA8voSy-XwLh%j?o*o3D^?`{ov`F-t?yO#y7r6 z_D%HFanDL~jf&=$y64%Nqz>mOmE+vQs*o6fdt;)f8 z@~xJ}egU+S1gTw#EU*>U7RDxu^3GTFzjtsYVQ{2%XnSGmVM?%|bU@G3ro zDPG7%F9gI@K*q@2(}p?$bi%R#^rC+aIdGp~8ta}5K6ie3>)-rM`S!QJ)+reb?DgZH@VN5k|MM2r+9fvvPnkG^q{%|i zRo+OdJ)%|7hlB}0KyWJW{I`ECPkHJyLKt;?WLSx!gasP0ED1HCtPvS10xEUi^hHns z%0NK~%-v3vzh}=Le`0KWQch4ZjQ%W_@gy)99iMRUN#Ec4*0+^kfAnvZiAfT|n6V)E zbsq>~P!1uqL`Zuj(0-GsKO)(u9B4^9rluyemGU=Y!^(?^(eZNawO5z#D40M0-1Ew% z-@2q+dF7R5=gu9F+@xnll{Q3~7~81Z^wUL|O!GTG)x>9lfYJSE$e{CM{HdMaXD3*vHqvgXN{!n?w zSSbOP!A$kt?{>HH@BjWT%aB4J_mda;AafQ%L0f;@ z&`ze2`x;v8ngeO?6K37tB&h`MpZvrp%SS%+!E*fOE#>5sZeB)K%kD{*uiAcXx$Fnu zS4As4+chP=ux#`Ao7|*q-n^;Y>eO3_Zkx-7O`9C#guR^c^3Uy8U0p7?;KH(9Jp1OQ z-xRI(S`Jpqhp|6BF>U*RzTs=PY~J7jt()ECgmU}|+sY;1x>R;yW!b#tc-s~RoOmP! z+2THMje;=Fp|5hKH;ky z-T?iQX+BX?LpzzaJ*l9+7vMbpg@L%mCet-!GCeO;eF5;7Kqk`}CgSgC8}eA&7i0rF z%WT|pp7R`kBc8X_ZxHP_iU07MFJgH0nrNACXeaQ8F9f`7R}aSvf&5}tUCTb@@<~AC zW^ibgdB|JVu??I@X?dxSLW^h%{+c$bOky3!BnsBi5&RkU1)Bm*vFRkuJZ3{c4y<6X zPv@AW0th?->^6QZ1JW9xmsi*b94OBN8G|H!6KDr*&g1;9fj-dgOxS532;K2>%a+Y< z6LzRhrm@fP%kh(Fz~C;caqvM;eDagZ7ryvq)7AO1%AJ~#KUXdn*`ce!;~BxK8?Xn&e4~J0DWEv+U3I=m)qzq zadBS5Icx-v?flC>{j-lTaO)Qv>fEUO#^%i%%|jj^;Jr!MWA5`~3*reYc8IU9yY711 zNCta$?ARfjw#EF#Z-G-v^mfVrty#U+pVs8qzOm7=N4Wi(tIPMke|g!d`(E*iSCuo* zJkznO<0wWzDxmJA0REqQuv=_12~6mhOeZAG$N|`A#VaeGtedtiGm6ay@(}jmvf*axmU&_T+aYLc0-cY z>^B2bqSc;#6XJuSVf|*to0)HD$jSn@T9HSh^?8{}}8rz-F zwmEe^1W?8-NQ2q{D=DGTGoSg)^107_&a{M`*gYn5m^8~rpg?qlc=W*!dq{cVi%6z7 z*mp6Bx~OEDDezaE^GXNE7>p1)l1h>(*4l@mM?uKcKk&i-QZjwKg9=8KqC9UbG$wXK z@TDZvhnr99B=9X=>IUc_Q}F-e3|!L(7sxR z^U_PcQy%-+$Ca17;Fi?4m{Yb+x-IY9xk=rN+?ZS&^MezDYuk{f12ajLWvCyGI$owS1> zXnJzW%7}5N9Oy-THiR;y1O@9@PR<#Av@4#y7Tu!Dcou43V`L(6S`sV)271sU4r+T?rt8lF+I%%~3R2t1CIj{bL@OK~8Uf`#X35g&C-r z;hB(JUs3+!Ki(-hnl5*`(;XG~Zzvl#Y*fOw%`bAXBNZP9R>TN6^}@IKJO-;sVyR^E z*#W$+!6r>lDOr?^UVr^{<$ITXw|q&7+mC+y<8sAMt}2&bez^zRa4h$@`@PEB-~O+& zblS6IPH-CeQJD(?-}I~jn$Xsu6YXhE%mbwHzSaRv)Pxf0h_=Q{1pt0Habqi zfgTJlQ?kNsq6a>>BX6QZCI-+i^%%OLlPknq&m5{AWJ*Q3E(d_JX~>E7OFhEQ=cjqDOvu3g8JQi zcB_n7<;7BQc<^h#`s?K{|MD+8cB`{`s7XR8pFUx;pgn^xvD`akwVfP=>^8}qw&>VG z&<=!_3RbffArsI5y5aXSW@wl1*{li}Y(+M5K%RCp5DK6p*bUxd&yrn|=S>^8nC{RJ zy3of2>SVAF84*{SqtHZclRvesL^jmMXs;4N{jrZcnx;B$f2jR>fOUSLzY%|sbfNzM zwq#m%0GmS~PuZ+OBPe8>gN{iK_h%9Og1&CA%L{#42)H(r^q4gwu8H5sGxSDg{abCW z={X-zW+3rtv?qc4dAA4h{DjBMu#emy$#C4y05HpI@r~FY25y*PMc+EHiewr80UfY?$N~19dgvDuC$=-bPV^Bn z7>zz7&&Uhq!CQcGlFkY3-!+Zc(zhDYo+rSM8rmywmNf%WZJ^#PKkMU|eFn!HJH$#r z-opbOfory3?aw5B?%ear#TS3MeD~6CE5T)z68B+)$S)#cX4V;>1igr}@F^mZ=|SSm zapJ`ZojWMGLpGtY`6zwm8dgOSckmvlVetU|Li17ibMzUjMe?{+vD%3@znS05bN74P zqx{^@|6JL+ZJXpdzG?*0uih^S3qU{3f6;;X7TVC38kWfx)j)eQ9}4@xBZ&+&vdo_nsC}+z2aWNwy4&&a*yu!g;6onh z_i(LOY|Fc37L`nIST|DM{qA>{SG}BMI=;gPBN2%e%S0puUzPI$ul)+@wjICa21}+7 z$#KjEoJpL=0N{)m>4YHsX0(h%00RJ1m>KfhP*pe1jPI)=O#DVbNMZoW;TQxR9UJvA zMkpaMtanfxt9p zFxdA?YbvPe0<@E92d))xJdHEo6=#$R;5Yz(+0Uc`+CdMFAxF@eeozLA2fd&x^dS(# znAFKM*U?5EmB5J;Oqo79&kQxrmg_|=%e7Zb`0j3-*yey9<}bPL1VP>ByaO@ycM!*} zE$wDNV0vQQ_3XI*dIj6xQ*wQgU%GJRl~=frqx<%S9;mIfGiNOL>=XP2GU-dl!Et7- z3Dh=k-lBSjyhMHd+I8i$lTR(jZQ1Hs=(S4xR!bI{CYYXK6^CRIc~c$m*)POs@tYTb zU^m*w6Id1rByHM&?@N6G2>_7sFqERK=#uwBKb%$#nM~(3tgL{~94E+LuYe3dH_Ufk zN1%Ebj|phs0h9QMY?HM41!@Anj6-e1ZshC?ZA5k)+?#I^jN-JopLa&6(K6`-RkR&v zB|b(G$JRm)>l1?Aw#RJG(lb*uf*h4JwlW%cq$1!qkXIXY@#&BL}IX;3h+JvoO+cFn(K-4rH zX}fKV?nz#9oHrgrw~6Tq+a=`8Jdj>3myE7j)+`Tg>Inh9TTVBoHyG3C-$%0%*@C4I|BMAj^U; z3GsPNVxW)(`rHj*@sB|p2FJs`i8i8Bt`Nh9;H%qqZ$7ZCQCk7Z>j%h8Jp&HZzdcCT z`0#o^fi~7aU+Vh(0=5dE1F|k6lwG@bmZ4QF(;u|W;xP>;B)Xl64iY)f9I83V1LU8< z2J{!O9Q%flYsyAv4$5ZZWBE2eU_PiV40v`xe2A4}1LA+Q9o@5T$}vInNTx$qiEH4k zlWp~zzRy{CrEBL)q=7cQ+TeE&ac@%w&w$e=`h|}I&?EYtej@dYvYAPQN1eeZ-NSX* z&e$q;nT}*S2i>`kcGF+(;W}&`{8llp3tz)yDd-;8B;aRqz~6M#HuXA>*HGV^kjL1z z>C=uY+V{7U>72c7LzYY1*as<#@?D~2$^(Cm|I6eWb4y+UO|DZ+cHPz2IH9}n^Pej} z{_&3$r(G-iBi$9vkqP`2U1lN>Ib?MJ^?Y!{U%Yf9qjH&u1(*V3e#sH4hHo2Wlr|cm& z$QW|PG3bL2T(LsRs&h4DJqfg}hPurGu{EF66y&l_rqK;#p4AmxgOGX>p^cF+0iZ#)^R$wT}n)B?ygtnOQ=v zV>AP%5mao^0#jEQ3+*kC8$~TVo^+h0XS-ksDAD0MK&oL1yY8CXI6f=O`Zb-`btvd1c*$v*%e@`siRlh%>~{vgJ4dIa}z+ zF?j6jlpuT1NwgWCn3BBn21&`0dIYW5W^l!`Q90_EI@GZlJwf{2I9~#hoH3|@`qO}O z9rDHReDM$UC!c$Q?t`8gFf(ImU6NCSue6Uuh+_m6af=Q%$s+WC-qgkQ^qCQR+T&nX zWy5=DM;)1LMNp@@DNDe;I;`u4y^Rs{2*@Z~8_Q+BAdNct-oIx%R2Md#!A|%>AjtAb z9Bn3BlnI~UHRS;GhxP*=)X_z#Cy#T`ZrZHgdOJ40-!cm@BO5dRF_=jIC=;9F;uf1o z3$U*>pd-*Obf`OMI3J+@=Cf%Uw5;s_VBCHMfQZ9xvO?OaEDI2X(CX=LyS*}&#ejuUF^kL4if z8Z+5lNO?p)eZHYdLi;z@)X+ZP4+fA|^?`C|W5zBWXeC?ly9VR~*$8=pPO}F;kvHsE z>M+R-dJAtk#|r`hd{`#50ColNK&FoAROcMB2JacfLDqoO^VBW);oz)8k7zeDOEvJ) zzq|%}o@K)a1_IPMmBrwA$ei0Ep0N#|D-@0RZ5pai3qjhFZo3u+WT#G^kF|Tg9`W_@|jeByRXp*N&Jh=!$#6i%3_%_tBd@&A1ejycU7l&g}l<;dS+!(3KqM z0G&+hSkNj4ZpjnSi3I4&apVIz$~X!-rLT;^q%O4e8|d;j`O<~<)$Lql&O0II+!4R? zzR;^~?1&wpAGQN(29pN>bT|FE7TQP#G6p86+OODa=Z@>jj;ptq?_6?ex$?(9@v5(@ zuez#Sf9-W;Y~QF~n#l_?4=NXvIJphP-;|POZ@J_!U<)K66%ecws=()Jms;Wq#axLOKn9ypnV=+3_$lq-rV#)K;1XJT~EH4X!G4FZ*2g&y7mqyvE{&l{vD2sRHRMgb#$(&88)1hZZk1ZHM& zG6;m18B6IQD*Z@9S+|RGHXNb_{l)=sEx)OQumuC6&RgjjQOPD+p>&-4q$)0}?d(m) z%Hd~wGg!$)Kfz@PdqN|C+(+<4;^6Pl*|>>k)3MALfJO)m1`7H`J7Y-&*Jm=#bqF%c zyt$X9OeiHudIG_QM+xQFk#hzW81*Hn_Dh#kZY)>jx|p5C2vII=razRCN>f9QmL^b7 z9wQj!z8Y%UAivU9RS~pALEAD%&`f`sWy@sR?P(MVW61GHaAFpl>vJCmiQ|doa}mHI zckqz5v4zIwiOP{{aUb9_2_3;Uye1%IraJ3E#z?lA`2c8j7^85e-F}84v7u=A4{!~D z{!%u2GCHaNU4g~qM10SfYjUQaJ~_x%drenlLH$b_XEIH_F+-y|8@hUiNdRRbV{SX2a1ad3@FEY; z5qkLz(f&0zaO~k*so^+Ow>Au?n~;Jk!pj64+ARVOvKs%?rqwRiID!68OVA1C~j~ z4j;n4i8pfMd^&D?Y|`yz;K_VczY_4T@Y1$La+U2uznDRT*VIX1I>W5H%1EDuJ%?9AN?VygHOnBuK=nB+ITbof6*&wj(?|bw6kNII=T`- zyKCUNJ?QTKU~6<=@*MimKI9>P9}wN>Hv>AEKm*wi>IMOhL37H-w(%Rxq`-r#qSI_> z_@+PZ%d*sR|L;kR3L>x#-T>U&8Bin!X!=EooMSMRI_V4d#DF(?+4wj4q=f)FaUXP| z?#1vI*#T14>g17f>hsstf=#8D`+1gJtw%A?S5JZ96~=P=onj)q&mbLRU6Z2J58SAXx!2mT*ienN5g%A_iZ1l!t53 zD=&#h24s79uM;b3>HDPOC%!hbZ|~kRs)Ty)?%icnd|}c9m>8doiH+4m=Jn<+o6E?$ zb*8udf^s#I(vkJ+EISM^*`BL@9s^o6z)KLL4`F{|as-+~Z`!w5NE(E^g?#}!v=OwE z>5MHiPr~-nPL4Z{KBT;(xh4U z9A-PPr92vO{jR;`0T1|<^2%4f+@FGmeymhkaxzVU7zh{#a}YL&P4JCzX14VMAN*k1 za>7>6Os7C~43qAMu=6oyp=7!oM&NK};m|rkXvM4=YQ~wV(gmD+I-INvqk+PcP-Ech z`)WWCf$sU)zfl65Bn+~Ws7{0!AkfK|ICY?943aKsG+<=(HIf1POF1wf24}FFKxsI5 zUMj?KoM;U*yd0Uf@1Aa^SYf;PE?Wv(g!1$TJ|SXS(9PE>GHun9IHB zi+?IHNO_^$x-Z#Qj)TZ4a^dHX6>M{Uw!?v!1omG{B5pp%&mVTFHuLd z6FI_$*}3UQwuvqD=Zgi%2C|6UBxFmL>7ESWxR3JGMPHwCT=#*#yKia~I>UanCri{l zx{tE3$@HU!w!HV^U$?9-J?$ep``tp?&KqBbze_#PO+J=HOkbFQUBgFY5J`JzGXY1^ zi+&;>)JuPDQ`N*N-rTC|c%F@=V!X`G-=CKr0@!8v0C@SH=*VCZG$Pm%H$$FPJ}VSF z@T+>P-?FuA^BKsbNw@v8>6$=aYVhELWH@}P?7RAxD}m5a>bE=#EIX3~w!O;+Nc5mX z*r2et3qd;&YV&(81f2tsuaND8+TQ@kM9PDcO!cz{bUf@Kwkztc^$>qt_a8ddz}FbO z#8T~o7g<+ACn(f$%8?e@pL&1g{%bJZ2lYn5PI|A1WKKph0`*qM}fpReqL`=WZNuU9<5;CvfqC6_I6p?@{-P7LUX z%_2TRp8|q*v?XnBy$?_}@hbj;ev+&)NSYG`_-FwAhV1llV32_*bR%q8+KIHk*j68J zLE62fQ35X`tf75x`!_Uc19FO}xxxK5SnDUHcjR1+pK| zBIT;q*;-fJE?sYVY*z3Q|57(?vp-$ItIKQT({_eoy7*%(C&{{ zqBgO<I9YTK5)O8=2OGVdVYO64|6$a&vY(uix27w+K^2(G6_^bdc-y|lm9+qONe zd4D8O>m!hMEWv|O4Uh4;ybw)H^6!LN=74sa=ANG|GxQ%B;bpQsyN(Xz~zX0A~oYPua5&BiusThvL&$3=ZYN>`eRs zuH$?pL_q@|SD7rw0osBI#LNe8U}lsm9Z$fK^x29iLx*9bt+PNf!3#K;eKB2HiYN;( z$5}&v0*Uz&tA0Q|(9b;9K6FO`pdEeYSdIqP^o)CECjyHB?gNr`)E6`+=)`a}O4-zd z6Cj}Gx?XjePBQrL7kXv6^8x2;%z6?qmM%*&l>8=GB)FyRP9Oxx5^c-=EEX(>s*}F7 z1D!Tdb~vi8LvBOzK9TD?!IJ7~1NvVhWoE#Uj-`e+z1q+|Pg#@;po8#@I*|Fqg@E8U z$SA+Vbl)${3IUsvOJOJ_%BE=jYw2l6--v)FH9s}(}x)(qj2HUaCv>$!& z??&zb^e+>wHq^WWmkPc3i4CUi(2Ln++7{>>*lrWLWm(WYX)kzJOfB!(Cw>!;)aA3E z2t*>yKKCRB)c4hZ+|I^snZ2+Va36jn{bgRuK58kF33VH=k;v{s zI!wD#C%K;b!`Ac82FapN&F)ji5VelhfUMO#nN7R7^lJm{sj+>30%Zf(c~*P*MRF1t zwjcwdU|*oE4N^XXU!D3I*$Ww!-Oz7jGBF0p!!CgEjV~jy9G=OFN%3~q=sv&kd~9mc zpGMp}&KuD8mp!9GZFlV5<5h*b_v|TCI?v#{YBsXJYH+~FN(MOoKQag+r}l?J>qx6gwX94{&y>CU_W5_M0}E?Z11Xqv z&>saC(J}fY4G12Nh1b6GX%&`)5d4O)&n3vwK&?oCp9hlT_cFtIg0%$hiPg%Ae_gmYq6o28cA#|SKmDaJmOIz_?#Z=5Kj zsvysT$NAZSL&l(y=&?-7%S7*X zhwQ?;kmUfja}gIDrOZC=rD#ptuzjgdDNA;WO&bI9-hey@64;Ye*Vu-n+q_tn*9+P* zy;%LF#U6cDzknR*OQ%cSy%GrP2QnZciLGjv0$vf4a_Y7u4Ow=H+>ngfhGT0gn&IO- zYOcCix_w}pcVZ|=qFh}Q0ayf_f$R&joo&qP>__uAWw87*{3$vMX3~|q*`{SL2;Z!P zpE)44jb)@YM!)9An9-Ua(WeZIfzYuo?=63Atj+`VZ~BEDNjsMM3UHn2Ax5_K8E_j! zJ6?K-pXpUs=r{H~9xFp8EEl2=e1s=yQ`t{Qx$f#Sh@DfyEIk38D8WDR&B3=YKam5n z-wPm;OUNmHH&!Nu4~`fCp0k>5uKkDsLg`+^$GJdTW+QFP6=m>gHbz@JZEoR0 zfXt-t0NE!#2hzt_S9A`#rF_J9YtzcQW?iU_vkg|X@#BHGb z8Y9?m986;X^12!rE$>wx*XKP6{6>%x@*3{9K#G{XoZ&){b%#Nd0O~i%WR7@yR;#JE zgE)m*7 z@p8`|0f*bKc4V8l_el7Y_o0uOEN7q58|aYxM*_4H$k{{M+%_z|z}Gc&Ms9MS_OV}& zT7q0dA29H7Z@0bdr*ln2X0qH|?p8xb?;31FI^jfUM?JI;-Gsjw*>tK&hhC8Mh<4AW zO&&uB!O+QAhKL?#zz!xa+q_B{Nod#63n-_C{OxVy-0E^>Umxdt(T?9-TVpyz`ZFJ3 zvq_q@VpeqR#Thm~2 zNS;6wwjNljupiXCoez6K*4GPtzS)OA*hS9(3q2s{h=^-u^9UMn5B>!HK#yMbllwv1 zmU56==tdd*u5B}kEL&*8Icym8#oiDMBX558b{52^xH15C5J=q$lDR(0W~G|=kmIwJd#$2 z{?6B~>_bAfhc@7wJLNWg2cSCuZR7rKJ7~9K0?ApHn|?Sk>r8Az`+U}&n0*4+r>)Qj z+raO%Tj*E#fM{>hd_Gz%1lbnqsq60r#BE`(nix}hNE_)p@1Zd-MKj6)$z^z+op)Ps zJn0LtAN^p0F|H*s&sYQ=VdnsB9guCE5Au9olLLM8VH<+)U2H?jb&X2}C@>pUj+)Eh z!Nk~v{P?uLazu_@=V1x>dB@L9)ouqlhvcVA-31_tLuYufokW>f$Bb2lBu#7)x=>(d z2w9#yH=sQlz>(2-+EWK<)I~DaCUUkLFq73`fb&*{RsxXMd&!Q@<@EppTbB)RJ{=6_ zy;ZxIb%a5~18S4DjP5u%g5dhy!K!}h#^9kSSqFm^-BEa6)Ud)c63iwYJb)vM=d(Z* zhEG`WDI7-qbCjz)63TuUB+7R?n`;IJCD;n4X+!q0rd@(KsJe_UqpZ z0rl3HNf~XRjX>KX4&;27Orxr*}RI$tZAC(tH-(*}Tc zSa(DpXiERVq%Xl*2Hx;4!7|ez_6Orn5SM-QeLCk6S;-d08HbT{VISGDyb9BvI3X7% z#9$0F7I80-PBnigFlb1>X+!cW>jP4b5-sPt7L5I{W5~PPR`oagmB6*J4V_4A2SZtY zLhWp`UAe90!exms1ohAluuatcVB251*) z`D9>5bznPr=1l~%F9{5r&ogB)vnD%eA2B0ZN{@urBVQN5J~CEguDVKE5JV-w7y48W zZ1{zKq9MqBCQkEV#|Nq7beVUqtn^FEBpYhGmz7tDkBe1TviV-Qg3fBAEwk`!XX9)j z3AL@PWD#I+Hf?^5$Y$z4=;Tm7#WI_GsStkqUhBc^dqE)WEs%bQdjJNx;Y+)H)3RT@ ztTD^sdIn=@2Y!MVT=Lf00qhv|iARVUIZH^HHcFqcSF||;LiRaEFi2h4IO?qtz<+{3 z+LA23*$W#= zUui4l_5)%hWSlMaBOf)|=QVAiZ1Y=uPJSl+0ry{3g1Xs=eFSMs%0bW~`t17}+3)U0 zYz6QPI?ovAWDb0(Z3@3_mxNpswln;R{hsP0$>JPxWq%Fr)dzG5dS^QTVuTur1-L%_ zRl6U^9QU*DzQPaDo_j4jO+B;+`_4;7xsG#bKlmL!daggJX=!Xh&@p&TJ(42JG<MR ziknd1R}(bLtX~*5=jCAnj^SVu5C)tBgr~gPa3$7&LUJ8SQyZOxwy~sajE#+kep^vg zCOpAlbRB2Z)2^=<)cx)Uv;oDmV^d$5SxRMNKOxKHTeHwR4AfyiYmcL&uc164KOAG3 zTE}2D{Rsyqo~b^L+ezvkj@tn07|IBw0jhyIxesKYYii8naqZmuj|D`c-c9o6gHAit z*Ny?xKDZd*{uq4e1}jP5tUC=iomWL62(M)Z^#-L0l5^-ANoXdb z$bZOw3@G-iH-k?63-%dEejf?F+JOHeF2Gl`WeCV~oh?31`?MYCbx(rZiM_0@q0J!2 zuoG=aJG)qbr)jf#z4_X*E}l6-(tg@spl(<0=hnfrd}6jS+m!=*iM-qlf06;7Wl43! zqch<*XdCrXCg9`xO-$wlvnd_oQ@T#qdwF~~#)UUM$5%eo2j z>*GrS-&g66+u4+pW&7(9LiPdLnwa+`)W6v$K4FV(=bO}dKHJ-FbA6sfHe->+fCtvp z7kpQ{-1#6^gCJkXBDAhC!G2HuC0?S9Ap47j+HTcttNYih&G<*?fF0=-&$c1u31A7xhj8~Rc| zfUi!d>sSc<9t6|pp!ao$|8J_kz6E_f|$TAN%DAxsz9sg8y1ngdmeQBxJv>YY3Fhx!Mw!GouVbI{>|=M>wjmOU=6WIZ z(MFK{8v-0eFM7Z-DmP{7@1!zKo{$vXot_}2hoSnS+1`KY-{j!w&}C` zM?ePs9k3}ux-o!60t7smq`uOw9O$kgZ2){EernqdY(S0JThE+GCjsb5`RQZECnhY1 z9)u8LFOWymp@-~c{fXF0Ck{gP+mJpQ*#_dCcw;hsGr6-pp$%#`wBQ)`m>x%v z9Hb3`r}Vi7%5*}ndO-H!Idn<61CJHZkAxiT=w&0@Q2Phu()L34)#c3xrnl-L;ml;C z2FfKagYNK%{&G*!{HF!I`sR4s{g3#OoPzikIY)*ULyvxtJWuQgj;qn7h9AfgTaF_` zzGSpiU{y+W9Y!hlIb}yYI#CXhX&$VNrDW@!XaZgIFF-r5UKJVyf!k(wIm(X&!|v3 zR3}xsrVU-$4QJBE8w2P+{Yd&933Oy)0ib*axGZ;~86%msJp44Fmo6tyGI&d#Jj4x$THAg zz|2L?0;Uh9?)mH!K;Mv`8t6Onl*u{BV_un5^FmUV#lvUw+V&xA8_5afWdd6dnAOmJ z>;hb&YeDwgK){C@ymeim(Bs%#=Opn)FSvnt83JaZWm_Pv1+SdJR44O z;$%|$$@j#5FwD35rQ_IkmiR6PC>K7_-|XL_fk!uV5B|FC>v{ooA%pM~pxzo2pgT!7 z*LPMOETaEM3;4&F;hp^%vR+`>QNPnB(7u!xCZ-%4I>Cxr!FXxz0bhe&5kvNa9H>qt zQKBw%G0Ubb>+G86*zKcDZfR zU+SPe`KaUnRG=ToMDowPkVu;Ejn1ZT1^JoZk0> zl-da%l%4V*naatSnzqxv>8Z$l@s+%sl(x*aMm->zNwN&`Yz>AxXBaWs>?2&fF)|%s z3gxi|PqzyJ{8Nn_Pp3s_d{`a7Nw6bTD+5x*gVU2z90n*TPfX>RHVhsNu8?Dgq$nW!iQ-}>QBA~=kif1| zpLlMH=hoaV9X~`;suq!0&rEZ_f>?N`?F@=bzqpoigb2jp85vvs%}h&>4?_dBw?YIO zy4bO*9A-oO?Kh-Gj-0wEH|j1*kfi|Xr&{3i^c{NmWA!}qExPcG-;4vbpc7^CR!wGK zxR1WGq*3P8bPbxuaT0Kj`w>FXG*CRC4qcNpTA_NUZ5R3Efg0W!b=DG1J|y(g)pmc88Ma*O>K-h_mhwG#xsIV5T)ZF`yn&xVK24GRhXalo+(^wjXpEDmRy;58}vGZ`!(pqAi1@`K){bGHaWz z@<@(C1C$i19ac{4H=Bq{`$*gudLrqBj#J7xN%DagF& z70bZ``4;+tDSXLF>i~4;%Nqoa*kU90QCs91{*lb`{tax37}voz{oQY_5!%nG{u(_% zOyAWuu1!8bBhyLeYQ%JKev0L+IuE_@dmd~R&G38HOYTRe8$EYhR6jPrZ)o<+y~`Nssk~It%3U&;WepJb1OB?H``L+~KKPNM2`9G%2pi6}Z&+XvG@$5PIzn<_Yl@5kpuBhyLy z3<_i$^;5Ky-K`Ltr>5KfadvV_37cqiKyeY$O@HA%Slfw&72>1V<#KolFWXtjdqirK z4jw#+Jyt)|HV-PO-NZqvO}s=Wx_B5HBf7(5mF9Sq_su|Wc%1sw!R9*pJ1F~2x#%ta z5xL27!Y>E^X9N5Sr2RYtT_1z@2gO?e{((rTT%5oFvM~(P!Y&-qsTiU1sG+_&UR<7hxFCP73P%~l$ z=*5eh4@^t9BscJ6h0gJEXH~AGo5zVr(mBq6l5D5y3R#F4Ro0-v_|3T*EyPAOq(XEq z>?nFI9c_+x;!XTrh0q?ZK@;LTXa{Xm|KJNW<89#}`i~w{CR@vBgSy!?&XE%p;H5j*pLvnG!H5 zI-^A~iY#Rn0oXs5K+==SzW6=od@832I~ngzQJs8?$ymEZ5F{^p-X5p}bz_32Knly1pzglZhJJfIQ9TXaVZx z88_<50iYUi9yKuPOkif+ny1WT3Eln@EcPGib7`r!lI^7cG;|%N1G9_hWo$!c zgU*YkcN@?T?psJkYp9oDVk7!NJz(lYLv04!UijA0+tA~sLfk7mE}I$yV*UHD6j*9` zTo2MWg0nV2584dv@&#p?fRRY_1Fr&5Kf#=RnhzZ4NKTVqwJwJ|h5R7Lw3W88j1sVq zuG``<^6_tSwB4M_P6ml>T|Z8vbmlm{!9vR z9694U&f%}xkjX5Nyr{v+fdJo>OUDxkUTAs$NlIjvG0*Q*J(Kw@8DrC`_P_AP5Di~*@g}+8Vo-Y@{zF)fSu-e z`}#Jv0T}}+4@}x5-q?_R0Pt~bNMD{v`~e+pOT_CoAVb~$&()XixxhB0?M`e1?ajKW z3;l$S$U)i*5J+EKgZakbgZjV=pZQIE$#oIuMm!4iYX4G!wxDMj!}bGcl6gqVS`Eku zvdcO4GdBqPH~0L<)MdjZ3A`I$Xgt# z6U_bOJ^RNRXea%L4zxQQ7qcbZpx+Kxn1S|EAle^#N}0zRpc(p~ZDq+5HXqqN)&r?P z)OYNB3S})N2&aBvKKVj-IS1Sj^lk%nbmU$1&wViW`JOv(11C{tA5$2jG`D@GM?({~ z{h)JwgKbEiA%Hy+NZki0tFvGE=o;Wp>I?h$h?)ZpR{Pi#T=WNjfJULo;^wmHCmLjv_6Ctxpra;(NS;D7U6hkgrS8yE~i z206zdXGgXhys;tMY5fq-`hf>0L_2i77r!`;y_lbV-E+Op_XG6Mwny?xU8&;$?N9nb zTXL;756H7JN8$Yu5iejD!X9Ltm2|nWq4r0}Xd93bCR`Jt1Ge1Phf}&yfx)`AmJ<_W z7x7tsY(?!tR-O!pwT7*b%+CSEbm)L`M9Qwp)|dO zqYWfZ1jZy$S?A9ZOib`i)Sw^x$@9deLeePj#WC|6;mhOoHK3P=2{0sW=q7g&2=z+F zI8XU$R45zh#h*yt;&}40hMWPUOzNhNY%}%eNNi#+;ChTm)>A{2&8z_fQvKxt`cYOs zyK_SWbcHVTpT75lN{FU8K!&y+kvd`J7uxPr9zgS&bA-q3IXn!Pu^>Q-T(mt_duhr zd@v{wdJD3@RET?HRsq@obpUc>gJq_nn!Aif zAAw#8bWP3j+L5|STWCM~sb2ucQuadDBC&!8y} zz_X(P^fG7VO=swDTE_rt(4{-*+Xmu1KS$5Ci_q6Lq>OTZFZiV5f~j_S=v$ zod{1;K5~}2*L{lx?vJu&%%_y?#2Xu&ys4i_lQ#5fAJ-+{+F+TIT`~O@LEko{?M`e% zok&wY{CC?LU5DS<&eY8s@+HqC)!1;Fh^&S@z?;aAjul|1n2e-c;a)(*DnU5|6TN8ScPqH0^K0Ma&sP;I($(2tLD=t+LC(Bce;@m+eh6)j6N)1 z>yZUGpOQc{>FUE9<{?UbGYtms*xNo;O>nBD#MB^`QEa>iNv%P z!=A-cgYuYSn{<2%J+$wbv$66g=4@PnX`|R!nZv$1n51>zo-U&kf8)j0W`_Td-X|K% z#SyN8weGY+jc&V`5}W|J{9siLozn(nl%44P5vlO=tqR=ebD@70|Ij`jxL-sPud~P@>d8FD1hM#m3Q@H;lK&77jG1WVcHv>JO+l;t7t`TxZd@QEA&jmNF+hueUd+`PX!{&PQsu=oXZcVW`>%(fP^W z7%PFwxiBAhWMXQr;3+3UM@1hm33ou=@Mg@RLlc}wX~!G|)e};D0^!=2C~RlN5BXrq$jD>Rb#K-wA;S56g=pV&@c^VEZqI5 zix=c1@-;jMVL{e=9h}cR?OJ@fLeso2uw3T1H=YF-=f;NeySF5HPt}rc+7<}6@e>(~ z#Dnd6lwZr~zI^prsU2*b$n2E@+Xs`vKce{G=y2}JRJN<8SvNGG~-AU9p@nS(e(wU%0+E1tSBx+6Lr zAbmRDy_;F<>`sXSt#G(+?cs_fh6Y?0s!Rq+2?=+)!F_t?>-2pT?v$}b6DSMASsZ47IRD@c(2E1$ehW#cI5 z4==;InB$7mQo}mb#PYaJ3WP#1!SN5j(OW1Di~ik?vV^}l@JQy)%y?8NUl~26j1~(! zB>Gz{FCTq9q}aTdw1nH2J@g#m<5F2!<^Mu~0!6~aEk}GrTvsCY#;~A-{tOK~r>n($ zt=o3zuWjXb6!I@IvIu!<<*@zMUH$Zx6`ok(n&)2Nn~P?1}qKH zQrD_XAPEt#p$md$YC}YqKsMl5dGyAga!BH-q5h;)sN^H!!>w@}#2A-rW2@KHV^LJ? zm-eWNv?rb5c2Ly2=98`xCp@i{^LTAdJOJQZ+gHCQ3O#Z5^20ODC_{sMm}U z{f~e%3!->doO2J=FCh z3-$wfN&>|D4{*c|h@!4PJ+tQ5AD@X2g=%m5df=r}NogvO#bj zQUX+ztI|fB@wG?S5&-+6yukwnhN+5f$vHgI6_5g}odaUqnF&VT&e;GSv>AJb5m+g< z50*ChtRL{$%;7Dsw~uimd0JrI?Fpxm?^pjAWH?A@DxaY8Owl+l%>D4Auv#s5qn_j3 zwE}W%;V(p`6^uv!YqWl*Sj>Yg=(Gp#F%5#XF!GC!{aplK5nB?+YQUJJk&473sW7(h)Pgzg-xYVyh$KadtzVFg1q+hs9ypMZDAf9F-`y975 zm_a9b zyin~z<;$s5nr2{^W5%6*h` z>DkI{$+J4OOjB#@UR`3;k$h7t5(D0CoC`)Joc7|_%!64r;>_&iYCWu$l z0f*r&zp;mb&47}mPc$gLSAhRk5FC^x=j}kP(8fT))|jh7S|m|8aa_!cMd8jSCGd=Z z?dnBzawy!xAL0fIHEoQow>t*%t24#fv}bIVU>3SJ)_x_mMf67?oX_JgU?qMosFP$l zNo*t}cK=dxYgJ${FSv^roDTRdVu$%>X2wyC%7cN!cQGIKbRaJcP>`%Oslr^rwu#TN zs_Vp8fE{&344t#*n8lFcaZ+`kud1pEpFOo0b+-aUB>yon=F;v_p!dKb3L3A;)3dxj z20eb3Kxn{MAQ3rO6nB+*iXT|rb&!VQ28cw~$4q&~pe|st15k9C=BG5CI!(AN6U!mz zfG!uc-=%{HcNT93rY_`c1eLqb8yhsO=T_>W^0+N}je(jKFm z@Kd>-U{;gyl{q6s4uUFm{9_t_O-aDNqpl@5Hn{PK{Zl%Pr(1F;`@0{-_3;jbcm{XD zSpG~}C*vg|4{HF%4&k_t2C>g?N>i-kb9=>)S~4_kf8vkSpWE}_$~ItWKs1f z^T2A&pUpp*Z^p%`REs9F8HlC)kTF%+FU)Q|>9J)(^$n${-|_n`KQj_}a=*m!T`$h9C8wA~>o)Nkn z5SMy~mH4WlkxY#e=tllmyR6o($VGCwpXELZ}J-#DRJOVDLNECIu zrGk(Z{T*Xfx6Mxbfq2slg)v;pSlw!7)aUVsTL1 zqp#np+t_>GI`$sdE4b?pO(#eB(5o?!U2K!D1GpLw-?yh~#74*>@-WKp81z)*YlaLC zwwpGiIsi_uNebz8CBsTjM$8^d8ezwbY*OD;PbV)$>Z{n^%QrV$<@}+x+V;(&M3zm0f^z((gb0L(O z-II^y-I$F6&*^@U+ck(0LN6YJwx&_h`axRn*LAdVjc6V&>9U(4uI@OaIa3duk_1GMWTiQUv&*P8TyrT=n@IXaWf z0kT^8TY+ijq_ZozBz5w=h)Gqiw@KofSbOY4|K1k3x!p1JAp*Ue^s%JVO(cYj=fuXC z9<(o&f_Gv4Cpq9y7i_(UT@MY;Gv$%iSy9^n)vE;_-Lsj08{nTAX5z2_Q0CyN&%%f@ z;8$U73&AC7bML&zn&_M0+p`hvo92r|PGkwmC93v!-zDsQiSfO>*Mz)dn~6ddO7mtk z>*#EV)%h3@UlpPt>XWSmv^67S#=-a7}7!Ji9ZcXcw=?#bi~?F`d+{Tv?xppFt@+^v9#1%7$`HG8T7+ZrkxXjdY4(>!$h6~+73@r`-|Dkj1; z$SZX|oS+vwN0EvM2;16TWkEu5Xy!P8)FF`dyUo}Adto>FWhy!`3&O&`JKS{ zPY>3EMC{?>7a}6aMhfYa{>czEZ;OGy2J@>pr~W>&$^d6zbh?^s{YANLfbX1c3`XX@+q_m@AlQ90Ql|6luVFac%$ZDKkpFDn4VF*s zy+eP{DViws5b3rb5z4!J6m`7sGsJK-v`z=RNSpaF0Po7a5Vdv_>_$K|wmfgI@tm z5BL9gH?9`N{iYq~NQHmq2IDh5NCrL=lfFHVTq2=SPU2p%JVHB+dt7dOW%lHkg`J&+6 zn69hIFJmgLTY?@mYcu@*)|YJX?a`tLBaE-OjJXg@?Vqnkyc>~C)eFwITLPld@H1Y2 zI{_Ad3%Z%1_tLY#2g_*H2hwAf=rb<0=rV_Sz!j!LV7Hz>+*SKb%3yQnLl=vyJUQHL zf+T4~f#%JDuphiT@|zfi806WjN5TJ2=k5!Ju%)_~;EF$oWVRD(6E%y#$%jLP4UkUy z4c=->=f?*+DJ&;biaX7`Yoa?-!Xp32uo|8(CT-O{f3BD!9uI>2kfdN){=h-ojYc(T zB~XK5ZZFeuF()3JJJ!Y=U_bc+_o*nUW^gG?ncDjOr(T@Vh~1b>+%Cn5J4>Jrrgv45 zto&mCE|}KW)&782%1>7ryx)-o?ez0@36 zd8E0{wRgm0E8B7t@%-GCvck0ke;@q393k=3;ZXEtEC=!`ay!>b(mM3M#{JLm=aa<`QYQ+RRB*twP)MPOJLhQzKj`R|Nyx=nKJkZzM+{g#lEd|+0nM^ZpHDhuA$i;44 z5!BPAb6Ie@C`jc?)};t@=YTVYe{==I1qfX&ld<+;VS(m#WWQf_l6|c~$-Ne!G)dIJ z1f%(4x?5SCC=l!6(f(=;$&Om-+pnlVMW)ok+|X7u3mgrYs)ho3j!DBJ*scpOQMg{vLklO^ z=O}Bw|1R`PRHtvE{wAOD9z&ND#VIM^Eeh%i8iqo8q^okcj9E&O%3R8y08P|!UlC=j z5X#f};k=C}!iKrM?_^=ESXp%4$#OT&O>mZXbKm(neIeVLgmGn*n+5f;$CPZ1d&Hl^ z66rb7{KExoBO0b7JK-{wR^?UgfKY(kL%9To7n1vGsS!kVVOk-JfZQp5{kWph{S#)ErQa&ypy?Q>}W9+9(k&jXhD|RTZlm~a= z*tlW=qt`XnIG#fNX}wD@qv7AS8|Q~9v19P3+lu%%|9T{o{uG?<8-$3Iy5~PGZ|3~) zCcSaM<6bAWz&Eo~kW{7IWM3d*U_T&$J}YKalpeV+y$Mlz2?Fj@I+i(8J-tvlxg@HVSsLNj)ce&wjnfY$9!5%jy|g6qml*)d1r)=A!h?n6fUS1;KOd8WSnh7Kh);p* zgjHmHYB2E;@uqyF$e`@O8G(Z=cPGT#TQ0 zS1WvOd0t?bC_Boz*rCRBCd$4%`RP&WUdaZ!n0X!8c?}%dS$AtRG1fID<)-MDD8;bu zo{=yE?dH8UID(DTR#$v%(ue;s!o8>k3g&kfax^iEJ=SVN zhD9H%g81hsuY$rD7M@TICQt@rUhC0UAH2WPu7ck!{sFG6Osu}Ot(>xn1h5{1em@aJK+cr^V+Xq*Y zg%fKE9rJOM#P{DXOFqqDUVu9aMehus;9yAv$HQVX#-3VF684hqn;zsSO9^c$D}a6M zGjsJf9a`l3+z!hlVVQ2DTlm-Se$qPu35`S3u4<2KCGD2oZ}EgjyQB@;3$=wzpXKp@ zTg36`({O_8GD^wi82UQqQuFycqh|va-8g#E5fneVLdm#Zg_=dRK^&^5bJF}CID{8n zmM?0tFFiiryQBsDqSE>18OZH9xC~h7PMCP^l50l3kY#5Im>8kW{N24W+YRLp<%oE) zLA113OE3iBOUL3&7E#JHh;$XNel8VD?A&y*W?FV;lif@sJUA zJzIbPf8D9GgrwZn<8|gUK=8H!tHS*1X4xgg0@JrC<3748IOWI}zui=R6}Q_8VUjOX zH~4CCT4)#JL6238Cuqty>CU7*=KJA>860T@*6k%_Ve=dRh;42`&$B;({Z|D%n7_J8F@>IH z4?-kF4<1hXm`0>(cAWv|EZk9K>e=V_ZH{5aZ+Q|Z$^kADYx^N=3K)g&QBaX6==zb| zgmkq{^ki#*rzt2z85iK`+mAC4!_lI>`G@3W=KV2noo6aZ+|ipK&xZ<*iQiqS2M3Px zww+e;ru?HBsd^DB(9{|6#;l-6l~S8aAUIMwD_!czO_d_zfxm z$G%V@o(+6Q5Z0wla39&=o5?Rx1lT%Cc0qf@{!#h{A~cV>EZ%M3oE{x#Ta_g8lAJuT zk6$u4nC~DfE1UHI$jo90Tez@Wwz9Az^qfv99bSXh>C&^+Pz2!-_*HxOSJE*5?D{9t z+i%E`IPzrO{9g9$Dti=F^AKD7J$)s9CKA2S{dLM+;`gr{VUI)Y+{!~Ik;*HoOHQFI zzn=mGQ$5bvnaeFwqGWXUv#I>Ys^2yi0pz*We$Y2v+4~}6b#c5$(+<*u!{Cu|z^4*L z(WzObu|1JbI@EPVOSEUc2v65>IyHCGJrRhucI z{GdpjL!)|8?iESEeijrCwclCi!YFt*WbKem4Q!9JozLY{p@eJ>>e*aq%8kFRcYjMy() zg{hiY)`_ozwEZb3g&s^BDtw2KKcYN|O_{H3X85iB%s)4Az3cE{gzB`gu^o!@y+&-! z+uq7fzOJ9~?ob@eck3C;3U$PN6glcT?y9B1a-H|V{qT#jFHyoT(YTqaGr=qa!}e=W z9Dxy`#%_5s6Y>S-kN}mF*O_*xkm=_?A)UPCZaL)~kBAI7KO`XcvHm?5MQnV~Qf$`} zquGy8#uL<5)95XFWUnjXg-TFY-ZSh@A-_ID9M9S-gIsx^?bc8CCed%7^m%E|?`cQi znPi&mq-%BlO9x?aBQxb5jS>v4_et#BhJQp{VwBafmKbWzQMgl&=vbAv`xmIZuv zkz3?sCj@EHD>`r_0X9*XhQ?-7f3lBNsV_uxas0Fbh1WZzyPMICg*q5+e}% z5+KpFy&jzegKq*oBFi;VKX%%C*~jC&62ybnk&SI{@`-eTQlgQbn*MZhMNoqHTkW>Y zV=19rT5Wo_z+tIzj$3?7Wj?Mr@(z3}?LW>ywuVdgz4XV%UP10+aQ`L_h5tNTiKcu= zkl@`zU;O#|ty#Ukd1hQIS6o=p!w<#+R-Ia%GHlr2o&@%b<2)SiP^4+Llu+c9%=+vp z8#1<9n7(&vQ|O!LaK3re=X}8J9aM(_m~K!5qFn)YcDB`TIJx-gx%ZMiG3cIThF)9U zx64^&J#|2h-jHf~vgyo=AB-1-=@s_S)^k?at|OKd8ufI@&y8J0@+;C8$T0;>MJRG& zE7nJ~k@At*!U^$vOELXq!bq|!LO_){+e_}*8eQB1V%;qUuk%)~q+ud|lbnb49DE2Z z=5fnXMM^&dd5fIjAyMwF&+_^yCKHdXxd7FazsS|ip$D#>clM~*p4bt(5O6HGB-B4t zEwy2{f*U7qB)w&gj-c$1JD4`U`L=X$XGCq zGfGNyOy$KjkiuKRAi}NTU|s$%mxHJj(OkVa^m=iPbYu9lV6nE30b|FqUTyL z(0y?`gW{nvi+@H^_ww7d!L}}G0Xy5YT-IfFz1wc{Dsq1Meq;_Ff!>T$`u7RbC+;;Q zUXGve1N3Yb6N&edwbqVd{4)AG-iD(xge3~YW2JP{Ftg2 z-M&Z8>m;}9jE%Qmj_SW}c7!DJ&M_9ID*tev{+*?k*a{|#0C~SS#s$qX29UzS{y%nMS-f+_e6j#4QuVXQDMuFGwFn@>ZTd4X4F zW5k@wnMaU}SQIBNtp7~a)SLJt{ObMV_gSB^!Nc)GfoF0=b9_yVDpDR?IUkjgX}>uq zy1>~AmY#e8)`|PfpLaf*77oJj2bmhd@;ySrd6l3(TI;xz0&;TJ;A&}-*^0s{ek#6I zY0s(IDf4sXs_GspH7MU6?XO_{vkpQcf|uDR5QZOL=DH zEl}4tx(8vpODBX0Wv{HUggg&*3|LGpR3N!sQ%!k=g!3zbADC zHxuD!{(y&xcT}@93I}u5DV~SE>SpulnajV(=(-gF@{YyZDEfy9jp%FC`a#&S!pJTP z^X|z0V6|Dk-C_Srsb!+`V#HG85UDsTeIZ6HO9rf4VdP76;G$&@;ECJUSGlbRTC$jZ z$pkB@dQ>+%10UkA@OscN)#iMHZ?$bN%zyVPf-FpcYk8{*G473(q742qQ=KAy@2cOe zZ5VKfD@G@AT=R>Z)`8o!pze&P^4m>ffavDiZBqsAJhzfoD;Po;Jb zHNkm_=`!Ps>#DptqtM|nafO#RLa)<}q}LQUN{Zq`pLM&aXK>5Qy-W49z<1-J^iibt zAVWA)@0Rf2$vlCksgi&8Y0=$>tchpd9g?Y^Erc&?xsheRP{6pJ&A`ciD^^bzZM!#o zq5@G;*>z3Hc9bb>CHPEu-p$bo)|+eb#>&ONKer|-p_v-k!?0l^Y3`e;8_Wft8bOcI zDayjguWUQ6_f3i$p0ky+I3?w)nc+?z*s`UC^Fl?tD8Uo5acEp>K5UDH-dh6m4j=13 zq>;=ZL?aYOFmc4uEn^>k5XZzp6j!14>$g?K|6&wcmvho%VZMO1GNsbW+~9PQ);4=z z6!BxAFv8)?K73;aJACMU*oB;YoCBv%#koPhO;%wof*eM1ke}n<7Cb#&Be~qZ%Q%m5iov0go>#Qzst@;X^Up-tfJTSGjbhfjYNO<5vKYV zvDw1+WfVMrkE!GyqE#Be#9z4Y-azwuaYN|{cuVj*OrWWx3jF=@>aier4I+%}3Mbq4 zO%={dM zTs667UE4>oD5SI5H)0S{~?lam*sR)HJO9xXE z6HyxHx!B%4*qOiZ6Q)&p#S5f^ap_S<5SuhpfB@X$;W17QSF=>mtE64&5}FzjIw1lW zy(PR3&c$IfjOMeYn=0`rsa^r=05utmKcS!qZp^f34cr2I$_-gd+o_Si~d69n#OG$yOevXw)1= zMk?f})6qSUbgz_U=l8ZG4kjKz6uf>5OZeuO>hhN^9;`iJ24LjadTzrv$^2P=O7Fhl1eF z{xb2NJ)Du4Uo8mDd9q*7$JU)SzLtHbbVlTda2pm?*KdF5%zoZ>B@vX@X(YV7J)++1Iswh>i=_dTUkdZxzr1 z(h1=wMm~=*NB|@*}=0&Y7p! z{5j_rO;yAa9&zH~_nV_;AU|54$6z3dZ>N@#B@f%OmVvcH|+u zyi#p+mRPcWY8*d7z8!e_be;eDg4n3xAl{wW5YWbnaBz64%3KR|Rph37)}?K?(j~Y( z<{6taY=Q zse!sZtifmk;-a#DmUDTf)*PzTDvv|GVCAas z?JaU@8A`M1@j$t6yTa;v>;1_YaNL}3%@tol{0El9(o`RBV*PCcyDo0p1X0Gs8?lO3 z80Uqp36jnztts>1HJ~$Uyq`}5@@|#{7 zpA*r|na|JiSAW4L2Co<%?2&p)S!w+Y+*Nr@PR7e(oNmcH*&A`r3tx6G!MH|$6w^*E ztK~T)+~*t3hZmiJ{~(tO_p+HOi`^s-QQgu_26~J-ivdnDf})*4bIz4rN(Nhr>4TCv z=FQb-Bq?r)p3xmP`i+#^b6pc*iG+7-Y9sDZy`>k9%W$yCQ92IFxHN)2(E3NSx^IW)c z87Lq2y&G4IR?{=TZUEL%W^BPis}&HAAI!a_@Z>i8QyJ)JFsQM|Zt*rEwo44$!JuS3 z9HMI^9j1YW>}q*@#6(lpl=m-DR=vnTMnA=A(>An253P= zHhD{dv!xRh@P`}XLO^P~zVJ(UPx6f4oVkh0G=~_b${cF&+=Sa-<42IiG`x%T5uBgu zzWX~VKV!_S$R?~}_6)##BB%ohXzHq|^(4?W*iD*{ZMw0srS_u}I9!{M-?i6lh^H5; ze)&M;pC^(`{~Giw(Y6BbP#}fJQPjQWWPQwTr!oN}M(jDGl6VLLN=7iPOJxXbh-Nv9 zv9Z5bEHUNB4Nw-}&p6C3G1;*nnTx8x;Xt${IsOeFroBcNxGg!tcwL-zva|+qN~{Q` z5rw^w7y&b=?sn7}`hLRDXORd@dU11!$Voh-SMPgfKKG$*{wP#n;t8fZ(N-7Uuv)@5 z9S#AD^`Jq>Tr{`B(F(YDV?*;-&*R{$RB0OFOv|iL-Zi7`f&;{j^Q{doFpcO8{}nN7 z`0No{Hxe%~pmcnD>WyZ`N0~McIZ(F>NCtf9g%Be;kbe|`SVs)OB{m!K5XHZ?g`kqe z6?*5xYq9#~ra-I& z+v(X%O#ZT&BPk=w6WtW&vbt-ylS#nHmPe2Cd@TS(+)Xw)Yqdy>fUc?Y54Y&A%&)=k zxq5y*9`0B+K1rWOg8y=O+vwv<>nsGQK5LSWqF71FH5Eb3oF1RlzI{EJxzOcNq+B(4by#WqEi*S2X8tA>)SX(4pQL7*wL-;p0|g!i$(X7deztku8Lp!@NR{bMMPo5Y5{mdc~3E>FY)Bd zxLo-^t5Kz%OfWzTTgjXu4NWHaLxT+AjaiUSRiJCcOz198JvzDksg^)NMOnZdi+sf6 zfDVs_BuQ~`fY~&58V+|zcOv>;NO}SWG>^w$r#=4y!k+P>xyEp}HE&^i5dKhu6qCxt z=t%UC5TI+!#iXS7&+Zxj*U@6nkA>lm6?+1!@bIm*D;dKwudI1)b{nq~w{Mppo0#w+ z&VQqfOZ%h+wNr>=LY22hyu1cTt;-F|%JDMbL;5}%!Er!aE$^tv0`KRD9UdIV%1pl- zxX9|8I|I|gE@`;WyRQy<<9lNe{cKkzE_T{9P};5DU*zD4%MgY8V($er9!gr$KQN6x z*!5mw?yVZ6I#V(Tc>Pl44NHBG?3Twx;m(i2j_H|KIbU@B;{rh>zCZ0k3*d!eY-2(` zT!A)rW{u*{xcMpV1%kIN+TrXXu&%8uub9BQV|)Gv*c0$$INwn{P5OHY*b#Q^IN*x*HHe$P_mGjd zU%ST~i#K4*|1wvIHsowqXH}(MKu(%ZQ1Q{>|^t z72;#QgF(CbsicFVBEZ7p5l8w{Zo_LNe8NG#kR8iWOah@rut;+C-sG8FH=}FV1Oap@ zz#dFuY~ghCIi&8`#jqBsk~DMDF!mbmfQoRD?dJyBWCaz+FUm}VHrW;Na!QliMfc$z zp{+MB@POJG8jRE3A6XN|F5^wC-9ZlYSkW~E3Tcnvg6JrKE)Bqi7*pMTr zMX9)igX+(A{*trlW=gI`YBKlTA{E16mSY0B3(B1alsf-?uI!3Xk>U^OPm95bR}ic7 zg5_@4QJ@fxCAJk~VVZ8FBe+!P*ZzBT2~RCh2Bv)78g(f8MQZ%lN(Yx))@cR09L5c{`z)(Q>2vO*z< zaYFUyFA^C2Lbl<{!a8XC}O2e!dYuTM?jP`O2pum#GmeLMg|l+ z>0YJ=h_{CExB##0Bky8==nc`NA9!uW&RBC<8h^A1qXHa6ILv-WC~Jj_x8)x}Y+eG4hUuc$QSnv&$`6Tvx`CXal3YSIirbPzVR zY;=8myn8$ z`?t`BE9@<2DBXsy0P(;MVSXG8JRYq|i;n6nO4Q4kjF3Z1IJ8f;jONk`fe8eP?Q$W% zr#wj{6gSmpD*hz_W|5#6MqviH2-j;!QIH5UgpQ=WCh$86kKUTV)ncQJkF?f;ot69p ztvP<3cxbH_t5HXoi)J{5hs2wThFIKz&$H_rcDM~%F3ejTCh`shpEJdf(u{H#nA(SR zQ3HeA*DeH@ls^8mdxY2Y_C%);t9#sm;5oW3+G{ed_&oD_k&*lzS5an)a!wshyk+7$ z@u7H``h+HU9T^*g(H0+YZGQSGaL-t=kc*Yu#DKwV8WJeJ2+E2l%X2>xsQH@z5I)@+ zG>aoJ-h?+wwC{$Nq}4DcI)Nh4!vjJ#;YSG#4wDPJ`CQ)9W7I?cJL}abO|F3alkM{c*VbPz zvS2Kez<5zbRk@;h>Q`)bb6fY*ZkfT^Oo0``ya`{9ZI7~agl=n9&Vixxt5~N|v0N+( zpWQ;a#(!U^Vo^L4e{B?;zmK_}I;6D<*vb-~&u>%tO2!G_W7ie<++S;;@8`K$e|0pJ z?WAq(W8t7|JT&qoVz$wQJVC-cOJdM$g`(v!osn;h@h612Z{Iz&xi9gQ;1{jo{~C#r z64rGiVPzfmVY!iZrHCD68vgy1?B*=v>DrF?ZOe9tI5cBptcL6e*H;eE;VCxuOUfmo zbr2&c03?jkUD6$Ty}v%fxmLRxtahveTPed)zrXavjWFRjGz%-VRBD3wiV6(HNOgSp z-^22$s$56=F0ZX|s4~AYOuM^%^cxwXsS11*r6cflqhmKw2>P0-!BZnx>tw1LciiZ7 z++_7$$k=Fm-t?7Ru;-~w>5;%Q$0p}^X2W8yZBZn)N3;E09VIXQ?}_!R)TNOC7gxpd zOSG>S*Ehy93;`ZzWCWhV#s8Vy|CwbNN825yON|x^p-cFnGx<__%*D6hzRw-_AFPmczB$m zYMm#h5AMo*2W+jVGd`ZQeqWmY=Nb>IySbk+G}aqB;$Lx_>Ks>k?5peTGP*mM_Jh8h z{d?kw7ML3DIRP&PXsiX2n5l|Aw6@AN-+k*m4fNXw*BEy^g<6_YpHD>o>`2HrHQD;z zZwyLb3JQ3Q0QQ8MtTg3^Z&usC23?51;HQL*--|5%`Abeas72hTmy#Tmv5}EqS&cRR zZm&9OgN=YTVCPbM&$xT?=^?f*xA19c#P^y%2ykPjoZ0IJd1Qz zQvWga{2OH4;?fVeoBG;0{@ZiS@eo`DR{z%n(Kk4ErZoPnyCC2fkAc~`nyL4-KUSb6 z@X7gK^;(^6ayDV!xt1^S^F^B%?e8b@i(!E!vwW?etg1Ecum1jshrInGBQteQn3Tt7 zU;7b*4|9&1cj}pL+ogzi;YGRU7{}PfP=9GO z{TveKur?Dc&-p~7r8Ad?Sdw$yFGLiF_>*UY4cP09jBh=C#PZ-ewyP>RCIt1!PA!|< z)uzkw*rJLow@9JqAH0k@s$Xq-wD$I)f6RvL`&JqA3{z$Nw2ub9#7Nys{X3_>K2ErA&g+QG zw-pWE9&D$wi3Yf(5fa>Mr&%yHwyd-bcl`HlC-B3x{{t>CbwK@>s8eY2-ITmY#6azB>p0smiaa)F>Vr1$T1) zCl0)yXto?|?at@W!rX6iLhN!3j5p@BO6RYd6NFBB9N=0*^BRnG4cvLI{K|ba@b)S9 z7t{SOwtu!hWNto99rLD7q1kMXHE~zF_Xm4gM+rlxj4_VVnVqO%|9CozOPIT8BPlP}@XK%<`Ml%0AK1sw zPdWFfw->&frh4kepr*$%^zNH6IaT?8teO7?MGRKR=J%{xVIiSCD=VvoG7C%LTT|G* zopxY1DG8ZoxTwr`9+mBe2EkEPGFU+Kn>d?CPFY!*heuY-VleFFcR#J(57!^1w3rGU z20=Cd*OdK#n>Ge<7UdSE2{^7J-G^z7z492bVSh@lRX#u;K|1aLuubvi38H2MkIi;> zjEGdX33u)ra}S{pDI_dMUMW_-fgx)u!}E3kp5k8}_?tub{|&=7z+12L6n2VfpMRg8 zpTz#;g zC&Wo4e5xM@ZmCQEXC{Y6!yn8gyT|>a5H?a~UAph{!7qr1z@1@NgU`C^lu2qbJVPdo zP5#p3T?zd!X|o>p0H?HCy~`%4vGXta`Y9n^RHUC%lvm!;Q`hUy9l}eD=z?<{QvbCZ z`Rqg`G(;Bv?-^mpjkL+DT@yQ7)=UW*=3UU;z4go!x9O(a5#pfWXHavc$eQ>4Z}mop z1gi`OM+wj8Bnw4|;~I7xA7#zoQ1js6PS>t|004MR!a=&TxasddH94VNH6QC13%17y zyTVQzw(Cd3>bv^y*SdHP5nAN>f7UZEd^33p{($C3f&{<60_l4UOw6MwUT1{mlMSC= zkzbmvotT$#w?_z^f7h_V=HE8%XYRBO^leTM#&v7&tC8WMm8XeGoiW)l@$%ZTyHzYP z+2Kru5&BAHqoY*q|6Vd>{O25NvdvXeYO%7H_Y+VnZC)w-pqUXJJPUz>#K1ev_!J2E>|Yp81RAVV`)NVLKI$- z>Tb%+=Qnezz(~4vHF=``?sI-coD!KUfs z9-gAy{$B`Uxe(PMW^DA=QcERjHp_}kJm1Jin_Tmqri*mc)lo{DERBjzP=ni^=D^hK zpW?TEoST>iogwoZ0~hk1A{@5D-UFA;ge7I1f9e|v31Gjs=Q_F>2L2CMUmX>7+qEmA zfJjJ-lz?ETB6&lRLEsPL+Z&?p)iV)z{p=Ne|T#qX+Q3a=05hY@o`yR)qgK zH2-T!t3!*sN;Y9D-bTZ}_>EUT8*+zcoR+Ekyvu#PFt}CEpj@OHzH)tilUYu{!!^l| zSFOI2(ppkDWtdILy4Bl`V0b>(nmfYRoslXtp1q4F?}{NT&A$H9j-SW&Uj-JW0^H0BV2t=jG*L_NJgd=|@eZ+bOg~e#$)be6j=?p|Knm zf#-a#x~O=V>-$s0XZHUE(0!^APOUhO?LX{s^Z{rz`UbyQwBNnaeNFJPt)hY>aQwM( z`!=eqX=%IN4$myp{tC?K=lD3=N`-N5f7HwMtfw8?TH;z10^b9zm}zDNa(#qf@ep|v zAgDG|<(~^H^85LA=g?l{zb^4#*i5rTUR)jNWcJoQ+)W$bCHmSHr(;9JLBUpHc$cTc z2~Ao%&SOgdtOD!GhZu5r#vG&iFQY_zJx-G+Dw8mNXt-|W2WDnTP11Dsuy?LZ{@Tbm z{qy7|Btc94r;^y(i7Ca05I)9CZO#$N2Ci0BNz@CS8@j!$i9oef9oN$|D8yZ@biTwX zB-|_|C_Gb#4|%?8kbmRMWyPO#q*j>7f_pf4-MYMtH9IS^qomYlK5%hi%_thChA6E`CgSs-? z&#?3JCe!|^eg&-%4Pdt7zlP&9pZmN;1>5)wkdT(zPk1-dQJgBM2GG)gwpYyi-ddYE zCjQ?GL6h%wkntfu;PB48zgc_)JM`0EMA;t+OoitK$UGUobaw0w?u-*0+5deZ?*)OP zc$%%46%ciId(4QyBmV+$ufu1jnfQd-RJpylh<%&E4qMDZVd=!prN{ofZoy|Ki9p|I z8414Gji0Lj8Qrn2-kRT~P#N)s_@4B9|;cHZOa>i`4 zvh$Z%l5nR#d(b?#K}QBmn*ilIfmf^OO;q+vZ&WjhOuMuUZ7V{&j>4AtG>3g{?|OJpvXE zgD=~1bIk^7tBLA+C4>`zbh&*V{@PLP;fmh(cM6t~x6HzMmMRWc%O<%?13y}06B$JJ zi0E@?qNAsO%LYRv+=s)vi&w?baild;>mt0mXD-&KkGOyoHFSmREvH>_2=}9rZ`o4|6h`0 zb&>hv2MGpc@b*!M7YwepF`YHsT)pQ@-~De^v{zl7rmgFp$W7)}lp=A?k(0`-u+$=G z)%3FdQ>$(r16!dBEF;O&bBl(myYR*;EC(pU5z|XBUib;}*Lu5Ki(z~an!fc$QuL)8 z>!F3J1h5T9bh?l1jkv<6;Jg{z*5U$s_j>$iXc7L(){ox9t9uJ9Xd%j5hIjsQDcd5O z$4JWaWb@ixwk)b!%`aDDF0o)@Q^U(y^hVu*@uaj9nLZ@GA!?&=*80=t(M89}xHeJ( zauVEef03NnHdw*Y%Dv7v9J*aGpLbZ0M@b*HJ)iy9dwpaU2uJ@uYWJiOY4ct6mFq%E zy7gzK0xpJr)(zBUgK{Oh*>XOo%6e9Ve(*9Qp zO<~XkMMIMhk{9(en{{ds-JT1BVu|VtYgwaf(KEB9%iF8bZY^MF3N)Sy zF@g0tE(ro;kXX4}T}lWRs7)6iTnRg;-QmwuVjjq&U&dsJyd z=1TVY7B-zazO)j^o}K>qbidAkNDDz|BjX7Ea?mIP4vHjkOBCihf~N8qM^SIKk35{g z7iz6Wrw>~L&lr(;%K6&!0t3Ov70fC9ao~VrIs(G;s!513ZG>a45{%N-!PIM04ABKM zUV3m;w6(|;bz;R zA50J(+A$6~sFa$x>;&BJmxB-Qj;-J>se+ByK)ijWh_}Rjy=C$3jx>Eu)uJfxsKBn( z#QjV!pOg8;B~%d<`xb;5%9J9-=$Mly{*;0*5@ZP_LN3an+?o|1|Vz5 zN=D};3nfDTvUu|2I0kQLxOxv78QT!-9v<|aSRkbg3fP4Gbe)PEbvzD&VL^#=`|AQu z#u=UEJz!Od%m7=p1+jvLc}_niVEgAIA|z<`aQaCRIOcKkwt(ij5ALGktxx|K)&9A1 zfsXV<&|Dkd$##mRp4j9x^Gan)>*?K0v6S(ru(lc|XAdh2IlyPt4%Cvb|7g?jjUvEq z47il*UWR@PACtI#rXS-P)LvIL;&x!wAQFn9fcc}Rw6$9BhG|-a9p_ep)@SeH(P#H} zU|6BuATBr7gD6-h*&yeNfOpsDp_@VUob+UejAyz|$dsP!o8k5FEM-yOm` zkYHqH_;`?~rj@Oqg@q{@4K1zLVk>}S^xPJZCA<5&?7Txu>k-$(%Dml48hevFr+0F3 zZFd-qkh-b?9pUScp!Zz}Jm4a3gThcz;xz;vrfw)PM6-y=imA`8(Vnc83bl*i`|clW z=4<4dqkn<8`JxA4)JiJC9qv0dGTdwrmFWiUoHoMVY#+YIecHb{jFeuz8)gGDVnc0^ z63+gm685n(W`hu$$jc)|l#I6TdVfA3w&1PzuV!ZQ!N{H?!r zx}RmyP`^mp#}4xT_8MLT{*7IAOuo-S{Z}R`uDAUzmk-94(8UijeRRH((%2f4@aZQR zJJs;-Acvm1XAkuWsn7dmos*u9Vr%vW4Q@AjBiswFt`(S&6`%5_h(|}OtY10{NGk(W z&y(rMA*W_CHJxPuyA6f5{ZaU?6NyQu50Y{`n$QW&>RMJBl%I5cOLf0{wA4!PrdYqXr>0)f zkl`eP865df++JiNw6|-+q(;!+8(Z3rg0VWhB5F^6S&oiAU%*b~SwY^<8Y~^%^io}n zr;&d_8UTPJpsl{AFyE9uURRauv>(+PZ#(b1TY*|Zw{p!Ej5CRZz=CVA{ZeizkrGS1 zZGvX>9ldvAEKwi|h+cxjPkxG5C<^a(JoRdq34rdy=8GWTuFD8rtS3mzZmJ4cn%-h?FCoW`5RSj{82RsgP;oo*mXROkO}P`xBw#o z1jj$5p>|P5y_u6)q4!zALhfq8x9GH}X&E0SI5gxNXQf+V$R}#oNetDvnBj(G9-QQ0nciq70Ciu z?`~`}Z}5lfyrR+|dyjC$rco`U#dS5f{_Dvft>FIKNXT6ddP;5YX zb_oTd)?ngMYcH_%8;MK0opGG1UkkF^eDkglHNZ`L*P%5e8$aF82RmyUBSUnXwJqNE z+8()iOP)8?@`6lpdMnavlVm1rd+~5d=|?Hp_BdTx=VpA5)}fW%Rdn(Xw-4r4mT#|V zV2PkLPS>KA3WbPb+tHnG87xm}zugR`-WXy5kN?&na-MqaU8>UB>lbrt;WWsgu|?Vn z0;Zc0tkga!Y-G5FlYc7TplYc4-DYPz5vT60z%wtW87v;njWx@hV4NlyzkLcsFghf6 zshJ9)gW2ZQm0O2fpv+#E{y^+EgWLQsr?&=-b<#%!uw<7bD_q#gZj1RH;rT zReNmD_`Ile$%$T{{0XHW_ACePY4`kFXBQt=Fhjsvy?9RpMSt5zcYMt-zG{X zDsb}Zi4WSoR=0e_x;w0I)4v6n%PT%?;D*E&TQ) zjpC7OrAu6E4Z|c)TeUvb?y2x9Y8!qfk0h(>R2%-$!9B{e`{v?zU48UkRWdzzS&1?_83l)iV_sUoV1%mc+rkOSUTm5jpP_bgOV$U_p`Y(em zmIBeM<(^$NcmsD*&ORaNem=0qg-zAKh_!j*7?#&mzzHzX4i@nvt_fOjvuwX4(aYPp zmLpZ!Slwl8WV=P_VL(I{DtgB_Hfzkgc!-H4PM&Myk&P^%;V`NNHcd8(FIg{R=v;qW z4@f0rzS#zZF0bqOxHwW(2a(;kZQbD%rlGElpa+bKj&HW!bUG&S z2MI~bOpnzBR9YI8n&kz4_|_EfPy{^nl=%+D_Wjvdk6#j9UpY)=UNbeY0|yT#g| zQ5rWFyQgZ{b*}0|!!44_s57Hi9~H`WM%KX5t)PHlxLajd%7eG-qK$4oN}p+b zx|&grW@(={3NUGB4F-B0y43~3>~Gl`1rpTW6ub;1%>u1GwG_eaS?PUFM|Xw{H+;O7 zEe5bRe=NRgDBVo+56?UF$Nc1uE#LF#es~cEK@Vgu%^n5I8wB&K!QC&~5r=g^ecJ31 zfg~sA2febfa=RbaqCn^ij5@?h#Jb2Rb9<<~6bv~eLN?S%zeLf^Q03G-I+mp;ur_n+ z6+^HX?HcK@b&KIbOrFtZKcli;S60lZ20Ixa87v5^cZep* zTy?3#vU6wc+q^b@Kf)vk1-r{=X1+}MAGf@K`(4l@Cx*v2w_<|uPCG9ur4Z8?To=#@Xv}?#=XtpB)T@Kx znW?w+;tyT(t_N(MN2Bo_6aGw|j*X(FGRIx9=M9OB<7Z6oBQj&L|F)pLte<`FtXGE| zCz|dAoleijtOHHhtn~^umep1+3Jn(j@HRZD>-4JgKO%%07m%_>Ve@Mv+*2uWQfM?z zuYG~{nR`%#c~HJ>i%j^gJVndJvLQ~2D#?rcorWSK!O)-9KBaOoc$~oyUnVTz-rGoq0 zypGL@7Piv^#wtBv>!}0n=vP}Fywtwf0T*ldS*XbFZ%@++(-Dy%!5?64+6kUL4;w1% z`fK--dC5iC_1{aiKb6ob=ea6l4Ob`VV)J0&QSu(^$cR^UVty6LccY*?cGt<;Gc{A?$x5JZ)?FB3%WHZ$j#liH$P~;KlF2I$&Wj_X0 zS|rhG>RBtwCR%0m1Aire6mzKqmje?;E0@PdoV=oJk_{^FUeZE_q4QhIsOx(aUD-W?9bo>}|%nR7W`-`zl z+TGA6pAihbT~CreGXdU zECYAaEVF{+0&tr(T2X@c*ziHC4|Gj`cbG!`FH| zY*D^PYQa~fFVoSm5G$0ep3%vsjTpf%eSCsfT$**Ahydh_foTn&;Kz|^!Z?0SZsW@N z400=LA6c`pril;bOe=<_!K=Kja)9%yo^jw8q&_U8iS#(-B`tv5<&`gG?qM_A)3p5q z$9+#y#>XwB>pLGLL=HonE&&a40HDbP{6Zq1!dCIkvYP&*wWFn9%eU)PCPhTAh(^Ai zQiV=~hI?J_%i;d%K#g+?7Nf#q;M>uIA1W5sU*5x)mf_*NjeF48F&*P?SbXVw9&bFG zT}OO-$wbzRL$C3Et1SpZ#UZ;anR_J!hh8-oA&wU^sKD8_ecri>svE8lXWZN+V#t92 z>~mhF$nwWK8Hh(BdbAt*s*HF6*ZG@m?(L#!U>*XqqEi|3vNXMYWEy-O6n7#cwyPco z==lc>9o2un@ExU-^3#*S8jK*HyME<%9Hr06|O116hFU~v;Q)F z(OEi*}DdJsnvX6kk3`Z7`_nrSvk~S|HRaP-4vOV%PVRz%IN0<3zxv4 z#v8Z5OHY==&!9A4pO>JNijJ|;tcq@a*P+;e@jGySmp>c+wgY@ei8Qet>&h(plMzo) z@AP&@@Oe?}2ZoMxD+%+W#LO8G+Eb+M%*(;_#F}RJQ{bH@a-9z{bU0)3*mujwr(KtJ z_x^Oy85o%_$!*m?`swRhFlzZ0VN5Jpy4Ydndr0qS4_mnXN1+VX7DjYQ&^OXD>+_zyx4(qAi36=5$j)ZT*LG{Q*@957l5QgzlAqums|?L zo%SqnLxvXz2K`4U0)Ho;W`Nj)Mfw#XU*}w2^9V!^{We6Iuoh&VDZLJI^4TPF+L=JY z>Su3Pc&K)JOt@*lUcV(c?miue6%aX45ip>*>BuUn)N*~tOKtbn@&2Lmt(t!%p2UoF zIlX(Q6&=d0d6r^!Y-5jXu~^2y6&44G-{nGGDmfDH%!iV6!_CTB@%-IuWtr#&q*FiSU~L;IeNhNuRKi z*p7ZCWq~I#X0CK{Cu2v%MMVc`c?!6qSeu1;gh<$;{h|}ECRWe%e#lU_(X~REUN9iM z>p;5!5Nw6bz6-tl8jrp{?LacW7a7XpPK#-S9MRJ%5cM@`7=JROXQn)-W=?=uq|NKT z?ZMi1^GK^!PjQFuLSD($3z?G<<5q5ie#vpnF7 zG@&dyG2LdYs7E8jI3IgL9N0lM}BGe{>9cnj>bCyaeAVQ+y{yk_iOt@=56l^0=V z|I=Ader{P{kMe*X)BPr)JrwnLLh~mbN`P1Ry>i@Pfd9}ejC8h(zX{-NY&-C+>03f% zoIu8gMxdb=$?1}iw38X8K!R>{G9h%Y``3F7BTSvmaW(9Gswvm(xZqeI_qXrnkP!7M z?b*s3^~JYaEY_kU2ZFP2t&^Tirscv3CX{>I`$93|cV7iI4f*ptwX5qut&X~-+pOGS zu*i$=A}^2Tgtq!3>fg*4vsJw%NUM`}1_ssTXtfeY#rQW-1gHu&c3S_KTni)p9(xq^=<As-ee!>q9 z?q^2)DJR%G;L?q@HIgXu_8b3^$~3&eU+N<@Z}( zzia0PLlklUsgcyhy&h1KEyp)Zzl%JQ#L!p%l6F2Kam2tHnh5IY&p3Xb(dn(3pTNdu zN~|)lhk`lt)t^<$#WOJ9Ynpz4^Y-`dYwGvm_1xtP*6&G<(@g{B=bex(Ya;puc=fmU z=vo=LfrO>ts6QMiR(A|RE4+UmCye7 z6^SMHG~U^e*S@HWD&a}jjuQ=vDgQ^y)R6=?!E#nSp37+CZ0dGMfQ6DD1~QTnpJ;wp zQy={*#0B*^sMgtUE@aG`-*8-(C4)X{wi%|B>W{6HSiuB7o-tts@elR)E3V$N#kfmL z@*SaDn=<=8Wxnmogy$c};;Hg?d1d@__cQ;z>=U5a(u+KQ9RFc=GWni!W5_*+JhD~j z?9zJqb&$Xxwvka-gB(QSFWZPXmT^b{^j1vKjEA~@DDXDiwrynnFhI@T(RFv;*uW+w zQmgKyq8f7x6oMm}aEv=;Q1Ov4c+erE2>*J2GXJHN``^H;GjCuORH7TSQY3g`bpN89 zQk+hvXSIr5iBm&`U&lg|89W6)baP5mi`-yRO=77 zNwDoXqk?Io=i4Krqq}c=1_mAw19v%)B^w?G0c?>>k8D}9gP;6$2a ztdJ)*`BGbffll8<0`|)5;{Xx?S5ZB??oXeFIUWXNfs*g>IZUV-8<@slMUyAJDP#Fi z?Xvj&E@S`lo#1_qAmaqyKo?c=t0@ZACu$rNHkXR~RHCD#bwXn39)MEUeJ{DH4NJeg&DP1{r%cP--H_)W6ZL1%eB>M_no5Pbt z4Hrj)wu$ZKM08YiYQsL(h5$R$%F@rO4r(MHzQF_)g;+ynr5StNzg-9De%JIoCVXqx zcm3&^M8w*)<{%{MwX))hKBwlJ%?m}*gr9PgCg08PY@zLe438p5o z3vAN1fF@r@_`rO{O}t+kzEe_Cx}~YDTmMsFm$Y`GOtF@}%<1t0>>uXXoL(|jsuynK zQJsdTt0Boql|u0FR4;^uM?q{}q=D+EZv13Pmf1;LSO6_`KK`I5iZI+xZp-0J(jA)8 z)OtWO{tR;12}!ig-b_1|dtQon-hP+&EG)8Ha;~d}YcJ&`*LbL9uGoT_jIg;+7+tc| zng{f!mTIu=v6tL|6CcZ0?5Atl>v`Dv6~6P&;j15$`iRW?aO@pU#vdL7R?O-{}gTA;7nhODA@wpR;Df{!$5Z^JYtK=eL8 ziNkgu|1I~2uk}Wn@5D-f4C4AWD;Uqlx1D)AdUXqY8JmuK3oH5Z<%e>lY)yTW?oBy6 zG%=agj!ZWZu7IN3fl8GY2eV zo;Ky2Uyf+i=~Mq+5B2wU@{qaMvtJUEm}%9JE^(O~>&6w&SPd64F zWUpy}$^nhU??i+Slia4ic=C%#lovoOafK!7j7lT4Xg7AV?E+EH!F)vRy!4qrcn|~D zPEOM3^hoL-*QlLI>`Mm)lA4Q^<_KkXm-mxX2b~yI+|{Ipy{oT*!~|tX7}*iWn-sE% zga?F3_)9?Vnu)w>mKO?t6-K^FkDHWIUC0UAGX-;h(9?eaq66$6n5!gaR7L@?`{&NV*2p{TwW-Ts z_Vw+qpfBL1+fUaYGUz;I7^YP{?>e7gE#MZ+wgeAGYa@$>y?~fBymFGF%$vU#RU_Q{ zTB7;m+uQWy!*2p=rLOg}qbnKUc%vkf37uzS3WwnLsStF=Ya9L(dGDBw0)+4Ok=UPl;b5QFwl9w)>3 z3i$Zt!+~3+wpC4tu1kQMKA{6ipE52+s$zC}Bh8?V(;{*A`zfzm=4Ytptf5JXg9cmE zg36}0QqZ%PC9aCzjrK|whV?<#?*X&go|q)XF?maefG|16KrVpnIami7!!ay`#TTmw zAYxZ%BkZb{r#DHu*{*niIiZ&5v-ZUq;CSKP#;w3tyq{5oHvDw0alDf5v5P{&2dOGc zM`<|d>m{VAcYY8sIB;$8mTb};v2NxoYfyaTd-DTb#kai93j*g*HO14nqW=Lb z_NxEH9@c45P*P>LQw7<^x}WV5GBqf(f6$`@t3c^Ox(dEE(#6j;E;<{q?CYi3S1KUA zNyi*2iJvO9ZB;PywX;P3W@Tu6t*fikXMeqeZa{%FBkuF(av{O|y!_nUWId{j?9tU# z?e@NmLV6Jyu35jH@fpy8Qq@y{e;AenAMgY1Xy;+ztkI3e7p0y}MZ2ZRLtJsRQkLac z&b}db`hecFn8_!-g3AKp?$mju0Vh#L za&Z7IHDwh_);^3qUXui^Eu1a+jh{{33fW|{uGl2UOscWbaO5vAqM*81I<7h%x8V}K z<4aYGmAc5`pM^w<4(zeJZAyrD_OuTkWIR`WE2qbCyxW**#+=|xQ{bpxN=@cAkruc;4&H_@zOMRvdA6>h6uH3#sA*^1HT~d3Kw&`og}b)5LH%LGpAc9KsiN z-mY73n}ugV=D>aA%=C%U@F-;~VBuJ>U8H4+&t8TG@z(ZgL-SqD;hIQ{7N_#QceHx; z)#tPCk4nt6nvMGg^Pk@{;(E!aDz*MDXOzkh%+EdJ8`+}XjgEfOY;_eDpqo>tE2r~N zM25LDhJ)YVGQqRLd-x1?8yf25=cfeNkZW~rMj7=xqC1*^#_?j|pWn2=+F2S?% z>ycgjBnzW~6m)_Zoze%2!$JGQp7Jdo){5E!_cOslowJk_6uhAkD!o-NmzQra2zREH zw;WOaUmv_wy*rC$S#d63uSv@n7g|O59{k8nZcy6`(l|AHoVe@5ZxVFrH66VgGV0AK zgds-%$0O&i?w@-<`(GsIo6K+lBw zzMQQ0lBrA&Fqy3*3@%I8mCPRJD4qC3$XV%ZQm+>|k2Z|UlVoVY^K)a1yYUDA8g%iG z43863R#u)G-(sol?qOzCPFEjT3X~f1Co55xt^wZS(}|{M4pgKG1w8o| z#gSpCK^08N{=XmGI>?{8!Rb#`sf6Iv2AAM-49TOQT%Ll|)%#n#WY>7J^Zi|Q3Bo|zLTbRqbAZ&f zQspA;!*j>UD&+%&@3iN3yK$YQa=~E2AKPcGj?X=TJ;_^}UJaVngr&YU6=gZ%Yz~py z_+YayDL%%eGf1{}e#iBy_iQ*@@EDOAV~}r^cTn@<)gYP0)>cL@F8#!5Bs)Fm^N-&I z)+ouDMku`(SwEZJvrZU6ofO+MxjKP<+s13y*n9WIXRb}dLZ-8L)d7o~J_#H2{Y>n^ z$!;a=`U#pGm@?3Sd=82_6SY$6|5!~2X^^TT8J-sNzh(re6iM}ZFePK?l79^-soZ8i z*+v@+zYAU&NL%z?`Pnq?Mqf?uTQRx_IeLN2KZ2OZE5Uj~Kw89qmkUvT`a2f<}D9NeEaMf$go_1PyBOD_PBi za*T0d%!kE0Qz{~qK@=Vg(kN9!e6^tWe7^EeQ_4z)Q7HhvQPr$ode>?exbG9LZN^^B zwo==-^o+eXeN&`C4Ot%HpA4IwduqZcGv`drG<2?Y+|&muvvh0-FonTdVH{<8IgGoF zxGevg9g4X~^)Z`^Z@0W?;i!IcM2g|l|Hj1aQbGUGxfS7Kf^t*4aQH9KPe-5juqoar zH8gY{w$5kpsc>Ei|6KpgH`^Vp;8T1gV%BWC7HFPH6PLgFlu@;f3kq8ex9QlmA zL424!a>W#=tzq(J?SeNp#_#bjrF2RU7WU*{_%enkE$#lWB=t8^>e%Ec{?5di)ZP)OaN z5Yc1-X8SEMeBA_?s###fh|AD3bVF{P>=Zodh>OhYupO+5y^}i4X?Z^TB>%;(8oVc zi!oE};bLls{^c_k=HNp0TUfUDkZ-ZbJSB;A?AwhKkB5^Aua{Gxd>qMkGm^s?4-2t& zr4>gRWeD^2qc>!JaXzwGyQyLyWiHdBje=M{I^kmf%T;o^!J?6*OkH~VH~AcC*6s|c zRnz5-p7ILlVl8Z47=ZxfO;hwZf3h-^)7spWCK23A7Ir!{@#1VC+zIJ8n7h)FUZr$` z%hFCLGkb@M`5t7Py(pKi*Itgk^rXpeocpq^biHQFSYv;ZF%M$NkJ93n%}V&Q-`EbK zb}7PkF{Arfm{CvhQpove##yCtkK5?%$xd`Mhxfr;+HuoQU==m<+C48fce`)9*7N)J z9WjgF<&P(r4X{$#AK>`+Vwi~#1B*CJpU5OnCGbn{S_e>SbB@}{v*{jb3LnDS$3a)W8qY^+IW$K8wlk+reqGTy zkzh2vbBCcMmRNwTm7%oQ65e;U@rZ>pFOQoixm!OBNx$Z#(r!4ZcTT^ey+0w@$O4-w z66U_#w!7-8ct^;gW~&%>FvN~;hR=Wd;lw~G;PmSN;hvS|I7k%Y6m`A<9R^bH__oT4 zTe27G(GJjp$j|+rd9mo}Dg9_2goHu7c7He6AyGhj@5ltL(6RMu*!684UiZGi^5vrE&UG*IQ@kfk1{R{VZvovPOuJeZk zUv-69b!4^iVQJxi;6e0Ayot3d{H9}ZMvfqrqAmey4XgNYvz&m`IE)#2i_$dQUIm#_ zhj)}*u(`&un*r!AVz3GAe8T6ogRT3k_iVP^LDGUFONW6LmiHHD-TWxL(_~z{%En6?73XI^O~w7go^t%N->+q7IojS!AJk zf3P5l7=?l5;#~;zX`u_9qj?Q>dX5GFC5fJ=`974LcvF6yrYtse?@}@XBL{yJ@QmbW zk;~9_mJDnZmvEF6BA?KtY`_EB2Novhj=!Y|TCqpGE{JJ-A(RWkda)UGR3n@ovREOy z`i-qbZ;rflO;b~SQN5x2O;oP@jvS|SkJQsy`O~^*UAh9A--k|Zmrh5}`5xX z)Nn5d_uWL-F9}`&cG`N?tje1zym@1ByP;Fg?~hdb?R7ZeZ`g)DJZkR^d}>@0{C-}l zSXWB=I+?ll4ZDR*@o|NR)evU1{854VSKJC8o~9SK>YOk#RgQd3LHu!n>`9$vrsB=I z$b_ce-A7@q{d?jGT(=_52bV`zr%(m-ktW*1ha)?o{FicOWMm}E&G#$N=!mN1MR2yz zk0tr|anqeCYAk^D!_z*K_#R>T!7vd&cR*hHTfggGU-~ikE_Wz?lma31<=>A4S*4_S zp_9uT)i0IQhwsw&FXLPqv4m*~O}!5ik=V9TLpC(urK&7Xy0;DDa-jG4CqPVWOMi9q z#4J|IZo)r3*ru>j_gkcpbAFOlBCT!@NDna0OgC*(6k7&U$Qz^VOQLqu}!+JUE_em?j(i(t<-)pe1Db#m^3)GO1uBx%7s>W&9< zp(Lw?W(X4D5<~dfyeklF;qgAodGK>I&I+k>jLM0DVoPa7)FngC*!FO%BdvDivKIXo z2d}Qm*GLwEG;`3Cc0T;vavV`Dvfaqerm*PAI1W6ZKe~;EL3P+LTdRloOf%(qk^mE& znQZb@MqrJR52_wY>g%Ogx)PK>2Fic9MsJYOtkFx7AJ&T#?Mz$-iDNTRglmlF**9B;RF zzA&o3?`l$=Q*tQZ1MSrFYKn^qs|-!EOWb9qPou^0*K7V*y-0%xh%!UQxbmMm8jrSr z=9&gjb=xnjtkjpOFa9!#5uE{nZk?RG{*3%RR^^6peRHRGq^C_gF477Ns8L%}nPyjM zAeRgv+}g@Cf%qH-z22bi4P~IAOOduTD#(sNMn|iPFz3~6)ShVK<8vtzr0Bgu!$}fM zNy;klYEk&4HtdBNA}td;!|Vjcs;1PA#&0z!HM4jasaII)6l{=^)WnJ#-6a(V%X`mK zX;9hq`j%bHp10>e`n>WUstuQBy;uwtPz!&;K@`kn=TQ&8O{Fr~;FYm89=84UB^M4u zR{zspFxYlT%Ex?OpmOqy`}U`jONMjJ$iYOaP+({E8EzkpVbz2 z1K4q=3~JsnCYGw>Gw-E90!-;Fe z(3s<0URP_O!{)PjbxaB@WU}`2mi=1GM=Sza^|L`ry!iCQejY@oSaxJLp-M4SQ1ru@ zw`}dI^HJQBa1Y7il$)ndahmzv=MZ?p1$ zNw$h<%Zww_Q4L_UPFj1iX39BQnS2UWCm2!@f5)Fw&c`xDmsC^Kr0#nCuLQ02>Ozf1 z)PJ}hy=!2)#Vcm-9;qN}_Vszpm`C0q~(C)zw0u{a`-nqcxw=S>L)m~zYDOpeX{ zaL-hwcDb^orHVW#EGGu;`Zg38U3uZzb`f~Tu=a#>uCJEE5H5O$-~r>e|Ob{shwkisUNYf*Kn$eiI-W@ zeRg|ztJ-fIC?FNR4`Vk&*8ES3ANuyFlaPReDDo~MOj?+OwyHczGzgH!Ix)sSfv+mC z8|5?FVs`U5%DvX;qv)kYM+LfO!{A3eAnvjJ#A_Wgj?)#Ny_A9-WRNOXI!ut0sN3>E z|5f~=FKON@job}1fgMC%gVOhr4gO*Q6OhPlR+HPIA&hyk9gTY<&%eD8u>olHL{r71 zG80yh*3d-6#5);BcOfBwH?^O#SwmJ=Nls4lz=IBMZXc1^spD5yZMlG)X%#%ARe0eM4WP7X`qq%Q*~` z!)T2)9GpJ7O=Mf-N=~eNa(PT}euMtR?t(9vzI+&B`Ml^UY*|oPg>9*c@gEI}4DL52 z<+YMkFrwMxoXKjt4eN;u-d3QtMD_3X;2ps{R*5hb?o%f;L*?6)OS23<3sT3AstyQ# zp4w58gfbp>dK@RS#od;JQT4eg>(kqguFM*5Uv;Gul|BE<&z{yvAGDR_zc*mr=Su&y z3%7tHwddo2gb)hLJai-fD8P7~x^##xMxiZ1U@&08RN(jbq3V!gYu zb*Sb~=0K!X5ecQ4j;N2rM~|$-*~3k3$}-s1d&6zUaL2 z-L_V@x(Qi&mh#+{XRQC8#8Ahx%eJtr=kHAT3MJL{pfroD93Q)L`3heRM)s^Zsqi}} zF6jRp{-#+O%H1z_Vt|W_lAlhxZdvM1v|-87vXr|5#Wgxmz?Z2%KfASriiAGYx|9-P zzDzuG5F&ogrzR<2vNh;fgkM*@Uc9inZXLS2YghA3e~wz=*E?EUnnZd_F{u*i_BvtN zyY<|e^y3g3a!%$SE}frxykpq)Q`@L&1x{!m6LM=+tGwX|$d@He<}Mw_>5=6r*>b1L zw+tsj*|D?}Ls_P-X;ow==JmA!kx~p5uQr=0N|@vaODJhxQPGeOvnpQmK))TJ{?(km#wytphj;Pz1|l=}8@;YSa@xYcAm8oWR1D&d=K^t!K<7Sk#; zcMB7t_mYf#(Kk3;lyl4X zHoM?`oaNu~JG(EW<373@F<+cIxLvD@8CnVQu_>h4BNKNW)mz$nRFL z?fv1Wj_R%mKe%Gh+@#(f>)%DK^t;@`XGHgk?ml^FLfb_O(z2!RlJSK6VF`)|^vD<{ zr2WrMxj*^Lz3%hheZoyMF%jm$DeXT;^l42ZjV00d@9sP7CPj}@m=q`Wu162L*%@p= zqd6tX24Y1dm0d{B9+?t3O^U=?F*CpD9)9|mJ0SOU+>wzqdz5ijYzAdF+f@TXddcc$*)P*qo4xY>W{$ z%C1ZHA|u*Vlj8a&%s{XBjuM{9Y<`nQzw|9!qkKH72B|(E^MKg>5sn8(Mn**q8Qb#m zu|c&%Jdyy89XqDE4i1mX*k95f7;?S+13FPZCI0S0wo{3&0{B=Zz#At+_LfT;`p`9d z)%iU+H7No>Y^y0Nb?FoR=F!DOJOFUAR&kHOXhyT>ZcTEY()%Av+6AgQ4SQ8#Og zYW_lgl2i%8G%0q(Dk1e6Hl7fb$|Q(a6HYfUu@q7$i&!2f0%{0C>QbgByF36hv1NS7 zz2^FJ-7oyWb?(KN?NSGu8N}n$^X^YSdyo6e+aGYxvYLg_?vUT7Wl;LRzV@)Yd*2~x z0Sx%DKiSPy1TQlCo-5CEKYr`QZjU&9;p*wc?7aKPmmhNf{j>M!>P%;%Znod)xq0{H z`<`%r_W66=?yckQRoCox<3l_vDZ)Cx1b#(`@j4m zI-Yi7!I$oN#(nkvr`=@1ifIaEeOP=CUAX7*BkuF}JmHSB0-gYGHvjv(_Pe_uJKV87 zM{GQg{jsm_b59&f>)J{H-?XpW?|st!&PTrKJ|wo{@MQHaloVLW{>Fm`q>Vi#4lC`X z71Y;+wS}=t_s_7VHxF^#}8%S$BqD>cRYO1efj>U^qFugtLeE>6{_?@ z2fmEygyOVqKx|+O_ou~g8L`Q2u-7qiedAhW&>>WY0SQxi zs({9+LTX$Hoq{mkX&;oMh^pb`&R9N8>2#ZviW5>QPDpY1!9H=;0($NPITWKU{q6v~ zeVaaGu?vYljIHwMBs-FbH#a}$1_pWCxBu=mzADGjQ5H#>b=LQu zcfRe{)UnAf#18M6M0on?r`?A?{9#GFM?H6(X;z>&Z`!2G5F89{A z{zQ|(1saP8Fl#Vz!+}BKk}dawv5+F>Cq~Ejqu=rU@PTruA#jCsAVOs*zYD6gr7DH) z;>Y5M>!T$=3?_I&`NZ;7DB8I zE3hCvILN0^DX$0&)WY(#)K4{o*|7)}3}o@icd)Kb7KFUV#46f@PaSrD{F!^jS$x6`Nc!jPSg+4#@7glvM#M4G zEt~Rp#W`Dbn|AzW@lK1+H?1$&wb7lkeS@y1ADy1_c?dsj_rCv$BktJryxTA~e<4oX z-+p7CI-o^h>*j+`A9d?T2HcRyh%A{bsCu-gowAi7j!k;JaEx5cQ1R{%Uu89pr!+Q9{%>1ga?U`NhvlCVL+|;CW+;rOF z;qyF~eagx^)ZUriea>0#w%b1A28M@ZfabqRO<3VV3mvaM&o9jC$~H4+`Yd)d9;q^Z zwj^JKIR0`JKEBTiZ3rGn53#r`;g^f^EawIkcgP;)DX_v*iW1%cTRB3Y93iR(giBHO zoqW!WoZ88+EX9`k3>sfbvW1;;n;<{(Feej)BFyD4S#>+0u7tD`drM*RnUJXdI z&eZO$>vd2Dc*ga>(HVC@2Dxmfen1@82PGajXWO{D^z5zfd~v2nWiU-W@@(bbesiDu z%pH%rS6+3td-rRu5GObPa;vJ&6!VY*Z}5Ip^8UOyCSShyX&LYzQoiOEmWAJbb?RSo z=`MH4?k#Tnh7q?_9Ja0Nht(NJ2Pyv{ad4gyhnLkH2B?odb6gzBes|@$TivyLw@LX& z#F2^WJJ3%MSKl`tdd5BWENRZThs3$L^D*9-KH-kd%vI_Ny0vT5n7d%-Mz?q826vV? z@|(to+!g0+al5vR=T_nk-LBr2$)9I$?-u9xE8+n0O!{{pJ0vojRT-=s6^HxG&F-eWJUOXkq0YgW1>$?=v;rkmvPvpXoHlAc0ymo zf`#h%{+Lsh~Ngqz^`BDd$@7^SGX9q;S&sr~K zzxKTCZW~+S69WzaFSp3N3;DpwdqnI5PCduR zq%HGagtByRxpuiwINp;XC^dy8HJZkvhmOWZ<0+l;vLG0ef*wx6)@f3xET^ zY2A>!SnA-?vp2ilq7Qw+n1|hh=*+E`pQ#ggF^crVFfaPun~jMU*{Ue``h(B7eFrCG zY#;+y8Js@!G>_06)wkY1DYDe}E0h4)p`(2F|3cB9%g^4T6PsYO*pnO2-!ARf+uSjt=6;Mz?;4P;+cU!bhP$N7iprRugU{7O;8U#Gg&4&u(=m#0~O z`SM{L%9-e<{(w(^?ew<{49KTtfXuUj4~rxDkPgU?xZ^VDWF?I6M&mHp+nuMU=iSsi z&(X6|)32+~XN&W_XU7H^<|M2KVe<;K){Gp8q~@Y)0GD;6RVt zGCtzAi+qtY4#uePjibw|Db5EIGG~Y*bmrz!ov_&~j^U8hL)^aLpLY!~$&7wfwLezP z@1o9mP82x@(0)|p&ok*-?l!9cl^p2zJ2?gtgRu>xLps@lKDEq-X5e!lUleEe32~%x zewe7@g;(*`?K0cUs&s#^v?a0o|rcEG&GsGS-*+p9gDf@88BL{T{gvufSyi*VGp}Hc!EHeT-TVKq-*LyMc#OumjT<-mI1(QDlCHjhO!AnWTXHXZ*^ArB$Q?LvKnD+g|GBTYeqn5CdP>g+1_#w~zU{W#+@ACI>PN2U zWpL7sGmY{SuEB8B7^)h_spm|WE4!qS9g9#N-@hEL4CV3Z49ifRegz_95udOK~*Wb)8Fd&l7bjqQsK?EeE;^S41)P= z4TJOrEuZI+ErYB&j>zC_-SD6~okQX@(E$~y0rFu`%WYP932TE4oN9f!PYJ3zBLIu^ z8FVCUr#(73>t6qfqd?oOGgioi6pZI=^mhkzXEim~Ljahd3pF<+w$?180j+Ti69pp&Tf-l%f>b4fyZGnMS{S-KPsuC68((+K;43*)-__XByzJi3Vi9 z(x{Ywn7`)Rl%1bED9(R15bJlTy^Hv>wy(<5CVHa58(RT$i1J9;2XwNO&j4|_cJwU< zb`0Cbm@SUK5@*`@=W>;^7w1=19`1(nJJp=&PRmn;Zp&ANm>+)IO5AF^v#7efaeIm6 z)olSIbXp&4?MzqMr?~&6Kd?TKurdGKHwT)rO59(@I31m7`e4Q;sk*cKAQgspdjZ1v zaUw2wt-2CouY?UuP`C7p)d_v0+~F=yh*= z<3Do0^ozfw&b7(B(wTO$YmLK~uch_Ba`D+=&IM4FSE$Hfx3?wAe2^rk}&0qhO zd(lf@qR#iS4DR*8Zplz-p(${Gv<93BHFBmcEJA|pw;?6q5UtL1RCz7PhmX_mR@oFq zJXCFgF_grQ<&#FS3`z%cl77`-tJ>G9sIQ9nRrP6P==ppDO2ZrOtE_;{00DuecwB@SQl*Rj86jH7fMG z#F+-w{acy-(?3+?U)1&+sJdT{Siifik1E6~Me(-X7~R^3PW!Wzy$^TV=$1MT; z$Ii5Y%dxXyw#5+h8~?5<->K$IxAI%ge-%!+GtH!m*e|}bYuom_L3w#wZ9}@g%WX_2 zsM4nxYwb)|#b1sB82|81-w^jl+-HmeQj=pb*4~+}NFb`)DrXu{M#d&_T>{D*j$h(1 z{v~2f-;t2snI6#aLj!|u{iequ|E%(7`*@$+XM$;JW+u1Adr?xDn3!`v z`?Ejo-v0Kti{C3AQI=<=W)hG$c<!9?XiL(pyfZU!rDrC(z;fw2jxybex4{dB8;-Nrw` zV8F@X6EdfIt$`g$Q9EF88&VAHcSzRB*!gOsik}+KB}n@{$?ZGTZD_5*m?)&v8|~E( z{$hjpoe_u!i(&QxP09rW%olmz0r<**4{>(Of1P5BBUzV_GEmmRR2sH z@xD>(LgRA*l*_*mtjL-6*S#EC{X_dcG!x#ye}$(%JK{7;965&HjK+_}p(Y;N#36pO zbAvI=;DB>G&)DhH3|OjMnFj11fB*a6?>_MF{?KjNFeHP@1;?{}JU2Z%oBw3Sv56`7 zb3gaLx&Px=-s^aqH_tf2D9=X5y#y`b!Y^blUi zUJ30Ud+g`unQh?3L*IgLmAtA@m42s) z`HAHp=T|jxR#ku9t~^(xO1}B>m~J;vF<@P;TpB5lU$u?AQ_v>uC4US?TgtQQ=uZD) z`-073W>h;z$|AqJ0p%~!!L`smW@q`lAt8-VT;8=V z6EAQH`C-L~onJuDE6hXHfZOxmOoWwHa{|e?x=X2GKvC4js^eBarc%XVRr_v-|COV9 zWv4s-;+3D)_Lz?!>udM+HP3(O5Kwk~OKyPJVTk+V{MS;dQSDH6R==I@ET{tCB@YqH zzj|k+gb|rBfM1aDbI0SQ4&@o6Tl-e6UmccbjZszJ?%PWqRrYJO^NWGcz-ldE$M9;8 z$0dX8q&;-2Z!L)W59|>#Wt^iE5^@yhRsOMJ-RIVijj2!i?svY!ee9zj^%H|Z9So0- zy5q->H~L9z+`4t^+#meG@4IWRxmNt!nZ}r@Qj$C~4HJ9LJy$Yj%VYD6Y2mq{f1uah zefQmZjuTBG@cw&?DlKrNR{|=7!b7QwvFmX-e_UCf-GDqps!^jGm~JfnpQR7rV+zT<8aNyuU_w8?gTb*j1!0zwY$t=!iXJ)i- zWNgRt*G#sZy?eJC8ylDVdH=W4nVw&mcau|7?%X|lbS2tm$w7E-AhU0N^PBF#GtcOo zz;UE|ggNc3v%Tvu=4T1IAAD8~Hkf^2n*hW);h2$OcBVEuHEPu82CTf84T@J~P6sd< zptH6@RjbnN0(qROw$*q$m3a(7f6A;l)a|NS3do?W|Ey8txs1>jJeTzUxmKPUHC7jX zg14u?$367$gYL+YBmQy(c30zA1HS<3#E~9z8#ZjvF;j@@m1*(D>1fYA=Ulgb{d$+} z2ve{!9U3BN*0LR%0cHJS{!WW7zd(IKKkJd5s!1 zYIFm(cH6UZv2i^e0PhX^xk6{!-kAZ+)}E>`{!Vp14e;2gpEclD(`S-f=yZ@rjT);7 zbUvi#8lJ1=s!^j`=xD9K-+l25UvLu>)6!0|N2$bt=6Puzdt#LuADG2hcHeE-xZYiU z#T9PTrcJr$tU30*=bdl+HT_ip9Nx*vNw;~+W_SA+zv%Wo`lzlp56j?*7nAY2@eq6t z>)6bayX2z1?&h0s7Khuvung~hdTP2c;M7WE zHUWMiKeONmC$`0!)oPw2;5z4V`u=x7ty$zyaa;4ip*Qk;l%*fs6Izn+@Xs-S$5ToM zogtNKNZlfp=E}*-(GND2_zQlw%C}rTd`gM8{~6_UQDD0%7DZ=R$+KrGA2mVG*KJgd+ zPRhIlp^autQ}}r13Q;|N$s?9;r{#&UT6(Zj_-Cf`b(E*>%2x&ChYTRjD}v9EsBtK8+6U+%{>l9uUIrDijL<$I=VF}vV`3+1@;A?)4=_bGs&Q(;9tkjt z;pv|*mpfw>cw_MLzGE(4`#$8zP6$~B);lB zcYW7A_|SuHXqd4LeXRFS>2DeTYkV1F5r>81E3drLU3|$UI(0z0HvWPtooQWB5KkSW zbo~w2yLIEka!nGEjOG*1OtZ&)qF});C@S6^i~GyMf-aBbCL9J$v@J^Um9&VU@x)q4gyeU`@;WB`2r zg%`L#{@{OedoRAk9X<4{TadJS`^eW{OL7$@*owx5Tiow)2#&_zm z$1&pciLBoL1*blH4c>Nl?cQy&%ftwR4hwLhK0 zk2k%&q25~ik8=K(D=K)+<5$@Cs{U!ULH?|+@w_L;w0-2IOZ11WlMS8rSG=2uz7^=_ zg|fv5LzVuV?DkbPK8b-m;gLm0bTxjIpr!u1wf`04lar0A`l{^TqxiO48Tb|EypEcW zXe-iuF^WFX^1&ap=cgfiq4wyO9qv#6%OAS;{>xu>GvZVeN5@IxkLcue#z(K%Anx&4 z^Y(4q+#meGAGq`O?)9I{lItOoErSA)aO$N%uXy<@WFRI3E72KyK~qRHTF@^_bmtxS zxDWpEpSUIQ;uocX+4Iv{SczMsMyx-bf({@gj8~rg?2%E8wMDn}S))dcVx%TB==ia1 ztNpT|8Z~Ov=mb0hYGbYV<;2fL_;HSR=;DQh8l9tPjGkI$HiTQdLq{5fjx=d7vCcN{ z!%ysUw|(kUeu7ow`4>a;I5Uqgvw*A%zM{kSc*w1{-s;Xg>nvSdVA49CXlki_5@eQz zS;5pS+GUqr<}SSGLdPmMOtBOm($vI+Cdv$e{Bs}r(1+ZYzj(XbxN(!4XInU1)s%4x z-xPwMb?{_RAw^W%dpS z;Zncmr0)uPZXomlLCTRfUs3(S>>P(Vj7xo(BaIV{Ps_1?WJKTR^@&e>N*rVF>smM- z1@XS?pc@|M{a}l_gKxJu(Kp_Bqkd!BUdn2Zd>UGvX;F%@Ptc5xjk=e;>}9Thphq)A zk!%H7^a<5;`c|-wX^_j11>2*nK@7}$-h|HF7 z^xC%d%a1Ha@oE2g{GDlWjLDb?Bm_7@cI_&pr3J!GS?{!wuKFp<%z8&0D_*Sp6n_i32o0^5KZ1EyRGFFh)HA^T2pB z(m-XXd?><~xe!(Hc_@S+87WTz_?hFk0%6z_K`~mx_-Am?1-4aJ8O&6gA#`Rad+49% zYcRsypenx@ordoev3$DCFOHAwtUmPR2o?2FsovSK5ETK~Y8q0Es`SN7>HkJ?c|`;D zni2LT3}1zwUjL>>Y+Mo*^0P-()QMrzu_&DaguFvlz-S{h_@yI|T(djv!8#G3x*`Ag zt#&o*L~@9JY8f+Li7#i_ot2>_zX}lEIzu`;oupwkK#sN&VEm=h<{Dv@cfFsNAJ^$n znb@Usl$^3VMJSg)_OTS5K9mU*Y@+V~28M-Tr}wx8Pdr{)pu@}7W@E_wx#w)R~LgYU6w)XRMIabfys(G zi{UlB1Qqq-rhi4K%0H}YC`Nq0ii9&CamDa@-_-v+^7s7F7A36j2#M>S zr!*0UcG|QhQ5d~ehW!0lUwoR~fi!u4hP_WDOke&hr8s~34J)UYV_s%0i0pqX&p1xY zeJ-BD2+N+LPM~oz9rU_r6r_jzxhF?lFYen*#B`^Y)CuEa7Jhk#pBEDTi=Y1m_qDHl z!;NIVC@ajfa^1#OgF}OEUfO^pqE0od(QkX(+uXI+UaNkq<}3g7T^yWe=xih?U>Te@ zdcXP2Zxu4CdzMHDP9=K%ac5-N!%van~nq{piSuhP7?ti!P&O zaSDW%mpt_$7^P*U8YdUjnRd8Bab2$jKCR}AQ;p7mll6RhMyW>ksGW!!&sX3eTK`o$ zi><)XpfAQo*ju%0oIKdJQ==L+YM9^PDTX=HILSEDtZMV<@)tk%Irm$?`J3*@(WAOZ zF+M)l5})1Dc8|%Hvv==sFT3?tw{`1QckI|P-PKTpj-Bc0sVV(n_4wGBd;3rQls=@* zQn+?biHz7n2Xmt%gSxu#OaI~*-QD-x3*IHACSHs@_MoM{xD ztyU1{H9CW@55KCv8ud}*)B*!2n=rwSc8k-^k=9j&KEH|(e|DrsjZT4$)CGasUM6AB z9qJ-SEuWK)_-iFKx`S@-X19~>c&Zm4o(l*aVs<`z5}(5LxM8+;kB+%-fAd@JH{bU@ zcjU-Xb+-9V^wA^7)bC)MH^l0+f19^onVy}UcW0cj)17Y^%y&Zn{ty1W`+xu6KXIdDeQv0KK=-D@sD)cxTy_iMWOF_;I^vE`PP)r4 zzuf)D|MVZ--U~03!X4IcQnRQ=UiO_i%|i_O!rYAfS`x2c!swk|UBSlK_him{SUg*P z4+o9*g0vLqR8K2Z_?z7>-k(*G*`?4G|0`ym}&h?w6v|CaJ~slNSEedNje8L)LsQiM3^ z->L1`9&`r!Sjx}DH@Y6bftCRX0}A^N`D)9*+CF)HY+}As{jSu%HAdI=HT01`0*ci2M-?9de&VYOaAj${c@k@rU4E!Hcxke2qT*|ZFE2LGe7HI{i;`KyqTGq zk_ml$)C!O|0&F^|`O?1S$KK+uzu^jHY*q~D@#DvpDKeg#nsI}}LmCHWrY5J{ri~lj zm%n<4d&`f$*?sprcZw4}rr`&r;QAt%Oh_F4ay`^9!sGSjA~(DoNljS~w703p>V2YpfVJp<1_eWm=qPp40;+iQ(Ha?g~u zIMOw0oZ2w^W>n+!0?u=eq>l;-pRnl{`u+=F(C=L9cRkX#j}4Ei9dj}s`kO!dGxsll z@fY0_kMGyjYW!2Myy#y%YK}Bu*TV7RGvd20xcRw7{jT)QH{Xm?q|Z-VenqJ4OXQ^`OxryFg@=^Mu*(7BS+o#O=Iq< zr=NDOd;RO&*S`8Sw`J32&1+%azm*s;L(Z%wvzyE|^!5(Ok(cp^z~owQ4;Q9IS0;Y1EH`}+rSRO9r58MV;3)i`lrk}{+kAJnv zs8QoN1RjYBsmAFAKgr!n`bCf2HSg1fjx_z*$f!8d1L70PSm>jF{WtD??|Yy7+Sk73 zhKGmT^whLE(8rHYip%J~DXqJ30va6Tlh3_w&z`g0YhU|1w`Gg?rs9W^eibTvQ?>>XE$GcX9ler1}%urD1izh4A#^zejx$J^iT{@VvX z=!ORd-G+7R-5^et+{3BHMJ62t*3<6=*Ms2Hx%SW5DsS1qNW*5lLNRKmx_z7|hnly+ zhg9SAg0;1xHdkY9;oo%Kq#EV${g$7weLgyq3?81(<*!kW+%u*1PL~>|8CZY|sm6&# zw~vX%!nm4HN>=lJxURV<2Jnx2wM|DM;f#1OJkUMzjxMOkoeee5q_x-Pb zgFE}|v)%EDr{B;X^ zrqIx8yvp-y`TUqYBUSY*TZXD9L*nwr^@&cEAr4;@-^y*zV1;tv9S=NPlUk{*GWIcl zRr(v>w>FEOV597rpCWYIzPd$Kd#kFi7|Uvdn~2L3>u;y9`d%sGXV#3n=2d^CD4(il z-iqyup}Y7gzUWuzU+8D5^esl*9_SCXZ?i23gn%h?#z(3G!nTwcDVB|nA)wELc(@&SI_zr@e9 zimQ;F8Or6e+^N7KRNL=-{*~i}mfOWOuV~TdJmPo2#P+mm{9q`uf9=LELY4gD@o&|5 zEXD$Th=jrKN!maBt^lz*EJga&hjSNTNxyU7L_8kV$9YBOYKMjBi)bU*5v>b+Ns%e# z2)4Ye#cM$w0rAM{J0w%8+FsuGf^G-FCDaEsdHyKewh~uGhiAX8Fu>~-RFM)4}RZ$ z^lxr+o41UrLrrDOz>paAfq_0zRv(Wybx%!CAx&wZJyM88_v+WY!u`}w{giw0i(l%7 z`Ul;C0|(s5*tj~;^U}E?V9YVVf!3oOD6Bcum^%s#B} zk>{rg&sUW*)9U<~vGCWIqWW2F=je2IrmIjD-s;=RZJkRf2X$oSm~t$tIU)6Sl2t zvbm`qMftSXzKZQcK7Lhy5TjfB!*0tEP5D}R%geVc^=D%$Z(Ga5$Nfv}>@2s8=knp7 zZ_aew9^?Gm)fX%0O5+!yN`966$Mz-x!r-XR>10h5KJx#n^dq)EJ<8@Kjmi<^8mdT4l9&v~?X|KpFl-}yiPt#0jJoSPTk=iJE1s7^4O6U_uMz`hu%yMN~0Zjk4x#XpSY7yS$%{lmEg%`+uFVr3hGp|lD&r9J|;7rONm7t;IA1~Hm5JE**r5UBbb;2uUzl~yH$3QV4!l9sGDI1WHUMkP)(Jrx23U=qsVe?E4IiT_e#~#@=`)Lk96d=2{zf74`8DC=rRpPuud^^e z3-9B5O>81g&-BtLf43Sw&n8;qmzTe_eA(|dtvv0q4CtY@lZ@i}jPJ)pTM2&`4d@$O z82kR9&`B!EC#6f}+_xegT*hg}_W>a^ocybL$x~JOYmF*>?-X%yfOSOzMU)z^#6SkvYMuOw!;?sWI5l>@ z5XUGEfji z2O38jUlBhO=h=28OTzM>gvorS8M%i)Ix{=#uD<#z_p?9yvu^vgZQ{>PXaR%_>!`5|$< zj~0r1je!LQ0#!m`yd8${oi}?3^R+X=Hr9C^b_|g4%<~?3` z=yal&mA!JmH=kdOcyeR4SEl3k5wFa~+o)p1&ZiE*1E7>SIwp75bCKOSj+FxSjM3h9cXLLR`PyZu6!)(ebpvkNL_A5ceJ2!|}fUeE#wHfNkOGOlN)}?T7K)(9p2!84|xu`lQ)oM|B(b z?YH0VKJkf9xV!JZ+Z{bR>BdF|+|b~Vn`isB*lzqw%5Q$@{QQDG0?01vSvfMX$O7%$ z+@gE&OKx%R`MLMFbIv(O^JfQ@ehN$S3sJ0&;@>{}oiFEZGjoQ+2ed<}=)7WMf$_vy z#i9PiU;IT~Wwr;uJ-qO&lV*h(<3Jpo$iYFs^?7b#$<0j9x*a>taC`Qg>t6ig7rP5D zyx3iL-Suw6rj5EyTnjA%V?~zdr5U{PObOc)1_%2@Nb{;3Jm*Zs;HXYXnq#A*DrmN! z>+DA+0aFw!6ElD#BYcOev4SI@G-3S02NEx zmJc%{^D<}&!F_Y~QRY~AVgc^tj99;z52Ps^pKcVe%)-US*Vr z=$E#$W*tx-j4%4`+e%Y!EI(`i@!;I_luzT)mWn>dVjU5BPTn@yB|m#!6vX92mTdb0 zeS>}r5ig#=esGR$ut_L7B5aCp7tM66?PxtjlM$Bx%*?bK92m^i6=@(B`%b^gHJYgn z!^a>#L>T{qzUGPqu=X6bQ44S9$X8#!k;Ul~9>Q%;*q9IlV%O{%<+A#>Nfv0%g^<3LRa7}_W2O^T6^kdE0_@=E2>nOZN`RtzA7Ua@E z#uuP15jNz>(gK{@;K>|A8>krIDb&v;8E~L0Hi$^2pQ}%~M<2^GXj~7&HlQ++wko!X zb{8TXjHT>Zn3|Q>zj?4r6C?qS-Nrht>w@28^XepXES{d^ah0OBBh^;qCer_wKp4UG}HF> z-hMYH*P0U-mM)N5$<92&dm&7Bu))+n`T(!+#<5W^%T2yx5C+|+{PZX2ER$!ps*Y|g ziyY`T0JbHxV<8%Ha#4R4IJ58pe_NyF3L^6OFzOr z8&BEJ&k#6O*d^=^a%6|9A>M*4Q@ z)n99dv9YSbPiEv1wl~ozJ#T_`MIY4MsfQl35=%eXSh3AOSjI!T2r1!vm!kS#lJ-q` zB^-U+;NVD(U#^ERU&9ddhrSWt`bhfU;gM_sRzQ13r=NJ@3HR7zkGU^@^(*eqJMVPg z5xW2WN8H%hU`{s{qz~YoSd;~hLIFx#lp< z_}H)xT;jn!N=_lonMT~&NlPQv>;2w&8jyyvapOj}ar0KUdGjVWIzH|$yy!xA@kJNA zF*)C`VVxUYHzw)yYy8<+adIWjwr$(ov(Fw<0|S`(n3$Ys7$RoiLvTGDOyZn-2f=r~ zC?bRYc?n|;fk6mhP{KfcMDk)w0+^Z3r*Es{0LKBD7?2%gjVk4AhgIo~jjujce2F_h z%lFW-%FXHqqoe#w!zS&p@lnPiP`3DfIB?9N#mM^K$SFjXK56HdorBQWQ-%fMpYm9p z&^a1R7GZ;q8v{CJ28wf&H6WhJsnMAYc)hW-V>I+%%4K1w3+r@f$8Ca#@*D^r0?h@9C}W<)tS!XAQu}@0CWI3 zTVBY;oN%9puWx{yM@L88IdNcQumXSlX{KzP23nb^e zCi40e!^S=a%hz45d)eS4JDP1a7zgl# zUQoxQBcm!4bf12Pd*r8j8Ku`e`Z1lAZC=KaBWx=bd&V^e`{DS|&f{@SQ%=qP%p))V zP+#)M!ijQ)_PQ_oIu5)jk6B$?8$n)N=XY36LoDajbfz`mjITyLHRS4#%5#Q>z6Rk9 z7EkL>Y?1XBgf*Mbxz&OC5u$f-UqJs(IP9&)m1M)bxE3PTf0M5vwok*7uTH$kb+e-( z;`HP6;M;61VQoBWJaUB4caBWv*ga%KeD62;{6l*O*eQmLXcP4P0RIl(jy8g`8Uh|j zkHtcG9T^^Na@arxu%DhnO-F}w_HPR3T#!snsGhuxuPpLP59 z@7Kw>BS#Lq`|i76eW#-`P9sh1Hx4r6K+0id$N!m=G$=D*EJEAlK9fseetuEn4!Yx$ zbM6HLj@OgC?klqTF*N&gX?d&dOam&8)n9PWz4y9b{a63W z-F^2%Qt>i)h>Yt9%kp9@D14|C6o%^v(;7GxJ32n5=L}{jbU3rZ%N3@ibL3lN@=G0P zY{#>Qo(-I7uTXrfo6eWPLkJoygLQy|&?^a$hbcOZW>I7W`0SS+GbM#z6x^h&m0!ckxht3 zd9(6ZXA_s3-U)w=;fY zn5^?^B43^*8d3srCuc|66$3~fnP6hboGE~jwDc@~>kCW-flQ6HEVvwfdc;SxYS@On zlSO&aXJBl{o%?_oE!xD;$dI;AW`@NKxOE%G+>xWw_J{NBd2R-0%BRWu8fg9)KIA(# zI_4b!$#+~FAL;_ffbS4$y=6LviJ?f81@*PE7!Uz$b3fDtOebOcB`vTZWsS{gra}#b zRcYrOGgBe9ZBT5S@9;;*aA3U6G*AY37#|zctxtrRI6f!3BH_gc!E{-a*l*YJkyqA4 zDL(ljAHUjzz3?|@#m?};j+vRfeZurnAB3ZB0lxwFcwZl7MxG|CP$q-HHsG**Sr}{A zaho^5Bl3nnn(~scNBz&u(XaWuLky4j@|m+2rysXFYipKo%gUKB%A}aBk}_e-Adh-N z|B#CxJduW%wbzrZJXt~G_G$SVfB81wM944a=8RB2vvpw@(lLjTI;MSb&Ex@JahmbU zFOCXtPW6LXz16^wRD$-KSzCgCD=RSjkKWPdt$cRfejBt*S!19)!ll|y@}Q1kHEi$n zgCYFjm6aerfVF%~oWu{-@=9AhotRUyT^tuM*UCh%ryt&l-2iTVViE~f#sFm z3iAY(4YqA$gt!0tHfXY8OzZU~FXz~KB7bD&saLmq+IU#ou;>g6HegQrYO|FA?K=|0 zas8Rx;}v7i4WH!4FEj`=r#5M+hFm`S+sVtC~aU=3_WWM(^EJVo>xQs z0=jr{E7sRoUhxae3}HEd_U~DFtXv?h+psR9=-LKV{-=~wpC0_uH(@uqH9C}Ed1jloA2*vGHTA=s zXwr!JHa{}VPh|rSL4Rn;p|>-$3vO5^Z2f`sac;CRi9xBOBr~ zv1iUSn3c3|z4ayTr{DPww|n<)Hz;FJWMUIn4TBnkN(w+<0$)jI8s#u&4f)McLx)MlnxndO?_8ZvCoQwHLjqUf7E#ds`A zrdsckR={=nPVKTJdH>NQjt_PvpX1EgDQkDVoHZIg_4IL4VzW5bV9_&07b#* zF#C!lRJ6?-B_>}K#!HyNR*zdc9W7pPKhrl0XWL?|aWXSZ z*>r#==Qc@VM$Tl5oJ@A14AHgR z0Ueyp{J}eIZ1UKImWh`pQ0M3fGjH(1N@zT=Hp9g4+4;FhC-U`BHW>hH2Ze!IR_;+e z3^JsBVmwub zB6r@(Xaju%?ZG-&I=fyO;7v_V>FO1{>Vy||PST}LOg}6iJ3@fpaffDhj<{j@G@jH| z*x9u>Uzu!L+C`Q(wut&?Ym#<^QXk|6uygTBHhGO^x<)zSiB1K5<$RFsPJuj-e-0w! z(Ejjz5uGRJrnliX?^u7Bpv1m--UhTBVSYLRq2gx4O3Z%ALdW`b|j~;3?P&N4GAtM_=Y8Ux-Yr~Gb+5z%vWiEA8f0wXMs^#=ex zj6ceuBywf}LHiR)Bi83IehhdGWe=?0LWB-VEKjZ5f-HRc`S1qv)wYoJt+rB|d*ndN z>)TlqOR7Y? z^5F*in-iui0?^;1?~D%`k8m_(OMbrm$bxi@R|{k5HtM69wIbA2MKE>)OTA70Q;6G3 zEEl_vapS74SxO6`Z<8Ux7t=5QG6XgUSbRZpV({0 zcDc4IAV1w{B=(>4o@kpl`ipZ;Hl)GgP>8T>q)nN_`V?)?&OC;&w{pqi9i5nwv9gp$ ze)7l}*O3wB5~sK?s??SuV^VyHtq0*83xo0Hg%RGQu@Cux|9oNo}B^BnQU=z zM3G6G=aeWP{1Jz8k%u)#HB1@r+F<2q&IX+hje*970Y&$4T;aFB&-1HsgslGfb;=;(4iRUWGwHTvy#P$+g)hO zxQ7nfR&?qFP*%>l2GB=y$^dDjPw;8ixfZr}I}btGJo(N~?Y^Wze$*@clPC4iZ0}8k zap9eI0Elao0PqFBz|tT+?u7{XGro`s@i~XDu#V8fSe7Q^(5@P6WxzlfU;}Z3b*7Yi za%$4|MXFzsor}_Isn`5%3E=x5%3wO^+YgTm@!o;v;9F%X$r+Ep%47Ose41P!(pnI` zMqVw0;}{YDF{mrr)ui-=)FqEj0cz6vEO-|3uN|{BD6+DIdN}sOv zFJ&@VIj!sfd05?;9)hNw%j=El7T0XT0olTT*xum5wnEY`o81TWM&w2PgzYV^uapf8 z!F}V?VC6%8q5ZRSpykh;oj5+QHW|ap4l#)IHs8Nv#&&H1D+l2Wu?+2K*Bi%7Po*aG zXo$-{(C;73;jtoQi0vdj9|hd z?pTLoZdr^Yee4T*i`ZC=%PzQ`9S+Ja$ozd|!`H?m0k_Ua< zx^?T^#Kf_TA3rWY*F%4gaHNaA%u49Kf<&$yI?*Ep~?dF7RE^VZGo+u!<@o1B=G;36~;AaM{71%n5E`*h?;x*X{&G%J)v zFY1xELn2HJAr*o0`$4sT-j{0-=U_pcBU4rme3YB*Y8Yjd6`n|!%3>y;)ohfBG<}Ee z9Xm}!ShRB`$s0w{4pj)H6V6qhR5tNh(IX6>-=G2b)dCbm^2^9~Zhq!%Vv^?``&53! zBM;IxemDon&+}GN+X6z{fQ|TZeUUE>jC<4@&)hMfP-7%ULUPweOf;S)LQWo@j|Ql? z$dNYqEPegrtZF_|9`e;rDJv5}^tT4pA1V__XW8U9%u1W^MLFOHd5|8TQX>kDmb4+S zXW0Ns%1JoQQ-0G3*{Vo=P-og|gbg!>Ud~c)S^g$B^wQsB03h`%*Y!6fK`^`+K+?eg zsXoX(Bb`hk9Z8ePB@8DshdS9J{E!SC1#dI-gFN3>;DNI62h1p<%ji4$?Aw-i@X=xF zRvk}C6kZ|fk9*{yMw0=J$PA~PBfKL!^p!m6JpJ>6K3_UZ(o;h&dWsXvgb4D1v}_vE zLpv}raFiS4N1CdS5=iAI=d>5%V1oeH0emo9Nf;yA1FMM)61b0!YMrSbNhG00UCA{% zS^q=Q#n$*=4Zsu6;*i$d?3~IF8EXe3dH7Xdws!e9LlQ0obwZht39?pu(BNOL>sga0 zgZX%w6SHD2X#6te3Hko=m^)1;1j<6IeO%sWa4=p$ZW3ssXXc6 zNSEKjt9Km86QZ2H?GuNzR0hP?`uE{!4^4gZgCjai-_bSOIsEdQxFHBf+>j*OOfP+# z_xyM=xv9;SqmtBto`A;1jO-o>xtG5t=?1?& zcTGqxa?M|*Y{-Iern_ou$@j5j?9nN79&MgO<~pY+kHl`#(ic+7>n`Vtw@HJum@@&S$ba>=JIM40Rx zH1n{l-fn99hZoUj2A=Sw`XbN?a84wu?{{R7iq47d`Sg4mlugGeas?a3EgdiD_2!s~ zvSJHE#AVmVdL$mY&}>({IMu&{0y~BrtZqX&z${#FMe~)Tr4N6|JcQ)~&$~L z?>3-4VkR?`Hexj`+KE76x-y-l@eBX*OVIUwC2Y+2|cE7GkqvVTu$WD9DnMC0E`Vx z?&?@)GUYi|Z;#|gK=#fO<%6_UZ!^m3F=u1>vvVQpk9sG*>W-v=4AD#C8!u!=8>J4> zH9)_qJOpW~okI4cA%9`sfXRHd7g;>7`+kxfKHve~O+M(A){9{|FRwhv!{=kr9e@-{ zFUy(8Tg#oL&yhT_XPQsOn-O7sUx`oTe_L6&PaG`+IwWaPwvc}diXLh@`pb{8eHi`O zNLNYzh>QFg4>GRB&Y}mb{GvZTZJ$08@$HB5`94H>A!*VH2z??Bb;$UFYZ^7M&tyz&+9w|?`t^hIOD<39O-mQTjTzYPVKLEk@r=TH5bA5i<%2RQA- znT`{W!(*`2P>Eq+IsLrz_PR?iz0~d7_o#d7$!Da@CRj;`v?RI>%5<F%GC}E1JV`3 zKi3&dY2^n>BYeZNDL84U63DqX1evnPeQlU z%nI+SKzdC&AK_o~kw4NQU&59F5o3UWSHygHFL!T%C<}MP#>EB82foSIgOmfPG7`I) zK4rm}^kRG@9t~V&i_9b#dZKSfB?@(}_3q`yeYHc`(TJHvw)fHjG4ts=cqv~GjSuGm zV<-8D{E!)gV#2`7!XmTQINRPa@y3t_>ceWiNqp`>7#s$dR$r8r!^gTAPug~FZf9p%7pB2 zep&fJ58<6o6ZruxyOh<=8zkk^W1k-s!81qNlkyJKo&;t!8@sXR#Q7$m+>?2E^?1xP~zYI+#&ik%*EEZP>3`H1!`jH>Dx+QTh2e=p4G$Y)?3<9mMXr;#?m=(U85w-3N!c=SxNj^aiVcJX;b8>gB2;39~Ao8anO{9x0Qf;B8)F@ zb0(d1xvuS6jxp4kl%oxBa+Q&Q29abSNzjc*`=h?GAJ(ol8}btpk;`u!c~)Y)UC=^h zB;4wKqwpRi8k_$ubw?VM+jNO?sp&NaM%E@!EwxPVW zMaR4Yh0Ub@LGKx7!VmKE`qZ>LzKwbyBV8b%{1S%2KJUwb7ZxwjclZnSQ58g4;XgUZ z?^qTgJntbALItYGezKWG9mW&t*kjj1=mLc@pk(dAPjDl*tPUG2<>Omj+nA2FS&n?! zmPLNBq+>WqE4F#msa)3U?21#_$Zr<0n6Tkq7@m8)6qvdryzgV+GYV&(HnD8AOWJjm3Zyk$C7#;VDt>CDdBNUAfejIgC zm81NrlPvPp@(L~T)guW+{o9TobO6%!AyFwCu}O^fq2-nFA#s@CqhF_w*S4YdG!MoM zyaNZFq%AEh`3ZX*X?#rUXFcDHmzv`n>db7B7DA6r@C%(HUE;8#1zW~w8v8agD`O(* zRJca{k=|vOUE+TDN8aRq3Ut+m`ME6TeS=61bz_A+q+^f`ZGS?_F>E30;|{ zU~16dAH^0%R>PT=3t9mTR;aAO;Sv3o*Cm%+q6K^Okw@IIV}36?oh`{BOwz$XGB|Dg z4h)-tGGq7cyC26BjzFzYMCSR`@UWr)UL~bZ5AsI~hl|CAAubX7%MDnKrGyA14Q_2Q(C;;)v z2r;t4L)tV_l#!WaoGtCJGkK`e@lTFWET0(gq(()5d*8c+(+6( z){sd6z9~4&n};P|($)?$0QF~S(@xQG(!hSPVy$*j*s%^sJJ|rLf5HbGb8hJY+NMfT zbuu5%WJ-Bdf5g~(-Sac<+=pkjVgmBk6=`^odv>2A^+9~%Av>?zlCPXMW$A&=agDkr zJkJ&3oKq)iSLKiPPdnlWxMv+8ot5RGt9WvRH_A-e;a9i8N!n@?B`oRiTRUpfLXWaC zpr7PLeDc=%RhiR4`g;_C-;e}Rc~*h6Lo|P*(>^cG{dM`3-6jhiV8K7S3ZHVlLHy1L zG}HCK<~Qz3TIh@FgycCdy2x8awa%ry45Ar~c|LsGQosZ4iFD+rk*3FaaGagykrwGs zq&|6*J*njXvalHe9NLz0WyF^VM8Nt&QS2La=TSKUqCf|2G6lO1Y*Lc}F8UgR zJVNL=K;)tJUw(Ue`ntyUP#+da>)kTuDAbTOKQ*uqr}`pCZTBK;!qC3`fQua#*md8Y zX$#y(KW#t;v|OSG@CG3Vs~0jSJTSgAkEn#k8!#RA_QCUNARL6<2k?rX5LVO8+Mh7o z2n$(#5OFqWsG_ z<2>O`$3cxcvoKH?KVXXMo|q)?lgeH%{nm9aS8vmS|Lx-#)c(tFWaI5tbNu7`bH7cP zxW1h>#ysD>?4`rbqwB4u#LipdvhrH?2Ns-@5dRHL9e3r(qmf011;Mie4T5dAYZ*bCVK;u-Hs@~8Gt($aCV96{rLM%WWQH#?XS zlUzJ^OP@lz^!t>H33keg{l%V8x0IRw20MWx^{&KFrrEH9UmqlND zGaZ7+b3pnR%H;b_Y&rj$@<%?Di!z&xIjZhSnP>y*cxLT^_ClUay8Cdxu9X)#LX0{2 zO&r=G<7dXc@Z;s?ZLR8G)*k}u3w?$c+8jJH=BCb!Sk$!gP^YvT{nmPxpUot|>xK>M z-4FfH8{IqK^)7eIEw|`nN$^FQl#{$Tg5_B7bfzg3Tn0Ul+>w6)nSEz-t)MeE7(b~9 zRub9r{mD;$(tYZ-+uVTzhouoPW8k+SQE5_oEijG)!a|YxedNf52y09$h!wcmxoK@A zq;0_P#m~r@@Hi5d&X7v+t}lZhDl3+(gqLu>)9}XBFfufz#zK`q_=Z0!l8)6ob2Lh6 z&~i_eRmxz43=9nC-Vo3r{4;2Ck`3;*1sp)i0(sVOJnhK4nFGo`G&rJzU^CneWPI`h9&>VEO__Dt_$PF*QzfMYK(8my)1{H`q&<0MbF1$bxdg3m@30UFgJt#O0jp!1$*8 zfP2)B)+h4LWOwB7gd5*5+K>_T%!}J_fa32uQa*GIo=Hpd7ny0>%yh!?2gZY4={O`0qa=d*V`g5mk`FU9f8U< ziM~hS=@^+UXA;ot1$AmU zxrqth;UP8?2QzD@)Q#G3`Ayv;zhM~+8A2HtFQJYBeuuz@Vaot*)a(x+ENM_y$kGq_ z5A%#4_v0S*NE_t&erz^*X}>DxIL21brekq?4ATcKzlBG1fHtAJAZ4}k!arrwJmnf~ z(QKaHr)*L`Vf*14ZIn3bv`c>2aZ4-ApRm|lOAkn|n4RUJVI?lQ&p;6%m$LFHe?fKe zn>GqhW+N74TwrO3FuAr20tK|;M*CX!{ei{j*>~Ptiwv+==o|7O4$g(yDQnL$VqNnq zk(n-Le1^PYQyA=1F7C6#gS3GFQE%7p^E~Uv7g7oz$e3`DsawDn6 z;9dA)S0nv_ocXbXq=6$weDrNd`j8O3V30JuZa2%?kavu19AH4sAz~Sa@&zsT19_uo zv?t2LxDs9%&+_OZFFd8KQwHof;5_7;G|)4`dAr@L3($~fb_CP`vaxY8Z6~xZdOxc# zefeh~LmTH&=Y;jn42u_14oMH$U~fZ^2ev~OG8iMs?;>!I_N3)vtS0f`1-%B0)2!UU z&f(c6k??=G#_A^e7(X*E3Zgm<{8%PmKdSGIoI9m2593HziVgt6@wEqSuUdXz4(~rL zx=kB5x{1kSnm2li?y_T;mpU_HOqo=_vc*ysN=Br= zJcZ@Ab{oG~FJG%o^u+oQ;DkHVjjbO7jyz9?({S%S_qfk}?sM)7U-*K1@~Nk^;;BRl zt&N>$6?rh8O5D6B9HPK-=on9&W(#{ggOLt1@8#y=om^bcbKC?mj;AUx^l3v~v) zGl34luNe|LQOb{eEiML;vQf7Tw8(>a`Z5qH9xJ=tBMkL`KJc4zX`Kjfq4c~?`Sclh z6HbDw3@Hl(cpSYDc21(dA)58>K|17PgFCj>)A5=!Dm9?xK$i#;zR?n1O`Z*8 zdPZE*;{{+i4nx_X-#WDr#uK~)q1j>HFWU&NRTGMnBQB(3u95IYeAOt4nJWAs+_r z(as2KGBsE{V0NWN#{}`9)XE>{H#_UMEMp&#CwYeHX&VfZkINH6`IXyNMqq291ie3O4Dk2wDrq!BvrF~YO}{Z$D171FSJ_4?FW zrww4d3ZU_1ykPAF*iJEY4*QQy3Hx{C9M%^I<9!H#ABmlV~*RU@{FZtb=V3F~;*JDf9*MsGYzJ%??JDz!{u1E4iW|n^p zu3Nd0nf41oKZ=~_YYC(6Q;w8L%Q?r(bK#efSXM@CdL$=6xcEg|s`s>W#;c;!l+BL^ z{J0;-m3&B#I?%^rNGB_gm7hfx>?}66Q5J0@URJ~<4XqQ#z;bSnG^qTu@fYFXhdc?# zA{X(jJk$@e;P=AfvKt>CQNNIMH*MbJuD||z_hWB)i#z}P^Oc|D$B+BGW2x$PXjY-fb=L6z)AJ|dE*f})0EX34r%Jk#KaLWLlAeA zAaUXs`-M2OU60 zG*o~w_Re&(4C>_ednXXtv89;D1SkV>$-DU}G(WfiCVRqREGeTm6n-TN-9;?^g>H-9 zNDtwx_|+WpvrZQMvw?|0%PVOSc7YC--5pW~=#veI3=Hr>XF9GAG(3#fft~02< z%6(*vu33Hfy7z6^__uVM$E*(d6CNoGz!}@Rb&Ja2=+Pr`&pHvWQ*6bi>Qu+%8oUu7 zJ}E0Q3&DVfJZTd)qaF^Lt5rB4Xyi#wh{Dg5SYtwSJrW+%^ z@Ab=XEkqxrr6}KC)_y>OjII5qoau1K8T_h#Nm}G(dT9vlrOBmf%O&qfe*7jKOHZ!{ zVX8p=qQmA)`^f`wIx=S{>_ww41hKqY_S@aQef!)~Pakq)BM98bB}u6t^jj*@xv_DnIBDc%kZR7( znxFx(T>_xA@Z1n?i8Br6XPKSz-wUQJcBG-P`Zbj21uLEG`;6K+(D7(Bxx9Ty<1ITy@Wh5W|byn&UO z=Sz9kIONCb-w-=*CIjMF!-ZcO3H+FW4|NJ4f9r^7j5=E^eA~>JA27v(KcL6^J8>o8S5qXLpX<0-j;XndVSIC^Y@dK;8aSziD&$V4h zdLnH7O+9g+&Jn1*M*Q2H!%7>Odr@vPO48 zXIhOz0P@pqLL=Ug(*c_yPvskzC)R#CcOI9ZJmd|uOw@@)MO+L#;0f5ECv2yt$ACJa zZUAk9G;IK3tF`co%(Q)F_0cXGgMtj`VA#IV@iJ$c{E$C+6CRmSZ{|!Je+_+=-=Pf6 zZUP&)g!hpXy2U3)m`RQi){(^v;~V0-Z2XSo#pgOGKW$k1BGu<+-5BD$>^Lap1YtdJ z$2w{BpSFyyvf}{zNt+)V8`ri@{f6>m8y)rlJ4T;jgEK&yR(~2k;~^yz1F{V54|y9* z_QVhMKTe|zq)(mMHgCJeHb+2OklCnCo#|ZvAaaTC1MD3@FYO#249F7TXrX`F#xiG` z@Zrj5C~vc!p*+I2ngX&2+Y^Y>u{7W%u3!3G!s&P+YkQ%*V*68tkavLmuqViezLoNa zlXZZ6(Mj#^TH1d;J@j!&Ixpgo7wKCaS>8-gA#-#Lgz~{LFsOcKw#~*%)Q!c{N3o>M zfLIT(;UR1Xf!R`nImtl#X8CR79_oU0`3>*r2YeW;JjhPRMgp#t>qK6Dq5T7vrXem@ zPfv3^tK%G#g~&+Tl*ouU@Wg%2nV7b1-uyN_MDBzSfo@W6!dlt}^9AxeHk}(*NO?Ax zE!cp^S*#B4)EjA`Q#J;{ z4#)3ofFF3oX#=Do+Ar7ir@&t)3}7dn@j%-_w}ILF21NgmEp_DU&BoqMyAAv`ACB<6 zojtVk0G=o(_eqB`m@_@i*69E?_BQAkLDKSzAz42YI(q8&~2}@pHU;MbAc;Up2 z47Bv<`)S4|zI_Z1^9ji*tw-7{!+g?X+dBE%m;#5`Y_s-n5|%No@x?vT#$ndq5)_?f zAq>@JcuhC6HS9oI!0o(kN-e{>j?TXJB!my zgU^?l^g@2}{QJzp!E0P6GVI9C@<9Joozz$fN#52$hVX;^Cc=T1hac4V0Z~@AAV^pi zV0vk2(NC#ACU!7RItX3lGgQ9K5tO9;0MN%XU9miESDyV&@e=b?hDaO@gvOALcY0Qw z=|Smu{=e$ZZbxt22E$)wc9Wo)4TAgtMRHiQ_kS5Z?FAHDAV)2VZUZDulT2pHhtzA+ zukFvXn`F^_fp0vrC6S^?iIn_92L>c2wU=>+AHJdV0Y1Eb=TXv8TKTb4;wtELTPFZ! zg27>7;=$qQfLHXe2jAV^#$1&UEzxFv?5p((w!8Dx7pRyRY4gQc2_ z&JyWd<(EJPOr0jV3$Aan6(DCwHVI^x0KU1?VagZ8kMuVUc7V1k;FI%@-l)witmG|n zgFM&kSao(iGC zQP+KQ0@VJlLqIy@`1CPscBmv~_25C9AOl{`_09EB@O-LPPG=;9{3e*HYiH0QU~X@xEa zAUokXQh`&vTP9@^r{()HB*KHzg6rB5KU?yme^rFbHXKF39`+qwfFB%gM)Ju15nXOm zWx~nJI>kDqdo!S?@fo1F2-;X&=K5}nU=R?KdH5a!-7_te0x>Hx~v2ezW)+L;45MGygZH<;$44YoT~92s2ecDx%a^A={OOPR zH7Ek;$3OfKZ3Seu1<0dvc ze*D{y`68s(uV0_u#5qq%;P>$`miEBPe+L_HCXQIvt>e zk@*>yfw40zCkkXAhA~h_1_D+WK-Z>~(>Rv#H+_z7?fL8fxv&5Gp4*YeU>A<-{r1s$ zju%mvI|4x6%sKeV9jy4d^Acgv_^+_2BimCuvL$tk>-}U;16#ayIA7{lo!4MUJ?#2^48==bUKU%`LjZ%kXd67&9Sw7y zJvvH@Z_4S`x4u}%_|k)ET@$c!#L5E!aG=B|$ zk?YK#JX_4-(~*Dl@xxNz9X&sF-(D`u=N$oYKHo+kw)!CgP8uzLB>QVoNA1)D?X>qc z2RmFxRmvEqLm z9l!ZtntCx(I)S?}a7=iUFvfrN=qhi|qMm&Av@f3+(lKn$3{Zw|O#&CD(h8<0*x#cj(g)pd8XUKVa}; zFwlV7|F227CU2qV>wr)4Wt&aLoqt`MJX!=)7n`OSi&{SLt#E(>#mBi>Q|43H^;DK`^bp>cNgXmjnmA1wO~Zs4I7CM)1t! z&;R{4G#r!Eg=nLKeR$WR!BIazPk}V~_2V4vt3{i+%(}kqw1R4-RY%WXw3d^+`jfs= z;K)zt{{w=(T5#ZPpgbQ~x43G2X8fu$V?2<~jPb)kV8i?aKTQ03)If0hjL$gyoaY&^ z;5f&hlIuz2PN z-$DK8KJC{RCU{O79Rp5Z>HGv_&_u_V!Ss9`C@s4dzBHKTHvZ&&jBDy2?e%OBA8(d@v1JTPs4qd%%KDaah6epW z;La`SkxDz|S9ZFrYVXA+O`rA*>SU7GiVi@dG8cp}eS*G%_ZFs(eR zxN)RobeZZTFE1oRuJ8gLGOk6xGdAJ7)EL2B&7%~T`8IFPRlpqlg|6l}5Wh^@>Pq)T zeh!v;9=wjD<2M~l;{@gHvQZ}jXJ`3cIFkg^fXS1cQ+B2GjB5uIInOjh2SeeuQ>|uZ zIyw!$5oYH_2Du7mhcPLy2h);)w@Yb1PcU6ONjKS!e9kj~*l4pqW9+zz>vBweR|jy- zX^KZ2a@xPA9+dN7x({%$mI@vDdb{<1J@dF%d%^WX<+JT^^fsw(VM?3xt4UOCPXk0w zqrb}es$f97Z_va^MbBzb4Wk|}K+tuc*nF_Pyx+VD*seF9rgZnJX(y1b=Vl35O1*{20~OUHl6ucPZhU!7Ke09}`( zdl#sTLo$Sy3_{1}5+ohbmApu&Y~p|9t021b2Skr!=ThgDpUDA7vFa@v^aKB6GwI}q zZgq583RugDD4k)~LjMExO}BS~Wb7EAuXP*m>ff4a>f%0I3#29zLv{Y=M084?I}Y5m3Kqbo4yH^AKS6#TWAPU3;Z9Hv-kw z?bGWQoQ@VdKriFvJ-x**{NY$(qwXvM=t#zU!LRe;bOrneU!3YV;&+Qb&}9hr=pWVR z?tpA$575!>C$_-&fK4-QptD-Q6P!Me_@J+#Z0kHdpAXYsgC64$w7Q)D=;F$98xysl0w(a&mc| zgZzX&oq!g00`FP`)j~3D-uS2Qv9NM6?>9iqRT8E<2&Fh z$KjVl)h)9HDpgF9E{UYUb9?4(B?~(c5Yp`E@H2PN@%GbgWj>nb@^T^R+yj zqJzbwZtq9>v+D07eYgJlIiR03G3>#qyMFkmDb_g8{}GP(JHiq5n7+qW{6r(Jpbs{avMS zH)Ma01(RHC$Km@G;quxXKff}*^?ac=eT%kuojE@QJr=n*-nPa1Egb3Rmtt%8vum`E zuUr0N$I*3m`w0wK#39&q`PAKg`|$DgD8J*JJafJ?emwvB`qDpNU!T)k{v(@1=Wr4J z!&V=G3Z~DLALF+^uj;6J&&$u-v);|Gz!ebedN7|p)DDZ#Ka#J5Sb$r^{eJ=edi>%b zo`DAQB)a7DvxD*WTLOEb9l+ZHu%B~XeBfSwL!3_k1GXwVM|1?YjsO4v07*qoM6N<$ Ef+d^B?f?J) literal 0 HcmV?d00001 diff --git a/ui/app.py b/ui/app.py new file mode 100644 index 0000000..a3d9939 --- /dev/null +++ b/ui/app.py @@ -0,0 +1,9 @@ +from lib.interface import create_interface + +if __name__ == "__main__": + demo = create_interface() + demo.launch( + server_name="0.0.0.0", + server_port=7860, + show_error=True + ) diff --git a/ui/data/inputs/test_timemachine.txt b/ui/data/inputs/test_timemachine.txt new file mode 100644 index 0000000..50583f3 --- /dev/null +++ b/ui/data/inputs/test_timemachine.txt @@ -0,0 +1,151 @@ +The Time Traveller (for so it will be convenient to speak of him) was expounding a recondite matter to us. His pale grey eyes shone and twinkled, and his usually pale face was flushed and animated. The fire burnt brightly, and the soft radiance of the incandescent lights in the lilies of silver caught the bubbles that flashed and passed in our glasses. Our chairs, being his patents, embraced and caressed us rather than submitted to be sat upon, and there was that luxurious after-dinner atmosphere, when thought runs gracefully free of the trammels of precision. And he put it to us in this way—marking the points with a lean forefinger—as we sat and lazily admired his earnestness over this new paradox (as we thought it) and his fecundity. + +“You must follow me carefully. I shall have to controvert one or two ideas that are almost universally accepted. The geometry, for instance, they taught you at school is founded on a misconception.” + +“Is not that rather a large thing to expect us to begin upon?” said Filby, an argumentative person with red hair. + +“I do not mean to ask you to accept anything without reasonable ground for it. You will soon admit as much as I need from you. You know of course that a mathematical line, a line of thickness nil, has no real existence. They taught you that? Neither has a mathematical plane. These things are mere abstractions.” + +“That is all right,” said the Psychologist. + +“Nor, having only length, breadth, and thickness, can a cube have a real existence.” + +“There I object,” said Filby. “Of course a solid body may exist. All real things—” + +“So most people think. But wait a moment. Can an instantaneous cube exist?” + +“Don’t follow you,” said Filby. + +“Can a cube that does not last for any time at all, have a real existence?” + +Filby became pensive. “Clearly,” the Time Traveller proceeded, “any real body must have extension in four directions: it must have Length, Breadth, Thickness, and—Duration. But through a natural infirmity of the flesh, which I will explain to you in a moment, we incline to overlook this fact. There are really four dimensions, three which we call the three planes of Space, and a fourth, Time. There is, however, a tendency to draw an unreal distinction between the former three dimensions and the latter, because it happens that our consciousness moves intermittently in one direction along the latter from the beginning to the end of our lives.” + +“That,” said a very young man, making spasmodic efforts to relight his cigar over the lamp; “that . . . very clear indeed.” + +“Now, it is very remarkable that this is so extensively overlooked,” continued the Time Traveller, with a slight accession of cheerfulness. “Really this is what is meant by the Fourth Dimension, though some people who talk about the Fourth Dimension do not know they mean it. It is only another way of looking at Time. There is no difference between Time and any of the three dimensions of Space except that our consciousness moves along it. But some foolish people have got hold of the wrong side of that idea. You have all heard what they have to say about this Fourth Dimension?” + +“I have not,” said the Provincial Mayor. + +“It is simply this. That Space, as our mathematicians have it, is spoken of as having three dimensions, which one may call Length, Breadth, and Thickness, and is always definable by reference to three planes, each at right angles to the others. But some philosophical people have been asking why three dimensions particularly—why not another direction at right angles to the other three?—and have even tried to construct a Four-Dimensional geometry. Professor Simon Newcomb was expounding this to the New York Mathematical Society only a month or so ago. You know how on a flat surface, which has only two dimensions, we can represent a figure of a three-dimensional solid, and similarly they think that by models of three dimensions they could represent one of four—if they could master the perspective of the thing. See?” + +“I think so,” murmured the Provincial Mayor; and, knitting his brows, he lapsed into an introspective state, his lips moving as one who repeats mystic words. “Yes, I think I see it now,” he said after some time, brightening in a quite transitory manner. + +“Well, I do not mind telling you I have been at work upon this geometry of Four Dimensions for some time. Some of my results are curious. For instance, here is a portrait of a man at eight years old, another at fifteen, another at seventeen, another at twenty-three, and so on. All these are evidently sections, as it were, Three-Dimensional representations of his Four-Dimensioned being, which is a fixed and unalterable thing. + +“Scientific people,” proceeded the Time Traveller, after the pause required for the proper assimilation of this, “know very well that Time is only a kind of Space. Here is a popular scientific diagram, a weather record. This line I trace with my finger shows the movement of the barometer. Yesterday it was so high, yesterday night it fell, then this morning it rose again, and so gently upward to here. Surely the mercury did not trace this line in any of the dimensions of Space generally recognised? But certainly it traced such a line, and that line, therefore, we must conclude, was along the Time-Dimension.” + +“But,” said the Medical Man, staring hard at a coal in the fire, “if Time is really only a fourth dimension of Space, why is it, and why has it always been, regarded as something different? And why cannot we move in Time as we move about in the other dimensions of Space?” + +The Time Traveller smiled. “Are you so sure we can move freely in Space? Right and left we can go, backward and forward freely enough, and men always have done so. I admit we move freely in two dimensions. But how about up and down? Gravitation limits us there.” + +“Not exactly,” said the Medical Man. “There are balloons.” + +“But before the balloons, save for spasmodic jumping and the inequalities of the surface, man had no freedom of vertical movement.” + +“Still they could move a little up and down,” said the Medical Man. + +“Easier, far easier down than up.” + +“And you cannot move at all in Time, you cannot get away from the present moment.” + +“My dear sir, that is just where you are wrong. That is just where the whole world has gone wrong. We are always getting away from the present moment. Our mental existences, which are immaterial and have no dimensions, are passing along the Time-Dimension with a uniform velocity from the cradle to the grave. Just as we should travel down if we began our existence fifty miles above the earth’s surface.” + +“But the great difficulty is this,” interrupted the Psychologist. ’You can move about in all directions of Space, but you cannot move about in Time.” + +“That is the germ of my great discovery. But you are wrong to say that we cannot move about in Time. For instance, if I am recalling an incident very vividly I go back to the instant of its occurrence: I become absent-minded, as you say. I jump back for a moment. Of course we have no means of staying back for any length of Time, any more than a savage or an animal has of staying six feet above the ground. But a civilised man is better off than the savage in this respect. He can go up against gravitation in a balloon, and why should he not hope that ultimately he may be able to stop or accelerate his drift along the Time-Dimension, or even turn about and travel the other way?” + +“Oh, this,” began Filby, “is all—” + +“Why not?” said the Time Traveller. + +“It’s against reason,” said Filby. + +“What reason?” said the Time Traveller. + +“You can show black is white by argument,” said Filby, “but you will never convince me.” + +“Possibly not,” said the Time Traveller. “But now you begin to see the object of my investigations into the geometry of Four Dimensions. Long ago I had a vague inkling of a machine—” + +“To travel through Time!” exclaimed the Very Young Man. + +“That shall travel indifferently in any direction of Space and Time, as the driver determines.” + +Filby contented himself with laughter. + +“But I have experimental verification,” said the Time Traveller. + +“It would be remarkably convenient for the historian,” the Psychologist suggested. “One might travel back and verify the accepted account of the Battle of Hastings, for instance!” + +“Don’t you think you would attract attention?” said the Medical Man. “Our ancestors had no great tolerance for anachronisms.” + +“One might get one’s Greek from the very lips of Homer and Plato,” the Very Young Man thought. + +“In which case they would certainly plough you for the Little-go. The German scholars have improved Greek so much.” + +“Then there is the future,” said the Very Young Man. “Just think! One might invest all one’s money, leave it to accumulate at interest, and hurry on ahead!” + +“To discover a society,” said I, “erected on a strictly communistic basis.” + +“Of all the wild extravagant theories!” began the Psychologist. + +“Yes, so it seemed to me, and so I never talked of it until—” + +“Experimental verification!” cried I. “You are going to verify that?” + +“The experiment!” cried Filby, who was getting brain-weary. + +“Let’s see your experiment anyhow,” said the Psychologist, “though it’s all humbug, you know.” + +The Time Traveller smiled round at us. Then, still smiling faintly, and with his hands deep in his trousers pockets, he walked slowly out of the room, and we heard his slippers shuffling down the long passage to his laboratory. + +The Psychologist looked at us. “I wonder what he’s got?” + +“Some sleight-of-hand trick or other,” said the Medical Man, and Filby tried to tell us about a conjuror he had seen at Burslem, but before he had finished his preface the Time Traveller came back, and Filby’s anecdote collapsed. + +II. +The Machine +The thing the Time Traveller held in his hand was a glittering metallic framework, scarcely larger than a small clock, and very delicately made. There was ivory in it, and some transparent crystalline substance. And now I must be explicit, for this that follows—unless his explanation is to be accepted—is an absolutely unaccountable thing. He took one of the small octagonal tables that were scattered about the room, and set it in front of the fire, with two legs on the hearthrug. On this table he placed the mechanism. Then he drew up a chair, and sat down. The only other object on the table was a small shaded lamp, the bright light of which fell upon the model. There were also perhaps a dozen candles about, two in brass candlesticks upon the mantel and several in sconces, so that the room was brilliantly illuminated. I sat in a low arm-chair nearest the fire, and I drew this forward so as to be almost between the Time Traveller and the fireplace. Filby sat behind him, looking over his shoulder. The Medical Man and the Provincial Mayor watched him in profile from the right, the Psychologist from the left. The Very Young Man stood behind the Psychologist. We were all on the alert. It appears incredible to me that any kind of trick, however subtly conceived and however adroitly done, could have been played upon us under these conditions. + +The Time Traveller looked at us, and then at the mechanism. “Well?” said the Psychologist. + +“This little affair,” said the Time Traveller, resting his elbows upon the table and pressing his hands together above the apparatus, “is only a model. It is my plan for a machine to travel through time. You will notice that it looks singularly askew, and that there is an odd twinkling appearance about this bar, as though it was in some way unreal.” He pointed to the part with his finger. “Also, here is one little white lever, and here is another.” + +The Medical Man got up out of his chair and peered into the thing. “It’s beautifully made,” he said. + +“It took two years to make,” retorted the Time Traveller. Then, when we had all imitated the action of the Medical Man, he said: “Now I want you clearly to understand that this lever, being pressed over, sends the machine gliding into the future, and this other reverses the motion. This saddle represents the seat of a time traveller. Presently I am going to press the lever, and off the machine will go. It will vanish, pass into future Time, and disappear. Have a good look at the thing. Look at the table too, and satisfy yourselves there is no trickery. I don’t want to waste this model, and then be told I’m a quack.” + +There was a minute’s pause perhaps. The Psychologist seemed about to speak to me, but changed his mind. Then the Time Traveller put forth his finger towards the lever. “No,” he said suddenly. “Lend me your hand.” And turning to the Psychologist, he took that individual’s hand in his own and told him to put out his forefinger. So that it was the Psychologist himself who sent forth the model Time Machine on its interminable voyage. We all saw the lever turn. I am absolutely certain there was no trickery. There was a breath of wind, and the lamp flame jumped. One of the candles on the mantel was blown out, and the little machine suddenly swung round, became indistinct, was seen as a ghost for a second perhaps, as an eddy of faintly glittering brass and ivory; and it was gone—vanished! Save for the lamp the table was bare. + +Everyone was silent for a minute. Then Filby said he was damned. + +The Psychologist recovered from his stupor, and suddenly looked under the table. At that the Time Traveller laughed cheerfully. “Well?” he said, with a reminiscence of the Psychologist. Then, getting up, he went to the tobacco jar on the mantel, and with his back to us began to fill his pipe. + +We stared at each other. “Look here,” said the Medical Man, “are you in earnest about this? Do you seriously believe that that machine has travelled into time?” + +“Certainly,” said the Time Traveller, stooping to light a spill at the fire. Then he turned, lighting his pipe, to look at the Psychologist’s face. (The Psychologist, to show that he was not unhinged, helped himself to a cigar and tried to light it uncut.) “What is more, I have a big machine nearly finished in there”—he indicated the laboratory—“and when that is put together I mean to have a journey on my own account.” + +“You mean to say that that machine has travelled into the future?” said Filby. + +“Into the future or the past—I don’t, for certain, know which.” + +After an interval the Psychologist had an inspiration. “It must have gone into the past if it has gone anywhere,” he said. + +“Why?” said the Time Traveller. + +“Because I presume that it has not moved in space, and if it travelled into the future it would still be here all this time, since it must have travelled through this time.” + +“But,” said I, “If it travelled into the past it would have been visible when we came first into this room; and last Thursday when we were here; and the Thursday before that; and so forth!” + +“Serious objections,” remarked the Provincial Mayor, with an air of impartiality, turning towards the Time Traveller. + +“Not a bit,” said the Time Traveller, and, to the Psychologist: “You think. You can explain that. It’s presentation below the threshold, you know, diluted presentation.” + +“Of course,” said the Psychologist, and reassured us. “That’s a simple point of psychology. I should have thought of it. It’s plain enough, and helps the paradox delightfully. We cannot see it, nor can we appreciate this machine, any more than we can the spoke of a wheel spinning, or a bullet flying through the air. If it is travelling through time fifty times or a hundred times faster than we are, if it gets through a minute while we get through a second, the impression it creates will of course be only one-fiftieth or one-hundredth of what it would make if it were not travelling in time. That’s plain enough.” He passed his hand through the space in which the machine had been. “You see?” he said, laughing. + +We sat and stared at the vacant table for a minute or so. Then the Time Traveller asked us what we thought of it all. + +“It sounds plausible enough tonight,” said the Medical Man; “but wait until tomorrow. Wait for the common sense of the morning.” + +“Would you like to see the Time Machine itself?” asked the Time Traveller. And therewith, taking the lamp in his hand, he led the way down the long, draughty corridor to his laboratory. I remember vividly the flickering light, his queer, broad head in silhouette, the dance of the shadows, how we all followed him, puzzled but incredulous, and how there in the laboratory we beheld a larger edition of the little mechanism which we had seen vanish from before our eyes. Parts were of nickel, parts of ivory, parts had certainly been filed or sawn out of rock crystal. The thing was generally complete, but the twisted crystalline bars lay unfinished upon the bench beside some +The Time Traveller Returns +I think that at that time none of us quite believed in the Time Machine. The fact is, the Time Traveller was one of those men who are too clever to be believed: you never felt that you saw all round him; you always suspected some subtle reserve, some ingenuity in ambush, behind his lucid frankness. Had Filby shown the model and explained the matter in the Time Traveller’s words, we should have shown him far less scepticism. For we should have perceived his motives: a pork-butcher could understand Filby. But the Time Traveller had more than a touch of whim among his elements, and we distrusted him. Things that would have made the fame of a less clever man seemed tricks in his hands. It is a mistake to do things too easily. The serious people who took him seriously never felt quite sure of his deportment; they were somehow aware that trusting their reputations for judgment with him was like furnishing a nursery with eggshell china. So I don’t think any of us said very much about time travelling in the interval between that Thursday and the next, though its odd potentialities ran, no doubt, in most of our minds: its plausibility, that is, its practical incredibleness, the curious possibilities of anachronism and of utter confusion it suggested. For my own part, I was particularly preoccupied with the trick of the model. That I remember discussing with the Medical Man, whom I met on Friday at the Linnæan. He said he had seen a similar thing at Tübingen, and laid considerable stress on the blowing-out of the candle. But how the trick was done he could not explai \ No newline at end of file diff --git a/ui/lib/__init__.py b/ui/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ui/lib/api.py b/ui/lib/api.py new file mode 100644 index 0000000..20e8b1d --- /dev/null +++ b/ui/lib/api.py @@ -0,0 +1,75 @@ +import requests +from typing import Tuple, List, Optional +import os +import datetime +from .config import API_URL, OUTPUTS_DIR + +def check_api_status() -> Tuple[bool, List[str]]: + """Check TTS service status and get available voices.""" + try: + response = requests.get(f"{API_URL}/v1/audio/voices", timeout=5) + response.raise_for_status() + voices = response.json().get("voices", []) + if voices: + return True, voices + print("No voices found in response") + return False, [] + except requests.exceptions.Timeout: + print("API request timed out") + return False, [] + except requests.exceptions.RequestException as e: + print(f"API request failed: {str(e)}") + return False, [] + except Exception as e: + print(f"Unexpected error checking API status: {str(e)}") + return False, [] + +def text_to_speech(text: str, voice_id: str, format: str, speed: float) -> Optional[str]: + """Generate speech from text using TTS API.""" + if not text.strip(): + return None + + # Create output filename + timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") + output_filename = f"output_{timestamp}_voice-{voice_id}_speed-{speed}.{format}" + output_path = os.path.join(OUTPUTS_DIR, output_filename) + + try: + response = requests.post( + f"{API_URL}/v1/audio/speech", + json={ + "model": "kokoro", + "input": text, + "voice": voice_id, + "response_format": format, + "speed": float(speed) + }, + headers={"Content-Type": "application/json"}, + timeout=300 # Longer timeout for speech generation + ) + response.raise_for_status() + + with open(output_path, "wb") as f: + f.write(response.content) + return output_path + + except requests.exceptions.Timeout: + print("Speech generation request timed out") + return None + except requests.exceptions.RequestException as e: + print(f"Speech generation request failed: {str(e)}") + return None + except Exception as e: + print(f"Unexpected error generating speech: {str(e)}") + return None + +def get_status_html(is_available: bool) -> str: + """Generate HTML for status indicator.""" + color = "green" if is_available else "red" + status = "Available" if is_available else "Unavailable" + return f""" +

+ """ diff --git a/ui/lib/components/__init__.py b/ui/lib/components/__init__.py new file mode 100644 index 0000000..637ee14 --- /dev/null +++ b/ui/lib/components/__init__.py @@ -0,0 +1,5 @@ +from .input import create_input_column +from .model import create_model_column +from .output import create_output_column + +__all__ = ['create_input_column', 'create_model_column', 'create_output_column'] diff --git a/ui/lib/components/input.py b/ui/lib/components/input.py new file mode 100644 index 0000000..a80ecc9 --- /dev/null +++ b/ui/lib/components/input.py @@ -0,0 +1,46 @@ +import gradio as gr +from typing import Tuple +from .. import files + +def create_input_column() -> Tuple[gr.Column, dict]: + """Create the input column with text input and file handling.""" + with gr.Column(scale=1) as col: + with gr.Tabs() as tabs: + # Direct Input Tab + with gr.TabItem("Direct Input"): + text_input = gr.Textbox( + label="Text to speak", + placeholder="Enter text here...", + lines=4 + ) + + # File Input Tab + with gr.TabItem("From File"): + # Existing files dropdown + input_files_list = gr.Dropdown( + label="Select Existing File", + choices=files.list_input_files(), + value=None + ) + + # Simple file upload + file_upload = gr.File( + label="Upload Text File (.txt)", + file_types=[".txt"] + ) + + file_preview = gr.Textbox( + label="File Content Preview", + interactive=False, + lines=4 + ) + + components = { + "tabs": tabs, + "text_input": text_input, + "file_select": input_files_list, + "file_upload": file_upload, + "file_preview": file_preview + } + + return col, components diff --git a/ui/lib/components/model.py b/ui/lib/components/model.py new file mode 100644 index 0000000..41bcbfc --- /dev/null +++ b/ui/lib/components/model.py @@ -0,0 +1,53 @@ +import gradio as gr +from typing import Tuple, Optional +from .. import api, config + +def create_model_column(voice_ids: Optional[list] = None) -> Tuple[gr.Column, dict]: + """Create the model settings column.""" + if voice_ids is None: + voice_ids = [] + + with gr.Column(scale=1) as col: + gr.Markdown("### Model Settings") + + # Status button with embedded status + is_available, _ = api.check_api_status() + status_btn = gr.Button( + f"Checking TTS Service: {'Available' if is_available else 'Not Yet Available'}", + variant="secondary" + ) + + voice_input = gr.Dropdown( + choices=voice_ids, + label="Voice", + value=voice_ids[0] if voice_ids else None, + interactive=True + ) + format_input = gr.Dropdown( + choices=config.AUDIO_FORMATS, + label="Audio Format", + value="mp3" + ) + speed_input = gr.Slider( + minimum=0.5, + maximum=2.0, + value=1.0, + step=0.1, + label="Speed" + ) + + submit_btn = gr.Button( + "Generate Speech", + variant="primary", + size="lg" + ) + + components = { + "status_btn": status_btn, + "voice": voice_input, + "format": format_input, + "speed": speed_input, + "submit": submit_btn + } + + return col, components diff --git a/ui/lib/components/output.py b/ui/lib/components/output.py new file mode 100644 index 0000000..ff951fd --- /dev/null +++ b/ui/lib/components/output.py @@ -0,0 +1,37 @@ +import gradio as gr +from typing import Tuple +from .. import files + +def create_output_column() -> Tuple[gr.Column, dict]: + """Create the output column with audio player and file list.""" + with gr.Column(scale=1) as col: + gr.Markdown("### Latest Output") + audio_output = gr.Audio( + label="Generated Speech", + type="filepath" + ) + + gr.Markdown("### Generated Files") + output_files = gr.Dropdown( + label="Previous Outputs", + choices=files.list_output_files(), + value=None, + allow_custom_value=False + ) + + play_btn = gr.Button("▶️ Play Selected", size="sm") + + selected_audio = gr.Audio( + label="Selected Output", + type="filepath", + visible=False + ) + + components = { + "audio_output": audio_output, + "output_files": output_files, + "play_btn": play_btn, + "selected_audio": selected_audio + } + + return col, components diff --git a/ui/lib/config.py b/ui/lib/config.py new file mode 100644 index 0000000..2a4aeb7 --- /dev/null +++ b/ui/lib/config.py @@ -0,0 +1,40 @@ +import os + +# API Configuration +API_URL = "http://kokoro-tts:8880" + +# File paths +INPUTS_DIR = "/app/ui/data/inputs" +OUTPUTS_DIR = "/app/ui/data/outputs" + +# Create directories if they don't exist +os.makedirs(INPUTS_DIR, exist_ok=True) +os.makedirs(OUTPUTS_DIR, exist_ok=True) + +# Audio formats +AUDIO_FORMATS = ["mp3", "wav", "opus", "flac"] + +# UI Theme +THEME = "monochrome" +CSS = """ +.gradio-container { + max-width: 1000px; + margin: auto; +} + +.banner-container { + background: transparent !important; + border: none !important; + box-shadow: none !important; + margin-bottom: 2rem; +} + +.banner-container img { + width: 100%; + max-width: 600px; + border-radius: 10px; + margin: 20px auto; + display: block; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} +""" diff --git a/ui/lib/files.py b/ui/lib/files.py new file mode 100644 index 0000000..66d44ce --- /dev/null +++ b/ui/lib/files.py @@ -0,0 +1,87 @@ +import os +from typing import List, Optional, Tuple +import datetime +from .config import INPUTS_DIR, OUTPUTS_DIR, AUDIO_FORMATS + +def list_input_files() -> List[str]: + """List all input text files.""" + return [f for f in os.listdir(INPUTS_DIR) if f.endswith('.txt')] + +def list_output_files() -> List[str]: + """List all output audio files.""" + return [os.path.join(OUTPUTS_DIR, f) + for f in os.listdir(OUTPUTS_DIR) + if any(f.endswith(ext) for ext in AUDIO_FORMATS)] + +def read_text_file(filename: str) -> str: + """Read content of a text file.""" + if not filename: + return "" + try: + file_path = os.path.join(INPUTS_DIR, filename) + with open(file_path, 'r', encoding='utf-8') as f: + return f.read() + except: + return "" + +def save_text(text: str, filename: Optional[str] = None) -> Optional[str]: + """Save text to a file. Returns the filename if successful.""" + if not text.strip(): + return None + + if filename is None: + # Use input_1.txt, input_2.txt, etc. + base = "input" + counter = 1 + while True: + filename = f"{base}_{counter}.txt" + if not os.path.exists(os.path.join(INPUTS_DIR, filename)): + break + counter += 1 + else: + # Handle duplicate filenames by adding _1, _2, etc. + base = os.path.splitext(filename)[0] + ext = os.path.splitext(filename)[1] or '.txt' + counter = 1 + while os.path.exists(os.path.join(INPUTS_DIR, filename)): + filename = f"{base}_{counter}{ext}" + counter += 1 + + filepath = os.path.join(INPUTS_DIR, filename) + try: + with open(filepath, "w", encoding="utf-8") as f: + f.write(text) + return filename + except Exception as e: + print(f"Error saving file: {e}") + return None + +def process_uploaded_file(file_path: str) -> bool: + """Save uploaded file to inputs directory. Returns True if successful.""" + if not file_path: + return False + + try: + filename = os.path.basename(file_path) + if not filename.endswith('.txt'): + return False + + # Create target path in inputs directory + target_path = os.path.join(INPUTS_DIR, filename) + + # If file exists, add number suffix + base, ext = os.path.splitext(filename) + counter = 1 + while os.path.exists(target_path): + new_name = f"{base}_{counter}{ext}" + target_path = os.path.join(INPUTS_DIR, new_name) + counter += 1 + + # Copy file to inputs directory + import shutil + shutil.copy2(file_path, target_path) + return True + + except Exception as e: + print(f"Error saving uploaded file: {e}") + return False diff --git a/ui/lib/handlers.py b/ui/lib/handlers.py new file mode 100644 index 0000000..bcc15d7 --- /dev/null +++ b/ui/lib/handlers.py @@ -0,0 +1,139 @@ +import gradio as gr +import os +import shutil +from . import api, files + +def setup_event_handlers(components: dict): + """Set up all event handlers for the UI components.""" + + def refresh_status(): + is_available, voices = api.check_api_status() + status = "Available" if is_available else "Unavailable" + btn_text = f"🔄 TTS Service: {status}" + + if is_available and voices: + return { + components["model"]["status_btn"]: gr.update(value=btn_text), + components["model"]["voice"]: gr.update(choices=voices, value=voices[0] if voices else None) + } + return { + components["model"]["status_btn"]: gr.update(value=btn_text), + components["model"]["voice"]: gr.update(choices=[], value=None) + } + + def handle_file_select(filename): + if filename: + try: + text = files.read_text_file(filename) + if text: + preview = text[:200] + "..." if len(text) > 200 else text + return gr.update(value=preview) + except Exception as e: + print(f"Error reading file: {e}") + return gr.update(value="") + + def handle_file_upload(file): + if file is None: + return gr.update(choices=files.list_input_files()) + + try: + # Copy file to inputs directory + filename = os.path.basename(file.name) + target_path = os.path.join(files.INPUTS_DIR, filename) + + # Handle duplicate filenames + base, ext = os.path.splitext(filename) + counter = 1 + while os.path.exists(target_path): + new_name = f"{base}_{counter}{ext}" + target_path = os.path.join(files.INPUTS_DIR, new_name) + counter += 1 + + shutil.copy2(file.name, target_path) + + except Exception as e: + print(f"Error uploading file: {e}") + + return gr.update(choices=files.list_input_files()) + + def generate_speech(text, selected_file, voice, format, speed): + is_available, _ = api.check_api_status() + if not is_available: + gr.Warning("TTS Service is currently unavailable") + return { + components["output"]["audio_output"]: None, + components["output"]["output_files"]: gr.update(choices=files.list_output_files()) + } + + # Use text input if provided, otherwise use file content + if text and text.strip(): + files.save_text(text) + final_text = text + elif selected_file: + final_text = files.read_text_file(selected_file) + else: + gr.Warning("Please enter text or select a file") + return { + components["output"]["audio_output"]: None, + components["output"]["output_files"]: gr.update(choices=files.list_output_files()) + } + + result = api.text_to_speech(final_text, voice, format, speed) + if result is None: + gr.Warning("Failed to generate speech. Please try again.") + return { + components["output"]["audio_output"]: None, + components["output"]["output_files"]: gr.update(choices=files.list_output_files()) + } + + return { + components["output"]["audio_output"]: result, + components["output"]["output_files"]: gr.update(choices=files.list_output_files(), value=os.path.basename(result)) + } + + def play_selected(file_path): + if file_path and os.path.exists(file_path): + return gr.update(value=file_path, visible=True) + return gr.update(visible=False) + + # Connect event handlers + components["model"]["status_btn"].click( + fn=refresh_status, + outputs=[ + components["model"]["status_btn"], + components["model"]["voice"] + ] + ) + + components["input"]["file_select"].change( + fn=handle_file_select, + inputs=[components["input"]["file_select"]], + outputs=[components["input"]["file_preview"]] + ) + + components["input"]["file_upload"].upload( + fn=handle_file_upload, + inputs=[components["input"]["file_upload"]], + outputs=[components["input"]["file_select"]] + ) + + components["output"]["play_btn"].click( + fn=play_selected, + inputs=[components["output"]["output_files"]], + outputs=[components["output"]["selected_audio"]] + ) + + components["model"]["submit"].click( + fn=generate_speech, + inputs=[ + components["input"]["text_input"], + components["input"]["file_select"], + components["model"]["voice"], + components["model"]["format"], + components["model"]["speed"] + ], + outputs=[ + components["output"]["audio_output"], + components["output"]["output_files"] + ] + ) diff --git a/ui/lib/interface.py b/ui/lib/interface.py new file mode 100644 index 0000000..cfdada4 --- /dev/null +++ b/ui/lib/interface.py @@ -0,0 +1,55 @@ +import gradio as gr +from . import api +from .components import create_input_column, create_model_column, create_output_column +from .handlers import setup_event_handlers + +def create_interface(): + """Create the main Gradio interface.""" + # Initial status check + is_available, available_voices = api.check_api_status() + + with gr.Blocks( + title="Kokoro TTS Demo", + theme=gr.themes.Monochrome() +) as demo: + gr.HTML(value='', show_label=False) + + # Main interface + with gr.Row(): + # Create columns + input_col, input_components = create_input_column() + model_col, model_components = create_model_column(available_voices) # Pass initial voices + output_col, output_components = create_output_column() + + # Collect all components + components = { + "input": input_components, + "model": model_components, + "output": output_components + } + + # Set up event handlers + setup_event_handlers(components) + + # Add periodic status check with Timer + def update_status(): + is_available, voices = api.check_api_status() + status = "Available" if is_available else "Unavailable" + return { + components["model"]["status_btn"]: gr.update(value=f"🔄 TTS Service: {status}"), + components["model"]["voice"]: gr.update(choices=voices, value=voices[0] if voices else None) + } + + timer = gr.Timer(10, active=True) # Check every 10 seconds + timer.tick( + fn=update_status, + outputs=[ + components["model"]["status_btn"], + components["model"]["voice"] + ] + ) + + return demo From 53cf71c151a5b26eb54da5d29ed55a4254e3e54b Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 17:38:22 -0700 Subject: [PATCH 02/11] -Removed commit lock on HF repo -Warm start added to model initialization -Layer caching tweaks to dockerfile --- .coveragerc | 5 +- .dockerignore | 41 ++++++++++++ .gitignore | 2 +- CHANGELOG.md | 27 ++++++++ Dockerfile | 14 ++-- README.md | 6 +- api/src/main.py | 16 ++--- api/src/services/tts.py | 103 ++++++++++++++++------------ api/tests/conftest.py | 15 +++++ api/tests/test_main.py | 123 +++++++++++++++++++++++++++------- api/tests/test_tts_service.py | 33 ++++----- docker-compose.cpu.yml | 9 ++- docker-compose.yml | 21 +++++- 13 files changed, 301 insertions(+), 114 deletions(-) create mode 100644 .dockerignore create mode 100644 CHANGELOG.md diff --git a/.coveragerc b/.coveragerc index f422eda..4072f19 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,9 @@ [run] source = api -omit = Kokoro-82M/* +omit = + Kokoro-82M/* + MagicMock/* + test_*.py [report] exclude_lines = diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b456f25 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,41 @@ +# Version control +.git +.gitignore + +# Python +__pycache__ +*.pyc +*.pyo +*.pyd +.Python +*.py[cod] +*$py.class +.pytest_cache +.coverage +.coveragerc + +# Environment +# .env +.venv +env/ +venv/ +ENV/ + +# IDE +.idea +.vscode +*.swp +*.swo + +# Project specific +examples/ +Kokoro-82M/ +ui/ +tests/ +*.md +*.txt +!requirements.txt + +# Docker +Dockerfile* +docker-compose* diff --git a/.gitignore b/.gitignore index 1d9db35..98b9187 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ output/ - +ui/data/* *.db *.pyc diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..36715cd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,27 @@ +# Changelog + +Notable changes to this project will be documented in this file. + +## 2024-01-09 + +### Modified +#### Configuration Changes +- Updated Docker configurations: + - Changes to `Dockerfile`: + - Improved layer caching by separating dependency and code layers + - Updates to `docker-compose.yml` and `docker-compose.cpu.yml`: + - Removed commit lock from model fetching to allow automatic model updates from HF + - Added git index lock cleanup + +#### API Changes +- Modified `api/src/main.py` +- Updated TTS service implementation in `api/src/services/tts.py`: + - Added device management for better resource control: + - Voices are now copied from model repository to api/src/voices directory for persistence + - Refactored voice pack handling: + - Removed static voice pack dictionary + - On-demand voice loading from disk + - Added model warm-up functionality: + - Model now initializes with a dummy text generation + - Uses default voice (af.pt) for warm-up + - Model is ready for inference on first request diff --git a/Dockerfile b/Dockerfile index e06d314..7d70af9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,25 +17,25 @@ RUN pip3 install --no-cache-dir torch==2.5.1 --extra-index-url https://download. COPY requirements.txt . RUN pip3 install --no-cache-dir -r requirements.txt -# Copy application code and model -COPY . /app/ - # Set working directory WORKDIR /app -# Run with Python unbuffered output for live logging -ENV PYTHONUNBUFFERED=1 - # Create non-root user RUN useradd -m -u 1000 appuser -# Create directories and set permissions +# Create model directory and set ownership RUN mkdir -p /app/Kokoro-82M && \ chown -R appuser:appuser /app # Switch to non-root user USER appuser +# Run with Python unbuffered output for live logging +ENV PYTHONUNBUFFERED=1 + +# Copy only necessary application code +COPY --chown=appuser:appuser api /app/api + # Set Python path (app first for our imports, then model dir for model imports) ENV PYTHONPATH=/app:/app/Kokoro-82M diff --git a/README.md b/README.md index fa70f3b..a626cc0 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@

# Kokoro TTS API -[![Model Commit](https://img.shields.io/badge/model--commit-a67f113-blue)](https://huggingface.co/hexgrad/Kokoro-82M/tree/8228a351f87c8a6076502c1e3b7e72e821ebec9a) -[![Tests](https://img.shields.io/badge/tests-36%20passed-darkgreen)]() -[![Coverage](https://img.shields.io/badge/coverage-91%25-darkgreen)]() +[![Tests](https://img.shields.io/badge/tests-37%20passed-darkgreen)]() +[![Coverage](https://img.shields.io/badge/coverage-81%25-darkgreen)]() +[![Tested at Model Commit](https://img.shields.io/badge/last--tested--model--commit-a67f113-blue)](https://huggingface.co/hexgrad/Kokoro-82M/tree/c3b0d86e2a980e027ef71c28819ea02e351c2667) FastAPI wrapper for [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model, providing an OpenAI-compatible endpoint with: - NVIDIA GPU accelerated inference (or CPU) option diff --git a/api/src/main.py b/api/src/main.py index 9115ade..ebe2f53 100644 --- a/api/src/main.py +++ b/api/src/main.py @@ -19,18 +19,10 @@ async def lifespan(app: FastAPI): """Lifespan context manager for model initialization""" logger.info("Loading TTS model and voice packs...") - # Initialize the main model - model, device = TTSModel.get_instance() - logger.info(f"Model loaded on {device}") - - # Initialize all voice packs - tts_service = TTSService() - voices = tts_service.list_voices() - for voice in voices: - logger.info(f"Loading voice pack: {voice}") - TTSModel.get_voicepack(voice) - - logger.info("All models and voice packs loaded successfully") + # Initialize the main model with warm-up + model, voicepack_count = TTSModel.initialize() + logger.info(f"Model loaded and warmed up on {TTSModel._device}") + logger.info(f"{voicepack_count} voice packs loaded successfully") yield diff --git a/api/src/services/tts.py b/api/src/services/tts.py index 686ef5d..de76836 100644 --- a/api/src/services/tts.py +++ b/api/src/services/tts.py @@ -21,43 +21,63 @@ enc = tiktoken.get_encoding("cl100k_base") class TTSModel: _instance = None + _device = None _lock = threading.Lock() - _voicepacks = {} # Directory for all voices (copied base voices, and any created combined voices) VOICES_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "voices") @classmethod - def get_instance(cls): - if cls._instance is None: - with cls._lock: - if cls._instance is None: - device = "cuda" if torch.cuda.is_available() else "cpu" - print(f"Initializing model on {device}") - model_path = os.path.join(settings.model_dir, settings.model_path) - model = build_model(model_path, device) - # Note: RNN memory optimization is handled internally by the model - cls._instance = (model, device) - return cls._instance - - @classmethod - def get_voicepack(cls, voice_name: str) -> torch.Tensor: - """Get a voice pack from the voices directory.""" - model, device = cls.get_instance() - if voice_name not in cls._voicepacks: - try: - voice_path = os.path.join(cls.VOICES_DIR, f"{voice_name}.pt") - if not os.path.exists(voice_path): - raise FileNotFoundError(f"Voice file not found: {voice_name}") + def initialize(cls): + """Initialize and warm up the model""" + with cls._lock: + if cls._instance is None: + # Initialize model + cls._device = "cuda" if torch.cuda.is_available() else "cpu" + logger.info(f"Initializing model on {cls._device}") + model_path = os.path.join(settings.model_dir, settings.model_path) + model = build_model(model_path, cls._device) + cls._instance = model - voicepack = torch.load(voice_path, map_location=device, weights_only=True) - cls._voicepacks[voice_name] = voicepack - except Exception as e: - logger.error(f"Error loading voice {voice_name}: {str(e)}") - if voice_name != "af": - return cls.get_voicepack("af") - raise - return cls._voicepacks[voice_name] + # Ensure voices directory exists + os.makedirs(cls.VOICES_DIR, exist_ok=True) + + # Copy base voices to local directory + base_voices_dir = os.path.join(settings.model_dir, settings.voices_dir) + if os.path.exists(base_voices_dir): + for file in os.listdir(base_voices_dir): + if file.endswith(".pt"): + voice_name = file[:-3] + voice_path = os.path.join(cls.VOICES_DIR, file) + if not os.path.exists(voice_path): + try: + logger.info(f"Copying base voice {voice_name} to voices directory") + base_path = os.path.join(base_voices_dir, file) + voicepack = torch.load(base_path, map_location=cls._device, weights_only=True) + torch.save(voicepack, voice_path) + except Exception as e: + logger.error(f"Error copying voice {voice_name}: {str(e)}") + + # Warm up with default voice + try: + dummy_text = "Hello" + voice_path = os.path.join(cls.VOICES_DIR, "af.pt") + dummy_voicepack = torch.load(voice_path, map_location=cls._device, weights_only=True) + generate(model, dummy_text, dummy_voicepack, lang='a', speed=1.0) + logger.info("Model warm-up complete") + except Exception as e: + logger.warning(f"Model warm-up failed: {e}") + + # Count voices in directory for validation + voice_count = len([f for f in os.listdir(cls.VOICES_DIR) if f.endswith('.pt')]) + return cls._instance, voice_count + + @classmethod + def get_instance(cls): + """Get the initialized instance or raise an error""" + if cls._instance is None: + raise RuntimeError("Model not initialized. Call initialize() first.") + return cls._instance, cls._device class TTSService: @@ -79,9 +99,9 @@ class TTSService: voice_path = os.path.join(TTSModel.VOICES_DIR, file) if not os.path.exists(voice_path): try: - base_path = os.path.join(base_voices_dir, file) logger.info(f"Copying base voice {voice_name} to voices directory") - voicepack = torch.load(base_path, map_location=TTSModel.get_instance()[1], weights_only=True) + base_path = os.path.join(base_voices_dir, file) + voicepack = torch.load(base_path, map_location=TTSModel._device, weights_only=True) torch.save(voicepack, voice_path) except Exception as e: logger.error(f"Error copying voice {voice_name}: {str(e)}") @@ -114,21 +134,21 @@ class TTSService: if not text: raise ValueError("Text is empty after preprocessing") - # Get model instance - model, device = TTSModel.get_instance() - - # Load voice + # Check voice exists voice_path = self._get_voice_path(voice) if not voice_path: raise ValueError(f"Voice not found: {voice}") - - voicepack = torch.load(voice_path, map_location=device, weights_only=True) + + # Load model and voice + model = TTSModel._instance + voicepack = torch.load(voice_path, map_location=TTSModel._device, weights_only=True) # Generate audio with or without stitching if stitch_long_output: chunks = self._split_text(text) audio_chunks = [] + # Process all chunks with same model/voicepack instance for i, chunk in enumerate(chunks): try: # Validate phonemization first @@ -204,12 +224,9 @@ class TTSService: v_name: List[str] = [] for voice in voices: - voice_path = self._get_voice_path(voice) - if not voice_path: - raise ValueError(f"Voice not found: {voice}") - try: - voicepack = torch.load(voice_path, map_location=TTSModel.get_instance()[1], weights_only=True) + voice_path = os.path.join(TTSModel.VOICES_DIR, f"{voice}.pt") + voicepack = torch.load(voice_path, map_location=TTSModel._device, weights_only=True) t_voices.append(voicepack) v_name.append(voice) except Exception as e: diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 6648c15..5972003 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -1,8 +1,23 @@ +import os +import shutil import sys from unittest.mock import Mock, patch import pytest +def cleanup_mock_dirs(): + """Clean up any MagicMock directories created during tests""" + mock_dir = "MagicMock" + if os.path.exists(mock_dir): + shutil.rmtree(mock_dir) + +@pytest.fixture(autouse=True) +def cleanup(): + """Automatically clean up before and after each test""" + cleanup_mock_dirs() + yield + cleanup_mock_dirs() + # Mock torch and other ML modules before they're imported sys.modules["torch"] = Mock() sys.modules["transformers"] = Mock() diff --git a/api/tests/test_main.py b/api/tests/test_main.py index 9493d27..4eedc64 100644 --- a/api/tests/test_main.py +++ b/api/tests/test_main.py @@ -1,45 +1,116 @@ -"""Tests for main FastAPI application""" +"""Tests for FastAPI application""" import pytest from unittest.mock import patch, MagicMock from fastapi.testclient import TestClient - -from api.src.main import app +from api.src.main import app, lifespan @pytest.fixture -def client(): +def test_client(): """Create a test client""" return TestClient(app) -def test_health_check(client): +def test_health_check(test_client): """Test health check endpoint""" - response = client.get("/health") + response = test_client.get("/health") assert response.status_code == 200 assert response.json() == {"status": "healthy"} -def test_test_endpoint(client): - """Test the test endpoint""" - response = client.get("/v1/test") - assert response.status_code == 200 - assert response.json() == {"status": "ok"} +@pytest.mark.asyncio +@patch('api.src.main.TTSModel') +@patch('api.src.main.logger') +async def test_lifespan_successful_warmup(mock_logger, mock_tts_model): + """Test successful model warmup in lifespan""" + # Mock the model initialization with model info and voicepack count + mock_model = MagicMock() + # Mock file system for voice counting + mock_tts_model.VOICES_DIR = "/mock/voices" + with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt', 'voice3.pt']): + mock_tts_model.initialize.return_value = (mock_model, 3) # 3 voice files + mock_tts_model._device = "cuda" # Set device class variable + + # Create an async generator from the lifespan context manager + async_gen = lifespan(MagicMock()) + # Start the context manager + await async_gen.__aenter__() + + # Verify the expected logging sequence + mock_logger.info.assert_any_call("Loading TTS model and voice packs...") + mock_logger.info.assert_any_call("Model loaded and warmed up on cuda") + mock_logger.info.assert_any_call("3 voice packs loaded successfully") + + # Verify model initialization was called + mock_tts_model.initialize.assert_called_once() + + # Clean up + await async_gen.__aexit__(None, None, None) -def test_cors_headers(client): - """Test CORS headers are present""" - response = client.get( - "/health", - headers={"Origin": "http://testserver"}, - ) - assert response.status_code == 200 - assert response.headers["access-control-allow-origin"] == "*" +@pytest.mark.asyncio +@patch('api.src.main.TTSModel') +@patch('api.src.main.logger') +async def test_lifespan_failed_warmup(mock_logger, mock_tts_model): + """Test failed model warmup in lifespan""" + # Mock the model initialization to fail + mock_tts_model.initialize.side_effect = Exception("Failed to initialize model") + + # Create an async generator from the lifespan context manager + async_gen = lifespan(MagicMock()) + + # Verify the exception is raised + with pytest.raises(Exception, match="Failed to initialize model"): + await async_gen.__aenter__() + + # Verify the expected logging sequence + mock_logger.info.assert_called_with("Loading TTS model and voice packs...") + + # Clean up + await async_gen.__aexit__(None, None, None) -def test_openapi_schema(client): - """Test OpenAPI schema is accessible""" - response = client.get("/openapi.json") - assert response.status_code == 200 - schema = response.json() - assert schema["info"]["title"] == app.title - assert schema["info"]["version"] == app.version +@pytest.mark.asyncio +@patch('api.src.main.TTSModel') +async def test_lifespan_cuda_warmup(mock_tts_model): + """Test model warmup specifically on CUDA""" + # Mock the model initialization with CUDA and voicepacks + mock_model = MagicMock() + # Mock file system for voice counting + mock_tts_model.VOICES_DIR = "/mock/voices" + with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt']): + mock_tts_model.initialize.return_value = (mock_model, 2) # 2 voice files + mock_tts_model._device = "cuda" # Set device class variable + + # Create an async generator from the lifespan context manager + async_gen = lifespan(MagicMock()) + await async_gen.__aenter__() + + # Verify model was initialized + mock_tts_model.initialize.assert_called_once() + + # Clean up + await async_gen.__aexit__(None, None, None) + + +@pytest.mark.asyncio +@patch('api.src.main.TTSModel') +async def test_lifespan_cpu_fallback(mock_tts_model): + """Test model warmup falling back to CPU""" + # Mock the model initialization with CPU and voicepacks + mock_model = MagicMock() + # Mock file system for voice counting + mock_tts_model.VOICES_DIR = "/mock/voices" + with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt', 'voice3.pt', 'voice4.pt']): + mock_tts_model.initialize.return_value = (mock_model, 4) # 4 voice files + mock_tts_model._device = "cpu" # Set device class variable + + # Create an async generator from the lifespan context manager + async_gen = lifespan(MagicMock()) + await async_gen.__aenter__() + + # Verify model was initialized + mock_tts_model.initialize.assert_called_once() + + # Clean up + await async_gen.__aexit__(None, None, None) diff --git a/api/tests/test_tts_service.py b/api/tests/test_tts_service.py index 533c514..a0273ad 100644 --- a/api/tests/test_tts_service.py +++ b/api/tests/test_tts_service.py @@ -131,9 +131,9 @@ def test_model_initialization_cuda(mock_build_model, mock_cuda_available): mock_build_model.return_value = mock_model TTSModel._instance = None # Reset singleton - model, device = TTSModel.get_instance() + model, voice_count = TTSModel.initialize() - assert device == "cuda" + assert TTSModel._device == "cuda" # Check the class variable instead assert model == mock_model mock_build_model.assert_called_once() @@ -147,31 +147,34 @@ def test_model_initialization_cpu(mock_build_model, mock_cuda_available): mock_build_model.return_value = mock_model TTSModel._instance = None # Reset singleton - model, device = TTSModel.get_instance() + model, voice_count = TTSModel.initialize() - assert device == "cpu" + assert TTSModel._device == "cpu" # Check the class variable instead assert model == mock_model mock_build_model.assert_called_once() -@patch('os.path.exists') -@patch('api.src.services.tts.torch.load') -@patch('os.path.join') -def test_voicepack_loading_error(mock_join, mock_torch_load, mock_exists): +@patch('api.src.services.tts.TTSService._get_voice_path') +@patch('api.src.services.tts.TTSModel.get_instance') +def test_voicepack_loading_error(mock_get_instance, mock_get_voice_path): """Test voicepack loading error handling""" - mock_join.side_effect = lambda *args: '/'.join(args) - mock_exists.side_effect = lambda x: False # All voice files don't exist + mock_get_voice_path.return_value = None + mock_get_instance.return_value = (MagicMock(), "cpu") - TTSModel._instance = (MagicMock(), "cpu") # Mock instance TTSModel._voicepacks = {} # Reset voicepacks - with pytest.raises(FileNotFoundError, match="Voice file not found: af"): - TTSModel.get_voicepack("nonexistent_voice") + service = TTSService(start_worker=False) + with pytest.raises(ValueError, match="Voice not found: nonexistent_voice"): + service._generate_audio("test", "nonexistent_voice", 1.0) -def test_save_audio(tts_service, sample_audio, tmp_path): +@patch('api.src.services.tts.TTSModel') +def test_save_audio(mock_tts_model, tts_service, sample_audio, tmp_path): """Test saving audio to file""" - output_path = os.path.join(tmp_path, "test_output", "audio.wav") + output_dir = os.path.join(tmp_path, "test_output") + os.makedirs(output_dir, exist_ok=True) + output_path = os.path.join(output_dir, "audio.wav") + tts_service._save_audio(sample_audio, output_path) assert os.path.exists(output_path) diff --git a/docker-compose.cpu.yml b/docker-compose.cpu.yml index b581639..2daeb46 100644 --- a/docker-compose.cpu.yml +++ b/docker-compose.cpu.yml @@ -6,18 +6,21 @@ services: working_dir: /app/Kokoro-82M command: > sh -c " + rm -f .git/index.lock; if [ -z \"$(ls -A .)\" ]; then - git clone https://huggingface.co/hexgrad/Kokoro-82M . && \ - git checkout 7e9ebc5be7f66a1843b585b63d19d55b5d58ce30; + git clone https://huggingface.co/hexgrad/Kokoro-82M touch .cloned; else + rm -f .git/index.lock && \ + git checkout main && \ + git pull origin main && \ touch .cloned; fi; tail -f /dev/null " healthcheck: test: ["CMD", "test", "-f", ".cloned"] - interval: 1s + interval: 3s timeout: 1s retries: 120 start_period: 1s diff --git a/docker-compose.yml b/docker-compose.yml index 60af4f3..565d158 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,18 +6,21 @@ services: working_dir: /app/Kokoro-82M command: > sh -c " + rm -f .git/index.lock; if [ -z \"$(ls -A .)\" ]; then - git clone https://huggingface.co/hexgrad/Kokoro-82M . && \ - git checkout 7e9ebc5be7f66a1843b585b63d19d55b5d58ce30; + git clone https://huggingface.co/hexgrad/Kokoro-82M touch .cloned; else + rm -f .git/index.lock && \ + git checkout main && \ + git pull origin main && \ touch .cloned; fi; tail -f /dev/null " healthcheck: test: ["CMD", "test", "-f", ".cloned"] - interval: 1s + interval: 3s timeout: 1s retries: 120 start_period: 1s @@ -42,3 +45,15 @@ services: depends_on: model-fetcher: condition: service_healthy + + # # Gradio UI service + # gradio-ui: + # build: + # context: ./ui + # ports: + # - "7860:7860" + # volumes: + # - ./ui/data:/app/ui/data + # - ./ui/app.py:/app/app.py # Mount app.py for hot reload + # environment: + # - GRADIO_WATCH=True # Enable hot reloading From e749b3bc88d2fd5253ef4558ca0861157b1ae742 Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 21:50:00 -0700 Subject: [PATCH 03/11] Add Gradio web interface + tests --- .coveragerc | 4 +- CHANGELOG.md | 4 + README.md | 131 +++++++++++++++------- docker-compose.yml | 22 ++-- pytest.ini | 4 +- ui/GradioScreenShot.png | Bin 0 -> 115763 bytes ui/lib/api.py | 11 +- ui/lib/components/__init__.py | 2 +- ui/lib/components/input.py | 24 +++- ui/lib/components/model.py | 14 +-- ui/lib/components/output.py | 5 +- ui/lib/files.py | 24 ++++ ui/lib/handlers.py | 201 ++++++++++++++++++++++++++-------- ui/lib/interface.py | 56 ++++++++-- ui/tests/conftest.py | 9 ++ ui/tests/test_api.py | 129 ++++++++++++++++++++++ ui/tests/test_components.py | 116 ++++++++++++++++++++ ui/tests/test_files.py | 195 +++++++++++++++++++++++++++++++++ ui/tests/test_handlers.py | 4 + ui/tests/test_input.py | 74 +++++++++++++ ui/tests/test_interface.py | 139 +++++++++++++++++++++++ 21 files changed, 1048 insertions(+), 120 deletions(-) create mode 100644 ui/GradioScreenShot.png create mode 100644 ui/tests/conftest.py create mode 100644 ui/tests/test_api.py create mode 100644 ui/tests/test_components.py create mode 100644 ui/tests/test_files.py create mode 100644 ui/tests/test_handlers.py create mode 100644 ui/tests/test_input.py create mode 100644 ui/tests/test_interface.py diff --git a/.coveragerc b/.coveragerc index 4072f19..dab8655 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,5 +1,7 @@ [run] -source = api +source = + api + ui omit = Kokoro-82M/* MagicMock/* diff --git a/CHANGELOG.md b/CHANGELOG.md index 36715cd..44c98bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ Notable changes to this project will be documented in this file. ## 2024-01-09 +### Added +- Gradio Web Interface: + - Added simple web UI utility for audio generation from input or txt file + ### Modified #### Configuration Changes - Updated Docker configurations: diff --git a/README.md b/README.md index a626cc0..392ab68 100644 --- a/README.md +++ b/README.md @@ -3,42 +3,55 @@

# Kokoro TTS API -[![Tests](https://img.shields.io/badge/tests-37%20passed-darkgreen)]() -[![Coverage](https://img.shields.io/badge/coverage-81%25-darkgreen)]() +[![Tests](https://img.shields.io/badge/tests-81%20passed-darkgreen)]() +[![Coverage](https://img.shields.io/badge/coverage-76%25-darkgreen)]() [![Tested at Model Commit](https://img.shields.io/badge/last--tested--model--commit-a67f113-blue)](https://huggingface.co/hexgrad/Kokoro-82M/tree/c3b0d86e2a980e027ef71c28819ea02e351c2667) -FastAPI wrapper for [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model, providing an OpenAI-compatible endpoint with: +Dockerized FastAPI wrapper for [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model +- OpenAI-compatible Speech endpoint, with voice combination functionality - NVIDIA GPU accelerated inference (or CPU) option +- very fast generation time (~35x real time factor) - automatic chunking/stitching for long texts -- very fast generation time (~35-49x RTF) +- simple audio generation web ui utility -## Quick Start +
+OpenAI-Compatible Speech Endpoint + +The service can be accessed through either the API endpoints or the Gradio web interface. 1. Install prerequisites: - - Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) - - Install [Git](https://git-scm.com/downloads) (or download and extract zip) + - Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) + [Git](https://git-scm.com/downloads) + - Clone and start the service: + ```bash + git clone https://github.com/remsky/Kokoro-FastAPI.git + cd Kokoro-FastAPI + docker compose up --build + ``` +2. Run locally as an OpenAI-Compatible Speech Endpoint + ```python + from openai import OpenAI + client = OpenAI( + base_url="http://localhost:8880", + api_key="not-needed" + ) -2. Clone and start the service: -```bash -# Clone repository -git clone https://github.com/remsky/Kokoro-FastAPI.git -cd Kokoro-FastAPI + response = client.audio.speech.create( + model="kokoro", + voice="af_bella", + input="Hello world!", + response_format="mp3" + ) + response.stream_to_file("output.mp3") + ``` -# For GPU acceleration (requires NVIDIA GPU): -docker compose up --build + or visit http://localhost:7860 +

+ Voice Analysis Comparison +

+
+
+OpenAI-Compatible Speech Endpoint -# For CPU-only deployment (~10x slower, but doesn't require an NVIDIA GPU): -docker compose -f docker-compose.cpu.yml up --build -``` -Quick tests (run from another terminal): -```bash -# Test OpenAI Compatibility -python examples/test_openai_tts.py -# Test all available voices -python examples/test_all_voices.py -``` - -## OpenAI-Compatible API ```python # Using OpenAI's Python library from openai import OpenAI @@ -77,16 +90,26 @@ with open("output.mp3", "wb") as f: f.write(response.content) ``` -## Voice Combination +Quick tests (run from another terminal): +```bash +python examples/test_openai_tts.py # Test OpenAI Compatibility +python examples/test_all_voices.py # Test all available voices +``` +
+ +
+Voice Combination Combine voices and generate audio: ```python import requests +response = requests.get("http://localhost:8880/v1/audio/voices") +voices = response.json()["voices"] -# Create combined voice (saved locally on server) +# Create combined voice (saves locally on server) response = requests.post( "http://localhost:8880/v1/audio/voices/combine", - json=["af_bella", "af_sarah"] + json=[voices[0], voices[1]] ) combined_voice = response.json()["voice"] @@ -100,8 +123,27 @@ response = requests.post( } ) ``` +

+ Voice Analysis Comparison +

+
-## Performance Benchmarks +
+Gradio Web Utility + +Access the interactive web UI at http://localhost:7860 after starting the service. Features include: +- Voice/format/speed selection +- Audio playback and download +- Text file or direct input + +If you only want the API, just comment out everything in the docker-compose.yml under and including `gradio-ui` + +Currently, voices created via the API are accessible here, but voice combination/creation has not yet been added +
+ + +
+Performance Benchmarks Benchmarking was performed on generation via the local API using text lengths up to feature-length books (~1.5 hours output), measuring processing time and realtime factor. Tests were run on: - Windows 11 Home w/ WSL2 @@ -119,10 +161,22 @@ Benchmarking was performed on generation via the local API using text lengths up Key Performance Metrics: - Realtime Factor: Ranges between 35-49x (generation time to output audio length) - Average Processing Rate: 137.67 tokens/second (cl100k_base) +
+
+GPU Vs. CPU -## Features +```bash +# GPU: Requires NVIDIA GPU with CUDA 12.1 support +docker compose up --build -- OpenAI-compatible API endpoints +# CPU: ~10x slower than GPU inference +docker compose -f docker-compose.cpu.yml up --build +``` +
+
+Features + +- OpenAI-compatible API endpoints (with optional Gradio Web UI) - GPU-accelerated inference (if desired) - Multiple audio formats: mp3, wav, opus, flac, (aac & pcm not implemented) - Natural Boundary Detection: @@ -131,19 +185,21 @@ Key Performance Metrics: - Averages model weights of any existing voicepacks - Saves generated voicepacks for future use -

- Voice Analysis Comparison -

+ *Note: CPU Inference is currently a very basic implementation, and not heavily tested* +
-## Model +
+Model This API uses the [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) model from HuggingFace. Visit the model page for more details about training, architecture, and capabilities. I have no affiliation with any of their work, and produced this wrapper for ease of use and personal projects. +
-## License +
+License This project is licensed under the Apache License 2.0 - see below for details: @@ -152,3 +208,4 @@ This project is licensed under the Apache License 2.0 - see below for details: - The inference code adapted from StyleTTS2 is MIT licensed The full Apache 2.0 license text can be found at: https://www.apache.org/licenses/LICENSE-2.0 +
diff --git a/docker-compose.yml b/docker-compose.yml index 565d158..2722208 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,14 +46,14 @@ services: model-fetcher: condition: service_healthy - # # Gradio UI service - # gradio-ui: - # build: - # context: ./ui - # ports: - # - "7860:7860" - # volumes: - # - ./ui/data:/app/ui/data - # - ./ui/app.py:/app/app.py # Mount app.py for hot reload - # environment: - # - GRADIO_WATCH=True # Enable hot reloading + # Gradio UI service [Comment out everything below if you don't need it] + gradio-ui: + build: + context: ./ui + ports: + - "7860:7860" + volumes: + - ./ui/data:/app/ui/data + - ./ui/app.py:/app/app.py # Mount app.py for hot reload + environment: + - GRADIO_WATCH=True # Enable hot reloading diff --git a/pytest.ini b/pytest.ini index 3bcd461..47be4b5 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,5 @@ [pytest] -testpaths = api/tests +testpaths = api/tests ui/tests python_files = test_*.py -addopts = -v --tb=short --cov=api --cov-report=term-missing --cov-config=.coveragerc +addopts = -v --tb=short --cov=api --cov=ui --cov-report=term-missing --cov-config=.coveragerc pythonpath = . diff --git a/ui/GradioScreenShot.png b/ui/GradioScreenShot.png new file mode 100644 index 0000000000000000000000000000000000000000..77af6b39b545310bc72d129f3d01b273de700725 GIT binary patch literal 115763 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°B3;lk7L@_x+$mh~P3n34banN744nrTK8~7~x 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 I-*t-kA0dL+hyVZp literal 0 HcmV?d00001 diff --git a/ui/lib/api.py b/ui/lib/api.py index 20e8b1d..a9c6a19 100644 --- a/ui/lib/api.py +++ b/ui/lib/api.py @@ -7,7 +7,11 @@ from .config import API_URL, OUTPUTS_DIR def check_api_status() -> Tuple[bool, List[str]]: """Check TTS service status and get available voices.""" try: - response = requests.get(f"{API_URL}/v1/audio/voices", timeout=5) + # Use a longer timeout during startup + response = requests.get( + f"{API_URL}/v1/audio/voices", + timeout=30 # Increased timeout for initial startup period + ) response.raise_for_status() voices = response.json().get("voices", []) if voices: @@ -15,7 +19,10 @@ def check_api_status() -> Tuple[bool, List[str]]: print("No voices found in response") return False, [] except requests.exceptions.Timeout: - print("API request timed out") + print("API request timed out (waiting for service startup)") + return False, [] + except requests.exceptions.ConnectionError as e: + print(f"Connection error (service may be starting up): {str(e)}") return False, [] except requests.exceptions.RequestException as e: print(f"API request failed: {str(e)}") diff --git a/ui/lib/components/__init__.py b/ui/lib/components/__init__.py index 637ee14..0d66be3 100644 --- a/ui/lib/components/__init__.py +++ b/ui/lib/components/__init__.py @@ -2,4 +2,4 @@ from .input import create_input_column from .model import create_model_column from .output import create_output_column -__all__ = ['create_input_column', 'create_model_column', 'create_output_column'] +__all__ = ["create_input_column", "create_model_column", "create_output_column"] diff --git a/ui/lib/components/input.py b/ui/lib/components/input.py index a80ecc9..2644060 100644 --- a/ui/lib/components/input.py +++ b/ui/lib/components/input.py @@ -6,6 +6,8 @@ def create_input_column() -> Tuple[gr.Column, dict]: """Create the input column with text input and file handling.""" with gr.Column(scale=1) as col: with gr.Tabs() as tabs: + # Set first tab as selected by default + tabs.selected = 0 # Direct Input Tab with gr.TabItem("Direct Input"): text_input = gr.Textbox( @@ -13,6 +15,11 @@ def create_input_column() -> Tuple[gr.Column, dict]: placeholder="Enter text here...", lines=4 ) + text_submit = gr.Button( + "Generate Speech", + variant="primary", + size="lg" + ) # File Input Tab with gr.TabItem("From File"): @@ -34,13 +41,28 @@ def create_input_column() -> Tuple[gr.Column, dict]: interactive=False, lines=4 ) + + with gr.Row(): + file_submit = gr.Button( + "Generate Speech", + variant="primary", + size="lg" + ) + clear_files = gr.Button( + "Clear Files", + variant="secondary", + size="lg" + ) components = { "tabs": tabs, "text_input": text_input, "file_select": input_files_list, "file_upload": file_upload, - "file_preview": file_preview + "file_preview": file_preview, + "text_submit": text_submit, + "file_submit": file_submit, + "clear_files": clear_files } return col, components diff --git a/ui/lib/components/model.py b/ui/lib/components/model.py index 41bcbfc..3b7ae96 100644 --- a/ui/lib/components/model.py +++ b/ui/lib/components/model.py @@ -10,10 +10,9 @@ def create_model_column(voice_ids: Optional[list] = None) -> Tuple[gr.Column, di with gr.Column(scale=1) as col: gr.Markdown("### Model Settings") - # Status button with embedded status - is_available, _ = api.check_api_status() + # Status button starts in waiting state status_btn = gr.Button( - f"Checking TTS Service: {'Available' if is_available else 'Not Yet Available'}", + "⌛ TTS Service: Waiting for Service...", variant="secondary" ) @@ -35,19 +34,12 @@ def create_model_column(voice_ids: Optional[list] = None) -> Tuple[gr.Column, di step=0.1, label="Speed" ) - - submit_btn = gr.Button( - "Generate Speech", - variant="primary", - size="lg" - ) components = { "status_btn": status_btn, "voice": voice_input, "format": format_input, - "speed": speed_input, - "submit": submit_btn + "speed": speed_input } return col, components diff --git a/ui/lib/components/output.py b/ui/lib/components/output.py index ff951fd..8ef4640 100644 --- a/ui/lib/components/output.py +++ b/ui/lib/components/output.py @@ -26,12 +26,15 @@ def create_output_column() -> Tuple[gr.Column, dict]: type="filepath", visible=False ) + + clear_outputs = gr.Button("⚠️ Delete All Previously Generated Output Audio 🗑️", size="sm", variant="secondary") components = { "audio_output": audio_output, "output_files": output_files, "play_btn": play_btn, - "selected_audio": selected_audio + "selected_audio": selected_audio, + "clear_outputs": clear_outputs } return col, components diff --git a/ui/lib/files.py b/ui/lib/files.py index 66d44ce..98867f3 100644 --- a/ui/lib/files.py +++ b/ui/lib/files.py @@ -56,6 +56,30 @@ def save_text(text: str, filename: Optional[str] = None) -> Optional[str]: print(f"Error saving file: {e}") return None +def delete_all_input_files() -> bool: + """Delete all files from the inputs directory. Returns True if successful.""" + try: + for filename in os.listdir(INPUTS_DIR): + if filename.endswith('.txt'): + file_path = os.path.join(INPUTS_DIR, filename) + os.remove(file_path) + return True + except Exception as e: + print(f"Error deleting input files: {e}") + return False + +def delete_all_output_files() -> bool: + """Delete all audio files from the outputs directory. Returns True if successful.""" + try: + for filename in os.listdir(OUTPUTS_DIR): + if any(filename.endswith(ext) for ext in AUDIO_FORMATS): + file_path = os.path.join(OUTPUTS_DIR, filename) + os.remove(file_path) + return True + except Exception as e: + print(f"Error deleting output files: {e}") + return False + def process_uploaded_file(file_path: str) -> bool: """Save uploaded file to inputs directory. Returns True if successful.""" if not file_path: diff --git a/ui/lib/handlers.py b/ui/lib/handlers.py index bcc15d7..94c9574 100644 --- a/ui/lib/handlers.py +++ b/ui/lib/handlers.py @@ -7,19 +7,40 @@ def setup_event_handlers(components: dict): """Set up all event handlers for the UI components.""" def refresh_status(): - is_available, voices = api.check_api_status() - status = "Available" if is_available else "Unavailable" - btn_text = f"🔄 TTS Service: {status}" - - if is_available and voices: - return { - components["model"]["status_btn"]: gr.update(value=btn_text), - components["model"]["voice"]: gr.update(choices=voices, value=voices[0] if voices else None) - } - return { - components["model"]["status_btn"]: gr.update(value=btn_text), - components["model"]["voice"]: gr.update(choices=[], value=None) - } + try: + is_available, voices = api.check_api_status() + status = "Available" if is_available else "Waiting for Service..." + + if is_available and voices: + # Preserve current voice selection if it exists and is still valid + current_voice = components["model"]["voice"].value + default_voice = current_voice if current_voice in voices else voices[0] + return [ + gr.update( + value=f"🔄 TTS Service: {status}", + interactive=True, + variant="secondary" + ), + gr.update(choices=voices, value=default_voice) + ] + return [ + gr.update( + value=f"⌛ TTS Service: {status}", + interactive=True, + variant="secondary" + ), + gr.update(choices=[], value=None) + ] + except Exception as e: + print(f"Error in refresh status: {str(e)}") + return [ + gr.update( + value="❌ TTS Service: Connection Error", + interactive=True, + variant="secondary" + ), + gr.update(choices=[], value=None) + ] def handle_file_select(filename): if filename: @@ -56,45 +77,95 @@ def setup_event_handlers(components: dict): return gr.update(choices=files.list_input_files()) - def generate_speech(text, selected_file, voice, format, speed): + def generate_from_text(text, voice, format, speed): + """Generate speech from direct text input""" is_available, _ = api.check_api_status() if not is_available: gr.Warning("TTS Service is currently unavailable") - return { - components["output"]["audio_output"]: None, - components["output"]["output_files"]: gr.update(choices=files.list_output_files()) - } - - # Use text input if provided, otherwise use file content - if text and text.strip(): - files.save_text(text) - final_text = text - elif selected_file: - final_text = files.read_text_file(selected_file) - else: - gr.Warning("Please enter text or select a file") - return { - components["output"]["audio_output"]: None, - components["output"]["output_files"]: gr.update(choices=files.list_output_files()) - } - - result = api.text_to_speech(final_text, voice, format, speed) + return [ + None, + gr.update(choices=files.list_output_files()) + ] + + if not text or not text.strip(): + gr.Warning("Please enter text in the input box") + return [ + None, + gr.update(choices=files.list_output_files()) + ] + + files.save_text(text) + result = api.text_to_speech(text, voice, format, speed) if result is None: gr.Warning("Failed to generate speech. Please try again.") - return { - components["output"]["audio_output"]: None, - components["output"]["output_files"]: gr.update(choices=files.list_output_files()) - } + return [ + None, + gr.update(choices=files.list_output_files()) + ] - return { - components["output"]["audio_output"]: result, - components["output"]["output_files"]: gr.update(choices=files.list_output_files(), value=os.path.basename(result)) - } + return [ + result, + gr.update(choices=files.list_output_files(), value=os.path.basename(result)) + ] + + def generate_from_file(selected_file, voice, format, speed): + """Generate speech from selected file""" + is_available, _ = api.check_api_status() + if not is_available: + gr.Warning("TTS Service is currently unavailable") + return [ + None, + gr.update(choices=files.list_output_files()) + ] + + if not selected_file: + gr.Warning("Please select a file") + return [ + None, + gr.update(choices=files.list_output_files()) + ] + + text = files.read_text_file(selected_file) + result = api.text_to_speech(text, voice, format, speed) + if result is None: + gr.Warning("Failed to generate speech. Please try again.") + return [ + None, + gr.update(choices=files.list_output_files()) + ] + + return [ + result, + gr.update(choices=files.list_output_files(), value=os.path.basename(result)) + ] def play_selected(file_path): if file_path and os.path.exists(file_path): return gr.update(value=file_path, visible=True) return gr.update(visible=False) + + def clear_files(voice, format, speed): + """Delete all input files and clear UI components while preserving model settings""" + files.delete_all_input_files() + return [ + gr.update(value=None, choices=[]), # file_select + None, # file_upload + gr.update(value=""), # file_preview + None, # audio_output + gr.update(choices=files.list_output_files()), # output_files + gr.update(value=voice), # voice + gr.update(value=format), # format + gr.update(value=speed) # speed + ] + + def clear_outputs(): + """Delete all output audio files and clear audio components""" + files.delete_all_output_files() + return [ + None, # audio_output + gr.update(choices=[], value=None), # output_files + gr.update(visible=False) # selected_audio + ] # Connect event handlers components["model"]["status_btn"].click( @@ -123,10 +194,54 @@ def setup_event_handlers(components: dict): outputs=[components["output"]["selected_audio"]] ) - components["model"]["submit"].click( - fn=generate_speech, + # Connect clear files button + components["input"]["clear_files"].click( + fn=clear_files, + inputs=[ + components["model"]["voice"], + components["model"]["format"], + components["model"]["speed"] + ], + outputs=[ + components["input"]["file_select"], + components["input"]["file_upload"], + components["input"]["file_preview"], + components["output"]["audio_output"], + components["output"]["output_files"], + components["model"]["voice"], + components["model"]["format"], + components["model"]["speed"] + ] + ) + + # Connect submit buttons for each tab + components["input"]["text_submit"].click( + fn=generate_from_text, inputs=[ components["input"]["text_input"], + components["model"]["voice"], + components["model"]["format"], + components["model"]["speed"] + ], + outputs=[ + components["output"]["audio_output"], + components["output"]["output_files"] + ] + ) + + # Connect clear outputs button + components["output"]["clear_outputs"].click( + fn=clear_outputs, + outputs=[ + components["output"]["audio_output"], + components["output"]["output_files"], + components["output"]["selected_audio"] + ] + ) + + components["input"]["file_submit"].click( + fn=generate_from_file, + inputs=[ components["input"]["file_select"], components["model"]["voice"], components["model"]["format"], diff --git a/ui/lib/interface.py b/ui/lib/interface.py index cfdada4..5361217 100644 --- a/ui/lib/interface.py +++ b/ui/lib/interface.py @@ -5,8 +5,8 @@ from .handlers import setup_event_handlers def create_interface(): """Create the main Gradio interface.""" - # Initial status check - is_available, available_voices = api.check_api_status() + # Skip initial status check - let the timer handle it + is_available, available_voices = False, [] with gr.Blocks( title="Kokoro TTS Demo", @@ -36,19 +36,55 @@ def create_interface(): # Add periodic status check with Timer def update_status(): - is_available, voices = api.check_api_status() - status = "Available" if is_available else "Unavailable" - return { - components["model"]["status_btn"]: gr.update(value=f"🔄 TTS Service: {status}"), - components["model"]["voice"]: gr.update(choices=voices, value=voices[0] if voices else None) - } + try: + is_available, voices = api.check_api_status() + status = "Available" if is_available else "Waiting for Service..." + + if is_available and voices: + # Service is available, update UI and stop timer + current_voice = components["model"]["voice"].value + default_voice = current_voice if current_voice in voices else voices[0] + # Return values in same order as outputs list + return [ + gr.update( + value=f"🔄 TTS Service: {status}", + interactive=True, + variant="secondary" + ), + gr.update(choices=voices, value=default_voice), + gr.update(active=False) # Stop timer + ] + + # Service not available yet, keep checking + return [ + gr.update( + value=f"⌛ TTS Service: {status}", + interactive=True, + variant="secondary" + ), + gr.update(choices=[], value=None), + gr.update(active=True) + ] + except Exception as e: + print(f"Error in status update: {str(e)}") + # On error, keep the timer running but show error state + return [ + gr.update( + value="❌ TTS Service: Connection Error", + interactive=True, + variant="secondary" + ), + gr.update(choices=[], value=None), + gr.update(active=True) + ] - timer = gr.Timer(10, active=True) # Check every 10 seconds + timer = gr.Timer(value=5) # Check every 5 seconds timer.tick( fn=update_status, outputs=[ components["model"]["status_btn"], - components["model"]["voice"] + components["model"]["voice"], + timer ] ) diff --git a/ui/tests/conftest.py b/ui/tests/conftest.py new file mode 100644 index 0000000..05ae58d --- /dev/null +++ b/ui/tests/conftest.py @@ -0,0 +1,9 @@ +import pytest +import gradio as gr + + +@pytest.fixture +def mock_gr_context(): + """Provides a context for testing Gradio components""" + with gr.Blocks(): + yield diff --git a/ui/tests/test_api.py b/ui/tests/test_api.py new file mode 100644 index 0000000..c9b37db --- /dev/null +++ b/ui/tests/test_api.py @@ -0,0 +1,129 @@ +import pytest +import requests +from unittest.mock import patch, mock_open +from ui.lib import api + + +@pytest.fixture +def mock_response(): + class MockResponse: + def __init__(self, json_data, status_code=200, content=b"audio data"): + self._json = json_data + self.status_code = status_code + self.content = content + + def json(self): + return self._json + + def raise_for_status(self): + if self.status_code != 200: + raise requests.exceptions.HTTPError(f"HTTP {self.status_code}") + + return MockResponse + + +def test_check_api_status_success(mock_response): + """Test successful API status check""" + mock_data = {"voices": ["voice1", "voice2"]} + with patch("requests.get", return_value=mock_response(mock_data)): + status, voices = api.check_api_status() + assert status is True + assert voices == ["voice1", "voice2"] + + +def test_check_api_status_no_voices(mock_response): + """Test API response with no voices""" + with patch("requests.get", return_value=mock_response({"voices": []})): + status, voices = api.check_api_status() + assert status is False + assert voices == [] + + +def test_check_api_status_timeout(): + """Test API timeout""" + with patch("requests.get", side_effect=requests.exceptions.Timeout): + status, voices = api.check_api_status() + assert status is False + assert voices == [] + + +def test_check_api_status_connection_error(): + """Test API connection error""" + with patch("requests.get", side_effect=requests.exceptions.ConnectionError): + status, voices = api.check_api_status() + assert status is False + assert voices == [] + + +def test_text_to_speech_success(mock_response, tmp_path): + """Test successful speech generation""" + with patch("requests.post", return_value=mock_response({})), \ + patch("ui.lib.api.OUTPUTS_DIR", str(tmp_path)), \ + patch("builtins.open", mock_open()) as mock_file: + + result = api.text_to_speech("test text", "voice1", "mp3", 1.0) + + assert result is not None + assert "output_" in result + assert result.endswith(".mp3") + mock_file.assert_called_once() + + +def test_text_to_speech_empty_text(): + """Test speech generation with empty text""" + result = api.text_to_speech("", "voice1", "mp3", 1.0) + assert result is None + + +def test_text_to_speech_timeout(): + """Test speech generation timeout""" + with patch("requests.post", side_effect=requests.exceptions.Timeout): + result = api.text_to_speech("test", "voice1", "mp3", 1.0) + assert result is None + + +def test_text_to_speech_request_error(): + """Test speech generation request error""" + with patch("requests.post", side_effect=requests.exceptions.RequestException): + result = api.text_to_speech("test", "voice1", "mp3", 1.0) + assert result is None + + +def test_get_status_html_available(): + """Test status HTML generation for available service""" + html = api.get_status_html(True) + assert "green" in html + assert "Available" in html + + +def test_get_status_html_unavailable(): + """Test status HTML generation for unavailable service""" + html = api.get_status_html(False) + assert "red" in html + assert "Unavailable" in html + + +def test_text_to_speech_api_params(mock_response, tmp_path): + """Test correct API parameters are sent""" + with patch("requests.post") as mock_post, \ + patch("ui.lib.api.OUTPUTS_DIR", str(tmp_path)), \ + patch("builtins.open", mock_open()): + + mock_post.return_value = mock_response({}) + api.text_to_speech("test text", "voice1", "mp3", 1.5) + + mock_post.assert_called_once() + args, kwargs = mock_post.call_args + + # Check request body + assert kwargs["json"] == { + "model": "kokoro", + "input": "test text", + "voice": "voice1", + "response_format": "mp3", + "speed": 1.5 + } + + # Check headers and timeout + assert kwargs["headers"] == {"Content-Type": "application/json"} + assert kwargs["timeout"] == 300 diff --git a/ui/tests/test_components.py b/ui/tests/test_components.py new file mode 100644 index 0000000..9ddb1ad --- /dev/null +++ b/ui/tests/test_components.py @@ -0,0 +1,116 @@ +import pytest +import gradio as gr +from ui.lib.components.model import create_model_column +from ui.lib.components.output import create_output_column +from ui.lib.config import AUDIO_FORMATS + + +def test_create_model_column_structure(): + """Test that create_model_column returns the expected structure""" + voice_ids = ["voice1", "voice2"] + column, components = create_model_column(voice_ids) + + # Test return types + assert isinstance(column, gr.Column) + assert isinstance(components, dict) + + # Test expected components presence + expected_components = { + "status_btn", + "voice", + "format", + "speed" + } + assert set(components.keys()) == expected_components + + # Test component types + assert isinstance(components["status_btn"], gr.Button) + assert isinstance(components["voice"], gr.Dropdown) + assert isinstance(components["format"], gr.Dropdown) + assert isinstance(components["speed"], gr.Slider) + + +def test_model_column_default_values(): + """Test the default values of model column components""" + voice_ids = ["voice1", "voice2"] + _, components = create_model_column(voice_ids) + + # Test voice dropdown + # Gradio Dropdown converts choices to (value, label) tuples + expected_choices = [(voice_id, voice_id) for voice_id in voice_ids] + assert components["voice"].choices == expected_choices + # Value is not converted to tuple format for the value property + assert components["voice"].value == voice_ids[0] + assert components["voice"].interactive is True + + # Test format dropdown + # Gradio Dropdown converts choices to (value, label) tuples + expected_format_choices = [(fmt, fmt) for fmt in AUDIO_FORMATS] + assert components["format"].choices == expected_format_choices + assert components["format"].value == "mp3" + + # Test speed slider + assert components["speed"].minimum == 0.5 + assert components["speed"].maximum == 2.0 + assert components["speed"].value == 1.0 + assert components["speed"].step == 0.1 + + +def test_model_column_no_voices(): + """Test model column creation with no voice IDs""" + _, components = create_model_column() + + assert components["voice"].choices == [] + assert components["voice"].value is None + + +def test_create_output_column_structure(): + """Test that create_output_column returns the expected structure""" + column, components = create_output_column() + + # Test return types + assert isinstance(column, gr.Column) + assert isinstance(components, dict) + + # Test expected components presence + expected_components = { + "audio_output", + "output_files", + "play_btn", + "selected_audio", + "clear_outputs" + } + assert set(components.keys()) == expected_components + + # Test component types + assert isinstance(components["audio_output"], gr.Audio) + assert isinstance(components["output_files"], gr.Dropdown) + assert isinstance(components["play_btn"], gr.Button) + assert isinstance(components["selected_audio"], gr.Audio) + assert isinstance(components["clear_outputs"], gr.Button) + + +def test_output_column_configuration(): + """Test the configuration of output column components""" + _, components = create_output_column() + + # Test audio output configuration + assert components["audio_output"].label == "Generated Speech" + assert components["audio_output"].type == "filepath" + + # Test output files dropdown + assert components["output_files"].label == "Previous Outputs" + assert components["output_files"].allow_custom_value is False + + # Test play button + assert components["play_btn"].value == "▶️ Play Selected" + assert components["play_btn"].size == "sm" + + # Test selected audio configuration + assert components["selected_audio"].label == "Selected Output" + assert components["selected_audio"].type == "filepath" + assert components["selected_audio"].visible is False + + # Test clear outputs button + assert components["clear_outputs"].size == "sm" + assert components["clear_outputs"].variant == "secondary" diff --git a/ui/tests/test_files.py b/ui/tests/test_files.py new file mode 100644 index 0000000..aaa0fe8 --- /dev/null +++ b/ui/tests/test_files.py @@ -0,0 +1,195 @@ +import os +import pytest +from unittest.mock import patch +from ui.lib import files +from ui.lib.config import AUDIO_FORMATS + + +@pytest.fixture +def mock_dirs(tmp_path): + """Create temporary input and output directories""" + inputs_dir = tmp_path / "inputs" + outputs_dir = tmp_path / "outputs" + inputs_dir.mkdir() + outputs_dir.mkdir() + + with patch("ui.lib.files.INPUTS_DIR", str(inputs_dir)), patch( + "ui.lib.files.OUTPUTS_DIR", str(outputs_dir) + ): + yield inputs_dir, outputs_dir + + +def test_list_input_files_empty(mock_dirs): + """Test listing input files from empty directory""" + assert files.list_input_files() == [] + + +def test_list_input_files(mock_dirs): + """Test listing input files with various files""" + inputs_dir, _ = mock_dirs + + # Create test files + (inputs_dir / "test1.txt").write_text("content1") + (inputs_dir / "test2.txt").write_text("content2") + (inputs_dir / "nottext.pdf").write_text("should not be listed") + + result = files.list_input_files() + assert len(result) == 2 + assert "test1.txt" in result + assert "test2.txt" in result + assert "nottext.pdf" not in result + + +def test_list_output_files_empty(mock_dirs): + """Test listing output files from empty directory""" + assert files.list_output_files() == [] + + +def test_list_output_files(mock_dirs): + """Test listing output files with various formats""" + _, outputs_dir = mock_dirs + + # Create test files for each format + for fmt in AUDIO_FORMATS: + (outputs_dir / f"test.{fmt}").write_text("dummy content") + (outputs_dir / "test.txt").write_text("should not be listed") + + result = files.list_output_files() + assert len(result) == len(AUDIO_FORMATS) + for fmt in AUDIO_FORMATS: + assert any(f".{fmt}" in file for file in result) + + +def test_read_text_file_empty_filename(mock_dirs): + """Test reading with empty filename""" + assert files.read_text_file("") == "" + + +def test_read_text_file_nonexistent(mock_dirs): + """Test reading nonexistent file""" + assert files.read_text_file("nonexistent.txt") == "" + + +def test_read_text_file_success(mock_dirs): + """Test successful file reading""" + inputs_dir, _ = mock_dirs + content = "Test content\nMultiple lines" + (inputs_dir / "test.txt").write_text(content) + + assert files.read_text_file("test.txt") == content + + +def test_save_text_empty(mock_dirs): + """Test saving empty text""" + assert files.save_text("") is None + assert files.save_text(" ") is None + + +def test_save_text_auto_filename(mock_dirs): + """Test saving text with auto-generated filename""" + inputs_dir, _ = mock_dirs + + # First save + filename1 = files.save_text("content1") + assert filename1 == "input_1.txt" + assert (inputs_dir / filename1).read_text() == "content1" + + # Second save + filename2 = files.save_text("content2") + assert filename2 == "input_2.txt" + assert (inputs_dir / filename2).read_text() == "content2" + + +def test_save_text_custom_filename(mock_dirs): + """Test saving text with custom filename""" + inputs_dir, _ = mock_dirs + + filename = files.save_text("content", "custom.txt") + assert filename == "custom.txt" + assert (inputs_dir / filename).read_text() == "content" + + +def test_save_text_duplicate_filename(mock_dirs): + """Test saving text with duplicate filename""" + inputs_dir, _ = mock_dirs + + # First save + filename1 = files.save_text("content1", "test.txt") + assert filename1 == "test.txt" + + # Save with same filename + filename2 = files.save_text("content2", "test.txt") + assert filename2 == "test_1.txt" + + assert (inputs_dir / "test.txt").read_text() == "content1" + assert (inputs_dir / "test_1.txt").read_text() == "content2" + + +def test_delete_all_input_files(mock_dirs): + """Test deleting all input files""" + inputs_dir, _ = mock_dirs + + # Create test files + (inputs_dir / "test1.txt").write_text("content1") + (inputs_dir / "test2.txt").write_text("content2") + (inputs_dir / "keep.pdf").write_text("should not be deleted") + + assert files.delete_all_input_files() is True + remaining_files = list(inputs_dir.iterdir()) + assert len(remaining_files) == 1 + assert remaining_files[0].name == "keep.pdf" + + +def test_delete_all_output_files(mock_dirs): + """Test deleting all output files""" + _, outputs_dir = mock_dirs + + # Create test files + for fmt in AUDIO_FORMATS: + (outputs_dir / f"test.{fmt}").write_text("dummy content") + (outputs_dir / "keep.txt").write_text("should not be deleted") + + assert files.delete_all_output_files() is True + remaining_files = list(outputs_dir.iterdir()) + assert len(remaining_files) == 1 + assert remaining_files[0].name == "keep.txt" + + +def test_process_uploaded_file_empty_path(mock_dirs): + """Test processing empty file path""" + assert files.process_uploaded_file("") is False + + +def test_process_uploaded_file_invalid_extension(mock_dirs, tmp_path): + """Test processing file with invalid extension""" + test_file = tmp_path / "test.pdf" + test_file.write_text("content") + assert files.process_uploaded_file(str(test_file)) is False + + +def test_process_uploaded_file_success(mock_dirs, tmp_path): + """Test successful file upload processing""" + inputs_dir, _ = mock_dirs + + # Create source file + source_file = tmp_path / "test.txt" + source_file.write_text("test content") + + assert files.process_uploaded_file(str(source_file)) is True + assert (inputs_dir / "test.txt").read_text() == "test content" + + +def test_process_uploaded_file_duplicate(mock_dirs, tmp_path): + """Test processing file with duplicate name""" + inputs_dir, _ = mock_dirs + + # Create existing file + (inputs_dir / "test.txt").write_text("existing content") + + # Create source file + source_file = tmp_path / "test.txt" + source_file.write_text("new content") + + assert files.process_uploaded_file(str(source_file)) is True + assert (inputs_dir / "test.txt").read_text() == "existing content" + assert (inputs_dir / "test_1.txt").read_text() == "new content" diff --git a/ui/tests/test_handlers.py b/ui/tests/test_handlers.py new file mode 100644 index 0000000..86a71b0 --- /dev/null +++ b/ui/tests/test_handlers.py @@ -0,0 +1,4 @@ +""" +Drop all tests for now. The Gradio event system is too complex to test properly. +We'll need to find a better way to test the UI functionality. +""" diff --git a/ui/tests/test_input.py b/ui/tests/test_input.py new file mode 100644 index 0000000..807a483 --- /dev/null +++ b/ui/tests/test_input.py @@ -0,0 +1,74 @@ +import pytest +import gradio as gr +from ui.lib.components.input import create_input_column + + +def test_create_input_column_structure(): + """Test that create_input_column returns the expected structure""" + column, components = create_input_column() + + # Test the return types + assert isinstance(column, gr.Column) + assert isinstance(components, dict) + + # Test that all expected components are present + expected_components = { + "tabs", + "text_input", + "file_select", + "file_upload", + "file_preview", + "text_submit", + "file_submit", + "clear_files", + } + assert set(components.keys()) == expected_components + + # Test component types + assert isinstance(components["tabs"], gr.Tabs) + assert isinstance(components["text_input"], gr.Textbox) + assert isinstance(components["file_select"], gr.Dropdown) + assert isinstance(components["file_upload"], gr.File) + assert isinstance(components["file_preview"], gr.Textbox) + assert isinstance(components["text_submit"], gr.Button) + assert isinstance(components["file_submit"], gr.Button) + assert isinstance(components["clear_files"], gr.Button) + + +def test_text_input_configuration(): + """Test the text input component configuration""" + _, components = create_input_column() + text_input = components["text_input"] + + assert text_input.label == "Text to speak" + assert text_input.placeholder == "Enter text here..." + assert text_input.lines == 4 + + +def test_file_upload_configuration(): + """Test the file upload component configuration""" + _, components = create_input_column() + file_upload = components["file_upload"] + + assert file_upload.label == "Upload Text File (.txt)" + assert file_upload.file_types == [".txt"] + + +def test_button_configurations(): + """Test the button configurations""" + _, components = create_input_column() + + # Test text submit button + assert components["text_submit"].value == "Generate Speech" + assert components["text_submit"].variant == "primary" + assert components["text_submit"].size == "lg" + + # Test file submit button + assert components["file_submit"].value == "Generate Speech" + assert components["file_submit"].variant == "primary" + assert components["file_submit"].size == "lg" + + # Test clear files button + assert components["clear_files"].value == "Clear Files" + assert components["clear_files"].variant == "secondary" + assert components["clear_files"].size == "lg" diff --git a/ui/tests/test_interface.py b/ui/tests/test_interface.py new file mode 100644 index 0000000..550591f --- /dev/null +++ b/ui/tests/test_interface.py @@ -0,0 +1,139 @@ +import pytest +import gradio as gr +from unittest.mock import patch, MagicMock, PropertyMock +from ui.lib.interface import create_interface + + +@pytest.fixture +def mock_timer(): + """Create a mock timer with events property""" + class MockEvent: + def __init__(self, fn): + self.fn = fn + + class MockTimer: + def __init__(self): + self._fn = None + self.value = 5 + + @property + def events(self): + return [MockEvent(self._fn)] if self._fn else [] + + def tick(self, fn, outputs): + self._fn = fn + + return MockTimer() + + +def test_create_interface_structure(): + """Test the basic structure of the created interface""" + with patch("ui.lib.api.check_api_status", return_value=(False, [])): + demo = create_interface() + + # Test interface type and theme + assert isinstance(demo, gr.Blocks) + assert demo.title == "Kokoro TTS Demo" + assert isinstance(demo.theme, gr.themes.Monochrome) + + +def test_interface_html_links(): + """Test that HTML links are properly configured""" + with patch("ui.lib.api.check_api_status", return_value=(False, [])): + demo = create_interface() + + # Find HTML component + html_components = [ + comp for comp in demo.blocks.values() + if isinstance(comp, gr.HTML) + ] + assert len(html_components) > 0 + html = html_components[0] + + # Check for required links + assert 'href="https://huggingface.co/hexgrad/Kokoro-82M"' in html.value + assert 'href="https://github.com/remsky/Kokoro-FastAPI"' in html.value + assert "Kokoro-82M HF Repo" in html.value + assert "Kokoro-FastAPI Repo" in html.value + + +def test_update_status_available(mock_timer): + """Test status update when service is available""" + voices = ["voice1", "voice2"] + with patch("ui.lib.api.check_api_status", return_value=(True, voices)), \ + patch("gradio.Timer", return_value=mock_timer): + demo = create_interface() + + # Get the update function + update_fn = mock_timer.events[0].fn + + # Test update with available service + updates = update_fn() + + assert "Available" in updates[0]["value"] + assert updates[1]["choices"] == voices + assert updates[1]["value"] == voices[0] + assert updates[2]["active"] is False # Timer should stop + + +def test_update_status_unavailable(mock_timer): + """Test status update when service is unavailable""" + with patch("ui.lib.api.check_api_status", return_value=(False, [])), \ + patch("gradio.Timer", return_value=mock_timer): + demo = create_interface() + update_fn = mock_timer.events[0].fn + + updates = update_fn() + + assert "Waiting for Service" in updates[0]["value"] + assert updates[1]["choices"] == [] + assert updates[1]["value"] is None + assert updates[2]["active"] is True # Timer should continue + + +def test_update_status_error(mock_timer): + """Test status update when an error occurs""" + with patch("ui.lib.api.check_api_status", side_effect=Exception("Test error")), \ + patch("gradio.Timer", return_value=mock_timer): + demo = create_interface() + update_fn = mock_timer.events[0].fn + + updates = update_fn() + + assert "Connection Error" in updates[0]["value"] + assert updates[1]["choices"] == [] + assert updates[1]["value"] is None + assert updates[2]["active"] is True # Timer should continue + + +def test_timer_configuration(mock_timer): + """Test timer configuration""" + with patch("ui.lib.api.check_api_status", return_value=(False, [])), \ + patch("gradio.Timer", return_value=mock_timer): + demo = create_interface() + + assert mock_timer.value == 5 # Check interval is 5 seconds + assert len(mock_timer.events) == 1 # Should have one event handler + + +def test_interface_components_presence(): + """Test that all required components are present""" + with patch("ui.lib.api.check_api_status", return_value=(False, [])): + demo = create_interface() + + # Check for main component sections + components = { + comp.label for comp in demo.blocks.values() + if hasattr(comp, 'label') and comp.label + } + + required_components = { + "Text to speak", + "Voice", + "Audio Format", + "Speed", + "Generated Speech", + "Previous Outputs" + } + + assert required_components.issubset(components) From f05198480587e01bd42c6ecc53486fc79472a60a Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 21:50:41 -0700 Subject: [PATCH 04/11] Ruff Check + Format --- .coverage | Bin 53248 -> 53248 bytes api/src/routers/openai_compatible.py | 39 ++-- api/src/services/tts.py | 101 +++++++---- api/src/structures/schemas.py | 4 +- api/tests/conftest.py | 5 +- api/tests/test_audio_service.py | 2 + api/tests/test_endpoints.py | 16 +- api/tests/test_main.py | 53 +++--- api/tests/test_tts_service.py | 206 ++++++++++++++-------- examples/test_all_voices.py | 1 - examples/test_analyze_combined_voices.py | 215 ++++++++++++++--------- examples/test_openai_tts.py | 2 +- requirements-test.txt | 2 + ui/app.py | 6 +- ui/lib/api.py | 27 +-- ui/lib/components/input.py | 46 ++--- ui/lib/components/model.py | 32 ++-- ui/lib/components/output.py | 36 ++-- ui/lib/files.py | 43 +++-- ui/lib/handlers.py | 130 ++++++-------- ui/lib/interface.py | 60 ++++--- ui/tests/conftest.py | 2 +- ui/tests/test_api.py | 28 +-- ui/tests/test_components.py | 14 +- ui/tests/test_files.py | 4 +- ui/tests/test_input.py | 3 +- ui/tests/test_interface.py | 65 ++++--- 27 files changed, 638 insertions(+), 504 deletions(-) diff --git a/.coverage b/.coverage index b5254a6d1f43affe4b7053999aee6b3e6237c4f4..2133e27b389ef3109b8f1cb40cf474076dc247d4 100644 GIT binary patch delta 1517 zcmZuxZD?Cn7{0gXChh$?Z$564TemJ*3v;%bp_{E+>$;AXZZ2(66tQbsVwSo~+axrJ zB|@8)stB`IcU^~0v(|wi^J7x*&lC%Tl?}w%>cpY$hq8kH7-M5&tXSWZ4~cYeInQ~Y z_v@bbx%Z6ElJQw`M%YtdDIVkCJiG?2AkeRAnm(@HR6kdf>Lbc;im5!MsPa$p`|{JW zEd3xIky<6IctJciZ?_#3Ess?aZoqseu!W|Ko=`mQkEa`T!i_S@gVdn$V$b1F^w3~r zIDx(<58*P*=PLM&XfiU~9|}j%+2%HTJ8CxKDj82DF{0Haa1$!a z_pXl`iXDm!V$c&B;YLb(^c#Z_*1XkO%-*;@+lb~{v^&h$f!gZz0eyW&)JXRAVWFLN z!lg?)gk#Zu<0bUe+X$Cn9!H@-C~hF#2!)Yo1-hhIJH>{6b8FxMi;C~(!fe0!a6mT4 z0}8L0Q-LmC#<}=SxkDGE{L%cvP{@eR&vv}PTXqYWWrl(e+Oc*rlE8Vf*I_%erRyB3 zJHx>utygcUDb=t1PQOvVpsy(JDhJ?oXcK1?DqohLkrnApsZBm1Er}PUaw}8Ax^|M0 z(gsCYwPNmu^|?h=oo4i4-F?2S5*-}7NV>HAf127GNP;=oeA(xmm(*66gtNewR03?a z4F#>V(ES1m8Vc5-1t_R&QM-hR%{k_5z=!e%gWFJ8k09p{S67i34)^564R-TFvoOII zd;eeC`If$Oz8yN9LLktc>2)c3D)$l0m!|QquJf0l5-8pc% za-eBBa5{6~aLgY$nf8%Nm^8~5YHaW^>iPj3hodkBZ@?rL-49y{UcD;8%T^_LtE$A! U78hIa0#u2UEe>4F)89Y$FB~Go%K!iX delta 821 zcmZ`#T}TvB6rOGFjyf~Q2V7A0MU z?8Rb>q3t26B?AK~vITwcK}ARqtcL|3G7<{3AP_;S)&9=N3hP669`2m)eD{3k`v&9u zV4QzNY8;B>=im(tLoG|O38u4h`h|{CFFh)+$Rn~-`YBCH{)A$?APEf$;f8XJdoG6& z@Q4K=UofPGLP0g?>$$FV_$mXvH8x~e_ZSCv8UA)n$5sPmJSIk8Q=ye1awttU5umE7 z=~_rtk>5;>)h3TcHmcn9MB=&d9+3unI=tzjbt1Ma?WRu9yQ}8YI|JRC9ttML-B&F_ zBSDS4{R_2U>(sjUmNuN8c??14V1ZT8ue4PDAm3)M=`+?XpO;c_3+mW5ZIz}Z9Yd&< z$VGw?%(Yb%Wr*$%L2(ky04aGHl=Q;3^z)NOq{(iDMuGv%wV9PDXP9TkN3X|1jmp+~ zBA?~M$f?RskB|_p`j6$-77K9^G>q!`8S48iC!Fehi9=yq9Hd|q)?gXl!gGkjeYgo4 zT!Bka4X5B36tXS!yvQPD3bEw4lz~|P_Hp<6_f*%P-%B$y>pFh^4b9n_ujI6t* ZXt*5`BTsru5E(bJW=&)WjPZAu{{aQx6O;e| diff --git a/api/src/routers/openai_compatible.py b/api/src/routers/openai_compatible.py index 983fdc1..4183d39 100644 --- a/api/src/routers/openai_compatible.py +++ b/api/src/routers/openai_compatible.py @@ -1,10 +1,10 @@ from typing import List -from fastapi import APIRouter, Depends, HTTPException, Response from loguru import logger +from fastapi import Depends, Response, APIRouter, HTTPException -from ..services.audio import AudioService from ..services.tts import TTSService +from ..services.audio import AudioService from ..structures.schemas import OpenAISpeechRequest router = APIRouter( @@ -32,7 +32,7 @@ async def create_speech( raise ValueError( f"Voice '{request.voice}' not found. Available voices: {', '.join(sorted(available_voices))}" ) - + # Generate audio directly using TTSService's method audio, _ = tts_service._generate_audio( text=request.input, @@ -55,14 +55,12 @@ async def create_speech( except ValueError as e: logger.error(f"Invalid request: {str(e)}") raise HTTPException( - status_code=400, - detail={"error": "Invalid request", "message": str(e)} + status_code=400, detail={"error": "Invalid request", "message": str(e)} ) except Exception as e: logger.error(f"Error generating speech: {str(e)}") raise HTTPException( - status_code=500, - detail={"error": "Server error", "message": str(e)} + status_code=500, detail={"error": "Server error", "message": str(e)} ) @@ -78,17 +76,19 @@ async def list_voices(tts_service: TTSService = Depends(get_tts_service)): @router.post("/audio/voices/combine") -async def combine_voices(request: List[str], tts_service: TTSService = Depends(get_tts_service)): +async def combine_voices( + request: List[str], tts_service: TTSService = Depends(get_tts_service) +): """Combine multiple voices into a new voice. - + Args: request: List of voice names to combine - + Returns: Dict with combined voice name and list of all available voices - + Raises: - HTTPException: + HTTPException: - 400: Invalid request (wrong number of voices, voice not found) - 500: Server error (file system issues, combination failed) """ @@ -96,24 +96,21 @@ async def combine_voices(request: List[str], tts_service: TTSService = Depends(g combined_voice = tts_service.combine_voices(voices=request) voices = tts_service.list_voices() return {"voices": voices, "voice": combined_voice} - + except ValueError as e: logger.error(f"Invalid voice combination request: {str(e)}") raise HTTPException( - status_code=400, - detail={"error": "Invalid request", "message": str(e)} + status_code=400, detail={"error": "Invalid request", "message": str(e)} ) - + except RuntimeError as e: logger.error(f"Server error during voice combination: {str(e)}") raise HTTPException( - status_code=500, - detail={"error": "Server error", "message": str(e)} + status_code=500, detail={"error": "Server error", "message": str(e)} ) - + except Exception as e: logger.error(f"Unexpected error during voice combination: {str(e)}") raise HTTPException( - status_code=500, - detail={"error": "Unexpected error", "message": str(e)} + status_code=500, detail={"error": "Unexpected error", "message": str(e)} ) diff --git a/api/src/services/tts.py b/api/src/services/tts.py index de76836..c1abd9f 100644 --- a/api/src/services/tts.py +++ b/api/src/services/tts.py @@ -1,17 +1,16 @@ import io import os import re -import threading import time +import threading from typing import List, Tuple, Optional import numpy as np -import scipy.io.wavfile as wavfile -import tiktoken import torch +import tiktoken +import scipy.io.wavfile as wavfile +from kokoro import generate, tokenize, phonemize, normalize_text from loguru import logger - -from kokoro import generate, normalize_text, phonemize, tokenize from models import build_model from ..core.config import settings @@ -23,7 +22,7 @@ class TTSModel: _instance = None _device = None _lock = threading.Lock() - + # Directory for all voices (copied base voices, and any created combined voices) VOICES_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "voices") @@ -38,10 +37,10 @@ class TTSModel: model_path = os.path.join(settings.model_dir, settings.model_path) model = build_model(model_path, cls._device) cls._instance = model - + # Ensure voices directory exists os.makedirs(cls.VOICES_DIR, exist_ok=True) - + # Copy base voices to local directory base_voices_dir = os.path.join(settings.model_dir, settings.voices_dir) if os.path.exists(base_voices_dir): @@ -51,25 +50,37 @@ class TTSModel: voice_path = os.path.join(cls.VOICES_DIR, file) if not os.path.exists(voice_path): try: - logger.info(f"Copying base voice {voice_name} to voices directory") + logger.info( + f"Copying base voice {voice_name} to voices directory" + ) base_path = os.path.join(base_voices_dir, file) - voicepack = torch.load(base_path, map_location=cls._device, weights_only=True) + voicepack = torch.load( + base_path, + map_location=cls._device, + weights_only=True, + ) torch.save(voicepack, voice_path) except Exception as e: - logger.error(f"Error copying voice {voice_name}: {str(e)}") - + logger.error( + f"Error copying voice {voice_name}: {str(e)}" + ) + # Warm up with default voice try: dummy_text = "Hello" voice_path = os.path.join(cls.VOICES_DIR, "af.pt") - dummy_voicepack = torch.load(voice_path, map_location=cls._device, weights_only=True) - generate(model, dummy_text, dummy_voicepack, lang='a', speed=1.0) + dummy_voicepack = torch.load( + voice_path, map_location=cls._device, weights_only=True + ) + generate(model, dummy_text, dummy_voicepack, lang="a", speed=1.0) logger.info("Model warm-up complete") except Exception as e: logger.warning(f"Model warm-up failed: {e}") - + # Count voices in directory for validation - voice_count = len([f for f in os.listdir(cls.VOICES_DIR) if f.endswith('.pt')]) + voice_count = len( + [f for f in os.listdir(cls.VOICES_DIR) if f.endswith(".pt")] + ) return cls._instance, voice_count @classmethod @@ -86,11 +97,11 @@ class TTSService: self._ensure_voices() if start_worker: self.start_worker() - + def _ensure_voices(self): """Copy base voices to local voices directory during initialization""" os.makedirs(TTSModel.VOICES_DIR, exist_ok=True) - + base_voices_dir = os.path.join(settings.model_dir, settings.voices_dir) if os.path.exists(base_voices_dir): for file in os.listdir(base_voices_dir): @@ -99,9 +110,15 @@ class TTSService: voice_path = os.path.join(TTSModel.VOICES_DIR, file) if not os.path.exists(voice_path): try: - logger.info(f"Copying base voice {voice_name} to voices directory") + logger.info( + f"Copying base voice {voice_name} to voices directory" + ) base_path = os.path.join(base_voices_dir, file) - voicepack = torch.load(base_path, map_location=TTSModel._device, weights_only=True) + voicepack = torch.load( + base_path, + map_location=TTSModel._device, + weights_only=True, + ) torch.save(voicepack, voice_path) except Exception as e: logger.error(f"Error copying voice {voice_name}: {str(e)}") @@ -112,10 +129,10 @@ class TTSService: def _get_voice_path(self, voice_name: str) -> Optional[str]: """Get the path to a voice file. - + Args: voice_name: Name of the voice to find - + Returns: Path to the voice file if found, None otherwise """ @@ -141,7 +158,9 @@ class TTSService: # Load model and voice model = TTSModel._instance - voicepack = torch.load(voice_path, map_location=TTSModel._device, weights_only=True) + voicepack = torch.load( + voice_path, map_location=TTSModel._device, weights_only=True + ) # Generate audio with or without stitching if stitch_long_output: @@ -152,11 +171,11 @@ class TTSService: for i, chunk in enumerate(chunks): try: # Validate phonemization first - ps = phonemize(chunk, voice[0]) - tokens = tokenize(ps) - logger.debug( - f"Processing chunk {i + 1}/{len(chunks)}: {len(tokens)} tokens" - ) + # ps = phonemize(chunk, voice[0]) + # tokens = tokenize(ps) + # logger.debug( + # f"Processing chunk {i + 1}/{len(chunks)}: {len(tokens)} tokens" + # ) # Only proceed if phonemization succeeded chunk_audio, _ = generate( @@ -205,47 +224,51 @@ class TTSService: def combine_voices(self, voices: List[str]) -> str: """Combine multiple voices into a new voice. - + Args: voices: List of voice names to combine - + Returns: Name of the combined voice - + Raises: ValueError: If less than 2 voices provided or voice loading fails RuntimeError: If voice combination or saving fails """ if len(voices) < 2: raise ValueError("At least 2 voices are required for combination") - + # Load voices t_voices: List[torch.Tensor] = [] v_name: List[str] = [] - + for voice in voices: try: voice_path = os.path.join(TTSModel.VOICES_DIR, f"{voice}.pt") - voicepack = torch.load(voice_path, map_location=TTSModel._device, weights_only=True) + voicepack = torch.load( + voice_path, map_location=TTSModel._device, weights_only=True + ) t_voices.append(voicepack) v_name.append(voice) except Exception as e: raise ValueError(f"Failed to load voice {voice}: {str(e)}") - + # Combine voices try: f: str = "_".join(v_name) v = torch.mean(torch.stack(t_voices), dim=0) combined_path = os.path.join(TTSModel.VOICES_DIR, f"{f}.pt") - + # Save combined voice try: torch.save(v, combined_path) except Exception as e: - raise RuntimeError(f"Failed to save combined voice to {combined_path}: {str(e)}") - + raise RuntimeError( + f"Failed to save combined voice to {combined_path}: {str(e)}" + ) + return f - + except Exception as e: if not isinstance(e, (ValueError, RuntimeError)): raise RuntimeError(f"Error combining voices: {str(e)}") diff --git a/api/src/structures/schemas.py b/api/src/structures/schemas.py index 8ef36e4..bc778bb 100644 --- a/api/src/structures/schemas.py +++ b/api/src/structures/schemas.py @@ -17,8 +17,8 @@ class OpenAISpeechRequest(BaseModel): model: Literal["tts-1", "tts-1-hd", "kokoro"] = "kokoro" input: str = Field(..., description="The text to generate audio for") voice: str = Field( - default="af", - description="The voice to use for generation. Can be a base voice or a combined voice name." + default="af", + description="The voice to use for generation. Can be a base voice or a combined voice name.", ) response_format: Literal["mp3", "opus", "aac", "flac", "wav", "pcm"] = Field( default="mp3", diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 5972003..c41172f 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -1,16 +1,18 @@ import os -import shutil import sys +import shutil from unittest.mock import Mock, patch import pytest + def cleanup_mock_dirs(): """Clean up any MagicMock directories created during tests""" mock_dir = "MagicMock" if os.path.exists(mock_dir): shutil.rmtree(mock_dir) + @pytest.fixture(autouse=True) def cleanup(): """Automatically clean up before and after each test""" @@ -18,6 +20,7 @@ def cleanup(): yield cleanup_mock_dirs() + # Mock torch and other ML modules before they're imported sys.modules["torch"] = Mock() sys.modules["transformers"] = Mock() diff --git a/api/tests/test_audio_service.py b/api/tests/test_audio_service.py index 0e1d1bc..ac0780e 100644 --- a/api/tests/test_audio_service.py +++ b/api/tests/test_audio_service.py @@ -1,6 +1,8 @@ """Tests for AudioService""" + import numpy as np import pytest + from api.src.services.audio import AudioService diff --git a/api/tests/test_endpoints.py b/api/tests/test_endpoints.py index 7c11008..80fe733 100644 --- a/api/tests/test_endpoints.py +++ b/api/tests/test_endpoints.py @@ -114,9 +114,9 @@ def test_combine_voices_success(mock_tts_service): """Test successful voice combination""" test_voices = ["af_bella", "af_sarah"] mock_tts_service.combine_voices.return_value = "af_bella_af_sarah" - + response = client.post("/v1/audio/voices/combine", json=test_voices) - + assert response.status_code == 200 assert response.json()["voice"] == "af_bella_af_sarah" mock_tts_service.combine_voices.assert_called_once_with(voices=test_voices) @@ -126,9 +126,9 @@ def test_combine_voices_single_voice(mock_tts_service): """Test combining single voice returns default voice""" test_voices = ["af_bella"] mock_tts_service.combine_voices.return_value = "af" - + response = client.post("/v1/audio/voices/combine", json=test_voices) - + assert response.status_code == 200 assert response.json()["voice"] == "af" @@ -137,9 +137,9 @@ def test_combine_voices_empty_list(mock_tts_service): """Test combining empty voice list returns default voice""" test_voices = [] mock_tts_service.combine_voices.return_value = "af" - + response = client.post("/v1/audio/voices/combine", json=test_voices) - + assert response.status_code == 200 assert response.json()["voice"] == "af" @@ -148,8 +148,8 @@ def test_combine_voices_error(mock_tts_service): """Test error handling in voice combination""" test_voices = ["af_bella", "af_sarah"] mock_tts_service.combine_voices.side_effect = Exception("Combination failed") - + response = client.post("/v1/audio/voices/combine", json=test_voices) - + assert response.status_code == 500 assert "Combination failed" in response.json()["detail"]["message"] diff --git a/api/tests/test_main.py b/api/tests/test_main.py index 4eedc64..5b23749 100644 --- a/api/tests/test_main.py +++ b/api/tests/test_main.py @@ -1,7 +1,10 @@ """Tests for FastAPI application""" + +from unittest.mock import MagicMock, patch + import pytest -from unittest.mock import patch, MagicMock from fastapi.testclient import TestClient + from api.src.main import app, lifespan @@ -19,98 +22,100 @@ def test_health_check(test_client): @pytest.mark.asyncio -@patch('api.src.main.TTSModel') -@patch('api.src.main.logger') +@patch("api.src.main.TTSModel") +@patch("api.src.main.logger") async def test_lifespan_successful_warmup(mock_logger, mock_tts_model): """Test successful model warmup in lifespan""" # Mock the model initialization with model info and voicepack count mock_model = MagicMock() # Mock file system for voice counting mock_tts_model.VOICES_DIR = "/mock/voices" - with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt', 'voice3.pt']): + with patch("os.listdir", return_value=["voice1.pt", "voice2.pt", "voice3.pt"]): mock_tts_model.initialize.return_value = (mock_model, 3) # 3 voice files mock_tts_model._device = "cuda" # Set device class variable - + # Create an async generator from the lifespan context manager async_gen = lifespan(MagicMock()) # Start the context manager await async_gen.__aenter__() - + # Verify the expected logging sequence mock_logger.info.assert_any_call("Loading TTS model and voice packs...") mock_logger.info.assert_any_call("Model loaded and warmed up on cuda") mock_logger.info.assert_any_call("3 voice packs loaded successfully") - + # Verify model initialization was called mock_tts_model.initialize.assert_called_once() - + # Clean up await async_gen.__aexit__(None, None, None) @pytest.mark.asyncio -@patch('api.src.main.TTSModel') -@patch('api.src.main.logger') +@patch("api.src.main.TTSModel") +@patch("api.src.main.logger") async def test_lifespan_failed_warmup(mock_logger, mock_tts_model): """Test failed model warmup in lifespan""" # Mock the model initialization to fail mock_tts_model.initialize.side_effect = Exception("Failed to initialize model") - + # Create an async generator from the lifespan context manager async_gen = lifespan(MagicMock()) - + # Verify the exception is raised with pytest.raises(Exception, match="Failed to initialize model"): await async_gen.__aenter__() - + # Verify the expected logging sequence mock_logger.info.assert_called_with("Loading TTS model and voice packs...") - + # Clean up await async_gen.__aexit__(None, None, None) @pytest.mark.asyncio -@patch('api.src.main.TTSModel') +@patch("api.src.main.TTSModel") async def test_lifespan_cuda_warmup(mock_tts_model): """Test model warmup specifically on CUDA""" # Mock the model initialization with CUDA and voicepacks mock_model = MagicMock() # Mock file system for voice counting mock_tts_model.VOICES_DIR = "/mock/voices" - with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt']): + with patch("os.listdir", return_value=["voice1.pt", "voice2.pt"]): mock_tts_model.initialize.return_value = (mock_model, 2) # 2 voice files mock_tts_model._device = "cuda" # Set device class variable - + # Create an async generator from the lifespan context manager async_gen = lifespan(MagicMock()) await async_gen.__aenter__() - + # Verify model was initialized mock_tts_model.initialize.assert_called_once() - + # Clean up await async_gen.__aexit__(None, None, None) @pytest.mark.asyncio -@patch('api.src.main.TTSModel') +@patch("api.src.main.TTSModel") async def test_lifespan_cpu_fallback(mock_tts_model): """Test model warmup falling back to CPU""" # Mock the model initialization with CPU and voicepacks mock_model = MagicMock() # Mock file system for voice counting mock_tts_model.VOICES_DIR = "/mock/voices" - with patch('os.listdir', return_value=['voice1.pt', 'voice2.pt', 'voice3.pt', 'voice4.pt']): + with patch( + "os.listdir", return_value=["voice1.pt", "voice2.pt", "voice3.pt", "voice4.pt"] + ): mock_tts_model.initialize.return_value = (mock_model, 4) # 4 voice files mock_tts_model._device = "cpu" # Set device class variable - + # Create an async generator from the lifespan context manager async_gen = lifespan(MagicMock()) await async_gen.__aenter__() - + # Verify model was initialized mock_tts_model.initialize.assert_called_once() - + # Clean up await async_gen.__aexit__(None, None, None) diff --git a/api/tests/test_tts_service.py b/api/tests/test_tts_service.py index a0273ad..8616c5f 100644 --- a/api/tests/test_tts_service.py +++ b/api/tests/test_tts_service.py @@ -1,9 +1,12 @@ """Tests for TTSService""" + import os +from unittest.mock import MagicMock, call, patch + import numpy as np import pytest -from unittest.mock import patch, MagicMock, call -from api.src.services.tts import TTSService, TTSModel + +from api.src.services.tts import TTSModel, TTSService @pytest.fixture @@ -50,42 +53,59 @@ def test_audio_to_bytes(tts_service, sample_audio): assert len(audio_bytes) > 0 -@patch('os.listdir') -@patch('os.path.join') +@patch("os.listdir") +@patch("os.path.join") def test_list_voices(mock_join, mock_listdir, tts_service): """Test listing available voices""" - mock_listdir.return_value = ['voice1.pt', 'voice2.pt', 'not_a_voice.txt'] - mock_join.return_value = '/fake/path' - + mock_listdir.return_value = ["voice1.pt", "voice2.pt", "not_a_voice.txt"] + mock_join.return_value = "/fake/path" + voices = tts_service.list_voices() assert len(voices) == 2 - assert 'voice1' in voices - assert 'voice2' in voices - assert 'not_a_voice' not in voices + assert "voice1" in voices + assert "voice2" in voices + assert "not_a_voice" not in voices -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('api.src.services.tts.TTSModel.get_voicepack') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.phonemize') -@patch('api.src.services.tts.tokenize') -@patch('api.src.services.tts.generate') -def test_generate_audio_empty_text(mock_generate, mock_tokenize, mock_phonemize, mock_normalize, mock_voicepack, mock_instance, tts_service): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("api.src.services.tts.TTSModel.get_voicepack") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.phonemize") +@patch("api.src.services.tts.tokenize") +@patch("api.src.services.tts.generate") +def test_generate_audio_empty_text( + mock_generate, + mock_tokenize, + mock_phonemize, + mock_normalize, + mock_voicepack, + mock_instance, + tts_service, +): """Test generating audio with empty text""" mock_normalize.return_value = "" - + with pytest.raises(ValueError, match="Text is empty after preprocessing"): tts_service._generate_audio("", "af", 1.0) -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('os.path.exists') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.phonemize') -@patch('api.src.services.tts.tokenize') -@patch('api.src.services.tts.generate') -@patch('torch.load') -def test_generate_audio_no_chunks(mock_torch_load, mock_generate, mock_tokenize, mock_phonemize, mock_normalize, mock_exists, mock_instance, tts_service): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("os.path.exists") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.phonemize") +@patch("api.src.services.tts.tokenize") +@patch("api.src.services.tts.generate") +@patch("torch.load") +def test_generate_audio_no_chunks( + mock_torch_load, + mock_generate, + mock_tokenize, + mock_phonemize, + mock_normalize, + mock_exists, + mock_instance, + tts_service, +): """Test generating audio with no successful chunks""" mock_normalize.return_value = "Test text" mock_phonemize.return_value = "Test text" @@ -94,19 +114,29 @@ def test_generate_audio_no_chunks(mock_torch_load, mock_generate, mock_tokenize, mock_instance.return_value = (MagicMock(), "cpu") mock_exists.return_value = True mock_torch_load.return_value = MagicMock() - + with pytest.raises(ValueError, match="No audio chunks were generated successfully"): tts_service._generate_audio("Test text", "af", 1.0) -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('os.path.exists') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.phonemize') -@patch('api.src.services.tts.tokenize') -@patch('api.src.services.tts.generate') -@patch('torch.load') -def test_generate_audio_success(mock_torch_load, mock_generate, mock_tokenize, mock_phonemize, mock_normalize, mock_exists, mock_instance, tts_service, sample_audio): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("os.path.exists") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.phonemize") +@patch("api.src.services.tts.tokenize") +@patch("api.src.services.tts.generate") +@patch("torch.load") +def test_generate_audio_success( + mock_torch_load, + mock_generate, + mock_tokenize, + mock_phonemize, + mock_normalize, + mock_exists, + mock_instance, + tts_service, + sample_audio, +): """Test successful audio generation""" mock_normalize.return_value = "Test text" mock_phonemize.return_value = "Test text" @@ -115,15 +145,15 @@ def test_generate_audio_success(mock_torch_load, mock_generate, mock_tokenize, m mock_instance.return_value = (MagicMock(), "cpu") mock_exists.return_value = True mock_torch_load.return_value = MagicMock() - + audio, processing_time = tts_service._generate_audio("Test text", "af", 1.0) assert isinstance(audio, np.ndarray) assert isinstance(processing_time, float) assert len(audio) > 0 -@patch('api.src.services.tts.torch.cuda.is_available') -@patch('api.src.services.tts.build_model') +@patch("api.src.services.tts.torch.cuda.is_available") +@patch("api.src.services.tts.build_model") def test_model_initialization_cuda(mock_build_model, mock_cuda_available): """Test model initialization with CUDA""" mock_cuda_available.return_value = True @@ -132,14 +162,14 @@ def test_model_initialization_cuda(mock_build_model, mock_cuda_available): TTSModel._instance = None # Reset singleton model, voice_count = TTSModel.initialize() - + assert TTSModel._device == "cuda" # Check the class variable instead assert model == mock_model mock_build_model.assert_called_once() -@patch('api.src.services.tts.torch.cuda.is_available') -@patch('api.src.services.tts.build_model') +@patch("api.src.services.tts.torch.cuda.is_available") +@patch("api.src.services.tts.build_model") def test_model_initialization_cpu(mock_build_model, mock_cuda_available): """Test model initialization with CPU""" mock_cuda_available.return_value = False @@ -148,76 +178,95 @@ def test_model_initialization_cpu(mock_build_model, mock_cuda_available): TTSModel._instance = None # Reset singleton model, voice_count = TTSModel.initialize() - + assert TTSModel._device == "cpu" # Check the class variable instead assert model == mock_model mock_build_model.assert_called_once() -@patch('api.src.services.tts.TTSService._get_voice_path') -@patch('api.src.services.tts.TTSModel.get_instance') +@patch("api.src.services.tts.TTSService._get_voice_path") +@patch("api.src.services.tts.TTSModel.get_instance") def test_voicepack_loading_error(mock_get_instance, mock_get_voice_path): """Test voicepack loading error handling""" mock_get_voice_path.return_value = None mock_get_instance.return_value = (MagicMock(), "cpu") - + TTSModel._voicepacks = {} # Reset voicepacks - + service = TTSService(start_worker=False) with pytest.raises(ValueError, match="Voice not found: nonexistent_voice"): service._generate_audio("test", "nonexistent_voice", 1.0) -@patch('api.src.services.tts.TTSModel') +@patch("api.src.services.tts.TTSModel") def test_save_audio(mock_tts_model, tts_service, sample_audio, tmp_path): """Test saving audio to file""" output_dir = os.path.join(tmp_path, "test_output") os.makedirs(output_dir, exist_ok=True) output_path = os.path.join(output_dir, "audio.wav") - + tts_service._save_audio(sample_audio, output_path) - + assert os.path.exists(output_path) assert os.path.getsize(output_path) > 0 -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('os.path.exists') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.generate') -@patch('torch.load') -def test_generate_audio_without_stitching(mock_torch_load, mock_generate, mock_normalize, mock_exists, mock_instance, tts_service, sample_audio): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("os.path.exists") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.generate") +@patch("torch.load") +def test_generate_audio_without_stitching( + mock_torch_load, + mock_generate, + mock_normalize, + mock_exists, + mock_instance, + tts_service, + sample_audio, +): """Test generating audio without text stitching""" mock_normalize.return_value = "Test text" mock_generate.return_value = (sample_audio, None) mock_instance.return_value = (MagicMock(), "cpu") mock_exists.return_value = True mock_torch_load.return_value = MagicMock() - - audio, processing_time = tts_service._generate_audio("Test text", "af", 1.0, stitch_long_output=False) + + audio, processing_time = tts_service._generate_audio( + "Test text", "af", 1.0, stitch_long_output=False + ) assert isinstance(audio, np.ndarray) assert isinstance(processing_time, float) assert len(audio) > 0 mock_generate.assert_called_once() -@patch('os.listdir') +@patch("os.listdir") def test_list_voices_error(mock_listdir, tts_service): """Test error handling in list_voices""" mock_listdir.side_effect = Exception("Failed to list directory") - + voices = tts_service.list_voices() assert voices == [] -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('os.path.exists') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.phonemize') -@patch('api.src.services.tts.tokenize') -@patch('api.src.services.tts.generate') -@patch('torch.load') -def test_generate_audio_phonemize_error(mock_torch_load, mock_generate, mock_tokenize, mock_phonemize, mock_normalize, mock_exists, mock_instance, tts_service): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("os.path.exists") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.phonemize") +@patch("api.src.services.tts.tokenize") +@patch("api.src.services.tts.generate") +@patch("torch.load") +def test_generate_audio_phonemize_error( + mock_torch_load, + mock_generate, + mock_tokenize, + mock_phonemize, + mock_normalize, + mock_exists, + mock_instance, + tts_service, +): """Test handling phonemization error""" mock_normalize.return_value = "Test text" mock_phonemize.side_effect = Exception("Phonemization failed") @@ -225,23 +274,30 @@ def test_generate_audio_phonemize_error(mock_torch_load, mock_generate, mock_tok mock_exists.return_value = True mock_torch_load.return_value = MagicMock() mock_generate.return_value = (None, None) - + with pytest.raises(ValueError, match="No audio chunks were generated successfully"): tts_service._generate_audio("Test text", "af", 1.0) -@patch('api.src.services.tts.TTSModel.get_instance') -@patch('os.path.exists') -@patch('api.src.services.tts.normalize_text') -@patch('api.src.services.tts.generate') -@patch('torch.load') -def test_generate_audio_error(mock_torch_load, mock_generate, mock_normalize, mock_exists, mock_instance, tts_service): +@patch("api.src.services.tts.TTSModel.get_instance") +@patch("os.path.exists") +@patch("api.src.services.tts.normalize_text") +@patch("api.src.services.tts.generate") +@patch("torch.load") +def test_generate_audio_error( + mock_torch_load, + mock_generate, + mock_normalize, + mock_exists, + mock_instance, + tts_service, +): """Test handling generation error""" mock_normalize.return_value = "Test text" mock_generate.side_effect = Exception("Generation failed") mock_instance.return_value = (MagicMock(), "cpu") mock_exists.return_value = True mock_torch_load.return_value = MagicMock() - + with pytest.raises(ValueError, match="No audio chunks were generated successfully"): tts_service._generate_audio("Test text", "af", 1.0) diff --git a/examples/test_all_voices.py b/examples/test_all_voices.py index 5f9cf47..a143e83 100644 --- a/examples/test_all_voices.py +++ b/examples/test_all_voices.py @@ -19,7 +19,6 @@ output_dir = Path(__file__).parent / "output" output_dir.mkdir(exist_ok=True) - def test_voice(voice: str): speech_file = output_dir / f"speech_{voice}.mp3" print(f"\nTesting voice: {voice}") diff --git a/examples/test_analyze_combined_voices.py b/examples/test_analyze_combined_voices.py index f48be90..8db7865 100644 --- a/examples/test_analyze_combined_voices.py +++ b/examples/test_analyze_combined_voices.py @@ -1,21 +1,23 @@ #!/usr/bin/env python3 -import argparse import os -from typing import List, Optional, Dict, Tuple +import argparse +from typing import Dict, List, Tuple, Optional -import requests import numpy as np -from scipy.io import wavfile +import requests import matplotlib.pyplot as plt +from scipy.io import wavfile -def submit_combine_voices(voices: List[str], base_url: str = "http://localhost:8880") -> Optional[str]: +def submit_combine_voices( + voices: List[str], base_url: str = "http://localhost:8880" +) -> Optional[str]: """Combine multiple voices into a new voice. - + Args: voices: List of voice names to combine (e.g. ["af_bella", "af_sarah"]) base_url: API base URL - + Returns: Name of the combined voice (e.g. "af_bella_af_sarah") or None if error """ @@ -23,7 +25,7 @@ def submit_combine_voices(voices: List[str], base_url: str = "http://localhost:8 response = requests.post(f"{base_url}/v1/audio/voices/combine", json=voices) print(f"Response status: {response.status_code}") print(f"Raw response: {response.text}") - + # Accept both 200 and 201 as success if response.status_code not in [200, 201]: try: @@ -32,7 +34,7 @@ def submit_combine_voices(voices: List[str], base_url: str = "http://localhost:8 except: print(f"Error combining voices: {response.text}") return None - + try: data = response.json() if "voices" in data: @@ -46,15 +48,20 @@ def submit_combine_voices(voices: List[str], base_url: str = "http://localhost:8 return None -def generate_speech(text: str, voice: str, base_url: str = "http://localhost:8880", output_file: str = "output.mp3") -> bool: +def generate_speech( + text: str, + voice: str, + base_url: str = "http://localhost:8880", + output_file: str = "output.mp3", +) -> bool: """Generate speech using specified voice. - + Args: text: Text to convert to speech voice: Voice name to use base_url: API base URL output_file: Path to save audio file - + Returns: True if successful, False otherwise """ @@ -65,22 +72,25 @@ def generate_speech(text: str, voice: str, base_url: str = "http://localhost:888 "input": text, "voice": voice, "speed": 1.0, - "response_format": "wav" # Use WAV for analysis - } + "response_format": "wav", # Use WAV for analysis + }, ) - + if response.status_code != 200: error = response.json().get("detail", {}).get("message", response.text) print(f"Error generating speech: {error}") return False - + # Save the audio - os.makedirs(os.path.dirname(output_file) if os.path.dirname(output_file) else ".", exist_ok=True) + os.makedirs( + os.path.dirname(output_file) if os.path.dirname(output_file) else ".", + exist_ok=True, + ) with open(output_file, "wb") as f: f.write(response.content) print(f"Saved audio to {output_file}") return True - + except Exception as e: print(f"Error: {e}") return False @@ -88,57 +98,57 @@ def generate_speech(text: str, voice: str, base_url: str = "http://localhost:888 def analyze_audio(filepath: str) -> Tuple[np.ndarray, int, dict]: """Analyze audio file and return samples, sample rate, and audio characteristics. - + Args: filepath: Path to audio file - + Returns: Tuple of (samples, sample_rate, characteristics) """ sample_rate, samples = wavfile.read(filepath) - + # Convert to mono if stereo if len(samples.shape) > 1: samples = np.mean(samples, axis=1) - + # Calculate basic stats max_amp = np.max(np.abs(samples)) rms = np.sqrt(np.mean(samples**2)) duration = len(samples) / sample_rate - + # Zero crossing rate (helps identify voice characteristics) zero_crossings = np.sum(np.abs(np.diff(np.signbit(samples)))) / len(samples) - + # Simple frequency analysis if len(samples) > 0: # Use FFT to get frequency components fft_result = np.fft.fft(samples) - freqs = np.fft.fftfreq(len(samples), 1/sample_rate) - + freqs = np.fft.fftfreq(len(samples), 1 / sample_rate) + # Get positive frequencies only pos_mask = freqs > 0 freqs = freqs[pos_mask] magnitudes = np.abs(fft_result)[pos_mask] - + # Find dominant frequencies (top 3) top_indices = np.argsort(magnitudes)[-3:] dominant_freqs = freqs[top_indices] - + # Calculate spectral centroid (brightness of sound) spectral_centroid = np.sum(freqs * magnitudes) / np.sum(magnitudes) else: dominant_freqs = [] spectral_centroid = 0 - + characteristics = { "max_amplitude": max_amp, "rms": rms, "duration": duration, "zero_crossing_rate": zero_crossings, "dominant_frequencies": dominant_freqs, - "spectral_centroid": spectral_centroid + "spectral_centroid": spectral_centroid, } - + return samples, sample_rate, characteristics @@ -167,112 +177,136 @@ def setup_plot(fig, ax, title): return fig, ax + def plot_analysis(audio_files: Dict[str, str], output_dir: str): """Plot comprehensive voice analysis including waveforms and metrics comparison. - + Args: audio_files: Dictionary of label -> filepath output_dir: Directory to save plot files """ # Set dark style - plt.style.use('dark_background') - + plt.style.use("dark_background") + # Create figure with subplots fig = plt.figure(figsize=(15, 15)) fig.patch.set_facecolor("#1a1a2e") num_files = len(audio_files) - + # Create subplot grid with proper spacing - gs = plt.GridSpec(num_files + 1, 2, height_ratios=[1.5]*num_files + [1], - hspace=0.4, wspace=0.3) - + gs = plt.GridSpec( + num_files + 1, 2, height_ratios=[1.5] * num_files + [1], hspace=0.4, wspace=0.3 + ) + # Analyze all files first all_chars = {} for i, (label, filepath) in enumerate(audio_files.items()): samples, sample_rate, chars = analyze_audio(filepath) all_chars[label] = chars - + # Plot waveform spanning both columns ax = plt.subplot(gs[i, :]) time = np.arange(len(samples)) / sample_rate - plt.plot(time, samples / chars['max_amplitude'], linewidth=0.5, color="#ff2a6d") + plt.plot(time, samples / chars["max_amplitude"], linewidth=0.5, color="#ff2a6d") ax.set_xlabel("Time (seconds)") ax.set_ylabel("Normalized Amplitude") ax.set_ylim(-1.1, 1.1) setup_plot(fig, ax, f"Waveform: {label}") - + # Colors for voices colors = ["#ff2a6d", "#05d9e8", "#d1f7ff"] - + # Create two subplots for metrics with similar scales # Left subplot: Brightness and Volume ax1 = plt.subplot(gs[num_files, 0]) metrics1 = [ - ('Brightness', [chars['spectral_centroid']/1000 for chars in all_chars.values()], 'kHz'), - ('Volume', [chars['rms']*100 for chars in all_chars.values()], 'RMS×100') + ( + "Brightness", + [chars["spectral_centroid"] / 1000 for chars in all_chars.values()], + "kHz", + ), + ("Volume", [chars["rms"] * 100 for chars in all_chars.values()], "RMS×100"), ] - + # Right subplot: Voice Pitch and Texture ax2 = plt.subplot(gs[num_files, 1]) metrics2 = [ - ('Voice Pitch', [min(chars['dominant_frequencies']) for chars in all_chars.values()], 'Hz'), - ('Texture', [chars['zero_crossing_rate']*1000 for chars in all_chars.values()], 'ZCR×1000') + ( + "Voice Pitch", + [min(chars["dominant_frequencies"]) for chars in all_chars.values()], + "Hz", + ), + ( + "Texture", + [chars["zero_crossing_rate"] * 1000 for chars in all_chars.values()], + "ZCR×1000", + ), ] - + def plot_grouped_bars(ax, metrics, show_legend=True): n_groups = len(metrics) n_voices = len(audio_files) bar_width = 0.25 - + indices = np.arange(n_groups) - + # Get max value for y-axis scaling max_val = max(max(m[1]) for m in metrics) - + for i, (voice, color) in enumerate(zip(audio_files.keys(), colors)): values = [m[1][i] for m in metrics] - offset = (i - n_voices/2 + 0.5) * bar_width - bars = ax.bar(indices + offset, values, bar_width, - label=voice, color=color, alpha=0.8) - + offset = (i - n_voices / 2 + 0.5) * bar_width + bars = ax.bar( + indices + offset, values, bar_width, label=voice, color=color, alpha=0.8 + ) + # Add value labels on top of bars for bar in bars: height = bar.get_height() - ax.text(bar.get_x() + bar.get_width()/2., height, - f'{height:.1f}', - ha='center', va='bottom', color='white', - fontsize=10) - + ax.text( + bar.get_x() + bar.get_width() / 2.0, + height, + f"{height:.1f}", + ha="center", + va="bottom", + color="white", + fontsize=10, + ) + ax.set_xticks(indices) ax.set_xticklabels([f"{m[0]}\n({m[2]})" for m in metrics]) - + # Set y-axis limits with some padding ax.set_ylim(0, max_val * 1.2) - + if show_legend: - ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left', - facecolor="#1a1a2e", edgecolor="#ffffff") - + ax.legend( + bbox_to_anchor=(1.05, 1), + loc="upper left", + facecolor="#1a1a2e", + edgecolor="#ffffff", + ) + # Plot both subplots plot_grouped_bars(ax1, metrics1, show_legend=True) plot_grouped_bars(ax2, metrics2, show_legend=False) - + # Style both subplots - setup_plot(fig, ax1, 'Brightness and Volume') - setup_plot(fig, ax2, 'Voice Pitch and Texture') - + setup_plot(fig, ax1, "Brightness and Volume") + setup_plot(fig, ax2, "Voice Pitch and Texture") + # Add y-axis labels - ax1.set_ylabel('Value') - ax2.set_ylabel('Value') - + ax1.set_ylabel("Value") + ax2.set_ylabel("Value") + # Adjust the figure size to accommodate the legend fig.set_size_inches(15, 15) - + # Add padding around the entire figure plt.subplots_adjust(right=0.85, top=0.95, bottom=0.05, left=0.1) plt.savefig(os.path.join(output_dir, "analysis_comparison.png"), dpi=300) print(f"Saved analysis comparison to {output_dir}/analysis_comparison.png") - + # Print detailed comparative analysis print("\nDetailed Voice Analysis:") for label, chars in all_chars.items(): @@ -282,44 +316,57 @@ def plot_analysis(audio_files: Dict[str, str], output_dir: str): print(f" Duration: {chars['duration']:.2f}s") print(f" Zero Crossing Rate: {chars['zero_crossing_rate']:.3f}") print(f" Spectral Centroid: {chars['spectral_centroid']:.0f}Hz") - print(f" Dominant Frequencies: {', '.join(f'{f:.0f}Hz' for f in chars['dominant_frequencies'])}") + print( + f" Dominant Frequencies: {', '.join(f'{f:.0f}Hz' for f in chars['dominant_frequencies'])}" + ) def main(): parser = argparse.ArgumentParser(description="Kokoro Voice Analysis Demo") parser.add_argument("--voices", nargs="+", type=str, help="Voices to combine") - parser.add_argument("--text", type=str, default="Hello! This is a test of combined voices.", help="Text to speak") + parser.add_argument( + "--text", + type=str, + default="Hello! This is a test of combined voices.", + help="Text to speak", + ) parser.add_argument("--url", default="http://localhost:8880", help="API base URL") - parser.add_argument("--output-dir", default="examples/output", help="Output directory for audio files") + parser.add_argument( + "--output-dir", + default="examples/output", + help="Output directory for audio files", + ) args = parser.parse_args() if not args.voices: print("No voices provided, using default test voices") args.voices = ["af_bella", "af_nicole"] - + # Create output directory os.makedirs(args.output_dir, exist_ok=True) - + # Dictionary to store audio files for analysis audio_files = {} - + # Generate speech with individual voices print("Generating speech with individual voices...") for voice in args.voices: output_file = os.path.join(args.output_dir, f"analysis_{voice}.wav") if generate_speech(args.text, voice, args.url, output_file): audio_files[voice] = output_file - + # Generate speech with combined voice print(f"\nCombining voices: {', '.join(args.voices)}") combined_voice = submit_combine_voices(args.voices, args.url) - + if combined_voice: print(f"Successfully created combined voice: {combined_voice}") - output_file = os.path.join(args.output_dir, f"analysis_combined_{combined_voice}.wav") + output_file = os.path.join( + args.output_dir, f"analysis_combined_{combined_voice}.wav" + ) if generate_speech(args.text, combined_voice, args.url, output_file): audio_files["combined"] = output_file - + # Generate comparison plots plot_analysis(audio_files, args.output_dir) else: diff --git a/examples/test_openai_tts.py b/examples/test_openai_tts.py index 7cc8104..80e3602 100644 --- a/examples/test_openai_tts.py +++ b/examples/test_openai_tts.py @@ -60,7 +60,7 @@ def test_speed(speed: float): # Test different formats for format in ["wav", "mp3", "opus", "aac", "flac", "pcm"]: - test_format(format) # aac and pcm should fail as they are not supported + test_format(format) # aac and pcm should fail as they are not supported # Test different speeds for speed in [0.25, 1.0, 2.0, 4.0]: # 5.0 should fail as it's out of range diff --git a/requirements-test.txt b/requirements-test.txt index 53135bd..26a7791 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -10,3 +10,5 @@ sqlalchemy==2.0.27 pytest==8.0.0 httpx==0.26.0 pytest-asyncio==0.23.5 +pytest-cov==6.0.0 +gradio==4.19.2 diff --git a/ui/app.py b/ui/app.py index a3d9939..96aae35 100644 --- a/ui/app.py +++ b/ui/app.py @@ -2,8 +2,4 @@ from lib.interface import create_interface if __name__ == "__main__": demo = create_interface() - demo.launch( - server_name="0.0.0.0", - server_port=7860, - show_error=True - ) + demo.launch(server_name="0.0.0.0", server_port=7860, show_error=True) diff --git a/ui/lib/api.py b/ui/lib/api.py index a9c6a19..1528656 100644 --- a/ui/lib/api.py +++ b/ui/lib/api.py @@ -1,16 +1,19 @@ -import requests -from typing import Tuple, List, Optional import os import datetime +from typing import List, Tuple, Optional + +import requests + from .config import API_URL, OUTPUTS_DIR + def check_api_status() -> Tuple[bool, List[str]]: """Check TTS service status and get available voices.""" try: # Use a longer timeout during startup response = requests.get( f"{API_URL}/v1/audio/voices", - timeout=30 # Increased timeout for initial startup period + timeout=30, # Increased timeout for initial startup period ) response.raise_for_status() voices = response.json().get("voices", []) @@ -31,16 +34,19 @@ def check_api_status() -> Tuple[bool, List[str]]: print(f"Unexpected error checking API status: {str(e)}") return False, [] -def text_to_speech(text: str, voice_id: str, format: str, speed: float) -> Optional[str]: + +def text_to_speech( + text: str, voice_id: str, format: str, speed: float +) -> Optional[str]: """Generate speech from text using TTS API.""" if not text.strip(): return None - + # Create output filename timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") output_filename = f"output_{timestamp}_voice-{voice_id}_speed-{speed}.{format}" output_path = os.path.join(OUTPUTS_DIR, output_filename) - + try: response = requests.post( f"{API_URL}/v1/audio/speech", @@ -49,17 +55,17 @@ def text_to_speech(text: str, voice_id: str, format: str, speed: float) -> Optio "input": text, "voice": voice_id, "response_format": format, - "speed": float(speed) + "speed": float(speed), }, headers={"Content-Type": "application/json"}, - timeout=300 # Longer timeout for speech generation + timeout=300, # Longer timeout for speech generation ) response.raise_for_status() - + with open(output_path, "wb") as f: f.write(response.content) return output_path - + except requests.exceptions.Timeout: print("Speech generation request timed out") return None @@ -70,6 +76,7 @@ def text_to_speech(text: str, voice_id: str, format: str, speed: float) -> Optio print(f"Unexpected error generating speech: {str(e)}") return None + def get_status_html(is_available: bool) -> str: """Generate HTML for status indicator.""" color = "green" if is_available else "red" diff --git a/ui/lib/components/input.py b/ui/lib/components/input.py index 2644060..793a89e 100644 --- a/ui/lib/components/input.py +++ b/ui/lib/components/input.py @@ -1,7 +1,10 @@ -import gradio as gr from typing import Tuple + +import gradio as gr + from .. import files + def create_input_column() -> Tuple[gr.Column, dict]: """Create the input column with text input and file handling.""" with gr.Column(scale=1) as col: @@ -11,49 +14,36 @@ def create_input_column() -> Tuple[gr.Column, dict]: # Direct Input Tab with gr.TabItem("Direct Input"): text_input = gr.Textbox( - label="Text to speak", - placeholder="Enter text here...", - lines=4 + label="Text to speak", placeholder="Enter text here...", lines=4 ) - text_submit = gr.Button( - "Generate Speech", - variant="primary", - size="lg" - ) - + text_submit = gr.Button("Generate Speech", variant="primary", size="lg") + # File Input Tab with gr.TabItem("From File"): # Existing files dropdown input_files_list = gr.Dropdown( label="Select Existing File", choices=files.list_input_files(), - value=None + value=None, ) - + # Simple file upload file_upload = gr.File( - label="Upload Text File (.txt)", - file_types=[".txt"] + label="Upload Text File (.txt)", file_types=[".txt"] ) - + file_preview = gr.Textbox( - label="File Content Preview", - interactive=False, - lines=4 + label="File Content Preview", interactive=False, lines=4 ) - + with gr.Row(): file_submit = gr.Button( - "Generate Speech", - variant="primary", - size="lg" + "Generate Speech", variant="primary", size="lg" ) clear_files = gr.Button( - "Clear Files", - variant="secondary", - size="lg" + "Clear Files", variant="secondary", size="lg" ) - + components = { "tabs": tabs, "text_input": text_input, @@ -62,7 +52,7 @@ def create_input_column() -> Tuple[gr.Column, dict]: "file_preview": file_preview, "text_submit": text_submit, "file_submit": file_submit, - "clear_files": clear_files + "clear_files": clear_files, } - + return col, components diff --git a/ui/lib/components/model.py b/ui/lib/components/model.py index 3b7ae96..444d0f8 100644 --- a/ui/lib/components/model.py +++ b/ui/lib/components/model.py @@ -1,45 +1,41 @@ -import gradio as gr from typing import Tuple, Optional + +import gradio as gr + from .. import api, config + def create_model_column(voice_ids: Optional[list] = None) -> Tuple[gr.Column, dict]: """Create the model settings column.""" if voice_ids is None: voice_ids = [] - + with gr.Column(scale=1) as col: gr.Markdown("### Model Settings") - + # Status button starts in waiting state status_btn = gr.Button( - "⌛ TTS Service: Waiting for Service...", - variant="secondary" + "⌛ TTS Service: Waiting for Service...", variant="secondary" ) - + voice_input = gr.Dropdown( choices=voice_ids, label="Voice", value=voice_ids[0] if voice_ids else None, - interactive=True + interactive=True, ) format_input = gr.Dropdown( - choices=config.AUDIO_FORMATS, - label="Audio Format", - value="mp3" + choices=config.AUDIO_FORMATS, label="Audio Format", value="mp3" ) speed_input = gr.Slider( - minimum=0.5, - maximum=2.0, - value=1.0, - step=0.1, - label="Speed" + minimum=0.5, maximum=2.0, value=1.0, step=0.1, label="Speed" ) - + components = { "status_btn": status_btn, "voice": voice_input, "format": format_input, - "speed": speed_input + "speed": speed_input, } - + return col, components diff --git a/ui/lib/components/output.py b/ui/lib/components/output.py index 8ef4640..e25601d 100644 --- a/ui/lib/components/output.py +++ b/ui/lib/components/output.py @@ -1,40 +1,42 @@ -import gradio as gr from typing import Tuple + +import gradio as gr + from .. import files + def create_output_column() -> Tuple[gr.Column, dict]: """Create the output column with audio player and file list.""" with gr.Column(scale=1) as col: gr.Markdown("### Latest Output") - audio_output = gr.Audio( - label="Generated Speech", - type="filepath" - ) - + audio_output = gr.Audio(label="Generated Speech", type="filepath") + gr.Markdown("### Generated Files") output_files = gr.Dropdown( label="Previous Outputs", choices=files.list_output_files(), value=None, - allow_custom_value=False + allow_custom_value=False, ) - + play_btn = gr.Button("▶️ Play Selected", size="sm") - + selected_audio = gr.Audio( - label="Selected Output", - type="filepath", - visible=False + label="Selected Output", type="filepath", visible=False ) - - clear_outputs = gr.Button("⚠️ Delete All Previously Generated Output Audio 🗑️", size="sm", variant="secondary") - + + clear_outputs = gr.Button( + "⚠️ Delete All Previously Generated Output Audio 🗑️", + size="sm", + variant="secondary", + ) + components = { "audio_output": audio_output, "output_files": output_files, "play_btn": play_btn, "selected_audio": selected_audio, - "clear_outputs": clear_outputs + "clear_outputs": clear_outputs, } - + return col, components diff --git a/ui/lib/files.py b/ui/lib/files.py index 98867f3..867f4f4 100644 --- a/ui/lib/files.py +++ b/ui/lib/files.py @@ -1,17 +1,23 @@ import os -from typing import List, Optional, Tuple import datetime +from typing import List, Tuple, Optional + from .config import INPUTS_DIR, OUTPUTS_DIR, AUDIO_FORMATS + def list_input_files() -> List[str]: """List all input text files.""" - return [f for f in os.listdir(INPUTS_DIR) if f.endswith('.txt')] + return [f for f in os.listdir(INPUTS_DIR) if f.endswith(".txt")] + def list_output_files() -> List[str]: """List all output audio files.""" - return [os.path.join(OUTPUTS_DIR, f) - for f in os.listdir(OUTPUTS_DIR) - if any(f.endswith(ext) for ext in AUDIO_FORMATS)] + return [ + os.path.join(OUTPUTS_DIR, f) + for f in os.listdir(OUTPUTS_DIR) + if any(f.endswith(ext) for ext in AUDIO_FORMATS) + ] + def read_text_file(filename: str) -> str: """Read content of a text file.""" @@ -19,16 +25,17 @@ def read_text_file(filename: str) -> str: return "" try: file_path = os.path.join(INPUTS_DIR, filename) - with open(file_path, 'r', encoding='utf-8') as f: + with open(file_path, "r", encoding="utf-8") as f: return f.read() except: return "" + def save_text(text: str, filename: Optional[str] = None) -> Optional[str]: """Save text to a file. Returns the filename if successful.""" if not text.strip(): return None - + if filename is None: # Use input_1.txt, input_2.txt, etc. base = "input" @@ -41,12 +48,12 @@ def save_text(text: str, filename: Optional[str] = None) -> Optional[str]: else: # Handle duplicate filenames by adding _1, _2, etc. base = os.path.splitext(filename)[0] - ext = os.path.splitext(filename)[1] or '.txt' + ext = os.path.splitext(filename)[1] or ".txt" counter = 1 while os.path.exists(os.path.join(INPUTS_DIR, filename)): filename = f"{base}_{counter}{ext}" counter += 1 - + filepath = os.path.join(INPUTS_DIR, filename) try: with open(filepath, "w", encoding="utf-8") as f: @@ -56,11 +63,12 @@ def save_text(text: str, filename: Optional[str] = None) -> Optional[str]: print(f"Error saving file: {e}") return None + def delete_all_input_files() -> bool: """Delete all files from the inputs directory. Returns True if successful.""" try: for filename in os.listdir(INPUTS_DIR): - if filename.endswith('.txt'): + if filename.endswith(".txt"): file_path = os.path.join(INPUTS_DIR, filename) os.remove(file_path) return True @@ -68,6 +76,7 @@ def delete_all_input_files() -> bool: print(f"Error deleting input files: {e}") return False + def delete_all_output_files() -> bool: """Delete all audio files from the outputs directory. Returns True if successful.""" try: @@ -80,19 +89,20 @@ def delete_all_output_files() -> bool: print(f"Error deleting output files: {e}") return False + def process_uploaded_file(file_path: str) -> bool: """Save uploaded file to inputs directory. Returns True if successful.""" if not file_path: return False - + try: filename = os.path.basename(file_path) - if not filename.endswith('.txt'): + if not filename.endswith(".txt"): return False - + # Create target path in inputs directory target_path = os.path.join(INPUTS_DIR, filename) - + # If file exists, add number suffix base, ext = os.path.splitext(filename) counter = 1 @@ -100,12 +110,13 @@ def process_uploaded_file(file_path: str) -> bool: new_name = f"{base}_{counter}{ext}" target_path = os.path.join(INPUTS_DIR, new_name) counter += 1 - + # Copy file to inputs directory import shutil + shutil.copy2(file_path, target_path) return True - + except Exception as e: print(f"Error saving uploaded file: {e}") return False diff --git a/ui/lib/handlers.py b/ui/lib/handlers.py index 94c9574..eba6cda 100644 --- a/ui/lib/handlers.py +++ b/ui/lib/handlers.py @@ -1,16 +1,19 @@ -import gradio as gr import os import shutil + +import gradio as gr + from . import api, files + def setup_event_handlers(components: dict): """Set up all event handlers for the UI components.""" - + def refresh_status(): try: is_available, voices = api.check_api_status() status = "Available" if is_available else "Waiting for Service..." - + if is_available and voices: # Preserve current voice selection if it exists and is still valid current_voice = components["model"]["voice"].value @@ -19,17 +22,17 @@ def setup_event_handlers(components: dict): gr.update( value=f"🔄 TTS Service: {status}", interactive=True, - variant="secondary" + variant="secondary", ), - gr.update(choices=voices, value=default_voice) + gr.update(choices=voices, value=default_voice), ] return [ gr.update( value=f"⌛ TTS Service: {status}", interactive=True, - variant="secondary" + variant="secondary", ), - gr.update(choices=[], value=None) + gr.update(choices=[], value=None), ] except Exception as e: print(f"Error in refresh status: {str(e)}") @@ -37,11 +40,11 @@ def setup_event_handlers(components: dict): gr.update( value="❌ TTS Service: Connection Error", interactive=True, - variant="secondary" + variant="secondary", ), - gr.update(choices=[], value=None) + gr.update(choices=[], value=None), ] - + def handle_file_select(filename): if filename: try: @@ -52,16 +55,16 @@ def setup_event_handlers(components: dict): except Exception as e: print(f"Error reading file: {e}") return gr.update(value="") - + def handle_file_upload(file): if file is None: return gr.update(choices=files.list_input_files()) - + try: # Copy file to inputs directory filename = os.path.basename(file.name) target_path = os.path.join(files.INPUTS_DIR, filename) - + # Handle duplicate filenames base, ext = os.path.splitext(filename) counter = 1 @@ -69,43 +72,36 @@ def setup_event_handlers(components: dict): new_name = f"{base}_{counter}{ext}" target_path = os.path.join(files.INPUTS_DIR, new_name) counter += 1 - + shutil.copy2(file.name, target_path) - + except Exception as e: print(f"Error uploading file: {e}") - + return gr.update(choices=files.list_input_files()) - + def generate_from_text(text, voice, format, speed): """Generate speech from direct text input""" is_available, _ = api.check_api_status() if not is_available: gr.Warning("TTS Service is currently unavailable") - return [ - None, - gr.update(choices=files.list_output_files()) - ] + return [None, gr.update(choices=files.list_output_files())] if not text or not text.strip(): gr.Warning("Please enter text in the input box") - return [ - None, - gr.update(choices=files.list_output_files()) - ] + return [None, gr.update(choices=files.list_output_files())] files.save_text(text) result = api.text_to_speech(text, voice, format, speed) if result is None: gr.Warning("Failed to generate speech. Please try again.") - return [ - None, - gr.update(choices=files.list_output_files()) - ] - + return [None, gr.update(choices=files.list_output_files())] + return [ result, - gr.update(choices=files.list_output_files(), value=os.path.basename(result)) + gr.update( + choices=files.list_output_files(), value=os.path.basename(result) + ), ] def generate_from_file(selected_file, voice, format, speed): @@ -113,37 +109,30 @@ def setup_event_handlers(components: dict): is_available, _ = api.check_api_status() if not is_available: gr.Warning("TTS Service is currently unavailable") - return [ - None, - gr.update(choices=files.list_output_files()) - ] + return [None, gr.update(choices=files.list_output_files())] if not selected_file: gr.Warning("Please select a file") - return [ - None, - gr.update(choices=files.list_output_files()) - ] + return [None, gr.update(choices=files.list_output_files())] text = files.read_text_file(selected_file) result = api.text_to_speech(text, voice, format, speed) if result is None: gr.Warning("Failed to generate speech. Please try again.") - return [ - None, - gr.update(choices=files.list_output_files()) - ] - + return [None, gr.update(choices=files.list_output_files())] + return [ result, - gr.update(choices=files.list_output_files(), value=os.path.basename(result)) + gr.update( + choices=files.list_output_files(), value=os.path.basename(result) + ), ] def play_selected(file_path): if file_path and os.path.exists(file_path): return gr.update(value=file_path, visible=True) return gr.update(visible=False) - + def clear_files(voice, format, speed): """Delete all input files and clear UI components while preserving model settings""" files.delete_all_input_files() @@ -155,7 +144,7 @@ def setup_event_handlers(components: dict): gr.update(choices=files.list_output_files()), # output_files gr.update(value=voice), # voice gr.update(value=format), # format - gr.update(value=speed) # speed + gr.update(value=speed), # speed ] def clear_outputs(): @@ -164,43 +153,40 @@ def setup_event_handlers(components: dict): return [ None, # audio_output gr.update(choices=[], value=None), # output_files - gr.update(visible=False) # selected_audio + gr.update(visible=False), # selected_audio ] # Connect event handlers components["model"]["status_btn"].click( fn=refresh_status, - outputs=[ - components["model"]["status_btn"], - components["model"]["voice"] - ] + outputs=[components["model"]["status_btn"], components["model"]["voice"]], ) - + components["input"]["file_select"].change( fn=handle_file_select, inputs=[components["input"]["file_select"]], - outputs=[components["input"]["file_preview"]] + outputs=[components["input"]["file_preview"]], ) - + components["input"]["file_upload"].upload( fn=handle_file_upload, inputs=[components["input"]["file_upload"]], - outputs=[components["input"]["file_select"]] + outputs=[components["input"]["file_select"]], ) - + components["output"]["play_btn"].click( fn=play_selected, inputs=[components["output"]["output_files"]], - outputs=[components["output"]["selected_audio"]] + outputs=[components["output"]["selected_audio"]], ) - + # Connect clear files button components["input"]["clear_files"].click( fn=clear_files, inputs=[ components["model"]["voice"], components["model"]["format"], - components["model"]["speed"] + components["model"]["speed"], ], outputs=[ components["input"]["file_select"], @@ -210,10 +196,10 @@ def setup_event_handlers(components: dict): components["output"]["output_files"], components["model"]["voice"], components["model"]["format"], - components["model"]["speed"] - ] + components["model"]["speed"], + ], ) - + # Connect submit buttons for each tab components["input"]["text_submit"].click( fn=generate_from_text, @@ -221,22 +207,22 @@ def setup_event_handlers(components: dict): components["input"]["text_input"], components["model"]["voice"], components["model"]["format"], - components["model"]["speed"] + components["model"]["speed"], ], outputs=[ components["output"]["audio_output"], - components["output"]["output_files"] - ] + components["output"]["output_files"], + ], ) - + # Connect clear outputs button components["output"]["clear_outputs"].click( fn=clear_outputs, outputs=[ components["output"]["audio_output"], components["output"]["output_files"], - components["output"]["selected_audio"] - ] + components["output"]["selected_audio"], + ], ) components["input"]["file_submit"].click( @@ -245,10 +231,10 @@ def setup_event_handlers(components: dict): components["input"]["file_select"], components["model"]["voice"], components["model"]["format"], - components["model"]["speed"] + components["model"]["speed"], ], outputs=[ components["output"]["audio_output"], - components["output"]["output_files"] - ] + components["output"]["output_files"], + ], ) diff --git a/ui/lib/interface.py b/ui/lib/interface.py index 5361217..a23ed7c 100644 --- a/ui/lib/interface.py +++ b/ui/lib/interface.py @@ -1,69 +1,75 @@ import gradio as gr + from . import api -from .components import create_input_column, create_model_column, create_output_column from .handlers import setup_event_handlers +from .components import create_input_column, create_model_column, create_output_column + def create_interface(): """Create the main Gradio interface.""" # Skip initial status check - let the timer handle it is_available, available_voices = False, [] - with gr.Blocks( - title="Kokoro TTS Demo", - theme=gr.themes.Monochrome() -) as demo: - gr.HTML(value='', show_label=False) - + with gr.Blocks(title="Kokoro TTS Demo", theme=gr.themes.Monochrome()) as demo: + gr.HTML( + value='", + show_label=False, + ) + # Main interface with gr.Row(): # Create columns input_col, input_components = create_input_column() - model_col, model_components = create_model_column(available_voices) # Pass initial voices + model_col, model_components = create_model_column( + available_voices + ) # Pass initial voices output_col, output_components = create_output_column() - + # Collect all components components = { "input": input_components, "model": model_components, - "output": output_components + "output": output_components, } - + # Set up event handlers setup_event_handlers(components) - + # Add periodic status check with Timer def update_status(): try: is_available, voices = api.check_api_status() status = "Available" if is_available else "Waiting for Service..." - + if is_available and voices: # Service is available, update UI and stop timer current_voice = components["model"]["voice"].value - default_voice = current_voice if current_voice in voices else voices[0] + default_voice = ( + current_voice if current_voice in voices else voices[0] + ) # Return values in same order as outputs list return [ gr.update( value=f"🔄 TTS Service: {status}", interactive=True, - variant="secondary" + variant="secondary", ), gr.update(choices=voices, value=default_voice), - gr.update(active=False) # Stop timer + gr.update(active=False), # Stop timer ] - + # Service not available yet, keep checking return [ gr.update( value=f"⌛ TTS Service: {status}", interactive=True, - variant="secondary" + variant="secondary", ), gr.update(choices=[], value=None), - gr.update(active=True) + gr.update(active=True), ] except Exception as e: print(f"Error in status update: {str(e)}") @@ -72,20 +78,20 @@ def create_interface(): gr.update( value="❌ TTS Service: Connection Error", interactive=True, - variant="secondary" + variant="secondary", ), gr.update(choices=[], value=None), - gr.update(active=True) + gr.update(active=True), ] - + timer = gr.Timer(value=5) # Check every 5 seconds timer.tick( fn=update_status, outputs=[ components["model"]["status_btn"], components["model"]["voice"], - timer - ] + timer, + ], ) return demo diff --git a/ui/tests/conftest.py b/ui/tests/conftest.py index 05ae58d..e9bc035 100644 --- a/ui/tests/conftest.py +++ b/ui/tests/conftest.py @@ -1,5 +1,5 @@ -import pytest import gradio as gr +import pytest @pytest.fixture diff --git a/ui/tests/test_api.py b/ui/tests/test_api.py index c9b37db..fe5dbe7 100644 --- a/ui/tests/test_api.py +++ b/ui/tests/test_api.py @@ -1,6 +1,8 @@ +from unittest.mock import patch, mock_open + import pytest import requests -from unittest.mock import patch, mock_open + from ui.lib import api @@ -57,12 +59,11 @@ def test_check_api_status_connection_error(): def test_text_to_speech_success(mock_response, tmp_path): """Test successful speech generation""" - with patch("requests.post", return_value=mock_response({})), \ - patch("ui.lib.api.OUTPUTS_DIR", str(tmp_path)), \ - patch("builtins.open", mock_open()) as mock_file: - + with patch("requests.post", return_value=mock_response({})), patch( + "ui.lib.api.OUTPUTS_DIR", str(tmp_path) + ), patch("builtins.open", mock_open()) as mock_file: result = api.text_to_speech("test text", "voice1", "mp3", 1.0) - + assert result is not None assert "output_" in result assert result.endswith(".mp3") @@ -105,25 +106,24 @@ def test_get_status_html_unavailable(): def test_text_to_speech_api_params(mock_response, tmp_path): """Test correct API parameters are sent""" - with patch("requests.post") as mock_post, \ - patch("ui.lib.api.OUTPUTS_DIR", str(tmp_path)), \ - patch("builtins.open", mock_open()): - + with patch("requests.post") as mock_post, patch( + "ui.lib.api.OUTPUTS_DIR", str(tmp_path) + ), patch("builtins.open", mock_open()): mock_post.return_value = mock_response({}) api.text_to_speech("test text", "voice1", "mp3", 1.5) - + mock_post.assert_called_once() args, kwargs = mock_post.call_args - + # Check request body assert kwargs["json"] == { "model": "kokoro", "input": "test text", "voice": "voice1", "response_format": "mp3", - "speed": 1.5 + "speed": 1.5, } - + # Check headers and timeout assert kwargs["headers"] == {"Content-Type": "application/json"} assert kwargs["timeout"] == 300 diff --git a/ui/tests/test_components.py b/ui/tests/test_components.py index 9ddb1ad..b125cb7 100644 --- a/ui/tests/test_components.py +++ b/ui/tests/test_components.py @@ -1,8 +1,9 @@ -import pytest import gradio as gr +import pytest + +from ui.lib.config import AUDIO_FORMATS from ui.lib.components.model import create_model_column from ui.lib.components.output import create_output_column -from ui.lib.config import AUDIO_FORMATS def test_create_model_column_structure(): @@ -15,12 +16,7 @@ def test_create_model_column_structure(): assert isinstance(components, dict) # Test expected components presence - expected_components = { - "status_btn", - "voice", - "format", - "speed" - } + expected_components = {"status_btn", "voice", "format", "speed"} assert set(components.keys()) == expected_components # Test component types @@ -78,7 +74,7 @@ def test_create_output_column_structure(): "output_files", "play_btn", "selected_audio", - "clear_outputs" + "clear_outputs", } assert set(components.keys()) == expected_components diff --git a/ui/tests/test_files.py b/ui/tests/test_files.py index aaa0fe8..2e7e038 100644 --- a/ui/tests/test_files.py +++ b/ui/tests/test_files.py @@ -1,6 +1,8 @@ import os -import pytest from unittest.mock import patch + +import pytest + from ui.lib import files from ui.lib.config import AUDIO_FORMATS diff --git a/ui/tests/test_input.py b/ui/tests/test_input.py index 807a483..2919fd0 100644 --- a/ui/tests/test_input.py +++ b/ui/tests/test_input.py @@ -1,5 +1,6 @@ -import pytest import gradio as gr +import pytest + from ui.lib.components.input import create_input_column diff --git a/ui/tests/test_interface.py b/ui/tests/test_interface.py index 550591f..cff4825 100644 --- a/ui/tests/test_interface.py +++ b/ui/tests/test_interface.py @@ -1,12 +1,15 @@ -import pytest +from unittest.mock import MagicMock, PropertyMock, patch + import gradio as gr -from unittest.mock import patch, MagicMock, PropertyMock +import pytest + from ui.lib.interface import create_interface @pytest.fixture def mock_timer(): """Create a mock timer with events property""" + class MockEvent: def __init__(self, fn): self.fn = fn @@ -30,7 +33,7 @@ def test_create_interface_structure(): """Test the basic structure of the created interface""" with patch("ui.lib.api.check_api_status", return_value=(False, [])): demo = create_interface() - + # Test interface type and theme assert isinstance(demo, gr.Blocks) assert demo.title == "Kokoro TTS Demo" @@ -41,15 +44,14 @@ def test_interface_html_links(): """Test that HTML links are properly configured""" with patch("ui.lib.api.check_api_status", return_value=(False, [])): demo = create_interface() - + # Find HTML component html_components = [ - comp for comp in demo.blocks.values() - if isinstance(comp, gr.HTML) + comp for comp in demo.blocks.values() if isinstance(comp, gr.HTML) ] assert len(html_components) > 0 html = html_components[0] - + # Check for required links assert 'href="https://huggingface.co/hexgrad/Kokoro-82M"' in html.value assert 'href="https://github.com/remsky/Kokoro-FastAPI"' in html.value @@ -60,16 +62,17 @@ def test_interface_html_links(): def test_update_status_available(mock_timer): """Test status update when service is available""" voices = ["voice1", "voice2"] - with patch("ui.lib.api.check_api_status", return_value=(True, voices)), \ - patch("gradio.Timer", return_value=mock_timer): + with patch("ui.lib.api.check_api_status", return_value=(True, voices)), patch( + "gradio.Timer", return_value=mock_timer + ): demo = create_interface() - + # Get the update function update_fn = mock_timer.events[0].fn - + # Test update with available service updates = update_fn() - + assert "Available" in updates[0]["value"] assert updates[1]["choices"] == voices assert updates[1]["value"] == voices[0] @@ -78,13 +81,14 @@ def test_update_status_available(mock_timer): def test_update_status_unavailable(mock_timer): """Test status update when service is unavailable""" - with patch("ui.lib.api.check_api_status", return_value=(False, [])), \ - patch("gradio.Timer", return_value=mock_timer): + with patch("ui.lib.api.check_api_status", return_value=(False, [])), patch( + "gradio.Timer", return_value=mock_timer + ): demo = create_interface() update_fn = mock_timer.events[0].fn - + updates = update_fn() - + assert "Waiting for Service" in updates[0]["value"] assert updates[1]["choices"] == [] assert updates[1]["value"] is None @@ -93,13 +97,14 @@ def test_update_status_unavailable(mock_timer): def test_update_status_error(mock_timer): """Test status update when an error occurs""" - with patch("ui.lib.api.check_api_status", side_effect=Exception("Test error")), \ - patch("gradio.Timer", return_value=mock_timer): + with patch( + "ui.lib.api.check_api_status", side_effect=Exception("Test error") + ), patch("gradio.Timer", return_value=mock_timer): demo = create_interface() update_fn = mock_timer.events[0].fn - + updates = update_fn() - + assert "Connection Error" in updates[0]["value"] assert updates[1]["choices"] == [] assert updates[1]["value"] is None @@ -108,10 +113,11 @@ def test_update_status_error(mock_timer): def test_timer_configuration(mock_timer): """Test timer configuration""" - with patch("ui.lib.api.check_api_status", return_value=(False, [])), \ - patch("gradio.Timer", return_value=mock_timer): + with patch("ui.lib.api.check_api_status", return_value=(False, [])), patch( + "gradio.Timer", return_value=mock_timer + ): demo = create_interface() - + assert mock_timer.value == 5 # Check interval is 5 seconds assert len(mock_timer.events) == 1 # Should have one event handler @@ -120,20 +126,21 @@ def test_interface_components_presence(): """Test that all required components are present""" with patch("ui.lib.api.check_api_status", return_value=(False, [])): demo = create_interface() - + # Check for main component sections components = { - comp.label for comp in demo.blocks.values() - if hasattr(comp, 'label') and comp.label + comp.label + for comp in demo.blocks.values() + if hasattr(comp, "label") and comp.label } - + required_components = { "Text to speak", "Voice", "Audio Format", "Speed", "Generated Speech", - "Previous Outputs" + "Previous Outputs", } - + assert required_components.issubset(components) From 5a5bafc0c2d95e8a15c41365da5794d767bd447c Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 21:53:29 -0700 Subject: [PATCH 05/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 392ab68..60b6494 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ response = requests.post( ) ```

- Voice Analysis Comparison + Voice Analysis Comparison

From e2ce93cb4142ab8d89a17b3dd7436d5326a65a47 Mon Sep 17 00:00:00 2001 From: remsky Date: Wed, 1 Jan 2025 21:54:28 -0700 Subject: [PATCH 06/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 60b6494..fb2ddee 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Dockerized FastAPI wrapper for [Kokoro-82M](https://huggingface.co/hexgrad/Kokor - simple audio generation web ui utility
-OpenAI-Compatible Speech Endpoint +Quick Start The service can be accessed through either the API endpoints or the Gradio web interface. From 7d7da3ca1b57e9d8f1ce671eb6869620f6f9e28d Mon Sep 17 00:00:00 2001 From: remsky Date: Thu, 2 Jan 2025 01:32:53 -0700 Subject: [PATCH 07/11] test: Add GitHub Actions workflow for Docker build and publish --- .github/workflows/docker-publish.yml | 105 +++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .github/workflows/docker-publish.yml diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..bcb8bdd --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,105 @@ +name: Docker Build and Publish + +on: + push: + branches: [ "master" ] + tags: [ 'v*.*.*' ] + pull_request: + branches: [ "master" ] + # Allow manual trigger from GitHub UI + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata for GPU image + - name: Extract metadata (tags, labels) for GPU Docker + id: meta-gpu + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + + # Extract metadata for CPU image + - name: Extract metadata (tags, labels) for CPU Docker + id: meta-cpu + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + flavor: | + suffix=-cpu + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + + # Build and push GPU version + - name: Build and push GPU Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta-gpu.outputs.tags }} + labels: ${{ steps.meta-gpu.outputs.labels }} + platforms: linux/amd64 + target: runtime + + # Build and push CPU version + - name: Build and push CPU Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile.cpu + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta-cpu.outputs.tags }} + labels: ${{ steps.meta-cpu.outputs.labels }} + platforms: linux/amd64 + target: runtime + + create-release: + needs: build + runs-on: ubuntu-latest + # Only run this job if we're pushing a tag + if: startsWith(github.ref, 'refs/tags/') + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + generate_release_notes: true + draft: false + prerelease: false From 3ca79c609f4239d3982504d9fb69828e72efb051 Mon Sep 17 00:00:00 2001 From: remsky Date: Thu, 2 Jan 2025 01:59:25 -0700 Subject: [PATCH 08/11] fix: longer timeouts, fix on hf model pull --- .github/workflows/docker-publish.yml | 2 -- docker-compose.cpu.yml | 20 ++++++++++++++++---- docker-compose.yml | 8 ++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index bcb8bdd..94b9dae 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -72,7 +72,6 @@ jobs: tags: ${{ steps.meta-gpu.outputs.tags }} labels: ${{ steps.meta-gpu.outputs.labels }} platforms: linux/amd64 - target: runtime # Build and push CPU version - name: Build and push CPU Docker image @@ -84,7 +83,6 @@ jobs: tags: ${{ steps.meta-cpu.outputs.tags }} labels: ${{ steps.meta-cpu.outputs.labels }} platforms: linux/amd64 - target: runtime create-release: needs: build diff --git a/docker-compose.cpu.yml b/docker-compose.cpu.yml index 2daeb46..faea2fe 100644 --- a/docker-compose.cpu.yml +++ b/docker-compose.cpu.yml @@ -8,7 +8,7 @@ services: sh -c " rm -f .git/index.lock; if [ -z \"$(ls -A .)\" ]; then - git clone https://huggingface.co/hexgrad/Kokoro-82M + git clone https://huggingface.co/hexgrad/Kokoro-82M . touch .cloned; else rm -f .git/index.lock && \ @@ -20,9 +20,9 @@ services: " healthcheck: test: ["CMD", "test", "-f", ".cloned"] - interval: 3s - timeout: 1s - retries: 120 + interval: 5s + timeout: 2s + retries: 300 start_period: 1s kokoro-tts: @@ -39,3 +39,15 @@ services: depends_on: model-fetcher: condition: service_healthy + + # Gradio UI service [Comment out everything below if you don't need it] + gradio-ui: + build: + context: ./ui + ports: + - "7860:7860" + volumes: + - ./ui/data:/app/ui/data + - ./ui/app.py:/app/app.py # Mount app.py for hot reload + environment: + - GRADIO_WATCH=True # Enable hot reloading diff --git a/docker-compose.yml b/docker-compose.yml index 2722208..2e7a86f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: sh -c " rm -f .git/index.lock; if [ -z \"$(ls -A .)\" ]; then - git clone https://huggingface.co/hexgrad/Kokoro-82M + git clone https://huggingface.co/hexgrad/Kokoro-82M . touch .cloned; else rm -f .git/index.lock && \ @@ -20,9 +20,9 @@ services: " healthcheck: test: ["CMD", "test", "-f", ".cloned"] - interval: 3s - timeout: 1s - retries: 120 + interval: 5s + timeout: 2s + retries: 300 start_period: 1s kokoro-tts: From ff33f5494d746b0f357a976de8ed58105141d3ca Mon Sep 17 00:00:00 2001 From: remsky Date: Thu, 2 Jan 2025 02:23:46 -0700 Subject: [PATCH 09/11] fix: add latest tag to Docker publish workflow --- .github/workflows/docker-publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 94b9dae..0b66db8 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -39,6 +39,7 @@ jobs: with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | + type=raw,value=latest type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} @@ -55,6 +56,7 @@ jobs: flavor: | suffix=-cpu tags: | + type=raw,value=latest type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} From b3fdf2e2c88443c37dfb1787837b1ae5c1ed3571 Mon Sep 17 00:00:00 2001 From: remsky Date: Thu, 2 Jan 2025 02:31:37 -0700 Subject: [PATCH 10/11] feat: build steps for UI Docker image, tagging --- .github/workflows/docker-publish.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 0b66db8..9764576 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -86,6 +86,34 @@ jobs: labels: ${{ steps.meta-cpu.outputs.labels }} platforms: linux/amd64 + # Extract metadata for UI image + - name: Extract metadata (tags, labels) for UI Docker + id: meta-ui + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + flavor: | + suffix=-ui + tags: | + type=raw,value=latest + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + + # Build and push UI version + - name: Build and push UI Docker image + uses: docker/build-push-action@v5 + with: + context: ./ui + file: ./ui/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta-ui.outputs.tags }} + labels: ${{ steps.meta-ui.outputs.labels }} + platforms: linux/amd64 + create-release: needs: build runs-on: ubuntu-latest From d1c3feb8c4ffe6a6522ac6a3f5a938db13952f7f Mon Sep 17 00:00:00 2001 From: remsky Date: Thu, 2 Jan 2025 02:53:41 -0700 Subject: [PATCH 11/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb2ddee..639c13d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Dockerized FastAPI wrapper for [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model - OpenAI-compatible Speech endpoint, with voice combination functionality - NVIDIA GPU accelerated inference (or CPU) option -- very fast generation time (~35x real time factor) +- very fast generation time (~35x real time factor via 4060Ti) - automatic chunking/stitching for long texts - simple audio generation web ui utility