From fde243b2ec7ce87a632f380504852ab2459c3dd3 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Mon, 25 Dec 2023 18:58:41 +0100 Subject: [PATCH 1/7] Micro-optimizations --- output.png | Bin 0 -> 36929 bytes .../com/ethlo/time/internal/EthloITU.java | 66 +++++------------- .../internal/LimitedCharArrayIntegerUtil.java | 63 +++++++++++------ .../ethlo/time/itu/EthloItuProfilerTest.java | 3 +- 4 files changed, 61 insertions(+), 71 deletions(-) create mode 100644 output.png diff --git a/output.png b/output.png new file mode 100644 index 0000000000000000000000000000000000000000..1f80444d82de48c3f40bd43794f71069c3f90b44 GIT binary patch literal 36929 zcmeFa2T+w+);4<7?lv@P+bRMoCQJyDjf8FkcmPE*h=3>xf`AH025q}BAc6;wAcB%J zDj*qDM6yVhEJ{X_BuVl=3w!2E^L=&e)_?2Xs{30rj)QQ{dEa;MwVt%Lw~il^S-gmA z5re^4%sg^PiNW|mp23(iyx=E%W$UAqAMrnXEe>l~D4U(Lu+qDHmT^?i;^GA}iwoyZ zufKBkviW&4Q<0s!c8c(=H?*+0XueNCz~rCbu+!|afk5d<)(Bo?;l(4G<_yMCJ^JsQ z2&wS%42D}A^U&`q*8ZOxt?XULW@ZLEnECF^LqFZq*l>%#a@(!jwd|p)!D{DwtLkK3 zqsr7=6=I`QW6QWyRYNu#?Up{SRJq9O9oO%lTPLPlyoY-C3I*jZ;~uN;ZIG1c?{Uzs z>DkwjzqP}6Y{c;aTaMrl_!RghvR`Y}_dgAUY!I9?`^P5-PR*VD!>PYseE+r=i>@u4 z{mRvqbC-Yr_8mWL`ThsB1-M1@E9MuU?|;zvKQHwCM*N3+^np{zZuEk${Fc3Y_jY|9 z{KWZOMp`<`dhp|}h|jgGZ<1^FUn#B*{jI!4*C}@JQ(p6>2L<}&?;amqXDl%zYX9}( zU(U|F{QSMQBD?hVUis`Jzs2KRX~1-#o0vuCalGpE^jPyu=93w-wn8r}hlf&A0|)uF zo_~J)uqSW{xA?aC^XKI%vyL%v3Qz0iew@2*ko)zY3zxTcbwx_Ma@Dp@EzPNlRzJ(}W^MA`efy$L=idG@I_g-g zD&ec7tZa$T%v7q0(;g`j$Tl2mFWD8hi18a%YpG9`!(?Gmk=*peNV-{bspO=5Rg|i7 zfVfTT$B#k3Zk9Ft{Qha0%~06k?BRNw(`U}8CK;)=<=;E_rkyS8pBU-klC)1baNs~|Yb%d{fPiYePUFX)3zCd$ zL{Gh7tlW0|w zrh4SaO|ORG@hQmY+<2-J6Rc}y5pg^O?i;+gn@pJ^J4r}kpIJn zUc1e77ITYhL`FukJD4@3JYFjK^@Y8>nVDIVNxhoW^hnLxc&7r^W?tp6JO2Lu#ldrh zhiYB#+^JkDHTCFIo?DT=u)H?g<+s}`AhK-pSag9P+xXY75pv!; z+n-lfs?bYaxpHNn!$e}LLqp1?!u$LWayuL+M|-1mv$JrkHgDa!)oZ)5G*pyE4_7fNygqbb`N%$4A&Y2 zGFiDD8#CKIJy(?YisUtLb8?<<+ASjGQSK&k<+Fyvz{~l(#~)qA!$>l1+{aW(z1+3} z%P~?p{9Je19EO|w9ESClVn4AWcm3CI-f%77A}`3pDK#^dU}Jaa(4WiL+0Q*yh}X%y zgO$q>trja>9j9$cWg@u3cUE7m%vadnK4<3!ii zGu@Su(qny%B@VwXU+#MKDr1wN;5(mPCVqpsQJkBk?+D^*Tz8q&`Ajxu*i=O5WTxHY z*V+|q)!+1{&})ZlTaowbdGnWuwwDH)aX9ORgobirv+Tl7ILF2<{$3;Doa^9V-n!L0 zckYz-6+U|hYv0#x6$gi5Yms;9g2ju)+TT7jj?u}iv+hl*VPn3*4lJ1-?X5Rx&A*p3 z`}cTZ`>{qV>E5~|SL_vh{$Lq5E@wRs88>b*tjs%pV#ZuW_xVLmpFVvjK5L@Tu=ZK# zrEgQ?c3I)qu3eLE%CMRJIT3@mqH1v`&nFs|y>i#LA1;$=cig^xyL4B1sB1&2`RY$^ zTt#N@$g4jWI%7!;zWP~!s&}P-AzcS@oM95k}oO-RJG+XM}Ig zyLjo65bE){Loza}Ma~rqerYc;{?pl+OFi!7(-cQ3DXHL7FaLOhQsQdaQ_YFB9IeOU zJNdbJC&3a1IxVqR~ z{|=|fn+CJSG)rfmP20BR8z~B${h<9mjLs^x3!>OU6Sgm9(7Mp>A!Kdi>EaBvuSgo3f63G6fBwBq zi#-bTGsfE=yg`A#gJ;BnO)h-${yM4n%$J-uiD z{?#MhRU*mZ{ob{K%&wXMe7<1Yk?uFi&5p(~nh9^FL|zKA1!IfR-sAsfGMB+E1q@{^ zJtZQT>NuUI_~g{@o5aN%rhXoOIM>5T_UKVD)258`#Siz_JV{R8jXi15#J+5q-VtH! zTWo7X!wALnD<(rj-=-&B?=Rua`ws?pdd@1LIGuUobAq~Q_aFoi%<)1TScM6nt8 z-r9|Ht8T&ql17g!Hi^&vme%t5^97#Gn|qI6+woljnypmUcS^HE)N1zk-{>M+B`W*%tS7mN%T?UeC{qW%tn(lA) z$!4X3iQfXzY(i1~iU5a3M@I_-B+~KOLeUJ@id(-6ipMWrm55ViYR~kUE-P)&8=~L6 zd&f3imw0|tj$q=I-V;ovzZR{uXnFM`dZB!?!&u{5^=#mPzoOLRcLILkjuuTtXeGz- zoCn-ug{*U$QbfD99V*$~Z~L&T!=xh2_3)%|eC8Hh#q`urDSL0IoVOY(X-VlrfBzM0 z)?Bz0+fyB@?8+t9`svdd(}d*Y8q~Rf77c(R+sWQ!K#(*z$a%PAz|}@>2)K-!r`e7e;r7eLo=AF@!Vc(i z_|PH!uNNdDioeOrs%JYooCPPin@13qr>hi*KtXH{9r-Gtb1r*iyHJ4|@ zhTlEulsXxTP~D+E>tNZ1KysF|9Y3bSoGxZW~+tn*m8n^W>w<%H#=fwe{a z34xO->*vqE!8WpG^X9Wr)$^x6pHn+0mE9F1we{}ZyT1EoQ2D(i?5@<-*Gnb(pe*rP9I?mprZQPit zvjdNexzy^{GoVRD=XyZ1pX&+xik>UxsEW~4#vLqu;s7Fs*DGUfmRkXMW9sJOGFj6x z{N;-hmbmjMItjp|Ze{&*lW24V-p!j2XHR``X>yuz$Q&-0+h;xS2v_B`-^!G*|0bEc z8J|+ivjuJK?2G|SWaZ@2jSWAxwS|IFbfKs}TX2*u=eUv*tI%6uCO&TDnC@_2r5ebQ zYU~MBK>E5Yhx9E+{X%f#3-j`1unjUhZ2Bzk4hwuvHSf5ekTA4%YuM4|ZwfR1Ux#(d z-2#1leDuV8@hQ*l>66;JDpNgHM@I+sr)q6!S9|-F<`e634R&X~DRy+6aRFNDdE>eo zS9{OJrRZQZF~Etw^!`N0Y1`1y(Cxy)N_f;?#>UhwED{M);X_re`5e-}|I~}C>2cM{ ziH3?U9lq0_8<^OCVvbYRuIr?97A{Dx#l+-Ke%%QKVw9^P9VCqiu%TBhfF~N5Ru};L(a1Ra$>A zjs;l0FQ6NT_3=PP4IRg*<<(zSjd@K?I;9e0{=`UuS7rBG^<|iydS=!v+1r#^|M9s$ zp6?0V!1kK2q24;>H`Y0B0}}=J{BSM4%~Z#_8qg(X$?J+=7k(#tqFXx7ag>_@MPpVs@K-Spmzssz|eL(-J0yE*un!?>s zN7X)#PC28RS&h%Ng}KlE>yz>b^a_J5c%;Igfa#tkBozH}WDbK{fGXe{S56UW$RicLA_m0=^EOAGEAhL0 z@#1k{%gSUkUG4NMN0r0m%fM}BMpA(iLb1ZTb64qB;vH6Ua73(g{QA4cRs}Vb{9<#( zjFD=s%U7=H_k}XwSK^l$I>7dR$CjV|p|&a@v(%zq@Pqhk5N# zHv&__ZVLoR3e!wD7kMV{?!Jp3uA;fdB_@iR)IUGEVZ#Qay2MCYe?Y|1y4j9t)`LM& zDv?20EuBEJ>R>>Xphokvs-fU06nP8O{49|1Xv0D0Z8CS)Ongo#73TZ2-?CdJRy$oy zAnR)ofO$MICYe7%N;h8;`1b7^(O>5!Yk5HqN*?T1C@U-D5;=DVjCTXG8`1!~fKCih zI4wqA&1WIy<>j94?vIEYH(E7MtG65~3pzXk@Ml~e!o*!xMpLr<{9cHJfH`yKu(x(L5CLdYd$-KC!+`&tZ!ftJ}@w_pL>h|eW|jLe*Q0bq;iC>9KW{A zcU`+*4bNcd6ju{-V$~F0u4%WRjk_PM_M!6Zt|9@sWGMrDdDqOC6sp-#fGkxIv8u46 ztJ_K*sCT@5sBCYaaiy;z(kyGd{qafj%a@2QMh7l=i1yxgr{ zH}f=p8`nrS)kZ^#)-Pbudc;>(EMFcBq@d&I=t%E~n=LXevR&l4X=7A*sN77)haVXO z>uN0uH5o6?43(;0juA6!YH;_|^YX_}HEmOk@@#2s)o(3%P}5lv?luVg&&9ffOZA;> zH2Lcx_K$(awN{9b($LTrqbO{$8~rSecX4%-oXF3p1KoM!zt{W@7@YU;g@if`MD^Q|jx%c4K|g*XI6s=W}hsYCIZY(0BtjF46oH`|)R~&1kf)Sdbit zZ?6zqvt|t&-sRI@t8@f+nKfM~3&)z4K6UERJ+$JS($dmSuvq6%hk5hnxdO=xfPT*)nz$2qwb3YB7dDBV2@%iM@4IglomH63!N}fAUh-5hB_FxSs>SdlRw-DrG>+ zn(A_6A}6j-o(Sf=eED+0qD8`JHQtZ=QQKUxX-c=9NQ`K~(gYFV*evTQhz)=CDVIyk z{qf8|VC6H#K0?wLFFv79xXG%o;mvBZ3_brnmp10~EQh}G`t@s$mX;Rh;NW0l0c>mb z2<9x}+ilh)D*5f}nIVHxaDZ)UF+OFF56=Gt6_+z^=9utgtpu9PEQt&V2yiaYf2P5C zSZzl+^p4Ms={45lZQhHQE?r8WmmXoRtN@rrbgMmpHG8ks3C?!YD79EWJ+Fr|O3G=% zXA3!4cd&$g>%UD6DI8?Aw6$60oxK1-#e^PIJ}}_y?X9V)u?8-_gBtBO+0fHb^iU(4 zoe1o{E1wNL`83NfT3PKz>2wV`?81fRlVy_>p3c;<%?HlN<7gEyFxX?zVQ77-9 z1sQZ^U#Jx(lIxtFp5D^gY52oWKXIV}MUm9wJ9#qOvC*(OE0eUNZzn@$9=N)=h@g0# zCM5=3t6!3YuK4LdIj5NlVDCG`&I0YfFvE1@7%zg)2(#r_7jrIVFsv8+@y8zo^kX%i zzN!vwP>0s}?c1c;G@k48otxz}zz21lrY+ZkusT z?|Hnt$@*Y_)?{3)+#JS{kN4O7E$!d=@68g~U0SQIZq+?;!Vfz7=H0t@Lt@qPo<~2Z ziJb-Ih6O$6tU;d7Uon5a_+bn>`Su@w_~CsT8+}XuGkRD1@h`P$Y~qZ$%Nx9*!-Uk& zyl8A}G&zae!eHpHT_vES^4o7$$L&@=TY_&j84wW6{JlD7u?l@FgYhr? z8NDU5CXVJYd_>~6J;Ds|25pcvZXzi&_vR7w3xSL2Z zeB<>&Z{zGucW)C^{~>_Ko;&c^-&cI+Z%5?g$B!4Z3lEMY>a4nO{kwO??SalrivmFW zzK4g0y}kV~V1+T7FcG@gqV#ZxlKJ|=1^U9z=CV z$gYPR_uH*ow|I3jzRp{_I%WA52eJd*+kPCGX?YsZ|Gsn8I_p3H?g-FT{7fbARs@^} zkbEsd<>%h|Z^xBa#p}*2Q<)qPtY3fql|*{T+J%jc+DH9F%TSN`?~0u*T!BV@1QebZ zr8R5ni=0bu_RP2R0H<#@@VvH*imFIW4|{;CgG64bnHcSFjzMSN}Jn7 z5h9_8f-<@sRYsk^qVN23QQ2+MBOIh_A$l)y}flWKp*yF0^-Vt+=p$ z=ex(Okkz|QBg~q!2=$}Y4mX&WZikP+YHexRpsTApbdV)3A;Di4V^)ACdJje$I-P2m zJm=p1`+Lx&-T@&FqiOQ;@EpRv0ub}fU9c`kP!!_)NbG6w#@ z3J-+@Lez%Evw#2oqyBpofB*e=surM8G4SGyzO)t)hkoO>E*>brXXbrtcQ-H7sQ!5@ z!C=^K`OVF`xIwA_Mu}GaIxDv;wf?Si`R9W-mQ>Ar8OZv4*~M`=Aj3{D$f344&!QgDWt6pIf5$0Ge?Q7 z0*k_u_!AGmRb4BFYB2Tc|r2MUIMy0__3!TF2Nu~a;zqsj@9DdKfG~gAnH_C@5fsoJ_sknBZ2RZ~KAy7WJdzrR{jFuG6$C z><%Ls197_9abLe$qq+Iy{K{Okc(GS_csSHc)hv4(5Y8S5`Oo(p1A`LPd-Vge9JcC; zUw%2YOj;%4cuRm~@B60*Arp$Y4Sx*>qiWtQD8!cYu@3b#9CpO<$+7+#&}5)mexh!$ zV64{aC75>{<8;2)aMxxY7iVT;TWH&drSwBy%yxwtoM4g#zb`+%Sg!9!d zTp7&CVyCEinm^N}{Q#r-p;c4aP^pwtjb?4Uc6u1ZcH-tR`J9SZLbcK2J(=*f#}4}75lK&LqqFJcLK9mv|`(OCdp^0 zIN{g|MtF_@&fdFB8zLawcA;pG#k>Tw-+$$^duC>v3d3sAW$r`hLnSj0vkFV4049cH zrMhM&u~4>|HD$0*!&sY9UYmb{Z2b*n0pOd1@%)-DO@i80fj~n{IgbtLmb#C@IAsh$ zCQ36Q?AuuOOe89X)!MVmxVWO=em~rE>6Lh){>-;&*<;7l;0E(-M*&1BRe_0EJZaLD zQJawo5+r-%$UD^hwojinF(Dde8aR-y_%YXI<%$)fOUc#!1K=JVWO45;7J}X z*czDswr_ObCURQe=e>OSJ2}QCXA3(;HSl0olsWbQ_mk)y#&<7_iA1k^OsRi8oDj%UUiLkM6d~w{Wkdmi_blozrBC=3BK zV{^gs#V9QiUGxlWm?~TviTy)@l}@rt<(9177Xt0GORCxFX9nY09LcXB3AbUL`Z^yf>hvQ@t;h2XYUUi(g?EcL}#$u3KT>z z{qrcix9{BXg^)az1NYTH&N+1rtUVcta zj=1chG>NWEfJveQfIzrm$KbkGS~WWuWVwb}bd^Jj_J4DSGZ;&-2bN+v40*n{>ZzB{ zLX%J=>nbBNQw+VEnY^{ktSZW@$ze=;CI1N(YPbLneC-xCYj91E(WwkU5?~o9LK7H) z#LzrACLx|F57_>E=Uj#7E~^9z(Kt3JAJ9-7`67Vm}eO>>2+S4Zha}39<&w1e*Dx+BE<0w~dnC{xHs;5VzjK&8l047j@xdFCAyL4< zA?V|gKwJARef;xs$J^M5h;0sE3bsDq`E$O~0{MYM`_o5b-o{FVKX7W+aV!>!5B?&W zzbTnz$_lBFQ`ljn^~^LNeY^555C7}_Z58ij_AY9Ba<-O;z)|SNg{N1pWi0KxH-C$> zUIfqqL1aq+COjZHut&$raECC|M1Jiw6qmPBreNCghL8`@JuJO5$)He1GsZz*i)oB_T}5@wQdHjp+p0mGA;y_wSEt z7{8oh9z9z1$B#dIvRFZ6p}lwf^k(tVKuK)~WCULq^UkLG#QC|;pDKs`g|%@M;<>P| z{GvsR%CR@9GVQF|3Or=U+=FMla`kHCroZDj2qLJV%%V;w>E--%7)dr%Xc7)Dw-;|; zw{9K14LUO6y@rMc^z#kVUq89EpMivo?R|yPE!ZZi09HqR1Yc%20JQsw7~IX8?Awor ziT~uje!UF_6a+A?{a0eB9ALRef>8SjopH9|JkG4kut`A2*n$`V@I?gr4SWP4vut?k z6QjM+NT5)D?8v>169}yp*8>m41LozIl_}yiyPLDK5ARvQ$r(xdED;5?V6Z9?c{ZEQ zcN@Tyj^d&LSkPP&b4Q6y01SN@8Ulm#Kp7H_x%MrjKHVxF53&vLlo~nmANT<=GhF~} z`f_V)h=SC#3P5Jz!~MyNcTk3up>OFXD(EYy_lNV+b#drq+rgiqf_K*^$CKoW@QooP zNJ1ARZv)F~entb;C24tZaFC?fkoqC@*0&F}NJWH+fOfI3E2&0D87gQJz)w}2wibea zl_23fOh6D)n&CHwOizv(=euv<+H>&{{x8pL8TS)C9|Vd)93C{N{hlCxpJ?;e?XxwZ z_D!;AgyN>&+5{OS)Cd5QC~qDJIDH;l#&6H1AYeJ_mf(W2EK;Gs78D?`)!?oYA9NVZ zT}6nK?=75|HK{2nhOn*ZdE)9#mmG$&fNHym`U3Wf-#*JIfKP*`Gp}zgClbtmBJs%l zC2QWnqgb(Gg+=LDFaDbLNN&#k+b|4LQuYw827yq*k0&|JI1Y`{F5J2E*n{0>YWR9( z2y;0_nVeV7sxQy>dEE0A6PURU55jor>mUR$A7tQ2mj$)d0$B3qfz+T3DnmRW0qMda&=UXF0$)-fx) z&mLJ#Oqe#h=sklJWip5?U6+or)A^#CCbUbH2Mpe`y;) zd0R`%V+hbgV@&=jjR=zauON8;GQ- zK=3zz0JP4dd1t2&)&!tgTW>EvdXoc+5U^*8!9z$+uutwE3lNV)V=Dxegz%z*r~ugO zW+tHXJJjknsu^+Gvh?+tj(l;}U2Q}Ouut`!<2fX9i0wJQ3m;>XNKEA#+**CO@)A?~v zP5ewxFYR+iL+P2t^5ydrG~6r%;Z;9yaglSLh6ips*Z`iE7`kqg!|7_6S>&)#av}+c zF*i3i5@a04p>$X`R%85$=NBRgz7f@-=qR?@(B6F(osY2eht9w(!=K%8CwUAEI_$V7 zkJZ?R*K{1K@pp8v;##BcP)vLhIFU=}^q+A$nNgs+omJ|(nFc1%SiohHt=|_SMM)KW z?fxtB*z*()ATr|$M}ztyf}u+jHHZm=5=_U*Te0RSn4J0KoOxG@RF=E|KXzuuje^W63rR#~iW z_P4vqtq8gq4SvjJe^~(T)Yje}hI(eZ_Y+O!?G!yj|IjoVvgIZQd0%f!f)Lsk=mJw;+%Lp$~~5^^&gUl>zXZeoJC zNs6$?D#I1lk$nZ_p$17TOXxy)&V7#q<8inA_FKiN#p}cZ2zCNOsK9pudpy;*e8q|o z6xtpL5 z?o`o+nQ=uhX*^p(TpWR5zB-;|J`9DMd0ak6%CUlhXu?oCkqwbsv~+0=ikTNW$_>Xj zG+tiRd&2lwdt|BN18ea~Od&W%iXS{0;u{3euulv@>AK%P4JKV4_2e(WE-b9}y-Zmo ze*k#M0gpP76op6xB~q|b9=J)MkC6z8^;wN<4hd%Tf6II89gqTzlysP&a5&)yh(qC! zqy#EzfJwrEO$q5lA=rptqL)4%f=iy)kO#T*%$qy#g>FzWB3l9rz<0@6KDIrP1w-v! z!ETaBdIVuvi6YPdeme5fZ5D^VSpNB5JnMRlfP-2G^vNg`Yd>+DXH>t4Wr6>Yx=3ZK zM;Q2VfGwrRh)3Zo|6Z#T56#hQsHN>ZnR2RZ3@eQQ7?DHVP^}Bb@1Hz|9x4W6>!iM$ zd!br^%|3~0rtZBYhtXOC0Fj3C>1Ys z=FK)VU{V1uXmbz9ug8Z2yfEN63S8>T7JLjp$e7xlX*YI1Iy#!HI?}&j#?kgbQ-AUL z@ryIBc=x8n4{JUw^4c-GXrP?5n>>E}*y!D(Ye=Y^%~?dZHzuXVi05kT6WO;Fx0Y?m zPlPH+^aRUO9h#Y_!-U0V9-aua+~+%IO`EGXZol}!w>st08SPA4RZ0lpDHE;&U){!@ zZ~CAq^YKH7^9Umr|2(+l@^3JAKQ*0FBRMGXSbYqbgp9uPrx7 z-QYIxWxVF!OCNgRJuFh%?A41A>bX+f`@Mob3calq%^USN>1Jk?zT z@*@c1l#6=P{Z2Cp zmfNj==o?9Gom8pLU9)BOB5wLiIq6_-=sI#{D^{*Nix(1S{C&e@S}_tq4TzKzF~fH+ zVBT4O_e~iCH~F;FDyug`XiwQZpI(abU*^R$m$*25WWMSc?D~fph;TE&cFLukH(pR6 zP(E29fNb?CzlzJtPtX9~`l5V99wFI22Gfy4<@J8J)@hz|FNgDE@a#@3447=9^KGs7 zeV;qa7e)hs%u0Zi9ASJy7LS60!uZ5Q9h_AC?^fZn6%fmzar{|-dEiiffW-byasf(z z|J54wDQHpfT^R~OreA048{=OM!6WuF}B9NH!0q9mo@8`RlgaiZSLqLj@QJ_`REY1^4hAZmW;EkH^ z-i9W~ICTaapaM-$6%UVD4opP$8_6FCS)vnqQ*(njy&W$Ndq@%dv8}&99$olI+S>c% zGXkl;3t@UtP8jc9^!Dz{5ZvGyXUxjvR3H9OaAol0VHgP8^ko-pA`Q77($U&_^R~iJ z#6gbWos@yE2sarIe0bU3i+-hypquFF*9(|R#9k849Ua0n$1$Lz<$Znr zi@=8{(|=H24RjIgTyfS+fXALeX*N6v-MnrCDh~M;%F`j_d5x5P8g1pWf6LL_wG3OrvgmKDCO|GFh^n#nbu)h zwB|2k(li}HTW040RuDyvF{+F}7hY2P*$;Q)nQ%MI5o7C)a|Y7ID4y+{es>Fg`LSFWR8z7%R)>%7;z^}U=$GC;0rbw?__BH zO2)bZ0}Bw$3&4crTa3O@n_NJ|FS5ukVeZ zKv?^cXUtf=8ae%RRRNJoKOHA@EDei5`Zd^(C8v`to-tSim}6% zIS0f3%x|h~s%{fk+FjbLQXa&k-DIwLes@J{=ckB_-Y4xlQKrnq6^gep5?I9?{YA#x3Q3JlwC0Qc1)J;SYww@Pg$zf|UsH5QE=` zKJYhSs!xkCsILCBwXM(anI)&&n|JyTQ8{5`l;tf9nTjroz5ti2{mi$Um<^>$b7AHA4MxOMW+#?|*aD$}Vc22OKM7%t3&m91OFP zb26d$EYzG&%h(s-TG#J5{U@_}rfOvdGKUG8 zrv<5l{d~GvC$VI0FIn+ZU>YCk~Z7Ay0#;rHk+V^QeiU*RRJ_4QNQ3{O7xC_6E`PC{)N3nYKyLnl+e4W|oKiF8IhZIj@rS^VYpYWZp(dBi^mCt^(2)5j+Q-ttIqy*ez2YV?3a zXnkPA8rUk;*qwY3l#=6tPD9~(5piXSLUC*Re?liDtextNj@?74VwgjHwyuC#wjB?x zR;*qfO?3|wJGO0J>Yn%SpDQy1ry|b?6%CUgF)+z|W!_>Mch=p<3QdCfzj*CF6=WfH zHIF7ZOkT0tf*T4=Yzy&e3Hz0l*RoD`J$|WyhJwN|ZG8`#jgA^R0Zd-UMqG-V` zj@V)9Cr|n#Wf%i;AAzg@H5J#WS@l(Xk;3qrEf_kj0mG%dYG_EvHn>Z(1Y=|ahZI{I9-;x&lE%m3M7p7HAa(h^*1YnUHlk@hRLFQ z4AP5`_$YWv)*q!Vp+3E__lIWJjmv+B|D`obleT2|KX{-OrZa}7X7v7v9%o(P=w5k* zBdI^ra8rXgNwSzNoq)65pJx2Gpw}d_hM>;Ch0{wsVtQ_^)jQpbcmmxC3hkK|0SVJw z3f7fN7D@o;sKUDQ8<|kxAU-G|t6FRV0>;u8QaXh^0_cx7iW>Cq5!h5akYuh9yW#8% zp#Ooui7M z)7&D+T({tiu&;2URx)I0{r6Jfy6mM#w|E@Znh+{CyP=7BFjzF9yPNHm2}EHDQCJ4T zzxeS+L6SzaKoP&^)Nm6Hxj$O%{s##ph9mcoZX9e~@kWL+B;?!QyZeltZIp>}j2bFz<9U2W` zn&z$-t=f4(XhSp)=G3=|iH!v0EnKkRINV(^4BNS6;c`@Q@0;xUC1|bz&kW6OYF-T| z7njkX-w`78E7z>ygMZFc!h8$3!R+Axr2!HopkqvG@2z#^YB_<-5W@7UcU?FR$<{S`mNbaVFMWP2elea-1T;HhQfNt` zcr{}h-A5qG#?kFYF19KuXFDzj^rIV9JE--x~M1(SmAyK5DymzHGRdS?;wxd|k;RkRo z5DF@D8ZQ)Y)UoZ_OpU{;p&gbFta=H`qaPj6C;6{G|BTSfaYhu^bMX!! zP{!4*%dau3y+Tb3u9^I6{Rra3PuCU-^CJw33d2riMpjn#nd0HuyDQH1!xroHTRaLr zrs{EU*3Et`znkPGlqODT5A?__IT7DaD|xnW?sEMTsKP7Pt~DuRU%NIIo1;ErZ{g(kSWp^o)#__iXccaq#e|Kje)YQl65Q4#{B$d^30* zHFz!HYr~%M*_X49_y<7URlS&2_Eo1F{mPoF%x47@2IK#nj`Ba9AoJmxJa*iVi&nV9 zXvK{Uho}EOjpzG=qNiAgR#}DiOuQKyhY|psD!eRcZST`WzkeIA2WD(zU0!(f;(Mt} zV>kh4jo5&n=VtJOMd3APX_>|b`T=p@@@xe%&JeJ!Zu>BY!kp}@R)r&IqnU`8mxG!3 z{NF9Q{6s(ioH3!1h~Ktt-(DcSau%}<82$p~4hOTibU5qj8_t&L_0gODl>*85zEB|% zs{!{N*1~U?6}k}oy>3{GKC4Yb$Q#5=5yRIjxVhs1t*KI*N0XL=$wQ;q5|UfPl*<(b#ZsfsQ_Z6!5{xS0x7{7l80o0isgwQKQ-h? zrOmT8eJ^BrO2E(Vg!g@9Y~LCb{13qj-~}>Ykoc-i!8uM8PRu{I zNgm2R?AvE&C;KLaE&@`uS&Ne2vr|mo&U`D0~2rmPlYyvLA9s!F{4& zKwz_aBic->6}ZSZSpiE6k|_&j9+~yXIhCJwf_%U!a;_6oJBsM26x!w2&1wiLr4kB= z0pEn^7M6H=(f+B{+J6bT+6YF-Z2p@PvUQnu z$%NjKqK^WF=Db_>AHx(U5)En8V*9RLYA}tDBl$?f!OY}rK|DV#q%O)4x=qB)uSr9S zA|7j|v1__je>Kv7#d+=_h=fEU0ZYkh$I0H^nTUf^jD4?v1X6ME11M+2WRZRXkI@*j z^6h6ZH?(cz#sjR@o}Osr*t)?(tYSX_kJI5cqL*8b0Pgo7*;)DF<#n2ZXO`pPQ63wZ z=sa{lx*)_`jF*@ouN8%a9L?iZ;S`ZD1o$Fw<0-bef9SFR+BL=ectxL3R4cGfUX ze=vl=N$DaQl4#1bqpFGZsqQ?19}EH`L$;~0p&HQ=yh$fmn7f7Dp9OaPnFidoV1kt9 zqj5(%{ff+Wj0dvy*CM9bx3{YY3Z&SD_fOb*3#J=ezxix&$n=1Ch_Q+Mk3$#1M=41` zT@6rWor4Lj^8vR8HTWRd z9$JaeH_E4)(GOsgh%_%+xo(|P-q>fypV&AaQRw6oD#2J|$0Z#1aZjNgX;xH=VRzhX zSR%mip;&$AFC#hcNhBjNOL>xf5EA1uaT3mnC#SCI*tD&L z#v2K(0T*EBYz~6gJk?C&zHJ5_B@e=}E-39pW+_jXhk|5Tc%Wkx%{m{t_3LGr{n&~8 zMlM+0m~VVMtHQrM22YWi3$`8w8i#uK%+RzOb#S!)GOT?%r3@*DCh^iY#5X$v?B1SU zM?8#$!FvbY8mFJumiNARk=7fS%pKbA;i#psW&YB$A38g?$;jk6CH3bBgWy%gYN^At zrLi-dh4Tn59O~(0i0^x@V za5yon9dsZHEhYF2j5uOC0ey;836vGFau|U;Okz0@Cg3%-ur0-54EwovfNc|}C5lN= zW>)bgX`Ga`nA$qYqM-YHqjG_H`bZk!j=1AM4e0(@RebFNsSk$Tk*zum^iR_~XdA4@ zeTYOHNs|!f*}3zrc=OF9R0I_0vLF)(d*C*yrP1d#D;_o_#C!m$rjkrG4b+3;XL$Nv zn7G)^q&ztZ^>`qPtV*QhNz_D{O`6S~V*2CtydSq=x1CEzfhP`uGM#dP|KYjCq!mC?zykL|+PNe-gAJk@olyXb!D8UU@01TkA1_B8`7oyBJO2ik z05!n~k{7JO&V{wC&mrxchu1MtpGD^%A_srF#zd;d0)blu>VGGYi_HEoQoTj>^;&qr zYG^RQ@NrzZCF;a|yEEU{*Z060qzj|fhPsOtT_fINNOBrZilC@Ie7r5l@oQB^Q;fP2O-edW;M!=%fQ%uQk? zwqOxLDwM*9t;@rt02EFP62(D|UfUE8U_hD5r_GSbCEC@oSSSpy-=z$zO=8}O*EliLM+ZAfo|kSz2=GokR= z*uaNfY6S&p*w70DOadK7eJQB|!FUI_5NR}+B*pa6>3O zKCm#&CujB||Eqt^VEl)(Jn1L?e|+BQQhh{XW+UAG{&Xsb$@?cSt2cjNpzoH!9H%HV zfHTm@@5KF3w4z`s@!~wLe?Bx{oI!g*`-gxFf2S9S>w`NQqawGP&;c08B%!5z58E(4 z6nK7fzUd7{L8K= zvb}I*7RG{?zD5F5d^b{=tLbYD&9$J>B~49|Ifg_i^f@eNdFgLzGSGW=Xs0FO5GVdR z{HBVDl7HI=CDlK!@9D(s581v00~euNGvS1(15=<#{+k>`y9v`+)o2c4_FpglJv~4w zB9PiYsl3-e%=kBHE%c!V`Uf0%drtqkP}odGvS4sS>`f6-O)BRY+aWQv2+ zk`g)7v&$la+B?mZP4XKzZK5Vkhn|811Im^IyN3^-R{`(9*&-KlR9Hbx zjXL^r4OmX`WVl z=F)`5=tMvK;JHgp=rZ~EfHV(=Q)1BjdEohjZWJ_Z1&_rWsK8*P1oq9F3lQ6_$dEuX zgf$F?gb`8S!0;N<6Ntj&P{_ZJto7;|`+NxlME7~HaC+|6(>bn~@GHWs69|T_|MzTK zfRNktedwy~l(B<7@_-T-G~%H#4f~}T}&mU4>1h3nW8a>XC5W@983Fw+cG4Yk@~jFlEj!Mr3~oB zmbef@2MaNVy;GNF8BJ3=Kn0*)axByNyyd;ixM(V(18t=mhkraK=N1BiAI>x-d<5Lr zl<FWjigv51IoS>IIk~`1kyI zDO4rm&v6*hFz8$d3l(7p)D<}#IIN0L2F(luQb$5aYj;HbBMeF`zlCr-h(H3=h;yd@ zHY>1^j)jw!HUf^MyfxM_W#ejVYtJL6ixkJ8c6<45OQrv zD#a?7$3jfTbObq@@cuyKitYJ3N&~$y!kc?Z9j6qdq+`pPfbbu19tsN!DcFribLn+$sLQ&$D1nrWZ_aI5sh% zKm>>m2u9(AEo0AKPjebD!I3o4B14A`=Y!fo2gWT8XQz8>eTb|F+s~Wi>9`mq_hHz} z64a)MpK;AjidEqFPdX(5jFo3Qn$br(!iBxG83Wn~m(!3umxOI1Cax|tJwKDTgl0kz zGisM1B@_WTp^%#iM~$D>m}cpcSeut#9(4kd1_g_%wnaS|AD*#6PmS zFh4@{j%p(yrUxb*uvD%z*KCu>k#%}Vu$jWlsG=a1P_5rV_z}t2SxvhHW`owrNob~_ zPP|Y zQ7Go!3&B7cYY59Vit=M99x(8{EGE?+I)So&C&Pfe3Uq?h_hTZD4`pGPg1{!^fnqoC zSdug-b3V>NQ)QT2!a;>JDosa2vg;N~As#{dfSx$L1oiAV?fRhSfZ;>_ya)==kQK-t zRIP3=L@I;`9AIEDow&z*Rte~aE0d{N&vTPF1n$|b{Ba`5tp`gYFxKU3SGo6b(h z8f>LdTgk9TRKo3}X5>t7RtV+=Nbm z+3D9Ax)b7*H&DkFBA$q09w^M)NH>?T9Zu;_#T!JS&PJn&LXNo410*$TupwT@!zAw6 z>@@T6aXSnLm*+Ih0YPc0MK25SA7c3P>pGeVfY52eIHl8y);99gA@wa@C=1vzBq(Am zNEZ>ZeK^RG2m;jFZV2#pts~zTg0`E(p9MHtnAGl0yu6>3Qx;7HKw8`edypy!qJxy5 zgHn4E=QyYI560nB!w=_$a-HY4t_Jl7!4Kml!VofMLl9U+P!}t}>cNaJW2~?@AP?I< z6?Xt1fsaYc1aK+|v;vPi8uzMQ;AUZ1#qQ%C0FVh}5NP-slNWL31vYu&m)Hjn06D&Srv^y+^TZ5Y((5d6Km`v0(6dM^JZC;tC7&kpznTGT8b zK*vBC(Ij;eX(+V+EwkY;DseawDL*&&FwO}hO$s>X>?MB`@g3;)fM*z=rljWLxS#Ut zzWcZO1xT*4)4_-Izt#MEpEaf+N@ zfD<4sYJC=g1w*PEa>Rv!QaBw3*&kL2&TP$7+dq)l^8Iu(>jUC5Q$ticEukAS%K?0o zVA6oU_Qy@~z$nLISrrvSLaGbJS99piZV-i=_;lOB&!G!@V2%@*OANgST;%iJ>HmCy zO4VG2-8h#AzpM{Xt)(<3GB>dlcEcbMJ`x@I3XH@*0j#JDfl?J@2%Q54`L*y>v&WM$ z#5d4*E}hE)?~xTk2W>%eC8BZo)a8FW9Ha{R1E=;}@wxxFK`BTQeg4cB?w5$e!v%Km zP3vl028f_DC2%f^Te|!Q-@hkg6mC-1i{?rp{LZ}6umQm6lqiuRvHM9ahuL9nK6Li1cux*IVQz&dK z8$Rwf{=#_+2{JVA1#G&72``x5Uj=~+W;vETjU1EokF(W}qhZrACYY^w?floQU-<0T z^hqn5U39Ps>CNas{{H^-&!rF)pTCql(eiw02Bh=z7*VE`{oJfMZk3Mp?{xkr#0NM^ zq)+1kbYc{S0(dwNIfAnGAtCS6Ea*P{#y(i-ic^6OqU+&kgl643v}+Z_9m#Y;hT$Ft z5GgoEBUXF&j&D$Nar%V$_UG1;Se!JjK{^I-9G%5LrwZcwJa{Pbh4bjjpz*`Tu+#FK zl~D6fUy%H7%zfFw6KAndDf$S%9$dc)Y>LLtGn_!*0D5SM6T$+{BQPSa2{sE(w-Y`g z1deDJ$aL{G*#JI-11WV6L6-iN2kvW6Fw{=>kMhM>WpoNHDZB{FQ&?@B0}ES(TF#QMpQ&CYOL|Hg?LAzf|npz zK~aOCA_6f@NFs)cA}Zbz1wk$KrBM5#rjAwX*!YEbVNS zB5~n#lpWE-2%B3r0xedP>34~vC{o&Q~-cl0B6zGPd^z8}{gD{9k)Y0w1(?5i_ z?LJlr3*P5#$o2vx*le|k1+NTp z&Eybg0)1c#4>=!Leva}{2pC&wIfsH`*7{zMfL?%y&5Xp0)JXdO#ax^`g`z@jx?W%Q z!QK?hNDTUehO9lo!%e2AlY^H#90^YL^qrgWy)x-&Fs)k?W~$&C%4lbp2|hG7Bg52Z z(0*TKg^R$|{$gu;Dc_^z# z>>fmW-l#-ooe4Tc5qykRpM^6KVaFDZE(r1k3s?TGGw)?gUz0SoGK^eZl+kAMryl-r zjPL!fMy+vvsU*rA3PNUHZPg0(b@XbtD%gqj?tcsoo$U~eB0i5D1Pzk5I7J|=E@U4S zeZ-2}ZmH$U$;K+THfqVC9*{^#K=RGN>J3x|RNPBOoJBI)joqT!R*G1^e z6alJDG2~2_S>blIQP7)lyv2A?&~X?T#rk`6J7SA9 zTFi@fMiDAcqUrJJ^?F0^))%l{s_!HIWn1_ygbkEn-fV!TZFEMGSC_sK*bEvzY{<#P z=%lR|b=1x3>#e>&^vV~H^LGVxo-z#C5iU#Lo6nZxt7PpUd<|qzlSxk(!}vv3M|9{AO4vwvy;GuDyvp-Yx5 zMuH7WQXRzXRM*l>Cf#>uRJ|A0e<*2B$~H7*tTCMnm>`e1Ns_GQ!oCWnlxP|h%Nrq9 z?eH7_m>eJV-ajSBjS(y^c^&1ylDEC#m(n&8S!^Hb8@qb*?{y9!P*gPmzIKt;R&=l_ z02nXCiZz?FdhHJU25dt-wnzkU4J#x0DFY@=JOQ@w9IR3mJgCfoqB$$)PN8V5$sME@?-ajoL))VZDdbk9q5~?BTmCdNYuqIosJR_ zq(z}jW$*SlB92>`bsYYxgX9!OvlN}W26q}%eWzh7;;2Mo74y$spwwEkr`o}Y)qDLK zA3k1(V#8MKPbH7ZrT1!h-hC$!DO;kILLx35U6gy2japaUB#`P`XNkuS-XI^EUXuZ< zpZo@qNH}T6Oh+5uHsQ|Zer~e>-%>p~riJ3?ZxPThVyAm+MKQm-W!d7N*Xt+Aqw}2n zn=*gy>*_UY93zxmYcV`vI{lq&MFU>yNg*#!Ca9A~>p9AJml%)!W%bax1 zWWt^#EKG4F2%sk;`}bp?b9%CdYeO5m{(J$`a}5$bP04Gnnfe`GGZ6rj-1^f6zM{8X{Cdm=hoH6OEbBAqup;enizo; zEOI`5py=t}-c+uww4Cx!k)uw9mvu6m2t5i7u`>G#n|*nHK?J_G^l&=Dii!%lsk52B z-Bx|mGz>Up5QVD>T9|{2NXk?)iyh)Ul1@jE$$4ZNAC3fat^PBu&JXMzTu3f0yKWk0 z^WLaZ0cXRXZ=biO5yc64`w4*m=J{q41k&W%!TCtE`Sj@v`=k)YDimb)Z{-^e`ppQB z7spoK8|8eXwoB&7bEn%`1sqzpXZeQC>$ZoCjflPO<@$|n+YUzu+h6*8-9%^CVa7r0 zdiup*_d43q-D|J^CD(}fQHdX4ii^D6sVMICDSK~u_3oXV@uXp6Rr>JIv}5*N!cWc} zxNvMxPWbMd_kMKQQGKh{A;+>t#(k!S9S@7;pz!zJ^SC7Tpw^Kg>Z;WEckjlhq)cV+ zSCo;=aEws6ws^4dGVLYud7rhD7A=Y|PTmCQCw;h{9Yv@%ujuSpGFF}ijaW9qztK+A zr4z@LGG}Ja+(ws+nmgEL5GMA+Wm*W3ku(AakBtQkplCeGYNKvpKMks_exovEUMSls z`^sI9g$uLH_EMibw0!YPsAwYnd;iGi@mjkS<6&W~bc0#)E@Q`jM#_c~M7=eiF&=s+ zfEk#|9+U_f!-R;0b~&vsG>ws7wwfyzYp$GobbWH}(Ee|PM>aLvI*#V7d1MzE85vKx zp>@S}n`Eao2Nv-ldg3oYJN z%goJJU%b|%C_g)A8sEx>{E`3Aw3Ze9za9Oge8b%G;D%?x6=xmRIpldQx7lXB_n>`X z()yPD9tJ${OMjMbv*-PgPOW`<=ZtgMIo;NDYp%WGbh;(0kJ-Yx9N4mycn8utp{U=e zLg8NfTFU~zpN_6OS^U_cYSd3-({J<+8Xa7hxm$uy?*bC?apuMG=QZCQ@9^{7>KBeO zS@5)EAv_j4AsEff&JTu|zHHkoP7R;hj%9SnPnEyq+`|~yCf@4h#?g~e(k-ovLCReP|U&GZQ{KVk%khnqI@Jh0UPxSEge8}k_sk}@Sl$JIlN6w`mn=olos{a?}bXkzImqBjiG)0^}hkQ=C zaEiA>ILbB1uJ3H)lr9~~LwxU`T;E9CLcJ{#90y}XnF87+BEa9Gm9L>i%m~_OWr}=m zs0yz+*FC&9UmILsYN?Qzgk1*?Sc_<;Y`G{~JTIHV-T;*kJ9;;?5Hr})GH?$AI%Pdj z2?QHTTRYkNF>P1mu3gF0Vjqn*A#icuy8_j-rWq&hJb(Vz?G5|(@3*nBaYS)^zz);$ zT!}BhNI(?!6cxD+r#x2RQ677X_Z%V*BnL+Ql0U0EfIn6y`7e?VBNRwL^m8CFaWi$h z92Zz8bw&zU$O(En@cHcyXVMbZY;~ZGQwC`JRj6&_2_38}eiGE{L1ETsiw8&F2&{fz zW4c&Lc_`Dx7c#iQF{0t8s52Vqps`V!6%GhsV{h*w7CoW1hBs5G$u)js#(YXQH+@%^ z`w_MMmrtKLQy@zR-NTp?IpP|WFcUNw8sQODg{}VlSF^Pt~ zIsW+ZSqeebLPm0ok`yuAlnAd!C7-Wff8<#JN!U8TYXHQ&C|8x}?w7b{&$}9+!)%H~ z9`~u~)28jcefz@`eu|&=&VTz99t?K#z@+QkZY2hhkT@2tBRuOxZm8E4vN+e2=dhMj zt}V`w857#Zat042@z8r3x}i@)f?^H8Lo=V^f3W_c%bCk?$xEN@^7QmXIZ_aSk*3K1 zbV3#U30)EcC>LyyxK08N-t5Rto4#*js%YX$T}Sj!k5uOg-JcB#zATYh^jYm4Zl3 zlb1y_-mr%Hdn3Im&?Ob4c-oJ?>&k(gs@TI^;eq)0jXyv7YSV1DIljJu6c%dG(TJ&q zm&S&lfBfzmdwKt&qGliDAT9nV*+x%UNET?i@kNI%SkV{JjB1wICX=byFeEx_WRJ|M zPhQY#Nz^3pT&OA4d6LEJwLfhwKpzlCv##`7no9*t42SK~C;Lde^GkUp#TmMc@t^T{}JVlZtyIU!*Ii7#$2p@nS0Au8NdDi;m}X)8Bw+$dEeLeUks z|MF`O4-a7pD_x(!|0{&a$0u2wh(;ZOfq4}lKW4Rv%h&y9x7#m)OI+OenKNe+6j$H( zY6X4(ZoAjYo9&DN6^ApAlGo`S^#jda($4NHi4L4kOw%Q4O=SW&k~1Qgn#B&cAV#Oj z@Oe7<_W)Lc1`^ zq#<4QdeqJN5j%DyvO(zZBdkYR9!dK%PU6(j_ABi%&EJElGxeH+yRxu`!q-m_Wv^Ze zYM((Zqz9{{2cBiS^PKEx`twM3?dUGGkG%Y;ZYu>=hKHwip3Nk8#QaHU;H2Q^P92Dg zOWR+~Odcl7{~4xJhJB%lsGVgM@~h`&%tA5B{wrOuTw+RH-G3%C5}NVxmQ0|zJKxm~ zr|&ly0w=jP^ce~&llRS-^*b0|^r*~jXZOnudjf6*UFe5@Ja5X}3y->+qOr(&mW%NL z4^nX;a??P9Oo)*2iuidKPAO5(3KRim4!XDfteIl=M6PJO1YK&;{v*vMyHsvAzk2tl zs5^Z9p2xjyY}79+9bi#zPnjvugSa3LwA)XW3Q0^tl3{1Y%cj=xshPXo4h6tqt zTYN;s?(oYuiLNH@NO}Y^hT#Znmt8l0niv{BYrdbkBnr z8X``i_UHv1U%0>yLI(#=(qCDaE-u3Z!Uqs}B6WvYZZlY1ic=4I?b8W%DJd!1)Zln( zpS|7QP;$G##AQdd#lea|v|xi$Q8_ABo;r(4R2jHr7%-4vbeAqS8(J^tY16^fzj(WY zq2#-!KV`7<9=7P~9O(W|Os`2Vx4WF1Tf=ae!VQ2K6A8hb4mnI0i7Cwt{mx~Zx$kg$smo%uBBr!eQ*UAC8D53|zO?r>{vC^{0odq3qXqdo3ae6*}hnpMk{kJj6-scK_Nh?v}K znbGuO8bVq$a{2~C%f>FvU})VqC(K|lZ|VjOL%Ny{U4vm+6UlBU3CU>kTr_JW_W!pZ zRC24Ld1cAKv*RPIt*v*snmU@aEz!I8`UEAfEAQI>TMM_eWuqeAXxsMIoe8WYLx!DN zY>Ma${aV!W?JM8t)XCaN6@ANci0h2T3Sxyuvc3HB&=ck*H^;tHI{#hE()pv_DfKaP zUqJ>Dcip{Am1j?9*z;-i;|x(9-gx6Z%hIpk{ja~6_{(39c;9Yn|NicV zlzc^1pin(*PleZF3@--PnYH;%K*u&M8vl1yT6)J_OB(OZyif~M>GrQ~>AJ$Y?4?0_ z=_eIU0OQBOYr9^zu6g;8Q>|PkJ3Ggq zp0}n>m)RYiI)zvarGt0tQ?2q|d#Pty41XoVDcbRi@SaN6etxIdNGQe`XPV@XbjpcCe;(laEkV)}Flw{} zrC2_C^Q4tGR*wUYK3sM&>s^caA+sgF#L*sB`~jXer+|Rto2;Ar96Wk7Z~Oo*;H;Uu zmzP&qw&y^apkrmOrvk3L)UstX+gxY&u>YV0Sj4uQjgC5TD2hE>u|1l>@_cx+yhQ+- zgD9Wvk+;TDSNF8DyJ9xl@_Rq0ox`rIKvKCS^MOa&m*68?AwCK>kRW)G0<6ev^gAv5 ze*HVA%AK&F$vh5_p=4p27e$h@n_Cjy)pb&O3ntU8_)c}sNb2Y={RnWv z`v|)utrA?$B!nY3Sd?8wanL>7VJb`Kt7jf?$106T@A00D49q~qWJ$&DoD znV;i|fI)bQXK5px=gdjwlsZp0PIE2Qm3W0J-;QyPuQ)B6O*!g6x3jy~hGuQnG5Sh` z7ERqjzlxg=+yg9Xvzl-#o<>$?=DjV|_uU=t^IX+P1B@7_vZ+!#!U7GT#+Y4w-^1a) zbexp@_hsdWx=Cim^fO5v##^%Ib^O9#o&+WN9d5b)a0B;0x@(N36kUBjNG=ZkLmF=Zx`5$5IjB;_d=$R zL$6-rVDl#)c=gc2uqkx7Dl;fxc&D#FUWNOIcFoNaEJ-la49iS@N^Wkh&jmUXm4X+` z)7}aC<$KGAobsk#K_@T7y5*EI& zs=r-~AwYOa}SXyB~MynC+{zx=$9SXHg&I>+PatCGL7= zxpcDL7buK_N@Y=vsxN(H`f z$D8wNH=DcPcTf9_Q@Jx#IMNDph}8u_AU2(8lQGkpb~Bg$h>5B{v8>MsBmg}&Ev*2D z|F?hq^wVtwAAR6^-(!ytr_hq;byv>}rY5jOrz2c2zjW5eEkEA(BoKb&hwam*O>>u! z$Nk8)Fz}bvU@SjEXFtk^Df$xsnk^FIvk(~$wMD+M`}W-#vHP{kVDlF3>dcaFv%UuN z%Gl9b#Dd6qQbG7@b6EG~m#-qs@j}Pq3QHccA>nFzp{4^TVB?>gAPT? piPviX?Pv49?U4V!_d%6s#s{DO= chars.length) + { + throw new DateTimeException("No timezone information: " + new String(chars)); + } final int len = chars.length; final int left = len - offset; final char c = chars[offset]; @@ -401,7 +404,8 @@ private DateTime handleSeconds(int year, int month, int day, int hour, int minut if (remaining == 0) { final int seconds = getSeconds(chars); - return leapSecondCheck(year, month, day, hour, minute, seconds, 0, null, 0); + leapSecondCheck(year, month, day, hour, minute, seconds, 0, null); + return new DateTime(Field.SECOND, year, month, day, hour, minute, seconds, 0, null, 0); } TimezoneOffset offset = null; @@ -417,19 +421,11 @@ private DateTime handleSeconds(int year, int month, int day, int hour, int minut else if (remaining >= 1 && c == FRACTION_SEPARATOR) { // We have fractional seconds - final int idx = indexOfNonDigit(chars, 20); - if (idx != -1) - { - // We have an end of fractions - final int len = idx - 20; - fractions = getFractions(chars, idx, len); - fractionDigits = len; - offset = parseTimezone(chars, idx); - } - else - { - raiseDateTimeException(chars, "No timezone information"); - } + final int[] fractionsData = parseSecondFractions(chars, 20); + final int idx = fractionsData[1]; + fractions = fractionsData[0]; + fractionDigits = idx - 20; + offset = parseTimezone(chars, idx); } else if (remaining >= 1 && (c == PLUS || c == MINUS)) { @@ -441,10 +437,14 @@ else if (remaining >= 1 && (c == PLUS || c == MINUS)) raiseDateTimeException(chars, "Unexpected character at position 19"); } - return leapSecondCheck(year, month, day, hour, minute, getSeconds(chars), fractions, offset, fractionDigits); + final int second = getSeconds(chars); + + leapSecondCheck(year, month, day, hour, minute, second, fractions, offset); + + return fractionDigits > 0 ? DateTime.of(year, month, day, hour, minute, second, fractions, offset, fractionDigits) : DateTime.of(year, month, day, hour, minute, second, offset); } - private DateTime leapSecondCheck(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset, final int fractionDigits) + private void leapSecondCheck(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset) { if (second == LEAP_SECOND_SECONDS) { @@ -465,7 +465,6 @@ private DateTime leapSecondCheck(int year, int month, int day, int hour, int min } } } - return fractionDigits > 0 ? DateTime.of(year, month, day, hour, minute, second, nanos, offset, fractionDigits) : DateTime.of(year, month, day, hour, minute, second, offset); } private void raiseDateTimeException(char[] chars, String message) @@ -477,33 +476,4 @@ private int getSeconds(final char[] chars) { return parsePositiveInt(chars, 17, 19); } - - private int getFractions(final char[] chars, final int idx, final int len) - { - final int fractions; - fractions = uncheckedParsePositiveInt(chars, 20, idx); - switch (len) - { - case 0: - throw new DateTimeException("Must have at least 1 fraction digit"); - case 1: - return fractions * 100_000_000; - case 2: - return fractions * 10_000_000; - case 3: - return fractions * 1_000_000; - case 4: - return fractions * 100_000; - case 5: - return fractions * 10_000; - case 6: - return fractions * 1_000; - case 7: - return fractions * 100; - case 8: - return fractions * 10; - default: - return fractions; - } - } } diff --git a/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java b/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java index adec589..935c81b 100644 --- a/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java +++ b/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java @@ -59,28 +59,58 @@ public static int parsePositiveInt(final char[] strNum, int startInclusive, int for (int i = startInclusive; i < endExclusive; i++) { final char c = strNum[i]; - if (isNotDigit(c)) + if (c < ZERO || c > DIGIT_9) { throw new DateTimeException("Character " + c + " is not a digit"); } - int digit = digit(c); - result *= RADIX; - result -= digit; + result = (result << 1) + (result << 3); + result -= c - ZERO; } return -result; } - public static int uncheckedParsePositiveInt(final char[] strNum, int startInclusive, int endExclusive) + public static int[] parseSecondFractions(final char[] strNum, int startInclusive) { int result = 0; - for (int i = startInclusive; i < endExclusive; i++) + for (int i = startInclusive; i < strNum.length; i++) { final char c = strNum[i]; - int digit = digit(c); - result *= RADIX; - result -= digit; + if (c < ZERO || c > '9') + { + final int val = scale(-result, (i - startInclusive)); + return new int[]{val, i}; + } + result = (result << 1) + (result << 3); + result -= c - ZERO; + } + return new int[]{scale(-result, (strNum.length - startInclusive)), strNum.length}; + } + + private static int scale(int fractions, int len) + { + switch (len) + { + case 0: + throw new DateTimeException("Must have at least 1 fraction digit"); + case 1: + return fractions * 100_000_000; + case 2: + return fractions * 10_000_000; + case 3: + return fractions * 1_000_000; + case 4: + return fractions * 100_000; + case 5: + return fractions * 10_000; + case 6: + return fractions * 1_000; + case 7: + return fractions * 100; + case 8: + return fractions * 10; + default: + return fractions; } - return -result; } public static void toString(final int value, final char[] buf, final int offset, final int charLength) @@ -148,21 +178,12 @@ public static int indexOfNonDigit(final char[] text, int offset) { for (int i = offset; i < text.length; i++) { - if (isNotDigit(text[i])) + char c = text[i]; + if (c < ZERO || c > DIGIT_9) { return i; } } return -1; } - - private static boolean isNotDigit(char c) - { - return (c < ZERO || c > DIGIT_9); - } - - private static int digit(char c) - { - return c - ZERO; - } } diff --git a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java index 45ef5a9..1c0c9c0 100644 --- a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java +++ b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java @@ -25,7 +25,6 @@ import com.ethlo.time.internal.EthloITU; -@Disabled public class EthloItuProfilerTest { private static final EthloITU ethloItu = EthloITU.getInstance(); @@ -36,7 +35,7 @@ void profileParsing() final int runs = 1_000_000_000; for (int i = 0; i < runs; i++) { - ethloItu.parseDateTime("2017-12-21T12:20:45.987654321Z"); + ethloItu.parse("2017-12-21T12:20:45.987654321Z"); } } } From 1d0f69d900fed6762a538abde8a39f641c5e7d29 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Tue, 26 Dec 2023 19:18:07 +0100 Subject: [PATCH 2/7] Minor optimizations --- doc/performance.png | Bin 37381 -> 42792 bytes output.png | Bin 36929 -> 0 bytes plot.py | 4 +- pom.xml | 24 +-- .../com/ethlo/time/internal/EthloITU.java | 200 ++++++++++-------- .../internal/LimitedCharArrayIntegerUtil.java | 54 +---- .../java/com/ethlo/time/CorrectnessTest.java | 7 + .../ethlo/time/FormatterBenchmarkTest.java | 2 +- .../com/ethlo/time/ParserBenchmarkTest.java | 2 +- .../ethlo/time/itu/EthloItuProfilerTest.java | 2 +- .../itu/ITULenientParserBenchmarkTest.java | 9 +- 11 files changed, 141 insertions(+), 163 deletions(-) delete mode 100644 output.png diff --git a/doc/performance.png b/doc/performance.png index 17498e3553c6b16b6e356c78fd35477bdba5157f..ad0517cc9229f0b6daaebbaa90a4c17a33148bfe 100644 GIT binary patch literal 42792 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 literal 37381 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 diff --git a/output.png b/output.png deleted file mode 100644 index 1f80444d82de48c3f40bd43794f71069c3f90b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36929 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 piPviX?Pv49?U4V!_d%6s#s{DOcom.ethlo.time bundle itu - 1.7.3 + 1.8.0 Internet Time Utility - Extremely fast date/time parser and formatter - RFC 3339 (ISO 8601 profile) and W3C format + Very fast date/time parser and formatter - RFC 3339 (ISO 8601 profile) and W3C format @@ -65,25 +65,25 @@ limitations under the License. org.apache.commons commons-lang3 - 3.12.0 + 3.14.0 test com.google.http-client google-http-client - 1.43.1 + 1.43.3 test org.openjdk.jmh jmh-core - 1.35 + 1.37 test org.openjdk.jmh jmh-generator-annprocess - 1.35 + 1.37 test @@ -97,7 +97,7 @@ limitations under the License. maven-compiler-plugin - 3.8.1 + 3.12.1 1.8 1.8 @@ -111,14 +111,14 @@ limitations under the License. 1.8 1.8 - SampleTime - 1 - 30 + Throughput + 10 + 2 1 JSON target/itu_performance.json - 3 - 10 + 10 + 2 diff --git a/src/main/java/com/ethlo/time/internal/EthloITU.java b/src/main/java/com/ethlo/time/internal/EthloITU.java index 66145cd..7913f2d 100644 --- a/src/main/java/com/ethlo/time/internal/EthloITU.java +++ b/src/main/java/com/ethlo/time/internal/EthloITU.java @@ -21,8 +21,9 @@ */ import static com.ethlo.time.internal.LeapSecondHandler.LEAP_SECOND_SECONDS; +import static com.ethlo.time.internal.LimitedCharArrayIntegerUtil.DIGIT_9; +import static com.ethlo.time.internal.LimitedCharArrayIntegerUtil.ZERO; import static com.ethlo.time.internal.LimitedCharArrayIntegerUtil.parsePositiveInt; -import static com.ethlo.time.internal.LimitedCharArrayIntegerUtil.parseSecondFractions; import java.time.DateTimeException; import java.time.Month; @@ -89,28 +90,13 @@ private static int writeTz(char[] buf, int start, TimezoneOffset tz) } } - private int getHour(final char[] chars) + private DateTime handleTime(String chars, int year, int month, int day, int hour, int minute) { - return parsePositiveInt(chars, 11, 13); - } - - private int getMinute(final char[] chars) - { - return parsePositiveInt(chars, 14, 16); - } - - private int getDay(final char[] chars) - { - return parsePositiveInt(chars, 8, 10); - } - - private DateTime handleTime(char[] chars, int year, int month, int day, int hour, int minute) - { - switch (chars[16]) + switch (chars.charAt(16)) { // We have more granularity, keep going case TIME_SEPARATOR: - return handleSeconds(year, month, day, hour, minute, chars); + return handleTime(year, month, day, hour, minute, chars); case PLUS: case MINUS: @@ -122,34 +108,35 @@ private DateTime handleTime(char[] chars, int year, int month, int day, int hour default: assertPositionContains(chars, 16, TIME_SEPARATOR, PLUS, MINUS, ZULU_UPPER); } - throw new DateTimeException(new String(chars)); + throw new DateTimeException(chars); } - private void assertPositionContains(char[] chars, int offset, char expected) + private void assertPositionContains(String chars, int offset, char expected) { - if (offset >= chars.length) + if (offset >= chars.length()) { raiseDateTimeException(chars, "Unexpected end of input"); } - if (chars[offset] != expected) + if (chars.charAt(offset) != expected) { throw new DateTimeException("Expected character " + expected - + " at position " + (offset + 1) + " '" + new String(chars) + "'"); + + " at position " + (offset + 1) + " '" + chars + "'"); } } - private void assertPositionContains(char[] chars, int offset, char... expected) + private void assertPositionContains(String chars, int offset, char... expected) { - if (offset >= chars.length) + if (offset >= chars.length()) { raiseDateTimeException(chars, "Unexpected end of input"); } boolean found = false; + final char needle = chars.charAt(offset); for (char e : expected) { - if (chars[offset] == e) + if (needle == e) { found = true; break; @@ -158,31 +145,36 @@ private void assertPositionContains(char[] chars, int offset, char... expected) if (!found) { throw new DateTimeException("Expected character " + Arrays.toString(expected) - + " at position " + (offset + 1) + " '" + new String(chars) + "'"); + + " at position " + (offset + 1) + " '" + chars + "'"); } } - private TimezoneOffset parseTimezone(char[] chars, int offset) + private TimezoneOffset parseTimezone(String chars, int offset) { - if (offset >= chars.length) + if (offset >= chars.length()) { - throw new DateTimeException("No timezone information: " + new String(chars)); + throw new DateTimeException("No timezone information: " + chars); } - final int len = chars.length; + final int len = chars.length(); final int left = len - offset; - final char c = chars[offset]; + final char c = chars.charAt(offset); if (c == ZULU_UPPER || c == ZULU_LOWER) { assertNoMoreChars(chars, offset); return TimezoneOffset.UTC; } + final char sign = chars.charAt(offset); + if (sign != PLUS && sign != MINUS) + { + throw new DateTimeException("Invalid character starting at position " + offset + ": " + chars); + } + if (left != 6) { - throw new DateTimeException("Invalid timezone offset: " + new String(chars, offset, left)); + throw new DateTimeException("Invalid timezone offset: " + new String(chars.toCharArray(), offset, left)); } - final char sign = chars[offset]; int hours = parsePositiveInt(chars, offset + 1, offset + 3); int minutes = parsePositiveInt(chars, offset + 4, offset + 4 + 2); if (sign == MINUS) @@ -190,10 +182,6 @@ private TimezoneOffset parseTimezone(char[] chars, int offset) hours = -hours; minutes = -minutes; } - else if (sign != PLUS) - { - throw new DateTimeException("Invalid character starting at position " + offset + 1); - } if (sign == MINUS && hours == 0 && minutes == 0) { @@ -203,11 +191,11 @@ else if (sign != PLUS) return TimezoneOffset.ofHoursMinutes(hours, minutes); } - private void assertNoMoreChars(char[] chars, int lastUsed) + private void assertNoMoreChars(String chars, int lastUsed) { - if (chars.length > lastUsed + 1) + if (chars.length() > lastUsed + 1) { - throw new DateTimeException("Trailing junk data after position " + (lastUsed + 1) + ": " + new String(chars)); + throw new DateTimeException("Trailing junk data after position " + (lastUsed + 1) + ": " + chars); } } @@ -336,20 +324,19 @@ public String formatUtc(OffsetDateTime date) } @Override - public DateTime parse(String text) + public DateTime parse(String chars) { - if (text == null) + if (chars == null) { throw new NullPointerException("text cannot be null"); } - final int len = text.length(); - final char[] chars = text.toCharArray(); + final int len = chars.length(); // Date portion // YEAR - final int years = getYear(chars); + final int years = parsePositiveInt(chars, 0, 4); if (4 == len) { return DateTime.ofYear(years); @@ -357,7 +344,7 @@ public DateTime parse(String text) // MONTH assertPositionContains(chars, 4, DATE_SEPARATOR); - final int months = getMonth(chars); + final int months = parsePositiveInt(chars, 5, 7); if (7 == len) { return DateTime.ofYearMonth(years, months); @@ -365,7 +352,7 @@ public DateTime parse(String text) // DAY assertPositionContains(chars, 7, DATE_SEPARATOR); - final int days = getDay(chars); + final int days = parsePositiveInt(chars, 8, 10); if (10 == len) { return DateTime.ofDate(years, months, days); @@ -373,37 +360,29 @@ public DateTime parse(String text) // HOURS assertPositionContains(chars, 10, SEPARATOR_UPPER, SEPARATOR_LOWER, SEPARATOR_SPACE); - final int hours = getHour(chars); + final int hours = parsePositiveInt(chars, 11, 13); // MINUTES assertPositionContains(chars, 13, TIME_SEPARATOR); - final int minutes = getMinute(chars); - if (16 == len) + final int minutes = parsePositiveInt(chars, 14, 16); + if (len > 16) { - return DateTime.of(years, months, days, hours, minutes, null); + // SECONDS or TIMEZONE + return handleTime(chars, years, months, days, hours, minutes); } - // SECONDS or TIMEZONE - return handleTime(chars, years, months, days, hours, minutes); - } - - private int getMonth(final char[] chars) - { - return parsePositiveInt(chars, 5, 7); + // Have only minutes + return DateTime.of(years, months, days, hours, minutes, null); } - private int getYear(final char[] chars) - { - return parsePositiveInt(chars, 0, 4); - } - - private DateTime handleSeconds(int year, int month, int day, int hour, int minute, char[] chars) + private DateTime handleTime(int year, int month, int day, int hour, int minute, String chars) { // From here the specification is more lenient - final int remaining = chars.length - 19; + final int len = chars.length(); + final int remaining = len - 19; if (remaining == 0) { - final int seconds = getSeconds(chars); + final int seconds = parsePositiveInt(chars, 17, 19); leapSecondCheck(year, month, day, hour, minute, seconds, 0, null); return new DateTime(Field.SECOND, year, month, day, hour, minute, seconds, 0, null, 0); } @@ -411,23 +390,44 @@ private DateTime handleSeconds(int year, int month, int day, int hour, int minut TimezoneOffset offset = null; int fractions = 0; int fractionDigits = 0; - final char c = chars[19]; - if (remaining == 1 && (c == ZULU_UPPER || c == ZULU_LOWER)) + char c = chars.charAt(19); + if (c == FRACTION_SEPARATOR) { - // Do nothing we are done - offset = TimezoneOffset.UTC; - assertNoMoreChars(chars, 19); + // We have fractional seconds + int result = 0; + int idx = 20; + boolean nonDigitFound = false; + do + { + c = chars.charAt(idx); + if (c < ZERO || c > DIGIT_9) + { + nonDigitFound = true; + fractionDigits = idx - 20; + fractions = scale(-result, fractionDigits); + offset = parseTimezone(chars, idx); + } + else + { + result = (result << 1) + (result << 3); + result -= c - ZERO; + } + idx++; + } while (idx < len && !nonDigitFound); + + if (!nonDigitFound) + { + fractionDigits = idx - 20; + fractions = scale(-result, fractionDigits); + offset = parseTimezone(chars, idx); + } } - else if (remaining >= 1 && c == FRACTION_SEPARATOR) + else if (remaining == 1 && (c == ZULU_UPPER || c == ZULU_LOWER)) { - // We have fractional seconds - final int[] fractionsData = parseSecondFractions(chars, 20); - final int idx = fractionsData[1]; - fractions = fractionsData[0]; - fractionDigits = idx - 20; - offset = parseTimezone(chars, idx); + // Do nothing we are done + offset = TimezoneOffset.UTC; } - else if (remaining >= 1 && (c == PLUS || c == MINUS)) + else if (c == PLUS || c == MINUS) { // No fractional sections offset = parseTimezone(chars, 19); @@ -437,13 +437,40 @@ else if (remaining >= 1 && (c == PLUS || c == MINUS)) raiseDateTimeException(chars, "Unexpected character at position 19"); } - final int second = getSeconds(chars); + final int second = parsePositiveInt(chars, 17, 19); leapSecondCheck(year, month, day, hour, minute, second, fractions, offset); return fractionDigits > 0 ? DateTime.of(year, month, day, hour, minute, second, fractions, offset, fractionDigits) : DateTime.of(year, month, day, hour, minute, second, offset); } + private static int scale(int fractions, int len) + { + switch (len) + { + case 0: + throw new DateTimeException("Must have at least 1 fraction digit"); + case 1: + return fractions * 100_000_000; + case 2: + return fractions * 10_000_000; + case 3: + return fractions * 1_000_000; + case 4: + return fractions * 100_000; + case 5: + return fractions * 10_000; + case 6: + return fractions * 1_000; + case 7: + return fractions * 100; + case 8: + return fractions * 10; + default: + return fractions; + } + } + private void leapSecondCheck(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset) { if (second == LEAP_SECOND_SECONDS) @@ -467,13 +494,8 @@ private void leapSecondCheck(int year, int month, int day, int hour, int minute, } } - private void raiseDateTimeException(char[] chars, String message) - { - throw new DateTimeException(message + ": " + new String(chars)); - } - - private int getSeconds(final char[] chars) + private void raiseDateTimeException(String chars, String message) { - return parsePositiveInt(chars, 17, 19); + throw new DateTimeException(message + ": " + chars); } } diff --git a/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java b/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java index 935c81b..b989b85 100644 --- a/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java +++ b/src/main/java/com/ethlo/time/internal/LimitedCharArrayIntegerUtil.java @@ -26,7 +26,7 @@ public final class LimitedCharArrayIntegerUtil { public static final char DIGIT_9 = '9'; - private static final char ZERO = '0'; + public static final char ZERO = '0'; private static final char[] DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; private static final int TABLE_WIDTH = 4; private static final int RADIX = 10; @@ -48,17 +48,17 @@ private LimitedCharArrayIntegerUtil() { } - public static int parsePositiveInt(final char[] strNum, int startInclusive, int endExclusive) + public static int parsePositiveInt(final String strNum, int startInclusive, int endExclusive) { - if (endExclusive > strNum.length) + if (endExclusive > strNum.length()) { - throw new DateTimeException("Unexpected end of expression at position " + strNum.length + ": '" + new String(strNum) + "'"); + throw new DateTimeException("Unexpected end of expression at position " + strNum.length() + ": '" + strNum + "'"); } int result = 0; for (int i = startInclusive; i < endExclusive; i++) { - final char c = strNum[i]; + final char c = strNum.charAt(i); if (c < ZERO || c > DIGIT_9) { throw new DateTimeException("Character " + c + " is not a digit"); @@ -69,50 +69,6 @@ public static int parsePositiveInt(final char[] strNum, int startInclusive, int return -result; } - public static int[] parseSecondFractions(final char[] strNum, int startInclusive) - { - int result = 0; - for (int i = startInclusive; i < strNum.length; i++) - { - final char c = strNum[i]; - if (c < ZERO || c > '9') - { - final int val = scale(-result, (i - startInclusive)); - return new int[]{val, i}; - } - result = (result << 1) + (result << 3); - result -= c - ZERO; - } - return new int[]{scale(-result, (strNum.length - startInclusive)), strNum.length}; - } - - private static int scale(int fractions, int len) - { - switch (len) - { - case 0: - throw new DateTimeException("Must have at least 1 fraction digit"); - case 1: - return fractions * 100_000_000; - case 2: - return fractions * 10_000_000; - case 3: - return fractions * 1_000_000; - case 4: - return fractions * 100_000; - case 5: - return fractions * 10_000; - case 6: - return fractions * 1_000; - case 7: - return fractions * 100; - case 8: - return fractions * 10; - default: - return fractions; - } - } - public static void toString(final int value, final char[] buf, final int offset, final int charLength) { if (value < TABLE_SIZE) diff --git a/src/test/java/com/ethlo/time/CorrectnessTest.java b/src/test/java/com/ethlo/time/CorrectnessTest.java index 41a2447..e1c62e5 100644 --- a/src/test/java/com/ethlo/time/CorrectnessTest.java +++ b/src/test/java/com/ethlo/time/CorrectnessTest.java @@ -97,6 +97,13 @@ public void parseWithFragmentsNoTimezone() assertThat(exception.getMessage()).isEqualTo("No timezone information: 2017-12-21T12:20:45.987"); } + @Test + public void parseWithFragmentsNonDigit() + { + final DateTimeException exception = assertThrows(DateTimeException.class, () -> parser.parseDateTime("2017-12-21T12:20:45.9b7Z")); + assertThat(exception.getMessage()).isEqualTo("Invalid character starting at position 21: 2017-12-21T12:20:45.9b7Z"); + } + @Test public void testParseLeapSecondUTCJune() { diff --git a/src/test/java/com/ethlo/time/FormatterBenchmarkTest.java b/src/test/java/com/ethlo/time/FormatterBenchmarkTest.java index 92da3d3..3091feb 100644 --- a/src/test/java/com/ethlo/time/FormatterBenchmarkTest.java +++ b/src/test/java/com/ethlo/time/FormatterBenchmarkTest.java @@ -29,7 +29,7 @@ import com.ethlo.time.internal.Rfc3339Formatter; -@OutputTimeUnit(TimeUnit.NANOSECONDS) +@OutputTimeUnit(TimeUnit.MILLISECONDS) public abstract class FormatterBenchmarkTest { private static final OffsetDateTime input = OffsetDateTime.parse("2017-12-21T12:20:45.987654321Z"); diff --git a/src/test/java/com/ethlo/time/ParserBenchmarkTest.java b/src/test/java/com/ethlo/time/ParserBenchmarkTest.java index afeb1c1..7f97dcb 100644 --- a/src/test/java/com/ethlo/time/ParserBenchmarkTest.java +++ b/src/test/java/com/ethlo/time/ParserBenchmarkTest.java @@ -28,7 +28,7 @@ import com.ethlo.time.internal.Rfc3339Parser; -@OutputTimeUnit(TimeUnit.NANOSECONDS) +@OutputTimeUnit(TimeUnit.MILLISECONDS) public abstract class ParserBenchmarkTest { protected static Rfc3339Parser parser; diff --git a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java index 1c0c9c0..5194aea 100644 --- a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java +++ b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java @@ -35,7 +35,7 @@ void profileParsing() final int runs = 1_000_000_000; for (int i = 0; i < runs; i++) { - ethloItu.parse("2017-12-21T12:20:45.987654321Z"); + ethloItu.parseDateTime("2017-12-21T12:20:45.987654321Z"); } } } diff --git a/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java b/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java index 2217347..4e40a46 100644 --- a/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java +++ b/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java @@ -23,19 +23,12 @@ import java.util.concurrent.TimeUnit; import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.infra.Blackhole; import com.ethlo.time.internal.EthloITU; -@Warmup(iterations = 1, time = 30) -@BenchmarkMode(Mode.SampleTime) -@Fork(1) -@OutputTimeUnit(TimeUnit.NANOSECONDS) +@OutputTimeUnit(TimeUnit.MILLISECONDS) public class ITULenientParserBenchmarkTest { private static final EthloITU ethloItu = EthloITU.getInstance(); From e0627ffa30d83b941e292aeb24754ddc66bc79d4 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Tue, 26 Dec 2023 21:19:08 +0100 Subject: [PATCH 3/7] Update readme --- README.md | 18 +++++++++++++++--- benchmark.sh | 4 ++++ doc/format.png | Bin 0 -> 27461 bytes doc/parse.png | Bin 0 -> 27893 bytes doc/performance.png | Bin 42792 -> 0 bytes pom.xml | 4 ++-- src/main/java/com/ethlo/time/DateTime.java | 5 +++++ .../com/ethlo/time/internal/EthloITU.java | 2 +- .../itu/ITULenientParserBenchmarkTest.java | 10 ++++++++-- 9 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 benchmark.sh create mode 100644 doc/format.png create mode 100644 doc/parse.png delete mode 100644 doc/performance.png diff --git a/README.md b/README.md index c7fd6d6..97b2d77 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,15 @@ W3C [Date and Time Formats](https://www.w3.org/TR/NOTE-datetime) in Java. ## Performance -Your mileage may vary, but tests indicate comfortably 10x faster than JDK classes. -Performance plot +Your mileage may vary. I've done my very best to make sure these tests are as accurate as possible, but please do your own evaluation. +* The second resolution test-string is: `2017-12-21T12:20:45Z` +* The nanosecond-resolution test-string is: `2017-12-21T12:20:45.987654321Z` + +### Parsing +Performance of parsing + +### Formatting +Performance of formatting Tests performed on a Lenovo P1 G6 laptop: * Intel(R) Core(TM) i9-13900H @@ -47,7 +54,7 @@ Add dependency com.ethlo.time itu - 1.7.3 + 1.8.0 ``` @@ -204,6 +211,11 @@ instead of `60`. ## Changelog +### Version 1.7.4 + +2023-12-26 +* Parser performance improvements. + ### Version 1.7.0 2022-09-03 diff --git a/benchmark.sh b/benchmark.sh new file mode 100644 index 0000000..0d7f8af --- /dev/null +++ b/benchmark.sh @@ -0,0 +1,4 @@ +#!/bin/bash +mvn clean jmh:benchmark +python3 plot.py --include=parse -i target/itu_performance.json --theme tableau-colorblind10 --size=12,5 -o doc/parse.png +python3 plot.py --include=format -i target/itu_performance.json --theme tableau-colorblind10 --size=12,5 -o doc/format.png diff --git a/doc/format.png b/doc/format.png new file mode 100644 index 0000000000000000000000000000000000000000..df20aceefac17f9721c0f24425a125b13958048b GIT binary patch literal 27461 zcmeIbd0dYB`Zj!HVHvZQu~009NUcgGRF?TxDa~`Jq&b!5$-EG9N1+r-^Qd`_C{dz$ z4wW>cNu_#^v#hnP_qX@&eLv6pJfHWUpU+-olls~v{-fWK9 z3`}8(v^ZvCcf`toA$!Ee($vDn)ad9c zTLUX=BMWn3eo=m5zE#IedVf+Y$O_N~lzb z5rbj;h`IX@C40ZFdMD@N{_*k8BTlW=*W4p8PTA{xARY)Bg|8z$)luM@3t~x&Wp9`~R$~ zt6Q{UMPx;krb$;#VzqXStY-YNE9d93KM*#2rC+sV<;tj!A3r+jDC+#e#U*h0*#o1} zVD;KyS>Ltz`RiAE6U~r=cNcMTn#Wt%+oxaaH050xPwlxIIdt&u)`HsFk)(k{pTde4U60iG+TR3T(9UB8%~{HS{JH1qOP4Rd zjP2T+eWCNd%gBIn^`jPT_T>!EWZF4aezO*?4Ylp6*=qCAbMH0IsFs&LCWW^Iw>p1~ zZ7&N8ye2ukK3zJ4*Q6ry&FlNSgh$_QIq`nCtlyT;4NGtCJA3x*aoneIMP&7+o^5vB zTA4#1eC_Us`*mI5a(x|>J?2>3BYRM{*CJ~u_`|EazV!zB?N83l;n-?(+bfZhNV=3I7%3Lr-KNUVKR&2httcn)FrUj! zE7NIE<>7&wO6j&;P8zl6<}AG-pevc~p`2!8lRoy$9;h&zK&T0SlRBcVN!ovf$ z(QECN2_8Mm>Gti!Vt%c!Ndv{ROvW1B#&3p%7zWq=wq{Mw36ZN^?Zp=Q`ayR#8$CD_ zxVP=y1+G`!j}SVR8PcP=aed9c7f0icmjp3I-`(U+O-VWa{^>0fAU;pjPr%&=qN;lGMyTaYZhVp}hT}OwRtlxh7 zO+QWz|A{o*uWu_}9;O&l7NseMn^H43H{YO>kuqcciqOkT1#0@z9f#id=(>jC{&{t? zoWtespLQK?Tj%S#PR_sVvOreogFTmD)YogDo4r^8%b4gq^kum#TX+A6Lm)?zS#9vT z0A~ePSJw^l_uO?{hYTJD2OAG|*Bh4vU37MK#x9M16S%LoGoYI1tXRje^v|WGr6SH> zEpM(rwA0_;|I6T@>d==K5%an&zM})3)q#fo4tr0XI%Q>Nr;01;`<%~ZxNN-ewyCV%&1GRCvg>X&JsTPXO|YYbazMp`RC79*o8j?H+pT- zOgcU~+;7~N@N}FqvOb&K4*#2jvekAiN+7t?7LdkS72Jiwbf>SlxDK`wQJYD zjgFQ_Yi~2Fie3G(r@kT6sT}*t!O1D&_?riG0YVw;eE79XKE2CTex%RrNb9LfwLYJ? z9QXL4$k*hRpLn=Z7;F3X?VD{rzUFH@Q^>#iTjTgx2v+`iaj_ikQ}OfrXZ>~7#RlSe z{gOk?3+vs+N9k7EN*;<>e<+;ma&_gl;Arjia4f8qwYB2z-Dl6wUm0Fjro>dOaJ;|s z95-{)Rn~9XB>U>ss|vGgQe!DK2}XgpZY}GoirYme(6+lStkHEu zHaa?*745f2==keZC%fy^&&-%t@=)5RufeIO?eR>mGHgS$SHGs(w6QpyIt5R5)hOd2 zr}a;3%5oV|ia#bRG5)RhOK-2DvvY>z*SFKK0rz1O`$R-U_`8ic+}(Qez{0gMul>ZW z7ybI{Z@eAx@(KzHN-;VTUA4(_xJ6|=tVHAT4Odo(D`+O0m!F=EkW)b)j$NqBF{vxr)kBOB!ia1i(BqtT~Z8uWD zTfOW2@z?kMaQt}xg3ZtugVCYZ08tQBRw0pY*CZ;<~tOlli61+ zHGcfl+sCZvpCnGUmmR`m&~fS#DGxogtM%30Qi1Gm4+8gH3)e4T*%@s5_N}+r_|1cJ zh>&5og$*}gb?}!JpPTY6+9kfWg#8_UtjjZZob;G7BCRz+L8ZI>~6K*}T~plkq^;b!d-8 z_Gr?#Z{PYVG%c8EzltUuf3p)&Nnw0!R5?Or)55xQ?ap05H+tmZhgKSTRhRE zl7Ak@=Ka6?^2?VmU(&(`cd;s>wIdJ(!p&-vIE3{7#OAkon{&!H>xTK*x1mc{u9VYa zwX{6ExNu!N?!^1@<;xn$=9}6M*eho`o)i}sZ;MK9P(V1P4|dvW$%Pa`|vxC4Yl$x5rJ6g=_B*p*s42P#kOwM$Xm8aD@9(yX&|F*Z~=p{dU>$9=O!dt)1nX;zf+oxQ% z3bUTfLI3Oe13iraN3zpScHF@~8oF}++pG5r;bW582D{UHIGD$9wkt%LYuB%T&b@A( zW-U(mF+V@Q!spl5M42JZ2g?OWibYBZR}Z=B=;n^}WLuQ##2wwUrT{@Nzs45dsTeB1 zx-?vQqe<=9=*Sgr;gju3CbeZ@io(uPTWvd!KY8-R^uy0{<_NFcW}A?O6ObCF7WaN$ zhZzzGuR_qD%mW7=8TBC9fBy98cK`>Wyk)|sRllz(;L}Xvdl}cArxAK6@cgWK^F+qS zMq&~-iHlb+S}&hdS2)fu`Q`bVVC+%$nwYGR`m~erMqD^D*Y&S*N*J4^yB4{9`<%a* zrJiv7dQp~kx^2;?%=9$ZXg9e#qGrYiZmd7zGTN2g$ie)8yGm|LK9W0QO@WNxmNzv^ zmMl5uclT})PVRW`*O&^+E)90!V;{zD9&6`_VT9asE*qes*VRhofAyd;xZleMg&jDFk{aojb>50Sukg%uhJ_Y_@}ggL-jBN_+c5 zQ>pQ9@v=^tj{Qi~dM+y$EeguX*@2UkQ=@{-jxUwXy}(w9eS#R$q8Z+%lNlgZlHp+O zTM3xLdUo{9nrqvSnpxw@5Ppi{Y8Ct2%lq;0C^~68(!a>^@-j;b2@3ky8sJvZbWJK6 zxwtxGDLz>Fz=2D^lk1ooSPY7OB8b~BhdMKtyb6$tnYUat6o(qO7CX@U`STk9Hb=#t z$3QBJmMy#0GJw!f_~9h3iKp#+qu0%isxR{M_sQPb9B1S<+!i9-Wf7+)RHm8b?BFX- z&|qj}q~py#uEZfprAW0yj~_o~uh7SvPmYfc8mc#4QHoHJEx8$RxjNpk1F14O!3}A6 z@uEfgE?tOY2o}aY4Vi=_`|aDyBSK!kmiKK+O&e2<)^gBHlpYu#nm2cDM#~_B;cjwb z)@sJ8{Pk+F_rA2e3>h66Y>d@KD5ZayI(>Fk!pxa7Ycp)|ypYrTS*Z~|(%PeM9VFJR zt92VJ@DT`bc5yMQDJd;Q++DL$+-f%^xED7!t`iUtco-7WacU;#>ul`$#+i36K7G1- z`plVzKetSsHVq5SdiN;X-Q9hzUP^j;ZK0G&1>Za_Nv!~vf!htvy|Tar6RGFpn?T_V z)!V5{ds^L6$DBGpd+O^ijg@)U zuH7IaqD(pP?5u@CE1TL!-yHPc9(MHErFu(Ar{IJQ_G_Fi3=Xx=xvUq(jh`fqz|zI{D0`nBm=g|uyq z-RS4K*-qo%9PRDv2706z4DP9Xj2-jeWBDBW+bON!qvV4JAJZy|n$-mD<8*lXVNA8; z=EyUxk+TWFE4V=oDXpb^YVxeUdb>vT;#+CgJEr}_9LBco!}aow3ruvuW)QRU zRR8(spI;*-t=01=%2;>MPu|!#JaIttQ0(D9uB_aqqL+VFdFRg4ABqEF0Qt4?g4ge# zT^_d{clzx5;U|86e#fB}pZ+f|1v(HmHL{#j8|<6r0adC|l0+tI!KDv$)kZiCcHh2= z^tHO}h0Dcge{HYDc-G&BdS4!m`-sHBo@7wreH&l{RgGfu<{r0MxGF#$i}c_^t;~zg zDjg#=!sS8RbiFodB*}4 zv&5{Iyii6JSlL+}FJjTKU1IEOQ^f!xtXgv8MeMM!eb+dLfnfSOVzL{`BnRJ*78()s zO*?6_Qqoz?Ww?*<$^jq#C|d28-kUa{F7P%S-(Q0G^dPyxQF^0F=uw7gCPyDD_K(_gc}ca_uXn1wzM8A_ zekh6(3yVSik$928i@hC=7vWM8^$UJALkTK1EfOeS9a}ru|Ae=N-757Hi~Oas!@|P0+JCx-B;>fSiNW|HN}KnpLb|OP?IgN8 zz|XS4eQZF&GP7pQ8pf{gueHcF>a2B;wcEsTe-FGeE&^8b%pEKuRD(RR~mR6IyH5A zAND-qP4;2$jj9J(n^EkX?5sKjguUU=gWc!jcW{RR^3r9L$LZ~RmY*M?m1?Dt>6p0J zW7&O_{SBY|nYWR~6_8o_3WbY9k&?e4jGv#kJi-3+dtX(l$VT$Bu6dMlTQ zD=Pyt5QL+1qo#HXNJNsUnw1YI`sNIqWGIzF@7}%J>NF5J&|M$F<@W8(uzs4P%kc4v zNOgjuI&PyUX;BFhs6=ap0sIlTwAG!%>KmxFh+ulHHLi-iujA0N_~FBcZ8+gKeS9iq z@2W2bc_EPXb*CHd-mFo$-4Upy40V2}VStMYvY#q48!Fcz9%=9WFYIU47TE)-_4QZk zMu6mKuTM`7SB>FEl3j_aEG{mNu0?je{kjInj!pC{;x;H)eJEtVvRv#S9wBy2w_CR^ z;)DcXnPYE}Sd`pq0BR|-sToId&l};nV^O`alOO)db6`CW&z{epKWn5|-d`){ANkv! zOV5$&jvP5Mj4~c*+GX*2`5jaw+S}WEgLxS0O*g9*)lRYe1F1MYQ*0rFaWQ1UREAYB zu<#vZT;F^5RyDnUe-v3m7Vx4`y?v!}ngL4oQ4YNy zZsTIub#--{y1UJR-efu|qKc5xqFe~hWn^RsMVX;U2*%at<>%)&7Y8(MA8PhmyL$EN z(h&D~%YM%}d;UDfx^?T;6g5lwrx7 zxd5Y)J-u$&?m|Gv$NE0L5$#fKEXBdAO32U4tBJJJ6VmO)Z3g40R)`EdT_|@8)Xp*c z2Zkz*gN5zc&O?s~OooBSAjC@$8|Nk1q>`eKglNy9_+v$5y;U($?`jgil*&onrsTDV zU#lu5HT5>|S}AJ&c;oW$@f98IgJ$4v)*|4fq@_*3P!zdacQpcW-oa_O4YHxBz1?{B zqVu8n{Wim`_u&+S;qaMwH{ z_+eZsd=|r9%NYC?=&n#800+&%OQ$zA$ms_g7W-3>PQ(#Tca)0%WzAlyKo9KS|GZDq z-jdJA$mr6gOC?A;UM-nv3`PpO*3O@SnYM`n`4!y~+=UR8iBikVM^I|`;~J(ae^DkL z4JfqxC@edw4Fh;GUaZa!#m$(^fjcwiap(h#+YyvPD)G+FcC+=F%6R^c5ckBN`CS!UjZ-Io zuG{sK+T>4`$N%+H-P4t}KK}mENT4{0tFgH_AF^XWn1VV(X#rce^}q*-8mV zB@i!kL4JNIBXb{J6WqI$U+XohV{RtSceU0pkETtm03&BF5D>ps%01v?oD6~Vms6VC z+IX2;PrN^iV3X?iJKJx2XVS%1?U$DJ;!aIXHL&K%8BgU1*2!`f_ucr1?W&xKN3Va$ zY2M@Ov7Eh>2@Ph{rn%}*qz@i)txGvUENlNs zum`~h?}p<&YPBdd7q3|1TxrY@%4MI}f$my?D5wZOQWSZ_YwR* zqPV%q&BM(dihKAnFyM_yNi11Y{Cqe2BL|y9Y>v36;Ai5*0T3$FdT@mX8qQdUp z1K@Hev2iAs^F91U0oY(%g)-2gO?RC*Q$b71Z>wE*WKa-y$8AO8{J9Z>nJA4^-#t0k z0;UB|U_C$oK~{5XYY3=}4j%cf>Hs}Z)s}_0|NS(-jkIc)+79db8-{yi1xg7D-?`iI3P7@ zoEHh#o*lg|xEHJ|pmRuqRm%bVC<9Vb5e!t+D2V+C5UL$FRdwC~Zrle27jE793JlRr zZp4oW;FcFC*jz`t#AI&^?E%KhIN}1Fs*GA(8GH!Xj6PWc`y6+>3g67wFoPHtv> zx}7Rm)db)RBu_dnH@RI<#cWUv_7F9#x`z~G1dWA`8`AJvCRI3z=Ji`aZ|?;dDaA%h zv}lxk_UxH@v65r!UAr<+ZG0WRn~hi-RHGx2FVt$YzP_Kcc$0<_(3lTcfwASBx}ZA} z@s%ANKznNAD}MRqesZI$Ce<5j5BjYa6B8R68Y(y%SEbdRj8AtN=}M*|Z|AOEJj|G^ z;cz15u)Z~Awh`yqxS~O)NVC#x+8#`qHsd&MpOgjeFlb#w{h7pM1|zX|0CB#)w0I-Y z!b}BhsYJ(qV;4Mef^KG&r|K?FMqSScHNGXjl^vBas*a9n_~Z~QID&&Vg-ekPRuJy^ zWn-f*JCVdI*ZQwVB<8Dwz zGWv`E_~Q@SpduM*HA$|cj>xAEWthx@1z+j-A%LU>ZuQ*uJsDV?16_pxJ3$k7sqR`N zCnv{bKXWf4+9ErvII%XKqiHW#iGJ*{c0lK%*iGEr%~FGni6%Y}Zn&8<=dX|l1-W?P z!a!P_>9ZHT22)c0P8xn&J6dS-%e?eJO@ zGiLYr^z;o{DY3Frc6Ni?!l$J!oJ=dLR8eTl=boR}k02KYjG^v-P6>h-qTR>0kIz)Z z$C3bm=t41(r4+8j8>N$}0q7muoqVi_qhkOS-G)xYaGWMq5Tr391oAuE9UhU^#3uQ52ddV%hMzNmwJ&*i zD1maM!!bJC5mVutVtDeH3ZyI)O}rALeWmnqV`C#0o3zuEiX{g9WM5PDkNQUD0vlHa zDkPDkPk&AXjb7v{mOR54B_OW09Q01#V53{dOM&dN<^nIX4|CYqDpRdn`;Y}XP~5&j zTD1Xl76Aga{q_Ab9|~^=BAT1vxjKR@O0;~pGu=(<5ujHf?o=7tYDV=;2$a@e< z)h7Ps$s^@sa(dQi_rpi?Fqyj%hbaL2S6bLBysD}i#7z4iMabb=dPN6fHGaFKFD zy{(nI*d&4g(uIo0c3}i~;c>uA3!fgnV2Wqo~p zTOY3u{X~8q$qOH**G-!MjFyU48ux6HNrFbbk=Bznl3>@PLjVP3;@XU<-BZ6qFY{dN z{_<=$x0T!N<*Cj@1|aFk&`y0v^zO+8%rX0jeNd!0drFb`}R{ledbJ*+dyxx*R!K>Mqaq7=HDku z6Z*UhdnaG@?|yo2{q0+Hou?!(Z_}0c#eU*?_49KCzZ+M+_<^L0kiWmPCich~*%73& z2pqi7-4}nYR$_NA{IqE2#MS!uwMWDlKmGHU*|TRWL}?`24EGsjj&!FJ)`RfpTi-Gz zWybeFC`U-31v;XjULK_`NYRzk*tXw8Sy_MrBK_qw%Xyat^Yrb0d9DrOy#;UzVbQg1 z8oo(f9(+5YeN=!B_V)UA;_gAqW2CVoT)*##|FmMhDNWJ0afDFs`_vn3ISUHG&~6r8 zJfm5SgxiTf|J`Hyw~uZij%Rs@99KsNNGi}=qP6W)EPH>Rta4I!VyVj>8NBS|pO&Nj zmQ_FbEmr5TPqD#CkZ{_{#mIm57d&po!=_l2k(s&p*IyqXe2q&D-bN6BUYKB7{m4mv zwYw(5jlS2U*`Z47j2pmd|Hn7G_FP(YJtQOqQT-t}qUugDgBOeT?A!OUvQl-)=i3xH)yA(A7VKe>?u-1}~_|3|S{E-(o}*gtr5rwKURf!f;Q)sGKMqvuxfynGV># z8!+vS`;=)y9@->uN;sAUcR}tg!%~2fFHg6V$CbFB*<#o2CprGj8Z~q-$6i^WN!(LG z!Z_Z!*=5)Umlg(kZt#&3Lkz$rC7*&J5>6X{b2;P=v!p2PbQNq)B}k{-ZBP%(;E;HL zK%_A(GQ!Xl?>E?*5W!(IPyj~~Wrpl8fALoy zp*|O6iIZdB90&?OySy~p$6#v8beya@J%W-rmt}~>b8B&i1M!h0y$I#47Zp_@@W&x$ z?p)hj6dM zH~Y*_Pv&fZoT#Ox)!f`1R4h3ngT$EHC63%{O-wt0S7w(WJwiY34I2)CngjcA7r1XN zbF0g60@ZZoQJR&(767m1@rH8r9^{ku${1bS8*|@E;iL~fhe(Tsm`JgdQwG=p>TyIu za6=pU_++xbeYs34>*?t!Q(QGH0MV`lfaGf>H@>%-7qPd!jOo*-8$pY< zvU>6Dw;<#;aEW`!mV!Gd1GaV25_BKm={~(~jjyO#2`X@eBaS z-+==MN|sw>+()(!2l31b!cH*(S;rxKtk7(_8p+hqoyh-?zLF~Ox1j)aE$^*b^twTW zhoHP^i_7Qqg0X~nQXU>2gH#K0&>Vg|Rm7}@hyb9v%FGSRb7WDfcVEYKo1kD4HA8ix z0-WAoV-iEy$VWi;)u))9c>Mu6x$Kr94?#-EKsKvXRV%lJQ(5g9G#N<5Y~DYe1?iue zX0@b(Ts?3al%$Ogzns?8)MTb3)%SWAs>eF*n1wk}Yw(>gm~q|Qq*)PMggSG|lqnSh z1eS0Zzx4GffjB1a7i`)`K(p9x>&_}cf;&{raGNz|X-i5)VyWr zL5}SHg9p6>0s;VwNFOz@6QBS1ja(v8M$tD}tOo#B8-cQ4&Rj5Mu;xldOL_5qCXdn)mpPYxq+=&#k4wk zvgpGB&z1JGSK~t%Ip^Umz`h9qgYu%hT>0QZzY+INJ&y_4hqXd&t~pJmdDCAU5rQO8 zQcbp7_WTuFJnLH+EN*Zkq)gheKVSQuq?ro`p$({y6YQ&3oQ{atXsFY2;`?98z*13= zo4Y3cC4*u9em-3SgOUI5vTmM4tYu|FUHPsoPVY|sT*1zdtop_D>YONczZ>{b<$pOH z{ks(PZ-4j5=If^;@&&2}~B5Y%&LGOi;=Cfe~K>XgPo7){ihv+`eky zK|1+w@IoRwsn=p-Q)RSg_wMIlG=RD}w%f<@Yp3aV37geyR_F7U$tGS^wQ-uh)CDR4 z9lyQSwaThF-G>f=6faVTL83gtX zU#$R4)phKQ%NJT{0qqC@oV^C&RgU;jFFDCKuzK`CRxtk3TtNIzqzl1V&=57w6#Gyl zE5p&%{o-@(i4=XiDYw-#?BhUf1gE5ISuCKV1$0>0%`zp(hO~)76J$R$mm|ZYgN?M0 zi8)e<(in!;0lnJOLWI_ip+1436OJE}y}Px%W(iE9qwzQl0QJY>i&2Xx!H7W2mRj7= ziUH(xZ7%0er-*Lw^jzTULY_t<&2*RI0;sqOVtQ>pR=AAGLQV(Ri*g~68vO4^R4>Ud z6~V)|Z{KRpck>WL<&!C0ZeWgr%CY(SKBXuPkx{6#HCZm{Yh`XB zZmHrSHI`~jTyyLNN`ZJg(J+gbEei#Dpmdt~P7)^*kF_E`A!wtaF%@CMsF`7&byl=q z$HNo0| zRFpQ3tb{pnNT{Mm zv;i_m+JZAE0uN*M{P`80t9O|;G{F=FuNo)o!i5VEa__F*lns8`vG3!3ycLLb{r2rz zVAC^3EjG{+tlBpWO`fPt&=D?VHGxP}7NIHt5VWRr4E_RAGy9=EKCi5-tZ7KL(4~kB z5j-W#VX&(<1peUlYuB!QDXHuH`JBJQ2X^21N1jgNTJG5CTL9H$fT7;tDI~%K)Zf#n zOX36tXdI}G01H&6p{z3Z&nZvWW?der>XX)1tsB9PI4%S_8Q(B z0UaC$&&-L)i{wb!;AW=*QzBh0GW)&B1yJNKp~<4UARII-<^TRWwGoDwh>8cCkoL|` zav8Cu1BrT}1n!j0;1-DUkZ|ma9cTjzKK9Bl47Dl*ByD020E&6EQ%~pspJLC5jG}tO zv0)Kpghiz8m_IK0C9-Mu=zuR-2SF{U?+S;13>fnOayX$P(jF^yoQjT((+7ijx+CF~ zWZTma1qA!z!=g7G+8OqTP^OCN((1VT2}nq2!2-sYiFgIf6g!esE1&+ z_S62nt1Bbo^zt{rfCnj16&D4NvRR_HP?#0{P5$hK3lVUt0j&k#%#c$PkH2_r(Uq%L zRREa~hjHS6LvPsgm^VZItI}>cXG$cOdOuJoCn(1V>Qp#0}82g~Yo>MoW z=EKHBk5SRmG8QK6DdjP`y2LaEzrufeBI1xmw!<|-HAV$2FhO66T&Vdpl1y)NY(DOJ z|LUn}GuyFqu{7zCVwt{MPCOu+C7>1_9&fIov;q!HKiqmIWub?tEC9D24)J3#ufpz< zn@(3HU~s#$%`O@r7zRPl2;mCm5r<&0%Jc@DBl7Xi?PA7^Jg;oZ9-I(cw%mKnoIPib zBBDn>jMP$WO|k#N`q75^UN^mUE7v#JX|ghW;q*8*k^05Yl5^ z(hMMYn1?q|>ID%;j*Ud?)`Jg&f{x?SR*1udZ``|UgzQa_ni1{46?fPQZ~IW#5Kwq^ zsQt5n?UVX`Jz#2eFin-PoJ2wYQU%~ieJA@FfgUo2N$(_yH#9uZ6#|NpNTv2VcXhU@#xEjs#V(k(>Leqt^h8btX7KP^DiaxTRXP+<;z+9eB)f))7GD ze!!O6pVZMJavcTH?4|t9iutPFiD$q%5_)Y~YTk7W4G)u<7^+MZA|;t@K0;6ubDlaO zrL3|GQ;E7mViE}sKtq@Q{F4G*)Vnv>Z=2o5oS6!^ZL@(ZSFR}A*!0O3#bfol>eE$G zv?Qh;h3DkAJcONS1T0>dcarVopI=`gnL{o;X@N{)hzV3sRYS2G4x_r8rPBi+JlL$4 zH8?puwy_|QAD~5!(oKw?C^Cbb&ygrRgO6{;J zQ!2+^FoErrgrWHDiC-LH%_gRx?EbEq#I{4*sKA@ehMm8@yMSYO2oI(OrTh43j~jqO zlEY7vx!>YAJi|omwk3V~^hqYBZ%ClBrxXVi^?h6LfHro@rs4~J#qR`G-w2|Pmy7HC z<$?K>Q>_f>$-?rUy3xo4G%dANkQsdM6^;WkG6~|#rCD^3==FHw7!XO^aCw9(k>87; zY`|9%iW{PI2smw+88YGdhi(WFZXc-mdmEI)gP^!6q8_S11f>W_lxV>{Tj zz@1m%FeXBff#c~9K|w*P|3PQll;*eMR`FHsKz`vmnQ7E^klFico2UyCcs~qLBngCL zGl5wL$^OK5egVZB2BWiJb->O){fdVBX8Mz(0&HL9+n~3%L95na8#G~^mJ3xPNONSz<#0YpnzC;z;O7d9_gqUTZ2{hMbx?Csx^ z6is9jR(bPvmSq2-YIzi01 zY(K(8L2&rwl^krcTDJ|5M0d&Mmf&H3VE2Q;JLlhk{0spJBu{n1%<0o909Gqa)US-^ zM&0XkIJVhF_7`8gc#%WWIR*4rB(U~@iFO58&px7v%Lx4Kdb~E56^EYr)~^%6g^?1- zh=9&pAtm+s=|T=s(_1)YN6b1LZ%tq zm`bNDTO>Z85EpyRa(pYmS*;02^D1;*g)2O~M0HqcmT9#R!s$le@JVZo_?7ypl&&Ek zi0vB5aOhpMV8P)SBhTE7Z(m*xLs0Gmi+CJSqP;db2JH$sJzn(>Ckj^dJ6z>ool$|V zI|2?Q2KSsIm6+rfaw}&B|1rNb$xIV|Tq+*7g2N|a1_x&YA0J=3^hA@ z!D;~(VDix96D~9!5u52Z&Ghn&P|L)7h#5Oq*G+_1TelVOP{U=h^LCW5GRHgrwJt%^-GdNE9FGfkFTtsMjE!%w@+tC zf+XQGZ`n%NV2#kN1U(Hku+zNBi*?^#Xg;Na2so5U0QhA(yS{(vfYa>z zzP`)FOeb(I!@a(GQx0itWLIU!=HQ>l# z{sl+o?{%CLi-H4t=i%HgBvY!-GlM6;WCy49K5R28+9KT=P|{FujmupW7NEx?5Yz3p z{T)$WX_24?UoHzo!Z3j!Zi7;&=SjdE zU*ZfpJDo#HCoc)N*2Ew(ngxL4n*aBm#n;N#@w7qaRYHNa7=#r(Ec;oK-#+ac#T^a! zO?cKA42M6lhzJjDEk3#`Sfi7$vI4*{S+Ft3p#G})$E_14kdqo!!e=F2*nLwsLQ7)(1So*C4$izfHu7RX$DD$GZ)aQPn8J7MU(M=}%*PS%m|I z&`nA%Da9yj*Gov$9~%Kj&?zz*Ps~)6dUz5{xq# zb@S7;cYf^YiGc!0He=DQyk$64ShwmQg43K>plJ#rE^s0Lt=!sT6*{0nzeem=f?n-3 zZ&L1KRP}JGL2N9C=FufGAwq+QDY$BQxWBVnk$RWW+@}<+C5{@e#uP#k7IyNe?%+Hs zn77PnZgcaE&-(nApFNSS>%I5iKVN8-7BTlH@0GC;4-S^+fr(KF_+9KHY~9Ht<(_`( z-$05k|DV)s9bd1WeE-DifL16>kbpQ*yuH`sA3M$j2o|eX?L|o+# zz-kh{oAE%A^*^GJBe*{X>hu{LzW+D?)UitX3+OR4%2pC|M-JwNtOY~P5BpQw;you> z&$GWNAVjO6e*t9{(|!_0xo@-DXLuO=%ZAbc*a!*`fZk-#}pNCy@ozdzCX-@gM&FpSx{0-K?8INeqYGL z20o0J1qDnv8UnDHe)xTI$O81wY2c`p!o6`MX7%KgXQ+D!=5bDI0nULVl-gfF^26~7 zcOmMZfm<`gcUW0H!u6p-=AOh(bOoL-KZ|c3Ob_%;(WM9f!n)iP>C}H(-9D-u%5QxD`@w(RmHOqYAhmv#iO#cCS5>%!mLNsR2(9ImGPj z>?kylT^Xh@5tKzgoP1<`Sn#e<#RC$RI-T198I|DqN8vu<@&^_exHEh5vk?kkvg3n~AF94VLj}%wHHG9~gmrWdQ0tOcdZ1$ksgC;=;(IjsMzLak$@9YeS;r zSV1Tb)q2jAgQi5oK=BVRTBcW6zibQqOTcE-JA&o36bp7ggIb9+BNmH=wtUzGCN9uQ zoCJN_^ot{u>w>8_E9%|kYI*Lf63HP_l5!Jd98e;)rXz39uyu<6wVi&(DOvzNQAJynZ>-Dd@+M*J2#dn0R)mNo!swR zhSh05>m5|@aEuN>TZ{r8jyLS}MFZm2AFBQln20-t6AtB<98|u#lnE;?gJFxsHOcc} zC+`;emW2Nin@D)ZBg#DgJymm83+7Od?+iB1NSxp*ll_y|mgDNP;3}7t4#@!E%Ae%s z3fDb#0dV?pp{GV7{MDGO|NfR26Qtu$RzClI*op>8$@&ZC3}6AOo&LgtQ*7tNlBRsJ ztz-|Xg*YRzyyr*b(Ai$3^A`qT`@SbIgW+RHfU5#D3fNyW&rc?`9h}E-^N@2>HB#Kv?+=He^?yR^<%gHNt585_27B-M5U6>}KhX;FNAkzR;*O*ElJeZ`KIr*yR zdfgv?-3h_Y*GZdQPYL}bzLI|@0=xHDr$%BCoXWp1pME=j0ll>*;=4|_N|81jj(dOh z_^80Hk@2xXDHssyf7rm9?jpuz>lgE>{l3fT@Zo#t5IXXYgR&L9u{cgb2^Y?t<6XV_ z@ju>5+6uT8gX3@#G%lVfGA6Ivlg^kUI&p~eM+~MGG}yT4%sUQtM}_!1zWCP%r3L~w zn0)>8j=l?oFwEB*bA#dGg(>TA_e*jSp@0>i0Od=NX!+rQ1Q&FW(#{Ib|1Olp*Rrdr z(p-czP#9eje<6bPI8C@B@ywK)Iq-c31F^g}~1aWRWiBdhv6&h2WbR1zyU|8+JxZD&Cabqxh! z9R@&8*GWB-kg7r<@euIr`k|z{dx}6bk~!HCz;H(p9|Zb|8WLyEotsd(*k)EWowF#Xt-b4St~c0rc_48{iT3OItw_kX!`o4LRjOSa!hH{?g_Z>1~KE z*eoEmJLg1X+@#LC!qn6z$DEMZ$6-945%}b!M52!S%OlIeFlOr3`eZtVyOS4<3?*XzW zNacbFsfU_uk&EHXjb5tje25(L;C0Q0`v5YL4piaCre1MK+$IRwqP@`c_T!?DmWqjAzVprpXARslakq0y;qcAawGvP@7X;ff(wi3&I4f{TdSS*hI* zeH-Kh1M#ICa&VOBR7D?7K zaH(WHLrodVs~8+g{UlattSbcF*|vYmS-Es}of#Cw*H~N#w8p*zM5};5za!8Ro>g0tPxC zCWwFL8MtxC8!$Nwh2Iy9y0V5w&0W>YD^`n(t3#Q)Bk7X1OLqhOekL6OP*B3)pJ;BK=J`U6jko*Q=o^fjDt zP+HV#Lglc7qa(O68SJt$4|d@`0NDL3;Da!D`bl`z%k!Xd14L}WF^icdt}JdiA_|Y` zKvQGVC=;}#S+QMPMi=Go*9u+%yhKfgD^Rm=9|YxGkPdZ=;R9fC`-V(EP=b69He$B+}8M1My((=d@ooCdtWdy7QYmbrbh>acpaEox@#!G1z68On3i;ER92|g7r1@e))b_=x z@!fXK9Bgo61wksLo(QyMpGA=uf|L-Z8lwXr;G?T>%Eb`N06qoV1=?O2+9d!!AI=pa zJ`Oyu54;x0EalKl(?{0Q&G8eZ@1*(P`Fh@f?lrC1wB$16zeJ}&a|{o>5F)0EMZK||1h zEogm;257Pp*at7#eP}QQe$gCrMW1C_ma#Al+loP9UJ(q&P(Mf6(F!TV_*<@CSX%8hwZWqiJ08Tbbq22 z4Uve9WT1hU^HFs&xB}|k0Q>zAXGoewHXnSuF$fP5E_EE+cqGuyPEGmrUZ4Te($g&8 zo#rMB3mJt_;FGSN*5~QrBBH`V{7b+lis(OIKr;#} z;xnjuiHsqTPHHlpl7Y4STC#6UV^|8qM+n`OFa-RwqNS4Xy82-0h@WoRLfj=f=gQ&H z;2R+~HwL}PLm*A;!kVdo6{X1zAbZ;ZKcTdSQ0tyd&rPCg@>w1Ht5-n0B0mnSDtD#a zbl^g(OfV`X%5^`BCYE6nldS}gR1upNB25TVc^EjdiW9(kWUT>kfCt!?GCD5lAw0bM zSx7^0PA?#TIxxzP;C>qrzcgE;A*5-q&jKJ=ReCJcL4`7vJSyW3v)+}z6r^4*Y!$Kw zk^YUt7&(4A6DvgAKegk5PNk%Oce{fEuw&xYQf!b-nAV1-Nb1il12IET0>@>1$X^%7 z4|p#j3(!RcHB>6P#lJklU3UUiFX2ldR&A zX0Y?Bpz@$O8#D|EZbi(ec_Le>1xv%pkFWngf4qiw{sc*m&MHC|09o7yx0-5dcJ170 z+Fl30Op()XOze;fe+j1>STYoT{oSzT60`v=RI{xAi_8hE_ znb}6Ln6sDg*-N|0f!tZ;)ZEVKXfH5Wa+zn>NWYnCzVHX69$^8 zpvi(5JtO2iR7nx2hn!#ftev}Zs}k~6fu*-Mw*=go5dO=6iNa}yAX(t(p7)+SX8Wzu z|Ib!5v7t)nfb)e0ywOk(lI_Xfn$UpryPlV~VEEbSZU&>|X0|3-96)3d)UI%|DJUfF z7o}V%7+m%wZHZoL!GOWa9FXpX`~E#@_-L2 zP!^!~Dh9Ywf2%)ckkX(kFs>hQ0%#-y2?#Xd1tG!)ru$KRgy<*=fC*lxG(HBjKm@e% zHk<|W|B_U(vbDYOI`aD=JcUb3Hie_B=_6Qx3dspFh32RblLPbBM^K3J@afP9OYHZa z?yO(%P*U{NrLxv7{q!GwFyC4iUNzr`r*W+C)_qif1cWd~@FBdzhkFHH{TCyQfg}4< z___K3kd4R3Mv36(CdUn&-mj5C$rXz-l>lwBRx8aU1h#2I8=nf=u@m7Mqy~&T@bhsK z!Y)B^5`_tf`zaE_@IlZ8uG_i~+omy|Uq)@ujd@NyF~rjolRE4OEfS@zI%d-EHA!KG+b7Uff)z}$`DMcy9G(q7=`ieF^RboAvvNL zw9LP^z8pd<>XM{^yA)@!uHW4+N~roxhcl>a257QhQXSNaNw6Nxm!a7i=s2F}TE8Q1 z9Zb##gx7HLo1yE{JoOb>sX$WEUy@o+BbQ(}jCZ~D2~BDUsC`frX|s_ZHEVQ06LI*1 zck5I}vv%Gsne6C!F_Vo)km)c5z~_hu#tHM~&thZqv1ysYtKOeV6Aj3)it!#A*ur;& z4d)MQ zJq-UJe@CNzt>UI!;D$dWda`b5w){WYif}I79G%55l6e9`k=}%eYGB92!Xq@!T%Geo zo7#;j-vULKfyV9w&)80I`kYC37e+S*k_QvbND9bYrZvlv>+r?;iprB$5<*wv_20Q(e#S>Y zmGrI5yEWHr;!O;7deg!M3sxB#w$3%w1a10TuDbdUe@A`T2&y#FK(q_Ynj&1#kHRKN zcF$7kOL$(dgR#D7IM%^)QARtD2wM7J#3jG?-~N%GrYz|W$L8N4D0m1vwRCduhdPbt z1m#<;J;}g6Uyb?XUiEuc*)jjK-tsqv{NoIke+wTqAgVQC-X> zt>}tm*KdI{-x1s!^sakoDWMUYr1+iOW->E&;j}86vwH=i=@16A6`=&8Ib~OTe0(ru zc89Ic`SimWt8)yl5E^1D#wtXEvRTqK4v`mMzka=iVy?loF{>UkTqt@~Oqx2$5Wxhbl}wcEGXVF-RhUw3_N&8xJ>{m^nv;q%uc25FRR#&|3< zZi_>cpM{CSU?+qK!&d_~sbi>SHJo~hYQ6@WQjoehVO%FUA!rg$CNa+BJyNa4V48Y7XY zs=={`W0qxNG3E%Y!m0O_#04lr&PkL*^+}`Cd=-=5-NFrUGl`viTJzXV8hzJzEY#fs z1>Q^K%yJT!U{(!AQBjo;Z|->$w9$I>WT5mWiI%2`NFOa)WrEsA6(wkYvzOcks4^&4 zN&uCO>tEGO>Ab+0WBVCTkS4vuC?nd1{{r2uCaQd{)2iReHL%|jbp>XI5hNGuT!=Bi zN4|lC^OdYD_L6dQ#oxpYtiTi~I58ekM>+2Cz|pQ%CN#tyqpZMI(sUYf=0M5ADKo;_ z)?juHnzwErS>7?@b{HPS_fp{_wZ@~Ap|T2+`J-c=58*@61Or~;GFTr%#RRxX6sjfQ z+qplF%!pk#K_Oqp00{>(kAm0dGn#BGa{FC`I^4FoytSvo5HhwAHXwUaoULUhHQ+(W z-)jBABWrxji5&D`?-R@oi{5I`09YJpg8Ve8q59g%GbYsbQz7L8DG8B;Y#_u@&E&M- z@vF%Uc2Gssi^zfh9|&$#ga>LcWf~Pm5V~X3M&fMUx8<{|#a;%Z^#TUqU60&=9p{eE zcCYJcU+83>zzGHztS}Fd_3(KY*dqLod;?cd)0gV%4~nP*Y(u2P%nGy@k_3nemqfZH z-c39ciSdKHXoUmFDo4qW*3jwT5wD7zk)b_F6LGP?&6q%qDw3#DYAHf%asSA(w8vNM z5lul*)WjRIWt(_D1j$2Izu+j82+)T;pN`iu26iJKS>pdw03U-H4nn>I*qdmk(12_D zku=B&T)0_9E;vG(-PPe33b!&T+rul+D2GAc7ZT-w{chg45d=$(=EygwwZx0J_2U0& z<0Iy3RY-zaxQS902--^Z+QQ^l%K|wi9FN0dMK%I>5=@igZ7nfe38R&MLy&>2n?=MD z6kd&N#QktEhDKOLSbes1%ouNj4UA|~ z-@YLrSr>x&E5c5_+tzgY@*>`&-U7PjASg{CZN8J?TB?Qg6OX!-{!xt9N~K@H-!T!a zA=)Vh?f->yY3DtnH!0weoW-f=ipdiuTov=9#h~l-f|tAneb*Oz_qJGreeM=<@!NRb z2w%b};+2x;UN1wGBFn7|NWCHCnkCEF9gegzS7GMnDGF3(sNW%V1cO?{?9s=;az~FoK(ESO%=;7slNSst z*9TDWqAuuEKa7BN3=P7v7K4vuuoxF zeUS{I^CD+_tzF!)hx^eSZGy#~m=B6!^r%CGKp)295U<)u0wb?xQsfCcJ28Zd&5FS? zan%&(a>++z-Mw@I`7k~;rp)~Am0rOy*`m*2{LfGSOV6NYd|KhK)Ee(MCdcXFGWQ(Z K9li7L>HiBgT0oZo literal 0 HcmV?d00001 diff --git a/doc/parse.png b/doc/parse.png new file mode 100644 index 0000000000000000000000000000000000000000..d146575754aff373c04bbc7044bcb44d5df1bd9b GIT binary patch literal 27893 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 literal 0 HcmV?d00001 diff --git a/doc/performance.png b/doc/performance.png deleted file mode 100644 index ad0517cc9229f0b6daaebbaa90a4c17a33148bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42792 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 diff --git a/pom.xml b/pom.xml index 7d4ed40..5267b0a 100644 --- a/pom.xml +++ b/pom.xml @@ -23,9 +23,9 @@ limitations under the License. com.ethlo.time bundle itu - 1.8.0 + 1.7.4 Internet Time Utility - Very fast date/time parser and formatter - RFC 3339 (ISO 8601 profile) and W3C format + Very fast date-time parser and formatter - RFC 3339 (ISO 8601 profile) and W3C format diff --git a/src/main/java/com/ethlo/time/DateTime.java b/src/main/java/com/ethlo/time/DateTime.java index f665644..d23a020 100644 --- a/src/main/java/com/ethlo/time/DateTime.java +++ b/src/main/java/com/ethlo/time/DateTime.java @@ -230,6 +230,11 @@ public LocalDateTime toLocalDatetime() public OffsetDateTime toOffsetDatetime() { assertMinGranularity(Field.MINUTE); + return toOffsetDatetimeNoGranularityCheck(); + } + + public OffsetDateTime toOffsetDatetimeNoGranularityCheck() + { if (offset != null) { return OffsetDateTime.of(year, month, day, hour, minute, second, nano, offset.toZoneOffset()); diff --git a/src/main/java/com/ethlo/time/internal/EthloITU.java b/src/main/java/com/ethlo/time/internal/EthloITU.java index 7913f2d..51ea892 100644 --- a/src/main/java/com/ethlo/time/internal/EthloITU.java +++ b/src/main/java/com/ethlo/time/internal/EthloITU.java @@ -286,7 +286,7 @@ private void addFractions(char[] buf, int fractionDigits, int nano) @Override public OffsetDateTime parseDateTime(final String dateTime) { - return assertSecondsGranularity(parse(dateTime)).toOffsetDatetime(); + return assertSecondsGranularity(parse(dateTime)).toOffsetDatetimeNoGranularityCheck(); } private DateTime assertSecondsGranularity(DateTime dt) diff --git a/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java b/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java index 4e40a46..74bb474 100644 --- a/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java +++ b/src/test/java/com/ethlo/time/itu/ITULenientParserBenchmarkTest.java @@ -34,14 +34,20 @@ public class ITULenientParserBenchmarkTest private static final EthloITU ethloItu = EthloITU.getInstance(); @Benchmark - public void parseRawDate(final Blackhole blackhole) + public void rawDate(final Blackhole blackhole) { blackhole.consume(ethloItu.parse("2017-12-21")); } @Benchmark - public void parseRawSecond(final Blackhole blackhole) + public void rawSecond(final Blackhole blackhole) { blackhole.consume(ethloItu.parse("2017-12-21T12:20:45Z")); } + + @Benchmark + public void rawNanos(final Blackhole blackhole) + { + blackhole.consume(ethloItu.parse("2017-12-21T12:20:45.123123123Z")); + } } From 91dce62ab45eae57b40a876d94d4948bed3d8424 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Tue, 26 Dec 2023 21:21:51 +0100 Subject: [PATCH 4/7] IntelliJ cleanup --- .../com/ethlo/time/internal/EthloITU.java | 55 +++++++++---------- .../ethlo/time/itu/EthloItuProfilerTest.java | 1 - .../java/com/ethlo/time/jdk/JdkRfc3339.java | 4 +- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/ethlo/time/internal/EthloITU.java b/src/main/java/com/ethlo/time/internal/EthloITU.java index 51ea892..50d4a23 100644 --- a/src/main/java/com/ethlo/time/internal/EthloITU.java +++ b/src/main/java/com/ethlo/time/internal/EthloITU.java @@ -90,6 +90,33 @@ private static int writeTz(char[] buf, int start, TimezoneOffset tz) } } + private static int scale(int fractions, int len) + { + switch (len) + { + case 0: + throw new DateTimeException("Must have at least 1 fraction digit"); + case 1: + return fractions * 100_000_000; + case 2: + return fractions * 10_000_000; + case 3: + return fractions * 1_000_000; + case 4: + return fractions * 100_000; + case 5: + return fractions * 10_000; + case 6: + return fractions * 1_000; + case 7: + return fractions * 100; + case 8: + return fractions * 10; + default: + return fractions; + } + } + private DateTime handleTime(String chars, int year, int month, int day, int hour, int minute) { switch (chars.charAt(16)) @@ -298,7 +325,6 @@ private DateTime assertSecondsGranularity(DateTime dt) return dt; } - @Override public String formatUtcMilli(OffsetDateTime date) { @@ -444,33 +470,6 @@ else if (c == PLUS || c == MINUS) return fractionDigits > 0 ? DateTime.of(year, month, day, hour, minute, second, fractions, offset, fractionDigits) : DateTime.of(year, month, day, hour, minute, second, offset); } - private static int scale(int fractions, int len) - { - switch (len) - { - case 0: - throw new DateTimeException("Must have at least 1 fraction digit"); - case 1: - return fractions * 100_000_000; - case 2: - return fractions * 10_000_000; - case 3: - return fractions * 1_000_000; - case 4: - return fractions * 100_000; - case 5: - return fractions * 10_000; - case 6: - return fractions * 1_000; - case 7: - return fractions * 100; - case 8: - return fractions * 10; - default: - return fractions; - } - } - private void leapSecondCheck(int year, int month, int day, int hour, int minute, int second, int nanos, TimezoneOffset offset) { if (second == LEAP_SECOND_SECONDS) diff --git a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java index 5194aea..224d984 100644 --- a/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java +++ b/src/test/java/com/ethlo/time/itu/EthloItuProfilerTest.java @@ -20,7 +20,6 @@ * #L% */ -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import com.ethlo.time.internal.EthloITU; diff --git a/src/test/java/com/ethlo/time/jdk/JdkRfc3339.java b/src/test/java/com/ethlo/time/jdk/JdkRfc3339.java index 6d71537..3250ad5 100644 --- a/src/test/java/com/ethlo/time/jdk/JdkRfc3339.java +++ b/src/test/java/com/ethlo/time/jdk/JdkRfc3339.java @@ -20,14 +20,14 @@ * #L% */ +import com.ethlo.time.internal.AbstractRfc3339; + import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; -import com.ethlo.time.internal.AbstractRfc3339; - /** * Java 8 JDK classes. The safe and normally "efficient enough" choice. * From 7675bebabf74a7d1b5d81f1369efc01efdd33794 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Tue, 26 Dec 2023 21:24:15 +0100 Subject: [PATCH 5/7] Typos --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 97b2d77..d0ec7a2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ An extremely fast parser and formatter of ISO format date-times. > Date and time formats cause a lot of confusion and interoperability problems on the Internet. This document addresses many of the problems encountered and makes recommendations to improve consistency and interoperability when representing and using date and time in Internet protocols. -This project's goal it to do one thing and to do it right; make it easy to +This project's goal is to do one thing and to do it right; make it easy to handle [Date and Time on the Internet: Timestamps](https://www.ietf.org/rfc/rfc3339.txt) and W3C [Date and Time Formats](https://www.w3.org/TR/NOTE-datetime) in Java. @@ -21,7 +21,7 @@ W3C [Date and Time Formats](https://www.w3.org/TR/NOTE-datetime) in Java. ## Performance -Your mileage may vary. I've done my very best to make sure these tests are as accurate as possible, but please do your own evaluation. +Your mileage may vary. I've done my best to make sure these tests are as accurate as possible, but please do your own evaluation. * The second resolution test-string is: `2017-12-21T12:20:45Z` * The nanosecond-resolution test-string is: `2017-12-21T12:20:45.987654321Z` @@ -54,7 +54,7 @@ Add dependency com.ethlo.time itu - 1.8.0 + 1.7.4 ``` From a0b6a626789653ac9a88e89c29e8452b98acc0d4 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Tue, 26 Dec 2023 21:58:38 +0100 Subject: [PATCH 6/7] Updated benchmark --- doc/format.png | Bin 27461 -> 27554 bytes doc/parse.png | Bin 27893 -> 28395 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/format.png b/doc/format.png index df20aceefac17f9721c0f24425a125b13958048b..635f45ffb1c9ded64f0e787c040f8664d810ed31 100644 GIT binary patch literal 27554 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 K5VG&g<^K=vZ(imA literal 27461 zcmeIbd0dYB`Zj!HVHvZQu~009NUcgGRF?TxDa~`Jq&b!5$-EG9N1+r-^Qd`_C{dz$ z4wW>cNu_#^v#hnP_qX@&eLv6pJfHWUpU+-olls~v{-fWK9 z3`}8(v^ZvCcf`toA$!Ee($vDn)ad9c zTLUX=BMWn3eo=m5zE#IedVf+Y$O_N~lzb z5rbj;h`IX@C40ZFdMD@N{_*k8BTlW=*W4p8PTA{xARY)Bg|8z$)luM@3t~x&Wp9`~R$~ zt6Q{UMPx;krb$;#VzqXStY-YNE9d93KM*#2rC+sV<;tj!A3r+jDC+#e#U*h0*#o1} zVD;KyS>Ltz`RiAE6U~r=cNcMTn#Wt%+oxaaH050xPwlxIIdt&u)`HsFk)(k{pTde4U60iG+TR3T(9UB8%~{HS{JH1qOP4Rd zjP2T+eWCNd%gBIn^`jPT_T>!EWZF4aezO*?4Ylp6*=qCAbMH0IsFs&LCWW^Iw>p1~ zZ7&N8ye2ukK3zJ4*Q6ry&FlNSgh$_QIq`nCtlyT;4NGtCJA3x*aoneIMP&7+o^5vB zTA4#1eC_Us`*mI5a(x|>J?2>3BYRM{*CJ~u_`|EazV!zB?N83l;n-?(+bfZhNV=3I7%3Lr-KNUVKR&2httcn)FrUj! zE7NIE<>7&wO6j&;P8zl6<}AG-pevc~p`2!8lRoy$9;h&zK&T0SlRBcVN!ovf$ z(QECN2_8Mm>Gti!Vt%c!Ndv{ROvW1B#&3p%7zWq=wq{Mw36ZN^?Zp=Q`ayR#8$CD_ zxVP=y1+G`!j}SVR8PcP=aed9c7f0icmjp3I-`(U+O-VWa{^>0fAU;pjPr%&=qN;lGMyTaYZhVp}hT}OwRtlxh7 zO+QWz|A{o*uWu_}9;O&l7NseMn^H43H{YO>kuqcciqOkT1#0@z9f#id=(>jC{&{t? zoWtespLQK?Tj%S#PR_sVvOreogFTmD)YogDo4r^8%b4gq^kum#TX+A6Lm)?zS#9vT z0A~ePSJw^l_uO?{hYTJD2OAG|*Bh4vU37MK#x9M16S%LoGoYI1tXRje^v|WGr6SH> zEpM(rwA0_;|I6T@>d==K5%an&zM})3)q#fo4tr0XI%Q>Nr;01;`<%~ZxNN-ewyCV%&1GRCvg>X&JsTPXO|YYbazMp`RC79*o8j?H+pT- zOgcU~+;7~N@N}FqvOb&K4*#2jvekAiN+7t?7LdkS72Jiwbf>SlxDK`wQJYD zjgFQ_Yi~2Fie3G(r@kT6sT}*t!O1D&_?riG0YVw;eE79XKE2CTex%RrNb9LfwLYJ? z9QXL4$k*hRpLn=Z7;F3X?VD{rzUFH@Q^>#iTjTgx2v+`iaj_ikQ}OfrXZ>~7#RlSe z{gOk?3+vs+N9k7EN*;<>e<+;ma&_gl;Arjia4f8qwYB2z-Dl6wUm0Fjro>dOaJ;|s z95-{)Rn~9XB>U>ss|vGgQe!DK2}XgpZY}GoirYme(6+lStkHEu zHaa?*745f2==keZC%fy^&&-%t@=)5RufeIO?eR>mGHgS$SHGs(w6QpyIt5R5)hOd2 zr}a;3%5oV|ia#bRG5)RhOK-2DvvY>z*SFKK0rz1O`$R-U_`8ic+}(Qez{0gMul>ZW z7ybI{Z@eAx@(KzHN-;VTUA4(_xJ6|=tVHAT4Odo(D`+O0m!F=EkW)b)j$NqBF{vxr)kBOB!ia1i(BqtT~Z8uWD zTfOW2@z?kMaQt}xg3ZtugVCYZ08tQBRw0pY*CZ;<~tOlli61+ zHGcfl+sCZvpCnGUmmR`m&~fS#DGxogtM%30Qi1Gm4+8gH3)e4T*%@s5_N}+r_|1cJ zh>&5og$*}gb?}!JpPTY6+9kfWg#8_UtjjZZob;G7BCRz+L8ZI>~6K*}T~plkq^;b!d-8 z_Gr?#Z{PYVG%c8EzltUuf3p)&Nnw0!R5?Or)55xQ?ap05H+tmZhgKSTRhRE zl7Ak@=Ka6?^2?VmU(&(`cd;s>wIdJ(!p&-vIE3{7#OAkon{&!H>xTK*x1mc{u9VYa zwX{6ExNu!N?!^1@<;xn$=9}6M*eho`o)i}sZ;MK9P(V1P4|dvW$%Pa`|vxC4Yl$x5rJ6g=_B*p*s42P#kOwM$Xm8aD@9(yX&|F*Z~=p{dU>$9=O!dt)1nX;zf+oxQ% z3bUTfLI3Oe13iraN3zpScHF@~8oF}++pG5r;bW582D{UHIGD$9wkt%LYuB%T&b@A( zW-U(mF+V@Q!spl5M42JZ2g?OWibYBZR}Z=B=;n^}WLuQ##2wwUrT{@Nzs45dsTeB1 zx-?vQqe<=9=*Sgr;gju3CbeZ@io(uPTWvd!KY8-R^uy0{<_NFcW}A?O6ObCF7WaN$ zhZzzGuR_qD%mW7=8TBC9fBy98cK`>Wyk)|sRllz(;L}Xvdl}cArxAK6@cgWK^F+qS zMq&~-iHlb+S}&hdS2)fu`Q`bVVC+%$nwYGR`m~erMqD^D*Y&S*N*J4^yB4{9`<%a* zrJiv7dQp~kx^2;?%=9$ZXg9e#qGrYiZmd7zGTN2g$ie)8yGm|LK9W0QO@WNxmNzv^ zmMl5uclT})PVRW`*O&^+E)90!V;{zD9&6`_VT9asE*qes*VRhofAyd;xZleMg&jDFk{aojb>50Sukg%uhJ_Y_@}ggL-jBN_+c5 zQ>pQ9@v=^tj{Qi~dM+y$EeguX*@2UkQ=@{-jxUwXy}(w9eS#R$q8Z+%lNlgZlHp+O zTM3xLdUo{9nrqvSnpxw@5Ppi{Y8Ct2%lq;0C^~68(!a>^@-j;b2@3ky8sJvZbWJK6 zxwtxGDLz>Fz=2D^lk1ooSPY7OB8b~BhdMKtyb6$tnYUat6o(qO7CX@U`STk9Hb=#t z$3QBJmMy#0GJw!f_~9h3iKp#+qu0%isxR{M_sQPb9B1S<+!i9-Wf7+)RHm8b?BFX- z&|qj}q~py#uEZfprAW0yj~_o~uh7SvPmYfc8mc#4QHoHJEx8$RxjNpk1F14O!3}A6 z@uEfgE?tOY2o}aY4Vi=_`|aDyBSK!kmiKK+O&e2<)^gBHlpYu#nm2cDM#~_B;cjwb z)@sJ8{Pk+F_rA2e3>h66Y>d@KD5ZayI(>Fk!pxa7Ycp)|ypYrTS*Z~|(%PeM9VFJR zt92VJ@DT`bc5yMQDJd;Q++DL$+-f%^xED7!t`iUtco-7WacU;#>ul`$#+i36K7G1- z`plVzKetSsHVq5SdiN;X-Q9hzUP^j;ZK0G&1>Za_Nv!~vf!htvy|Tar6RGFpn?T_V z)!V5{ds^L6$DBGpd+O^ijg@)U zuH7IaqD(pP?5u@CE1TL!-yHPc9(MHErFu(Ar{IJQ_G_Fi3=Xx=xvUq(jh`fqz|zI{D0`nBm=g|uyq z-RS4K*-qo%9PRDv2706z4DP9Xj2-jeWBDBW+bON!qvV4JAJZy|n$-mD<8*lXVNA8; z=EyUxk+TWFE4V=oDXpb^YVxeUdb>vT;#+CgJEr}_9LBco!}aow3ruvuW)QRU zRR8(spI;*-t=01=%2;>MPu|!#JaIttQ0(D9uB_aqqL+VFdFRg4ABqEF0Qt4?g4ge# zT^_d{clzx5;U|86e#fB}pZ+f|1v(HmHL{#j8|<6r0adC|l0+tI!KDv$)kZiCcHh2= z^tHO}h0Dcge{HYDc-G&BdS4!m`-sHBo@7wreH&l{RgGfu<{r0MxGF#$i}c_^t;~zg zDjg#=!sS8RbiFodB*}4 zv&5{Iyii6JSlL+}FJjTKU1IEOQ^f!xtXgv8MeMM!eb+dLfnfSOVzL{`BnRJ*78()s zO*?6_Qqoz?Ww?*<$^jq#C|d28-kUa{F7P%S-(Q0G^dPyxQF^0F=uw7gCPyDD_K(_gc}ca_uXn1wzM8A_ zekh6(3yVSik$928i@hC=7vWM8^$UJALkTK1EfOeS9a}ru|Ae=N-757Hi~Oas!@|P0+JCx-B;>fSiNW|HN}KnpLb|OP?IgN8 zz|XS4eQZF&GP7pQ8pf{gueHcF>a2B;wcEsTe-FGeE&^8b%pEKuRD(RR~mR6IyH5A zAND-qP4;2$jj9J(n^EkX?5sKjguUU=gWc!jcW{RR^3r9L$LZ~RmY*M?m1?Dt>6p0J zW7&O_{SBY|nYWR~6_8o_3WbY9k&?e4jGv#kJi-3+dtX(l$VT$Bu6dMlTQ zD=Pyt5QL+1qo#HXNJNsUnw1YI`sNIqWGIzF@7}%J>NF5J&|M$F<@W8(uzs4P%kc4v zNOgjuI&PyUX;BFhs6=ap0sIlTwAG!%>KmxFh+ulHHLi-iujA0N_~FBcZ8+gKeS9iq z@2W2bc_EPXb*CHd-mFo$-4Upy40V2}VStMYvY#q48!Fcz9%=9WFYIU47TE)-_4QZk zMu6mKuTM`7SB>FEl3j_aEG{mNu0?je{kjInj!pC{;x;H)eJEtVvRv#S9wBy2w_CR^ z;)DcXnPYE}Sd`pq0BR|-sToId&l};nV^O`alOO)db6`CW&z{epKWn5|-d`){ANkv! zOV5$&jvP5Mj4~c*+GX*2`5jaw+S}WEgLxS0O*g9*)lRYe1F1MYQ*0rFaWQ1UREAYB zu<#vZT;F^5RyDnUe-v3m7Vx4`y?v!}ngL4oQ4YNy zZsTIub#--{y1UJR-efu|qKc5xqFe~hWn^RsMVX;U2*%at<>%)&7Y8(MA8PhmyL$EN z(h&D~%YM%}d;UDfx^?T;6g5lwrx7 zxd5Y)J-u$&?m|Gv$NE0L5$#fKEXBdAO32U4tBJJJ6VmO)Z3g40R)`EdT_|@8)Xp*c z2Zkz*gN5zc&O?s~OooBSAjC@$8|Nk1q>`eKglNy9_+v$5y;U($?`jgil*&onrsTDV zU#lu5HT5>|S}AJ&c;oW$@f98IgJ$4v)*|4fq@_*3P!zdacQpcW-oa_O4YHxBz1?{B zqVu8n{Wim`_u&+S;qaMwH{ z_+eZsd=|r9%NYC?=&n#800+&%OQ$zA$ms_g7W-3>PQ(#Tca)0%WzAlyKo9KS|GZDq z-jdJA$mr6gOC?A;UM-nv3`PpO*3O@SnYM`n`4!y~+=UR8iBikVM^I|`;~J(ae^DkL z4JfqxC@edw4Fh;GUaZa!#m$(^fjcwiap(h#+YyvPD)G+FcC+=F%6R^c5ckBN`CS!UjZ-Io zuG{sK+T>4`$N%+H-P4t}KK}mENT4{0tFgH_AF^XWn1VV(X#rce^}q*-8mV zB@i!kL4JNIBXb{J6WqI$U+XohV{RtSceU0pkETtm03&BF5D>ps%01v?oD6~Vms6VC z+IX2;PrN^iV3X?iJKJx2XVS%1?U$DJ;!aIXHL&K%8BgU1*2!`f_ucr1?W&xKN3Va$ zY2M@Ov7Eh>2@Ph{rn%}*qz@i)txGvUENlNs zum`~h?}p<&YPBdd7q3|1TxrY@%4MI}f$my?D5wZOQWSZ_YwR* zqPV%q&BM(dihKAnFyM_yNi11Y{Cqe2BL|y9Y>v36;Ai5*0T3$FdT@mX8qQdUp z1K@Hev2iAs^F91U0oY(%g)-2gO?RC*Q$b71Z>wE*WKa-y$8AO8{J9Z>nJA4^-#t0k z0;UB|U_C$oK~{5XYY3=}4j%cf>Hs}Z)s}_0|NS(-jkIc)+79db8-{yi1xg7D-?`iI3P7@ zoEHh#o*lg|xEHJ|pmRuqRm%bVC<9Vb5e!t+D2V+C5UL$FRdwC~Zrle27jE793JlRr zZp4oW;FcFC*jz`t#AI&^?E%KhIN}1Fs*GA(8GH!Xj6PWc`y6+>3g67wFoPHtv> zx}7Rm)db)RBu_dnH@RI<#cWUv_7F9#x`z~G1dWA`8`AJvCRI3z=Ji`aZ|?;dDaA%h zv}lxk_UxH@v65r!UAr<+ZG0WRn~hi-RHGx2FVt$YzP_Kcc$0<_(3lTcfwASBx}ZA} z@s%ANKznNAD}MRqesZI$Ce<5j5BjYa6B8R68Y(y%SEbdRj8AtN=}M*|Z|AOEJj|G^ z;cz15u)Z~Awh`yqxS~O)NVC#x+8#`qHsd&MpOgjeFlb#w{h7pM1|zX|0CB#)w0I-Y z!b}BhsYJ(qV;4Mef^KG&r|K?FMqSScHNGXjl^vBas*a9n_~Z~QID&&Vg-ekPRuJy^ zWn-f*JCVdI*ZQwVB<8Dwz zGWv`E_~Q@SpduM*HA$|cj>xAEWthx@1z+j-A%LU>ZuQ*uJsDV?16_pxJ3$k7sqR`N zCnv{bKXWf4+9ErvII%XKqiHW#iGJ*{c0lK%*iGEr%~FGni6%Y}Zn&8<=dX|l1-W?P z!a!P_>9ZHT22)c0P8xn&J6dS-%e?eJO@ zGiLYr^z;o{DY3Frc6Ni?!l$J!oJ=dLR8eTl=boR}k02KYjG^v-P6>h-qTR>0kIz)Z z$C3bm=t41(r4+8j8>N$}0q7muoqVi_qhkOS-G)xYaGWMq5Tr391oAuE9UhU^#3uQ52ddV%hMzNmwJ&*i zD1maM!!bJC5mVutVtDeH3ZyI)O}rALeWmnqV`C#0o3zuEiX{g9WM5PDkNQUD0vlHa zDkPDkPk&AXjb7v{mOR54B_OW09Q01#V53{dOM&dN<^nIX4|CYqDpRdn`;Y}XP~5&j zTD1Xl76Aga{q_Ab9|~^=BAT1vxjKR@O0;~pGu=(<5ujHf?o=7tYDV=;2$a@e< z)h7Ps$s^@sa(dQi_rpi?Fqyj%hbaL2S6bLBysD}i#7z4iMabb=dPN6fHGaFKFD zy{(nI*d&4g(uIo0c3}i~;c>uA3!fgnV2Wqo~p zTOY3u{X~8q$qOH**G-!MjFyU48ux6HNrFbbk=Bznl3>@PLjVP3;@XU<-BZ6qFY{dN z{_<=$x0T!N<*Cj@1|aFk&`y0v^zO+8%rX0jeNd!0drFb`}R{ledbJ*+dyxx*R!K>Mqaq7=HDku z6Z*UhdnaG@?|yo2{q0+Hou?!(Z_}0c#eU*?_49KCzZ+M+_<^L0kiWmPCich~*%73& z2pqi7-4}nYR$_NA{IqE2#MS!uwMWDlKmGHU*|TRWL}?`24EGsjj&!FJ)`RfpTi-Gz zWybeFC`U-31v;XjULK_`NYRzk*tXw8Sy_MrBK_qw%Xyat^Yrb0d9DrOy#;UzVbQg1 z8oo(f9(+5YeN=!B_V)UA;_gAqW2CVoT)*##|FmMhDNWJ0afDFs`_vn3ISUHG&~6r8 zJfm5SgxiTf|J`Hyw~uZij%Rs@99KsNNGi}=qP6W)EPH>Rta4I!VyVj>8NBS|pO&Nj zmQ_FbEmr5TPqD#CkZ{_{#mIm57d&po!=_l2k(s&p*IyqXe2q&D-bN6BUYKB7{m4mv zwYw(5jlS2U*`Z47j2pmd|Hn7G_FP(YJtQOqQT-t}qUugDgBOeT?A!OUvQl-)=i3xH)yA(A7VKe>?u-1}~_|3|S{E-(o}*gtr5rwKURf!f;Q)sGKMqvuxfynGV># z8!+vS`;=)y9@->uN;sAUcR}tg!%~2fFHg6V$CbFB*<#o2CprGj8Z~q-$6i^WN!(LG z!Z_Z!*=5)Umlg(kZt#&3Lkz$rC7*&J5>6X{b2;P=v!p2PbQNq)B}k{-ZBP%(;E;HL zK%_A(GQ!Xl?>E?*5W!(IPyj~~Wrpl8fALoy zp*|O6iIZdB90&?OySy~p$6#v8beya@J%W-rmt}~>b8B&i1M!h0y$I#47Zp_@@W&x$ z?p)hj6dM zH~Y*_Pv&fZoT#Ox)!f`1R4h3ngT$EHC63%{O-wt0S7w(WJwiY34I2)CngjcA7r1XN zbF0g60@ZZoQJR&(767m1@rH8r9^{ku${1bS8*|@E;iL~fhe(Tsm`JgdQwG=p>TyIu za6=pU_++xbeYs34>*?t!Q(QGH0MV`lfaGf>H@>%-7qPd!jOo*-8$pY< zvU>6Dw;<#;aEW`!mV!Gd1GaV25_BKm={~(~jjyO#2`X@eBaS z-+==MN|sw>+()(!2l31b!cH*(S;rxKtk7(_8p+hqoyh-?zLF~Ox1j)aE$^*b^twTW zhoHP^i_7Qqg0X~nQXU>2gH#K0&>Vg|Rm7}@hyb9v%FGSRb7WDfcVEYKo1kD4HA8ix z0-WAoV-iEy$VWi;)u))9c>Mu6x$Kr94?#-EKsKvXRV%lJQ(5g9G#N<5Y~DYe1?iue zX0@b(Ts?3al%$Ogzns?8)MTb3)%SWAs>eF*n1wk}Yw(>gm~q|Qq*)PMggSG|lqnSh z1eS0Zzx4GffjB1a7i`)`K(p9x>&_}cf;&{raGNz|X-i5)VyWr zL5}SHg9p6>0s;VwNFOz@6QBS1ja(v8M$tD}tOo#B8-cQ4&Rj5Mu;xldOL_5qCXdn)mpPYxq+=&#k4wk zvgpGB&z1JGSK~t%Ip^Umz`h9qgYu%hT>0QZzY+INJ&y_4hqXd&t~pJmdDCAU5rQO8 zQcbp7_WTuFJnLH+EN*Zkq)gheKVSQuq?ro`p$({y6YQ&3oQ{atXsFY2;`?98z*13= zo4Y3cC4*u9em-3SgOUI5vTmM4tYu|FUHPsoPVY|sT*1zdtop_D>YONczZ>{b<$pOH z{ks(PZ-4j5=If^;@&&2}~B5Y%&LGOi;=Cfe~K>XgPo7){ihv+`eky zK|1+w@IoRwsn=p-Q)RSg_wMIlG=RD}w%f<@Yp3aV37geyR_F7U$tGS^wQ-uh)CDR4 z9lyQSwaThF-G>f=6faVTL83gtX zU#$R4)phKQ%NJT{0qqC@oV^C&RgU;jFFDCKuzK`CRxtk3TtNIzqzl1V&=57w6#Gyl zE5p&%{o-@(i4=XiDYw-#?BhUf1gE5ISuCKV1$0>0%`zp(hO~)76J$R$mm|ZYgN?M0 zi8)e<(in!;0lnJOLWI_ip+1436OJE}y}Px%W(iE9qwzQl0QJY>i&2Xx!H7W2mRj7= ziUH(xZ7%0er-*Lw^jzTULY_t<&2*RI0;sqOVtQ>pR=AAGLQV(Ri*g~68vO4^R4>Ud z6~V)|Z{KRpck>WL<&!C0ZeWgr%CY(SKBXuPkx{6#HCZm{Yh`XB zZmHrSHI`~jTyyLNN`ZJg(J+gbEei#Dpmdt~P7)^*kF_E`A!wtaF%@CMsF`7&byl=q z$HNo0| zRFpQ3tb{pnNT{Mm zv;i_m+JZAE0uN*M{P`80t9O|;G{F=FuNo)o!i5VEa__F*lns8`vG3!3ycLLb{r2rz zVAC^3EjG{+tlBpWO`fPt&=D?VHGxP}7NIHt5VWRr4E_RAGy9=EKCi5-tZ7KL(4~kB z5j-W#VX&(<1peUlYuB!QDXHuH`JBJQ2X^21N1jgNTJG5CTL9H$fT7;tDI~%K)Zf#n zOX36tXdI}G01H&6p{z3Z&nZvWW?der>XX)1tsB9PI4%S_8Q(B z0UaC$&&-L)i{wb!;AW=*QzBh0GW)&B1yJNKp~<4UARII-<^TRWwGoDwh>8cCkoL|` zav8Cu1BrT}1n!j0;1-DUkZ|ma9cTjzKK9Bl47Dl*ByD020E&6EQ%~pspJLC5jG}tO zv0)Kpghiz8m_IK0C9-Mu=zuR-2SF{U?+S;13>fnOayX$P(jF^yoQjT((+7ijx+CF~ zWZTma1qA!z!=g7G+8OqTP^OCN((1VT2}nq2!2-sYiFgIf6g!esE1&+ z_S62nt1Bbo^zt{rfCnj16&D4NvRR_HP?#0{P5$hK3lVUt0j&k#%#c$PkH2_r(Uq%L zRREa~hjHS6LvPsgm^VZItI}>cXG$cOdOuJoCn(1V>Qp#0}82g~Yo>MoW z=EKHBk5SRmG8QK6DdjP`y2LaEzrufeBI1xmw!<|-HAV$2FhO66T&Vdpl1y)NY(DOJ z|LUn}GuyFqu{7zCVwt{MPCOu+C7>1_9&fIov;q!HKiqmIWub?tEC9D24)J3#ufpz< zn@(3HU~s#$%`O@r7zRPl2;mCm5r<&0%Jc@DBl7Xi?PA7^Jg;oZ9-I(cw%mKnoIPib zBBDn>jMP$WO|k#N`q75^UN^mUE7v#JX|ghW;q*8*k^05Yl5^ z(hMMYn1?q|>ID%;j*Ud?)`Jg&f{x?SR*1udZ``|UgzQa_ni1{46?fPQZ~IW#5Kwq^ zsQt5n?UVX`Jz#2eFin-PoJ2wYQU%~ieJA@FfgUo2N$(_yH#9uZ6#|NpNTv2VcXhU@#xEjs#V(k(>Leqt^h8btX7KP^DiaxTRXP+<;z+9eB)f))7GD ze!!O6pVZMJavcTH?4|t9iutPFiD$q%5_)Y~YTk7W4G)u<7^+MZA|;t@K0;6ubDlaO zrL3|GQ;E7mViE}sKtq@Q{F4G*)Vnv>Z=2o5oS6!^ZL@(ZSFR}A*!0O3#bfol>eE$G zv?Qh;h3DkAJcONS1T0>dcarVopI=`gnL{o;X@N{)hzV3sRYS2G4x_r8rPBi+JlL$4 zH8?puwy_|QAD~5!(oKw?C^Cbb&ygrRgO6{;J zQ!2+^FoErrgrWHDiC-LH%_gRx?EbEq#I{4*sKA@ehMm8@yMSYO2oI(OrTh43j~jqO zlEY7vx!>YAJi|omwk3V~^hqYBZ%ClBrxXVi^?h6LfHro@rs4~J#qR`G-w2|Pmy7HC z<$?K>Q>_f>$-?rUy3xo4G%dANkQsdM6^;WkG6~|#rCD^3==FHw7!XO^aCw9(k>87; zY`|9%iW{PI2smw+88YGdhi(WFZXc-mdmEI)gP^!6q8_S11f>W_lxV>{Tj zz@1m%FeXBff#c~9K|w*P|3PQll;*eMR`FHsKz`vmnQ7E^klFico2UyCcs~qLBngCL zGl5wL$^OK5egVZB2BWiJb->O){fdVBX8Mz(0&HL9+n~3%L95na8#G~^mJ3xPNONSz<#0YpnzC;z;O7d9_gqUTZ2{hMbx?Csx^ z6is9jR(bPvmSq2-YIzi01 zY(K(8L2&rwl^krcTDJ|5M0d&Mmf&H3VE2Q;JLlhk{0spJBu{n1%<0o909Gqa)US-^ zM&0XkIJVhF_7`8gc#%WWIR*4rB(U~@iFO58&px7v%Lx4Kdb~E56^EYr)~^%6g^?1- zh=9&pAtm+s=|T=s(_1)YN6b1LZ%tq zm`bNDTO>Z85EpyRa(pYmS*;02^D1;*g)2O~M0HqcmT9#R!s$le@JVZo_?7ypl&&Ek zi0vB5aOhpMV8P)SBhTE7Z(m*xLs0Gmi+CJSqP;db2JH$sJzn(>Ckj^dJ6z>ool$|V zI|2?Q2KSsIm6+rfaw}&B|1rNb$xIV|Tq+*7g2N|a1_x&YA0J=3^hA@ z!D;~(VDix96D~9!5u52Z&Ghn&P|L)7h#5Oq*G+_1TelVOP{U=h^LCW5GRHgrwJt%^-GdNE9FGfkFTtsMjE!%w@+tC zf+XQGZ`n%NV2#kN1U(Hku+zNBi*?^#Xg;Na2so5U0QhA(yS{(vfYa>z zzP`)FOeb(I!@a(GQx0itWLIU!=HQ>l# z{sl+o?{%CLi-H4t=i%HgBvY!-GlM6;WCy49K5R28+9KT=P|{FujmupW7NEx?5Yz3p z{T)$WX_24?UoHzo!Z3j!Zi7;&=SjdE zU*ZfpJDo#HCoc)N*2Ew(ngxL4n*aBm#n;N#@w7qaRYHNa7=#r(Ec;oK-#+ac#T^a! zO?cKA42M6lhzJjDEk3#`Sfi7$vI4*{S+Ft3p#G})$E_14kdqo!!e=F2*nLwsLQ7)(1So*C4$izfHu7RX$DD$GZ)aQPn8J7MU(M=}%*PS%m|I z&`nA%Da9yj*Gov$9~%Kj&?zz*Ps~)6dUz5{xq# zb@S7;cYf^YiGc!0He=DQyk$64ShwmQg43K>plJ#rE^s0Lt=!sT6*{0nzeem=f?n-3 zZ&L1KRP}JGL2N9C=FufGAwq+QDY$BQxWBVnk$RWW+@}<+C5{@e#uP#k7IyNe?%+Hs zn77PnZgcaE&-(nApFNSS>%I5iKVN8-7BTlH@0GC;4-S^+fr(KF_+9KHY~9Ht<(_`( z-$05k|DV)s9bd1WeE-DifL16>kbpQ*yuH`sA3M$j2o|eX?L|o+# zz-kh{oAE%A^*^GJBe*{X>hu{LzW+D?)UitX3+OR4%2pC|M-JwNtOY~P5BpQw;you> z&$GWNAVjO6e*t9{(|!_0xo@-DXLuO=%ZAbc*a!*`fZk-#}pNCy@ozdzCX-@gM&FpSx{0-K?8INeqYGL z20o0J1qDnv8UnDHe)xTI$O81wY2c`p!o6`MX7%KgXQ+D!=5bDI0nULVl-gfF^26~7 zcOmMZfm<`gcUW0H!u6p-=AOh(bOoL-KZ|c3Ob_%;(WM9f!n)iP>C}H(-9D-u%5QxD`@w(RmHOqYAhmv#iO#cCS5>%!mLNsR2(9ImGPj z>?kylT^Xh@5tKzgoP1<`Sn#e<#RC$RI-T198I|DqN8vu<@&^_exHEh5vk?kkvg3n~AF94VLj}%wHHG9~gmrWdQ0tOcdZ1$ksgC;=;(IjsMzLak$@9YeS;r zSV1Tb)q2jAgQi5oK=BVRTBcW6zibQqOTcE-JA&o36bp7ggIb9+BNmH=wtUzGCN9uQ zoCJN_^ot{u>w>8_E9%|kYI*Lf63HP_l5!Jd98e;)rXz39uyu<6wVi&(DOvzNQAJynZ>-Dd@+M*J2#dn0R)mNo!swR zhSh05>m5|@aEuN>TZ{r8jyLS}MFZm2AFBQln20-t6AtB<98|u#lnE;?gJFxsHOcc} zC+`;emW2Nin@D)ZBg#DgJymm83+7Od?+iB1NSxp*ll_y|mgDNP;3}7t4#@!E%Ae%s z3fDb#0dV?pp{GV7{MDGO|NfR26Qtu$RzClI*op>8$@&ZC3}6AOo&LgtQ*7tNlBRsJ ztz-|Xg*YRzyyr*b(Ai$3^A`qT`@SbIgW+RHfU5#D3fNyW&rc?`9h}E-^N@2>HB#Kv?+=He^?yR^<%gHNt585_27B-M5U6>}KhX;FNAkzR;*O*ElJeZ`KIr*yR zdfgv?-3h_Y*GZdQPYL}bzLI|@0=xHDr$%BCoXWp1pME=j0ll>*;=4|_N|81jj(dOh z_^80Hk@2xXDHssyf7rm9?jpuz>lgE>{l3fT@Zo#t5IXXYgR&L9u{cgb2^Y?t<6XV_ z@ju>5+6uT8gX3@#G%lVfGA6Ivlg^kUI&p~eM+~MGG}yT4%sUQtM}_!1zWCP%r3L~w zn0)>8j=l?oFwEB*bA#dGg(>TA_e*jSp@0>i0Od=NX!+rQ1Q&FW(#{Ib|1Olp*Rrdr z(p-czP#9eje<6bPI8C@B@ywK)Iq-c31F^g}~1aWRWiBdhv6&h2WbR1zyU|8+JxZD&Cabqxh! z9R@&8*GWB-kg7r<@euIr`k|z{dx}6bk~!HCz;H(p9|Zb|8WLyEotsd(*k)EWowF#Xt-b4St~c0rc_48{iT3OItw_kX!`o4LRjOSa!hH{?g_Z>1~KE z*eoEmJLg1X+@#LC!qn6z$DEMZ$6-945%}b!M52!S%OlIeFlOr3`eZtVyOS4<3?*XzW zNacbFsfU_uk&EHXjb5tje25(L;C0Q0`v5YL4piaCre1MK+$IRwqP@`c_T!?DmWqjAzVprpXARslakq0y;qcAawGvP@7X;ff(wi3&I4f{TdSS*hI* zeH-Kh1M#ICa&VOBR7D?7K zaH(WHLrodVs~8+g{UlattSbcF*|vYmS-Es}of#Cw*H~N#w8p*zM5};5za!8Ro>g0tPxC zCWwFL8MtxC8!$Nwh2Iy9y0V5w&0W>YD^`n(t3#Q)Bk7X1OLqhOekL6OP*B3)pJ;BK=J`U6jko*Q=o^fjDt zP+HV#Lglc7qa(O68SJt$4|d@`0NDL3;Da!D`bl`z%k!Xd14L}WF^icdt}JdiA_|Y` zKvQGVC=;}#S+QMPMi=Go*9u+%yhKfgD^Rm=9|YxGkPdZ=;R9fC`-V(EP=b69He$B+}8M1My((=d@ooCdtWdy7QYmbrbh>acpaEox@#!G1z68On3i;ER92|g7r1@e))b_=x z@!fXK9Bgo61wksLo(QyMpGA=uf|L-Z8lwXr;G?T>%Eb`N06qoV1=?O2+9d!!AI=pa zJ`Oyu54;x0EalKl(?{0Q&G8eZ@1*(P`Fh@f?lrC1wB$16zeJ}&a|{o>5F)0EMZK||1h zEogm;257Pp*at7#eP}QQe$gCrMW1C_ma#Al+loP9UJ(q&P(Mf6(F!TV_*<@CSX%8hwZWqiJ08Tbbq22 z4Uve9WT1hU^HFs&xB}|k0Q>zAXGoewHXnSuF$fP5E_EE+cqGuyPEGmrUZ4Te($g&8 zo#rMB3mJt_;FGSN*5~QrBBH`V{7b+lis(OIKr;#} z;xnjuiHsqTPHHlpl7Y4STC#6UV^|8qM+n`OFa-RwqNS4Xy82-0h@WoRLfj=f=gQ&H z;2R+~HwL}PLm*A;!kVdo6{X1zAbZ;ZKcTdSQ0tyd&rPCg@>w1Ht5-n0B0mnSDtD#a zbl^g(OfV`X%5^`BCYE6nldS}gR1upNB25TVc^EjdiW9(kWUT>kfCt!?GCD5lAw0bM zSx7^0PA?#TIxxzP;C>qrzcgE;A*5-q&jKJ=ReCJcL4`7vJSyW3v)+}z6r^4*Y!$Kw zk^YUt7&(4A6DvgAKegk5PNk%Oce{fEuw&xYQf!b-nAV1-Nb1il12IET0>@>1$X^%7 z4|p#j3(!RcHB>6P#lJklU3UUiFX2ldR&A zX0Y?Bpz@$O8#D|EZbi(ec_Le>1xv%pkFWngf4qiw{sc*m&MHC|09o7yx0-5dcJ170 z+Fl30Op()XOze;fe+j1>STYoT{oSzT60`v=RI{xAi_8hE_ znb}6Ln6sDg*-N|0f!tZ;)ZEVKXfH5Wa+zn>NWYnCzVHX69$^8 zpvi(5JtO2iR7nx2hn!#ftev}Zs}k~6fu*-Mw*=go5dO=6iNa}yAX(t(p7)+SX8Wzu z|Ib!5v7t)nfb)e0ywOk(lI_Xfn$UpryPlV~VEEbSZU&>|X0|3-96)3d)UI%|DJUfF z7o}V%7+m%wZHZoL!GOWa9FXpX`~E#@_-L2 zP!^!~Dh9Ywf2%)ckkX(kFs>hQ0%#-y2?#Xd1tG!)ru$KRgy<*=fC*lxG(HBjKm@e% zHk<|W|B_U(vbDYOI`aD=JcUb3Hie_B=_6Qx3dspFh32RblLPbBM^K3J@afP9OYHZa z?yO(%P*U{NrLxv7{q!GwFyC4iUNzr`r*W+C)_qif1cWd~@FBdzhkFHH{TCyQfg}4< z___K3kd4R3Mv36(CdUn&-mj5C$rXz-l>lwBRx8aU1h#2I8=nf=u@m7Mqy~&T@bhsK z!Y)B^5`_tf`zaE_@IlZ8uG_i~+omy|Uq)@ujd@NyF~rjolRE4OEfS@zI%d-EHA!KG+b7Uff)z}$`DMcy9G(q7=`ieF^RboAvvNL zw9LP^z8pd<>XM{^yA)@!uHW4+N~roxhcl>a257QhQXSNaNw6Nxm!a7i=s2F}TE8Q1 z9Zb##gx7HLo1yE{JoOb>sX$WEUy@o+BbQ(}jCZ~D2~BDUsC`frX|s_ZHEVQ06LI*1 zck5I}vv%Gsne6C!F_Vo)km)c5z~_hu#tHM~&thZqv1ysYtKOeV6Aj3)it!#A*ur;& z4d)MQ zJq-UJe@CNzt>UI!;D$dWda`b5w){WYif}I79G%55l6e9`k=}%eYGB92!Xq@!T%Geo zo7#;j-vULKfyV9w&)80I`kYC37e+S*k_QvbND9bYrZvlv>+r?;iprB$5<*wv_20Q(e#S>Y zmGrI5yEWHr;!O;7deg!M3sxB#w$3%w1a10TuDbdUe@A`T2&y#FK(q_Ynj&1#kHRKN zcF$7kOL$(dgR#D7IM%^)QARtD2wM7J#3jG?-~N%GrYz|W$L8N4D0m1vwRCduhdPbt z1m#<;J;}g6Uyb?XUiEuc*)jjK-tsqv{NoIke+wTqAgVQC-X> zt>}tm*KdI{-x1s!^sakoDWMUYr1+iOW->E&;j}86vwH=i=@16A6`=&8Ib~OTe0(ru zc89Ic`SimWt8)yl5E^1D#wtXEvRTqK4v`mMzka=iVy?loF{>UkTqt@~Oqx2$5Wxhbl}wcEGXVF-RhUw3_N&8xJ>{m^nv;q%uc25FRR#&|3< zZi_>cpM{CSU?+qK!&d_~sbi>SHJo~hYQ6@WQjoehVO%FUA!rg$CNa+BJyNa4V48Y7XY zs=={`W0qxNG3E%Y!m0O_#04lr&PkL*^+}`Cd=-=5-NFrUGl`viTJzXV8hzJzEY#fs z1>Q^K%yJT!U{(!AQBjo;Z|->$w9$I>WT5mWiI%2`NFOa)WrEsA6(wkYvzOcks4^&4 zN&uCO>tEGO>Ab+0WBVCTkS4vuC?nd1{{r2uCaQd{)2iReHL%|jbp>XI5hNGuT!=Bi zN4|lC^OdYD_L6dQ#oxpYtiTi~I58ekM>+2Cz|pQ%CN#tyqpZMI(sUYf=0M5ADKo;_ z)?juHnzwErS>7?@b{HPS_fp{_wZ@~Ap|T2+`J-c=58*@61Or~;GFTr%#RRxX6sjfQ z+qplF%!pk#K_Oqp00{>(kAm0dGn#BGa{FC`I^4FoytSvo5HhwAHXwUaoULUhHQ+(W z-)jBABWrxji5&D`?-R@oi{5I`09YJpg8Ve8q59g%GbYsbQz7L8DG8B;Y#_u@&E&M- z@vF%Uc2Gssi^zfh9|&$#ga>LcWf~Pm5V~X3M&fMUx8<{|#a;%Z^#TUqU60&=9p{eE zcCYJcU+83>zzGHztS}Fd_3(KY*dqLod;?cd)0gV%4~nP*Y(u2P%nGy@k_3nemqfZH z-c39ciSdKHXoUmFDo4qW*3jwT5wD7zk)b_F6LGP?&6q%qDw3#DYAHf%asSA(w8vNM z5lul*)WjRIWt(_D1j$2Izu+j82+)T;pN`iu26iJKS>pdw03U-H4nn>I*qdmk(12_D zku=B&T)0_9E;vG(-PPe33b!&T+rul+D2GAc7ZT-w{chg45d=$(=EygwwZx0J_2U0& z<0Iy3RY-zaxQS902--^Z+QQ^l%K|wi9FN0dMK%I>5=@igZ7nfe38R&MLy&>2n?=MD z6kd&N#QktEhDKOLSbes1%ouNj4UA|~ z-@YLrSr>x&E5c5_+tzgY@*>`&-U7PjASg{CZN8J?TB?Qg6OX!-{!xt9N~K@H-!T!a zA=)Vh?f->yY3DtnH!0weoW-f=ipdiuTov=9#h~l-f|tAneb*Oz_qJGreeM=<@!NRb z2w%b};+2x;UN1wGBFn7|NWCHCnkCEF9gegzS7GMnDGF3(sNW%V1cO?{?9s=;az~FoK(ESO%=;7slNSst z*9TDWqAuuEKa7BN3=P7v7K4vuuoxF zeUS{I^CD+_tzF!)hx^eSZGy#~m=B6!^r%CGKp)295U<)u0wb?xQsfCcJ28Zd&5FS? zan%&(a>++z-Mw@I`7k~;rp)~Am0rOy*`m*2{LfGSOV6NYd|KhK)Ee(MCdcXFGWQ(Z K9li7L>HiBgT0oZo diff --git a/doc/parse.png b/doc/parse.png index d146575754aff373c04bbc7044bcb44d5df1bd9b..3aa53f48965d7a032ba6a1fa6ad5a42bd16e29c3 100644 GIT binary patch literal 28395 zcmeFad0fqV+b_Pbu@PaDGE~S=8c2gs8Mau8(mZG)jVeP$bGBJgR+5TB(JY#!0qs&s zDGi#9jVd(H=Y6g0d)w!^pXc@ao%6iT`RDX{?&t1SYpw71^Zk6T>wUf7@9XNK%HEwb zr!Sn&U@&Gfcm1x)VEpos!I;qf>lFNp$m_DX_%9i|9olwkwx)I`jE@~+>@l`Ga@f}H zu*Cs>heOAXTiDvH7nKrSFU)UlXLscIMlmt#fBk}}?J+a4;-1VNyvej9yL65-7@WrR zp9vB2;T8;rjW+Z5t?DOlw%46FIj?-I_nY$@=ZR+|cF%PZ`@?SOofE&znHP3(dg)e+ zKU9Brn!5E7Luk6&{Mj>Z{jx*%mx&kbCf*6Xc7}0BplkS9_UL|Jexvv*fzC?%_7%>J zUkc3}l$SXlZ}iGv%ds6Fk1vnQ@daNd{`mg<(x>C!dhA*L|GxXbum&c~niSj0u44JP zr%$)Y$jAut^KY@PNiI*et`UEdxHH+lP4hCZtZwB4eZ@y2!oo_%#>Sd)g5et+zlSNU z^yL!KHL=l4G{1`P_XcmauxYDKir%(uo3O#6xpVJ6(0`(Puc%PUsoOk2>Hf|R!#D%k zo-b8zhKHXy57yXbjkH;f72N2=OEz!b9Ne7LvLfjb`)voiTYN=_SYbiZwwB$^C6~Os zlpeJkXPqzI9=`Wh_m_lX)4a?H44D}dxETBe0qf1KSXRVDt~V<(|Nbez`l0dZ`+ILi zC72aQX~yaXZaQIO>fgUB*`_XP-ND?j!JMP@>5hTYw!uA~FPBc7G%3ltMoQAE;>#n$ zCkJw-XN>gL@Th21^wyndXsI-Gcm2?}GTM6}rNK>ajb=>V7jaeluEsr=dDgFd#aI*D zu)W0?*Ejg>1z(cIoBJG9@(li_BYCvDPcF_H9gLpB!F~Jwo*>JdOY@H%>CYPT%lP_y zhGkt^(qLa_+@<+zqD)@}YR0xVz6v^a{J5gOtDlgDkbbYP-@T@x0p+5iBHTgsZyCu4 zaxS&(-_yI+ZTMu8O`Yz*_s`CEE6vWXb8o8^#CDDWlXd#^X?*Z1-~2HAZeR`H{wYaj z#k{x?1p@OT&HUWb66w^_%4Ai<8OCAV1>Hx7j~zX_@9MH0WuZGcM|vs^xg=-uZq{baTewij zH($Uv-z0eH)#}gcS`YT`i!;c$CT1vy{THcnXWPPc2hP|uWLlSWKKr~g#C`Pf?(4#W z($dm?Vul9t!(UJD$ih{r#bxvcPM^1$-^|SH^Q#~&Jj1ecGZ*m=@@Nl@xMTQ36 zZ7pVNYx}wAmfqc~w<9ckbK?+-TprJZqJ6 z@0XIITbs%w)xySXIR%F4C*15giQ`#ZUjnM3vqIC&R?yv#Www$!lk}XctAHs zK6dDHafp1m+~n!=RPOEeOSE{ia>a@j`Stbn>9O{06_%9`ZaMXSiJUZbR&#qwLj|Av z@SP=_9P&y^_LYw42rS=uMLor)PU6_7U3HI-?^L_5RI48i%kavTD^8#NwCp~= zoc}6d{mue^F)bsb+hK`jcLY|h6xzIbKVDvWW8FdZ2m574z88oE;w;?_4ej~pEw9@> zh5#^s{``B74!(GqoxR<6m9l1AMXWvc+I%7PU8N&peoszxRycQNgwsjJmZ{EgP7yWC z9NrajKB>O=yajI5z^P?LPjkukw#v9lY)kvT4t?vl54UDG^^^wLW=4u-4XbWHKTCto z6C%pajVUkIIes^x*i7rtUY$g*ShCSB?*l7FezbqPq-B}Pvp*(FT31U<{^b{Q{6cGG zT*&BPo7m-rlDkVsZinNPZbTSAH)}~$lt#4B(xqE*tP+YsEKEK$yV9dw4eaa`LF zcl}aQQtBO>mN5IWb8(F={)TQPK1;W&hbqjxwb6cesKRAcZS5OwL+#R@Jesty&rVO3 z#3nd4qf45cSdoaluG52#7AYdNq>TyCWM&G`z}&6|g7Gn^|o*tcF=n&02?q_eQ*zES{w ze&E0X)$|8@Z*5e-x)m17_rIHjH%BDa>kg8zU@gtpPO-W5cn|A+XQ%C-FJ1)Ii0)4{ zdRtY+^V>?LwJDA#PjXM1!g11kBr?CSuPa1SDM;$o-HdH#r=Jrzh!oVAjJ02go0qIk zv^Z$vdGX>p0UoT8L<&;S+MK46dx{H|Z`knm1NXCM&lLPc^$UxU&utJX-{0wxvMkHX z3z5&7vtWT)Nqx97Uv^GTPAWEuG55K34qvplvmUvP3`+F*%{h3-vOG#bMaAbRlHGAV z7nk&_Na-K8Hs(y?6g^af zQ@z9alG&Wjg%hn1C-%5X%=)9kGt zKYpx}z5qE<5Rn*n5VHYi5uwcP)d1SjJ z^O6r&>rWqVD#|Y|7JJn$qL-X_(g2~C>C|i%@7QJP=;Rc2^kXhpyI5xbfvAx^E7dMJ z75J?&JL<*f*1uIwPR_FA?%A9sfQiY7eqr3cpI`c^A*GeZd@~Mq8?<2dxr=6w4qDxk zb?$v+K)`fhXecP81`*A5sCOgsYtc=agK{BXzaE)9d9u#U;?v)*Z>F*v3F_f3j zdf~>&VDxViUHS{dgeNmI6ZlO{NvUxA5Jd_b8=IH6Hl^%v-m=9b=lImAQ$OeXzHrH} zJza2**X7&rDgXudzN5#F`}+I)@6bDTEPkQX;RxJp3$mPMRs5mP9UTuoeKJ9;+Jgi) z*!SC>oX-XR^JmZYS$3_ftIPNF>Ft*aMgewx5AXpca=kE2J{*7r4+q-N2Chy9o-V`U z?+M;4ljH2S&?-G-tT80yk*}|BZEdaaA2+79k8xZtE%^FAn?4F_xQ)-{>nVgsrtiu~ zfSxp$f%uNPC*d;38_ls0ksTkO4Vt@;4untV67GNf@m`;Hs#8xC%hy+Jq>%5>;$3|U zq{p1!epeogc~(_bHJp~XKhs5~-1WZw%`&+Y0B9>#t_%z@Oh35~bp$R#Eo!KLXrn!= z(7#OfBGRE1o=%{wbMnR$9Wf|JqU~BrfdPLHTw2>8`=u)t7xTTTI1b^mb*M8-+Aw}d zd2DmYi>vkWS)!t%%ELo=6c-sY7(QolYS$oFTUErApe#_;pW0R!upS@aPrLTfsGpsC z#*M6orS0_@&UA|d1xaynaRMz!ueq>HMC!mN$F!I;RlD zr_5X!w)ONBcJ@b!Qt#9zf)u?gTscJZ!T!f4wzhEy)R8AT>mxgsOGv1fj@V!1EquUK zbn-sC|M9VW6Y&-#5W(bo71tLU8XD?9KKA+1l_6WYC;%S0qkAG9A6{_L{W#RQzC3J9 zZlxX)HziMG8am7?m2TXgwPfRJ0fFDkqqW?dt@wH!heym}@YYV98GWjCJ5^L(|5h1{ zB?TU5KFX72FuYIGn%?8!liQCNs!0bN6_Tfqkf0!w04vfQHjrAnLq2N-Vh3wr00mPl zVnINsOGU)Kcia;}L-KPrsi=ic44eRVE-dwV0RN29E>eCjcQfXi+_p?f%= z?Ntdov40eg_j(IRT9p3Yncj6p%DOr%&A#n^^{R{)e<1czXu}DzdU;K-QAY`>w6d?k zeQejz>V0?5VEG5MUyMj2pq9`LV14xV&kd};)z7QZ)%fa_XPH*4uB7Zs7Xd2B)WWa0 zxVTWH!{;^`PKvp_NV@eyj%Oo}8I#Eb;tZI+K=kmePNcdAA#Q_AUqXi+pS))1Kg zHGZlAv@kDDKhx#$;>C;0Zf~8`rQh|^Un~x=fXPDTErH~DnS0%~ReNu$e9XPVn2cZA1*Mq1K?qD-n0T+vNYzI=Vzz4+jv{i;T>m?u7VV1_|B$Oe0%WT{j zb@JN>LDN&aRFQgmMu$41v9W3GUtSl9Mo=~%?*B%&vAt4h_n!UxZ$8h?M(s1zZ}q-y zsIXA1lm<##@eb^DtvD&4@CVp}2&Dk=sQr)Qzc;>$M$)lpEDV@FYnEoo-5o3H#=NY` zqwbjnJ1Wrb!oApy4BF$wDdACN3>4V`jJ%FNR8SVBu?9tjl17wzNvvK&`ZT)_L z%oaH=fffKr4cvG+mL}s{?jl01VNBmo9UY^))<-{o{=B;-Jft=6>T>0D(=vJcmeL*T zO$%RBrHgbDi6lnkg@P|lQt^03aF@gBvY@Wgb~ z3YH^-JyH8Y&rv4C7Fx4z-9D;H2s?7h^=}#IYVr>c5C7xz=^orvB+d&Z6~vqQbLX-e zJMVN457edDhS=1nM}GbKb(Qn_2@Idq8A}=bRs?@blCAZ!8yXsp967RfczDh*h<({#dwL{q-n{Ac$K)9c>zhE->X~T*@LOF?ts^jNIwXn_CjPQ=~o=)X+%VApCHP6gT z!!BM0Ns^tPpZ~S1Ydr`6%VAWaV`*_yLu%3;yS#9w7h%&WT%5bYYlY(Vu;!tr5ch@H zWb3zW-#&Ba&YjCobkr)K(Ds_MT!DMqv}uiQi=+;(71E3`->_-ZB9^e+SfU#zkHX;a za3*-Lb8&IDm%dG7JpH(qCwDAM<2MGQs;s#rR1$Um$Uswwa-!xu;csrsB!QU9fj;ct zJw3&tUwjxbVWG^iumcAVs_9SVOkRO>vE$ObedlK_Dcv7EgW<9B*@`oufBTCSt}Ko$ zmK#!Pa2txHEh{>7bJK|jVMG3n$j@4Ut)*Y85_(D%#pW0snq%nl?d;sSb0toGeOD+t zncr+7EA2d3$yF&igg%d>#R? zB%#6rmtx`|h??w*;;(oQd>Osr9qScgf6MTg&wgk8kEi$l{_fF*O{MxkY9LuwDJvIq zWL%bF|2oTr``iP=tOvJm^H)`^(^|D@+0$)lh_*LDP5D$EV*k#u8*jpu*MJZU(4QjC zn7~zf3&%QaC~HG{db;@Ih4edH92W5L#Z8<%{YIAevZ1AT59cFQxBdMWfa1j0Q%mjK zl|vt%tI+>oFy2Z`6#kFjRg4qpVL~!8I(X3eU&I-R;4kaz0E~g+_pYvw$DS{~ zz`cb1#!ImiSf4(9x|Z+97;D;k182TY>A^1nr^Y|nN2p@qA0oz^8xQ|@XA=)R$CoDJ zf*Ut(Oi*NMRrRDB)%*$u313w&ky*>K+}-C3s{W1x^u4bSX*#L<*;Kw}lq&)H_1h7L zHCFmE@qaiJ^mAY^ivDuFOO`GW(G}q13t1)Srt6JWZyp}#5>mTgc(8p@znJ!)?92VS zOUd=RcF)P&+AH28fxoTV8-Ww~{oA(^uvr>NlL#xyJFhG*2@i3L!qZPWTqQm!YL7hd zKm`t>-?eLD0IZfs1g#BOS(yWki*R|nXU*d2({KZY5J(Zk5wVa8N??&c`)PLe2gc6K0FN(gs;CMoTQI|3=UA~M$A@*~Wm^f7=@xkG)Vv%INjdr_`wOAkm2|Xc==9!3F06ke$^u6G7 zj{u4N{p(kstgI{$m0@783+{R+BqV@$AbM7|r%cVMEjFba>Bs`-jUe*l1|re09FLzo ziQaN*BFG|t98&@2)vH%qD`JB_eE3kfK3u_@SA>}cO70v7&s~>+@A)8-anTwkCSd~k zAmb)Xn9z7$0OwLWainYR^Sr!W0ZJ>W>Lu0^y9w_^$b&wV)&S?G`-7*LZlT9|4mR6% zXWQ9Nt*ucArftCTj$y?-GMwWlhhLA%hl*IeaKsew*Rthu*bwK8n}IgVfsP11#2RK9 z5IYFU_|=GJjP@O5fws%i^{+d##vY)gk3imJ*WoKxt!l&T{19bO6x>0gF#q$y9M0HI ztTiD+A@zvc2xfbz{s6&H4l2}LHU&U53iqrF%=Y+IQPEyN*a~`Q{D#$=`+F9On_Lix zRJgn_Q0Dl3+?n0zup^y6+suLc0+IOWK`=H+b}g#yH7Ux)@?+`5?uYL59<^G+xgOHW zt6Q72@LT0AZ^H3`o2U>mbQ`$mHvDZT-PrNQ!gYOoh{v?i04ds@o|?39!;#y>H(J-H z56G9F`f~9{9ISc{RDys;`L?8^tu6Y`KYwScq8QT1a&x7RU$<@@#RP#CBwsC@a3Vdi z|8)W7G*H?hgNiXrZ*M)F=sM)E=hj9IfHGZhOjr2iAK;mGDc$RzSdl+6MK33|k}u?eVe?U)QIqRz~r2L|pV_6Rk~d-v{z zKyf|aBtEsa6YnqxBFC<=kO#FolU481wI^05K>=J;Vnq8<9LT+Z*4G3;o#+E`RDS#T zLIZR?Q?(}9dj6a_caYy(aRLM7T+^s-zz$YqfwB(+zHKHZ8~`IYb(V?pcvSK@oMR%c zv$^5%@o=P*@<#`E)@8ctP37cOKQ(c3;d?&;5Qw`GR5zaddYhPrC7VyGkW`W5Mj{pP z1d}z3Pc8;QNBhin;7Lbw9PD;gfCd!ps)skZ4fkhF(LQIaeNzwrmg~(IM{Mr5Z{O0u zGyyEx1KdiO-9`zkcg{F$Lj@iSWP{-Iykia5)@T(Co4LEYgLDbVj-F~wsNZf(_2r*` z{yFbd1L{O#^~cnw#;+RBA6t@D!gkHUQ6t{??#R{)A6i?51P{&bekxxxR@Ky5^QQVm zw!o@Y(V&G;L91S}K6UEU*x=ylshmQ1A}qVsGC>f`>L5|do^)nL*FHXORd8LTwLXK* z9=%?On1+BP3Zhu=u%d{z^I}BeMtS*E&kqgw)UI3e_=YL&sAswi2oFL(84KU&Bl{!i z#-H8n_&ow8GbFqRgT3uRjlyA2BLtYHq;^2A0)BaP({R>M{7U2%VM!WPOOmaDqQcavE4~XBkJ1CTenc76@32V zq=4{;SroVPq=;8Wl}A(xm4vf+H%DOSwRwtVzQ%5&Vjq}48c?$J?W0hK&iYt9n_o8&TZtZQ2{PLIm_=V!}NpV5gVmC$3V1$D!IROnjBMUrMki!%lqgPi*6P8<>sNCZJZ^*uI{Ca^3WT|DT*^boTUSIq>| zSEbhk)zs7MEL{8FpVv)2atAe@02AOv7qtvBQ8%uu%}>jq1U26ZCXhm81=qZJVTSG_ z8YtLF$^Xd!Gt(%c;pJgS3H2@k0$)$8%wFqNC_1r95nOkAM#lUF3s#AV#Q|4gYdt-z!VR>KZi|K#T3Rk23}zsX9hGMdT8i%*y5 zTb@!?(0g>?EP{=CqWL~5ud)BN08^&Ld2np;m`oe^>2IlSBWaYY0bC1Ey@DI4#HkQ} zBFwM%14zD`X4g?$^+EJ3LwuHJ>LhyEKLGRJ(E0!8ckySDHd`sp=9@S*hgwxWAi@F6 zGvqe4FHQIXrJ7g+d5=UH69+ba_Ygkdm16HLE!1(*zyayAE5sjyHAy(2@TF29k+&kM zk3HVZsMtP!hk2U7G==WiCX__XeSi0uY_e|uwqMz|!3a_q|1HM9`7ZBhdPb+%F1`i+ z$L{pw;sR18J)HR?H7s6*1NbsXIu2(-xZ1WZ?H*K}2%xV3bsmqhBMY|C+i$tj-56wR zi4#be6k;4o7mYoE5==1nPA&KR#h+|uxc_yTS1Fl6i7{_2i`?iooC@wq9c&aSkl(+5 zfBEG*WB4+xHOmt`xAe~C<0G{jLdrKqK73H#A4nJTfBP*ITJ7W1R1*gokFfLJikat4 z-D6I%pYy-FKm1$nvW~p9YqTC*3ks@%`v7*3mi;r?E0Y&>C%91iwI-jaO$ zWA01}LQq?#b8vv4c{AE0iHv^@;vp;uwr8hL*gR{Z@Y_WA2XsVq6IGxfVGn_ev#57~ zQaW?VM)gAl*GUBY;p}WJbQid&D`bFNpRhkEsnCn${fNY|d+*)~ z5U3H@ROVpv2H&0LEd2uRoAESxg@8b_ud-YTCK#g{a2CXy z1~7Oht$*kf`)5uLxa|BFFPh{#SK)OnYV&9fqs2KsULBG{S|!2`H0-TY^C$Gj{rb?y z8v45>n9A1IcTVG}1fP^ACH|(&aR^?;b}^K2J(A|32n4hsru%U_j`~K(!Iv_LAq4*@ z0o%-;0P&o_LlaMO?B90b@Ovz`)BCdvuHC#D15rozn;XJ(I3QpfSdGdxap|lp^XcXu za=~Chs1bNaGkCM(r_RneFeiCMqCGN;fpshKNwhW~y3GL~G#_w3%|hvZ{RH+G)nP!( z5VhX?R-6f8gSb(R3@3XL?T7rgqJP2L`;-7cetvgk%&G$^?3$0yZ9Marls?nHokQJJ z>SB$sOb&x6)MfE0DOy=>BQY9M9y_;qoE2{0deXkTdEbuTe_yQ}yjeLh1j|7_1;Ecz z)SqvL{dw>i{Hv^ha!vies-SdNg=8mC7jm`-x7h{+FKx>Qn6YCFRkrTtIQ=KdNSEU2 zdl}x|j2TiQ@B<)|te5w`cyXVdUE;B(qF5?(t!vntJE#2c?XWNbeYiqOM>ctFkda}s zAc)?^5xmit;6CO?3Z2ojKZvrV)qVJI?R;Tv6%-2PIFS}|29U<)7gL%0)R(j*@@Jt$ zsED5&FGxp(HV&$X#wHZ)ECJ$aQSwy4ry#(Dr{dvBeSl+jrYGSFhv8to<`V~NCf#~@ zl9d*S;k~%}H>hW>$-BFGj%+TfQ^bccOs>FAptEn^K5`s@N{&We-7;k@kIVL*8$G?f z{SiL6#0-Q%WUQ(_AFI5F{Fm_wsDp?z0pKzL}9Cx3|oqA6(8K85tP@Em)L*{nNg>gT57HLa{CUwA+V==v#a}1?PJj zN?kYjyO(ggI5-r#ZfRV{v7KTCwBAo2KOUT=eKlb=QD6*)@C~JvAZ3JBu2g_O?&X(b z3?>V52{N4c6AqKPKd}CE;8-Eu#MS?NvF_Ki(pJiGusn!XPI zxLkaP`r)QGjGbXV=%`v7@N)+zEn1^@|y{eUx6x0}$3^ZtK`1tq;Yl0Y2x3jZ5cWcw(sS~&am~cHVTx+z& z)StcH50`4i8ED{aer|4#KpbcTAO0E#ogPa`96;knI1mQDy-}9eIotqVlL~f-f|k%w zP=u&L+(LOFe|-aj0z5f!$nam2%-{NrW!=KYg?t$D?0XE|kYIYDi7J#&1b+t|X2{QsT2Egt? z^)&!@U=5TN)$ZdC4w_rGYzZ9V0T)05gmLz{fSOBOB9^0FINSVSi!;VXhZZfH#fH^)LC+a&7t!~kb%gZK&Gj3Ekl$% z{)IK7`e|V#!@_BY1tO{n&?poY!HuC>6yn(AjbC@O;NM%3UmFML^}VO3d{v0cUDU$O zpn(QI`6^SjfMB#Xw0`2-3&K1`XV0FER1T4AeG~3IQ2iEU@yoRw%u;9~cV7CfDL_C5 zJw@p!hf^7Z6;K59p=kOMOnq6y-#vRf>Y^b;BI3O)C{UyT3=Q7YtqvcjfuIEV8AZ$( z>{m#MOPN%++Tpnok%5G)29brR0is4A{Ukc_p^(r37e(3~ZF2C2r6?#wiaN2QG{Cxi zhA$5lN>9t17wIBM*!Tq&^aEr^;Eqj@`%2PX;d-KzLA4wz88W5`g!mRsd%D&Tc|(u@<RVbjmPy16aiC7Ek>ToaSuBxtQfI-nr%#E49D9IKgntR- zu)?~UiWOPVqvrGQM3O1t!Gi~&BVXe~dvNRd&rZ!KjDLa$#w>+g_W9kr+t>)^aH0mT zJ9tiRwErNp&un|fP{)(%Cnw^7^dh16c($4Haf4wa0UT)@+9SK>CO<($#A>+W6rpYT zLemql7#kg-au6vy6pDrgd>Ga7hdgE2fF5#I_bcg!)q;Y8<$<PEh1b5^H2Cam0h)4X2p8g!_fx|{E48MD74>`IncxXsjC%+wlp=S?*FO&mVY|a80i8(tv zGfRldT8}6(0Xu+eMokVhBIG@j?rS*)JN*4of)h#Vzqemte{@GH6aWFS#2C z0||u!EdLtAOc(l}RKddZ9RV6N?o%phGG7nO3756P$;c3cDsp$!|fQ7$NTCES3Klw|o`A&V$h z^SAxV!J!_hdQZ5TC@ln%-aB#AX3df+etSE#Xftyga8T>cYn6@|a&d~@*^CmnqxNwq-aRM<=~NF4leD}o5;_nQJzH|c zDP9*YL2P|9EPM`?PipFhuG2YP?6q}{&`G!t_VsXy!>7DClc!D%9|#1C)dqI0@tqL7 zF=f2oQVY{IssF?!y42Qb?i`z&*n`X|0N9S{S!y?_Nz<5$7#gV(s>&?uiz-Jq>U* zuZF&2=|P>+?y&&j?$j7yM!wT7ITU3kkGz|k&6mg=`yD*(S}_%WuI#nKZYpmq-H%j# zoV3z6fAgWPeQpu5va(442d+KkT2vBm>P!zMK?Kn=viF38!*!U=a@ahLPtVN78&nW0 zD)9^`uaj?A_o2}#2y!A!;Gx&#IHs~64l`7<>YiL8ge;KH6w}6T*?oQYj7}Go=ENV7 z;SAoQFjQ4R-jXLe_7gWv${3tfadNJML~=nlLja7=0dgpRa>ABKad;zD;BNbbFb>a0 zZfobvm^B3k+fosG=N01P@Jyb6$T~0-u4bZws|3&30|u)F4+YOi9X3p457VQEUVBWK zbnV8C2)Z#K3n9bIbYd~qEj7U|2RnETr5W88k(>x}zK+fi`MUwltO{?ei!#Va!~O&} zyMuHOpp^<|H6OwF!yfj7-4-Obz_|Y!kB695iriG;!-fa*O(^KsR=9sELEjI>4Lz}M zyH4h9a6Uxvn-$&Mhm0QV+#$m(1p%P}>WL0{T;^aDVwwHdcUyl*OjIF4!n#KuHbk#u z$BvbP1Mk6VST?`D!wLh2wFK-V&N=tWl4$5Xi1Km!sGX-{1Ty3pQJh6au@NKELPSe5hH$Ku=9uPVUvlE{&SlSW5JsdFSJcDFmy z=&cP$w-IFw^A#9ic|jSOst@Aq7PKuzuMvdd8QNTK4TJ%9rhR$487Kz0Ftr0~#@x)Z z6D7=FKRqDQHZ?UsyVw8Fq!>ggIQsRXRPSAarcn+@HkA(I0ZJ79$;F{aN34+4i=1>uIecBJc1ZikPhu^plnkx$TSV^QzU7tvKW zbnWp&03XqQ!3GqJU7RbI&v;|W0+~7XPk{b()j2 z>fU*9d11r$j~}%CWrAKh{KXRUJOADESHQ9|+M%Fe>M)J{D#pXPrsFm3{}Pu>d~jZ7 zx|p)>&Dxk_!Ut`3MlWVpKn!g@>O7$@qc=Y&$N$Ffe5{pjtldiB9Y}yG7Lq1_%#xd7 z>8AArae^v92>o;92)C7I6WVG~-eV)3?u~BnkZYn!qId$yt2wFCKnUYX%c2iIJFkNu!%L+L;1N7sR zM$ZsfB^|x^&5fFMJ8Hn-2*MpjyBIIJZp=M>`t(vnFbTV601#j$2ySttks!TAcA&5B z65;>u{8b^lSX{!|x2c`3sW`;{R^12(s0dvkp)#1Ba6wl&HnM4&Etb44oR>X4;gHrc z^*_z=ltb7=54)5V28~gXh0X@M_s=Iw9)A0}_64di@^0dIs@1(f^^D{iOSz~9J!B%Q zR;@aIas?CToJE3e*pMUp27TTfGWTE?SVgynuJUeif)NsrKowwJ{k{?pvlNxG022{~ z%M}*+S2d$8U|09S=nDVk%;S3C672E$U=??u#4SNqL;YgQWTAN`WKK9c$!@vQ=yP>b z2!j7WvA>vM1yCi7Y0Kf0*JmZ7=aAeD$ea!e*H0~uK=p}s6~n0YcY)+`j%Tk`O&kZ) zaI4+t4ng5tfr>}c{53!6WQZ(OOb(BX9I~|y$y`NTC1_}=r>&*;JO_%4W&3VYkVWdf zQA4FYSXoOT6{!A33fKQw9A?{)Nj_z_(E&5`Up3V7&YsQRGO9#1E#wF zSpU$@8A|S36o`V)sdEfl)EpbIF&RZU)k0kUzsh~Z?uY;*5BbD4@I`lDpFc`kMADV$ z37{Jv**h-I?0Wf*N88;W6ITOPX)0HxCH8FM9pFK;m?Zz zG5O7Jh`MF)zj&nUK}I;DhhcSTlzfQhh6liU&8Y5^HF@%K(Pk;eoIYblg1I47$ux&{ zAtqTp(35!&R?ZfL?gFOS=Lsqn5FAjV8k}KzDAS&oA>>=kpD?m^5YB>h#mz&HcO!|0OE& zJhfc^P#_YSnbb^4&hbF(AzTzS0rCNh%4jSyTv(LXEvw@1A^*kd5G{(Y_}S5uwXt++ zc(nGtUv%b+8SDr71F4m4B4j~qhOzq#l|I>#L zcTpZk!4ZuAx}NlM{5`jD9ZZsZ2=IkP+e&fI9A)IG9p<)v1 zY7LMov99AzIfltT%^44=n0)dR0FF;2pzDC)80tH$@wH zfU6i*qgz+ck3Xd?QrGTGAh+B4V}0ZAmp36Md5R{5M^G#C+OY|Vg#CH-7^FiXXfjKJ zfp>9Kb94`lzn0%K|Fz<;D?m)RHp){=B^ee59I**WlE>8?vis}F-WA{cl;|z2i_%K9 zDF5kcX=#?QFYxI9wJ{?&I3FTQ;DM8s2P~5iSer&`G7h1ECL_aDVVui_3sfk3QVa~q zOhT;+d^CaqUsXQkTu1%G5EAy|P^&{d1hiejB&LZ%i`DhNcHp0Q(15cPqR0vZ8B+~c zEFcIan2`TJZruu(2x8M);=rH3dP>F-=Lzv$FM9lOGECOt$>XBQWHGND{_C`(AJ6^c z4b}jZmz0zUR--J5g&9WY@0aqpEqFeauzP)mGdao68Ji=D5dS7&{QMW!;cqYgx!n+!Cp5w`F`?GCk#ty+IX9=l8m^W^HXfl^&qcr3u;m_ z5K(p$4~VfhXTLSW#29aqe7Nc^k~nFnfA8Q4o2-^ZfDr;+bvnZ#X8j16ho4$n8EHJ&uLCMPx#Io!b^Gkmww|JiEnS}F?oR#h zBszm`%;^Ow_0yS$>4U>+F{H)MCStz%e=h5&Qu#Ob4~EYx*g1w0sySl7ZCWk)YqMU! z>BbiR`5*qeUPkaQf6F)j`Yv$KFWQ=EbC!)?WIR8@IGR3pCCS2~3zFgCKVm3Z3ZaWX zG*^T+J3}n}HrR-tHpnyGsmNU+Qk*ev1ko&9=|~KHx~2Aof;J<|fh_ z)>65FPrs3bjC}z+M9NQ}n|8q&Toe)5q&ZS!1TgTlxbZ9gs=~8zQZ(XLWHR-hqjVv< zwa^+BWpN&+r_h(r4q&{`?d`WLogvtZfB#Vcx{5Ok zyARxfqMqY>nBlV!4}AMM4s<63NuUsh^{x%Lr2-A^^I(pGDZlWihlXJR)Ph57CZv)U zVA2X|w1;lB8Z;*8wtavAu|FN0S5K+m8y2M%b%ve9XRyKmI9ouL0~!5TG)m6Y9Z#h$ z+cODAR#Mo|`UE7`7>&QeI5(~n+2jo()e0uHi^QFkJo0V}4$|AdFK`{tIb)ODQwI+o z>>;Bxk~sJi7t?DV9DiG4@(T*qBowfh(d4)b=d00}%j!0mIKSKk_ha~1BZU6j%Tt-B} zkh2Bc=}$XY^U0Ybz-Sx6ydor1>(PNZeXtPf{R6KAyY}k*v?>3iCFwt|ztp6*QzXj$ zSY~rEG;1U&j<3}gE~6wy8(<`50$2kq|FZy%z2OV3oOBZ?;6SN5ZLfc9u;Bu~cK{r~mBtt77Lzc^n@u|a^eI=(hmRlE$N!a~ zjd`4=-2pY7qpO7o0UXce`lDR{^OSt=Owj!O_umydc*ie6W((dErD=X%-H+`x^h3TX2NQwLNNJ3%dDJ3RWwX`|UQR3TvW#x-;&z`a4L9RNrrV!F}aZ)DP} z|LYi(%A@E3V2k2Y&kvm^;u?5DXA-+d1TE|0ICR=w9>nwFaDImS9=&;xHQolEKmT6@ zHTmdQPn~YV;|+cKMiS@vyLkw|v}9KsWO=2A%D;|YCMJSd`TceD0JStB(xEwg8IkIT zUS7Kj^IpZBALr}re~yODVkc1_1i*a7#>L|c7C#Lqgq$`wVk_1(bk83DXPuis2DQ-r zuu6$eJ(eW(fDPuV0fMlJRW(}i!xwij>j4OI9+kg*aoB8>{Ltq2&rcu|dc~a|&*-wY z^-N(V8M&nnzr78aT?MVE{sKU!dr`Yo2>(_4TtMwZ4;o9Mi5@cW7_n#{&Vv#SVMh~< z^l}*G@bkK?XBP|zv~4IWkD+5O1?4qVFS zfq?gdfE7(&WiRt2fKA=A1co0s1uNP+lj91lGHvi1xHe}Z`3m~xUuz|OqZ!?|c(qddra>T6TBG4D@Bx=pN#qVSyGtu-mN0 zUKA5d7McR)k&#xL#KbpaioBo83owUGkh#j`%q=-I^bSUu^S75ZD89s_(BxP03|yawa}!DQQ- zNK|w$nP2e8B#wUg z(@S)cOc}Blv0~5=h05EZ|LwA$DFt>A3jfm3g7Gcw&7Uo{)C=vvcng}K1F3E+IW5ss zPF9#rZQ!YK9oI_^@lPdciuy3125e3=w6r?NbM9(mpbmSPpQeesOd+F7p}!3zx;$`E zAh)D!i~ZL4!`l!{uZMo`3t?RpRvsAh@}9kSGZ?BpUMvXml{IhnY~rx)pKK=z6FQ&O z_3;Q)YUH=0c1*_iY=FqabFjj+z%l;Fe2rdm45`xyOS@Q6T5%*Mw%0yZqc&gxqE3O@ zsDZcKY8a2L$ig9LOBvvr#0HBW*I>`!Vifu!(!Za9i=gzf*-qzIx^p0n>26Zs? zC_0aEjIeI{$w#oL@ecJM4!-h;V*grI`RUF( z|AMkU6U1HSoEU%oyR09s|NkZ%*uOWJ9mni7A6Hptwn5E%>^Tf-Sum)1bV~_|CafXa z&S<=~?w_u;b*C-xmI0?9#mIQIsf zve%YjfDIgLvHKs3m&;*`Xu>HA*D?6(TL*?9u+vF_aeFmJ@&U#(!xJVk_`7BsRe8Y8 zhS!Pcr0}GG}9NwX*p&Q^P zlvcjk?!6x89I^Obnl)%z($8po1v!ji{DmE+#5V-Il+^R32{ZCug6IObv3T+5P)#%V zG3cVLh?;QE9Nef*m4y`(vJz^6o|2t>G)AV;0f7YyVg21s7f|L&J}2Uwq6j}iqyK~FB~Q;ch{@MXN2qC#S}$RL zfm2u(EilA-?+76kk5Ar!3@x|{jfX~C;re}gw;1ZL2E0!s1>u6JVukD1=x8v-6Sz3Y z+z)mWnZNa014;pp#dqN&f;TJxux%{P_2Y*R*dF9Ew0ZK+fF7CI0e!#;NtV3580RLE z(+ib)4LX6zOa|S8G*;XY+4S5#bWLPD)%+B}K#vN%u28ipmQh<50riF>S2=F898w2O5~L}7 zz=iNHUY}<*2V(_VVpHl%-#$91c1Dj=KtO;xPHD}E1%`eciF}Wqt)ymSz{y0)WTkQ9AlAWhrT3G0~HcyIGGoariUsczhGa= zlw${wH)79?weJmwR{q0LUf7P^t`1Z|ZeVpoGwyT14N*i9gQ1D+l|e@o*eXew$cYDO zaOt{C;Tm|X8KSVV0}A%H7Z#tGW{mbfiG#TuIG9uyA}?3cYJz`jrI7=DYt$orOpAkK z$z%_E5c(Dxtucj61FBPDF-libv1x7wi`sI!k_FZ7M}R(QJiD2!5X4ObGLZKk+;pL< zGYm7JhAnV{oZtpiD>KM+ar6^2tRHs4u_GS}Oo4~yTp&ggld)I=)b4;m7b@^C()15Z z2Vk2a(Qtvu7@|ySv4fI*2bx_z{Kkmjmi6h6(HADnM0?Vw?G0~0!?$5!8=Fugakc|f z`RL!2bJeBl0boja)WAOwGG;60WvGDB22*2ZWB7L>4;!e)D52HR5>dk|Cn)1rC^XV- zA=$FRU?|uPT!LmRBN1W7mh0C)ni`=$_|*X^>MJ0hJLUpffN&!N0jxfxTO$ZEcdyHC z2^njZ1o@ir{pA`c2$`_WMWAX5N+E9_){dN!10~pwXx?43a%JuTc@V1$;V8q5w7ckP zTeG7b1E^lpfVn7jLBx_gOz^|3g5CQX8Wzlw3{Zl{ZLQ&SM|d4*ffpMvRe=%x&^mxy zp#)9|-_fBGGgHvHJ8(WT97LKAY~%y`Zf`ktz87&ZPZS1a=xU-+33eYla>NIv0b)Y(_-Z;o~VU8n+X=6nd@ zpja-5!vszP>B!LfnEYK6`Lh0~SW$Oj4UOIe^K- z1DQB{pq}(hY`4a#ZNj8=-$hAHp1_=j9%9F#a0#JEfZ*BqwH0a$g$h#o9(iNikWj#d z#etj993CoG7}k>}H#N4)k97MAknx9R8wu2n?PM}Hy7WJEYyb~ef*R=FyLa!r+<*u2 zRAf5lK6jt8j#MTnHP8Z=(x_7E&Uc(r(y-vbm^7@HG&xKHv=c>tVh&-&j13QV+D&5q z*qW-WM+pgU&P@9agBcfPfK}kCaU1x&fW{91|6jLr-xGtfP43v`(h>KodVo!+t&L}W zAaf*!WksSEZghhJu8t3qgl&ivVp1>(54XyJZ-m` zM4B)9IjD-I7F7i6!ZrnpLa-&O;UUe3NRN&VoM#P~RBQu>4kOJ$yNp6r{Q7PN4dQ_p z#gR)3N3n2yG_M9S4a~`RVgGK1Ur7t?ALt3DpqSs#V2Dneg>o*baK79}Wo7|Z2pvFq zSr1M_zVf&R)g=_sqy+^WiAJchUU}om+#mWzlqO6~|UkG8y^~>Zpb+xrL zZ;Iv*k;R1iLQv08>~CzRp(@Dy^r7ItqR7Qw68hrc5=0&Ta9H;w#$;e?JZHSQS8lXj z(xSZ*26eVGb>Nfl3%QjHMslIa=KQgJ2@wdVRF%PIRrp0UKB>R|B&z5&HaEi4_p2J( zqDtZ~Sj6t}V2ons%Ink(o{J9g59J;8pFK{`@LT=l>e**yG~y~d{sV@|%>SOQka2MD zXc)Xw=JCBYxyz52ys>x3u|R`E@4CNuDXGij!$g2t|J%OPDJ5qBion&YSMP%N0Thr@ zNfV4~B!{Czm$DHyGCI>M?iOPYlD{3}FbZD0*onpw(xn`o5j4SAQF0>@#|>_ugUzz)_qFMX;00y|1we*n;Q80rqF`Po5}j!bF$fJ~)3$Yvr*02ooS4Nu_{&&%0ZU z>K&d&c~2e+5k4#${e+$D1NBTc{6K99LDS+x8r>6Xacs32? zz{v#hs0IW@4RQdl=5Uq?_DZ8EoNRgcnAbG=7F@6Px5Mmr#SEPITX-q?q%l}U9i;|F zz-^@2)}SOya86b*F~H16fGBA)8 z)7kHz7nyoycGX^>41q`-d>CJD3q+!Su{zB@ny51v2w&8O!<aC?8K}z}pUj>zWy9M0I#VG{H1ccRtKDREq^1t!7{Br(M5j=doz4F5W#Tgq+_jngU0Z z0itEaR6dv6(|%hS0hb2Jo+K<_lNJmIqS9Rr!5JvJ40R`FIXIFj6yfc<0CXiQq~V3@ zO}&W3#EsJqCC%AhnZ2kUi;JKyU#;4~?|gAwQtob@n4d4A-)CLee&fLqn?5pe<;*;v zi^fs5hO>3bk8bw=Y!1@Dn~n6p^Ka)1MHy9EwPn3*fo_~{-@=7Hr}4e~?}st{?|k6@ zd+q<}HDy0yZ)0v&Sbu*%MpDs}_4#dc|LDNGq1Ewx6NST`fZN4b7!38o@GAN`#)1zM z%Izi$*P6nQfn5dYbQM4jxNf-k;q38YUd`}0jjOsw+qoC*n)z{}h4Ep25wDqHXCGZ1 z;W>8)Z?OhRB|&lP6q@;!knkicF)$@XdhGa?D4;RCX8yrRk;eOfyyjHmTB&&Hl`1B- zKPHX*PYwKM?V8XU2J>BhRTZXtox1$v)6N~GSNd?}PAPr{oowRL34vff@zt?NpaQ8%zh2LPBX#KGf%29@(hy62h3W0t2xKPJ>XAvNhZP?iAt|4ZOkt(MGA< zokdjopkDXfiDqQSO&^z;ZTe4oON;s$$G9i$T7{e?2_5#bx7=VJ@}ayJsE$Rr6B_s| z{zPK)9oPr+xj~|RLyOizmKR{X_Tdl|6YpDEEL>2j=i&vIQAaPrARPr5JRU2fsJ#q7 z3lFw}G%&pNne*ot0S!pQD`3{~2HoYM7&MX#YV0zC@Iq)_>u6|8y&DJ*`iTNs2p)mi zIEdAuDcL0;csSfSeN;iGcp(Na%o-bgG6(G@5)gq`1F>HPjJf+xOThB}5x?9hM<(|7U%nj1<9Ij8V zTFa3;MHsuapdZV?vw$XbQ-kC@5#2Ivbm#4(o)3?l{=CP?tA}U+TDi5C=S^!gG$_Em zQd f>(6u?`f%+Y(^zMs8iiUY0&2|$-N4T^11rMr|el=J8n{5=iW%oQvh}%gTG9k zOfzH}#q1NlI4 zqJ0i5`nbG_T(MM_kwKczwfibf6~H1i1K4iu4f!u z#t!A4(1lOha4TGrG7(e$9x#@mY&jAV#u*bgZnO@8k&Ja<(ZS_rgk%7*P^)8#WqS%4 zsKLw}t}jZ>3)mYX7mMR+g=!LgV9W$QTpTHQ1I1u7H2_6vydGv6X#)oN{+XH=3C2SM zf761fUls|P#Hvs*f^Pn5gqv?m(K8O=uo+N8F%K)ef58PrlY9M@(@i)zJ7#x3EZz*B zA4NO4$@!|AP}K?cj=?gcODp@pAR`L=ns}!8KCm7nwUOxqBPAOhautdi@i^edp*~0Y zyA-5of*r)8PK5yl>#IoPnK4I@daa-uS%GZ@4Yk%?)Qd9}WBZ^^pcim;mh`bySisrH zHWtVhM6BPR4bmPrFED1bJV&KLF(2+-k!q;cad;#qsv3E_z$$G$=zafJ(5!{Xb9k3A1qHbhNe9(2C0LwU1lXs)OUnmdF4tbXiNzQ4KBF7_%}f$ zMrs?w-xwe*k0u=@ub29I0>)xQPV50J2Ad?pgL~x-Dma?{Fbdcww2pG~`3U?qkIl%4 zpKb}3##TtDT-LBE?4z;xqnQ&v?W)jO!z=R)OG9%}Kf>ISzef;vIuB>9TL7iq znuIT-s^X@oNVx)2dIQHs^HTF3J9N}qY}l}Y8?0FHQIM(!AqmVna& zw#5~x5t`P+}mv)1z)-fw%q@3(#5KX2RiY)@;sUH5fe=XoB-e(d{x9P8?V{k!MP z;+n-^Fy=7#>{Mhheu-l+ru6(e1OGvO!aO7i?{oPfncl`aIH#nx(`6;%KJ&# zC8wD6eXYdr*REb&|M+x!mCDnnPdQ@e%$=)R9-|elXlT1w+Wv|Bs$!-7Sgo{V+rFM%rSt0)AADoqB7HzjETliLutC@RcE!U+QtGS+i%$c{?zR3hrzaxBqcccIQss z>b@uSJHqcPh3+?g|3KF7>taTy{qpRo41-O@p$clH5h|x!OZfKPUbih$Ew(I}>1j3C zW26$Px-Zai(8$*3hw=uqs^EDmb_M@XwA}yq}p^FB_Sc9@Pt@*cX#DVgYg3bXZE8pq7UhYc)9A2j%*$k{9|Hw}GFe<=$M0D* zyli=~P)EKafx+NhB#L9k`MM%r|EP$sm}R59Yv*3p*Yp_ond>*+FGr>DrqG%QZ-r;uhe^s^$CeBTOzlfo7(z5=(3P@`tgIs+2^LMWMXG| z=NYi_3`7du_q3dfc;h477X7$RG3Ic}=jP@x`+@I9x$etTEt_u2X3g~BapNdg_HR328<056( z*Zjpt=N6tL!LTr9bYy7l^5xquv-7B4m@((`w{I~YKImezu-PR?HwFS!w#-ky4fnXW_42Gbf#viRrp>XA;HzFSAQwEqvpA4pKWWu z0S-o0ve})@r(3-~^_i5%v=nTt_i}S{OV7x_PF{Og!t&(0bNf2$wlcxW zl*LPyM6KHAcl_hCOZ-X?ulwJ5;n&Wg?Hfxc0rL$II2#_4}7Mp=vq~ zy&gk9LJMWa4quwJfQ1LzzJ0rxd0o1J!`r)CLb;`E*I0k6Ib~&~T$gTxOZ~c%mv>L9 zQ%qB?#}1Yl{<*uuFGed(x~t#aYqLz&-OZf4!yZ0So(0^;@+>7N<;k}tILQy zR^S)D+l||{BcnfGXHn3D2g)g@j%M^#nc#_)<>jwSkN(i72w~U%&HKWI3)*(=;#!&Z z8VD!l*a2TUI)q!^KRR%tJ~LV~$(WCyfA5N2*AHMrBsq@Q-dMUt)x*PsR#$c`M9#-} zsIQ$%;#6==O^uk|vtN=-D-~&{W!ew$){ZHrST^l<=y|`JUpdS@MmrZQ}VvomPMyG^^ zyI%1a*QKZMtHng&#PY3Qe~`X$pt~usRq99k<9Y)_!%!@4=#!D8a&4uCmp6KI*kzhO z=Xr8%I(ZL~<447t*C%S8+{epn!RF$UaZH~zf6cuwZ+s%ns+0NpvaCA-{KQQjeydG0 z$#$MHi0vqDT(ZW-*0vQF^0JaKHO1GL#p=Xb*E^`GL@2+%`sZpf(~5PaQ5s54BfUN^ z*dpmget3F;YqM3@_r`*?YHH=7wlcg%6w#}bqjAI{5uM*uR%)!??|-&cuH}}1#sfrP znK`!@eA)^FVn5>3j##gE{=O!kPp4U{oo)X{)mmxTaxLnZL-7Q*`XrzClttiBGdESr4JLcSnW0n z8<4fuo8Q@F@nCu0m76#B_oZ@)8!y6ZT_+PLZgLBMsU#)E_Pq^N^xq+AStPxp|rJJVn^npzR3w<8E!HLr>%J=8p-_m=F?#ozv9W4^3>WLRJ} zCfOu2^i^~RE8etH#I?My`TdGY!~PG$15I{Ch|fVMKR#=0k{SIGv^-BePWPN_7GnEi z7WTuj+ts*Xwk=z>G~jS4NRG}Fm$Z+O_Y=!=H#nSO+Z(PuwvM^0EK1{sWz$>V>OcPY zl&P?-%+1czm6^E$52NWmNiZ&2tfio;TRxlxPM@9uoZi!F?rSk{^J00TvE1)$)=SLu)0!8 z`^s!(ctV+;t2hdQe)v7}f?eh;_NxYPP`S5timSfDz6Jcs?{F4+%MO_vy|}jEnw#6> z3df;7vk?j(l?frp+5&a1fIuzCTvZ82U3rZv6OK|KY%K}z&h1hhI{d_4iWty@_j|W_x3t`?n5lskQCNP2}$!AC{ zNiKY>yREHlD8FM0N~nfEwllW6d~9e~v2fu++1Hlyle5Q`%7@r)+8>fB?3k#3SmoLj6!V#uGDr)$)`2xH2fvbP4{M_0a5gg2m zpvQcCqSp5NxrZN+FA&M)I9_AHUf0!0R~~h$tEqOThb678dcp9^pHi8WwPIMacOG@nOeND(q<~R;qb*q4zyOt}l6>P4NvOeJLluyk4+!<;svBzA^gBiA`1+~-Fiy!V&YI=M3bkp0V*zfW?T-a<3e(jHY<-m<+0mY%F^2*8qow3nrjIDoBDX{F!nKOWaw{8jR#Gp_Jc`~;Q2r5zk)m(AY zig!mw*0zk=u4k`bE{JEtRYjaq`ntM2ct<*%#zYHm+xk1r_?4AtUN7BVmvIQ0P!*ra zZ+~@jsa@&?`(Mn>&CP04Rb2GcuiJfmHXX?4wuuvmw6wIJ$kA&L<$WJiRHzGTBJv_v-P*b31)mrAoYUXU$~%>a_Y;g%sz|2 zS2;5JI58!=c^texNl%?Rb@X&QLX#bktbuFIG)AWY737?+kzWC4L^5#1H4~3}$nNpJ zeLHMpy}go)-to>4PxG{qHx7HRReL);92)4TND=C-VQ*WxPew+@g9i@+1{9NLa@$|E zTbJ|s9Dt>yMt!L7rSDr2*?Nl=WQ@8#y`VUeGJ;Y`+)3_w;K59iK zfajwpyka3+x}>53oo_D;k5!L9V(c}bOt?R2*Bl!g8;W#Qz!85=i$V_B(Nq|?v2c@| zynG3cp|^~aqvhH9VCJ7AqeC69QH&)VebZOb72@SoE@^zocyxFbFE7C)eBpbiDt5+) zfnCni8My}{RHGyKlpZ!C>8d6fm(J(lcnAcyX2S;6K!-lx=1dPHnlOW(VJgoFUoWe-sv-EngH2wi5OhD$s-dpV-D9EY@N+cqv^?J)vMIh)TnHY z??r*Ildz3lN5<-$brh%QSRv4*db7@9t(5tyC)yfZ|yTh5Su9uJE4zR--|; zk!scQ;P&lB-fIqSU%bKe-R<@IC1D4HUd8x&v7S8HMC*Y>s)pA}1r~la!ERD;2$eQT z59Hj2Bd(Hu*5Z2LVeiVKt2z0cq>+CwDRKgByLvSogJ>6DR3-rhZ=7OP!~fBy2}!#&)M zWLGbOgl*T0g}qN_^4#v&ezy7Da#w~qRtnGSO-NnZVK5AcB-LRk8JN5WcmX?D1Z)#SdLjL4E`jNdNwNZR3^& z(xy0$y8sW^*xA{0^78V2oi$5D^YIC@DD8}@noy(#m&izyYe`Etoy-n9^f-q8s==FE z1!o7o_}r+dsF>d|b;H?C-4)1~xvZ4{sp@HGqV*Q#b>tpfO^#lzo4C^<(qJcrdZOw*-vNo;|xr~CvBzfa-$|=sdbLZ~5xkTbRze>cSpxtiC&DO|jLFVlqa zYo5egV8tv0OC%R^t0x#-J(ys?>|TEzl*zEP4D;|||BsE0$K=5zJQ#Uuhc!Io+K08$ z^zU%-_%6Y-c=7m~x4)UuQzZAYBWo<+>&*bS!5XEAF%)?(!Bkxb$;0{f?OR%lgTZ^| z;a0d`z7N_hSQi8WN~WuVC+6cv%P+t+q6l!uKfm^VbJEI63{=An;403x@>r)&ncVg# zM33dK``%P&zG>5@MY7lCuWx*N_fAwtz0;T(qUNjII~!v^g7PpZ45(eB7URF(Aour% z!QQq;N4)n9uf6#6H%UlvvIL~Zc8_q2TrU|I7y*!A)saJhv2&7CC)3N7(7MvhajLz%u2c5jo3_+O$yA zQ^!&Bv{uBg_^2|Y3w2c+?im%PuC32hM(&4k&bTx1OTMoX@OUZGkfK>2sICOUtjE)kLR&ZQ~Wz6c3z)LpNwAPn}R@cw}Q;3y_X0uxVB?ohxCtXjt?mGUCk|!EGTgI zfio;d)tPv#fGcC@TN*1EiRd_<7VP^wuo$!-iTq;)(|3bl^V?`100a;Ol1F0>m)JYx zh(PsM4QxEphk;zfN#XEZtq_4rQ%U0Zn`UKrVwtE|hTJe*@S+HkM=A_O^zAtv+5DAa(8LO;ugp zd%P`a9hpk;M_wc%<9Q3~XoK2T1Y#p5fXN!{?}(+kqbQh31(|Bh;qb7qHPCTx8}btq z8i8+J(RN3|^5N@Sf|1ZQZdZ?=p&2t;b3Il7X1&vQiv_z=^~lg|U;w3o*{CH^&L9Xg z1{&{>e6wWf(l0G7e4cp*7AZQ)%3hAcUAqaGAqcaAt?O)dLsw8cd-jQ}S)p-H^LskD zyy0LqxFpZUp)T&J9o)q z^K`xVK)efM@E)vSq|mka>|aa3Nj%eUtBTjZTo$9XcH_p!2GvwFEz*TvYGDeHSqhA8 z^&xx8i&w8mzj$n3Uk0^?TVk3Ss$~(j6_x5>|i!~)6TH|7sk2SNCDPUK8b z8D^eVV~Ve_h^uE0)9DjA`g%BYv%ADR-SOoXxioe9tXu<;7SQP&?d;pVaMJef<^Dyg zv#`&p&*tnNw%iNY7wdeR}>IR%H+H8dU;RO_){0 zZA0oQhcLu_=mOaMGhZu~Bayh8@l7`=dl4!Z;*8IhbBeBo@4D~2pfkh#8h&TNB`v+BV zdKXY8n>yA$+;=Cx+I2o373FtjoU|n@8@+hV>N7{;d%Xn@sm|sQIB@c0r)WL%B#4iy zH0xNPiq%Y%L0Mkz?)UOMSFe@3HT34tSWmG6N2~?(jw44N$R6?)IqHR&K6{~1^QDE_ zXCHDYDq*D&9dS!FeItu7d8>f(kcY<9I zM3fZZPgRO#CQlAB(g_VJ>(B4aa+=ZV#(SnkGtDQ+naO@bJ4 zgHv=Dv{jO$^3Q4F4!!Zz__H=-ILZ=YCS?MyU0@4NBaTxko_e6kZo(=tDq-oX>E6{>kcBkh#9_JA}cFvgs3q1^-&@HV`S;M z>lY?)i@VY1!a$M{6>)0CP&H5;d;k7@KWT^5I-91YNJM*Ac`{uW3af&TR0d5{8m_b( zQMDLVcEJ!N)k_ce-;IDM5P<@nPAR2PC<+iZzkWqoe?%+GQ41_gxk+rsLr5cgSrI0l8GF^Cn8298Br2nekEVzAk5v+&By%hK%XP~Gs;sVt&- z&#Mf%jThuT)!d-Alt_q1>Hlo)vN^v`goIAv!@#l~nL{xsrTBPwc<8<3!0qoyaF)M1 zv3Sl-_kp)LtoeR%KcoJ9DP5lN-yqWe3Z?${|IVGy3U&ZN%|!P+1KY1b2!OB^c;p!< z8WW0p4}HxDzL+*qW(3G}q<7zh z1tAEjKLTI{H+Kz@RTw1U>8};*Gu}+={Qc(@TX2#*P!@uS3P%0}^+b*U%`C?ZNlD3~ zG)V^gdgO^<>v_3{KQ%NU9fkvIIkrs0VsO3#{jy-`(&%)X?$?!-5*cr%@JfxQf3`c` z_=-z?e7zWPM!)m zL56+q+%hjdrJ`tVhJxEC_K-Yy`de9qcV7>1;78k4C=)T*M)~n zbr48#@`bUpfqZ3m?OIj+3P%}?&FX=Hfjod%P(VpPe1d>XedQm{=RxvRXjt(JZpocv z#@r=gsP4&wqM33k!0%S1ut_Vp18B!YqvaNK!GL=Uw8e)Y_^ns5Mw-1qMfLN#d|B~ck!3S8tW z&pfZqGpQubHU>bk>i?#t5_7n+<`xqE0-?j3H0qHw+rU?h=TKlPlUu)i;9NItwlAK! zR17DQv~>Up0L0#Z9>3#Z?E{(R>M@~@HlJm;}% zjM=_*#ICx#F9UT%))=rP#79%GJ2HmqNE4j18i1+yTB?@axxnQSS7%n4@S^4nh@GVp zr+78$N##Ng;Q~LgYQO*S0+A__(}b4qe7F%Zx>m|5S&$*OV8q}M){Y{W4RS>duUKF( z0LXH!YSafE9bDX*Ex({(A7LCATE4WmlXheb&&q4o$}bX2P-c{Y^DTiqMI^0GmZNIS zqHNFKb(br-Ub|KVl03p;s4pBzixrI1Y&0_1JDwgX=Z-=_g;u2c=vYBf&|!QPV{9Ab zp|9;7P6c-%>&ED0#Xt+ogG4rM2HSzdhig{o9Kxm|pih+>ki}q6i+*&%6v^pR1q_T) zuX_a>j1?V$SdYTRbwkd&$;9-AQk*y~D5oq?aBU=*JcQh zC^$IQee3|jT{+%yar%Bn;Y~VQz)X~G25hXX68~DU!W&xw0ugBws-~t5#T}@ zCadm{bKpQol&9=0ZdRpCx(AU?fQ109yEyb6pa(>NG`z+kX#8UQsCVjQ47Ns+Cu0WN zqI=+2L#-tkMb3F=Zwsx))>_VQOK~nb+kyuk7%28VGA?>V4AYXL63L&kHb8hX z*3Sm00(*lpt_;|z2sg<3{N>9^8JVmep=m7_Cj;{JprD{x90IvVFUI|bi{_`>zMZ@w zMK6@EaCU`Sb2763`Zn<(ac2KjCW$(CNv!yj?rll`ePiEV45fvhSWh2!HWU>Q%2>cMD2iu!li#R?$0xifRJX!`Ii2g_U3B2?65B3Dv(0eTG+ z`)_Z8G>?7fIn`M0=y&f9FcpDOxi+4NS|V}kI4V(yFD(4;ubg$Lpm{<*9n9gFryKGB z=-ULr2Q>X%a2WzfYluMmp>-+W-+qZe0{sN!k+h5N1p{Dt=;XG6f;z85kHSTm3-RwItc>5OOP%g(_QcuqMq~LGG5oL3|qTjMoTGKr$Ht9vaQf zTcr>X12X?zx32*m3VC!m)PZ#(U=>{ zT8V~*+%UW9K!{v-Sq@I51F(1XWQ~m|T)ldgugo4kU7STZSc}P9mZX<613Nl=+l3j8 zvQ5X{`iE1&d}CwXJIF9e26=ywx2|Z!_Xui_cc=pKk~TvK+k5cfLGqHl*o0p+)6d2` z4z+Kjd_~6%$HuTu`s9bL(OPM$Fvt|anG5ix7tg4t1O-{|I8;8$f#gVl_d(|SqbKmS z0;>yhPrQC%K0YSkCb2w}s$e17fz6eQ`{QdFHI0C(XpAzyQEr603DJXmfZSV#KprT8 z8I`@}pvcwm)PTd_1m~GKQP_hH-}6?3HKl^H?^|u8g7m;nx|+5_uZm?B@mW|0vbX_8 zoXE^nWkLQTLfkL#)ytR0AF|I;islX1eR{spjN%7^U@so^&SPRL!ScK#J{i^}`bVk{ zcU@m}A90G_GF(ds$nD6)c2=Twz)Jf%H4`LG`tIT=Iw35f>I^7lQ$4*9T zXK32>eLV>LAaQ9Fyn}L-`g#xwwKeow5Fu}+rKR!W9qb=$aFd~+*8O2W_0 z0T_c+(icM?V3eE4He5Fk^U{jlVngnR<9a;vzE!Huhfd+C5 zkD%7L=ISacgCsDJn>n$WgAnIvx64+0tk^w&{(Rn+(Ti7cEyV1i;a`9K^&PNe5)6F? zLqk|YL}pRACs(}aV#_%IqL!Gu%)eUC;SiaCmEf>m3sNwITo*`sV`qcoPII1_Q5IAK zfCZno5?%^@p3{?2oS`i(jQbk8I=b= zxeE6{*4V=$c+%c(*2RU21=&bL-pf50i`s(nwFJ!CXl@s%z@X;l=J~=rQEIUPph2l# z-RHmQAmDb{mX7owXbxJSio#DO#vP>>1^*XIN*Gap?$XV{Kp*IFupoDZa_}AxL(TkX znBh-&10At~u@c8WJ-TkqvP=Kvb(^my zPN2?SohbBN?S@?U*q|MN%BFSDef`l2MkGi-Jkc%k!GO^RCx6I1y~_ol@K|9$H2eTM zWaEP_C~i~~Y~Y$T;)#Nkq&FavHk9w*ySfe{bLYEy`Uq%{_)_e?d`Ay#`?>4bz7z)5 z+t19Vmjdq(dF^4O#FYnZKqd1sNz^BcI1KA38TTTrD$!TMpY-tn1E+9Gk-!&8GsX0+su3YI6njqR3 zs?XTQC2j_zLTrKz{NMSFN<&|trjR^VkZb8nQ82_w@pLx~=Uy-}qRNSZv7IQ5wkDuq%ef@ce&CdA6Y(#-y`{*) zq&P4Y|3#S96heg*WL~>+Wsij&+zx|%?UAHC001=h!GS$C^l5zUwqCn^?vlJ9czYJa zus-G54($EYXhu7l$C5=Omj~QWbhcpz4Q<^t{%p%`80yjqUFF#lKB%2(FCi%R)DkCx zJfnC8N~mp=PS>NP@ZqHZf$bO%X-3@Uy8(KQb|C*Td$Y$QsB@Es-wbu7hw|&k2JkA$ z(MA#n5~>_)gLz#P@I5(<_q-A5^hZHd93W+vsF&lSTyG7O!Ao6Nwk;t(ytP?}*W=I= z#6ZY&Q|9@TZqvC*1s8`e5El>e(Jn&fUckX|>_i)?1rq28%prryy;1D+CpQrFTF8tI zD*?3Z?;RN$8j@onYvr4vSpo*^z$5zlN)D5?siEqjX(l*fR6{280pgh;!I$w*^YzzT zME8l;n*@;@!Fc1omwd>}__6xYsb^UYjgf3V_wL;jn(1g%Iq&cH`qLI> z5jqFN&;`jXLd2maE6YHX6055VVcUn{KbCA7z@t#X9uP=C85Z)?V|*`m4pZB$x=Gw* z2}U|3uog5+;xbTcYDWH|J{h+{%Cp>;Xhm&^=`xxbd1JzGw3I#b^2--5@^W%kWW3qN z6<5V3z@)DMEHWurJ`t+ipK6F_lgko;_B2#sQ0ln4p@E}qo$Bm3KQW^R8|%*QIQ000x85QVwjC(X55n$10P&w+Hl-}lsMrgp8qnVw zaP3XP4i)r6z&Bf}d353tmR*Ri;!@Yv)~2mS5-tj)JuZ4{czJgM7R9OlHu14sXS^4w z197_BpvS$d%9-$-ExVAQ=}hh+aGnIQ-XS4*d3hPcJ0M_|@lR4^oL5SxMv+Se1tP#* zJP?x*+z`?CJ@$WEmE?W-@@`w7iI*g@DRR0x3N!evM}i?SYnber_s%f+D2L-K| zolKe$gYm&vLol0bovt&aRsNiHQR2K49~3z!mT@r-uau*(9D5AWiuh|(h_H^V9Kr@eg*6N`;d1muLm!GFL8Tp3l_R5P6Z zx$O6fB(sSqLDG?5rF6|_7Pxa2z(0jHB5U#EzAePY87i3|jL;A*;Fs7(EluW@R#pVU zAS4&1{@f)8jJS2jJ8J-Y?XaEMj6P`@noczGmJQPX+1s!db&d3Vwdk zId#Eo;#tTUL+vm)!ZUz$BY*$Z-~p{)c^08Xk1RcSvv1b1 z(Nh!TetB~#g3{pYf9zpRXX>#8nb%xvU0;g$Tbk)$hw4@i=~M;udeq-5=Bc;HC23{` z)EvB@&oCUf-`AUtg{5vwm}JKV%O&*Ewyt{B|1Q4}$CkUXp}~{;=cb>AO@A65VUlh& z;TxtV3eqgvQQ;)3@=d(&@jwEd6l}~vQVQTxBMVUU{mE!_4*QpEARA08?x7a{$4=LX z5!}kgpibu!xcS;Y3jcjC(P;(e_*|6zSN&1|q)jfE4Qi=09&lG|smFTQr?#B4Q3cxVU7=5`kpkwR9)V8* zzrhzo{2y#Eu#N5MI5qxJ-zD`sL}eliXqP0H9hms*xjPYSuz@v9e(v4Buy-f5`yU%8 z{g(eG?VA3Toltb+_sMrVg<`{&Gp5(tL9kJMo%DL*%3EjXCoxP=n@~Y3Q1!>3e-i5e zW%VB+wy%t<8DLBeW)H{>A*g_xLA(*QM)fHfrvEJ*1G9u8gNLJ!<oLZ+6`G)$tShG#ZB*MExJjIy(-O z$&u*$6SwMq6?@dS0vp^4ouaNA9{!jN%PX<|BZwVDjw9NklB9cZow#9!`yU9xMDr1< zKxbqw@+TU^y@~aM&({IP;Xi|p(DGsU9*LNXK$NwG$)5VL!_fafYu2nHly#-|cg!^L zo^(~SJ;(Vc>m?%9-qftRQb3}WOrYIjv>_Y)9jw9FV|8R` z=0F+OxHB0}&5MXm_Dy%KN$f=RtV5IoW#mk>2mSL!Pf>-#fNYLj3P1ZpO(;2e4+ ziP46#ru6*u*>n+;ITNtNSw7p?ME7W6fEN0M9+#b**haa$cq%GDfOm_L3Znl74yHtE zZQo>8B?hw>A39EE&7HeH`N|OLp1%>@@7PNy2jl(@M*l0P6JwcY1B@z$Nu28Jq#+SU zixNfF4n%E~)=!kkz%^0*9E3gt%k!%LHaes1gGAbk2PLlvoD7;fCIbAjX+Y--I61?C zOvB(d{d*O*a+u6P-h6=CLDOWSN@E!Ofrx-`dxwYoZg9Uwg7-r`ly?Mu$@ZGJCJvP| zo4`I{N*W33ZLim{ArMwSV0V2o39l@Q#Iljw%rw7^^Z)3pI43qI4swXct+a{Vm2H`A z?D_0ipPW#J7!FiZ~=KjYFKDslT!t$b>C`yCp!=roqNW^+T63BbLUY*B`N}PtAG|ZDERn)iwxGF zLl|BSgLb{iRVGe8&xBoKoz|H;-C%JgdndA= zH~8pP^0)61U`EjXXQgmVm--}NuOzz}6iee1=C~2+*!f3s6Jfm^BykX+j9}G;^XF-V z&OiPX0UO8;;OBPK2tpS~v&a9)!yLNAn-ljSv(Z;R6*eU}jvi96@%OgDi|Yh1J_zoH z4i|1S5{YoLZBG~uP!A&LKQX|abI{7~<>u}oW>dI*om4=*lu#5p|Ptub7^D+ ztiJrPbWT`BlgEP}$-v-`fRLzbB-srd^J@bU4M}wK8NP1{a+6ks*YxwJPk#vu$0lxB zHomT%vFc_sZt)WJgjG`l2OK3KAQA?rXc+PYr5A0GBl91t0p$bOCum~?#qMuSNO|R8 zLJA6bGG{;JtwpS&Kct}<5Z*TTPKN5>Sy+64OBQ$t-WG7rgBZAk1rsDQ3RW5~GIuMn zLjS>~RqKYyENG12PH}*c#R^6}C}VkJ{C=0UhYYN|2=++@As;<9D(D;o;);M$Gfsm- zR%pim{g7bt}iWoU@^OB!+nit*@TaoSdx+U<(54 zA_Xly)OsQ@f8f*jB6N{jg3zYUOA`r*_(y~AN+$TO_+7u{I+MW)!i#UY)RB_V3URL+vorp z5XG1xOBoyio^U(mOdCObNBzfNj6~X@H~#%Eu&cfSyW1=Q>%Q(Sk#C0JhRG3r=7QEpdbogCPxs zEA+n(#I}wn8uh{p9ryoLHMq|}rTnaWbmqcRh5LI?G>;Vvw{2zFqd3{+{Es8W#2MLdCLoj6@jjuHjS!tK= zC%$%{8z;lLWT*4dX;=$XuE8j9G!hkjMP!jeT9l}_Pw@q*O*p%BfEttGZZU>+pT;^Q zf=Z=6b^<+c29Jd@Fcf^v&(ySH_lc?m?gUY4T+d zGl4l-W+(c4dP?Ao5g3G}MGHn!s*|XHA5@?T%Adw|YBR@tfnd<-{AgamAPlHi2Pi>< zD0S711a*{W-1YrCD=<)pYspFm!>A+0@0>Aee+8HEAME`2bB(J&6vwH^ZqgFNA~p zpjI&`;>0D^KC#Gokc>ehvRFTg%sd)S(BdH($H2n!8crI#)N&9uf`h-H#XkS`da7=| zfImiqelv88xaLRbV$AsQ$(61OEw}gOV)JJ3*c`9mM4q0Kn)(`&JIc^fCdVX6-~z{tXb404CAjI(@a2oe1C zaDOInt`Q&~{K5H7lG|ZUdu1Sb+p%W}2@6zs==srh17yhHRLd;!#wl41q~iLnAMNUX~Z4GqbrhMO&e z8;iJck_*TQNCOg3+pk%*s?p;WxnrpNt&u^~5roq_&lBy)>=(A|fh7eU*(Hw*6&%ot zPwmdsyMd7p%p$Bz3@{R-nqD6P9q3TPgxRaKe1R?P>=OxZ~_od|>X~ki#b?R`SUP!hUa+Ni21%!Yk;#t1b%ql6dN%zk%n}j&RHsLuTIDS=cnLN8nq$8tR&qhg*q|{ za#Dd?c6RowJ{;kLs3Yqz`@Leu?__m>)T~DYU_mu3en2@lTQrx z5xLY(Sy~pui78Mf*W2Ik!wXU6b~SV_(A1d*PP^^Z$^5{>6N?7p(6Z&z814@P(im+A zXt|qxy~aS}f#htU^T%1YIc_&$ebwvqvxO z6MVu=%N$$y(D$0!OPzt+@=>HILt!BW2A)w69S!-SSGcvWj4)AQ22)ELtU1&-N7i_J zI09j)D$6MgX7x_xA(&HLi5bW0(3r-=ie$|HqcNutoV=`@_C>wY(!R~YG@1fmQ8Iw8 zn`uGqWspCW@$8malQwnYrKl``NoX5&x>*E52nDri`*1UIzKAFcHE2Gsc~AhH3yy|7 zvKTG~|A+}$RQ7gEDEKz{7}6_lGpWi5f)VN@sb&<6c==3DIr` zLS_lXLrftE!;}>=3$bX@s~n5k%}CUQnNJmk;&=-zr^rqm)EQ2fr!fo`(J7=}VyCfD zGIUXIEol;nt13XlG^TU1TactmB$eLhBd8tZV6-Jt3|TG_b2_Ls5StI(i~vz&(uH(C zA8ZRWWn;Wm*joBm^jCs+0$O^1q*j1Q)i->?#{*tKW*9Qew3A1-Zo zBsq>c@l0f4r|CrKWI=DlcItM7?=1fn3U24IZzxge=J44N039^-)emF*iD&ST&vNur zt5D^Hi4+2Zl9CM$WXb{cL2&8&mp5$?R*Cn3cCxBv^y@IVPwEKf$M`Wi>i7<0gs+xU zUopR8F}*2rw~zu0XC)M)5|lXIT7Cc75yOk3=xh8CWYJ=T`f)6Y*3=231F@>hF`i2K zKbc~5AkR2_b%gvMi~ex+MDlnN{($>w0YCsbiyECS*=fQcL*4R3*5Dc5ym%oioYBLg zA(!2K;318G70Ez8JTd~=zAtzBR-C|2E98QFCm8(8Jimn~15>W<^Y}JX8RjWKN>9a_ zIyAAsa`VC07&AM{B(1HN%eTB0-lNr+CUbHj(qpG2*UP&jjO?l>v-KMLYqYjc%y@Rb ze(7KJLVJqlw6>3@$BPaKZtMSN94HgD!WSE(gwM^a)**4}cK6ny356xumGi&oYWv%3 z^Z)L*+_=%0 z?Tvf8;sLQtmaG~tmj_kSFt}p6E1I^_GIRLFG`b^aLmq-?VEly*6s5h>NyAQhI zM{YajtikklLkvSpEf2xKo9|SILIG2VFsf1r&}9#c23er9hq`m%Yx6)~2u*5;O~Lq1 zvUmWBqDf9{6aV-ZbSmU$Z+{4_Iv6{g=Iv2)E3p%B^|-!a1KwESna7LRZFvWeL6bJ; zEZz|Oq#g}9&8Qk$0Svi#CW`s9&gl6Xcd?@EAVHr-9sr7zCLEO`6pDl5IX)pTCMJde z4_ST?c#nhir{O0^&q_5Nq#FT_Qm?%q0vmp^!Jpu|7sR6o-vgV5W27a`h@~M?NQrXe z0dxfI#Dm~=Xrcy?$qRTIkrZf*N^&8jPbxJ?eN=H9*S(#amYSfu3+^@o-f+1HRKX2y zY+<7dP&9wRf)LQinArz(uTA5%VPWuW7sWhL#CcSK8h+&ys`x1T6b_MM@s-Ed=G~rtP@DHG?WWR*GO%Gpx)!cn9W%RnvmK^ySw452Oq=_ zuugUr5}nX=5CLpJ=#-Rl$RH|YNh!a0`En#2o7B2WE+K?otePX0wlCDdBLbR;`LK`c zHtusVl|~P~M;*Gz0Aa6{Oiq7o?WpbQjC><~6ECZ_;(QvxKx=fekG z49wUG5FxjrjMfKHEev08kg|g3+Qj_7jwegP$SlH4l%)8r1xjw7Q=(2MCYWmQ! z2HQ>;>VEb{7cs1tPn`XKPV4!5ZqNVpZ;xOYbGLc1&v@;)U^GGS8l23}o)owKF*4|X z`m6uX_5MFx;(mDfZ9q*1jC=UUW0;5?Nc zb-Vue9H|zqSw+9nHEs#?`>1yJ^n6|@&HW}P=Yr)gZqEnKt^T;=>CeBs$)AUl{m(Tb z8#yc{lI*{~q3sbEt3e*J&!0bg)rDm5vbg!dVw24HcmDBqp5$*$zj9yho)))n)df5G zi4C0X^1tX%{Eu{BxG@x{$#zG0q9o8$A)O(&ouB55mtx)=<{}X}1IB@)dQJ|FtR`L` zRyLA}31-U%q67^CnMUywJR5S_L&R8(9t;V(21v$>0E|%x5%_nhw!IOufe<_>|03>_ zpBS+QeG9dTn@lA`Xrcm05#oHHjG;aFK3dKW^?Y1nlS#eK$TD8wf?!3VQQ*Mu`RRAN zr?D?a)dq)9o#T+1<>IDaVc{nqRTs@$Hg8(;6iBxegK})_>TTK%J&)V8@ z0bz--<*bX*&M>AScVL4=`z0I(6UV1kqpKTq`b$tU7y^wdF5dyk%yf?ks!D@JFGrRM zg0OjswJdO;YKDdzUU7Am^K5wW2;(%*V^kp;y6})I_GrMNc^y8eYu(e1p}-e~1^hVX zQNKo~u!}_YrzPj~YS`nj9^Rieyq(9!C6*he8eO#lZ-U`F&FA;OR7kMia^~v+^vL?uDMj#2`GF(YN#mXjX@E&8`BDnO8PN~}m^1x`FgSpT zc*5a8DhVtXmVv-BZKyUll%9KJqJ@%|37F&aTw*9VXj$s z-M}o@f3(1GtWcV-cWk4ByW_KG&!~qG^NN;NZg}g_bO=@ras$ANZVdXGM(m)fGpu_% z&^5f-=6f)eR;ZXUO=G}gWYg{db6{7ov6P)x{~)Rgg9u`&pB%0;7XHu>Eks0~p|Ovb zNv{=h6x}O8TV;(K_J0L@;>t8QddrqHgE5-VcFACD>bd+cPnSA#_g4-L475O^r_m+) zL;f;O(v_o_8Eozkb`a`{O^gso)8X(47M@!yBC03qvQ&hk)Pc?Qo?J zdXWKAIUF!;kJMh@A!Qh6LA29<03)RkFPKQ7_l79%scK0n#D%Hx7SA2hV)5xcR0*^l zQ}-~c=QT9=29ekOkDPT@m=yh%Jq&~`NgwDbC~(6QlRkm}Fatb8JWao{;61;IIp}Mg zoSYopwh{qP?FdyE`blGFnZsJYKki-r%jK&Fo5kj&C0i zc@&J#!rrQsE@*)edjm}7V$dNQ@TNUJnOy~sV>TYIL3hzq{1bBiZ|m&4_vPS{=n08? zk}-h4QQ$y3j^?FO{kZ~jOe-)OtqV=ei{Um~k2Wr&MKhXavh02cU37UWF*RoqT)cqy zdP`&+Ybr2!{XOa%$~nXR^4RMLxoLTKq}1x7W*Ky9PNTeBpV1FlM{U0IR+B{1l}$>JG}T&0h% zK<%;%i*Er*AW_m@a@*b}7v2@HOCW!I9_VY0jP)C%5$J~l;Z2glrz)tiRtGfdh2J7c!%p8vl9VWhH6 From 23b9b1292dd8d6d842157c0e1b55d1fa1adaccc5 Mon Sep 17 00:00:00 2001 From: Morten Haraldsen Date: Wed, 27 Dec 2023 09:38:36 +0100 Subject: [PATCH 7/7] Prepare for new snapshot release --- README.md | 12 ++++++++++-- benchmark.sh | 4 ---- doc/format.png | Bin 27554 -> 24905 bytes doc/parse.png | Bin 28395 -> 25600 bytes doc/parse_raw.png | Bin 0 -> 26212 bytes pom.xml | 2 +- render.sh | 4 ++++ theme.mplstyle | 34 ++++++++++++++++++++++++++++++++++ 8 files changed, 49 insertions(+), 7 deletions(-) delete mode 100644 benchmark.sh create mode 100644 doc/parse_raw.png create mode 100644 render.sh create mode 100644 theme.mplstyle diff --git a/README.md b/README.md index d0ec7a2..e58d2cd 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,14 @@ Your mileage may vary. I've done my best to make sure these tests are as accurat ### Formatting Performance of formatting +### Raw parsing +If you do not need to have the full verification of `java.time.OffsetDateTime`, +you can use the raw, parsed data through `com.ethlo.time.DateTime` that incurs less overhead. + +Here it becomes even more visible how the parser scales with the length of the string that is parsed. +Performance of raw parsing + +### Environment Tests performed on a Lenovo P1 G6 laptop: * Intel(R) Core(TM) i9-13900H * Ubuntu 23.10 @@ -43,7 +51,7 @@ mvn jmh:benchmark To plot the result and create the resulting image, you can run `plot.py`, for example: ``` -python3 plot.py -i target/itu_performance.json --size=11,5 +python3 plot.py -i target/itu_performance.json ``` ## Example usage @@ -188,7 +196,7 @@ serves as a sane subset of ISO-8601, just like RFC-3339. Typical formats include: * `2017-12-27T23:45Z` - Minute resolution, UTC/Zulu time -* `2017-12-27` - Date only, no timezone (like someones birthday) +* `2017-12-27` - Date only, no timezone (like someone's birthday) * `2017-12` - Year and month only. Like an expiry date. ## Limitations diff --git a/benchmark.sh b/benchmark.sh deleted file mode 100644 index 0d7f8af..0000000 --- a/benchmark.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -mvn clean jmh:benchmark -python3 plot.py --include=parse -i target/itu_performance.json --theme tableau-colorblind10 --size=12,5 -o doc/parse.png -python3 plot.py --include=format -i target/itu_performance.json --theme tableau-colorblind10 --size=12,5 -o doc/format.png diff --git a/doc/format.png b/doc/format.png index 635f45ffb1c9ded64f0e787c040f8664d810ed31..593ebe79c37cad29b23c034b70d68651405705c7 100644 GIT binary patch literal 24905 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 K5VG&g<^K=vZ(imA diff --git a/doc/parse.png b/doc/parse.png index 3aa53f48965d7a032ba6a1fa6ad5a42bd16e29c3..e8545443f53e073cd59ab49124afba56b3b08e1b 100644 GIT binary patch literal 25600 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 literal 28395 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index 5267b0a..74ba140 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ limitations under the License. com.ethlo.time bundle itu - 1.7.4 + 1.7.4-SNAPSHOT Internet Time Utility Very fast date-time parser and formatter - RFC 3339 (ISO 8601 profile) and W3C format diff --git a/render.sh b/render.sh new file mode 100644 index 0000000..e990736 --- /dev/null +++ b/render.sh @@ -0,0 +1,4 @@ +#!/bin/bash +python3 plot.py --include=parse -i target/itu_performance.json --theme theme.mplstyle --size=12,4 -o doc/parse.png +python3 plot.py --include=format -i target/itu_performance.json --theme theme.mplstyle --size=12,4 -o doc/format.png +python3 plot.py --include=raw -i target/itu_performance.json --theme theme.mplstyle --size=12,4 -o doc/parse_raw.png diff --git a/theme.mplstyle b/theme.mplstyle new file mode 100644 index 0000000..a7fc9ba --- /dev/null +++ b/theme.mplstyle @@ -0,0 +1,34 @@ +# Seaborn common parameters +# .15 = dark_gray +# .8 = light_gray +text.color: .15 +axes.labelcolor: .15 +legend.frameon: False +legend.numpoints: 1 +legend.scatterpoints: 1 +xtick.direction: out +ytick.direction: out +xtick.color: .15 +ytick.color: .15 +axes.axisbelow: True +font.family: sans-serif +grid.linestyle: - +lines.solid_capstyle: round + +# Seaborn darkgrid parameters +axes.grid: False +axes.facecolor: EAEAF2 +axes.edgecolor: white +axes.linewidth: 0 +grid.color: white +xtick.major.size: 0 +ytick.major.size: 0 +xtick.minor.size: 0 +ytick.minor.size: 0 + +# Custom +font.sans-serif: Overpass, Helvetica, Helvetica Neue, Arial, Liberation Sans, DejaVu Sans, Bitstream Vera Sans, sans-serif +axes.prop_cycle: cycler('color', ['7A76C2', 'ff6e9c98', 'f62196', '18c0c4', 'f3907e', '66E9EC']) +image.cmap: RdPu +figure.facecolor: fefeff +savefig.facecolor: fefeff \ No newline at end of file