From 3d0747b56df3caaa3299c2204a03b6e5fa82ca3f Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sat, 3 Oct 2026 01:34:55 +0800 Subject: [PATCH] Common (Windows): optimises ico generation --- src/common/windows/c-logo.sh | 40 ++++++++++++++++++++++++++++------- src/common/windows/logo.ico | Bin 107906 -> 19346 bytes src/common/windows/logo.svg | 1 - 3 files changed, 32 insertions(+), 9 deletions(-) delete mode 120000 src/common/windows/logo.svg diff --git a/src/common/windows/c-logo.sh b/src/common/windows/c-logo.sh index e4d7863cc..cea8824c7 100755 --- a/src/common/windows/c-logo.sh +++ b/src/common/windows/c-logo.sh @@ -1,10 +1,34 @@ #!/bin/sh -# Convert logo.svg to logo.ico -rsvg-convert -w 16 -h 16 logo.svg > logo16.png -rsvg-convert -w 32 -h 32 logo.svg > logo32.png -rsvg-convert -w 48 -h 48 logo.svg > logo48.png -rsvg-convert -w 64 -h 64 logo.svg > logo64.png -rsvg-convert -w 128 -h 128 logo.svg > logo128.png -rsvg-convert -w 256 -h 256 logo.svg > logo256.png -convert logo16.png logo32.png logo48.png logo64.png logo128.png logo256.png logo.ico +# Convert logo.svg to logo.ico. +# +# Every frame is stored as PNG. ImageMagick's ICO writer only uses PNG for frames that are +# 256x256 or larger and falls back to an uncompressed DIB for everything smaller, which +# inflates the icon from ~19 KB to ~108 KB (and to ~370 KB on ImageMagick 7, which also +# stores 256x256 as a DIB). Packing the frames here keeps the icon small and predictable. +set -e + +cd "$(dirname "$0")" + +for size in 16 32 48 64 128 256; do + rsvg-convert -w "$size" -h "$size" ../../logo/logo.svg > "logo$size.png" +done + +python3 - <<'PY' +import struct + +sizes = [16, 32, 48, 64, 128, 256] +frames = [open(f"logo{s}.png", "rb").read() for s in sizes] + +header = struct.pack("1pokKWdEk6zyLtvJCBw1-*f~l z0I&oD06-xBrf1;+0AmyYz~BGh^fEdCz>D`T;QjNDJU?;(0Fxd7h)`0HLPj7!cxNNa zNQNQ6#>A+~+x>x{`B(`I zh!3YuC&A^C=#T?pZKacyP=$i}3^t~r=0Cll+lxITGMCSk;08B20O@lf60@IdEbNJR z$Q_Kl+HZ4isBNc{dZcT8f84a)na-OsC}z3g47)z4R)pSD4Vb7ge3;p%r&9<=0~09} zBHC>fa+&Vw<(;CARHS~C6Y@8Y%sIY?Ye#XXGWhQ7=-0<+3| z1B6TRc3HD>pc>a){QS|Yp}0Y-!g+G5m!mduOP3rk2DT&y_}m3<_9|FRJpgM4K7m1sj3)m&uI~@>tnhDpKdWAak znDo?Rb?VmfLBbn`6SefHn!2?qG?ta@#X%((87l6T?RRIDkv=1{32KaDLtYlZ~L(#Bzn9 zfsvllp@+Q>7($+eQN9rbEWT986oT+XJ?1gqe3y0AzQ5w-)psF~y+Q}ZQM`mR z{Cm5mi~w98(pst{WNvp!MYYTN@DQEZnWTPNZ8sK8h!~{pKgvAjd9;xI` znEIz%B$qW&l_QzBY(#bIu-Yx3V13#})+tL%8yE#Y9U=t3psk}cO1;8Nqw|e+(HbSJ zJz1AoiaLGp=MNdGKYd#fk;f9Hh|qMurHcvKWiXZeXV$v8`i$80LK`VzboAme^3k+K zC3)Pj&<=T*Qc8QMP_l!Im;C9$*`7=bmQ`pUal58~LHpfP@KF0*iy?UK@S8_sf_w-z zaUb7kn>amiHqV$ZbJd()8%9Q*G%(Mbv4xjMHL_+Fhs%$(6wdMSzmDZNeJ*uMcEm-=L}u=XnAz<735IkR0f_Ha=E#L)iI- zGSF#5C}QP8)Qi;Iu@XtEOe55wLz+vg^O3|AJ>D-CSA>FxWOysB!Hak^%(3)-Ml(>w zR@#i6DnZ8hV$XE@=&X>87d4ZHya}*|S=HfxaZApFgGNjfi9b|uOjAXG#LDM0&+6cA zKWT^=gd0C7iN?)yoiSHQGMF7gP5AQ;NyR3x19xMdA->W(8JnPcrxEQlY#1*7=Xuo3 zvS0K5#oz7)#_tm9bCL*Gm~knwr&l*G@iax=U??tdYpei)cj#-cMyJbOU!2e%Hc;b3 z-eGQ$`0>0bhqLbSmggX|?{8AYk-*%}^tnqbD;I`=-y!`_-bmN?d5G1%wXL|IZd+(E zoSZlE!^$iCj-!X~{e$Q1?_%e}APTd=n=t7VA@Lg+9yI9!mHSuy3VuF}m=ppHvrqY* zpYFWO%?yjmDER?Nl5k0G;(ym}eDc>JWSO7XMA*h3&Z6hooLq9hkF?XNamazyjJ}zl z#vTAzPc{BN2y!@CwHc-730(r#r|IX0*o|ZP_I!M67HdS3GIL;&Y{_!SzXu)4CtJzl z=yf(M^m#AHu})1o6leQ~mUd9vRu(_r$w_Yx`!Iw-OOVw&rg8=}KKHMlZw!1Ye)SWL zDo@MieIXoCWjT7B5~CNQ?0iNPozJ7l#j@>uM~43iM&6?sfc0N6q6vBk`|n@`R`?$n zF%Q`Nu4An>j~&|SvN!53Xgm;vJdj4Pyr9IqXC#ee14SpElsXwjQLpA<{xnHl{!`_q z*r#YFtWIS%tOTJv;g&qET^hSY#nECK6wp8?gZa_k8mgOn!I;n>?b2qzX?a%I%NjQA zdvuUgZ1Q@|vsa~)X=VN0(($ud%*o>=>1$Gp@1b&X_=A>YJjQvFUh50AfXmBPUa`)+ z4`F$*F>G1E?Jr`eSWa>8pxbVCB%F_S&$%kng!Yl=?8fl zN6thIG@v!{u8Y&ebCs%X&hwuQA$sD$7xbz$Gy1RDqZ{-xqUu75qi&rRzQ~D{C zWyAc8DSV8=GQb7KZNOY>h=H0{)vqo>Z&8yMg$#@xhOibKG{jGuWH+tIESDd9gAALy zR3oj;xmHdC3Vb$dG7T&q%Qio6XzO*}6w(v?K8`}Xe;_~=Xv5j8`{`8RUvpFmx%ERV zUIo&})On*9uSWb*&GA@emi{p6u7{ZL2{JN;q)5>kEA~PnJ%BEBc7YEUwpV~=P*p|D zt8r!|8_|6IJK1)w8F3}_J6)3pyrie0DS@qi@Hg9VsoX|n{0@|eCZ`yJ7E7WT?~BOI zmsE5!!PuitB&f_gIdUCRU%6d|Jbo8n1J%HNC}D%xd_G|;noK)NX99CCc9aGw#jhET z%{Qv!yk|AtHRR|czoM4Gg@2^i^O_Yz<0cpf#72q~GD*uF*EicFYv;FQzb^fNT@pQQ z3wj%Hvc0?qq%!hWU@!{jY`5qCQp2_uN zo7_$9S1YPNE{BPZ#Nw~ej%OZzTcTDF2`_=t1#v3n@-yU`VFS2^DAzyMT|JVKJXZ96 zz?UHLKyYaOc8}$F&%1Tm$y=%Q&#wgi)fT-XajdCUB6-f(^vF4NK|IWX^KpHJ%I!7^Wc1(t*BUc9|Lm&X zJS$o`WIj*6r0@}X#J?PpF+cnI0ndWwQ@15-`J-FV$1jGS=_P5DgzN}~IiOeVOhK_f zD-6;^`sUZ}P0Yy!QpqzFIC$AJ?o2CbR6o~{R}mEZp}Fk3*r!6ag%9}m)$kUt(Mqn$ znr%l!4+M{Yp)RB3@hb|nx~&7>mYgT`9=yoS269?7U}-AdJ=le95|E+4A)1ZSPt z{ILS7${V2MDtb!f#!HE~@EbBJ*$q=sRN=B31cVIYNH^i`;)cqVuTbOW{o|*6i zKDO0oT68lKDVE=2wIWxSSn%2tMVfxd+r0`1#q$bjC3!BBA__S@LI04xPJ=pggVX>n z4){km4fat>PbPfRdS41xgK=EVPX|23sM}HgThK}!I1kTmIi?(CMPewzUz$2G_>wl? zCnB5GU53_-rB7XpbmI<=@^qN6L-Upy?jndBwWaeBo)jRBH0v=^yL zH_RDD%**~6fVnM`p)eZnH6Q&cU{qU3&&I=zQSWZYDtcFc)}s>@1y@?b?1eDaXH?g@ z+?|NMZC%P~6H_QKV%~YUnT{&YD{B7yw=F!O0W%*`nJUvhDg?ba`LK@4PackBDmVW0-w32gc1#@ZHdV)VVj) z{E42GH-Yx++$2xY_1s6K&zq=!I>>CQP4+EWmM!+OAT@-BwXg8=y)i@oF) z4uDUg>myC8TGb&Dju_HZb9U@k5vW6xF81qbf9NuJMKxh-_R>*_zxlreV#xbEqiu%YB`p6`;7d7?M!U7eQV)b9%MY9^Gq-Y}+DV_#|h1IKgP}~jpwJfH{tc<-G zM=Jt|LB@CmLDfPNup65sdmZ~i=dNo`Xz6}Wm&+X;b3AQ6XWmo&FLJV%3{4#PE+)8bWKi0vejH`mx9e#P^x)*?OU2d21$X?k(T4g&dMqpJr|a+dn5C@JLxl(-RU=TOZ<^AI^M!$VpdSw?#l67 z#`RXH7O`@EBvIfn0sv6_0>*X6mGDMYsIKjOO`2GZ+HjlZL~Dj(Ws&EnI!EfhLBm@utD z${BF;)Zf^-5wvz0b6P92RW#Ah<`gtiu{P<)_g5Z9Ow98CEdEif5&C9v9?kbVbPvZ_ zKCgOlEK#6CUe*e>#WtiYw3JEtcMhL!Fdf<2`+%pthXAg=Jbpr^aDon<_dz$%#Jq%K z>SR>-`zkmY?quG_S7-jFRP^bSPlP74V5;dwV%b|B>#z>g?F^cMGJ?z@c~&bz0>{Ud z&A_BGvEa5b_5)<4eZ*^Ux} zZvmE)1Tq$K(aG~P4>@!jw)V?%iz=Y6wBYabC?mDcE7#Z3max;v&L_V=fvD?Ddd4%m zxCZ*)YlAOUSKR3DVxO&ljHmpH-`^n&oM%UV?1>DJYqOlMc^Ws-QJR0QL8Fu8NnlzgYhMX7D3ErD=e!=q-;h`G8}jzn#$)pWsqM1N49$i6g-B|MU=c>6GLdO%}` zff9ML@4~3)As$32jy#H4C`H_tu7GtT5EbRd%v2KwM5KJ& zaX%p>x1y(KRgbzh5h`~;RX+%9++5W!qj7nS-Epiy=cDRaU|Kk6BF}V~&@shxAL};+ z;~gQn6$<=L-_z0pPUIi9#gjB!6k32<(K4E>OP>olPjfzN|+0WBxE*9N*eb#n`0N*f0o@wkypJ;%bS|+L-jGZ78Af zQ%}o?ZN)9Kl3_8~oF|YVwyQ;|oXqV?ux1nPXWiVEO=`|%Rr1`kE;n&NATk_Xxwqc~ z8iidZz8aJ70=+MVe;Nz2hNkA#>(e|+cnT+Y8g1s+`NO2< z@#o&XZRFOJlC42dn=KrWDI_E(=j+5Igj-U1PEW7xZaAyDH?GJ{#LYwZ(NUCb>Ri_v#GpHqnMv6-W;u?u(FIK2(GI4kaD7VSM0q8 zCkcg0S5c-bbk)JmoK0p0wmJ6Ddl-W$6GWFuJ;T#_Q$VGS6rV`BpWG?S}sbV2qx5%2W&*7!b;tD4E0w_@?aV^`wv{&>V7)Axb%(%e0)1 z+d_HW#gJnUWi+uI{$qbEq7sTDafJePG#l2S??k(}K(F(&trxl*2r!@TFGUmg@O4)`h&8Sd+%$Cx2 z1$1|<-sVe}U;X0fZwBw3hLE_^*s<@cLizp-K`<{_laq1UC*9d1%@)RvlHke_pDE1N zH-;87EV2Nn*9f|=oTwosz10@o5einbgfK`jH0PCsGupqPChk`^a-Li&wE=Fsfo>e7^?#oe7Q`f7l#$W zMOmvOlfe~(`){M)&6ppfO?gXyw(8#iAZ{A<1V3t@g$P;N4^PeQDSYm-F{Pk##|}cU z%RPM;z22a@UGwRYB#Hi2*Z&`iwEpjTod3U)x?bTgBmZ4ehaUg$r0z5m-dSzlXQ1=R zG&wjPfSgbTB*%%6U`$v*9)M_B(+s%4HDFd556YkR2@Uef{K?4Rw)v5f_y?<1$YF_- zuOTRrw>-Dls>>f4X8{y|eJg<&g;SU7Ghf!YzgCFeoBm`97%RE+-9NZ6eZ4XbeegS9 zdpdK&1pz`jX}zLV_I2t`L#I|%(xvrKpuF_WOhlti8_8`{Nb$Y0qX=S_720{7P&a?O z-Mn=B?wpD%N*UL6<|%;V2TZ#DZp=RwEw)G)X?A3J+iY6cfk&Em9A7ky`a67gtxy%c zpaf5EsPhVUC4U}3dn6Dqj|$}gT=^3nx^4C*;%Zth%3ZM2zAc7qArP)H4~K?fkR&2t zh^9~hS8bc_oPjpXeH7`WdQoK&-=FXE@@O1h9Y5&%`XaiX3q>zIQZEd|b~jWCf};AP z-yYYY(uBWa{54e||5VNh%sVoZldXj?C6t zj<>7I>oOcvWGa^q3>(z?%fnRGU-l$$*>l8jZzP)OJuQy;i^&*LGfL(G&uUE^rS(-t zlq5DeYw-NlOoYBt-B`Jss7$L3kj`DPb;*?8;U7D0>+M*ERhq&g{`(M-*QXlPP*?q& z0gulu4HH31%1GZ`R~B(_a<&`i=3@_M#+)Be=Op?jy z@65;^kJ@-{?qt8UM|Ih}zXDY&vOgg$J7O4L<~xuC#^YC>)ASxX+(~7>n?ji3c&Yw4 zFK=rZFYkq2uHrWKn6Ph6aiMOQ**)Vhr0(<@ac{rxcvYP}v%dSI12Yh<-h1wutZ6)a=30p@fsH0FeTX-%A<(;{EfegxWm!M*Z8fkb(j2 z{(jr_iRsDxlq(grR^F`uo`m9@yIfJBq#T(e`grW36OzVBZRz@m*;nq@%Kb>J00(FSh6Xph_2`{qDzk9O`!J z)*mDWKV1&!oL_ENzV=H#uXih64&I@{iInD-LtX9fTx`dbrsj1h<4m!v`=S<(r)~yi zR+1NhH^3L4-gpIVk9OnUcI37u*t9a&mu$MPM{TiE^Ech|837vWt?TA6baLPp!3(TA zGL1u0JpU1d*=_BQji$G+Z$t4p){MO6I(|K0#pRNSli=2a4;h12JS zL&qN5yH^VTKbw66^&`#kc z1cS6O6QL0Y{F4+3Oo)tgjEtcc#% zNa6YqOhM;3I0Mc9Lqd8-a8mL2Yq~e<`Qw7PbF88fuJthr+| zq$kS76Ia6guPw+HWg(*)BINP-sQxB9{w6FiWqHrRkOF2Hb|=vSCTJPCW;1eeU4Vf+ zo6%~KPJd|t+D_VslXC|t+j}xh$SuXgLIxQkIRmLZGD5cr@O#Je+-wCF=v$LN9%C~F zdHm)g;L!#&Hv5JwG=B&H!Nz#{P_xC;Z(iJ~%cXd%K^jBF7xAb9GpS#0xp zRtTCh&^^jG=;vd-L<{`|wm)v7I!@0o4>AP-#YdZagn*Z>?|%V`Ec)c}WuPu0K*Dz~ zFM*&B>4>>XIMUiF&l#!Ye$-8`79_KTFnRn$niLorNbOf zQ73qXmy}E&M%ybkhWIK@6=6vWsO_Vjq3b$6#sG+lTEeCWTa1TR%w}6DD^^9IdD~^c zv+(eu{odB22k0Ii!@BOuUccibfy3+KyWHM#6yjUYt5^_MRr`U?2V=IJ(7(^cjHST+f zYTyg5`-xXIaz*`IBnYGZKsUM06swsWs4oD#b`9UIHxsoQ2dsj=upY4lrJRBI?Tnh@ znHl--#E}Pm=BR4ED~$wf*^NP)QoIsjO9{}+^q730E}8+q@f)kRD)Kd44f^*sU=7y}eeiR( z!0`yrgLD6*QJw!zd19-sI++tG3`WB2w#V^{K!*2r?flR>2Pk+HG5+as%-83o_rs39 zs1g0pbm0rq4|2u`vXPE~r&$RFVkGML-DMLgg^d}uA*cy|Ih_K_$@qT7z)>wAJ3aER z(y7Y42rNMqb|ojg_{6*-F)p4=FS`&p2B4-ux8$!m?YIv^K=ZWuEvPtC#VKq8&}>5i#3_&gi2WKL+rdJVod zpkfbjsT-e#a~aP?9UM)R(};ZCGw5b=w+26;WqBht#&B>9Xx9a+z2I{?a1K37VO=WZ z{N zb+!;@CU^91E`}Caucz6G2s?;0()9XTo#AfxQHi~TMtC~bxDJ}t_ttvU%aVaYMoi)Z zt1j@mA*hD5{)idl9IE~f@V=$8f~9$tSxSm+%fO`666&m)O$*J~5Uxx8y8RYso}jZg z+{+?DNk5*0SK^+jHln$N^}7k6)aoRvA2ZRI0G7yoC2*VeQGLT5ZYm29h@AQt+&pj6 z1Aj}>oxrp5&MXYI_z&9u1O9b10PfAeu@dE8bNGXqOOjSY1>)lxVg`O2r+~|}wD4MZOf=az{HXV%2G45mcOJ+vulkJdK6gI9cy#$V&Ac;z zr|{NaGHU{O1rrr?bzX}At2;B&Bj zxEtrgz_}b8i=;f<(lHzYRj>@Ae~n__r6~D@4CN>95c^BYFW%B{*i!xLUzFgydxpQG z&Un#(jJ{n0Sk}!2X1Qx-eWMI~xS&~ws>s3`Z2ciB>oyXb`Qy_0$Y*g_J!1Pre`BR1 z{6ltbDxkbRXIH}8lv&CHwhP0r8SZ)j+5;VacSkAZ{x2l}GnUq&mouv;#ua)}o03Ms zhBJx%()Thwr;Io5PoI@0V6<1{k-CdOk0Qf$aw`+^F@*PWl#$*8x9;qxr}E1K^W;)( ziG!yrYF9A!sCy(}2@}w|iYY&T+w<&EFF}H5yKh*W6Kg5ZBRlrF55bdCY5M>)$=d?p zjAaJIu56tAJ%7<}1TKExI`kGJ)E*UPty{C$ECo^db(1^m%lZp}JHEi_^ zix%KE*H_^&Ur?(~o`7PS?aKd{6DbVMZp&W9$lz}FM;ZfSd#m<}%M;vFESrv0H7zCq zhsOhNvZ(QPwudL?MJyT+tmFn?x0m#0)h1?6n@ZzFi;o35*HhCTj&{I=4N;=h8JABE z$F7@)feY>?o0vmxn)mn2sIo8)xFs-@Rj8c^C%?wRbCm@&z_4&QG5fJMDF?Hox)zBtk)=d}G{2?ZB4*yUqWT@SMW?kHMPgwFXefnbzoa ztEC7VJ3*aiW4hl>@rrph2Bc8g-j(pXP$L>3Xt-$c9v|ub#geZ2vgr_b3$`y*(E9|F z4V0S+j%Oz^*-Q<{fQ3>-ig2i70EiS;Xy63axGB*E7cevqN-b|`!!21sfiZfv3U^#Q zC0NNBmyqPtPxy}*f_rFo@(;G*+QCX^mozfoPUf2=eqX}^0`v{X`ICiSvHtXK18fkx zC>K_y=238L&JL_#2OYNRnf&d~kBYH@*Vi|j3lW&%R5qulyY&S!8_C! z_rGL<@8EI2@Cs1KGJ#`n@H5F30#YqQxZ8&3p@Yp6q{P^VLQl#5r2aO--+Z^a=wEE! z<%Tt1TD9OJio4pRAakAUTOm2}K-!S1OZ72?FFP-BXD-l}f%1@XgpE%Ttm7f9K70oc zK>!_)ZE(&h2Bdk=VC?hco)ub;C#=;3P~Q5b>sydMXaPH2fSx7{W_g8ee5wKv+FH5~ zC+Y>V7l2HV#;1ODgO?+1l-0-R_{+ON)Et2t0Vt_Z&&~gQ+j}*wtMv`vySMkx7&Vby zk{h9-;`K&EabT&Us9rYk+@Su#IMp}}k%5Co(MHA%X1PSYZg>#xs}|_s{B+wd+RDfF z*6Mml*$tbk=2a8Ja%eh01a%EE7z^s_m?bVkUcb>#40=4rgj*!e-m0)HOw2> z>(C9DJ@aUAY6FE4J6oEqscVN(zEp`B1>#+{7K@WTsq@jb63zZ(ZI|rHr8Hf{jFO3m z31Aq0D^o!}X|7lcXRu+*5}G*R7XMaaZ+f%2(bfy9V> z@bV@I`f4LtcYAF5wF!QN<>d4TdF~#Q3#L6&#`9Pt7JB0p8)@!dwI}lBB`Dv2?FkpZ zM`NHyzgxiKIf5YQrrq=0;1}Go{B5o_Vujo4%X00&#<5w#^;)MpZdZPTm!H)f&U?k=N+ftf2O#IrY~lzR=VQ0soZPkN7{7_|~d|2}}%@24Xb)(hYR+(=~bt zgC?E>j|-@t&gkZ_zf+KpQ(qgx(&Q&D6ds@bI-iSn96L^JTWp?V8HpBk)b*wVAHBm{dZ)5 z|CDxMopoow55BoYO3o&f8#UuLe_8ofRqX&&jYbXzgVKpGhG9}%5}2$Fd0Nd-{F<$5oq9PcB#4wM8oM|tgG0Vn>MLsHL5@8)I`pHl~Fykwf=$!qx?6oHe}_@2gVQ;%D(8%(Y}*(^qlxvEs#tOsZpT&;5qH-|~WAA1_u?8iI#@3}< zY`7R=FQ*UZr3`Nti#5P^WbL|ahAOP>tmH8cx!_o41{8NJZC{Wq!kl#wjaXrVzfhzx zV2)!q_Okh)cYS85U7kaPuSymv%{sVyhz0>*NPf{IW-6?%Pm6lDm)p-j=hIddLZo){7F zEP7QBohjR9UlbaKi6GkwvzGD(U*eOjbo@k-z--;TU8*{l6LwAArDT;OOgRU%QWFo= zL+Jr8w%a%MXXdG{mD94LiW3n-SJs#J2a5k51uS3fk3uvg`RPk0^72Z(hOTIE_l!5& z7AYcvms+BRufX5&54Bj$BxmMDJbw~Na1EP^8-FIACwm(7QDn9djF_E#ySLEja|Gx|O84k2R*r0D>QkB*x z1t)!{0x6nQGI+h)kl4GD)6DE4-mLnkSI>!Qr0eoF-B{^%8yz}CLQQdQ+Xj!04s5K~ zs7>A)3|TK*$|eQ+7EWfD&_pG}{g|D4vBKw*+zsmZRX*H=Rmd29OL7?Ye<)~{MJFg`_5Zw<*vy^=m6lMG0e4k`~z1z%RtMiS1gEzLFX4JRY%=^FXjlBaE z&+@m#g0X&Hw}WY1KI~b3kC#Q2orh5dgLAMVaoAC~NFI#$+UpN{^YP!axOW`L!=ySc zPrvxR&Dp*3D5R)whR)7!M3ft71asaCyp-&GwSf-P6%G&`QAM7TuzTvq6+S> zzn*=OqaPg%oe)C6-^kJ@+ch(7fk$W2nGAa7mtP&>Xt7orH6GT-$)F97ZJP< z!oscJxLj7;7N}%GXwDv!3pjP+3re9w_Oy1Pwnp{^-y#bMpi^EA+^+I^KM%*VxX)p& zxcfw4Ja3(JJPgdbAMT3u9;?3DCL%aqcC|O=mHj2scRy5jZ_^jN-Sx89`;B4U@`dY` zh&Qq@%d7hBPB-dizP#(ap*>EukRkbLC5wSU=54=!J;zDu{AWW2`Hp+m(^O^XwaSYA zdDnTTrzrYa`?l%Hnjcs|_))z1+*^-wZ#*m1?`=?O(x(}A-D4BC$-WxhZLNhQom)4I zrcv16&inZ38XKO%NEi){`EGW=v6WDw;XpQUf2mE&^ll@3oy&eb1=|HZNMvYl_vU`; z_Tk{b0cFKZCmo;d9+t!)RTRW3{dtzpyXwxqZ}6H#sOxXMyYF>NMKeRg@<-i%`U#l!0io>Ms!l0ZOpWNQUKDv%G7jhoRYj ze(e)Qg7t@sfo(ss=_t~R^T>l0Re zl^0}gZad|IbhqA)-`;*y_2=|v1Gn<^>qd3-HD`X5aN6neOs-1(4Rsql$9)2VM6wwvVitps*|5Wh4UQF-lPg~0@r*iyuTlTqar`r#lkFA~7LUMJby?lUi(A!JZVHLk&!6-SqdpyXC9BlA<}fs|#VL%^U`dRJNlI6bK8InCF16C7Yx^RR%I+YbsfK-O=m%%sK-!Y-nGi75$gKw!* z!$tT@z45l@j@xkA=F_%Pc3-yAm9wYaaJja?*ccuxES+9@}&9Eud*SQ zd1pUXYArY;9_g)qq*5c8+g)QjS)`LN0qngy_*P5>{QB`TY)*32O00-`n8G&rp`8a4 z`AaRps6^4^iL#sTBB&9ki*(Kk?xX{0joujph$^))h9VRuAKlfWJ`$gqTpYbkvllm* z)FTLf_Pu}c{eXYq%v-fvaC~`;o7LU!wpLb${>Qws?X}{slg3 zs5|*gLG-tmN`t|P?6ACZ@V{ufzO4$wXRqBGy|HRB^%ZK z?)fXmWqsS)r2pyZvFh2ra;TlrBQqtF{O4M<@jJg)%QrI2i^u1ePLb=U$+fAFO5dy2 z`$vQIF!gyxjaX$W+7Ll~uczKG%lc>7gVgIEF3Rr1^4s>~6lorL;Sj$xE++l@tmsF* zUN(4O&zoc+Pr-iZCQ{xB3qdoI>>BMR6_gZ#_VZ5k2a8hSQUL143=wBoa1EjuD&$ zTKI9?)ys#1RVZ`Q08c?bE#AXb%xyhf7sXC{FIjcaSgf-2IK&S~|z4AFcN#wEfS#mmXq4Ju4Ywp1^S(p(qEQlfh19NhY z3_+k~0k^)2vbJKH+W|nrKBt3Rk0=vGk)Xz)Cx7{Wv4E(Kfn zaOStu2TFGB&&{oUN8q+&idTi>e$xI(VTfo4uKC+-iX9}M_EQIJJ?;V-H>tuO=|X41LqV$zZGu}Q zgrOM64P-5N9U1<^1d;&I9UjG8XE0D)=)$xxTVO&=D?BN=R6F5<0ph6C_a12wundd; zMa5hE;8%PEBpe7@t6nP{3?fKij#vzY${LCQlla8qOOGxXz+5f^r z5XbN*LI2M|0UZe)GIS}Arwm4i&iVL$KiwQgk!Hj80V!sB?bFCqOtr??OXQ0<^ChLf78Zn{|_PfBLY@!oKmi1S?U6 zA%`S`5Lt(4SOsT_16AQ%6)m{?)*^k5D|$=SbvWIbLQV_%_JVpJU|pR8ffYrU(?il_ zglhA7T#CCsjynI;5d!&n?59(p=O#dh3l}4vgJFwy-R7W&nyc9j+~!O(xf~&GN*No z|AXTD`0;~#64`XrQw@KfQuBnN#(E}a0BJDx+XdCR@1>|#{qbAW?~11E7uc(P=Iom= z&~{-FqRbKtf#oAPsxe1;Z}^K zS_yaik|!eozxt#mb?WFb>?2}uxXFO&Y{grm!|0<`CN^2PN$)%9*G=p8LWvA*&Y?`P zSd{@7C^;rYL52=D=~DsW9as4Aa$>#zOO=H;Jif0!e;4x+Nb$YubIEZw*X_Fpn$tq4 zFjLSVKU-fnCzbrAaTv(~9L_Jjxw(LENNM^2)5Cu+!Dp=pjLzMlhJ}KHXW8D*7j7DN zlpslc!)*FQs=7$v>irI7mFX^O18h|X`B5z#9fvUsS%5O(6m24I2`<+M{DPOgAN9v} zzjOVIqFXPm46QnT>Ejn+I(#5ozJOZ@m6~1kh*5*p_YqkbGf;JF;vxfSc=IgSy#2Di zvk?cM9K{%>X9M;sIjBI?N66N`AnVI=nGYaUTSVrT*9iqV<=f*%P(dXF+6s=Y6kR!5 zV2CKv%nTwO($B&q4ZKf!fP9)SWd&I(xDcYwg`YasF3b&hc9rwq9@X!xBsk5;!ZNT^ zD7IoXSwT7C1uABSmg%i+eew}P@I3US(kF)Ci(v@A<&i`g(y#n?f#m-Yza>4z1mbRD z4Ilf4MZua6NJ`Le-jjd+T+^pj*F&Z)fmY6$rhzWbfL!nnXADq>MLC$&?D5-?aA|l2 z;gHyxKT3VWkRb7#Yumn1hAkg0@E`atOFh34BxuPJBu+VbA^Ccs6h^mnJ&-HhaADez zK%CXuf>kO~p0 zX?Vv~bAeHC7cyoI=T}jA$M{^#BkhW@ah|0czZcCzshw*!cHtbu87+czGMf9Jn@M_;>To?VIw52?( z``tMNZ&f(M?Ge9VN@XE|z6v_j1Df6lNFdR)F;=Oo5B#U{Cm+ z1p)2FHtT?$k`yA+E2U3d`uJt#Ru$JUNm-Cm0>mHl;S_1?k7PDgq8ten~crdrbp_0P6BiU zJtQiq;%z{6>zO)X_lU4s!&#&TkcPs@;4MEr0Qz|Lc!S{%=v#Sv%Pn9(8*?tV2Kd zDn&fQ?Llkb!lp{e6@7rUI9QD8r+#-d_JDX-ns%o9Fa<`yXD@($HfnYja|kwm>i39; zTGQTZlO2F;qyN}vV=eHo??X2vRuufa@+HSQwL>-*HVR_RPQm>!SvwC&gVQ=xu;118 zdtl83JPVVSSWWasV(si{e*{ot1kh##e4od|?T-Fxc_%E1UKQ$SUya>dv_*+tfC=~p zkOp`Cf;J4f0{#|mUATcc+eT$9gVI0}sJN^Yx-Cz6eWqA~42VW)7mz8U`c~-NjI5i{ zETJjPgsA0PSh1%oy*)YzWrdP-ID$t{QvH2ouwmx=KMO8bpM32%oL+V(d!W`G^T!!s z;Qf_0PLU12%Anmx(0dyxO9K)xk-T+z;caOzbY^q%x*Dmd05USp8&QWs`sgG0BHj7p z31AF=>u?X7DfKwM3siiD=*2%kwG&{ausP#Je^ZAese8YEP{28~h!+|fU*H<^5DGj5 zN84(a&C{njm#w2lLmwP771;z8Q0e5LjOK=_^b&E|b?4E|aHp~n_K%aasBUaw80OXK z1J=B{-RZ2SR@YzKs=Lm^I-K6MC z=;35k|3ALaRhNI1JEXXZo&2k1_6cki|@2nr?+qK?bt?7aXZh6S$ z=mF`gvBe=FRTPV#*=8z9W#5Ic&<4tKmB9U&II>ctkX8Wx;?2}@8smx(M&e`rNLSv5 zZ+P5^(F*t2$j{MMTKy|c0U!aS+;KWkX!}va&xPE7-LUO(i-Iy#drSI3oq?hUd7L zhY2_hAXj%ex8%j?X&qWCH?((=ele{CA7fFZ0ATXJ+~P!gC9xeNLiADuzW{APb9wDA z<7G9kyt3u83B~7!H+*&vA5XbzNGIvew`{ACoOH16+s6Nq2_xI4z_8G|E>2j6Y-FEa z0knf~kJZEZB`L5uv8quG9UrWS`Y$X0XPC(Zr)t%2`jIWG2ZFTo(|&CMBi|fASL00b z#J1_)b7K+Mx0Eu@D;m7lBhncLu;d0yQImM%Yn*`0ygr?@DgCO2Ui6nsobvx7|fUgfM8V5iG9fYog zOXtUCBecOtI!hfQb?U4=Ty{G3S0a2!S;mtDvJI%=o#=OmCr#z-lQqC%!R;12?FN%HxeC}1GktTQ#4i|> z)z#dlOD)f>CT=mxq4P%U26DmoH<)d|0)~wBdh8oYumm7g3_vM*P(~Yk<;g}v2}dCs zkT#;4%vVA&GYCE7y`pAOkA~IprYVt-9QPHs^WHol;b# zG*w}{x`8nd?bIDdZnu+Zg*ch1x#7t>KwIrDZHyF^e*G}Q5*BQ;~%(47@~r64Q$(&|=jNYFRM{ zQ;KRb8bN02j3e-G)*D{;z)fgSk9q;p%Of|GapJb$DA#OCi;6U^Sd5Ju_XM^$N-8`` zcZyzgsWPizoK@ili9u!+z%9tuo-CFuFnaOcoZVR8$7jI9JbzSs9dYsG%3uKwB4h)} zl*~HJa)626H{}%Tsi8e&#OYr%5k&yBZKbSsA`{=opUmK71C_}F9-~6U`ASe|x@$UT z2C$%QT_H(!vbE0tb=}DTffM<$~`S zwtfW?!-TLA$v}e^+~6+r`=b&GZ{LGk7d{i$#u^olC{}}9T*NM~}TvMV2udTU4`*blQQ9aN}`B<_|p?8BnJ@2FkQq;YhLSyHF}_CPYl~I?%ySH8xzI5ct9pA z-tBa+dp|Ia;oU8Wj4iCOFzQ0})rU$ac=heCF4Un?h9KMvhe{(pdnsF%EY*l~-S#J6 zaou89DHTi5eJ7ufUIqJ&w=FR1C#xfVJI9oIa@-`RzCTU#oQ1O%{oX6l^_{U&9RFj1 z@c1M*g&;qTV9NMAYk@M@Q>1&V=Qy6`ee>0-&}p+UE0q7W5CQCH*ikWTHce6)aLN^4 zzrgi9jHFko7E96bj|GKoXY-F_(^ee?<*9KWYfO{EkO)6*fCRo9H~AxEL^{WBoPW1- zhH^ZcVYFxOA?qf@c>$=%GnAqL->3Ez&)fUTm1%PVRSoU>q1|n)ZqAX#XYikZn{sc2 z3d<)Lo$?W>XWteRcBK0#w|<-!)_fN`hzR3^;9x-MMq&iv zgthQplaKw`!sFx#ni8@q1!Q-G+NHcBt-(g=$dW4ftbld{2r6hixB@brwJY@5y1^pU zAk&?X?q&wUun*sAQKQpBzmdZXGHdv@HNLW7#HRhIruLm~!h>$kp1#+866*Y4ry#6a z&7*)#r<)U9yQPq2>){BRs({!l@0gx4aCPRR0ap!h3Y;5^I4u#AdByUd>Qy1F#SFm9s@&Mg(fP3&=-Y1cK1}$)Kuo_@aWemGE_y zwt+ScGG=3jf~T1+SlhE_&7EOcmw`C2!L?-z#aevUOtMSJ{~uBQ(8tiU`g$cq8A|{4 z*DA{?FA}gSpnk9m(7psZWgwo2hgqd5Y8xL`+RRm?TTtJ5w3=9(_lvh+LjD-wtx%dTP5i+On#d5_2_Tc+=vS(Hy=^600(!l3?o`X$$!-dYg5iA++Q zOtScbsPr`Fb$DF@*(aaWoYPxbFoe?Y$+Y3bsNS9z{GR;UZi`$5m@mK5=yDq;BLI(^;~vb>hLQ5A?t!lDq(opgSIMtymeh@@GwWQ_KXL!i~6 zXNDkt57+5R(`%tm@fpJx4#OCu+&Jmqlmnoik7U-aNAd?!KbydpcWJuE%$n65RN25r J#sAhX{syB$<{$t7 literal 107906 zcmeHQ2VBkF8^2}mUVCrqYH!+m52ZacHMI9$Lj2QfrDT-esK_26R92}-gd{0aMk$1h z>imDtz3(qS*KJUtw|hUI^Eu~t&OPIKzR#J@86*-DX)uX}g@oC&Np=HCBpVWmG<8(MpG_h;uVEsw zVc%F%m=Dz-vq&T?UD}_982fW6em3+oMniPba|u2&65wD%+|q`KpI;bpDcMoJ!LKs| zalr_3l97n%8YHIUhJ;*?A`vm^PUAw_c>E>2oG5BTNSj${V@ipyDM3cd71@xS5dE^? z@x}PLQN(KhHsj{Bf)alTHygr@ART(}_>#f`=*{c8Hk0yC0wun(2pckzqZ)c;=q$dR zFdNbo|7xTJzNLd0zaT#wWt=@oF)2yADfvtBlM$qW8=!@V2{HbKb4O6}zHJnP$JY>J zL#7JkZ;ZlXD&9o?1O0WiHR#2QDvH7B7vyBau>IE1%U_tA9eH>iLLR;sD8^9FjZ#h= zKfsV^6qiuxz{?M53JDk?F|`^bB7Yf+%kd4J#5{>^VtnvlA{m1Od6nDZwwFJYMQQO@ z`TLsYSKfT}`d=MQEAyw?s*y`mwyBoZZd;M`)$@U)uZ? zB}Gx%{=|08GBw3-_^X1^4gDDO=R})cUiAEE^H-6TY#S>O#|^mKXqo0W`ERfyBUf!Q z0^5BV8~Pt+d+Lz8j74|zr$^I|`1SStJ$0$$NH5GbQ(~j=-a?6tJTNRQl-bZ?nsF5^ zZ|KoqRrL@R-njCed0bhFXz_Pq}IFb4%B)VvyzOwb=gp~JsJ7xlhGDCGV(KM zUk>QyU;DBeJ$YRAoq74<>396c$L*cjKSDp=*3h$Q<*&VTyXsF%zqH5_ly)!^Gg)+v zs=UHCG7WVO<}fhsmIqsb4JlwY%uN)rak#NObv$m2&9#*Oof{C#Mw>r`Ef(L1%@>}1 zXO>7&=T5}e3s#J^wxdgtUotVzgy6NQ)X$kRbVfjC8D}#`rS&!!p`LvfmgyA^Q<2z0- z?f56coZ9xTHK+1^&2lpG!s=uAawTA~QP9Sr4=t*#WZUMfPd!LPk^Aa5Hrj#f2! zUj$~>zDvl^RuI`lbF>?Wm{xRz4@!(#ha!WW(6)7cC}zDsii-+Ho5MZPDi2GvX_Y$) zbv0`@Ey#PFHP=mBH4dzO`t@d=C08NMa=o^)3Jg%0QbEo%+p zQeH_ZE383M%U^>y)u`+KczVCuZm;}e0^G>da2YamU5gCdA}Gel-V-f1qVcoyK)Or6 z>JR>u^2><}cevh&uRDSr;O|UVhG4y6;|gs4gUx$1FrCyU8#ZiA$A-lDdakat$N!!v zKaAlM-LN?uHg|*h<6d_%^1?GEqP)~~ z6nt&1y|Q)1zrFJ7X{dI%-c4MCx}KjyxBO6l&xVpw5>|(8)YvHQeIC^H81PT_Bx7^B z?$zbqEI;sEOA^x`VD(HK61_KkQ!v{U^)=K+a*k z9mdX*Sic5(5m*a{u>`EU!~6io6aI!|%Ko*k($Smp1MSbLATru)LmfY)2UGQSpw9vK zR!oNndeze*WCZ#>sLy98Zt7U6D>QUe{)YOO=)r^A9h%3L58AE2picn)LOFo9Vgxrn z2ZOyCFwTJgKwkjZbfw(*e>y5Zag5fHyS@Gk&!ac(|7!V{sjH%z>c?F&m$EbIVh-a> zeE%r)O;Cpc3y>w*fA`0N{D7Vn{9(KSeH*x8+yQ#l&ai8b{{q+^Hxc>FHa#Ofy({h~ zyu^=gK2U$5K7tM&#{b~nf$8O;{(^g_GqwJLJKlv_e_>vb;7aYM!JX(z9dEQpNBiZ+ zc)+WG#8e-5NP~#nIV8}IE)RI@s7d8J;NZNJOyN7!R~IcR-vJ}o=L38PTwt#c@Ez(h z?Dv6jM|))l|BlKJ;liTf?U!G*5~ESJ!}L4KyC=drD}P6F)Sle*M7g?}M(5?HFGn58 zO;_{oiT`z_{E*K#a@0k+X>a`ybmm)Zp-y9aIWYN-wqrx~>eTwM4clL{QiF`7v9=2O zWCyJN;BLGw5$Wz~`H6BQEaKZGnTPg=-ufZzIe~Qu*#D!Ctv|pzL;yDK(ZS{~sa|9h zWWKee$m7gj{B66qNZEuL_f*YSZ{*1e$IK+Iq&VRfe z>)JkjVjjKe{_*nTbo?1Mqx`=Y2jKr|GcIh8HfNtSP~Y8|{tT zfZ{iYqurZUp!TapB-{BRYE(WLMZSr`5ykGC96p>+Dd{H8UP1VJ9cEK_4E7>_q0R~2C~Qs+p`4xbvIW>!OkWW<72CX z{Ot8msGAvbHc_JZ0q=i=|JWIycPV~6`~5H)+_X7RUow7%obQsoc~fY%12H~-F$Z9u zmK0_}G1InB3p{9kr&jSgZ&<-yf$i05Hdkgx{lNgO8&+^VIvLFC1hn_&Sm;kq8+c%* z#NPZTm$5g?2DF=C{cvyQ@h7JZwEqbG-11iK@~We-Ka~eRLO(w@H=5^j7xDA((dEGc z*Brzv^6h@UKb3C0Tt7lT;0yc9IMhA9qn}4oml~!W`dt{F*Pm$r2>s;cyD2m-bjtdU zMzTdBHOwL7yRbizZoEugr=N`Gdlge?1R3BJQ*Wb_pO+ua3#g!m1wF;?uK4!MEuPn( zXm^!<9`U7Zv;+NQ)9r2ab1V(`CX7pk{=UDyO#dRi_21Aq*T1~29fWod-**Z&n`KHH zZ~jD@iDl{xe<=|G1Xt#tK3_MQRX7zYO%9@xAJi}Q}T;~pFvq4|+qq_F)@aK2Z-<@*zR9puA9nXJyv;FHS z47-y~XZXYY9sgS&@>6ETa>G8~|5+O8b$P!v?OvV`fA0?Ihdoko9v?s74EvxWR|DHAY8TvYl^E>J9tZcs`oI!ub{aja&{EE69~?Pz}z4I2Hb%M_&4l% zgT0;bP2Cgr{T-0KNk5ziIheMqOXld2M9P@4v+*D7OC^^1N56@2f7abq{7PDd+#-EFkRZJ?j7U+ZQ|kbToka4d(#i%oNNOH)DI8;l2d8$CdaE zd;WifcKGk_rvC&+UnF+s5$65Cj}w8|-K5skyD*`j1N!j0BH+FS;<+n0(?C6M#fI#D za^1A6^gk%Qjf!vQcgftnbG=LLKiq##lwTMN;%gy*4V<4Lp8bS#A4H6yzQFnKAH|&b z|E|(cySCGn@6P&vVmW@7n?Zlq`oFH=P5U1P{vEG>68k=o|DOKtN}cLV{v{WSAUmgX z$PT;D{fCUxMWiI7(P7&Zf}Poib9c^K)N?tY3&p>oZG&@a@D1%ew3Yb$2kuaX^F5#| z!{4Clv zpZ~&npCD{47@z;beFwlh-~-Hu;m(6qrr4da7@y$#kRNs3v@7Qbx1+!Zn!w4E%}nXqwOELCxx*Se&+)8g&yv-Cq6iIb*x4&?Y`j0pugk!e_z0`J7r|xzX)Mx;E;zdXTLN+ zySHxF-cIP~ymem<1KNr7Ys)HOZ%8Up&b4c5NFs&hdK9-l_P&Lw4Lf!(DrUOy&P7-L zRwFm;to=HFd*o!Sh)$*@ zP~y^~tt);&zpnvD3-!O8h22WXFT;;E(=)*t+~JM%m}9nR+!huMCH94&qZ9N7Is|9#_cgyD|Se0CMTC(U&L zjL&|?0k|h36li85+!FyGbbckVd}_D13e+77pl~B!Bgnw*Eds9?*!Lamda9o3Vlr?C zYX`9QprNPIWTex#K-BUvJibvhg;$cgl5Eem(&aG~eSo zMtj%xx^|WxBfNb%>P`ITdlVpgcj|S92m7*c%DrQM!h6r1m9?*j_ZI&6JJPgw3U^?$FZXn*D@LqQ3@EC> z@0b(sl)LrFoZs!E8{?X+z0>14eN@uF83Y(HEezbJ-vZH+!KuBN3@A|OMg!r zHtuu3{#`t{e;V#*|Nj4dd))P>(9`4ib8?`0{tv#x5#*qwaUgNrN0b?GbIX}A@b9Iy zpq|E`TgI3!_7qGBcZ<`?Kbuu*yYa{-u?+nC2>!6p#ABL&T5hrZ*0xH|`_G0XJhUuy@8gJ&8YY&5ss8;`g`XK>Fi8;{U_fiP`^Mm12BJUi z23d%}-mifBXZkYc#IiH+r(#XKpBC=t#WBZi;(fIEJ1#^%_EmR(#=pI`9dG|}nSeWr ziTBs`RjlciyFcO&_~Lhs(c=l+U2K5eHHMD|=>6xv;@2PX|F2-z6Lc`}|L=_DenuV` z_%rYa8Tc95fjEryzrHO$jQZcV@%!0&i^pT&&%mG2{`X%Q=x+TF5Aj18XOI6>gCo9DFJm`h@ z6~F$7Kd%47-_(KkSBQAw>%Xbk`!rNN@b`LRxZ8g}raNp4$KEX9v>>IuAzi&?B?LUN5-sQyJV1YN; z;9XW6R~&!99Dmyl^u~C2U$OgR{a3)=A6;)reP@WCURMm0gDC8+R!i(%BI3KGL`>nG z9vkefT96f@e_wO=NBsL5M!i{H2L64!{&rV382B^r2O0QTIqHk+KR-+Be=#1T{xj-7 zqyG0_8DP}^{);{IXAJxq_%qu7{wo9hvHmM9W~02L?Vw3U^ww-)O%K*|;hk+cY^{*q zxPO-u^<8dAi(YuN9UJ8xZ?#VJ$n@g=O27VyKXLsZ*6-t8sBf<0djg2-|DXfF^~B0c zzG989|Ks6so*3RK$FYNRr4RdTzy?{^=}c}{{|Em`bY(;EUOf?i zVjBBA$jC~C4H5AthQpqLl^WmgCt%>;b$ww^>i=-uaUGrvro*GH|L`BY4N&~I4WPvz z4~Mn|u%yMGxWC|cVNEaJ{#yTudRr-hukAYU2=FI{gG|u!4)Dh@r#A)w{PA#Qk?-Tv zruVzPdlLV`!YkdVB8+hVgHUKwg;%aaPX%m6U6^_7Eb){ z?{xPh{?~HPqvUWo z|M(g(?HX~sGxdxi9{#)5i2F1CM7+YK@zBP}dGJ^a&r$SBN& zjPzvKD0>cw*n=C+5U(~PBe;L~SKU3?-|@%mByn#C-u?q7csT7H0eJmyZ*K>VKYmAm zK886FQ@sBF?sMZkiGR_}tLWs(D7{SWljl)YWpI{@_BR2Ua}EW_>yA?){| z{hyaE8FjR`%T=39+y> zMJ5>dGw=r)_*r=;>i@diu6H#)qy6tWnPt@fp5x`u)}h}SkAXh}e@6S?e`SDC|NAfY z(C_p|{9%7LaV?Iv|AjRfcms&mpZHDh-mqU8PRy%2?(X7mx!eUs$6olQCNy+chuCz+ z5758hZ+pRgowQiP`tLXQ0%Gfdv}qm-AfwILy?~%6hWmtR!;?M9lryHzTI6r;4aENk z=gf#_j&Oh6hI=R>+#S{-+c{&3|F=7KckvhCU`HbInMh3S*)K7os!xz0pVD{y{t+JF z`d?iCaumaI19smZ1xpNT;`%@Q=Nno07i)a|AHqS89J7*)h*;z6{}4{pE#l{m@%4XV zIAE=?n0kH;WDCM@gXtKrOYmPT8rm)Ffo@v-aUO%6 z+N8*u&;&Kwi-#oZulAO~=M9QPyIAb0)--*YSsT2HKk+rIGgkwD{BB?Mz$$i8?xb+(4}V^xlyq)_-FABJyuvLahJv z+81K|Z*QLpEnPqJ-Bb7jE~4^Ty(R-a(eC5?0sK4KYXSJv$^;%4w?UWR(S6^rm!PBY zZT8>xIe5Cb4gFC^;|u(M-L-oTe{4+6tJrJ(Ku@&$IIr5%$#yjy{@2|!x*H!aYj^FQ z#2?Di8~s2}wfo)W)qgR5PvhUy{XkE)`~OA!x=T~f$O1b9imwOb{<oWpufo5x`M|Gi_lfuub!(uzTV={d zIe$m=$K43APewr9Gv~8r~d<4*n;VOZPe)N z|4w7~(}JEE^oQ_%9Wifke)C zy#C|=qpiny{l~*`Y$$sKu=_^w`cE$$>M>sbiQ&Y1s`2`dhl7pp5g?vr#A$BN{&n@A z+P2Z_2Yyw%kMjV>zrD5{Z~t+bfVQ1>zZc+7lnL7U2Kdv;1fDP$faDAEf$9517s}+viPxkQ)a64E!1GfB%&MM*Z)<*hBxuz@LHtCL1oKyoAg!{g4NM{h2Uc zwB3=LVfrBt0Q(pRZlou@h++C64*+`x{{2_>8TfaMy}k@bkG6~YGVDE?UU%E=j__Y5 zBY~6@H&P6^@w{{~o``t)AdiwDh{Nt*fDSM^nQn(b>=W~ zw@{~)eS2geN{m@Yar@cpq08q_pa@@E^zi;|bnkXP7Pg)e7O>I)oj$Uc;*Jb{csY3G$9=F z`W<{|AAfEnrFx_73@5ntq^aWs{#6^$m@9AE3@!sk%N8NmTrT8xooeh8Ie!aHUEyPH z_G#p0twkx{3T-h|`?4Ap7v`X6Pb<*IFn1KQ-XFOvSEl?2$0o?h7-gm(q{P{@${nTs zv#pK3gsp4P?oF%OzM%}R%T-Z9&IO9!S|1y9;nV?&dvmx43Un~U(n>?Y&L$MU>Z9D_-o0kw_%Up?FD|2=gidHHtazTIQ~wc_*?jJv|&$?fjlnkt&=~q4FLR$ z3NBOXs->m~%07Dpg}IxfiidZRi6SrZTA@Xehr31BP=ucyg+5yR;lEJdBZHg};Q!!W z5#<|~3nKm?PpR>nzrh&r2bqI3Ue!JOCafp0?MfQ$;jb$#gv3=Jw#fjvb)*F;W#rhH z_znKh7eHRd%NHTHg0J=8@#vpj|JQo2Kn@17Xt|0YTJ3FxD$7gIp}nybS`H?~pnW@{ zDE`Siqmb275fl~TjIL&$q{M;xf9g;o#SLva;GepC6Xn}pPX<}2FQ&*7$Qb0|X|ExyV04Wdy$*D zI;Bs*{|`3w+xU0~C)7e_s;Ir$)klAOp}2Kwq%KiMu)4o(nO|e~$-%?HLSX zz#7Ls6a?VwkLjzE;bL%r!2t#b7#v`5fWd+P3I{^JC4_1HQVqpX!>10%yhkZ3$!U{F zFa%&C4IPYGChn;=B+{%hWjSdb-v_VC{XC~v$2GiZC@X)k!1(yn@|!W-gEd|`3dcP$A!t8BAn*R-)VN{d-EVw7hW@UU32j^mT!x#Inr z`C8MPuc=q-P3ne#S=U{vkx7vfBEu&*@XtC#-~OwZG4leFeE&6Î{zdg1(PiSVxd*XG?VnW6RTA6!vGnSV)o8GJl~3B? zf$yiP+_=Y-Fgji$mH9nu(QftUt(n##Gv}<9U&J~|&}(A+5_VVa(!JYQjqTMh6uioK zRyj{~^d%{hW3%(!ZEPi?QqFtQr=!i~&s*cIk7TjTmDbUiV_55w>yf8Yl%MwS@T(!S z4BeMH1wX!i-F)_IrvH_;j%%ot{2*GCx7>7&+$HigBd>9Wu`Y@Z<(0Xo3MY&l+&XNZ z&5)IU=U?QOTUcBv`FU`dhoV-#AnTBpy(8{i7O5<59phbq1tu3yHf@&5y7#}E86?fu z@1z$51<%`t7Ar>ECO-_~7*#fEOBmM8Ds zxhL%Y^7<0e@DXnfgI}!DszBjMx*Ud!HIZjzOin z#at_1ow@Vc=QuK7f?mIGIQo3clEB8iT!kQHEb-pYTl`(hL9WurP$oS7E`n4Nq_6c+vMIGC6-ysgfVcQL{&xbrzwSIXRbY%pz8PXjpC=r z+#g;)Q9UwB{MoG5lFQfQ1$R53r<<)qbhpZUInOeD^uW-(@VrrC+sY=oy&kh8g*lL% z5@q^`Pv&ydBrWaAX_)7OGkdq?Iv=S_J92n~uLkI$eTN&AmUtLxUG6)wCLIU%{hz!np&mS9v=Yj!MfSW~&%ynr#&AK&n)7*c5x#IHK(=CfJo zrtORR7u9Ju0~0cGZ0gVZiJmqIn4nqbzlpoK`1FC}rP!%j;gRzceQuuBfb1A)gr_AyG2< z%|p{ML1Q=O-Z*U*7$;mIJ~Vs%0e;^LExY#b=Z_ip7ssG%8GZAI&p6x%&1E)!aquv2 zLWACptNaS=U;rm|Lr8qD#YQcyaw@yZ(&*m!+gTcLcSUyZ!HOEO)i!@@5fM&63w&S|a>v%fkguois9v z(5yH&?nudV?+;&s0#QoV)X%2U!80|*TkWniHq}dB-`Ox@dXpEoS;o-N%hkHF8`qqy zdGRcS@5$K`XTzHdJZwj`1Q_Mr*&D=~XH6!Z_ir8;75sO}vzb0|k6N!ivrDkK?lYXZ z%69WQi^k8}9G6QztoCne8Dp1Olv6nE@ZieR4Rz0|JVxp0mK+Vf%U4qvFCA3nw2j9JE}>R7I){7n@XD}t)cI7h{od(@tiMHP3;r~O58-ng?`m216k z>zn-I)Xr!+d%`wGe)_v5OG>wXuK7}bX7iILbECB%x>X6qf4Rl}w7P~T$#JS=K+C91bfP4V|HOuK&ZUJ36+t7$ zw7!@T!(90&%ir=2mz1roaFgWcrgVw2tABGP$HpubI<(kwHOlwWU#e?5&P}(f+AQ-g z-k~4g`ea_JGc0Cp`JyBgyNy+Nr7(KTJ^6i8*6T^P$9qjMcd7Oqy_+lQQ{bV;Wm(HL zcn;iUc~BPaJR&D}T*AVWDf3FpIFn3Htl(T0Io!UX&Zg$w*qXvc^Tv-HJ92QTU%B3K zv6;^29*=8&9+z^ap>P_Lon2;j!I2A0Qd(NUVlD|h5fTD}gvYi(@| zY}kn=ySG!#vzo(eCr5{en8XZbTEh}2&nz``$W{`|rHk`P zt6h1JIurRlcmSX ztiEN0rQ*srj5KGu+P5in-^)XXG=9<5l*oP4|6vKAK7n*jMO@6J&cZ4_Ng|yk$^H7~ zqjO5Ga;|Y6|9Z`Bj<+)!^VUq>J#Tcl%)XCh$2sm~XW9CX-x#f=FEvzgV76JT|Mq&V zzc!W|&NpS6!`C|W{-)X|_hg#ZY}@r&Y%97a@20z%Bx;Q9)Fb^gdGt5J9FuP?Wrz1g$KnruH9#>)goTx zIovd4{0!)>;02deStF$reRMR?|(Y z^2nis9JEH8o?=;?hzE)-4$jeuR%EvCl3&{ z%$u%LI@j}tMe(8ibCxAvt`;@_JXhyx*}alP^UCYXGguBZ8O}OWkSBa;Pu*D0TXS3u zr#H+LJE6IABUgNQeQkRBsKKW#-f-yTi6uo^*-qoC_)DmozqUVPOZ9@N@8=h z*#BbIjbo-^uDpYX={^={EZE4WWcNaJ%GCMILo)^!21W|SnMvH6{WwGP2KTHa_QZ*1 z_Q9Xl9lnx1`|(Ltj=&*8IW~^@sigaYoCWS!otSry*<0b%yqJw15i^F4DhOZy*mC5; z9h0Re+t~8(?%I9v$~q@ID;{1ZzJ;VZp_Zg2$?Pndmxc7F4LLU9FHy%qAHN*roOMfk z^32!AJ@1#E-8Gr3dCx36vVnhyX!zer&X=nyg?XQEH=pts=?xZpg`@s#e{;v)1!xM#Y{w9_TVeAVI)rY80!qv6$+}f!tBso+mHz(4V?+ z(}RyLxt>iPV-|QVc=F!YaH8lq*AHV-!dQ0%#od~~wrI_+xk+)(r|d`M>^pvZ&I-N1q|yIwif+8y_}Kc>-J zBi}11?e=FErm^MkHr8yP%Se1O#QC?7HByuwDrZ_mag z=Ed-JYTII%jyf1k*3IA0`|~4 zF3h6-ZR_3}@#nFo@sRx1igz0qnlf!xzHKS2;fu#;?-{_H;z?^<>fckjy=tVr4#kp2Dn5fO54k)V zpH%nZAN3E(qh_VW$H&=U&OMM~n<({Soxi^x=66c!g`r15?zB|p=&?+j>M$rOu#0t{Q z-cTpDU1VHxVc2=g+JbZ9JS!GrLdV8&D)YSdQk}ueY$i9pC_6iRv*ZNv6(asG)oQOw zGr31DmFG9lA9<2B_ny!l`4vkAE>D(KmR5FQI(TyvMy+S<@R93z7u)P#YD#q8tfw(Jp!crklF)28)Mct73QSk*Q_Mn3VUGXpnV z+7+`mVE5(mo9~d$wC>Y?{qz}Yz%;cpGmbPoE)tH{s8_)fpHVmSPVm5Tp_O&=8;%+u z$w{l4VR70ck8js*)fh6@ex^!oE}iqIw4utr=5R$-O5J$_52wPSh{f z%lcGTv|@> z_z1&vJGbNdR(p3bTYct8xG*Km)pknp>RkTP6&7(9?5_--uuaBiC-14a8K15em2BJM z(a5?ie~=UpOQqVYvycS8is~|cQvSp}>4Etlc7-lFGSvCg&NDRwb%g6ywZ{MD!MtO6 z@Z}2%yGc6-soXv8P`Tyqn;XNnhiP+>t_+OZaj3#7)9G{(;u z9PY*Bc&FIvs#oe{FQ%LcdYYQ=y`>tJ9Zt05uvsZsEy&oPuMl?oTvghLO*!*PyEMpb zaU&LZ%ww;PXOH08y3IXBO*lBlbexvv&3AF)AuA2UFU+jH(Hyq&Du+Sj)I)ql2A4)e z+guAoHp--RN)|T)%O6=!AL`^)lO|j}NpXD1UTgr9{;>IrqCjK7opb(bb6LG9Dqro9hNmsRXZ+3k&S57>SB`28zNa>6h`RUL zL$5_5^m6zw$?I^7IGlI1JngQsndExrOo3DBl+Y2e!`CdaGP!l_X}H9$fuZBpn69dl ziF)sDJdE?YA9M4>0;hd4yDyKN!&Et5eA2C`3F#v|9!%XmCaI;R$kV-Y;qZSDd?GzQR0mC1gk0r@0 z-aastW%NR(*{j2qNkf0mYv04wv$;<1^gCg*AVAPD&PZTEX&Q^M7Wt`0*a+KK>h+s< zM=Ua4=Pa>8?TLMEvu=@&Q;2g*X~BjU7pllh7bz&6C0#4bfAVtFv@I8=#;wR#yQ3Ro z5x}RpZTApk$r*-Txlc}3th_8`?sej>|yVr!YZrJ#w`1r$; z!*ATJDXe>QuUK^r^S-&O28J#hb*FgQhl%XvtL1n=3@%{U}w|0<$}eb`mw zJvvIHp$d13Pl(xOwT%GR7S<_VEE8;fn>3NF=<8wKC6+mn~=iM&6bB)4~+O>p*P z{?sLonTze-#kE{AO!X~$AhKGxv25C{lveZ1#cWd2d9Go%<0GGM9CInJ>EI+DH_|W? zueQ!v&g%4IJLTTrToTI0@oISMe(yn`H zldhURD+(SI>dw3{I#sPj+l#%Zw+0`E1{6i-^Y^hU~tlIO3E zwob_?oaQrEXnMqG+ikDom9Q#ZWa89(|8DW$kD40Z9J(AJxuG`nZiLy+b(~ecZ*!%3 zL|BMYHXzl$(fq~TrAr+f2Dy*W(tk)=_G*%oZkqF|<7@8KG))?(kv!0Yv|D)4DI3;< zrBj6F*e>xrwcTjB-|@$9XQUSR$XzdS+5fU|3#UTZ&DNQAA`2SdrwkoNN?EUEvP_sd zL3lQ4jDGo)p#!EaO03>+_IA~hL2o9oO&GR-snYtfg*he|29xiLoXEwb;fgx5)a1D@ zUyPbm#&aoq^{v7>o6EBwG4H!H5fGF%;LkcW(e(Y_ryc}b*m{?juN8T_<5bg_F#{4N zwcMJS`iW)#z)ikmNtSz4Cx$NKz|hjM(3mmYXvC&m}fASbcw~*qHrBA zNp#JUmgSxvf&zNdEp9`vNlQ+_z~;!&C8-Vx`ncfYy{R7hOqWWhu(Lo(1@gGAlbe|K zjvq!Evh>kttJ#NI2fj-;UcP)tpz9NLt51I~tl~}M)(*;^Jn3k$Hp@5#=4>WUWAT%5 z=WnsbWI8W?qZe4~S{G&QGWf6XW=^cS$K08iebX%9?qB-e=gLI4UKlQOB^v8t@84R_ z%H9|-$F^|C`JEc;loy)zz|`AyRh+8U&W7-_>>HLe9a_YuVA?`j`Plzjp5}*?zlKGB z3faJ&y>(Dy$)1`c>vwomnB1MQ&x9vn%Jpxjs9RcI$W6yswD9~(4XDaR2E$HOKX0vn z6RSTwf1(sNeSNvR$jIT&xKzot_0FmvQpQchYDZjKy&inC?pc1+dZ}D~mca)cnGR-5 z5nNpD`%1CM$tvHC_XV~-F()Uk+^%L8Kbp#`vXL@FlPFEl*dW6!wLxI=-~}E_S40*G zMjX2PVZgkRTop{klM)v_Qb>^8U8lLg605{408AegF&IK;FOI7=j!ZJ>(bt1OP zqPlWKrSB(R6E2@CR$PN>ZRe-E7?#&3UI?+i#~DA>+{l^DqQT?X&8si|-n{djW!l5J z?Apt;2kd!kCx1Ox@^sSH6${qCaQHBIeA5havM|qEy%@vBAhC3^TkOGj@vS%4zkIm9 z)IdfpG`fzt&gJAA*0iLLrcU11!)KYh1PM+0!dX!z^x0o{h33cfzvgbnhVCC0yq0?4 z;r))^efB_?I}2+zm=?cCP83}roWhc%k|+Mb^W4sfF3o9rw`vkI%EfCuyc6;+eqM8I z^9SJthwsk4Vy&DB$Ugv=z-X-skX1Vca&eu4qY4mYynBm zU*!eqe#LhAYdKnHbFWmI37iWLtL8L(_i>yLcNoi7^1cC;mRXToU)>v>|0wiH)50O> zpVBEKqYFaj?#5<1q3_d}^ai7UULCrbTyE=Rc($4KwqgE|?97D@oFw+}kXy`ie3Nnl zo22Vo$GzaHZhBPwYUYlB8;5MF^MHuh&y(UoQiTJ>2*Y}hqL8Ix5`HfPWIKqh@Ue5(1)kb z&oQ%FzUDT1XI{y4_KT+Vrjx@->%>U^`t5m#lMv0DIYOXOCgL$tNEsg_vv;ehl1w z?>2fykbQ~ySW7kgDWqf0LwDG{FTdS1DNa$to_=pPqI&QG;nPDOv#Er+S6zA)R=3Lf z$lolMWA{IlaShnO6?)Dw_;?8>YU@q*#ZE?pUUNK%u6zHNjN06r|3roUMPj-+p~QZh zuwZHJ{MFkBF3Q?|klouZyFq6EBwf9~^Uu~uPZ>FWZZTQDP;ksDRz-W?i`Cv|GxsJw zI`MAN@zW2v=ggK%*8blv&Zerfo+G48*>2mvGr6}9BXGbJLT^hy|U6?`9 z4zEgW-v893af(>1^WZ}lxT-U2S`=faPZcS5@o#;Xyp-+TfmLS*em>Rkv22lV&FsW< z4?7qA<0WQ8EjH(~U()p-7B4?7N+OF@k;#k8r0G0*zC~8*={upcEMxI`#&5