From c925ac8ae8af62df9444afa3051ebb3ed410920e Mon Sep 17 00:00:00 2001
From: Brandon Thomas
A free, open-source compositor in the spirit of After Effects: compositions, layers,
- keyframes, effects and expressions, native on macOS, Windows and Linux, and in the browser later on.
- It is in early development. The engine crates are being written now and there is no app to run yet.
+ keyframes, 241 effects, expressions, 3D cameras and lights, and a render queue, native on macOS,
+ Windows and Linux, and in the browser later on. Young, moving fast, and already usable.
-
+
+
+
What it is · - Where it stands · - The plan · - Building · + Animate · + Effects · + 3D · + Export · + Agents · + Get started · + Status · How it's made · The Crafting Apps · License @@ -71,84 +81,104 @@ then to go further in a few places where it matters to us: - **No FFmpeg.** Video and audio decoding and encoding come from FilmCraft's own pure-Rust codecs. -## Where it stands +## Animate -> [!IMPORTANT] -> **There is no app to run yet.** EffectCraft is in its first milestone. The planning is done and -> the low-level engine crates are being written. The windowed app, the renderer and the effects -> come next. If you want to follow along or help shape it, the -> [Discord](https://discord.gg/artcraft) is the place. +The panels, menus and shortcuts follow After Effects, so your muscle memory carries over: +Project, Composition, Timeline, Effect Controls, Properties, Effects & Presets, Character, +Paragraph, Align, Info, Preview, Audio and the Render Queue, docked the way you expect. -| | What | State | -|---|---|---| -| **Built** | The plan: an After Effects UI and feature reference, a full effects list, the architecture and a milestone plan (see [`plan/`](plan/)) | Done | -| **In progress** | Engine foundation crates: time, geometry, color and blend modes, keyframes, the project model, raster images, Bezier paths, text | Early code and first tests | -| **Next** | The compositor, a first set of effects, the editing engine and the After Effects style interface rendering an animated demo composition | Not started | -| **Later** | Precomps and preview, shapes and masks, 3D, expressions, text animators, export, GPU rendering, the web build | Planned | +- **Layers of every kind:** solids, shapes, text, footage, nested compositions, nulls, + adjustment layers, cameras and lights; parenting, track mattes, all 38 blend modes, motion blur. +- **Keyframes that behave the same:** linear, Bezier, hold, auto and continuous Bezier, roving + keys, Easy Ease (F9), Keyframe Velocity and Interpolation dialogs, copy and paste at the current + time, and a **Graph Editor** with value and speed graphs and draggable handles. +- **Time:** time remapping, time stretch, time-reverse, freeze frame, work area, markers, exact + frame-accurate timing at every frame rate including 29.97 drop-frame. +- **Shapes and masks:** shape layers with trim paths, repeaters, round corners, offset, zig zag, + twist, wiggle, merge paths and gradient strokes; masks drawn with the pen tool, with modes, + feather, expansion and vertex editing in the viewer. +- **Text:** point and paragraph text with real shaping, the Character and Paragraph panels, and + text animators with range selectors. +- **Expressions:** JavaScript with the After Effects object model (`wiggle`, `loopOut`, + `thisComp.layer("…")`, vector maths on arrays), an inline editor and the pick-whip. -The live checklist is [`plan/STATUS.md`](plan/STATUS.md). +
+
+
+
+
+
+
+
+
oHRg_TTDJt`)UHxo61j~BNeiu}g&Uqsrl z!RH)q;l>Tol=;7!NRK|D+Xbe~m`dh?YPL*&a#cws$}%{O9F=8cSqih>i4y+IxUs3; zw})ojq |FttL)&*DowfBEF%Ps%VYlO>a zdMJqh`&tSCa)Y06|7-96(jVQtnkm=0>@~%6?e=r6zO}VC&(1mD`98FBbgWHaH07Od z+2b)B`JnfAefa+@wZ-pAczOPraaq*)8`(53!=QLQ&XvB)%xlgb-<{30O1uh9Ry@i^ zFfVf=#NnA8TXYp}&L4sItlL;dySg %j05{C(3j z r(Q4i+Yi&drg!Wmy6ZHQ;s2H)xpGs- zdT6cS4AUi>EnYP3hxR6kZO_C(wccc;F21KRwt{`W%w(LX8A@f=27mk+@Dg16#dWFz z?rH{k_yV!r>xE}ky_I3*6;wyu+sTkY Isf^OPuBxj=L}iT`+-k; zf9?@q)_2x;j{56$A339Mj7)6YdA^v6&q(`n1rJF52n(8VRmdtWXB=CRl8EOcB-@=` zh%puUeEBzPbWTh8rKLC8y>I%4BvGMz?tO1`!YnpJZBt$!U;X!1T$HGx4C_STz^ENU zssVReTe-=XEWXdSWmdz=eP1XLzo3;v( gOFoQinp|^ec^@fc++IBF?9*C&r{3dy
1`8FKC({=k~U;d(l4wG%d9>0(cKqIwTtiM1bU{MML8SM4{Vg80CRm~w4DWdq`u z*_6RH=Jyb5yiV+hwGD&C{{y*)U!Vl@Awu1#M7lc$u1*zd-WSI z&An#DXSONu{B<+gtVe!sDbz3Lh_i-l;%MYn<0e(F{>1+D8(&n~X8E!4#GJ7w=JKXg z;rXSujW=MQMR4C* CSa*f(av^@R_k=3>h706$x^f#~^+UaG zU9QY?zn*62HiaWM`t=1tL29lD8V0rmRmu;8aWPa>^ zjC 7Pt8wO)g&+4MS;*j; z(w=?o_Dd_BpP}QUygOzD)gxoOv$nb3*N`J?i)AEyM#V_W;Nf+nPX3(Ll2f;Ttc-ol zYMcX#?)ODT@f)t-!XB``k|@c2pYHxV5$~iqc{w>fs@(ipQlq0<-It9RA{DsD*QJEQ z1#gF4ayd6^I_w@wWq>L+>}O(GW4MdgTmtY0o3C6p<})vqpIt+IoR5}K+NyZyu=7W0 zP`Kgd(@wn87y?aHN0do4ZHSk#%2rk+Z26HYw^3FJ6fSHpv;1Hli*1#z)0JMko$N#E zjE}v5*B@-b$Qqmsvi_;Glq^Z=mj(ePX3P=6-Ms$dC8khGQwv|?+97-|*SpZJjRKtv z6WsBmx?dl3MkOzHgqAyewO}?h9jcmBnB9r~zeblXqVD16f#sLp4F{t-ef7SZD@mR( z+Yi)QeQ(pW(?i`4D=Qs)R3 -!r|t_ixujBF|qC+7{dRwRD3HL_>eDa{pRhpue) zZEOzxc>7gaL&r$qw(kX#3FX8=;0vwQ9T*HY`TE=Y)9q*Jv-?l&0=m x<&o@~+8U{h1Gb*=9yP zD%q8Phcx5CM4Dc0EW^I@gOyE8Eo==0NXt+DcX<83&~Sz70{gW_Uu6B0IC(8h({Uk( zl^YAD>6-C`?;lthL$9hYh)^DgALusV@N4>g2U+~hrSOzZm+1BQio*A8joZHAIfp-P zRdc 2`Hv5oh$k694gxQY1?I2p7!(N9>Ql)A6r3{XGWO8O5zW-YSz~pKbgMp z0Q>-sBQ7~$@;7{)mrE|Ks*n7jj9J;Al}XBXljPv!{ N_+84)-pJQteZ@14)o-DG z(E1OtPj`rr4^`3^;d`Xx@QKT;>+GKs9Vd%?m z;Ct~VW4rcgfK00mz)bI+>vvD~L91um4I68f?fDjpQaW}4o~#i#^OWzG%Ayt2t*@pj zYK!M4aXx)u5M!BiC1P4|n22RINT8<@4)@Pwy6k`FQUv%@xM$GA(6;buGt*A@7AOFJb>*M6~#bT@J!_OJ%Sg~!3)z2umuh`gWD&ZD@39IE?(D`Z_ zYp_Z&p=urR@dq;UotJa%+p;&shXosn&bEhCeJ4n!TVL_MQGhGyovYrMdvW+(e9cMl zcEE#aNT)@g!JtwZpW-vzcl8Rduv2bV$EaCr@0^dbkG_dSgxcSk8+- Tec!>Tt4t$t%xldT4uB1r@j~}y2RiqE!i{E9s-7!N{Sh#d zm5|RQkq4t*tu*XDsHZ79b``Lg4L!5f4*}1nO`dLefPr@xD#`aEUjO@0w)m;Fp!=3O z L$X5Zkd|zC06 )?wJKM39o2yNz3QIL3AP2rqhW!aPl*~@l&u;r6#DceA+Ao?y z0zE%8tmVh|{wb6HBNCI1ug!7^xm!I%(@ic(BzgUMubs|B)*50@_J{I}*x5HxP$^pe z5Rbs05BZ+ys~rDw^9&4T{l@%hJ!8Yxg;uuI43^IWIoZXM6|Q1r4WR$Z^M)yOh`ktO z*5W{Qk=|gftNjndk;B{ Pt`Y z?0s*%n=G_qRxRt`&!e}P{`Zu4Du}v24MVO{l#1c;dQ>-2<~C6VdEw&fvcl(ve{cdh zKZIobQI6Qn)dS%RKdGws*|$vGYBtv8OwiP?#bnUbprjcNdvAr(l-A2(b>P`bH>gr$ zu~$!JRBw6k{YrBWLa?)R&D$RldHEC!Xl^8Myi2*VFBk8?YFjp6sZ;Ljn;6z?v67a- z-}F$yHt!gl&sq?&cv@iYG1#GLCYFx*bb-75-nfHATwECZ0*)-N03n7?$WpuSAsa?{ z8yaRaA8MB*gNMY}Es 36T|CgcD%&iY^JYzdf)~N4z_3kpIW=5LF4Z85h`NR8fLMQ zbCI||Rp7*=Nqm%BE@&l&N&1rK6j{WF(&zE(y;;;xA2FJF(E#+dasz;-gpHYhrvgcj zbpH_-rusWv`k%7^l8)i`WD&)V`LS`ASUgN=fh7jLc{lLkRE%rUGRm(`PgYf>05#2N z!G$X9lIFGR7j5&MY`TL{gnt5}l$K(JFY$Fq44OvK5oiAhW%a{vxntI-XLiW?SYL2^ z=2}m7*@PAsEr^4AwnY&E*#hxzc2&Y5!K8a|=44eeA35V=q_TDgLpJ7ZbZbWQ33jh4 z@3i#j^fT@K? H8&;#oBKB!<9#|rYJe+&dVKyxxB$|zu7D25!&gS zD(7!2&q~K!L^Hd (G3f&t$jp*Lpng=M=f7YJ6<3%!HnwRu8q4ZRh#pT)Ki+;! z>Ajv?JOErdbNi5%xi-UdVZW1TsZQs5g%X_`<2dkQo;+%}6@nC5`Mn*n2~T=8K-}w- z+KGPgM;q4{LCZJg#3r9S{nABqYkOcuA!;m|AVN(bZ0C8x@e`g6+kwxgUmf#0pXX$b z(ILs|pf8pERa-{ud&YT2@h>EsZK_Mlb#D8vO@&OE^MQE8a91X(SlqmSPh$r%CNL%# z>0UTCik6pZ^?hYG#^6SV#qVRU_6>%jSxX1o>(&9Sj5%i|(mYJGL#CuH`Dd1azZkJ9 z#v#{BOJ5cX=b87eVoZBAA=#O9F1wA1+xV_N2RPhimYNl^%MKYq68qak5D;?Rzi2O6 zB_@M?k|`0~{lq`CEDAWG7_c3hk!l)34%An!Z)T;sm97CpXVhqU$8*fdIxQ=oc+x*j zf3#LgBQpYtRS(E&G8Hl}rcBzZQhGn}hl^f{Mv#L>f1%Pph1?cAmiJVCM=<$7RcA16 z8gvrbKc&bK;vm&*Y3_~gAJ)FFSn~W?`PO190{De%KQc5*3#te_dX?w*Wx%xrlbPyJ z%6(;Kyc6u^ou%JcL5@zz1b9e61M@5wE? Gp%itikaV z4~5JjdtHX@ye|yka9?8h&^5HH9kk?zVC9;R2U=(X%~(_w QB69> zEVG{ku*|~3%I5EOCaFJS5mWYnfa|NShkE^q^n)3>jS6K!`AVzV-iqaJmD|41U|(>j zLiE(*lWDk U1i@cP6wYQg4%e5 zpVMfI!pQNk?}xK4;ZFo7(w}BURFBc4z%_x6yKgIhs|?*FN0+z0ZkFf${vxq7%qZ5I z|1j6IT;_(|meB`Ol#4=th+6JQY_#HYK_IV{+t-mW zU3`+;a+A|HRZ~V^gU a!iN5k;fw5>FkyPuMQ1;+_UT2obUKmG^Y)C zo;CwtmSrP7XPR(W@5V}Z+};&*dAim4>T~&i4KAY|xo%eyb%M-_PV#-i)F6p<$i(WX zjlK6PAO5?WBnlWIPp7b5yIeo?XPwQVYh<|gp`tlH&k$isYxrki3{QjaFImgVvExm$ zKtAl4?5nI)j(ZIJJng%UOno`-xxaV;n_=-SbM~wO*?8Awzu^rc`}4IJsmyAV?+shu z_1y5EM)vsKtt`UAR*1#?)4JS^yWt~2a}&YWt9QkL$=tqIyp6u!=)(jX7XfG!$wK}a z!!SY#-p)2jX|k>-2>aul$z6QTP+|toEF08XPli?ckiDI&If`~E4rI9Q{VY9%P}Y`b zdVfn~*I3C7t5TqRQ2VSY;2G BRhDz4og rp45vr}BRV(T3h>>jy$Q73m5L~@ z8dNN4kj`Q7lMO~3OmFe`c_$GTY~0A_YituKTWO?)py8G>vOinc%;_@%zU~J%pAt6z zIVY~bg^EXp8efjRmVrItUX|^x#H(VW^_6!!^ta@G%D$=DeZN*nKR ITv~dpi6CaAN^5TI}a!L~on~KoEYghk>)J^&JGrN6+ zf_dVC5O2U$PqlkDwNO;l(YTEja!lld;=lMp%W~R}tTG;L{8UVZVlDp~kl||~gHY#X zT9J|z7GunOmoaazR9Ieun#jugf}e<*d`q=i!mueehMLSedu(}UU8*r!Vg5-*Ko7nU zC9D67XT%l#DQ~bfcf4Ws{>}?>3~-qC=Wv2K`5GDU6U@JCSj?1iEK}G;sFbkIhRc&6 zH!?)}$Qh^Ee8V))(`(uTU*~)3x>ph!ZK30KUR!yh0x@2Zm_wE}?9F=ZcIO#QTJFXS z0w(p?ba#PBlmtV1x& Y-vUGoW`;buXk1PqUuw(XCUdfo+ya3w21jfuL_cB3_+T9qZPB8+j ztc9jxkf3Ts^5H4S`d~Mv(pMXcnn@J>0Qj*j_AbJX@hj|TEY*I8eVcD@r7j2M!4zmv za|Jy3#8>B65fV;&i*}^zlU}b=?y$>bDZ>&t_m~_U@2sqrBMIn;>brhs^S7ZJi)#B) zXgWzgk?Y~pJnT%lbIW{(Ys9ckCBA1X7n*8{OjbhNK8C9lpC22^ol%E+1~c_;wK{J~ z4)RYvNTgZuEvs|Piad777du4(Bg^YnKDp_&5P1gL1XdX*l8<%vH_^%?nO ;Lcb!Rf2fyskv??lWCJxkKi|ZSwk<_n@ zqIa7;Dr f6i7Xj=dZ1 g-V&mQ7pOlcf02D z26fM69XW<`Y~${W3pA1Db|lHu$6wDNP4$UkVL4f~iOlp<=k;6w750r~VJ?WRq(Oo@ zM)&p%tc=2ZF!jZsN|CR`Xd7p2#+)X+wUmC`>FdeAzX-EpHRY%X3|&vWJGRnr J6Q!s~Q6!WQ5Rl$W=phQy zq^a~4r1uU95FpYaH0d> n@29h}PClJ;_MSa6*Yz6|=qGbl)nzs# zgdEY( zWIgKV$ja$^cH~34FNGI_fxwZxt%6U= z%j4OpR_WjH>XDk5%cZ>Xo90B{RnFaiA}(ZwBtQjkuPgM=(}>*5;xHj1RzJ1i*p^B| z7?m3W_j7shoi=b+`@qyq59G0o#4qMqG3assc2i%21>NaC6=h_Ujr_1`;W})6XKqLc zDSTIy=X{eMqpz>uQn~VX%%}u5Z@!`X&q~h^%&Ltz{SIo8Vp7 zTa4Zl0h`(C3Q3vVM?an@)>N79)y5@Dv7XnJArD67Z6!UU)?ak&^)EpP=F+D6Jh!&Z zTpO|n=G+%+dh~Tf$R;eF(ob7?4hPzMM #y|R0+kucd {$__y1En z4%((eNjLKv4VSy`O=?d>kystyugzx)QO*H*M#akR`vu%MwG)c2mE;IRGxWQdvxv^- zIvJTSUXzW~lbBRCM{h0~PhHQX$>P5?2_P89mBVUjs^GUD#|{Nds8Yu!KwPCpBP(2r zbX1jkg)aTs^%)x1&vqNdDj)G2uh7?@8-o0_FHddDgoM1=MO7}2o3>N@fI|*i1#}-# zyW5R(ZjEDYd+3MB?z=VB8CUxPsh$`&?P1Vo*M!J@FxIJYekfkPjsGcF>k7s-`TH)T zQY9Csm{cX7BDOd`@IZ-_vo9P~yxhe(?;XNSjJbBx%*WL2t{@#h)$_{V?z@F&&^5^{ zW1S)xKb`0tda1otAueG`$-~}nkhS8`;+ayteR)+mr|ERGPqytZ?;n37qe~9SG$KEl zh~cEZEw{hgDQY)WpXF}%+`!I9X7L_h6Z2JF?+Y^wH@pAKsK*)aJS$uM73FP_8*PO6 zBzHeFK8KcPbyw5vX~ZXsN+nTY6CT|8g41T)B7AtQP!W@0e6tI;b8;fa&ExCuR$VK_ zf-E#KD|4S1K3IfaRt$lrrPoA2!8c?sn&-C+)xW#&M=Vnr0KAvB+ZkM$|8wb`t`G%G zggR8RdhQ)`%d}P_{g|PmRMze<2w^4xa%6IgKqr%<6~mPftBJ^(VQ)DgbcN_juBvZ| zCV@ 15k6bbiW`>I{eO&K)o+EeJ5K5{`aXULJ z@w(g%(`{_oJV6^Tc(C1!6`>$L`@&g7AEz!Vko;sf`LQQG394>Mh3 REPWhyJ^6q9a9a6jh$-;F_WRf-9#&RKE;krldh z%^G8{o|uho^Z9seW=&K+6jD&xShb$gY;H9@`dbLNGBGS2nc6f{|K0ymdZlvc{*>c! zO_28C2&jWu$$;=)(HsQsrtZIEep)zGTLoEoHWpc>f$gYsP8&LZL%KI_lPi-iVbXPP zqE+;-Nrv~l9$2p0BGZr^P$_8eRQj>&X{m47d)@91+N3Ge!--~fj! skLXm zm(sc#%_~>Z|G|(j^Zv*l;!J?~SZi%9#`ahg7GT2|Ssze*Fay<{*pADa*k#8lYc-u8 zF0L_A_RQGEj UFy$dg-XH% DH8?Vgz<9J>C~7dHF_s#lms#!&?8TQm`)BgIPH# z8tCfnRLohf2>d#ApanFBdoMZ-3`QB7|6W(VAjbI&T~YL!=iZVs>|Vf&2*wjN(pj6W z`;OJ-Mq}$ry+y0cTa2fql!;%hQBtO5WfK|h-RvL~V7T_qv{SS_1BH$PzV3fY1^q+H zLsSD==^PIjJQ?1imVmA@<{L+;G##WS%bB6WqA7Zgp2og{>-qv=CEEQyl_z^u<+ODC z4(>k=FhPqT3hl`=4qe1*bXK_-&)GD+_2!Rva`ee_TPp9ky^qdzi^4^UrbP2Ie0Q<4 z0^ttLVDdjFaVbsCW&xSTgHv@PBLG^_Wch$Osw|n=DQzMk9d}78r=ReC(ZVCL-{qMx zrW(H6?Ten*#!Nv*#Sig_3SS6V_Ho*xwynADBWn;w;HXt3bi_YX&eaSIs9nzNf5;kC zF-e?m`ZkzYoRiX0RUzGa?hP}%2%=ajwdoQ?ChvZ;(mHNGEfpy9 J1;M5fKQ~qub)u<6h;)LjD&$8kHtgFi*>qS61F@>xc z4Dfm<)$s!cj%hS)0__7CCpIRVCX3n#0&gzp!SIB4o2U%?7ej3N>xEDg z=$y}6wS>ce>T~4r0k-)cf-RHR9Lc8kp)g9O8B|2n+2F0Hr)JHa9sDOE+_ni{PhLpx zSDltkRTQ60uH(Re=c1ksKu(}$!p*Yl0fMbZ)>1LeE&^(hKS>tr@NUQRx@Q?N~keQUK z34ooK+Rj|MPcv8}{5#G{qo$IxG7JSS3x2zeGqLdV)hSt(MY4PrcohEzJ1*;V=2J0w zs7;6TmQ*b!a9pMFQUVpkXt6?>(<#T6Qa D~|i9`+M70 zt=IW3tA$(6bNlZk!)8R3872&ne#pgaVI T^*$zti*hmPu31 zmj5`eRG e5oO !f)=b HR$ersyMA;E?K^EK&)GWm0?0&$A#ZJ z{4x1 9x2X}%&y@TLf( z8vk0+JaBGdsm^yBU#?nJiJ7x1(kTm10UmTyIO~BLsgn!Bck_y2^ZJf_SPe+Eu~`Tm zIzMCf&cd3&fLsc&s AvBN7>_@KN^^lOqA=ODz=3!Z %M^0mEi^loMtdc>dz96lF2{$y&ol->5iA9TD?IGGS7djIR3;Lq87GaIG- zDtVjvpgduq{Cg#bm?R# 1ItAoP4g>-S6!hHl;_eJ)dk(jndKmQ^#Ca z( -vt}~p2x$Dk+S;H^S z`?Bc}BaBRtw$}#^i_ht)lcLj|(yU9O7c|VX@ixx$(l*2SKh5FdEChJvrDyZWW}Hks z%6(0Al0KE=Gr#x8D1SX3%03nXhK+xK;j?s-<8p;D4M#+H^x*lFP_0$lpuRJnxb?X6 zDMR`vxA=+qP#m }w-Lp;<_HlM<@6nbX z8tT7@=HdTo>X>5mq@eUFv&;O+sq$2N@b~QPS2^@b%k|#_*2ztES4Pk~7lemdBQ|Vg z_oUJcG$gyIy|&W-b6$A1+s4S6G*u`gxEV=-#q6_8{>( z8UA6Gey?Ibqr)%aX?9^|!_b)W8@2SJzZZ+sq7_!!LrAz(ftIeq-dt87h&tuL(<@si zqdrzY>Sq3?#g> I7KC1;)6~B3g?FYX|EW2ef|=)F-h7{O@pu zyT!JY>ELD7xVFwC)=wbgb&ue2f`&l^koA7kN!1iOq`!jkGWki3uX^J}9I4*Uv7)^4 zO5ii&<7q@flrBUSlK7Y1n#6p9FcDkzl0$nu8qk@xCUo^)Uwa&Rc%# zjx{C`C007Dl6xb!q-X1#$F#)-|5o&*R}#HJZ)orq08#_Fr`Pz0gIp=z5=4CKOsbZC zJ-(?>>4LK7E{}R2XKc7<3fX2vFJ0w+H)$FKAZ;0#C;H47lP>HhliFNr2;HvRW6j -fguv{Uzj{B UfWuULMUF3q};Qm z^uq#_*_bw}>aR6p#+V0g0;;tAjT~Q4FfjrZpAle-XXT4dPg$)_-)eFhFeo4W@$k+h zyE_v+4M06?UV5x-DOTT5jUqWh&Uam%BENR-32aCnq#}02Q(E&GCa!;HUqgR%4)N77 zS>ty?z^sGX+@~$HGs3RFjgpo~{7HvR(*MudJZNhKHf?(zeZB< YLDp|N+ndu4N;2)m$_Gv&z>dyF zka`knkqj8%l38ZdAm>J<82Q4gjzHLP_d+Aoxlh{JNRMCIJ<08i*yFRz-E*V6nM`iT zM)!bUERs}{_c|}!SC$^z$)6O3uEKmW4ZVvPXJL?`6OVyh)}+!3?(*~O1WhF`Rpa_$ zH-R*Nf@TS>@KKom%sUoQw#T%kKTF2P7O{_=P9_g0lRCKdz}Nf3(5 _Ifz9AwBXGn3o~EC$Tun5pb+ZXwn~<5rm{_Rd_qK5u zbKO{`b?CQ!lJ6G4-~p+?$IQI{{WAWjkT_`|G5s|&ykC`iNGM=i;+>A7J-BfR{n)a+ ze|GC8%xj=M?ZV9%wBCmM{g%O0>YdrqfV%Zz;?rCCzV%BIaVAEhtsfnh@*nYLj&%4M zWXeF-XVVG*VaAQSWsr)pd5ebT6ALW?kyZyUz_z|YP*37+s!y`VraCDtVEMQn51Y^p z35(BH&3HcZYnx*9nGC=#B)AL0s`fvyTY8r-EYIguCaXQ|=V0} _XxvP69apSR1M8%rbC$~Z&>UV{G={5mWo6VF$xntbtLYR##1yY7-3 z_8gFr(9ra60Kx%sLr;apn>4)ehb^kb<+ex;f}>?YR`Q%nChC;s>f!+$0hX!grf_g^ zZfAbNa@X&{j44N&J(5428;)MG(P$|-9h@m0l+{3izpt)!cfndmMJWXwJA8@tZ&|%u zo`CFbh-$ GCEX$O-2KTed5i=7x8HRw`&DgOcwAUTJt|g8DW=a+8MIz8E);@F)@>qHiOdf z+(Q!G7V)kyJ>IWU*R#bKpZu{nllpGW+vZ3eLkmmeGnK5kc^45$N5s(hd;I wOWs7LwD2O$ww$jL4=M>+BB{ljlm(7La4%X*=-pVaW)ArBK z)-9fq9FgJd5%mSP5-@UuN;HNfepe8%AxUE4WT7HFzfwe2qXoGpZtuDqvol8tgMUIv z%&x$$a|S;r{W0kWCtU9_({&y7bY4CACgL1C*{Q@4eJa7c3n42mY;@^v2jGHG<*g|syuKme@Y#ScP9<*2&o}%)|b+hIEJB8=^ z>}EAUWAE^uL>%;R!sFP`OrOAtbtJNgmI{R{B;tZj^F3B&E?UYOcX~)RjzKfTAgI2# z|F5W0&2sYX;S&=>LBFZ=h*pZp(<+zK!Sy>~8Y~mdtpIgH+e9Gd;O}ZvR_42kGlEaT z-%zbmH^*f~OLNQG-LaNfISEg?ZSXv8y45`o-rs+(b Fod_59$b|F_hLLX2(S)Hyuhan@SEbr4PG^q(uQp9>zw zIZ0`@i|!G)O=<^~@_%pR2k;F(e3TXlsi*Bs)_l*aCtsX(v;wFOlXl+&Hd9>hTbk56 z81$$s9wyduO%EaKP62xkodVm9gT_p2f{eiVv0H(Hg(TQN8aKw x y?)P5N2y7gjDZfz`iQCH+#xAZ)3 *Q5F?3}owjTskJY=~sti z&3;E#HgoTY2$-4UvTu;v=%P?kg8C{0BFk{whj49me0WiBS!8Qz!lJmD)G{@tEM;;~ zajb%CP+z?`Of#HfVM*|5z0{rhGxc7h@-z;I1{)-J|IOz>*OuOkKEk3)HTo5Fo3dd% zG6`1?IUWtm2Q34+Y$$&}WB$wKWC04Vi1jX*hIIpOYuDbK4Mx$|9~2V{YA$}Nl7}_u zC#L{ZetmEgr*Q*sbk4DyrhfRa$we7>IJKnU=Td56ZQyxv&eUImY$DhBf~>AMd6U)q zDW-HrZ#*oPf~zHbzFWG%D@EjsIaqBd*05IaV1F=C1R7 uW?r>K431qg}LxIs $ZUNc%D8SN)-%|DwQPj$v4alW3S;G)rQ*0Rn@o1jtd5q(GE@8!;@%9- zR>S)qsV5`YnJ;OPJj^~{m@filnD+l+vY92dy_`~;9&*Ha!GPptedv`y;AfuB6=}UZ zClL5m-yEf;?7UBoq*|8#oGqYp?j7CtLv=>+`xAwp)MgT;$gn!UrgO)FKy{t8s&IK` zN;9ryB=aS=B$H-<)c3F!`2C}&e#H#4YF<`2Pe;VxYBWCVp!X_k0xNgZi^j8AdXm!N zR6=E@0S};PHK6-`6q=dP)KFI1r9eELN@hH>151ofENRRADKJy2E)co(uu)n1(X>L_ z+>>9UlueF+cwzpadeBq_rB+H4Y;p}EBk_FNg`(#pOg46GC_g_oB0-yX))py&>C7*D z BOi=nmPjMkUbdfwJ80;7kp$IF#6imN}+~;mpmehLzZ}BTvN- zO;~a;WIwpF8CmYcZ+YL$X `k2-2w;?AdZ-)){5GJ;oF zs?ucbE;Um^%%{+BdkSjC?OR(ZR&7zwdV-`MqmC{DT@M?$r8{n^kXP6ZZ2qCywEK3s zg#GFPsI^>Y{wg!?%^xYK@8OUXf7wVoO}A$GLpV3MI8#n%0jnz?gE)de3irOJ1TSVr zO #rgZw z? QN*P;jVdL?qWp=}NGWw7e;lJl~@^Ar?-?|vs- z=0|7vS=%*r1%N!c9A1F@X97q(q%c3!u`QyYkhbYuU r!Y+}YU~M!)qzjOotXCa;vw>^5tYh@jIUnJu}D07B#WzyQK#2(!M` zf<|1FLKmTx20pOI)?kC-ZJ MvO)%4~+-H=l%KXNxR34NggC?X3w2RKY&%5cbj$i Cie_E tOX z$2**dN0KaipCl``&wf#&BVp^VX(8l!Hha@gET32x-l0T?_7=AO3f}s6%80M?YB8|P zac ;>sc6gzpJetxUksoR)zom16d-@n>=V(Vf2!T4rCzYeDA<)kf#mdFxozy10w>LPim zJ4G`)zcOb!gex?u8n}qpehf)%ol_ikF;3t*|K!Xe36Xl24i9C!>hoGg!SXG4AN4iS zA9?PN;5OzZL5xA4?;9^8ONkGI5PQ?Qiy|(STz5s1ClJ0ae!psV)4~b*X6{(9HKFMt z$&-LIG&W;Z$&zz)JWh5sTfAAFMD99p?mf1umiZN3{W5s1bpcz){NPC 8yt{Mlr#AsX$Fe zV0-P0)KuKlUQV& P?fN}+5>%Z0OmN|bRrYjG6;wp+WNM>b~p?m4I-h7&!>jAQhcq7Xm4|z&?N5>aK zX|Wkg*se$+8ntYh$SRnzensiAGsk>6p-jl?{AJMbYIt+II%i9-IIGHNh-7+1a?r-F za%6eq=9i7f(`rp}9wvm@`d)c1KWdhb;TDDQuA(qLUO|DNzWc%uA 6j=xn R -qWjudWZ@yJlHJwxgKk4cvI%`;6Uyswg-H2X^r& z?_XopSvmgXul85F^i8g}X-UN{v44itwPG+~ULH)6?XZ?26KIB7ehz6nC 5I>r=U`EwKRLtY2gA;W6Tz_Fxi_I^Hz`=|vvG?eUCNr*w9?643IO_iilos# z%4+Hz^vL|^rILTuZkog8EUT!zyQ`<<0d87+Nt@!IONs!P }8JGeXLR6Lg}%2U)+ z%=U|=g3Ze&Iy}0T|Cx8s2Rn(scDlch$F6V~ftTQ-rsNNQkLB6iV&Ln?N>^dm$qL28 z<~24p1&e!_;;S&E2mfa5K&@8Wqr!~QBV$3bI#$!jWM1y1=K)A5?9wmMX^pwtff*Vv zcC|S)^~#u9Vyi6(d1vAe9I3ly}NaB30VA$LHvD0rpZH@FWB2`UB3!P=LqBYlro9 zZa6>Z>fY)4VJqqvrj%N*N-OWWs>U-dVkXN+VPupd{3y%l7kE!4Ibexl9VufPtGL^1 z6J>7gGFqr3$oRw;r*>YCsXtla_JbU4YHC(^L$(FjC(LEB3Qo&T!36q;QC3v$)|Ss> zey&anTU+3q&NnLb4o|P+TxyC?y=WSvj3&$PmIE14IX{6WwJn W*PV5( z3YEW?VZWZz;`3CmSejNDY5uo-vohLs g z@;GlWt*}GF5R@dpZ9fI^1uv Zd|oAW)(Te~( %6H!~3B_8f( zHmj=f%E-0+`52?EyAo )&@H%x0aUCaz|DJjsuF_P{4`^(3sRh*T3Nq@`1@nNso z(#jR8ZY8?}6|n-eM511+m8g}4Fk~Eo(x+og@$dST9c_~rVmGj?i<*uUh$7AFyo#@I zP5#p+p}qnF`6lD!d2Ne;p_4AR#yJom0l8>xEO*AzkG=|ZRd2*)CM849l5sfNbse{x zIQp9KGnpAwHxN8KHHm@4or?G1_=|(`%}MN7UW{j*LvR)dK8}G`pv+YKL&VSAE7Bb~ z=fe0$XOUqN*AkKj(}Lef{|%TrQ80_caC0{{@%p}Kwfzxtjq5G@J<$bO6P=T#f?ag@ zHfS3a `6(%$c`bbf4pJfXK|1AUs8+Nr>dqWUj{da0Y%Y$w )B3>NdEZpg{nfjkqK{}i97vp>Pmb;|Ocd(t{`yW#sGqBAVAz_ViTGHaS zt0~9&%W$R?2_prY{kZEN6tjjM6(Ala(SD_rK<=@NXvrZv{xtOS%TKa);ZG@PFXsNP z>sK5{Xn|zz*VAY$JY~<+F(bVSsQ10SU@O5n5EJ>2sG1hU@b+C+&-Z_DSf|`CRi0cw z<}Kk}UA>p@@+_FFTdQ3#O$8Z=Eku4AcCGtk@9lr+a>cqo2YC E6 zZ`4UVC_Cb!lz4p;d`C5O{x ;ye*S8W4)!qm}a>kXi({7y%}dZ|SHMK91|D5UTXupuFCHPKyJKU%H)u2h(ho zdkw`sZnu$N7r|z`*yZthQO^klc)ZZiHd-9TOl1$id}p|orHrg~5v2X1OnS+2GuERs zW9saeZzWgMi*rdvY0U?@5`8*tW+^E{MdFEPyOA`nSoW}Ni+#cS80QLkgTQ0q|Ns8^ zKf9^_v!6qI<(^n<3th!La?1zBnrKb(KOa^x?heQ5)ES=TM4JMq(j6H~G?`rlmpR1B z(CrQ>C1Dv82>)kNPw5gzV!*6f-3imF3% b2jOC@J7g}3D})|feE3*Y z)_hDDw{sEK8%L6Y9!g-gwkO=)UKa#bk^wOArtOQGc3KVnGFODk-De9w*r6=;N?X^Q zac-KQj=zxi+c3<3eSH3po5Hp`v=zOb<7_Sn;M|Hsi! z|3s+CBr8U}VDGz{e)9=8YZC 5BsG$$}& z_!{f!&mYLGXoCzYc7MkFp3qc+@uXrapg^(mw}Z` H|F1!{#4r=P|zfYaKdzzR6UON(K^6@+NR|=~Fbksm&mc2E-KK{{=*eAqPk2qV~;Z~XV=8Yp7{{Zq= z>vK%sBdh{ei_@|0Tmi|a `T |e+ z7@3Cs+^ElYmwDQ#LS{b>b6lZ%xoTN$!StUa50$j_?{X&=-njc#om|c$vp`dFi{RZK zZHD-J8v0b)QR2*wQ4aCuw7d#BTQ?ZGKgwKbH-*lQ!6t=Qgl~+88;KY3usHqm>ZG5U zG|WBrtHy aJls_c7e@CdSZa|bXtC`7^&tu3D*_9KPiqz8MD{5E E6W#$99$)!)}3V#vpI`~Qap@aA;ic%#)qK6T J<;cs+x0-F?@burbs- z27MX{QNfOB34^;dMk@?*yz}p;dZSKWi-M<81f9`*dkjdXQmwx}B}co)|Eq-Xub{C1 z=~*U}v7+%6X0?P{74G0{44%gHoB8;983*9PlWC#9#5T{LEED+;>9?j%)o*i53xh@sq &FI)M%Z>$8CCm9Hza?3-IOQ;C|d;cve%^)YZ~|aR{-P@tPFqFG*jl z-SV6gFz5(NW>nY`mwE6me!=wINvM z=&KVCQiE?}bOP@#EP7;?~mt{c o^wXKr;);5h ez*ax>4X!BP# zyLbX#BfQemNpVNX?QL3fqb%cB;aU*dmIMrDHHPas!~l+r4{2=b911bIbN+TZa6f;x z1U_7O(XWa6c~)=FGkuS;WDmRYys1b43u`Ll(O(=cZPH#2Kh5xX7{z*6PcODzirO;{ zTV5v7EYhn8$^b71-s$pf%@k{}f)oK4d!Dg7 X~sEBeuyu88KdwsXMvg;iPL z-oW>v)E*sToT1Hled3>St;Fbp`irD~v_3bgX$$1@TYlwFo5!>^b^joi!6+TK|Hmq8 zcJf 2=r80NJ3-4>TejeDFIdos4t0)I{(rx!>XRch- z2Q{MxK5A2cv096o1{|2ojQnH~_Z)eZZkkpl8J*_k4GYi)gbCUTq_2pw^rr@nc9%(C zF+l}EBwwcZO6sK6ou {V+r}7FMU>1UyVqE+`K=D;2}Qd(`)M=C9R}t! zuK{DtmL;D71%LFnznps-Y4)0$nVE;}i753eibpRoReJYaIi~Uxe46U|A~R#(hmPlo zI{H-Crblvhx4f!s267tR6Y;*FI2_YeX|WGTpw{&tjZcegyint@yiy*w?Nb=kOa0`| z^XFnZ7oqx>-!;z6=%{s>p{p*uF JP(8Ou0IOkE%Vbj#;SzzxSLwuwurkg70 zxy|sS s8Zap)ts|3}zq|KrGYWZ}5_#ca)CCXYEoz-|wgxBc9JKGmTEvG}e71f05J zz-TM?)K2N6QkMb6Bse+Q5#{rG<`6b48h%E6H1SOS{dLoHbZ>VQdKbb_dJ$Ucf8@;3 zFSQtGCAYB=-`{%Z512W1(RDd FDv>~p^g4?ry`T34i@`=fd`}b`u%#^@b;5g$J4X1_d~p);e@F&}zj$iGr2;oJ z$rTYzd1}YkV#Hon6)(e=%)Jlq+pZM9ay!lP4m=YH;|mAx{F_8=Qy%%$DwA_)mbLM! z#IM=pg^0`>ZP-m+sDG}4KUC>$r|6(to^A~wpHO3_!TDWdMZ5X4W8Pn54n|)-t$U+Y zF|WdT)E+e5>J(+rSg~X!{@_=Vg-)(wO+T>NpW*{#?MGz 134mtRkI?=s4R={~Feq2u$f4VYi%UY#yM>G^yI zY_M|nu@k@Q&O2}M#=b0ttj59kvGFxIo{{_Yava+C=&K9Wf+j?qHQ0ZEVBcLfEOY4c z=2CS@Bd=~dQDa4JW$%nKCv9u8UG#pG$$_iXgrj)t z9P}(`F#7w~XZ=!iGqE#fQ3#Tk#+yQZGUu6F*;+&e{IgGf2yV_Bntt{AIEV~9azvX! zwUadoB^h1yY&wvU0;hzZ3stE?FE(*19h(9qsjXO@TWN>#fVs9c+|Xkn!u0*zTy{NZ z-{!PfyXb6xoo`jZR@<#P>u_MAo<4E+Cv{noAG;Xg=tDiv`(PGmeB%vOXU)XLC!tw1 zw3XSfKgrkqD8D$`FmOkrfoNCk$mh%BROi(J9stBs+!y=w>!s?0qLcG=6sO1~={S4$ zH+8w)%Xbm)GKzZ;tqP{CAeHvnK?iN6TRY@hxq*uhZWSz35}8*~=6ABs8iw|P`dUE| zl@~6<=460Ge|NutGHC8^oJLw8dwyTr{oqibaj`_!>8{=jihvIf%P_=)eq15U*Kq9k zz(*4eA=EbuQxA!*Rg`~h{hKZ1*r=g8Abj;ISkJj_-0BaSm(v`w{-kwx%{tImYi508 zx&JE=Q>>FxsC?2}p%uQRWMl^NY4`ti5}8@`zDR4h9GD5IV$pyc`^)d%dC_B#E-FGe zAJQrv$!$GW^fzE{XyuNvey5_V)6>;^Jeu5EH}jctL^DMETX|)?j<7z}6=q&EG^CC} z-PYo#q#JggJjvSU>EADzk<8&Tlnv7^b&|~@P{W1gV(ZFWkx$+>aGw+W8Ke?8E^ ;@RT*Wbmga%;0wheWT{Ku?d zF?cgJvpLETqE8rCK^?xg{rqXi;y*)~H?m2=XJhnGQgHU~6+otVAN<+F#pe?SM1Kx7 z=;!+?W6Fg< )p?tvnDc)~`|7y1wzS>0P@u(2aVt=u6nFOmrC5Pt z#S4Mr#exSY+Tz6>inX}AySoPn?$Y215N SIV;n03D*;jP|)TK&?S?BM9QvJb_|6!46@fHX94e=}=SX+D$xxfkA)&5A8c zQc1l4d0n4n{Lt-9%dJcF#hn*;SYiLl `#&`uHH;zcCW4CGfJKhI-V=V>qd zw~@i=)<930Va=n+uHFnAi=+7{1h46Hbio|+!f&}AP~F6V5WzqpR%N%RhLeun_a47F z7&{TanGm;uOEx%@1zqJXooYAlu>QmG(>5{cdHq304fP)JUTi&4{$Bb@7;#J{1d;Jo z=ZK#@$2z{Y*|eRgqP#dd?#N|;tJG7b3LiVxCVo=ikZ+PWDbB`Q-fOPE{2V7DzlSJI zKal-)?$t8GzLAdez}35U4SF?=AWz=LmBw j&ogDnQ@CX z8()6T!VN092Ao}70oLL5bQ5lnLUYuj;#UPh)2VgUajaXQrk8;H#r%G;+D)JG&0pwo zZS~1Bqp>Y7rHQ@MHyoq_A6|kD{B-!o=A4RE3vCJ~rnRn~G{v0Z-F!JCZ8F$)D#|L1 zpUsG55@3I(n+!EC+Ng1k<;|!{;+R$eN|bGWB_8l6B&N(NbwXJ$Wve`YGVK1fIFwCI zn~yYHd{5Pi6Gq2Q3R^?Zlu1g{DbS%S*S)k6HP_!3rtsXx%`xxsp7~_Z`=sQuh*#Ji z)BD7$YFLA+OqQtSG?r3P`tUVzc$runy4A!BbWm(a>0z09DpEcvjOums$|wU(Fw()b z8Mb!mi%F5w!DQ%=&wb5Aje{Q`vK#Jj9Exb2Um9?q-k{ONdmwCo_T7B){<_45{L$+Y z=4K!%?-#aZYPU#Yf9$ig!eb>il2@X%4;Dn?RW9v!`BN56q}OLr*X2Y`DSg>lrqsiW zN92TK%+IC=viX)H*(k|dRyCVf)3JzmBBfy#xD=E>FQ-C)0_BkrIIpgcrEP6mxv8Cf z3fn#GD=7`$@7|-OatmNg7x~e#;v(eT{*(LQS~eMn!U)exD*C4kTpD=xIaGCIaqSxD zO`{(ZB_`#KJ=5hho+np5c2A0$mO+ u8pA8N#C}zJGN3C? zA0~29H)3P(BJXI*B}%5bHh@{&*$hzEA-bf7BXVj?n3YKF8?t%4+p<)!ka@UyTHq)< z0A_~mes`x>K6Xox>J=*=*FUOloIA^}%!g`wRp%ULoDCR8@X0-}J(4ABoQ7EH)B!|4 zeCnuL+X!;b`}r6!WPX5K5Q zD=n_IM>JoVo4^PxZb1wyLCELz`Mls~!b zpef~V^IF_9s4?;74A53MezE)TNnFGl=0UCT+kMTnCJd${`PL-u>%?I4)}}I_`y;hj z>2n{zn2090>N$hly0n1AQ&Wm{qBmkUlT!Gly+upAYl{14N<;)iTX4n@l#qID?O!eL zaL$R?O5BF5k{olD-WXRz4of+UJ<>J}s8Kofn&@MP^yfKJB(W`ciq_1Y1(L6_uq+|Y zYxp034`66fVr&tU^zuSV3ND OiAB@)DLF?AMsx?!||AxZZ zBy;cF=~DSz4{?S*f)un!E^3^@J)yth1GL_itY4hF7eS(PxWQNJ(dYI(lrxPQAN9_X zpKz5PuyA|T)`V}4cV`PjP+3S?HE$z$OcZ0NEp%qxrSlDe@)LQKI)wLCT-yoA)Pz=x z-K9Y5Qg+rf1$3c954Yx~L;Bj?$UR_1)OzRcvjzRj^M1P$23omI_4Vx(4Ts|nH^c_2 zvLm-Z{cXh;%kJ32hN0;FG3xv)6WzTeMqaB14Tiy2hXJ=h&(-5WQRrTU{uI64NE70$ z#O`UyAryS*5~GV(`hp&*lz71pYA #~U4d$}A_5qk |EaHZuR|yD{~CrW!A>q+a TA>mrUkxj^?RE1hVmYTRK6dFxJo}L-B6-MST q{mKdtZbB z>#yZ?Q%u);mnVkR*Q?YGx5d0yt*`88-!F?F@Rnz1Q ?2kdona^RzTmkkG2I9+augj9LuSs#3g3b*2)%fi8^m}M*dD$+K}$bsSZok~V* zF# Y}L8tW^|P1S+mEa2);a?C|-jmx9oh{VIe-oWW-G^R*(C|h(+wCmRBEep_eFU zAk-n}J^>54mY06NlB*zoeNe1b`-5LWruB0HmxO;sAG&C&`&Wv7gp3&VMxakXq{5M6 z$u3}f)Sg`i7O5Z_NJ;+a0d=zKqz!Vt9uR3~?PMiry*M!d7jA6K{izIb1##=tYn AFMt#98R(CIXA<>CG_6DXilff zYmEYmHN!Nk-2|zfcb+`VebmxKK8Mfl-ENm&JarjnB20C3=|JZl`>Oo=l$X3CxEh|9 zTUFjq(^PGBtXaoc2Aw@lA_mD>f)vgg+yOUbn6 z2{LgFd;IjrY( zo)ZtjYb85!^2$l8gVZF2B<3neg=2XX@=&KIoUP98lZl=F1t)WAw^aGqti4*Ml9u3F z=fcL5(4h^aU3V;dD)+kxH61dh6*MidiI4;83JO@bxOuN~ZRir1*TnP0MMZ;>D=`|K zfUjpH5$~*^anW%s-NiVB#~xY1=S$#fwg@`B@WX^fdiOfRck=k1>kZeFv1P{~ZhQW! zE&35&>9$bLWFB*JS>Xy9W*u-y;9Pgj)0N&P=Dy- Fpno_X$xwtYwe*^~ z AX(#yx1}1B{INlThV%l4|$1{7fI{{ray-XFC~auf_0I0d-<#; zd0D7AV;dja-i+?Ldz(vcp3Ru X!8|Jn!O#F<4Tm+)*o2AbkX5wdvqf)|fN%Of?RV;l?qVGofSs8ecG6sO zC(c_&A$jfjsX+5)(LHOeL+6kZVo#XG+9*tSA-c|XgDVlzXZq-N@%ZV8p6Es5u+o-Y z`L$9!!f9voq>e5FYgW=mY$fMak1nlYU5S@trf`KvQhX3)MIW@{opS1GW5S_yTrDw| zGa~%z#NOHeI5yt1nZk3{q`w(`p *w3U0pI5btj7?IaU?k3c$KLGZR+40vt-V%68 zw=o_fW)N62y{OpqoI` OKz Sc~DGA^5Dec-VCCUwZ=VT )o_;p}SaFh(Duv zwAX$V6Lr$8x{~~i@hou7U-Cosdco3og16!PORfW_VSxea?|V`LHvy@92NH69>#y(G zA#|u+Rb_8iS;fzo^#7@d^fy$h1Z}A>jfBeX+J**uv5@8Du$p}+LsJT|Bc-GK(R|p8 z`ggAWhc0Ckb^^@OTJeyyi>2}rkW0yR)RIe^RO`G;y6^Fr3QjB}#hmfBD^6@e*Af+N zPq|>m=2Erp`?pJ^hr;S$8Y{POSk @WY!SSv^4y%jQ#mw6T_NQl(clzp%dNGtAiQ2WX zkIt2)PUx@n))FHS#+<*Bt;DW4MfO?Y%RSB>(l$&Rhv;0ho?9)DE2NovDlBaul-ELk zvq+Ixc2!az8^FK0uPJB0=E84IQ8qAtCwiD0#@<;=tA8+g=$#H5Gza2coHF%Bce{^F z{1XEBFL>Yv<_AvuPR7KBp7xIQueSHLdp+~0_ZW|-)Z+d0LyGIJ$v4U&2oJ$^B9(m8 z7z4w0wv9Y-B-WQrScc7+jq9dME@NJxMqh(X=t2~b{p}KM&(_k>zG5M$_|TS9?UA+# z@Js$z*h;3uO~f9XIQbq_fcve#%J&HfllUYeY_|n5CsJAFd9`p`IAdj*r-rmw5rueM z?(Ukz&CN39TyvVEnw2xPrVxOgX@lE7%|yA*L{&n{kdSa->bFCEwFHwH#&d#%xy(*o z{0O%}lYXQRGC0lUdWRB9?%D3?(m@FdcM?X5A@$#>SU>DKLVNB~V%K2OG~4v%g<~|v ze(1dbW%h>ms>jbP9>RcI+M7qj^xrD+ihJpmxENrT2#(=|ze4%WB~Z6NSysE;s_-fw z`F17iDE|-0Z?*|9!{p+@^Y5`%S67E-(TN^?*pmbf)iEa^m EJvPVY!yn zfJ)lI7U&~IP0mJq4KLcrR}d36KaO1(@$KM$FRvXR0|i|1%Hf9VyBW`Ub~6qnd5Gq+ z2ruVW1y1vSD=2S7?1VcE9_~%Z?>VfQH_CEr7K0s>VAFNCs%*2r#Cg}2B&Z8^3^hw) zzY4fvoy`^R *B$kD z0Q29f!`u(f&brF4Tj|byF6ImHtLI~7OByPZB9G}2pyFsI-9JJBham>mJF33di-TL& zhD~LKa~}FSO`CDCR%&w^J5PL-QD4F=KN$f;4_3H0#xcbW9=V=4uC`NPXrHluSsB=S z?$yH8yjtq6uPHlxYcc0JL=TusrP7Y0c7H{xS7Ar0U7Fw3f`qyykpgRr5f< ztS~5=t*XE-D?%SuP`uGJ`Tf9lM@3g0Sc7E_dg3c4n?W7c4#yDYr}R1 Zjr@^Y4N|?T5w>UcUlab;)F-|^L!NwwR};s{70NI7Y;ViobiQx#TFZb1i>}R5 z;u-ajlh0|gwX9AIg !I6m9gj?r7FSHuSUBL#JI%TsIYytW3 z!wl5XYSPqOz&AVH>&4+efOYAQJtr81xr zE3AO^V?!R(Mq93}raGDoHUT7Amns<9=R^;7J9%gHCMZyNbkfI;(+s!peZ$E4rw `eTEm$-YC8Ma8^aPs{A{OIB8crwaNSWaLu8*$1B`_Qn~ z+M4v)62(V#%HTmxhUl4 ldJo_9J$?o!C4vE4c 7S|cc55R8>po$Jw z>HjUuwif%ex{{X26|*d2E{6EyU&(kyc^S=pm3hMvE&n%oc=M}_Lw5~xalnC?%L{bK zb=k(UbOal-Cgoe1sy@XV9`eU4l?fu*;4^#-keaA_gPGZfnTj%ZmJRm)9AfWsJ?EXR zWXe*sUDa63mCY|cgx>|#x|9`TU90>&2}!ZUxtpd1diFHShQhV*Zxz>O!*0L~c2gk0 zhCa2H=HdnvVB{ umd+QnwdJEUty1iktB!#p1*@VUlLuFzUzuFZEA3yDE$d5R zBL8&q@z)IbzkHIBFtWDR6=gDWp7VeR$9mz`s?6PHT*dNQMf^x6F8sOhH8!@gshove zJJB;p=0!-rn-7h)hdg|I@497!ULy6aLb2>vW^6Bw=RR%l_gBq$mSEX5WiuQ+Z4Ou) zALPEzobet5xUBa@j|Ob(D$|}nIM|lFRK_B_T@CovO4r}o?`0`V{GDQ%f3%T?yL#oC z3wTyCu-zqIC_k0jzuy|m_W$-;%~BbM0Rg(Isaad+^H)H?&{7Su- T|Jd8opc4Urum|IBkTd;9$)vS{l2_VZLgej|#djPrwKb zi-DHa>uNW#QNUhuy<^^7F3&Z|7gb#twE9<5?l0@Pe;Mbz!h9&ByHmTXZxW !lGo!J+OC#7bO^w56K5dSy7{kw_rNLvT}?>_$D54{BX2goyI`cI_)jFSGpx$lOF ziOCnK|F1^<(#nFT-RyR 9DEXz z*_ vXh6?>R_fDXBfPH3Z zWX7;tsWgJOewy|_gP8-lH?dAGW*WA3D!8v%tfv#ls;l{&FBx?!Wgzr-@{du3Wb5~S zb8G8DEL>dvnI$gqx96g}gn&;&pec{h(&MnCrBVgM|1kQ0YrIxZ+E0FIAnSo{hl6+n zExHH~^*n9?0d37fZB@MqF;QMk7|;K_jL{*6zn8m{QzaHQ_Rx#=v`5-Vy~LMdg0({! zkkgdkpIr|1LnJpEjj_#QeH9HriTGgY;xhW~T$yz760C+^@`j2kh3&Q2KNFe$=%2r` zn`DigoC+uT3kS+?Y&E-sYOEQJlu|Lur*@|bqCI(e75{v;`*;{vmG&RO)iy(U@us=- zMx+bpNbd@>tpcF`6U9Hn1Pj`OZrTQRIE!I(Bhq*%Cp0uvG5K_p8q}zFV#v;9buRd$ z(4Zo>nUdQk^7OwPTqpkbqK~KZCm;@su^T=nh@bn;@g})piIhf4Q#%dS`ty0 oEH-DsVBFg(HDZaK7xk{oG@&X3a zh40m;-`ygYvH!B2{^6pLJ^rr`PFY#h@6`#?Kz_J+oMrc2X@vhgC>h1YDAcPf7etHq za(~Ic 8+DM1=huuK-pAYr#-#tg#r#NjG#DyT#7YFk!djE+e%b>;&wzuTEa?&c`0hakx zyZ&u7oYFn$&POULY-mqK1VnTFZ)>f;WF&40AN{0Z@BC lk&a^A={Lx ziH24n;YjsJQfL+Lk(!zRA5*Xu3!g)lwB#F$i1hNf$A1$TN6j%t&n94bUiBl78M=O7 z)6M$&a6XQ=>_#o*`FPaI(enFA*D2G3?w9F$k!Ke7bF}~X%fCGKKU_pElSiRJ&E8}s zFo8e1R9g)-REwL|C<<79Pa!E<@z3?xN18|z4b0H%r2i(_?zdxP4|@}{H9i&n?Z%?0 zzCXM3i{ hA-4k;-@S?C4x3g;epb!HsI S82Q)V8D%2#_OujDGL+#@7W= Y^9BxxDF^3DlbDuLXvPgXHE6${R!ofwdofQ8ujb6p{n%b z38q^onAN}%lKWqA-ZWfEbanCWn5~-SBr5Itl%V+}Dle1{U)vg0=<4Clk^I5SV{!eo z`1+Pdf>|J^elSerdMH< -vw6{nza0o&Z)Wr!FS#5rZ0Y9{OoBcCV?_PS zMa;G#D#HX5TPzjZx=#Knn4Yk_@@VMPLwwzYD{)I2LPm1tD8@M8y>-*ot6)x++9C|- zhkR)*_LnfkFXbs78yhRW#Kuv!p5{%boEfqORyf?8&BSAq^RWceSn;I>aNrj+
*DR58rl%ylc#RUNbcPb?5mbwz;)9qhoObJ$d}ebAD{EJiMcJA^isx3W|(0E&_;0C z2c@4-OK vS9(B&t6_odwD+dVEE6JwYI`l G^NpnoKJI@ zSG{@ AE5Amz ech$wxQ!t@kRxm?0`$({7CyrtxB}X~Jo4NU zjz`AV1OGNft^)4ssS=RJodFa*btKq -cA6)?IEjB@>j4Jy!GzaBx%)@F5hvuN17Q1+Q;$g$uFi|TRSa=- zDpw=H(^2VxuY}A=*EAvez&QY5tvhU@n^R|@X(?T~+hFaH_pyJ ul=e zt6g^V%qt@o842=Lyof`j)geE!j96m>)*Kc-YRpX!Y3{gLoYE;3L)x;wP;u*5?=LVo z%RjCv@haM(1H*W!$WIWPc8J{lmRrPzKY{YcZg jxo$ )Qw~ z0pVt(9|+_lhJ7kPJhc$2N44saO%D5pBm3*l9|-F$1gZSsqKKeX6!!EdP!Tx_ov?#0 z-8m2AdTmP&$ce+p7^o#5C%n|_j71Jo6*&p=`X13kRix0v7Gd^#8 R8uRXPW8HS{buC$dc=%H zCW)I$9BIzTCa3wi_Tl{x;SLqcPmv}j>H5lo8!^X7R$2>Fdf)iQ1=94@TM%)%M*gk9 zsgo|^_C)+veF;8Y!x!R~Ac}O1Wxg}xls1t5Y|}G`pn~lX<^gAcNIq1 i!I3iDAbP2J4#az=CMvkJvS(5Bu1X6SE+$|q%3Gg0PzfnqILwFb$HHF0EF~} zHten<%nv+htZK~d*{_`fL$(fUT7qsH|9x`43B2dUE{cHMEJAqMw*nVAoeZ7)?OZ#^ zli~|@Y^9H;hUG4u?eez{%#nQVPlppK x`o5ACe5z3@K*ws^6Re>CiC$N3V; zt?R|CFGSv=9+s<6l6o%XZMUa;XDdd;-uSH~%*2yXK^JIzV`lP;R_r(~zF|(X-B8%t z{4!t|Y`q%Km>hNurM|USU%E5Q?bm8PjwP2Ngnji44B9z7VZ Q1J4Abw-<=RcC z^-pIRew}sVwlHEvJF0?lihUpR1zDW0vI(Nc`?`mcQg9l23lqQ1yGG6#fZL9OVZBNG zbJ;PHeV$n$3SqiOitAb;q @Yg)zF4!0 ze-eWI!FW!*flyPAyk~32z3B)XqEgvPp|eSKa%(B&S~pn`nq4Zp)Wn@{^)b@LvzduI zf$JOh*AHHFM)vLg(P+dQ%kxNA(h*Nw?|w=cCRk@)wP)2$m~8}f;o@Dx`3+pRUSN1* z*|r>q+hFG!_~{%P;oUelmcweE4Gu5i4pSzDVT-3lO=UmSd2GzNTL_ C9oR2iE^=cZLrkR|;u?KA^S_L*Xj?b$v=nsaK~i!B4tTU!{p7N1z>?=y~C%`B;@o zlZ!0Y8nD-?e45-9mN$M-0mnhvK$ER84D&WByq2z5*-Zq~d!;AVF_xhx0 p=e&R18ysy^= z1`H9$3^>^&&x@5ATe_=$i;iUhhYd?-#b$%0$@t~WQbUHfXNLUQqA=e_-t92T1UWG< zR4xsMJ#)TQXTBQjdg(Y)!KVz8bGL^y0VLukq8jQcCp}A_S6>!MFY??f#1R)a+3P zojV4XCr!jbPq&m(>uTRt4$_AQU| 5nCkOA|x%A4WE7d5CT(ux(ZeNao&MO8&3{Jnx-da^)gdc_| zSE%=pxtG?Cuv0SKX7ZmDCNJ?gS*`-oE9vl>cv7vlRbV@lFd4lAb9)tdiopEE<-sJ1 z%4H+e5VWJa2G}LPN S+R}jdhh8VPwQtYtq zynv2eSj5FZbSR)`4_*9HvO@mNWLqR9+u||Tl$Y_!T9&Pq%PPR5Y$CbT*kqZ%G-9vV zho%l$?)H*t{kqzU<6NkMMSE8Z?_UX`UfNHxzpG^k^8J#;b${DYTcz;udkAF+i5QIc z#qQI69^*Z6%DhE-ij6G4842vC>`1%i