From 3f890c9f30465ba7261de9b25edc6be5bfc87c76 Mon Sep 17 00:00:00 2001 From: gluaxspeed Date: Mon, 26 Jul 2021 17:22:05 -0700 Subject: [PATCH 01/10] fix reverse loop have to add range, which is always 1 for now --- compiler/src/statement/iteration/iteration.rs | 3 ++- tests/compiler/statements/all_loops.leo | 2 +- .../compiler/compiler/statements/all_loops.leo.out | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/compiler/src/statement/iteration/iteration.rs b/compiler/src/statement/iteration/iteration.rs index af4ffde859..ea7af7a1eb 100644 --- a/compiler/src/statement/iteration/iteration.rs +++ b/compiler/src/statement/iteration/iteration.rs @@ -57,7 +57,8 @@ impl<'a, F: PrimeField, G: GroupType> ConstrainedProgram<'a, F, G> { (true, true) => Box::new(from..=to), (true, false) => Box::new(from..to), (false, true) => Box::new((to..=from).rev()), - (false, false) => Box::new((to..from).rev()), + // add the range to the values to get correct bound + (false, false) => Box::new(((to + 1)..(from + 1)).rev()), }; for i in iter { diff --git a/tests/compiler/statements/all_loops.leo b/tests/compiler/statements/all_loops.leo index 994d0f8264..d8128513d5 100644 --- a/tests/compiler/statements/all_loops.leo +++ b/tests/compiler/statements/all_loops.leo @@ -6,7 +6,7 @@ input_file: inputs/dummy.in function main(k: bool) -> bool { let reverse: u32 = 0; - for i in 10..0 { + for i in 9..0 { reverse += i; } diff --git a/tests/expectations/compiler/compiler/statements/all_loops.leo.out b/tests/expectations/compiler/compiler/statements/all_loops.leo.out index ead54a1743..392b2542c0 100644 --- a/tests/expectations/compiler/compiler/statements/all_loops.leo.out +++ b/tests/expectations/compiler/compiler/statements/all_loops.leo.out @@ -16,6 +16,6 @@ outputs: r0: type: bool value: "true" - initial_ast: 7ecd56e44c6b1cb4f702a2712a2a7fe3bf564dac26a70e1f14151a688fb24769 - canonicalized_ast: 360ecac21f95b0e1d949d49458f2c4557446d01db08333d6f25621ef47a78a66 - type_inferenced_ast: 853fdefe080011aaa35363e827a527ab7ce6c7e93cd568c8a150211fa6e402fe + initial_ast: 280277fb32e4eece0eab1f72338a9b60b6792d7f11124e8c4a5678ef3fc4a04e + canonicalized_ast: 84769d3580d79825fef6fd00dd9ab88dc6eaf16bf2e3f3c46feae654f8f1f746 + type_inferenced_ast: 078070bc5df73c49f8de0ca37ac624c93a67551e0221dc1c65a84588507a2a6f From ecadb3c321b2bf441cb7d34e21941aab7902045d Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Mon, 26 Jul 2021 21:12:30 -0700 Subject: [PATCH 02/10] [ABNF] Make the lexical grammar slightly less ambiguous. Before this commit, 'true' and 'false' were both keywords and boolean literals, making the grammar slightly more ambiguous than it needs to be. This manifests in the formal specification of lexing and parsing, which would need an additional extra-grammatical predicate requiring 'true' and 'false' to be boolean literals and not keywords. By making 'true' and 'false' just boolean literals, we obviate that need. Extend the comment about identifiers and package names not being keywords or aleo1... to also exclude boolean literals. This is similar to the grammar of Java, in which 'true', 'false', and 'null' are not keywords. This does not necessitate any change to the lexer/parser, which already performs its own procedural disambiguation of this and other aspects of the grammar. --- grammar/abnf-grammar.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/grammar/abnf-grammar.txt b/grammar/abnf-grammar.txt index 233f0b4910..124a0f1f37 100644 --- a/grammar/abnf-grammar.txt +++ b/grammar/abnf-grammar.txt @@ -395,7 +395,6 @@ keyword = %s"address" / %s"console" / %s"const" / %s"else" - / %s"false" / %s"field" / %s"for" / %s"function" @@ -416,7 +415,6 @@ keyword = %s"address" / %s"self" / %s"static" / %s"string" - / %s"true" / %s"u8" / %s"u16" / %s"u32" @@ -448,7 +446,8 @@ hexadecimal-digit = digit / "a" / "b" / "c" / "d" / "e" / "f" ; because that is used for address literals: ; this is another extra-grammatical requirement. -identifier = letter *( letter / digit / "_" ) ; but not a keyword or aleo1... +identifier = letter *( letter / digit / "_" ) + ; but not a keyword or a boolean literal or aleo1... ; A package name consists of one or more segments separated by single dashes, ; where each segment is a non-empty sequence of lowercase letters and digits. @@ -457,7 +456,7 @@ identifier = letter *( letter / digit / "_" ) ; but not a keyword or aleo1... package-name = lowercase-letter *( lowercase-letter / digit ) *( "-" 1*( lowercase-letter / digit ) ) - ; but not a keyword or aleo1... + ; but not a keyword or a boolean literal or aleo1... ; Note that, grammatically, identifiers are also package names. ; They are disambiguated from context, based on the syntactic grammar. From ac65ffd67ed3eec917f56bda4ed8b9c52c6da89b Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Mon, 26 Jul 2021 21:16:34 -0700 Subject: [PATCH 03/10] [ABNF] Regenerate the markdown for the ABNF grammar. --- grammar/README.md | Bin 111732 -> 54062 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/grammar/README.md b/grammar/README.md index eef68c73a3dabc6eb17013e957b0affd605a8803..b22bd5ecf0493d8699fab145a83e0dc8e14e08ef 100644 GIT binary patch literal 54062 zcmcJ2`Ewk{k?!yFSM=hARse+oct@z=n{|7(-Js7+RWE19t97+l&D!&u5k72}vt}(rY??K|aO3^? z#Shh=n`N`E=hgSyvw1tMzHO(?vTLduknu}*+03f5n-Rf##?fE7(W_@G^jdG))$*`v zT9mJ=x6Qi4-_-*@fa~qBTCGR>^@aeitJM`79RSLkYF+~%->y98IJH^TE@cvztE&dT zphL{d1&G~kII06!?AD^Fo^W6`p)ya#$R6m})e0lQX^e>N4b91>uY4f(x ze%i&=yv6*0&2_!p+yLy+|NZ*q({E7!i;oFm!)%QQV{QkRFUmsPkfEZw4v;(2%LXdS+&6-W!&O1!@FCbqBh~~5EvVPlu zjMJul3wY{k3TE<19PV^f&sWO}nU~-t<)7;Ld9_?^4yz8ZJ-*y*uDXZE$Jf`_M;FWO z(Q18h404my-SL-zWi)pG;n(NO&3ZN4PD!TloyFuy&$`pq67yJgAY*m%)r)7<{>k=Y z(JVKB|EqfXX4{Ql)S&jW)p~JIU99WHq6Y2H$>c{P*0@-cgDUWgwC7q_uimyZbf9b@ z)OOYJ*b zcPq!5vud-dE@Z7?jiRrP3$p1pn85~1dV!CtcDcbke*`e#6KTBdILwAvcQYSxWjdKr z17ffp{%NO}K3Hr~&)Z*RQF;udARdmcFWc#5b*&@Jun^{}D~{k6*2&Xv?~{{O>t-R; zXx1YlCN#U6WBQnhlMNR3=SzXDoo?s#`jF!YV`FKOsTIEY4cB{n&V}dj0Im=ga8v9= zR(O`Zz^dJz9RcIV^>lt;|Jgtk9WQDK)%Ee&YW1c&egj;toB45lwmg4?g#pZy^D!BW zas^}q&Av;n0$2a2nQf1+n$^|3Ii9XA=I!eEZMWGp_dY+mnw=kvI9C!YqXE!`?|woc z{MEYY!1_JJW06eP4G6A$D7Zw+x1bV4r;}j>(X(}jE;^v5tESDG>kE=#*+IC2uWm>Y z%w&UNvts+pDOaOa`IjmZP;mn=MA`W-5pl57ApcjIl);C{fxev zql=?zLM)BZvV%05NcrUX_isN1Zor=1}m8%`3dAGqL=~l3GoS;!jjR|vVb&44Z zz)RXj)G76RzPbiZ*Jtg9RuLp-0e`C{WXiJMY-z_Vw~I62i3UtkS&-F$8kjdYXi>dw z>xZNL_MkcgIo3BoE4UBRlcq{_*}SXW-w+~y+X_c{EPrrz@8}->clX}i$ze75V0Q25 z0sg}89AxsryCZ%$nLq|nBXLaSY1femWh#P{=vHk zcgGLDn7Dz+em50$2G|8!&;y^1IePue@|U00YWVo`>hY5bfAhyDpH=(R=C7VUf39qH zAV2{sVbRE-T7@R(@*?oX2i@Mu*EF+~11l4*g;JMMT#Nm`WoV`BU(#{stKE+ZUf5R{TZ+>RcrrJRg5%|zI4vc(8L-bP zusbZ_2CeVi`S_c!|KFdU|2dLzwFLjJpuAzsO1JM5gIl0MnkI_ebZiwW3RXKCbQFP^4n(>em#g(@vA|dJ}-Aht20^`=<@7_jND+_%ZtP6*Jiy6gxR!ECP243cNCU& zH9_wa)(~NZzd7Ut+(G`e=N+?NsRg?wt7aBkGF+jPzRT*3t62mm&fmsIA*aGo(kZD-laTI*9n}jkI1b__r4V!#wBLPIoFQf~0L%g7CSlIP{RCfT zj%7hJ1wjDn9Mv3@!&p#`Edd*SA6nv9HCFDv{Llq=xmvfs(wm)EknSBUz&Tb%)huVS zCika^4z%jv!Nh>ck}|tgJ#U&B+YvkPQ^+|ThG-Vh2Jp~D5T|`&E}6sqYO{v7yVce=FWDl4(9A}8!Y5^VI;%_*h9oz&b6}^c8j)z-Imk{2LLxoH2Q{PV6ACfrl!y$4wpcUnzDh}Jdu{yZ8M+U9FE}S zL({S?Dd3lagf5^$K~)+UQv@Sm>j)=lyr-Ru?c*FGhyglVJ^v0OUA;F)kR@UPME6V_ z4J?sn4UX0-DxESQ1ld=hIc1{LIjn$Hs|#?GQt#>#ULc4JzeOX2L^{GV*T4@nD~tjx zL?19=;8GQo1iNM{OclUZO9&z=M??uIjYl#Ztn}%IV%ZxyIutbcvO0&AddMj1=H`l0 zgOIw;AkTnZ2`~aCRKeU46vRlv%v^o2At5xesKKdDCwZv@7O$t|=Nb;VSQ!%If(yN_ z$685)R%@zt)wY8r zy=}&x{UFVrj4JmZK8nOg@HwgAijTbnFLbeYXO9g1I~yMlHYVT>eweKiO-cYuARnAv z0KU|I@1wopN$qYq-qq59eJZ+CZM#i_@W~c|I>zkD3m%?G{c7@&bC$;w4K&jSStrcG z)=vAVGIgX#`?%x!IEH6Q15O5%9fE9B7Uf7wI)Q>-VF!ZzP7j!R@*EOT)UeZ8u)W+q zT(?=RW(+_{P3L>V5ro~d^df(B0^zx)0qT1ctQ@)~-jMRNeph`|-Bfp~Uxjn=mAir> zJfOmzNmqBic2#{eg8%W;=pESj4#~zpD)dmr9yni$ptM<5`y;6x`nmB#pEc7OdLPQl zpetEH0FQl(lMF}$X=4@Y!Si+voYBaQ-=PFW8C}b^8P+?o-8ERopd2M^eFg^_%lw2p z08~N06^kE59J~jMf=7?MA#{}Rn4llO`W`a$2P_t`!(HE7Akg9EcVaL|cks=NTK2o1 zibAH%5ekFkFL^8yXG#2Qjcn_h7Rd|x(gzW{7pv!M1TL}VTwQ}|bP}A!BKCuib%!>>44>NL70o(Yq;J|Kc55&RjRm=3F+I`&Hj^5f8&fRk(jiTW z6STm$nESL9h+dKXj&veO8DoMtqv3wRErR{r+JtLB`&WT#)V{`ED-=rCz!-+vAUm{Z zhv~qZ;EbT7^y4AofM8}MT*xM{*xRz91?yKEpEU#`#OAx|ZFdCO3>oJE!35M9lzrlM zs-7I3Trq#AjqJmCg^)7LI4~H;Sg&9rJ05Wy$T$;;PJ3TSB61X|6>!mHbCyyQ=66$F z!&TB%;h9(Uu{G1wZUsLJFBR-GU8lg2(~a$0`d|Pn3iGHzz3K&=pU9FHLUlBf|UqT@wlTL~#?!+tT zw=x4h5)T3jL>7sPuGN*qu*G?yYJo6qz<|N`6nTabgw1QL5+-!03x{lkmW=gq1c8Kr z*M)kL1Jgnu?BA`nKCF;(!GaJvm?_fE7dc14h@Ejt5(rhT>OBJ$7N8bA1&G;P1$w7Q zdDugYaoiF^ct+E5U_CW;2iIg(!AU^S6Z_MScEXv)Mf%o--u|rFE>=fEO-ROwPyIpy z0XJc2zr=W)kMG2|+~FwfG^w{1s&K2xiJ#PSb~~URP;M9^b8NM!?s6jc?mokR9tD(Q z2qaPKh?eDQmY}2X@FYMn36|+8YM3yPQ#le`1l2bv=aw%BM1)EJL|o%+qM>UjX$U7o zRsjLyjv!`=5Fdr~J}L$PK_z;nLEMKFL6G;P4|5}eWcHDHXiZKlmuD`vGCBdV8H>cK zWFqGgUySh|>5jg`iH3BSQ7Q;g8A)9CNy@za-IKK}OE zmlG#rOxzoT#66x6_I~etq^1jUAbNn+D$}vRFPm%DoT$!2{DpS@ZqHuG>v!Esv;$i~ z!ztlNVV}piGh!mLMU)ytUv%0a7rT~Gr--;LY>r{-Im|N2%Yrg><_NwZJ%B8*pkg;}eDtnIBw&XpU%dD2Tv_q8G3)-WMAVQok^K(`Vz)4<0hb6pLsLSuBz38UjJk8Rc$K?y$4>hU7nMc3V1;MfOnnOkljDoq6lFvLBlF+2kU zNM0z=d?8>w{^nG`O(sKb7<2#0^bx*G^Al~3#jP+0IQ$w%$|EJP>BN*uSAWv3AS+B) zB8*K3y4gl_-oLBuUVU%d%~r@WZpMGxf)h;hv`7ZOe_wjpvqQt`9q2;sZS7sV_)NO^ zaEN%~ifS+v*4!{HPetcA8-!*peE~`#&w7EK7!0N!6e&$f4haZ-kg_CrnJ(wr%-??& z!0(Rle*rTVsQk*XCQLI}{oJ6sV-Vvz7_Zjj4ry4I0|SKe-bnYqmNAiKq|2diSqnO` zKoTf8!{Y)dfhjqjVXgvXyQ(`t6(e7bp9+*;?*bBVrvJ&Jjxba45o{{K0^}(t68JNu z_YEO*u&zh$JtgCV@h4x&Z=d|>ws0Gu_XzP%1#nZYe;>Gmbv?MBD!8BjVQ@c8!2K3- zOQJK(Pj(?vZzVv_AUaAjP}Vi<(`*ACdQ$f*DfYxKhqBA7R4w*1W(>%}zDn(uq-Cmm z#CoWiV98h%QvzjQO+qi&wPo&6fQDS@Qww3x02&))+-+YtAJJPEUPB&^e3Z%Q@Jv3a zb!69weg&PvN&%@nDx63!d(G;} z8ww77c?8e>+Z<<1p;#{x8y?o4Y&44XFr1o^q9i&11}m`uh*1S}3~R>ccu?O0C(hn9 z7?A3AF7lDHb!}|9`^*~oFt%b|s+fTqVH^qn&mv>q*`c?I6(ZI!el=MMN2Bl5IXRoJ zrf_8Z}d*mFs*$NQ?P^gnF zln~yx!y;FUo*-5mN8a!l5Xa^pevM&T3b@9RU>ie8hIuACE<%B>U9?CQz-kctAFBFR zxg{xAy1ordy073zArw}W5DILV;NO2WELo^w`KnNb%$SX3+hm2xioqz%%FI-(B_=9u@VL}>3ejgSOs4(y-9T+ zAqrWII4g>XAq=|ED6^N zU+o7RE}NS=bnNV>c0EPDpZ$seHMU|3Uv151-q~t61U8?Urcmhi%XTTpZp>%d!!qC6 z&+UhMpV}`E?%OY)er&(oyWi{R+}4pSKl^dn`*5|jh`_NGQ)|(y<3bfdmI&cqA@$j` zWHz+@#ALl`?<0?~n2%dK$!!l?+a9*IJ#1|STe5p3_LGEAX#=T2;H}a<>w(u{QN_r41wK}AoVRrdOR@W0k5RH$jyW=lZ+=Yb_Mj30jrW0E% z{e66I{D}sXPR9S=^cUbP_h*ZxzfbRtKhyr|u}feH@D-ubk7(Ni?-==t$N-YlN?OZ^ zcUx>lt1YK^wxifKwp_*UFu4&tReD#eDU;4=#HJ_ClnVyjQ{Au0&kLrkAYG1243U%s zw$NDE-SKCJj0rf!zIx^8Q5g>UyWWGbw09=|PUYX3{M*RCSdy|Fg4ZeSEKcR4BJu=@ z)!OEnDBvV9z>gg2U8$?F57~ir9U(d+L+W@FoLyPnLzbD}-;`ZUbS@!m$adyI zQ76G0LL>qmac9eq?>BOGwuQp`qhye`(e{JJZ>RbIWE8|=^`$6x?qAp*T`i9 z*t|<~gj~SLrwZwjI+w32^>^}*7ag9Hgn^WqaF|J*L&TG?hl;sIJc7}3m}S4m@{;5h zrX@w@NJ;4MFeV-h5z``)(L?T}ZbgFHZ=SSZZI(R z_`;MchrIAxMu%w@!W_G8ktSHN4685)Fl8rfI6*FJ?oPfnDEs3Q>3WAW?=xsxL=jwe zAycT*lMNu!2@O#R5@OSvcXyCT5IHfUD1{}BM!HO9*=(QuH_xpFWhd6HbXuahDFxa0 z{(CQ(vRP?ye2djs;#ZtMqqVPxrw??Mq_Q<#dVWP<<4ZT}u=XWWm4^p`13jL3_wHxe zmgZ84*LA~+tyd*Ot88lGy9T3cy$b4 z41hgR_vwhi{)QF7Uto8;-(YXM-(Y9^Qg|bfO}R;N8~nd2OwnN>pQ6J>Z-P1eh8%fe zq(&u^gDa-sw_$Q^m|Pns*V1|DP3|@nd`9OnCtq=HjF)m^G@r!btbE>MN=hm5gfbJ& z%9444a#Cciz1u(!5nYOj=h>nm_8m56T-VutPddRovD2S5f@ukT;tn<81Qg=GKL6B3 zk=?C5kTsHP#S_!))(xleWwp*ELXB0dN>S2xU{7i~JW?b?TI$iiWbXqV@dSzlzcu?& z4rHMlpTFc1xxyJppUITc$ibW^;~H8O>*O?ZfrETG-G*jg7Cm%=kiygZgAuCe67R_Tu z0_0k*+k#XF|2jKaaxT;+@(W*`9faC^+KSsNl4R<%8Fg>i1=n3z_(*an)tf=$`#5Ze zs&$nu;kUQjeeLV!YDo1W4$*W;AEO^g#-+vyt;!gJ&8Wk)2dntgG6p*a2e1tXE2<4KJY^5D5l(~s0R^DkI0ckp z=)h39kD6=&aL-0LY#cjRvhHkCchk20ZB4d%?@PZ?E=UKUv8WxWCb6i2fovB;0I`pq z*t8w(tjylZ*s|S}YZ+F_NUVf1Oj4);_SpMrFJpg+b^hcsyh5BQZEL|x%M4IiHct_# zLJbF0TB1N%b11E0flA8^P=Wbz@PpR?7&O^p0p}+-c37ElSEtyCEk-9$!#^R4FH9Y} zG5bMfh{}~*m)O+EyUY_M$~_kAxDK(0kaxJ;&gZ?wX^>W|Bbd8uyBk=bro(|+=rUzD zH@iWJgs@GLAo>2F+9=RiLfyDDsZmJ2)2GwWac)cQ_bv#s=4`X|ISeBr#-N$y?;6}a{>>BJCa3{ zJ`KcqU)>n@N+n!CL%;TD^fj-m@Kz$cO6IZ$dnmQ;({?+o`$}%o6BpQA!NV<#027?& zIEoJ>rM9q6a=;MI3xT?n^{P90v9~C*N`_C;_Lk&nnW1@kAVcwTB>+w1Dee4LcI$68 zT5%BfH(9L5*c6j%3VRyS;A|)O7KuA6bIlE?L)*_lHTEzBw(Vl59{VVx%JxvMrMz*9 zpaxbU77|a|xP1mqJ;e1Wxbn-dTR4V3a)Uc$;6S>YEOh(9A8TVQf?0`4+N#8f;6Q5Y z1s&5E406#YO=|X;1nIg`AO_Y|UI-R7abv5Y$t!s*vtQ$VQ^&Cp?(Du zOzBq$;>hEsUnO73W;x`AmSyr%vRZLswpp=~GJB3!+tAX5Z8A*T23esj1>J4-*s%2t zKH0+1z_u{OIt$t27#hQHA6xXOWJl>$V5{A@%1d<_pUBmQdWI0XmZ8f11uiz8-{6|d zIj+b;oCw#HPZ9UwEqLx+9Z$O9vMRaw9swbjzvHS<|1mWoYp$m<5%t|d4PzaLJ8Sl_ zJ@zMmT>xXwatu%OzPrB8Wd?*h1>C6vIj;=)!{GpS$8&PL|Jk2?#ul906vuJPLtNF4 z6fs;pCx6IQd*3j;j^lQ`{=%Oc)vK*|hDoE|3%8es4OHBQ$qS$UJ$NN;NMi?N%#~4Wm2!j|9^D#+WotC>fHK z8z>MD=N+of$as{U8sse?{=#cbGe8~)k1IBOj-$Q;-f@!N-Q3ej61mKehx{3`cV}@A zN0O>8_u3-`0Q1EqlI$is^~lc9PD!51Wc^~z20i7A_yukzK*r2}{-^x-$3H?U8a_UG zA|L5sAgxT8Og-Cy|A zOGz}}mrf4SPp{?E&*>)^xTyQj^wXhyI?{jr5B>Q_KH{QRw0WpM{wr-d*7^OCd_x!l zw_bwe&S3r;m*ctPXMW4Xor2YE8Hrtotbb+&MP&yT7;2`O9pR(d`VZfgt&Ez=JGRm@FQw>==>WEFED;ea>}u;M z2rN$_x3$tT)-@Bd)lD&5xZGV^(|uNv9`0MfiKACRk_=qNps$%^7ib#N_pSncfNhaX7g}?Yw$CvvOLJkbVB{QWd5+bK~eFKCriXmCk=P=~LE^e2dh7DhD)yRBRZL=xw>yeFW=rgLla~`}AOLyAt)U zYgr;KBm1NS+q!8P>*j;n+IcDKn_1WfrdS#DsUFEu9+N1IW&lY3L$qvQ{6QX3I{DK< z6CNdjZw95rcgT1q944aN!4?BE%-DhUow`B9a*(TN;IPmwL^O;69~`Q6HT3p3XJMo~ z%2O&uy87?R6nefT-_>$`ms+Pq=pfD)5+#gis2wX=1jiCmBeb{GLV;4?1m*zKJGgkV zv=ruv9x^3J-f@w1ZrC|`8LrYRMUZq-nqw@$4C$M^)}fflya$g%#yzNhuJ+)u2+I~hs)_B=`549B7DPnXt`Jx3B$0zX1MXdxPKP?7K2y{Y+W&b_p!980L7(ax1xu1&RY?g@ zfxU?}#1`_0saQ+ULk|w*;PcU?QiV0~#ywzWX!U~t2@gyZ$giGgK z;HA=oEy@qlU6w%!m~4nrWGG%`3G5D3!xpQ#vq2MH~tRGC2V<7|xQpV!K_s^fM2=mgb%pT4?i9k%h5q zTR9n3X9igSFDrkXL$4rc>NVaWWsVvzRF!uy`TS-c*K*Ebl4%NQAts!Ud`a#e!f?3u z6-C|_pRVKzWNikdR5Z?+=&x<4$W_>Oa>@t9hj)5S!d}h=VPBl+w5J7n!+( z5xC-&Ps2?sTz|r4s;G)%cE@D6KqB^=F)g>PJL*SFY;^>QL7CcFVr<8F2DwR28Fe5$Xm|;AV1z25t zQ;rRRkPC_(j4|E%O3kucNv>@AZh5aPuT(2QPA>BrEns9(*>C$(RUo%_x6%)*ZUNC`5 zh%mU%+t~T!r6LUr=RIEK6=5uTUz8-wl)G2Q2QrEbVZ4b`iO zLj)r7`dB3v9gl8-)iDM(0q|@xSADocIN4{oL6p8PWIU-tro50h5EB61f@sPTWzuD3 zAYgHq?3Q#a;QUr}f#xa>Ya16UIsUd+SZd%*Z_VBPPzB^7U*DuYNa!55g2Elz3F*C< z776Ti33X-R8I2K5O({hLOFgZMW4Zg>P7ud0a6#u?=i!$KisX@Q#6*skh1$+@Z-uPoSP5c^e zGK;s_!b|j%hd|>E?zr`UkL|_%GHCo-lJl`7Q?cgSC6`?r3D>Vc$7Zt;v=$p?> ziG~a(*28{EVqI%#yUgxoNXl`%UQZ^Md!`;qa6z{#Y3zSJc2;SuS+1o<rl03W3gSnww$uu&C*tNpIKwLzgWV0eei6j{Tgf+iD>J`64tXwvbAlw(>CIlM@aRp zVfTCj%dj#eZ7el~c6#keUnvJGa@mV?4xiX?aKD1HM_#9#%pjV+D(dSfVHh z&Z(t;5y03Q;PqiPrbEAig{EJ_DGUia#L-g12r1PGfZ(L?3^&H{;&u2Iav3`1y^m3( z9qor}xltDufC@Oup$G%p&|z_0Myo=8ikz0?YEEb9`=RK7 zV~fiQY0Sq$oj{IY;I2d*5oRf=P2X0OUaVm!9auc$Vab>0>}#@;E)ci z8^htOB#S}=7jG!F>z|Jgt@z7Oyd@vpvPo$m!@i{|hJ{O2fSpJci2Xf~Jr&-DqhnnQ zVk{{FrmVp$B!?t`LRYA#1WduaWh5(tv;){6J0ttq+6q}LFHZ2iGfOLAN*OV-G9RER zpu$jN5M|{V6grHmqp-rty%Z`I5fZUqWW!h-kdb1cIMcL38Mw5DLiNRgggP@56@+Y zIf^iuTo>Zs4wjmaogTQj?O?9BRcfvpUNi4q!G%4RD+A9pBte_#jJe%1!Us$if** zIHTB`trtrMW)mw6%p_JwI3(pQBXK;M(kd3JQXPd)lS;k67sqBACUQ&9aeg@YsIDyo zm-5U+c;Zs_91bXt+1>unjZcN&ynX2d z*eiK)i!aj0E)ZC$`IsamGmxjp$64whA=Fs9&Jd5)Uu-TZ^c~N5WJi#Vg5c?VieeD% znY-H&*Ix21HNqpIi2@mgV_1&=Z!Y-^Vu%l&XT2czYlR2h@UF(Z%1h`GAe)tWt@>mQ zGnw%L!KwqVBTNh8kawza3&2eyuYnw5o_WBAK3`H{v{4YnoLStlgb*bD1fL_skAMs{ z7Q=??3nX6SfoQ7ZR5AFj$G%2qmVCbgmb~r@$3-W%T|r`ZcII`@GX@rvc7{ zYuGMg)YgwBtk+*swtl|`+r4Mk9W@f%nP&!KiR#oJ_-0=WD67(>9Px_Nhq1Ae{3Fpl z4cb?}8q+o!)V?>D?ej@tf=DBNY%!O1Z@u?f4!-vvewZ-WmKFv}En6-;)C1DC>Q6%{ z^8#05dOxE;1j>656S^JoXt|$_xt_e8jk*($2jV?W>JGRDS8KUo&t2A!?PQ)Lk$n#Y zp3nfb-#~%ny{U^bj$07$UnC)8Qdf8GRA>BWT6%p;%lEayL3T@B93g$s+fce(3G}w; z?Ni%JSX)z$W+d}VM>iI#ZEC4y%Sq!h#I|L*R!-}<#%TP}>4ho8T@@j)SXDE;^vU!m zsCaC?h|8H0Db?v|>+FqngYm(7KzbSKA=HBaf9PHIg38$4;d|a{4@-A&ik3=)75_Da zKE1@HNLZTAnnaqXP)8H&h4V=1!@Qehgd zu0ww}Xu`uCKEF7)hA}NshC%1U8nRFW^e#;2w@?~q;r?I`IAHb%d*DgDKiCD%?-jeq zBPxYKZp|HE^SM!dAT_6DC$1RZ;1c&zH936WKx}=Or>~B|7mJmz1t2VraoO{4$8pkV z7{}#Gz;Ss>!)PApXb@>Jjc?cH$_;e>Pi5|`T|dM79I5@1qdkKE&q$yjNz&slS|&`EKf zN&*@-nV^((KwMzJ0~!c=_cORs{)*rlmm(JES}ma4I9|yF6IQi2E!Xlm^=38q5?8oZ zHiT&zMs4KvK5pId!UfuC@}L^<{1xB#(-1J6alS^4th4L^42j&wPRx~1@Tk$^47PiI zVm34|$O+%6D}qXraIgTGtb}7{84eWsP17-6gvQxE@e;Gvz!yft^O8F%1lk0+vM%N; z#I(yruxF7GPP`6O;P807VxUy;Z`h#JrDcLr9Z_ZlT-vrJd|QzaCTkm~+!rdbwamoU zmX9pWF=(shr4APKo)gWsDiPMV%`jeSm{nk_5+B)yr8;b@=58dhZD-4Mu?9z0uw)j9 ze8b|vHZyM{b89!b!!6${7Xc~x0nYTMikzWU>HC84tr+UBjqB=J)Jigh$Wd zi6QF@XNI^*!W}!_JEG!(`$gC&)Pz{)PguOx0yF9T5#{_+2e1v!9h6!ov zHcI7KmMH5`}m{+quRP zVq*|hw%K4sBhLrx8I~KY2Mort#1hFPiVQS!_c>OTCzhBklzb|kS&hZRQ}l8bboACy zlm%F;u#TZovfHUbRS`>gwTnijzq~%&lP{Mspb)7P(@SJ5R-TOJt%VYPC85YvN9B&RbtE;9*O#(c;L&xhgx!+|$QGx7|OWd=TzJn({ zsu}F{Bc&!i0)>~tiD69K+{T=k&}+7jr&SHH^`owh_B;~@il^V_$4OgDMfqr$GC{_m zjxN>#$O`)aBObeAYCm~q)Y08CtNz`uT^!UH0t!HHn#w|0!o@yp^y0Sc_C*iDsNZao{e%L|qLumUp?0m8M*j3YJu0D(><9;S-x-^8hz5VmBC z!peyxtjFMVr9`1PTGvQ++hBs%xOEC{EwjYv)6-b-JII=-n)Km919~y6OHP_RnH-G7 zs6hf6-gtDM5l_VdG?5+=h9H~5T_|oW1g1c~xPuYL9D864xe7HvGtz-adG*KeMS3Da zg8EMS3UX?AxKIV-Mg5qdI)I!O|4y471W%yzxUiHjR8baqsy=ljzSBgiB}nTD7CYVU zi8pe6W&qfM4viSAC=W?Pk^?7}u>9uF*-_(kT?2a=OvH?BhJ%nf06u^(1r9sKVAN>5 zKCJI)RO!nt@Uh%IH9XcB^3b#ocM**C;cVw695I)y<}UHzNRTUf6>RnnRV0}l!sk^H z?j0KO3egJ3ZHO8774|n!#5*MLvUN52`#*VjS1M#2r_t-@gbWiO@+BmyNBLy(H$%rwj^)|B^+ zTRFwz5CTUPpF;T(aq zIIf)Pwww`X2BhM`9q9tGDd)}kfvXQGJ~toovKTp8j*NDf7lieIhj%^r$nnNuBV3K< zl3zR7{SiiUE@CxVU}i{vKc7%xPo(4IZ!G}_fl=W~rskO+WJkQCR0RxkClZBn%GXNS zBxjh{MrpPw6*e;oR4iWl9y&^)G=)XGni2rd3Odk zc_Gm9n*4_q;IyQ0Kb<&yWnHT>&CsTIQ;P2MFJAPSulBXvymr{Uvg3(=!gRK{RMKf+oJcBIbBT)2fA!HX< z2!WloNVmdOCOd}hf+G{-W{6s(x8;i~lia{EuRFa?i*7MvUGQ7d`Z$-0EAy8Za?7*J z?3*=A2PD|Kw{p!}wa^a7fR=a~K=+##xZQeoIP&*E%gzLyDBci*P@11B^z{q9+!CG+ zG!QKT-c+RNVen3%MckgkL}xzsQI}M3Puv|uP%F56K+c)Ew%GV;cnV36y)GV&a8tGyKtvQeK&^j zV;j2~V+jS<-~uT#zF)2BR#I*e1Obv(Np-M8neQp3s9F6xYNmoJA)`S;X$*^wQXOw` zIYvomLiX!kfr4}e zx3Jo{EC1TTRg^xk-inq5985!Bixc(27sn*BqpPL#6mL1OXTJ+?gDRu8#`1(6bBpz#$i5 z;C9cL7sVUNaPXNMZjywd7o?@*VjPGo6>R>yA~A-}b;xwFm{r}cpo?0+?|C|kOD)ks zHxhgZ>@4=<*uI#Eu?r|IiZP41Sn}I(>=K0`cETlx2vzX9 zK1SYQY(^W9*9rJMlvLb73IFI!&PfZd}WOcU_wo^VJz-k#B--p6YQ! z2rX}@nts6h$X*p8LCtBpO|@Ghjt$2oC19BTYRE{8Cm`IZ{d7f{Dg`}hYcObIvh<9R zRp`Xhxln}!_XtcO>@_U_z_$JA+m`(rY*)gHZCR>g7B(5pkVkkACVxUE#Z>yH&@OmG36fbDR1Y7Mop?x-?|GN-n9tr=u74J2ess7jtZe){su z$KO8ta^mha_AeRxQco&?vxcpFaWlg#r4}&3-zo|!dYbl zLs{;B>u%uoE#zhnHx%tn;OPw)7&g2%JX+kW=1-<;MhXGncm?CF)TdvPFcy8kc96OzDPd`0fUtYZ$udkeLoIW|-i#}IQx1!hMXn*hYY5c!(dgt`;bocbq z=|7(S!|8TFda!)@ar~#pmCN^^pYFt1jPlv(_=B_f9{HF}{hRJBk^xo9;ZR zhwibE*|;q7+3SZwVMBx)7#7JnbDn?-Gg}d z@bq5-#=T`GaDiF=W%>X3^7|{N*W$B!4mEZ_fId*<+5*{h1{$*Ev5+Vz`c3@*WNFzO zQSvj-@gD!6%!3#yrRz@%CeRW}F@N*;t7!Sj!h;WE=2wEo(EQ{0|4C2>JR}uYPVa|= z-#-2N^qb(|?Pz%;c=@mK|NVINyZGV#?fB%M;xnK!67t4a_ZGUA7(EF2_&mmV5Z{5X zDEc6uwI-;9wp!j03LfyuiIHjFRne0zESUbMXxKXCgu(F-h*E-<_u zEp7(x?=J87^!M@UZ=>C<==D;xyA`;YM)#Jn&y&}WFL6R+kjE=A!+SBSI}5EJ7h3(V z(E^P`qIvbnLJK&A97;pcga^xe=yWH3??zi}mS~h*J_lPUj1Hm=_XDCimr%DX6BZ8( z_AvT>v1k&K1J*x}*?bW{pU1p@7WU)ifXdHHF~Y-`9>Axv)!L234$Sy?%z{zPAI%wS|VRK!i`&9_cGG^k&HR+wuNdy#6vU|1{=F zOUdq=(c|vv&+*OU!1ld(_hn!ui-R3R^Y6zecjEP@@mH1s+KIN(c|)NkvVf(6!)Q%n zAe=v6+WaN(M6zgCT9nlNdWN-a(RXXSYRE|gv=Lu+H-2Ta8JSNW#;+;AmdM8;rK0H9 z%Up8K@S(ItjPzm5md~!l@0Sau9tJ(ppgS?gJBx=vzT}tiNYEWV;!E0=n(sRSQ*vF} zxwRh#Cf4usfcRNJ1}6HD(oc)~(c(`0wQhbKufPw_fA3OqH6FO3q0kCn%CFF$9h%&?pW&$+ikCvY;cz#jn%=^nXK%hmA&bXcvH12U9p4is{ zfzjmqusY0$p2R!ypu`b)Z`nIO#h(B5@>@yn+IK2;LRw2|%F}$c-~~tFm+(*fiABUt zeg0$~%qQ*Cjj-t|v0u-bo)@A-z7pDevU3`%?)v4H4p9k7Rx97)zc zk3LAcXuHPKo}(V&rRamre>r%IM8P*OM0fAUYofcC!)JmM8uY`{KgKLSk3JuVHJ0r` zCzGC%nx0lDmXbWI`6LgGd@+Cd1nI_}^vloOU3y99OFLOgs7C!u(1tlFaz!topXg;u z*1X3`2#?2?(u4iLMxoX6Z;B)EbIck%uwvLO>5KS+WoK^bJHXH0)c^U+zcYTU2g9(+ z|Av_|E)GdY(KhgY6#t2@m^HIgjQ=R;^|J*lOWp6nhu@4=KMo0h?ewE~wJ&pzf_8Uf zuE-kNf&B^h+?oj8;eE!qP(9-Qqru*I%jGhp_tpUuUJK% zUUN#yOAbVNJUgQ>JJ~8UAN^LY@i1sgT#3;lPIbA%Ft?QSgVzG#ZF5+85xQHC%w}Id5@d+{{JNr1=Nak~<;E3<~GFqiX z3DR-;$^t?q4jC$b=(F7yN^AHOvPGkP5*JW&umeDgKIpnI9p0x1q$2?rMa^{145q*8N zz#^jgFxuepd5zbQC7zQ;##fAk)O`_L1I{M_h5Yc-Me~p@_{ZNZ*p?IKD{T?)fe+8atzgp>jE=Kub@bib4 zf2kzCvTzpJe=cD1EnLsfJsZCNdih2zZbT1x6=g8xY?J3}tjzJ2c2`ax#Hh^kwdF4u z{NXZIgGSGWN~-0c(LG&ZhOfoA*W>R`V}8=Jl7~jey-5%gVP@a)*oYz zWqspEp^elkei485z2E)#^pp6E$Qhlw5&rOI*r9jgby~U?Dtd`xcqK5qzWh~WmG-rS zg9c+y@H2htJU(5Gkw1*TJ=!?xo2LUje?1})xQ-n%zb$j{{V$7l)oD&Q^|Vd4`Ekq`i(*%#$sf7e`%CPC)4~oU}JMHVzd{7iuOii%S3&Q%y+e)rX6(B_amz=imdJGI^I$C zNX!c44=-gA?+Pc315iGW@5!`9O~rz*EIgEatG#gCY7b6X&+^*K+n2sTo zwE%oF5}R^{JhfhQM1{SXXFT&x&>vf)I-;#c8HHb*{(Tw0th8qAd=WVwJa8_Bu1fEK z34M_~<)Mn!iKtDX-^FXPuaUl?%ZkKBIkI(060g9TZ;4B=o#Y^Q0xt1p>aiuLtZdE0 z)jUPF-z`$A%%{#v;F)XGl0l+Hc{0mdVvCn!78$49Su_ASa1~u^am-e=2coTd?vEDj z?ne?YhNpf%eDrUl_sj8nGve)cmukH}eW9yAYtPB7T&sl2WgLt2eipLp%84*#?a}og zBn$pR1vKuj3#ZV{wHDDzS(c?8?s@gm5h``2i_2Ldd4iI$nZEZ-X@OO7gkIuTLlSRq zEzzrOb<17kSvBizK6_Qr`MUW_%uPLxd16U`<(a+|)KTvDLHPWi#V`D3ZeK(^!Yow1 zke4SOp*Oaad`H@M5i#S7Va2XB5a9DMo&Qm|~HS-b4#-lRV zi)F?2cDy21z8V~WbLiUD-~@3UxXtj6mD?K5p6r(6mZK$?Z!emI2WsnB$x$>6eg7o1 z#4?7ypyf&bvPR~5JN!!7V3z10pWO<0W&Zx7_{{bLZHA8;qi^S28FbZ9Izk_LlH@}@ zH%k`t0efVSm@w^^=MA>jad18|<8}PDUa#4v1b8U7e09+)ohJyi6Qoe+t-2vekTa>om7PIfq#wv@CwNA zR`IN>kkmP4SFmM!E8+nh9~uw(U=-tWz?R$C2S#(z2?_sp+7{z+H0}yk$vE~tczuPU2}D1*%eFh zwKjeguQV&xx~>NW>a`N~D1cSzd$D_8FBA~J>K@WfJbqmrM79_io`1E#gpy^Y$XN9< zH>3_)AhEonFLoSR5bgO(Z5XcCaeW;bq{Wbhx*Jf=ok2O~7(=Kg@ANouR0JSgiN6)| zr>rpt;^K1GoGj-@5#!pvDwe)-dVcXn$(84$x2+4cbbA2LS>Ic_tnpM-!2nL6aqvqX z-?UE4`!CU!7(`W9G;(kCUwS1=A+Bl8c>H_CN@$xYFrs2ku)(V1&)53}kOQ#ROvnS) zR@u>qW3!xdnX!l~wOrw`kT)=qzF-Z>c10y55Zt7NNHji`_G+hEi?k?5r41BwEa?8; z!H}^qoK#&FoywfkSV$j{7q8dQN*O;@dBrK{4RY7Z6V|m8+F)79%;Y0JTlgfoh1a6c zm6N5Qv~ahdSR_W1zLxVuM_uPp4U3sb5?HN-maFZvtX0_G?sb{Z)Z5DG)JxYFR*PkMO#V*8dYj2?V?$=M|B5%lSygvv& zYemy?$#}?6U5i*-y|r#VT;z$!@T1TLse9jJ^M*4fT#+7r9OThqpQMhOUFC;U~tu%mE>M~ zh1he5Rr+||yp`4>^Mzz#P!ilH8 z2x=e+wbhUX%DEA($l6oaq!$&jvNdjw@g&K)w^P&-98p;NCN;0rcY8=x zLlprbv+#;aS4yhop_T*Nd2qJ{NA{gn$tu|k5Cb67)UmHuaf&jV9AAD1Ov)GnN|*I6 zM^UQ4T65sM_Z*lD>u7}?=1cEZ`F!=b3htpF)UNE-jXY9mLQu$ zYihGs6rN#Ch*4A(kTrV{++x+;QmW`tQ8%9^X8#ORA(p+ARG_eX#U`sd#`EBiE_5%x#@*@tJ>r6BY&zLrHuYd*$Jg z`~?!ks~(g!RJ}Lc_oJ7&tmusq_{?-&OLp?Z{bViVpUNDAF;Z_iO@N&RE@SlbG>^*M z@YL8F?1cQ!dcKa>sBV_jseKU|!kmal@EK^dd9sezkyd9d?2mR#qaB}Ect_4&OJJ67 zU-E?6mKg>d%T#%;p*uJ z3k|;OQLjJ6s7Yzlp8vPQY7p(9xupd{ueAe*Oox_fU#w?qYGF0j_Toxt+z;Y6GlGlI z4c=p|WP!BTN;)iS*IHkVUT0cmPF!p77A7yQFk!ty{@nRW&N4Hw?fJUbo*eXX!J`os z>Wqm!L+N+%W7ya9q4IHcUZ*-7R$r%Rpdyx%{pw@~T7OR4h{Yg&QXPR9pWTd#7*&T6 zH`0UN2pqAs>@mg;Q!P-mX1b)@V3+-A&xV$g$Lo|ye8Lan7f<$L{Qh;3x%|HDiMK!! zGR9FwAafjM4u#8J^>|qEA1vQ%b?4uf*I>cVilHxgqB=XEW| zPbX8yCES=K7M5Lq)8aUzYprx+8Rn$%S<7@Sf#1DUqh0H)q_lwV1zoh)0~>yGv7fU1 zj=g&j))0@aRmtkOmPCAvhsqr%)Rt6(Sw|Te-{a4)_N-|0slAuH=34$PN)mW5%CY9dJ*kwI8zjH<=izTluTUFyKd$gD1=oFnTw=JD1Mr#awb|!l9f>{OYyyR zMm4dT5?bRC<=Xx!dF71v`-rQz!;V<{nO&|8Im@wZGh4+`wPt3#jRdma%&{cjFiXxH z==8|7-O4bOgdUoINiTSiRsuYg!y%{lp6sDeZ7fe=)9%`(RO6@3BaHzJpVyWh&OPwh zDkKNIsU5jOT~~y#)UNGoY&^Z`QLcPp(X`6Q8Q7N={8=CAQAOOK+N~2ka1k891&gv? z_e66u%OE}_GtC`;NG$fmI=W?vsAa5eo#%qi!U20Y!-7Y6M)EzKf)H5n^I zW9&Ox1s9bMIS!Ua$hUm8%p6I|S=1xfbpf!3+xXdD-BFq+|IVDzcVj$Td$gr@KV-hl zmC0A}cgUUezn3}i-MSjl=K7LC`3Yzss$_O!tBbsQ-J`T&yiV(;)d|j8!SQ|#QJxL| z2w%5a0(Z;$=I7YqtEYchszRf&k3dwNX$E4>y`;)Ji-pM^k&T$S66|Q)puE7X+YAa-xi9n zy6IIZvKx;n&OT^!A*NRkb9(N&F{4(gIe0tsHh>o*Qa~AXT~PTwJ<_QWwY0m zmW0+`58145ae^+i#8N|1c}1yyN5IwK`SI?RiBgGlm~_!XZx6Z`h%Pb(dc?9fx~b73yvUhlZdojm62 zl_fvLm%<}f#*wp&r6*A*en8_fuiIfYzz|N994_qzo}}DcgCuGPs;mLoDE*N`UQ5F) zy}3h2Jh2>Zaksy7RWhO+6OD!v&>LDZ52R-cB5lfDt>9PgNY*T*!?|0o+-)tZD9jlJ zt&@hKWoWc4Dc{J#)f8*_wx+MS2PE`*&8Hj77>Z`$sQjyGIpQ8T*%DgY*1I_*6RwLO z4Y^_gg*?_4mHT|-q@mV-N}ueUQu84O(VaPP#&u>}H!MJUjdryG%(SDFv5<4DA+y7( zO54nRqEn>Vv`Fl>`XF1{uMTg`rQ9oUQH@q>nSHf*hczho)*hoUSZ`7I=gWz-H{zr@ zr_#9HL0D%DgcaG|;jh_{rD_jbN-MFq{HOQ#KMOu3)G}`&9)de)K*^;s2f*;Fz+Sjs zJc*I$c{?l>`IvNEu+QH=kybD(f39I!KSsJJ{Zp=phIvmF^G^#8?uLk@5dR(Dy(X;% zatTkiK=&qKuN8L^d3t}^F&(!>`6ReNb_$hCJx%YXmTCn@QvX;RllPF`m;JG+;+$kL zdu?g0JdLBZi_i>CGL{;m9U!wKTDG8PMs1eZ^rq5uRYma(vNPyYu7^nyd)n-n6}*Yt zX5y1IZP$LK-Bn7x80hlgk`VF^`7WXic{j&b_Oy!5kZyQ!E&jh0(G8U!Zfkuz;>Ujs z&6B4@JFvslnaMBck^8>!)o4;V!j{C%(7=)GdqHpblTz=>g8YXvU{hCTKgp>iE%gnu z_#y6vViu}%v#JjqdN3dF2ylibxkZYl#p5;3_1r`+;t;6zQ4yv6JU+=an_oobq4fn< z7y0I1y*CzZSB(I<<76KC-}X_3`nj+#+>=s9q^fps)2`{Y#@5`E{ZK5%D0OW@JMz5S zA?E-E6$cY1A|t*tuDr#h#n`-Nq?Rhk^!hB^^#wM!gP{L=^x5m3l=^94&JVQt`Etip zNpJA#<7OMeyy@Q~+k>EF_59Si7IQ%BZgoc8-Ce!r~nll`5+FXQep zF4;E6r3V-dospjt7nPTs|8k93k}_tn6ln}44GhH^%l z(Yx~i#hc0_(wn!sBU{hyOY&@E$yoPD4q$O#jhle9M+6)EYMg@Kx57k(SXy=xxT>ff zOtsY=V}3oT`6x!?Y(LS}pC;_%dM+)D@$6oWTVZm>x}U4`J7|OCa{M>FQ=cx*BVO)E z_cn!Eo9lV*TfTW&ICq4ax~1eGH#ZBqzO|C0BUIg|`##N`ftvD;yJzgarEANUnhPI> zymEu(Ig)!Ec1?3Vp@a1w>FaAj=O2gGrbPcZZdIyv_*u|?pX%&Mmj%;~$$48KTe9|d z&w|oh9%vi(n$oWqRDCsai@yg-Kfg=qcNg2N>;TGUt=qYRa)fmbseD0uhLIN4GLtvt zihK1NXS-S}t?M=VPSOF~eMn@Ws*F;fP(?y}7g($9RfvFTdxl?CWGf%~Ui4Y#W3Fjv z$B-xiRzwn1LfA3l%vqo73go*jcXZz+^Gtf|Y~O`*}AYNCX5D=msna(=`XSz}q} zx5B92cjCO!I|lY6k+SAB<9o{X(lyg8GZNXcwT#pm!d#mccIyLv6iV5K{^>^*KLgI4{>|fz7%Kcf4;O_T+A+XijF0qE{(g?!8+|N4y98h$;S5yZN6D@V7N{6|$dY`&^lTHk1Q;K^>5xmW3TBvVL@ zJ}p-t)+YrmGrtMFVoX(P$%Q#B^XK@a9jmr@Dc=`SW#Kf*OUuudc-=qo!#E{Q8WYX_ zDD)ZVsozJ(Cq~owzOzk~RTYy}1~N)hw5(O)UHDG3xQJJ-BMUQsZ%fabwc$~j&biig zb!x7XPR?`4yRXk7LXm5iwR5~6xi0rf+b%x7v^p9ao2WCO)YY)1@Q#^fRhSmElij42 zJDRg@lgl~d5j}HoA_~at+uzi(V0>#lym}@(hL_W`yIRR|y^t7+m`N*BP+l5Abji*M zq?na4uL7GV%Ig^?>#@=SxA>RnIe+uco+qxcA6wG8y=-XenLJ#sPRnBUbzvm1@G-LtivZAQP{d(5TnzT()`#m13&A(7~uE!K9=8UD;e8_{ka(hM!< zp^a%f56iUHx$F6U*F(E~&tX>Up#Oe#qy82j;;Muze%~Lz`*V7BQqYHQ9bVI6H14{+ z;mq@JG{QWjXDi=*Iz3CN?~h;?K<}iZxAok3>KGEv6Slb=LdOe=>F>dw4fHi~J#}lx0|0=t0#^XMmYQytP z$Iy_{aVz!&j$7e%a`(!S*FV#%Tm0G5t|+koDFZfgwL&dLushA5)mNbUupd2ts1|`hw|CDooiY{ntrM zkI=8AwlEk|ln7xoo0%AJG}0(49QAj8GQxE<&ZvJIkDg-@h##*7&;8sy^q6%D*1xDu z+a9o&toMAy)J|*sd(j^opvtyZ02~$9Yt^nn+lE|UY&w=kd)4p;-0!kiGfrHuMXUkS%Zv>}VA#3v&ubZ(yfttX>pgp%daDq?kKm8MprDf4sl^ow^ zSG4X+w9B~UN~|O(=hkil*C>%d?Gdc^+?S(BI^PMr%99YPV`$9B(%m`VhM=P{a zr@!c$_E(;_bE1!l@`=v^a*Y!+u2<`Fju(selcD}FR_{a;a!)i>>p-P;3;SFj()uN{ zE^|Yzy(u~nPI(q^O@(qT^ZcD8dv>EIb7QN~>m@BLC4zO@YeC!kGxRZK(fansMfb3} zjt;yV)!b@j$9vSEqIjhB*%|Lw;xy9SvTaXybvB7LZ9nbCx76f*BRHF9!@*pu;*!2k zFZE6s_aq8Zv-C7@&4M`8T{z|W}hA+Zn@_bI|`SG!?T%Ob2 z8cCm%EqvSdU?2Cfjo9zs+Ku-@=j-?o2`^9EsS1E~^F0|oy^y9!%hSiz(u2>F+*tz^ zBNIV5`b0~0^ILm{*E2y|0Q~t^IDxwMQNkY${tEBe`-5ABU>4GIACQRM%UGli4^z|uP*Ay7jx^6F8 ze-PN&`~0DyO-uVWZ>y;}(u=xvPa~ignUtP&BWuEnUdH*>i1HStRwDMSP7Pl>8591P zlKcHd*_zrjl&pJ3QUs>dr!(%PY`@AYS@wb!4ivR;4YI=bVoQGKJvY{cEVb<17i z{u$2JQnJU{lD0%1JZXvyXityIK5KrAwP>$*PlrlwY6Y<5h}Zk-&suIixLhZx+a2X* zP1g}O>((td-wtkS<#kU>YbblXbam8RB%b81XszYzu6V{PZ#muLbM`yVjqV02@0xI3#jWf4 zi6*y~nhJ2$is;O=HKkmAfMSe7#S>4zt{f5_DC*K02eZn%LHg%ozzGWkHFRFcc<_`F zVnW^4E!c{|X^Uhsb37`qO8U)bX|0E>>AiP<^w_e_!`joql&bGT2j2`HXwM8eUaMJ| zZ(GW!7wbMUc*0JpJ)7oTLDchD3#g-`F^%{8i>|U|xnrR8IqQ8nwS`lTvtRE<#&y@h z`WByyB?ED_orsJ%BC)PIAi2IRC#&>Yk)y_-O5%@W4+E56S7i7sS7*^S!_U0Ukpp@T zXViwjbq$|fDetBde&}Ug<$XQ&K!AOFf5aY->#>gWc)x$iV`d?GQ)z&1=hpGsOyNd% z=4*{GZ(G{I8|v1jzejesVOTq^v~Gob^y=YM9PBM>+r5VAN`>yoYPnTgd-PVgfpdDp z9FO++h4x+nc{P3O`N@9~wXW-0TYA#ME$3JJe{l4TDo`^=L$*_gTJPS{LD=US`93_j zm#fREYmC%i(=FG9kf-`4d^{=s+y1VO2!Kz;B5P3cw^&q8kb@1k_*mnKoPQE^D$U8C zl6{uf|1#~Vf3$02&R%NA8eBX0F;v#vG)ABvdNUU}6#F_^YdwrYZPA=YA7OD6p7A&$VfJlnYQh$z5jD5^%}{Rprl@0-n}btRZmUm8xw&k43(|;k zTm5Dz*ZPXuo{yz%1R<$~q_r_e>vMajwT|&|1VK1G7gCS>`>aH5<6FGgnO5G*UEj2G zlx|0$)%g0H%?RJU`%sQzI}fYI)h9wmxRPD47h~*=#}YXYD`oSQN!i3o&HK_ZuE*dB z-z`g7^YolZO#7Ak_o_Y{=p$=!F4iNBKNs#1Ej@RPdEGj9gn5l%gj!cy4?hoWk2%tl(P*Ro9%rOCqj5(4J-L z^SeKj5&V9y89pA(N5{N83bE$rm#6=|aFm^MuW!^&OS-Y=>u=o{h_wc)6TW%2pMv{aBB|FvP%42)Q1`4h+ji4`qk{MPZ{B;wVjc^^Eok+ z&+{SMKOW0FNBA6rW*m;ve1yeOc*f(1bd7L00;{zq?2KUdS9*ke5*1qD_2>FlPwltj z%-7xMOGKVKm%S#+icz^QiB((94(Kx=_}lW_O75`Ij&!eS`!3M_J}P1|?+{tbJkk1I$H{(|l}!Y;n*V@7X;M z%F{#0eU;~7Fu${GjxPJVsODho@6wrr(MDM3(Pu9n0FzO*WuCqx+cXa;En~SeYd!zb zc>7%N82h?38e_k=$Jmzf5&Z3*h7AULS~wbE)ZgRm$HHk-DiXgEHtPrR%RB8M zy@>r}J_Y#8!06-nVKzh=L>96H@p=fG5T){sPJJUg=>%HUopRtL35p1pyh zIMI#hl_wVS8SqexTRGSlNXxthAV24JG~HIm9^$eGJLT?P?j`o?) z`3Cy&EMB-uT@7i3{>+<Xy)!0f0~BcP$qvLPahg4jhJe-K`}MAHAR9N0SdOz7 zVVCV@su<-nzNu1NJ^jN{pCl5#diu}t!!8uP`}fno$GbL4)3?7k@kCX({fFhik3gCUYGCwYkadc-|O+j(3A*n zyXm*oevcOlJD`?z1pe0IX&;5flig9(w)Csyw53nR=Ex@5`^fsB&-rW!*#h~?Ufyi` zp?0N>$8+@U>9fg}Gujwya<)|_T;DjgraLmzyZ4~iZZGTZwXbjC$QvShZQ+M%W{jd! z{QEsh`v$~XM%p#;vi&H2E!#R;t?4*|P`5UWEsBhwZS^zU9tTG-dwmRVkJBT#dwmoB z9=FFM?DcM=f28C3>W9z#dn+snQE+)v%df&0vnE9R{%C2rhS0t@yxW&GLiugH{Nwm> zY`3;kwS^#J`8wLNf=<+w5jl92R*lhoPcIh9F&EdIAmCWiAaAkbem`iZjDrYWd+)gco){a-z-6A7WSN+yba~QA5$AetYk6Tz#wV`j z1TK=o{s?Z7(Y!1}$kQwy_zX*lVq!)h)`l)vPvOO>Al9XcwaszH5!Xc_Q)*phfrgSF zbjLMVkIdaHiich0HTSiaO-`X(Tj1vq!V=3@#e+sXRt#Ku; z#Na{HXs9OTsJT){PofhzsQa6-6}<05E^ASWNcU|>&hLmU_Ii~Xmf!bsp;p(EqDQdk z^(wK*@8_`SQS=Bt`~8JkEsF_Vm4~F;`kS0felw%JJ%}Uy>h-b4_V5_N>-90bEqaV# zZuQ%?0zK{=vjz1Efow;)l2yi!ZKPU{m9~PX0oz(A>hjGfrEMXG*tQa6{?uZLWO$+_ z^+d%@?AP(`9anY98lWHd9AQ;Hj6CCos^4CXuBJjt<2dHn>RIZn+stZgN&h3btXC0D z>k^l`%^XH8-;ZFm*So~b?dEVQrRoSa{eHrOv-;(|DG67Wtfy^ln?Cmh!E;oGOWd6O zXDr_qek04W)z21d53dpIy}pKDOI^-+1beGr!fhjwBhdGHw^sLNSeSfvRcZUmJd@QT z-T0Arg7j)UWtG#mvaVLK&U7nm9#8D?n&Ius7!G^t6&36#(1@_KuAx;k-8|!cMMRin zq2P+utml%|5Y;Szr7T?8Dc^fuY1`LO$ZWB~_hW>FNVdIaeX;S(F*!H3yKSG+mY8aD zwxpiL5iGWP3YQ+&Wd~a9XSBcVHPWB9hc%~%+Xz~(Ppc(2g7?%iJ`bL%I-|V6o*Fr1 zl}!@Ms;+O%CDzd0Q@m3BAos$nvPI2^8^ow z{_(4!H+-Alu!Dj7VXsC+(v!$GKXu;`N8GN*1!5sQ7WGpqVQ#z42d%}dca^&z66#8j zTB7OH)u@qrt-zH$J|{cWjvsjDoJ|%?H7D7v_LgB}1S=v5YGKJTNkXt@$t#a9DQTss zg=M^$Uz^1x1&_#1ua{*V4a zt(@*tyhn$zZx~@APSm%=!u_pX@A)}ZCu@J*-%mQQ_OHLi2F&Y!-Frm!x^+wAo1sk^ zx5&!cKJzZMy0sQqY1MzqoQ@}qkOBKW!>N59&w;dwm>h^za|S>-90bt+|b0ZuM(5=GNlVT(e01SaT}9 zYON=Vzf(5Nn|)v7R$~k2mXeRHoK_OD#yMqZMi%<8N0jdOGXM7UWdwPzZ_CHbmiAY3 z*%`?y6)_Vlg6t1tC6bliGLM1FT20QoeX|m{-YaKr8;f%9OWxM271nJi&hChF*nfa6 zw*@0gVy(|>aM(bsAbwL`fr^>zv3Amst;=p;8?oS;iFO?lZS$VhgOpzF#v>NsGrp-a z0j;xwo!4{Q5%YFIazyZl)@gw`2lF5xcr}41L_b=1qR9T8_$DdgCq%6CTw$m4EVOqN z*rN-TLS?k7`+y4)idLj|8ArPHDlTsGgJ?O88c&V9R2ckgw{vpqSVGv*rjoV?A%7JH+Oc(&I!@={MHL?Y`2@I_})J(2D%$q;^JA=f@uD(mbTUA1%HSl8db9>>3uG6=*6ANFndx zop-4!f+aG=M<84GLl4MXXkYKidmIt3?&l$HEbFKlwbQH2LDF)Rx{lR=-{_O8=%uAH${J;@*IWlk@u``O+puE3NmPXbI40wfXDZeTA@ZkA?1#PfoWnM&{CP-5-lh22HLudHlkMrr4&qK`1)3?iv5QK3D>-eY zyj8M-?ZK)7*;TK{mv;45%t^Ui9ld-0b?u$Vg;hx`e<>%b%qQoVU*aPQfCY4h7eG)} zdOsj3j`{60-7Jl8CQp_rAGW;vd>*SwNL8N;Yic4t(6ZN>Cx~n9L^&%pDODKlf0b`4 zGp}Vp_5mr;zH&}TvR-TNPbObuj(=2U&Ycm`3~09(^VO1fy*rDs=b3@x90_|s%>iqp z3JG(}3i;kEypm#kYk=bWy*~L}_J)R{=h6PPPdM{Jv z3hdKETh~grAdd3i5muvkVbtGI!VJEnv1VX+yjqe*kn7flQCHEVO(RIXK8Dxh(Fk6z zkKv8va|CPWubGx=g`NV1LqvMAg9Qx01FXybMH}>uQDr}Oz4R!;e6edhd5k>9wBSEu=58rs?e*@B zy+|@=eSM)Q^MuN(sH*NmjfvcA)?OWlY3s!v8RohdLG69FJ#sB~Pcz1gAyuppXt&qw zh<@Vn9`<|R&F=x4#b{)4X5q9}r?uF#u*Q~q7Lp{Yr%S45U%j*ktn&0)At58X-s?A_ zYOl{x3S!}GVV;$q&cQ78v`;rQrw4IO0#PE_qX5e{MfM6hb<`LTG9CSafr@$%ARw2a0Hh*h(~QePa}?5&mM$UQnqC3D37<`9HHbE zjFxscBUZ_sk9|wE75moJfHG=xESx!J8R6!xK_L6=?0QESvDv3l8`K^n`cOaA>X<5l z*OmxORdQ9Lb#uX^h+NC46S*StW6h1|ShY%`&R*0^%e|2mBeK3-*MWO=2XOl^e!ze# zI%9%6GNGENcPp7=$^#rvtKRO6Aa8l^k44Q;Ra1>a4OX>PpzFM|=u)3kp*7Z?QFHx5 zQcv~QE2FeAF6A16)_GL-B))f@c1=mv44`dWB{$SuiO9IUg$tH_og^2M9G0@;JVAFo(*;Lx8`f)J?0+o$Nu*SG)Z%*sa|;@#@5YmeS5(gL$BYA&+hdb(YM#fJnLaN zg4gSF4zGG}j`OGorEh8M?ba3E8M?0}V++=ZcC&C=dfr%8&lQ){D}#N%#JaHd{t|y6 zo7^_kqZaW{t`U1rEB+LJql#UdG-wDDQYn|dCzRy|JU~Ur6x-xr5G1Ff3EIbp3D8Z-p9Gw}Ub)hNL?Js^474-%1(Ee|SGih1iMvZ& zSkrWW6w4)YR>E25I(tw=wf7fGk6qXO5Yi#Ip)&}UB8|fBPk0gM9{N^Uj80Q%|B$md zC?NS~Zyhs~{c;|jlF>$TYuvfr{ZYtn!eJNs8?lP}a(wf~qI0SMlkIZC0_w~_QFP#a zBin1Sb>!dkoQm*|ogweR8AT1fK5c~1(zMp6>%ot97vGqsGf+g++UxhngG+4=*ZYJx zd2Vc03s@=8*(!E}VP(F}k$N%pvGIBkT5HqOf@9+xqu_UiRqccF?4xogWl!G~F0&NU z4FNqJ0&Cv^(39l$vm>&taX;v4uWS!1=g9wF8{;=xHJj1lk-eIM;S99a*%9QrwPDO~ za0Gb~#(7e(U42ci-QR{rd=leS10Y{#bLK3EStV zXN<-^0#WBcXCRJk;CQYhIX_}gMmUeg8uf4W>Al69kOz5#%&` z_?0J6h_c%ACtfqkT<#*;aih$O@%O_gukOZ9ly;?06(h1~DhI&767918wF&~yE!xYD zdNbj<;XP|T*7zgPr2Qiao72-W4#EnIpkgPWcJ2bIWo?TBU^CM3(b!L~b7anr$mZ}K zjd_G`W1S~Tqq>EJqEo6}sQyS5gSBhbqp0mlOS6(=-^QvV6}WP}Hfv#CvE9IqXv={VBjBk-QBc1gRB^J|2~ zafq#^%VVZrcb(P$xeJ#wY`%BPx~vZ1(h7x5jGRr_td# zIMUnW)I6fSXu~WvzO&@-2_r?!=V3I`%;QkM4b702&hcn8{v4E68@FQZzW>!NJX+`V z%4L2=w60q!hq_@C>&=io^5=eYIlX}g}>_)rC4VFSP(4BTI(NIyIk|u3t5p~7VcbM>(Sf+ zaZWaHubS&OXJ-I&aAZT~?9EXdG6$91*H4O_>+$X3p=Z=058mr6Kh(G5GkP-zX{0xE zQ1(1>X1m(u!Bg$LM?iOYD8oRfs1W(KCgO@-B{YyNjLf4?Vl89=) z3JYAW3ko`OblpR14t@JRw%uz;eICx*?m1|Z?jw9UPrCcG>d)}_2zZLCC!UAy6`I<+ zo(oaCMvme>s$=xzV75-9ozT zYD8aFT=)20K=IyE^`JIld%M=IEm%mNvm%|>>r;5Ezt%jqSxB`??cPl>}N3_ zWn^p0=ter`O`Cf6%@*`M3)hq1u_f#ED*f@A3)}W&q?1SF?%S7PYISA3&8J4WFOGb> z-HGfyyqx&dYPL>m;K6*4o-2La%gVioe-2pU*_*{DS>@Ay12PnPXfFxp2y}-cT2?;g z9K3YSvxf_N?zPtLJMXlL?Q@-cr!hEX%31;0(Vj%Lqm1RL?c>~~-Nl;wtCOZ%euSz$ z9CKasXkYW!r-FGV57tM|rO2A>-uRMW&5+#;=fh~Vs-@c=CPu~))~8L z5Opq#7?J+@VZ%X^UWQ&bR#-R~1Ueeh{a;&9R=Y z@7dfnWw$bnvG&eFDzz9cd=c7=Bx-jlvd5WcD0h9KH8)ze-@#|jWcm&b(~W2KLc7_W zifYFi>a(yS#$sgs-Of=?k82|sy*`H5qu4$*N248w*m|=z3R`RM`O-HFsg%C#^ZzCA zIDfwliP1j1o@9?k>-CwDz~l2CTf*ZoC6&E?$8A}zu>0(K4{m#hc)t~QQ{~eUM%9xZ zj1lL0eOk^D2}@tsm8_YVI3pYUMjhq0P&4KtBFO9yUhwQ<&J5~ydU7Lf7qPGRje$IE zS$%Z_39WtW$~)1TI6}Lsz>K;Yp5O5TTA*kHAD?Z7siLzlm-wNai6ap`l}jgJwcEO! zgJMHLZ)?Fdyz+LHmP$k(J=%l4pE>QQ1X}1O2|iIg@?OjlTs3p$zDethyMUtZ433+G{p>LnkJ+E1$fWq&{O1_>gzhmT2#Zv*=LY-i+U9@>ci z^N>=u()x{{mo(4*Ueg-)cFR^a@f@z0_v{tcgo>KZu3>SVDRbKr_DUHkHZ0++vmJPW z1(zMWAGS@sJ`U@{O4$6?f%8e^h1fyv1M7@7n(MqMwnp_xe0*ol!KQy{z|x-d?-g(jfdb(v8OZiGAWGl}YvkOS;~Sci2%* zJ8PGM;vU{nL8d?Q{%E;T%HQ=?4Kgm$9t<=_dTd>KDd4>n<6J~`&l5w?QAIx3GTM6G zy1t7`-|9(%*3&))b-aX*bGI*8LoXt=yURRtX4)BSy#%AyclO32drv6LVjPdm!IA#C z0)qeJ44Sk?@2*$xUaa1|T)pEIHa%OSLOXY!EhNpfZv|#))$jd%tQ8RD@(hGl zM_XALS(G^_t#7>cj1aPZ|bt25Z6 zGSAF4LD@R|xMy4JhJ_^mV8G| zoVzwkUiGxccW*LZ@AG>Y5mDZ+pRD=OJk+^}o5TMW zf1N*C0=H)(`t>qZ_pN2OCwXMzUe)lP#hwS(s)6&?S_A5p60fZ2KbY_eTC{t}wx!fC z`#z|i*LhLj7)BZU)vbx&d|zMv4R_E>ms>B>uFY=s9a+S!eyt5`J=<2_u_xQ=DLR$* zsHTEye!ahV@RWhN*C^KQk2j)RznA0F9xfw@y*@L1=wmYGLcd=rt7QvG>a~#8tqfzn ze%iB-BkJ_}%uuJK>iV{|F^%?mmy}}Vj+3PK7y2NL&xI|%y4YkgW8zpnp-7+OGiclD zcB^M44p`RGTg}`8yWd~4a1FimZ`}M#l&@@sDkyt_%IC@Tc%oZi=Vf7U#F0$w^*t&Z zwzkJ)!o5VrlG1BgtL;~xpP%H*`6>CQ@xcFXVc5=)Or?xwX+gBokAk*i zF2$vL&t3JsJOOA{WiI_=Uo%yh@h3p#CfC#`!lw#^>7_Q?)B;ERWCm8?_tvJs&)N$ZM*9H zifYmqp(T0(llOSI*1Faow1Tm>ZuEDC!468F&nR~%8NP6MXR#TqMJnGxLm5GtTAo%{ z7E4xSJohb1kFwHy-B*ZyX~&XxovHq%Hmd5?R^$06`TiHD=L5q}!^UY>ns)tYJ~!gC z^-3>wdFHg{0=XSCq5=p-$@a@9$LX17<%%nsUsofb(?#HtPtW=!#<_@3mGNhlf__vm z*WZ_)`AKK00%CpkEX#U6=kJ1Q2V@cbi%xHwYzB5v_*MBTad%Yz=*e+$P@)>m&YoDsUt=KNLHQc%UcArP% zS?u@MJoehGqsaZXT3>q_xf{vE-uN>zvDg3UsJWJjmj6AAjCIg$1h)Cuo)HDzc0?_= zvo`iH7{TcEX(@dp8zW4&8q>+Aw>w31Wjx6p-Hr5}N8#iPUqjL!)q z?T0JZBGAR&*`&8GBR-y&#(8S5Ukf*4apmKz533GDR0@XY&6()Nv8h&fh~0&`u+~lx z?Mm5NS%Ge!E^xe_0=NN+AzBK~yzFD9_&HIN(1(1{6+sHbSLlBQegG*kMM8?Xz8{!p0n0(asQVW63)HFE(v zydh#|k4wv8uX(%|ZNN*^p^xdL8EAKmsswp|yw-`BC$NQs&XJHgq`Y5mQVM3s08)LCB#p`w_-<_Ved!_>6! zE2RxS5>dcWX!AHAvZoABiAS&}uvahbdO5#&AM`jPPI*_Ys@oIJ&?|Rl*x!RCbKZy5 z(l?*$D&OnaL=ghiCVu()k_vZ%4$xLRYP1jJ2z6bP?Zp_voSiF{o|3Nna#Oc#X9;bQ zAk7N+ngwyF=C)^{YWY9kBF({(1ybHx_jp#7K;NT)=PN09M0U@q`n|XsZOx}G$`T*^ zEq-UL?YZ+AS>JQveivDw@-s3d>?1MtmUZuEd1-krLLU;&ML??eL&1UVJcSiyrqz!6rQxKa6&%Te%+vZK8`Pd9$1l~1Y53>j}j zKBt+j$DElp5?b2&J!y5!aA%QEdwA&x*)KEXFZZWuUbkb0mTPJhYdOcip^c6bN^RQK z%Jk;BGoakDYmS#ATC$k$wFSTXfg|Ii|H!FVnC$g{auNGw*pct&X=^qa%a{gpc-Oma z6fZJ!MG{DIo*pz$!B>*cegWwlVCc-p-z(?5KvhhGBY+yx&$od$;xX#_cFv_iJ;QcKvE= z%rURFdWt`KUKiBdt~yX7=wcN&u|~mXW&r)+V>MR_O zJ4?6GxU+CP?u-PE#+-rC+QHV#WBssqW1VtKY0--tIdJQj_~iQPhtK@`_F_HBSg~u) zY{@Ns zwD4TKV+=*x7jfS8=IM8_ckAb;cLSR@B31-8XWw6nmgEk~pQ(B}ufcBmX3Fgx);Q3D z)i13&{_^yj)2&!dd4Iw1qoCqfF&~|1`exxN@&*p_WRCuQb`0F>Y|52JXp|?2wX-s* z%o-l|Uu#!m2}5~_t@`t#=lOZ-*R)mgE!3}{kj9@{J3J(_z|yfQ1QpT#)L6hD~x z5F-hzeilVv>eKWA+s9Fn*ZSqB@n2L;7@je-ptWR+$_^uo`WK75d>wzu!#G9wi)94w zwiG9L3ikbgqP_8)I;TR;-c7QQEYu9)I1q`$rO%z1-t$Vx~pC>Eo zS;lH1kIt=%o^!6}YHxkX#a#U+0?2ziRTDm{JH%Avti(fF^G*(A#9(W&p1r8klaIAc zaNex(6#LwXh)VZnK=rf`lFzjbK`UiL%>^nf#EhQ=HGv>}-wDb?QQx4!Dm Date: Tue, 27 Jul 2021 10:18:43 +0000 Subject: [PATCH 04/10] Bump criterion from 0.3.4 to 0.3.5 Bumps [criterion](https://github.com/bheisler/criterion.rs) from 0.3.4 to 0.3.5. - [Release notes](https://github.com/bheisler/criterion.rs/releases) - [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/bheisler/criterion.rs/compare/0.3.4...0.3.5) --- updated-dependencies: - dependency-name: criterion dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eb6f3980d..0699587d32 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "criterion" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23" +checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" dependencies = [ "atty", "cast", @@ -428,12 +428,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d" +checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" dependencies = [ "cast", - "itertools 0.9.0", + "itertools 0.10.1", ] [[package]] @@ -1111,15 +1111,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.10.1" From f99916d1877d072769f798bbb7c226a6b9290807 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jul 2021 10:18:52 +0000 Subject: [PATCH 05/10] Bump snarkvm-r1cs from 0.7.4 to 0.7.5 Bumps [snarkvm-r1cs](https://github.com/AleoHQ/snarkVM) from 0.7.4 to 0.7.5. - [Release notes](https://github.com/AleoHQ/snarkVM/releases) - [Commits](https://github.com/AleoHQ/snarkVM/compare/v0.7.4...v0.7.5) --- updated-dependencies: - dependency-name: snarkvm-r1cs dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- compiler/Cargo.toml | 2 +- synthesizer/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eb6f3980d..f3309a0d74 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2633,9 +2633,9 @@ checksum = "2a428f675f2df8c3aa3683ee583ea36fd8ecff5959cdcd528c07f209986d3614" [[package]] name = "snarkvm-r1cs" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42fc7eaab616b21fb6e0dab4f0c9402a8c831d7c65fa5e4eb941919bf7d9ea33" +checksum = "2aca9bb7105244ebc91f964b11a1ae63f173a77181307d1fa94f04e15dbde137" dependencies = [ "cfg-if 1.0.0", "fxhash", diff --git a/Cargo.toml b/Cargo.toml index 3129564ae8..a219797e8c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -85,7 +85,7 @@ version = "0.7.4" default-features = false [dependencies.snarkvm-r1cs] -version = "0.7.4" +version = "0.7.5" default-features = false [dependencies.snarkvm-utilities] diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml index 60291bbd25..040f2569d3 100644 --- a/compiler/Cargo.toml +++ b/compiler/Cargo.toml @@ -74,7 +74,7 @@ default-features = false features = ["curves"] [dependencies.snarkvm-r1cs] -version = "0.7.4" +version = "0.7.5" default-features = false [dependencies.snarkvm-utilities] diff --git a/synthesizer/Cargo.toml b/synthesizer/Cargo.toml index 717af43e07..9fca57b9b8 100644 --- a/synthesizer/Cargo.toml +++ b/synthesizer/Cargo.toml @@ -29,7 +29,7 @@ default-features = false version = "0.7.4" [dependencies.snarkvm-r1cs] -version = "0.7.4" +version = "0.7.5" default-features = false [dependencies.num-bigint] From 0e0488bddc6636ef252c56dd87ae78cbcddf6c8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jul 2021 10:19:05 +0000 Subject: [PATCH 06/10] Bump snarkvm-gadgets from 0.7.4 to 0.7.5 Bumps [snarkvm-gadgets](https://github.com/AleoHQ/snarkVM) from 0.7.4 to 0.7.5. - [Release notes](https://github.com/AleoHQ/snarkVM/releases) - [Commits](https://github.com/AleoHQ/snarkVM/compare/v0.7.4...v0.7.5) --- updated-dependencies: - dependency-name: snarkvm-gadgets dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 35 ++++++++++++++++------------------- Cargo.toml | 2 +- compiler/Cargo.toml | 2 +- synthesizer/Cargo.toml | 2 +- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eb6f3980d..fc3bfeebc6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,9 +167,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitvec" -version = "0.22.3" +version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527" +checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" dependencies = [ "funty", "radium", @@ -776,9 +776,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "funty" -version = "1.2.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] name = "futf" @@ -1983,9 +1983,9 @@ dependencies = [ [[package]] name = "radium" -version = "0.6.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" [[package]] name = "rand" @@ -2446,9 +2446,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "snarkvm-algorithms" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352a3345d4ba258c1454b459f6449b48ae2062c686e8beba43805031abb70c72" +checksum = "dd8bbefe6252ed85bb073f8ecbc402830e3d119b1aaadcea5a9c9e7a21a99cd2" dependencies = [ "anyhow", "bitvec", @@ -2551,9 +2551,9 @@ dependencies = [ [[package]] name = "snarkvm-gadgets" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552bb91384d004a314d27eefd863c0992a3a984b7e5dcfce711b4e85f1cbfc03" +checksum = "7b462bb5e5ac219eafd1a828c73c181e7b23692ade5c49fd72d71bfe4250a6b1" dependencies = [ "derivative", "digest 0.9.0", @@ -2627,15 +2627,15 @@ dependencies = [ [[package]] name = "snarkvm-profiler" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a428f675f2df8c3aa3683ee583ea36fd8ecff5959cdcd528c07f209986d3614" +checksum = "2ebfa546f0376a1348b857a9defdb3f4505a0420d82f8caa2b0cebbe197245fa" [[package]] name = "snarkvm-r1cs" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42fc7eaab616b21fb6e0dab4f0c9402a8c831d7c65fa5e4eb941919bf7d9ea33" +checksum = "2aca9bb7105244ebc91f964b11a1ae63f173a77181307d1fa94f04e15dbde137" dependencies = [ "cfg-if 1.0.0", "fxhash", @@ -3306,12 +3306,9 @@ dependencies = [ [[package]] name = "wyz" -version = "0.4.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188" -dependencies = [ - "tap", -] +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" [[package]] name = "yaml-rust" diff --git a/Cargo.toml b/Cargo.toml index 3129564ae8..1c341fa9ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,7 +81,7 @@ version = "0.7.5" default-features = false [dependencies.snarkvm-gadgets] -version = "0.7.4" +version = "0.7.5" default-features = false [dependencies.snarkvm-r1cs] diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml index 60291bbd25..d83a47ca28 100644 --- a/compiler/Cargo.toml +++ b/compiler/Cargo.toml @@ -69,7 +69,7 @@ version = "0.7.4" default-features = false [dependencies.snarkvm-gadgets] -version = "0.7.4" +version = "0.7.5" default-features = false features = ["curves"] diff --git a/synthesizer/Cargo.toml b/synthesizer/Cargo.toml index 717af43e07..1d26eb5f64 100644 --- a/synthesizer/Cargo.toml +++ b/synthesizer/Cargo.toml @@ -26,7 +26,7 @@ version = "0.7.5" default-features = false [dependencies.snarkvm-gadgets] -version = "0.7.4" +version = "0.7.5" [dependencies.snarkvm-r1cs] version = "0.7.4" From 9934482ef93f37385e8ea3c947665f24641e06d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jul 2021 10:19:19 +0000 Subject: [PATCH 07/10] Bump snarkvm-dpc from 0.7.4 to 0.7.5 Bumps [snarkvm-dpc](https://github.com/AleoHQ/snarkVM) from 0.7.4 to 0.7.5. - [Release notes](https://github.com/AleoHQ/snarkVM/releases) - [Commits](https://github.com/AleoHQ/snarkVM/compare/v0.7.4...v0.7.5) --- updated-dependencies: - dependency-name: snarkvm-dpc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 51 +++++++++++++++++++++------------------------ compiler/Cargo.toml | 2 +- state/Cargo.toml | 2 +- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eb6f3980d..63c250be6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,9 +167,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "bitvec" -version = "0.22.3" +version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527" +checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" dependencies = [ "funty", "radium", @@ -776,9 +776,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "funty" -version = "1.2.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] name = "futf" @@ -1983,9 +1983,9 @@ dependencies = [ [[package]] name = "radium" -version = "0.6.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" [[package]] name = "rand" @@ -2446,9 +2446,9 @@ checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "snarkvm-algorithms" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352a3345d4ba258c1454b459f6449b48ae2062c686e8beba43805031abb70c72" +checksum = "dd8bbefe6252ed85bb073f8ecbc402830e3d119b1aaadcea5a9c9e7a21a99cd2" dependencies = [ "anyhow", "bitvec", @@ -2503,9 +2503,9 @@ dependencies = [ [[package]] name = "snarkvm-dpc" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e778b5e032a4c48e2a12a1806ca10044900d92c0ae42e721faa85af40430109" +checksum = "af8dd1b815a1101c4014c17cbdffadecb1032e8662fdf5fd4bd67a3c149d8449" dependencies = [ "anyhow", "base58", @@ -2551,9 +2551,9 @@ dependencies = [ [[package]] name = "snarkvm-gadgets" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552bb91384d004a314d27eefd863c0992a3a984b7e5dcfce711b4e85f1cbfc03" +checksum = "7b462bb5e5ac219eafd1a828c73c181e7b23692ade5c49fd72d71bfe4250a6b1" dependencies = [ "derivative", "digest 0.9.0", @@ -2571,9 +2571,9 @@ dependencies = [ [[package]] name = "snarkvm-marlin" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2af3e3720556f0fd653e2255c0e2aa1333624e658b759eb109f6364f9456c7f" +checksum = "2e5b1bb7923a757053c0a544072ec6b298585f83c9f4a3ae777ca048bb6e5589" dependencies = [ "blake2", "derivative", @@ -2595,9 +2595,9 @@ dependencies = [ [[package]] name = "snarkvm-parameters" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bae615fbc1065cfe3e23dd8e3407148c4e7a5afa1632e3120f4b85ad099d810" +checksum = "14356edda788a3e52ac6e809e6fdbfd5cf7558249bf6051525843b045a73d12a" dependencies = [ "curl", "hex", @@ -2608,9 +2608,9 @@ dependencies = [ [[package]] name = "snarkvm-polycommit" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f72af773beed90a4ef947ad153b7cc9733e543414d144b68d7d3d62b32fd98" +checksum = "28fac50de72680316fe57fbbbde2874ae28de7191a3f23ff9e541119951ddaa8" dependencies = [ "derivative", "digest 0.9.0", @@ -2627,15 +2627,15 @@ dependencies = [ [[package]] name = "snarkvm-profiler" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a428f675f2df8c3aa3683ee583ea36fd8ecff5959cdcd528c07f209986d3614" +checksum = "2ebfa546f0376a1348b857a9defdb3f4505a0420d82f8caa2b0cebbe197245fa" [[package]] name = "snarkvm-r1cs" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42fc7eaab616b21fb6e0dab4f0c9402a8c831d7c65fa5e4eb941919bf7d9ea33" +checksum = "2aca9bb7105244ebc91f964b11a1ae63f173a77181307d1fa94f04e15dbde137" dependencies = [ "cfg-if 1.0.0", "fxhash", @@ -3306,12 +3306,9 @@ dependencies = [ [[package]] name = "wyz" -version = "0.4.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188" -dependencies = [ - "tap", -] +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" [[package]] name = "yaml-rust" diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml index 60291bbd25..c36f70ed98 100644 --- a/compiler/Cargo.toml +++ b/compiler/Cargo.toml @@ -65,7 +65,7 @@ version = "0.7.5" default-features = false [dependencies.snarkvm-dpc] -version = "0.7.4" +version = "0.7.5" default-features = false [dependencies.snarkvm-gadgets] diff --git a/state/Cargo.toml b/state/Cargo.toml index 9b588592db..8e3946214d 100644 --- a/state/Cargo.toml +++ b/state/Cargo.toml @@ -33,7 +33,7 @@ version = "0.7.5" default-features = false [dependencies.snarkvm-dpc] -version = "0.7.4" +version = "0.7.5" features = [ "testnet1" ] [dependencies.snarkvm-utilities] From 42f58ff33e9f87ab109ead0a2c3d05c8e096aa31 Mon Sep 17 00:00:00 2001 From: gluaxspeed Date: Tue, 27 Jul 2021 09:31:23 -0700 Subject: [PATCH 08/10] added more tests --- tests/compiler/statements/reverse_loops.leo | 19 +++++++++++++++++ tests/compiler/statements/reverse_one.leo | 19 +++++++++++++++++ .../compiler/statements/reverse_loops.leo.out | 21 +++++++++++++++++++ .../compiler/statements/reverse_one.leo.out | 21 +++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 tests/compiler/statements/reverse_loops.leo create mode 100644 tests/compiler/statements/reverse_one.leo create mode 100644 tests/expectations/compiler/compiler/statements/reverse_loops.leo.out create mode 100644 tests/expectations/compiler/compiler/statements/reverse_one.leo.out diff --git a/tests/compiler/statements/reverse_loops.leo b/tests/compiler/statements/reverse_loops.leo new file mode 100644 index 0000000000..9e28299f68 --- /dev/null +++ b/tests/compiler/statements/reverse_loops.leo @@ -0,0 +1,19 @@ +/* +namespace: Compile +expectation: Pass +input_file: inputs/dummy.in +*/ + +function main(k: bool) -> bool { + let reverse: u32 = 0; + for i in 25..1 { + reverse += i; + } + + let reverse_inclusive: u32 = 0; + for a in 25..=1 { + reverse_inclusive += a; + } + + return (reverse + 1 == reverse_inclusive) && k; +} \ No newline at end of file diff --git a/tests/compiler/statements/reverse_one.leo b/tests/compiler/statements/reverse_one.leo new file mode 100644 index 0000000000..c8273669c8 --- /dev/null +++ b/tests/compiler/statements/reverse_one.leo @@ -0,0 +1,19 @@ +/* +namespace: Compile +expectation: Pass +input_file: inputs/dummy.in +*/ + +function main(k: bool) -> bool { + let reverse: u32 = 0; + for i in 1..0 { + reverse += i; + } + + let reverse_inclusive: u32 = 0; + for a in 1..=0 { + reverse_inclusive += a; + } + + return (reverse == 1) && (reverse_inclusive == 1) && k; +} \ No newline at end of file diff --git a/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out b/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out new file mode 100644 index 0000000000..d0aa2c7ce7 --- /dev/null +++ b/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out @@ -0,0 +1,21 @@ +--- +namespace: Compile +expectation: Pass +outputs: + - circuit: + num_public_variables: 0 + num_private_variables: 1 + num_constraints: 1 + at: 042610d0fd1fe6d6ac112138f8755752f44c7d2a00f1b5960574d6da5cda393f + bt: e97756698880ab7555a959a5fb5c6b4e15bd64612aa677adbfe2d0bd91f0a83c + ct: cf1cbb66a638b4860a516671fb74850e6ccf787fe6c4c8d29e9c04efe880bd05 + output: + - input_file: inputs/dummy.in + output: + registers: + r0: + type: bool + value: "true" + initial_ast: 66a1e88a4c0444227b95ed83e44e3cb1445a2d1263f6db50bc356ddeb29bb7e3 + canonicalized_ast: 5a53d3d742bb46a0c04dabd15026f86aa5a936c113c64a36dbe05f77e167fe3e + type_inferenced_ast: 7368c0974ae1d2e4684e633fe4349a50fb1dbec96c4c20a3c526811f6b410f9e diff --git a/tests/expectations/compiler/compiler/statements/reverse_one.leo.out b/tests/expectations/compiler/compiler/statements/reverse_one.leo.out new file mode 100644 index 0000000000..3da5b9b9dc --- /dev/null +++ b/tests/expectations/compiler/compiler/statements/reverse_one.leo.out @@ -0,0 +1,21 @@ +--- +namespace: Compile +expectation: Pass +outputs: + - circuit: + num_public_variables: 0 + num_private_variables: 1 + num_constraints: 1 + at: 042610d0fd1fe6d6ac112138f8755752f44c7d2a00f1b5960574d6da5cda393f + bt: e97756698880ab7555a959a5fb5c6b4e15bd64612aa677adbfe2d0bd91f0a83c + ct: cf1cbb66a638b4860a516671fb74850e6ccf787fe6c4c8d29e9c04efe880bd05 + output: + - input_file: inputs/dummy.in + output: + registers: + r0: + type: bool + value: "true" + initial_ast: eb9888a7cfa5059cd6a9314555516ec8122f40ffa6229877c276a8dca0bcc9f4 + canonicalized_ast: a300cedc4d5404aa6b164e899f62f0173122305772e38063b5485bf14a2b60c3 + type_inferenced_ast: 881bb9f0f8c2ef9b0dbc6af24a03a683fa00f45ac186a4dbd786c019052c6957 From fe5e4a00cf50b5d2b27eeaa8603c1261ccfde6d2 Mon Sep 17 00:00:00 2001 From: Alessandro Coglio Date: Tue, 27 Jul 2021 09:39:41 -0700 Subject: [PATCH 09/10] [ABNF] Fix generated file name. --- ...ORMAT_ABNF_GRAMMER.md => FORMAT_ABNF_GRAMMAR.md} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename grammar/{FORMAT_ABNF_GRAMMER.md => FORMAT_ABNF_GRAMMAR.md} (100%) diff --git a/grammar/FORMAT_ABNF_GRAMMER.md b/grammar/FORMAT_ABNF_GRAMMAR.md similarity index 100% rename from grammar/FORMAT_ABNF_GRAMMER.md rename to grammar/FORMAT_ABNF_GRAMMAR.md From 011d405e006f6c91cfeefbfca46ffc9dfe4615d8 Mon Sep 17 00:00:00 2001 From: gluaxspeed Date: Tue, 27 Jul 2021 09:48:00 -0700 Subject: [PATCH 10/10] fix output file types from CRLF to LF --- .../compiler/compiler/statements/reverse_loops.leo.out | 6 +++--- .../compiler/compiler/statements/reverse_one.leo.out | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out b/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out index d0aa2c7ce7..315612b6fe 100644 --- a/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out +++ b/tests/expectations/compiler/compiler/statements/reverse_loops.leo.out @@ -16,6 +16,6 @@ outputs: r0: type: bool value: "true" - initial_ast: 66a1e88a4c0444227b95ed83e44e3cb1445a2d1263f6db50bc356ddeb29bb7e3 - canonicalized_ast: 5a53d3d742bb46a0c04dabd15026f86aa5a936c113c64a36dbe05f77e167fe3e - type_inferenced_ast: 7368c0974ae1d2e4684e633fe4349a50fb1dbec96c4c20a3c526811f6b410f9e + initial_ast: 41a0c534538a94dc81b72250c2fc9f4119c6b8d3f3e99e47e239365284bd0084 + canonicalized_ast: 6c3f732c92874e90be8cab55ac665c6f6d4292d76fce147ae89ed9dbdfe685ea + type_inferenced_ast: 2258791abdb7bde2e3f28a12ff8b5d593985c42d78e3750d6b5f44d88d0560ed diff --git a/tests/expectations/compiler/compiler/statements/reverse_one.leo.out b/tests/expectations/compiler/compiler/statements/reverse_one.leo.out index 3da5b9b9dc..2efc997d1c 100644 --- a/tests/expectations/compiler/compiler/statements/reverse_one.leo.out +++ b/tests/expectations/compiler/compiler/statements/reverse_one.leo.out @@ -16,6 +16,6 @@ outputs: r0: type: bool value: "true" - initial_ast: eb9888a7cfa5059cd6a9314555516ec8122f40ffa6229877c276a8dca0bcc9f4 - canonicalized_ast: a300cedc4d5404aa6b164e899f62f0173122305772e38063b5485bf14a2b60c3 - type_inferenced_ast: 881bb9f0f8c2ef9b0dbc6af24a03a683fa00f45ac186a4dbd786c019052c6957 + initial_ast: 55d64e1ef9318084a66cee912987308a21c5779cdad1f0103d6b3fb195f74d8a + canonicalized_ast: 467824b3c4be8e0d10d6008a036f40bed2659a18ab7eb2ea2a5c7124146d9b06 + type_inferenced_ast: b0908f46546647877409194ca817072d02f157b720236c7f58b5d3b0b7cfb81f