From 1e942347c7e8304dfd316dbdc958dae9f65b9d2f Mon Sep 17 00:00:00 2001 From: ashjeong Date: Tue, 13 Aug 2024 13:34:58 +0900 Subject: [PATCH] docs(benchmark): add baby bear poseidon2 benchmark results --- benchmark/poseidon2/README.md | 88 ++++++++++++++++++ ...on2_benchmark_baby_bear_horizen_mac_m3.png | Bin 0 -> 26579 bytes ..._benchmark_baby_bear_horizen_ubuntu_i9.png | Bin 0 -> 25674 bytes ...on2_benchmark_baby_bear_plonky3_mac_m3.png | Bin 0 -> 26495 bytes ..._benchmark_baby_bear_plonky3_ubuntu_i9.png | Bin 0 -> 24088 bytes 5 files changed, 88 insertions(+) create mode 100644 benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_mac_m3.png create mode 100644 benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_ubuntu_i9.png create mode 100644 benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_mac_m3.png create mode 100644 benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_ubuntu_i9.png diff --git a/benchmark/poseidon2/README.md b/benchmark/poseidon2/README.md index 737aa8d6b..b3b5c671e 100644 --- a/benchmark/poseidon2/README.md +++ b/benchmark/poseidon2/README.md @@ -58,3 +58,91 @@ bazel run -c opt --//:has_openmp --//:has_rtti --//:has_matplotlib //benchmark/p | avg | 0.0010202 | **0.0007116** | 0.0011459 | ![image](/benchmark/poseidon2/poseidon2_benchmark_bn254_mac_m3.png) + +## Baby Bear + +Note: Plonky3 and Horizen compute values with a different internal matrix, requiring them to be compared with Tachyon separately. + +### Plonky3 + +```shell +bazel run -c opt --//:has_openmp --//:has_rtti --//:has_matplotlib //benchmark/poseidon2:poseidon2_benchmark -- -p baby_bear --vendor plonky3 --check_results +``` + +### Horizen + +```shell +bazel run -c opt --//:has_openmp --//:has_rtti --//:has_matplotlib //benchmark/poseidon2:poseidon2_benchmark -- -p baby_bear --vendor horizen --check_results +``` + +### On Intel i9-13900K - Plonky3 + +| Trial Number | Tachyon | Plonky3 | +| :----------- | --------- | ------------ | +| 0 | 0.000112 | **6.6e-05** | +| 1 | 0.000111 | **6.5e-05** | +| 2 | 0.000111 | **6.6e-05** | +| 3 | 0.000111 | **6.6e-05** | +| 4 | 0.00011 | **6.6e-05** | +| 5 | 0.000116 | **6.6e-05** | +| 6 | 0.00011 | **6.5e-05** | +| 7 | 0.000109 | **6.6e-05** | +| 8 | 0.00011 | **6.6e-05** | +| 9 | 0.000109 | **6.5e-05** | +| avg | 0.0001109 | **6.57e-05** | + +![image](/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_ubuntu_i9.png) + +### On Intel i9-13900K - Horizen + +| Trial Number | Tachyon | Horizen | +| :----------- | ------------- | --------- | +| 0 | **0.000127** | 0.000381 | +| 1 | **0.000126** | 0.00036 | +| 2 | **0.000125** | 0.00037 | +| 3 | **0.000125** | 0.000356 | +| 4 | **0.000125** | 0.000354 | +| 5 | **0.000125** | 0.000354 | +| 6 | **0.000125** | 0.000354 | +| 7 | **0.000125** | 0.00036 | +| 8 | **0.000125** | 0.000359 | +| 9 | **0.000125** | 0.000353 | +| avg | **0.0001253** | 0.0003601 | + +![image](/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_ubuntu_i9.png) + +#### On Mac M3 Pro - Plonky3 + +| Repetition | Tachyon | Plonky3 | +| :--------- | --------- | ------------- | +| 0 | 0.000169 | **0.000106** | +| 1 | 0.000167 | **0.000105** | +| 2 | 0.000166 | **0.000105** | +| 3 | 0.000169 | **0.000105** | +| 4 | 0.000167 | **0.000105** | +| 5 | 0.00017 | **0.000105** | +| 6 | 0.000168 | **0.000105** | +| 7 | 0.000167 | **0.000105** | +| 8 | 0.000168 | **0.000105** | +| 9 | 0.000168 | **0.000105** | +| avg | 0.0001679 | **0.0001051** | + +![image](/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_mac_m3.png) + +#### On Mac M3 Pro - Horizen + +| Repetition | Tachyon | Horizen | +| :--------- | ------------- | --------- | +| 0 | **0.000191** | 0.000203 | +| 1 | **0.000191** | 0.0002 | +| 2 | **0.000189** | 0.0002 | +| 3 | **0.000188** | 0.0002 | +| 4 | **0.000194** | 0.000199 | +| 5 | **0.000188** | 0.000199 | +| 6 | **0.000189** | 0.000199 | +| 7 | **0.000189** | 0.000199 | +| 8 | **0.000188** | 0.0002 | +| 9 | **0.000188** | 0.000199 | +| avg | **0.0001895** | 0.0001998 | + +![image](/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_mac_m3.png) diff --git a/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_mac_m3.png b/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_mac_m3.png new file mode 100644 index 0000000000000000000000000000000000000000..edbb95e902e1f9a0ec3ce93e82b2b3cf82040976 GIT binary patch literal 26579 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 literal 0 HcmV?d00001 diff --git a/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_ubuntu_i9.png b/benchmark/poseidon2/poseidon2_benchmark_baby_bear_horizen_ubuntu_i9.png new file mode 100644 index 0000000000000000000000000000000000000000..e56d89e31508bdd59ee8b5f6e58c1d35fa8c572b GIT binary patch literal 25674 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 literal 0 HcmV?d00001 diff --git a/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_mac_m3.png b/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_mac_m3.png new file mode 100644 index 0000000000000000000000000000000000000000..c767ea5b0ea48c08b439f313e24932f14e5d3ba6 GIT binary patch literal 26495 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 z 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 Bw+8?K literal 0 HcmV?d00001 diff --git a/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_ubuntu_i9.png b/benchmark/poseidon2/poseidon2_benchmark_baby_bear_plonky3_ubuntu_i9.png new file mode 100644 index 0000000000000000000000000000000000000000..2002933ad223e04ad3963cf7d80b863452fd0838 GIT binary patch literal 24088 zcmeIa2|Si=8d3&i;gv^98CG%Js36(OZ zM5Z!j+{dNwd)Hcf?X`a2+Iy|N_y70b{l2eW!}C1%ecjh}p2v9{$9V=FJ)*|W!pA~U z6#M>tD#s{_)|;YeI+z&n9m)DnpYhKwr@gvP$L&r#T`+Mprw*Gq+1uJV*;<(joHuto zXJvO*LR4CGhp>R9lau{988NXlfBk}}ouh>q|Hk#scoSy(eJ9RQ6o(1pMv)v`YB{Cx=%FljoBZ3DUWGI zgAVcuY<@@cTq&>)f5uFy4fy8|UIqp7WsnKAA?`*)nGfAI`;M}t z=GA-LdAHwUyUfA=U?SS+JpOZTZZ7I({S$>ThPpwQUg-%lxXYpdz+%^R=Nan_yf+*ZXWU-BQopTHfZlN5_Tt&nzl+4m2R zOe`%Y8wW;v>*n;#X7h&p>|U$+a(&A`4-{h6hUseFu_$pq!VB_}~)$m`l z=HugYoA2DYV{B|p9Y21&Xrj%n;Ns83123zBme$|jzw}el#ieW3tg&pk&#aeY>2piM zBK1yWZf>p?vsYPse~+A;+))FA5c&C;pIg;(9I+R^eEIUGK4o(L$MpDsa;fL6v882T z;^Et-y>DU*Tt>Pi#yI3;22D&%dK(g0$-ao&%gVM!jyFj?=0Vnw;gj>R=f1vr^Y-nf zOPA=ny1TU^85tRsH(l?XX!ojh8!BdeY;bkCh@Nq0g+C`fjnvssWy777CZ|r(v$C?L z8x`xB&;Iep5_$%Pif7N59Urd>2ngtXm&w0)waoov6O)a- z=<4cfm;Q`=fg8^qx~hUwIppdOdP{h#XnviW?B<{petvmLBNxT}Deuh6HjfEI_nDE} zeMgR{?%T)I(9kf9jY3h5j*jA%Zv=8I>uJw@dEt|tz3sut(yK$I^G4<$@%J8b1nlhW z4&C0#{_cUHvWg1*t2?_cb=QW)Ys9NYjE{Dd(-k~^ymtM1y0?jkFGWOfpa1^e=Mp1_ zcCts&tjXyJ+}>MNH?7lb+>$ zO=!<+MdwT{bxkPB1&9RGNaz1*lT{z+4d54YRi@_WhEZdoc#P@kI#KgZ5()? zO}BK@A#c2ocDk<5^u&ovlLh08W=+BEs&x!A~5f2LXW74E>RS8HC}k{Ibr%Zx)H=(1?fv05s(dv|Ale{e;G zl5JbjiowA_>5D%$6gu}OK8z93&+F){ygdB#=cVZAHHQuzx_0A6(y^adLN@+AtFVJ= z#7bv;v1qxfrAy-&4hpPuRn^b4<)WBMXMP0R_cx1l)`YH9vb9ZrQ*`lMd0CmlB+iHb zBa7E8lpl_DTDt7HFNbKn?T0%Q6*=iUFY|kHQcOul?xs3=sfDfKrkLvM>jk?(-mhlcm=E^opDh z44-VGl1C-Y>y{~|XkN+n_xJbB&d%=W?@xOenw~DKD0(9;t$VQbiSOgbkHxJT?z7aseEM|X(`U~#Qsi-Gl*0SR=aP=<>TV$` zfL+Fo4RgFxVo7lbiD1#Um0}fwmx~ymITO0gtmYmf(#XP@J5c_a45g z<@aKv-aoS7paLIRBSfiMSy?4ae?T<)?6|AVrJMaziHE-Xu3fug@p|qfG;<%@irq}C ztb#7Id+4mP`BboNW@bjS??}v^&^vclxeu2!zIpeKr}pyV)mN^rmc24N_t9(aCx65Q zwshKf&Vyqqem8FL{P^)B>-<2AV1M-IuU{|w`O$CKu%YA0P)TKD%JGq&8z)m&eZ)6E z_w8b7Xixz3=>TJ56QlztGndQg4jLEk8dM;H} z)rd7=*h0Zx&CSgLj~+?TD|&~8g-M^awGBb^Nlwqq$Ph8=PSF$$zkNIS;lu6Hva;(X zC37o0RYQ1v5YaSw8P~KPl0YaiC~;pwa;v!8zR`zWTaDMbo<%-UMmUX)kEc6#?wnKa z8yY>mu(|mknWb~Sk&(+=a&3|xUiJ4UX>{b>NiQ0TfsNOjYrU#5qU+?$&)3M?3N9`# z#^2v(Bec>{_mh&=%gghhK7Bf3JRBR(Jj`o$j0bO{vo;Iw9;;+%-c7y9Hd9+Ad;XC5 z_mMIC`R4Q!k67MqnEQxB5jZ*NV%uJ_8qqrA;o$!B=g%MAvaDfk1o^xfPv_Z zZX5tXvyXXaDiO{ce*G|ym^aDF&CSS)sjFFYdz%@Unm(#a~y+xJIwO3bXWo0EF zo&U_fK6hZ=DzznAfJrhnLZE2y~hKR=R?hSM$RV z(iGRqmBBsFZ3|-l*6$ z7Dsq;^sPGA(xr4_Vq#S_HKsp4Kf|sQ@%+`p0|=1RGM}u|RO`>mgJ^Srx7e}gfPZ0a zxB9C%!^e&ZN~O8kXIo|H85zxLLRL(EzOEj9QFdNiTbqF@xG=Pa3QRir^2H0y)2uOS zSaGsepTB%*wp^ZtEHRL8`8JWgWPZ*qqTSp)DLJO5vXbr+1A7I*1vys7(@&O`i0W^2 zH5u`84oo)M?P>2|X_;I%86{~$$ra`;rbwtWiR>L2(+%Tq+HT#r<8%%1(Rk$e0& zuAuYPtIg9-@!`MvGD+g83}6>@2D}oNkWfB#>VDmN)A50imveG8iQ7NUvMJzF+v}(&Aoex_v5RsW$H(+!QyV-D&&YyQoMG0gc+M z9$l4p=3_@^r_VbhH}saPZ<1#-x!L?+G zFVcwVn|q3ujmcaMZ{KF0`+CIB-#_Kk=MlS-l9Ir{z_Q7a?(jeUpgnl-AkJZYg;c~2 z>qaKPL+|{2DI8b|Ky+lA_|Ba>Cwt?=tUcI{M9T$@bk`EFX@Blqnmr4mWE-B!%j5ai zqoS^4mQ1lw2*QC?RVwZitrvP*pGYyV^U-(IOL_uA*A_T*zlm4lAYfNSFGoRDm0|q* zhf8}rrhxI|v}a4lTWolx&aSGctPGEizFK~XQ8`7ktG7PhWgz!m60O>!2g(Ht)&F-WJn`njsvTG13**ofU-81xZ zD-hl|d3lo^2U-AXOw7&w$w_TW)dJd9eI6-NpLtT=#m((q;e73G85tQ5h!Eb*tpzQQvUpsGFsmNtG4aDe0|(KT9g9efVd?HdIjmz?Y1QX+FnNR8F7X6t(kA z>W|_G@}jZBob=0e`ag4J3k+Vu4F;gMQ?vo9}hQQk8% z?l*7WHp6!2l{n3YLgY=#@y*y!EDO~sQZuP$z2;}7@G8ymT@GC;z%yDmY0^VbQmKZm z2`wu_5x;!dG6m5aKmjo{*ASclWsUWIT@Rp zu4|SHe!XX!ZDO#sGFc;D(9j5#W>=T#h=-zLxx`R#U|{cF4I`tg4GqT*=PRm{z?+ks zYm>Wpi1tCk&6~W!dO1w;bCYHX??h=8P_qGL-T(3mH`{kvfQf8)Bctd<{a8UR;|Hl7l9K*;c{?9IdZbl@T#Q0hzkQy~~d1jat36Fh~;6RPf^# zAtB|nXU|4VXB@G$72c#C9fE_SExmiz4rT0K1qJWPxsg^W>|gf!?qQ45rvp%c{JfPX z#;M3@KR@TOZD>Yzsg{}u%~2g4o+C$&Ak6t;uX?M!tKYb3Q$>4wX@j$Yp<(#Vn}I7N zP6wJXGc(&eJ1?T%x3u7R(FO$tnRW>V9xsa0|=oB$T0 zqN2G|Y#=lw0e<{YJF=~o$!XC8pV0g5Ta)!Pu1zfN#}CJCGm>^~25$$BZUmtKa%cJ5qGYBC%OAcBaCfFQbsPFoR8s%p!0Pn-x^`?jrZ4GNcl%uF%ta}7N` z79tj9sjuU}_s?B?RC5AH&yssQKU z$H=k9vXDDf)wwjO&M~khnr@4^`(gnuE=f%e{ykMlZ{Tu-JfG1PyQEI+aFL9B`k zfM9)rgW3BJA3Bp_JZXn}Z@CY&B7z!w^!i2 zYDRmkTD2+!7iL0`b9T0mfoSc`ZDxQhx)!yU7s8H_3=SA}v_G~03A?CO{9B;#4&AejE`gI|Ek}P;l z<+ZiSz>5B#J{jQR2>J&Hppnv!_&hZ+6o&E-m9**PaOYFxEL2ceQ1Q*6R^Z+3no}p^ zH8aA9U-55!a={FNXL9V_$!zyuKV)S06fuxMX(R($30uVyJFPC?Yj!$K@64Gq;eY<= zXIJuzAzn3* zL0x_}=g3tK3o0luaNl>xy(sC^W@hUH zc1Sm}ld46j9%w%_%WpnxpY;g{M zC7+#VS_DKz2OsaTIWzLayUDwK(IFKoljeRvQ2U}8+pBAKvq(uvVd?3Rg~v)tTReHh zGieCvpSm8LXn}M8a>PQi3v&HREy|CVA)u%@e+Fn)1@1tBdKuBsy6~>xHfjmz`KE9{ zEZ?W*N7oQ53F}}nb?O*hJ6aRtd z%E`y4m-KO!w7tOT7dJJMKBjZrAr~0e!Wx-&(d$=VYfJzN+x6IPV1d0KJP-wmJ^U>x zrUHb`k%`I`M7oIMQ9-ed5B4F!0>BwBp2k^Ba9)m(Y^ z7ZnvrNsuK@gP&GVS!T71Nr`qm@lZMRhPBt9X;|%CG^@Q@&2!S- z=jCmwcpNM2K+YTOh0d(VqE)E7JHC7g$Tq7@O)owDl8-Q;h-jB?-`2modgUv!l=TN~ zP^-VGuP?{p;aa{tK+>k!7}PO$-=7CICQiGol^+s~J3pv;>czz5bY}m}+42n$g)6-b zYh!2KxJouIx5=+sxA7N!T(iG+;SfL)lG!>L89pN;qnmOUx0{-pg3cFib{}if!Gqjr z1YU@x|Hhwx8lyl*o!8rv+y8TQ;AZ>Zu}}|W7dgCGnm4h^jCbU{)}R2`qZWA*WCjsVPB0Xr11GVwlj29donOSvff>N=mec z4j=9xEx?Y`xYTe>{fU&O+?T#uGouTxV|@ur9soyWyN+3dhDd9iy*PH^rhe|SN`5Nm zOgq=%9!G;GQ%`uQjCB1V0NFz?g|E4(jZGDyj$95TB<(pPZR9bgKPBxv=T_Gl4A;f@VlEYB>3v+}w*4IW;2>N6W1M!XubObhh2lGQRDHB76}ig8&E5G{UA}sLwtc?5pnH*D%7}ZDEuz7|JK9gt*+C zdGe&m2jmW|HvPODRb9}6N2?*(duiu|M3DjvFV3Dxh zt5S|9ajsaAQg8IP#Yxz#UTfU~*;7bvx$5zM0RjI`DX5Rd-6_0Z*EBxy`-8NsQ87{E z{O}F>rT(0p!2iZ}6fyhZb5g;IvYVNief|ukn@{R28vv+z@lov`FQ#1qog^}+i=vb4 z6wVd1`g()ETfccTBWhsolCB4W3%rG<2uL4_Q`y+rad3~zm)YJu;x1pDW8VE7Ww*?` zKmklF_fr2`B5eBO*(uzT->q9K4jep~mT`Axw$q|by{nck=3?vDF*y&qsDWarWs=dq z+(H&$qqT~@{&b3B_i2+~5_a?L?ZIhhU%!>Q_n|Fjksa+?oU?x}UH@l&sbNDIAUYGC0zy-H9@j^?Zk$M z61d~=nZHvXOe`!)*4BcB=Lc9WT)2S8q^alCRmF^OUQt`iXz}U};XI(u+ILng%0Asw z7Xflw?bN9aBqUi{GT}9H?vqE;M?j=i2lIqqyXK8x)crJkJ@}5LH}I#jtc)U(q*82h z&JB>HCeQ^4HE0je|KjF0y6c0&GY77~126C)|zW5;~|{Bv2vik%`NB3qWRY}mL_tMJINW5@hg?82gC&mqu) z8#tB{{=CQD!GX&L)Q7RHEt`dfMYd|}QH6sCS)V<7COJ57RVS$wxDjk{CfoMeyKR)dws6bHZU+Es(>KrAq@bPyUc>*2#CF+CP`c43JBmC*UHxweRi_?MQ-gI1t}oSB{f zuNecXwa}T4n)xa}uL#}!^y}zQRHvQThm)xJNu58oN{&1_nfrMZLcZlEz%U;lA3_b~ zpKXOsF4ks%526vtm_NJ^{*sm8A9S;fX$VP;Yx~}k%Sx188}iO^aqA|3{aOqD1sQLz zySp5`4b@S-y_P^Pl`mhi|D6=AtkiN{x&0Iqa=X}w2P#Y&IoC$EVaq&+*U`HP@y`iN zr(<++(e0gQe4jjV`)ljwQA`x_=J3Qsrqc&h+Cm|rt9C6}uXZ)v(G98_gyb54)U<>hg}SUpI@2A^4#ddsFCabN~K*W3U8Fix(5Nuqq05 z349@p@GB6(0LP7shvzb6u%^mz5(86DTC;lFG^hI@@)s2s*Mt97QB@_nP~ep-sX2Ru zh1n2QYar>3yn7@*d;jejryW8*Fj+CM)Z-UNRfm^!VL6x)^aZM7BttkCDB521=MEOaVI z2@z`kJaX-Z4fF>R9x4qH)*aOAWFg8KZnXe>%D&mgC6u$XbLZ#JepOW}4u?`S*KOOz zg*+GWpu4Xx^%w_*n#;5p{tSG$rZr?HC>X-cU~<;|X46eyBI(3x3gSE>@$GV?2R;{^ z{`Mx84uA(zI{Z~RIhq_1kPW=mq~hiFtE+P$@BSSYv>c&fq^CDVN%$TW0+d9ge5f+uGzS=`5Np;639%xfD!aQExm4~| zRSl>U*2jK>H{sGE*5$;RnDyvUC1Bed$ZXlCAvTlL9}~k5%dpK5L-)R&d)u-qw2nP-fL;DweGdn?Bp>%v$H}LG#c44C;UflVEhc#7I z^vI1(<2^X`;MlYu8>p#~5CbHgdR~^CRd$*o+D*9k|BC7X!uWsoJKs&>K6UC;2Po`{ z+35*lqy#~z02jgPVsauib|>$kj7mLM10$-Be!u@HSi>Do11;Q8f-AAz9KJPd1pJJL4s+tfiT6(~h>@TO+ZH?goFekFI;BF-f=Bk<_ArZP>nDwr0PWx6dU(dXDt=r=hx`c zgQNA%N`hQ~=6q_g_YmMWQdy>WG&~8o@OL`u3qK1>W%pjX`3RVw&4MAIw+VAT*0hw| zXH&d2T?eStHxQdxx{F=MDxenir!9!;scKCO3fMkSj99v%yb~XBej>T(a}!MaFfu^VD1Rq@@Xru7R~8JpzElLhxvq=i<``DwW z_Ld+uRm0eN8P#Anb~xp|TJ}6KR*to;T6kSC?hbVfBZ?Ck^aNnG13^ozXx7wl9d-(FLH%eh~X?)Hkc>|Ld=n-W`YD-gDhXzrxk8iwE0v@u!3-pQ#7E1ML_ zK$w-}vsx>uuvNQ!J!hwAD9_1GMwqFwQfuYpR-v@eI(TVeE%ULK*hu2rw$V_CXl7M` zT%^hkfb9@&x7-~>dQ)*uYoROwwUFQu=n1HRbBdPwRP4qB3}{FZJm&G03TJ>GyM+qZ8Yu32fPaInAL&jc{Vg`JS< z8gyfgwPn(~c9lPSw%^E&AcbHJ&Ns=E?S-zsEVbLk6%tBBq}1Q$d~RnP!UE#l-YcgL_Kd4r+5IzKm2 zipwj*M#X`kAc5h5c7hL}yx|))gG-HwB0~%$oLU=`u)bvG$H6M~ zc?i}ToEN{6l0C$42>X7jFb_Qqia0_j0o*QQ+3U}!`Sr_}is#Q+Nin>0X8@#6Tw~I) zbAz9DjrPCez$3|m4+Fjsq0v7eZGc)MxEd;pWqXN-zbCmWK3{7(V?#h5WfZu+zP<$A zAk|gCga&>%qB#Z_5Fu-LWTYISh$Los0l^I`rk{B1xDg&JF4)Cj4I$opyarnDG8?c# z_9I<;VKp(vE|-R#1di6K9_(n|9hRJW*bX2n()Ds#00!P?nOxF64(>v#&4un==E+)E zu!CWEA+Q2fwfXKFR5BR%~k0Q88 zU9=Xsj`sR2cu`Kz!$p&ATuw`@)K{-weP7}syIn#e+vc6_L6OG@C922IGfOqIFr&y2XFclT`$O>U{X>VVH(5d2TJbW zzn?ru*fVtFk8U9-0xO%H2n#theytC$QQ_E63>s2pfC=n>q(2>3=C85Q68{{ya+P}Bf*j$p8F-n^OI2v$P-eNDId%P7f8@Jm4mDrA4b#$DZ% zrn6v&hj|Ftg4@0&74yUdLK@gkfgp~)p6`vg+Pd?1c(>_;AE?X;YC)M`&93#3*kg#f@cMn4_ zp(uBEcVZKI=d$@fh^j9qBy0rz&4FW_T?11Fvi%nLe%?%@atx1&5i5ays`1T&AeaU} z6!#cNKFQw}yTxsy|Ky?u^ti@wVSVJvYvZTsY zUtb>vfaFG)2L+&8q&qk}?}eF+)G$$4M@4|5a8>}_{7Lk1iN)ZbAou6a` zSToXp!8!&nc#7jdhZ)W(90$iPlK51-1>u=-@v5>b+(N`dkR0+6axM^3YSUF(TG}jB z1-2ja*g-4a+-}YSvsK5y06RtCH1u1cX7!jotKse^3?kxYNJoe9ojo3WU|lGJLE*qL z{??E%36ar$ZssD%@u2pGhlf#DMxGt+C?7_$gevC%ts1P48DcwlD_SaKwd`^fZ6r2; zY9*y?R+czDJ$+y?dNmfo;c^q$pJ>fQ9)v-Fn9*&V7YJV?`ldGeW15=xxBr~b1%W&| zI%=I84;0c3nIFyp6>aV12#WzgSR(;bFkz3gF>+^NJ z)pR5d@hIlfWSuPaBvB+%_ylc7efn)U7Z74cT5K|#TrIGsU2JXF7xV8iFtPpoG@N&r zaxPZmq6l9!Cdw@|$3rym zjR^YRe*Pl)Cb=_poUaU#8HLOe-2Gl?3vZG&)<^Up8K=GbvhX{Dc$?C>DI1976q1;< z`=t1(?Y9aJZMyzjmX}m$VkpDSn4vbfDPeK7ZeoZY{^LT`@=A$!J~E zrYFoxH^DM+#ITrvhj2bkH+2XbLSa%oq6SA# zj1R3;TDY#xXqO%D4UCi<3j_k8oKAZ*nE?7U!z@P0}0cX$7)=V=F89 z?G(iXnxmZb&J*B!;YvByV_4??iXT6yf1XnJm4cCGE@ds+;__b+Yd_MZmN{jRW6AZq z>~m$-T0zx(LI<+ut7#Xo^ZOv(8bG6NYIf z_#si2fZ7t+z1uKhlav$>;4Gdlx|FsdAK4GJ?T&~7D-(-oK;AMpS5o_d!3lG9aQ>kB z5j~SzFOyo$RWVtFs;RDCDV16J&+AhugbUMs7RV0e$~BA*uuNJv}|d`;N}lH{c(qWRH?- z96KaJlZ7H3?i+B6^B=P#mxD8ea3yHCdF$5w$h@CgTdSvlz}E^19ZXOay@9T#z3KZ8 z93W2#;(s-tzY-1funn6x2TP(ry9{=$&hvr6V_y)qSIoel1VEg{%qQ;`~S;%`r{{`}u@@$FYohk#=-ez1zp&OP@`SRkuV1Cde zC$cAc@22Y}|K!0XEyHLVT4)hajVUhP&A_pS4fGr#(t%x(p9#kel98ea35*Tb0S-}p z&o6q!dIfZ&?wOxCM|q?0lDROL{^JB%&uH#dNR!8+eDB|s)9n9!Iql#^rird3REN(Y0@*tK|-v^S~Q06c+vfr>OQYLmja z{<+E-8cqrvDzxB}-yS0I>+r7J<+uSE`9#n7sqHHOG(wPAbWWI=n)(9STTeTJ69BwQ z%lMU#_|RMsNh1H=%D+YafCcx#K2tPq;rko@-!^XsP8i#K^{;oJsPg`>!jtDdHdcpQ*J8myc#I6>w6-H69V+kL1SkdMP0_teKn| z{|n0M+>8IAoYgTk)=$b<(%{}B0UB_vv~cT)5{PX`2nd_g1(ER`7nsXUQQ)YQh4FhU=2<^n^otDv#!3Z+vzcYdTMmzc<B=!)-BC07cX{#h1s`n zUm0k22lUUw7!~xKm4#(tPzu`JQK#tUT5}^QWW#W)H%3bB#-k|z9-Mf@fM#iQmZ?JX zfxk5fV1K=!U~0n@C^Ir9=F#bwz5uHv`mEXQ3TRGS7XP6XBVB}bvnXWF%klB+QRZKT zQbp`p)V0V+LXO$Cfqpr)pu6rJ1 zGw}7tC%3c7#ZrwWJ^>%ylm}K?7W~UE(o%+?e?ILA8&8O&EUm3sz$u@yut*DmBan1i zHaNp&k(%K(BOxoh5)N5GNnp37Hqk}T?x&}-A@K@+OtF=R(c`V_#RgI3lS;UkEh}qjfv)k%8x@7BtIKlsT)TUn<84Q$8Tif){i`obCKk&@{Sp!u z_KS#!kcJI3IW3J9l;#FBSz=R{#UK6i=1nFqulWP-2p)<66`#!CZbI&VTN6f-bo*ALugIojzkF5nLF6R+L5QyZdZ zHfeNkPQAfn`1fYVcTPgN4M(S!`z`DZea_#HLh<(=Srof)L-=8`h2&{>?P5dujIH+d=;H{#QX?vh^4&o{scry&;34P_M!bp71Tw8j2x3%oKv?_-6rE ziHf2F%zD(>{uCH`IPmO8cIkk@d7p0=llU<;7n2MyK`TWr|L0!rRjc6SPyEq`0TlRA z_-!e>E;45UCyTU#q6@wQ^Z|J%U?jm+=b(C^vbHYFwT{5_4r0X3&Gm<@iiu>w#8($< zP;(L!D4>ko!{x(itN=%lLto?8!}%Mn*u2Fa7ZgZC=@7usfRvOJbPoxEi4t;Gt_y}9 z$%IT(4fSG2>w%0JjD)%=<1FYoJs|bB-g`*qN*WsBiTY{HLYYOrxC>JAkd9)spOi2DJuX>AaWvOH&9k&y&MMA*sjHY_a}i*Pt!dp!(Rs^~K! zBf4a{;mZ*PSl)c^m&{(>~>*xyTH`NoM#C#EKIF~GmD}P|k;Z4ScSr&#` zpdeXKagv7I!}-T-Pz)`F>*oHqo!0l!M+^tmQebmG^gc1cBmK_lpgKa`26%F`-kxb} zL9MY45{3@`I|!NwE3^x4bm}DPr!>O=;SYCnN=Wg~SF*nF?+3`FK8C-A75#}7$irGS zZlk?xU&P3tR5slG(5`(?EW|Ef`0?Ns_CvS!!n7z1oPu8G4;>|~@$2W$Oqg^50|mC2 z|61h$CcqKj(9lrM)vHBv&bI22#;>MX4eL+|Z?WvZ9FBoza612XI5rqtH2e`0!$H9; zQE$Ill9+6edEtoA`W10mEDAe|OobElYF|kv1)(LJxKB`vE5TfrsPCE@<2l8QQVx%1 z16ag2#cmgDp+mks)1(KznM~F|bMJn$_P0jIApxi&XcLKtD)XA3K8e9aY-q?$43Kpz zgl!Q`U&MQ6{t4xOw?rEVCV1e=u!QKWX9Dp_W}LvELOvVQ!RoBWv2V%sfV8H(A?^^5 zC@AF`K=aFxXmSt&_gwm%cthGPjHD+oRgrn=p(<8KU132*8=&nl)j9KS&9nmCxwTfUM)^ zz=BT@Z^`T+Yz~r7Fdhx3#^EA*S|~Cr@0gTx-$EB0(h82Bs*F>wH%8$QLW49;Vr+mt zY-ES?wK71TkP!j!3p^079FB8CLpSL#g@Q;d5x9M#1CtfNQ4>ix76gE23~NJgTd^#R z5$G%l#`qchObAh{2Gd`dVf#Ov|3kCg{U=K#22B<*B{1C0y&(F`YFqhAY z%#T9+fjOLmOi;v&Fni$&!jNT7CIC5@1|C9nK}|uhqLC|GLEjI%pyx}mGz z2dV^|SE=8$tv`d%;XeHweKBzAN;cL%+J=$@wg#A_gP~}cp=ph;zXv)Nd64L=qwwjV z63CQ0K}i%2gm#06Aq>`Yhj9)Ury2rB(MH8p`v7AlO;(BtlF6fELQtpBk?oBMZN@2%*ja zB2ff;1fYgwsE4VZT&@#?#1w4;j~f}DNJd*BXpu*+As9jC)Q}FH)pr9%V#-OwBTU76 zK_wFR4vIWuq$JF5`vV^yj)ha^q$l&{Fpj1g0glXs3!TePM%e+U=PuH)gS`kJh%pR) zf|7`DQ0B_u(GHJ{O#JcsG!9?v(JjPkiVjIK@p2N+6i8#ZqFs~TTgqo&IZl#4BsgXm zB$UtrI z@y1F2_5IjS^xM(MgFez@3qQ`Y-HM?CdhYbq!GrL}FNankOy+q&Z&`+mzXvd73s)p9 z)wuwm5^4}@{YYjdaTom({x}p&NcB9ZuMlKINsv9$lEVc{^&%7mCVh=53sYo1B55z7 zcXM+i7!$t2WyILfnOKP(f#HkTnmW4j5)#K<5b_owhQ|UdDIGc#VvII6kiV%T$K_Vu z64-IAHgJJXE+bZ5U48v-jP>+^XCLkK%NP3R>m{UJh6S)?FB7B&=TSK2N1U2irn7{^#L^X(Inf6Obk= zOlTNLq@U3o{_NCyObRR>{aHi?j{y5w7P7B9CIO!24`H;44hVs^s*u4}g8wIO>h{KU zsmku0JGk~YW4Ofnxn1y}!=Hy^ctyGyuFjFyz5-;n5{6Z1tVp_2_xw3(yn6}NyBOkl zxaYrZSoiE9<_Mj{)Q#=84!L__B;XFrhC(pBbp85L{t+%S8*RYdGC}_RI zj$(tdMc|i6jmJhn9wW`MoeGg z^k-x47vWBL#Ej6Mdm_Va^SZH4bh5`;6JNbu(THlqbBq>pj+j`v)7BeeGRZ4s=$2$# z7?>CsB`FHyA#rI62!OfM4_?4lUJoM|MF!Boa}|sMO>{U>G*l6WY7zAUE~2FltI?P3 zj)5?62mm3{y^4_!!!BM0Zs_ULr)5}PGSdXAkSvrO(jtX!N z*ffc8Suv1#5~-cvzZ(qvz|=Wni+uHJG4>LypcsK@l%ejkXV()x1ukQ^^I80FDG) ztT?vLb(;gmBP8=78a9c>U|tar+a>T<2wHq7;4$uIFIGHb{4MeGOrX01Q<|u%+gs;6 z42`U;z8%kBfBji%>)FF3KLgS2+rQrjpt0_uS38>-nj)603+k<|L37>cDl!pRtYnf_ zIe?9ZA{KjCb056*AhTb};-5r9ykATSO8LoU!XFti5teD*h*ldIcF5E$3{8dkHS^W@ zewC=|g?A%!-Z1h)T2?k590y_Ae0&t|4w6P-;;KjE5E;3R*MV!h_bM+26Mw)O7R}F1 z!>mz_Ku(%hC5PLKLOva-#VQ|}lq)