From 67dc3efe21395c57932759edbcfb364b6c1ac138 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 11:25:01 +0300 Subject: [PATCH 01/11] lib Win64 --- .gitignore | 2 +- libprimesieve/COPYING | 24 ++++++++++++++++++++++++ libprimesieve/README | 1 + libprimesieve/libprimesieve.dll | Bin 0 -> 294722 bytes primesieve.pas | 7 +++---- 5 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 libprimesieve/COPYING create mode 100644 libprimesieve/README create mode 100644 libprimesieve/libprimesieve.dll diff --git a/.gitignore b/.gitignore index 309af44..44b14f0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,7 @@ *.lo # Shared objects (inc. Windows DLLs) -*.dll +# *.dll *.so *.so.* *.dylib diff --git a/libprimesieve/COPYING b/libprimesieve/COPYING new file mode 100644 index 0000000..1e2011e --- /dev/null +++ b/libprimesieve/COPYING @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2010 - 2019, Kim Walisch. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libprimesieve/README b/libprimesieve/README new file mode 100644 index 0000000..7ee08c8 --- /dev/null +++ b/libprimesieve/README @@ -0,0 +1 @@ +libprimesieve.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows diff --git a/libprimesieve/libprimesieve.dll b/libprimesieve/libprimesieve.dll new file mode 100644 index 0000000000000000000000000000000000000000..c7b8170c7133cd3f2d37a3ee724459c8a62df2ca GIT binary patch literal 294722 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

WZXb&>3?Wd6B#$e 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

