From 0715266caccbece32b5f72b87a5e8c8762f48f70 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 23 Dec 2020 16:50:45 -0600 Subject: [PATCH] refactored switch statements; cases can be ranges --- include/onyxastnodes.h | 8 ++++-- onyx | Bin 282608 -> 282632 bytes src/onyxchecker.c | 62 +++++++++++++++++++++++++++++------------ src/onyxclone.c | 7 ++++- src/onyxparser.c | 25 ++++++----------- src/onyxsymres.c | 4 ++- 6 files changed, 68 insertions(+), 38 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index fd081398..7b2d5c74 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -553,11 +553,15 @@ struct AstIfWhile { AstBlock *true_stmt; AstBlock *false_stmt; }; -struct AstSwitchCase { AstTyped *value; AstBlock *block; }; +struct AstSwitchCase { + // NOTE: All expressions that end up in this block + bh_arr(AstTyped *) values; + + AstBlock *block; +}; struct AstSwitch { AstNode_base; - // NOTE: These are not currently used; Scope *scope; AstLocal *local; AstBinaryOp *assignment; diff --git a/onyx b/onyx index dc37f1cd2da1ce2881ccb6d4faa19df9c91cc5e0..c8f1d3782fdac06e86a8806b4983b65ab7dc0940 100755 GIT binary patch delta 58736 zcma&P34D#m7dL)ql91SLA|f|PT#^t(BnXMPB$CJtL5O{gEkZ0oVyPuaQm)&Jc3OkB zsx7rsQbG{1(~T~cYHd~ZT%o8Uw3YWe^E_GP*Z=!}`}s8UJm<`uIdjgLGiT1sb3OXV zZP^C5RRLt#+bwR?c=`*~iT|Gd!s?PB7vmoJrZcj5a?~wmk%N3KFPRrTRPRL5pO=U1 zIrcpC+>P}vhcoV8^S=K)PoaaW(;Fl5y4Be4On1J)Ue@g{if-=Rvo?=ZsVK#2>8y64 z+o{1HRe@jB;3ZYy`!u-j{_Av(YjEc(@b6UkP@QWP1W8s27^=XpX@rbb;EyzTKoz(H z8(q)St3<0oz8y4z7X?WsmE%A)Q$h4^OXdTAevn>cq3Y z9-b_@p0nGsDwv^cv4>~Yc&*)Jkb4e_W-gX)?clvIJ&XW!NL z^zzfN&JSKUw>FG;dU|y&v!N>3-Yf*z{u(x*3U&e;4eSUF8&(B7nZ51lnKe_xnyX+J zYVgD=@Z}nOa1}V$;K^0sA8PQ_D)4P8ysa+13Szg`U``eIJ`KKzJ+AMWwX6#Ew1!<( z1^%N3UsDBsTZ32G0)#DtJptaHq}bVpnEeN3ww9~}iP%ME3A5UU>BgSJ_u)Hx<|Xro+)~& zUDA&2>K^30VYg`F)P(&8)ByG6dKe3i>sGIZeB0rt6V$R#8qHSk3GB_dp%~k(xHfe1 zE>_oUr*3bvf6cLUIb$*L9Y_S57ykkMG?;ny@S{tES=Szo$z(RFhbI}tX7}hu*%$0k zkHK`v1?JH+knU>3qI(9`FzwLk5-fL>_ja(kJp=r{3U<($$2u-Hle48a6D-e_g5i*E zkiKz_oP8lh%8*vwwv9dRIo{>jRH_3|f1Zs>Xhh!%Vha))*O?RKpgTa&;7|QX zr!=-Lp`-J#cA#rB4QKX*E_FTdBJoGWoCdfv3-9Gy?`Bh?vk!Y!TB>R7nNoO^rT1!B z?_)?mr07hJ-(MhFO(-y{1^cL%ukXE$Xm0V&JLI6V|M72WsbKiCGdi997G73?@SlO~ zPA^lPfN`ZU%mx007lDTghhD$EBtAAO9Ad{0`_z*<87^l}+puN_XvM z8~SVtS-K3Pc@`xFVDJA@HlJA;)~r;*I;xGYY+GS}oBy5)_$)yZzobkl0KHFY>0w3bz$ z_&2@hlIJ)nk%G5p#f9av#H5+wIdrmtvg*fnQfT%HZ4wL?b657oV2`k z>5hahoW$PVU!U!tKGnNqBGtuP`}-A{t)YK$*pk(BM--M5ifI~)nh`-aOk@jZ^rYEu zvG3-$WKU;Iq=l(0dFDi#l*+!E*@jT|_sq7mu~njnWYnd5Ca@_PL+OAC>>P?0Da=1J zht5o4+cSq#j}+!Is~x>Lo^_ekm)gd&w`YaZe&bo<{Ce!>tp3!nOp-~S-L%HKajN?% z?8p{RX~;Iu&ZEc2vf*>a(2-+V(VRZi^d@tg+n6?bleL|@oleVTH|EZuUyWu-ZzLMG z=7?bp2sV%HR$?;~OOFz>rO|PFC@dglmGbv!cH)gzG-xz?^hO_AJBLNhOQzei*{Ab5 z(A&xE=XnvdS~4@t??AsD1=jkKV)n`W)^x!VFc)XoIEw02D>GZpm@Sv=&!3f+Dl0~@ z-~}Oc*eEu3K?Geml5JSfn|?czJzCJ7mW*J{7Pg^xm$E?%1E^^vTfDG7-G7~}UD$|D z7{OfkHDKQ@>`TA=i}_{!NdJ1mUS^GDDK#$03tI9K zp?wDDozM1hplt@Qhi^`y$phHPr3Tu40GqRP1dZ#@E-wwFUj3owddzFthjjHUc3@c` z4NH=W|7TfmN@uYI%UQamAFIDSfL`yL7rFd8p|AQd<69f(@ILJLTRHSnZ)UbFqyu}i zv$k~l#U0jZ#aY^*mqu03ny-Yfp2kM3oJr?TW8bgzqXVb0l9l7=qp57@|dADVq@iVnzg+*&{ZQjy1Dk?=Gg1aqRlLOX&THY|MLE zG;Jcg{a$DKZ!BxFI*DFM&6~9vGvWIQY(DQqQ)1WwzK15ou(UNvH0Wnmv}P?G8_kBT zjcXEbDUBK!H6W`0fFyJF{V=n&PuMuK)zM${Xtu=o1+WuqO~wREsWSMyU)k;=!CjsTrkCqk>4((7TD5 zt#^ww;(u3-*cn}2pw2`F)I*VANyhr>ba9IC0nuUcmf?P`%9%)whOvyssR|ldlB3s% zfWUhokYE`fX12rzE6cR@7zH?pw}{rRXLKe|Gh0#(=*U%hx3&(LSXX%e%!m{TCbkgUz)RMK8KW>Xvqf~e_ zU)jfSzhHB2QHGPK9~N&N6lSF+7a{T7E0B0E%bloaaj8U~yAx}j+14#!@f!gY=y=PZ z;CM@1Sf;BvyC`6Bn1E&cB_Q$E`m@n-*8<7z%C4%ggvxe)&?GCVtp8KWGO%Q}q{;3b zrFhYMyk$gWIR{<9LA>RfeWX~bG+i4pO2u2FT3ENT5YFhZbA(nSU6syXLjthPs58(y z>VOQyu{bq?D{8R?>h(46GEAPu6CAjVyDE7um<=9J4z- zF>jALZ_QI8P`o)~IbT5x zuQ}mXWdw!O279WD1wkVy=~TxojlCOa6?Os)l`!{VO2WVb0TqM#@p}1G2vDkHAfn5x zF#EoeiUA0U%HdAh0Nl#^i?^Jte!T2eWM|Gb@6BDe1-GqP{*itL=Yrn*rQ^af=2ku%TG> ze{)!ZZpLx@6EPJkyVulkO{z62Gdkgnt`&Ha>RWnRbx-OF6BeP*aec0;&ifjO**vPH zz-feE(C6H8f*FdbdIb++JO=w6M2LlYkX9lE8LekwkYZW7&p!U7m9%$t>J`b}@-*^$Y z!ZbQf>_@QxR(|h|Ij6lVd0|z8;C0Y__FOEyxpTx|#cWW5PHF66lwvyTbMv53vn??o z#jKxNB>sE}ZKdcZAB*a%cZ&;FSD#ETEI5f+WUT5^tFAl`u|$Pszr@O(3L@DrP5K<+ zlf;lZidk+sRVLQ}3_zLLk^Qi-X%`V+h_0==>=LvXBAS+f$+}O$8a%Wkrds)gjuZ{O zJF2E2CNgu~+>rIzkU9kT>KA72GO!UD4Y zD%UnzhZPt^2dqOy2WKM1LIpP=*DK3lXAv*i6VOcUspWsE)kDt5s!>SPq6EK4l4XAZ z+fLD660zTx=t=rr!)yDM>caXh$Lx#6I*alO&!lm>mj>O z-B6nDio{RRm%0Wr<7W3kB{>H_2NC-xf>I8fxV0fY(3V};<4HbZ>$iH=T!~KMc#X=g z0jy|iAX&v8Y;8uivU=N0bz2=3!@nuk`4fn5l!iyy*lkmTwiiMO;0M_k6{k5j%frI@ z!W~(GM+Q+=Q3_eG~O~YxlpK0WX*cBHantxYaM}%)wTaQ9F_9VVWBR> zi?g(?-1ass@$*Jx1p9nPKhlyp?CeC_^kZFjE=FGR*iIvLoy~6V^hwicP?k?S(Z{`rQ<+^|dp*v)zwuxNqEGqeGc$g*aYC&~}*uq_%=*c8j zu&WbU#-8qqCSS1d-D_yg*6fGfLw)-ke4X>Icz=!aKUzu7*RUy{Pv|Ljz(TxY7%1G9DkDtpoGt~x7Si+ugn%|Nw z-4jQrwv=WvfGK-?Ji83m%w$9_#Mf%1{#;3B-g}MYA?va?kkVdk^4?7PcMEoVZ#&wo z1vBJDXEoU`Ea@$RqwK;|N$DZR%_hgWjQzguvFS>CF#JlK!9lM?P zt}*j1QMq>SIaF5=jXfDeH836aXEU{%hCRV7#=q!NZOs-uzQcb0qH+DU*d(N^D$jiw zK}-p1F7im^IBT`fm;TX=CGHDM(0u{AR?|T+p_*^LU`NalZI>h#Kjq7KVd}AAR@dy8 zzL_1&Ht(_MwJh@h6T+NPHnFq&nv%Ax7=6rU)%N?6B-V0&3+ffm2JG)dclsll<4ex6 zeftMTPTPxa(Pj{Y2wxLme}%w8or_Yy0@o9Dq=4mwJgr2CHt-x6^LW-P--~{Bn5E`7 zp-KMCn(ss1ud(g<9jG-98Mqd#)&bw@KTU=>oc&mb1I=mUJ#5s0rtW`#4w}M>Bu#A8 z6gzwOfM2~Y_DJ(T0I~K$E7ASO?CS%*#Ks;S@ai~IG!yZPY<5Z+i+7C`TUxoUqolI& z*MR?Bm2V4JoI-7ECnfaK@59bFip@t6hSty4-W-~w<`n@ zYlPW4(^(i8h#3olh4O|PD}o6%uOgi086AQ=*pJh8Mh^$ozMlY()-hVBIVq7XD)eMU zMYUM+;pW7jEj!%G`CvB<_3=?p_Wj`|by}thG2J*~6kSYa=V;?u2v%|@?>3dQ@>_{SC+CurdG zXzo^_V0|tZO0xMa^FQX>qx}})t8u1pzH;e~H7I_-+2^8SSx{`bA@T^$$}slMvD~cjo6GG8@KeeFylZxZbnbuo zj1#!PBGhSL2B%PQ7^KW=@cM}DyAgR;!Vjy8uZQ;f*M_*(i)}g{LaQ}kSB^(|_{GVU z&0iEYk2&ig^N@C|^@)J2rCu1HH9>d;2oKVfsnutow<>B-yybGG)TjBiv}agIkvaE! zeaL=V1TE1bSQm+o496I2B(e>rxbBj5Gl~S;Ortz!#KEI73j6L})@eqT z{^B|R2;x7PAA zTZq+7fjt-zN#BwDSIffG{tFm82>X#0yAxHa9Dyx68ah4ok z4{S2vcoQtIq+CxZKg~x>t&~E=c(VYx3zNjWRk| z^_>-h1AmH-iZj?vpdq=9IuZ#n7KlIgta*S&9T6@<`U!g)-Z4PoUu_f0jS+F#<#r+m zR<4q>Sg}<#3<^-W5S{H+p#k>q&?~r6SM;bOVS>K+W3MUuGmCfeC(HgfYDOI~2!Qxw zFP85jERxA<`_Fif4S5jqeHqOdv3?FRYD14gk9gI15dKaH(wGp|fytR#QbON&r5a)57rEaCBnZR2UU6I>Pu%)}2vvR-B@Ih#*jV4nNwNw)|Bs%x|%sUB| zG(pxN)igcyj9qw%ceT@A`eY_U;4OicMoQ{7Y4v4$E@V5*0e&0VDpszc_` zvm&Zzn8zXyX>+^~AAV})1e~^te7ZizQoYLTH;PPUe?NnyBOSn9Y&u~$!Id09*Q0QC z6%Ig<%6to*LC~Tzea=xa)QS%E*}DY58m(q9kMX|isCz>(NH`_g$!N8cuu7d|g}>H` zXqvg)9s@!ZmZo@!I@p}re}dW|Nil1Llnhm*bR<$rsSpLEq>fHF#EaPdf^leDN@+$V zrfba{4~`9TJo^9TcqLjwEQZP)Pr!;(Ar{dza|M_Z^A{214f`~3Tgf28MD_nLh)UYM z(^c~QI|}d}T&~@Jv0JXtu0E%>kV7Tr_1XVOUNkkIM+WEr=Hz#STooPnSXxqfFjB|M z?eBmpk}Qsn`rMUxte9NNU{uFzWQF5UVkHGr9rnwYO|t&#f^f=H^iwfnY5tW)dlq$I z%jZzY(F$z}E!~8>tvuRCg0M8Ndi^w;)@T1L85n>D(z)!ADTx8j8b2WxB+1u`oi>6G zLzFev6{WF!9(eq(fY|P@JhBWjx!xE33-P4rr#brJ5>MID0s4-_|HpAsZkgjMPU*ya z7C}`Xcy@ayRU}4@qneVVGM_1&iBf{BA07hGCIeZHK~=qT))iEEO{&4lDbYsr8S3&M zDcph}p)UV6Of#!#stJBXCdjOzlklwhkpLyPEe2zo?}rIJ8|k_EelY$=g6SNq5RVY+ zv0ojrs>X+(&eCVk7C_|uq}z(OR(pM7!Be0w2ho@2vr0Qd&rQ)sFKdt)F;bZW%B*Ca zGgHmE=kz&;5$af@5PHmo&zX+!BNE}qYre<*YKV}0e?diPRZKQk^mYBLJqQxYXBw6W z^n)Q}TCpuH)3_x8Cj}N+4^QF@rQ88A(edjskLW}uSdU4e#b=+E2P{(kF_MX-FsXid zYQ((H>a*g)>^ra&3ilxvwr&**n~UtVVqwF&=2sp7Xx4B?WI6wLbu*Z4NdcSEUP4nD&mhMiPa6mu^$F%m9o8dmB`wJVW(u3-@{U@RV&=Y;3|dQ zX;twp;l(TPW~r*~s3a6=d@ZORj;@qeRoe^CIkbX+QnPA>d#F$eUtFuo2+}b%m5WuO zzkw~~e0nLrP}9Ma4LYx<&7QE-^Np#~6E^*yjmCDCv`{QDqR9L#l3J< zK$MwL?BI8;8+0&<`%LQLlDi3U|WBf*&rBw6wF0yYzQ_C71P$V6@^lg#yb4y*ZBJpK;Kr; zV^nmSKo=lxRo+WubARkXCk|t$e!NU?PGajX`qBs!J8`j1gO)hB5lsH7F)0}kj`lID zb;+0f%YrX0pra#tp0B;m1LehifR5Kt?WmBGKk`c@ljwnB`s`PiHu=`fRuaRB0|8k3g?uCw`hhKN-jZuXgnf!F@H%l(wQ+eA0l-dPvbQ z>>3vIr#g9a#Qu=2xSHIp8s0IzHshils&A3^?X(8!ZpA*ifynDbqKi8rMF%6%nV1_7 zaf&X~{_Qvx{BvmM=i^FCW2|Fcqi|GSY7STQIs4#aP{E9FP?-yCL7));qNG?{Pe&q> z3%{TBg&;6u9Q*j^7RGl_1$=zf8cUzWju6ipdIrzncxn=)&Dg!4!|CmQ%>S46e$gso zO+RrF5fvlEyE;gXXX3>c{L-2(>c@8c(t#%RW54~*@2A73r46YeEP-x&PXQ zxU+u0b|&AlmA@LuKDOo8?sRGid-Q7%Tk&f(=6Bn_nR|)2bSSnyXU^ylPw1>puC*O> zwnT#KAJ}_EyIMR-Yq4p!TXs3&FEX5QGBAW-593v7gQQ8kEiNEdpC9J~Q}_r#;5ML8 z*H-lcMu4)PUB3M$X~RbT*1bWIp9qz(m}|?gX|n)WULr$Q_#5sYda;^!lH5ja7Pg4I z%1NV`C~X?CX?Hqh-1t8Z91c0Z!4MK1QQ( z-so!oQv{o~+P(?!48N%9iXX%cGn*-(7u4Bms6;yo^f49vg^IQSq|^dhXreJBg1nr} zUTy^#tHPAP$Y|Gu24ry_ePn%8*w5ydpy!$qMaGuxX} zZx1%z-n#C{W{|!m77`c#&v902v(N2wk&tV7&xf8IzJvnv5DrUAgU2h8*-GT8GeSc|CK3O?AVh=hPWR8g$&PP zPoMaEcKT1`KP==gZ_TG=!2qrZ9)dUvfrk=M2KY;;k9DKNb<1Ey(5Uk`i8E#3MdT5Q2{e{GhnIB9qJT zbDaQCuHgU`ceRbE&;#$dS7|Ui3%`f%{$%f$v?IIN`4W#hkM!Up`ve?8xFP9T)atlHlJbj3gx{I`Mp$m0L@4+?S-ArFR)s`o3+cDW&m`MmOWJ0&YsoOj-039lNDp9migv38P0XatJ#UX=IVP(_8+ z%V4%#u`41DcEx@{liEHpzb&WZt+B5OZfZtZvn%#}qKS!Jc-5Bv>cSjLJGk^K#qwfx z`qYI*m-^967dEl9xywJVBrw*6tu6KI;OXL^8j)2U50z6<&3USEeXwI5qU`GR_C<|nd#i9y3~?4Uq;AevW7n;#7H{w`jj-MS$%j{ zN?OqVefT6wy3>;;zL$~|@-FvsAja5ec<6X*BR^%E*jQUV+Tk678ZHVU4{PWUJSvT@ z0c&xpjc2(>tasw3%1k2>(? zP9)aF_(BR{x&zO2B1RhLz_}A?<@}|HAFNL9{7WY?(lZB+>YxY^WRMJ^^Mn`k;a#hd z1h?%-%9pDT`RKR#2h~X9y2(|*qbKuksu7?1TXFBGs@1oi%t>|9j5f?lxfS-gt1{7ois{YbMArgDNp2K%IDU2t(UTM-bzRAJw$6XwJ%1C z7-U{*Db;@@x)>Z4V25xz#=Qxx)RO$&{vVbQE38a!o{Zu?s0p z%&*sM@Qq3Q3un^TXST3Kq(GXQEe^wAKrw>d8PL!igEB0G`?`>=ZEn7zx`V+&q>=ao zkzNKM!J39!Ij5Wxtm&@GRGd9Zo41;Ne#QTGA-*(dIycrJzAh6{7fmL;;t4fKbGK{Y zrLwrT@|+rEY}SK+QA;|e8P3X@X`+`{nVC3WHqTF}L9VzNpI~hsWp(t+R-Cd+!e@KH zE!PzyEIZSXgHV3JRvKFuF)iY=k*vW5wpc8U8VHU>=__B0f5Al|cw}WJ?w`n5p!lnJ zM1}#%JCZ{25%CtO5#>7hwh$-E}jKgSho%3#;b6Imfe_7q?QTea?MeAsbbCA$pJWegHmdDN)S z>T&!ZAyN~QMd-UI$|b7&FBl#U~wvND1t`z%m@(Fe4wVa4c)+jWDs)Pw;UdO&2ES_>z z>~bMfFWzQujz{J%(wtkG;iOy;2q`>$&Ny_BX?y2yDxH_v3gS+e@fK2aLa=2}C~813 zV#lF2%IH^F4BP*vSwar;(FPW_07ZoyE@S2hDpC$1&%`|hNWy6jDk<|Gs{;>EK88b5 zMZob9nP3$8z*2nbD-pO@&o^if&o{^gxF z6rDpXVY-YOf}JqMMc|~h>2to(^c1N)!NG{VP`ql^kcElr@fpZs{8_RvrK6}2!}pV5 ze!>z!6&oy72$_P9Et(LFASQ{aK__bg zK%R)NtwS0*yUL!Oy!hcd#JA4V7ofi8q4df27yLmT(wr#VLr(#l(Z%NCVn$1y67zO==7R9GO9-`b0k4 zjU){FX$9=l5^F5BVDT26;?$!wqlQ92RO(5kBH?i+fwnN+y!q;LCBIn6*xf?m@ zT;?64MhU6FYa5lW+@~(_Z}d~Ls(E_{Sa9|{SE|n~g3xcp_xh7an zD@*wMb;-m=8=eaKrnga4^7rC2JLofRbSGZ*W_A%I5UOGSiQ%B~+^4*kJ89_t;{@rn zfzejFc3t>9cVetdT36Bu)G&P%-|0?#d|vz|JNr@=p(47BxZg(e*vJwP~mDa=R zqqIStlmhYSsM1JRX-r3Og+Q zDmgO{{8&y)q!#G%^HWK6*SAM%oleE1RFcl{_v?|i-glqCmaAiD@CP2U6^HB+y?&_- z(rq5i`Mr9id05vrpjfsl;R=;)orSi~2WPlV+4?eR#85{iB*fRJWoVAqdb2DK~Q2MUN*oTRT z;GjSLfa)dy6!Ry%nkQ*PHuDai#Fu3Ap`N6n+frDxeLF-430NV4&HPPI5>49iFM%c1 z`R|^j9XY`p7>IxM+(#f2FrIhEi-%VWG33|x93S#U2GZ9v;);3)=MZ`qzA#KO?avhh z;?^lwxtkXvq1C*(7x8bO_@+)KZOw4!*!{;}7IQTQ>GEf|knNf=5W{KxPzpB)h1jU{ zp1~J+5kG^W6|&z)(5ymWu-`F5_+c;7m>z7&uX!O1Z9IgRq94x-E&r?buRNjw>EfC9 zpGX^D)qr@ldV*|#*q?qXY!#`^PvtG*=Q!S1*5I*huHnP$j{F}JY3QH?4(5M0AYqMX z{3rts-0durL9z-7#7IY6)`$erfG)h5H!;%{ zO?f(Y_M{)*>`exekN7KZ;#E8Io}@Jkg%Z#Ge8^1dw1ltqAxo&G+3NPB9x3K+8xw!} zp8B?%Pi+iy%i`-Bllt`09lpOYNokN60oyFb^b(h|+Jd6ZWJaMVjd=$n`Iu&e2vWH5 z${*rNouRK^`305oX#p)S=d1}yCR_PmO%Tj_`^oMf@}Q<9k_Ij0=}i&iU+|Tb-bmyd zo04fR=kB00sBbZECi=Cgd?!!$C0?C= zI4EaX0w@S0I4NE=hifyvYAU*cpAvhl*JsDDKKz6)x!iorSHdhZJ>aQ><;<84hX4!9 z8G?`(Ky|uw=EwXX(>Q*~j|3WO2)_Qu*d2TG2L7aZpP%751px=79tE1i`@86Su*_<@VvNx`P8_UxO4SRxTOdxxyIFy5Liw#!g zCnavG=(;YN|3{}k_t4slOCKq#4v3_VbpXDPtSyes_516&qw3aGWXKnF+IL(P=J&CLS2gH`7cm!Ur7sGL zxIUj~R2J~WV7T(fUec8_zC4)p^N1{zLJovCh1-cVnj@U{{m35&la|!WLsV>39Ho*k zUZRP={P4w1Rv?G?m=H4C>x4>a8Ysc%hR(kv7=Vnw;(vya_T6WRcZ>L{BLh#$($63t zc~2XrxUsa%SkVjo4Kx6;V~NQhh4tZAqfv z$bSg(YFIET1@Jf%yC}u60fiF%Ca>9!G$2OatQ~1dcJRLKkb)b{OWPr4f>_#-CUu8+ zzAo|6UHOrAB#H#dTCUDrH3k-li1=zv?$@4}Ng|)po+Kc!D`-!K)Q;a$&Uc6U+!#t4 zk(=BUN}9U;TXt31Ix`HT8d#sFhoWoF-wY)o121}j$7GY%fj352_7&jI4TVjKP(Jj) z_hLMzt+K$GR?#-Gm&0KRgs9}ndY}!R+BXZMcB3%MwjZ}(x-HxPP^Fb5A3bu*GpTNbJ>plh3rE<8ihfnTElE^h) z)RDwuDAmG96djPt;}OUEDCcE2b`;8CG5E^eZ0EDci+B7!uk9r}&rq5}%W zg^!CMqdNUG4oi-^eI{fi7BF>Jl=HFh&G>NXq%s$e6;5)PI0=#)q^QIE*g(WkH9KSAK{Sue&3Wt>oA@MyMW5_9&08uBVl zyrn3?=CRWqyl4MQXZ1B(9^pOs1&``VTJ*@2@Rtr5_08EY2@s*qT$0zgfNaF4AS?Mc2B$A9HH+W$r@oKj3 z45(W}_oGlOLNvGmC-Q9@rK?eweV1BtVWQRAazhm9LqkXLiBT|+hkREQ3}h#N6h%7H z%#plBH!`U9WaQyQhEF7UR&iT5(%$E*Q=*drLUd>GsJ#E7kPhyS#Ui6{f#2wc=`(u- zZyrrdG;9P4NVFc;Jc~A_p^}fUTycqa_i~MX1zz<$>w^$PC_xA}o ziho35lbObQ3AS-a4C0Plm|XB&4)V-c>;-@1TVu(vAmu&s+DDtkmP+&Qg!AhY0~>?x zM^I)86}k6)GVP7xWHl*%yI^s-Ryeq>GMz0(9% zxFFezP&QJDbLJD`u>;Z#gw>yJ#G@NP1HGzf|_d8oDPi`sUclRy%i zoK3ta2C*j-w^b%W6HWj_|`;Qehj<>qY!qd#eIlZ-EIz4hjF`>k9!Z_(T8}`&lLVu9}*a< zP(ipvx{nfqbM_wvz~+>A9*dYh<_f-eOt94RQ%tsUIo0jU0~4_YD*TrxCX)JOKcA3D z29fLhXd)Sa{gFpsGKqTk;fwo{DP$La*q4l=y?gV-eq;=}$MgD;OVqs=w6pgl>hy$}VGHu;Wx^8jS><~Z?7 z14wUo#R(PKRjSb3k#`)33W_6783-TWw}c-VNDTV8MymGYmj{X$|7{?d)V%&4VS%Ye z5gd-0BO|b>(24O`bR>QX2Q~<-$K%g=<{;9Zo_WQ$4JL%XNE)llNq@QR_b@tr}|QQ36om0WT7?h(lEp7@7Ty z*h(5Acvui%lDEZu9Cb#WPJWjzE)qK{FJ%G}6(n9MKJ!|AWfvMKq93g z%Tqb(xBQLiYBpQ5L^==$Iw5dC$ZG~GW{eeCwMGb?jPU4mymN%RQ?X3FOLH#5^QN^v1@S5 z$AW7e8;1M7so)t4)=f0Q@eO)^?LziReRc=H#1R(`EHe#Ry>g#r_*M*2Y*|tf%c60v zIPvL)lT%d5yeqDvDqZfVm}bDlTLba=mSX=F=9*kJ!@S$HtURLE<46cf#c_U_QiQ ztN8ZCIU#&zD(;v?3LgUpg>O4?(Og_d*LROj1u|V+!@=~zivUJPr{g(YdGnxHwlaGp zWQkqcGapXFSr_X7P7e!YHpYMw&apWNL zQqM3czkf_{bcZV>VP*d-m+OIjxX|JcvGZIQti*K_I#?K{WOY%Wg0s6~*zr;|-SJgF zUOMAN+1*;J_?dj@9-LsEgMs6NXR(%Gu&(jpXY?y$z-!qB2VfzVc^L335xpV|6u0rr zQbJ}6-ZUAN2pMHTNb?{hdBI%>3D7bjje|tQt#)Tfs-Z?L`wUSMgt3Ls_j6tFp8abf z6FKr%82QylWh0MA#q!br?5>VpHqzUMgIPNh4Xu$lw^QRbBbrwBOCV_O%A>L~=Y3thSrVyF*Gg!I$l<<|KiFedZ zF_`rg+}y-LX7P%O_YFATx6f0#69@I;TN(KwqcC#3C-VoRNkd}{{G7dOB}Rc-bP%vs zg0+Fyc)%FMz!M+v%rT@5O@F`(rxF7%976)@wA>^dn5iKO<=K2*GKQ?7_h;~T#*(Q? z{~Qpm1-{0;v$TA5b2A1sH4bs*?o+Y587Lz3-|?s%1hes$?wIBBqvG69RIX$qOZcks zSnN~BVUh37^T(0F^g%v%8&BH0|MZDm`L2q>axXUIH)R4JI37F4Q^ovkRG@S3@l)e* z$7Sn1@m`PP(vN}O)?V7AkVLY8FG?X1^n`3skAEjB^wcVpra%IF_wj@YWCrQNk4_-{ z$UI&*m24)_ydaf~q`&3y1`~;Q?~CgtBbQJpTW7&?v9qxUigDoRTU>hUA)c{R8kKc< zVszr^^9~3-LV%D5p5@0CFYfZ(iKK1q0V>Ubf@TYTaw6$Pi}!N(Nhm+q%g0P2O^t(R zfR;E0)K(!g-qqPGa)E8H^No|paQe?4PSZ#t-L{AKPs65uEMJ#Kx)4A9QyMY4GbF^L zvbz{EKP_H{?-2~jl5@P)WYU>lxzBq{#^J!~&w1)(?75D-&p)0_deaBL^2d{rLOgk& zH=6?ZN4xo`DWoy!&9kQ9q;n7Q#nP?Fn-{jMNTm;wbHX8C7SjQq`o<;H*arVmvFs@G zz5r~sfN2o~?vB{sta#s!mCHV>{9V}bvIhVS)5M4O1ENXKtO`JYpc$dQmrYZsz*U{7 zH3Xk(Rz}P)5HRlqq-I6?Fwv*@AXl3>C3o>IKFF2&!i*eL48T>v)G9Tmzw~dZf7uBB z-T~xkEXCT0((n<3=JW>N5|gPFWfyqyRO0LTSuq@2+3~72;hkL8a{pDVUk+0J`SN1k%abv|`E<_xC7bQ0b0B@%k# z3l_xn za~{{<m-oqluWj)z&&|LFq~LeHHG_nNto~grc}l}< zL1U(~9aRFAdMR(+CcGZs6%yy2u z%|aS#LI!U>iwt$?`Ht)?;T^tw7WudBoio_*S^hvYfM3ueN{6vnzePqv{D{Ii;IR8k zu#Q7u0IbM_j6cf{&L-YBb-V^7*7u z!#96Kby%Qt@ez5k5>W+yIs~<++~&vT6AzbxqJqt7h9`b}MEtIR2;zhf`t}E&ynyVcM>=u0h2Z*eI`6d* zPA@N=TNh&QJu{teUq~YK9nyvG%KTLI*s1*KLej$h73Pj`XszKZR74;T$-)Bu^fsTE zMcUWjeVgDH#N1*7>$ z7=CCmX^}N}iX@%`rV(hz_yt6@iw%gfbPup+gO(Dmp>eXNp=)YraScsrprLUK5$Ik4 zlEM!+W&3DR;l*T?e3WBZdta@+pFm%2qT$CN-yj>Wje5R7?O%NMuM|w?IZJT*kU5!e zU4nTu9XCwzP7?UzCB%<3=k>FR4{_$9*|7iHX?z%7>4`KxFB^^4r|}KhNFZdT@uPSr zL-}nKb?c|8@?`Lqh^mcBEH~tkHgzvfQsIZo;EsGq4heMU8hlh4{PZNgCWo|gAEF_g z!Koy)Y!bheL%KH`e4Xh2#J4Mu;?Tb}+O`KC zOZvLUX$V_cgIN=~l1qBky^B4Ypfs_pMSULkCUOf)HMscpUG}g)m2Y_ye8y{t(Pfn8 zr1Ib2B;8sj{DORD&L5y7{s{s5oic*IOi+8cSVpNP@3)jBxzE<%hB88*P2dNXk`Z;Q zYltZbU1irDc=KgoX)`Wo3RdTp!7ruoWy?q}_c#r)u?#UQg)2bRy*plQv9k@EE%=+nll=NyI3#T_4|y>o9LT{Y(vz78 z0LqS5yr~W5r<~y3ZDeQIPkV%me5g!E8Fc`MF1nN$ON&mf*28oiTYwh4bc?) zYkAXnub{CFZ3|kc66-x%WOW~>L|N+LOX<)!yduee{X@C(Aw7?Q;uoY3VbWls`%Yl3 zq2JG@LvZhOK!E%jTIoDP?5<-C_F1q%Xz}oOVkLuwd%MGqRVi|C$HCOD51;-|)5X zk{p-aGvxq3pUIoON3Pet(j8RQJ*@4ke7Dua*TL{;Di%&*Zqo1|l*<4pOB(Zpwcz_i zK2KYVv#U$T_|dhbMZ=hUA$xJF*&2!M4rbSJ%oU_V)24BUbtEx#?j~WJHxxIN1=2Px z^&C{o{G&^`W!?~a?5$P(eIsAC4zf8lm2X`~jDwPfD(O(w`5(sH{%pEYE$PG;XjAFr)}l#s6m89M`gE zWg0JhpRA=*2Idd>fVh)78zxEKKSrTsbmMP)NV@y@^%pGPP~OGX8`~G?7&kyd#4imX zOi1Fe&Bkk%T|KCZr`RwM4*uDOCwxR!h95f)qrz`&2&4MokTj~ZD3q-qNqhc8 zpz+fo0=+;*KNaZZAMtt{um_skkN4U@8U*Z|AcksMk3yN-Rd5k)EdCt(1#5I50u(O{ z859Qf*xB{LoJkmo;g=PO_YgIZ-f5^|OB1^1#mqqEG_X@mZTltLDAm z0W76qmz)5t_ zTJ7N6VcEfquhGFbYxsAcK~sMh^1Gkmz-Zam+-EaR!&>ovo5>71xsadUO#bn2dj`$V z)|4VGERfAN3m0)5yFlE}=npwf7{c#vfdT9q$DOy5D2HL=DPOsYw&Jt5l2rQPd;Hc` z5`ur;g4f$d*3&=7@-McLv2;8>>)DQLrxCp0cG4`cJwB|&VFb=(9x5d*k=s3nG-S3y zvP+2mO)e&hBJZCRy-Slr0 zQW2Ju@I8+Bj4%UBB(~a-kaPrYXvg4OeG>m+F9~z;5~OV&1;co~JZw)}y~UIANPMlE zO(8_2o-oo_z9o-*?Pln#s&JU9ujxa0?iXZkqg@fDrMAIXYF~;U`h2Jag^7mZx_m|i zZ?KQNMSBnCTlSF;>Fz;1Za;ZJzZl57<&zH@|AEwLK{dEm$mf&oQb9ipKk(U7C~@&p z{%<}BCZl-J0b&ds84fNr!<*4o_=1Pv%-{nnI$myqvw8~C8q41}0L!o*%76a=x$a0E zmhgE;aGJSu3qN**Y$OwSN+B89!njGU*dgIW_cg3#?&o0UJr~tlHcDpdqK2|(5r0rf zEItJ|PO6etu!SD$CS+%7+MB<7lys#{dgos}N(NGTt|xDOoE)aiofjV`;V@zU6G%IB z;z=jSnwIu>w6a`R;*($<*0FHcr-ach4^(5reyL!>I?t%g4b1mANp?`$b2~qA8qwUy z?tJhWGL_cp&d;79uV|fEe)cSON(*bRK8Hlspjh7L95$PKoAI~K;cD6W7=HO2@h6e_ z|DMCgY4lOI{AyoeEujM<`N!XoBXoUNp8PHDw=M0OKl@vvCoVo+z?n6)ahLp+=gFJ~ zE}MMCyJ@v=zUw`bUen#rfbdb=6jaaXt)UGK`Rpkvt>x07rmR`BX8!w>HgR=PUP4^f zQ2WdLQ+4TmCzmIG$@jnh$}cd`&edFY;mc^?cmI)J>O)P0B<7p&=^nwf&TT>)V@_^r zLO0Q&_xXxdG%$ZoQ@S3%_VEoj_|Z=s3*Z=ea3J-_|G|&8BDEHNE+V~BT#5bd^ZXjf zPdfA(9Sdz9Kt3C$^$j!(B^7jnHowDdk5%Te9!Ici7QZTLGc}e^7nSG5s4O9;u-{b7 z50G#b$v~%BzpZXbn>Ou-ddkHgglasxi#Fx6F~;JzB-^RiZ}~ATsgcrUC-YMR=>S4U z$MGYrX@Yz9@mK1G2Af2AaI~Z-zflk!Lhwc9tTyz#|6QZ-1h_;5pAjj3(-kj>M8r)z zgpuL`lXB9?Ck0bG9sLU*5JD%`EZkT&WIui`gdQZ5cy?QQi_VGSDeWktl&kzwI~v{i z(+J2xTUI8tk#cbDih-on#1!jZlZUmZD`;U?ezraR!TV$*RCxXzw^!uSbq{w~oOTMB z&8dZ*9|)zvG@}u}7fRD;^+tS92inf(Vnd=UK39nN5w$!95xgCO+m&zOO8%A(;5q#L zP%vRq=lR1Hl8Li!VB(3BTwCW0bcBk&prY3bUH#~k|0S+1kp|D(p@NgDOa_k%t$m9^ z;g0#$BWMx+y{W(Xxz6;B1_wh>aj5F?P51}AP;nRvC5q;cFwvA+^qi5Oil_PEkq8Xo z>+zAxU8TKz*5|YW2jbnY9QRx?XgIxwbI#w_g9bU$Aljv!~M!j@G zQ$7`@QGSi=Jw4yhpN7$d`uSJ;(`*OY_%0tcn69E9^8CkxX)K}L@8pLKrFSVE@hfjK zf_7^dTL;4}`?uYc?FM*AHAYJ{lb4kPe8DpspC*M>6;t*vs5~R z{RGlE(hX z!_%mlp4aj0G`c)&{U=06^*Mv#^~CCy+*kDF@dE$aiu~!(Bd~RAw-W4Av`_Kp`wcc* zYrpuI$4-W@Km3?4o=p4wpWeO)uBYq&|Gv+Cmr7DpD#e@fKPmr4iV%{}%zq(-Mk9n~ z&AZXIQduTmMw|SdKOukLm|4s)V(~G|n&r>zZNsveHR^qT&vWm2r}^6F-}m?X-N)m+ zpXWSZuXE1p{JH0zd+xpG-Kam;&rE8K6*lZ)bKluKlHVV8{ci59$2LXl@CbmVyS|an zCkqzy09-(UC{6!-%6^TlX6M#Ys~N0ay}Y$3&CHj$1?p;E!dk)|Ng!Llmhxt>roIcg zyz6^vX=lU#Y>YaoXV?tPX6#zJ0Y#^-T=5aUHA7L_t~I&LWcc5$fgjStMCRfBa~_0) zdhuL_`o-SO!tIwfaj^0Hkebb69hq#QF|*jJ+O43;Z_&~Y)~BK<=H47*fDMmbmdTU0 z`Ew1oA-W=pZ6F31s%tvH=O&}$; z6Pp*jf^^Ky)ujZr+`emQ?`#&&nyew8IjpI3)oPqY-!}t2Y6qm$?%WTm~Ix?TV=^?`ot$%PE&_9r8 zX6U9Brk9i19-TwiTv6y$3VIVCyc!m;TE1=|%_WP~JnXqb_0>Vt{G;U*xd6tLV6!xH zrlxpeIW1Vg8nX?{Y0Uy=_S}sQUh}E1{U3bv4;}qJ<-Nh)V{OdTHibp#8qmBH){EU+ z#;=VX=|KwfW79^FIfr>u;G66%`*$yKJ3{@J(BU^(b7R(PJed@~cyljb-l(B+4%WpE zl$&KgHF!IN*E^r2w&xKsB(yY-td8TP#rf(zEzVb3u&_E#{X1G5Y)xDp=bAcq3|*tf zF^yly?&{d1Y>G@pA1%q|74W87Qzzj6A2qcro8E(>eRtE0~B40@Qxd}v)7Ytzg_Q-1XvzRK%`o&9c_msabCYx*{-enhkFi_~;ozOPno zQmuNWp<2_c($%C*Z@kTHb!^VNwD=wNI!hgFvb@87(6Lc((+}yWqE2t49OX%B6}5u@ ze^im{+tfM(isflg+^#9!hW{^$yo$a`qnS{2+RhcHXo_po2SHQsbimGa-7M& zVfZ`=wbPvLw_vqsaTa@r{hVs5oy}}z-E^v#!xk`)g}lFwWGnla(A7R>Y)1?&TaJ~G zUi5T1`-<(^M#Z_f(0rdvf8??#wmX^ntYAYLzMTxiutm%~ZXGVVc%=(lJ!9^dl}vk9 zuu#@EnI5h{hdwr+I;~_~nbTHET*>;gZu9Arm29#u#?*vZ9%IHNtPruLZN?;_Fz#_` z_24PgUrWtLxnNH6j?t6vGwS8*&Ldoyq(*RfJ_4_%-{(;O)u^TmbD)@|DSk0WtETML zyqfOLqG5TcCZ}07s%h+pY$N*(%Tgb)?d<$ZRQM75j_r!3_tv6T!cBj!Wmwpq@)3Eg zW4+mp1RA>zd3>6HJd$HnV|FJ{_Bvc8>Lk#Y>(~(X&2;iv&mtS{pZ+&hc4Rs&T8}Cl zJ6)@?httSr1B=6cO*DN2OJOV45Z(vqXP*~`1Ts5)7)M<SwucG=N zGe3FqR2@bC%v@>E$E+56X)2BQn1wa)8H3w#c`+VbRyfst_Y}7_+b!`6+W9dqlX$rS z8v^kMEHQstl*fJb`lRH#2h8YB2~+6i$1Ko27#jFrp;PK})$fM!vbr^&LM^v2|9TxE z!xetiWSxW;tut)=rqGlvEQHk?O&hncW?p9?(3ySg_&Z{+#YSYl7LR**q&ve@(O}A{Qnr^Gf)NCsYuh$Sf(hWz8tLfIBOmA#uZJA>nZQIIvJAFUyS-pQdj-GC1 zMNSt`H+5U#A2ZMv=O)sZ+i()@nMnHWETn!^A3jr_`+EP(&bY%z%8Mt`E8AIQ*e~Jg z6dHfv`HQ)?s+2_7&s4o_`G+QZw>pvoZ;m?C_&Y3`#)WYDZaed`|2l>@bf?QPD+^F~ z?_<=xfQ@Ord?V(D_`XS7cFhc3Jb`QBgN|zxv~S6Nb&#;zNwc#P=<@>B&gmN3DJnY& zueN2nT^_S?2XnVS01644#!%xOtU0^#KK0wdny?eGG;Ig&(r(65)(#fbU{@?}qKW6H z^sl?{D|1jZuS=WNv2Bjzo4ezo#D}CD#+S6*UC@!f0B4RKtY&#=Jni4f zg4pKqWZuapg$;yE+rZVv)*AIg+=QTd(ZdqU5&eO+CCzDr@N_Z59Nxypo$F@W{9_zt z?qVH1Kde^i02K(bK(uLld>mcf#RA=O5xP6Rf=};K(YK)x>N$>l3R#o7gCL5^_@Pg$ zM4mJJ{hhIDVUlK%OOeji9k!eVga3QNp1@H9)r|I!H61Esopf~? zE#*z==!aX$@t@Gs-55g+W9af8*12&Wnuy;j1{Kvk;6?~!99w)txA>;T{!F^tyJM)$ zUNqF?F*I;5o6GKxrW1QvH}?A|((Pj%SmJ2vybp7y(W7a^J~pP#%~91A_VFnCY#(db zUAJm+W%R;+-=V`tB27T{n_e>}P>Prmm^Nx^5rwv>-Fo z2xYa~2B7xw8du;cNk)zt@%qI!OCZykJ0Zs1AJkQQn}^uvD{4|KKG6={3@@fAFGW#< z11RH+k<{e?Zo0quj5hIb{AxORfPLC|!a+P!vDFrRtF~i^wyBSZ{6HF)3sAN{-mQAp zxP4lpE$0rWLngH4h!5zBiA}BlU=_C+|8`?N*KCH<%LiE_JICSNK+`Ike~>M7Jv
3LoA_5t#{P>xRLu|%LvUD{WjGCJxns&y+bPxu}t^vgLsh& z{8G7fc<&OnxUC&TFCAv>-9JQJtlyXi^h6q1B;jR$d%wwenDw<~A1|a+MJ$OeonQ(* z#yss>H=kD}-U5oq?2JFqQ(yDHn?INLvv~%*L~PKQrE@9uOZF05(T5Iw$r`#R_18%! zZD!(EGT-Cc7`W2r(obJvSoolT>YPEX?A=Li&ah??mEk&VThpHW4{^`CS^tL=6*!?g zZ`4i`0em_*8w*M})y<>p;c1lm-A8ulQN-qtpE}Q_RcBaJ_I@}WIfIkC$2;`P8P=e| z$s}%TZ`=%FV>3_GA20mNN#t{ud3kMe5eb3hiM$PEF84{Im(Q}MwZ7?%9{30!jhz*FR-^+r`M?eMK;s(*hcMU+|fz991KUNL7zFjkuF?huEtZE z7;hYX>Z=OQRucspak-jUqY;jq)D#hAiAMNV6R>a5WLH5j(2W7{Q6mP<*b48I`2N zwMqM=Grp5)#y?mX|F3f@yu`*byA4$LYu3fS)q3QX-L}bkivAk2x%unpy{~Z_pSO;V zea)hrJ=XC-(QIzQjSmf8M?ROCXS+j)1oktqcfAz6(@?!(G?aeKSB2{#{P`flyYgxB zW!B7jjmA&clKM2CR$s={d}uzIFS8bWb;9Keb7f=lsl^qndDMxgSywQ~22Q1&S8zJa zj;G=)%!6H>N_Vbc;OQ4nwXU*oc3~&^SVC+(mA?9pb!T5qp}N;u7|WhQFJEU79lEJAAsap+;+xe3 zU95ZH+had^q#w^HKX%JG{UoA#Kvvgu(f-;P`zIN04pXT3IwSj6`BW#vZQ^7~_?``E z?WE3pY-$0XZ3-5VQT0kh#&70jc)JCU3;7lK9b96+XQNn~@zlGFjcgrP z=O$(u{PnrI{ZE@6$I_x(h;50X!duLp-HD;ox6q7p$I#td81;t4kmGF@5Ij4kO2Hj@ z&||f@>a3-jL0K?oM-b1Du;K@`{&gdM$JdcCH8_TnZlgsHkEVUMS&yEF#?(xQKZG`K zuBOz42ths@II5b9v@%X&>v|ab5XmhVLmhu$J(%Yhn)?IGVsDHl`401C2S!oLJ21Dy zC>n5wjbZPMqAhpO5IaViF5JO00~R;J>+E^ z<`+J4E*My)V53H}x^s5VaiY&fW!%7~;TXrxa-HFW$nICx+GTZn1Z?n@IzB!{FU)LD zy?@2x)`K7_`xTXPHi+ckSd+#hqxh9Rjhip^9NItQ(NX?)p2N`pF&bnxq29l-<_?pZ z@H6I=d3zMi`Hk&o*vX>xBMi8{jcNNMO!`+v(w#>vn~hS#-h>^WnmTwk)*?-aq)&fm zt&J=C^PIwYHW3*QBd{Sm&k4B{6s$FeArx`9_oKaku+C1mLJ*h{fm8OF`Q3i>#~av5=P;+PRBj{V$wXJ`Yb&2;71$EAmfVB2=t?7M$z54g7ka;z{9c1I zUHEB^-7P=IGp%_3HtAf?yZgIP7dyEX+uoTb*~!rkUB~g}{>6+Zyr0_1jp{ZjL?r%F zKZY-}-){QJP7bWUWG=3hna$n+4CG7VKK8Syt-U;-rT=W&Y%e#}vCtWG#zB6S{dt!< z)s_b}-Fml5IhE#Df_6u@)LvQPZ~pOZC-83&p-mELQ*GI|*1isydN=AsU)7esXxjx( zA@By70TJ*(7VoHC!A;EuTfBD~u^j<*5kcLd{zvnU_H@iqc4s3J=o?45o3kqx8IGnR zB7eyww6!hy)sX}Hd$dR4vTYvP@LA#wBzAT>PMFjbz0z)OEd-Avc$DA$AWjtW!Np?J z9lq@Ull7G74A#7?J$+b5ZrmaV>F^hPwgmA$(I@Cj{Zh zJTCGrLrsgS^hl>AfBF7Af8>zulYq3;Z)))L#rZW{dM#Ig8-AkS;jlJC)!e^iyX>+2ry;1$S#aMnP$qXFK^bdLv1MBO)g~i zZRoKZ#wGXG^s~D>jvZ`80~*M2Y-lUf?glazW4~@j_MUPRR<8y5d&(X@$<1*_d28oA z-+3+qw&Gbp6uQFw<}|@mp26-nqYIvL0;}7MdU(mh*^hoiUUF-e>Bqw_(GxGZX@^+9 zD&@Djjh^%z5rsdlJc~LX-aq4V&td&De(yQ7XGY~Pygcs*`jx0wRs51`9`9=!+)$n% zA27%XwFgyUvOOxXO3A{WZrpX7|IBaYwt@4*{lkxN@6388?}F*@V-fEy_?OQ!9d3iN z8gmF&B{;lsq+(6~^IXkvO+9NG|0yCpV|Aw1$kt3a`r-bMJ6HIvZlmyz#6FnZZzE6- zJs#%z9pQ3?pYz-w4&*XxI-L-&<0|7bf(v*8Jc2a=t1^$wWmad^;TVC0Tt&iGInS`B z<8o`5$KigCu15Z2bs$}ZYlcMK;KCs*Tv??ARq7R>MT_R&E6RDXX7_InU+! zh@TF}{Z^MN^!~`LQjAtbYeHYvNYpAT1@{<+)eLj)G&t_KpUV~tzcu_bG9HCRglO>n z;OA&fgB$bChgGJ`cCwq!I3H_jsVHtNTzNj~6s`oW2(Az=6>cP)3-ro1fP>@ypVmVM zZXethxH)iv(A&ScO7YlKrGx>wKMekS=o{b^ChM)+RJY^8^eyGq@QXo zx#*c+}P{5Smb zdjFfSbOvMBf0{r!j4gvJfg36ePX`vkMZxG0I4g3$)mb^ebDEro_21e`U^jz(mb20;Nx?jFIf5X2>w;3y z%>(WKpCo*cM}k`gS0s#1hd&wa2sTeIMGZag^8SWb^^7lw@O%RQPB`nIW%4(9q#%wl z0Y5QtkAzYP{84a;vPFr0flGY>_aeQ2lf$*>1qtTAfP0Z%O|B4eir`A%BzytLWo2;X zaJTI&ir)*|2|MG91us(mZ@GOh$hbN!{|*1V zUd^zvX5ioP=lmC$q#{ltTr6CrFgy_cXnUOh3H2>X7F-D2BZ1ss(L4@ZM_;88LkCAO{=gfaKX;QqY*H}4C zZ#q3ej$p>un&50SSd^B)AmDDG43`D>GQyw1t%i$0xE}CgV~esE?jc;fa2ddPki~Vv z(A5D0FYtCp^blY!FaaEQx8agrPnNd9m5c6S)Joks%%Y5hn*_HV z1|8{XQHtRn!TJ9$oMSIE65^L4-Hz~Ek^95BGvdcjxS>GqxKbQ2MexpX=oxsW*F052 z?k^Gk=n3eku^OKk51sMPbhzHXa>l_--5>H;LT4o&ioMcK5*qHLXEQ7i~QUV%gr zfBKsi<&``bk%9T)Y>TpE7UJYvlmR&wWf#)hH6Q20VvFJfHyq#IJ)CaD$u`}h+?!@m zdIMJgyTc7eX}J3g-;0hxMsIJ2#fvP;0(_0!AD>pm;njT~B$m1leq=ski$yt|Vo~1R zX;HG%Ey_`3>VV8!9)Jvmd$1M#33)Zb$0W;8xZNn!WE9TNxECdU-=aL-Y*Cz1x;8s3 z%GYmO6kC*b2ukMy1C$Re%9U-f{4FGc1ny^9lmn=>V{Ii=Aix0!2k;k*a!nAqGMcw0WDAiBhg+PU&D(7 zsKS>~1F5Kiljt9FQ3E|t1LIKx^-%+Fpaw=SM{S`7j-mz^p#~PCf9yjIN~i%}7%&hu za2Ez1NB{7I0q>%Je2jiGW;QHp3`DucPF@qSPl* z;yNoV$}E($GunACN+_Xy=OUe8w5t=^bQqfR5DKyog?NerY=QAUXu6d!dKwJg4P)KV zRM%kS2qP@q26hBQSptc3wXP<>~SKsXHWfC1xC-Jc_YbX2nq z49G%to*XITQ_rovD!-&i;A@fJV zfHYW{rQk~b|H&Dj&uHU+k#VJ@D6Tq1xd&H_4O@Adc{YmTXsakC-SJPc_~11fA98Y6 zj;#T#{+w=#QOOTh6n}hU6Ce~4;pYnR_`-BMHrq?Xx4i$UJNIwLGydm^|EI?MQ+=Z- z-H{hqJgg7?e-F-@KnM7n)(Bhqn&|SJToU15MEchSMg#F!Q8HyE%J*uGGY?gil?rQBgz2!$q%{E+@-BF=OmpMKQoJY<<=nu5gZq++Wk>Jja`B$W!5;o}(z^ z;0D13zNaYN1^NM9;q)TRW!(Lwp-~N3$$y3Uh{PS&+fl>+e7rM4=Xw5rh9kAaY6=ej zlgQT~i~g!osdu4L`Mso4nFurkyMtTalX;j7Z_0(Tu@sv%#^A%^(qolMNT4J=04CwJ z)ThAw0g_bvc%^b;pd{4+hTu)ny1+P~3or{p=J0v&&A5!b1{ANy@5?Ct<)CS3INO=!u6Wb)er0>&L(&t+7<>1VcLF zIfRoD33tV#o4Qa4#?uy#-H-s#8<@kxy|L&FEFO$iNIbQVipF9zuyQD#)Bv+aVC~lh zVc<|;%t$Q%1G9i>z^GBk7+3&w#h=DFjz&7b1YnvGo_k}F0kAR_kASc#X7MzvtGdFl z=}-iwB!CA-&A_t*jx(_Y3M>F#1s(z31C|0MybXE}=nC{t#1k4|6fgvs0E`A^0poy2 zfW~Bais8uumICvE{#Iva!U;-ZVxHdx*;L%Syu=F?#1r~e(z2->&5)5mBFfay~V!VP9!gKE$BDO?? zZ_(DkyizQy0u##6dt1TM8>k^*$SoKOya&{`Mkl?ECICj=MIQkA--qFCVAwA(92oK& zmd*W&Rkpd$^~ zn0E#lzl5s&2DjY6sBba7?gE3Z<2D?4qzndg#N^QojJk*TU6H<;7Fij9A=@w5MVkm2AB`b0~Q1QCo76a zZ-jx-z|tuwAutAevt0#d0UrVH0iE%7qBnMh^8@-DvC&)vJW9cdo{W9B2Hz9=csAL#hHq9g&m7bwaq zp#K|aQlPOEo(e8V!Q`hO3;+fKi-EDgyf-n?0wyd()#76mN7Ps#$5a>$%z6u*6_^Js z0(vh(dcYW80i3G(qK>|37#?*XrJBs9$+6mS(X z1{MJG2l0{U14TK_iPfm;!LW1<5&{+g<9IkvQBtB|5by-u&yan+By6gWn0TwYmNN%G zIE)-p@&RhSL~gDtqL-J*^;^Z9u2jN6^MmW9!KH)46-zxZC`hZ|aw&U>+)Yg8yn&87Ny;Hzrra3mHp!F+v)J!xcBUL)E0tB^-`449w%mkHWy;NTx9NVS z+y;Mc;+Z8Ik=_SccyZGIDc#A!dy;kvMP}nwwfI_eI9nd#l!LSldZh1&5xg#)&y~H& z={>CLvYGU9uH1k|ES0_3?>4l1zwFkuPi;BF&MCRKQ>re~DP7mwDMvTJDG@b*RQ4g2 zmJMn1Qn{B+CHy&bf2lmvCea3!MibtXm)qFcO43I9^F7(uCJ^2NYLX*2_8batdYdW* z1yqlC{KkVzqft5XBqubobO}Mb4pqu-$7%y>*`(^^b~@EYOsgcW=2r`q-=j*ICDEYe zFg<9Q+yXNyyfX-w1mPA4x9e$8HlE#QER!4C7J+mOr=82>ApstCC`VtsmcV1+;BDm( zE+1Ts%1Dw2Fbv$iz7+7j>~0$aztoQ+-L<=;m^{yF(WTbdrIXWZ7#a7?>;1 zw=D%(G@Q=l%Due&Fab^?Rb0@%^2Io~n?<%-U&*|L*R{{=KD)r!TB}bg;qpOU6iR=o}ZcLSeiJy9K z#g^b)pW{Nn8Njuyp%)D<1YF%3TpYMA;GAl3$>2JI%s3xh3OI~B z>cNfK2kzi=dZ)pi0B0>7=G#&!xN>k)wW#WE0e&BWkBC91WeD_ga?YmvE9JFKH`bA) zk>jcq#v7rhlk;LGOFAbz$$(%HWKrX3C&`V*-R63@7pQ4w1-LkHnE0p%&z^r^lmm_r zBi4iS{O;x;_;@P`On?gk?>vE8uac+P7Vx+eY4s|3z3os`=G7_G>jSy7Ex+L@o=OWp zkk8o0qAm(%(xBCHQ-^f;^|(DaqoW6T=$5ov9%XNb({Cv51y<7Tb#i@Uf`gL>iq*@> zu4nDRHT>+LQ_GP~fxVr&^mYmx?m`M>}h)h!qmC6Z4C;Lg&`pIby|=oPqXJYSkjwS%2?XH4E8&GD8FON|F~e^ zLR$HuJjK=(H5YFr_L1D(ekA;9sd%5A-pa@M9Gfk>m|puxUaNEP!`+QtT9smvXkni0 zMS=Npgl!JUyfo9oe7UvGwg{~jlR-Pz$qQ`5FlfYNQNVhP5v$-2&#qD?(aW3VrnG&% z+|yQ%Tbqcb^y_-LyKMyg`<7DY4e}t{Jop3Oqa_>AP>wk5QkT(_4e}7%IQZ?B(~ylA z61Kpfw7g2$BpSrDQSRzshbzm8+-GEiO>$TJc#y6u@j4G#D^@G0}sqa)A9%_#<#{H;o={#pNVqo9t)1 z3S815nzBvq-n0~c{%&Fu2}ih-a}0`K4DTcG72sRi@XJ*L`fi)N%l-tkMjowFF7vW9 zr%$%a!)zm(qPdTedjW55_ybSSv;uiSGjCrsz)5ryp0HZKY&gF1dcXir@Z`KaEVc!!V&0kh2=tk8C&R?k%Jb(EMpjyqjas(XDJR3Ya zg46qY{Wg`B?%|D&_Cc_;d4U^5IF z#bnuuf~CRlagK)ULXDkPhpnv* zTn%>1o{i!`p7<7@IdLuQJK#Lf$<6?8DtO0I8njz(WV;dm_)?m^8`os-mgpY11IIr{ z9Fps=+#`qErhqEEMUi{t2eyeg8?x?G_q}p2TmH#u_yc-puiU))@wH25PP(-8RW55gagd;YKZ znCC;A_hU@*MkNGMX8lV zGYT-#>S~fRZ7V@0E~hgld5`VB08Ay;(V~M$gfABOZ=j>_+xxe}>4e8;Z}9qcqk4zr z=C+C8yth#IL&&5E{^CMfdPoj%cm#jTy%uFdD{7R5Vd=+1@<7{!K=hPS3O(FKHH9YJ!!ofeOQgJU$f$~sDQCyW3W2hPrk z+J7qdZBz)qzl);O=Miv3!JPot1zZ~&ZKySUDmSxr#i{7wPB%Z5N82XBZ}y^IN6`{R z@cTEUrAK8iTfSa#q#^A*Dt9(|V~xV#tthXn$!f*~g3AI|(?Gtqkq*u}I&j%YaJk?x z%TN!_C4kEThm*USO9fW|4xOc%%LRAZTQMqbHOMU>FF_G!cD3RWaOL1?>Xm@21Xt6* z+u$m|;TlyPw*s8rN5Kn_&p1ac!Z?Fd2Vu#emDm8%AEbj&#AzyZ1lQ7sSdrY^D;E9& z$ZHEZDo{!Sx5bBg6=D1-fWOR#78J=%y)MCT*XXahW^j7!pT~6#FQJPzq6bB?yDV6D>X_``BIu+0j6okD;J?j36VSFo-MQ;LXUFr*aK+=NM)nfyZS% zD=?7Lag5;c5MUR_&hU56fxi+F?bT?A1l$O&0vyf)VPT>=dh-#s2r};`wDhgRypUchcHzIHvN=s?kaabDT^` z@OSa0UMDbc6vCh4OAAlP?wyO_&+%21SCF{Wfb8lp*h*5=J&hU^k#xcaDv0l$^t z%6;j~30yf0-EgV(qX+P}4u}70GexPw7=m>2b#jkfxlJ1G*Q(F9j*eXs(C*mn_CcAX_zG zGi2c}kcC54k447xAi8)G*TE?GbJ|n)Q?i$X0kTAdQ#$Z)Bimf~<2%yCQ>gS3_)9y| zN2g%lJ@}m2ioX_`;=YC%Sw}Zf)BI{QR!PQn6uZ$gUJ{24_(^{7GGD_!)Vgt-dGD(_p%I zM(*ns4S!1TvmrkM@#4Ux2UGjAd@jZ1A++$UeA4}ud6m_JA@3kr7(4=d(&%E8uN3~A z-n5PT{d?o|52q*Gp8|hTI7OaATBqTE)Q47{lUoN=z(2IFqAgV+E#7$@(NKxtmcq{u zZi@jN)-@g=ek5On42w{d;asSWMQkW<1RggXvNXuna~TfK<$>#wRH-nPL0n)VILH39 z@Vq>+)t7Ug$+$jW%*^dC(npwcA>cMp&{uN(A;l1l0mTn4ii7CQ=aNVUr^niNBb}Sci&Q9~~VqI__bku>8gTtKD1sNw;1{wrKG4e*x^pa)-J87Bn(uqbjUksH~>!kU~olFX5WuBwZ1A3 zm%Vl@kX6evyK7h`>(%g%1+@BGxv%l#aT>ov;MW583p_6Hf6Nvk$MXv zQs6LwYG20BI1!E$I9p({z;uDR0zVvQx>zC4)1lB5`9u!z3{TZcXibo#EV)RDre#m$ z!8)(7`Pv!oD->{9l(5%|gk1ukJe31jY86$UX;!7&z%wvTOU_HEe<9SJXjwnN&xL#zqDDe!5iC4M=q?@pqai>-%~ZRcLBvF-)~XyL0st zIwtEIOiZ=c_&0>L!-P0r(Fk7=ZKB{4u^BTz)KxFwOlxwrHGZY2%T&Qj4iv1{2Y4E= zlM+8Z7bEmuAup%5^!f&#VKG`fESssv7eZV{ySX@3h^(l<&ao3#joMMAHNgbW{R{3XHj|BdDbNn14DTGXZB)eL578HiSwHVOSe zp>NTmNuLS*2vr}0jFZUVvNggsO;Z*TeiM8c{#}3{Z3JJxmS#|5fku3VCgDdX@Z6xH z=Sn<4=!fmm^e6Kg;)C3)Y6MTo;H+JLQo-?KfrwDJPm6F}qoub6pR-@%Khp{>Z4i9) zA&q}i7{vd+f*WKIHDq0P`3}5M?dnIh2(_}b9AW`HLcS;gzryq5Pmw|DIIVHt5N%u^ z6A!K*J4dr5P)kno0k8ETP4N?<-%;>ok&KrgZ!L*N8z=?n6>&TQU^y^DKG{G(aPpFF!SZ_P;q6#@5EqH!& z!wLOhy+ zAl411{`UHI?F-LnxmruLL*!Z{cxylUMDS&2Xq&x0fJL9DYe1bh**oax>%!?R2YtWD zBC)ODbYW9}m|PEKF7wt1(OIQYf{%VvtAtyciBf{#ORiGA+WG*m)W@2@Isk7L^2GTx zy0*SA%XyX7bG@8jG`*KaIv!|SHQ(Fx6PK6hwEV5ZK(vsjx>0*aq~jbw3xLLw8(M8x zZ`6+qy>jgL%a1jp%`OQ(=Yhyj@DBtZZJmP){;A*-WzCLOg0GFn;dX|#SBYNI0WE*2 zkq{U}gnlBQ0KrS&Yl^)D-(Bz}^i~~xgZ70MO}tu&rwValtd{XBBL6o9pZ^=3se@K^ zPNpY7ufl6u{MSYN>q0N=2K92%2L$E+sL2C_ydj2cUXG&rTKU=uK2Y!_w9W};1%9hV zvv#&YLLAsYi}plB8!dR}pXn!LXUt!r*?Stz&yTf2p14IzFIn``?Se0K*7VP7W3BXw z;LC-1OSNRA^MaSKAs;`!7u9mZntr)T6V=s^ii{Q`+h{S4b#v0n?EFwws=mZT2tLe4 zE0lF{afIL#Jt^23b!{l8X~2oG*R?_n)RK|5ThlGkh*^R^Ecl{QO<&Z7R4n+MpEO=w z-awph1RwS*J>mJ3y{?sRyhzUl*?o38bo=lOOegdJGfoZZ)ow= z6%yq2lHe16)5;kr^6w+~!ccOkuMddKPtoF8r=IT$xikNBP8_F1yj6k^6P?mi@LR3? zRa%7fSk6P*1H=m-H|pyfu$;N{1VJyuZ7sPbB3g5d|J>}tYt+jX@_al|=7;qZnk3`~ zcUl6u(Qs3X&(~S_v0TWbMLUesXlau*9yUPchjlKtQ}C(64r@2#4_&z(u}`%09kgiD z87m*B61}CCVlXZff}DF=gcg_z@#7b329vZD)@ih4kCRO;=&!WEjkn``+6HVN{fVX^ z@{{6)o>Z>!*7le$_|$B2aM$;3U-*Y6Zy?e?CFJ@4(CqOQc3!r|n?sA-k#EUD+5bT?|WG)C|xq90iM;j4mAZ1~rPoCn@T!c5LV z9bIUA1HFq^nP{C;ny&PLHM2@u(m>xgGV!67o3)USg*D|yqVxr1aGL+%<3TcOu?7Xgoc<3#+o%Te;te;yM)+T+-7#sXz8Tj zCDHmA0oCJ*-~&ZE%>~b2*ygoWE=p}Rt5Wbq+N7KQXsB=HnfO#QVvC3zjJ~Btrmo)l ze#}rti@Z^TVWKBsR8x=LLM_po&OqKjTI7`~kRQSG@`_Gz5D!+tHB5`lT%THr;FtX*szV^z*&S#9VWZNW>EZpLz*Bv7wet{&VU02wvQW871qv(@F>eMT-p=8FvzVxtC_4wfwyWU-pA$P?%`> z34+fN=bH6GnJD;FcP*XuYWlRfslF*o{DICiMW@aYow|w0`>=@PoI>?{QKyAZs28xk z;hv_jO6a*@Jmhs6{kcZ$#=Mpv4F#Wgp4KCtF%ka{#*g#rFSbV&a_5N}KTVV&PVm@+ zSJfOU^ydk_NX$ht1^>R4AF3tLO7I_oHwZs~2K(t;%nyT9bcLoLFQR$*Xl0KT6BFx6(L(Uihc(4VLO)pWfnw79w%{WLU-C#R zbAjN83%*c01C7#5A($!z&SIo#FZlU_PrR!o)L4`wP4GEl;(&oiJyu)w#i{Qn`0dv8 z#VS^U%7;kOr&fXJkrzdTQo$Gfs%5-c@IMJ2&v@!JM=yvLy$qd8J$xEzHJDSPg|~~_ zi}r#qe9qurg3tHUN_NLai}$kN%buH&P6Y3QCwuwYGYa~wxxSTG*wvFH{y^nMGRT7hFUV}BI!x?ANp zP1joJpUSL5C)1TS`g)9FTk2hP9Zcr7`XXjJ8mO<=kbQBDE)LKKIGDx#KJEz|qV#>S zJn(XqzMZ{wkvW_)qVzAhBxY!5xD^Xc7ozk=R;Oh OKds80$t6yk zmBT7*w!25pKU&*m<*+)f)#`HaY8rffIk=|=-&zjtufcbggNLf{9Nock2$R;}WI1>% z4Sud1yt@X!R1Q8)gWo6zpQgbT32&*>l^EMx4e_{KgC!dLWjXlQ?3WrIp4&964UHJDru9;?A;m4kQG;PcACyKC@;<={g!_%aF4 zd9Sx|8e(<1200pheL46X4ZgJ;e69xHSq}b*20vI9?hOyMNJE?~ivWBHi}CdET%lnv zmBX%K<2*gcmIAY<-h&)1_$>6geU592W;~Ae(({#=q?ZPFE(dR*!42i$%{92O96VNo z2b6<%RpB|h&~k`DT7!sk@ZlOfx*R-HgPY31b2WH!Irv8!ytjl`ey_}BY<4pb&#f9d ztz5I!?0aB$YS_u;u*ca=V1LoD^U7f_F_-2Zp0_pZ>T=loET*|f&QlG$wH#KbImw;n z;1x9Z!E*2#8vJBAcpVLXt{l9f3NQG*`KOhr>k^jHb_{K@gk5Rd!0p8zsxw&~wqBsR zRQ;oaCTrB%3(PaN8QIH{VRrNqls>!J+SrCJL9#}k zzauavYj}8bb~CmW zm)qHl_(XD>{TM&l*a3^b$&%-96vWJrOqNiSCD~D70|XZi-YwXWcCk);g6OI0KDd5JNVOzVXRFDUvi%f?BGFuXOlX#rLhHUPlw*r z=`3^a7(_!tS!~CkN;5X;bcyD>%7smAO2+{Ij$w8>(@^`_CUUa)MxyzJGO{0}8>08k zld~`EpyJek9qZVD{=9)b={VeJ-Ds)<@W9V(V4^pz(umDS^sV+X#7?)9putmpibE0G znAqI$N)ynvM*YcbiLI+I!HdN26LT8iy(}`x&uw9CqOl>)fR^wH1F#y7plz0B%*8u=ftpIXpW_eOvZ2Rqv;N)*W<79JX$$FOFIh>|!VXHf@ z4Qu`pM)N#I3c%L=wQTNJ7FMrV!U|PR=6%B^CWkux{i87Us$+jF_%8WpLNnK}nO*PD z4RZ^IciTwlgY^Y2Jpw5GY7T4JE0)fm!)EmwLF>+8wq7RMGPj^f?}~(Oo5fo78B=4( zEUL>tn0?V?iN(~otKXkVl#p2k2m5rYK>NL8&V%x3?GFCDD z4PEY7U_UaM(8*(2&x}YqqcU5R@g==ni8USdt#?o*0#zJI%72j6!ep5NyUuppZ4_eq zbu@cBsvhl7jrou6Mth7dm@;}Ap_ek)^D%>HJ3H2UY&#l~!B&r5L|2StO)`hmrXvfM zXWA1QlFr8MsKIuO8{@M+jp`CC-Te=mEaA^MY{?RJM-=8G%7f7?W_(MUoW^F3??{_i z*e}x?uz$y=(=j91pb6>JZUj3$p%JOW-b`pr&zdE=PgZq0IF*gg>PsC`*(nqohO@fa zdDL$>+mzj(9vjA-CN`l9hq2ZZyU?g%Y|+F>N{6xJ>2B=C#P0OuTuEloq&k&43{~CF z{^o4;jnae0GL!j)$$ZiF;(2kg(mI8O z&IqHGQ`pcMEosOAwt7Yl0YMpe)1FMzKe!v-vvK!e7xUl;h(3S-#I1;gm-(JW=*SM+oOvs*Nu zUP)kVQ6v;n+VIJubUNN7dD$_}h2?(QhZ-~3wNKm9KS#1UEQ*e9&jz!Uu&dW}I{l6w zX~I+6u476oE82?%LyEnUa4aP=B0$WDYwg%$mQG#Uvwn+b)5r1b+TuC%^E5VONe=Z& zW4D*IqMPGb?WNu5yb%QxmtrQ&NoCV{3tA(V?d0E6yI7X7tQ)=d2RpdzGwRxw_4}-S z?UBh)pGxw z4+s0AjXFPeM}rZ)i!Q-@RPPe)Y&sEb1OO9xhVFz86!GNXHAc+rY)6wN+K?c4R(6$Z zjR}v|MoB@F=?PtRv_26X;D#d6JSYbXufwmSg>#6FNHF*JcUH1Ws2EX2@^I|`mkJ0h z0)Zs+a1e+ORhnw;F+$n;xaj|cE=qQoWI%GRnnjIEust$rK1gtd_#(1a?=^VXV+ zs0f*r&^XFgeeTt-$Ir#ZVx$;yd_?Z#fEN0^wut#qNx63$YC<3Z7uQD8?(ZLJ%0HOp zAnHem`WENeubqS%^6x+mN#?)xzPjh}X+)pD4(lHqGOw|xD$NR zv=aC#_t4}+HoJdJn_^Db`?p2~q00(_mL=*yh8m(WYfns;$qFn`b`D;Yf)sdH4_AyQB1oSfgxYF9i(WI&#Z7XCm8ZuL zW?7O!Z?dA&Y)foorLBGFtLA_kc-nw6E@|0aAq-W$($Y_~&`i>~tajmaqJ>0G=puFO zz-oQHdZ)@xzlaol-X{(q{(-k1-$Jej6~A=N`Qs$C&;kU6n9Q+`!n+uiBY+A?W?Yx0 zP)~reA1V+}5w=7TA(ovkb|t*Il;y3=bQv!QmP{AHuQZj}EpkKyef~#avHWz&L`3@k zm@fArcrjfT{{KuBK{)Gxtz#M6Hlkmp50*nYNjwFsIhy-BT87t?C(7_D!eWhA(LkSn z6@8aybq6s24^~@ftm=JdffA(r;oQzCGr0x*tX;Mh!e+|~cSD56G2&67CUwO*p=$_w za#|a}u;fwBw1}4ayf0sX2K2Y(DoU$6PsP#^c}|~~1s5a@Jp&J-Ngac2BI@qfgS7I? zanZ9D=n9(?jyi~iebrF9PSuwu2x|iA5JB4fNDv8CW^3eRz1b0tpr+5a2VvHKUPO+l z9;DTXw(UmDhDgv0qxvA0yNq$a-GPy5VYtq44OrkxRTThLDR08rrmyR?Ni<{e77M8^_a&Odi?%Pp%DrdB#bT|p z$0UC54WdQMuftXQ5_ZKZuQgT^?GYq63g4C;%)Azd)t+)0G7%oKALsxFMPmgvNLtyB zO3iR)S?lE_A`6=zYOr~`T1CXnO7xE=wqPMn^I_XH>5C8B>S^T|m`9@d_UzZHwH*FO zm5|zD&Ld1b+2KsU;h3Ur*?5r4sm)DTcZr?K!Pjo84gtm>!(s@mQNQI?REa$C{3RBn=!{|=Vp|vr%pLAt&*_ zzn95-PI6Gy_6!p{(OTCPNpG7I5)AQS4{WDk7s@z@P$(%{b!9WMd=dFO7H1lfdPtf| zb;X&6;!J0xB_^MOtg$yq#C-TOq8HWepP@=$@f95$evCATv#k$kO7lO82ip$(IT8I5 z^>nt(f6?18maxH#n!?!D?>$Hko4LWG@>sA0r)pGMcW0|N1d&Yk^M-oF%${wCs$Thk zu-F@7kv@W`KzXyD#cmuEV%e{`-x6G^7REi=Uqj6O4B(|%AV5@BvFjU6#GM6fGCB@x zBwV1qj*(R!Y{aG(ZTcZ2iFl_!3Z+q35jjPf@T|sHYAh6u_g!M%Db>^p^+g-=Wi+eH zZfx?Ye!UB}d*+lu`-Or<_9%quzm4&`zZc37>pVav1jm2kJ;BmC!7|Ztw={*8AuM#O zH;G~kzwJsYvD@Fapa+tf@8;RWn|-<2NFPsRM>hK>{+un8U@X-`{!vvAa@vXRn(h&V z+eruHm)*x?z9yj6&>j5dMnqyuCQ`}Qn?0<_mOy%AH%r;lf_Cr9mTzf6(%6M9v1Bpx z{B9Xt(U28<*VnJnt`9l)#rp@G&ukz$pUjfBj_4SHouDwFWR(Y72P_e#yE$w4zZ2BX zyMPEb9#Q+lp&`Lw@=o-ky@>XMl-8_xtH0A`tpQ;{-$&B+fo#P0?diJ!X))pKQoO`lK+gn$tfOMfUp6%K0TcbK6>C}a#p1}xW%Ko|{pF-BK z%0KwgnRQv{4?&4H3P9Hq^%Im8mm_TIuHN*rk^Q#IuX_Ak>vyMDFlNarV-Z-qTaGDrE2 zwchRLxT3T0J5h^S`tDR(HJ1Idd#s?lrzM%iX6y-yJhB%=EGk|i-wzr{U zLJ4a20S~rqZ|!Q8kQv3%#6F|wB9YzP8%1g{-+eR57i`r&Pm<4e?ps04ZCH=}tt)p; zm36}&C=1xC{f+2#FLrkSNK(LB9B4t)TC<4hrl!pf%h_ z1GiPdd1AfMgtuFcXoDwnIONyCZN2bRCuESb2IeW$VO)gL(lWu)3)zzij>g{6c-L%b;E+-qD(f%0Z3Sacr)?e_ z!u!ZusqFdTh;83twJw7%GL*x+p}qctAqE;){^2mX)WCKgj&`?iFPAk3QCQvoUJjWb z3S(7|1mt*tRH7wOcmoIz(v<1N=b*PRrk9%jOECY|LrwqX|C%-OdD{w(*~2WA5`<9x z&3#pG(pZQ*Go9+pKjM&Qsfj!;z9GUg;U{AN*8C(QhL(sCMZVo21^Q4~QC!>>L}CpB z7@z?^5}R{4j0E$a5DlPmwO6x*M^p!r`zl)h(JdJ*=*7x3_fWjY-Xta91}Sw`0Va))H;49Eg;rdhC}e6Tvfpa zTX!&~_l?%Y?2Cq=c8fnna}k8Z>>#Ma7UB>`BQmg$vqZmyPb`j=wyTT70%o0H z)G|R&l@r+dC0RxZ{V8G!*UtM&P?Ot6du$tz>2p67086YOr_WpF$b7%3;emtOgxq6} z%49T$n=vL?;$K2m?59(nIR|B`qKd!COiI|uHrwihN*NI-%SEjcxoQ%htHL5|ukj!% zmsr(k?Oii(v@=3BgscwTvd2_Nh&-;(O=}~2t)Y!+JA!q@ zML5qBiZz+B-To3F;qsgzRnf0LuNa|<#RNT-e*^oRE9mSziM!@?{e+UfSwiSevEW`W_N%?S(T9T1gIGSipLyGX%EMLqy4f`M5 z6!v-`ne42gv;Rso4>g#q-J}DtM133sft-jHGfa!()jX!9ark7Ql#bxY)=ZA{y$@Ok zx@aU8SWVIaLegyS3D2B*Xr++|uOovF}9}5oNl_Y5HLo!V)k~Rsbq=7$9^A z!!6Na1zGz89oA7jo2JG)FaNh1g$ivZw2pa>w28ewzZIS_U+RjXNN4k{XenHo`i|KZ zp)3OoZX<^2PuI?=-v&BoQr;=aiohS+Z&I_Rq4zo=aM1m^E-*zbXW55-U;>9-pe|nc9JIq z=HIBsE|w##&d7?xev`_I=jSLXo--&Q9z&@CF9}n{W6%tELK&NykcuH1Kt-R2z^<&{ z?SxhslcB6VEycoJ#$-jiY-`D^6-MwcDhNGm15k#G2LE@0exTJStt8t|QAn*iVthiY zyF$xpb&0Q_R(3w*Nq)2m*noV%|41}1H|27+A(c^ve>vsMHcyRd$VVFMC!$vA3WtS2 zisv6dvEp~MbiZFRx}gAdFvk@IV2+c-mKnzJH*G%w7PC(rz3di$Y$Dc)**96dPe$~i zvpq!xp+2M4?U?X(i9_$%uE|EpqLTPyJ0ssS#k=@p+mCnjjRnG1fJddMO1Zf5Hf*Cz z+)R3H#eWJ3de1+3kJIfHTl*hlu>hTS+{%RL0=wnZUWt&Jv&o4;D4CUgC*F7aoPzlG2{ zEm-<*6KXzA!Cq$ynj=UZg!@j2hSO0fJ4dnSzxn%qD$uu8bR8AlP@t!d!hm{=Vv!d* z(7^sI|HAKdbp}hh=tnoTV!0O^)m)COz2Nee#-(IH*!5uc(?zkJeSC2S^&QE^{vPS+ z-~T-ii+f8RR-#buvqQgokhkoQ-$&A2eOUaZ;q(?|-(Cv$+C(W1vc%@moL0qT?(J;K zzmk=XyhMXO?Cqt^Ubl%98R7vM-=2^+r?5CHKN5EIk9e=#^7x7%CGaC9zNTM!yqJ{& zUy0>j9zlonV)rk%@q2<>N=TpgqBSC+y&^Xmlpb{Si)5g#pYT&K_S0Z&f(FxH!%-)H%i) z=U;4!RP=d2U@wFUCd@x264>2AMgWMCYIZ&jqe+OopR-*M@EOhq{~2iPiYnm4f-7o? zW*d00gnxu*a2x^-6+5=^&q(@JH+JXGrv7#+qIWlO{R|b~;2PP7JdZQ5sH?#=x*HpH zwHbBo#=gGVSbrJ0M%#JJCfq=CFn48lt~RMMTfiy;ri>iQ{I9j6mAbQ0*Su);uFQOG zv_Edu2yxD{dW#{H@mHJga`Y6}xu30_%R;mDFWvx7*QcFWA=G zA#}?NcH?$nz1$b#u9?_(o;abynT^ikaIUJI&YDaT%6)fH>g zbpKE-po|(J0Or?98#eP!NBWO}oxan}<;*%^j7TLMHHw+?g%@k|cZ(dqe!s0 zyavCSl|^Q+z2iUnv9Zoz9A!tN*}V_IsruuGXpG*ay|eA9SnsV>ZzsYx{HZ2PSc3Eo zN)q&0)K{X93iKfrou#4^1o|hSg(`d@5u~DIHZ&cG_^{%#N$H-f;@uWLZ!(1G#EYqv zXnt<8^fuxW4rGZdtP5YUl)FBp3!8p7n6eDE>27VB){&jLJCm;N$T}&w&-F1&QySPc zG*NzFJTcJkK4#x3ztT-lS*|UYHcMxY_v%xt8wVU4NMCLQ#AaZ!qw+J$yf=l! zvU|vn<@IEhikg#-tZmU^y5kYMRMe41wr6$kUqttB?+4M%v261LgHr=JT8Blk?92lX z*X(a0q#hL@I-C!lGg;jGv}f55n$ZTLvM;SBY8lB>_UM7J`muIM!lBw_q=_&w99BB8 z+7E;1_1diS!=r{n@j|*)*VwDH4w=jpbqZrx!$cYaJ91YUYoKPrL9unA-18ps6IxMZu9zU%?kLNMRf4r$O zkJbCfj~=QL)OrfMJ;|(~!#v?~7_m zEfwFZ1n(wfrsAUo{@pyh=SDRHUeNJHsm}{~U#X6$^vArO68qF$_L4OO!}wcJw1nRk zh1LBWFuP`nzO6n#QH<<`UhwFC5YJ){SQmRhG}?e_`^8)}}TE{75^s^*N&edYx%6Q$LkLNtMMq{eQi+pS46Sow!N7l$2ytecpC9$jaFv4^g+gglQH;P&NHxDAf^=ooUu@xv z6Dh}BM4hOa(59M@*9STfyv(Xf@t2s);hSWQ@L@vVX7{z?&FX$p6y~a5ppec3tybU} z#n)=F8HLS}{qWK^CrwOgOFT}cqXqz~&cRH~!I^UHRZ*BU(Wr;Ln?A1>29|(qfupHq zc&s3ohnwRN@(d#$w~0qflpWx^#N7;;QibYXJ7bjlW9bBQJR6UTrHXLuv2@nFggY+xBWm%V>Z~)Fn#gBgD1B=@l){w9ES>ct+vF_1Xs^tNuu zDn}9bVA!Y{FR~eq%A1}-YH|~k{W0z|$K!tWUJC4*Zll3F#=ab>E!)vwIp zhboeKG&_UaDw0r_hNx4PWE0-Nk$BT)k=%qb9!OVo;DzNZrLqpLFc4U|rSs4M(H zF|SgY)OT44UdoEglgCviLvuF2LoMl;#ycvGV?{6VazB5zWS(n>5b{U_>@`AsldCx7 zzKopY2EY7^7-Grsf(Vq9^SF(J;5YZEW4{4M-tT4MO%1rBh3H>|#wu3tJ0u!5`$)kj z9)K2|76jyt8ztqR;$j&i6zwQEeX`C7P$o&@MQg-*Xq^$QjKDi6N9(dSp$GtQKtR@N z?KZ@9#e|8-584y2oGd(vqqEv5k!|@yn#N>jH0bS|eIV?htw)(TD_ByBGzM%wz-Ym~ z=pw6|P^ok@7WcmY2_Z){ltp+Dic%RX%|;1n_Am-N$`J=@!f=F&%?|#ksC+aUcrmE? zVry%i5vt^4&?d`(2>7R>V7UQ!pRqPY9+^-JBalmfe_3(bOXaoG`B2_(@-w2&k1RA!{( zW&5aDS%k--ct6rk8Ipn=sW{~oLv@Hj6(#S999lq*vPrlgF~~LeUI?6mqL`-E86S3h3RRRUTE|Kg*>4UyZXi0&oe`nS zazdL3rKZ3L+tKHpS2Yl=Q~=C&3~yM1OO-rD?YgThqGCVbpoiutKoNJW<-j|L{`aZ< z8^fL}a~>BLi_du?lt@V0HUZS7Zee66UzZr!K4fq-BNM8~L360$8$fxQo_IUncrB#h zVB??YiC?v2cvB3Iq*vbcn(xz-`s5|QqbIeK#sFo>d}-}jY!=sm9XjE?pQ`v+JeHl2 z!aJ5sfiPr?JiVz+?zpXMZ*{SPPL;$(#4!&kcyzo- z(Ty0Z{}NnACD6i?6h6a^)T(vrU)kAmS%j}Z@m_Ijhw)u*#5>1Zuvlj0`zS>l)KMuA z_lhcwXq83`3MCF-A|yg7W`|qPkgf2QW5(`Sh{kYA2=}OPuj17Suj)W{8O{7|cKA{BfS)P8$0Zg1V(5_5l0wkgM3`zSQeKlHs`3{RQ9cPU=VK zMRvMm`N8!d>okLM_nr`7tmAI6Q!;n67ptrbl+p`SRMjRu5#Fl~?v4 z^{Vd?J4vja2x|hQX!`P44>B~g-p~^GWE_wd>+`c=Oi=pFr`U0cwSQM#`~lT$0F;QY z_(c!Wh!pY)2I5B;Z(tx^E*utZ6Ao5fkb(pXc~1k0C9!-tu*8G!FpwtXJilikbu0FG z0y67|@fx0_uDdNzjQqphg%3~mBwai@UQ+Lv>_P7$&mJL}4(B^P5urw1;Ws@I^Q_}9 zK&I)re4P&aygZXwc5nggl9;M-{ziF@<($hp6=i5n&bHIlk?xc1tJw>HAy z7Vt4fQiC4+o6j|p)S6pc!8(7z1Vf_aSYyz%Mx8^U>@@NUwaJ(CZI~oRzw5#e)Fz)8 zY9nFwKf>%vd}tjqhy?PZbr88e@K-q)%iq-@(R9lU9_@#SezgjwuRHTBKQh+ov%k?F zbV&GpKjIrc4zEbULPuAXy1P|ff}N56P|03lS<>Ugeh`EQ^JstK+2ZytIn}&DL0H0X z;#Kpy)~GXnq8m6XY%$ACkt>}z^C!R8ACEhU2)x`euS4bZn2qm%#6;+Wcosl)&Lr|h zbs^VYd|h1rX+>n;h@;_me9=AI`Wm+ z@VB?IoCrT5JqD)RZ2*)li}|2>q+Xq#-y@?R4eT!Qksq*Yfko;U^YJTDFLg0rUyt-B z%eX^*QimR!%meF_rvBG=lnT?{Pm@I%w}^TApd+7MpX>~@dtXz*T|aerQg$EKugr%8 zz!iS$Q&LC0S^ZlFzC3``&e>Jkw$yu~lNBAnvsh(|v11nwElWUmc(HMnhHsJ~Y%BBT;XhX8v<;z-S7CES?4|fY9 zNyaO%HM#zaj~}6*(|A|sl;9$}7M~qN-08)3d|40)sa~NRk)`eUr6AIT272%L zay4T0PF)CesOEfx5PaUZZ~VX8H!Nv?0}E7Y=~YDa9wJX^MAG`VzAU`dT{zrmxHg=c zh`ZcR_6n;MnM*iCdmM6OB!f_;wyg3(oUNQGsUi;WZeoXzDx*!g)3EQ!PnWTVLlLhN zN+Mk%y*^Ya;iE#a3deX!x2!+iRvY6V;8A(Nw}z7bZpJ_4bg7NPEG~#A8x<=zhQXU3 zs;PQ&SKc>_bahYOFU1@Le+tJFZ8WuX$iKi3g^>o-<}Pb`XT+!-6wT2zP{T- z^2UwHB+v6It+Aj5zZ;(TyWjzGzQPYTCQaM56Ypm69cLV#6uu5J!r`Vl7UuYMak2Rz z9wThx=7?aXjGn4)D%JB-gS6BdUeVg1ouy(CUWH=g&POyM$^Ie#5uM_UMWak4Z;2Xv zQA#8eh0^3Bex(ViNgng(O-KW>m)C9z2ODN6l}uAoyLzDEL$Tj%&8cbVN8i@4OgL)D&6ZC@XrS*wo>S zMBF~gmGwXylC*sz4C7EGezh60mZ#Er-R7hjU6jrTG$$i!rTr@9l8!=|z5rBGx< zV2;ts8-A-fX;T09G_ZpGV$mA-`BLpaEN7Qtyj2A0Mh5VO5hNZ%xfnrW=!Fs7Gm`YH zwey_pW)}+OCvhXWY&U!Or;(&dKz+H9D&I}(njh+6b|ilgNxIU_sXV3yi6bNU+!jzv zU4F6!IY5Tk}he^|7b}<>Fr^>ax3Cp)!~d}qXG)WlQ(Te2Da!k3=5B| z-2aPZOx++Y{!(~oe8F{8G2`*Qt8C~30&=euvzIUGMck;R8Nc0%w5NxM@}MY$_cM5A z6fxEe!m_e^ornW4?V(R-*``OYZuWd*6zM^$Zs(*m=~mr@RH67}5xJS`iRO38yum!R zHRkGBpII|5+N9slVYoxQ9@`tTS$Do42BK)83Z|!!M#=Gt{cZnu}9sY9_@Yi-(HSm`JVG{tW`{o-s{L{z%Dgtx4#3q>kNHqV7 zF+8sNzgEwCjd@-)X(NKoXc9~B4CGER#K&%;u9yeLkYQvXpC3a!>*b#WbxZhM6v}5p zG;kXtyY{toHtOR4M-{m|(Yaw_CC%x-1Nf`9q*vAZ zX9*4pqT#adD$aaBENNP6#c|O|4O&;Dorr5YQzaRh;^YW}bK`~pO6wn!X2D1TZ%)R(OR!p9C4`v|P9YJOoi&+SC&1}R|rp zDjfZNM@*C$T#XgZ1>ZfY@nJCGzjPvA4QBa^I!BGt6l@;oTKKA{Ky?%iQ0x}BMU;7; z@EV;-E!z7jZ`PUkb-z6ydkmo)sq~Lz?w(8f1r z`*p{b>JH!8oeZW!ow!#I(h2rBvIoxjws1=il1ZHi|E~ub;d&ARm0wE8{37x<6&?Ac zo+Ox_bmZ%Ll1{D>qCyk7Izv{dFsUN1*b5aR9C@=|@bR@@aceJP(4X*9wP%|xVg(!D z-iwT^|M&O8P}7VeL>xa^Mqy*16XWyPX#C0vqzbJ2q3?NoZ_<{!@hXeqsV#>`a`+FEi#KICP z~quwStP=qz(XZja-2ag zyAV#tsLcPnI7j3j@_z?P*vb~UG1BLs5byXR+fp(2rGGY->>QkQsIPVP`SD;*@rx5i zG()FsY$P7U4X781mb8GR$Wi`jxGtTbZ-?=Ux6DNILy;R)p|NrPnc^)|`EoaWd=7fA z2YOf<;rJhd2o5@(mASiw)I|DCuqSp%GIK8?lDsB(Q`R1UTMWb#A`ImcOyB0EP8RV# z4_9h!mEXUcgb#g#%F>nR7!+~m$94~Z)SQKq064H+Q7ee|m&efHwE7-XR;21ligWHJcY`=ZxA{5S0-2zkLpLN(6g_3 z$9|+v&H{`BJQ~Uz87W@-OJLFgXwr~^5LV`>Y=p36BZ*g59Q~la(hss$X=->ZFlFEO z{9F3&sUC?#LCv8&wbDZ63YIzU(4R!m1N(WK{@6VpS;#Z`6I1Yp$NzWuJzP~W+r;s2 znUOE#TL%%psyAN|+!WM)d5bUXK^l@nyvkq_nNtXH6&)*ea=l?QMLV=`7N^LL&+xwP z{rgGW#3)+&{yh!aFPi)QeIDG9{8kP&H@l-cDb06P`x$ivxL)9|P}+_XlfiTbMt8t~mzeCITb zzwr+Kc^Vl{_H%tY=}O-4A?f5Ba)ehJNmA&r?R?}&;?t?_YRN@C6iVbIST{BqwjeQz zTx_*;`aE1#DHbc3QK`9Ij7>akZ3e#-280X~N?i-F@e3nKhcpEw3^->v++F~pag;b+I-{4orF69lRVp}R;svp^dGj`kD_wNn=#{0z5cVX4N?*r6N6Cd8^i6$L$ z-UHSPnl07$l1VC7PIa1o`~$E)5-S!v5IDIR5N%-*?>q0{U0Ybh`($w{R|FnP!n*p8 z0JtoeTBwHC7ym1+TQY)ag4%Jo9c@Gz_>w?d3kKa1Q>h`n{R?lIN&GzKh*R~FLr>L5 zSseN-=h>NX4*&8?nIxE;;1$Lpcs_Z9j~PdL=p#RaaftO&NLpFJe;r5aC2e0OE#?Ol z%E__leu2uYwyTd?tm2ml{CeQ!nVwvOQ&CY3hSb&S)}Mrb;!Qkx%6RNp!@lJ!$0KpL z^*Y}_9#aNWVFHQunz~6e$}uV~A&6aILRl+|wo4Ow%tuck9^MMaMo|}yaa)6@;~8P; zRZ*Cuws5|B0x^1jE1}_=CDeVQD6Bn9159RzA)Nm?fgE&Ny;P3r%cXp67H0LtrTj(~ zY2qFOaGcXW@}tb)kHtda9a;UOt6O_!rsmv{RPw3)$EU zEK~TaY!Vihr4ZayQt;siXiRWKmeCsJA)-3-F@Ws>jw27?>iRB`eDqtw`%T28xO19M znMi6oA4VLZFN}2)ADCLB9@z1X6S0KNTFfs_#GS)Uclq0iI9?4~%XP+~Ec@p`rari0hy+rtgpP@@8 zO0%IN_(XC6c@o7FIBdic@!cXWIVTg5l=$HkcbYC)Hq;D?r^V11_^5r7e&mf+)zrF~jtyP0<81iMogEf5OO*!PJ zcQE9CkMe{WWC4A4fnT0MyuB`7Ky}1~jz#d3d2fxAqEtkZ97V~0;+P}T1 z&|x(HEf=Q&4x{<2T+Aafn)~G8=E9#mCXe{z9z$v#sfClre7w;KqxdGg(r%;pX;h*i zqxj=I?B(^NxIQ0^?(rrls;@(AA{Gb+Zz%!>55>}TGF7xNFMPKNvb|cL!_6qSjYKC*yej^@GT`>woB(P zKLVeBV5=x74KAVNn9iHcBW)W5T|;Uy?;+@j9~iXVDIqvYYjB~2(h9z29_i* zY%W2pE94&&A3~MOe20bP(xI1m%TLI88ZwMKTZtF#GlBSH`)K29x1PDhH$2nVvO zw)A9CT>wzLgZcRRFu#aneCd3$IU*35Y%#A7ZF^T7voi`cQ{&8W4u~?5AXlz*)RI}K zf;5@(2DL4OtJkwGun6-2|`g7%PKLHn#q+v~LK+KfV3zJ-6ykjUF|mOC#dyXn(2{HMia8=ZNE z&ssu8&_idrZ3)S9D$bGv)MfLDOUbpWY3)H(je17^TsW8$KRZKoCKgFyZqo1|l==WD zPmTQZ<>1?O7vHlS=SbU+aQzAr=(TvKki9sx5XYcmULVF>L6&GwChxX_B!{0`C(P}- zG8pAq3vKw5rY4@k=Wp8~059Y6UU&`f7}1`fFJP??Zw85iUIT zL~hvUxPY1+zCoc(4UiK)RQ%Mc(DLrFa&1>=x(pf;%|_)!mb}ny4xTuMXMRrVc-Q<< zY?~h)Of(PkH;GS=aJ(Q>We&zMe9Py=vs$xKVK z*2&H#&p2eSwvv2C_w_2=u#&ivYL7D{?@v%D_OblORis_5tR8~p>&jwz@i`Vc#+8h) z7eZ{|N_P(1^rZ(z@y?Vb(*dz04b*~|MvP7k&3!>ra z={#u-F*v`#B`83nRcK6lVfGqQjnecZh5272E~`BWsVYp9P|S(l164n3e^8F73JPWN z3VwVYX;^<111z_gX89qi+O=7}$fSBPlIjj?1;FZ_K9w83A#v4o*rv)z2giNG!uZH< z$jX`*U^Tmg)ebgbPX&>+J%bK>mh;-{p{dgcdGqx+yXk#~k6Dj{sXctndNQ82I>>8m zAaCo^Q)qrt{H(V%e3clIHENP@5!II=r?oJqJHUl~dGn1hfOo@r?~NqJZc{4d*B8-- z{KQ6*MjtHYVVg)8tv;L&+eB8;w!^vow`3^&VF^$F7MDR!^EKa+dO>;ON9Xl%I39VV z%xj43@ge!a1Ic|!^mDnGB<4pk2QUn=%YODP`Gwr&$2XH4|N3!qMa(-Z)Q-l@@oqjM zn&r6(ki{W*2v6TamR0qFri&7=&&vaqrALq?srMaH1z+Wwzqb-h5T5rvVf7pq!Xw@gk*T$6I`p&qxY#FJ!>!w;NOr*R6ta*_x1JBLy9Wbg>A_OL20U7OmkmB*S{L(fO-nVc725xolokDf<;t3SDzrQ?o z%MZa|6Nmcy!-(GWm!|a=MS`_EwiA~FgquM2AlxY0^|r^%cEFE;#ldf+ED(OqA!h&| zQ9$Z+><9YF{*FXv@%aRg+CiUtoaojPHH8K(Aqi{X;;ul!3LSi2m4Pq^EZ8{Do+^@Ocb`s%~E||8uR~o>FZO86( znw5XGog`Gr^n(zQ_{K;t@R!@kPcG|QsT%C3s_Rf+e&Gi)#k)1Y*4|iYUyEOse5CA; z5Dmo@cKcR*FY|cPE)q%}@tM1bF$lj%S!#C_XFV_>aJIe{jOcKw1y1ZJEbAZs<1Sc6zkP*8 zyT~l@Yf0D!W|laq*0N4o%Tp8z znZu(F5_7GOHvslwR>2zX5+`IAHNG?d>mX@E$8|2Odx-R;)H8|CI70SPKR4d;D2XKN zdG=9c9e(6r9VN>eM0P|g^ED-*8?3`J6yExnFuIz-Qoi|JkCxE&r`IQ$s-mQt_H z-1Q`axh?Ja`jcb~O=-^!r^q{+(vBN`#73!FHJjCV5jfKUrO3C1?r!wHgHtRHzVIIRys%PD+Ny%nJNbD=c=4mc&PEzV$c;j4Z5*3p zUSFs~eK9HjtwYz+jSu*>MKq}JBtG22Kgn^1r`4rv>?^@B@>#*uz0j{7ZAhwA`(8wP z#kixI^?hOA`gDU`QdoPabEkt;=jN7Doy%K6owYsQ;p3H|?p6N=48LP(jT(#HrOA9j zc~OMQ65=j))TReWw~Az-!|^*jxgo7nXN>?~IFDKu_obpy>3obc`_IXBSb3*#aYJgP z)NrhDM=+~|SV zh!#I1iWh_;$U&||94T%SDQeH+P}E2o1nh?{3gTz$!km8*M<>y7D#M=w!OhpL=(w z&*)YIuik?mH{`iUH#GVyVH%}(y0TsP;~q4EdK(HG^rX3VbgaU^>q8gP;AMp|eQ7+Q zOaCsM*N@(%bn|UKE`_%Ba(BjXhid<)zzA2GJHYa#3OU zU|N+_t%(#c)(1BjdHXGeorlnIg!Z4$4-chN$W7jA7|kb}3J(vX_QZS3Mo94xzAiE8 zci(8D&#eZ9t2Y)FZ{)Xz)7dm^BOjiMa?FN8B^6VbF1W-Oq*M3a0Z!0KA9aUO-g@Gv`#ghz-KHL(sh5fmfssmErt`Q)i3|&rrzT{KJ(ni(quf}M`HWwVobl%?899xo5 z`gAqFKbF?^n5YjG@dT2JY}Vj0*1cRl{Xe>XmY$V5NiTdhu(5xrceRbRuKIe8>G>wk?oR7|;b^gEJz67qSs%!t;eJ&`7 zS5#0ygsY;WqT(1SC@3N-8YVd+qM}iuVxl>q7n2MG5|vu0R5)Y~q?p4sqr!4ZNy&V3 zLd7X>#+x{13io`^K4)Jgvv=tG{{Qp)t^4frthM)EdpLXVGhXMx(04j#*}X(9Q13kY zFo~^ZYgbd?OcZv(YQ*O6&LNN2S5v}F*0b(MtKeC?e(`Ad<*Up)XR_fkJ3-_$hs}2z z20yg^!Cz=a|3F=51l@bjyk-vjROgtEhr!fBr_jO$tRW@NW3^gL0%<8-q~(J5;11 zT2{AP$7s!4%-AsFWm`$NdvdSqe!YZ37PF>w>n+xw|B%UAA~Vwhz_p zUsCPEeIDWV22Z#AvFUc)3DPS5R1>vAEEK$$d6|zcX7)OKe1(2^o6W)Jj?6>S*fkyg zYLB`tK@GjN7{#bmKL_DD2jM>yoFBz;i)k)54CaPgG{de>8}b_RUQA!X(D3Lj7*5s< zZ@xu1++ECa20N%@4O8i8COg9d7V*kyML}&?E&3sgEoMF6G>>_Q*~|PU?J_o(#hZ9{ z8_8OQnbFfeW-MqdUCP0gkP|fMU3Q$Y0`hzh^GwIN)c-ve!E|%!-S^mwP5v>5x6+BE zS-cpSbMbT)J}`{6VA&jE#DduTITS+Z&-LffTg0AcF`KEF*Z`I>o9g7UNxBO2^jwz5 z*zuXTLd2T4+cFb{X%we+Al!xebM-9YB<~j?v}QH)Xfc^b_CHNTAQxvt)KHkMJ-+e}{@mNFbxzKPOT8N6g!> zAG@FFjcT67lW6xx>`H?l;`kGi{4E^qnZl!Sv}FSeHZ24no|WU13k{N(i`~zH5ElQ_ zU|BYn^FgC+JZy%GD2HKYnXc)3a6M*io?5$;<)Fw}ed5cf9AHTV!& zH)4{+qYd~T55K<>{kv7UAEwtQ&91lGg5Fg0GIid>{2MKKnO_J@IHcZIJ^vCftLv!hqcx^%mwmudGV7RV-yp}U({OAim|b(W^Ju@K0Z5*wZ|B_8MU zNc;22)MYdCZ;+0NYP#i7YPxeK)6C5*w83lOk!}uJTupb(WIDQ;wP(?j=;3D8*U&Nc zNxip=r9oR*v7s62zg`>sMFZNRX&kv1;230a6ji_i8*Sep24r-{89q|}VIr+7 zU;~3qs)GM>;!VpBT9^i8;DR_#S|)1yZ$FMSnm0#Xd<(#4F}@$Q|Acusw2a{m-K|v& zMSgs+Y+~^HXsFPvU_ROpM^KIVK2AbV!RTX&m5AQU)|QskA-KJmZV7E? zH<{aJ*tLkIbA_y{`#*8XQauDLU0?!58Hjf68^n_DcINMT6?;FAd%%}>Dd^oW2zq54 zP1(+x)%yUdi1cgy+S~>C{5X1lJM&~S#?j~7SrdouP{O06=`?+W5F{MKDx9fH6r0-jF zNw?^-)!|5*>#1m(w-XJuE1KTl$!4;kXmZ)bda{0FXy`81g%yvX#k;U}+B}9n-o?h$ z?aXUmtFYfjQ@!1+N#nDlQNK;`1|c3gZ|7QtJXL$=Te!iw&wzmrb z6EQIsZ%zl@ABl)r-QFHdFPl-uFGo?D87JMF_R&4Qzh^Zy+QYu+-f1sxs@Q8+eb0Y_ zLE3I2BJvGs?B0s9^-r&U(zyM6(Uu2Bki%za%a2!4>(AKB4STKPKI0EoYzNy*BWTTM z%&T_v2<~95Rdnbxw!p=a@6}6v1vjjIX1I}h$nMr~8nu@tG#l}@dLHL%hA$&DU#@OZ zJ-Au`4@SOCKka21jUK(gi&Wr~!o5q!$9qxbH(#K)KWCjAO+j4#Z0Mj6q=AbhyzDQT z&Bs4yVfO4d6E*&tC9w+=%voPE_u6e|y-_V50}9XRj(=uTAG!azau)Arvy6BE*QhZU zW>M)8_8hwwMh-_=lScao>ZF5qU*T7>1R@Q7vGC+9>Twjq!Yf;8>`~OpqC%Q?l(h_x z2-9ib7FGX_^cbEKef+rH_TIcvyL}4a%R$zN4-1DZHyYq}l===vR*(U)`TeKGv&eFk zHD{Omky8l{?xk;2?-JIyaU<2&zBn1er8H%3 zH6^Thtv3D814C!hkrMV=EpsS#P9#y_cdSYGnTvT9$Tlw)L#IAuiwjDY-;-3Gn&V(@ zmlZUb$6c62S%}-lrT!E519(K_T*%`rnpay&Y6|n_+&n0WzWlD9Ru_sd(_*a zS*{CxsO~W=V%jIs_+zY{LwO+2-Stu+y?cxWJCM5DEjN%Z9AjAyI&GH)Qqpl2;$ZH{ zjl1pXY5wv!GvV67H0pf<75CaSns|bJ!iuI+gCE#i?5(M^@&`7}eVO_Z%$pV`gEk)w zN2fub$=yKBPBIr0X=*%j^hFC*vHCGlpb;A$6RS0%>@l%KBknvV=4gcD$La+DBpR;~ z^B-G`;6z4Had*C^l607yv==P*bT@x_k_GG7vDe=Fk&R`i*VDKkS%Aau>yT7d`&;WM z|3@t6`mdvlKjJJtVI9>!#Uh+7Yx$UHu{7hp2RW{zDW{lw$Mp3o`xV%qJ#h2($@6|N zGHX%RLir2+)h5WamUf+DEuCM}_}8?gvewcKWWapZQow1}noU_p<4-de)^07maT=FA z#=b)PPGgKsi6`r691UN;LY`-s8}r2j6=yK+&?_|J3=3t=UZMA~7H0e6&DCevMjd-O z-~918Hd@E##hK;vtTuC5h~?3ua#Q%eo3&;-r!ibXoEA^s7x6Jl?|2$_kp;8!FVmWf zEWAsGx)ieGD6QDgIHw&%)OhIXnNK*J9pmsY-F5WKU2*fvI8`q+&Ch}(a*|0+(uW4RQIuAF|6&&NMvhP}i_;s3E|#U(bf zZP!((*AwCRQfjB-^v1S3hgo*6;P>LPmGsLMyyTN*XI)9Imr-fuvDE7_DrudH-n8m6 zYvHzSHD8eE3q#Wn?%l29?SB(3I6#=(z05i?hgfQP1(knp9L>0bGxkX_wDJn;RKGJG zy!quQzgU;iyVD8FjB)Q>Wv*0tg&Eio9`<9#aTI%%c~Qhw)`0yQ!*^Qq_vg~DvJOq& zjj2{XgO?J&v2z)-GJklk-hjiF=omV|V-JaW?;2~wy2p^)HMHS@XnOt{M!dCSDf$}g z(Btc|)e6qWJKa~y$}6bwF@u6gmNnSL9VA@sgV}(3;rH;CBK%x3miAvmb2>(o{wLNu z#Nlx)UT6FcwB>%ZEon8O>)7QhfiG2WkyiS_@VCB&ueXrgk!VUqGVGOTI`9+AWJkx) zub?fwQn)+2+y;^u6G`<&t!}-Y6En=Ums_r{28Kr0>C0 zA6z$6S-SUrrJ|E+YLBzT1sKtO>W-@B-m`I&JIUzy)oK z9bRd}TcGHJ=ep2}JGipds|)$xMXfaHLc@UG8wc}gK9&0~g+vWVzx$$;Sb!j=Ru>w({F|2qv$**o3AX>rf`59t?iqf>!*pJc%M8P8x*jSM(vdHrz) zYFEtawvfkl8c4T)!wLJ3y(sqq^YchUhR zj4c1i&h;{P(aWwl0qjWw?d1t9wkK`1m$O++4+^d&N3paX^jS>E$>xwgEtu}2Snl;hiJ-{5vuJb#jOru)x!Jt)mVZo?iuM>`zkNXK-HdHl?A zDBi<&l)dUL+m1;5fqo2LmYh$ihokJ@aP%9PB{NzM0u1I?!<(LYo#s2rZ!otC^L@+#^U+3Q#hZwQwz_WhHt@+ditb(A^y6hx(n4e$cDTmf+TQIBeB&m3rR`VD;;On!tQb& zi=X%)P9BUfQGA34@^M>U?J_tZ7K621>O%iC$lk5X?fDUS(ej`(?-BhveT!$^u-F)i zYsI+XueztW_N<~V_2ig=-#4r2(O^Wi`0@wukMX+=Sxt*TsBhEY#!LBB%x}1>4L7>Y z#HA8=(`_1#o_OSA>D!sk)suHHuTGThEMH)~{LP8=Wjt@|(vem*kb_t^fAg6Ja(%{* zB$z8)*S0J{zO>y#p2~t+Q?n*=0vp$gmNt=xv*%jT z^(Jy#-8p)vi5x%!J>}+I3R_kycj|dP3>guT6||@XRX%(``i~(m4M@Ki5*3nO^%9<& zPXawGqD?iQZ7th;%pZEnxrPoZrDM_WR+ z1Z+AUnd@xA6XiA>Hz6S(pe;VP;ThHxuD9*;I6TbJ$Haex*fQhz780EaiGuD?4w`6n zwG#BMCRr;rEEW5lcZOY~+$T1i<9eSDtCb=V=KEY0y)Wz#$7D0KCGH9XTiB*+18%Kw zfG5EBx$q|9!o%G5T@kkJJL2qp&a`049SHIg`E*nxmF9e1xk>+YcMQ8c0dwgcMsR-My{_`Qh+?1f^a$F z#Uh*tal?Kk_J?kO-3IhRUj(?sLINOekYIt~z&Vgy2-kDThNRTk=UgHr;A6ytR3Xe| zB*M-R3&IZ|9DT8$y`@^Iy$SY^v`waJC4MtX52=LsLKzDw+=xuKV)7|KLXeG+v`>JL z2M~Yg;vu!c+wa8wwm(WGbOGRIL&_o9g-9P_#Do?JX^A-5pCTXA4v;Y55#HWitt3HS z5i%8+0T~UMEO0K+50T?{A#)&?QiKoJ*ymg!_U{Q^0&>{{In6ofC8Wc#jRk}|{;02f z52_Ey#UEl6VH@XcKG0d7=WI&(0(v2PzIqZ?xnh(Kl3l~bX8U)M=Xdx?dL|_s8Q2nw zgn~<~ka*}eevQJwF=udG{2}EKX&(;!!_`XQp=V2i;FJGCuf;=u`Ktu}TRsOFtrwX^ z{mV>i#_LY%(G!UOvWkUYqKaLJGyq339` zErOowI9466R?2`S*mnZ@LE1*+Csjm<0&)Y6HsfUM^Tcq^=GPFpsd-U9xo#bL5Q*vd zbfj!F`wx{%*@{S3+msJi3*qY1lJXb)({}%x{lsrE^8B|6#KN&iNHAo-aQp$#ANxg+ zf*Q!fHnHh)N;EsZpHzaLWQ))himQ~z94|+>5E6&5fUrnrvY>Aar|FJX`G%R`=7x* z%kF=}?W~3N|8Emm565yKsSu-ZG76Xk$;OSELP#vc4Y!IoJ}ucbdDAlto{sR}>~9o_ zm)6YWU*ut`nRvN~R0&Muf{0H`{9o`-+x>_8raxuCBaZwVnS>(_FMTdY;rJee10Z@A zt5VPqoe*IzP6%hJh?kZ*;R%9(fxr?7t{O=c5G{wV7{Z(>C0cG_-W4q`(wn=Fmj^Oa z7QP#=hlE3hdRdk4fh`~fkm=aJ2-ypX$9`wv?WR`c2S|N{(|}wyLEghY{|r!aC#zBh z)I*{nJ3GTaa9s2VC(TKmG;U)2q=~PMoA&y+@n&TrF7B8f;oro$qy#+?8}}@<*;T>b z7Oz;O@htm)!{H z;^!c~6C@5{8}e`x7ZZM>growwaHAYxf#8EDSe1ptF&0eLkcTA^P8nxaoFSac2j>>^ z#D;VKPE3DgkUthPVKk<2$i^{RLg6E@Uegcttbw<;elKo`zODVA83PIxV^;&rRC zWQ|qnvdpSv<>Ba>jl@1gbEI08f2_1BXA-PR2iUjDL86GidY)BTvDTd2{g^HDnFstZq2YN3=RY=M@=Ap-W;pq00+juWmT4=HZI^{-OW3Y_PbUk z@niIlWXLC0Wl|cR_(H8ckLECKC`6T_P3Eu1x?q-7`2-)D+4QDWIg4s+^%_P(IB*^g z#K3_UQ>@A`)WA_V5QG}|Fv+Tnf&)Ln0e{rMK-54i9H@sH2u2NLPPHmJ)W8`ya0m_z zK@I!{2O6RVx}XNGPe=P#!+{Q{fs=4xIXZ?OH8295BMt3!5)Rxz0t?YU3Q>jk7g&{# zPy^G@KbE2f`l1H5paz$qf4qqr_!TwyDdO)y4PHeJ`lAMhp$6vXSQU3Ta2x$&030x* zf1E-;%1A_&z5oYKyo1uhf$pe*;i!Q}Xlp;z!0cDik`8qN^Kc$A>bfSc3XBzK<4p^mB5Vp9CjA?|&F-%-4e|de#47Oa6V9Y6JuOd+ zY{oUQ!N1Yhw0%~%HsVL$!Xo(Q(}HT{WN78nivRolXXar-=6ZPMBfQ%QEULCD3ICtO z^mIli|3=1s3ThDIDJe=7Q&i_mWJL+oD~c4PDEW|-=QT0nC0tv$_<6;ol;TyG=pKp^ zBMkBp<_5Vv73Cb>P}v#s-%Is>9MAOMC;oRF`pY;bQM!s}c>GphMM;9#B2Ps4#TxrI zz9xn|rS}*6-U1B*Q;;8DpPHQ#<%(J{Zo?F1BVK#@Po=VkEf3p-$M=2lkLgqnH4mRH z-(aTf8Hy4K>5R_-&483o*N}&6O7T;?TaEof*sjK>cHe<4fW&4g%2a_-z)(n6vCnl} zJhXk2x?>~%9hM>@7jAdHM)>J?4~5Os{Gay+YKhfU-1rxf9pQE9u_|SGX_Yb)av2g2 z`4ZfU5awpiPnHX1Q}kC=N;F<-j^06N6ZkGLI8u`GfU$UBx#W125{h(7kYy?``THs*7gz)=0G0uZ9VC;Ke7#Dk z0ugAbQjB;mE&|vUmfo|9u&iOVQo+#;_ipM+Qh_gSc>tr^;*N#^Jnq5g7)}TMDHLxlPH3IaTg}V=pkrB`hmuI_W*!ZZ{xDfRh+?@>d2I6jGA+TyA95o{S0%RDA2O^4aBX1ATZyRom zHb;WMcwj*xsv4NE10}#CoDsN1mI|!m_s)O?W;o`93~`Gr4d_{fs&9#!{0apCX5vm$ z88CW3>{=oHAK+MP>;t2Kex@H$LIm>8AfhiyREACmEIW_h3e3BJHf)0oFCqdk;S!n% z=y@3l10#TUfyvj=1Z|P-Hr~h1EvBqAEHKp1;DGoz(>fqBkZei zw+UDPECdz-_XDe}s1bi0|Cx@sMB$H;15Lw!+mFj=okUvMY{%zcx5+ z?uvxl!T{*!kBqy)fzEIYnA`;p0Rx}InhsbLh}BAW)W~6E3@kf^YbDRY?hKaDz=Sfa z{R5EU1vtzRtJPv)@(siX`nh0*^E}dV#XM(1Ai=084}g9xu;l3hM_MULDzFSI8w)TH zs~LSyI1~Egpwk3J@dpM1!+{CFSYRe_Hn0S^9vD3lYZ$%{^zDmyllamLcECbl5wHa4iI2Nk zfDyndV6+L}hckwvO5)K39Pu%{IA8(RDLaADSi4C5kPy%fn1C3?JYR2F*8a zmkOzUxJto{rEVAuq+Ey#)m3U;a!XwtP05hk;V({BX2>R_=bnk@HVYooc zL*hWg?7oH+-5^6OdZtu}xFsIc_8qy8-2;TX()4%aX^shYk`&ysT3KdCTR)aP$$qK) zx}Dx0PY=@krE&{9KLjJ`qouO9dnAH>?Wz?NP~8&n8wbvp&M%cGHsBn3kaQB%#?F|g z>To9;)8N&zlN`%ta9OeES2%zM zu8?Ew{TO+D&^2)kAB(ksDHMw(Ll+=g7@HJnNtehhrhY9l{m?@dsBn zoVMo315GIiM`M-ApCIKMFIWz^@KJc!N@X-|Be)!Jw%*3=ioj)q^Qd803NG&{yQ|=G z!C_ufHy-x^xc#H5O@D~&Ag z2A2q~3UPV2#F(a)E)`?|3~Oeb3oaBK#u;_vUKfB%dCIOBTqZbM>0DrU65JkeFKbcN z-va#dlMLrE)e8P4M3VX#oU>@=d-8|P^XlU88e6R}-Uw>1ktH4ajS;(hpmT|#?j(D~ zlySRpe{{1FoF6zWYt)TruSbDLg5!gRZR5Nr_!RK*HWHWs=?ebzIQo?2R~^^$xZ|sp zD|&uRHs;5`+x8Kt)%;0xBvG2xvk?)gadHOaZLYsT-fHAieV#Q zcC~U%rVl=pJ;<0RM>z1at3C7Z;I1|VWaY^j_W2D_PxHy^eR;CI6DrcUfR?;3_p*;f zIM8H1_P%^jXYYx#nc_ET)razAhctwv7F8=hQKwyanyFR3?5K0tgWlzWvy|zya21Zx zh&6JYeE~cc(FhkWqqFM}FCSsQ<>a+q9&ImS9!Xw73wSsd;gTG>uwGu^ zcopH=I3t>iD&XVg{Ey^e4kIy@xU9n3oVFLpc=q!nxufGwa2s)|^bMm0pJNUgu|aNT zFEvFDAD9GmZJ{&wi^^J4<6f+JS4qtWair+GDv4?5yCzxeie9*5C)2E-{Pz^-5{4kyU1a-tu zMO}_itF7P*5so-QL$=B-KjMo_&#)ZdjZ@*nj?`<5+=ARcl@Hm6w?T*eg?{=} z?qi>ga9#y<*dezHD?-@$pHJp}o*%F6li=gQ@8bkE&RM|u;9PpA%AofEtH71w&l+~f z-8}-@Vo<=j^$S8D42%GmeT#1FK!s!@?05S~tEND|9$ffs>a!C)%(oq;%sX^&r`*9I z8sYrA)k-_so`VW^-X*))XM@YTM;&&_F^+c;u8q^`NsNwVqL82MlD+MNQN@1MbYT}p z@nnQctI1uH%{j>)O=OXO0jk`M_&_=%?OMLI5>P`eiTbT3*b8sXAk=;2V;jb3d0m>pHmLq^!1 zk%n+;Jw<8ABVdbwA+NHGSpR6w1Nb4t%cj z2Uh{EE{}+fbD`iY;Befk8|OxX(>GBR^nk})0ytw6oI$(RAX7m4!4SvkW5XP9;oxf8 zZ3GtuuBL-U;3C0c`gk0-6kIeo%oLBgtKj0nsiUZ5)VzKGG8LqwFvI~VIpOL^N)y`r zmE6iB0AanSqSO(3RGJh4PV%H1UtttUML58dnipezTYzxvQ?|w6qCF|5SneG20O2I) z(L2P_Y8r1Cwf0=maC>Z=3j|jRZiLFf4PYcV&!+TivFzcIh;Twv zMR_RnygaGkMtV{6eR3=NLWDEDXb8d{We68~DasIG%Uh0L399g-clKcjc0-rZd(&=& zsc@gHXP(}40XyB}p@{NU9uJpph?op65?p7Vn7VFER13$4%UtM^ys7)wau3sKgm=Qu z$n7wfje(U5f|cNlz^gp~e5~MWKaUX(yxMAF?&J1G@D<=~^G=Mg4*;(>ibDtXgTV7j zhy?FsROsf{a!dPU>==#Y@eL-O!wAP2Y4SH{O{oWtGb4S#`3Quwo6(JLaIB;ue6pFM zV2lxkOF**PY1Vq^EYJ<(y8ebj9Sd_b)DEe`TdNp4zvha9sYKn3_&o_O92`GC)+#E} zkdMzPIf?})w|M}Yt}PVBTeG1L_sg#Ko;`8k`Ox0|vWI;j!p^Pe?0yUenFv?5qqYa+ zFt5`HNBQC64-(J@-+RC`>7;`aRwO7AV1)T-DJ&$!;R2@${5xUF{WH=~yXucldksTFfG`GWvL?&Y+c*Yhm?IP7=<)i?ur=66sD{dnaWL5IWUWGDLRASTcRgo`_q;~}|w zuZ;+I?V>0c14RW+f7}@Rp&JPuraGZ}S=C`yk@z*lgf6t;klfbZxfgm{7utFV^%sk9 zU{|v8a3SZr(vZWjDM#3^8!b4D*}xN5_bR*5-otVak7$JbpHu#@x=94*_Z%6%l{>fE zh;S10>R~>BpLb6%)b962hdsQ9n!eIhk{2)_^O}6j>;Q6 z9?h(JJaFj zjukA5HxrM`uhEo2x0dU$aV`nm^%+$PQyENmz%+1i{i)S4dBV`?HFVsbUwN#+_xjcJ zvCBCZaD$$*^9ARFtI=b49BkY!5L`>zeoSuIAsQ+#-a)Z(RUA~x>rdQ>1~(gA)Br^} zA<+jrur%#-T<&c;4e}(&89b&|zE~VO{rM!qkBSG-cg20tIb0uV@MqK114}Yu*Ch;f z16>NjTHFX2Bxs{UNF8Y>=m6Msg(IyE*ul}Wl=U&V;d++An57?J@THr_PqtKkDq~bq*U(Xkc6-=GO;r^`(EyAPlc!C*=$OTx$S9rxa`q>o(xmmL+zzuxvW?B z+s~s_=j1R`w{aTZQ{Y5_eFa7e94ByTtY-h3*k2%UnZU&YR|(uAaJ#@S1b(BTN$Sl1 z=o8x!p(qu2N}#vM&?5Hl2$TeG5a=$@N1(sJaDjmWqXbS@(S*Cqf>;>pVm~Ns#D_VL=|EcpC(o< z&tk^;G`AXWq5I#Zv(<73SyC9)vC8dPBrcR&VOU;=Uga1$-@M9-3+Or{Iq3AJ`X%sy zZ+aZnOsXp-(n_7azb@Z=30fU1yh{^geVDuSKr^$55wIiLotrxomV%8Z6yxIpe4D3P zNiPX?xm6=th-ec8pKs8J0KreQC09oy)XQ^-nj(07SgD6z-@!eykEZ`d4E{TW-bf4e z`o`|1(ORX|7j7J|B}?16+BjBI+nV42%y<)2(j~pVAtlLr7u|iDjslr<_FDP;*Jv5; z6Dhh0URta1d;sQKJHZzVevfeQ8gx91?8HBM)=Su@e59rGf|?56+ShoKR4NoFg<^t; zP`E*hU@OCH@M;FrwG2daN=t=(xv;lt(WFhn{;;s;lLp_4ZT1_v;cJp4iwNh1qLP0@ z0UJJCu5Q(WH*V30WM2rL*GIm{-gZ)bNZ6-*q1o5U)G~+#z}_SoMFe%p z0P>26;E#Wt;2Zv>N!_YN2IVs}PyDs?q*_?A@bdYu(F{Kq_FjU|9-t9*MGHMA`23Na z$1uK1Bs57Vf=6o+u84$I!i<;9BD#|8BsEjm7mm{mt=Q+=;{iq#tf59r+kiZsJt7_T zWY!7fMnvR_QVOY!qorKLyDI!TB-AN19cojoP}|z~uFVbnjSb&2gxj?pM7!r`#G4{H zZ@~xS?|AsOPF9J2Lj+tIy|Iys;? zXN6i@y-3nx5$#7B@1XD4IrdvEJ6rRABHTz6ysaO7F8J(k>1zjl2M6gpEnY+Fq{!Y5 z=hRf|OG(tsQU8W+Kdp4s_a9g}Tr2cz!sh`fQv>vs>?Rr^`mQue@KUm7e?_eUoTvys zu?1qYT+|br)zE_AjL7yTj(N<-V zLSN`Y1D$v}?P)pClv1u0a)?OhYhjmAp9?-;IQ@>Qg6 zZ`+gTD>%Voo#{kHL&!omYJ)tYlY6motEZm z@zqN`&^;%3<895}U)c8(e0d->Z>aAuFmj$2&$eWJTj+})Y4Hw;c)5bF6n)xV@S6mW zQEnB|W2KdJ1n41EXa>i$5T=*z=Sxdi}NT(I1BwminGc=m(BgJ50J4Po8 zeW?qrh2B&u8Ut5^)NO^(XP?pbV+8+^;PYcNM{H}qt%CO#GqtV9775<@cg;Wb@)puM zV&f;O>GYL+#rR(?6v4k}5n5x3#kZTb3?^t9uhD490mrRc&|9?Jl~>qI`WmQ9q+71~ z#vZ{pH9K2-ydli}GpTtaeOTv8(LoxE% z9X<5*JyOI$Wm9}DA_tezXb&t63NvUe&^=NN)2l@SJsW9-F_Nx{zN0B|zUDKQMe3F) z)cK;#TM9l|@TCtmpSuV?L-5YOX+&qiueI^lHGB2?Idt0uAF0`oQLnS|I0uCySacSQ ziRyMr@a1BnZY6k&;PXX2*c`1Ad}T*+^u!sdQ8>I&#Or}x$Q#p0Lp}BVS?L8@1v8II zQCbBix)`TuYZ<0hdDMJ6V(EHEQ>Mv99j|5+OO)K|&!Mou~BG1-ew5_eaeFa}E zmR4dBEcFJ@XECXkHj6E7idn4ku9oN{k?1H9IZ>RZi&Ii5Uhu(2~xf7LQ z`D$}+k>H(0C18qCx21xYE~xpEx0il;r&uwccM?Vigi$R1n1yd*Y{V-OT4uqt&r9E! zC7!3VUTBY$&$W0rahk@rMwnf=PtMfL8|{(OfnN32zr&;}^w1karIFeg^>27&i-qtE zEt2GpF;lJ1hP2m+AusX@-QZYykvy6KjR`am=w8}fbIK~>Z4~j0w5%C=f8{!@LR*R> z_KHwf-qZNeB3h;3r3V^s8?hb=zWkJCXzPSdO*Ho+#YkpLr>WozFRAI6BwIIVBNXM0 zG*5<$jJpXw-(BNvzgy6ZILq52@f(dO6XRSH!5hD$y@)p< zUz~{_6Y*XW`r=s4`Bz05;shV5Rg(GyB#$!7mXBD*WQcT@3%+s~4fNrC;VjJsn##p& zY%9-C!Y*GN6}FoN_XO|%)N-PBQ>|RtziAo8i~KwU?<|%rwgaKH;1l<%hSa(x4%zbh zTEo31A`cWsDR;DnD-ir}!N+Qcnlw%DFAKg{REBMQeM9g@i%X4T8TR_*l^uwW|`;y_LTC1WEKP zbSQOe>ZR3e>2Ym;i#oPK!5G@Yz+gw-qMtl#?2ts<|eu z7y4ood9>Dtb;=h*mu({cRp|3Qv@)h>(IrLj&a|vGhAwA4ZElSNq;RZO$=8KhFK?|F z&X>%$Tk9XmtZOIp&35_*%-pzx{wqcoI_g~r!JeMbk|wd(z}CPM#Q{mOLBKO3f*e~!?bSY79inkVSM Z(w8*z1wF3)(V7?Zy>;X0(hK_5{{u-ipEm#i diff --git a/src/onyxchecker.c b/src/onyxchecker.c index dfbc9df3..cfdef2e8 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -186,6 +186,19 @@ b32 check_for(AstFor* fornode) { return 0; } +static b32 add_case_to_switch_statement(AstSwitch* switchnode, i64 case_value, AstBlock* block, OnyxFilePos pos) { + switchnode->min_case = bh_min(switchnode->min_case, case_value); + switchnode->max_case = bh_max(switchnode->max_case, case_value); + + if (bh_imap_has(&switchnode->case_map, case_value)) { + onyx_report_error(pos, "Multiple cases for values '%d'.", case_value); + return 1; + } + + bh_imap_put(&switchnode->case_map, case_value, (u64) block); + return 0; +} + b32 check_switch(AstSwitch* switchnode) { if (switchnode->assignment != NULL) check_statement((AstNode *) switchnode->assignment); @@ -201,30 +214,43 @@ b32 check_switch(AstSwitch* switchnode) { bh_arr_each(AstSwitchCase, sc, switchnode->cases) { if (check_block(sc->block)) return 1; - if (check_expression(&sc->value)) return 1; - if (sc->value->kind == Ast_Kind_Enum_Value) { - sc->value = (AstTyped *) ((AstEnumValue *) sc->value)->value; - } + bh_arr_each(AstTyped *, value, sc->values) { + if (check_expression(value)) return 1; - if (sc->value->kind != Ast_Kind_NumLit) { - onyx_report_error(sc->value->token->pos, "case statement expected compile time known integer"); - return 1; - } + if ((*value)->kind == Ast_Kind_Range_Literal) { + AstRangeLiteral* rl = (AstRangeLiteral *) (*value); + resolve_expression_type(rl->low); + resolve_expression_type(rl->high); + assert(rl->low->kind == Ast_Kind_NumLit && rl->high->kind == Ast_Kind_NumLit); - resolve_expression_type(sc->value); - promote_numlit_to_larger((AstNumLit *) sc->value); + promote_numlit_to_larger((AstNumLit *) rl->low); + promote_numlit_to_larger((AstNumLit *) rl->high); - u64 value = ((AstNumLit *) sc->value)->value.l; - switchnode->min_case = bh_min(switchnode->min_case, value); - switchnode->max_case = bh_max(switchnode->max_case, value); + i64 lower = ((AstNumLit *) rl->low)->value.l; + i64 upper = ((AstNumLit *) rl->high)->value.l; - if (bh_imap_has(&switchnode->case_map, value)) { - onyx_report_error(sc->value->token->pos, "Multiple cases for values '%d'.", value); - return 1; - } + // NOTE: This is inclusive!!!! + fori (case_value, lower, upper + 1) + add_case_to_switch_statement(switchnode, case_value, sc->block, rl->token->pos); + + continue; + } + + if ((*value)->kind == Ast_Kind_Enum_Value) { + (*value) = (AstTyped *) ((AstEnumValue *) (*value))->value; + } - bh_imap_put(&switchnode->case_map, value, (u64) sc->block); + if ((*value)->kind != Ast_Kind_NumLit) { + onyx_report_error((*value)->token->pos, "case statement expected compile time known integer"); + return 1; + } + + resolve_expression_type((*value)); + promote_numlit_to_larger((AstNumLit *) (*value)); + + add_case_to_switch_statement(switchnode, ((AstNumLit *) (*value))->value.l, sc->block, sc->block->token->pos); + } } if (switchnode->default_case) diff --git a/src/onyxclone.c b/src/onyxclone.c index 6d4bf71c..cd7f18c5 100644 --- a/src/onyxclone.c +++ b/src/onyxclone.c @@ -262,8 +262,13 @@ AstNode* ast_clone(bh_allocator a, void* n) { bh_arr_new(global_heap_allocator, dw->cases, bh_arr_length(sw->cases)); bh_arr_each(AstSwitchCase, c, sw->cases) { + bh_arr(AstTyped *) new_values = NULL; + bh_arr_new(global_heap_allocator, new_values, bh_arr_length(c->values)); + bh_arr_each(AstTyped *, value, c->values) + bh_arr_push(new_values, (AstTyped *) ast_clone(a, *value)); + AstSwitchCase sc; - sc.value = (AstTyped *) ast_clone(a, c->value); + sc.values = new_values; sc.block = (AstBlock *) ast_clone(a, c->block); bh_arr_push(dw->cases, sc); } diff --git a/src/onyxparser.c b/src/onyxparser.c index d393cea7..3066b560 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -488,7 +488,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { else if (parse_possible_directive(parser, "char")) { AstNumLit* char_lit = make_node(AstNumLit, Ast_Kind_NumLit); char_lit->flags |= Ast_Flag_Comptime; - char_lit->type_node = (AstType *) &basic_type_u8; + char_lit->type_node = (AstType *) &basic_type_int_unsized; char_lit->token = expect_token(parser, Token_Type_Literal_String); @@ -921,11 +921,10 @@ static AstSwitch* parse_switch_stmt(OnyxParser* parser) { switch_node->expr = parse_expression(parser); expect_token(parser, '{'); - AstTyped** batch_cases = NULL; - // NOTE: Look into bugs relating to switching this to the scratch allocator - bh_arr_new(global_heap_allocator, batch_cases, 16); - while (parser->curr->type == Token_Type_Keyword_Case) { + bh_arr(AstTyped *) case_values = NULL; + bh_arr_new(global_heap_allocator, case_values, 1); + expect_token(parser, Token_Type_Keyword_Case); if (parser->hit_unexpected_token) return switch_node; @@ -939,30 +938,24 @@ static AstSwitch* parse_switch_stmt(OnyxParser* parser) { } AstTyped* value = parse_expression(parser); - bh_arr_push(batch_cases, value); + bh_arr_push(case_values, value); while (parser->curr->type == ',') { if (parser->hit_unexpected_token) return switch_node; consume_token(parser); value = parse_expression(parser); - bh_arr_push(batch_cases, value); + bh_arr_push(case_values, value); } AstBlock* block = parse_block(parser); AstSwitchCase sc_node; - sc_node.block = block; + sc_node.block = block; + sc_node.values = case_values; - bh_arr_each(AstTyped *, value, batch_cases) { - sc_node.value = *value; - bh_arr_push(switch_node->cases, sc_node); - } - - bh_arr_clear(batch_cases); + bh_arr_push(switch_node->cases, sc_node); } - bh_arr_free(batch_cases); - expect_token(parser, '}'); return switch_node; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index fba688fa..4639913e 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -540,7 +540,9 @@ static void symres_switch(AstSwitch* switchnode) { symres_expression(&switchnode->expr); bh_arr_each(AstSwitchCase, sc, switchnode->cases) { - symres_expression(&sc->value); + bh_arr_each(AstTyped *, value, sc->values) + symres_expression(value); + symres_block(sc->block); } -- 2.25.1