From f6fe630f805a1f7f99916b30290235bc19dc5863 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 30 Jun 2020 16:16:08 -0500 Subject: [PATCH] Starting work on globals --- .vimspector.json | 2 +- include/onyxparser.h | 14 +++++++ onyx | Bin 207800 -> 209696 bytes progs/test.onyx | 2 + src/onyx.c | 17 ++++++++ src/onyxparser.c | 95 +++++++++++++++++++++++++++++++------------ src/onyxutils.c | 32 ++++++++++++++- 7 files changed, 135 insertions(+), 27 deletions(-) diff --git a/.vimspector.json b/.vimspector.json index 1ecdcd93..b101bde4 100644 --- a/.vimspector.json +++ b/.vimspector.json @@ -6,7 +6,7 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/onyx", - "args": ["progs/other.onyx", "progs/test.onyx"], + "args": ["-ast", "progs/other.onyx", "progs/test.onyx"], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], diff --git a/include/onyxparser.h b/include/onyxparser.h index 312b2d54..6f256564 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -18,6 +18,7 @@ typedef struct OnyxAstNodeWhile OnyxAstNodeWhile; typedef struct OnyxAstNodeParam OnyxAstNodeParam; typedef struct OnyxAstNodeFuncDef OnyxAstNodeFuncDef; typedef struct OnyxAstNodeForeign OnyxAstNodeForeign; +typedef struct OnyxAstNodeGlobal OnyxAstNodeGlobal; typedef struct OnyxAstNodeCall OnyxAstNodeCall; typedef struct OnyxAstNodeFile OnyxAstNodeFile; @@ -43,6 +44,7 @@ typedef enum OnyxAstNodeKind { ONYX_AST_NODE_KIND_BLOCK, ONYX_AST_NODE_KIND_SCOPE, ONYX_AST_NODE_KIND_LOCAL, + ONYX_AST_NODE_KIND_GLOBAL, ONYX_AST_NODE_KIND_SYMBOL, ONYX_AST_NODE_KIND_UNARY_OP, @@ -150,6 +152,7 @@ struct OnyxAstNodeNumLit { u32 flags; OnyxToken *token; OnyxTypeInfo *type; + u64 data; OnyxAstNode *next; union { i32 i; i64 l; f32 f; f64 d; } value; }; @@ -239,6 +242,16 @@ struct OnyxAstNodeForeign { OnyxAstNode *import; }; +struct OnyxAstNodeGlobal { + OnyxAstNodeKind kind; + u32 flags; + OnyxToken *token; + OnyxTypeInfo *type; + u64 data; + OnyxAstNode* next; + OnyxAstNode* initial_value; +}; + struct OnyxAstNodeCall { OnyxAstNodeKind kind; u32 flags; @@ -286,6 +299,7 @@ union OnyxAstNode { OnyxAstNodeBinOp as_binop; OnyxAstNodeUnaryOp as_unaryop; OnyxAstNodeForeign as_foreign; + OnyxAstNodeGlobal as_global; OnyxAstNodeIf as_if; OnyxAstNodeWhile as_while; OnyxAstNodeFile as_file; diff --git a/onyx b/onyx index 5315494571a3da2d56f489cedee4c57828380b97..b186232adac92ad907a8b23da4511e362ccbdb4d 100755 GIT binary patch delta 78350 zcmce9349dA^Y8R*c6YL5lO^{B*&IN^jdDZ|2}dL-N8}85kV6pUMnHuH140Nv;;4fd z4gmoL6^R^zAPRCQ3Mwj!0xD`aL{L;jVc)m9XJ#iW{@?%o-h2Q3d^%O#)m>G6cU8|! zc6=VT>W8o;nQ~#>vbyU+_eM$lx3}zzMy}q!iAe9?)JWDa^h6sGJ)w4HZ>3IX&3H5z zE^>%mi_|Q6WAwNKwSLR|#&-Sg-9tY*FtX3Kov7u2%wxX@p9>U6bwM4Wmk+~d2Ur)&ty&(eghdxO&Ldisf=^iVzh za!|TkPgkZ?t$THmuJ(GkyV6G7>1)pnk^ghHKK8AM&GPV~g7t2|2eYeAID>hmZUpQ+bzYSp^t zsULy5K&QqBQD0SA^*FY)BBA>B@GahFm}lLul9X5KZp1;G)GHP1QW=xqcu9RRt&#lK zi|UtYwd5HuRwY-wtrFkVeO2jrPV$a^< z19_!wR)SsS4=XC3YVb6Z=Py_5HJT=eFRxhJ=w+5VeFY>USMle0#m91s&%BX|(VbWP zWnS?gNUnTtU&W**Bbj{rJL;FWO_o2|SJD0U6HK<}s9DV#yTf?iqm;30k~*^49V}B_ z)vTlZ)HCW2&F(?uw&o4+x3Kv@{N3IBLHDKel2j5R=Pk`Ejrmq>(PE4{G{7PxL4CEw zOgBxhykgGu;du3q>{jlGK+0|L>YVJM?(jg${y6pL?1S<{t<)WNjJIm!i&dMpYzo1n zTh_Fur^KpH@$|zj^W~_PYEr8#s}}dgsQ0!S>^}EHK+~_)H(RZfU)-U7aAyrUPgRRr zXUM~Ms4uqe=|1#*AlsX2Xq#uZrphaQL5xx0NGs8D-#U+zZr#k<0oOMT?7hVGa^ z?i-=%w!2E@a}CtoP9tPzsJf|BP5DQq;z*~7O#b+FwQc8S@{W4yL!DEjyKF^WN>H8L zYZ#l?N~EG|)zpohE8Xq@yC{dc>h8mGo?RVt&k|qbyyBTBkoUwM(U=D-S62G{l#o}F zmx;mMc&9B;c0mZWRc<9O(2%DetQ^M+^sdY+Zm(1!^bQcfi8$tXxJpxFd9?Uo<>+lU zNg6NQ_`(1qx!K=HEzZ3xO6hty19~u_2d^YbU(PGe_aN`JlAMsDLvryugcs+B06^8= z*FbKpUb@HYtIks(Hv?kNeMk&>7NM7IY6=#Ft)EHK&hKQ9N}J69j!9hvQ2F2|yj{Rh zb1A&;dVA=Y}_qG}>Z zsgg@=*tJf(2~fW1TF4Yv(KY*&jB`VIUEE)Nih5lW^_mSF^;!r}Ipt$suS0w6ynPQ= z4*NlUrfbaz@2AuU``&7RS=MFNJb*t;!gcTU-AEGuv{f==Q z)hjxy^GwlsuK8Xh7>$=QwVRQ*ub!8hW$O)+nR^DbGc;0cQzHpQsmAEXV`v`bLYPRQ zm@i+U$T`}UfN(XaSmxAeJPMB2zcU2?vsa?2STT)D3W7c1mQi#dV8ZJfqp|{>VC0tq2R3%*jJA3nrE-L;BUjKx6 z{{+t-bPd!wx&uI}{5As-w6wu5xs}1M)P5F1FGMckoT1m%Z`J+X(&Ud))yi&n$b)C9 z>D@QTcg#{h=$@7|c>~y#+UMZ-fts$m&^525>ueNUu(O)#%D-KH`bD*E{&VtAAE;mD zXV}w_dx?5yvn17fZdNh&{P2Hdtx2`Gg zU8yeUSuFoLLw&hVsvNmeJ=Uj|I-r-AMXHbX>Mu7G>0MXwbZ_roY>7IwXO#L@p9uNY z<$7X>`cCh2a=&Su#q@HdHV=u4nD?amV4pkXHy`53C!a%d9rdZcQQ*9xZx7ie(z8VR zT?IYlu~R80j-yBWWU6Nin#%VrR}=dUlJnnHXY|{U`p!YKTPyQQ6pTz|r)8sPJ4tQd zzoq=)^Xjbr=@BzmQv-R>-n2p~>cqh{Wcy0>X#WB78wb?-1DeW32h_F$)8%KMSLYA7 zU5;O&zB!RfXe&cR_6~YlE2u;IV7!6n+#5s8;nzX4Q?rSd`?|5I74o< zPu({7e)+&VYRZte(yB$wKL9qxd-F=8=K%pHd)YgIeQMr2TMA!cXuVg54#VH5`(~v@ zM9fz(ld2R6-y0|*@2#k~Z>`OyOf68`-Cw(6_Q*A|eD)2s*64fXCW_kbfqL>&Z>TSf zUM7!n^4R-3)Nv2=MgA`86BE-a&Ofk%$)9gi7mm%7w{BC9k8OS%w9LSgT1Dj7+X5m# z0-nc?`OomCFO6vvQqlUs5lnX2D%OmPWAbkm>YL*S)q3T1wAxi($z~fXc&qIIsND97 z-+$zSbIFB}B^Q{QGc+y>t4d`^(KS?c6|z^6y9*_ZbJnXB6|*MnV{*eSYKKW(WMxZ5 z*`&ctUQ(c5nLO1t@usAXo{}#6rmKsmoR<5)sE(i7E3DmXk|gH*&tuf1Q`5rI%!Iec zs5hq0^v$`rgmf(4J>Bp37jK<{zj;MGB1O#Iiha9iH>F9ls-xSdZ#LLf8zV^va~Gkg zbRhfxl7E(b(jo!PAABWCtrMpYd) zxhCZVC7+} z6cp@Bd8!QbOMgL=W1MQV$_Zpd;1eoh?sidg_YN9@?gwA`4NsO4yER~{H{l`E7jtirU)=<7m4b1d}Y+|B4P1kv(Cj0hdY z<*Ch#D9Pr_ub!1u@tOL3|Dw^8*-+;~mC3|ei|#vi4V#o@yC70yLD~wEE=$y5629%=Qa;)Fw`ugoVgF4JMGwekMYwL1RLhb%gMi971__JprgJcad_hAE+eNdaKe8n zu*W|HPPzMEgw;XT3k}p`jT@@zzFIzv{`q z6zQGULBL9ZcOzUCcu&IT3%oDkj}Y!FwGW`kctI#6e3-yT5Z+hd4-kHjz{eBbR^Sr| zzg^%H39lpYNrWc}d@|t?0)L2bo4_9?-1i6Vfu;7D6uBVqIfS1U_&mZt5%>ba4+^}5 z@Ld95MEI)$FC~19z!wv)3H%AdODyR=f%|yj$s)3lGVz_i)Xwn%mh|oxyn_XAVZrNJ z@DvLkWx<^SFD6-kg|+G(BZYg&odiCE@Kyq!MtCEEPbEBE;JokS1kT4tHG%Un z9GkTWTLm_>Te~L-sat4Oa2Ifb3QhX`|MoUA2P2!7j{A5 zJkx1`k0QaJSkez#^6wHj=kuz-c`L55q-z4_JWB-5dHQ@Jaz6=}Y$4olDKNl-cemgj zEcsgqob#z?!BZ@Gq6E&Ba0+}ZA83Ek4ypJ3&jRPQ`A*=xRX!IuFZ{m1c@5qYI2T+Y z@R3xR^#bQ*pA$GQ`-H%G*&-&^e;%1;$u!1Nc!4t^ClpB_I7oKL5d0_W53sKEJj-6!z*RO9UeFC`pi z2k}%1Un%fs38zgS=_?7JPdL{97ZABH3#qRVG8M>nLdF8wOUN)FhY9HqAqhD3?R4;V zY1a7#(y~n-fXdEG)Z9gNS#@>7qG&e~jKe~$7b?mYDU7+*Wu>PQAZRCi%P7_C#%f-8 z(i#-LQCd;9cr%=n744VwA@FQj+tB(N=Te+|v1sN+#&3A;UWW3jD8KL-Uj8U@RW6)U z5%OFUC;31>#B{CV&)Nl7kD<(~ODg)VE@Zgw+_9zx{(iP51%H2E<8@^I5>Y+3Qr*0| zXT|un8(3X9-^B5<-5n&xUF!)*R`_IS*0qF7K7>4#T_37wx306y7FLvOIE5SFgX)-< zo|l&#P{TLYlqVce8*Uu!vL8VH;-i&aC#uhH+#+{=SM9y&9eLs;HR0ts@}-Gt`O7b` z`4#P7`I#xL#^OL&I^we0?WKf@9-9+b!d%FGQ^BJ?>=aN3U^f_kDii~yHxygG*xE9DxyE$ zF3YKT>IcU&wb4(TtG03_Wu`NelU{4Oj z*aCZm8Iu;+ZHQcGA+jQRp+wpHpXjmg!p&pg9)U%K|a` z0{h%REM$RwS|A244+LV6Feng%^n5c0#X2H#VZ5nlLz9++oT&o?QLu>)#2~^Mh(Y{y z%tF0kpxRG?7}P!!h&dP7KcQHu{oQ5ioXoXqk2)vvy+rS3f0OrDv8^nP+$j@sobubiJ#G488P zvfQIhMe^w+CO2!1v7Vt0I@3Zv(Mo;)8$4}sX16T0;;B!5(?VX;5~*L?_ut|7AJ&#I zJe%{*x3TivC)6*$O_WDHq5l5uw;@kuLteX~(dy;zqQeXD>`3K$2d`R}6>8+!Yw~?9 z)UfY!f-PJkbi7eG5?2f=I$1#|G;kQ>L0JkAK$K)SN`Vi z5+F?PQnBKkhsk@IsGHA!>ApKa(eAF$E*uDvpQv9k$Tx|^}=dl zK1x&UmEAMdl&g=+(=sd8U+u``CUq))`fZ3TpGjA{U7IXFm#*%+_P0DJO?~^%`m!$# zYfPN_<@Izm>-u>4sZ@2@^-ty9-inETxtRP~iaPV}XXJh<6)`vR>~ch+HbiD?LLNxq zZJ(-bl3AkG&c<5GSK_sqHg-5JVq5Oj|BFCQdsW!Wzh@CGD*cmXvs> zp1vrK7mMI>4>8EqJa*QJd9(sMtIg_ZK0C{2bF^c2cBh;it9cx(j(tA#SfW0$yPkHx zgVnyLRUK+a!{+wrzRbqPZZY`;$fdcnsXv?ZCJ)Lw-OQS&op7-1v{Sjf#9k_KcPC=r zn>r}k=%DM-+HFqOBdO&fE*K*jtKHtlc_qs^ic;ORl}^@5-Z@75%E|7EE2n$Tl6jmO z$h1|vLt)KXcWr{g64-EUp~CK9vbJAgjhI`zs<5<%tr{A&Xo_njzWbfqOJ+bx?gCNI zCT5PWKh-*hvfA!VbhoY7_bF`}Zj;$^?b%Sa+41zR@Kv19y1Ur0rX}<8pf=Xg=%O=h z?%pZ2^cFO|&}=lZY4cotLxWbwwO3uN%bjh&1&+3P(Nt}{Qg#|D)LeB(5pjx3jFD2l zNw$eHdA#jd8Sa*wJH%Dj@ZkAr_w)c2FoczKaM>Mm& zFJ~EI2Y#gWbu({`uXmtlV3?v)232C1Bpbt|emJICqub*;qh0deAz`?Wqj7?Gb|79z z@k}FbKc=^2i%PwO{j#3&%zEvrn>F-({w65JZ|4<%l2`m89)5d6%Av-82aVGGJ}hjD z_kmv8rUT*m`zf#ee&BhQ8@}CTas5gZvroRu<|6`ca^qrL0)AC?N9{s z%Ezl|=Ob83?P~obsa>DW#hpa|J^&Uw87s6lGL+H)(v_>q|)!&-pIpP zwQXKDfrWJH(!IU*U@FVdo=Ii(!rS-AZFi53L>L_J_xXEZ&F+U#h;To`ID|}uMhI;Xnj_qU&=J9x z==U!`C_`9-a3b07U#3ICjqniC9z+<9FaV)5LJx$DbieaX?h7R3fY1-&DNCjZ z9Y4V{2l7(7K{FWsCom$~BJ3)JaK_s5be67mmpv&HhEAG1V#t*76NZc(@z98|LxznX zH+jm?aZ`p&p7G#)j^*IEa4hg?i zcm?TCA$SqmAoNF=hJaZsO&&IW!U!le^q~>j#tinS&x<9lc^AKbt`4&S58dteH|;Fa zLv-5bNLLWvLj3rDGrWX+eGtYV%tm+`fs`0Ib=e9u09|EL~*{}qHfJ^lXg5sG^G{gh{2fq*H!{r<1-6}SqVXqCwGC(5er zCpgr^Wz zA#6g}fv_Lp7{XUQFjFgmTt$%3hG7Wt2pI^C5n3bUA@o8hL>P-O9bqoQ5`=Pu4G6Cz z>_s?&a01~h!exZN5frp}G=dkQK0-D^M}&NYfxR$OM**3FFdJbJ!cv5_2%8b!L^yP-O9bqoQ5`=Pu4G6Cz>_s?&a01~h!exZN5tP1Y z0R%5XeS~a;jtKb(zJd5N3SkPuY=lJ!OA*#0Y({t!;Sj=cgfj>i5w0PGV1RlMk`Xcy znj*A8xC@~>LIJ{1ga;5NBRq;Q4`DHahOi3Z#R9+0zokHXtQl*OJHYR+_-}?e$oF@D z=z|asyeUFgg!>0**PF34&D)%vYc$dCmnTEscmWBY1iX(PA2}gF`xbe%>=x`r-x91v z2;-gz1d9J#F!C96iW~TU0)4>@{}U$v7iFTj_Aj6oUm--G=IxhgzhtwMzBL%8tFhoA z)Bt{6hlCr!20ToU#{jvgNZHY&1-~Lcb7Q#Xr44phho6(B3(Oz%Gx@cvsSd13knq~VI!H%Uv zCXo|1~^557xuC1H~mi`A;W*uzXNas;0eGU zHjHY(Eg_gyp_0_bj_D6LNWnq{cn$DTz}RY-J%IhfFy#TqxiJ#}_v8F5xg=?B1g1LR z3=h^Mz^T=-bO6?l#4qpD zE=hwMp*-O4fCYdZZ$o*&XPRNbTMA@gb1(p03U~sreG4!E?3xV*5t6hQFdOhtOE3T& z-wF%>7XmH?d=GF3;HP(?Jm8gXC=WQhJIZ?`X;nVD4v;p&LO=;y##}(034H#wK)Uup z(*r(_73?D5xS?20@sh?az{Y?d3`5fc?t@i19q`73Sn2_liRg1c+axUUfE}k`dB=+; zm!@H92W&e7%Q|4pqgc@aFV4i?12|w7wg|uwA2z(>K%N4;3b=4K_J$})S}_O9C}8s< z2nK974-5cP=Ys*DZvhwpY70>wFl7nG4+fMHlWrUP~aTnczU z;10l5w8WkOvLEmo;8no*7)k0@h9(C*0aySS|0Eayjsjc?xCL+rpi@P8z(Ih215N=< zj>T+x3QZ0;4zLjL8^GCse*vxnd|kt?3+U^=6io-@JHU`QG%a8TVAEyT6#-uZ91bWy zhdu*L23!lcpd1VUuL7P0T)7v) z(C5Jb38Mi+5+vyktfd)%ivc?VUIZKt*l7(I0KNdY7EoFX27t`~&jL;X3`vxv3cw7& zuoqAsu+BQ{=zu2x7Xiks$GHRWC%_|#nE!Wgz@S4y+KZU)NoW$l`hbI9!T|j3+G=8yEB1yXnd^EMTm0${#&xIL@G3biZkS)5$?mFDUIS6+hFqytNVW9wc5 zVcJ9j8CqEfmd@_hwgT81{Crb;^)Bpdmpd@URv)pSd$9y(Ma-qf7X_D#2cW!wA~c_;fi*OqQfu{Hug{_`*G z@my9@{`01`4vFhGkf#{0Xys z7trU&Xm@r;UB&``Bv!lBizWIN0e?IeN7gFkip_GHK)(ul*D7-JOu0uuPmTBcv#jNZ z^WwZ8E`nYc^f6YtJksFrkiu{@nyRICW=W3vKszO9EeoJm7vOUe{Qef!a+3ml$AZ2T z^k1xW`6q*~v}0li6;det}T)k!*n4CP6F{~Rj=S#Y2RzXq2=u8qJRPn=-*3=;(k5i6nTj>1N(R-)ARPhy8PK~`QJ}M_z(vsar^73S z8DWl2TUQ$~AO*uP>wd58_aCUj|81TBC=5?zD6fOX%$i{ur*j5fK;HrSOIEu4f~nwG z(A#JF{q)p9Kmmu@f{Q?Jkfkl`f!5vxe0CPr!77!pnUy&L`lxzvx>S+1+LUz>^q)b; zP85*UC!lK>&cx?I&#}_m71MYAwuqfDETX<&{vvI`cP8t^F{v{$;&qK3oyr3BNw5S=HT_FwL-#dZasxxoA6 zYc0Ei4;}i8^0oeyP6z*qJ+xWC>(b%BLxJDl@}E2#8azE{q<#an15~yt@SGvqdBO{T z#}#Vf-N5Hj;7#wt=&%kyq1y@?gH+#D$g^{V)(80=`+@&BQhS*2O5o3q)>d?bo(gP% z{4v@d!ZU%d9HX5gJP&y0SnVd^qku0RtJS21aslvh4~j)|1MvICX@e>K5b!U@YqJQi z1pe+sZ3W>9Y=wD~wLOGq0^c`9J4JXN@LdmSHwhmFJbk)WGavW@;Au0oI|<(a{LzQC z!TGGF?+EajkHD#ndYOIk0PlaXsDi!-^lU4Aa)2HNlVdID=~nvS0KGow>p{Q6N}poV zJ4s!TVJ|XdSThVUGe~1W-w%3YD}79Wz6kW=kBF6g6Y%gy{r-j4yz)GrnP$Tg(5Hi* zW2Iv!eh4{;ei8JgpyylZ@;zqxFxW?jK)<^RJ=dT+rTWP5%cEMi-YmA87n!;sUS}pe zHr4_VD0ksycneQJo_@%K^LU^KFvsuJm0ALN{!DFfe-`WVBFkpP&&m7b ze>6wyM)(fO|Clz8@Dspui?qdrUjzP7k;oqp+igOT_93Nb1AlX_c8Tx;;L1EL9J`T& z>^^lK-5QL;O8C}=_h~>oUbjW^lQK$n6JG;csxwIiSxA&3C{)|xqu%d z90kB@EYQMxBYisXK?}5ogf9i|E~d5zf8gzlwQ+=>06x1|TTJ*h;Jftnc$j{F>gn0Q zn=aHYQJwk87O#ulu?sd?!tqk-v#EUd9 z=#fjb&-!Adb_9NLiFUm&T6#F}!ZIxphcw4r;OS5DY3^7He9)6xe@fpE{FTVAYs&}^!E{YtE=F4h@OzhQUs8HU;D0UGt`j~S_@gVd#Qvz)0^loG za)ZLL0eIV0G^4S;13$V-n?-mf@H%U>6@)ACl5}#7wukUc;A_@urwGpj{?iNEP4FB! z7WnaXxb(BOtGvkUxJ97nu7~H%x_R6BnkSh}pwEFJJ*rCiVP^Rwpda2K4(}I97V`d7 zC2ysfHw@PN^Dx3cu0sF7q}K<%=SzNnT`PSAC-Xtr1@u9nKVqfJv@r8A=99)E!wzJa zQ6+=eNxVo~1bX$2uz9U?nu_Cu5X!R|c}5`5DC==eZ0-Z;%tq7gIP$y*?*L5Wz;fJQ z+jAFlkdYeVxQYxLUe;b3$P(*D!v!(>71SChbaVG4^Xy%Rp}CZeJPo&Mmyq940Q|wN zTKFK0h)03vZ`W=c#M&$Sflr4=L970=9Hr*Vp<3l2mM!PSXlaAlDVVZs2<*~)Ep-Tx z(c9+?VV!KFXX)QWnybSS9U9+&TB^s5uRg8USi*wIf3Vd!+4xWs7JmMt zhNQEq@u4Oo9aaI)Z+xf;OAh~0UJCk$nj|9~M^By}BjjpzhO-$y(KbJQl9<|CF5I4uZp-VE!9#-u%Ytx6x^Q1 zs+U7T!eyyNZJ{Z=-95EUBUnb*)odeW*8uG+N?G3BNRdWqVIz_9-Y_Gj@l>rfQlcwH z87VFK9FU}H)huG3eApmkGcTtCXEqoqU61g#l&0oUf$irWD!e;(7}j+Fge*862)iSUgVGDm0|xYKp(1u8}C~a+PD~S95)avSF?VV3D|8 zMJN^S+67q=uDbZ^k!)PBH`ewyrf5tua%D1SnrA;W2uFK+r?B|&omt>tD}mCy;RCe0 zrm%D$<#g7u%|V*m3%%l9xbiZV)30IIl-5S9bT!;Vn0TfgojZr z%+%QX&@>6T#50q{eom296v<*Sdr{ehXDCva#r=dakdQeJz1*q?GzBof7+!Z$o5p=ug0Dv?KC_=RCSWLCfRslBmt7mnXa?$tkPe z0TIy`%9D}4M&RHLKMk!EHIgEkl5G>(OsSTNxAP=7;n~U@h3YD#K4z6#WR*JCDs`S! z>f@1gzoSc?&*ccAK4pQB8eW?!Ud$tnCEFHip|G?+Nd>|iE6*s@D?$a$s=`vM3eQ?q zSf;CRZv!xUj!!gQg>qem;XbPB@_O5#9V*@mKyjyzgCIBIjg?gjb-$4MyjALItJF1C zscWrLU$9DDr%Rm-mdg6LN=WcQY6K0Z@YL@}D&dWl*A*J6Lh4ql)NNL&+pSV}Sf#$9 zOMRHe!p^v>5abQ7PYt|_ONCHIQz9bOR{%k7iexK$ln+g*Z&{`8wMub`{uh+E}c5mff9?1-UjmjM0`k;>&K_Q>wsreMER~=02vYu!HLT5syHH89tg5)l&x|)jb1vwsKsdr9i0g zsa1u~tSWqNZTl0}R`|l&3SU}PIH{|^o8+sw>omZ8lI?X;Au{z8sX%yRF zt58bQ^(Sk^FIiRi*{Z^2U4;^wURQXT%<#Q5BYxo&sIW5%>#q`%))!LUJF!DHR(?}x zi5DvTZdKtAYb#u{s_>^(h3i%o{?b(#NNWGhBba*0RPk8v5fbX7NVeivXubFFRb662 ztcNe_j0w3OzOKtm2=?%W-NuAuoR7dUgbC3e+GZ6y6S6%gsnH!Gmg%{lWIII+4G>2C zuf%!#Kzal{<KQAHO|6HgY8~ns6yxqVbuexAI@4WHOIFlwCzAU~|P{5eacQfZJX4aD>Cv4IG>Da!Q{wz_E7I}j7&nh!iyvV~GrJJ>ow zTxbtu(lyNuZwuzGb;v5Y=vf!$+KqOQT@K{2xduav5La_7wRRWnDGt{{{B^p@xu!RO zhe|eLr}VU4_JOxM0dnG%-kxJ%D@J~wSP~(Hzf41^uRij>pd&>AKcFj#;k1 zNu;M2l>U0WrYG?T2^gTqYj_f?fuAx^k0*N)Q;9w()b|s_;9U-nWFswje~2T;wAUb*+FLmt-TRiqF;^6o*2!s-Y;$?X>gP9F2oV zb-bAZbS%*L>V%C1meP)};lOJ50)~Qg@^SEe$-&Pf4t_px@I@m96NuU8ph9B#NMs58 zR4A5@B}S;x_xBiASs-HJO`Ck$ACwq_9|iH1zPJp;yE*J^YlG zDq@YL}G)>!3TcQ5V;WQ1I*aTZ7Eha~L@SM`i0!Xa92l^&Gf;wx0EsG*@ zSzbm93Wd#|&KWRKnvGFBIE-OScw*skFAtjHsIbPPq zq?lqBm}17-(uJ5&Qrf#1rL2!Fj0*R_Az0ItEhuddwJPsZWh%E4w@^ofbSF zQrgp!XDgfSOQ+=w2?J<7vz1lO%HY-MYx59WTiGgK?a@;tHo(T0eOuWQU!8Y#SzUGg zYEOA^g2V>dc<0&5mSTLT4WSm!vpJteo~`*J<4QfhkCjh1mCLi$CgtR^oOIfWP^JwH zC0p5>zKmT7Na$>|Q-PFu48xptu(_$*pV7GnT4@t8baJQQc{LODu>&WX%3*0^^&_|{iUCtQ7R-pyr!|XG{Gldsxzaz5Hn2x zDPtIo&J0`Tv&fD?hUCb#_(Mwa!Ji;GsVWYBn#sB!s|EX7RQg;O!Q*e874wxV7#5<^ zU(4;pcq-s^jt3#sc7|SI$FI&Xy^Ck_DD>o7oR^b@7Nc|}s1#QsMRF4BtWVJs?0^t| z^&V09H=PG7_o>Ju#2=6w8MCHQ8p<4&6NreWtg}E@dw?OEjvwqJIgSiV%o?G~Cl*~C z{4km2qyfEIPL6<|yQwaGuPGd<^>pEz<@Sbf+L>7eoHQsyQNd&8jlodtoFh!1~b~sD}0lyeisNWPiMQ&gSok&8a%6tk_ z_4uHiX7DVmGfUTVGz-efWnD7>ZX)+q+zrUuPRHfky-NuE|)PgbW`reQ7BWntyD>3o~rgJg1B}db&=$ z-X^O_HhzMIuafa)j<<0yth(%?NWiL=ah5vjXCsb5nN^qcTFnyIpyp|Mdz1)%Xb(yi z?XjA*FosJn+9%hD+M_BNWJ9wTj5bFnkYUHxF>^fqO)@sHIO0ZA!@({2EV`&;kFdCr z$o@`SA+u0#4pvU7Li8gnFle}}S%$2<3^Li7&xq$|d{PY;pKK0`rs7oNEi@n=GvWpH zy5tB!VsXb)9LSe(l&=pgeq^Hd_I#`({M@ljoMdR@hsNao$aa0jbBhK~##(CfJ6H-)`ADEc6Kf+>=AA_6CU$3_4*OcruF%%VvDue#iW;yT z!~6BYZy zoElQSL|wf?UCWguWfe93&5YkT7o3plJ={{#>MUe#-vK0LaI(U5`Vya1r$sAKyr<43 zV>K->39JUS6dg6t@Z|AzaNmK0`$`+tq^)625=qHvCJJsb2mT{9j3%DbMxS!tvtbyo z?6G(%0j6HQycFyEM1GSg*O6yI%#gQB53|ejozT8by5@^ zb~ZN^xt8deS^4{>0+VX%3N#*1#sHhtnr;{5vW{NzIIzk3W>+BHR-58u++%fS`pSd> zqu?Gz445$)g4w9XGm&Z+Z)1{PAk4HF_gPVNSA?L$w@)3s0a8F~-5 z$JnIbqV4S#u|&H5x%q*({;9c*)kujj?|*JbDf9m45_Kl825m!I7Yb^k3Uj013*mCvrGKdIt8PpHZ zxC|OWxPBS55qRJ-Xe#Ds{87wF^D^jtbh3FFbN~x#;4%Tr zEtV(qGH5JiGcJS9Lz;ORM54{hpggRC=4H@(6frJ?x>mUiI*R#XUIrb8AoDV44%nHO zK_p1HY)WH(#_8eKmqAl`i*ujhlBgMI1oJY8o<9p*2Hgb?=4B8?;H}gzgJ^v-FN3JA zLh55ysX>=P7OC^BQXh|eFd%h)WI!lg263szWe`Q+rPMEjrbDWE8AQDzRM4y{1YHJM zR9L2~zILXFEHy6ZA8gSuh_3aM{d zr3PIF390&JkQiFLg@Z1GL|ygEAc~lmL8K4**tiVp2dU;|5KRK1!h2Q~f-ZxE3S4T? zWe^E6FN1^%bhyN2kWfLt45A2BFfM~mk_yIU5G@5lg-@+21YHJM+Wv&K?Sn3ZEGnGT zRnRYk_E9SYE`tU^s(BeiYm-o6qg92V%OHyiuUJ(Gx(wRRyI;Qy(z|~m(r_8{v5%xu zgf4?7%OFv4{W6H^YF-ABK4^R6GKk)+G%tf_c@!#Ku&NMr z8Dy#WC94WSmq9`W{W6Hkn3q9%_Zyc%pOFg2We_d#LWSS0Dg<2ySycGbszT6ZkWfLt z45A38o_-lb_g;a^AX@Lu%OJk2|I1|%7wq8+J1&Fx^!t~~ATHay4C2Dg%OHxO4~)y8 zPa!>U8AL>(3oe5!y8PoZ$f64_gDkrI<1*+l`aEzM#C5?wzS55KpF>fxZR29b^u^Z> zC!zl%_cA`q#ms->UZw~1s(LSTH%_eo7xyy0z{Sj8;BDT^oCI4j2>Zm6i2q;rGCmf# znE44}s@%);f#9mQDs*&o>d(BG~KK9K^6(2<#OYZToM?9e}&m@QsCwFvcHNIO& z;Ysi)hK3~(L4l^EpN(>dx^0BJ%Yf&EMtIIpNjfx#M(T&=?UXCB2A!Zi{Ms}$Dyj?V z68;TQV&kw6`>-bFQ!If`-^Sq@iAzc$ZrKp`1E52hj=we%6q;0=XP9#5yG$ zCD>p`XWcBFgqEfsD{lw$)O!+^9~)eYaM-Bc5n#dwx1r^LJTMNQLT`PieniQM?l*OV zuM{Uw!Q)=63ZhVALn>q|Ti{E(NV$_zh(^AcwD%~U!rO~{2x$i>?u`}sH~7*^dJA@w zu+Gpg?PbbPJDt}b-lX&feFWikvRUv; z9PTnHeMw(Iq<=F1mcFDV%=k6rpXJ&c%-I9GM^*K3k(s*AuVu>61JMr9l zY$n;oFJfBgc5wzelkDPMdT-`pV$kp7?S(7wGH%dQk@ZZAH}F*Czdh`zjatQOuo2rI zUu7|ESKZRI?YcVHw53mt{?D4Wv9@-Q88B@_F?Q&wM)#V)Q;n2HhV1QY0*34Xlrjz3 zo>WLTWa*ksG7MQFkReMSEH?~U`jEL{$W8bMRQDGXgWmvULLv|6?vw$HR zM=`^YrLXgwhAh3lXBx70bgXH}-bUFBLv}NynT9NhHVxTujCj+KT|yDVkd3Nh$Ucps zYZ|go&WL6g(s-(oCV{BK3|XPV ztqfTbWE!$U1>KMpD(HqRMWBLV$UaXh7=|n@1ww^Stttc=vX-_#VQu>$L)N0gNin~| zbwl?}f(%)q zf^NuC8Pkx}yWcQm%Si>pkfkMFsPMa0g&;%LqQak66@m;|p@MG6QY2u=R)?H`AxrDM zX~^kbb%pj z(d8e8?9(&`&8HegLpYR3H#cO-7cIQgRn1uv{r}mV_5I^H!~cdkTN8R!HD_b7r~XIg ztWR-Oea?`c=`hXN^p^`ldN+nF0SWXDu@T=B#A~{KK3TvymUP@Qk3CjkWnxm3T-{Oh?n4y%XXMbCyV^ zIZFgGXGuT9oF&{eXE#wv-JBIiXWg8oh-uEogQqZOeXwU~J2uT(s)A|G5;rnuw*Wen zj`(Ysv-!YlE+iB7hU43j&=5cV*%Lrko&vKqg_}(`8W4_4+7xcW-pHke0Cu038=p5L zeN;V|v|es}`eOx|9*UsX;8UeIu)E^!u1iq49FnlXlyIe`Az@w}%G{eskdQV+FQnh0 zN{=Jm`y?^^#ZFrg8Pe&#mx6MM9M|+5qp04r8K;h+x}JCcG(xCwpQ*_OQo$~U&h-(E`yv!NvZc1CD!%GgbRNH$JQAXe8orukD6o=vyxNvXf(0Es zQ-7hlvExzIeE;p-FQ*F2x>+rJQIPFTIk$W}1pQ6gr%wWrscBMy;Q})e9){NBFgh`KLKUs7fd#T8ybr8*)_PcKD*L= zQlTg{SOCd8jH*2>p4JNfSVgTLNJNiBT3%vx5sUTAto&X$UBtlek*$lUL(i`cMS7@h zum1dMdN;jbwjqU2jy}mV>FSY-slFB@D#f4WtR^{$bLMuE-PL_T*RGx^ca15xtKJ8r zQeHzE>)MeNr538yo(i{&p+5PXfB6A7@=S1G<-ZCBIJmHu=9J}+Cbl%DtZ0f((MD6G zCQ;MWcV8bUn0#$&(-x9ME7Ug^O3tgkKCtrzuSO=XtaYSZtlMX}n)sK(z!0l0UvXm_ z8$HGu#db7?7Vn<~ol#->23?u@x-woqPBM~cbnu3ivM>rlq(rQKx|fT-e?VR?39AnF zUThR-A^P1Jrwv`f{MwkUcm~9L1Y|oN0oiT7iA(>0ObUM8So>ppu+OR=&guWNKC9NY zGtkXrzKOd58W@jbkTz0;{y4^LWHTSfpj_m|`g#X5-_0F?G}DXq3$f9?SmawYy;wvb zFV-GF!;AGE;rink9vp|G%y)C?4c_R7&?zy-ySemL*cjv8+CF5t!L0YRo0i@IM(ecmcH$ctr> zy4ET+$crVU>Rzk@2(@^z4wBRebSS->OCwcC-D;H@m)CPz58`9R*NcL zELy09)H7D8L0&9N_kU-V8sx*(41HjDv05S;XTFc7gpz90`LS#Pq>yvNU15v4#tbPoG%hHCc*T9_UDb6=`_Dh-7-eh(I1N($DaK zT_I!8bb-yMqPh!AoV#!JM8|8Si}6GUZRMs1jA~$dz=#=nz)Ase?~K2O2dp0OniI)f z&t^Wy?kUg_zsUl?8uNoLEV68tNfFZtmd$c#Au+vRcQC%ClD*HpU@gT$Lq-@L@^__GOKgcbaPc_jSM;5&sCk}`DkY(L5=isa|}V;sElTOd~!jl6G?=N zxsOZ|d0LwyA|j0zbFn*wh*2qRU^F0mR~iIloTp!)@;BTLz4!qt4*LUb(FNr*gxB$Q zy|{Qe??xxH^ad)u+Wq=CA(emVm=`WL3$Jc!6y}bd)p>g1TI8PCglwU}3gz#{%VoVVUTEJ>kEY~)?hnTZ`AY>r6Fq3k z@27X-s0{AV>z79);UA*IYdU=rmEGgE>nskNEH;}g?x}Ayl#e^~?rBdn!Gq4=>AQ(X z3wPuLqVTUKk6%q5EgBmq%gaViqnq%) zG&bT8X(R@W?zi|BtjKTCc&gy#!jeTle775JiyW=hA=cB^08fvFWF}EXouR-#2BLh6 zKNLc#cd>w%f>XR*N`X0F?F4YU#9w%-cE!X)swJVYT`ER)rP^OSop6t2Yf2J^#qUNe zOnDN2ZPlTOBPn_&aLs)fFS#Anx*itaef#1t8)A7+CA3=j8Pp(xf1)gcf1)gcf1)g6 z1GYC?1ph=?#9LS_>=FDEWfA-nWf7||F_j4ZiL!{1*ezTU<)P3$f`6hcf`6hcf`6hc zf`6hc!t#l-P<*0{{PJQmfnhThSsrN zM5#zG^okG7^30$@d^xTgnFxXuMV}}OtshAQ4_YD@(B{?deV-+DoP+jaA<-pB3bn1$ zzh)4(iBelTu1`a0{BrnT8VZ+?FP?a_)^&(CmZ12)+UECJOslZ! zjS&*hAM?ttM?7d{N^FhpVf7r@)1EoPVpv}-_6V!l_&H*e;4nrG|JFFzu<~zB774Y8 z1)i{*6_2(VeuOpb(VbY;bki`wlXbIVxzjQ|ipt;#vRSA!RbD!YH8n)4j&9Khst@I8 zpawo7C{(_)=B@l|8ogrG*~(*FJs|3+ft_Kc(KCDUuSll1(D*Y5l=cZOZ8 zI!j|-z`8=tDy;cV>zCx5Pk4HxDTKGmxg?4{iXgmI&a&$7Kz(7)JD-e{!9h5yoGOp# z&MIfM)GZ{HKXT=qqflLi)W=Mz5UM+?eEj=$&bd~p^Q=-IkEE|<=u+ofr7jRsxwFby z%pa23E@mZy=wMw;mtDNg}spL3tu8+H4 zNF@iAGd#5>1PN!A^L2#=s*t+XD%I+&a&8X@^-0bhR;gBRm2+p@WC#-8D(5akDm`Z9 zj7U{UDu3k4xksVlD5Sn+m1=cXIp5Z$lC#SBjxN;4TiE*YkaNFYS8`W4-{leEt#TgV z`k<4^LFM$+jDb|)ta2V!Xc7n&-m|J;byhi#=qhlb{M{iRMmN0~?);Do(#P3RT?O)1 zIgjZokhjYD5syFxdd$jMJyjzW_#;=&;|eVWLWNJQDp;LW&d&pFFF8*{@$WHu!ns0L zZ^mK&o(7IbTv}X%Z@Iw5nirRykj`sNi$HV(osb zx5~LW?m^!De9*mSbU%5koKfkENh;yl&eIC5Q$p$)t5mDA%K5Fe`@b`U`e=e#y;aWd z^@{Vl{=n-hyj9L0xjv{kd8?e!=^jWG&MN15g;qzQ!Ud}eR%ey-Cribhm$(W(z3r{u zD(7Wg1@cxoukb>`Tjl(PQ=kGpX61}Ydy-V(k6bx_Q)r17D*SF$!RoAXUbCw3XH+Bl z9+$3y)m!EKOILxsRnEV8ME6!XW4%tSac+8%DBI~*XuXfx;YBt$tN5}WMb0Xx;jD@x zXO$BllH=<-4nBy%S;ZIjsC#+)8{VoY@>V(VB{{ytMbR1Fi7&}fEHjF{RZe_Kj$&v4 za!@(ryk!8<+*#$shvbMRbb+(VqKo0I61u=yW$J?U2i_`O85#?Qw@T;&ZxywWH;TMf zPJBs@>w+V}0BlkgH?fzP?cke|vK_?%k|xv89k^vAC7{R#dxH|Jm*Jw9N0%*r`7oDK~Z zCsP$4lXHU4wwy`?p0jdJ3a1VK|CN);>9c(Z0eChFe`6Kray#vvaig(!SEsjzd~sue z@^7)ljRclLPNulwz-sHS4bkBN|0@OkgeU#5=Q;Qm>)`V)KHG_Ju}NqfG3w!DvW$Ae z$s|TSoJ{7Zmz?l1@j>s4;!D5bWD=tuP9_@X-Y9Z1Iq{qoAN5h>WOCv$D~dIi687TU ztJtIH44go(g{dNlg|OYAc+ID&m(&?{oQBI2-{+N<3w$ z4x7bD$e;w|*sLccjRHgFb_5^oS@}*ZRLT5PTJAJbkUnRY{2b3+pBma$c6L^cho^JN zQkDSHXAu~G_%I&x*oPs>R`&NSDTQc1L#}rlm5xcI1%OPOl*S;?XC`Wn94@i68YB^B zdX3{Vs06;`B7jtvvVdnssNgx$Vbkp->`SeV4eNyVnL79k2eVx7lil!8T zNij+a$5VC^ZIAT%7b#^4D65IWeMudXXorRwC#CEKVHXkj(;2;z=s-mua7nog!f_Ag zpLk+nP!f$xcuu4gFItPfQ03(x{2HCS7xko9h@_N!P!zm^milUx%!UHwb26G_Fep^x&2G_bi_mP&IXsh@ z=P^CcRy_}1BT6j_%0oPM>h!13YH4Snf_GR3`tsc*`cEz5WhVzesyI6HjoZQZPTWCY zHFogBq=Q>4(%lWQK1uu&kK)rEjcN(oGPg)*rgRqYo;0#8Yst3r+Am+TCG4VBbc#I< zPej6L@ga}bPP2^gpYS0Odn|L0MwX!oTQ!Yr-cAddL1-l)Sz}`akG(<@y@&TCq_H0=fd^VZKqJ-e) zRHHlO&_NIwFGUnk)|Rp@9zs0k`&kvHNW7mVDr0<+B$Zdj_!vE9jF+P75w~}MN4JM| z;;Z)d9NG3Tk|Ks=Lc}cD%}X|@srkNPiQUK=vd@tdk0OU6MKmC-9+PcfA?jIJ2TbjA zWlvk|K%!0O8EPyeW{=CsM52dDoPZGvxBvK! zdpH*9IP!GI8^-(aP(%#leF&Dyc*A%|$-Fy86k^Tr#-yPYVe z@m>UJ@rLnEqT>zY{TmWw81KV~gJHb?K>8TQ`zTVuFy8OOE@c|;iQr}$?<7a;?xiu0 zVW|ih?=gClU~_oFa~qn%G~QdF5lrL#JuIoF@qQX|Oyiv*0ptCDHTT|eQWRU*aEIyH z+1j1m+L_r5Y-D$d8_A%HfGi3~(hGtF2^SE73kU`-tzg8&np$xUU=9d+)in#(h!JzV zidiwCq9UTc&pB1y40GT6*ZckP^$%vdPMtdE)Tz)_)lXGlOj`ZPJLOerT^(qJo;B&L zG?=_6X+0~Rr1k6=y?@3zEjj>jL@=gH^D)r<&2U>&4JC%wu!AmybN|=D&C78S? znXq1)z)#kz)2X6r6WUm7X_lV64}x(AChupHR)6wN#jmt(NY=VhWn3*mkcY1_DtDe07PFm@{4wHAPs7mX7$y)DE*4lnRDNo*&yE(59YOQn(JSOj_ zK~XSy*IM=DeK8aTlXt3)O6%jvTDK-^-KMqb$-7eOPu`O}{G`sSp1i9`O zSx?@7Boi2Eg2_8I0%gK;$tFCXY{CoL1kUP(f}Xrn04C_k z`!Z+^Chyc0C==dDHsQ@=6W%)Dd!D=}`Tm{c5`R~FflYXi12w#1D((IJGn5zfi zfsrPdyi?btOt>T2ggcW>*py@fP2Q7C*qm&_mi&{r`1Ryn7r&mop8!R{tqwY(I(K5 z!kD}#HMZ~AgaecJBolUP6ZGVr5(SfYUHp3Tz6e@_$vbuN%7kB%P53q03wx7I_$}VY zMUH~Wdy)yiYZLV3ook>v`2&;pPf4pkd8ht9_CP7JhmkIK>oI@w&OL0*pS*M4WB%lw z3q2N0-dT0bpS+X0(wIMaXXP<}@~$1AC+`cvDTB#7#VK1bc~7zhllLTBFnJGbQImIV zOb=uNllLTBFnOmJ&!sVc^3Jy4Dc=`ma`5Dx)cyZ)^8Oioa`5E+KV+%KnEby@-U(e1 zOx_pb>8z^XF?pmSn7pf}yPmwihlog_p1iB)A13dGdh*V!W+z#wC+{lUQ5NdSy9#%Z zg?jR?!o@O}ynhA7Nnnz+Sy?y1tp5!raSt52j)^`EF#h*M-zHH9&+}<)@c%T=casiX z$3*{4Xb4BhlSMSqr!KFUC;BvKEarKBKf2?2{ye(ldHzb=Asvk~!V!83gd_Cy5A)L) zXR)ISbl`bDO}$hD!91U8EDrPM){2Qf`%<-5O!R{m!V~?Z27-BhQUk#}pPEEz%%A6T z1Bv6&5Mx1EW@v1q1%`$TB5ul_W z3VC#LKJ-TlvbN&sE*8N^L##oBDQ+#t?jXaAu49kXDMN;Li~iH7HLp9+Hbif6z+>ee}LeG?zhtxwr_4 zD?}U-mEvVMrbcXlpf2KT7}Ql<19~@c7UIJ$f*6SV zqeTmTj}bjV`I~6L??iDg1WgiK@q4VuLaNDP5lo*V-hwH|i9?X@sp3W4PZJXN)5QRA z&JeG|#N$P8{LU2TL*^{uN(5$$2?)#)FGIxNg$vfXq8V?;rCo|9C*$XMfhDS?gZ!g;vsnM0&yD@Unr`f>mqS+N7pbe z7Dt1$PRxTFTLm48dx^LMMqDZ`#{FfY8$@3&Dq-~%VhzN3;v?{1DSCr`mG~G2truTH z<<(*sgtm!W@OzDD0spmP8H)8f(S-VRz4#S|ZV+8?zfq*apc}-Va@7AD#VkbJBzD2N zo5lSQcZ)b2ifZ?WOT2*Cd&LL%y-z#}Q|=cXpru`W3keU1_23-zplE4p+@sruZ-2oFK zU)r=aDLM-2Wn`C}ifHv!v#$#&sll(xBHt8Jx`<&DU*uc6H$u^`U}Pxry}Xms%ts)y zn-^lx=fRH14;(PF&Oo({{Kx?-YcmCY;(%)#Hi?MrvFDSxamcxh{35?4acfatkzaMM z=@8f61nCK7WxySg-#QW(A^ON*o03NM*$?18y&a{iKQppFt1GZX;(fTz5b1EHDc*%# zOO!&OJUfnKf+MeGn-> zgy4cm#FY03>C!2kw|0+N>ryPf`C~64R$6R5J(6Y0a{&!zuYx~G8r?Y!$M$; zy+Ot#)Vf$rtS6OJp&6%Sb+IDyK#^H|5kh@qMU<|CnYSLH=2#!%?5L!)#6Bo<5iBu_ zu1Dnb*eT@HGPB@jgyzOhr-T(MPm5!j6slCAWwEQMm^-V`$+5w3Aim+pxnBvN)AKzX zxeQVOaYQ8xM}C3>@#sb#fe*!RHsusw`m^095GpAIlbI&5Lyw>(xJo(`B?8JepHfeh zbWr~7Qw9-5fbxWM7x{$_|5M!M`@%m4Q<3y0F8XZT3fDXjxwtwj z696Bg57SmYi6(^TUKHTN(6{0BBM8GzfB|&WRQXlti_8_FY*>Un7IfBCI6`Qs&X1yY zn8$@O$^N^xE9s{O(su>Yj|W@**P}37a4pmyUKHWJ)xo%OmUHq(KBq$VJX4_dP z`ASaJ5-L}zeA`+=je%`Xlj@_>g`i~YmokgNl?jiS&4LQ`6C?jefECZ=D z6is_ZF`XM2@EIAvDM~~2l!A^bW8aj9hLC>Fx%cc|vvk(Ol$CupyZQSkm81d`4qay3 zJQRY;%09c2vJyzzXZP|Yv6Fwd*~xgZP);8=Hvja)Q_4^EM*e1&y346k`#@=GeL`uN z8rV#O165rY?SwOQ`tmY7z|8OLC{;w_DPK~-gbqX? zPd-E~eYYK@1%9gJ=$+;`bz`cez+9`0%6d#OUJ1w3Wwt#N z7`4_;=?2!?Dc!*NsYYd9lw_56)_$|hy+>bq%4szpmuEn4bZv_+R>$K?ks>WnI3p5k-dOGSIwA7=Tm2&u=*bgF$Jt^OBnuG#hm zsi&nNuym!TUeI8t+5-+WSnsw!%ueoN>Mm#5{AP+k&7H4MU9d_ppCc`Jmo`E6CsMSP#=X{7-!Bp+B{Z z;Y#Q84=H801v>wP&aN|-EFqRM3XslA$pyphuD(us?S*h}6>hFvOTGSZ`-o7vYO$5v zOorQ&l~G&Vss*zbq5~(Ry!Zb!ySt~MQ>++GVyf)$6m7+#z>5A5r0RZ^-JO~zy>qVE zN0xtPh0l6GF}?+_(Pg%U&_gKx&n&K%WHo<&>@%x{*1f19Fl6>~i`D~O5GJbADZj9I zVGPC5rTRf7uU`Ez9)}g>H^B$yA6Bl)E51lIQ*({hT;=?l*Rng45wNrRRL#)GXJ8SI zU8qD%0NKR}s91CDmQOv|R!he#CFH5|qYn z-LcB3sfL~AomO<}y-LE^z%OqHe!0`?p}IMIDyO#G{bR5di#vR%LKi zpQ(izT39)ay3M;R-7P=js?KAJm7p;l{EGq379=DwJiy7usyyy%PNH6Jo)x{9VsYJW zBmZ<`w$bdi>xqkiAed+MQ|9em)s+wh^Q>_cNr!1F#q-rGR~}@XPTl#6fFecqzqn%TJ7WEaESo#Tcz1!toEorC{Wc*4d@X0W1t#n#!=g+}acfCi&dzNJt zx_xx$44tT)x3*knMQOE6b;mSzq&E?98rG5#{@8IS?mM4BMRKUc-N(|qloWb(PM6tM zh32BXd#KgZFMRgyq1JGC7i*351RGA?Y_@W$s=V7RtJr0$hgkf|f;QmL8kIRzxu2R5 zEmN7JEncUxTOW5-`Hb@!hF1T5v$9~Y?^W&|CtCTcdz^^eP=C`K=5cOt^6f3;<~~;R z+~F8WxyE10N8NPVmUYJ@bVE1%rb#~MwmbZGiU&G=FX%(J2=-mV1E zi+;Mywi;wtc_q*4s=V@ms|4m*{ni(tYLe?KCzrB>@x;%AjFsevLW^H^z%NzH7U7^= zKRB`c1ZspG0xy(*PSvf0m8TkgOL(%`B&P0aoi2=$VY>ZJugIyIrf~AJ|HCW*1-2 zsb)8-UV)xd&Hla~2H>1(jw5Cs;nGKS@TIPF^xX7lnoz!h2>5yv`Pgb5Up|s*&ssIh zrbpMEWWYL8*QP04=IbFX-JYn+94;Z40{6)j!#;}|X=`y`v!437nP&8ZYn1(?)E`v3 z?_I8K`-P9)4Ps%uuGBQz_`=%be?&Iv*L zIjWnlxzemTxTRN`eN_8FLuW8nr8$z=siC`FW?iO4_1C(0A`41?Pcy3YHyd3xX)fQw zFw!fo2A`|N=<@L82g~Xna1Hdi&|pGWC@#q2N239q?n#add6`AAxR>c+PYox^bhpIUEc<60Fr(nxvDRH~%dhq-v2N_b#~-rU_U3SsK;nXXjAJVeXGnz(2v=mXlkov8k^{jbh zeG?5@e^E=1tw+`mCF6fhAM3TJTY0%OAc|t7oo<)v_Eg>bV(;U0tK20rXFK0WBRhJ& zOI`S`sJu{F`D9?_>EKjW?((|=W#lfuC#d_F(~ct?0$2N;T1a0d%c$pS|LuWV-_uQy zp*y3y&sQv^fx2%4bvqk%&!g1sJWLmVEe)-9PEjK(G_t}AlnlQLD{Y?~(AIc4DSIl1 zx}h0LVGrYCZ5xh<>WL*se!4%^n_jHZD81<~YLJP9o5t9XFy7KlDH2FqV_ayDP&6eTy_oyDP(LcV(1zSE~C^ly+B!jZH`piPG*$ zb&t^z?XGlY7VJSxIPwU7?QdXBT0wja?k)RF@99iy17MAFqt+GH*dAA8S)JUf27iUw zyfy1{JU!&`pqNIS_tcqBNE0KG1TFlTPYSvx+52H0@2NANvMEixtrm_oUzW!c^9o|# z5!;3cBQXImNb{9+N+A=!lIU0RC{U1~&xM=rs~MjnRGPSjLa*jf0Qe@7XTD~~Auj#^ z?xp#LynNLzfqBfgGT0M_O?>9t_CiW?2TZ6jKa-yZ_I$4G`GB~-Q1;}` zUg&km#=w@?%`feZ;Lcl)5>`v@rfFv7p?8)}FXTjiOBTwTpwlw)iOY0Mdp9MCL8eZU zW@ZskTkb^?Q_{1`lAq!}BnQC}5m{G9>&f|)!pt)53h?F~(R@IqG_%g7^lu}jAumHO zWy+5b4V6cb%7kejkNA87qnZGto(8spOT0bVR+lCMqnZGtZX}^s94Ob0X4YRM^N@Oy zc_BGXZh>UTyuuqRts?UoZ-K-}ny2bjCYMM-5qr1VWcQXD`K@?Dnl+}Ki7H)iGM+FY z^LSJK6QLr5GCR{u-;Bb8Z4_zFGVSTa$)H#hpx9T4^BJlQ0L60MC}Mp8#Xf^{vS`gH zBsPJHrC>s-2P&4*5h|9}bn;0W4pg((5|L4{=6_7t5vD28K*jo^z418~gJS=gV<}K9 z2JBp$BSi#?H35oMig|UQuN7B%2^4Dr6w8&=$R|*&2~ccT=qO-NtU1tAy6!4I_bn%UgP*@XCSmG}L6n1dTQczeEP}q;a z5i#-!3Tpxi`yEMPD69!6>{twwRCWP{RmuqpYXS;OQ3Qo8#NYh2?YG6OJJdebNK5=S zJR*z)`8+a$a~?_n3cEOAU4QT<>%Iaqc$2l{P1ce(SxeqzEqRl*!F~wq3tMVyMQYcU5jm=xx^& zL0-BBfBE#e^d9zYbnhaiNH6{#_Z{iJufTrZ2Q%=}@tj<|=OIY2z<%CrjH^os5-hNv zSD;W!`1Cn}4ZU=DYYAb31vd0{hKLfv1Pg5FT~7hR1Pg5FU4!RS31NZ-HuP@EM1U~C z0{eOC_>qz+aEHKtUQ%5`kYIuRycdunf&>ff=glGk1PK<{&)Z68=#~&BSYSgheP+6Z zFu?*FdZQ4lFu_7pJO%!EE^<;QF5q)c5)YJu?ZVt!;#4&Vjv_ANR!mg`fs5rPSQ6o~ z5bNSJbCZcqq^C9KN&G3`vJjWV+#kVSnjk2OxHLuqbmD{q78zx9BvG6(!QzYv4pCgq4P2YhrcL0}=fpML`oKD5oN&M*T2>E5ak{S)*GH)M zmDUZ(S~n(Zy&+lajmcVXO4fR_)=KD1aZCO@D0QKgaKIv~>}Jx+m|$^lglekNdS9~E z`;)b{Cu@BmS?hyZD?x(AL-{8`QE8$(Irw4L3Z(=I7TINPF{p9g&?_E`v<6xqPu99M zS?e~fl~!lOzmv5-k(}2jbzTV)ES};(O@bi7;%T-AWlS(&SIAD+kO_q2t2o4hwt-AwOt82; zLVc4m;f`bz?o2jeQ?dznC7ZB0*@P|m^y#S51XsGd{o*G`u!vXW5tud38+yfu5$dRv z)}6^(KT6j6adPp0lC1U9WUZg+jB{Q;=e*V=##5vIg6)Ct2?i|OM8%b40%L;3t_XFH z%7m|zP54HeK=1j*x5*j*F4=_dlTFyIO(00H_<_^ZBp5^0-ru7a?6V#HqIM* z#m^Dy;*|-%B%APSvKRIyoA6t*3Hy>w_+6VokYKT&18903DC2ph7n4$T`keSHLj8Ra z_v*j|bGKf^-8we((&#Ky#Qi!p^m4~uL=Rbk4ZYm6^N>qmKQ9kSis&&bu%DN^_9B7= z3+(6RzP*Sb!22o5#v=G4p#smv&=v^Dw0!(m{Ex-gP*#b;(k}cTJn`8?h z!AZ6N5_|^L!6JeL3+(4*Ta0)~CKe(3ibDB06ej+}&`=a5=pKg=QT~dxmw%@$bl`wY zOhvpX?f4D;6eQ>z6j2u6i$E!l7(@k+7-}#`_!qJoj*zNwJ$NYq9{c1K!MJ^_A9u0aA@=Ajb_$uRC6N#76%%h9M;Y4QW`MC6~i zPnT=y0V{jpK0`i@3}ni4Au=kjfvzn13~7`f;#bQ4NR=Z`OGo}=auJx~@^*~;67t_r zlPl>shdjfk?<0yKwm^LLIQ(c!hh=$h%wds(jp$$m8wup5f8Djl~^_YI6W6!nIR;h>Jqez zHzR|arjej85N2c+E4W=aLiX{2bs15c?&GaU+MJOsucVYTQqPF#kvg4Mml5kovm43H zGb65>=SLKi#}EIS1bu)oqcC3Y;%{AozCf5!Ttd?5z`ASk7pMB+mk+GV=wJ`TeI;#u z&UE6mG*C%fpEJX`q^6R#K4(S>(uhu5pEJ{$&JgNoB$MW!aRxF+vt=3H$tCDTQ#8g? zDc4BQKqeZ`+6fh*#4V)=B(jLjF$B@-a9eyBO4497bTrrg2GndH4Gs2!teKc=N(Mtq z2182*LrVrjO9n$r2182*LrVrjO9n%`@`W;3EZ--+lF`tT(a@67(2~*6lF`tT(a@67 z(2~*65@=|nTwa8<6_UZwlEKh&LlwZ#lEKiD!O)Vy(2~K>lEKiD!O+rWG_+(iv^=&P zXlTi3Xvt`3$!KWFXlTi3Xvt`3$!KW#A{6(RP52!k84N8M3@sT9Eg1|g84N8M3@sT9 zEg1|g84NA^xKKGvG8$TbgWL?4jE0tshL&d{_6W&nXvt`3$!KVK80e!VqoHLR)Q^$V z@jF&B7+NwIS~3_~G8kGi7+NwIS~3_~G8kHJB{1)?lF`tT(a@67(2^D|r%FacOGZOW zMng+RL(ASUbf#o9w3N7?Eg1|g84N8M3@sT9Eg1|gF9OdAlEKiD!O)Vy&=O#17kk?o z4J{cBEg20h84WEN4J{cBEg20h84WEN4J{cBEx*9<`c%naXvtt`$zW*7U}(u;Xvtt` z$zW*7U}$+43|b=z4DFsN84WEN4J{cBEsNmZbLDYhI!_kicdcYJv}822WHhv7G_<@J zOWQa*s@gEtNd`kp2182*LrVrjO9n$r2182*LrVrjO9n%`lF`tT(a@67(2~*6lF`s| z8OrrK$!KWFXlTi3Xvt`32{g2Eqhv6&WH7X3FtlVav}7=}WH7X3FtlVav}7=}WH7XJ z84WEN4J{cBEg20h84WEN4J{cBEgyv`_e(}YOGZOWLPI|&84N8M3@sT9Eg1|ge}U&7 zlSyFc=m+*dbS9l6(T|)~^ccDG>J6`Fl~t7XEJB?Y6?;cjS=|{B9sSZKjyMCNqr2pO z1b8wZ{ko7k8?}TQ{icvoMid}A`mOysrTGeWhN9ogBRYU>J_6C*yatDUuLOY~IAA6S z5FP!I16G0n(b1nc-~*zgd+Z1##K)nCW%L($K8Yh}M)X(iIgNxvviBxPPbfiv=;&`9 ziHiWyWH1Awqxrxy_(8vBC^h9We#=yXa5 zJTzr#aZx6PfQP2gvZAZX5CR^WLMImy9y$swN13HLQtN4XmT9t&8V^jP4ACUBL+SxD(Dq_@h{0MIo{5{b+@5Gsl&SwZ56 z1_Ua3Y*`9x$tIfwTb=D|!I1q{x4^3EtbWLbT!K-DAq!!fDf19($*X!Hk^Cnt49O#K z?-({EvwGSV5_I?itcy*nPQF>(NHI}{!tvh%OWc7;C+~e)Udh$r`gnIW-PkHXqynAOLo7p~QJkijoGr@^T0F;ybJsXusSKDiX0o=aYNDT_D&lU-Tkakyw3 zhu5vFT1(+K3x0tHz)MzEy+$hEioXx(cI(cSRe1=z)_Zy6M7*tBX>_5NYu3}@`C8vJ zNTSPZJGT@sQ)ezkWEZ-nmu}$*391(4qWKP0xhwU7zOQ0#N0-_5UKz~1gv^* zFJKZvV6ARlqEL=&wEAPLfTpVBP-fOY9ja4y>$9u6H*2QPm=z3!QnyyQIlh=4vw=Xg zPS2;;MRx0xt9s0tX;|kJak=pKlDl7+r4+=qo*n?HSQk4kvP*V!zgNeDz8qPpu7rQG>5ik#A)hF##LoU5S}Cdj8PbH!;iOHZAu8CEn;U&#(@6Xg)<43B1>ykD6nSjD$C&DUOp_ zJsHrs0?qY83_cLukphGe2}h`xtvv>on?oYu8lCEtAl3O5@V`nnB+^MItEW-}e-pjH z0ko)L6uK94XoP!L08tv!P+iSok@Vd#!fKs`{erzg=o`tQ1e?OjG|DwyK(_>@^^H^= zq@!DdLdUHChSW!I#S!bA|VKPbS^UEoP2fUaFy>CmG7Dqle!!*sVNh^1>iz#(vu;j z>CyxJ%VeB$}~Ls4TRJaXziV}Zgh_})BBz-Nb+Txxzg5b z_)sH?yD3bfUQCNqV5p_yS_5+quY%v^NoHxJfYsVu$8S4dOgn_SS-bTSx0m-$ot4)x zj!NK(v~WLDNjY$$dRrjniL^2$rKS7frsOjT9WEKAjRQ%&071@ner^8vrDM>2UQ=imN<>Kn!m25gDiY~Kl z87hv-ML(s2S_ZPQw9zW-&)FF0>zLj!keoayO%2~$N2o$M)Gw4Vy>Fq~HYUxyYQOhV zqm}=6wq>|)%Mr@Q^V7`F|4`~1s>tc%{8AceG@eJr)=l~2>wSuAi~0j&pAC%dmR3pu zbiLi9zk4H_tkPqt2pR`a*VR#_@21ml4bmS5>2=RMtoUf^r04ZnoLpX#UMaH=P`%(kZ>ww^Z?{1Wa+0aQ@cjD87MX)$%| z%U{AxD%@N*k1YKqd?gM0x44aHT4m3H5B~W8nrB9;1|O3o_FEF)enC7TXK?dTMMqo18>87>(yp zPSz_UvVT@=lXbb8ZM{*GRIk52%)@$gyDDev!#&6--3C|mvC3lH@m+mD`FlTmxA(C+ zy2n#K?+o*5FoPCrYsjA~!r{mED1~FSd1l*kQn()N1JP9!fR%N96?;9cRMOZ2Zz>!N zVNRtIUm6ZyrKR8j!Vwl(=%>pZn)34U_(b=$0(n<;laxJQ;gbt>LZQ`hnM`M1YOO4P~2wQfI1P3i&ZiRk!{KQwYEGXevoWyw(_tJ|?=a=AZ`iy-+t&RzEpU?- z*bwdEHT6e(ee8Rs;aF|`n|Q+ZnhDHUICdXM1bsKUb=<9D=V+$=U~1r9j)mbI8ZM*A zjBe*@uGyNa9HuI+PCnN}quY;~OS$V1EJ_4y72zCukwBxLZZm&SQhZ?xz|{*m>=KS| zMhyB^qx*|LcsT>CUZoX?GhbGo+xm@4mk6G1Q|rAs1FVX}3DOF#euO^5Tb2zpB^qC(SX;9gdiaqQ!i5l^R~W>ST~cyY=l=4Ms2T-lVOIhK3t*oHz&}Ft2G%5Js(5*`29lMk!zZ}grYQl9+qqlRQHK^ow^e5(ZiuKvA6zeDI4~+Z48#u_CSUG^? zUE!orcAGTQWdYM^cw(ZLe_)VR6{A{+O4q=>iRa{;*68gXWHr=Z0G@t_A<19aM&t8n z2IhrITyH&M(t{i5+@r*eKg1g9o==L;QJjB%p)}Iii!QTmG`gtzIVWPMdyZ2^Q(N>~ z^~+~au%|L)x-#TkGK3bCPCr}wz401qrK^8mzoS~TLb>Rr z&lS(afVCs~vwBpI6;3C*#gj^zw8H73Od7)`t#JA)lUkHXC$n!h9%@x~dx_*PRPw+7 zObPxlkbj<*ztAb}*vtFjP-{R*j1tUM2`|fYqt8hACTuKDX!x**8v@8W1gw9Imszi*=*r#PI7u2r1;n* z#R(LFIYx;*OV_ajivJUc9OHC6-aC4*)oo%&YMD(AKk-|1ia|j}bNZm((c62l^q|!T ze!!nd+3W7aXlcXySTWxnq&b<=+~U1G*eWx(dHe9kT}j?7QVCXmq&SOpH8I;h$v?-*iLyQ|2seIfQ(u1+(V(@>J7L6Uu; zz+rDv&+>c7cbL)m3e~wiN=EyKD)H1n#xsG8J%NlmgDTygP-jq`9Z2-(;#E4st#X<{C=fw6b&1{4AmTD z*jERH_CJ$KZf7WyR%UL~LXQq|`>Izq%!+qmDLX?wwUoMXD$y`PilhAN*wme&aj$yE z4FjbAHLABeLfi)5`HvE|BapdhfS=hNp%RtZ7G>v-P#2}4Syj0mp+Vmw8IN7Ldh7@t zN!5dv0PFTq&US>3BXQJRdhwv;l~Bf~F4xNG4QEjWdezS>t*BAr#&4*6w=3&T(bi25 ztlJk@w>`y++XF8u>$Zn_tGe4#$Hr|B4OMk_Y;)aTqw_qO&{}# za(9sA)=*bnhw6%` zvELdRL|XzdL8_y5WrUB?{cnR!kMi3?dL+BRXsn{5yHV+wqjg|Wg{~M{(9eOA8$+F8 z*BQgDeD^iV%C#y@U!4Y3l`pex1bSapEw2q#`*yJ%*M|D($6doZQhR+UrtDl`G`&MT z>>4HWruUSrO9Ppk0-0+X$w2@R#a1~eP|*{f^8sB}7&_r#DxFS|Crt7Q0V zT4r0`A?jH?F;q-A7pl!0RDyD~L^?q|d?&#cu%_E{m!k-AH9SO3dUA;O2hd|gT#1M( z@bDlm&1ia>9;3rtr8!$`K9GrvwdP@=BEs5W#-%h53zaF&6P4z}L)pZdZcjf*b4!Zm z>wL|&(R3Bnlx|9~JL?^l=R4FNlwx0W&Gk55pj#+kwYQeKV<dukm!9TesC>)nRisT{Aj zvq>WcG|K54eM2X9-=}R`svXd9B^kcOE;A3~Qld9q^jb9>p*>+uk5Ns!QWeg4oir#M zw`~9tsVV!Fb~mlksQrKvoo9!idtE6xFL3tx0snb+C&fQeO&{0Vh022I4Q33<&-cSv zL)cF>WThRh)beiD@?5j+>p2Zf5yZoSb}Ma^=mGt`CYbyPt>W|TI7}cohep0MMa?%-oQmnMje$9Jgv{f~;j9O41 zRTIW)9|bj`?GzYXPsaDL`zhnmN^c{#*4p6@^ayFG){3=hpS{-ZuJhV`*A8#wQCK=Y zn%Y_yJA9c=bwrTrS3gykAeGVh8RY;tYwGJheOd8t36fkm%r86567+QlAJo?&%=N=X z%jAaV6Y!RY+a1CO_jMoyeI5608Gb>{H3ob{oxiQz^`bT_KQODdKUuxs3a`*n#{^OC zE|^@8Y5RVwSXJOLs^{2mm8Ee3ASR+HG}LA|@&;cUye}k@r*0|3-;y(IT4zkqyI@ zAHF%@NtXDHRjDMj7)=vstlh=J7efFAdl5;q@PBO};vR3$SgXlg;&mBkb#J(wd@??h zMi#S(7uT`s51v$33*NOi_9Tu@n?XfQtC{VcGtTN%l0oh9D4vKk>2&Y~Us$(k@tz!K z^>E`ib`>0*GE93{nOQ(N$7Cqf9nOshzT5DX4_qwe|U}0KX4EE zY6$b+tNAMe{tsHFDg{F-f&{Es+l@=!MwctZ>u|?JteDj>*W0n|4-4M*oZfPQMH@4p@=5ZmyM=S6GHbMNNjC zg{X{v86)C{77i@*zMEq8^Uj-Q#VSgG6rwmJ8xgk(0G!s$0in!$Y?@Ul$}{kRY5E*g zh4&G{b(K0H3#EjeDdC8CQy~Sal2sC+no{MqA3EK-)%q`EbJ^I@dHE)10U{|2`BB4; z_+}$VaTTjGSeUGVGR65E9`BFTq_Eh_nrsyx-67S?jw&Cdpc6y{3MfrUhIw>8#rRGL zGFRs39&R`~-&;J%y0?ANEbEL6bGi4!BI`NxmG(y#TX&|ped-+NVW%RJaEcX=75BkG*&hc#pABu75v z3ddaym!yoHEEL0pA)Y|FcNv+DNS45@SC+ntit z4tDh8P){RrrxPU^cC+{4$p8X6#jvt^wUg-SP~8JJI9KdR(iwkpH&NQ7!Fqer zO8o7=wK)~gm%ci({C_9Sj>NSQJ=Zx=lqW2KO=QV(r+A7pa+5b;tyMB|yHgKNFr+_E zv$PvE%|-ULq&qrAx(dfsVawkBdLa>^k$mAhz)le5XI zKi{gz-2g$?1({jybe!TeZT9A!k3&EX(;4KHh;T`F|YDd!N-kdxiPCgv}j??iv2&!-#N@g#96DG$a1JS;YaO9DWvjH7U+;OZ?SP+gJ>qHQbK3%rkTh+g|Sk6E2; z?~!fR#_SnOr_GyV;P>wf79Brhfw$o)E8f2H-`1<9H+#Dk4-X%C)M0~1de=N*<+m?* z(!$BA^A^rqHgCp)Y0GCUILW*IDTtf$td(WP4jVCg@VH6Sjv6y<)X^g+j2JU=l2Uf^ zcFQvBmMmJdj5Hm!@RXAWFI_fz(X83SS)(y;>9jcu7R^{@DAVUGS~7dy-xn%FHa%x; zbJFL`TQGatLZoOvaffwATKnF&tmbg~iWy5!oHpmAg)`gxd|*A`WGp&q+2WIyO(SOS zyHBiw^uT8WF7vWJwJvJE`BN)96j{1>+KdGY7R_wG_e-m<)xLL^^@3TXM>4T zf1vAI744HV9G|TI?pD!0`8FNBTc`d>ML!r;+^1liK-Yd9{g;aN$t4jL{g;lmGC1Ep z`Gs^9ZDpvxj*9llOLQtnM@Kl?8~U9!#%uk~`p|sV`^WdzG^-`od-Z#(r@7d};5gqh zhO`&$wjQ(02io8H5nS%iO1jY-^GwT#8eff6g#DU+4Cp2{WA3a_#Z;>43pD>{qZHw8 zgy}k4^Ba|l-=D;_fgUn`_)BpGzpin+7WBvjMZ8dZ@1g&D0^=FY|L|nRf2giLZ)^I# zDT@9dt%FXvp^UwCoFXJN|IbXvSrK1jY)Th~>U_~rIg}u8nhIZ}>3+_(>YQb2dQ|h@ zsQE`}1syg0hv|wDOI&<))%2nn2x2~DoS^7NZym87z9LEJ}duNA<^;rs>~m z{^K=$fu^s}1b-5-O4DD_^giI{q!;Lj$V?@{S3qktPy zkD8;xmumi(J@Z#AcYmm(jk${MA7!^k)9+oV=;IKkD;72$SGpRDO~7AV4KR291X8nCWPWjI%njrp4Y z1+93Xrk|ZxK?itZYzhoT*V2us5rE4zJ@q`jGc;YD@P`)SAMtmwjtEY$L{912sOhOE)!h#|8LH2l z!=`d|z2MV(E5G{-I&W$@2c5M@E%Z~Jz(4VjX7P0G(+LJ$&q2dK1X7?6BUh)M37QW& z8RVaq8CS`S9-8hS^S@5hdxM@!f>MuMZSh+7p+!y9dXf*krKHQWJpU9~?I&Zk=1)Do zH>lYCltZM}e~Fgke=5M2bEBfWhX1huKjLn!AoaB8$2C3mD<=sPukH%(7Ht^QC=PdzVxl%^kaB0oJU zr|XD|pH&L{lL!}Rdg}KLT+sh7&q3pC?;rcoCD3O$P3%bXUmW=*aizBb(IYnKX#ZWB z?g|V#JAksE`XYL(=09D(-NE5Wd~Nq|&~$#`tA6wq+ATWzJ+B_ovCp*B13N#wwLe&$ z()V(*9OHHGj6baELhLZZ6*G39sHG?!IP+^8q>L!l(O;%SH!@usiw7Q@>~PRcoPL14 zT3V3$GuII)$q1(r!Fr?F`A2Ed>0Ru)P>}UU!nxK`%S$qR)jAKb;s&m!G45YI-Wlb*-kSqNUd>x@)8&m~Yn!QeP`Rr0J=s z)|WLs72EYL=sD=_{LiiU<+;n3!&3nFz>27aK`rGhbthV$rl;bPx@&ssc8bB8?w|FD zg+#uN()5G2#&kf`WF7ILF70BSVCm&Q*!g^38JUF*AWWa4Gt%2DGwpnLy-u9^p_B(T zJrz9vEa(!C{TjXFQtL8a*8Hh&5kJ)Q)P?>Z6y5!=9e95tg8c4(u*Ubh#1Mq?k-EE~ zlcuM>QJX`R*~&6nbW`&U?ausu$UDTg#fWAtBXw`dSWQobGSX4wWTXG#9pA=9UcGJS z&p2NvOI>!qOw&^ViW@aO73ushO;257e$vD1ll($Dk(WHuSC{)OI#Zvs6@|a)=u|XQ z*xQEGBg!xZpgj1W3i9*N2s%jxN}sRiwA5xzPu;vUip9;Cp`%lwAd5A9@lGWN3*UUL z()3hd;RTwWieJ8()zoiBG+FI`xX8EqF`aDFI3?ciR$k_0?#DVh^^O02O;3IGAflwE zz}TW|x&I_91)ZFe3h}Ph^qvh$eVVq5PT`B8%glG|9CwyxN`-DN()84KfoEzuon=Z_ zH}%K3Ow&`h5^dD<)VE&uf{rHZ-2x*Dw`r!-H`cFvuQ+zTxzo#`KYRF3Q#!_ql-<;q zniZO!`bCO zz!f@K>K>h&ydMzl(s`03HT9L$R!vVu-oLErsp#wXH9Zw0{jH||7q~B*^>#H<@eXwI z6&aKYN$Td^od$b{>gd#WfJbZk4!r;{TUUkInx2ZcTdwJ;xYkQG-Cu^!Kp#QZMnyl? zNJUw1(g{-ch(4(4sjthP()3jL(SC131U=(Jy7rx3ru5dTKgMf1St@4b6HUKQkAJSy z{6A~@3%a>)(sY9#YW2BjuM*8S^&wRTI(h$;@rr+lZl=9B*^Ci7I(6^*Xid-Esgmi% z8)LGjf2zkaN1!&)HDA*|o}gQll$_uQiCH|#DOuUM?;Q~zsgZ?#U4y5+f-rmy@+WuRDl zf4rt2yfFtK?j$-5J7=7vIVyC@N!kOeH9d7F@8z1F3L&^g(^L14Z}v81;F0(+qH{2| zXW12rHT~JI6#pmMx-%8sHB!Nem+J(n@YtI)J#}NuJ(`~S ziv0;qPlXG8tm$fN1bUu{+M?aw*eD#5i4_IPcq*hKPt!-}cDF<)tI+h+9cE3Mo{E?o zq3LHmpai_79eBK=cQsOXwJz2PQXsL$KihM%>|s`^e(|7RL;Uv}l=f-Teka!6r@}6? z%rV}i&US73v#2w4J?pi0wx6+{`pG-C%I+!rQ7TrvFR8K*Hy3&DRN1vT{`AuSdx2M2 z4YJ{PT>9_Z?USl)*Rs0(=)K#;?k#dBso7RM-z(~haLr;B?l#Ihmcrv7RpGqe-g*kp z`$>hHE$>}~bGOj?G8w6dQDwNl&FkFF?v{RXuFX-c-lT4JACcZg1;?7+u@!cw{{z+l Bit_*f delta 75125 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 i32 { // symbol := 5 Global mutable variable // symbol : i32 Global mutable i32 (defaults to 0 initial value) +global_value := 5 + 6; + // This is the entry point export main :: proc { i := 0; diff --git a/src/onyx.c b/src/onyx.c index 051d0562..ec1d9420 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -30,6 +30,8 @@ typedef struct OnyxCompileOptions { bh_allocator allocator; CompileAction action; + u32 print_ast : 1; + bh_arr(const char *) files; const char* target_file; } OnyxCompileOptions; @@ -57,6 +59,8 @@ static OnyxCompileOptions compile_opts_parse(bh_allocator alloc, int argc, char .allocator = alloc, .action = ONYX_COMPILE_ACTION_PRINT_HELP, + .print_ast = 0, + .files = NULL, .target_file = "out.wasm", }; @@ -72,6 +76,9 @@ static OnyxCompileOptions compile_opts_parse(bh_allocator alloc, int argc, char options.action = ONYX_COMPILE_ACTION_COMPILE; options.target_file = argv[++i]; } + else if (!strcmp(argv[i], "-ast")) { + options.print_ast = 1; + } else { options.action = ONYX_COMPILE_ACTION_COMPILE; bh_arr_push(options.files, argv[i]); @@ -136,6 +143,11 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { bh_table_each_start(bh_file_contents, compiler_state->loaded_files); OnyxAstNodeFile* file_node = parse_source_file(&value, compiler_state); + if (opts->print_ast) { + onyx_ast_print((OnyxAstNode *) file_node, 0); + bh_printf("\n"); + } + if (!root_file) { root_file = file_node; } @@ -155,6 +167,11 @@ i32 onyx_compile(OnyxCompileOptions* opts, CompilerState* compiler_state) { OnyxSemPassState sp_state = onyx_sempass_create(compiler_state->sp_alloc, compiler_state->ast_alloc, &compiler_state->msgs); onyx_sempass(&sp_state, root_file); + if (opts->print_ast) { + onyx_ast_print((OnyxAstNode *) root_file, 0); + bh_printf("\n"); + } + if (onyx_message_has_errors(&compiler_state->msgs)) { return ONYX_COMPILER_PROGRESS_FAILED_SEMPASS; } diff --git a/src/onyxparser.c b/src/onyxparser.c index d045613e..af39eb91 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -12,6 +12,7 @@ static const char* ast_node_names[] = { "BLOCK", "SCOPE", "LOCAL", + "GLOBAL", "SYMBOL", "UN_OP", @@ -19,7 +20,6 @@ static const char* ast_node_names[] = { "TYPE", "LITERAL", - "CAST", "PARAM", "ARGUMENT", "CALL", @@ -28,6 +28,8 @@ static const char* ast_node_names[] = { "IF", "WHILE", + "BREAK", + "CONTINUE", "ONYX_AST_NODE_KIND_COUNT", }; @@ -705,29 +707,50 @@ static OnyxAstNodeFuncDef* parse_function_definition(OnyxParser* parser) { return func_def; } -static OnyxAstNode* parse_top_level_symbol(OnyxParser* parser) { +static OnyxAstNode* parse_foreign(OnyxParser* parser) { + expect(parser, TOKEN_TYPE_KEYWORD_FOREIGN); + + OnyxAstNodeForeign* foreign = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FOREIGN); + foreign->mod_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); + foreign->name_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); + if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_PROC) { - OnyxAstNodeFuncDef* func_def = parse_function_definition(parser); - return (OnyxAstNode *) func_def; + foreign->import = (OnyxAstNode *) parse_function_definition(parser); + + } else { + OnyxTypeInfo* type = parse_type(parser); + + OnyxAstNodeGlobal* global = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_GLOBAL); + global->type = type; + global->flags |= ONYX_AST_FLAG_LVAL; + + foreign->import = (OnyxAstNode *) global; + } + + return (OnyxAstNode *) foreign; +} + +static OnyxAstNode* parse_top_level_constant_symbol(OnyxParser* parser) { + if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_PROC) { + return (OnyxAstNode *) parse_function_definition(parser); } else if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_STRUCT) { // Handle struct case assert(0); - } else if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_FOREIGN) { - parser_next_token(parser); - OnyxAstNodeForeign* foreign = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_FOREIGN); - foreign->mod_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); - foreign->name_token = expect(parser, TOKEN_TYPE_LITERAL_STRING); - foreign->import = parse_top_level_symbol(parser); + } else if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_FOREIGN) { + return (OnyxAstNode *) parse_foreign(parser); - return (OnyxAstNode *) foreign; } else { - onyx_message_add(parser->msgs, - ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, - parser->curr_token->pos, - onyx_get_token_type_name(parser->curr_token->type)); - return &error_node; + // Global constant with initial value + OnyxAstNodeGlobal* global = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_GLOBAL); + global->initial_value = parse_expression(parser); + global->type = &builtin_types[ONYX_TYPE_INFO_KIND_UNKNOWN]; + global->flags |= ONYX_AST_FLAG_CONST; + global->flags |= ONYX_AST_FLAG_LVAL; + global->flags |= ONYX_AST_FLAG_COMPTIME; + + return (OnyxAstNode *) global; } } @@ -759,21 +782,43 @@ static OnyxAstNode* parse_top_level_statement(OnyxParser* parser) { OnyxToken* symbol = parser->curr_token; parser_next_token(parser); - expect(parser, TOKEN_TYPE_SYM_COLON); expect(parser, TOKEN_TYPE_SYM_COLON); - OnyxAstNode* node = parse_top_level_symbol(parser); - if (node->kind == ONYX_AST_NODE_KIND_FUNCDEF) { - node->token = symbol; - } + if (parser->curr_token->type == TOKEN_TYPE_SYM_COLON) { + parser_next_token(parser); + + OnyxAstNode* node = parse_top_level_constant_symbol(parser); - if (node->kind == ONYX_AST_NODE_KIND_FOREIGN) { - OnyxAstNodeForeign* foreign = &node->as_foreign; + if (node->kind == ONYX_AST_NODE_KIND_FOREIGN) { + node->as_foreign.import->token = symbol; + + } else { + node->token = symbol; + } - foreign->import->token = symbol; + return node; + + } else if (parser->curr_token->type == TOKEN_TYPE_SYM_EQUALS) { + parser_next_token(parser); + + OnyxAstNodeGlobal* global = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_GLOBAL); + global->token = symbol; + global->flags |= ONYX_AST_FLAG_LVAL; + global->initial_value = parse_expression(parser); + global->type = &builtin_types[ONYX_TYPE_INFO_KIND_UNKNOWN]; + + return (OnyxAstNode *) global; + + } else { + onyx_token_null_toggle(*parser->curr_token); + onyx_message_add(parser->msgs, + ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, + parser->curr_token->pos, + parser->curr_token->token); + onyx_token_null_toggle(*parser->curr_token); } - return node; + return &error_node; } default: break; diff --git a/src/onyxutils.c b/src/onyxutils.c index c98dd67f..cae6546a 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -18,8 +18,12 @@ void onyx_ast_print(OnyxAstNode* node, i32 indent) { switch (node->kind) { case ONYX_AST_NODE_KIND_PROGRAM: { + OnyxAstNodeFile* file_node = &node->as_file; + if (file_node->contents) + onyx_ast_print(file_node->contents, indent + 1); + if (node->next) - onyx_ast_print(node->next, indent + 1); + onyx_ast_print(node->next, indent); break; } @@ -97,6 +101,19 @@ void onyx_ast_print(OnyxAstNode* node, i32 indent) { break; } + case ONYX_AST_NODE_KIND_GLOBAL: { + OnyxAstNodeGlobal* global = &node->as_global; + bh_printf("%b %s", global->token->token, global->token->length, global->type->name); + if (global->initial_value) { + onyx_ast_print(global->initial_value, indent + 1); + } + + if (node->next) { + onyx_ast_print(node->next, indent); + } + break; + } + case ONYX_AST_NODE_KIND_SYMBOL: { bh_printf("%b", node->token->token, node->token->length); if (node->next) { @@ -176,6 +193,19 @@ void onyx_ast_print(OnyxAstNode* node, i32 indent) { break; } + case ONYX_AST_NODE_KIND_BIN_OP: { + OnyxAstNodeBinOp* binop = &node->as_binop; + bh_printf("%b", binop->token->token, binop->token->length); + + onyx_ast_print(node->left, indent + 1); + onyx_ast_print(node->right, indent + 1); + if (node->next) { + onyx_ast_print(node->next, indent); + } + + break; + } + default: { onyx_ast_print(node->left, indent + 1); onyx_ast_print(node->right, indent + 1); -- 2.25.1