^V6qdp;^6f%8Ss)o(shQzswm;$~r*|Dp$(oUUv^ zsxmXj6=qeUxl9EVWEEie6ZoYuuw?xvME#MQ3w_D8DR|QO*W8nMj(7+(I<3&#MDZHp z^8bIkb^LZj2FMjmn`j@FOC0mzpK6%dM9I<@A7O8ho+H*!NX|-Tk{nhOg*CC6`H=&+ z2Dm0Fy4k8}w|>;RhA0F_&Zc!lS_jlL?+93-9X{3yYt0NYY<3{Bu!s@9hK7Y_vBsO# z9;obL3Ta7CAuYSKF{Mc)a`0BhHis8~)K=TPK0fjlQJY~)FOa<^`br@3PLaVEHpDQg zU~yM4KDRv5azSvgQxn}EXgK_}fHk2rv^7EgWz~J$2U+=s)zqNeFyiIwOnE&)Y^KY4 z-6_CY{v?6!G{CAs(?Cx)ze(}`YX|r!0-dc2yq5x{;4bS8RJK_6ET;qk@9`w7`TL5m zd?TQa>I*zCrZE4jSseav|Dum7-9(h>K!bU zEZa*6(o=BR2s?hY!aFAT$`{WDy7^5t@o)B-I}TPL+ovWE-`2!=G>go)kBqkUUsede z%Cv879)6O*R7Cgn8Da}G{<9BRCK#QapP1|BUwC^eEyhT1Sa&KqRo;};)h z<3pvsN1|-xCLSgr)&5z$({S3$5d%)x8}uhm0+7sn*B|h@LW3L``XqLn`fK7ffXcKV zK9+vj&ivEn>zE*UU~~OPwX+OzFNt41z*pxdYyCqAh+aJsulwCMFee-vjCwlXTqT0e z1_No14i*Kh7dHg4n8SklwIElkqs8r8930$*dI^iA{o4n(wZ4C9a4<8;;XbGf=W0L(qy($!8l;Tbs6m<^g9sT0)N3_=Lc$;dFl_P| zYsnvp;Va+9Nk)|si>>7r*-#EtosBnSM54LAj-2u!Y$NcTCKc7Td?_#Hl-us0_2L_B z&&P-551 zb8|u;k)2gm^SLCY)7%Bcjc^ya_KI$2(v7U2;asW!vn>7+OM%?FEai<^fmFEhDNWGg zcf(-mY&>}^I4?0zHA#PAJzHHgyBYue!IHD`VdTJ>b+DN2&W0rOO;3uyt8ZpE{;TgI&3@&kmzFM6_U4v_`C6~~T5dnI>KHm; zHT}e8P7Z2;);DwQt#2XsTFVYAt*^x#qD{p(=`OB8>ndsLL#a>AWcg-MvIw3_qXxw$ z6*jM5I5>Vu`7)ezVU8h_gmbLJJfcObGYlMfq|Ya#~*M>pKo z7HNeAuTMUoYER>&{06dkv}rZXWa2Z+zSR0AKC1j7DYJSi);m);2EYi@a>msY;!i%+ zeUHAc-bycx7r&d;ms6c)Vr}cimq;G;%^F6nqC)2wOOJ}BvXDtUz>o0V+#>8*&EnvRmyyDRt78}j^$g}~3gLc>26YTXYVYs`<2N8O z_xkEi%&ej>CK!5(|^vr5OU({hU;b8pE6%Gb`g!c9uo-h zv#uaxn46d->ja{I#X!QFoY}a&UqL3bBH|*9VDzSvg}8KA zYiML2<8G|oNoNY~V9A}c@c_JxIFj7WLw~$V5v;%H)8>K(JdaC7jIVZ-Lv^P_4xG+? z(k$QSI^!LB;e|=CdKMRot$&Lh24%-ttAI~Yrn&8a{<5B_M$Kq$0@-h_SH)kufw2bb zCw2<%6lAsW>(B{v(T)~jDASra0E`~19DWv`y0hWn)z;Fre%koV7JJs^KVtm8-}ja` zK0+}o6kni4WG?f#&srjzqHvUphxR+&^bdGRoKF?0{td(irP9;x1|SvyZq|Fn4iT?s z)<&IW2;G!n6m`zCv|8HRp!oYftN9FoiEw{%mG#WUpyCbJM~{hzD=n0N`cUl3-bh!` zV|gHbq1E(Tir(>M;8OWji1k%Y8$O5{RNa{}&-BU+&9dr7x@G<%Rc4-Tz2FuqgPYdg zi$ue7yzaeJ2>b$teh$vxVHP<8=gSeS5(#(kYlJXOAHBbxgNlyG`v@zm#2?5jEC*Io zc#ezp3vaQS_Y)5B<`S3dc2DA;ss{a}5>r|#@f@ppL%+ndH7D_`$~E()Ne{Jn=@b7& z%;x~9Ly<=S`3C`+ZwhnU7m6J(as;n_dzL#=t)?GRzKiKExNo_2L-?kH&*nRto9Ga4 zb?I40r(Q$*FWSWx;!fzo+`I0LKZv(}Xs{BdV>P`7PE;Qx2OX_iNFy}F=kR0#+pl8} zGo3Z86BD!3BLzvAnCXo8CmBvALpF9E!vsDE zNw`NWG}hQTE~OGPa>$@0B^^_ju` z9t}2wJzq?XF}qS}GW zjD~F_CQ_p2cikoB1on4O43cmMfEf;XWqva}c!0I+G!KMO^fj)Dw6;EIdf*S38B*O_uKFP_5Hm%`+D~C%$YOKIdjf)o^zcu zM4)l zs9J?J!J>|J#~b@-J(sERl$ni2iC^qwIVUPlh@$kC&X(`kWl;KxMSP@?2a=Z`sbLES zU+GNJ6(vUYogf$RD(yIKyDr)L)TF^zN;5&46|@ATnGii49rr$Eo8ssI!lE&$&!%!F z88|`(Pn~3|%AU&yFP6uRzRjRs$HT~T>r7e8g}A~Vy#pPTFge=Jm5*y)e#^FVcYgBL z(4CEM523KP?`+)p-rGmZvV(V9sz1yN_I+pP&Tph**qB2>!WL$&eP_o`wHHcU` zB;2DeVDi4sp3kKGZ$Qh3F^EIj@`6R^t-{c*%tq$I^J~_6a>C>HvH6B4FFbl5?_F<} zmzP4DLNDZ}Q&C6!g?wx_)RY$*y^j}={fwHM1q_sIKr}t@F?5~x$#*?Y&kbL(k1j&h zFuqe#kj~fAcUgg&_xA<%yh(er-`>{5+%R2;ZB>l(Mm)rsJ(Q|G&Ittvrxb*~l?l{G zkFnb^Vd9uWy7M8B%xx;#gQ{_oV(nqO&YC6CBbT*jW?G*(YmQ*tko^Z{7@) zZpg2jw2Z!fFP64d8#|3 zHq@O*8~eP}roC2RC11p-;T?W$pTle=w+3Br^yFu43kCMg`&811(SMqOD_K!my|2|L zY0r39ZfKXcwuJ&7PRy;ls-2#}-wR7W$q8MY()7MH#`|3EA5wEduhp~-%1K{ez}W4t ziE3{6CiO53CEJ#S4MvcV7rrhfPljH8uO9TX$VU=Ynx%f!(;nLmgl`|5rj#{#eI2$^ z#x9JAbo%%}sC+U)lB|FP>!#n)AxWx;I7thXB$-i+9B)f%eZ0f77?C*7IUSzArrIOe z*5&nqy4#gS<){(b+kMsoP6VRqbv=R`wBweytha4}KJ;VnXu zg(zwqZpsZsIS0N^hWMzl zyS+3L9;C9+XO{Pt&&f+`KYye4Fxs8ty|YnYquJV@S46!x`;n&IJV+~+aJ{v0u9kP% z<;ax6>8>4|%5|(A#$s{JH-{00k;u$Bwow*Le274L)}$s`Icf0BT>66xCBus%tEqz} z!;4Uea9$E-o=fr}`k69|!9+~(SguZ16JUtSZwfW3mP-1jntvpEbDP8qFOPX^b97XC z!W4Gi`b+Y$b&WB<=G5!P4}kBMtnk+ORhL;UMa$? zd2PIYmtkbPC6fa^n~^q>QOMeHJX$YcEhKH-nD)TRW$b(C z8^(y%alO?t$>cRRq6&3O%(w`mWzB5b|8m{vjGPrc&|ntM%2L&#Z^ARdddep6a%rt0 z>E!X;PJr)lg$@2sVGBkpnXIs%mO3#vYlmYZ>bCOI7xx@JhH;$ha^$6Qrx2pBg>QcfF&`o z#)qVMpj<>{6EiToR?u%1iOy)Qgi`;wt`mw>8}F8SD`+&`^z$rYUQ@p}mw7ypP1b-10FzxawBQAlW*W%9^?;&=@l)~C+QrIr?vN7>kKkof$eX-c7RJq_m_Ij&3_VGvIxE?oVlw!kdmYuBjM2%#03# z<9j;PEa=8G9>hpz&Cs5mBxy$UAug)&;>1eyNBnq~jYC^Qu}yIdtOXLF>O+|6c7!@NSM1wY?i-#7FlI$mQ2@^%fZ3f z6mjpePbjhlp$7&h661pKG&Z)kRZAXCD)~Slbnjq;vnXv5T$&;?sYyaRdfP^<>S!sN zay?9Yfrw?(NbWs}FQL}HgMp8o9>+;O zY8;a4e%aS*2uCcvWKwqIVy?u^(NOk%2(tOYAs?w;H}q-eX?6CruXK(7%c2S zhCF6y54oAXF>AxMzR;SJSofAG1MwLq#ZfMkO)FYO%P|{TqdHrTXp^#jxne)Ln|MXm zqD0&ml20Nig^y3YBZyRPxMJ{P(oJ&cmyO46B%or^hba00znGFn97cMV-HHS%k6Kb9 z*4(g_qg`4B1<1*W?XO7CPP#`{QT2ADI91#(iP(({IZAa)QcEsp-K)&S;thG3pCE2B z1-!m(Ej2nhnx?md5sGr*U&BU+}q{Cip2Ecrz%dt)G;=k?c@P z_#~mUS+2gGHcS6l`a1r^OR@5D=~`Mll3+ULY2MJFzY^)4!c@(bxG%@+|r* z8B!5zD_JAs$B}+KtkPZv?@_eK9kf@-{F@)AO0|>A6&)>iAw$*W?7y*6s@skPP&G&N zFcv9EyU=M>K3e?)tx7yg!X$@nkFy&|A)0+}5Uc6lORUA>jICaHYo>Jcu))&2^w6!;Y90XIgT!3;^dXXJr-X}++Zf^wYE@?kID;ObL#JeBwjKuv2 z|24F!IyH8p3uL&}NkduY%`41NS+Gjmsg>F)6P58DJ%iV9;!;*}xb;Z8y@tORQS01L z6W#oqxSwoiJ#x@1tyXENa)so4Nfg9xw9*e2f4Nz2R;{VUR-HwL6G-xK0zonj>d8Av z;kDl7k1PGU{AHB`H{2w4OSF|*@^;!NPEzF5jZ;g-?eb4?t6su#4T@awi_nYFT%H9* zQhm0_`DB4IK(ryqpvbwH87aUudkya`7h^`Mde(fzLi+KrQn)G7PAE%~qj!_U%zs?6 zKUSnOf^E^$@k_?@3L{mM)JGT`yRw46ynvdMb*$c6wX(nFx)coSA0#VPRZ{y7tTyyc z1xIT|YSEFc=P832%~??~xZSQ(WKOmq>r;6gsbc~R72}84ME)+#S{WJPbqaYh*4#$c zFw2Y$E2x{nAQE#OJ0nFrJ}ZkJs`;Mvs}j-B2Y4(95u_7mZ>_v%P_sU!IgBmK$^=^V zUuCc0OUPp} z8d+0zCSlVSbU&xuLal>Nj%GJ^h5q-OdGqjhk-KBK%($=DP z$v5LBea_AD$GG1Cea`5ws2%7oWMHqQ^f77|y&dr+sjUDy@3kV3`QF-fL|UaG$x1Sc zM){Q!X-S$!zfcCgg-c3XoUFh~M8jMnUX2nIx=$~85P|)qcU8~o_tDe7oHz;^wMcMj zh0@2ggLAIrh}s3%G}L>`DU=~jQX-A54_`FofhVuzh?nH_amDdeuI&vnyH=h`Ic0~MXQ;v!G6Wc-gfdXzU-~V>Pfk~c{kEXzTjQd)0Y$S zWWPA9&y1c)Mk)Q)O)3+epwcH@h=}SkdY9cPlR{65&hb=c|3=wg)Tf^5GSY_OG$gBX zD5X;#!b#nZ43dtmw|0;O#@e`Rbu3gCNi6mwME-o$7tZ;#-us#o^c>&ZV0LCzCL19sk|nAatXT)827y%YG;%IN1x`?V-~ zHLiJ??a>X);Gwxq(dVf7^t^z6zo>3es(ehKG(RQO%qVGAllSJO5`&dB?+*%uzAva7 zcndr2E%(+cQyf0Lpl*yO=UG2qLR)jvU(MORt1xTr{4)cg{W)R!jqkDC#luLyXM0O% zYc8KVJ#SxLxM-j4ZNc05>2KxNjropoa>m^kFK2L-Me#=l8HU~H38e21G_|{0$JzA- zuLh~H2r!k<^!f@}yl&g?{4Cx__}l#0`ltuFmQ#Dlaf%BtpKab6C#F({j4_muG5>ICE zQ+)D11h3q)PI#mBD$Y{1vW>x$EL_;hDSJCK+t=AmjbMJ`f@J5n!zku|U4N$+CQ(SK0sGcxoFtGTwKz%~1OE;*a= z{5wA6p3+wWVb5k(R0S6mgpHa}TX1w0ggl$8E)tW?++Fg^IJNilN{AHdwAQmjpQ$d* z_7Bvc9m%xpL`k`)X$`eg$r*uT*}s6sph!KkX4GO48LCVSO->3v!e^nRm@qJ-U+2z+ z4_nWii&n?P@~!o{X@RiBYfe&(_Rj zdT1cjoBbqJn#*D}wwJ$|?w?&gh}<*y)rmdit1+S)arqb9Z{`}_k=&ABx`W3ks6)s3 z_Kl36<%B&UwRtl;8HCp6ggB!I5NK-kXT7rIeYHQz_rZQy3zDuI!X%Nb`U`y@x_o(R zXaVwMhjmnzwZ^gX7#^F*m~x~ac}tR06$jaWnmW03EXC{+-ip+f@}sI7$?WCsh`e|w z8wOQNUa0iplW$T)B3mR`$hcmi$*CK&WmSOvpmFnqo!)o$2TB*E6qH^?)Lzc#Ev2m8 z*B&NQO0VUYexJ{~zon7Ubpub$d?D+KB=5aV?!v^#EIR~m?FNxuSIKlB8{`kZlYaQT z!)b}vZv`&pZzcPGTugxzKlMx=b z4@>fKe(3Z3P?XvDR!@B)Ji_wAIatKu1>Qe46`E~@b#pz1=8i%JDY2CKBz{5GmIbeB zS$Uz$JPTGapm1CsI=_#Jy1_Ch7d))B59|ACc6pSIvUn|s_Z=svC{>6}yV<3*qx^Ne zPs+;p&?}+syb49N$TK#5=L&?rVmZWxf$*r0=)W*2>#co-D{Rbl?R%VuzH0Su{f=D{ z!e`1@=g2^4&(~|s;KyvJE#F3w^-U_zHv}u>gDRn~B8QQ@TfeJf-Z*YE{q)j{TTY_p*j z&3gx(Bd2p%YLOB-j>M7OAjLp+sNaL!Hh+iwFZi;xd3t?8>FAVjP6}_=RAo-US`!N? zT@)x!Pu9uzN^P~+u4i69(QEeDX4blIUY0M|+P|@86W;`{ckCH^@1%q;rJ$o*ucfc` zE<2opDiyg@0ZM3{rx%Mol2h4^h=s{D>UvF-Hb%q~&dM4YjCz;u!lU#aX3&NuY3&W( z0;Ly|SQAo1yv8CQKfi*uK@nol{uyic1Em+Gn7bwXuCYDIO#)v3!4+}OGYq5_PJgBVgUoF#F5e!($TQp9)I!VYt$7JK;S2X}-<4Ar=$Etoy_}v~ z3wmyndAG*+?+NGBM0$(oAERaBKX_^AMdUFmkej}CdrMAeYiOsEnzKDBjy*SRe?Px& z++I777w09h9)oo(=xc7zHGya3>3Pofz_FW{0o0+fPX|jHjzDZIejOL>z%sXOZ;4%O zeX7HL>h&?p3+oXWx>pXYKEauS#ir@*+gecE&^a-^J7B^<0x1DoT|yyX=MB zP+(w=_YTs%k&Mp`Wv2x5M%Ueb)XNmY(2=W8M@(+|o1r6gY3!(@EVu4b zKhi}=Ahqf*`K7%3*ka{e-#Xlb;ygF0J|#CasOEDPHSl6d!U6KAnWN<-u+tt5upEib zjQ7dDwcA$sf_pXW%=PF&=i^|v_Gb?|7cbJ*7L-Tpf@0e?y<; zr}Hvj1u+ZLEMQQJw^iPm-k0;+!<(m(?R4T*iUw4JTX)~n>9Ve)>hS68rDQC)a7CY(qON6W*Wdz~vrn_NP}bLu6g8d6n?N}G zLrth@fl4))3}M>)?cyso)FO!tZWfS5Pel6AHj2|fQHHhkw*BN?edz&_;YdA6sn-{j zJVqwJlrsMml_r_CliA+Lc(hbKcLvYBmhTJ61_e4*GnkI2aUXi6FtjeRS_G_*JObp0 zuRs>b8cacPf>#$V`>^U9yFHm7x`M23BQhe-*=(poKUwr;ZU~qga;mRuH-gu&e9o1h z_2v9c-lq;HPC20n15}Zx&~9>gdtl=RDOs(5=(xY2Zrb3JGQV!+UCnBhK&8#JU3mcW z_3Fi*lZ@c0A~H_edy#Tm+H0+=q(0x6C%4fi`qWfAqAEr{Wn<^KvXsI8(`(4@UafuV zr`MdFWAL&m=9OknRa-2hwSu${8BV^)_dAZ$*jJ-VCeYAu!KgQR(N||U?Ye!^+4lndg@DuE> z0;sDtBp%|mx?Vj1oe;6=kzes=JJdM!r*2=+SGT>?iY|oDw4=Lmteq&~DSXme^)vz- z$BHE8kHsIl&bkHp{KelE93HSgE3jKWE1;bC(h|Bmk%v&vDy{Uj_I|LT7bAnYUp_;V zlFw=>56db^4cTw3eaO@ic79!`@i>J}eA|cg()stTzP?N2n;JK3T&;1{pxK5wku?EkAEhV`Df0ey_vo`7EskH9rhv+N-jrM zGzk@v_Jh42g8KZCH=V6xa=q!yW7lLQc$aS_6qfSV^?PYLfjf&|*-(3BndrzhiJ#|s zeK~$&v?!IoYkaC*6FG_u=L&IP!tgU%6vSt-45sy)EOKPJO>M2X6!G>~hcX+zX)5S6 zf+o_kdx4YR1Q#H<)>|C=R(JHJoJSX<_!57vKO^Vz7M4E0Ud}J?IM0{!f{yd&<@{{U z#blvRI=$CqNYoFrS6vqeJA(ZcQ~nZt6U6QKelDI zp$+(m2-q^EwJkDPAEQ#dEHX1DPNlf**%3EJiMzQ`?jnDz$Z%VJZzX@iLM2s<_IZ=J z*iT)Y5D>4~P68&z$-lAnmpc7adU}_s{Q^d!H9A4O%Vaz``ggI>acOLix7Jx7&L$r6 z*>Va{=wTuixk?6e(2j4}$!7J_5>1_T(ds*#+ScB`lX7i6aKQaT?fX?=(I*hnNq-0` z98zD{QV)MRB1zo8l@d(&FLs9gxg*1B>9MR}<$ z|Hn%H_>TMk{DPPjHr#Kaop$>easZ z4B35KEJMhOeC5@QW=b|WPTDi{CX#Or98x???cEvX!SCAl-Fs_CbPqLso%E@*MpsBci`Z@T z(xLW#C{gV?B_zc5}uG|>%~=^t*%tr6SJlhaMR(!ZkPXXzTbY521KmRj#soBa8c2Y z{h@DJ>Q<(+?fa6WGgZ*iGBb>rA=h{4_UK4w?=*IqV()Qf*GGE`861(l(DppY1EsHH zQXmkT)u48=;jO!zc3$t^LF3fNw>Ejl?TUv3p@apLuJ6pMqr6WZxq{^lp(_(Ncv5*1 z26okFeb}86i~En(V`KI4MGwnJIR>JHX!4aUks{wIqUKj4<4uu_FXaN_!wIdwk3Ff) z#B~*wL)YiC=kEeFKk-R&GV(=-hE`8n`-Q1!apHyqHSI5|B0a@4X#fWk0%5b=C(R$; z2U;7+sgFx!Cx1LwN&e7leUYz=`yt3dxJ|n%odVILr2jZi7F9PiLpPl(i+2i8->I`{y zNs7o$9;WlnQ=HK2>j~ty%BvaulRUJV>EFB41n0)k$X6 zC(=)&^6C0i%%r5>i7IaB&!j9`3TtBz+Y)K$uX$lq@Gxke5S8OPFAyb=_903LDpv3 zg2+2&O}^QbpY<7^K7D0e-H4aDM3Q_Kx!@)ydcusatqU;QOUJk%{gZ;MNN^H^U}{b5 zdyx&h@nU`?F;dZy=|HnJ@{l+)Q+Og0WDV*%(dZWo%)g6L2SN*c-ahOn8y8jPiw=}h zf)tj#2A^yFGqc|>Vh$n+2((kJ)BA-d33Ynat#nY`hVw z#_VOk9lE{@zO36zx=2dgu$Cq?vyla?QmvOn5o;E?I4qA2R}j|Dbu&qU4f*D}{4fdk zMgB%fC1YI3bC|dG4!A(w#JvS#ttXIIOanJF739v(dLT1W1bNnpozH(w;DB+arcuY zBB9MH^u}1wc76AScTS3%kljRKl0|XU;mf#xP0Rj*y0h0y_~Yv)jWY7hcloM9Fgc$+ zNAz$-hzYEUmyP_a{RN>ff~m}3+ntF(WWbFiylOmrSG7wC zRL0J@6>GhH^288On>ZtQyj>dK{`juyq1M0H?Ey8uBFZkafXjzU_dvezmh)U9(ag*I zkoBuMI6D0;8AW8md$3By=yx)Q%ph!-@fLY3d0qwPAA4TPR@o0VYNWwq` zyXYT^QZD*eAmhWY+xl0K&cM0opGPU*jgs27@=<1O6>%R1OR8ITN)*O&YQH`Qf5O@`cPRN(_!e?PN$f?91PnEf1?QE1wL@4;8iXRlL2- z_w5yT&V_GNet4*t0(E2BC@9iaDPTWSRwJ|qd7(bSWQPQV*3<>qsR*TEI&0x$d zz9HxM#Wc1TrE*8rD=I%@n(@JMTQfF_W-zR-G-Hj{jF_=g+wcS&9q=k0xL@l)|D5N2 zJhJFOdvul3fo#1{l(Lo|dNnFLTf`gVZt}O2Y+o?bdHs+ zuLX?TFoVr2=$^vRm-*>$qn+MbSvnv~D*k>0`JVMfVfb1+ZOji>88Z0Dyude(zVht^ z=k?tHetkvjzP(DxZ9bJ zq8YS^3J$ydvUGm?wvKn&x1tkSd;Z1viVRzS0y@4&5??1vqIWHm2v#fo*V*JW0Xxq( zFfFONPBM+-tyNnsv0B~MT2+d}LMF#yScvuBq3%<_6E zd`#C(7qi^t?IZ1*xLC7ZgY+P31?lVA;2`qHe_-EC%6rl3%9VtC3IEX&Jn8(@p%8~iI{u@JrSQv| zcS-p`dNeXXTr0Uj*B`Q$X=lVzvQLQ~#s&0q{y6mW*NEcY-~I;p>EP?*n!>o>3G^RI^;QR ze4Xbk=@h{(KJH4FxQrbF3 z^dvlVHke)N!~cGIZNL7%kzS{K)O~s#gZsadUb2JczbU=`i|zdaHi-E*wf9TdF5(B; z`>%h1mjhesPl+>y@=PTB*W3HoAf=VKd-zQX1_-Id3`;{LDbR|1jfqF;mlweo1UU%M%f@%qJVL%3%FE8wKR zM-Nc-khTb~PTlx>^ZqjUJ9VyHU-ZCrs!$LiVR5n*ct%Og}P zSdAetb{L>hJz2U#RwNDo4D;lO7a5_E#xgU?GBgnVGESDrWWJHMQ1Tu4jjU1wdJJ<= z;}r1;Xhsa=i|k=OK`NsGeFN@9J{MpXhWV-hLkttb1&MU2)}`gQzvo2Hk(Vd(ivQ>2 zeKj6=J|&N!`xJz802Z*1OU!pCK5R;ScuzXlrQ*X_Ti5tJA@?`eOS=3Q?ypOJf~oXK z^$q(aPvn~=^4QUq(ZY~^b;((m2d{}-33kl@)13uIhV1RRj$3@p3BbphXb{oNi`-8*t$(62wfon4e6=ol%&&>@&2nd5@{yM?rq-9( zPWR5S?#ULl>31fu(JGfE1RQv}3f7x$jhB=-0qqpO*JUfe$-qXds>APm@!Q9`MErhB zi%9%Vwf%l@uK2ya!|zh@n{JhgUwdoXIo5f$UwKnvqgBTh8le)0o5gP*YmWH6Ps<%@ z`@LQHy}QHjJ>oar`l69#BU#Kx%eHY{eF%o(qRIy(fSit z+_vAxV3B(p5Rnhd$g{nUC;Vmt8?EQK;<5ey6&AU_0wSM(uhRO*7fHTLW=0$M;MeLN z%IE1{{(`l%icjAjxcaS;0rQJM))!T0(3Xt&8TjMFZ#z|6sCAp#8ng99wMl8~I<*aR z>vO9uPWp9hn;NUcSIY4hbsxBmL;I_y|Z=qR} z@!^CQ{mZ%gV<$MGNb0C=exU^6MuWzpt@e5Ib{plI9FBkc>_7kiucttpf3wmH=Q)4q zyzv;@f3dzV_0@l_KVkslk8DoXKHuKnNKqD}BL^=-#g3Mrc8*WcpKSTnt86UN=-kk# zuRG_%?|b*;yH9e?4CCc1{M)9#+TPyb@*gff1sXBO%}@)}1{np=cuWZVV^G)Yj{DA{ z{p}HGFO+xz_4I}N+f%_uIe!W2dfjn9^OV!$f*+i1pR|m*=WaPZLo4J+$yUJM)n#*M zmsOlL+&Ldx7A%-Eqr9}FqG;}%(z1E;=FH8XJ$=sHStY^pIjr%RS~9P^bjrNo-16Bo z&N^#K;gr%jvpK6O4f*BL)Zppkd0vR&zEdP`#m2>9#(-zDu zFP-TxpXVR)ld5$8IsV|x@_8qpGq3z7WohYMt~#+ZjQM4y!8vnP$kWQEmsC{*r<7Dy zmd&1K45_H7GA@}}R#tJAe_nan{IZEiLTtyq!oB;G{q6IiWzg-={m^4j6VwdlEZN`w z`gQx;{{ejsS)8Xp$3w%RCsgBUfBPlibf^ldh3DbVrIaA?`D&^_o5r~!HqS_NGLRYQ$@0Hh6SfmT5cP(4%xHA8uG zOM-=E)5@!6bx!3G8Chre$CraLqJq$eqy#lp7%yno!v>aLq{T5mcZGl?&BwZOaA6gErgnkRH zhPFU04{{xv4=smQLcfJpLtCJh-*6q84=smQLcfJpLtCJhhqw;Shn7Ptq2EHQp)JtP z2e=MZLCc^!pa-ERpckM5o?+GRc_ydfbP!SY>vZ0Ys29yT* zp;X8RB|-+Y_fhf_ia;&U4yYO01T{iWL#v>Np$2FrR1d9ys-cBYB{UN%h9*NrkPk|P z3}`R;)CNVM7H9{QfqNR{hf<+zXe1PXnz`Oc+@6L+PbSVPsi4rtsYylVn3B?&b_pKp zKkeXU+c5`o%jT8MosWU(-p;i!er_Mm4Op%&_T$j5+rIqSHac=0JDWk*NgYe<>&}0h zw!6-G2k!6XGWWO)bBV_^pLdz&ci{I4rui=XesDMEvFi!0?yun5=@n@c!<*MoeX<9YBq;+1)kVV)rGwJKy8T z#62c2!QFjW$T_5Vh|FFdiR0GqK%Rp%BW=O`k`Kt=121u1f_v<`#Iw6=5+CP2;@RmQ zM`og@LmvLS4GZ@}iigM~-o$b1o?Z#01!+w@CC%memn0At{2t^z?~%09*E#R@8t$?C zh-asJ9GQt$hdha=;~pOt{2|3d?j_#DaqDjIc^A5)(|HN;-6L}Fvs+~29=pzYx7Xyk zocoApr+bj2uHhb&haAb%*gZ~IxF1qHpYq-bmOHAl|k0TTJm^|XyZCJP;QanT^@kTGUKHsYsc`5N0ouLeX`-zXp ze?EaQIgefEyxVKI$L>o^?0k50Tlcr^IpVl3wUG<@r00q3q;t z@ZAK;H*QO?XZtyiUB|uKYq-bmOYCwFa@4iNIC=ONn;g5x2@Cf_iih0WOT}?(%qEKr zu_5S6%$B>%Z(=qNcPXP?Z0t7&*eLwPY!UY#U<0%qZ3n)Il?l?c8{PjVrgPlajc$E& zfQ~r%ZR^lC2joHLbo)m7s6EX@vxk{rTBgTzn*?MUrs*qOdl)^eL{FkS(UoW>8j0?nuAXL3#Pu?IxqG{Mo4t+RR+1;lo#aX~ zlZ+%Q*^}%}b|st1MzVRBahT=xc->x?*Yp}*x6kD>eTL8MWAw55diuKiy84=ZjlS-~ zU5A^88;4sdo)mYAE5%GPQhM}D=x6ow^mF%f^)ve!{oF^mjxdifjxdijj&!HGQq5F@ zy_1ao?xS2snMWB%^%#&az#8Bg;2z)_U=A<_SOYx+-2+_%&4I>1_tCDS&7+N@tz$gL zxQ}riV;*B1V-7L~x&1D`={Nk=v7Tey$GVO+k2Q`pk28+5j`tkzKHhb_dAxDFHP|!Q zJ=ita9Bd4B4{;4KhZsZ56O0qwC%R5FPc%-n(mZMIG*_CLW~7|iAILRDl40E6CI@vtgIN3bKIHl*QiKq5BHQ`k2RL`mIQ(dQ;ry8erv{nw} zB>&>`&Fw+~$UDh5x5wp?ypw!$^33Yt>EZ6->LGb2($pX51kzg^IWlc9oQB&q`aD^q z)62b7pO4k}YmL&^lw*Mn_Iv*Dee`)$o>4XhVP$iJj`wcRbYX}*9M~R?9z7B{da9#WuiolN;z&+D zjKixApE~;V>8p;zIZ{&kspANaBh`_rkNzA-9W{Vs;J~9fj_Gs^;_$2E*kg~29mgL( zSRF&uaRSGQ>PS;Zdiv1Vaneb{I8HwKl(^&6xFdrjGjlk{Y3dj;;`G>YhC0qv$4GT# zWu2vtA90+0_Ndr#PN(Bsj_m9lj?tZtG3v;T9eH`@ag0?*Kp*+)7^jZ$90lqq)W-yl z^Yu{_J1)53!q_o!;v{uk#Bs4YF44zij!Q4SjN`{~$L0FCg5yekOyMY2M@ifBUrb<9ymCC4?_%#Azd#g1UGietVy7N}$4 z!bNe%PdI+6j>Y=8Hg;U6k0r6Ax~qaa<5-RP8Xf!W*hR5`-G6YjoUT8tMLPkA8Cwgbm|AkPJXA|X&b4d zhsI=$ver(Hej5909H4QCMqUC|2QRm)BTM5bjpH@SM-SxqvBoPjmS~)zagN3+jX%}6 zMB_4zbsFV^&vM+Y@qUdDYW$VvL zwi8S8CytqtS1=)K%9I(itEQALT$nk0O2M4ctC@wWC@)=N4Lh&!-bvAQK{>0%^{@Z1L%!s`6CuU9QFb?)(IoV^Z(Dtf%_ofnYtp3c#jOXn6`sTlM zULTOA%V+i{w!g+Ujjc8|@3PSeV3YRWsNIVlf1ld^S{(n{-MQ~!T~1c%>y^%ReP5e) z&v4xJjm0{js&s*<7LmQblCe#vz>6eqBQj554#)F@o#s?I{v%fuk`niykALpDOP1K#<@o9bo&4O-v2WjAj<&WIjz)Dwv1)c3{%-vyp zFDkp7sIg+9EhodU-5qZS!$Q{4EI4_=86*62X+Oy#2^j^WHG5VsbxY2)X$)PlMyAp~ zvt%C2YiLiG%qTl~9_wIaL5|;larxX}RY}DKRb_J*IYVeH*zpgU=AXJKSjNa$&|eah z;>06%AIp4#$a3ynP)>usbk4Lgf5yTg3k~F7H2dn=a~90@SI#S|nl{Hjw@i(*5jO4q zIl(!lb1MAv%jV7#hauBWv19$u@0(g4WFZKPbK?9v@j9h)T1il)sO>WEnofgr)wb*2 zb{pH4Xw-UP7!`A7*iP!dP5ayH_*;@DtCZ4>2_+K@)-@Se&e=wlQNhnHw%IfJz%pA# zDyp!t{%RYG9e2xKD?>9rWQgM!T^_G0)az)DEm8U!T`zzpKo28!$=9cQ`LJj3=EAEv|0 z{gOpwLiz0S;3AbH8HO=nZhQNrYizm|z6|Qf(7orDjG0sV(DH5P{&`bzIPJy_=YF^7 zS4D^CZa>%a?X|x+;^f=U9)8)_i{#wC$60sbtj|cyw%rG6jM4+<;eWNnS%G- ze$*^5`=fg^?gQ(OS@-Pg;D{5xx;kl$QQdOpqP00=jD{V{E*UX@jIn9Lj9E>Oj4?+2 ztoXyp?~Td6>4}9$|FK_g(eC$O|L~~sxwpPnn6Ra-I#Y*=lzxO^k{1l1y4ml`EB8WT zW~BT5X>-ehtfCyn2`Rtt?)LUk(4)|^&`Z$U(8o~qMAJ?P{a@VDxxQ-I-}&7CeV6n0 z&ga>co$EpW*PX9t6m~vuF6ex|N%u3INbTry?jO=wes!1gmM-VM6FU2M`mv6Dr{C_J z8_~}G6T6)Ix}2wWIdAE*UVqieo#i#3)cL&e@XqJeUF5Cka&8#${T%eEOMY!y)>&R- zmvf^_dbb?e*}u`H-I3Vk+}GvY-{rhgw_jrEshOhAYS#7gzkH6V?{pM*Iy>;BzKc_1 zm-DWtZCxFH;N1TM&*$`Sen8A2UsfAV#QFBc@!hdbzs$MjcbJ3V!Fz<=-_SKb9AB~W zcC4*uPI>d|^CCS?+0}n`7yrfjyiLE~;P`jsRqN~3UB+*m@Ee``wLS44*Ev4b`aHW! zd>r`=`uf4*+o-QQ;TgwwmY=Q9opIR%;;*kabP3;)*Ql>M=Ph02`v=?Mb$vg?iGPN^ z?(dR5&h;XFy=(e8*DHTOeuKX5>molEUwz$?XJ|X!HNK92pT5q>_!Jp)Ety(AKQr@m z2HNM$EoGRvYW9Ni+0*ij&Lig;9m~e^>=f>DU9BTm!|L5$?>zD@UOL}@M#m_^mrN^|av8&(BNxb<2jZUB;g~txam}ZVDs{g$MlV4%D?gugqJ1v&nmgPY|6ZuB{C@$Ea~WjPYh;FEtxh&tfBy(?r`dn#uIJ-Z5oS4bZ(D2{ta!HTb{J9H)yQ? zu6y}@?Z5JA+kdvk)Ct|oFV_D3tF`=RZ1fd(FTdJ}kK4{>4vm9N(5&I51sHH?#3M41Yo0WN{k;H$w~pbYqW z@Lp&Hd;|DvXe9h9@B=6S-v(Ztf_V5!@J<$FP8R>*hNJj=3Vbv89Sby5WlM!7ljiUl-~wn8d^NZXS_oec-T^I!ZvY>Js^M3GvN=yJd?UCXS^?h-?tpHBZviXW zP^cbW&{xPa!wdcyYJqPAODFLBlko!{&Vttrct5xnnhf6z&MP8Z_-gPD=wbKX z_yKo7kHfcso(l*I-UnU)Jquq9{^&x(XoSxO?}j$PH-O(jAHy3H4dYVC$HK*8@EK?X zd?VO@67hlegNvZW@YUe2p$7O>pz9Ly6y68^5qe47!N;M!@QvVlXdiqt_!?wfMx4Qq zAP;;S_!X20Z%k$`21M z8?1p=z}JJ{K@Yk4K-w6KrLGnf1!F!=x_y%yyZ;1nZ5g2_09fNNJ3m)ZuaR=+6MtH&3p-u2D;EX>o z&jw!!CagkFt|UI-mdA)Qd^32~pD8==+2Ey58pbO4V(>0#9ee}0=ow_fSA&;6Zy0Zj zA8^!qo@)yC3T`A{;CBfCJt|$Kd_oJ?{}Vd;{qJ5L+Sc;8Rdi339;lk0^KW zmEc9Y$Vd2M@G9tDaR+}7Jqo`H{1dbaz7cGK9*1uRUx%KCZvj7oo`r7%zk(X!jaKvp zS_hv2UJktkUkqLay$W9m{sh_qUk%;@y$xRvJ_EJDH-hJULcIW=4eo(bry~DTw!?yk z!8e1=yA2~-c<{M4>InEoaKUGk3;1eq*5{--d?omcuhC2R2Jo0Y$cOiX%b>(k;s8Dj zrNFNOpMnO$H-cY6et2Uqdh!i%fG-CB_ARyuz6Bic9XbH-2bV%c@b%zS%QPzCE5Tpz zqCm?L@H`uw(8n~Y;fuh%eNE#5c;j%>co$j)-vWLNHNv-nukeATb@0t# z?^M%x8{P+wf)b}A6Et|~zy~jQ(b1+c5WX0keynL!z*mA-9A_HOiaYq&iO7U+1mA-O z&LAvsNSbN*;WNO+P#SzScoQ@Nz8;*GZW<%uE5SFQ$?z>;-=U^)IlLb{37Q6<0iFZR zgwF=YLKW~u;AK!Hd@*=66ojt?7Ye~wgJEbfd_DMcs2aWjd>X2SZv=NhE8ttekD#02 z+rY1&dU)QnGzLJo!~4N;&`S6s@FJ)Iz8IVaJpf+`&W9d`uLf5@kHXi3w?nJo8^8yk z$Kh9jPe4z@H-hV-XW^T{!-kQM@ILSvXr1^0Pdmjln&Gp-P0-uoAAIOE(}=*Y0^f() z;M>4{e4%bHydTVmjG4qAe2SMz65$)cS4Q$&@Xg>Syj*fGd>gp@ES?d*9!wg=bHV$- zediEQc;j5$p%29!JO_%vXM@i`AHz3-XJ?znm*Ng?$l-qYW^lk5;!sZ9z~uALLwFzf z6*L&$7|Zp1^heym(c?@b7rqF5XS``lg7;4#FQ9t(VsHbr622MS4LtzgChq4Ge{lyl zF){kI@L)T%3EsHCH0D9g@YP@q^fr7wcstYr-vB-UeF(n_ymlhbCH}!5U2Gbjt9VAR zcdc^3F)@Ttpq7WhVRC@<-p4W9x25h{RR1r}XSS%4QDdIh>Ae!vM(g}8%L zp-T8l@Np;z-v}16Z}vj*1FnN=;hVw3rl8yKK5z+iJA5_x6m&0qBX~hE&jw!%CX}GJ z;vYO5dK|tIoDV$>Uk%;>JquqCJ~M80mh#N-elU9)Wei^M#4^$iJ_D?UK8CLc ze?FZwgl_=LXOQ2#R8t8)1*O0@f|t!S4L^J_IJq3#B0RXif;5CTW|_tor~tkh{6i)F z;8%e+T|>IT*MsNIC4Jzt!H?z<5BN6loCWBQxPv1WqbI_H=P%<)Yec*<`m3&Ml5p-15>!FL|Q z7QwfGe}9;~gKq;9e@9t>_kpKDufk`8&p$#w!Z(5^JW4*oXMjilp1gzigA1X=S;Pl? z7)pg-1)ll`bOJsDoC6JpuLQ69Bk3SK_%kRMzG#(cR6zmwYQaB|r{WGi4_yx52)+x= zgl~JyG&288S%A+53!sJKU--wd|M11&i%^6%Z8JFX3E~W&4c_}C`G+lP0Czw$sdHPv z-cO-F@ILUYr?HvX&up+9%9cJmxCA;Iz8bve8JvAq}22Xg7I8(o8 zfX_p#aBl<${FS-@-VZK@THvd}O+xU^;5X1>c;k7~@InjWec%z$!^FW4PJ%`vzZeWR z;!d3F!Q{0(7tihk-&;re;HM2N+F%-fc)^{J555I#+eBE{Ou@dJ(Ixs*esJ`Q*bVq1 z@TV`K+tO|a?|YdvgkJ^r+`==$`@l(168TaLJ_H%aUj^=go|b26HjOi(MBKB%1yCdI z)nEg(kFW$Ap%ml@j@^n*q7Oyjo<<)wDCw2avpBJ`M^Qqfr`gp)zoLM4$j@`kGeV}dEWv%7`yumt%e~rT{lYR| z^;mTY?sq-bI?H{VW#PWk5>Jm<33ntI4G9S<$ZL&)TiVsa3(LaODl6fh1mnS2{BQa<%O584eLW4|`$-wSi+fe} zEJ|!lX!f+Y=nLBEf3kV}OskDlc3tn@X1Q;-tcNV~ZcCh2TM2tDqb9+!6T7AEkYs&n zxo>qXb-%7;J)&gc^j9lkpJgm}WZnKhC@XMivJUAP_ucgG&F_2v&GOF{`9GZBWQgSV zKhLAK@c*2w2SnE4z38_0H@a$~t%tMBsbk6*_;Fdgd%LSW)<1f?pS39F+Y_vZlH4C9 zSoimKuk9)PYdwWu)?2*X*xR}<$-JevxZK`bZoRv=wK2*3WpDAhrFX(pNya@%2|JRE zHAz~HjZ}$?vPr22u}Qa^<_+eVB@CUrtj$So3iEAA?rJHtcP3cjB=^G!)*DIgPZEW1 zPZa)dJ*{m?<_A5+W2C3Jf6`NKUEa&OC)s^#FY6yk?hU=f=Zn3p8J0sfXa_%g_(YX+8u$j~;@b6^Gzw+CTSmmOOj*A@~`12!8gi_@~dV!g}=( z{H!_zKR4k=^0hna-^((3vGJBW!&PinYJ1&oCa03!Cs@VCjV1~yI`L2Z4f9qS_Z*79 zzVnP<{2%eB(#mOT#HXFKOK5l4>2XxobW4(S8)oGh6G^uJi+<#}`%7Ew){eHAvIFg= zH>Hg6R@42A$9TyjTG79U$LKNK)*Rbb^fwP1WsP^wwyI5bG*OykUTX~GLv7vZ-T`hR z??PMN0oUU5Adc_fJHhD9CUu?+cd@I|EYfj3W`)Pv(bIU(vVPvv_|^)!Ik~f^oNVt& z4iWcGHm;AEm}nhg4&o94SMYha{t0d)VW}&_EOy#3_&LnVGRt@>`~>i0N*y@0YfZ!D zgSl(nQO}lW8HuBvSnGSbX+L#s7x$O@-tV|iKX2Ok)>8?_TGQH`V0>+^a50hLu^vk> zws@@HCm8ow)@PQ{B6DMAT%L8}eF@8a?!>8%C8bIV{mQ?845yme_Ski{rXUyEu8Oy)(0iaoFdbWoW%Pz6%@ zFWsUNYbhBC#*G%S{;Or(-NV>tSzjd31UiqX8K%T%cxPE=FOSiS{<=j!OZB^s>v)F# z-Sp*bTaa!JJnP(7Omn$u?Qpr<%)wuiKrRcH>)m!4l6MGwODSvJq(Mx^EblK|=8dMc z%jI5UUJCyg*T7|Nqdrc?OV?8tyNO4)ZU@t^?w2VNu)h6ynw{%|k#;@}*31(T1 zy^ULXkHZE@T<$wCf3^QUHEfn?JYrhwdK)XP^~#zWW=bz3WueFL&UAOO(Wc*P_*Zz0 zqZYc2e&khmayyk*o}nAPKJI?gy4!91!L+_`8SjZ^FLha;x{NxPwVr_-7n)7p%e`WU zmO9oV)@~R$nDHiKr_1`pZM3_rh}*c)ZLM(|&$-8U=*&UwW4vC+*%_T4hl%Abu+Zn< z>#9Z4Z_R<}*XcP$remXY+?D<9*V|5~Zt_c&Khbrm2j_OwgDT!jy9rO?(VhG8hZ)B| zoM0Ti(lU-DZ~BloN#sqBZMu$=G>lo?Zu6rL%`Ri4^?+%Nv3_dIKSh$?=%1Qoq*CS& zr{3!t8=Y3C4c_Kv^4eoH_cU%wU<}fDIMI5sr}5`R>;9g`-wD|GSx@VOp2odBtrvP4 z>v|4~Pn#d&9sA{AynpRxw|)9{Z66)^scF6GGJfll|5sc|{O@&%W~=&E*DLxN{&(C| zA8p`4`e<3^sqNlDeMy+A>)WIRTYuv8S(U@l z2b9CaGpq^5<%HA!^uEUFD-UP>q_1)O!al};nLhL;y?ed+d6jw9$Q3+7gUkB1uQVaP z>g#^kvUd60x6niG<9$U*p|mx$Tc$ zp7SA}u+RFuOAj|*_E~uO$Y=fHaO1u{Tzs~#wf=B<*lUfn#iW%t(eSc?Z~Ta$(t)3+ zn@0?_?sdCgHkG;2nkECVe5>(w3CAvV{Tx`m#yWG=&12 zCTSCzG)t1cVRe%x+a{8iC7YBKiUvfih?0w3t%$k;t%a603Tj1^6+x?_M&(Kcl*r|J ztKv0k!73I1-)COVIkR(iH;w%6?|1K?^U36#{mwJrXXcq_=FFKh=bT)&8(kjeV(EOJ z$+CN(FEM{qZN$CRg`3X7Tb;FNofq<^Lr3?AX=M5(-rlV-j>F%@+|8BlzWEQ&l23TD zZ_8m{$;f^5}!B=$f=2i)Thju0)O|x-^-J6 zUUUkaXwsS4&rf8(&z$qqiR?9uk0!DYXJg`_ohUF6u9a=vC+@*h<)SZo+Xg`$aLQ3nw{V!a@ zb6=<5rxTPvjwKD%nd+009aGup9O^71jT=c1_Tswj1Busd-d*sMTRqu7oxuK_c>J}cVuQioyp>v3mtY>Tx##|b;~Yp z<4ziP*!Mz4JiOn}WD{jR#Cai$O}I~-7iRN#jC1bN+I8Mc6!Hzv)Z-cKgEU$eWBbHw z4OQ>Xypb&Bq24j}nUtM9=_eC1xrQL(lciI3bkq~)a?B@q@+W;DKhx?#;uD9nM{t1< zv^e$hwO4tez1#U#l_A~U$;11`EOAcI%1C|Y1eX01d9Jt*I#oWX zj(ZZWshs(7+Me>V6=|nV%${1Gn<;A`?jf5e+J(|RDaQsgay~F4)4Hn`&m4w56LlzA zO82r%C+b3-QS7>)zWhnOFBjLxGmXB^DyLH)*(}LV%{v}Tyr?a`V+TGvPG|7firt?Q%pk+fcq*7DIBK3XS8YY1tbF0Id{wS}~f zFo-~F1!-+1t+iBpTAN90H7U@VP+I><>pp2+C#~nCwV@PfJq$hDK+hA5yovZ4ETKSq z4&b-%@8HDRR$Ajq>sDz!EUj6kHL^Tl%?z!Zp>=$;evj7b(b_#)r$>R-(FC4`J+Q`_ z)-2OnWm?Bf>z!$>GObaj_0hC0+7FD@O;e!fE9kigdai+uZ&#T3H4 z4E{U>JqN)<6Uw^{^^7(BF&xu6A6nlNh+yr?DeR}9oYRoEuR{M5i2pKle-X!yJ*{7- zK z5opb73?Yutgy4hh2=;^YdmhryhL51mXk9X`N2Ybiw5EIrfx#B^Tn9bh;K$5K5Fvs< z&tK3p9`tMnJ<~A=YzSc(!HYo8ZP0TQqd2DLB!(bE&u`E(A6^7{#si%vU)MzInP?po ztzV*bOSE2z)+y2YBwCk5>yc<360JX?bw{+`h}Id=`XX9aq}CIu^+U8?h}H?w`XE{t zMC*a*xjcGCj-JV*XV!cO0R(!cuL)rQA%;ND}=^D8EhHCc7)F&{2XE00oV*- z2g0Wi;t2naKvVMt2v;F=Al!-YMTF-N{*G|o!}uOMLKni_2#+C*AWS`!!HN(zA>54c zFv1TIevdHqFl>mh2B8_@286p29!AI;LR}!-fv_LpDTF^G%)s4(QiL{yTM=RiUq$!{ z!ru_)d=d6VxCtSK5J&hW!kY+lAIV@V5H=v}K)4&>5W@2alOIK15H=#b7vWxn#}J-F zSoJ031>utj-$poraPF63ON3hx_9OfV;dO+0U&&w<2-hNf4B=}C|Bm22lEJP-h#=gL za14QcHG?fd2qAnB;Sj>VA)G=u?=jdKp$Fj}geMVxi*V-GGT2IlFv6V(k0BgKnDuxD z`mYSuif|{wqX<7ocoX5=ucM73d=g>uH{eSM??iY%!czz*5EeWE8HBqKoQw-^pP42p1vLB6J{p7~x@rpCDX#6m1FNV+cbC zKSTIC!ou%nuy-N!B77dPe^e?d6&hZ$@ULIpx2LMOuQ2oE8A58*!${*I9UBeVyE zRR|jqx)JU`co5-fgqILrN0>I8!7f3#9Dzov=(!lKnAik1k>#*lHVJQcp2DW$JKTB9 zi!V@3XJ@h*Y$lt<&cgeaXS1`}95$ED!=t(9Fdv)G&SmGZ1?+rw0lN_IC%uSW%r0RI z*&?`E43Wo#8IXBDiHt!8Uj6*~5- z*jiS@YS}tg$Aau?R*ykYBU{flu#GsyZf4i8cd{+)UF_W$rZ%x=ww1N8Ru*R4*ml;& z+VPm-wRk^jC*G9W%_8hN*2AK#7jI47fv;=zvz_b)b|c$`*~$0fYf%I2W_AmEKf9HE zfZfJE$ab?2vD?{)*&Xa7?4#^XHpu>k-Nin}?q>hWKF&VD_OMT~d)TMgz3kKMGwic0 z#y-dHWB0QM*j~1eeV*-S53+~Y0d^2ynmWV|vmy2c_C@vxdz5{NeVKiQ9bsQ(kKyZH zkF&3{Z?Gp=oPCo$$-c#&Vo$Sgv+uB@?7QrH?ECB)_5=1q_9HgTe$0Nte#)L@|HgjC zo@2+@&)M_r1@&jU9Gz#fXNm`( zob%*)@PRqcbkCWd8J?LQd@#;~55;-T_RR6j_003&!*3p+XTIlL&v~8&9(>BpbD;+x zZu4C1!Dre$_&l3u2`;t^Jw=|So?_23Pl;!_r_|HYzSVxK)#BEU4u%&}Y2Tx8yj82v z-_nCOVb*Qi7Fu2zY-=bC1@ZE#l2!a8T9qkN7FsC_3&)>y>G+fW6B%AHZmmV*&v4QB zwJtqf3ono2tLXS%a(D;clgeL`R*7#!rK-jtQ-qfD#NK{Bg7m1>k!5uC+bOE-8oQd`p!N?G9LWSidZNM*{Rmcjv6cQkL0rnX)wKCHw` zQrVxH&XP+lhP;hMD=z}xp`5x5E8tw**Q2S8yF$=$ze?pQ<>>#YEiBc(q~vmbvg;N} zQu;@E(dknbrKWW6z3eQx_g;>8H~vDzccG=?QvlIIKlM~e4XcT2eSv8SO?D~oH?D1@ zuUGZDRhd(IS%fm=VhK$sS<7+?p^ECMR{gdK%qrCq6rE-QSBneFgnIG9QP*CwkQXpT zyz@PqhSwHxTZX`a3Ulj(i_kXkdc=Nws|#I$Su;gKeF_4uAFmeWFZwhxptq62rBGMf z+~3GQR_0c>iSlTY>-svCyxE~8$S>>d*||P-Kdz?`0}WpBMGgD~k>Ye|R=u81eK##l zfnD3Z&V;6Knq3!hZOREEZXL{0=gB%+Sj3w_LwGyA(%wy}CSFWmEJ-iL2Wr$E7Srol zd5b8u&g7o`)nw%6ind@rmS0Vu0{q9I*d;sY?7MnHDM`>RJ4wubdD+&UzV`QY zt!nSx(A?37bC2Pv%P1pVeVrlkL`o|@rf762LaK!8t!a+-COrjlLD9%CK|p8aKZXyJ5Nw?JOEH zny95=TrYf2$G*Hg(ueOWb&KjYs!v6`8Q6+*F^hVOeBsz8os_ucbcy|x60kij*ftiK zRP#NG)2$n_;#`{K@)lt-qo%Ak@F(WXYChs(ZB^eke45wg%wfqXI~YXma@bSk-!4Wc z;Sddd)TM<{f2A%7Xz-IhK}q!5_DFBHTP_tRoT9G5Z;ZAqovw|~jx9=)+U?wGrFI(? z+L10EX+<_Sxa*B{NBH@oGPu@k|MsUF605}i9ztO;&ZRYle9*;bx{SWcAv?BqVJA=? zk%H6NHe3e5HkVT{1)p2Huu0r1UI=jHsHABBa5 zMfjcozHK05TIg#BEw~26(5Jb*H(K3Ni9vP?zG{Kc7z(a#4>tNkJA-Q*N<+bx%AF0X zLN`#ItkrL41nCsZPZ@=1Dmd4*ba%DN(M@vELWowh<4c$L@|PHsC6}dZcCLWeHE(&z zg_pKR%W0mMXDe+sAPvE>N-vY#`dm%&yg;6_k5Rs)JxY^+V&*X^t0lz;he^ejlhLd> zj^tvpNNJQVmn9jiSn5hDMc#NNrJ*A^%ui#!GYwyRR8C{N$T_F53dQVFa^KK|mqy4n zQdOQlC&6cX9J4nrnMp{nti3hd+;Lh-s9weNkkx!#96{HEyC(S1o*1XX)QWipxy$phTwyUjmAVe6PHhydWkZc`a6dHCr{=y)>)B#p#As?=bEjM1 zp^3?}giB#`u_AslNh`KAtyrPRTRCn3y7fMm*1`_Q`71?P3p+&ClJtEJK9RR{az)5r zO(9MF;p~vAyj+ma5spQ0=@=N73e$|Cf{W!faxmOOhD?>sP(dp?#!xvcI#N`OJqT{;j_kxuWic9C zOJ6O*r@{Jq@!@0s9VPsv{#E?gP=s$j)rQ)mq1G@4*Yt@YAu4JqUE;#!NQ}=!(S%Jn z)EwQ})iSn(E0C_W8xs+jer)J1-PYH|zqwq!8XEn5UG3NPg+r0v9t?PJ*EUqozY5B8 zU%9SfX{a<*5hjg2m6baxD}!5UAd@buYFL(5PF}jCm6L;ILoUfjw8n0#Bm_wdkW4;V zL6Ux@3*VDNt%Nb6?B1EA8k43?n!DsF?EK-|b=H@wsM=BGJRg`{>+8C<8Yb30+=W^X z@=g{Jr~8F1UPgRqo7NGiGOB6mpuV<8UoC*qbVE_7vXa*$8cQ?2QyXfIM8f#g9={r} z=VOsArw^BfXmDPv(zJ5dt;VHBB@NLViWMo=HqgQb`JMIZt9VT1j&+W!0Sx}Tx_j_d z+>pAMtPVn~p#&Tik-A2HQR&P`iD=C*;j-qQp5~p^J8O29;G%#OFHNeLV#c5t9m%rs zDqc=&3VLww#IRkuEUPOhyO=HFN~f?G?(6tcePue!weULFS--YLbRfzP+QHW@YdWz~ z>enJBy=~e#wM&(x;{NBDtk&< z0%NA#MaY_b{3pIYgCz_j^wY91r75KkHj zhbq^tUEi^z(jRIOi--Q-&a233acK4Wb^KB$A-7iRUAxj!QJak>AV+#i$sm*xIdxqn^m+3!XECdvH_x%bKa#d2RP_W`+A<*SjuTjhS2 z+}|zt2j%`LxmW3)mA_BOebs-7eB3MdN96vf+`l6CqjDekgOJ}M_x*DJfZPwuy>C>= zt(5zS+{fg8Snf~Bz5kDrSMK-7{Smo8Cif@h-uEXVUo7`kavziXqjEnY_ow8(>dzwG z9dbV`_xUFT-X!-A$bDSyUzGb3azEuYA-_QGJLG=1+#i$s6LMetx{z;_`(C-fTkao~ z`xoV&{YA)6k$a!qx61t;a(_hbPs;tulTwe|-zxWe$@;^Z{_!KJHzCiix_VCb@ugkL_@ff9>Q~)xMdJ!Y^q1x*)8vB?`_8{0T!V3(%8Jv zQ`v?4y@@c(&sc-iM}4?)P0POcW36nqiB-3O(LL|&$H`8z@yc1C-{osGCkD~qmf?+DWoo0y51#`czL`HCpK>nF1s z7h3IDvU5W?G4nTMR!1vVl{eIcn_E|54SHoizR8=3Upov@c098d_Z!GZwW`Jeo%hY z4!b(Lp(7lQu%_(Ba8GA@7gialN@2a(jU7=Khd)ulZpltc!XC($N|Ck~^^dPDD})yp z-`L4kCTQ%o?7{-@sZd7?<{4VUk>>4~+Cky*z7C+BTSF~uPv*gV?c3)N$OTwBv z82eHd?%pG(-6+9V=(r<{3){!&sH>$j!k*9Cp|ZpNkac}al*i*66f7cE>4eZI!~JR% z0N!w-<9ylx?f0q#oEIK=O#%)_;!(8;xHK2ukfQi$G7kCApf#z+gm3ZnZT#UQHk2vi zty_v?Tm@TLvW+^R4zzUKLGKN9Z^L@!7A%p$_UL#ymvhc-?L8*xv)Lk_D|&ZE!f=>v z-Qnvh>(@5m6>RL`3A9|Ld)c;*zGxdJ?!F;@(~=lWNriiQ>DjpYhHl)=XU~eb4tj$9 zg^837H?bTu>3EW=el5V$wMQlL@nSMQEx*v#q!IK&L{upHW z^C6IZJXh${=laKA!f(3r32h6e2wld?lcm;lKP^Nlj$Yp!L0w?AK4TY-Ee)3MV|5C) zf-%d(F`!}b*yMRF6ef}7UPgy+iQeU&Jwb2$&Ji~CNrf{tQbm-Pf`#+}`$@fP`U#%{g78LRMMf1Hgl zWND$|uw9y5@q4=4yLcVEPs627*;pPCai`nt7`c@5IvpE$9J%IXkJ7u@nnkao+eisNa-XK|3lAG4J?!=>0ON*Lr?pxW}uP3AYC6 zfs1aOORzY=!3J~O>p|k6o63$wSk%Zdkcx(^u}vjAWXh2dqwS_B z`;L%x3|efjL&HkBE{yW@oRR+Y%k>85fX`?H9L8qMqVl>o1mgiKWaiyc-fnn|g={QU zqhnu%Tx+u!D?CBR9pd;~@|XsvPvf|&c_;fW?XTa7cR*7`G}Cz+XEm(3wuURXDw1(q z!`s`t=!DtQ#(pj_tWuQ-V=qXIu0ovYUzRwH@%f$2=ANC-_*Z1SY~$j^?rp{M3siOzGTZz6LwGqwv>R76?Y%p3W!B~gJ^L%- zxOk+e8!u|YOK~x;fq=L4ZEwMYa3r{>kiVvn%>e%271rXtA(b^ti-cy3`=I;3D|AM8 zwDj}}%`2hTExF&WDCaS6%op>=N@Ic8U@R8f z9~+9rV-$h+T;u=l2L~VA^I*Y4{)b8*I{MJ?L&qN4e_-gqkpsIA4jycJxb5M{!+}Fp zhk}PT9cnrhIn;k>;Lz?vgNI^=_8%HLbmUO{(9uK34vic-erWX2NxU}MdpQ5F?{L9k z5PR|dZ|q|C@4r8O|H%C!Uy+9f9vXZo_R!Enap)R(XcVtp_8#yZ@E-^q2p(uU5IHb# zVDLZ;Ifx$^J}`0sZ~i~%J?J~=KNvU|JlJ$Fa&Q3oiX9v}NScSaZlO5`x=FMDaNuy& z;o#v-hno(!9gZ9xIK2Dt;NjTe{fCDRA2}R9eDv_};gQ3~506qFeOTv$9gF3_O8Kx; z0W1}WRmFm_rdV4n5*vu^c3ACbY&do-HWC|+os1Ri_3tg+8`!&PZ`0nky^+1U_YUse zvp2T)$lmzgqkD(<9^X5<_at5|oxjhwuV9~lU)8?gzD@g@_Od-m<$ zH?;4_zW6?d_jps?<@0)?44wYA5J|+HtsI`%-z@s|q9jyvx%^`M7xGEO-iH5&Sm0vh zQ`WzSvaITVtMmiHRv_Go;2HSYI~d*^KLf`(o;B;%`^pQK`$`uVF82Etb@ujkg)eWx zv&lvH(cIJ0c6nDfCh3}ei?*x3Iz*|kt*d(xZozf+`W9{5+SlIEimTQ|;wl6PA~Ai~ za_u5qrqJyx+=`j9c<~bFU$m!X2`*U{as5j~O1Udqj9XThZoyUj_UlUv{agA=OF|{Z zi*UFo(j9H@UqlxDvIy^^@o(Y!w^(FK{(7Y097~I~2!7nqg1I~s=p7*}GaDAm z$eGyD-L>7v|MhjzWL~({hh>|H$+lw%$m+v?%!h}1nP=_7=}3%wMR@SzT?&e-L0r&YjBib!MmJ#)Sk}J-K`%KLF2#znpQ7)B>Aq6IFXhx?4Z!}>U z2QQe7I053thCM9f;RTf8Ns73+XL}3FnC;=5PIL#$nCCfj7gA^E+`|8pCQAZS!P_A+ z-!tp8JaRAp|1pP1xNAo{rnp(gg@Q&Uz21sgC=#oP$o5WD63Zy^Oecj3zFy(WJu^v* z!n>oG2=1j@$1G!|XZ8h|l+({TGSD5x+E|uRCgM~wTugF!wE=fFzX#r)vDS=e$78E3 zBPb#!;LhsSj%%?bnPo0Jixi@kqG8PU(dB*%?nSqUS=LQ6E~l98292+O{d|IE&r3YpA5qg)e0t<5{}-i$VQ#0|4}(ok!(cWZld zlufwttec4|)Qda#H*|M}*@Rsj;hs^B4{dYL@Q}m}U3i56n{dAN>)6DSyjK8Z=lmA`CsXm>!~vHT2_{&)p$P6Tz-VmZ*QW1- zkcbIiXXD@SJ`4N|G0oi_!CcdJHZhC)#k>i>%w{aF3s3IzN$~CnexZNi6Fi>0o^S*c zN8xSl{h`7Ty;hH9II&`ZWje7^fo0`&bVHR)mCb*#33+{8J>4B0cqswJvWa=({h{Jl zP9DFTOS#KsnSSIe=dY;g|H6TnW&S&Mlh9d2!s-=CQI@mGb2ddwe1|LqA`Xd&X{uBd zLpPjuvMIU0@Lr2AUQWk*L0RrE^LD|uY&uu^(mXOo*7UA!%u{XeV!0!^WceJHxc~`l zE(k|iaqjau2Z;v{wB!C%7k_^x%YAVUaj@xpd4BG%vLA;?7Rw=xbjTeqlVwuMGjTql z*S2@}pov6#qinY)_t!bUm`vHho8)uCv|KZ8%w=%g_A{hjJu@ z(;IrX+~0C=%Jfcpnw{U=&;8xhKY`OLpsiT^ko$Wsv|xH``wpD;SnhvuiGt}^j}V1X zMki9SSJKZL@bi!SXJC2j>0m3;tUle62@dV?me>HKXa^#C)?VAI&DTFUgKcR zbhxNQUY|N~3chp25&k6xmit!@ZJE9;65>lDa^K*o+6WLdr?^B10W!^-9O<9Y+1W1> z;k%e*uv0vnvs-`OcsW{Z@2X6$r8XA#-GGj6b;37!cA#b!jK zVVSLo9&Wh@IMheen{>*Rk+~xB2#=J?CkgDCgak4cA3mX~8lmix61*skn)Y@y?%b&& zk0&T4mDw4WC*n@d*v=Qbz(lB#7MAN3_^Fu^$0Teh+yMvhdggN9^3054S{a>(m1Md| zl4ZwOiKctzQKB5r%#K3L0OOUq(&uN0G*b{!q(#gW5nj(s>O{hrzYcAs8@eoamWaWZ zU83#es?A;D?!GARYe)>w$>g3TMDjf|x8iOJl2RjKxw8d4*E4e)ZzX4o-#+{X5zCz; zelNgpxHrq4D}EP{{8rG;6TcVYcS{?7zeD`?<9GBrEcD4eM*zjh8ma)jRPMO~DfP^R zMl5Q}Jx>5DJu{(_fCT~w2mo$>z5pt~+KD?WEcXHdR0#kQ7Yd-pGZWb)i2?xx1ptYQ z1ki|#AY&wQu|PIS1TvQhWQ%7eZeF4*p_fgd3=0L^WW(D~j)k7HsRCPV6y2{%Z~;ZN z=}{ula*F9d(ZtfF+@+q`^U~esq?j56?=`bn=F2$dAoU;|#OI^_qCjft^2DAw1;^Pr5s*x3rxCaC zol89zT*@P;lNAxvPs`ZLJm(WWizlEf2$-g|9X+%>S>}GigP{h_kDEZ)h)4874dqpp z73*s%omjA}zOlNjCRAU!CR9-wtXx-7xvqRO^Egs9RECmBW$023!5Z951ycjdv}07- z)iq^nxSEE>vYHx}WlPl7ZP>)J9ltAU>*_a$YO5P+%Non8LL$KgTVVBi>G2dWR}D$&M~7FJE7~zNW0PGE}#| zaZO$Ix;3G)dQeQZWrFo}HFay&SBBO%P&7(giS-IrRx5+mM)XuWnu=OeS%x%c*kEvd zLsh7jn+eMnEGpu!L2V%xs}L->qHg^v1y8eKC0!R}(`{4<13lA5gJl(=hN`;yMtaz@ zys^4&9h;%Y)>k&J$2*7FOdDQZx4u4f)q2!ZO?7Q`Bb#MM!P1Qz%j%KW`pVUnsARIt zs>*ehtEno9=+PaGB)tlLD8zy5_uPd*pEN5riX!W|r$~Bes zp^DW=QOPTyfz7ew>w=A;vNh}3TpKFeP*+_+b`Pzts}Ge`RMfM1c5FjU-NsNg>K*@T zmljb?uy-VhE@kJ~F@hH2p}HVkm$=KhKlp4JSuG8X^{@$QVZI%O7ExAHy=Gk{m3;#m zG?#%5>q5$l8rZqEJei}RtZFqoPshq@8Y|cW9b47N&bJYf(bZ)&U_iIPbGoXwnqA-! zskmx=Lt|+DI=FWYyU>oPLswJ1I#gb_ZUZW#VI3>5<0wZ})w~*3SEFzj=}`@isEhTe z)vN3Asx5YjjaF`I43+wqmM$k%=p)uOHn4?u^cr|mz3AB*LJedIG_)GF$d({*{W@jQ znmV`?T%o!a{oY}_2Itf_23#)z+h73$HH z7k_Bg=1_1`T|FzZBgvKPk!kd^B^6BCG4`YPnFcs}R)_mc^h+H?U>4 zgy_sQS6vuPS8Yb; zO5H^DCK&2cJD&8eDQm2%tY??ms7O^NS6b zCJA*`O<$?SkTT^h0Xs(avKy-#tEhKjWp-3q&Bn6L4WZRItKl4o@`d2yY?Un_S{yb0 zn#y&o+>U6ds$Sh#$SQ2)no8;#HZ|h39um6N;p>rhJbI4WI+#~BN$S$rYCC#$85+1S zJzHbLj?OoY6%v8g5{9b{x6Wrt+#at5{G6Q6fLP z+Qz6H!r!SMWA%27@IBcUa1x^E20L1gRAA7GYJLud-Ko=Rv_(WAd9}0kHmvIDYFW|^ zc2p(Ktf385(d&ajG=+_JR1K;RUjfZ|3ggn-F%smX&5d#-$w!Rau-p*OVqmQPS!J-8LM->Pj9FCfv+$ZnT+8Fp z3cQ#a>y7YmMK~nnJGWs4EF?E)O#K`Rtdjc~^^rTrjT- z$sd#Q8fzLtYw8+TmBAf(%E@`v7?f`kKc?i>RIVvQ$H1ee<~dJt7$BnmZLAAYB!-3f z(EuMr)2H9wywy0X$l>|4JUaKSuC7P>rpW1{bes5jl2f0_CHUctyvhyGPbv8CnR%-O zX9Grb7|Po*XXVw_%8cf#yjaO*J2GT}XUkk!z#IvnVF+z=QT#?*#XLv6mFOLLwPg)! zLp+;2i{}V{AN%sqO!1CFmHqiV&phhfJPb@pO{g4B*MQT@c`Wnu@B)6-_I1=c_q`y? zd>F@*TDSIx;2xNk#|%VgGcHjt&zVkA6jM^15O;-)i|*(t4w*@>6w$NnSv6YDsGRQk zoC&YueqkOOemRB-IJNSct}fTG>ZPS6a70_Ex)?x)1Hc7cWA*x4_@^yYQ??dY4(l4> ztu`nH0l;|;xEOPxHn^@1UR4H{wxM#2Vv2BiWh3h;z*m#ssK9!r&^^Fe)yNY%&$qP+5=s;mXJng#lX) zE{beqO(mTcW;u|xCAi+P1#r&78H(jQptYsA%5g~4R;(_oE%f6e#|BqbKzAXoYZ9O$ zT-PK(OK~xi02Si`#sM{Qu5%KhBIa{I*U-SR5Em$RLYk#M*Kvknxt`p)XPvF4FR1rs zxfxD~_u4)5;$ME(GPD(M>1oBvPnMgTJCjfP^9c@od$pTxC>m0egj5do(cSax78}Cx zB(zqsRG7Ecsk!q=0yiP$y+(cyFKhkP)x7CVzLB3XGCxT&-fY}o>%#inQXEfI$JX6N z-0I5|?;Y;Qfh(i`vR2pYqHi8Q?7)HwY*rgF{)gQkxzhVpA^mPR9+moNFQYK?E<|>Ea{xnrd|Y zAvR^nv|Ye~R?zrep?;3$Qag3gj?vD$U?s20Z z6)@c;T*PllHh1+BH*Vxo#o!3HqUmT6C@2CyMQ)4m1D?KpYsVs5V?%NHsp47~=JMa( z{#RRo)^hy=8yaN4Z_31+7;n3bEtI8JZCI@bEIY${OGeol`2(3kBuA?#kK!EwTFe|1<0BXi;HVgRf}uQvS5k|9bQPUoYTdyz4)VTofR@`45~5JalgA z=)ej}ZM$0jqSfJo#QlU68GDxA2mMGe*FpbQ7$PA>BSq_;<8kt%uDhkQ1ibKYl zf%wv-+6@^$%w=2k9w0+0Qehbue*?>am1;46Zw*(;?Vahl6LA*`K>lCc+T7bLkEtfy z>V5H6ERv8LuTu}L5ZAZG{WcMX7vL$@1@LPzeX?CD!|(($EAcpBJ`h(V!^kdsC* z4PYY$Kn5`#W+Oo$LzwTek$xZ}J|_|b;$7fGjso$c%du090tw=g1VTi;Pez%BP=hv7 z0Hg`c+eS)(L^PxpNL)k0K)j{SRJ({rLp}~8Pt$^AR`*m4a9$$Gu4NI3~0z+;?a;ekeG%%4`fI~UIP->kg4cUhc(0p z#A~(XsW61S!D0DU3Yk%>eR+Y2TBArM6NC&)!_x+t2s%4Tlj)gG$*oQCd;l^7mM-_U zd>_daDxUck2OTJ$A3|mXJ|=X*5U5?XQSMbgFIq0;rvN^I$K)KF+0W}dB&yDgJ{-fX z!GnJ;+aHl1>cgpVW_r-@9hR5phEOv4Wp9gn?6bMB^BzQ+BZIxj&oJnP%#}8QJW}Vc zC-B=ke;H>lcsF=Pl=mjF^A8~7OLM+>6EYE0hTY!J!OWodawl>nkhq3y1roW!DYF}h z55=*04gnd~ke>n>2smY4r&K5@_ZI9i1&OMT1)MS~fDCKMW*{RPavKnDnKRXXAPc}} zGk*t2lP2>UAVU|cy3qYu`Oh?T1A$de<{}_54XLNDqTDId2c$_uJ_RJMA>Rbzt5B&_ z8x(a)KL1H%C<0=8Q*BW7I&SUDY=e5cAU5UmgYb0W^LPZ6Q6cP2`TShO2%moik?7(R zHu7gL&O7P+nZ{4TpYhSwYP{Ia;nR3qP0O~BpAATBxRs04{u)^vvMfeOHqPzdHOhvB z%r}tBfedLf%|PNBvKz>-h7182(U4<6Mm2;F*3og;K7T$2l3oqD3W!fbx`FsLKsD}I=h_~9Q>nyl|Uqh|{64a0|kcfud0c21^z64}QLw*TlSVJaa#5AfQ%Yb;V za^|N6i0?5qqCOY(O@1RbI1%5zWyz?~&ODs@MsbM)arnG@s`ptkD%A@>nxuB}JjUJt z5~y?L=X~6|7}Ss&AOmsI<%7Sf7AL%pwBLx{2(Ikd%odk}SjwxtsTLOiB+h#McBDK~ zEiRU;THHdA5SP8F7Dr8qESKpih0Hoz07vR96Qg(vp3mdIx!r)0K7*DiS~rax>`m3h z3y>*=BB2XiA!ihFN@gX-#jm8{`7C5A((q)=RFYEobrz~B%ZIt9WkO?Ny zMKX)|oIalI|CaJ7v%W}p%8 z$tdmbIg7ET!z$G!TH8^nj#x4(6-}EAZg6U!4v;{m!$l4z$jCvZ4=9z>?aZk9pE%-^ zjk;C;lZ75m^a;Bltvjshf3{fdi^k}A2>Lc}Hp*`CP`_bssxAVM*<vNx5VIk@Tk6J5Je%oXL{(31UQu@YiOY45ll2ObwM)H0@v| z6pQCBka%n&9I3V(vv{h2PS<7RteOu-7j35vSs2h{=m(#LC{;378u4mY?L}lkoKNuq z1&rvsd-PjFpF_EVpOjvwXV>C<2{K+(qsR~0#}-89_%`)CT$`tnSq_;%8krWzjDE`L zy-^^+d!5J!fDCHLXMhZSU7fo(BYSo&svJIP$*2}LLd;)NsocldbT>oDs8p8%8PT*~ z17zTF#p8ZO|ClACcxIfB-uN@BTxx7A>Vn$Nmoc>UOY4fA*>?20AgR+C8^OO|t3>iO4Ou0yQZh9|dI@0hQhRn(| zJR^`9uz08+vp3}}Wfw43m4=63Q;(qy{?%xM+Ubkk2VLHn^aQ(U*_p!86HXZ(^CFPp z`;`9>bjm>HUWgWVzf)!LLmc$bl7QkD+l4wfvkU`uQ6jr?nd8IOo4L|ty9ZN>_8+7M? zP~&+Ykk~gAvsqsi@DdCf9NSynOYE}zc{jAEybFcOpW~K4S0N&yeW`k%rs|Y>5_5YD zCC&1xwnOd0-jvp>P}H1>sz;*hIMb^9yfX&>X$Prj7r`DZCtnlBYx!sdsCt{{p=-ce zrE@kaa*~xHm7l*_GN{2MJ<{}r=#idKHAoc84P*zYj1#`?L`s0fG^7p4kcR95GOQur0Wzu~e*rRp8WJrx2m0;eDr+oQj66e5 z$c*wls(-4UJ_MP;G(2A+9+WK=53L4@f6rOcW+2}0JCO%~j6CB+UIY?LqkSq)1il}s zRI0^^8bqEvx5K^Pt%}9>Z&iyUvNg~?*J=e*G(F1B+aWU}MJrHOTLl&moWxOIM5HD96l4z8=Y!vf^&R5_6K2&*pEeh2`@VU z#P_TdIRPZDAu|ebeerLqmP!9gAWhFJMAf@srh5M#oL)a0y;b$D>g!dn>ir%?epGD> z+o<{)vg(UQ7kMI5{#PT15pnhI=S~4on&j1-f4n&<6KpcZuxhZSCMyWJi&!C1!HRN-bBGC)ZcJZOhkY}_F z!3_7a>dnsCLCE;ERCmGkVpb`j*pVMqimzERsuaHj(xmYmxEyt%Av>-BnN_Fc-HOjX zI%LTx<`E#VG_#KRXu89Pl;tt-ato*>djIIa7 zrs``#0JUTJJdK*{_M^)DUQ0$Xj{+IcEVjQ4BcgL;4T1&V4O*2bb5=P@p{4o}5dXuf zTz4W>E>BDUl=fK_N=9kl2!vVZW%n__2O%?@<_!A~WJclq!t305eg>JLCsYpCIPzuZ z@b*e2qjFe^Dhk9^Dl|WLDOLOV<{pvVBA8qIE_>Mx~-PM3FQewHh*Ut(IRR#H!_YLe~UQDEwEtW>za1 zrK=K1;1|wb;s-$5-r@AI#;X!#UIfB^=}h&7weSQD*^MOOzhW!S=el&f!qMZ_n%Ig zF9I3Vke7iBX~>yZqg)zN4ul4rMec#=%XrC6Ox!M?tmquQvC-IpLKR9 zhAw+k{_J0`WK^m?Al^rmt{+2}lC_UcSTZVA=LXo>YTf7{9KNB_f69_kslEkdP^*jI z0@z*Z`us)7?+41a*16`M?Ss+8LwZ-coC!WW#{#ekYR;N z#)lvFrhI+wHK=x6aS2`SJZm81gTZYXlV>Z*Sov{pO*cU%X7T7XsPgkT$)w?V12O@t zTyyNq;7IYzM~63>u3V4_TKSpg%F_awrZo9^AIVtxLFGC&m7o2PVW>)BLwEc97&39I z-p_Qf*yZ{I@mTrs;)hx9Q*mPPrzzJ(kcne7Eb?=%tF8@@iCKAe*Y$oniCK9*&z0v3 zkQqwD^AcnN77w~^$EIvJ^IgcZ#p7qvF3+vuO!ehDnMsoBx zZVZi)Mn=h=2RR5CdhUqM8_Dj7y$YEJ((n{+W9(!ao*j_cpN8iMWaz1zF@(2ypujRd45QI9c0?l@bp7w zFb&Urkm@zv(Q2BWQGWVw8nbC%oGZqhw;Mf#TEoAnm;kgYmw^}^z_W2TI9!h zrgM~i`~({t*)TW;8@^!KFxV5;r?5HaRj^^;RB{`VP!D8+9=eM3$#dGrfQ+ada-J^( z@%dz)Ir3v5WKNMv)rHVS5ucry_)O?qT^9pZT?CL7+gB-jsxAhsx>x`dovdS1{a8$u z)HCFWwGXK-=xJ{9tjrYtJQv<4{24cZx_bFtAh{TUsptMiq{ZC)kTkvqtH!aPfFL}X z?!$^r)lOC~`f$tg6t@J(fKTR-3)cV{o}g-npqmWj5D@R@)$GB=FyLgKmj0=J>^VzD zY5yA`IZoya`ru<4(g?(B&C*nW52lfuV*Z3BqnMus5=3c*ovA;x>r|yWX9r4}M&_N6 z!CO70XOi06fyC0JdV*4=kvZdf#+uT|ybCg;7pE@84&s^W%;Eh&BGa76QIf&;_Uu;q zdmyp6KMP$YJkruL zeZum@1L1_S1K=Zz8A{9^kcD;)pim^H;56@vYkWs}fd%r^Fhk41LMLJsb zF#>7P*Qp+IK$D^VFb21<`@=g)m(>bL*)br4GL`V4lLnH11KQVYSyD>G)*8rrfsAM} z_W|)?d5ql#j{@;)$RB_NG-Te5u$YFd1=6G;JwPHFavzWZ4fzR>K@IsEkeG(d-vw)E zNEMI~4T%65)sRmBVRM}2`W6tMhWrjlP(#kV38m1G0Fa1=Tnl7CLp}~Y`N=^ItHL@*zdc_ovgV zk01qaJ07S=*i^4R*Xp%qKt|8LIxKB2^;m0qE%9!={exy1PReY`tw!K z|4zgkS>iq9DV!8Uj}2j-dz(u2*aP#S2XLmxYmxw;KY%ALEnV(snQF-3MZr=R$*BHJ zSV8s1C&$nmdoNS@xe`43rmlBBV)e%KgtdOHLn+3$M(DZ$SpGt%XWnig_X8O&aLRn$ zK%N6KdXZD+B#=Q23+>)7|7O(UA}3M-ge`F*9VDY6cL51#$QLQqdD3DyWb9cWaZTm~ zrSdzO=iLICbDgQK05V*tWYjf?umB? zReej9RSCWeh_}Rv904+7-5aHMs@QD|KlpaW`<0C9{oW0PEqC&K2#9xu6Ztlf;H6H4 z2DLV#YFXrvYWeFJB+ZsO#qO=HWiRM4#RXm0;=gV-Rm%@pwY(BC3A5kos{cIcy`EB$ z(S-k(qNKYlT{E;;Wz~Oy%!sAS?6oKnzhX`0E%N=4BbSk#DNlyQ>^mAzEJk08+iAJ{ zg5@1&V?Iu#63DWnFph>4qv7gE$z5oRQbuY&J}&L0hV~{y`%&ah%TEc-S?StG$ECg4 z(7wsg9yhc%+S=tCS$|};({1>+ClWZeHvR=|^u54Dp11Y3;iJg7cCdA+H+-&?HK;o! zXEW;5O-8=qGi6^VYPpE~k>|%lN10rQ`X_y(*v_*=mO1h)%ialh5?3W=*;VUi|9#~u zZd1O>ueMZ)#9ozxnt&)f{nt0uE_N&5@Su4nY(}}5O4UDC)w0sH2h&ud-X&5@osWi; zjG~v2i1dUUWigAn*I=f*T^djEN%*0Llss!NdkyA@!MxjG9yOSU#=zWRFb^2a#|`Ge zF)+6o%>4%Qh`~HyFy|ZAXf>E42JEh26L0a zOm800bd{7E%zlG;lfk^nV2&Hi3k>E`gSpXQ4jRly3}&yv959%J26L6cOz%|Dt#JZl zKZ(dTSYx;m>b8yywG4~26LOiymAc81qSm;7*O-E;wFRnB<3#C*?ED%JZdm+GMMQd zTj`j62J>-)IcPB7F$U(j2J?u)TxBq~j)6JfU_NFr2MlK47?@`m%)*DU>-G?cN@&~-guq)n8AF+V1CtL9x#}X z8_c^6=D5Lp++glEm`4oe4ukoq!TgHB95I-W8O#d|=3#?*#9(eSn1>DKDF*W~gZV{+ zxyfKYYA~O`g)_t)ecgz`e9U0pWH84K<`)g-;|BAy26ND0K4LJ_YC1j7qXzS^!CYl9 z(;L?%k8CLq7|bUP=4TA%fWf@qU~V#)+2z(um(afasKH!nFvkq$e1kd1V1CMA_8ZK5 z4CZ0ny_fcp{f5_IrWMgrM)slw2J@i7e22lDZ!kY@F#8PV-3D`&!R#}bj~LAP2J?Wy zd}_K?QfZ9>gZWW|*=sQO8_XjHv)^DIGMIA==7_<3)L1k-gK$)EE_eLHyO;u26ND0jv36y4d$T1>@%1* z8O-+@%p(SKmBD;+npINibxj8I9)tOq!5lD{j~UEu2J_tpGkuRlvwU%>!F5oKF_`-e<~t1LxWQatFmExK2Mp%j2J;bv*=I1*_im)cWDV{%m~SCFSW zo%0RmQ(j9(G7lQe0|xVcgV}2^4;##T4CY-1bIf4QF_>cpbIf4wH<3l64Q8Lge8gbxFqj7n=HmwQFmCthUKcl* z+YIJ@gL%YYe!yTpYB0AN%n^h6n8Dm{Fb^BdO$KwD!8~j*Z!wsU8O&P@<|c#rsKFdC zm`4oeO$PHOgPHDj>0UQ_hK0!1ecWJfG?;@1^AUsj6@z)yU=AA0RR;5r!F<$UK4~!5 z7|a2KdB4GY#9(GuB#xh}4CYdUIc6~5YcS^+%oPT+-(aQ{MtTia8O&aTIbbjs7|eqP z^9kI}(_44G!MxI7_8H8(4d!QUW_fS)X6xQ4zD?cPj1O+NU~Fh_$8W{j46Yq(DqQa8 zMi#GFT3TGf0!RXN)Ny0`8&Wl?R2-S|0jznuM8qeqGNp8(5Glv%8ZFgDNJVW&t_P4U zMdSxuo*yA4itX6Ud(dP_J>%B1lZrXvJ6S}h*4xmXKHLn2E=(yWY-%OOtJdm>1(3k> zv}03iu|8zkxvRN1+S}ZN^;k+w%|ni=TGq46#ZW|$uX`w!Dg{zA zb^u5mRV_S$kZ%BqohLoYn#;9qcnqbVM}pR-Y}f=u*wBiy4wP?L+CBZ*R-`;ozOmo( z4PT;&wHC{ZUILSW(tjxT_NLYrTBYz{z`%3nkdgKE9jm^2JEEvB+k1rUPhpMWfUsev zOTClS%aCDZPCNe*NaSK^!-TcpWT8-~zctj1_tWB-{5n%0H(-5~h2VhY+{V~|#jN~U zFLGCTYqhjp+ z>G%fC+zQ{Y)2ky<_HtgXq-E!JE-#}rsb#9K@uin3qZXW$N4Di(TlS$(311&-<8S80 zlUqnj+libo!ZtpuQs1R-s>O|1EzZRg7EX?Lw4- zWIhbjQ$J;Ir&EJgDct%@*+=<6FY@CyvO{0+L1lT$PdhR)!Oo04nhlxbmM7S2a-D(~ zL8jI61bqc5$tjOIVeu3=lk;OW){0m>$vtYWAKz;(NWxXe9 zUk#8MS>yDLb|CvT-{=PtM`I_e2(P<^5KZO|Aj4IPN7b^>PFB4hwLJb&N=)hU#OQRb zZOW>1u}YB6Kban%7EeEvRd-ufC6A;2%ih!|#ecpiWu|AM9Vw4gTc+zK(Ux&a>22$2 zby%H5?TZ!RVmdeAXS=7-fr{>n#>X)!5WoH z)rH6p+2=j5;e|wIZKu=XtQ_()zD2Vn1)`ljmQpj8(nqqit!XS(vW?A!@2 zci35#%U??+rE=+d=$Bb8xM9MkM#3>=RW}}aMhjT^A(C>~+1^ekKM^ELH!`>LW4Jt1 z_StCVClW@#?=%n3*hb_~*vIE;9}>EbyoK8kS3o?~tw16g@-ZNB4cSkr)+ryOWKRPb z){tKS@zyzIMu7}y2t9%o*N}NYnu02oY1N;h3rc9Y@@?~DvFcE&TJ9G_v<_eNBvsrV z&VR~#U$nfpAJOk{ideNnvxUNYG588?ixm28_r=d1R9Ub0YFSbjuahFolCj1=0wJFl z{jpQM^7*&Q8jo7maA`Yo{L_f}LyAp&7MSv-YS70^3K?}jZh01%b10QUmgU3j8d5xf zcnv9e9F;E-IZskxFf)VMYcNy2>CF3WX4&3vwQA5@QIF*8O86>mv@SiXd3y)amnR z+NR%Aol;GTI$fq$7Li~h8vd?{%eOmEK?XKRQoel#b z%^lzo_CX(Ru-I+TwxKz~eXIOOjRB5~q2Fjq)o;i)IOHsQ!pv<&M@KD9rw(x6NL_Xz zLw@*wzU+^Wq3j)FC_BvriZe*`I&JWSIwyqOWpE5-7cx}#3*a3zuVHU*S-s1vt$;Ot zF0hrzBjp=$%Rc(JkHpj&mhPh^J*PV z4B2N3a*)tRy~U%8XU0(WTgOoLUs`4F=*BmtrG>=~2tV*Oq%XUWp|bnn8yFrrwzt|h zB9?FX99qPo@{MC-u+QKa?DM8&AK@F3ZQVVc^mw?`d=S17XcYEwyLQ+XXO}Sd8EtVQkCV)HC-NggIs}qootK3T$$#?Z8&6>y zZHHzv^i5rVjb&v1isc)lIthNMe&b%tH{w9)3~X=e8h_C8!#m*f@3aMQq|UjMFgO%_ zFFKTPPgiqC2+gWvaRX$!yTUw8u#c=k*YF+fo$b^eZ?X^)cnKD3;z;Uqlj6zrTusTe zO|`*6pwu(D`RbT#DErJgR=HX`+oO&NNU8M?$n#K&Jd@a)kQq@jJlz=|hKKJ^zCqAz zAcGd7dRoCurPzhS=p(DQtfcZf?%6r&I!^Zj%AN9-Enan&AsPK_qfWwGt8z1_`L z4?;Yl5XYFmUzVNR!DYJu)@WLYaw9I)yr|$InGa#LwC)XWnSIo}=!GgjdyuPaE!V0y zre`83Cewq1giYD-4$FpotgA^W8?Ll%=<0O=*eCvx)HbXonU5+TQywK!Q4Y%u+rMQN zlO9FSB?)Vo*Kx`kdn{{EU#E{Xl{K0yYq%PNU4xQ(?-V6=6_BlfK9bwKES zl{WHTAR~&0*UKQK8dNsi))NkQv`2gC4XAdiPeW!9(!96fsXk9Ulbte;5YN9T9uj&2 zNK8Y103>*qQ|37!0~+!&kfDz$naHvz*B77c)b&Tm#Fek|_&0#~|5c?TDCZ6!A9o_t zfkZT99*~hwIAtybGP=i!6aw+yqY&j|qAtkC&O^>F;dxO1Odmt#CS2>O{@E&*XE;}- zS9{gs=;=k_V-Kh(Yp;B4$nvrMh`ZQ|rvr74vn=Mpw0y#*{IJ*d!>v8N-Pb3c4K9Z@ z0@508e%L8evG}Ky#YoXrNVQ+{!)74CVwQ}m3y~kH z3tF>FSLybq>LLax-MP|Y_Drz}oI}f-MQ6Kc9OmewLB!t?&f1M74v__=^LL#s)&Us`v@Mg&toWA zLf`uq+h?w2AD6n2zHzr@p9LtX-sF{iE(I*cnb)^O6MRD=Eb>`dcDMSHz9D3&?DOqP zkVmJ}F2>>;6;|1k`v$F_7wy8uH)Nh;yjm_I+Vc(VlML;{lCm=Zs4`&C}|Zj~LpI8QPB++P&k_PG9!XwYM4ChYjsRhW7k% zX{Y&lUHc|Od)&}|uc6&HF70&pMAsfPv>!3F-)(3w7?<`TLwl*A9mIMLOLiFA{o~Sp z(9rHTwBv#`L3@Xxy>wjK_Z!*^4DFaaNYMUnLwjIc+V3^AdkyXVhV}~#?N#H_zQ@p> zV`z^U+P$`RIlp?9HJ-;TaesSnsJD4*hht^%gLhz7gy+!bdass->`y{wK*=*j0^LB#)z6f*^zLKCZD9R#@Jv<+|;#jl{Mz~C5l+rgHKsw{^Zv? z^wu(Qz0*v~7TdeGhPL%}*)tD+LP_JQq;C0gb z+1sqL6OX>BYvJQo*{47t!Oqe*ZnVm7t|w7%r?h=cy`9qGhqCM=+&)w;Jumc2m3a^4%Kcsr$?XLUuEBF|!(sz4&r zV#k%mPD?wjebShh1q|)`4ehrW+DFHwJ!WXnH?$8J+E?1zrPtL>QZ3H(I@Ob~`{W4i z|GY;PSE;eO+p`t&ihe|uG`Y<3EHw|{!K7@$W|T|$#_|O!l|q(zai>_T<>G#oLnTx4 zlyN1Mqb#Ommir9m9D_MxFdsCSy$17KgP9r3Z3gq*26Mi_oNq9nRF+reDsD2EcNxq+ zgL#I*JZdm+GMHNp<^qG+YcL--n1cp$jlt}i*MYw93E1 zMfD!3bX?j84DF+a_DzQN-x}HjmQ;+EOKvc<$H%4JZ)gu1+K(98>3giY<&Ta_`$9u|m7#se(7xEv zK0Ge%1%~#3p?$xhJ>SrNY+TwG7}`q>?J+}pmZ5!QT-tqxcE6#0kD>il%x38IetcZo z=Nj4z4DEx4_GfMF@;WyHYlxYp&TxbJ?j7d_4@0t|5blgy<11#aD597S+`n61JRzQteIjmuYpdYlOf69XfYY0 zE&tQ8xTc9mQJjtc>3GyPOgzdHi_;l^FOrd}r#y))SGbhcpB`87J?`EO$sf2^wEwQ+ zNc4UsT(D$Ee)iL;IX#{7(H>0c?)N3J3l+DyYoylSlWKh|)%t~0>#s~&R~+?m!%>y3 zRZ1g&DMFS}-5mG59lY_-?@8Y9#^Tf{PU}&iP4{mY-Y|6b)I;^sYjLta#D`c!WF9$x zyMgmI!#|Xvk^ZCiH22^(Nc!qK(?=ywtE^bLd#!`^mQjob6bh&?~q<0XTcboz>9PR4DfVAY->{EliLny(O2spxTl+djZ*giLRM&?gZrgv<=w= zUdAm_d@^)O!8w7XEdFwG{y8>ZHcO=Uf#Ky?ZO`c|9Qelopnd zpQBPQvrByx5bd!_oX-KGqdgMx-vQah=KYp?bGg&X@{~9efKZyY>@)Re6Oc_d_V)tv zFq@q}0Yu)_sb}XYzm&^eWFzHVhumG*f{m8UXVayA7^QT+1Sp1Ee$Jo=atBJ|+yH$L^+v5rR(`a;Ou612|n*_G+ueiQ&Qt41Yu);1t4_C z3;w6({R|-c%&MgFZx;1DSpJ*8AsnpJT3E)a#Fu29{t9sP?e4OztALzm<9g07gAZBj zw*hjV&EOq?XpdFa^BO?32Q48TKu)8>WM@jq&r_*MdzSA5WP-KzC?G`!+4U>#%6%Rn zO@^}oh<=Sow$%k>EU()_UarVj-xgU_dM-W-9Qu=yWFoS_9-flk@iivc_t@49H&ApER%j4&ktx zzW@jwG)$z;Ujs71>iOPZgRGmfab5_>`M`!81%&<*iropwB{Nb;fJ$=*oO3MzzTrypKw;w!Q_3 zj@!uApZyMSs;OtaT!TbJf7mGIfurL#kT!H-%CV)~X*B{_&oSVfW<7j8Ae(Fy9|1&L zR#<=buk*#}6IjpEgSJjiPPNkF(n`XxYgluuIZ zeS~A?i~8}WfHWCDKMIJ<^3v<{Z@mj+Vw&h50&>O3OseOn0lCaZ@lJv;?)@Af4>5}U zXF#t0m_5?31G0~e^qW+QarocaMxPn4jsbE6y-4&|9uWN=nH+l?kVn{@-UrA9*5^+E zG6rhM^)Br(%%EAPIsAPYIPx7RO`mT9(lqsymvIp-@MMOh#@Y27pdp*D9|hzJn~P(B z$h*pQsSY3$to1hmvdyH;$EhAhpRWSKsqtrk+{IeocOQ7e)DwodeIyLgYg@~l1kMDb z*lz&BaXt*lni)HN`;UO^o6$5R$o~c8Dx1^Y?*_%#xW)j{ujxIR3gu1!a-QLI0hus; zCY(0|a`^}C6?Yksi%f2O6_9(F{qv`QfYQqTp?^OHh`vQuw*JibfIh6$j{q{kxH_)Y$tl%Rg$5^u>S_nFRPr zKptUycrPH^Pq%0AU4WctIDY}iU2I%?-VgGyalH(XBaHG#0J+3)mH=ro&iolb=zeT4 zxuR;?9(yn0upZtIh>mnUIfuKv=w6bXjHYV(JOrGJtkhSj9yW?ymoQRB!+Ai)7|-7c zNKTAP*IWT)`)PKcUk}J>CP_XG$OESJQZ0&_s7AkCF8Sw+z`3%^uIJl;$Q!qGThI6a zD9>p4!+=~<)ROhw2FL}_@F|9duK{G!v<`4C24pwu^G^YCRm4{{<$nPXc}u)*{R4n- zyX8}W?0tsa=g$Lj3tGTH)C_(d5FMA0J$ww1-G-m3KYM=@qfoDzOPqN?9(s<}%dm}O zid~EW7tN`f3&7dMC>8>;z1JRl9gy8@E`Ax1%ZxMc1LOfS%S~~`FviZ>x(1x0YFYMh z*FQ(i3}+7@V{BZv0rD{8vBQ9zXRV(CWP;(;0lE4;HVxlSI86F|1d!dV)L#K|4~Uac z{`>z0XviWkhXI*j^Iir-z7wHmIlY$80H=m(!9t*XJ6^>N9gx?|s@wpMj+smP{30Oq zm(16@0J-!-_U!z7!kM-qR{`0_diZTX9$?hi`!6xejLvrfBHy8-QP4Tx%6c;=&;99f zodM2iR_Z(;Iyxu&{B}SdVy$1MQVjALK#0f*ov#6+GbCj_fBRp#tLb?Jd5JyJmjiN{ zt;z*Jt}&cCAeYb_)hcU#3n2FxoK_^2fjsG^NBVx?>|+%B7$9V!C4GMS2O$p`W; z6gvUPLu{lQfLz^c)A>z+>}BKnJRlcXJzoJtz6q#l_`d-;&szV%e+^DxUgVDhLerAO z0geO0HS9S+F0p!k6Obz}vwQdzDrM#rb>^ObKO{Dz#_fP?8yQ77X`kp6aCS4C6+nt? zef<-HFlxM;YGyS2G9Z^(smB1hz)JnlZ(&@FhA#pni8fOYUqv`f)|~-Fo*B_}eghz5 zre^rvxTzB|lgXCP0;kFB%>M$&1xD3peF%0hlYRjpO-9w@fIP(d{Eq<9Z|utTRRiRy z048&q_EUZuIOo~yTm(eFi7e~+EFk+>>wf|W{b8`gH28b!Z)29(eEmH@_TdXUsc`;2 zAo?Y4iV0WC#SM&y46 zY!yrrgmLey0D-^}6crKRI4q-PKoafQ1Wu04*Xse9U^TxLkO$dZ{5l{P4G!kCLN(K0 zQuF=58Ds0>_W_~ylU49FK#s6d-=I=cHhp$|RQ^gzeLo;vgB$=vo|qd`{BsPDtEidQ zgj^SQ6AoL;8-P5_#&v-pW?U$m`!zteRUNXP4+BCc;uA~wOMu8c2i^MD0Xfaa{tZB` zjN7I5{2R;;Zta4>M|f6OgfKyRBP3j#3Qgg@91_JCT{U z1G0zJd>oMT3=#q&PikvUxEm1t#)=&K8v%KcQS80E#bK~v+ofShLi znI;IM;SoUYVQu{sAbVInZv|vR+{mg&`c6R3Gdh0^kc+II{{_f{&#}4X$)5s`vDRMz z$VJ{m!ubK4s%hRh2b{fZ72FHRH8x+L1ms~hUw;6|E(ZA@fN;CzNmtNkwwi7Mgh!-b z2*@_GH%fre>?U*300c|Wg8VEX+(UdHAXgYQcKr_8Vm$w1K(-m3i+~(qqj)VK4>1mJ z0kWIT-~~W(jAH5C|IY&_nbQz^!1V^^ovn+N3v4Ci}(4>g;S!W$Jkm=7?U_PM~h$|Tz~AV*m1 zB|x@WTj@N9W#H^$G`s}JZdUV00lCI_`|0N*XrXJ)Tl(#_5BAdY%d>Xom z@!=dGR|1W28 z4G^xoF9Py%lm=lHZ`@Dyu$uoLAY*J4&;Kl_!A5Zs5P7fu80rbTb&+czPX`l({_Y0O z+|%r~-U!G(R?q!_$d@Q}sm}p&`uXYXdASvB=wG!M7tN|dE3NXn`GMt|!vhjwC8U?fa%JS1>YE1S=IO%m zg(a9}%~k`Zb*EFVtVLCIHQ=q|t!Sm$X^n>=-e`Q-Is`cr>G+6`DPBkd)HCL*RjXxW2HnPF*M@)g2RUHy)Y;*#ur8dHr9n^tsfe2B1A zyHU^eEhw*xE;pNDXRC>kikH(C_U}idc$xs!tm4MZs1?cyk-%!?fJOH7t>LNT!2}}z z>rp$7HlkoA`8O$zM(a>e*ns~$2$mv5cxvg+KIjE`U*G_(PYl$$4{K6xCw;0`P6)%qIVOZJR41yrPTyDn|$N_9p ztu9nbogk>Jm0Mw_RgOFDg-W4R#(xS2^M&Hk%88?;$#6Vwx60$wbK{jpz1@MBX^u}z z3gyFBEZ%Wo|6&*(4^i`K)Cud5L$n4KI)wsK7q>KPfR`8g@-neQuR7bR&VG1z4~Q3M z;!V(4_(+Odg800DHlAv=FP>_(FP<8$7mw3=D{~wiZ!;6m9*3&U+pdkLY6G4n>QunFX6*p^9$MfZN-Ey_n&HRW> z+^mo7Xw&lz-S>7+!c*N-U{CktmyGV|kKXRdkN)lvOAFnE|DKC%LWzajT@UfRT~w|z zN+BAaQHZ|O{e`H$_3|c!OrvSHvk|r0G4yhx4oXl5(PkxTb~v2Wgbz;mKD7dPFxdik zK=w#=Yc+z(vOkvkN+s7UId$Cbgi!19u+{)tm}~%fYHLtraYgR{$fUUku2~?9gJHLx zJ9o}iD)VOX6*i3kH=y?zF6kp4#Io{)mL_nlFJjEplF`VR~gg4k?nyoau3vhVSHRYw8lD+ql zH;@R~ETO*lVhM@Tk0mr#Z(4N(Qf`3xrd))hwkM%K&ViZ- z8!)|Pc`r^d0i-1<#e1OzwcsH6i6t`QMR)ww1-1Nuc$0(R&DVkwY)u%RJsO>_tHrK zMgahFJP|T!N3G7nD*-QT9G`~=U+)S>2>wu=9*L@j*yn)33dgn>mx8cRIMlpjDI`h! zIMqC4&rckE{Q5px-HwY!E&-OqafGaTup8+DLK$Fv5t~~TY8SKJT@DvQ$9B-dQ48I~ z5PQ64Ph9s;_SoaqfHC+6YhZ*qOw7c`uL(L0Kdyp}>NWJ_r=X$v8J=34H?R2>D_e*= zl*9sLTCjjcdLUj6X5mz{ptzz9s1b+-aNQP#8K^tSPd=DP8CJScyW)g2miWtu zVW$ypswfb6dD!?+0WqSbuy{BwE=`1(veH~wtQ59N2N1`_;O+A_6~9v2?)AT4Y1$q)AdqmPVQtx(85OAq5IJgg)AFy<8XB ztevfo94sRvGnZ$!MzO1Mv`S`eJ>tOD?j+eI*3^~ch zEU;O|Me0{mHji30>6zq#-}y={Dz}6`^$NL#*Ju@r!8`(=I>4+0CECJFqP}jLg2lpy zMw!^!AnT8r45DD~Dp9=E{@p$kH#-d*LYs>w&XcfuVh?S>FTl2^No?TZpVU{gSW-0% z;8&>H{FoNG%}y$w7BQQieOh+IUKmsVu-8^r*vszej%)Uf3~5apdZRco#ZyF0rp0G` zrf0`2lT=N9qW7pZqd=b)c1)~(J=$>tj_jS&Yx|IAcOv=d$zU=cVf5Znnn(%Y!YUMy9F~RJl={=N zg}Jz10TZ{Q{S>A@NO>I~okzN1>wcnJk6+hCMoFi&us@`Xr70b`sYb}`h!%tZqtMQj z4(+%LM11Kl3V~Ld@$UhAhdW~PU|`SHwAkpt-iRiBYIo5_pD$OdYGO~&%sSyQ6{+Rn z?eFBseS+{i+8>{pJVnO1PjY5{2&TBDT?Qaxs=s zWd1D(+T>h_Uba(V=0O`(DP(q9tTS-P0mLmqKA+&^GzzAW2qAWvtKx$!!M14Kegy#> z36V3rP~98^pZ2m!NLn)JY}q+|5Aq^eq7<#JM^b$C%!UYFe$um zY$zbrqaAuIY9}_%qR0KZG;&Nj)h%bxscGYc&0yvpT;j&b_o#k2=$r>p&=x|Y1L+D~+65DK;2$e)Q`o9yI*|HAu$m|k}=MeJR z3!BL90?u`?C-O2cn>RLr1e3~{#dsYn++z)he$eJjG^cw->1Hl(O!)Au{XS@e$q>&9 zcDgttf!yW@Ke6PIfl5E_%nJ*?(paZ7&nPUnx9Sxs2}UbuOq8Sj%I5>*A;j$vwhHq9 zqpIqo5<{bxHa$QU(>M{YvnR(CML4NpXE?8V{Rbh*_k zZ!K&sZq3ks7JbFA|TzE*BeJ%RfnUOg@bKydLqj5&mJ}q){7hdU{wcvS*(?WO` zHVP+e8wHqrg@UmB3c&=XO$~+C|9rT=z7^7=VMvBw1ZxFz;W0VVumO7>$7+z#Dt6n3 z9(T`S->6ZO%`AB$kCoF5MfM}u73_rcnP#nAiF{K!jag8PjctAy;n#OATs9!<{$N;G zyl5lj)3(_uz)Vqo2B5b=L;PTJ6Z{S18+B|S@M-d@U%=r}xfRt#fv864An_iskcu-H!xtfBq zhR+70hs?WH0Xn)fPiHxyy6B{>$+ID&W1iI8die}a!6FM8Dy~yr{VvgbK|ezH;ug*l z_U+Bkf-CA0~kJH=TFaZN-z| zk{q8Rvl+PspV^Y*9%fR&hu3r5PJv#dbx`La#HtPQjta$6XKqC~R||(RE!nDii^>rT0_A=y;}iY!d1fh&gP-m(U4xMFHHUZQ9QWbi6gHRU z!^GFqt^#(hjSG2`^juk5HyOE&J9CruySHG432rkj!c6Op`YE5L$JX06@+zxPu9j+a;Y?c@S@(wb-S3jz=x!vt1MXVB z;XN_du-lUxE8a8Zvfmkd9N9bR$<5^-%)oWWwKE<|T3ms~w_mljO`CvQW(xdEreUPg8z{Ov33o0rt%fW!QfsrgMJ8(Dt|pcLGkBX;Nvq{x#!eidyqksI z8}-6YX<^R>sM`G6X(d*F1|N@ba8k*_G$R8f3uE0*)7+&m4Cz1N*RNq~+^#jj1xvR5 zEay>1a$}9PfyY4_W;RLDS}WJ9HRMI5cN08mT2`7B zHW%_d2&Yo9SSr^%;#eP{WR)cIY_yVe7FAreT3(Jf0*cA5G+GtxHFxW{p0a9Ea@F+=1EPwN z)EcX}xK$+bxn1>tqEf?3W~b&I6n9VMCV8AL5t`! z12@|22AsQTvk^-PFM~E@w()8Vr+dDNQP}yI7O|;bSA4UqN4J@Qk$p9Df#0v{Y-~^6 z86mwsZ46M#(^h8exKC?6%4H;S-f*Qw`p7fl8}68sYlxeh)698;m0uP;Zge-2P(H2Z zjEo|3@4riIB8>98WF*7R$qnYLf%1IBDj0G`p0MNa2$eqP1fEFw@pKhO0;S$BA5f^eUh38@t266SBRzT9AXBC}30kICJE$VN7tZpOg4l@ceyh2k+|F1#{bXCu zV%cNKD%MA0_bjGcdtxsQd)LhH%T3hf3@Q(`@CKp5=oRW7lBGV}4x*Wl5sHq~s=Xg* zt>nSGZC7CRVCcBDv!iGeV#jq^{Th5=Lib;noke>r-;wsM@k4~$$-AyZrz{n_y91y* zc`tL#MpK+X$MbWZ8@-D1>h~y^khe{(;0U_sR-8GFr>}EF;KaELV= z)I}Za28%`YhNDQ2VOb(c{gp;@3s=yJu9iBBb72@GvmO@`I^zlg?0?idViTk-doOOi zQm?u2dpZ{9mgCMkZcOl8A7a;ote_K=%)@p~dNqt3p>zSWfy^B-``+}n(4ub5ll@Wb z-r}BNy5~!hz?06za3=-snI-uG8?jY#qRZS>KaEra^OoUqcP0BdL*0Mtu9G1PyDagQP!Ec|Bt=X-?#PMJ!$K*i>_`BvKD^64~Mgo_j>Y&ijwP{w>)< z#RF_qydfVCz<<$SUqy&$;*kJfb&PU5uCCOf2g1aPV~doNM!qOD5c5q7D)!;fBn6`9 z10}2z-u0RUu==gPM6&k9v_$r(t0ie|BsSM8j&;=%R3aNC*-hc^ZuFLDb}hc7NBcY3 z4P&*yM9EXtMW`9K||E4>NNZNjv{Z_m8axC0`^iN(km)V4CcI;t;% zMaV&o0IP^l6d5`{)pVkRhZ=*pBG9LiqG*pBKE-$K zp>2_4V*IMKp(~JsDZCAL92Y1jmu@<&E72yGw>r^@XuXV-J8}@+#UOiztCeNXrRL_o zAJz!o4wP>!pbCEt`r(u`lgob0v}xfkmfKE;ou&fO)MB}X>+}3AIX7CSO%3jg4T&!A zpkzLl4m4Dx6)*0Wp(`=fi;4yN9yZ@wiWMY<77AM@j#i}kb$#n&tAP)Fz7yBC>}j=S zIY*VOM>dq0E#Vq-4(!p6GT25bi6>yP+DrsP68pOjQ;^7!>sl=?n{0%uwZ<}@(X8TG zzIM)rR0PEJo5O=kcbo_p7fMTEm?Pm4<2Xg5LJyhd&X(JPgyZwm z!R(YyGBx3b@WjdEOAE&eVX;&=dFYPtL}BrcgK|a+#}8pv+|l$X;6aYpaSN!(x2CFy z)Z^WHEj|;~bh3u^Tf~f$-(k3pR~^rWrNR-J=Nqc*b&yhi5v&nuD2;S2YDF07L@=4d zeHfvrQT$8zz&Y{aYjR1dE~)B6Ryq+dJQLxLPvTciY3qBXoztJg8cvR(FX7plDcK>a z09K)?KzEej6*&zl{1)bPBT5wsmljKOuf}q@awgYoN8M`UrD9TFO0AAVkm5?=n9i6j z5Q*u|Rnyzlmt1%ly02JJ?Be`9utjgN>b{1rfS!|Vb-2;mU#-GRB#xI9Pd*Bp->Ipv z8KGmqDHcqxa^XVzc%x1XO!ts1)DL!X0dBn`5KO%hJ&uk`f@p!(;^kJkwH4OUt2UN= zwA@_<3)2m5^55m<qrrg8J$ zC?HK_=&zR{a5iXa^{-~PgMpc!XX!VNOcGselr+f3h;a8YjU#NdFg9EhYs!i*t#UQq zloG-Hv{Gx7?e4h0A(qDDcB>4b;8Ys9s42jzi?L~H3#{5UYt=@V?vc@)pvH~gIB!6f z03>6*T*L3yMhM2md&`IN`|-2x{HEt5u)50l^tvuyZ(SF7DKXQD>TOj+tGyPlbkvVd z3)1_X_(8Rxbu19^uY)Ba=+qDJ8`xO>Ae@liG^%%-X!bzTy(UCzNRM#P3qka#G|5;( z5w8Tv0j%RHVp`SmSDar~|01~hXR~p3+Wc%zOpi}b&Q9PO?678cy|Ug^_|NL()!b%egQqnkFUvAT318QY@CWl`FrR_zSna#EB0&|n-*4YY5 ztS?igXDd`1b>sx~qyolmKG7z)RV>*Yl+h}LPSnz1eJL6A7FIlt)aVZiKP;nugp`-D zJyfTKBZUWMPTUOLfs}6L+MSa)cX+JaSu5a|#(|aH1sF?EAeolM`VGm7$c+nIVti(L zdU9H+C!_bIq(p}?<@gq@;Ns$O+>71&ZX`N*Qx3(H8|5G^RTD2AFi@y=9>qn;*owmI z#c(%But81q>4fR6I7O!d;hAB1B;q?!(p0bz#GkA+4c||Gb z+_~=pd*r%uOSlNBTdPGiX=m%>6U9J#VI}orfU7u z?AcT+MV*s%X?<3W$8k8WLB?8ZacM_8ZJNPpH8>mf>@1l)39MJc&YGkZ!LPDVQ8gS> z0F~uBwGX`^f+<=iQ`eT*a*mQvZt^amm_^92L1$5{(qK|MM#7{^Cmyt1 zGYfd6sht&5yArq3b1Nt8c&SknTL~eAY_ly)leV0hq~$(qREBT$8ikzcqjuy-Z8g2K zw}gavN4$@mo^l0J3g%!8kCs@rjerd}nnpxcHg3Iy;i!38uD;ay1Fnqq)F<|$qTKae zYO+$nq|R+S&KT5%7-A6X<-6gowY$se!0`s+KlIj#&~RksZr0>nnjy>gNDjjPh{4y! z<%T};=pH17r4^4Lnpzg}BA>9n?lTdfQ&pXoOiEHm5IxCA9Z9k=w1sR3;^g97kxnl} zdSiN})@`p*Tsx5(!5rJw2B4n8mpH@$Y zvk3*4D9!t-ZqyReQ_MhYW+0J8+(zZEZP}w>oS+$z%=Pkmdle=nC2wJhXrg08>8fIy zSGpbr5wxh zSQl;x%d$kuVHqAax9g4}UKEonvDA1qE-X6;T?)J&EGq->@HZB*`_XOcceX?Xll8ze zze;at<%~hlV@^yrV+s>XN-R$3=~LIk>7Ymo4K3x3jb=S(n^^v95tw@esVU|vlZ-1} z>3$EuO5&50fH!C^~r<&4@YU<*+?H`oiJ z@a-V-TP_CW%@MaIZ~U?OR;DsVMMzy^6RfhPH7_jwT9P|(j z_IwT)P$WW&a0tKEM$hmFHIn;=@E_e|hzD|}h~2=EFmfBXJl?WyX&jh9uYV;(C+TiJ z5zfiN93)lLO0yK)7r>HUvfXh&QG|q-hm^0&JfLxHK>*x z=MplHUz9(P%R;&HN9l$0gmqyb(w;`lc06@lRqX*M*w&$SJ(ty*dMMj6kq6|G88x94 z1c0DBSZ>nlP@CHz1~W8v<_db=Zxt7qW>~d}_{&c~;Z@J#ttBX;I-+#g1;k5z!~ku% z--ysBxRQ43r4W=c45(X5-9e1A+?J0kazoiN3&_}+4DsZ`jCj8tdFfdG(JEdtPka|) zV=QAsqpoFxM=ptdd|G&@&|&h7LwjPK!qb^IVP?UD>GG(qWMA+pje6{PP%@npz1`VN zY0c+xCuwbCqYIlYf@9(C2s@FR;=-1}0F2E)ATtsvP;91xsC>O4=0gjw3W@v4dgE*| zA27m1I792y%(y6`SNoT=3r42f5K|*WjI;1rR7tKukfhQizq0?<15jz-UJkY2ZiDnI zz3h~E7?);`l$gkIpg<^Xi6_jZ4RdAC(u88+W4m5kiA&M6 zK!#Lqv|QMvLWT`1`tTYsVl^-<#W6&oSi*316KNeVtQts8q{l{*`LG4t4J@CX1`=9t!<>R!pdB&V7x^4Fd*;UEKcfP zMl1s3p@Ag%Pi82}o9kiDphYPk*4rE8+M$cdb}dVJOjyv)AQa+LBz{RjOSU>PYZ7Fh zN#IdrSaTT}8>SLh?`oNz5$;tQV+Z@(l7NsjaJQw(u;M0UxauB2tMoPQc@BcHlk$*q zi}BQ4;jVIZkydb+c&vp48057dyMW|U9807}uf=Nh2w_ZMvTK9A4uvT~(8Z`F^2HEU z5>77LzO}=g4f48FL~*Nt0Agc_9514Yjs-0>On^ukP>@4>V+;xyTYiR6WC3|XKPrm7 z9IqO!ph=4o*FmJM%gtILA?%$J_-^29do-<=o9gbAl}M$Z-oGCDKB| zAG#AAfsi$36QzCxeDi6leYV`hgus^*_BXoDz1mEJ-(E^KVTX^@5b0#%mCsr3v0%tR z6l;n4?&JeyWq$A(v$s43A(wG{(+&DIETjq)dlk~->m-vwo*yj$ICf(5U)ZXcTgOgM zIp{s8g-jXve8{YBQrfXfJ~NVgSk||_Y7Cc>Qe5NEOS0&7BE2AVIIVyywDsEUW!l?( zg(le!l`6ln0>iG}S;0>cJTamMnJ=_o=?Ud{vRQPLaS;2%?i5?J^JG?vBVJgq+B|j? zF1WLwtH47Pvz2Cd0U5s}0!(zMj|u`RIfy3a?$jtG{^SJJXc!_pRzMs(t%657hM@Vi zhlffv_sZ=_+V(31HvkZL)|8$JCycDYkjhM^a#e@X!|oi$%1Wq}@^S~@b6Ow6E<3Oz z-qDGCIh10#@imxi7{U%3)OOU~GmApICZDUG7^f$K&BrD@^-c1dow#F%C1Z-%IT>YQ zoY|^fR2Unj;bz}ju|=75Bkf&!C+>&xJjyq*iEvtB&1W(u@;|9;j=6} za9)x{L2?j$n4U1d9=G@65i6AEg5=R3+SE#p_()3E%R1@S-l$A@C|VNubC~-rqZDzd zZ6lWDLQdQ|T05z`|Ghc4iRd%tAlom5`7^ZJ2$>+R5@kE>PT0dyGsJuNxPk`BT9hAM>_hk$!x;+g(4Llt52 z5wd&X{M2!RA~7;jJ~nHuM`u!}6NJqqY2ogG$)z)Ia^;22qYZv{g1L6UfgPMR4(U1K zHb|@2hSWDYjY3%if)|{_2gwxqe7KY*b}UWHr{OKj$QHP7?M%CKCS1p%57*@2<1lNq zUz6|)C_d^&okWAlU{p-X-O^F|#?o8b?Av)dvRAmQbUhI-zwQxz!yy^V@%DNd$iOri9)s6R_^Ae*x8+E9uRiS#+^r0())yR zmdO(Up=1Qee#M0@v+#)>B!ZoY+H}^6%<8Lhd>W8|$o-&Q7$lrkNQhECE;7WCb&1=%=uIeb z$Cmaos%5bx%^Ef;N(M{G0`sK4WQ`?R#hVqe(~aVujMl8;d{Ri&q-ChJm8+NqQ)YUd zM3}6u#360=k2teD4MGOCO{_>RN!X}PJi-aL8u!$7)P>p6C-@|#W=6)a>woNgP153l z{pg9GWzCvoB~MC$m>)i;Qn@&Gv+o2MX3G~I6v0C?wM0H=UH96TRp~((p2s@&OLiTs zaBWw~Pi$if3ufd4BW{qB?Zc7C12u+DOfpQFHmMVJlVn$7(ua^*nKlnGkH=}tWS*?J zpPA$kqC~7;7P4@&wY7ICy#Z60EU+C(N&m*2Ty{NOH=g^JQesY2n+IZLuZJ Date: Sun, 5 Jul 2020 13:29:03 +0300 Subject: [PATCH 02/11] travis win64 --- .travis.yml | 22 +++++++----- primesieve.pas | 90 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 73 insertions(+), 39 deletions(-) mode change 100644 => 100755 .travis.yml diff --git a/.travis.yml b/.travis.yml old mode 100644 new mode 100755 index e6bec5b..f564f8e --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ dist: bionic os: - linux - osx + - windows before_install: - if [[ $TRAVIS_OS_NAME == linux ]]; then @@ -17,17 +18,20 @@ before_install: export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH:/usr/local/lib; echo $DYLD_LIBRARY_PATH; sudo update_dyld_shared_cache; + else + choco install freepascal; + choco install mingw; fi install: script: - - fpc -B -O3 -CX -XX primesieve_info.pas - - ./primesieve_info - - cd examples - - fpc -B -Fu../ -O3 -CX -XX count_primes.pas - - fpc -B -Fu../ -O3 -CX -XX nth_prime.pas - - fpc -B -Fu../ -O3 -CX -XX store_primes_in_array.pas - - ./count_primes - - ./nth_prime - - ./store_primes_in_array + - cd libprimesieve + - fpc -B -vh -O3 -CX -XX ../primesieve_info.pas + - ../primesieve_info + - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/count_primes.pas + - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/nth_prime.pas + - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/store_primes_in_array.pas + - ../examples/count_primes + - ../examples/nth_prime + - ../examples/store_primes_in_array diff --git a/primesieve.pas b/primesieve.pas index bb01295..9dd4f57 100644 --- a/primesieve.pas +++ b/primesieve.pas @@ -283,12 +283,15 @@ implementation const {$IF Defined(Linux)} + {$MESSAGE HINT 'Linux platform'} LIB_FNPFX = ''; LIB_PRIMESIEVE = 'libprimesieve.so'; -{$ELSEIF Defined(Darwin) and not Defined(IOS)} +{$ELSEIF Defined(Darwin)} + {$MESSAGE HINT 'Darwin platform'} LIB_FNPFX = ''; LIB_PRIMESIEVE = 'libprimesieve.dylib'; {$ELSEIF Defined(Windows)} + {$MESSAGE HINT 'Windows platform'} LIB_FNPFX = ''; LIB_PRIMESIEVE = 'libprimesieve.dll'; {$ELSE} @@ -352,35 +355,62 @@ initialization if libHandle = NilHandle then Halt(1); - GetAddr(@primesieve_generate_primes, 'primesieve_generate_primes'); - GetAddr(@primesieve_generate_n_primes, 'primesieve_generate_n_primes'); - GetAddr(@primesieve_nth_prime, 'primesieve_nth_prime'); - GetAddr(@primesieve_count_primes, 'primesieve_count_primes'); - GetAddr(@primesieve_count_twins, 'primesieve_count_twins'); - GetAddr(@primesieve_count_triplets, 'primesieve_count_triplets'); - GetAddr(@primesieve_count_quadruplets, 'primesieve_count_quadruplets'); - GetAddr(@primesieve_count_quintuplets, 'primesieve_count_quintuplets'); - GetAddr(@primesieve_count_sextuplets, 'primesieve_count_sextuplets'); - GetAddr(@primesieve_print_primes, 'primesieve_print_primes'); - GetAddr(@primesieve_print_twins, 'primesieve_print_twins'); - GetAddr(@primesieve_print_triplets, 'primesieve_print_triplets'); - GetAddr(@primesieve_print_quadruplets, 'primesieve_print_quadruplets'); - GetAddr(@primesieve_print_quintuplets, 'primesieve_print_quintuplets'); - GetAddr(@primesieve_print_sextuplets, 'primesieve_print_sextuplets'); - GetAddr(@primesieve_get_max_stop, 'primesieve_get_max_stop'); - GetAddr(@primesieve_get_sieve_size, 'primesieve_get_sieve_size'); - GetAddr(@primesieve_get_num_threads, 'primesieve_get_num_threads'); - GetAddr(@primesieve_set_sieve_size, 'primesieve_set_sieve_size'); - GetAddr(@primesieve_set_num_threads, 'primesieve_set_num_threads'); - GetAddr(@primesieve_free, 'primesieve_free'); - GetAddr(@primesieve_version, 'primesieve_version'); - - GetAddr(@primesieve_init, 'primesieve_init'); - GetAddr(@primesieve_free_iterator, 'primesieve_free_iterator'); - GetAddr(@primesieve_skipto, 'primesieve_skipto'); - - GetAddr(@primesieve_generate_next_primes, 'primesieve_generate_next_primes'); - GetAddr(@primesieve_generate_prev_primes, 'primesieve_generate_prev_primes'); + GetAddr(@primesieve_generate_primes, + LIB_FNPFX + 'primesieve_generate_primes'); + GetAddr(@primesieve_generate_n_primes, + LIB_FNPFX + 'primesieve_generate_n_primes'); + GetAddr(@primesieve_nth_prime, + LIB_FNPFX + 'primesieve_nth_prime'); + GetAddr(@primesieve_count_primes, + LIB_FNPFX + 'primesieve_count_primes'); + GetAddr(@primesieve_count_twins, + LIB_FNPFX + 'primesieve_count_twins'); + GetAddr(@primesieve_count_triplets, + LIB_FNPFX + 'primesieve_count_triplets'); + GetAddr(@primesieve_count_quadruplets, + LIB_FNPFX + 'primesieve_count_quadruplets'); + GetAddr(@primesieve_count_quintuplets, + LIB_FNPFX + 'primesieve_count_quintuplets'); + GetAddr(@primesieve_count_sextuplets, + LIB_FNPFX + 'primesieve_count_sextuplets'); + GetAddr(@primesieve_print_primes, + LIB_FNPFX + 'primesieve_print_primes'); + GetAddr(@primesieve_print_twins, + LIB_FNPFX + 'primesieve_print_twins'); + GetAddr(@primesieve_print_triplets, + LIB_FNPFX + 'primesieve_print_triplets'); + GetAddr(@primesieve_print_quadruplets, + LIB_FNPFX + 'primesieve_print_quadruplets'); + GetAddr(@primesieve_print_quintuplets, + LIB_FNPFX + 'primesieve_print_quintuplets'); + GetAddr(@primesieve_print_sextuplets, + LIB_FNPFX + 'primesieve_print_sextuplets'); + GetAddr(@primesieve_get_max_stop, + LIB_FNPFX + 'primesieve_get_max_stop'); + GetAddr(@primesieve_get_sieve_size, + LIB_FNPFX + 'primesieve_get_sieve_size'); + GetAddr(@primesieve_get_num_threads, + LIB_FNPFX + 'primesieve_get_num_threads'); + GetAddr(@primesieve_set_sieve_size, + LIB_FNPFX + 'primesieve_set_sieve_size'); + GetAddr(@primesieve_set_num_threads, + LIB_FNPFX + 'primesieve_set_num_threads'); + GetAddr(@primesieve_free, + LIB_FNPFX + 'primesieve_free'); + GetAddr(@primesieve_version, + LIB_FNPFX + 'primesieve_version'); + + GetAddr(@primesieve_init, + LIB_FNPFX + 'primesieve_init'); + GetAddr(@primesieve_free_iterator, + LIB_FNPFX + 'primesieve_free_iterator'); + GetAddr(@primesieve_skipto, + LIB_FNPFX + 'primesieve_skipto'); + + GetAddr(@primesieve_generate_next_primes, + LIB_FNPFX + 'primesieve_generate_next_primes'); + GetAddr(@primesieve_generate_prev_primes, + LIB_FNPFX + 'primesieve_generate_prev_primes'); finalization FreeLibrary(libHandle); From e6bb8ffad66569ae1d312f3a3b81612657fd3a1d Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 14:01:00 +0300 Subject: [PATCH 03/11] travis win64 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f564f8e..394509a 100755 --- a/.travis.yml +++ b/.travis.yml @@ -20,7 +20,8 @@ before_install: sudo update_dyld_shared_cache; else choco install freepascal; - choco install mingw; + choco install mingw; + refreshenv; fi install: From a79ade570051acf0e3832d13fa27ee14f53f80b0 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 14:14:15 +0300 Subject: [PATCH 04/11] travis win64 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 394509a..0f28a2f 100755 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ before_install: else choco install freepascal; choco install mingw; - refreshenv; + cmd.exe //c "RefreshEnv.cmd"; fi install: From ee918c5b7a1a24b566efc90b0ea693d8da9e3561 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 16:52:17 +0300 Subject: [PATCH 05/11] travis win64 --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0f28a2f..e1f690d 100755 --- a/.travis.yml +++ b/.travis.yml @@ -19,13 +19,14 @@ before_install: echo $DYLD_LIBRARY_PATH; sudo update_dyld_shared_cache; else - choco install freepascal; + choco install lazarus; choco install mingw; - cmd.exe //c "RefreshEnv.cmd"; + cmd.exe //c "RefreshEnv.cmd"; + echo $PATH; fi install: - + script: - cd libprimesieve - fpc -B -vh -O3 -CX -XX ../primesieve_info.pas From ea669e1d718dbb66b5564df9b2d786007f325ef2 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 17:11:33 +0300 Subject: [PATCH 06/11] travis win64 --- .travis.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) mode change 100755 => 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml old mode 100755 new mode 100644 index e1f690d..7757556 --- a/.travis.yml +++ b/.travis.yml @@ -19,14 +19,16 @@ before_install: echo $DYLD_LIBRARY_PATH; sudo update_dyld_shared_cache; else - choco install lazarus; + choco install freepascal; choco install mingw; - cmd.exe //c "RefreshEnv.cmd"; - echo $PATH; + cmd.exe //c "RefreshEnv.cmd"; + export PATH=$PATH:/C/lazarus/fpc/3.0.4/bin/x86_64-win64; + ls /C/lazarus/fpc/3.0.4/bin; + ls /C/lazarus/fpc/3.0.4/bin/x86_64-win64; fi install: - + script: - cd libprimesieve - fpc -B -vh -O3 -CX -XX ../primesieve_info.pas From 9ce48d23f0d1b1c94546b1b8146e9fbb75257837 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 17:16:46 +0300 Subject: [PATCH 07/11] travis win64 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7757556..57bfe90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ before_install: echo $DYLD_LIBRARY_PATH; sudo update_dyld_shared_cache; else - choco install freepascal; + choco install lazarus; choco install mingw; cmd.exe //c "RefreshEnv.cmd"; export PATH=$PATH:/C/lazarus/fpc/3.0.4/bin/x86_64-win64; From 8961240de50b9cbd21fbd8223a0761b71623b693 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 17:49:21 +0300 Subject: [PATCH 08/11] travis win64 --- .travis.yml | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 57bfe90..52617ba 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,22 +20,18 @@ before_install: sudo update_dyld_shared_cache; else choco install lazarus; - choco install mingw; - cmd.exe //c "RefreshEnv.cmd"; - export PATH=$PATH:/C/lazarus/fpc/3.0.4/bin/x86_64-win64; - ls /C/lazarus/fpc/3.0.4/bin; - ls /C/lazarus/fpc/3.0.4/bin/x86_64-win64; + export PATH="$PATH":"/C/lazarus/fpc/3.0.4/bin/x86_64-win64"; fi install: + - cd libprimesieve + - fpc -B -vh -Fu../ ../primesieve_info.pas + - fpc -B -vh -Fu../ ../examples/count_primes.pas + - fpc -B -vh -Fu../ ../examples/nth_prime.pas + - fpc -B -vh -Fu../ ../examples/store_primes_in_array.pas script: - - cd libprimesieve - - fpc -B -vh -O3 -CX -XX ../primesieve_info.pas - ../primesieve_info - - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/count_primes.pas - - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/nth_prime.pas - - fpc -B -vh -Fu../ -O3 -CX -XX ../examples/store_primes_in_array.pas - ../examples/count_primes - ../examples/nth_prime - ../examples/store_primes_in_array From a13ee7db0c8c1067f30fa7d2bc99ca91eae8618c Mon Sep 17 00:00:00 2001 From: JulStrat Date: Sun, 5 Jul 2020 18:06:45 +0300 Subject: [PATCH 09/11] travis --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 52617ba..fb763f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ dist: bionic os: - linux - osx - - windows before_install: - if [[ $TRAVIS_OS_NAME == linux ]]; then From 68f4f78ffa75f2a2ea9b4bd2b6df0d2964ebe4ca Mon Sep 17 00:00:00 2001 From: JulStrat Date: Mon, 6 Jul 2020 14:22:59 +0300 Subject: [PATCH 10/11] v0.2 --- .gitignore | 2 +- .travis.yml | 17 +- README.md | 50 ++ examples/count_primes.out | 1 + examples/count_primes.pas | 2 + examples/count_primes_c.out | 1 + examples/nth_prime.out | 1 + examples/nth_prime.pas | 2 + examples/nth_prime_c.out | 1 + examples/prev_prime.out | 135 +++ examples/prev_prime.pas | 2 + examples/prev_prime_c.out | 135 +++ examples/primesieve_iterator.out | 17 + examples/primesieve_iterator.pas | 3 +- examples/primesieve_iterator_c.out | 17 + examples/store_primes_in_array.out | 1168 ++++++++++++++++++++++++++ examples/store_primes_in_array.pas | 5 +- examples/store_primes_in_array_c.out | 1168 ++++++++++++++++++++++++++ primesieve.pas | 46 +- primesieve_info.pas | 38 +- 20 files changed, 2769 insertions(+), 42 deletions(-) create mode 100644 examples/count_primes.out create mode 100644 examples/count_primes_c.out create mode 100644 examples/nth_prime.out create mode 100644 examples/nth_prime_c.out create mode 100644 examples/prev_prime.out create mode 100644 examples/prev_prime_c.out create mode 100644 examples/primesieve_iterator.out create mode 100644 examples/primesieve_iterator_c.out create mode 100644 examples/store_primes_in_array.out create mode 100644 examples/store_primes_in_array_c.out diff --git a/.gitignore b/.gitignore index 44b14f0..eb9c4ee 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ # Executables *.exe -*.out +#*.out *.app *.i*86 *.x86_64 diff --git a/.travis.yml b/.travis.yml index fb763f8..aaba7d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,14 +23,13 @@ before_install: fi install: - - cd libprimesieve - - fpc -B -vh -Fu../ ../primesieve_info.pas - - fpc -B -vh -Fu../ ../examples/count_primes.pas - - fpc -B -vh -Fu../ ../examples/nth_prime.pas - - fpc -B -vh -Fu../ ../examples/store_primes_in_array.pas + - fpc -B -vh primesieve_info.pas + - fpc -B -vh examples/count_primes.pas + - fpc -B -vh examples/nth_prime.pas + - fpc -B -vh examples/store_primes_in_array.pas script: - - ../primesieve_info - - ../examples/count_primes - - ../examples/nth_prime - - ../examples/store_primes_in_array + - primesieve_info + - examples/count_primes + - examples/nth_prime + - examples/store_primes_in_array diff --git a/README.md b/README.md index 97c683f..1b6375c 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,53 @@ # primesieve-pas Pascal bindings for [PrimeSieve](https://github.com/kimwalisch/primesieve) library. + +# Requirements + +Install ```primesieve``` library. + +- Ubuntu - ```sudo apt install libprimesieve-dev```. +- MacOS - ```brew install primesieve```. +- Windows - you can use [libprimesieve.dll](https://github.com/JulStrat/primesieve-pas/tree/loadlib/libprimesieve). +- Or [build](https://github.com/kimwalisch/primesieve/blob/master/BUILD.md) library from source. + +# Usage +``` +(** @example store_primes_in_array.pas + * Store primes in a array. *) +program store_primes_in_array; +{$ifdef FPC} +{$mode Delphi} +{$endif} +uses primesieve; + +var + start, stop, n: UInt64; + i, size: NativeUInt; + primes: PInteger; + +begin + start := 0; + stop := 1000; + + load_libprimesieve(); + (* store the primes below 1000 *) + primes := primesieve_generate_primes(start, stop, size, INT_PRIMES); + + for i := 0 to size-1 do + WriteLn(primes[i]); + + primesieve_free(primes); + n := 1000; + + (* store the first 1000 primes *) + primes := primesieve_generate_n_primes(n, start, INT_PRIMES); + + for i := 0 to n-1 do + WriteLn(primes[i]); + + primesieve_free(primes); + + unload_libprimesieve(); +end. +``` \ No newline at end of file diff --git a/examples/count_primes.out b/examples/count_primes.out new file mode 100644 index 0000000..e2af3d3 --- /dev/null +++ b/examples/count_primes.out @@ -0,0 +1 @@ +Primes below 1000 = 168 diff --git a/examples/count_primes.pas b/examples/count_primes.pas index d893587..6c1e285 100644 --- a/examples/count_primes.pas +++ b/examples/count_primes.pas @@ -12,6 +12,8 @@ count: UInt64; begin + load_libprimesieve(); count := primesieve_count_primes(0, 1000); WriteLn(Format('Primes below 1000 = %d', [count])); + unload_libprimesieve(); end. diff --git a/examples/count_primes_c.out b/examples/count_primes_c.out new file mode 100644 index 0000000..e2af3d3 --- /dev/null +++ b/examples/count_primes_c.out @@ -0,0 +1 @@ +Primes below 1000 = 168 diff --git a/examples/nth_prime.out b/examples/nth_prime.out new file mode 100644 index 0000000..69ac1aa --- /dev/null +++ b/examples/nth_prime.out @@ -0,0 +1 @@ +1000th prime = 7919 diff --git a/examples/nth_prime.pas b/examples/nth_prime.pas index f553760..e2cc579 100644 --- a/examples/nth_prime.pas +++ b/examples/nth_prime.pas @@ -13,8 +13,10 @@ begin n := 1000; + load_libprimesieve(); if ParamCount > 0 then TryStrToInt64(ParamStr(1), n); prime := primesieve_nth_prime(n, 0); WriteLn(Format('%dth prime = %d', [n, prime])); + unload_libprimesieve(); end. diff --git a/examples/nth_prime_c.out b/examples/nth_prime_c.out new file mode 100644 index 0000000..69ac1aa --- /dev/null +++ b/examples/nth_prime_c.out @@ -0,0 +1 @@ +1000th prime = 7919 diff --git a/examples/prev_prime.out b/examples/prev_prime.out new file mode 100644 index 0000000..86fb7a8 --- /dev/null +++ b/examples/prev_prime.out @@ -0,0 +1,135 @@ +1999 +1997 +1993 +1987 +1979 +1973 +1951 +1949 +1933 +1931 +1913 +1907 +1901 +1889 +1879 +1877 +1873 +1871 +1867 +1861 +1847 +1831 +1823 +1811 +1801 +1789 +1787 +1783 +1777 +1759 +1753 +1747 +1741 +1733 +1723 +1721 +1709 +1699 +1697 +1693 +1669 +1667 +1663 +1657 +1637 +1627 +1621 +1619 +1613 +1609 +1607 +1601 +1597 +1583 +1579 +1571 +1567 +1559 +1553 +1549 +1543 +1531 +1523 +1511 +1499 +1493 +1489 +1487 +1483 +1481 +1471 +1459 +1453 +1451 +1447 +1439 +1433 +1429 +1427 +1423 +1409 +1399 +1381 +1373 +1367 +1361 +1327 +1321 +1319 +1307 +1303 +1301 +1297 +1291 +1289 +1283 +1279 +1277 +1259 +1249 +1237 +1231 +1229 +1223 +1217 +1213 +1201 +1193 +1187 +1181 +1171 +1163 +1153 +1151 +1129 +1123 +1117 +1109 +1103 +1097 +1093 +1091 +1087 +1069 +1063 +1061 +1051 +1049 +1039 +1033 +1031 +1021 +1019 +1013 +1009 diff --git a/examples/prev_prime.pas b/examples/prev_prime.pas index 2b7966d..4661f95 100644 --- a/examples/prev_prime.pas +++ b/examples/prev_prime.pas @@ -22,6 +22,7 @@ prime: UInt64; begin + load_libprimesieve(); primesieve_init(it); (* primesieve_skipto(it, start_number, stop_hint) *) @@ -36,4 +37,5 @@ end; primesieve_free_iterator(it); + unload_libprimesieve(); end. diff --git a/examples/prev_prime_c.out b/examples/prev_prime_c.out new file mode 100644 index 0000000..86fb7a8 --- /dev/null +++ b/examples/prev_prime_c.out @@ -0,0 +1,135 @@ +1999 +1997 +1993 +1987 +1979 +1973 +1951 +1949 +1933 +1931 +1913 +1907 +1901 +1889 +1879 +1877 +1873 +1871 +1867 +1861 +1847 +1831 +1823 +1811 +1801 +1789 +1787 +1783 +1777 +1759 +1753 +1747 +1741 +1733 +1723 +1721 +1709 +1699 +1697 +1693 +1669 +1667 +1663 +1657 +1637 +1627 +1621 +1619 +1613 +1609 +1607 +1601 +1597 +1583 +1579 +1571 +1567 +1559 +1553 +1549 +1543 +1531 +1523 +1511 +1499 +1493 +1489 +1487 +1483 +1481 +1471 +1459 +1453 +1451 +1447 +1439 +1433 +1429 +1427 +1423 +1409 +1399 +1381 +1373 +1367 +1361 +1327 +1321 +1319 +1307 +1303 +1301 +1297 +1291 +1289 +1283 +1279 +1277 +1259 +1249 +1237 +1231 +1229 +1223 +1217 +1213 +1201 +1193 +1187 +1181 +1171 +1163 +1153 +1151 +1129 +1123 +1117 +1109 +1103 +1097 +1093 +1091 +1087 +1069 +1063 +1061 +1051 +1049 +1039 +1033 +1031 +1021 +1019 +1013 +1009 diff --git a/examples/primesieve_iterator.out b/examples/primesieve_iterator.out new file mode 100644 index 0000000..351dd78 --- /dev/null +++ b/examples/primesieve_iterator.out @@ -0,0 +1,17 @@ +Sum of the primes below 10^9 = 24739512092254535 +1009 +1013 +1019 +1021 +1031 +1033 +1039 +1049 +1051 +1061 +1063 +1069 +1087 +1091 +1093 +1097 diff --git a/examples/primesieve_iterator.pas b/examples/primesieve_iterator.pas index 3790fac..d84a1af 100644 --- a/examples/primesieve_iterator.pas +++ b/examples/primesieve_iterator.pas @@ -17,7 +17,7 @@ begin sum := 0; prime := 0; - + load_libprimesieve(); primesieve_init(it); (* iterate over the primes below 10^9 *) prime := primesieve_next_prime(it); @@ -37,4 +37,5 @@ prime := primesieve_next_prime(it); end; primesieve_free_iterator(it); + unload_libprimesieve(); end. \ No newline at end of file diff --git a/examples/primesieve_iterator_c.out b/examples/primesieve_iterator_c.out new file mode 100644 index 0000000..351dd78 --- /dev/null +++ b/examples/primesieve_iterator_c.out @@ -0,0 +1,17 @@ +Sum of the primes below 10^9 = 24739512092254535 +1009 +1013 +1019 +1021 +1031 +1033 +1039 +1049 +1051 +1061 +1063 +1069 +1087 +1091 +1093 +1097 diff --git a/examples/store_primes_in_array.out b/examples/store_primes_in_array.out new file mode 100644 index 0000000..fdf83dd --- /dev/null +++ b/examples/store_primes_in_array.out @@ -0,0 +1,1168 @@ +2 +3 +5 +7 +11 +13 +17 +19 +23 +29 +31 +37 +41 +43 +47 +53 +59 +61 +67 +71 +73 +79 +83 +89 +97 +101 +103 +107 +109 +113 +127 +131 +137 +139 +149 +151 +157 +163 +167 +173 +179 +181 +191 +193 +197 +199 +211 +223 +227 +229 +233 +239 +241 +251 +257 +263 +269 +271 +277 +281 +283 +293 +307 +311 +313 +317 +331 +337 +347 +349 +353 +359 +367 +373 +379 +383 +389 +397 +401 +409 +419 +421 +431 +433 +439 +443 +449 +457 +461 +463 +467 +479 +487 +491 +499 +503 +509 +521 +523 +541 +547 +557 +563 +569 +571 +577 +587 +593 +599 +601 +607 +613 +617 +619 +631 +641 +643 +647 +653 +659 +661 +673 +677 +683 +691 +701 +709 +719 +727 +733 +739 +743 +751 +757 +761 +769 +773 +787 +797 +809 +811 +821 +823 +827 +829 +839 +853 +857 +859 +863 +877 +881 +883 +887 +907 +911 +919 +929 +937 +941 +947 +953 +967 +971 +977 +983 +991 +997 +2 +3 +5 +7 +11 +13 +17 +19 +23 +29 +31 +37 +41 +43 +47 +53 +59 +61 +67 +71 +73 +79 +83 +89 +97 +101 +103 +107 +109 +113 +127 +131 +137 +139 +149 +151 +157 +163 +167 +173 +179 +181 +191 +193 +197 +199 +211 +223 +227 +229 +233 +239 +241 +251 +257 +263 +269 +271 +277 +281 +283 +293 +307 +311 +313 +317 +331 +337 +347 +349 +353 +359 +367 +373 +379 +383 +389 +397 +401 +409 +419 +421 +431 +433 +439 +443 +449 +457 +461 +463 +467 +479 +487 +491 +499 +503 +509 +521 +523 +541 +547 +557 +563 +569 +571 +577 +587 +593 +599 +601 +607 +613 +617 +619 +631 +641 +643 +647 +653 +659 +661 +673 +677 +683 +691 +701 +709 +719 +727 +733 +739 +743 +751 +757 +761 +769 +773 +787 +797 +809 +811 +821 +823 +827 +829 +839 +853 +857 +859 +863 +877 +881 +883 +887 +907 +911 +919 +929 +937 +941 +947 +953 +967 +971 +977 +983 +991 +997 +1009 +1013 +1019 +1021 +1031 +1033 +1039 +1049 +1051 +1061 +1063 +1069 +1087 +1091 +1093 +1097 +1103 +1109 +1117 +1123 +1129 +1151 +1153 +1163 +1171 +1181 +1187 +1193 +1201 +1213 +1217 +1223 +1229 +1231 +1237 +1249 +1259 +1277 +1279 +1283 +1289 +1291 +1297 +1301 +1303 +1307 +1319 +1321 +1327 +1361 +1367 +1373 +1381 +1399 +1409 +1423 +1427 +1429 +1433 +1439 +1447 +1451 +1453 +1459 +1471 +1481 +1483 +1487 +1489 +1493 +1499 +1511 +1523 +1531 +1543 +1549 +1553 +1559 +1567 +1571 +1579 +1583 +1597 +1601 +1607 +1609 +1613 +1619 +1621 +1627 +1637 +1657 +1663 +1667 +1669 +1693 +1697 +1699 +1709 +1721 +1723 +1733 +1741 +1747 +1753 +1759 +1777 +1783 +1787 +1789 +1801 +1811 +1823 +1831 +1847 +1861 +1867 +1871 +1873 +1877 +1879 +1889 +1901 +1907 +1913 +1931 +1933 +1949 +1951 +1973 +1979 +1987 +1993 +1997 +1999 +2003 +2011 +2017 +2027 +2029 +2039 +2053 +2063 +2069 +2081 +2083 +2087 +2089 +2099 +2111 +2113 +2129 +2131 +2137 +2141 +2143 +2153 +2161 +2179 +2203 +2207 +2213 +2221 +2237 +2239 +2243 +2251 +2267 +2269 +2273 +2281 +2287 +2293 +2297 +2309 +2311 +2333 +2339 +2341 +2347 +2351 +2357 +2371 +2377 +2381 +2383 +2389 +2393 +2399 +2411 +2417 +2423 +2437 +2441 +2447 +2459 +2467 +2473 +2477 +2503 +2521 +2531 +2539 +2543 +2549 +2551 +2557 +2579 +2591 +2593 +2609 +2617 +2621 +2633 +2647 +2657 +2659 +2663 +2671 +2677 +2683 +2687 +2689 +2693 +2699 +2707 +2711 +2713 +2719 +2729 +2731 +2741 +2749 +2753 +2767 +2777 +2789 +2791 +2797 +2801 +2803 +2819 +2833 +2837 +2843 +2851 +2857 +2861 +2879 +2887 +2897 +2903 +2909 +2917 +2927 +2939 +2953 +2957 +2963 +2969 +2971 +2999 +3001 +3011 +3019 +3023 +3037 +3041 +3049 +3061 +3067 +3079 +3083 +3089 +3109 +3119 +3121 +3137 +3163 +3167 +3169 +3181 +3187 +3191 +3203 +3209 +3217 +3221 +3229 +3251 +3253 +3257 +3259 +3271 +3299 +3301 +3307 +3313 +3319 +3323 +3329 +3331 +3343 +3347 +3359 +3361 +3371 +3373 +3389 +3391 +3407 +3413 +3433 +3449 +3457 +3461 +3463 +3467 +3469 +3491 +3499 +3511 +3517 +3527 +3529 +3533 +3539 +3541 +3547 +3557 +3559 +3571 +3581 +3583 +3593 +3607 +3613 +3617 +3623 +3631 +3637 +3643 +3659 +3671 +3673 +3677 +3691 +3697 +3701 +3709 +3719 +3727 +3733 +3739 +3761 +3767 +3769 +3779 +3793 +3797 +3803 +3821 +3823 +3833 +3847 +3851 +3853 +3863 +3877 +3881 +3889 +3907 +3911 +3917 +3919 +3923 +3929 +3931 +3943 +3947 +3967 +3989 +4001 +4003 +4007 +4013 +4019 +4021 +4027 +4049 +4051 +4057 +4073 +4079 +4091 +4093 +4099 +4111 +4127 +4129 +4133 +4139 +4153 +4157 +4159 +4177 +4201 +4211 +4217 +4219 +4229 +4231 +4241 +4243 +4253 +4259 +4261 +4271 +4273 +4283 +4289 +4297 +4327 +4337 +4339 +4349 +4357 +4363 +4373 +4391 +4397 +4409 +4421 +4423 +4441 +4447 +4451 +4457 +4463 +4481 +4483 +4493 +4507 +4513 +4517 +4519 +4523 +4547 +4549 +4561 +4567 +4583 +4591 +4597 +4603 +4621 +4637 +4639 +4643 +4649 +4651 +4657 +4663 +4673 +4679 +4691 +4703 +4721 +4723 +4729 +4733 +4751 +4759 +4783 +4787 +4789 +4793 +4799 +4801 +4813 +4817 +4831 +4861 +4871 +4877 +4889 +4903 +4909 +4919 +4931 +4933 +4937 +4943 +4951 +4957 +4967 +4969 +4973 +4987 +4993 +4999 +5003 +5009 +5011 +5021 +5023 +5039 +5051 +5059 +5077 +5081 +5087 +5099 +5101 +5107 +5113 +5119 +5147 +5153 +5167 +5171 +5179 +5189 +5197 +5209 +5227 +5231 +5233 +5237 +5261 +5273 +5279 +5281 +5297 +5303 +5309 +5323 +5333 +5347 +5351 +5381 +5387 +5393 +5399 +5407 +5413 +5417 +5419 +5431 +5437 +5441 +5443 +5449 +5471 +5477 +5479 +5483 +5501 +5503 +5507 +5519 +5521 +5527 +5531 +5557 +5563 +5569 +5573 +5581 +5591 +5623 +5639 +5641 +5647 +5651 +5653 +5657 +5659 +5669 +5683 +5689 +5693 +5701 +5711 +5717 +5737 +5741 +5743 +5749 +5779 +5783 +5791 +5801 +5807 +5813 +5821 +5827 +5839 +5843 +5849 +5851 +5857 +5861 +5867 +5869 +5879 +5881 +5897 +5903 +5923 +5927 +5939 +5953 +5981 +5987 +6007 +6011 +6029 +6037 +6043 +6047 +6053 +6067 +6073 +6079 +6089 +6091 +6101 +6113 +6121 +6131 +6133 +6143 +6151 +6163 +6173 +6197 +6199 +6203 +6211 +6217 +6221 +6229 +6247 +6257 +6263 +6269 +6271 +6277 +6287 +6299 +6301 +6311 +6317 +6323 +6329 +6337 +6343 +6353 +6359 +6361 +6367 +6373 +6379 +6389 +6397 +6421 +6427 +6449 +6451 +6469 +6473 +6481 +6491 +6521 +6529 +6547 +6551 +6553 +6563 +6569 +6571 +6577 +6581 +6599 +6607 +6619 +6637 +6653 +6659 +6661 +6673 +6679 +6689 +6691 +6701 +6703 +6709 +6719 +6733 +6737 +6761 +6763 +6779 +6781 +6791 +6793 +6803 +6823 +6827 +6829 +6833 +6841 +6857 +6863 +6869 +6871 +6883 +6899 +6907 +6911 +6917 +6947 +6949 +6959 +6961 +6967 +6971 +6977 +6983 +6991 +6997 +7001 +7013 +7019 +7027 +7039 +7043 +7057 +7069 +7079 +7103 +7109 +7121 +7127 +7129 +7151 +7159 +7177 +7187 +7193 +7207 +7211 +7213 +7219 +7229 +7237 +7243 +7247 +7253 +7283 +7297 +7307 +7309 +7321 +7331 +7333 +7349 +7351 +7369 +7393 +7411 +7417 +7433 +7451 +7457 +7459 +7477 +7481 +7487 +7489 +7499 +7507 +7517 +7523 +7529 +7537 +7541 +7547 +7549 +7559 +7561 +7573 +7577 +7583 +7589 +7591 +7603 +7607 +7621 +7639 +7643 +7649 +7669 +7673 +7681 +7687 +7691 +7699 +7703 +7717 +7723 +7727 +7741 +7753 +7757 +7759 +7789 +7793 +7817 +7823 +7829 +7841 +7853 +7867 +7873 +7877 +7879 +7883 +7901 +7907 +7919 diff --git a/examples/store_primes_in_array.pas b/examples/store_primes_in_array.pas index e4e7a58..e51f691 100644 --- a/examples/store_primes_in_array.pas +++ b/examples/store_primes_in_array.pas @@ -15,8 +15,9 @@ start := 0; stop := 1000; + load_libprimesieve(); (* store the primes below 1000 *) - primes := primesieve_generate_primes(start, stop, @size, INT_PRIMES); + primes := primesieve_generate_primes(start, stop, size, INT_PRIMES); for i := 0 to size-1 do WriteLn(primes[i]); @@ -31,4 +32,6 @@ WriteLn(primes[i]); primesieve_free(primes); + + unload_libprimesieve(); end. \ No newline at end of file diff --git a/examples/store_primes_in_array_c.out b/examples/store_primes_in_array_c.out new file mode 100644 index 0000000..fdf83dd --- /dev/null +++ b/examples/store_primes_in_array_c.out @@ -0,0 +1,1168 @@ +2 +3 +5 +7 +11 +13 +17 +19 +23 +29 +31 +37 +41 +43 +47 +53 +59 +61 +67 +71 +73 +79 +83 +89 +97 +101 +103 +107 +109 +113 +127 +131 +137 +139 +149 +151 +157 +163 +167 +173 +179 +181 +191 +193 +197 +199 +211 +223 +227 +229 +233 +239 +241 +251 +257 +263 +269 +271 +277 +281 +283 +293 +307 +311 +313 +317 +331 +337 +347 +349 +353 +359 +367 +373 +379 +383 +389 +397 +401 +409 +419 +421 +431 +433 +439 +443 +449 +457 +461 +463 +467 +479 +487 +491 +499 +503 +509 +521 +523 +541 +547 +557 +563 +569 +571 +577 +587 +593 +599 +601 +607 +613 +617 +619 +631 +641 +643 +647 +653 +659 +661 +673 +677 +683 +691 +701 +709 +719 +727 +733 +739 +743 +751 +757 +761 +769 +773 +787 +797 +809 +811 +821 +823 +827 +829 +839 +853 +857 +859 +863 +877 +881 +883 +887 +907 +911 +919 +929 +937 +941 +947 +953 +967 +971 +977 +983 +991 +997 +2 +3 +5 +7 +11 +13 +17 +19 +23 +29 +31 +37 +41 +43 +47 +53 +59 +61 +67 +71 +73 +79 +83 +89 +97 +101 +103 +107 +109 +113 +127 +131 +137 +139 +149 +151 +157 +163 +167 +173 +179 +181 +191 +193 +197 +199 +211 +223 +227 +229 +233 +239 +241 +251 +257 +263 +269 +271 +277 +281 +283 +293 +307 +311 +313 +317 +331 +337 +347 +349 +353 +359 +367 +373 +379 +383 +389 +397 +401 +409 +419 +421 +431 +433 +439 +443 +449 +457 +461 +463 +467 +479 +487 +491 +499 +503 +509 +521 +523 +541 +547 +557 +563 +569 +571 +577 +587 +593 +599 +601 +607 +613 +617 +619 +631 +641 +643 +647 +653 +659 +661 +673 +677 +683 +691 +701 +709 +719 +727 +733 +739 +743 +751 +757 +761 +769 +773 +787 +797 +809 +811 +821 +823 +827 +829 +839 +853 +857 +859 +863 +877 +881 +883 +887 +907 +911 +919 +929 +937 +941 +947 +953 +967 +971 +977 +983 +991 +997 +1009 +1013 +1019 +1021 +1031 +1033 +1039 +1049 +1051 +1061 +1063 +1069 +1087 +1091 +1093 +1097 +1103 +1109 +1117 +1123 +1129 +1151 +1153 +1163 +1171 +1181 +1187 +1193 +1201 +1213 +1217 +1223 +1229 +1231 +1237 +1249 +1259 +1277 +1279 +1283 +1289 +1291 +1297 +1301 +1303 +1307 +1319 +1321 +1327 +1361 +1367 +1373 +1381 +1399 +1409 +1423 +1427 +1429 +1433 +1439 +1447 +1451 +1453 +1459 +1471 +1481 +1483 +1487 +1489 +1493 +1499 +1511 +1523 +1531 +1543 +1549 +1553 +1559 +1567 +1571 +1579 +1583 +1597 +1601 +1607 +1609 +1613 +1619 +1621 +1627 +1637 +1657 +1663 +1667 +1669 +1693 +1697 +1699 +1709 +1721 +1723 +1733 +1741 +1747 +1753 +1759 +1777 +1783 +1787 +1789 +1801 +1811 +1823 +1831 +1847 +1861 +1867 +1871 +1873 +1877 +1879 +1889 +1901 +1907 +1913 +1931 +1933 +1949 +1951 +1973 +1979 +1987 +1993 +1997 +1999 +2003 +2011 +2017 +2027 +2029 +2039 +2053 +2063 +2069 +2081 +2083 +2087 +2089 +2099 +2111 +2113 +2129 +2131 +2137 +2141 +2143 +2153 +2161 +2179 +2203 +2207 +2213 +2221 +2237 +2239 +2243 +2251 +2267 +2269 +2273 +2281 +2287 +2293 +2297 +2309 +2311 +2333 +2339 +2341 +2347 +2351 +2357 +2371 +2377 +2381 +2383 +2389 +2393 +2399 +2411 +2417 +2423 +2437 +2441 +2447 +2459 +2467 +2473 +2477 +2503 +2521 +2531 +2539 +2543 +2549 +2551 +2557 +2579 +2591 +2593 +2609 +2617 +2621 +2633 +2647 +2657 +2659 +2663 +2671 +2677 +2683 +2687 +2689 +2693 +2699 +2707 +2711 +2713 +2719 +2729 +2731 +2741 +2749 +2753 +2767 +2777 +2789 +2791 +2797 +2801 +2803 +2819 +2833 +2837 +2843 +2851 +2857 +2861 +2879 +2887 +2897 +2903 +2909 +2917 +2927 +2939 +2953 +2957 +2963 +2969 +2971 +2999 +3001 +3011 +3019 +3023 +3037 +3041 +3049 +3061 +3067 +3079 +3083 +3089 +3109 +3119 +3121 +3137 +3163 +3167 +3169 +3181 +3187 +3191 +3203 +3209 +3217 +3221 +3229 +3251 +3253 +3257 +3259 +3271 +3299 +3301 +3307 +3313 +3319 +3323 +3329 +3331 +3343 +3347 +3359 +3361 +3371 +3373 +3389 +3391 +3407 +3413 +3433 +3449 +3457 +3461 +3463 +3467 +3469 +3491 +3499 +3511 +3517 +3527 +3529 +3533 +3539 +3541 +3547 +3557 +3559 +3571 +3581 +3583 +3593 +3607 +3613 +3617 +3623 +3631 +3637 +3643 +3659 +3671 +3673 +3677 +3691 +3697 +3701 +3709 +3719 +3727 +3733 +3739 +3761 +3767 +3769 +3779 +3793 +3797 +3803 +3821 +3823 +3833 +3847 +3851 +3853 +3863 +3877 +3881 +3889 +3907 +3911 +3917 +3919 +3923 +3929 +3931 +3943 +3947 +3967 +3989 +4001 +4003 +4007 +4013 +4019 +4021 +4027 +4049 +4051 +4057 +4073 +4079 +4091 +4093 +4099 +4111 +4127 +4129 +4133 +4139 +4153 +4157 +4159 +4177 +4201 +4211 +4217 +4219 +4229 +4231 +4241 +4243 +4253 +4259 +4261 +4271 +4273 +4283 +4289 +4297 +4327 +4337 +4339 +4349 +4357 +4363 +4373 +4391 +4397 +4409 +4421 +4423 +4441 +4447 +4451 +4457 +4463 +4481 +4483 +4493 +4507 +4513 +4517 +4519 +4523 +4547 +4549 +4561 +4567 +4583 +4591 +4597 +4603 +4621 +4637 +4639 +4643 +4649 +4651 +4657 +4663 +4673 +4679 +4691 +4703 +4721 +4723 +4729 +4733 +4751 +4759 +4783 +4787 +4789 +4793 +4799 +4801 +4813 +4817 +4831 +4861 +4871 +4877 +4889 +4903 +4909 +4919 +4931 +4933 +4937 +4943 +4951 +4957 +4967 +4969 +4973 +4987 +4993 +4999 +5003 +5009 +5011 +5021 +5023 +5039 +5051 +5059 +5077 +5081 +5087 +5099 +5101 +5107 +5113 +5119 +5147 +5153 +5167 +5171 +5179 +5189 +5197 +5209 +5227 +5231 +5233 +5237 +5261 +5273 +5279 +5281 +5297 +5303 +5309 +5323 +5333 +5347 +5351 +5381 +5387 +5393 +5399 +5407 +5413 +5417 +5419 +5431 +5437 +5441 +5443 +5449 +5471 +5477 +5479 +5483 +5501 +5503 +5507 +5519 +5521 +5527 +5531 +5557 +5563 +5569 +5573 +5581 +5591 +5623 +5639 +5641 +5647 +5651 +5653 +5657 +5659 +5669 +5683 +5689 +5693 +5701 +5711 +5717 +5737 +5741 +5743 +5749 +5779 +5783 +5791 +5801 +5807 +5813 +5821 +5827 +5839 +5843 +5849 +5851 +5857 +5861 +5867 +5869 +5879 +5881 +5897 +5903 +5923 +5927 +5939 +5953 +5981 +5987 +6007 +6011 +6029 +6037 +6043 +6047 +6053 +6067 +6073 +6079 +6089 +6091 +6101 +6113 +6121 +6131 +6133 +6143 +6151 +6163 +6173 +6197 +6199 +6203 +6211 +6217 +6221 +6229 +6247 +6257 +6263 +6269 +6271 +6277 +6287 +6299 +6301 +6311 +6317 +6323 +6329 +6337 +6343 +6353 +6359 +6361 +6367 +6373 +6379 +6389 +6397 +6421 +6427 +6449 +6451 +6469 +6473 +6481 +6491 +6521 +6529 +6547 +6551 +6553 +6563 +6569 +6571 +6577 +6581 +6599 +6607 +6619 +6637 +6653 +6659 +6661 +6673 +6679 +6689 +6691 +6701 +6703 +6709 +6719 +6733 +6737 +6761 +6763 +6779 +6781 +6791 +6793 +6803 +6823 +6827 +6829 +6833 +6841 +6857 +6863 +6869 +6871 +6883 +6899 +6907 +6911 +6917 +6947 +6949 +6959 +6961 +6967 +6971 +6977 +6983 +6991 +6997 +7001 +7013 +7019 +7027 +7039 +7043 +7057 +7069 +7079 +7103 +7109 +7121 +7127 +7129 +7151 +7159 +7177 +7187 +7193 +7207 +7211 +7213 +7219 +7229 +7237 +7243 +7247 +7253 +7283 +7297 +7307 +7309 +7321 +7331 +7333 +7349 +7351 +7369 +7393 +7411 +7417 +7433 +7451 +7457 +7459 +7477 +7481 +7487 +7489 +7499 +7507 +7517 +7523 +7529 +7537 +7541 +7547 +7549 +7559 +7561 +7573 +7577 +7583 +7589 +7591 +7603 +7607 +7621 +7639 +7643 +7649 +7669 +7673 +7681 +7687 +7691 +7699 +7703 +7717 +7723 +7727 +7741 +7753 +7757 +7759 +7789 +7793 +7817 +7823 +7829 +7841 +7853 +7867 +7873 +7877 +7879 +7883 +7901 +7907 +7919 diff --git a/primesieve.pas b/primesieve.pas index 9dd4f57..6aa13e9 100644 --- a/primesieve.pas +++ b/primesieve.pas @@ -15,7 +15,7 @@ interface _PRIMESIEVE_VERSION_MAJOR = 7; _PRIMESIEVE_VERSION_MINOR = 5; - _PRIMESIEVE_PAS_VERSION = '0.1'; + _PRIMESIEVE_PAS_VERSION = '0.2'; (** * primesieve functions return PRIMESIEVE_ERROR @@ -87,7 +87,7 @@ primesieve_iterator = record * @param size The size of the returned primes array. * @param type The type of the primes to generate, e.g. INT_PRIMES. *) - primesieve_generate_primes: function(start: UInt64; stop: UInt64; size: PNativeUInt; &type: Integer): Pointer; cdecl; + primesieve_generate_primes: function(start: UInt64; stop: UInt64; var size: NativeUInt; &type: Integer): Pointer; cdecl; (** * Get an array with the first n primes >= start. @@ -277,6 +277,9 @@ primesieve_iterator = record *) function primesieve_prev_prime(var it: primesieve_iterator): UInt64; inline; + function load_libprimesieve: integer; + function unload_libprimesieve: integer; + implementation uses SysUtils{$ifdef FPC}, dynlibs{$endif}; @@ -342,19 +345,25 @@ function primesieve_prev_prime(var it: primesieve_iterator): UInt64; inline; var libHandle: TLibHandle; -procedure GetAddr(var procAddr: Pointer; procName: string; assertCheck: Boolean=True); -begin - procAddr := GetProcAddress(libHandle, procName); - if assertCheck then - Assert(procAddr <> nil, - Format('%s procedure not found in "%s"!', [procName, LIB_PRIMESIEVE])); -end; +function load_libprimesieve(); -initialization + procedure GetAddr(var procAddr: Pointer; procName: string); + begin + procAddr := GetProcAddress(libHandle, procName); + if procAddr = nil then + begin + WriteLn(Format('%s procedure not found in "%s"!', + [procName, LIB_PRIMESIEVE])); + end; + end; + +begin libHandle := LoadLibrary(LIB_PRIMESIEVE); if libHandle = NilHandle then - Halt(1); - + begin + WriteLn(Format('Error loading %s', [LIB_PRIMESIEVE])); + Exit(-1); + end; GetAddr(@primesieve_generate_primes, LIB_FNPFX + 'primesieve_generate_primes'); GetAddr(@primesieve_generate_n_primes, @@ -412,6 +421,17 @@ initialization GetAddr(@primesieve_generate_prev_primes, LIB_FNPFX + 'primesieve_generate_prev_primes'); -finalization + Result := 0; +end; + +function unload_libprimesieve(): integer; +begin FreeLibrary(libHandle); + Result := 0; +end; + +initialization + +finalization + end. diff --git a/primesieve_info.pas b/primesieve_info.pas index 9098ebe..0f50d86 100644 --- a/primesieve_info.pas +++ b/primesieve_info.pas @@ -1,17 +1,21 @@ -program primesieve_info; -{$ifdef FPC} -{$mode Delphi} -{$endif} - -uses SysUtils, primesieve; - -begin - WriteLn('PrimeSieve information'); - WriteLn('----------------------'); - WriteLn(Format('Library version: %s', [primesieve_version()])); - WriteLn(Format('API version: %s', [_PRIMESIEVE_VERSION])); - WriteLn(Format('_PRIMESIEVE_ERROR constant: %x', [_PRIMESIEVE_ERROR])); - WriteLn(Format('Largest valid stop number: %x', [primesieve_get_max_stop()])); - WriteLn(Format('Current sieve size in KiB: %d', [primesieve_get_sieve_size()])); - WriteLn(Format('Current number of threads: %d', [primesieve_get_num_threads()])); -end. +program primesieve_info; +{$ifdef FPC} +{$mode Delphi} +{$endif} + +uses SysUtils, primesieve; + +begin + load_libprimesieve(); + + WriteLn('PrimeSieve information'); + WriteLn('----------------------'); + WriteLn(Format('Library version: %s', [primesieve_version()])); + WriteLn(Format('API version: %s', [_PRIMESIEVE_VERSION])); + WriteLn(Format('_PRIMESIEVE_ERROR constant: %x', [_PRIMESIEVE_ERROR])); + WriteLn(Format('Largest valid stop number: %x', [primesieve_get_max_stop()])); + WriteLn(Format('Current sieve size in KiB: %d', [primesieve_get_sieve_size()])); + WriteLn(Format('Current number of threads: %d', [primesieve_get_num_threads()])); + + unload_libprimesieve(); +end. From ccad89aba5a38abdbc363b2b860fa85f4973a855 Mon Sep 17 00:00:00 2001 From: JulStrat Date: Mon, 6 Jul 2020 14:30:52 +0300 Subject: [PATCH 11/11] travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aaba7d8..fc195be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ install: - fpc -B -vh examples/store_primes_in_array.pas script: - - primesieve_info + - ./primesieve_info - examples/count_primes - examples/nth_prime - examples/store_primes_in_array