From b6203b8a73c5e42c534cca709f9bb6a95d3652d5 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sun, 16 Dec 2018 01:49:54 -0600 Subject: [PATCH] parens can be used for precedence --- christmas_proj | Bin 467184 -> 467184 bytes data/progs/avg.lgt | 2 +- data/progs/gol.lgt | 6 ++---- data/progs/maze.lgt | 18 +++++++----------- src/lang/lexer.nim | 4 ++-- src/lang/parser.nim | 9 +++++++-- src/lang/types/tokens.nim | 6 +++--- 7 files changed, 22 insertions(+), 23 deletions(-) diff --git a/christmas_proj b/christmas_proj index 98bedaa7edbf2d80f1a83f6d0d5b28112d2c9391..9bafaa91535aad594ce6da3293b3b8c480304297 100755 GIT binary patch delta 42688 zcmb503wTUd+xKU!$&Q2^Cgd!MK|(?>K?o8i1QVhLp+OMmQxHT^hXm1PMB3=qE?RvW zZCYuoZ8U07B`Si_cBr^?EnGzpC5a^bxA=aMQ;ry11`R zKvrRpQhlIVV zTJ>($55)vnFRE69oAp29O#hGq&rwP*8r`fRs%~=AJFB|cP4B7dS#J73RnKwLM=QGc zkAFbe6g5wtTb{*YM_owRa@AVsW~~>;=|a3~#;7}pn5qjAi*-8hLRBdjmqR(M(}fww zDtW5@i-+s*ZycvsYuv1#i2(s2VPAfrSnJ)ag<>kKIfoRh!_8VRE{E0lxnk8EdUQ++ z#l5iBpHi$kH*39k5mx$3mR49j`l&K0v28ta@o~qmx_d*E`)Pon3)oOOL>Q%kaP1mV~jv&4=;A>uB0v#Il~#w~x1coN>KRO=NtYq@xv*QHuR zk3Jenq1Z7P^GCHB+^jj`xZn_Pvue!~1A;L+!8&h)suYW+$#m(yY zSeXy?;$C(nhcL)jbE>o>*#DtI#u`&d+LRHGdnNY4k zF{_GA+yTWa6!EKyT|5~QGCB0vqxI@kYpk2DQS~G@-EmTBk&)=wyGFDdNf+2xG4;CTeX_pta?>n zSedFM9e*@J z?3Uq}W2)8cX3Y^VhGUMY)-rJiym__97^zC7coLr{P>xFa$otk})!s8iZiCZ0s? zNl}<%s$vswLs%J)$0+Q9QJ7<@68rI^5f+LkqcF!*tI^GxBi@d}98;}@;sJPz z?SMI^D!at%D1Fwgluor?5d%8lZpF>&IIYC*5K}wg4AlYqn5q~~JsMk$cpc@dRIAC& zS}q3Yv5%?NV(}upne-SPRVf#V9-{-rtSa?l0+dQ9235H$&eVrYj;(#PUY%-9a?>@c zZgSHdwMvW3ZaV7ghrS;+)+wfndTC>Ch@D|$%Ggejd#OqM9pya7al^DSj0Hp{`TxTd2|08S_?E)`+AtMhZ%msvH&*pj1LBQx%&y6Uvp& z=&K7#U+K?08Yfm`H2O-lCb?N_#Dr+{m1IbnS}Z0Y?=H7I zI@MY(&V<$GW_5g`#ESDgo87IPkE%P|^dMEg>!wGky5{_&?eDJYUgD0pkT{*2b&zTeb<<5^YFtQI zrfQ9Kv*w7)VO^|RliaLNhvr)XtW33LxmjNkNw<)&*H!BRH|s$$0oFRz zy2j0VQJe|uRn=PTX8l>*0qafGy35UaUp(0@q(Jym8H-9cYmll}x#>}=e%MWqR`nV; zJzmw%y6Hwm7a#8)5cas5=ZagN`QoPTAz}Hd)$V3}N<0ATZq<6%&HAQz9oFNj)$78e zGvu5Y5FZlum1+%jvtAQZVf{(9#=2Q=i_7Cf3LdD|BsZ(?S4w{x-SkLRH@WH2s&01E zFJ4moWVz|m2w4|f^#};tqvl!Qmd7Y2^avs4)#*LnYDL}@@AOTh`T%iYVwTs@)>@6J z)OT3*i;2r9St+(o>P6cTadFagI-7`Xl6sPA@sp%3V%~s&f|6FIlC?V1Y;&|}cAmb$ zhiWzR%I5X-?@%N^hBdj_BmM__{QqE2cC(9x17c{`&%}KLVo0I*>41r;;TMhht2VVefMlyX-bK3Gqz;=I8f$ttmU za7Wt5Lwp<3ZSex6_r%`^cO~=1;33^;gjO6nB#vAZbBA;zPl*iDAS#}Mo z>_(=D!;IaiKM|K1<4CQz8`46t*4RxOrO}GFjmOA2@!ixu1G@i#kSwQ7mNRz!9e((` z$?}7Jt5cG=^iD0+WLSRYhp%3vn*R)%=YQ+cpZ>bYz8+%u(DvjPvER_c?LKQl!O}FX z&Q!WS+H0QwGGTu;85T+8sye16k~;D6w1H%*_*_~(`CDu?JQtzl4>wY;2jZdOLrH~r zZ+IFV(j*QU@djby&m+c>;nhhad$p!Pe~JsoeNV%F7t_ZNBsavO@p0s&`0n^SRR5<~ zF<}xpQ|+AaL~HV&>J`(!A~f)J^{AXllpL$xJIlwHyjT71vNHrhKC%2=n)HL%WyJ#W zS@p9ke)6GS=c}J6xIdJ}KU2Np;~0YacAa{a(%?cdxo$A+v`t)JmyG(3)EUWZ;{Ce3 zv_G~{O}=T1)W%dQc$VNed5h$Uq@w0PF{7)9Q z%=23Hs85a(Z~Ie99!ItBg`UL!h@(FJ#QRE-lBHgZ{A|Ae8l;+Qnj(syE%&x> zQJsjspJ$Ns)l)uipyaBUb}5adS6eQ<7!iIX2a%sKdbPqTG@a21fW@ryw+2;+DYwGI zUw_o>p_&f`l~pglwa1G*EBf7yCELaRcZZM+arNDpAdHU2KIl_P%CP)m|6(9!S!v2m z@xa}&y2i;Z1N?q6?+Wj;5P4VF#2)v;$a-<)z5XOkEVvgX7*>WR)=LcXp3xN#FDldIDt8zsdoh?3Q` zUmAOck^wYkwDlY%GYE}Nw|4U&215R}P8CRjXX~Mt z2}ouzCN@^ugT#@ynY9NQNtQ6F z2iZ=3VcUC>19WgG8`6smqT!)zeJ^4rhuEjR$R?T;!psITn351yW*`kTI+(3XAk)bw z?3)DAo>;AaCy;+Ad58VpmwZTmu)dW@QYblVwf83&oU?4=0Qj0=ePaMwL&yWxVGxqf zTk{5yl@z&eq>%kIu(v0cRbcv-4H`{)=|pTezIsn*`4BASd+pEl_yfAuhtlL>!gEPGsnm>}UO=8E;p2_(vk#!X^>O+~a8mYGe= z0a>wBGipF`jsMP?Q|M>!@$7?a@(j7k(x#CabU-qDeHxiaX;;=bjdUP;S;Ta*57yf0 zm_k=s^bEK#-61Vq9Enm~SXf{VGFe!D4wzzyXkPq1B zxp2IP-O44k&X~WW$m$nEQ_XH0@=Uzk}l)~JH40mCR?p{_Yy;E zQp@7@lMN)@x^F+p77DInwl!o1OOk&FBj3Z`FDNk7*7W_ryDR8 z8$6oRM|k>9&_n+gp1$!g-6>@<7cM^(QsQ{JwmE&zTJb(<-zMlc9n}oT!-T;0v~_hO z99o6%td~C`JxTB<{+Ry{jgR5nh86k|3q3(Lc0-g4v^t2=@fa1ylK6B ziU^dv#=bdC)(8FVh1g7LYz+_O*nVb<>&TR#r(2pbB-yl@eN#tbyDVyH>Y|vYK$|yU zsE7Yn^Z;+gXcl{hob}4UvOp{5vb$%&|oJ zTQ5?|@-C5kw9kF(;xCBSgZll=^1dcx$p&l9*W?-@_3Y)VSbt-!zh5PVl=|IfdDpNB z&0$xsk*!|eI|#4uA2#nhve_$BNiAWH@5ozZ8+++{vcPM=Eji10*5(JY1k-Bm4`dP9 zZN2dWIpIl;u!^6tvyEW?{7kaQ>&*NMcEud_@-L|37W1@|KTy*>JBg?Lzhzw;NOH`P zZ)A6uI4nPyENRi93E$d(oXF20iR)!!(DSUgf&4?JvBF=mC;no6;a4(PODfryzmc&t z=^NJNcQ|bQ70dh`4!3_PJA9o(acF?ULuT3GSlJk~!1}@Oh?;z4)jNncArq|KZj;+u za@`v77rEpaWD`jvE?Pf*KxTT7rL32hE+lzux0Y5Bk&W`8nPidm6%TsfGi2CdzDe1y4V9##8vm^o zgjbOGDXVHjL&)pavu!A1dyDn)rT59RtfwE%Ay2Yr{pjjWFT6=K14d&dM98zvcN^04 z28<5$-`a)?hkVzuSbypylUcNmjwM&E`8qm*(4b@NTmU_aVJd1%SCV$aU*mmb*3HB0 zU9}I>t>0_b)`9deAx~OQ1<^lA$h`f?vE_`;{&GC;h5TroT~ZQWVV{Q38RVL^M=0G- z$dBxsFxrp$yv5pv)7ZfG_i(SPupV&9IM0I9Wzb&sSUBw!&`Y*FR6Ffq&xF&ts%G+S6+CJG<4MCXj5_F@heUbf5KF1f44QC+;MgRj2%|sUGtN2=P1F zh)y&G8*@=7y0cwh5suXTVAUsRR(H|by)zw8yb3CL6^Xm7TchbPPcq7St{eT0V4hmz zX`kRea(DO+`lK^51xs02P_mmn-Jiyi%V~(5j#7!flec{S@=fUv8|~;(f9|ik9P2l$AKU>vN0R6er8zH z3usS5`;TX93uzn;9?vQY>AP6g6E@LLNToGuGfgEV*P62hO~UD+q=Wb^}v86M=>a_a@=QdYc%<`VbaIa$9InJ=kr)e&^ z%Yuq&hwz)DFkQ|FOMZyPFkz>#2+wTe6IJ+?Jys0&pR%>Zn4(rzUQ81@?pAWIK^A`5 zUMK9v5kaB1ltN|f4_;^mi?pE7RF-C;-DvVCmS>?c?W2{#9wnVMZIr6MQ%Z%5vQ}AW zJ_&95P^0hU>yaR-g|`+gicWVVD8 zHdgC$c3}tIAA)9Z&Hs=`(kXrtx7>xT*L?Qub2L(?kX*!`dyz8Qc9XUHOEgwU#QebqdebZ6Z~Jr|Mr~^i#^B(&Xifew)N*MZ z_j$&?lAB6W_CSaF87nTQ@#usP%IQ)vl11;OV<=t6R_>)~1I|6kiwGlD%VXb_!y*`; zkW(Kjwke8jkYbBhYzLTQFXmJQ^LdrFkKCo?d_l>%TFL2HC41S%(q6@uw~TFgm3~7W zV_C0Zgv@OJYqS^by_S9V8tqAa*D~JzL?ALCfmdD6uZEY#~L{%vG~_f zGIGo;7kzX7QCMneYUgR*8}UPq5NT+N~fhpK2r<#=w8;o%`~I zKyN7gfk=D&98lJ;$$CmSbbBzwdHx;J_}B;oPGW4f*5tRvUhUWHN6DYqxKi=+1@5F} zKedXV8_?~aLF9f|zc*<>!9_@F5K5-R6KdfSSK<9i;eEXDQ)*#3h&OARgQ#rwqXzMU z>SvhCj~c{A?q{$oh&mp`gyzC?l%7ac3p+j47Gx+v#PPy^Lwwj1VJ(8_-RwsRI#I9s zsdo96w=AO9J>}S2= zr$+VD+2u!RWJ)FX6XgoxXC6d;b72pq@GQ0Pw|E>PkLAsKe6FO7;)TD0_^>DL9d8ce zsb)WFPjJt?F`~O+g-5guVquFQzFz*Y zM~}%tC!U7FgV4JCR49#k2fF4EiCuMkz>t0QQPcCnL~;1t9~Z9{3wk~d6D~h%oW5T9>lWd!ud)Irm2P7 zxC$#ROBv1!d$tTBu0;^-n*B5?jUlR^Q&jB(6PZd+d<%v5#8g+|WTo&a==Mo1gIIgCxhHlv`?>ayJhz@!{j_uWsg?DVW!#US zD~P`lMEB>L3#-GiMJ;@uU#Ib&P={kN>s>{k$GP%s6@A+K9pvJVIG<-(2XMnBvEv75 zqPMrI-e!#l=;MpuwJE- zkXR(ELg0~TjXgxM*c3~FV(G*!O(W$phZM^b?D+dMEODih;RQVEw4YNlY*sQXQY;nR z@}6Q@pjc)zpK2P`ewLD90ne~b$YbOj+lv;K!@JoS8%%{_$sGCOF+^j{=$$3kUT)`Bf+!XvIjK^xfF z!*p?&x0>blf`>K9=6lwRBeWg$e|etbVk-z2Y{mf^!M1%!$F=ULTD<46pFX5{nEv6cVZ^*24z6-8sji)I!TAMjpvn+AI5C`ZJwnSo(DwDV&gxiWxBWc z`wds_LqV^xKR%|Zx~p83bIX}OW5Z6-GCa?{e2SiKS3QH`$+Y@#Lmu@v+5TGEtKAM5 zOcrg62N;{!@3r(_{^irvO5`UYFR+(R(?J3KxY%4r_v!4H(=@-`j%m$K;2bS@nk}uP zCH^8e@JMAR7Up$^{uSV#Ejz)x2{}-YZ02{C4#ypC=2@DeYtO9@iv(n|y=UnuZ?CER zg+&kTRJPnx}onpuBp9M z5|o1!CcCKwO*Z4LS(>)J$ht(y%FN+3jP*H>$2*-|#pNc1PG(P@r?I-$ zkEoi-?EUjJvG-hr)m+sKr2gBgro*6AHOU%wfhGueI63+vjlm=GMqkX8gFJkU(%6y zl$7};?M}|K!Y}E1+^{r#Ni%4hv265L^dz2b`hHCp;EBN#U!$@*R{k|jCX9XeHT@co zL_WAe;|t!-KM+?r#%^MR+qqPPNWp(cjWOxJ%6X79O5uZ*dG~jo;EPQQb$& z1qUewBb0(4jFtn#8@~&0#{#&t?D7IY1HdnFP*n8Jd z;}%A~!y}|w?8WaeEHhXw$4l&YAb9*p*>xACcq^rN73=Xm?Lm_VTeH8Xt!ZRG)NvH2 zQO$Aw56+_LmOA^)B{(UTCjQE{)Z=Eg^(c0*9$V=->z#V~86^Tc^&@3uD4Ti%kFCtC z^adUzPhtPupi@&l8uIvaUiH@#$MN(44=et$e{qE`3r)|##Si#|pN^=7C3qP@vJ_V-^{xenIj zZ`v<#cW>VEf9x~uyv?hYqP;(})v!?i-t4`i^ouD+d+gW$3EJWa?kE3a7_pAO9k} zz0f2R|DxCB5lVS?WwhqFo)2AgtvUfT|0&qRxAJ6v|DwCR6kaJE=C=){DVrYV{^wK^ ze@}mu7d2Vx>fj&^ubm)a64|{GM??mLhX@sH00jLO%j$wMoEqr542>RmpxdH>IS0nVx>Mbs=$}mR=kPV zwgD3|$Ty!q{`=i7T!ply7HzRlotB!NIxTg2>I^(taDt#G^J*?{M05QfY3`C#ZaBsb`0;SK%{U7p7~kjd`Dar|jbp*AO<=^dXATbgR68OLIq(BXPAL7MfbL{r#mC5jZ zZgeMQTgQ~QkAo9eoSqNkoQUmfJBb>*I0bS3yzXI~i_xh(Nc^_XKI01nH4%?Cd7pGr zYO{xf%~f&>A08~ThW9WxnSp2rbvOVg=)4SzWIE#!4Kp5zU_{{)l6?Z(h93aZ%Zu4t zM4Qq*=op`im>bE_X_kLui0rd*LN8207^m_-#4N}}fAGEg+Bw#iYLh)53_{3jStivE zqd)axyQ#KAK?ToqMpy{&&peATg)61Ps!#b85{yXkI8Bz!Xh)rJIS#M1@D_@{vQyvN zeGJJzm+d1J;+I@lNs&&WLvC)vkJ9&Ui+659C*iNBM^BALl!o z{o$eQ)X4-{>9$gn4IQ-xX_E!zO{L3okS!^eJ@|-*vfmF;Pmf9%8R?^KSI`MHBKM0B z>V#qV7qQ?a>Z3!F3*9v&(Krr8^$2r$SJ#`#Q8=O)q{X1AG}Q*#s}|vV zxdVk0z&uM(Ax~L!!X`!S#`i6YP{QsD+Af2Ap5cSJfsdnIqa5p+$MyG8<+i28kB>`J z&cV;|SOnJa3Y+e!jWU$G1o?s33Tu;e!U!`z5B>E7ziLkz%ya0WVe7DuWBWa|`?}og zhmp@;)g=Ar8|B7~r|0nW%X0cEPiI=!w$f%2D(z&Sduh7`R6q3qm!AGbZ(~W~*C4ew zS!-|YK%Xnwe5?5-6)WjwX7<*0p>@U9HQw3-BwDm6B}$a-+M~B?yFU7UlZ4Fzv&GED zw9!VAwrp`5?F_P+oo}PfBRg2Kk9I>_Z80yNKf_eA60?7U&OVEs_t9nrg&ACaKF9e` z@iUht`NB_EHpy2zt^aQ1um>)~eloB542Hhg#P!Cd&|_NYihD2n1naN9+GnY*Pk|CP zf7gbFrZJ07`oP8^Q7nEKyQI}q_3gO}x+XI;x zpzRm%;|9gue>`M&cknBe0PRp;O(ypz@qRmfgvGVh#?xO4tdF3fH|&ep>|pH}62T4xYeR$oRHJ+w>n*+H38e*(S$_!D29luk7*_z& z>#hKvXI`P&2$IEOLbY?~sc=>js*MV6w_a&%2_k>k5lh*LP;G6{k^S#$xIfoBqQL)$PL5=IJD^2RTMu>6zDA;FuT)B{RIX|- zw|CXMZI7#7J=@R`5&mdpFLgvePhj^uY7;y=Mxbx^u!K(9IL|*&%D#ljwN3 zIoK7*tIQQhQct!!jF0&HY)cpItkhqyzWonP2u=9A;Xc17#a-0H9{&(`?7TNlDNpF* zAG-VZ3odtSdNA)$^yeTpv@6=RpY83c&5Bk7-#S~Fd3}Rias2wct6(9EjK#nYV*_Kg zpJT*Y$7$!|_hc*Lw98v93`AGl7;pVGj_(`~<}qV;?MX7oO5?E~6f~HyMV=Af9rp07 zBI1y5XLZ6c4d0c|2uDEvkxv$f+hVV&6Kve3Y}Po>EJhhDfP>`WdFBJy(b35HmFz`5 z$L>N7csv7*&wKv?{6teH{3z!+Bh-UFuA1O5583O4zql1=lEEO}MDWwtFB-PEr#39% zAJt@RHZ|Zdko)GYUFSDF9Kl1nhV4B>+l97PlGD^ua#ol(u=<|bE`hJBPB%6?Wh}gx zHoX5n)l%4O*^R>p_v&(_PKf(WHTPz=xRp##w{>bJ$4BZm z$OjTWE)jWPLmqU}@VneP!O_H)7_^ZE&luGUp)oo=^S!1{h-I_{P(Tk3*$fLITJbI5;aTeqr5PAR#pv?}R zDh>L!i+pjI#zl*;bx3p|Z~Mt6{_8wkXClWpsp=JvUlmjYzaGBogcvrzx3*9C-$?K_ zL;pwCb@0S%^koNoYhz+~4=c;47)KP@#yRB{{G6hUVx90y3VYC7+i6TZ439RXH5BFQ z$s$aWhiU}BK-+?f5NyR@d7QR#;P+tghsgI`lCOq#u_b-9ecP4f$X7!xu58z`gMG9; zyx+dacb?PsVeHpF+JCpv!N+j}nqlw4zV54C-{zhdA9a53xQtCt)JC?s_)r+ho=Vg% z_YRti2XgE5_LLX;X}ioGfz*lTiZz;&mC^QvNSG}DK5_$T`6@}a*f&GQS>$bCc*42V z!+bmv&K>o{T2GLU^U<`Q;3Z2}#-G44(%5g$K@~`FzxF_8>8Fhfk3kN_IvPjv163ut zpPhsq|5>8GpSH8#Lb+({36U4w&I0;tLknJmhWdQ~oV;JZC;$HT`%QA{ailD#6;J0O zS#IGH;?iauoIx*z&6hJBxrOA7S% zOx7?+8|nR(oJ(rx$^4VG(FNz?qm>K#BRcHs$N8oG34SMm3+1o+@tL7)39n*WVh_?n za&7vF{ap6Lyy!gtuY~=H{0dum8Ngh6Moy)Cu9U%MoO+nM$7CzwB};`*|CS1He<;jC zMvcbE_x6iOPJopUE;8mT8Rzyu{xiapaz1%^yoWNRaPv*N;W=4+qwNdWLM7;LG5AUI~#yn zX0oyrZTqQtN`9rcZuFG{mrmyUz!3}f|&IzfOrgY2S8F4?!H{d6mwDt~vH1dag z`T7Lw*F&@mJ-p>*jn*7z>1o=dRIj&chiiR_we1LPPmh8HiA_@F|KZE?oA5Qbl?heT zF1mcWr(L?rg8xcb@K1IhzY(h*6iD$ns6ge>xVz)ug0&B%gHJw?@NgMM8vkA{Z<2Cxdwv{6t_9Oz_eZ(O%<5kUZbf8HLyE8oKhaoCpe`dP!H|`4d8w-2dn{Wz{{Wm zw1Z|(r{oc=(G-FaU=`RmSW}>>$3X@JT`Q+F2Q-4~!5pv*ECegSa_}%%16}~@!Fo{R z<&^G%I#3sad|(<_1!jTuU?FE4r?dyu=nxoa12v%qh`g;+O2*l{FbEZc4sZ`ohdQN3 zusjSs6o!_D!y#w@bHSYUPU#q!7m2{bksn+GmVw*BaU;91ZS<&>h)qs9(S z$yk7cDjej4dc9NH3FdTkN|j(9cnmBAZD2ik6D;fGl;SZ&HJ}kJ?2Lf;ooNj6gGSH> zmV-CIoLHw67>ROm2o$t+Lyv-0@lL70!3{kyHc=QOgHtktHgFDDpXijTKnGY0miI>& zcYqy?26Y3RQVwVY^T9%}m~$ZJ09c-a{CWfm#)1ye2x^8nrA#nqh_gUifCJkwL<&|2G99<8VgEv4!7UmGBnS!|!gL=SR&DJ6mRU>2CS6>|X8 zJ&l%vHN^6hg&_sYUc?T{(=VYX z3b?QbV-FU-jK~rY$X-MaI$p(W<>}X)l2>mO0HZ-Om;{zrV29*<9g`F++=u1W2dkkH zs|2in69IwcZ^I8*RRw!r1atu9K*#$|sldh$tcWlX6&%4>frbwe8JP1C3WD`uU_a=` z(F0&1m;vffU`)Xp@EWN5820|icM3fU+CUqquf<#f^FU1!%7cMmSuNIoEDp*cB!g9; zne#Np7Sz>Y%LMh{HP8S$z(O!$0Q56X$pn^zIiL;9=lWUn0N25CP4NXaShl6Ab_zz0d%jHlP8Zt#6~`H4*^~K#M^mxBxVR zg(J zgO#8GJO&y;8)yb^fH`2nT^!`$z$YD!K|NRo_62R=9Izf-1L_B3l7R-W0xSdT!E*2p zs2PGG8ifkLT(AbL1RX~7D5xKb9vKaPpcym_Yb=n~;J`Kv5rTQc5l99Km@sBw{b&pc zXvk=kZh~cC;27v&GUphKC0ITdlNT(T0R1rpfM4Kj2ldk$rE5Gr9dl?b8aM-f!TOv= zsRlI8D!{BXqbp{krC{M4v<$S(MWo~4U_M#`)_{jW!$Qo3@dz{*I#{&~6@xXP9n`F8 zlr$6I4-5qJz*w*lG=gPdCRhV5038K5SdRn4T68VX09JsSCs8421Z|*s9V*~T#@p9S*ib z(1Ycm0Xztnfp)MQYy_)7T^4#`bEA|7+P0v_Kw}Z|gE^oL)NREOO-2A<5?ED=o&gcVY5?g}Y$~%fQQE zJ?H>+;*V5F4a(1iKQJ5A zpTzp#i30-;D#0A^7+3|`dHQ24n^`D$3S$T6eTpFh3ooO^py5k6oQ(>uqCzm|Iw}Oq ze?-sCLAhTL5LnZI4GGjZuzbrmunfEcmV-CJDp0c! z{sNk$zM!oj7zJ=p5AFxcBb%f~unN>ILZnfM7|a7R!LrT>7}P~0V9*F&2K8N#e=!=+ z4?O~E`lClc<3I!g+CZ;d=!4J@upG<+3(Q75B*lRPw1ZWn(8WtIW?%+rm1KtG-3!9|aC(s};87v3QU==tAG;D6d`p1EBGaPen z!K?-~MOX!(9t>O!9gGLfpb^wOg#f{tr<>~Wr2e{FdHlc^S~-_7pSrRlqPH;^vdsS(Fma@ z{-eR}5kgn|HLsH+gpjy3x9&@NWa1wkzL?gUB4}P*z=vx^_!crUQfQa59;O(s_^0oq+? z0lWf4n4v~^1G?rm{?wgG2%>i#>`9Z*J1Fz^eaVk!#D_O2jbeD%NfUZGi#3?g=42+M z3;jtnOGy{H3uo`%m!`6rnL;Srnl5ypH}A1G(uKj=#>V^XhYTTzHKq$*B!dZ~gcyOC5OD(SADaCA5`BlkMr0dTrsWSenZ42d>{D)v4RK1XTbQa~ zie^2`FcpV7rLL+e3DhB91uHcRgSu6QIi+r@iN~7*Q!TUss@50Ghvo=lf0%`S_%kPQ zj^^Y{xhuq-Q0}J}t(?2vbFrQyQ;&J?LXuJh`pdDsm6R=VYY}^FQ`fRoph}(t7&FM;6dAQ8JSlQ5AeY^&?Ina#k z`UGJe{y*fjOkqY)e!Nq{N|Zmm%1o@$Ja#ctXcxI1CO%g*seZaGbRN1!nR-RYQqIUk zwDBN|oG5gSyoQ{(CQ)8S(^24t9 z%Qsx{v_ZMimp%5l(1kQAne^DB0@=%t3tee^B6~1N=p^JpN@KrqDO;6lAmy`^EV$av z=4J^Kf|B|ri0MB^X&NWp{RvsgC?(KRl5T18nl)}b`#naXxI_t4=>Am?lQDN ziX{6BTdkSjP9d6oHbv+Xer$xg;>Y^wreYBJvMfWX8zY$C zRBW_|M>-`@**#ZH6*>qJqnwhHy}VS2U>{7yPE?=aly)mSQNvVhTA6qsfcq5r!{_?W zAbCH_7P<;&VKTGpdxTDGMz#G!gQn4n}l`R5akfBNE^8;p6w8nQ9% z3t7i$==ch@WEy6_neCk>bbxqrnlOxB$YP$;v9|lNl<7E$9G>cwzE-xht3_B5yT zr*cv`i8Rr(>&QlSGT#|OcX~I64V)ni4z8TpyzynAZe18Ub0&LchVU5vQsQ?rgh3ef zupIbXFc*)I*^cM1g_?5&FM4(^o021hM_z-Tz(bdp&eYa^Ua4*P3o8C#b0d|L&KG`ypz*qeqMZJE1)}|yY`8AXosQQ zoX7gj#Fa}jn>$nJ5VmK&Q{vY(8v2AEFUHrLzP(1{!Csz;_(R#%ndr(g7BCB`3N~gI zx?urZJ4=|4uDm`=SU3Dmo>Ri^E`NCJcW|LSrLypiB%PyWfo zHyWCb?VT+=PQ2K?*}`by*a|#cWeNNQQ@UR8VN2!+gM_4fr^MKfGJY1CBN!0U?K#*C z^sM7tIkIVUQF6h0G*}t8({nNCvFzSloMb}TfO)W9*zA;2S-@EMJ(r6g`n@|3%iFfa zDP3n5AA{eUOND4*r=DM*1E?|FMh$-xhQXOHbjC*W!F*vPDPm24 zaIKj8ANK;5$&v-waq71@r2rPN8FSUTK#0LE_}v0wD!p661}+rBQ{uNfrQvX;S+1Oa zZ+60Y6B_n0`6I7ST=&g!)9|xmO%B_!5DO=}g^4f1WSFwpk%b7}hY5=?Rz{Yv2pN-0 zoBhTjBY%mO#3u6`I4uCFHsokI5qRwxSd2+{PZJ}@qYPmVv`lEjRE^KUd}tVtMM4O@ z`wVNnSct;Jk6SFXPszaB9oJxUkJpgX#NYU|@aTY+)*_z~HV;&3WSbTX!!S`#FGiSV zcAF!gMdk`!J=d4vl?P=HW(ytJ;#?sWWA#q1P=GG(u|(+ac@6J~exYn>x)8!PEfG2g zZ^ug?JkpUre3B;P+TaRfN0(q6vUfYBSNNG5lU2KnV7d-(!!Nk?|m-e1`cg7kZ;u>T)>uV5Q52_Hhe7dGu6Z#Q9@R3ysg6OlUdmA}^K3B3EGI z@5Eb{9jbr6eOyKkJsY*&-!a@G<{Pp+;zxJQL z65Gu|R=N@^d_DVVB?@R*LO#E8#A_H=1-wy>J#gazOq@u(LIjUH+Ku4 z#}POSA8w)XBHQup3%!aRSS37*^_2Pq7Je?93&idEce4XtpWc9J;ik#&7}Xh-?!r?Ek6g@EBa2oG+=hda4}0z3%UhQ_yoyU=bz zldp+Qeuj1G`HFX3AUvZ}*5V#I32*o^U6)g;yEK?_L9v$K%in2kF0UyUrZsL_A+&rq zZ6`ErB2U6auAAu?ObgsJ8?-rY+6`zqY$ja9WxJVt`r>>5&DD{7LFu7ovX`I4g5sWh zAn^}x?i`qM*!3rckf36iykvv2+3^?DMa*{{F1#z&bZ46^ew+Pdx z@#$5Qf~_^8@!|D7AHB=aY|#3;#*NpG?@j1;qZ=Qd|G1_ZjMH7rqvZpk8QG2^JjhCd z$#vn#vm0UR3(dfb;={E}XxRUY_{@b#zKm5(>tWgjZ6eQ$56{lun%{tyD=W%;tAJ)? z9k*h6E$GrH5%u<&=itlxGR!$_+*S>NiGyS-KDMQggUPEX-B z?yi#W4)W>P@~4m?iJg23CDV-ZVrni&eMXIw$ha< zLkf5QDBr<16Y->_qJ!~vx+|X&q3pY-g+XzZad@`^8~^ZTRv}M?n^p@A=i_4Z)E+m} zO_+AMX&T(s?sU@vq2WOTcd^~glnhg`n`VYqV|QJf@*Mo<1iRQ;p2LH^W5GmCV)yXhwsAQexea$N#ogJ` zZ9+G1p4WlPMGv-Q8}b&iz1wiFQMnol9Dys4f$X{MLT}+( zGTwT!1Ius)_Mh!SO3>ky=BDs-Kn?O9WGSV%H?_mmlac>d*Of;{Rb>6{7wRQ|U4h6-@8xJ@0@vmAB$C%)|yAZEH);@tR)yu&Wxc4mte((4JM)}ijzy=Wq`7t!#Fgnp!MQn zs(S$1b}YeGru;dy#m#t)PUgN~+jFqy1YV!_VGrzUn?ycxcHL$y?3Tm5d^)lmL;Xs; z1RrfSg4z<*j&6TmW$Dl2h4-u^ntmtN#Z}L%Og(}Z&g+Z`Ae}yV9}sD^MIM^xX>8EA1(~J=RROjj4{mDhN^*VXCXIxy0fTI|ddGl1SY= z|4bW}3#{ISXv#Kh7_c8~*aToFY*+x;@irK@=ZAsCff;+{OADBy&YrtFchBui9apMO z+PNBfa3yxCdmxONb0wB$_t2kKqVqgK&m*SA*3hn%YK(>-`gW*RSEqGfcd0A$MkX?u zr=U^QsLDLB+E(QmuzXZrZ7iXmuEvtK9p9AyV}?0M=Z_ z^E&&q2hF7ux8iV>&@ID<&6yxF4dyLe%FJMU743@QC_k#5USQ}~f3uyVh z>BSe+-Pi>=SE(!XoY(OxT&MqCjk$W%DxBS~#!Gf<70W%i6$3O{{wj<+ty^ftD$E64 zX~!z`&lC03VKqu6zoGT_W8Yy&5y9+q4~<%l?OO^xwpvX}Teu%D?!n=Q`$k|2uX(-% z3(JarFREL+MLxvfVDQaVQOX_I(tb#Pdl9FTK8n5w$q=Q!gd+#MpLq$fGOBq=UD5Y} zFIz9pGzKZN04Ee<(R(Vf*#&^@IYnQ+q(-Op#+&)Jt(8Bh@X)}QF*T>)WxZcaU}NK8 z=>^Qj=+PhMxbs%^L!ej_dWRgdJT8ERFX)SDW28GtC zcG?3i^c6=U9C=naaYX2;b?T}W>w#_-)WebOMx+~!T(44k9B64Z-xlD-k@g3(&vTU@ zpJCL-dTbiMXr(#pRnP2M_`<_#nJnTBpjFtgJYWHeBH5^EHr4}R72B{Nup%3_9GIU{ zH$cS%8*4jQ`M|J+Hy*Yk7BH=_#W!lD$m&ADl41%?mE^NSXJ(sdKs+-)cmtDA+4h|pPPDCYgmvGGFS@6k?D!t!j zoh~V0Rt{Jx!2a%JIrH&?eu6j)kPJaSy$<#O`ng-U~!5550{EE$3!!MKwc@e{sX!vF|DZBgl zOXb71dhUZ#V7e4AV?%(ssBSaH!pkOH67LPxG_X?W$YxBuE^@w(4dXCK#FC9uNHwmr zKj|3x=c;a6UdQkQudB6+{9BX@_h6K6QJM31j7@?LjDbS;3q2(CsL&Hae-wIFXsgiV zd{fVrLbHVq6*@*}q0nNJ&Uefd;C`VG34L5>h0sMppA-7L&{aa$3w>Q^Sm&~%|$LUV);7J8G=JfRbXP7zuv^p8xDzvB@Bo))@X z=o+EhgdP<7y-LJ52#tRz@*kNrD0iX9cboAz|Ia)HAk6Wl=@F8cMDPV26P%`wAmkut9mRkBLWC9uZr- zR^p-EN%Y3{q%>-7Kwh;C(Cga@Z7EyTNLsxW=Q#lmo#9YDhbC-8$h8fjwH%top;it> zI8?M9q3+w&uoXKnBW~tc*>>P%hm+b-$_`}F2qqQpKo*`I2-R|EE{9UyMJUFh0Eha# zi_jO_lRD6w@9?{bciGRKU>pX+^mC{3X8RkZM#NE{E$)@LhqCY+a%$emUhcFk%8wwL z5Ig}qo$Q4B>#GzRn^6!FQtx@(j%Kq+Re|LegaTi3&5L&StfkuXk zIpo=mP%Ve%a;V;@NDc+|0PC~Ia3+N!dr)c3O^MFLZSk1IBTY#(DHC7l816Jf2L<;+ zTmD{z4s$5Pp=p`eg^$>$y3sj~F5Cx(e;-2eeJHu+1Gda;@tDLTRP`QO?u7T?sp~!X z{M25AW^t&Mu?UBX8o3-A5!%e5vPP6c6S8YWfQmWfX+p^GelCYn-Uk-rP~d&#`u$3E z>-ux6qlTm-!ie`V6zwu+UEUf#@^CfQGXdW=* z^BvYD=5s{Ay0-jTiCY(yzbtX>$bvP#^N>nQa$yCDK)O3L&>B6h zkqbZQb#!qo3=ce{Ue=r;I`}a@M+?!wPgHtAK*oPwHS%*GjC5i(?;ZI36ptr=6Lbk4_t@g>4x#UD$ET`V_YMWD4^b zIfsB;Fx)t_RE;*Lmi%cvdLfN>F^pgzNZSO1xEwdYHY z7(*E!h95q0(=V0`Pd3?c8VI)2M+Jw~bMC;ciTMx3vXPa*TSygngl)M~E^LPlUm|$? zmPB>02_B)sBd~MW5!m^)U_q(?<__4BWa5<7w4jcYtV9xbiC_+!>>P?hru{NuM=13u zlAPmQJ`gNOxxfknxu#*3Bgy!HjdSq|ZWU~A!Cf{ySMU(kK;3*_o~dq_6z)7>djz-C ztq{D~msl=a1b5ivKN37{E8p)0kC-?O{amHGLpGsaI4WYFf>ips(RLpDT)pAM0z3Ol zbxQNxP8na}O>-bz@RfR5x#J%tn$!Uw6>;haIgg`SLc+ER>=t1MX&|!$w$$^4?W0n# zvpu%dZwlLC!#|{Qh`0a#_q?NsrdsoXRf^Zpz^_&Mimz1)9X_sH!)M?lCN|X}6M-ei zzr!~Qz=l@~j#dag?vSkWtYrVNl2HY-eZuY|b=wJhQq~%vIb<@{GV&AHSF+h=3%q^xgLde)c1w$`kct-lE#r1EbtLgIr2NN2>uW*(Nw%OTDt zd+JI17Ilt+^jmD)vDy6=Sx2n(uUL8`Hlr+!7bwj3i!v+AzX&@{QLyKGWOZz@Ul+F5 zmTbS^KAZe^f;((BC*$KQwjv^{cuW5^g2zpq?l_@RQ$sePQYt-xo?m%Fr3~^3&m-== zC<+|5YTqij=L35GgnHKTcPN2X} z^$FW@@>ePcoYn0bF`-vt8QdT^UL~A{@`$i4(;gCbhzh}mo3l@=Q||aRrV>lad7Y^| zLgha}N&MPGHh-&RmU9i*wD2d4{&NHi(m}@R8LJfxCo?|-I{~c24}v+ar9nTdPu-!u zrf$o?H9IX*+gN(ey|JT*CnQ2By5*0*#^OzvlBhpD|m$JI5(dpvwF3o zuW3w(jxjrEOFdH90ZKg!|IVFJu7Ps}bM#5fX@%e(n~t|A3u&_sS*mQwngx$g4a8D| zHg*oxanA9xDkURsG~UyPv|rTp;c;=!=P;k2g&(}$wA8{c$KfN_u1D~Es{RG< z4+3=L7d6A})6IcT6D`U3LQ2D7f}aY1N3R>FGW97gomU{eX& zg7HkiD-2fR7?P;G9JpbMtX?gxOQ;ZPD0oi!wVW+<=$x8^u3FHdhGOomXo0m@TDD-c zMk_iGt6Wi2FUAhz83#pOOry^m$Ey|R(TzRtB}x?!bU0E`5O_iGo6%QFe#6MnOf|n@ z*l_KoL%*r@n&Um1*Q)xvV=}8)S&SZRCT^x^D-1z*yr4cqe`~p*9)*tb|DZI=$aztX zb^9ZU`Odx3Op0^5i%42a(Tfm{yv;UH=Ru zJ6V5Jb2ZYMWSz^~onojeP0M(~?|%BJGrPH!CST5O@1q5m>(jYZ zE{7!{YPnoL<*t?Xo+?MO@o{EqKRHtk3rbVrZxJ0yMS=RMq6?D7sk)0kLv!q=^IbTD zUE!%$=(-blX;=L-cg)rrSNbiLg=x?gq^2|!PZ_l^352t|>BLS&)Ae-CwVRHnqx8|; zy6fo~wQ>w&`Swha__muCbVoVi8^P{S5~E`vns*;{aqCOqVT~IZ`N^FD7vl6-2I|!@ zn|{hbF?hFydtRw`)?mQE9{N~!Xn$f=ygJpaiWpV(K&uGS?5p89hQLf6Q?4vMEPD>( zO%>N$8Rcf`V>NF(dL~mJ1vXHpURxUjPrZX5cdZL!gsHCS+ zE{j0iahqBH5n)t53!@$N(sydEZFIC3I~Ao4y*Xnl>Bs;$9@&~$AB)SZQp)n`V>9A5_D{lgL}`InACnrl4K~v#>eX?8=he@-L$0!YnmayV)v zLM_9g5^Zk;z#uIef!acIxC!-x!?T+(xualyoEDAZksw0< z9;MI8aLN33Mh25P6=o55ZlZak(Ha7@X*3eY=*Vb&Mn=6XpRK9(&kLkkMriWQXw;6a zwBTm_U6`8dLu>Xl(o`Rsm;(c}PhX;W_tKzTV+<(Gg(qe7ST1xo(MuYwV=$_C_EW}K80FbYGsi;OPgP^l)qS>>_Sa|4?0pmkTl4Irqhs}V-IX>g z*DaReBwUxzGnQu;Y2z@U`KW3fd_(GSFeOG=<54{Usvd7R+%z6d$FYm1PSDrGGv`F0 zXv-7fON0t08lusOa5qTpZ$qq%DsDq9hwup#+p?SbPBJVnnZz>Tnn{?4xvlvT4bW*2 z&9RS06zcum5!-nDkVInrSj(;p{)4JmA%1Qw%?%Qw-*jDM;8%g?H#1+yUDl7Y~_v z1}U|eJ=jK5i&1Yus^O?-8~wZ3nB_}L&?{XBXlV)NMohRRP#L1xQ$g_Y-c)@jEUURw zA4~buFfN?CQ}?@L`x1w!-`1H~)l%s+*oBrj4gDrSv+pt-s=f<0W7fUPSPhg_3+wp4%e8Rr^G?U6j7eUY3=6;VNtRi-MwpE{Y0@x+p5<6PThF>Z+)i7;9p&A%=~g zj+OPnvZB($G}nw26H!YG%SuZNi)t;?wbW3+`MuA~tl<8C*Z=qZ?sYA%Iq&)`l6(D0ArgKgg*@yUu&QV%G;O@8n_QM&iK5c6U9(=!`NPX0Sr zvtv}>jQu-kdHbL;qgF0$*&iX(UH+-jY!K5s1Oye0Q>K9z}tEyh_qW`Pvb{D-}iqbBJi|(W7 z;#(bkf&$e%ngb8_Ob_u~$AF+{)v9x`4ibrHK+tg2s&}y_i7~LIs#b%Gb+VWZ>onDB zbg|A7x51jDT1_t2rQ$JI*Q(Ym7wabRCahajtJ%f+g4o?FAgElmT3oDeis@bfVzsBc zPnnD5Lvf>5K;b89xpEil301Ff(a)-SrHlTZsvmOEuc&&pi+)YfAJLq0G5n(zsB_Vq zRQ-aB?v|=dhI$v>OI*<@Ajn^}I$W&X#a*!WQLUN}AD$#};yGBys8*eeHA5uc0YURs ztKP-BUW|ctn`$+jw-svMK_Asodbdl zs&$8pRWELXRi|1nxL7sfvCaWQ9fuXq4i{^^s_ShJH@QyL4dRL}0YOF=Yo%&U5qEXL z5O>jel&MOwcn(T26tk+7i^MlTJk&)OWKxxS7jH)K3hFSZ)P{AK2`dySR?@fGY=hpIOaOlddfwwR`m-mdZnt@ zyXfVjPe6c2nQBE_12AdzV7#OSzDpQqumz)+c3FXbIwb8|zC9Vj@98<0F;!Sv~2*&8B zib?F=6{7=1rz&M)Iu!S=x+M;EEvh*3aOCyQHOfV=Q+2zGUajhlE_$V^Ys4$4aYt9Q zQB{mbAFdJSQCGB4wPw0laUQ{{JEin?wTo3Fb`QbqI;mJMxLE5|-M#wZ8tYU&P&^kB z5ESWRtyHZBk%VGZ48iPD6|)!v#SX=+D#c$_@;tdzIP|PmXTJK`jiz`Ag zyHu-Qya{g=p_pB@N{iyf?%e`{79VqoU$y3o>97{NSSwX)nYghVR=;lOc~z-%$!QU@ zQQoXt?Jm|Vaa%XcF4Y<-`h?-k>W0~+Drgy$MkqQ}!FB>lWEkQJ0DtYE6uAjar1I;h>ODk)+%lt4XJFjXlQw?RpPVo;TG z@fehRJytMPsXzX3v>I`j9&@ZlX;Gt#wO-XDYaT9Dr|R)ydiQ{!6c=lyYBh-)yJL*H zV~kX#%q1tr2<6SHwZg@UG3p-RQF&U4O(XjBz!-JMj8&CDF$qc|6tk*iiYuT*_CTMg zidozRC9{Vv$e=2fCmwE#UfkFN=b&mm@1yTq?r%f;@!1ET6& ztd**@-bKg0vp4ovsPH%0~&p7>fRYj?4p zQFVul{*9_Py68Wuy5{qTTluG|ySwOj6g^s_b1^ij1p-}kcQGj{AjtQ;Itg8@xC})F zc=S=N@gj-BWhhD)G*VSkT=J)h=iqIIYRz=9&J#&=K+r~=b z?ptw2A8bLDW6cGZJiWz@eFB1FRjb{_I#%2V>rBviI=xJ>saI%qX1rC!?oFU2jV zWRTb)egOHJ|D?ZY#NqLC$tv-)_+F$+ycr)x&d5J6$v?00pQ0n)N8C6xoc?}Rd~0X~ zF^Xr026Q|`;Im}C&VGZ4H-^TM#rq?M^&@`wPEn10+DZHm-?5J|t&?w^^^fdpNwMW)yj__6#je!O#^YEm}UxL@rq79>`AHMpU4*s~f0 zpLj?dGeS?+ia8^?lQ^+>M0fg+R(u!IKJg5s<>K`by-9D;e`GYhM8#1fqsTTfcVsjf zD>6t;L_7|uQv3_jLNU-7O@hVI#%TJbMqF-;B1PhhkfOvIW3={1iHbLkRm3X3mo#YT zpEnVb^+byGq`m$het12_`jdTglO%CzX${q+S%2e)^Dj}&pTl#!Z+!KSw=VRSRtz51 zmAoYm9(Ab8))o{jP1fpCN(;i>bG(-ex%ZZ zTP&IqMK+4>O}Rzu{}y*oolc(F-!yei2lDRzm2&x_{-T5d`(^IQ|-?-xi7qwIk@y zR6-26};as1iOJa!Z*S<1!G zFBW;nBh~69SQNil;ZdkKS6cW5H3z45Ry0^zm zhm?~V0kE2M-ZsAlV&aY9;DryH-Bj~IKhypdH+H&{$zrF*NRlQFX&gyB#kGwQe){P+ z4ThhUq%`aA_OFLwmX#*%5%)Dt)>X}H8{n%mc~^K8L*!jiCic4W< zA33Y1?e*@Ym=Yh>H=LxA0c>43SxoDzK4xhUdCyx8wiq!;}wgn37k2zoYz z4UQ&Xkd92~Lq>+xbmc|j?!JX0n`#XyrDF|9{>_u6acA$cNBfW=WS#BhJ|vNlk?dk$ zvY(W((tae0JkD(W$T-rEN&Uzc@)q0DpX{Ue1K7v`WH|jkfE5fNCbEW|9Y8kHMt^29 zkP-BlKPxkktF*z7t&bsd$+PVH7}AxjwcUv!|5CD)U5_OnlmFV@i6e=W6x-}W2nMH^ zO&bbdVYWAil6*pru(07sPP3VZlT{SC8xqML>if5V)5(*}(uwR9R59Itx8w%bSy z0><;3F(jMTdfMX0lCB-d09%HMWNYP&yK0b{%}hn$71eaEc-nVF-F2s#17jx zQ%N^>dUYDRJqyvMvW(fp`h8=^lweTsZ$gNW6-y%{~gThWn4o+PK-J=@7qM6kw_wT3ZM6CN>cK1Ao^`{hTa(H0O5B6WC@heDNf^77g#)_|!e@Q5_ z{DC#`E!zu!kP%w4n0@mXnM@lmvR>EW@Uw4N#&tMM`$l%SkVA23fWw0(*`c>=^oz88 zcpXub4K}@lco5RX7JZZ4)RJAcklW;|c79)+BO3dX6kg;&csajDmL>)>Z8Mocma$m? z{o^n@(2Pdyv4ysfWJ1=n`S-~Z+EQmbd!J;xk^XFemM$R%_M(Jq!WV4$fU(x2Fnmxg}*U)vM|4JD*2Gsn=b|c7}%ZcwKzJ0OtD>wqq_+`wu3!0ghrAlZIwgl@{S~i=||Jc-t$Iq zr~UF}B(7kd$#iqK&l9mzdlM_Q^*C&ok-}`$Xo`MFD^2|JfbIQc`Z@8Y`{j~N!#U#4 zv-ELv2&*1TpYk5|fovJ1SUhd8TqNW@Tc1=K+@4IZjWy9=f>Fy(r+qp*3|Oglq>#^2 zypQ-&TyBrDSJTlu2iU$Tv@2^!r@GF?u6bs#c2np(^vs*=vveBF3V5dS0WOY~v+Gmn zFq$D}itZBWYX7&tZP8S!jiNtJW4Q%%2Qe{W1Ey0H8?u2GkqTC|fzBa4S@4szduR6{ zMC0vW5bog1j{{+jU=yFjSrleVEu{Sk{WqPhv(PB|Z93a+q3_}3p1P5KMi$$;Jw=lU z>1)f{ght^aQBp*^(`ysidqtSQBW&|G)Bh6kHlxqLypi>L22*I>1k@GP?^A0}zW20y z`{%Y+o5IY`V9?{(7LI3F#WOUQ9AbXOG%R?}cubm;!qT6@F<4kHtisl3`E(WDVUvpC zzLc#i#zbAq%8O}C_nAuWd}QI9_gdja91#?HM=4}tfAc~ES*R6-y0T;|ji$}1%xt9* zT^my6s@zI?YC0-aT~7eYH4zNoi)YX z+vXL`4OT2`DV|tnyRlDRq$}x}jV$IRI-`THd=s`@Xx_x0e~B{smBrTQWg02Oc@(15 zrfcpockFX@7`4sS7=r_+!!>!MQOon|xzCgKRoqmPxDz_mt*p45_C+UrSWcIb_AGoC zok%}@g00#`lZRTL;6;S7Yvr-;&0!UcYvj~=#rB9|8?M;;Dz+8Ou?ur*0rPx~b`8x` za=xJCT&v`Ctd_luXUVT&;TymcZqxjj){d@tD`(cCMrapz+S_>L2ZKg8&@pFp%c~AAjroV$AUTG~H zs{~P^7Jl4WI7BJDiWkml8-(>}Yfn7i>Zd^QV^RI|box;mnYfty>E;aLHy%W6YhgE~ za1XWc4|pgdkL9(ye6A#R;Dx`1_@F259%&6?Y^xu&C%9+c6Qa|P+7lt%&sNnBTk|f0 zxW3{+H>y2x2?{Sf!C6@Ci5lqkv2BA`(k2Mj>ZeK$I&QP-N9**nTWQQv?&m%(4f4cn zw+BHOTMH*Eh5M_8KSn;eC;BRd{dwVoYGHX|Ui_rBCvsZ-D03(-L-n)D=|^c~VgmQG z%o)TBJP7aB!snGBTFgpM^l=teT9)`LbbGJ1L8P_`!Un54F=s1&-cbGgf(O!aW0XcF zmU2HoLX>-=*IooMyR~pbqr6UxR|~)FEPO`R69@9bFQ|p(p7^M$wI_;N{U~!NZl&sH zs?(3s$izpupGnRj4)P!dv=+`&S`exh?&vJ6v@B8Jh1<0aBC1UgUoU^q6U|CvjzQsb z>o`?=LTO~;+tBStAj&;4_B{kq&|0`iDg2mP7*{T(8*`POn8FLMQ47mG@#4p=J+Zgd zk2*15R{ace`cWt5Chn)dGl*|_5OZ1!s}pmATKG?XRbj8igblnfqwX$RujaB3_tTZ35j>;wZWcSg62Goc ztR{Ed*7~vJ19VZ)u3VmlzaQb|myuG;|FP8^peqS^lMOjY`_kHVY~exNomH@{2k8cS zVTsMlMqeeN=}VLW7z(zj2@kps`X#bchv?%$rx&YZ1gbU3=8tS?AJHzH}NxC;UEdCwu(}9ZBZ1Uyjgp?DgV~(scUS zd{%svcE?@sJ4b2Pp=`eFr(z!W^He!M;jO|Svt+Lp#a5-*>J;0zitRCWAI0(PB)FPR zBU)yzrakDd*=&0?ZUzpsU#jUVw0S;z>KN@oeAyevXo{{d`$0GHml^r2rvg7_vnij_GTmeREr&XM=<-L|-=ESX-HTk6bIX~xveCzB8J_B%KTc0{ zSv8O1`Lz0oLmu@dY)=gx&?Oy)6sxw)LyjbNy@tN(oi$gjM1CGJoxOa54)?h;=b<|O zoWp)ULG!w#b6Ir)=V-w=wyc(xcu(a99;xgkmARj!w|%~xB|E_z3OUf4S*+73ItF*R z8K-EX?gwstP~_Y!w(ArSmf$iYKmRNd z((!r*epBGsCZw??pV1Amy}0&Zvg?t;WKStUlTCPcmaOfXV(o&6!(dRJ{RGUU%oI$6 z*r3nxkmqMq)f&%*O!ma*G*b83Luz#<``~jLH!#Af$~_#0)c>`rZZIfS`P+id&=>)a zC?}kw5qMC(;vDTYro&WJc~a<+-cx?Tg<1EqNuG80rodnoK2cIPmDEp4>Y9=wD1@8D zU#752@JMT>Fzr_~itJ+jzM^4di*4dpbTA?DtmtbzjqzsZzs7u@%I~B zF2)msHQ%AKr&;-TG=a=um%pRmkq+#`3$$(w8pXqs93se;rR} zw5F{Skxp(+&*bUY)^rq4hqtEh^76i|>C-&zrl!MD;fq|jb^SqwOL)4WH9eFSU8ED} zuW9VuMLH85(C2$B4rAB`fZmb|GJ^y&n54ea*S1bHkLO_KXNg~KYmohGL~nZUw- zpo8!LAoB-!n84oQaAVCs&|cks9WNIgt`rPW3Vt|2E?767884xdW8>LuaA>8Hcde2) zQ^~td$-7Ijl_<7c#kNqfJ;&a^gc?UNav6`1da#!+V_3pi4aY2Y9q{iwP7b4&QoOxV zyqxv>k@lm_iMH84(hfBAPAb(L#${AR7k)|#!VUKAwwX8R3M~fk^S|kIzdnQU_9S1YyxDmhn;tC9UD@D&u$;HE&HRT3 zk>0}9sc6XIPKfJjE#Ccw{hlHvVM2yVBeVodCUK`XWMz3S1&_*-(+iHphVAKpQ4jf$?Q5j9^cxSh?k??9m^3XZBgy*B zw5h4q<`nBc*jWW)SE`H{e@7nQflq`J-Ul^F-mjlnIfrW*(7X?h(Hw4v`x@`pKV3OD z!P~p&NhA_<-bDv-bxd&cE?S3sxrBD!Maj64P4Mt8n#j|gyo>Ov2m_Y*-&Nt7Bl$|k#e%BIHlsb1D`4)3Rb^^SK3}`1u%m3Vx z-v;gZyhZ+{g&HV_J(1^#7k==-KHxXarHR8=@(zWTirw#fpSDP~8uzpkvpcStDJ2`+ z?VqEUCvLujK-`(vY7$Twl2W=J)7tMGdLYeu-+mhB-PMK`-h)Q&@NG2E9=@?f`tw_P z0e_LFeUZK@zbFi|pe~+oBiEZP(0%0YmvtW41w72L#JBg}{9l}-T=*BlVcsGnjts@E zpvL|yW(|BSTk#%+C0P%GzmG1SxVeD`pBKuW^P~Ywyr1SXO>IL98lPsp zZomBZjQ2Bs2WN&n1IqegsVR9}o&mnc zTiCn5lb-E6C849Ng)B>=;f24TuzhYJ%9X~An}&w8jy2u`jya8XWGex_Jxr0id9}Yk*}}3V+H*+~PgOlB z2k}P6LqXWzIE4_(%?p zbG7Nn!C!f}+s`0dN(qjxo>u}J&I=!edUdEGJhIFgY26XIv-oA^pyFqQ(>5mNFZ({2 z4`Zq>glp%FxR0%++_Dq)O_-PRR6W9{DMb4UWfJpC;$Rpp@q%|zZ~5Yr_}fxvrL%dZ zd=QS;Y6RZ$F%E1#amM+4NxBuT8G&eT79fjq=B+`erCD)GKJIRR3@w5jh!b+2EMK?J zfOPd2`Ke0c;}5F1@`)07o4EV8#=RfmBHGr_?Yj^^1}J)Icn|0LP-A}uPMmSJbB%MB zEfH}JY>m@~j^jb%SMlucevP1pC>7fKE4A5sfvr{Y-on)s3(<+I?_&wgDa+~ayrwWS z(GCy035V#&G^>+1mBKwSJyHVd<_6N}>_L)}2mjj$m3E|1spD|kY z*KrlL#3Q8Rc^~8S*^a(RvEHzUe8#3wZ9=;d2?+lqww-E6(+C5*NVQ>w4Lr|D;cb9_ za;(BjTqzY+pXJkDupq@(rW9*NxT99^jmCQ@ygK6V+0>V96q2_;7fuTIqI$}1um^k; z1-+w$TTpPZ(oCD0Vr@|_q!{=@cl+>d=;@O94T1a@FH@{P&YE*I3etm%Y*GfUywfm1 zqu~gJZ_8`A{hPylI`~~@?`ySwH1Hg&)oLfU|7aLm7Q2oGyJ^=IULC?Wk$&`X-j2kV zm&gsY;vM!!P2N#nC2XLe?a`wcveIp(DRt(sn8Aff|wfdkD3{Cj3M!c=P%2knDl(9Fhe% z4n*|`b6;=g>%?bqL@`M3f+?j*bugZPOc`i6Pec(IyU86WNHFAB{i*@n&k4skOND5@ ztXPH5*|2unUL(@B^1jWF|dGj1*4Y9~I)bLgS*E7CT0t)2F*UPCe1_5-VNG5%h@7)SB+Zk~Qc zP6zSycH2kowHbtt{15Z?&_?_G^Yne}7rl$##p#J(bcr*!%?<8d}6o>$Hevh@?}Yai`kpPo-D?*7C&4|lN* zEV#3Fl$SAs`;&OT35VH|&f31Tx5dUfYyY4TAFB~eRjvqqF}0M<;m;Mk!6(si`6Jnp z?%J+&cnv%5r=3gQWj*}01KZ^ztNkDLh`%;UpURJGa`>qqw>JU7ogBx{H(u+Qm~(+bMEp|TO@D2m{~$HWcX7U@maI`)u+E-?1PA_BFg&=JRb+2Z3g0zp~cg!9M z)<*dceUS6U>&~2;hq1Yl+O8zU_F=HLMoUJsC%S3zezuT>g=vTBzQ)}lpPgN>D?~3h zuq9#INnXE>ebCA8?BSgp%C3Z=MJH`{!nCiG@Yh!5d3{ z9%4UqM?Z^fSPyMXyKLmNUt%kIXrtN<d8zwL{z z2%l<;j^-=Jh(*lOM|+H{w~gwH^`I~+6-(qv;W~POe{lFU4*7CcD>Q5Ps(ezo3(7`* zp*++XYfY`7BW*LIBM)q1Ej$3ghc@jSH`hZ`?dK30;e{E3A5Y=R9HAO+HPfE#$_TAr=M?;EwL24cTAphW^d84HV zVtGn_$P*>JjYdQK4F2KdT>xPeabH$psUqGvFM0B-?OG+7!luP&qXOUK1y2ehM83aJ zHxFL8aKvc4N99894D%9@e{fy@TkhT;@RK+C0?0qgzM^as_kb>|6)vk8z6a&m7A2H4 z%T-yR;H*Z&XY!+mHyw+RM{RRQ)q}h00imbk5N&p#H1=j)d&`@{A}(5m6C=ZYdE1Y* z;5U5uJ`*{Daq}!k)~OOIg0I4e)CvpPTLZO&f(N4@Z!`2EIII;+_{keJk=+`ojfmhq ztei%ta72-9Ta(;^UL%xItQC5XU?T=;drZuQ;o*jihobDBtilWOP>tmqwBrZ>!8X7H zVm-lO6~0K6Q*V7G?}je0y@Rx|T|Uo}cSCJU>7+w^NMlYPZikaSMmoZW(=PFn zrK|cL#d)N$#~@XL1ovytV5bLby9Ff{tT(WS=)4IBC(%ta7s;7E zYDA_R_Vr52Ca3sy=P^atuL?DC{*pn-aB{-F0Y>bGlC9d`?JL=zL$GMXEMjxw5$i@< zLA-W_mJY~bH->A2^*s^Ute87;d#|?3ay|sZJx5bXq29ioMI~rMJ^bZd($!^ba)LIz z(4$|tvZMb~aZachu}?T2{L9Pe+1 zYjJ#wEnEgLwZ4#3iQaI7iHU_i=@561*;d0#mI`O@NQJmT6kbC{jRyN_@8#!^6k+9q zi;M@9jBg-F7!J$%#VYJ)&nIeocKsdM)yst6ESUJx2B4N*tS(X8bylU4U+JxI zC4gPf_$`ZEuvYj)&VpuuddSYco%1(Agywq2j$NcZI-ofJ;}<6JGhRzR&4UV=bj@Q#(cT)yo1C|9Lqt8izKyv~nfYes5& z6uO~=bIHj#=!rD^R^D#9v7q1%I{kw%@6;>Zy_@B0{It} zZ`*>Isv{?zHrKRM|KCvdff->dNYfTA8EW>rFPZSo!uOEpeaQ$`b-6F?#CH$A4V~{x zTfoMs`_ct`?f3@bd&)NSpmtVpq35dmQeS)%@STmXGhKk=ki7d+^6LNDHy3#?{V(#T z!SC$V_Y0+595k%FFD<~m9seF(cVD{o#C_=i$d6sWvC#hizD_^?FDgE8EByb;=(M|5 z$^+xJ+^6nK8SumTzy21sDb&}3F2}b9&UWIvW#fG*4_{w=tDp~ub_qAq&PqIyo{jRp z_+CSvJ;>95Z!9khCP3$3Xa2VAi#*G+mo9v!>?^IU>?=2uDJkpK7HJ8-7WG>Ra*cm| zceO}+-T-&ENVmY9NH2J;MLK}=cBGq;r@_{}r?8wxRPS$*>hP_{*MYC*K#QcqSC6j& z-*RY`whtqO1%wUkEf{rE^RidwX>#*S*(5Sk=2&j%KPS>O)P4DJET!D>*`u1Pu%8bCW(2DH?4tOa>ibCaCvlk}RB_ zP0~)#s6$|&&Ib(&EJWm;o1_F>wX6M5F=+5dMxG9AlA6K#AoNfWS{e+8pc%{s%eyv7 zRbXW(0uM%hFdwV~w}ACvIp_cnfSPVi(kajo)+B|aM=hYS5C;w%Nuo|ob^*x%TYhWGNm*0Z+gafb|%ms}R$PZe;I1Lq-&j5P%LIyAvtOI9*y4g70Kohu!+rjhP4mNYn zL5q8%qPYkNESm>ASee}<>9LE{J&KA!J!k<<;C8UE5(kwys0M352Y3P0Ex=HKdQcOE z7K6T^8H@zW7vih|%gmVVU>&#{bgXES99+-CB#j2wqK834J}Lyu!3wY*tc%9^Zzw>7 zeNga8Lozq>@u0p4T?tlh#vA}m&!DBC#)?4u!SS;QjB^Xd z9JFjjV4&_fR0wLyFe&?^r@-+3g>bkHvzH6o(G#ErtOGUwK}$db=!uok3`T;LU@oY6 z0WIe`SPnYCLtJNApg;@Q%+otCDREn30b{|sm#~8J^vmdpLN4sY*n`!tAhH+)vI~)e zhSxD$c^Y&dhyq|ZSO&&}^}De`a=w8{3Rb^`(`yjUh6QFW64b;aJLn76)!_V(#6dlT1keGRI8R_~K~pW3OfU<)1e!qy zSPg~@g?_S0N&)M^EKqj}6>}Xd<~mponoeUu0?pth&;mNZveTGkZo|-02!UYzXE@zJ z{pWB1n!y9y4qgHsXK`^EjsWU#wt)I`7-LX(9t}u9e$WK!zQr5?E5CyuFzX_E6s-FJ zL(O>!*OWvAR`?S#;=p(X=QUX0fQ1IE`yCaHK%`eOR-oxR0szbZMi-C7ko|*}gITw+ zaDkQWo24?a8r;q4-Yi`J%^jMha3cZ-ji9Duvy=hqz{Oyp(X&}PfP+f#JZSQ2mh7OW zQ?nG91a?72(BzAJJnh#k)q^_l7O3|}1*6b_fM%%x)P*!lr$7tX4C+IhCEaKQ0)~Ue zFa!WrgNsMw{MYDF5JG*=W~l;nfK{L=yjiLP^%2cdNHSUs8bBkM0%r9_3&BdT8Pr5J zOZqVg0E`9oUe#U^%#R4C=4MK_!IhsAj1KtOGBA^`HZEfNo<^FuGZa z1nc`WO9^0BKePa>?2iV31_K(v(_j^-i))tL$02~BXfbF37lUP>1uO@*7vi822Nhs7 zSOsc^HA@Yk4r~OCpl1pSf{|b~Xax0%%~B?40CPbjXaP;&b}$R90L@?(XaVcMGOz(G z2MZf

BQ2R5%9pU>z6>>P9q63qU=X4`zX7pc&i^)`9h4J$MT=j>Hg+M+IOms4*e{ z(2#^41+zw>M<&4E=w`_TnnyPmO8Gd@B_l$xats1VLxEI`8K_Ugkbq|J8dwMVPJ})Y zL%=x+V+qzz#^eR-rb3^D05Y4UEnwE1X6X`7&&3>?j0VnwUr>)<#Hj`?^9wO6P3Ve8 z(NeH_0a^y?au8`c94tahK+WQ2=@4jMg1ImSf#yO79m`QMs4?TL0gd_1l4dIWfxciR z7ztK`Mz9Xd05$6{7eGTH4hnE!2FrK`a5rdt0u_Q5unsI+j|#XQ)MX&Rf@UcmG=W*5 z1uO=u!9$>a1BM370^O$}5YPZRz)aBaB<2cOXvRSW&j8l(44`H@j|>GsGnfgMTX2?u zm0%564PF52z-wSVsF{KCpf9M|h?avoFagwqCeQ#b0F7Y&44nTa9BhG*1(t(m@Bml` z+QE9T8FYZUO!UN4%~CR`D?*Qf7VrRA4%UID%^0GY2;gb-5a=jH&wz%lXaHCbUgCNg z0(^w8KhHNyMUS9m;0~}JtOgA)U^32vLogDw?7-v!t6zj2tOL)3`j@ayfTnVc@oeb3 z&>+zG8is;%Hv*ai9gOFE6ZL^vZ^2%OgEAb{gZg)xrM`1f!MkV~=m2+vb?>38K}{tl z>pXBDRx;510RjOX`_VI5&}~@pKqF`ds}IA@^^XxKXsSl}Z1@9bgIULL{%^;D83z?$ zIamccKs!%=iqmF33LeMUft6=5L}2xKv=}sh1BZ{Ig6~lwSbhZ+g7v?k=N6#c?+6Ig z{DB1tG&->GfOUUkZY>1w;{3PZz}$qEf)?-)H?+siF<1{afLZP>Qg{yXf$^XPOasfn zEU+BR11rH|&;eG029Fl$0@p#eMbN>%pt(bflnK^(;`vxP4)k6vQZ;A*&x0257FY(l zFGdAm2x#z0tQXt2pF`0=fSLA$p1JRFa$jU8o@l!G7N!$ zy5VR@E_5&itOql}!ZKrvRDlCS5}uQSj`8T?r5Ljb=wi@32M$3Cmi zKnGYpzeP$|4*R1mQW0oc&?21yv%q?;gN}Ddbbtw z%mNF*GH@qY4OW2;@DgZVjvfLHD_f*O&((cCu34_ZJ2xE(Zt z6`%>M0<*w6uncSf%fUvl+R`FLu0eyq1h5`7fevs1Xnv{%=RXcCPr)(gCd_KkScJ0x z%mRJaLI?YTWuOr>K8*lDO>v8~1=LwFXTb7j5dc^THiFflE*}Aa;h_0BOm0wDh6aK4 zFCkJp7ygSbUx${0J3s@t2Q4w5~l?YD#6)cHE0GM;0_S~0mB$!6QO}O*gIo|{`jLD7suk4 zA?g_!Cj>+tx^Yj^qZ{}~hcBkJrUsfj7x3X)5x&(dX`Ij{u?nULuH(Z^d+@ygEeqry zu2th3?zkuQ1o)SNz$fy{I^7Cvt>yb8;u$yiV@&?_cPNMst8&=H@g1 z7qbcG2IiF_1Qa&I?8{5z!|N=7$^GWTS{XE77mfeDBE5@t2wLAZ8uxn!T0Ar#UI8LZ zQzLAEZoGMqy`CcY(fFI}aEdU{Z#yz};u-PbO-iO19!65p%R5+9D%xDY#-s{E@Fy%b zqzZim_q+Eb{G+xEA&{L&6~buWd+fJVVT3lJA&Mi!>pa#=EgUz@RPmdr~Bi488Rz zdMgBnS?x5MJQg}p2=l9PYm#EndHlnp*$$I~rB4*P_+1ll2Q3?vxl#p_ovoWFbQSux zYm(k(8&d^ewij9Z8GgSfh4HKtI_bEV!1fx=PUPvwHB`(4=nL%-v}#_i%L|hPUm>l1 zleB`JGofo@CJBS03f!BdfxHMl+)WjVR6v_0D{ukULA%9DCkgoLjqH<2!eoq|*JNQN zFmbXl!LPAXlXO|lp8`5?#?-LA+!T+;!C0l`4>y@SG@9Ma%LLQnfF`L!8&f4r3)oU_ zIu+O?^;S*spbq&O*jbY>JlY=ABt@$x9&Z**Zoy5`P*sZs^Pm}m*}!yRFll5<(uK)E zr$U>gZafQmW~MrUeLJFQ>|DAK(BBTTXPY50!qm{MNt&X1C(cVo*c@K2m# zreHRs2c`()XhH;gVT#a;#`b1MrU--mclO2uMzt(I4bnU@K#{D&RH0XtCb~&NQ{@kD zK{0I2QLP$p!A@w6Z01y)C}y^8Dkl9-b^?gHfWoOtS$VijUO2J)wDxg6Yzv@SSoaKJ zJ-NkR$q?rG9l*0`oQU#=SDArRw37Ku6S{<+fr(EQO;RV_CYpn;QD$BdvedJrX=vju zHfNg9J2V8(wXr2pbJE9o)<7g1kkia|A*X-CfF`Lw&w>x{GGA}}FtD$t3BxdRyr#<& zC~>+l-0#r9CTSGUh7Vt4>W~vtY`PFYa@iZxg;{)2o*{H0mssKqp{HO$*ths$Z|WJx zM$8a;w5x*@9>=!MK))v_nxMxbmBB9aY`LmrhE&A*WkTAiO4X1KunmyN8TLk|Fx4-A zaFet|4o0KN1x=l?PBX8W!gBnPs|_=S3HbY$r-7)Q!&(Q5_hfDtJduPpfERwOla6R>4rBcC$p+ufEEI+?Vw$Q76=VXg8boSdEfa$ z8?H#QKVN7@X!yq$?7K$Y*re@3IO{Y^=oQ>NRz2q@chb$mF!B?#45h-y zu}QOp@j~OcCP`G5&ktt_VZ!Y3O;QuPyi5qe-{8bjq{oYZ7nP+bYBpA_?MU+*7yjY1 zeY>B$pv@L~3+{MFU}D{05qhxy&K9BscRc#XpADOg^o`jl@C%h;7ULKs9cR~St_XR@(#adzV$=g!4dq;Xc0^qsP(otTS& zcg|^&{!y+fWFAUovF`Kmr&iCii2#kyW>3r$M)=#aTbI5x)U69bXU=C|%o8S&-7GXq z7>-e&nFW6p3-Jt@oqJyB!pgD)cj}(QUdj@JLql?~lJn^0lV?_kPVPw^`3&$4=GT{V zSwdIZ^E|tr#b;;^^UoH#jmkxl$9NGeMCfu2f46lC8n({zQcjn5a_1wv8@gdp>tyQ- z?GUuSi`bfMY+VZ28`(lw&?RKS#zv!|YdY~_{H)V=g?Dy28}Vndp!w*^I+i{ksRmX$ zAKg&FKAJBqLRWTwR9HVI7OxnvzRMpT`z>6p4A2s|lH5tZQf`$pRdt~_y}Ibl!qwKTxOJt0QN!PaVQd!Rw`OzM?M1>kQo|A# z3*&?kEBC+c1)L>&7h}oMmo!N}Ed41=)qfWY5m*L8mk6_H{1*1a5+OJ-7jHzyz@KJ? za{ay50~bzce97Y<`SirTZ?}tv-zV0TvvW&u-t25+;^$xjOgq@!B?vx^jd=`1Wnn8G zL&k#AR=<(R$X}x6vln>|To-^O9p1~dod>-3G@Oh1&?9inKU~X#wjJ7NSwU}rdC)K( zj|%}b{y8@OaiJUL{gTIpu8CXlmd82Py!0jHEQThx4QWmXw4yfojL_UrrG*`PTo{dc zD&!)}G8V&efX&Gjdbg{>+oCkeMl2Azvv+faB#hNxxk4ejc1Kb~(Xp9n+C-xbl!k|8kS` z2Di!Qr*;#!CgU>B&ywx1SF-eF%6YL2eZGTTL`t}{tL>DE6t=wHByD3G3o#GYFULHn zXSy%+&aM!;MpfWFO4}=e5tonMZ8Sc2GN6?+ zpOtcCb5>&FpT}F4ZHjw&7k3^xve>qj2(F$TTZvs<8S`0%{M*@_RYD*Cz^|Jm>>T6| zUv28~1Hb0~>ME=@x7gWLIKit}L>>wl*@`^Ab;N5JX9c`b&HZrW@x6LhAkCfdcY|m} zo-n|#;Rkh!av9$Ym`u!PH7@c6EMm3LC(2OYBw=*q56@A79DSkjWrlxvJFB4OvvsS5 z3H_R3a&`-!$04`~H@4AukuCVfLU*v6tA*!qK5bls6MqkT1BkltbE^YhpWcA0zKbTm zV`Mki;4Jj~r8PURZ#J^KvyE$oF4OXGsA*&7-io0$yLj6Ptr1$=y=En}TW!j6*EP@_ z+;xDT9VX``Uk{T5CR`KOq8VB294f~W@atNfTMp)vFLa@O?W|Y65RIm$BPm?NE3bKM zLk?ez^M&4Cybt+nP|fwW`hY@Tyb5dEnHd8yN^LZhkVh>Sx_cX42i*eA4O%Cj2_LR) zho)(xVU^HSKx@9)Bn`qbKP8{0Nu2^WX~%cc&tdD=2|i&4O}Q`~a?vc% z4!CIBp<&hFF7~*Xs$i;c(dwY>cF`K3m9t%N5w+9BV%_2KEX}f;--KPGafnaW~Vr zUI-CFkY1>yV+({3{DFw{0xTCMwo$>p0^IAI`j;(xQt0Mk#5>!v-O$-I-==KGmhZ&y!f{GuYB6vGFco|KT{mJ^_SFQj>I(ZCi#}`qyHi z1M66bg%;P0LSX`RqwL8-A*bCI0k0<9ShsCLPv&L8RixPiFHhXq*5|MEC&Jwys%vgkRBnu>l)}p+crl+jNWv-}30NmCj&iHwq(Z zY!}w)DPaWuD$%~Dgjpf=@-Xnd20b3{XPs9*u4zW#Y75Od zv-vdeg=S&ritq?4AEvhVmPVNJpc!~ke7K7YXju6-^C=9Iynj_q1u$KJHjU@ShiB*S z%fox&1)Z!Y6K^*(3(MY&^Q;0UqTV_49Q-^#4|6%&wi)Alh@+gMmGf+ef-N2t?S;r@_R|wW z1S@|=aM#+MsXC-^Vqtic9ckye#G6@(JPj^d4K!Sd zi_ue;Tuj$sy5OQ|Mxp60nlCgwW8f~%xR?@PI_097pw+l&3!q`IZpC_01(O!R@(&Ms z3rvTgIfvW;tsEM*Syt?y>)AGx^5d~PccnZB|3!ie>?58dnf+zOM9pVIpT+g0hRt~v zw=Adnu=k!7qCI$C2R4eyZ11zkTg|RKi%mloiz$(ZXJ!fRyqaSXk#axxZV6_7H9J=# z%<|tpq*>a8;{3yBM9~-o9M48=!JSZGJbP@5Fuq&J@Mftq&meEk_)|sPc;M?h7K`3+ z_SF_)pb(OX_nqwKa_qhOlnRM{jYvD2!Y>BZ$a{-zD8)@_R zLKJmRX4kDk6zj58=uQ*Hu)$m9D`WOntShnO*#9Z)+QXx&uKk&b`;ds@1c_l%AtyXa z!ZW-H0!}m+5(qM(NCQ$b0rZ1=?QLkih_;jo((jX2Apv9&L>-i;q7C&i1c6L2KzLY# zw-wRaJM?13mP(?iL_%|a>zuVq=KOQdA6aX!wf5R;?Y;K%oXmc0E!JAtSt5z57_tst zMyPxp2Bh6Z?Hx~3>%-7?eJ%Dd`_>^kFHLL59>(4gTw4cgvhm_P8&>ecmh;>E0-9b0 zHJH4sp!5&)E`WNnq`hOIvm<)03fl6kxrmwV9skAqnLf0xTIG1qB-Plf)lw^Sn`SfD zUUlBRUgg|zbxwN+I*0uf<8N#lYIZLDa=p6G+pmm%zg~?|595V=m9sDJwSf;Bk?uU5 zZbU}(oDKG|%7YuQ6~=7IO-%x)CKbEpLUj~U4ynFrjn5zJj4&~Jlsi6EVYEW7uM6gt`A0PfU+PN!{JM9u!dZEsN ze+jIMv}X$fe-VAMMJ>ekC;wS>yZP{|cn5CM;jNgnS3HYD`#<6Bx?at42X4psjKF^u z!_I^^=!0i570jaR&!T%~*U{9isFf${+W&RnI}SNwn4GrLimlkU6;j<+H6yL*6yDf_ z!w+|j&}?4&^m-1l^#=X;Id$(H#(NkWY`(KPO8y~s3-8gf=Ws3=CeQPbj8n<;IBUR* z8BW#G`RCQ`1NVN?-m$~bBQR!+kSSGcu!JK;}qWa)} z?LUp+2;~9|*`}rp`Nfq)hfdGMW~~#AOW`5p0_Zq0-i9Fr+h_pqxUXsai)!GI_OBB) z9DD#{Q70N};10;2inLJmi#XLy{)P@9tAD~bH$p1}kqPtA*r3gJMyAY{)I{&7t2F;5 zoNpA+ikGlEpGD6xSVV^yJc3_E2Utzl8Em9p+W~Np%K%g3cASs=$?cjWDOWUa14%?O?J5a(bn$7@kKo~rN z-&Y4%O|S02_}OnKmbmd9(7d;edPDQ3oxo4Gu`?NDapF&s2yo((Bto2Mw-a~Z*Vt8Z zuUo!rcizX~t&#VBr{8n4UnsL%WG6O|cV4HrcB(!(yYYF4j!qWI4IwgIv;xo~>8oJYYhSQlvGZVcJ`X~}MNmw&>o*E`a| z;bYtBXhiN7#sZ!Q5A9azLyE!Hb;Yc~U=@P)nuq0_Cl{aq^f-C;V4!@MM(@FztCZ#- zmG(yWLaF^ zLyCvuqX}sW_PZUd(vjCYrm*-!-F&lARqS_<2f2~YyrM>?9|T(pwNHrVfwh0+b!QzP z*o$?1lTKA2g=NuWd)17b(rGs;h>f)#!sG~=DK*TrQJ@8>buR|Q;^G_P{lJ-eRHDk^_nWv*N? zB?)>^fdYRcaJ|4S0(T31P2igX4+=ak@MD3W3;b4~S?H9LDzK*mR~mhUFi_w~fp-ba z7g!{4hQRv;J|OTRfj<`bsK6%#J|%FIz=#cL@*ArA$~T2}NZ?U{?+QFC@VvlF0>2V? zP2f#Mj+3_vyhC7?z(E2>3;Z_+t~6!|VS&J(3#=CSiojz6&kFosfnNyxPGHxmjv*NW z2MHW5Ff!fYhiypDzp1*85RxU(nBj;-f(|rF9JuyP2R`#=(uOmhw7G$|oU|n{BDWSB z?>Y2<+#eo!$4N)_J23vP1MTR;pNOR6!jJ8z@o%Xy)by50?OC5Fn=5IHYTi=A{5}`k zc-s+Ilo!SIF3C}Bca}$0fI^HlN7Xp0jVg<>_XA7b4=l`Bh_MeD+s{~T9WY;=vIYg~ z5{nPG(z%kh>bOe!Q@Bp$Qt|<0Z$FrnOf7XNHFQ8tpn?OK@b)vdl`-Gjz^*X1n6cuw zfyEfx&REZbz}gwBI0#k2gRrTIX?qWXW*t)FHXQ{Mpl!!u4!+3?)P|)lJk=&t}JvD-eU&e#SO4 z=4$}f!q{TQ3LAjM7>h90^9Y;Wz-Au-EqDa9CdPI%X1xQm-vP252$eF{%vddB*^R(Z z_gPfg2*+&{b~sY35l$2yg`(VJ3U$v;L^v5fiW06e_90`z zW5Bj%Vn;n5zeYp5Ir-!Ib*7uJGsN|%| z%!*65iwV@-FeK?PRYPp$|0||@ueh&o8P~Up>s!S2t>OBXaJd!S(3gNG%T?9-+HcEA zuQc>c-(y5T-}7B8X??SInWXhy-j7IH-`-sBb~oD~UnUZ=5_>k(}@jRO@N<9go56z?-EM$-ME;j(bi0SuUA zbT&L6uEX*@dHUxbafrpyisTj#cJa!NC()y^$bk2Yq$u<$mK2O-O zVy94@?QNY+=(@CzgdV0!sPhD(H6LIvLKn{}U&<8U+q}oYdmu!j8M@ZIjSz zUFu#JddwyNp3oyg*Vg@A=wXLWV?S1@{*X(kFAjj%cD(EO*bb7%K32c=V6~j{iMs5K z&!mh$aG++p%u;OY~$w%{IN2WU96Em!Wxg>6td*tGkC z^5y+bXnI`Ns(vqYJ4lG%o^vkm9D75h!rYSBKh^9`BSbPyB@J9feej(}u)P-m0* zUmN)ZmHZVxZ4i_QSgh(w*N+JTLbWe4I> z@_vR`z)1QTw&=N3{u$g2%ktF{yT@SL$8FHl$jVdGKNosT$5q9b6FZ75*r=MI@DHOV>lKmla-CqgA(;O$(@qE%m@PUjSD@7j%^=TL+^R0smxLYbPb0okANWH9 zouakg?ordgc7mz$Tl*WP)T?OC zs*#QogoynV;{^vRi3wdRUkW10%k^gJI1vr%0^K>}M)0?C#k89R_wEReq;-rN)mXN|jR9HN-&h8V>UensW^! z2u?PyVR&h7r1!6>o!;0ndc0i?_3JIH)<0>aVWh(JT54#A73ihc)mi9hyRIIEj-~%Z zZRC=tLrwAfT&67_<7CC*T?evOP(ufVtKKXzyLkN8(L@V3j&p=7XsO4%%oCK?eAHhn zhb7vYAB=aTaKh*{r=X(plFVH&<9w1?=BdI>*5(Y4x4E9yD|4u~xsHw~bH2Bwp8A;P zP>7Y7=2?K8F6N`&=Hv8Y7n3X7pKPltPd0~nTaMHEWXJ}nA=!KsE2+E`P~(mC?JWp5fg5>XN4$Ek6Nc8f11!yfV0t8oib+t{Z z?h4Dp)Y{c?=N6=}*1yFZ>w%6lx0+|Y%_r&QZsyPoL-zK%F6JZ9xn){T(wE)X%{rQS z8@qj!R^4XK=UTZ9mV~J7HuJK-LgGDD&T8XRo!mb1q}mpgr^4SJbS@PYiYV%itP!f| zZkBmtN9eomTtGu~?(L@O0lmD3dDdU$a&B`_t1L-_t^l1#L-piR8v`qvbB9UnR71L% z?rlCoAEl%A(cOBQ=^6SQL;LpYS>oFfTGbQvR6+ZCLJ2+-0PwaPrS5)nEj--jM?pUF zXTXIBJ(huXjV-1xGf)jJ2cmtxXLj?#fZ@H&DgMx@#HM(8uG17%RNV_v5uhc#;kiYr znI@)YS*mDz&fq;3w_7gdXPQ&IElKq2Omniw7d?|{{*MP1?8}0AK{}s>%( zvWKGQb1}Y9;Rw^0vf-x=F+!dZu&08CkAQU+6>-X<#{j(X7`;5gobUG?PqgPBKXaPA zma;~g_5K#uh}!&!!;VnfNGS7B&L}90HPYNsXdi4EN7+sN`6$$Bkcvi|>%8&1=%dl* zGH+}(%^YKXfYBspEO))=nz3dk_o_YPkPJ~u9>;~t9RA-*?(JAd;1v6S@D_)88hV%QBi}R=XlY$g)bO3gYAG@kxjQi}p-H<|;Zj$t=rQE~{fb2mWN0 z<3PNgX5NiZj@8ksyUoKeH9vqDjvuGF0R&bI!*ak}>uqVI5&3q{FVBZ3x%5~*bl1`z z0KYzN)ZOzpzjAc@sFj6Lh4;XG1mitORnd}r5cCz4dM{D|%DLCP?2Y%Pi~>7uiwfX= zFuJF}{H@0uJ4tgVqx~$}HW_0{{3K;efl=`~S}+CDKK#olI=JDA%_p96iZ`eMY;XK1 zeKf^9?AM2$+R7bI%ODcnSIF~Jyn(z^F^m~hJr%wo_f(itMOo9(JQmeVvmHJ$4WScj zpt;57PI%^-4k`k9I(!LJ(R5q1VLIFmP|AHs07T-rFSu9lP#GbrIGJ4l&vDBHiIcsJ@ zH&$~qF~|gI&ksNh;(y_6!%JqtM{K8O*)4OzPDOL>M}5Gn$7b7pG|aY{=Vl{gEtUMx z+~v1iLt8xJlo_DZQug2g%`HW{1!x;5;|J((rS{xjJ_o(B`4p|6gBcOi>>Q{J(UQ3U z0Xjd|tcPXW9zdx<`uqX2j4nQaVdL5kM|lO6&x0k1y?N*<7A^Ua?Ly6uAdlJgNA|40 zbUs8XXw7`^B2+h@qlx@w5JC1bq|mNq5DC&bCzTgs3!7+F2nJWsi4fFaO;!$*P-o@H zf#zKR%OcdefX9?3>a!5Tg+*-(ZL^myg7Og6EkaMIbq#~DTF3NS@;t~>v@23y-{-Ka zqOA{_g@ft-_2xLrTW{WJ<_;Y(dQ4t)!+LYYuW<=!YOgNCQhEfOhVDT{y}FD|u_S5H a8cyo7+Yp`LWFg 3 - if $m3 { + if ($m1 < 2) + ($m1 > 3) { !set_r(!CELL_DEAD()) } } else { @@ -83,7 +81,7 @@ while 1 { $m7 = $m7 - 1 if $m7 <= 0 { - $m7 = 30 + $m7 = 1 $y = 0 while $y < !BOARD_HEIGHT() { diff --git a/data/progs/maze.lgt b/data/progs/maze.lgt index 34603c2..237f0c2 100644 --- a/data/progs/maze.lgt +++ b/data/progs/maze.lgt @@ -1,5 +1,5 @@ #push_pos { - $m1 = $x + $y * 256 * 256 + $m1 = ($y * 256 * 256) + $x !step_to_linear(0) !step_to_linear(!get_col() + 1) @@ -9,8 +9,8 @@ !step_to_linear(0) !set_col(!get_col() + 1) - $x = $m1 % 256 * 256 - $y = $m1 / 256 * 256 + $x = $m1 % (256 * 256) + $y = $m1 / (256 * 256) } #pop_pos { @@ -21,8 +21,8 @@ !step_to_linear(0) !set_col(!get_col() - 1) - $x = $m1 % 256 * 256 - $y = $m1 / 256 * 256 + $x = $m1 % (256 * 256) + $y = $m1 / (256 * 256) } #get_stack_height { @@ -67,15 +67,13 @@ while !get_stack_height() > 0 { $y = $y - 2 if $m1 { - $m8 = 100 + $m8 = 1 while $m8 { //Random direction $m7 = !random(4) - $m8 = $m8 - 1 // dx and dy - $m5 = 0 - $m6 = 0 + $m5 = $m6 = 0 if $m7 == 0 { $m6 = -2 @@ -117,5 +115,3 @@ while !get_stack_height() > 0 { } !render() } - -!say(8008135) diff --git a/src/lang/lexer.nim b/src/lang/lexer.nim index aa27709..fe5bc86 100644 --- a/src/lang/lexer.nim +++ b/src/lang/lexer.nim @@ -20,9 +20,9 @@ iterator Generate_tokens*(source: string): LightToken = if ch == '}': yield LightToken(kind: ltBlockEnd) if ch == '(': - yield LightToken(kind: ltParamStart) + yield LightToken(kind: ltLeftParen) if ch == ')': - yield LightToken(kind: ltParamEnd) + yield LightToken(kind: ltRightParen) if ch == ';': yield LightToken(kind: ltExprDelim) continue diff --git a/src/lang/parser.nim b/src/lang/parser.nim index c28d4e1..932e4b9 100644 --- a/src/lang/parser.nim +++ b/src/lang/parser.nim @@ -46,11 +46,11 @@ func NextExpr(parser: LightParser, prev: LightExpr, stop_at: set[LightTokenType] of ltNum: LightExpr(kind: leNumLit, value: curr.value) of ltVar: LightExpr(kind: leVar, var_name: curr.var_name) of ltFunc: - if parser.tokens.Current.kind != ltParamStart: + if parser.tokens.Current.kind != ltLeftParen: raise newException(ValueError, "Expected parameter list after function call") parser.tokens.Step() - let params = Parse_block(parser.tokens, ltParamDelim, ltParamEnd) + let params = Parse_block(parser.tokens, ltParamDelim, ltRightParen) LightExpr( kind: leFuncCall, @@ -69,6 +69,11 @@ func NextExpr(parser: LightParser, prev: LightExpr, stop_at: set[LightTokenType] right: next, operation: curr.operation ) + + elif curr.kind == ltLeftParen: + let next = parser.NextExpr(LightExpr(kind: leNull), {ltRightParen}) + parser.tokens.Step() + return parser.NextExpr(next, stop_at) elif curr.kind == ltEq: if prev.kind != leVar: diff --git a/src/lang/types/tokens.nim b/src/lang/types/tokens.nim index 8247db8..306f235 100644 --- a/src/lang/types/tokens.nim +++ b/src/lang/types/tokens.nim @@ -5,11 +5,11 @@ type ltNull, ltVar, ltNum, ltExprDelim, + ltLeftParen, ltRightParen, ltIf, ltElse, ltWhile, ltBlockStart, ltBlockEnd, ltBreak, ltFunc, - ltParamStart, ltParamEnd, ltParamDelim, ltFuncDef, ltOp, ltEq @@ -48,14 +48,14 @@ proc `$`*(token: LightToken): string = of ltEq: "EqualsToken" of ltNum: "NumberToken[" & $token.value & "]" of ltExprDelim: "ExprDelimToken" + of ltLeftParen: "LeftParenToken" + of ltRightParen: "RightParenToken" of ltIf: "IfToken" of ltWhile: "WhileToken" of ltBreak: "BreakToken" of ltBlockStart: "BlockStartToken" of ltBlockEnd: "BlockEndToken" of ltFunc: "FunctionToken[" & token.func_name & "]" - of ltParamStart: "ParamStartToken" - of ltParamEnd: "ParamEndToken" of ltParamDelim: "ParamDelimToken" of ltFuncDef: "FuncDefToken[" & token.func_name & "]" of ltOp: "OpeartionToken[" & $token.operation & "]" -- 2.25.1