From 0673f6dea60aed8bdd7ae741b09e96a546c26442 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 02:27:35 -0400 Subject: [PATCH 01/14] rm dists --- dist/nt2py-0.2.1.tar.gz | Bin 30984 -> 0 bytes dist/nt2py-0.2.tar.gz | Bin 14772 -> 0 bytes dist/nt2py-0.3.0.tar.gz | Bin 13702 -> 0 bytes dist/nt2py-0.3.1.tar.gz | Bin 13723 -> 0 bytes dist/nt2py-0.4.0.tar.gz | Bin 14105 -> 0 bytes dist/nt2py-0.4.1.tar.gz | Bin 14184 -> 0 bytes dist/nt2py-0.5.0-py3-none-any.whl | Bin 26185 -> 0 bytes dist/nt2py-0.5.0.tar.gz | Bin 21508 -> 0 bytes dist/nt2py-0.5.1-py3-none-any.whl | Bin 26217 -> 0 bytes dist/nt2py-0.5.1.tar.gz | Bin 21527 -> 0 bytes dist/nt2py-0.5.2-py3-none-any.whl | Bin 26219 -> 0 bytes dist/nt2py-0.5.2.tar.gz | Bin 21529 -> 0 bytes dist/nt2py-0.5.3-py3-none-any.whl | Bin 26220 -> 0 bytes dist/nt2py-0.5.3.tar.gz | Bin 22573 -> 0 bytes dist/nt2py-0.6.0-py3-none-any.whl | Bin 28547 -> 0 bytes dist/nt2py-0.6.0.tar.gz | Bin 24487 -> 0 bytes dist/nt2py-1.0.1-py3-none-any.whl | Bin 35061 -> 0 bytes dist/nt2py-1.0.1.tar.gz | Bin 30073 -> 0 bytes dist/nt2py-1.1.0-py3-none-any.whl | Bin 36348 -> 0 bytes dist/nt2py-1.1.0.tar.gz | Bin 30928 -> 0 bytes dist/nt2py-1.2.0-py3-none-any.whl | Bin 39719 -> 0 bytes dist/nt2py-1.2.0.tar.gz | Bin 34374 -> 0 bytes dist/nt2py-1.2.1-py3-none-any.whl | Bin 39699 -> 0 bytes dist/nt2py-1.2.1.tar.gz | Bin 34370 -> 0 bytes dist/nt2py-1.3.0-py3-none-any.whl | Bin 41964 -> 0 bytes dist/nt2py-1.3.0.tar.gz | Bin 35855 -> 0 bytes dist/nt2py-1.4.0-py3-none-any.whl | Bin 43194 -> 0 bytes dist/nt2py-1.4.0.tar.gz | Bin 35963 -> 0 bytes dist/nt2py-1.5.0-py3-none-any.whl | Bin 43701 -> 0 bytes dist/nt2py-1.5.0.tar.gz | Bin 36789 -> 0 bytes dist/nt2py-1.5.1-py3-none-any.whl | Bin 43739 -> 0 bytes dist/nt2py-1.5.1.tar.gz | Bin 36821 -> 0 bytes dist/nt2py-1.5.2-py3-none-any.whl | Bin 43848 -> 0 bytes dist/nt2py-1.5.2.tar.gz | Bin 36905 -> 0 bytes dist/nt2py-1.5.3-py3-none-any.whl | Bin 43860 -> 0 bytes dist/nt2py-1.5.3.tar.gz | Bin 36927 -> 0 bytes 36 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dist/nt2py-0.2.1.tar.gz delete mode 100644 dist/nt2py-0.2.tar.gz delete mode 100644 dist/nt2py-0.3.0.tar.gz delete mode 100644 dist/nt2py-0.3.1.tar.gz delete mode 100644 dist/nt2py-0.4.0.tar.gz delete mode 100644 dist/nt2py-0.4.1.tar.gz delete mode 100644 dist/nt2py-0.5.0-py3-none-any.whl delete mode 100644 dist/nt2py-0.5.0.tar.gz delete mode 100644 dist/nt2py-0.5.1-py3-none-any.whl delete mode 100644 dist/nt2py-0.5.1.tar.gz delete mode 100644 dist/nt2py-0.5.2-py3-none-any.whl delete mode 100644 dist/nt2py-0.5.2.tar.gz delete mode 100644 dist/nt2py-0.5.3-py3-none-any.whl delete mode 100644 dist/nt2py-0.5.3.tar.gz delete mode 100644 dist/nt2py-0.6.0-py3-none-any.whl delete mode 100644 dist/nt2py-0.6.0.tar.gz delete mode 100644 dist/nt2py-1.0.1-py3-none-any.whl delete mode 100644 dist/nt2py-1.0.1.tar.gz delete mode 100644 dist/nt2py-1.1.0-py3-none-any.whl delete mode 100644 dist/nt2py-1.1.0.tar.gz delete mode 100644 dist/nt2py-1.2.0-py3-none-any.whl delete mode 100644 dist/nt2py-1.2.0.tar.gz delete mode 100644 dist/nt2py-1.2.1-py3-none-any.whl delete mode 100644 dist/nt2py-1.2.1.tar.gz delete mode 100644 dist/nt2py-1.3.0-py3-none-any.whl delete mode 100644 dist/nt2py-1.3.0.tar.gz delete mode 100644 dist/nt2py-1.4.0-py3-none-any.whl delete mode 100644 dist/nt2py-1.4.0.tar.gz delete mode 100644 dist/nt2py-1.5.0-py3-none-any.whl delete mode 100644 dist/nt2py-1.5.0.tar.gz delete mode 100644 dist/nt2py-1.5.1-py3-none-any.whl delete mode 100644 dist/nt2py-1.5.1.tar.gz delete mode 100644 dist/nt2py-1.5.2-py3-none-any.whl delete mode 100644 dist/nt2py-1.5.2.tar.gz delete mode 100644 dist/nt2py-1.5.3-py3-none-any.whl delete mode 100644 dist/nt2py-1.5.3.tar.gz diff --git a/dist/nt2py-0.2.1.tar.gz b/dist/nt2py-0.2.1.tar.gz deleted file mode 100644 index 925ffea2eaf504770055036ac91c4c6f9eba70bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30984 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

7TJ(c3nzoVXjq z)Hx+9T)u7~Yf44#>-@)9KcCvT5dM&{;i|e;*NIQ`@`Ftd+ns3&J7h3dQW+h!`5Xr0 zETb_inKnqRG7oJ`<;43bQmx=g{p*WKB=`bfCj@`|UY#^0MRkC1Uc$$;zWdcWC@D99P!^%?MCQ;OOgq&HupWDRT z!Tff-d44=L+y1JFV;b3EM4l%#9u!65pTqyot z(d~V8V>IqDo|SIq2zbo+xWD73Me5s^rZeu@^BpS{$u4shUu1P~`p{b!(D7MX%-d@C zZnw>+>=CT<7nnpDYduVPFSiMEglV2?Ka)2N;&^|_;z4J^6;XQp#Xhk!4_>!eTzu?t z&+@~Vhc%_V^J#Xe#LEd%)21y?_&vu?dpJ}UlDj-(-Owny8@DZENl$a%l#7g{S9A2n znozObw@A?j&B+71@m(U3rPbSS0^lps==(vf%-ktO%?p%w(rn1y`X1-Bz_OT|-S;3< zEI5CZCwC^Es+1)YXQVECKr-m{*o~)~cl0d6MifseD})V16`xj&@9I=N*WBrqu6TSU zcw&u&r+o+{4S!p1AX0|hd@j(QldOE|((KpD7M#8IGeq?vp6_el64G13+ou;>1DdzU zNCeh*$jJL>d}g2E5(@{-+l~&D8aO@8M^C8q4Bu@xb2h$RN=M71hyQvq^Krud>W{88%cxxA{bh{YflZx=&GyQP!_Mz5OBM-0sd+ ztXRScajZGvncbI&R7m}8 zl2_@w-TsE(4Pp&1=byecoi`uVHZ-bdN;AeR7is_TrPt^+o&6#H_PGS?;5^IyB+wOG2 z54t7!2Tvt5u_kNBay86}sZ2z~%~b|4&XjyaPiNbd8aKWtIn>)V)EK!VS6u|Mczv;%q@DHtZiEtzoLDV zX1Zf?T?D_DW%sntSP6b|C8g_Meluxweb9}8uN!nI%^=BAJ10aEZhG%(?dF^AcSoOo z2|$1OZe!ciW;f4p_EA}+M{}lu@GDuZ1g86+hdfB5c%ZkJ4RvBPnK_0IiQHW2RIMW0 zIegc6jD^3XfsfnY+Rc4O|Gi=7aTfB|_Yxvy>g5gP3Z1U%ez3U0r1I)HD7yo4-jRx@ zT=;nhf8aa07K*cTU=yLPIT&eW6flOgY=t}dy{4-zK*^Mmq0PIhq6=i zrCgY)yKryR^YiF=dy>Q6hh7c$*?vjd?v&#AXk z{Lu{+uF5)%A-uohgGKMY-Tn{IC45+lw#`U%@_`#>=`ZfWj#roFQ71bNLhXZZlv8c$ zXRQ^zS0+0okRAj}4D0>QU+s0#io3-<0kOTFsl=tld6izsH%3J6K_06lGMB;d!$*#f zM;b3FH&yao)rsy5ofMp5Kc9}+?Dd%(68_3vl&vt%5XwH|>#2A%#ebuO(am=c8&(7?+nmAb~ zen~0iC52dsZQ}x`HeJ=kaC084Pk&e5`e_GU(^RTEY_1$vb(vOY{e6>vlHU=57nR6U zzP+stR~PALnn>#+&1Du`L$qZ*Gi@(Q@#~$qE#aV5O(tj7tHsg%@U3~jiVo?4$0AID z6tbD5X<+S}GAz|GnvPmM=BP$nbO-5CTw8_U{p&C0A9G7A>K@Gr3o%eWBgCB0Yjj52xZ%ty z&#l2`nWpb$QDw}y49(Y7vE@nWrqr!>OCHbCKkn-4H}fY=-MF3N04`WV@l+CN6#9QprCm1VaQ{h`5>|2_0X`-a~Ve0 zwEg>fAsJZTEVq}&ayq$ypzVgpz+ll(;T^Opi=wofSfhO0;!vHQ_DlavS6jft0<*gTHGPF2cXVs5!7k?>V& zf<@$*3XI1s|1svAe_*QO6#Ukjbpw-Ice;93=?3>v zy$MboXKB|i@du8AOMTNe+!N2=+_N5m>-#YGl4}@ksh5mB=Zd}6Cgff@B6fZ<-zoBB zMZe?a2Mjlp4mw6dr>f4%fMmVj*p z^#?IQdz4!%ukUO1h@^E9-FILMbo=ucm7mBmgA7Mtw}-blUs%hp~t>TdZ&V0_$`OLkvyv-iz`w6d`_!#csOc>oS z_uRyWCI|Z6rtry8E9tP&D13HV*M{8FkGj~O(=z1x$TGIfI9-f+w(Lynqs|~G?OMVIQ=YSv7B{DYv$?>acLTR&0-x(-nl_rbse4K?y-4m^ z8?H+rZ{7C&@__T{B}|J_eY-u0TImL3aHnRRL)!Xzv4neGQ6DdulO6MKJr#SKQm7SD zlUa9@?ez@UZe@-mOD>!14HFhN`b6@n3yt*y%X!ZG8gmz!luM?BN_wofG^%5+e-oN= z5}%oQ&~)*MOf;X~tT3IUZ6o{?3rnag+uG|#_31?lYmH|P<7v)QD?1Mbi#+gm`Esdv z$?cqG0<^aCa<($hMRJ=fC#Sj(NRQ>Claj|vvPnK5k14M#J);n#Bp+Y9DK>Q!&BoX- zuhPg&p`&8*C`zrlgeG6g<9qromyX+f8`!~X+KK+0s$HSHni|_N?Lp!<)eoB=l7roV zI&X2jv!!AC*v!zQx?S+<`exbKG)1QeZML9*CnH(H+&jhsvwjWh$(Dmoh)(&ujd#?(9xez3uXYxs}?De z+IW#La%2k6ECdEy@s`c|)JW?dy9YJ0J!EKd)hQuD=F!~~=VRKy=P&WUo)oYY2f6V^ zS`?ldmfc#BofSN~+XvEgvZ+bzewBX!W(^T*=z;;!$K@#pCpo>V(2PM02Ps)zIurBk z#nZkq!%a4ArF<<4i0JtjbV3P~^KT&nH%Tcg$jI1IoT&%yYCb4#yRyzeInsLK$!@@X zpM`0+XrGm7*>vv*-!}}lNs%mEP3{KG3i`(w&6V6$TX?G+UKh{Vw0d?T4##QAusF>o zjDF|0zOtUUYAftq=Uja{VT|v=pt$|+`p&V3S6sX_9+=1&TdXWr&`>3`l8r{(qnNBz zDqn6_t93Hu=$~dhd4T_^%q26AEkxZLn&f6`W4LZguu?l{H7(5{liMojtL;ZC2L;Bk z<;J%z1(>5!VUqvos<%hTFg6Jk@A0knKIXK6h<9VzUrZ=)E*hep3! zwruocK9f_3U}z39cvgQbzOQ?K${@98JnT-qrn1~aQ0?)OhW@0}Zznn`SqmZ+4o)01 zp0-x2wFrDD-*HoNSMXLvRxw{NjO5B8jvkAbs^y8&*@4G=sqbjfnWt0TJvvT>&UZuE zUb;=e)qc(U>z%Z=9>I>QC{LL5)!U`u{Gmf?)c$2nHkgsyeK+0|qaO$Oz1HJ=L?te( zUdQBo4U{m(TsjxeXhu&$a?R)BHvK`+oi>q(w9I$UN+xNg!b#<5u4HlIAzZ3=Y;Lvu*u9gb zSq=B05BSs=Nl#3PMx5y_<>^sj)aQG8ab(0YrAm5-D&x!XXl!*mg(U14w$Zl&@Qsb37vbSYF=5B3G`>F5KEfZ}aKu zoog}2x$u3T?nUQywfpt;C%p7Hh1HoW{}gYhhe@M7f^Q$v6&b3W+;}i~q>88U4C(te zz1iNWYb20tO~gHt?+n*H6&5=_fe~?(TIrBLuk59k+O=+QWAoDU2j$xQ)FfvrpKg4x zHm&2*Xp4$odwr^GW=HgK#phj{Cc_n5zSE4)Q%|bRTB}ufi;SPW{rIV1G^dTwhxxDN zDkCR4I$mPi?mZRdyEvI?9&w2Q86BJEZ@Qh3EI8nA7zM?3E!HMpUf#m(p5(aJTvz8A zM0wVPBo!GtH284pBnBS#3O&0+;nQm%f5hxvsD0G|&ja$&2v*sQJEh_fD7uGamyZq*+Ges*8e~LS>09Hi$(-_R?&3LpW(lJ|}8|FHwz!}J+e0-*4 zWLDx_hiKp@78NC|cc4yzC-wcZ$aa4jL^52x&(X0XE<+Rt{?^58^(N@4g+BQa3tCN? zN-<=I%#_aE%*XHbit?2oC5ca7a(bUCFLn05g#rI`b#{8LnUSv1QTXSAqNJpcd30m% z1$Vk0-nn_|xc|aV&@-Ob@^z51Oy|%o=adgiSt z-fY7MdTwF*UL4GjEu;5=rK0bPPUK3=pUb}={v6%=g1z{K&zl9|B%2V4fX;RIvld02 zLVkBp57L_hvGRPbnS)m$v)RYU4>N44eIg&2T-Ns}(gdHWl;<_29-Lq@Y^U(reD>+t zdlu%Wyc6IIftc>FdrxAQdlvoXF7C2;#|~5pwEHhvri?s`)U*zWtn^cf zukuHiI>5*cZLamTcW*14m2)qP^Nh`o-i#A4{(e}hRc(=^PUY+S0{Z1+EvGKME0O!O zMB+8C+}T%Vv8b1VJ6-NR@1y7aHQ+(XF^_?yeE%Y@V}1SBLOuqNI*0oz%eh%*kcx|NHxz7gI=^uTXNeq`{JeFmdVXU{5mzzMUcTS(RJPR0`t zbC|5wzg3kT*R<>P+-1qFfBELgK+V~n)Y_8b)sUE|BUVQ{r$lx_4_-6NZ$} z%DLOzccIe3qq*wUag6O^VbG(~@CEnO?|IH0^pp>8AM9IA#PZ=!uRhS<4#O}_eR`MG{csm?7cuAa zU4`jopu>*x1pLw!$)T^Vmg#R^G~cC3Ya;bw+({d}fu}df8_lQ^UnQ|%I$5C@)weXY zbp}k&(`?^6blS`6=?1!>Y*c&7pcFh>lva=RD zX13&3F_p{NIWnhq&t_<63%6xB;<8!aIL(T^Od->fEzZ1hJ!x>^+tdr9lHIhSn`y@^^xS08@zth^wq9~@JaV@ZdHFJZ3%kc{u!|aDlhdEjKbS~Cs(P&fe5f@fCqAtXf6^t0BNg_7>xmaSzqXX| z>W)%OjEQGjNXoKz9;fa0I~kpOPRJXY1=sQtlleXhwmqRTjf}f&aPwfzI`Zi1*^~mq zTqX4nD>Kqk>-~0v#yJ1@ekz}vd0mi6plx^E>!Ngs57`GNX+KhSPvrz1flcd+HkcFzHoq~of^p`YFAdD12 z?Ql%ONxk#(bUn16=I=BKzc!dzhO=9Fpzd6?RG_8O^E`t1x)lgtRrKLQO?(V&dpi<3 z$kC+w=Bc`|=}x2%>V0ycbTUtCkNdPh2aP`GxaPsY&Dyuh`8A9kjYpEtaJhcAOL@_> zo`%?MOi(Uf2W8#W9Tw%3NlKuS3J#{~^7$()j_&Tx3-P6Ol z%%KZS4$sEtr)f+t1kNKo?z~k_U!@+Wu@WpL4YMygbDVM2_4x6vaQw5vcq{8WHOHem zLOqv09M+x{YJ-$v_U6mF8)xbZsL3h?qXX5BFvWnys3ylJw);LH z%%9ti3N0;;h%8lqq*D^6ir+L>4Eb=(weZ+@R@r)@Cz9I!$_#{2;{ZbfZF7-ySI+sOjPvj?+rhKFp&^<{!|prt<%Q$oMpMMg>qYyX8Ovoo62F8*gSa*U7A zrk5463c72RyR)m}G@Ux*74KZ5Dbz+51Rqkq_lCXs*xjn+0e$`NC}Tt6CFL_J4bR+aj10`*61u7@}4BMfF4%RY72hs&Qs(O`3zd6&}U_WLtEmC3auyvuj!B@Tq z@s^%EpLJ7)8$Pzart!?^Hj==T98bFqxukgFLyTxcxj5z{qg?$*bP{{t`Poy6k(r4! z$R~wL2lCB3&)BNT*lL`zn!aW^XzzejUfx-7X9V9pcI!%7yaz095Jdl$ojHFusjog1 z!D07CEA5bJKwTQSvv;d~v+G$_Nj~a0(+$Me@2loj2{g^V=OXG}a$AiZj4vi%vn;_W zJZ8<#cx)47mE#;S+mx8w!(#t3pRx@-{^X$C=@SfLKs}pnC z*GJ5$T=}oEEb&sfN5oYOA78HgR8VxQ%uGSS^nufe$3nen`SDFiz=}&D zgM8+@A+Qrv_*y4^5gJgV1Oe`NZ0(j(2RVi1cyf^lg`G_i_$vNJpY zQlMZx7vW|LKW1vuXrY!D0sg{5VO4*CC8|gv#JA{pG$o&Tq-??qu{&z?MtM|1z3D!3 zqUndEMnpJc#r0yA?svUjdDO2YTZ!o7GH>P5Ze1b6^V(fpCtZkS(=XM;n|(a_AX_L_ zGyG9nPny7^xk_2`dq}q0+hpkiR-oyRiL9$v1dUuq8x)+gb9@7w;4d5IC}G5U ztSt}D9QB}Lq$wt8qoF?R{gxKJup=2jd zm-P9=4aMd2Y>L!joRu2zaZ0ZEW}4Uo6|ZznAIraoabx7Ygf`F0T#XujoA>HwiJ1NnjhtTSiyE9w5$~g0 zu^7epH)Qew*f=N0R=E#BBMCBEOh-~nxwO7m=khnKtwC5vP8k>@&4u+9IQ`jPHk%!P z(AGHK30=9pwji!>_2UiFtHU_~A}QY7DTX7KXTIlE?0Bob$e!Z5Hx=ON+;zx7r_hK# z2h{UObCWI-K4^Eu%G9hvzgZdA$HsT|#EnXbz2Q|I|GZ{SPuD~XVJ=B43kwFs2O9Az z-kL+!dfiQ;9_P#HGc?zdOxo`Hie3EEvQY%$CHj)PjM9)by}{WO!)qjaX(net5ctD$M@eHS}sGY-f-zVy(-zv zdG_0lEhlI3RlPjSv~6FG*mDWtF?qRaG9JO92lB^)SPskTdQ2+81P(>7HIZzGU8pxQ zgDIdz1^n+AFwh>sXt0YgOh1Q&TrH}3@@PXk7xuI~&*q@W%(L;qwKj$r|L0OCmIn>1 zot|75E0V)3Zn^qBu(8A)E7;Edb{*fG^=c}61ijN!eZsh)R*2euCZo!e4-HC@hIaVg zj5pvZ9t{;_bf~U5-WVB?=HFlAsmpF3AXv3%x%`b+@OxY>Nqy3ZxcQ3;o*|L}ZL~pf z6?kgsPF_3`mlr;9*7h`&`R8(le51}S@sxrtZ+YliESbxMp#h0db@~N6eBScR*Ha*k zm=N8S&pAnq7#5w+Xqv{ZpvsIYsv4M}B_%VMtwJ<6^!WOViyfMUYLD}dk8TZvj$d%P znX^S_XjYpir__o|OEf#4BH(MyH;9UVO34u55}f!3Ufs>)wUA{;;c-MJUpAsUcFZPx z{YBcV;fe0{kC&g#9O=`{@$2LCZ*Ha{)Ab$-TCBh3F7RwztZ!$8M)X8BUv*o`0^}5`pX)HMr?E?k*jy!hb`~?JgOG6y&45G!E~S*&FRH zE$pJv`D?RfaQUMZTUV#?iyIp^zSTD0V)`0hVLPOF694SkNqoiYZ?(0DcSi?at>L|2 z;klym0joQ;#NR(;?R-Z}%xpFfl}O_Q%FFv!!aKkCOYLwmrfeK8{*tnWSDeD51Kr0w zp07}UePx_QxJE|vx|cJLKBt+>F~!|2acg+l>XiRDB|NHKj+FBwA{^0gSt^d2&*NS& zU`*z@6a`8CcAI@cYWQ>K*(&UZ<%>e*Qq&q^Gcq^LL~cREkH32UN+>{stUl-70;C~h zUc-APF5{f%aus|)(oin4Ga&r769d`1v$p&Jj#F=MXK|EzJCDkCZu6QwHQR;5x0Kv( z6_YSZFYVnhQxXqNq|u|j7)^Fvy2FZ7_0X0iN`0c_`ec}%jzz}!S+4AW=yMc*{Am5gD3qjwS89EY+(?YbB*OyZ&n|?0YjbC zX+GqQ=Bkq@T%FtQ=I`l$$MR)G62&aXydKl`hPGvuM~5N)AtF5VkrPHz z+3$s^DvR<~(y2AQuP8(uz8+`U#dpl1pC+4=ox0%?0qxxL=??nPzl zY5yb-7EP@dii<=!s{q@vzSI-nvT~%9EJ=4AGh%rV(1T|{V_!mtMpC0iiIYKZofdnHWQ8eK@ zDi9@+C`4TXhzTk(-@W&}s(SU)Ju}Ph#<<nQ(hpxTt^gHi=!P_o+QhDX| zSAO>*>%Z=P*Png5xVY^A3v-@Vp&%@>b; zqSU$MhmAXz_dfN`FD+m5OUX8?Sku{yy~?ddhd6>^`l$gu}mIp zx#h1azjMo@Ke}LSdGX#Fb836XV=VVi-uTYtkNolXYyY_X@WSO!E#3!}-@5L>Kb2p- z_w~Pg$$8bFmH%G1eCsza|Mt=EE`RK!Pu~BXhu`to^6&iU*7qLe4P5rr&6NwPg>Nk{ z=9ce%?*C~VdCGd*^3ktf{M60=dh2t)u>7&F?D^0;md|+fbmgq;s^%};ApQII)qnrW zS-*er^OiPz_?-XybJr;S@dy6p_TSq1Sho1!yPo;L=j_`*e#Hx~eCA7j@huPB^=lt^ z=^p31k9Q^>{NSUXdhZgpxO~BNPgcK^Lzf~jE`OY ztQWrWeQ*B8!w-G>-RF(J`mGN?=h>J3{Jmef=-~&>yZ5?pd}Y^tRN&g->L zzv(YNwf_Zw|G*2InX|5Zta#Vh$G`Spmw)L;or|CG<#X@eVL$TxGbdj9shyLH-B-Ww z!iB4ULweJ$`7@_?Exq{V-nF^ceeIvmf8v(g?k#@*^eb=u%O`ff_NJR|{z0L$aP5Q7 zDgNiaJLa!_(a(S1)a7mO>C`uT`>~ID+dj7Z=kLA$+UI`z%B@$Q``z0!uln(?UuJGy zs=fQ@>z?_7Klt{IH*S3Fq2iX``>${Q__p)MU$X7_uYc?7-+lcj@3?Toz1M7c#*6a5 zeb+N;cfBApz4(D!w5gx}z>!C;y>DB=IQRW;f8W0QDvy8hjL$vshR^QF-?w1B{|8q+ zbK)6y+!^*;9T zkG`nUbvub1C<=B3yD^Tzyd9(?(2r(ZC0)@#oB==qO-`~2I# z_F3meg(r*eZ$9|&^nIWCqi6T7eWLt=S6p$~&1XOLOZWfc>$+E8eEydgj=rJce9n9H zAMDq@_T~@Xxas3JoPOKL4*@y7h|8naY6=TxR^*cmMIiQd#V{>$C@XYY7h=Z5oc zy6W?P_0=ce^vEZEc-9NQrTyK9?tcEmH$V5LFTd-}cWipYvmSlcP0ABr|L0p?e717* zg6n^B(M`)Y-hBS`KY8%{>z2Rqo%_D9y!)}M&VBRpJ@?-GA8&i|{(F=MZmr(2b>s8S zc`TQ?_|n|3FFk&Z{f3+Gzhi9OBOlTK?F*S5&F8r<$=~y6xwh-$Z{E@S{1@l;-(CI8 zv(LNX9_6F=-2IW4P42t#^Xm`2_3BG@e{RzmXJ2#2?|rrK{9l#7a`;#GUhtl&u`g^W zZ$EwGU*G@X#?H^$H~hbwUita|xbs7=KKB1VcRH;v-IoWlIS(a=rZYcv$Qe_Yr9 z(D$Fl1^!dd;i3ck55$+ArUZgn)((>@V3-SjqcUFu46`8r0+9O zA^^YN>1vYBqOY?NE~>87q(QeNx7)T;ew zPqW*Z(VXgdKEP!7(R!X{qIy}CZ4<%5U~EToSyBlSEYLsk!FH{R_=n$JkD#lj-cdUC zgq(}epx#0LB!%e9P%_66s<1&XBDAE;YF<_jM(2Oag`JiQrsaAq-IT?&01ZNF8sM;) zg!qcUCDb(-nudd+k_aLOK_6a?CIqXoDai$8&z0Kpi;G8+Ro1cItjkN|xuuqpRw9@> zD6|eHZ(VLFf|+JzLHup#GrjVLiD(h0J-p)rHDLEk(NVW`1NcM(3mIBZgj_3D7V0cy zf3@FTm?#(RysfsXO-(nl`r=qQx4v9qKj!F1q+5L%mw8He0$P;$3eQOzuJb*XsSOM5$=xdHGBPBR)L6iS1h`(TJA)M?kn1K=PA;CWHfM zAp8gyf;fkAgn5-=(bbxk z8EO`cvV6jTJ^;-QXqYiloc*m+2O=m*dE7;jcD5Nep;Gu>jJlxe2EMdH^@pn~hVFU- zf#6SUm@NvIuL2m{OrL2GIKt_GE?@vA>zSrD=LE{&jjEu?h;7o>%T=SRZFd|ioIDr; zhs@cP3arIoWANKryFwIyGe*#gd_?Mp8I6Pw&JaYt@UTm;zHxO-Dq=Tma(`tG;3HhDtoJEi`m)-Ym22LUlbCvo(=+lv&3A; zqCKZyiRf}56lg8N%pvhs5{e!I&3d^=dX())OEUf&EpH=VhhDYy*=$=rLY-O~JL2h; z;$&+{LG>|Np=nsImW`&zynJ%=z1+9%rJY`M6x2#{9=blX(3USAlrMc!h4~78CJ5iYrS^<_hkNvCFL`tZ$Z55`Vf}%m!Nb+P!NaX5*wn3F~ zB#LU=M!%uDeY2SrNDN>wU57wXdwzXFW{nGU)S_5HuEt<#SRz^8PHtq89@&3K_TQ2H zcl0^2_Fvjg99Qe_iuT_PljTy}{yRRgab*8JS@vJm1RVkd{8ZO)RVPdGS?w_$4RqZO zes>T})sj*IiLUdFGw}`fRrNf_tsYr|Z@mVnu{QgGm4crcu90wM71Rp5k9wFnK+k15 zuo0+Qp6)AIq~x>xOI+)6a2F%&TC(zP+zmq?7W9@TX*#|B2%t#C>1bTX)7t~!QEHVv zQ3{ZatXK8)oZ=}9*o0fla(xH@WJ7(cqs_w3waU=KOhmTpG$>tWh*iWq$AZmMXG|t@%cW@g-ML{$x8Clqk%2&>v41Pt#^v?O&Z0y6v+>ucQN6R9P? zV$0q=JNH~vfujC62-7e?{3+R*qgyRd2)k&x;_tz_w${|!eb9t$LvQMyLF6+{J%>3u zvM#{ix{9PI3fe8BLtyDk({d)+|CZLV8ji)@mj!T4&rdO6&0$}vQglSrY$RnpA6P6g zTT~|T9~$l$FO!qjub0Y1M3ny0Af4=w(ZW(e0vNg6D#k#2AfG-NRSG6Xk;**-$KBH!W0!a z#v)@^c<_{^->%m;w5nX#Os5xySwc5m~KPLv=jZ{UujC@K6QMj$CCI z{4H{$AI!HVk)&3!(K9P5YHiuY>rr`IYMyy zlLJLXCkb5~S|SrE8R%FjL!_K6xb_hTL?5l>CqunWDYfR*s_f{qb6!dx79g*wnO@|a ziJ>f$ikNU|6w3nM!vzybmCtd;_BPgwqhI}~*EZU;Q6@$g@`|4BW@W40mcwI=2rm@b zw_XGWMO-}On~(~LKpm4IE1T0i73B)>KUhAltv0nRED~aec?pewA-i!)te~r#SynN} zIA_yxv)E)mYRrH}A4f}DHw<=E znn}Tlz#O^y`@hX}GP3`T?0+Ns-^l*w+y5Nk11H!1x3OFt-uMJ{nl>NUM<8KJZ_d-EUv$3#6|$|*b{#DXB^t9> zr%L(c`OvVb4ol%XTz+Wnw-8HXjZmV{hXA&p5%eW&gm(ztM|Qg9ZJ=eTPPXOyw(@hx zEU1pSMQ^!EOYblro2-1-ry_~4kC(kUF)5d$l7=Q|Z9I!x!$1Kl`#sQY%h2|rw}EcX zX4kJzb+YBYAIwDu=fpw-?X01>=vrhOTFdu9Y7sp2ZSWj@rpw$eR^f4Ek~_|7JX(0W zFAR@%Ua zHOMW-Y!RkH&zNIFU5cBjXrm5rSCvH9KS%)ua-47Q2yCltQHv<9X`5NzbYAEd+Bs^aO3b(; zR*u!=Ho|f~()V+vGJ+|TRskqmf-w>bf<1PuKT$Y!u5h!(wc9eSgh* z0^;fYc)H(NZt1HCrvTx2r^qiC#~_h~n0q`T);nEqZuOAFd05GT7eD*3 zJbD=ND*hE30gH;Xogb5;uO{SAvl*RE(ykJlbbe)LP}`h2OP&T_(2XtTr|U*Lm(meo zv_rcS_$&J@HG$(pQJIN;nUp!79m>ps8hb7Q6w209jp%HeIqRxDh1`jSr6~9!$NZ58_#|_`WRsuo z$LPcqX;^gxfW#;&7YGLV!hjGHo*!MJs zeFNjxAy1ZHM#jmPk)Y*V^@!|uOs)jf424h{S3nx0F_Xv?ewCHtQZAKouH;lKp0GtY zjOc;Emwc*MaMBNhFXad{Jnm;el2S43xMmFKMZ8HIHeP^Xx|D6%Ssxdme=C#GQ^a6? zqZI<|<^$~J;?B@v)oM^E>FONmF*@0@zT~CA#dZ#PL}FXWdc*xnA~=Y&8!)e9ZaGC~ z9?*80CwFp&4-8sDK&YVo`M+`@b%neDX91O$FeMAB2dNy9;RqU-f)cXpiSFNOFVs$}gZlPCx()hckgzfpX)9NCW-JmMGPDL0*^cr&&$e8h-MD}mclhpGylUS0tw*{CLo~Go zk{*yFnA(OIo=7DSVSAb_p{GFva#1OT@H%SGzX+GUd&kdi(2qLZj-c=9u~uRRtYWda z2Gt>Q#|uBZ_${vptvoH=g020Ca#5?5m11bdnW#e&rHl&>U=#IvKBSDQWT>5)mMZo7 zdCBqSD)^@cTyV2AsT8AXM_liS`+f#jq}--%_Z38_gB?bKW;OO|vt1a#MULLu8RUWj zxT;-v+ga-tJRJ;(&lA3t54~+rTqpbt0}vqnK*e@zvLn~IGirW?l4Q#L{%VPMvFU8u^2#u z*(}OV2j&#;;A0Y`Cv_nKsJ|*e{ULz-t5Yen9W3vx-|c+RE-g|)sX)gD$_{7nnec_I9sNfC)r^)5&!mlhOZxugh-R`HXe zMx1}K(6hVV^I=UGz0K_eTzyT!K zLVPIxD6>2zx`jbEa?Y$@N-Yk|-b_7C&n{u@;=sJk+z%)d^Fj1!D$rT7prGPK1G*lm zIl0)bu86z_UG|V9vLT5@8$NgiV^Q2M$|;JB0k7%$DU6d8bMckuD4#Dp3slIaeb3i@4P-07@77 z^&AWs0jJg{n*^-(gIDBn{5hn3fS|jkYC>X8QO$lfOx4YHn3_J16p_f$)cMrh^j-KM z8ntcBY-NK~Q0IVN@pg{xR*R|knuD?tJG(Dv7VsyopIQ4}6!E(`Yx66@2h4fP4v6hch?g^gkKlm!65ZJb2&h=c;EpqgB%HHDMW)$in0G=6XC zq19jpVGP)ApsGq}54X-CQ~>_>W)=T;KekAMerE<-5D>Fe z$ZrS%V_1xcVPNvbatyGowpJJ=K& zj)z?;h_&JA&3TS59W6f2io+8TN3|u(9Na1ztCiR#sg;JqN(sSDhCuw^e4Nxb)EUiK z5gn|QZ#YWSMJn zWU>H|sYh$mYL5c`s9YX|oS&be`S)j$y~WShd~S+)zC;oF6~+mQ#tK^TSP{?igrh|! z^w3H%t*qJpw3;|OL+>d^_Og)Bz&MTby5}k=ks4??DTTG?wFV^{RuhmjV+d;3s!uUO zJ|8U~q~o?27k2F zq{3#ZJ}ji1NV1`|A(h#z<^c3zJfk<#Zt_N1dP>jzyu^)W|N5#}gVGWu1CARl>?a2S z1d~iOwL(8xf%C;^ah8Y}?+e)Or4{W3MSDWgw32?o=m?{VQw)n@9@Jz31e3Z@N-d6e zR9JEe>#f>TOpKrR+c4iuU54%x=kX1tgVfJeS#VF99~O**?4)rT04~|LwQR(T4j5K& z-5&`ZFFX++bCq4z>>kLDZFo8{KfGo~wGmGXIy9-fvEyng9>9d6Zmrp=$BNK}>>0I{ zZFaK7ToeFns>YhZbIE2WBV5TeA{JY2wN%=M>Uo+e7`AxHn3rl6lgYWx%|-B(P?Doa zXgSel17moj41Fx5=HRmi5g5#_oxE?CW;qAAskU=$FL}*49YkpWhG>Xnv2_Lobs^x=dM`an=7pWO+&_reMOWHYb@rXF;_lLO`p5grX5bKj=G>3S)y8_ z+cDAf*qqO1VN&vl*<3E(Buzri{l) zTbNBmE`;|{<+`2Sio#qGex>})BA3%Z};?rI{`KQewYl#a0KijlV6mT5r z9%=OW(flf)O{@jlfU)vZ36d_t5p6z5Nu2%;^tD1QyU@$5=tqU^75YLPQyu!x)gSnw z?5BjTL0gjO!stcmvmgD*AQ_rl9dyek{kDy8--Vwn_|%jS=pgtuo_>peh5F;cw~6%n zDeIRRtz#=PpB}lujR%oZQDOF~GT!kqVqr$uo}!Y;p(N`$zZfGO|e_f@!@3RQZEDrCFE zeGCmPuucT?l1nd5wt$sN`@;*23InN$&yRv78yL8{<7RzFJnC3T96qr4a^sP)qGwgI zS3QytyX(Albs-QP#o3aXEzS!av)P1GQp&RPkK8)p*%97;u)3qeqyL?D^@!8Ce`nG1anP;rB^vNLFYO`e}A z62Vv8MZF!>c2R3TaZ3AIRL-y$K&6TCq8k3sxVueI%+=9#n!PfV4Sceqf}bm; zzDPveLg6N1srd27*~*BQJl`zJR5 zt_ZPf!$5ONkS}+9P_l3*7#*k@bAj|{G$erG11p6!<{G8a+RB&9Yb!rKzMAqJLHlfw zm#B3){Q>F0D;US z)ok-$SX#}af+Qr8FAz~Ocd!UM0Nte^NDT58kHtyQo<3y$9Fk7HA9Is-U)iAxD*66M zFPK^zzJr8s8&#y9<3EEGsTReFe|y<~_=qEpqCB%8C3qRBX=rXGdfSA&7x--xzYLRi zntz)a=BvZ)CyKNkpApgw4V5O+;Y{gZ+U)Em_xoi0ibkUa8?}aDGun#JxwvU)Ycysx z4enIVdh{Mt9Ua=2%m(MMC-{bJ3&4zges-c zbY|s!dPkX?JamFSfd|jCUp5Qh%41nqe?5?1_Y(m^@}@NtJ~C8#gTA~+gr2Rerqe84q~9@ zT&gE2=3pEf>0G>;M-gOlbn+7vhAj_qqHTEjzbYMxdMWJpJiKPTJ!a>E^d6>9^^zHV z%IGIE4pYWqA!A9nObJ3wN0VZDKbo){HCImSp3||)m)?+8#ZIkK8rXyKT3a7qL)%Mf zb2R06#wunf+44buMpCl;DN4!WbC!~IfB<$=As!%z-BgeV2xRy0;L)yzDh>{wl!I%Y zm4oAJB?&%wXUO31dRH2_Zh8+mQqsH7T^(t#tLr57tBli0nIdr{guE2F9i`cLsRreJHt3Qvuk~TSl&c9h zU`+pp69y^^OVXwz2tyFo33)U0TWM+dFlkmkuzyEklN>#3 z5aGah4hah>7K~VIP*`unpbY{>{q4{e2Y|)*KEtj~L~F*kl`;IdKCwhaRZZxoZ;M6( zqAL=$LNFnfkf6?vI@NRVVQbAs&|sANG%Hc5AD^kVeDH{VZfQx5oru!|40-n4ZupuV zw~bIob17^3Y^iI*c8~>lv=-r;p?7r875(y~E^nnokK6K*=28P0R`O)0IpAD9bwIVs z3P zW|)iJb_)0hu$bs-F|AqRUC1H~9RnB6;vqQv&5^?zFul!wuya-*Y8K_Upo9j>0~^T3 zTgWHcJl00X2RE7wJil@`QaYANxhcmxnn}CVmfG>yg;APce;-^G_QBbBG#NMY20S@1 zCP;2RF!K`0kSwfo*%v?eOJZf-HxzUF0)dSrm*NMAtOLtt=M}oL>Y|x4D<72UT3|Hs zKw9D};34tXoY;seD-VghQsc{bzE1wAGkx(CMY!lYtP-qDs@I72zLL&6 z{O7WL5Ghi4ez4>nd|teI;3>#t)D-g-fGurVRAgh{|GlDRp@rgizQg2dL)%jWi-W*=udZ&TE9L}9S0U5HEn2a z%KK1D!!RiF7?=uVFFi2~iDw*liF90~iNNxF6ECstuBjjD#z?Y;dnx-+WPQ|G01^Ap zke*|2SpmXBeNZR}B;JN+H5_$zR%@kL^Ezs;VNfU!JPTEO*&6zUs;mntHUM?%sTa39 zsy%Rhsg=ZQM=AwDYIhAI>o;1ESYwo9swOCnd2DZ}uF?pM?5JHYWfDSyBR&2Gxo0%E zd043AS0q#>Jq$tLE;Uf&&8KCR2WO2B%sMa_;DNya4-5wQijVRBNk9u$j8K`fQi!k8Yp(vxTXI39efuP3fr}om9Iz-u(0dL>|H#WQ4iuGyAQ?<1O zVbl&0i>cL9UX$Z&WCiuZxBfKn0R=AXLC_DK{l!pb0q3*Ky@f6yBw-IV z@_|GRh3C==8r>R9PtmT(J-QyYQjgP@ELxT8>7iYMGv}3Il;!#Wf(qZzTM@{3Dv)8* zCij2ZN4`2B$1w84H1gGrF`R^BL{vEqQ7P(JD12*fJ!&op8p(;rrR*F!?hO*`5}SA| zosHB8PovoxYwU=XD<8a6R#Xys*%&Z>B0UUPMAO6~Vt}>=nM9L=5b8!s_k{Cdt=DYe zW}bcH4;{e1v#DX2o}n0t|hF$$jMc>OTM zjSpV*f@seVeCCVe0<(~aJ0I?zL&#JsDFx%6ogyidIvU?hVRn`RM)_?EUL5Y zXP}xE?z+mKZA@$^&x1n_H7AoKgH@Xxg2*<4n z6}cA>8%H&Ap0t|;%z2^)bKk>Yr;#e<-MSe#Qih2t2)H`Z3h#5$mfcUZULM+dw4-UQ zmi$(0eVDuS)|1K-g?3yuCh*x!dSWx3FN-g5ZgHB~fofUWQ=H-l-N&3`&L)?GQnhei zafLGF>aZg8pl9r@k)$br<2b#@N+L3hu)cayNPl#DU=LFWC+e=d+L}mRtEf5XRq(ZU zkoylGLkEY}tPe8k44lctEjQ$a)sRV6@sA*;(T#q$wV?YUP;uJwl-fq;Lzmx5Tj9FQ zZVHf%FEIfm|5+w-{rAJ8uk|VnRj!29(!UcS2FdnEyy|-^SjCTRhUPmoOHL0klGcUpFNy0$RRkL3+6X3$HC75mxNF{dgs0U43bcbz4ragcMedJ~S0+ zpHFaAybj_g`u9!pD{$dq@=?Se(pDVjlozeyW0bLgq)EqwWmFxGjIk7KSPPo7=zuny z^2jvh)A}3)Sn1dkDL@(Bi?371X?d7Mo2$=+m(c^cKjWXDiub?ACz9`fmq+h^pOp8% zH-+ziZzyftRNk~vnVg&`mo`m~7XPXD{|A_xvV^c4`sIYU-j!Tcr z`rj}yF^K<{CySFI|DW6l>wmJe0rbD($z1=ZDF5HBc`EM43zusS`RPkQ37I{xU9Ct& z51Al?h$OSG+v%uIzamXpu2&!fj*FLgrI$zxy4zI^{jka{O%#zLh=k2A{7&uMD&cWQ z=3=X(6>N1D8k+Mw+pUa^&FbD<7o(AM#xyEj;6RWxGh4deoaI1in29<5tDtpM-Qa18 z>UxfK;VdR0kjyT1e7YN%-c;i;Lu+M%xQXl`Mu51?Rxo2%o>hRin2 zZ8|!clnNLN1$t80-?ssZr}exs82o(8S~Pv&1-!mfk#_Cex_!^S?IF-@y6aWQN7gO4 zu%ou=vSU1-3_tP2@W?5i<6q27Nl!qrRkNig8f4d5lV)#o3j=@YYfIRb~e#_PT|iNuz~8X)Y4skv$zFgR$(|( z{i&V8VC=rFE0!}m#^Z}HMmmUC68 zw|z()2qO{>2B5ItiruG~KyaEl=29dX1U#;wsaj(l1;X|G?lTjc|Gsw!AA0WT;gH1s zT1^+)L0Y4B#>Ze4IKXelVs(@`uVdt>m6~s24Z*Mkf8d1Z{g-aLG?OVvHK{HgFo7?5 zn(MhdVan*v;&b0f))srFIELOf#!e2(A3!>kH2)U(NdF({|0Df>^!eG+|My*bVDHxL z`xLL|olyP1IJuz|*Z((8mPY#jN#XyX5V6Qt8DE9ny=BkN9ozTqS9CM8cl(xYySFQy zRtA(Drrju>)iE*-Qx@6TFi=Q_bX=v`p5@;_$>GY@*rMgkw+(C29kaVLhVITOeSm;! z)mTV=Fbm4;;S3~<`Qb|t2L9H1cu4C1qTqx4I|b@t-_v%knZXnt&uVGtM68)je7)P8 zchkz4mRC5e+XYu`Ywj{GS+~EEOlo|6@aW z-et!q5J=h6Wsn^g#VTC{%5&7I{!Z@pV~}UH(CX^ z?|NFN?z{E5ED}Ujs>z{g0HaGT&S{!~U&7>u+w5QpP>*W1tfpMgFqjxTPBU8oWnEZW zp}a;%^VD^t)i;v=Bl-W+CI5?)Bl&--%Kx}e_eqlfrHNu7|0gCklKh|CII{nrl+TQz zsm-~~)eQ>z{mfYN8vH0L6Uum|2^ks*?akFmWgN1bn&ath9SRi7Krm%xW2QN$Iw0K( zCf<)T^uwBiw`hw>DbqCc=KSXBCZ&Y146EB>=LiTMFA`I@(5B`E<=GS4c7JoV1PK7T z-!u>$WI_U+HBigr3jSe2U2Ls1 zsZ3<%7VyLa%Wi_QddpO?>_mozXfyPgLWkd#_OW$|ZeFRDu~Z3a%K~V0Th=a~3M#bg;7+ z%!cW~Uz$PK!m;Ab(GHEROnHvi!e3ZzN;eE^adY)N=mr4kH$8@+O?bxxW|JDgIXN%G zZekWNGHch<4eTf)2a*qSBG`!i>M!Vr3r(xjasA1i>R+*C_bx&d>6CcalJc;+tM{m9 zn2A$(n0j5NUyiA^EUZ_ib0wVI4LEkMZ$rNtTF+xoS<$p(|GSO>2pcCPZGf?77PT48 zY+87S)VLr%z7w$ihuMEN!u~HB z|7*N7J~`6=PKy1S=&vPgijM8ZE)J7xI3ZtapGdxc-7K}>4 zT<}3;itWOFHYm1>pO^^lVzBrtke?de1@r=}x~j-BnHrB0T}Q>Bfez15mx6?I6{ryy z#;QC_3=a^332ohMRWdxlhgdRmTEe~NH0ED(n&4n_THs-G8oAh<#(iu~<4!iGk(bSB zEFMcuo1Jao@oYWgsk05TreRC?1JyM6Ud*h4bC2vlBm0kN|0zwDNA{mnTK?Pp6S4k> z$^Qu!|C8)L8^%fg0}B|*|C8~d7YIW6)VUJa4DlnErJ*p&})! zf2DAN;#`*JKi(S>HbJgOG<+;x09H@Y;wLtQ$!1rM=p8c}LdCo~|6)45?%?ta_=FYZV z1z_Y)Pj_?o^0r-Ti<`qw>!yy5K;3m%Hh{&%rI~8ib{9|_r~d#*1f+fS9s%ThtU?-x z%^o+W0H61O8P}>K02zSc-ESN)c^dEzh`BV7vw0=A@ST456Zk=7xK0H4aeVbQCY=Jd z69EEHfZO6X0ogvfZZ)T$L;xt@6+Nv5ZR%-x>u2!M&)nLY4zPRUN(KnC(c1&R&e^7$ z185_10eV$_ZZZGtm{3$XoN!OEOwpK3uuZ#o+U(HpClG5PI- z!A~`|>2mHD8sQKj3di(-6TN~Y#MDFRfbpI&4Z_i_LT8>tXKCCJf4z6$oW^5@*P|Ep z9ht~^%EHO!82q8YHF90KZ5$2XF?m_-WxncTd_!YaGn3C#xVU2ag3l~qg2!Jqb^yV% zKgOCquO^za>Z@9g5BfIG+uVY3f9$}+=m0M7ev1K)6#{BB-7@iee~JL#dh)40XRnh`Gz0s>l?d*uiJ$m z1u8)A_hUGpK}eTT$Di4T_jI<5OJIRI{)OA1)!KEi1yEbo2lZ0m2QOADD+OnJHpcCH zMXv`8`;shnC{a1Dp%*NJ&@E`i6_L`u;UQ2OD4$EGfI@UZ7+`xY6*&y;F!4w+6`UaN zR=wK(vPGbsEu2x;7^W{&=#ID17W(tq8FiIM#T$-hLpV0pX6r$FD-M7D!esKLfRqMxQNq<`M-M(6{0v2GlkM>flfq;iH$d4jI6; z^o`lO?N|*=sJ0z<>*nDeKz{co<)AZv2J6YoJ%DTY?1(p@4L5TjGR-~U-wMJe<9*|V zIsGb@)~HK4?B*%ouQKOv}fGI5KY7UWJfN_+NDi8`)t`*-1f;h25b2@IG+N zWPHyR_BaqwryW6K=Rkb8TASZ^dU%o7EeV&06?|GA>M{aCa^RDL6G=dpP|dQ!58CZH zffZF^>)N9Tbq9X-+y*l`^5N;plkiDJ8re44;Jv^sf*JQf{3~M^p7(-mL%OQIY`$*j zy+`Yir(iLsG>}oTNn@cY&p5tN#JMOv;pe%>Jb!H-)C*F-U9G{tmt5-ir$4LD9ET@c%!W7$ zCf!KNlgzp~YQ~Ou8`IhV8Aa@KGV7Te%ee$(wjRu|A&9*UJR3O=s6N2^4eyCn?zpr# zVc6KonGdEV#xg3!Nw;qdy-)4|g?#>lxLRUN-92Q;Y<*pe0 z2BK%Q3MiU3Q3cZQ0@lpc#5YDX0i_1pG6kOlqj=KOp?Is^!Z8%{#bZgYLp8hsV_s`< zJpWiqxicI1J;GM#uYz;()D`e+E>n{n=MUngi!5w8n5o(>bPw%$+tkxGp@k@+X5F2` z-(@qC^({@N@zMpw!3^N&eiwWZ#D1&p*kw*eSW(1qkhk7JE)+pJSUJ@Q!D1JWv)b}I zEC=7sy986Kzu}cCH+{I`>}{bvAWOd=azSr}46`XygCLR((^7*>lo2EkLJ8H-`5j4i z@fc(;7XmXnD_I7yNb0!Y6ar)Ybs-HSiD>pBgy^;7@Q_05L~X?ngov*{7RjfT(oa*@ zHNg~J9+3wc2Owmj4So-eu*I{+%*BXXh_onr6)XB%@Z|d84aA<}lwz>VAb4wP~xu5jaMJCi0BCBuJGid=|m?DViLMH5Z zgUQ@L{LRPl4@TFJ!o9l-wiUSkg4Z}UNzT{JyO_5ksI$QDlf~lLx#>iBB6G&bEGZvN z;RUKA+KlLxQi^~;xS%di^`Cnr%UhB4Y(ElTgYv(R#$eZ2aGu5f1sQf=AB}X4%uh^_ zOo-G-*$+m+r@Dq^LD84}Wc>vT2x1oYLyYsYJm~bb)Qw=hj}je%dGlEkp+!+56gvx& zEn7X~Nal9o(^nh`GbLO7f*Exb|6&D=cYbmKf4h9+K&kz}+wO;#RPNK_ho)=;Fn zw;-w#tVc-<<_Ck?Ma_VVFQ|$m#vq5ffGx3@V!%*AuRclpi)T@aB$rHCvd>>`!>aWY z6gKMv`i2?hVO1_bGQ zwJ8ZDR}n4rU?)&4znhwHM5rqy{3o~IrG~*Dg7XJK5?9Op2E)<`19+hA$KJ?ClnN<4 zdqM_fHjXS9!2>LY->ZsPTwh*>-)p_f!r*-KvU|Rd&-U*8`2aCFz1*gs_6oi{e4g(Y z+1;L>AA5IC(bsqcf*1Gi=kt$IkFD{F>pVe;Xz&78cz_Xv-JERv+?@K>va7S{@k-taI+m}s(LcZbbJ<BOaRH3ewB|MPGQcvNay;!xV7vbO(O`=gisZ?(6F7 z?Ca<|rr+b^^Me0}!z zb@%jiaP)O{?Fg^^Llb|jy15%v2r0VVI=ZBqKexHKi$uBLA8ugY+ru6Fq(VxmWQ8c@ z0D-zGpwVEdNPu*wYe~Yx@BRL9cD#T8LuCAjUhw7V?5Y{m!_7SiCsDXz@R~mZYsLJ6 zY*;d{U^cW;L9sp$+v0XNiCjp>BC?x@H|{7*y6HCz*8bdC?pX3;Z~>_N*?e|N6dZKn{jSjt!fs^AI2FY1} zVDuJ=_hK+o;dhCzsURZd?fEuP;jw`cG4R>R#(dq-{}4KmGcnR_82Sc3tu{4T^Ut%$ zSvG-tX6(eDwD)@ny}S-yT#KUDvY~4}hTPQ&@3M%LbxS>jmb1ipA7;!_Y{j*3K~jmB zD63$1@#+=o{Qa8CZs#c23~pg1m=~-%Uptey0_PY2j}M~lsEvuE3H9|~qqeFD@I~4B z{l4-W3FBp||Fa%hmkO*;DiN%K)q6Mm3`%jR^QI957g46;x9>)w(djSauaQ<^isyQ=r=69C^~?~ToM>V4kC^S|2^f&2Ham8}5X zDqxomKoCPaHzz@&3C+9pk$2*E1ZZsD?0-Y-`shq&@5XdGTr>?U4n3oXr4g#Gu0n{H7CUJLoys(NG@> z5hdQ!MmT||oZ76XjZKCTuE+hYcZd-NmUmH(Kj8~~N6mr?KD{@E8p(H0FfP;EAHRO4 z23QbOx-KS=-^xX!w3_J_z|l4OCVuw@3eb(}^eIF?aRq9aGxZ+%_UdQ|n~E#oB32vR zIV8pqbt^kWIFksKP8(8E1da*Tv11e= z^cxq-Bs!D{G)NuqYUe$O;ltYCuWGfvcvNE?hj$_{^M%fM>3(JxMz43O@7i8Et*@_3 zo8MDpA!~?(7VgTodK$0yQHZCHpU9v+nmH-P;*Yh&P9wGi_P3&A9Bvd>4n+bgkd(V1)Hu#f(%~W!3h)0s*;>CQw=14 zfnjD~?tq#282S|EpXwm=?P6qj0;0x-s6TH19;=$oXP(*T9}XZCM4H;2{SeQ9tIXax zjQ$}tPfxdNqmdG@HYNtf28qAKhmE;g zOt5yC7?DV{P(Jh-mJ@G6d^>}1baT+17rQ_tv{RB7WIIYsbgQ^q)M^gey**=cc>lJq zEj1Br@{;hkdt%;9df1$AG(Xf^KO@eg8Qi)cQhncCQu(w$#5G5p%_R&MlSe;xq<^q9 zv3n}jfm4ADUF@+%t(FxqsQ|bIF{giMKwe;Qf<2}WDB~KwV_{A>t@Of=ecZU*9jMSE zo4ZuxZYWBX@!fC7n`}yZC~62?h1F3}WD*)|On=bmbv86u@yPC8Kc@s@sQ|=)nOO3` zEJgarMORx*cDpl`_vs55aS%laNmNWh*+{_|5M=2nRw$eOPj_8GP}~44j;Rc0X44V~ zN@lB^r$>xI{X3Cex1^aMa>=noJ*+-$oB7c4zn?UsTB~4UG?7r2KBy+7_tu2rP6tHN z0Z>q{{9lZ@RY)W1d+QJ(XHVNy(zvdcZ*FQSsO-$bQvvW;Gszm8HR|xDMSEq_qc9Yf zx1`!p>0o25NL7*n{kxUINtXPvlkI5}hQZ-L;aZxxVj`=JB5ZLq%|uupFn_MO4q4K5 zi1FSF6E)%Kkbn}&R#4FKKC1Mk(?AOZ{~&uJK-x2uo&D>TXv&n7t^0D9?e(62;XkZGx_spBO%*?QrcF zSlshSCjG{x9lu}G8ySM$wJX-cW#X4=BOXkiBW@g>zz4Y%aH>bh8$85?Bxa-;T4{dZ z05Dr3uNn$Ub3vi4qLEF6oqKLKHdg-xQ`H0#D5mf#k)o=BYHm1JJP2MhWr9*AQ#wwm zq}qxKjqO6ocWVe3q8qF#)OYr*G$FW5lyF(15+Yenl}8)N zt@o6y4BE;;O*^q)M5;=|KG@We;VP90K!BD-cQYTUs&zjDX$M4)z<3 zek+z%^WEm*&}eCwi^Dv0Cf zi#>mB8+F!`=rrqqCjNf>j7%N%n>xK2a~pmK0it;N0s&otb3AW!jw;_!o%pq0Cu`hX zVt**Gv{gE#Vxo{+hX7A34S40uxr#fVs_q98uW=1ypTnla&NEh}CKq=}4r6Z_&r|(D zc@gmWAf>5x1yUPb(2!mPyJbRmHU);&0cVcQyqgt^Ug5AjPNmM4A?M_arHco9Kw#12qhS}U=TPA2)k%=Lp`hA zw?EC-u2UFX1A<;&*c|k{H^+rmi~1hhn3Fy>ll#%3Qqz=HWB}OW%@RfO%4n653Dtc* z!i$MfAnMs_-;l(bVvb7VV^6$CzuG(Uo-KwHno__I@g=h+H;0Y|I$04J$kxv# z$5C#aBDJHIj3F@I1(QER=Whr_+(O+oL+(D$F$$)CK`4L+)Z$WYId{pnF<1aoN%#u$ zrxwP^-jHX^iI;@cyw6!)*Ne?1=gYJ@Q6Bobzn?-!s?>J~sS0=H>CxqpcAoY)eX#o| z(tve3zT!xQ>~(kCkI4oT*9RAtG(O_2FQQ`C`fAr-4+zl?dVFg|=Q-wMj)PqF5SDUT zNLr5{uH?h5YzdpX0(GO+d-22)WIx%)Y(w}-nxdvaY^cK9&1@|#f8KnYx!y*{CdCSz zRVlql)em4(nzZomxCfB_G_VBxdJ!OK>l4`oxboE8*sc7m?$F-?eB&jww}a!rGgVT1 zO2yDS>WX0F3^(ZYJTqIM-emF~tJe5Ipea&4#G-tczsWmnqcw;|Eh5c6o^p5z#PL&* zshmP+IBJTpnJo)ZZ7Nd$KfM*Anxh&68JViT0+4L}TG&1$HH8L%EJZNZ@vfejpV=C6EnXy1gvhrn zyo$7)8RoTF-kg#`4CGfH8RK3|`|)AhaKD4Ht>6$oz0=HqRgo9Vc3dU9>p2 zC%{WStqr-xxFAvVv{~{wEsqVP+#sI~0rv%}vR(i7l3=&a(TQdumnO?)G7#?o;ZRu? z$6Ne6tGX&62@KvqgW(Rwo&%gjD3Qg6)e$0UD88gR79~yq_8APbdT{$SH~?id_Kf9Y z7oR~)PZ=$8fizRSX>0|j9BDmotgf!7F(=G3n!i1X>9#bGk+>kfR#D~vNN_=tE%JdB zTxM@dkVLAjXL&2$hbtMNBVWZ?b?m))%9IHQ6#crQiTh-;{U{<4V1a|JCe!4`f}1lJ zVDQ;KRS^vOBsuTmU>+OB=dk5HT1d$h*N|a3|B$Hu1j~^z?OF0g5#N&9$}UW*UiRNi z>PWUHd3|sj&W+4-mJJFe!$Q@d(#DsDYT8vX&oCnUq5?&D))w!3XW0-B|yD6v%(>X(QvOTmVCRG`BthBb_9Jyg(VO7NyIPoPn-hjR( zAR#16oWHZwy2gyVX(5q6Az_v1<1TS46k?o8ov{LzyoE6Q&TJTGN-fpZDw&h}+#vi9V^AQCONfHhJ@P&<-v!R~}CAo*tnMkB>H02XwS50JurEsnw zrLzSWHD^$&cL)i|?$?4ijQ-Ci+NhfY>9&sI>b5Z0lS{8X-`jOGgY))vpr-*AN$ay` z8q~Z9B#S~IwI-YVb{;Zni<_hT+8(fv3-z=4DbsVgwC?)09JtUMwVQnP1DEey2<(`~ z*8#0n&5I-XYFV*i46ehtt`Q2Y4>BGnKLHkbTo*VKpcePOJ;pjk?S_y)$88+3n4=X; zk*_R=STtw?V#MYp4G!L}?uk6dM%j4kZX3xsVlIP<$iEBM?sXA_W=~LAv~4r^AC(vf za<;A-Ce)y0#XuSc(;v6%vlW7$?S8m=Vldt8ItQe8Jg0XwSF<=PHxZambaIz5ic{zW z!0s?m>e-l&kvL5X2gE$lNX-+f*-v%#w4H$Dc*t#w_h@p280H7QV014h&Zpdg zT!E|VCni&u;}<&>XBJr)V(KmE1Xq5x*2_ApUdWkfRU{R?EwNTcP7aZx6gw-TS|luG z{qc!&cgY2FED)-l(H1H1OpwwBwRVB6cEwlsO5Z*pN53bXDbAy5LMHvmC{&DXx2=BT zta*e+fn9!K7sj~M{|x*n`B1C&-PSpmhLcR44QUTn)FtUgJkTZW72z+DnWK|1|5RRX zcb0Nc&1XLwtDp0rhkuORQ6|C3{I zJR{V-zrf4m$S0V__#?L4$lPoSr&*(ZiC-yl5skrLdrVckr1>t=5t9B%b!^Odc2+YK z-N+V9Dt%6kV5l=_#D|6D^Bd=Jvc5mHiu-X;3lRY456f?|=}A-LYWf^oeQWM58cE+f zmypj-91W_S%z3;B&bn7(9}{;_n-8>OiN=3_+X==10ebM5#c=$~9tU-mOJEQaOj1Cx zK1gV|7OsTF>N_>tbS9Vd<4jj(@ zFv^nPN7;D#Thrbt*qjx7J|%@UDoEtTJZhQBs)**%D5SC3N$e+DSkME(9@n*uGcCM0 zE?Sy}0Z8kIglKpVv-hy3cR=KDCX;4O;nh=tLI46XnUE(643}UP53sf^5Gq~{_1U$% zrv^#WrDHd%6j}wnybiRSVv2EO09$=2nSaOxp?@s-`#I&W zpA{HUW9{y!#qknwF-FSNhOrnVwAifjsM_cyI@P?2LGy8#toM{T?LCZ z|fQQt_U=Q!o!nNd`GY8Xm7Y`x*w^sJ?fD7Z2k}2zLi)Un(?H zvM6C27NMbw73_v@vTd9)-TLs>bB18Lnz=S8jGMdP>Z32K4p*RHG!Af(DApbO z)s<3}$Fhk_2foGOqWm0xVS3SP2UcU0W)ElDu*(9uArH|MPBn#k)!hGb&15nEP-eI0 zRg-#(0VPA@EvbzNwnVY!yQ4Y57K^TvO0#<{PMTPvoJp~< z7Gq7xts^YigcgEzZ5q;c*v?(aoUXQSaC4cI#;=EBWEbwkFiC@n+{3K92uD>x1_DZR zjQ&7|gejh&2}sJB@2ow7XZ5|Mo40a^U|gYXony3Dq=(EX;))V>E5-<)i2U`3!kRlN zNS&f<S1ZFrJfDRex8p}v4D+-YaeTUp}Vi-p@ zPX+b?Uy`ms%aeKwUOn)BOUn=zM~eh5_1F@!_DM={S_nD;VCAGDxM*R@Wo0#T#ES2a zFkTPq4nxVdr0nH zhg1o*E0I&^TvMpkj^;o=x1pIb7+;%e=km2hV4G}aX5`OAMKdjF^ihs#KrD)7aA=aN z@<(JG<+`g}5WVxlO>b1f-MjM-CtlicU!S!HguWtBqNUH~#@}O32P5Bc`|~d_$7NYA zB$as|y>@VGaIRo8Z1#-eM5_;ET3oIQ(<}u-wYBQsKp!MG^P6H69*eZyK#ylSH==)> zz18T1EZei0M&-<76Ays`J;=2+4O18h-;KFDB}F4^QLPxF8t4zJWyq|RW++WMLM(@= zM8uwPl2L)d9y=6;sHEIfHLbWVYwDNqqVryB=XQnlAf6%~MMD={E>3f3+YnE}z^@5; zEM4Jb&!o?+CZZ59)xEa}Ai43~iTTmbYPZjsyk}_LPp|}d|Jb=pmRZAAHU&<(vYEvh z39lF$&V*&qIum{_U}{WzG^@#gBB{ZPvb8Z-&afRzmgY39NmrHd*T*m(#Tu_Aaza{cI2lPs>n;p|1!ENtBQ%)FGAQ`qx@Rk+9+S_d@aYxEs*Uc|J+KG+KqI)vr>!2rK7ant6NPin$>ztiE9-B z+RCaXm7^?OpFyR-U16R|V3$5SA5-f2eY-dOy^imhz0BNp(7ID z0zL1bx5S&{r&&$6$M6TH$mO^AN)!nO*gByy1of0rZ=kvNm25h4{mEIBA2TXio_dCY z^ledLB(Su%40bK}a)@ge7{8<(dT^6Ui==oA&Z*BF1S4a?&#;>_! znlB&7G?kJuW{qGQx3<`V(&3eeHUq2S_HlFvottuxdL^T4i^T6DlNn@)zqydhW5{tx zG7u7Av^?9UrqxgSYGhY_6A{~^`-cT6;jsrcYQc2$vbc?6VJgb~O;IgdC*wQFxxNk< z$0zf7i+_L2O3f}DzXdQx+zr0?4~=4znKxg5tEW!)441+s4FNl%ekE;W0+3~kb~D-; zAAr;_I9qvwR&I~qwFr@khxL{>m25SdU+l}8b|sEw>j-zNEFdn(N20LBYPH<5ICTsQ zE}PoS%CSF9OTc?orAZRPn<`GHa@vD1u==U>_;(!UET)@%@zca{VM%VbWRR^<0aAUM zGbvubbhSYA)xK18Ks7?z?(z%R_G76?cVJ-0_J~*8PJ*zSGU5y_{s)8^!55x(%H8BTdP0=Gn zK$lM9QoD&U3FFO*GlR}TOFDI_C54IoK#|F0Afv#51=9uyp~t)m!jt*{oTeUliDEqj zjkfmx+Cr!)U%Vk9iq=V9@ppDb_&Oi+Y?2kmmYJeuX+=?Sr2CW;jZn&gVF|KXkljy~ zzaI4C%j61qg?H}HSXrJ{bvG28UBg$Q9J7iRM7gsEchH_^aGZK)M{6--M(PxCsMw2q zx@O2Ii8n1+kBP)RL%$@qi>GApBOUOS6v#|ydDM*s)yGb)f%iwB8E+iS<5BpbB~Yfz z>JCSDEs39~VmcbNxf)MCY;-1aDWiUH#fZdl?Nu-juc$&ZIf2vLEz1S#<|ySxkz+;3 z%;b4sri>gSIi>x%5SHLiE{lh#CuPs>jBquqY>HFVx#6Ltt&z-L-`$NKcpOP>4)@(B zX19Gd@P-7Zn}rpWzXBa?*5ce*08ak>a!neqZUv z_Y6HHnf(k#@>f3)@GpeLO@z%(7)c{pp=Y8--7^|-KlCx<`rlUwyD)@c2qFUd7y^Hk zwhA$Qu7?ad4=zvPlq1|P&8&)N`BNWY58yN?>wtarsyOE$BPKU( z*->plwgAEbOmlmBFE8>NG8(7`LIE|36d!Ir8H_-WE#%0dGO&l!rE|)g{Q~Ud*JVty z@5oxiZdDvg3d8KP;9n5bGENIMut5{|#=hbbImvpG=G;12-^Ww%1FCkLn(eUJstJb} z_|;>nUUC`oRD(!#leX(ZM`)$lzp|outXG%)kjxaB7)?&9f{7$2NV~A^Rz`6d$ZOQ; zXAD?#)fc?rsc|i4AAHM#Ub?Q+pM0%^KlH=dt~c9^ zi|FaLW^MhZuq6q$s4K6!fxlqm}birg02d0+reWL2y7akX_WJ#x+8zlv?BpHLH$tSb2N_-s`lw#(%-w*UpV6T0 zp;2HGa6S}OIAlQ6?4pqe$7bu3bYv@EDAv81C8}SsZt2ZN>bEqR(h*gN`?ReJ^_x5e zr=&jssvY)d&d-gmj9c>}z+A@& zO<8eJO{ge<@EHqCqaPeAsEXUmsR}(9f>bq-J+gqmYA2KD&L4*d*4NtO z;z8J!j)M_`Abc1u6ufm@irp#d16j*Y+&v%=^@Z?k^&AQO(aV`_E8GTQKlx85%`(`u@M#b(jl#b$+mUSI z7)XhA1me${h2#T|k964Ee6k9bs?;*v_^vo3!z$=C6N3kH^!K@s*NogL`uy-NLeJMF6PD6!h^0vlg;pa}^tKr0FGw4^PS`tFmRiAX^O#`p zUkBAt4#+`T3Z|t~q-}6F;hA1?ZTR)=d-%1tJ$EPNc$NTyIxrJdj@AgU(mW5AK}sA0 zP1Kc*2QFf@<9sK%;j3AjcTM(!nWigB56r{(`k$Ha#wLsp(nSuZIx7VXT};$_TpS%B z#FU#gTxcFxi0o2UN4#Pb(7}&GKp(yl{qibe-1f8-uEnw_@JJ3KxHKrIU36Y4|5RT6 z3u~cRb4!snB+Xgp!N%hRN{DM03)$Uu_;uKcVvsX+^ZaWd+}Lco+&q%5Kx+ zra#SsqVs^E{0`d(2lDRYu+&sca1ujqtghwvfgE*SGS=rCZd@=gzONlj6U}glL-6w= zhFr--8s3&hT##tQyhqXpovwS5x9WMA360F3k5qaTCDl6rE~(J~%cWh}=zp)nTh=$b zZ~5>Ty3BIBmcD;Mt7p4wK=O^Zs#;adM<2+eT2%8Q=#RnM0Y|d}L*KjGHDBMmIS)U# zknMm^%Zr~|d9Sh(ds`92uO>bDpWEvnd;5~d^Cly%U#;&cr+}N6m(0)J;cSdozgC@1 z9!@}KCnunF^0T)W@gF)He+1b5gFV3jw}-FZ|K=a^zP`;4&)$YNYgqwqEiEheesj;R zEMEku@h^zg&+(4{o@0Q$yTzVW*FEg(xI*547#ZB;GJX+q!7zbgyoGtx`_`QXpX&jH zQP30zF#f)opV_K<9iz=<5z)0QY8-KF5MA77F77qU*43PT`=6b=Xew0}SP_OZwk#Ez zY&u5t@vdL_ayP@{+1xz5 zIy;kH_PGxdm1dP6Bcpd-i|lG3RMy-72{T?spC~wK_~>Aebk-RSd_m}UW*gzd+L4=> zU%>Wz`#JbtK23h^-md9De070!68H^5B>vA$5)ycgyW>|$a>X=rtk?4-#l5A_PwD3A z8iI6%=9vo?^^eTmL~)dGJFpGC1nTw_4em8m6yC#BsxKgwx?qZ28@yZ)q<8P4m@nmt z_11~YQ4^$WCH0#;%q-X}KaQXPSV5$nO zmO5$tQ~ke7qxoS^U1O}UM8!wJq9wzz<%9YCyzbN&v2FT7uLc6zu^$NG{wL1B*En}{ z9UbjMyM9HJ4t{_3-)6eg;1MpnWxlwP9JBt~Bo7hE7 zl=!08F0s0luzy)hFY07;lkFqs}DY##Q~tZS&vH@f4?p#NNumzofbN{$G_>3PA6H`pNYr zpr-n3_u?k`0TA%fn|=L%3n=}xatrX$9Ru8`0E-Cv23|k*iGb^E$)DD}UW6$?&5C?k z@;?p=M~{)pX9reAc=Tv=w1N>XiR8mxPFe~aP4B^SxHUo`^+3sZnhtU}>M-(G3(E?G z93t*;1~Z>m-s$qmmi4sYzAfA5KNSH2sbBWCX%B$UWPn!O4P+94@Y>|Px4Bv7!LO=Q zZ2}PHPH$_M-e~@fhj;Cpc7qm{7TZ(e#`cTf0cB(MW789ZKWhuICITEwJ12JM=BzW5 zi^V(s1|CuYbYn&0=8$V6b!SC(lesqcIq$+Y*sL?EzD*Ui{}9Ur2E*!safadV+Kc+^ zhpi;g9L=J*!yPgTD{q?=o12Swj-YDyq^XJH;fzrzn>(fl+K1GHz`MDlly5Jar7;8Se|y%)js#x4}=wHYyu8EAol|Fc{_{lx^(ZmAQH#W`_zjoK@4}1B>L^zO0 zAE;m?6{xU%o}wK>TX)A8DDEmP_oraQO_2VO)2`n$>&X6%6?Y$>woqN<8-(PlTBomG zU#t{nQ)wEfc8rgZmK)_nB#9miS*1fpCtmSHR~E=pWSC-S7K7vH*ey4Z8g{5!YStb< YpD6SG|Nl-Ep1=I0$S3xI;(>ww56(C;Gynhq diff --git a/dist/nt2py-0.3.0.tar.gz b/dist/nt2py-0.3.0.tar.gz deleted file mode 100644 index 9f9bb67cf55277e894c7936b8497b080aed5b456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13702 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 diff --git a/dist/nt2py-0.3.1.tar.gz b/dist/nt2py-0.3.1.tar.gz deleted file mode 100644 index 6757d0f1ba071769087f764907a3db39c0af82af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13723 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 F000+8pYi|z diff --git a/dist/nt2py-0.4.0.tar.gz b/dist/nt2py-0.4.0.tar.gz deleted file mode 100644 index 78a8ba2cd6ff1525fb2afecd97d3a42e439f2b5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14105 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 E12zy|zyJUM diff --git a/dist/nt2py-0.4.1.tar.gz b/dist/nt2py-0.4.1.tar.gz deleted file mode 100644 index 6f4b2470e1e64983f796807d75726a2e2c50613b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14184 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 ZTjyRk1pY6B!Tq?X3sHiZ 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 I|F3ud4}Zj{5dZ)H diff --git a/dist/nt2py-0.5.0.tar.gz b/dist/nt2py-0.5.0.tar.gz deleted file mode 100644 index 9fdcccc5c161ea2f49f00425d390b8f4571eb3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21508 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 diff --git a/dist/nt2py-0.5.1-py3-none-any.whl b/dist/nt2py-0.5.1-py3-none-any.whl deleted file mode 100644 index acd59f8b707e37e1792d45f0c00ab86173f84820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26217 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 O^Zx_NA)?#>xB&o}A3bOQ diff --git a/dist/nt2py-0.5.2-py3-none-any.whl b/dist/nt2py-0.5.2-py3-none-any.whl deleted file mode 100644 index 970f14b6ebec462dc28536f7f37c3f2722811547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26219 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%0Awa@Hty7DqQHt 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 diff --git a/dist/nt2py-0.5.2.tar.gz b/dist/nt2py-0.5.2.tar.gz deleted file mode 100644 index 9033fb823a45e34c42dfda1823a76874118e433b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21529 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 Qv-0!*10e3@x&XKV0QmY%NB{r; diff --git a/dist/nt2py-0.5.3-py3-none-any.whl b/dist/nt2py-0.5.3-py3-none-any.whl deleted file mode 100644 index f73e439e611aa523c675066310110b41a35dc918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26220 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

KJc7>-^>52z1k!(lGDL@}pKI9YFqiv6( z>YFL}lFi?j>tf{41&@!1Sm;c8cT%}T=J(lMh63B(vCCEUfUe`krsHH8OmCIzri!(B-eq2ng;=7@t^o6~9wK*m7PCP!u>_D_^yCv?@8$^bx0O3j-nZQ;(&M-GTnvEU^U=(4nD>z z^Lp^#Mt5(Hl`(8WaF|N0dooSA8=9x|S36X67&5pXS%`){PA`32+gS9Zk|^yiHGzT; z9q`?Yg;30mCmjRgE(>`#-Ry<%?>4Tkr_T|iH)ZxZVNAS`fW>P%IQdk_VMB%>u%JH2 zGpNoOZUPrUh+=lI`>UfY=Y~^N>Y<^t3T3?`Z90lW6q)Yow^hhb+w29GIN+r3$V3mc zUA)P^%T|f8467rnQ%P-Tv(NQdv?%8&loa*9Q;qS55Cp6Wb{CjtE$LzoJ}zf`pD~U( zEf8>1dx-Hta$Bz zO_9AlI_1MX?X3Wu_raRGaz_}?Gj#t&2!TvjbWOI5xeHdR`x206U7%0Z#b?`spNb6D zOXCRfjf6er4D<(2TO0_<=-$*A(*OKheGe@e}R^6F%Hix*3F#$ zJ`QuZ)Fqivd+eLC9l>9`eZ5qRLRN><_FL_BS5E8OJpjjMi$u`o=VfNveN2E zWn=pC6pd4DWXqV%j52Jffb^=&B;}(jZ7kDWtHg?^_{|C)s7sQJX66)aD}4tKkhM;$+FfM?H5v%7n_wA1Uu(JohfnBabZpc*U1#oeQc~E*A@(NO1TgPlP}xs!OCL+mutzTNT52MLx*3 z+Ay3pzA}qMU@H^%@P+dPk)Fx~%}XRqqRi+#*)pa)c+-^YHszWVoXD6QF-is{O6`K= z5k+~Q((U2+1DR~C1_2+waf~!0-(Cjx{;fr)54++dpaqG33x-w$?pXsp5~fpoo-_CA zvZ1$o_%Yq9Km}KLhDrdpKR}Fkv96{!7=8_vDJnuxsRXMH&E^G@gS`itle@YUo#ka! z86L++y-Q?hJFd6qA24b`TSLy#F78wz1-v~8oT$|=n?$MBzv%84CA9*k)5RzmM zX8iSdn#}kh6!WNr%h0>lJIT;^!-%#;kP!5c;NT2#{%Z#$fMjqVhUH7g{1;gha-n3F z)q_ZyQ^a{|VTOuT+M!Llcni2G@`Rm{)O91+5T*%!=&JK@?N(t^hP?Mni%0fQh`!bB z=o!3I8AkzEa2=?5^Dc8@R5sY>2E(-W>H4tGjVK4YJfm>{A*o`2;?N#0fK@=J- ziK*L2E3K!-Uq7u;$3e7^T#kksoS#58`quHW7l6obz)6jLlnb2NTox}>$3^Xf@0hck z-`9IjN+uq=7BjGvR+9%)&xD(zGLt|<#-lR4l9aI9(8+=p+zi*M)J>a zp<4FH<}?Q1W#(TaUbnw_foBkw?@q@de-b9M@f`{RX}pnV?YU~CF{YZ-agfu*$@Y&6 zZz)%kgmHmB$Bk~1SC7ofBl;sdZUZ|H!*jrGUI}2KN+by zE>iRte39aWZaf>%&kNun2bq}K2$4-bi*W-UQz>bWkW^|h%6ww=v1Ti+g&%7-mAZxq z+eXvgdim^r>+Ht~lGOyboSWwB;XMX%F&ujHZ-}-ZdR(&&A8FR&53|W_o=-xJ2B?VF zNyE1O!3j<$Q^(dp+dV?L(W{L9Kv(IFoysn$R8G3gmDLej@qH8J1?=+0!FfQre;(mh z-Eetz5uTNp8zlksm))$vOOQM|Ey7K_qrGo=R|;IAT@synSkj-+KIkQ1OjQm7EgX^TThnja94fC5G_Nq9bS_?V8-rhoK8A|l#6JiG zR^Q$c1b)AD49t3eeQkhKk@nx9{dySZILa}Idoo=SV)6x>c|X451CS%O=|zvYgJxK@Q9f%?N>S_(wlk zV@L;aT%+JjWkc`Q-eV~Q2jc22%8>TMGzB#7k=P(~@_jvYacNzExb@Xu=9rJ+B5#q4 zl%;!w$f7ih7!qw#eJGetj#OZ-BL!w2`9%TsQ2~Iz9|3Tw{L?1m&6#mD4_$1XEJ=z0 zmns&nl5nyya*0W_owTfpaJ}=ZjGgwBktfmuD?iAUUjTl^#qJRI27Lc1jb$1|1$l0! zjIq7qTn`x22G_bE@J1}*&bAIVSiqD6QtC(bQ6{msq_o zxF3M;sHb#pk?|xey*J+jk*Wc+_j143$xV_wZd_Te<;TFcy zIeIvGqJSFD;YZ+6Y8R^dcCGQP!nGnArA+=Q?kMl0)%K#=O?TPom;8iCz@Uf+Vn{smOs4Y2gQgN4z#1s>QnFyvjWKNL{!Gs5hn89c9) z%g+}nq`$Tj6@C;+U~t7~mxQ-2L)f#*U!xuoU8FoJxeCqMZtnX0^}v)Mi97qju-yXR zpI*h@V3~2ZwUoZ3>0o_y|XQb(a?y8P^7XRNod^z z3hS?;Y9)B|#>yrtL6=Be;F$}3g+M-sH3?(8Bf8b#H>%Hq%YcRgZ{9oa0?L*Dyqf#s?muQW}fjvl`2-mPW!a zhyH0Rm}Jls2f^WcSL6|5ab0oW0KfqNL)T_D6a>duhA*P?$^2bp#9GA9>rog`IoOSk znoyN1sXBMs1aQt~S=-u#18LR?UyJ)leCK@+nU#S6IAy5XY4YU;MyC?YVAw3!Wp+Ry zN*2Y(LE6o$aREHjV}uA%VMb9){NN8WwvsOOf2h9yD%9#M=2!37`fND&?j{^g%6kaV zKXP~I=bZ!J=c5(*f#rK zF?*8q?)%)u6ID0N?T7B-s$(1VFC3(72Crp=%1Wn}o2xvAPR`Irz`%H_y62-%0^mGR zA()JPN1$n#a0;8j&AE18nkJv_kcd9#>QZ=7591M}~?o@|gC~dJ;ant7w;rh%>-hlWQKmZF` z(BI^L7h*fmI{-4wN|$(}APGiysnZZUIzzv>Ipvj)HbuC%~C=3#D|GFI6*bnK>(Mita z&)7xbuNU2Kw;lg}jE71fGoVLuW=1ee^urd+Q8abZV|kmRWml@4M*f7`Aa$)ZPgP>{ zz7DOFWs(d)h6_;ZBA*?svp8bH@-o1m{X~dYJ~Ij!H3{|4|`+`bcqr5#zoUNzFddw4MhC)O0t$Y>~JOE@%-g0CJ_Py zlYjZ`DbcoV=`IhdLu-Vneo6$Y8zdDD5&q;vQI#X`RC3siVKX#Z7h5B4gxWox&m1kf zD3Eahzp2$@%oaYcg)y}5*;t$>whQGFZwQ^!>qCTB0nUez@yx)muSYqqew(Hr_l8pe zdc7A{-JeE_%Ib}@g)7kBa|?9FqquE5H4ivC4q>fnK^ikW8{l*qx-wu34i$RqWX~2E z{?;-prTqCHu${JwO+xYywjckcfUy5h>f!8QX5!-XA6c|kL&pA)9jW(I1L?}Bw5FJ% zYb{y{(sps1AgTq{l%aMN$uhEOeXK}YxmIuJr-vnlDmv|p3JK!h7dgp(bs$?QRSlEm zLwVl35b1Ee#VteIL@65=j}_1S2iqC$N+hsDq64Y?-AQ4`^R{qF8sbMAi4de9H0n8} zj)QOp(yg(pTMa4L>^FE9NtEJDp9T(mE-gr*n+)i)$NQGNFcQT|Ni4PF&OOT)SS|MZ zf0$LIuYa;nZZiU95g@pW5|2GvK$t7Xq)#fT(*D$NTDcGbLxvrvl?daKW9&g_g@9eh z{CXjj?U`-;_S~fZTpWAWHOVCcTlQxpyZx1CpyEA zam{&nvW`UC-Fs>i!y9Qs!W48Brq_edY8r34$|Pdib3~M+%lG z@=F;Wd8)$|0i2GGl){N3ty4nRiXffDvm?!|lGDFKR-3t*TXEQt8bz^F;)MEyTG9FMO_2Q3#Vh=ZUp$(pj3-MK%wjKiYNO1kO7~-1gJ5mhk%`KWUu^K;Mm6q#%g# zmgZIxFNF~_5Ea%2Y@We|;eq6`vw55yk{WaC-fEQ`foF2n3{*Y$pE3gX9t z4H-@B@CLJWSzqODPrusJvw{nx*g0ZW{}p_Y)`l-?zeCI?*qkqafIoNVigp?}M}zOc ztpT3<`st_|{sqqy>a|>|*cX)4)}HO2kFJwSZ=1O^3W{)+c1c?-21jRZ@ETprWnX9R56N%``SyB&b;Tw1;1_wEsmKa=m1 zsqp}_cNiAbVy7Vc9Jww1&A!YfgiHv_OC#ANZ z(ZRopof;}2Ak6<0SY2JLZ2l7qU*qW6AGY7~^#$$qNNUw{jJNqR?tu(nx2~m&1zOj^ zLIw3pwhU>PnJU?(mi;yOMt{xb7Ewm2L>xW8ZUgW1lB9Jq=ghgq*14K2sv1A6pDd>_ z;-5V1^&yc()@qZ1ucj_r&ARxdg6^Hf)T(o_Y^JT6qbay0^Yoy_sMhSVih`+}%3E7s zSI68-On6LMFZ%5}lk%ZhQdJkS1z}Y;xQresVFT4on@mQtKt?Q_s1SN&j!5Y4EJwAB zn_WbLC_C`p#AnxW{M<{8H<89Y*l}d0gcyfK@MwNbY}FpMIx0<)(W8;nnB}YLPWV^z zs0OC#MHLonE{eoGQ`_9Q9x55T=KD**9@$RlQo{@bSh0 z`P{eE0|GjsPzmlnt4H$M+pOYD>jwrAtBUKA%d3v2k|6O*v?<{?(_{kB4&x6P zrqa(h8XxSEjg8c1r>FR}uUFLj&`MZP&-{+&F&OVA!`V``yes;Rg;k8u8hAa|9%C1< zHuLMEewB@|q3$R988u}4mMHIzSH!E%V~$yt_6c;`W(fq86IaPc1kBO}cUR@i;-e`W4r>1qU&=GDPp+fJ z6I|bho(sfUdGFJ+B}So>WZ(#b-x7FYO^~!m4R1#HgV_>Ht5wKeL_i>#<2NM^B1l3U zNo)prC4Qxh@{mOqdiI2}Kr(ivX!Y{uW+Y9Hd5N?~+c9d>(KtcH?6|W?{-TPL%xol^ z-jv-m=|0Qc=#lHz=;}m?HjzOn=x`3Xr#{VF$l~wMEEtj8h7<7It#3*fC+``lyLW#j zscZzxe??G!d_wS8ot20O8#YwrW7M@JWXM~lP?KX_>XrdY}*rHby9o;M9&laDhQDvE3 zVI2p$uE_!C7cge0l6PZ~mi7xBbtJwO|KC0DW5%DF71|m+9YDW9eQC#Z-l}Q%-xU00 z>|zM9fu1N#czJK7cI1-a!dNkjRrKAbKF>{f?c4X}pxMJhBh1Ei@=Ou))09@3M(duH z{-z$240SnFiW1K!w@5IyvK+#c6X#k}yTXU{uDwq%oO7^17257YbO`3|@ZHMG6Pj~5 zjuDR#fyGBNuvBRA1ZMyx3F$FaP6%U@Xg`kRDYdqsY>sB(5L+ZCZYQd2!kqoCX#E$= z;!8|O4Nr;5OpD?Ie6=e=rrQznl=`C=;$>A_9_8Ll_OrhNRa)@Vkn{+PlJ7(tT)h#q z6mutloYLQ>u%e_^!OQ01Rrjrq%I@ybSuqs#{+1%4;G~*XPUtQH(}oHfMrq6LAQ9Hl zgy7NOkOx+CiPv+eQ?$jbk;5*iZs7TqyIwy{(Qbps?O=qk3D?@^WI;-}Tt=+S{pe@c zV7z80UBBa;xx+#jU#BMpT(RYBbF&u(QrL1^`hR|O%8VAnb090&x&hjEc{Ae+Z`@?g z2*k3SH}8zaWiLo7*W4ys*R|_~gt^ko3d7Th2Cbl3z9~eefo!hW?!DDtP})er+l0Sb z5;&LsXageFK+@Sqc@Z~6c2GogZzU;)))Jv|77Yq+7dE5GIB7BFs_aF<-Gw~m5k;?u zyTiIi&zYm$q9$=3qxsr$fj6+DjMgGvsD}5)ygQ64F;XCB0mh`y4~%S{!kQLjipo6h z52_~dcJCggqeRlE)s0X|=@il06zub~#-*;Y<}NGeP;>peanE#*7n z!5}OjJr;)#p%&_gayk>EVi4S1_dO&rf;p|CB+B*iRwK#@C~cxs`PVPh#Zu#4*c@>; z<~&&8&VExmfs^s#e6st;c0vXt>I-&*{&9%O#JC`zdL=kX(LP)B{~^IN)OSeiyNuTD z_hRT-)%}?1Y0-eu&JH7J>I=1kf2yaaK3Q6GJJyN3PF=fLBxh@*?1yZ>()99dT;{o+ z<@&2pI?k5@h?q2!Yad`i$%NT#c;>>pCtHTDVF1w*Q>a5wwL!9v1-v!V`?SmV z2B;EoYuxeBJi_mAR7=x4jq6}tv^tM=lS+3NsL!hFEo!;xgUiqS z6F2IxozcqQqmp0n3Q%xC@;x1~F>r+88n)y}^kK_JHF`^*E~P3T%3KPQ9$H?-mK%tq zvF<|!E&HEo!hey_e-$hIZ>h_{#@@x{|EE*|mrX=p1Plns>tDg%|4uLd*K`w-{|Tvj)Hm(^F;(ALjRxT;$x2xnVU-f`R>65(7?)tfMoU7FAsL+%xfBfWq#12% zkG>v}3qMD<--6ZQqB+Bsm|l*AqQzIa9oY zIf<-cM3UkYGlgo6qE^-Wb2$4^HF`09`l&K=&tp29Uv0CYOH@2pk08jQOlqjl29%?yiVq1t&>qUj*=9M+(Fk%*W*P6_5Ha~WW3d&WT73eMV2trGSSB+MGe`Yk+$cK*C9X+?4nFf*?dF~%3inwX0v*W? zS2JjjjvT)dx~lXhJ@{X?fGP4xh)_=d@3)iv*YI5oB<;fnSx~`dQLa>3GAi_N+IyuL zK%kBq*LFjT;8TWkn^D##y|)ETI1l$W>(@3d(#V(AWU^m?!% zt4P8S?#?h;)$a$v>`3ZQG_dOb;OHL~fSDb#2ezeAh%v7%MQE+#! z?)s~>=SmvH&F2}2!W60_yKNXCI1jx`9U-&6J62L|M5>M9oHjwHrXWy zZ?fqQ!p2WDs`G@mOk_|sy7EQ-IgX>_iYYt7}~+<9H}NrB{tAQKljbc?;?|i*$3XD2}a;x-FUNLzKi)NX3@J;7Pf6Bi&X|f~B}rL9y0e-bQ7f=xPxWP+Ed^+aa%|*$R^M0+$s@zL66XTG~R(Br|IGEpNNw6K0^RA zZS4FIfw`wj{sB0ev3jJ_K;z~kkc}U-d>?PB>-k{^-fNpgv=~w^rX4czV7V| z%J>=B=Na+8OB;!O5S2my8UFYK|h`@eH!|8Qp;=hl9+{kiK0M!pNQWJ$?} z@S||OQZU*Y@p{{Ac;h;HmIW))DPt^&Xd!N!_UChllrA!bs_WcHhY47YFYYP42 zar@!4=6Opr3stCCA;x!lO!DaC@S24BgA8aT)pSx2g+b*e-G`jX;{{AwnNd@T>ZqIa z;b+?dqq~7xq*X~%pcouHa>Ez8GsnlY2Q?S9qZ+;O!1bA=_QPZ5V_F$eR)dyHvAk=& z%K#TocZKTI2m*plv!kKbUh!5J4!C#TS?j;zbkHRBSb(;gAm>*YI;rR=OL?f&kR{aLIjD-Z5rZN<0voG$DP`Tm3-xsSHXr)JD z^35ke{P_VQ@DiqlTB2q1M}JNMN-z-mPDpz|qu`M=;^ZNXaW+y+>1SU1mXa8#wAf>&rlsLNd`4X%J!!)#h>-YV`0AnolV z>=4UX6bzvH!peT}R}F`SD9Qpi&=I7@ShNJj{riNF`lOIcGpEs)SFuzemFnrNV)@Kur*^ z2}&j6iBgdV#4KA?G$H{@>FI)jwoIzO1-*<6KP%AzkSbFCCQd5H+bxF2;BcG!OM-vJ z>Y_hWXWS-R{%O2V<03xCXftye3F5laMHU z=;-M_fJ&Xlh!3vie5fbD7f(D?)WnWoiO}{DiLm=q(JPpYGA5B|s8@4cQl7gB>I_Zk zmcgwv?H<|`j6R5tgHRYI*FOrnK@Zf1(F9ufF4J!H?$o#o8ix64DHC9o= zNe~b-T|w@}joN{l7$RJ2bH}R^~Y>F&g1)@0yNisacwrj~2#^ef? zZ!Fxr!Ov1B%}@1K6Dzb00$DWYw{e57Ku_VkGO`8}82Xg(Ams4x2}LF3SoHuhh*yk> zuBiZ1*1Z(yYWP>jc;hI*(4~X!Ow?<2{K=AXEmz0GBfb5c8H8DzW2dX$m>bTB0|G)%ns&^TLAi#;K8OSqp{mK^;$9DCc7thLaP0f!|=iQ%A3eB88tX8DC%4hY~A@txo`T?z3(f#LqT6`4~xh z=!z}s+*xP`PxWU#90Zv*>S&ZZRI9*kKBB%b?yu5#*>09;9P0-m>z);GuPpX%9`Mg) z685&y#C_I;^B8OtOkBVL2=_SNDa19Fu+Z82knY&8nhTh%mw$~PYapzThVyqj9_ev3 zWv?4OUpqZM$NGPlbo^{4iC>g6ag^43Lar-xkSyT@gf1eUP#db=0?d&?atK3oY%Kn4 zxsywQVmMtg*4Q%8&S`-Y76RO(_ZXXRV(4c~!*<|EKbu1u`EW4cpbjvRvV z1bnb_e&N!5Bd9vN!muuLvFYKxx#Yvxz=B?3u$3o<=r*xEP4?hIgFw52I?zlnAx3m; zchUwhB1xkv|30^*4{t=+d(x(A0e*6dSc8w49r(@ymG3vAu|n%t5S>9@R#JKCE)3+K z!XOUH#}m8HN^_XobUL$Xzr!OSfRUmBI9xz-0M9b5Rwdr?nyKlpNot-5KAvFV476)L zzQN9Q^M{?dK7X7t^xyx*ifgB0R=n9LO|OsoGLje>ov?b@r~Ko0`!~(Ye)-P_umc}8 z#)5G&rTCNQz!~ceDmG?*x#>2-*Zfp;e6#jS;y3(Alds9*;fEP+6(1P^H~x~?*K+!f z$W}vj%-%*RPpgdk%T4if**Hz?A>*`hl{+y|MV0~5Bo-vMZ%?LK%jihNAhMpXJi*M2 zjroYfI1AN`PD!)`W$$Iwe3xB{mnU#z^cL>X#}`)i2Su&RwmT3co+V$y%~km+HaBlQ z%)1?YET-R2`4BvAu8dl(PC{6(7NHf`Sc#eq>m{S_8ii$ zI~%!J?igZ4s*ET1q*3>aX1;Z^r!2FNY=QOP3_?Fgc{lA)_h(H9)wt)IjOzNqrcgoV z1+Mx>Ak6md#!lE4KG&}s0{A!cg8G%o151s?lIys?G^78*@KA-*i4QEeXkol^LR>Z# zvS7RjBtQ)T*txD3WF8KNVI=}tkPZ^48HQ>!}TFuJ-GPFJLfqpS#>L_^{}iyD09^kr!jc2*xfW92ep6 zxnbm%4x+Z?-U$}FR?2aDTRNBN*qC;dX6;U7#5VQJPLr835mcAH`yqLVsP``b6T*!C zy_m4=<}(o7t~G**$Xm{OSrAm}s*>vWv$TD_;R+bQb6Kg+Xl?jzKw$b-lS{<;;Cq9^WFQE=`0 zW_X>Axb@7ij6s8vQk%V0iJ$8G{C?#Gw$G6N`|hv<#OL?>tX-u1=-9QLdk`ypID@;^i0tO01}ia&x{+TDn;F@^R(-oVj>fhEPHII z?Bo8rlS{~R3(?@HbLi*7A4G5>hj0Nb;K^p#-gsT>y`+gIW}*reQaZ~pGMrsDfRyv2 z2vm!~lc21FUup_0r!k=KS&y)={j)ck(So8{&Vy7PaG+~aGNJIE2BymRI38{=@hbH7 zt}{T9Yq^PctKRAgX+}H1ees80*0nmkLA3NZ6#;5DCG)QMb*A~@5}{B{2|Q+w8_qd3 z*Gp6p=~t;aJ&ch4cFs~T2gq-rYE z9yOD0$eiMZ{A;p=xXxUkQo}2Hckr|d`|M=z+LBGuDgPV8knF>UIFo)d@{tlU&HZVK zY$i*|SjDGaia7oj+WG{#8;&W9d>}<*n>}A=Vk%`r&0ceJyXrF*rM-cdFRh9Et?*Pl zX_x#B`e|6Tg|Qx*#pki6lRJ`l_*i!nUz3l+Q}`Y4{!#!ZzLQ6@)@!$6_Z#GY=Plth z1&s;+TEwq~|37{J2YVYMr~e30xYu!;Blkai!)b!Z4>iT)T=D@TX8n!HOM)mRahn@R zVB1l;Qddf3%`&;AV4n5-V)>OUT}OV2yxZ&Y3#`P3`7Jy=2LFbPSy$B&8{nnuLb8HL z%(d<0IBsc_nueWBWlXW=6S< zVz#+zYTeyM<2ZnkSD?>N=3QJg-2yC+2U>592vaH>svVqNK(FefpS_zrGEQt-*M! zNGBcsJcHN5x^vb#3HrejZ_+F&Ql@D}hC9S@+A3%$qB-oAU!NR#hKPATA(J=9XCY#_ zVkAupIz?K}DoJ5i&h>@9AkJLWR=?Eez7x@m8n=2S4uFn*EK zVziddisZ;Z=OEg8VEha^DdO>a8r3mhjwrodX*n7Po=JrRn}Vc8vrXM<0NW15fdm*) zkXMsx-NIrMfk}c>tM<_$(h_k*LA95C^vrb#eC!rWS4@7mw3bV5` z)=v1bD)^7NeR_Gj%f9dfNt=y&x=nj+f%ESY^OoUEC$SZXUZr7}Ja|Hga3aKkp42bJ z>AS{qys+bQN;a3ws!46c@{qFyBO+;#J;Mk8OMT{rOzI+%rnUTT3P$vjkOKe{!WRU> zOaL3hYC~fDLBZgnGz=xTVx}i%E6(gZXc+Z&JQgQpE!nsqiZvfV?dQx{rMWZFILg95 zoUsD(t({;doLdzz>OkwW!H^UVhxHoUdiuZmIt$=7y6f$mnVB($7-MEq%*@Qp%nUKa z7&9|7TQS7U%#1NZ%rV2~xBa(i-S(44qtT4cPj|JttFw2{^Bj?^Or)FbR(*l2-t{bL z$3soqG}Can@Q0?Ik2u?=9Y!S)a6Ve$1yu#P5IDC_dE*N^#(w|;&j;db; zH*UE0Dco?}Ybha>ZhkIF7_5BSP3p?QHOAQ(Z2!(M3=FO_8W0r%Pd^F4WcO1=U_-z| zn);1?WE7PXRTj%&&<^h$cKnZR+_23HV;ZK{TsreK zxMu_z81Fa(M+d#D+;O`OwOH42bi|6Il~#q}p>vg^KC3-8xD~C&KOs$GRY(=IUicAn zYv^};TW{PTGji@1*<{d{H4+63iW^h@3^Ot@rOf0`nN>O^JR(NV|tv&c&_il&mU zaP+0&7`K4(G3`0lc)0vnuRl6KiEwt)d6?K8LAR6N4Su-m936j23Cp3efNj-8Fq$#9_vYcjhRp3%l z2MPCON}s~dQk|2uiaf+{YUyutPzp|KpvkaKM4^yUn9|UI&OzrM2HRB{BEmO8TBtGG zU%P<$&|lDk3fcMfK3g`doK+|@UX{4(6kfP{$5fDpGB4-eVj_@W4ydlvR?3@g4AJg6 ziK9zT>~2FM48@8ql1}GG#MVaQ4jtMiDmrpT!&C#4?=}d$*U>LIiCS?(vmF;RCtM|O z(1qhv25>NkV+~l%8-G%)oCx_ddL*?^)_;3kD+SZLdQ94QHYX8&c`|7et;If(8ee2H z=f0ch01r*({74GKV*0Q|)(}WJz#09_H}K`j;ozdz>Z=Y!Jx`1@TSL4&B(T;mI^ zv5eF6cGRZ<6o4zbIdTQy2andVoZ-EO#hMz0L2)f3WL|!I#i`$IzB4={mbVEb0 zu0C=;lRq7v67w@RNZ`h&Va=R_Ngw$;05&jxGgviJS*_}Zr3baJDODA^gii5BLT$!i zJzXH3^R(1L{IK}&0~bq06XEIBU;I&Ne(K~GV#)R1_b@?y;nh}tE7{{?4)O#6z#}w5 zDz!Oikb-oCk-2ESp^fO{EowHV*>#IsQwQ=Se|wZFChfF*44@A7hMR2BIm5#Y=s<@z ze<-PO>S216p*vwrXdY%`R9(A6HqAB-D~(O4+>REPCkjv8O65AO9`4cq$%S+F9Kw>4-x;Tus^rGbm7z%eBz}e# zLKIl&cG9`M3my(1=5R04x=Q*rv0ePH7gI(K=4%QlO&|YA_?#UsEdks^ zTv2_@w)@FQ?h011@svMsxTk)s=|-fiey3$hEyRb?SCLoC!IAA_ghAON6vv0-ig7u+ zs6b0`XN+CLC;AONLZ=qPdkGink|v#nAa+j8R!?{A0=_gDB&=z-F0L8}H(P*)8bDv8 z`LdDBw@AP(CSbqs%sb{*nOzdZLY`dcg6wR?tsVKi*r7^68v(r&E)(mXRz zgb^^$r^QglXSijDXK~?s8#_V>Kn?hE1LSHPhahnR1#7Yn%V*R1pMVwT5T~XPg*nx? zDl+2p#-P<52_gqVR!>g5eSat3bJN1hqfOkEhg=P6fKjSD?IWCtP0&Kb3DpcdxB;djM8SZAo_J< zGxlFlU!2km%EZ?CsJxgY(3Kw!)@H_XEUc=!+qTsBj+Z6?B3?%2FMn(<2TeW2^zb<=NT*{W(_ zyjRH~7H+JX^1V%Oo10YA46^V;myg6%zdF|s0}tv-_Kh>R6Lrc31DJGXz?f+4#Ko^; z`Bd_c$sKi_dtyjpA@Fv9rc3+&=3xct8(pH(DIyQ|jV@N}o>%azqj>`^3$O6H@>1P& zMt2M+5*b=9W-{y}or{sfut9-{6$ja~uTG90XuJ8XdBWOm-FFwypImp^3xCbwY0f0z zaTe#3>Tz_W&_PMpblt6onq99WIj-NscE19DNx|RwyT-6TY+1h`EuI>j1=X=9<1)9X zs|}L#O*dx}dFvo3okV;_&bXz)nQr~mG3d{Xd^a$*tMMf1yR=`2<$&DR)i{>_sA4db znu7S;U+lA&iRwLSB5Wl=ZUg=>lP`kNaYWRBeoTBQM|@j-#?@Lj@hh{x9UGm*FSued zG0w0^djjk!Sm9J>x7^UE=*1mRMM>;!et1YL29O-I97fPqmXD%Hhro%0ky;kBRIqg7 z+kRwcGy`4MnY?As*HJ`jKQ3dqnS8ufKF{@YOB*a})0p|L)=X*rG0J$wp(x@E)m6jH z#^RTu78nEF!HTc(LROuQ+oOLd?$fa>H75Q9T?Dm!VA;(wwtu18=@O}Tg{IFQ_8HLQ zOm#-KQlNhL@zewxk5m<{W>@U#1mt=nMneiIlcJ73j4cvF21s$;F8n-M2Wt=4f+^>Q z4pj+Dyn{??@TPG7TH{kM&uki*FS17rEVO3(UQ~m0v=o#1?NQ-b;ZYNHy->G*=C@pc z<<;CCg;V2}W6AzvBhZ=0i9Wbvhx*oURqB~t>&ElqN6Wn9z;?$kiw9|+m*_b{6?Xj& zV6+SQ%~w}8f;h15*z*CoSKS>m8>CmpYi2*Y=N~tXimfyb2pzYGGwlzycP`UJYU`#e zu60q(O_`Rj-l;b}jv_t5-VA@mtLU(cjl_>^c~YS=ja97KH?uRiEjQL~5cW^`B!&fw@GsZQ(`bYB`vs&7Ov1j(d` zQe~;z;@<)8AI5h2|M1!mFOLi^(#t+QJS5tXAm8f_dw@4OqDHtWD(p_)m}~{RmDptX%?6dD z70Q~)u`u0~YvE(y&n?~i!>G#zN5oRP`ZsQcJgB`;9hVcaZs2~y zB+BW27y7Wk8|shCi?)c$frR+eysD%weGQ-GRflK~?hqwQOc-Q^i;Q&w#WRsXuEbW_H!q4rEt1NfAlbh}gTnHAP)f_*(8OOK z(JEm5Yo8oUE}hjzq`R*%IqPFC3|T5SqYaOr1-|tnxQ!LQe2Q7kEzjOBt^TC;IbNE! zY+8ZsnicaCct|JkE+rDlk7%Mr0WiOv{H>iUzwm|XIy`jeW+7By6h+sXEJ^$Nx>^=? zbG==;mNwqTN(n;g1ZpQrvRN-rN;_h8ONlUNZCCDm35tqkj&sC`67?+ZA|J$3cL&W- zg}>^BRoVG?DEyF-vx&^t%Ch(#wyhXvG(}jU+aEVl`xK#rm* zoAMQ(Ij@`D&RZ*NQD9Z;1fbH?ed8j;)@#(3U!XC7?&R0JIjj8&k-+y?*DYdA>_LCzgVt!>#e<9I#mVupD`Xit!>(1#r?QeS&v zfsrf{`xHZbdJpVSqt6v0=jCyxJ)S8A+dCrlFO|lHgXg5y5{Qx#v|LvI_L_1t&kCn z-{6#QK#-2tF>DH-OLC6YEMWymr_V0&WQkI%q!yXRGnC2(c}Ey2vDbWp-v!OaHrjTq zwKTaB>@O+Nck244)++FU@cyQjDM2%QR*%pg!<0qGZ%2W4YZ?Z0?1^`ssOOQc#x*sZ z`lsS5<^?ml)QG@h&SmeDvq4|q)?TIeIHTR(-ElhCxa`KbU*c2>RpsR*}p zhzZR!x~&jZ;_7OVv~ZbH^2Tf^Si2HWtqTU`-%RSHf>ko$GIu@Ne0_z}L$Gc~ND0Z| zlN8;4oBEE&K8p!X`*8$pry?`<0%KnDhx^0CZkzWDG>0U^-P){js7PyqCPlezq7u}Q zO%62Jt9d2bLqb~D6^HU|O4LZo+aKLw@T4pd=qjzq6@{xov+<~0VM@4JLl!H04!Cdf z5H=uJ@vNcNvy_G?VF?l$@Fn>DcV>k1m+2CVW=eGv<4A+(@BL&?jK4njS;iFAd zH{nPrT-D_-y%r)ToN8Dak0M1h@d-$iGWSHg<^#;cfBE!cC1Fga$m-iGj3?$LEkeEz zUXun%qwGPyCK@_ra*K9S+Ffr!Hfkw}>Z`Ih5u$*oORpwH^ZSrX#}_{OSH#h2d`3E57H?9&B5F(p=%xk)(& zG>jJVhQE=NXVIKb?XxZf=-UM|me=4Nx85x2kLSQmpm_LNkjEbZR~=Rx^G(#5)Xa*< zEuxBB6Vvn(jR@Kl(;erw$ka-^N>%iuDIxxlKy!I z&K0d+G)FEm`<$&CI!eIjAQQd{*%x770Q6u=w?4LL7Rw1Ws(n z{fh8m2hyjmEXnl23hpz~+{@iI*RwO-V`4IFM{kjed0d!5p7Lnzj6BNS$rd1iLVF;V zII(g8(J*rk>~X}-7^k{OjUAGP4>P|vGgB269y5Ga!W*;989!c*roI)2ycVDf@zOJo z$78?GbDj9>+fsg{g(~MZJFAO)w+FUtgk{dO-L7i1<5qWHInhaM1-!sf@wi9Sxx!i% z7Tgtv5k|+(W%cQZZL{d^@uk^Y?p=Z_<2AtYJm-+%mh^I_B&sSk%RqoJob|vhR*qEvmS6{3bk7I*ZHHw) zeQx_#bp3g`;{}{;2OI>yXJr4#w=>=$AHnIbKjpb9F!9SU`qn4xIfX-s2yFX)U+8M6 zA@dF^O?&RBH$G;4KR#wV@exk1Qnomv_#8<_V}&}%Xaxu19SMdT@WSF7`nRX+m-#;l?`Cs6^r*-=;h zavyr7G(fjR8k?zRr_3WGrD-1V zTs>5MDM$E>W(x1gPWnqSFbC8=5bY3#)^;CYa$QHai6~6Hq>|R%Kurv$Dk8HjW2~5{ z5h%gl6z5rC@LG!X74naZVexLS+}u1E@BYEVxp%NT6uiSY5xrTJ0mg_go)z`0;Z^V-aTP z0J{lk*ClPtzg^^8_jh^Y+Ky$_8#5u_K_%m>-?GV)9<3TEc5+Ef8xqTw8rL7`rZ0K7 z?vlmu8l;KunbquK%N5!sig~(Z9<$-3G0gS_c*HIDEAB@oI-XW1Z^%rJBUI=Fl4!>8sFiiSgw1y@D*?j(8ukxNxTZHWpD<1RZ~O;-H2w7bMTDPU$B> zKlu)WE~N+Gm1hQ{j5y(p8tpC52LEVk^o|V+GNvs>i9;?4#t|Rt$gfz8G<9G$#W2k^ z?!rbwBw^&hkg#pq+o$mTIMqo!2n_11mwLRR(c|&xtjvlKO^GpxA}2C4$*Zw!T$RI) zppJbsyu{WTpr73KE!Lx%JIvyr`G9oS!M1$xvyWsniF3+YbN}{c;QUemS6H^=B_rnR zijZXT%e$*^fU;^5)wk4L?d|b@mCOGng;x_75s`+U5SJO7Lj1dbbG_oHS(Z&lxiKkv zNxC7%I>kY8I*IYYp;0MlNt{&h-N4H$DQCV27jVf4MJML?3Jl3`Nu_20+Ds(|98HwV z)#a6<3;GpJ^E=Ns)vtt1SZ~h9dvBs&%Kv#rVQpb#V(Vn$#3(KCSwvPzBvJ9rdGga= z>fcDtT1D!bF!+qsUK{#CiJDA$K2!8$P0OD&4sMOFS-8NFq)@?(BU97%g;8y@^DP-q zbJ_Ud)kfD8I-^nn{;1Ox{?6kYDBF!SUui*vu3)NzlOVo3BfC(LE_ObnVOLwY{8js_sFeCw{4fYL2XMh?) z0CpOI_(C^mjljhwP-O|7!*;z|s zLDIcm1q;n)f{;^$1KBv3KsZTo476tu*BCXw)$*}c0kZu{O*QG{PWuD;kh5A&zy<_Q%igCS5QIQ`Z6>VS>n8UWHYBXSa+)t;g4OpNKZYxR zON*0dSB$`4O`M%2nP|X|&Twgv<^ibC@mDjje@%yI2FY5Ji1V@NU$gRPj>pkx33OUz zxgq@bbMcB>hSdzXm*TmhN>Nj7sH8;+!7ok zYkj%V8$FiDoDxX8_cXNlY`%hxdRyRtIgq2~i`ho{qMdd_Q?!o|b-|2`5&y3-JX{lEqQ?llj;+WjQ${Ujv+j>T!V?8twL?8qCBz+Z!mOGx z_%Z;Wk!GWKgqVK=O^=;(yV`)JGlfehjv!O@-ee)uQ8MJQ+)_t19C>L-L$=9G8!Vbr zF|4q$ixAGUW`FT>kfF7Ar+GA~ULR`WoFm|sM%F(A(%EIpnnv_-AL zc1J0mrb%rjW~Febx~jEIS zwpq70C#TI$%RcfQCnpuV-kSfjw!40rwUmI}z9uxKtY(h{UxXL=*#ytZh{lCFx4zc! z$@h7FRnsBt8rx!K9eWOTL^SraJTEJcT~Ez@a%$%dfhKXb6$dtJ)vOSXk=rEcOFWkveHot$^G3oAx+EaUf4yEzq)UOm>^} zAECb_%gnc*eJ~@p%^15)?iUNhRZmAjoJ-gDVS2kx6h76LtV7+`E+w`UpZ!6ON1yIO z*ZG`409UL>4>mr(UYhh>Dr zb6fMk24LaYXFm){4R+Cv8EP}0<&2om2OGfThzM;4yI;cF%>3J}AmFd3cij`-2fy!p@b^#pRdN`;+&W_wxQfm}2t(!2Cn({~q#J&_DLoUt+j_+zJBP>HZG+XT9G4 zXHUJC#{Hq(yr=xTQ11P3-s@ccfE=0L4d;*Qu>4&d(ivT`wvJ!^M8Tf uC*tp!?~{%{%+xn8gSVgaf7#H#ry%lDkZ+cwARy>(cj~vJ3WLF4ul^t9QEZ9; diff --git a/dist/nt2py-0.5.3.tar.gz b/dist/nt2py-0.5.3.tar.gz deleted file mode 100644 index b8477a02652802b46f1c034605499114db33a022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22573 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 diff --git a/dist/nt2py-0.6.0-py3-none-any.whl b/dist/nt2py-0.6.0-py3-none-any.whl deleted file mode 100644 index 04d80fce61f5a38b26b0695b99955721a33524ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28547 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�MC(h(P}nZD=^FZztEt{% za%{KJECDB~^Y8XZ6xjzvKbtLvyM&b#gWLhpM(z`QlP5R5%LbCH2I0(l?kG37S(phLBfMP==Fsd)mHEtb$^E($Wl zH)2gx^=6qd8QbL5YHIzQc!y$!arOP=*}1s)hKgkzd$Kf}+9N+-Xf~O3X{K(}m%ZZD zcY>;PBQ^R4M^F$iDX5e^ZJPr9rc{#a*=yYc^ubjJa^M>J1q$sGybulgidQ2`f zKeu5exKCCsxoeGRN@rY13Nh%c-DsGlBFpS8I#~ZccNqqN3MH``OFWBRlenuE7jba6 z4maDiYR#5C!?L{s>z%NF0#`dV;%@y%kMdmBBpRxa%{PW|&(o#t(?FPNw)RdZIkGqt z`6Mh(bBGrvZfJNl9D^xIzk_yeLd|MP#=HQugV|YU`=sZL2UNq*v$#U>sE&u=>?W(e z+BI8!qeOa3bo@*CPq+7fvy6Ywd2bp2ha>r)oPQ$U zBLCil-g^fB0mY*HM}z+9ApD;4-eK<#rS$E;{M~8&tKZ&x(0k9PKOlXg{{a1QfO?M! zc;|5P2h;lIjr^`X|3BC2uhi9l9C<$EjDLsxGpzRi@#}t{$ohw(^PckWX|33vq( zAJ7u(yXO4KQF{-09~}G#lFa`O@{dsA_lWlarhgDgg6|Oj2seF?c)!8*PXwrj!ru`8 z#}NM?+g5Vagi)x5oW_h$Acc X;cXxU0)qPX(0}_s`t(K-j+@iwFP!rp^)q|LwioV%x~ED7v2c71;2snDmekNm=$p3B4m*vPUbntS!lz znZxi<5DAhPfdCAE5@|*I@qEMil>HU!{L-nazMvZyUToQ!NyubmvM<%u)!kLq)z#I0 z(he7mruEEf?z}rVIevX~eqp)(e>~);37= zClhnu=$h7!*{fIXE8E5KZ?^s;=i|(coT=j{v6ak|ZzTWQu--H4zy18#^X>Zo7N0B6 zu?LeEoo80tYF4g-YX^Sp!gScJT+Li>_@dK-oVFDPanh;`psbSwffv8%>{)wOyE1U1 z#2vXWI_+kA&uUq_P-tRDv6D3XAe!2q`^kwA;!_K9Ja=&YqVofk`vHCgvtbAco`d-< z%n!UE8aN62-GtwM63n7-fmrNffyKZ>a80Y#hMz+_zUD0>_9H0Hk$Y%bXaN#GRG`UgceH4@NdvI~ zJc0UNFt|oa03864cXo6=3~qe{^1L$TzeJ5)S!NcV+argiw4q#r*aA)rN5Ew|q&khz zn~hyR7Ic^nXOTy}f*<~D%J66d9-%$Bw#P)2HkJ%+AIP5O`i_T4Vn0JWvZpMki9eDd z>mgQ3CTt}5$c3)w1-FphqJc(i#x%-%_-ipB3bXG3D5mCjEvhNh(EcO{uGzp)xnvUf z4IsNSOI#1J_#@B&r!8fE5;GKj+_<0mgJ3$18J(V1P8Yu%ynBm_0I7y-(1{c3<1ThG zcIVhk3ugq*uTNrBk|6T!VSp8}m&wQB6sO*^=g>?N1vgG(;Ms8u>%)m+j=(NX;^u~Ss)ES`NZZ9M|U=8Ox-~gG}tP@sR2U;L%K`&0T#E;mE#YBA;60n z*;Kx?^DN(;KX4l>9eV`h zfo;?cXxD&&cmzqFlfYlY02y$KqnM#GX2Du8gvIIl6Ua+Al>3_6jO#0lwSYPDcDhE7fBXJ>Xmn)Y z9xMSp-EurfCWK8_1C=uVNU`ZnauM@0#(C ze;Czbg4Sw;mxN=;Y0Ex&8I{Xb_yc}=@;mlZ1uV08$M4xc0Qzr?0un{fjgyPuAW0xu z^igI`?a-(K%}zjF*q2n3>I2XDlT5#{y%}Z@ovrWgc!7IS;=ZO3$A&gBH)h4z&~ki% z!=I<3nAZk@EE+mHI_y0DdvkZU+x*jRYno=fIXgN!NweBY*2}jaj?$c`O3ukEk**{< zbK)Q8KOVh(+YuuEQ#`3Wwo>UVe0$bF46PF~&XFz3#|_>Kla;-K(nHYGV5mqH-JtA&!nCV#3! z$WDtSl@L4)N%R}DtE>AzYYakgcC~XGMAsuPxQ%zh*%d75iM9Bm1HV=0KYO|JpS||; zXWRYXHyM9o#-}7&4QA_eDwV+BH@e|0p7bh}UxTZ7zry(VaG!QD(aet%pzP+pukVa$pdM#GrJPP|Vm78Rz!#2H)%v*a%~yRrnwfXy_Cf+2a}zQLxY<=i;1 zEnw0DHdKh-W8)8hFmM2q_$Me-8 z&i(`6clv$TcawhK3K!qZ{{xnL_WWnJ-P*4IZ}I8(aYqKLpx;Lm4ow8JQW-_T)PVV5 zp)Fcih7R$&9n-&RiFk4q*wHX8CK9MD|FJbM|1Q?Q9L)!004wEx&i|{u*V@~z|8Mc3 z1FCeDGBG!FMurds)!6Ysnm&1QeQQVKxRwe+;sAIAYYk!B7r9q6P{{=oc;&eutt+xH zLb3V-N(Dy4va1qmMYbC`B+sc?r7^X>CCVt(23`<5ODnMwyvkp~CSttMqqYMO) z?6b(%0HtmABPWddlVs}km(}C#tEFp|-|qTP?1z;7Ypnlg&F6dB^Pj!ucKv^oj}+tR zYhk-SCbb6SR$`j$NbCv!A8BCw#^*p3Fc|xKXTv@% zG8mSlATlO_hYkd2STb(mhhxOJk0ZgIa zNq{>+Q3d-SIkxOSb=Np_M)u5u$rBqF(af<@SvHOw=X#@t-cSwCNr32#-q=nYA~6TH zXAA<^PP#sBqqT-#+g_};jMBD`qAP~xhwdOLY5rh1bXl^&1)b}#c0tl#8{L!l7sm0s z)3-^rmzJU905#pQ4{Kuxt>4xS zSUbk8>v>Qm3T_SCH=HPf0RkW+Vm}7AM8p>Kw4UpJ8IRISrWB25Fb%56KX8KK>BfW2B2c4LxU{))DA>$X(r4_u45D6h|%- zQ&7GH6)wS0c8nd+BY@X%F-auVBnOU&rNKWQ8Elw{)gd4SbQPHk*^6r_S7mcu?=d^s znWBRMF{DA@`U4jjGo9MgIU(oE0d?o&%=Qx(Wu8J4F;R^DGEsT$EYPf*QdBT@puy#6 zG!32cWkxir9Fq~9lRqt{fAnO5XGeTdSseXMnK`LQ)se|iHe&mR>HT`Msp`bVy-paG2xJlHTGQ~U zscGM--lL)Fq6ErgcaT%;B*6|#z-5R-1d6TG*=^RDJ3$A&u*GJgg4%~te0}WZx8g=>3h0=j zk07BZurZG*sa4M|NwEw~+jpnR;ulkoTNzWzv7U1B05|EThcN04w#H6UHD$lVw_1v_ z+3XLMQ(iAn>M3=mhTSx}1x1^dQ^CFLjI z12_H8=3TzZV}{UUz_)fkw2Df|;e$etVE`Z3?lt-h_HWeRo_jTKKYOYdiAJlttjr4N zLQC)X$n}6t;KekU&2trax4D1QW8UAL#q8#3yBXF)d)OH`u2*$$ciOcl?S1xRLO(Rj z7ACIs0&L`@H2E^GF%MUg@yo_Q$}f{`0cirW8olg9MM?~6#J~n9C`A^aG+>svgc@WO znJ_V5u|oTQM>3g)Y5fWtzACR;V`C0<#9e1cStV99lcit@+96uV`h2aig_pok(^qa| za7P@F#iR_G`#K$?nHBkbEdhfuy6^wmQzl+ki0RTPUmJUj5bF7sWfCk=KwJIkL{Y9u zCJ|Gq#`P#oYa_i#Q{JSyLrPhp%wr}DChNG#1dR>BNZKu8`hhlVbjRY>h_yssnfc^E zv6)QlL>L!B2ZukCy?h?3vQJL!d*(D z@ov%dfNsGu)p~)Ja)a`q3rKuso1rPes}9*&6uW6k240u~B}5VCsulDws;R++<_R~# z$Ic+|Q+o$=v;o1}%AV)Y2?=r!z{E=JRanYKU*j84ChaSr z2G(DpWug1KGNJJ&w#-&>%$IHHkU$T7h8kYUS7x$k6%}2zQTm!Hz7@sj#zAuiYXdX% zST8c;zlkC@g-*CBu~cnN(9-?HCW;tbzP>rHK%9Uj;d;KryV5Fzp&N&uy+Gq^6pT?w z8dr9-wu+~)zCNN3tkd?#PPNr+)z>0M5>7 zs1=a+?X7SjCUEE_YMFp5b7L>K!s9t81-tHZSYoNwTS=@YF0drd$Ca&D5-s#y5=b)U zt5;-y6pXi;=o_&7W-Bepghnm1D+gf&SdH83^x9QQxAye6mK?ZzV91%&VBKYl1oNT7s)7cv{5V<)6jx%pnlDK=~xuv_Jguc z;agRd=DCkZuOcQn44l}1oIn>~$=CT-%5W2jL4X5qVOfjH#MSJ81~J_d8oH6l9dt%vP=q>toyzmEAWr_g|rl1ihYERTB zVs^O}g1TRgAC{Bug{5JMRCznl>ein6d$<3RAIt+gfUWfZZa&TWe?4z)@Be?3Pu`)4 z`2>}@7gYJboO7YRwq5oALhChlHM9QTPoM5>?|=QX$6tQ^(h0EQ{I9*+ z%HIEZ`n&6etCL_ON%GFhMXPzm= zs&vOK_U|q6);+Z&G*zYEx@ei8-JaqX&59lf582eUVb z`_-=Ssr?H6wCniNK8zpjf%KIwG>C3AJ}fwI?#S?hTvah^#_TR=utnoqN*x7=2vArA zMdlUOiznGSuOz8q4Bery^$de4%uAy>a6GRufZ6My=j$H~XE=uasengb=;W4bC|p9v zhk2?~85Jd?N*sx~hLHsk+f&@qZE~TthoUj!8AUx->Tu+hHhJZD%)>or@xyKO8|Ze` zo-1wRAu}w64ilWloowKKsmLM^#6BNzVV9ya zHWfqWrQ1%?3IIIV zz%%_!3H1yVI`dB9c9=X0X8zEu6fVfF>5nHSu0xk!TvP#bEs73oPu@&|IEmR|dkHMh zUIep*!0A3mCI$8~T>??>^ed%e-MBIb=&X=-p;SN2v6Ku39mD(xdWxyf%jHO$SfP?@!i^7| ztJ%0(+Xxoxhzg9nu-9dSIRX}0_j8k+^Ia+81nSFf&FYi^H5j%cSa zB-@!B)+GFrgBWe0qtMB$a7P5M~o~h8h>oA zDAVpND+27?mATFi69b9 zK*I^ zRz^E1qENMzcB&Ua0S?UBc0()*nh!T@SMNI?u{C>NFp$+HgS;UHXvkM#@-90ss`;s+ zx66G#^sqA3RncfN<&FKa^Q%`%m>IN!kJFppMinjNjVmC}u%@0hEI%~iA&Ro@$C_QA zb1&h0EY8i+rgPWC8B{U{AZ*Q@7ax?^-nw{g75o%|F-w5z0{MM4WZJE2va_=+vkby4K3^Rpd z`KTZoi%HuO%>D2GW9B!b=?O-Un?#dI5tMM^B8>m<|5*!0SO}w4ievkW@!S0p?Cy&O zcatNSFEXJQm>8I*(G>?BJ!#p`X(Rc496N|JM`k^TPe}lt2R()XvWW_AoH=aC??xFz z>lncI6K7a0KBLKRc?%C|B>gmI*;%rcOiye|PmM-3c926%dL$e{;^GZtC4c*J`H9cE zr#^U(JH;yNTK+&2hhjIeliPImsI)BD{}x*7OU(bIEXTt7rt{A35))aEha;)hYTf;P z*vsb!v{8OuqvOz9GU+9LUDMq~9_+U1Z_Dg;mo?C<{3dt?9U|wpB~{j|JTF+b{5OE8 z&JQ|E&4f7Rnn(xsX+jmM>eEKdRh;DdQ8`}6Q4IRox!uL)=p(!b(YMya=X}d zXJnobR-Rd2N)WiS#tAG^$p0m1#z8QjVi^{?MarYttkrBh*5Q8h?}5J#uoBb=l=D-`jlrpy2Dv@ zxpjQd=Or_Trc0{OQCU$neulQZsy#2Mil=ES`h#)%JbS>N0q>9&v2?v`qGGs-GtI^$ zTw^h%%5okzb&o3GF9E~cTspLvmCo zu<_&_*!q3)yYDZ1okA-;SIo!`Xf1emhJ7R3K;6J+Tb(O=aGiT(BOkg~GkF)s3&vux z`^gDL{n0eR`}MG?n~g^9ykovJYk6YKe3!1BS534T{1yMa!#{8E&jtQD#Xm>*=l?Qm zg<7+H6=O>^Ka6A zM_RwgsKFXULa;-V{cObSw8Y57N9>p-WsZ-_-6_MU;zXfb9Es8WDv&bN(mwa==PWD5 zyxRmZMK%ohwh|r{TnAQbe>JdlZ(82r+#sy(a*)^_aRkIOWeh4*pYHGJunKHzxe+v+ zX_zdqR*ntwGjP@K_mEkY6xZLxw32=EKw)%j~J9n*Jgd`Qb&CnQiYNSDEEW=vc2)&S)A zyrq?$xA*}=w_0PiTY;CBqXTLaptcUET?$Ce(NTJ2*ux<#_(5W$wpCf*H&*(^o{7rE zs&y554bl#l1G??Oa$_p;R>fg%$Q$8T__2WP6<>EhV-+%pQ`hWh@Ts_5{ zqgQC$oKI&yyC%KYa&Mrm^k2)>SkHqkeJD+!v%cS2`cPiMMRZKSU<1(toy;U~-d7G^ zl3-mgH3?^ZKeeK#gVuCaDwszIOk`$tZD84 zmb}(9#MW?J`^@>I`mV`IrIU5ZUV|BmQwc~hI@D#Bxq_b}nRAn{KgD&Ma5-nr@e_JoQ=260izO^BkIN7SE1c9FS$$bAT*v z1N)w{bjLI`SZ0amSUTgnaZf$B-GIKE9Mi^~l2gmnX4+ZSZPo3k7!W)9#KW1+k`v70 zx@Bj?CG(~jNZ}E&24U$b@oEH?wq9`ZD-^$_C%UCplx3%-YoC-ZXC0q^5}KZZu3)q! zXP~7I-lt0bvXf0&>MI{^>YZEbcr&|K*`6_O&ln%{j8QDZZ>yjxY-%! z(qqXrTg*3tuUZr>f#u3a?rd7sLkdo)^HQ>K)Q#?4eBaB>k$erT!(Klr7?NH$d+3`d zuI&5w9V6cXb`JY_$GPxzg9F@jVWelc#Yec?a1IY?|K|^Ze|Z3iRqwy+Zs2cl z+g*U!hz ztVFO~t1PoauPlnTytEYTx?qFb@8^n%6|+{+cpZoo6SJV)Z^|UjC&_0S#N#h9h>L}@ z${sEdTwx7Y!EIy=*D7vm3)ffwXPCm()_*IO@H-W$HLT#DHHB0gxSU5CIaiv%1%E5K zF6#wjl4rujj6HV1UtJYVS)!DwUyPQWTKl4}q{51uzP~Bkct#~C9;VS_G)3R7(_h?N zKHk_uPLo%RRbC-^Agl_Zh~ckS*0EaFAH>w3CAx0u*VaJJ(7%dQ5|->(8Pv6eLhX#egznb-2Lu#e*JbxA-Ch@Y90A40*f7hyRt?ygw`$JjZabo2!_z3l9^$j0c zfB6L;zDfL|8$JT5FE*MBQ6q8R%>4Zb_vbgyX~jDIsfk#{Ij+Hemnbb*{gp=hF~)6;;T~@Ge!=ANXDeaygnr_ zEe13nTrVwgAQ~LfH-QL`#mb)@EDVBL9eBbNh@udtFsNL?px@75$5S(<>_PF0;Yd-y z^5*c`+B6Cj$Q(MBQ^6PC$x@pEPNh~--wK3c;yFd+smF2qkYd?ZhoV(puxduMy~jJ2 z?ldN?w#wXl(?sZn$?bJfj9uNx zKi-4_yekuW72YASAwdfivkPT@l7viurUFTQ%8L%%L9fg_g+59joD^FF1@9swr3(dM zYWf55xK#RZrB-|#1+$R9McIv$W#R6MA$Q&0O5i{+zA5fi%Arwd4(knmuL1eZ556h>va9A$OQ3rJ9!!@N!Tu4+Z4 zwJ7TGfy0}YHEq7g67+x<8wn~^%dU7~(&j03^qA;)_Vj9K8^B4h{@mhje#}0E8x6C@ zA!WeO&zib7Ho|yXz{nPDzYEapi9aC~e zRyLiPQT7?0Ed3tX?js&)MCHG^fROB<4qsvH<@hY0ePq~5gb_ZSMWtNJ9WCc5IXf^e z8-1miKbxzUNx^RYk)b~j$~u`VHXr1!^vE@~zbwQQ%z&89fw|k=@70zWjuaZqU1MJ` zy^;B|j5w(=AmSo(ce%}|)T&gB3KwMqU6L`Xu&}K8diNz%WpAzKX-Q$QO6fT=?*{jM zysA@9) za{ZzD+O^>N7(Il^5gGCpp9!X6j?0vIO1@?~ye6!<&;g0e&G&g1d|o7(g@ir&T7Zb+ z#q;sdmKJ9r&J;XW?kDOMGCeEcr~unL_PFU>p+LH$DBBfC|4vDRFWE5g*sCl(@rC0FyYp%5BhJ{O0 zp_9<%=+`<&hHKAqYFf;29hT-pu#)U6Y2IbJY;#L;L2|av(d2QB{9Y=J#4!t&w&q{Z zH;M5;$?Lw341?I0D*J#goejDwzs+}nY5`Q{R?>y~ap<{86_U{Ty9ip(_}xTME<%xqJ zLW6J06e$%A^GceZ26>mF`ghGd)vk+0r>ts(0op>lS1VbrM4z&Xt&*Aw73EhT7FCkx zJjTwB(cW^~f9Emcr1zCba*ESbM*m}lSb)En*}Rl4pb>=LToAxCbBD?ks)`}U9$Z&d z>SOdaH}0r!zoOx|(>3wAcN0LXt{oUwRgF~4WBO)-awNJ9B(KGC%J{q!g+fJy>Re>)+RH%0wUb_KdTM7L)3FPDiK@vl02rMJhM)?P)oj6reqY3aAvLox$ss-SAEqT6mnt@hGdP^6{nnpH(B zO$VizgJrlF8jjT9bqb;jm2kE-xEtN4c`_dqrZPiHNsc`) zjnAXBp+e5WQ=t^I(ccK`luv}PuwW_kt1C-lWfA%8M{$wg7k}PzW66z`ed$Wwrj#oz z+FqrGqnybz9IIb6)VsYnojkD=<24PoMKoaO`7@>bblk?C3Mo@d?ub<5e|x zwVFl4VlMvq9a*F18XfsW9a#hQlzN+Vx~+D)$bgMks3i=xH4qopQXM;cfpx25qlz7$ ztfOP+uk7ZiC$8=apYY!*HRU~IE_33eE8i?@pI^BxJE>Y51qMgrfF1&ZT$S7fXCt7S*`WGR?FBi+UgLqyzDMYyU|>>c?y-?lfy?HW$BQ_(l`8_yh>E_M3&DyOtXh{_Y&jnUlb9C01Hlz*lAjN?b2{^4J7U}$pFE^Ed`5&PXhwu&>a?tu z`Vu0rTmF?|6m{` ztilT#h-CieXWpm!9X^@}sNT3k$8bO~b|M57L@Azx#g)&73hprC_H#T#X*>t6_ z^M|_F2&>vB0xU;IFG)z11XRo5s&4ObAEQg>pAODWj!)j~Ls8KWqBMo>L7S@+xxtVH zjj9`==it3v+PI7s258})J8%<^X4xfSj%M-4l75f(4a>6X#^X#ESo-~?S+M6FI@6#Z zan=anC>B`Si3wsL!e!_>oXFGrNQh*1zd;sdlCp+%i6g=QmaQ9VZLV>6ncdup;Q$(vIMb zZ2hpOOhN0tHfykXzU|=P)Rm363?$CHNE*04Bt}2f$ORF`6j*Xmj(+vo#n|PI)_&2; zmw0Lx7w`aLz1Ca!+deG5L)1kgHLX@jRHrV^f~reiFLgutQTnpO3Mv(cLLliOnrI9!8JA`vuK9V}*62)odz`V{wa{ zdR)KCD%KR+GBlZ%U5K)n#mg#y+A9FT6hv%QcCCFWq)Q$ZD!USR1( zLFpwdM?AE98hDFw;O7@&m6T9&+H1CX51A1Iu*2qhHS3~mjist6pKmRb#VpNNK!%b} zHd5*8+fb>q zK9x!+B&hSsjRx6=nsFIsy(EcN*|V!cItcC*1q<7|0-Zif5_*l9;tN*_=&_eQ?E0-3 zmrD2lBJ|BykN?zu`uu6${?mH8-T!}!&&nwMdMu(esz2fI7pb`C(8z~VviUkR?$gy72KXrpWif(%vd&7qUSUDpJ7>bBAd7xE+&2#IJ;X?;_IoL-IA_ugD zVa+lQosm8B5@8Kckj3#a_Ib>{lGZ=O&d|7>00mNu&g0v)cG?A zOZqAvMd0P3&sZJzX!Q6oGEc;#I$Q=UNl`={f)0M*Cy)NnD!EorZ zWDEv$3$hcC8qdfJfE{RiiI|sa_wGQwb@z>SvuWHb%_=K#dAoltY|OC-6M~_)b#GeqZ+A5>?LV6)zewSMTcPf$2=m0Ov z7Bs$q%eI^~82_MyVaN8%SOfYQqzeQlljINVWL5@3tsxgfC2EJvY6_O7{w|xDDDP8% z6rd<}xj03{Lvn`3QX6ogb-_GkRz+bNwi#495-wyqGH1h}51onpg zT1fzMRty_h5@ei+kXoLLEhW0R(_o~_wj{cE%B0F7c#9=ooUg3K`YPf`2mGv3ktYC& zar{#+xB;Bl9Z8&gK4R37W022h(a_1kjv3(O;|WCUq*g1u>7=gS`r5CGsG+u(4S3og zq&P_k|TGGoZ)QXq&EpIQ<+6`G*-05i429fOfeEFt7K>4f`lk&O(0)V#;2b* zS!0lJsKN>WZ{Rlu9j?o7uc5~I>o;z>~Cpk3eeA ze5Qz{H!fp_SK5%zrG7^l9}&t~GnR^iMK6M2Rb@gH1um4AqhfS)B|?|IH!~`Y=S03Q zv=kK&`&yYtvIyM_`+@}@&Q3hdYe+oR!bN$d? zl*#5}fmO@*B*-YJ+Tzq_o(^9rX48JrP(#SO`PjJV?wNIn;`P+Ky+x5(c`-5lyL09u zm;P?6&yD!7P!Z={8Vy$Y&w!lO+G9p5JcPlOXbl|KtBOwU7`w`#`gkss0rFx^7^+5w z#&5Jp?`DQ-T&(VZc1#|Zf>~Q(5LQh{HS4G}XD*Sr7>PgCw5tVEpAaZ{utTEvgwyPa z=;;%q+9Jzj8@j~OYW0;ckYoiaLxI2#-46U$B$Ugv6NRc{92ddKtE^Slfx2-^hWw6( zxKgnX>#&b+1LU|siDbwVu2pctluzPJoLn?JW4uzHFLUb-lSx0q6O6di1v!Yf9qFh> z;$CM*H$}&AvZu{fnetL_G|4AwT1LCwq%W52sawhWV=!W5;^kegDpc;ea%z2V{Msvg zYbc8#4rg(xUzJh_vsQRBMs3mfvtVJBa-lJ}vZF8VS?jmfvjR5y6$fy22i7CTZ*Ks< zdCwH>kYWZ+T_2BY>Gred(Ze(#HGD-sWF^!KspMPq4|ZR_mkU;E9+~?EJ52Lsaq@o^ zC!Z82U*wYSb>C=jD5JhfT|%FzHx#n-hJ_NT7VZ|i0H$X_xoS;u+^R1t3%s?wZ0_kt zsKYP2nny4H>*T`BtCiC!pvP$6WyK4x>Orwm!$vxK0s{6p?f)j1-STis@82Qarc(;j zhi%o$1JWYZpk%AZ@mUq!l|~rK-XP@|MwXj6)7&jXAPg2Ndx(LK0TntxcW!QqsEcJ_ zDK!nDrsHs#r8gkav5vY7x*P&7zoW>fpRDj1*BozHaGVB$S~_I8QBOl)Fw>&EBEG>Y z8cc1xykp+DpxL;wSun%3%S9(eZ*&PDu0L`jKQJ@9tpYGd%fQ5r8&BQA8em>71M@O^ z`DP6m|FsOpAP77l?$rF+E5Ce#=Xl+8`em0}Uz73r4p6#JpXgLpqPb2OycOJcQx3cd z7tV9y%qss4uIsF=7%lhxblK+Jb#VfMjKqHmA~fBwxYaj>!IsP$7Q^}`A8<*J)Jn}0 z#nG^)A(g+o?hOUL=%<^S1`8jolXi`?S{*@@Tq4&oxqI?NM+Tn+S6b|*KzsLv@U9}q zzRs>#(+^-BQ=r?lxja5fCfijLt!wL)1FGxK)~&W}u;qCYB*#-w!tk8O848mr)*(u> zqaW_T!R|ArrHzG?SgS)1ctdpM$KHQ(!;FolPD+1axK6PmNiVkN9lSb#sxlclL80#O zr<29Y>r`4bZLrvGRjh{!IGY7}pf^Ma5nv_A2(4L=vX8JpA@m!r&J%ZVO(*!q+_SG7 zkKbKbq(5r;nhSIjw6JQQTnnqUa;*}WA#~IOs^hg8445}|lK#MRr`4P)$d-Gjgs%u@ z(5jShnpP!C_&&~8H9BwV(d3Lq{V=%AJ>w`@9O^>A2(1<>JZaJk zm<0@6N7bOvdv0K(Q#bV2tQF3GF$|e@2uvr1)hSlQg)=33WumF1#faYFbw4@70^d2=JkYNrX}kI@ z>&+&@`C?i=7nbnbwB9NfTQ2*{r`nRKA>4|WZRq}Gr-2wXq`U1wjpBv1YLc+4B-Mg5 z-vk5jnWXLJ5AnapcZpe`63GIk)9T1Hy5If%?}H)ChF0_czH7)r_uuu*TAAG$MV>E& zZ7SsoL~QoRpg@(vDPsI5vzg~|f2CaXxy@x4Pfu4?K>Jb&y#M66SyX=|ujhi$MJ1%C znWxC*;sPj$sgUl9S88#QXDAKDP}VShMd3z2HbZc}3c>kC2=b=bsCHWV8IKjuLUz|_ zWa2s19UT*@R|@HVlnGL)LpPMN@7)57%4hrkGQYV8@cvzS|F_-R%fA1*yZ5ZU_5b~* z{=e({^U}=t%5J=@KKb?J{AP_OVv|?oY=WL)JR;vR@38!t^#%7^#fJ=rfx}EJ6Z-~T zzR1D0*wbW{H%VoEk1z3Xd4WF{cb)0vTxT?Am(rSfw<)aSQ>C&d={UT;B)eU3wjmGI zp#ftDTPSe5k_XH39Qj$@cq)&HGrCV}rkfnlg;4rt@)Tdl?yy zB@^5d_E{9)s_HB-oAw9c3{^ID`m&wB$jsf8UeoWb#OH09zuPijw~hVW1pXcIB^$W6 z*afb(eR=(N6#pYcbJDkv|4%{M7s&r@{FiU}{=4dKNGd_H2+_A$yvFV?DwR#I3bC+a zhc3({=iG+vF+R?o5!%A7n>(Q!w$Ec!1?cfM_V7jlR)tM9HE)9yMtJZK-VC{#;ijIu ziJ#iYGjZ}(6hC(1%I+ryxT!dYp(OVP3HYiNbDOFy{rV{D6+}s zfH2V)GYgmXh}_}|4*c0E9|?>XNVz0@x>1xhC^bpeC^M?HH8Zp!@W)B8y<4#uv+6FiwLX zRx%cf+^uWgbX`FUFXUr*yn1QnOidohqFvW;|K4aLm_}<2K-CuXkw_pfgJ*eB%y&t&%(V*E zlT>k+eI#Se(uZ0A@WRSjMR&7tX)ITnJ(IO6fR zCN4e2cgaTdGCz5(%%Cs7J}20zkvQ-LC!VtTA2SAdAp+ok9T?kHQr8=_Fu zWJ1|QXr^FbrbT7xf*{PoKwQIQH-aTnml2HdEWXsGkGS}n@?lO{c1ac1>m~59OS~{> znEsA-4A#LYG~e|BT|*Q^V@sbHT5~r7b~HQm1*p+e>XBj-ZsRhE@`6C zJi8>?UD|UpFI=j3B+*(_dUHCpB4zK``aFa>C#=pvxY{%)j=7Tc6Ei zZH@v3=-T%NcR1-xSpGViQ`332A`@P`cwr1<&aG3PY`&xz7%xd=a;|!33dGEPIh&yn z%GG_4s~9tbrYZbtTh04g@s-YXt!Q{>ROK*gs6W2s3;iPV_CCIpHE49HlYr#KqUtiS z9u~zuT8tWKtz$|NnS?lrK#{igbSsk_cD;fmdR-DdXa7p8c4VP~JEm$!I!3q4aH+%U z>v3+3tRuINW7yPs`NLPOUCGlvyX6Aqx1{a0-d{C8l&vh7zo6cUU)o`eU=hN|nx<4o z=%fOgh}NAVt0ehtsCGbmZq`$KW5(T8G$0)^skNNJSTOFA`)OFIyI(h&=qT05B$dEg ztbogvGG1{l=PDqXVM1##kVB^KT-k$b`lU&CR#xp+5dMTQKK7NI z<5wl@*T=K%I@y{y*_>?Ku1R;AaB|Jb=44Mi+4kg`Y`c^F%zFNV->bdW^_&LYU!AYesv$mTX5%Hi-j?UTSj$|{zmwT0M3>gOgnVr37~HHyeve`9Vg{FC2ibx^=sWdDn=Iku=Z9G441kqftfwbuDOxS=D5nd&*luI> z(5fgEAS3VKn?fyR!bh)^B@FbOe2qfz&dn0Mf%|@=i_9mpJ!N@+hlj`%06=uu>*x}^ zn7{s+kqcvx0);~tD@#Q=8;8@5U^!ipUW@T2)0fMVppk4AmDO_9D@#2!{0L_wcpK@q zC9#P3(>jJk3y$XReKb%lU*B`!=a-Pbl(hYIxCoC%!_r}F+EHLvDgMmYE{lt0-XZJM zNA{!Ca3fLX682xE!s!2YOytU?<|#b?ePCT?B10>MKE-dIdiUz@x1d#!W{=v!NLl9K zD^Nm+H%31s>|E&-{LEffC1mlJF9l}*%Vo1gtb-lEQbPO{CviRw81b8s}k^ z!ku4(AjRlPLC~LgTL)CLvH_&D&096RW(t4QRYt*u{SG01jU!*W+j(ruY+{;_y!4XU zk@m;gQy?Ioan+0Zxmm#Gd^V(JE+$xP3-I-`F`Hc7SuXq(<&0WLW+C-3^@M{CQ@Dut zT!0Fdtp!3O%A2P%G7Exx+a*oKlTIw8D&kaD(N(|Qy>x!F+(4Q1s7bf{C$`5_rt&R6K z9^q*D8XUXy0E?Cf6(tmEtxmx-3e$+Lgh_*f@LV2tDoUtWCNvfddrAfZUZVYN>;+-{ zBC5izS_p`274U zWHOZu*=qcPKu({TmSi`5!P8@KGboF=w?M>bRz3`^B*Mn)jmiM_@)H#If*f%lF+SNxxSJoMsP2BQ$*_ zy#k`qK{Z^nUd{b7Z4j?jA}`L#qgahjFG%RJ#=L{$8xp2c$LmxHp#|w!S9>U-tYrVP z<|>G^iBoi}Sah7k=q9R$ct^?rGH`uPH%yh_QD zBr_0q7fUD4^hZP2gD>gX9) zTv}SU`ScEkO)$&;%u$ z*UxE*W~(N&|BPVL{2M1gnvU689%aCZ5uiRxuau96QJTBWH%AMXSYe%SjP_wx@c47-iAIB znVOBvzI7D;(T?1h)D0OxOJWXj42M9(Zyo0xGUI>fN#x)Z^s)yUpgRb^Sdwb zj_E6H+*S1^Z=@DeYJoyai3%42i1r|R>#CK4cWl)LQUxEHsc)iT>FT7qc?om zQYsR5A^IsH@MyOBhDO>;dqb$mz9_uVlf%Qgr+A0ENhDaeQWO8n;@J6eV)m7wfxeK1 zW3|-TE#+Z9d1jufiv%lGZvpq{a9?sq`<)-pn)D8x$La+#qS@{^Jk4NSz=26u@n|--S%k;c-r+##Uw5Fpr^-ucCpIS{Jb1=@Yg+^UbJkw`@XLCjZ@2gf|EwQf zVu{Yt>tgyg*}gPt!3obr+D0A~U3u3tNB5vLC}`b)X0JKD!stOL`thvc1Gu!deu$B_t5=)Mk#4(T(6%)r)B)LK%XlCui;>g0iy1 zthwMc@oM;|lcT+6(dGUNxYUZ6irs@ZA0Upme8OLUF)_p3VNtAG7Na~pnFf~$rDBCb zuCy%B9_uvQ>Wgy6F9xAapzLvHxVgybA^o`w| z72Tprzk0e&DoS5ZJYm76-xHKm6asMO!n88iMrAtCOqgMLK&#xl&`w}n>{Q8h25Cm! zDI}eAl(qa#ZjqJDy(uAavIsnll!@|40U>DniYNh-y^wcqHScdKIh55mT@rTG z@G(?jECm4GZBXhY?u)3W@XRN`C#b8B6g|{VqD}2F^eO}f?b<8@;pwtb#0&VNuoPdH zerzFBI^PIqa;H``NT&WS`yQ@)PrBj>y3P+sV0c@hoA~^+hs>gaTQSvbkSr6m5o1j1 zlux^Gj+;-WK8yroGk|C9D3S`+@Edu20>o*kRtVUb z2Uu7>j@zQaRsPOzDF0%J0CmWtbm#~z1BZnwNsD zVie@kn--g5B1vd-N4a@&JEnqrP8T>*6A5B@_^%9R((asAYrDrrE<8%hd3nHSAP1fB zLz}{Y!szw~3jeM@aWHk{e8aTm&XtxCFWD<)DQ6a=)E6WE4|EloJ)VdcUNa^cuSW5b zylN%1DDue|CO;&g4)98@-;<^yUpY`M7y-lkiKLL0KL42R6f@I>;*Y-{9ZZ7TjqKO2 z=d!`7Yd|sLuO;7&(GXP0B-Jz-doW#DyIsu}64S9ZT^O;%h|t9O@bBrDl-ILei~C#f*-W_mJzw7u&wDSCv;-+191_j1 z@Ybc%PH+Ds022J{f4Tl;=J<8kX86})TW$$Z4#vlY3UJiU+qAPG z%z3a!Be~QGN?+*8$EhtT0jve=uuVCgghWEHA6HmI?lUvr&&TiGR3OOm>sZAo-L&ZI zj3^P{;2-d>gnr$mdDPLdOiHRDalq>@N}|@p!n|YpS8h;Av@ws~VLsb(h_gPCON_rg zyk|0oX6~kF!j9DD+qjDW7?MdV*ZR|oH>mYIkP_thA0Yv>6Ws2p@?iEZ=!50kbM?p<331o>}msJ&bLJ(8UUQg7DpBt#~ zyKd)yh?KU$ik&ECnaK!xWD7A~;4WRnz;xgs&l4{?G3q(~xqXTIVfoENl-Tq!ljZWn zWFa)@=YWjhsld}OHiJ@ej=i2f)(WLis#6uC4r<(bTxB;~9%-*g#1JX+MQHXYAQ!=U zAqG4oGBaz%#_5#yHC17P%QJj zVFunhOJsD=+)YHn>5K{7!&Kb`Cy_4>mJM(p9rKQKOKAfSj!$L$S=gT{d%(U+CxS`PDa8W#K{&Y%w^Ig_I_~w^e3Kh_#cdk zoIE!dfXEP;;OFk<^#&Oj`XR@GIaN@q-xm{_Y#LLPr#c-sH68nC`~Ogv5h%3$JhB`k zQi|Nav3tq7-^EDD^ExX4P`&)VLFSzzf!_YmLu{LW>t_|Zvu-|`ZZ40{7vryQw-0XC z_CTgciGN238J3qE?aq7oMff}T1Mhb(`ZC>KcFynKpA(@sD*w6b@%!QWc6mG#vQ!|m zcl`Yu1L5#fp=b@XS zND$55pV!Aox#RKY*_ADEv)s=ypVyC^^81~)au-r^BT}^iC>S~TmFxF|$XiS5)tj-Q z*_D;ZdC=Y?1JCiZs(2cByb8A5Pi`R~NYWS{rAzD;KA0Lk>gm6|GKzT0cQj;$6hU#E z9M~ZfW5yxo8FH*^$&(^C_q)T3o9v=w-EUEUeuP2hZ=TiBhfkkKQAxozL4rVDF|~BJ ze?=BbfVPcOuIwCtpff4y#|6>sVYvDEbo{e0RZ`c>tl54u^V!%ZxF~eM``eP|lk$OB z#OKs_Pz-Th>gU$r$7__N-(Fh8O5$KmHt!T4Tb9U%YIDlDITl0fRzFJzqYMA%l?m7V zc7rbdnz(iRp_)mk>Gh77qwKj#TMtn#uc1{^VF2H+W8&FfPAJ21$qal{N2Kdo}Aklc!S| zR6sbtS!-y#M8`r?r2yBX)~>vS3~(Fe8X+P$F$_lW21aO(m$r)f%zK$Ktys#O81XfrQmRjz z2Kq(AvnRTnk!zZvhU*%_e_yy)h$(#Rc{ufmP-7Mn%@d!J zIe93V`rfx>t1_#nO`}$ltwEykTApTJm-Xs9xge35W%b}8SrT3$2oXdyC}(A~VjXf~ z+4W|nOtw~=#WcL)-;{o4%kaW66mp;KT zEo=uR=b*G1yA>^cdO_5XV{wt`=5;<{PSQ zs!KU6%*QX-8+_~D;I#P*Q~Y_0h<@mgmG3ekhR_*6lz#`S*O;IA zj`8-1%csOO@z{ZFMo!S_lNlshP?4d7R1!#@snSKv1MpMtn#T`P+m9VgY zC8d-%+$l*-Vag(Bbt0*LmE9KMG!Gz%qgd(ptUP&3*s^EFz^h_XR>ESWN+)jm0{TJf zd7@Aa_mxOz!k92jwU3v~pW7&%L^q->|nYgj!SUb3~q#QKYp{XDTChZr|Iga`uQHuXi!a znp&SEAA=r}h(%_NIU+Ycyvx&#c=wB(oh#>m5@K>9na+7Jj~5pvLX~P$@o068?+?e|8oPmVeG>M$+MMjv512yyOWQx5 zN9NXhw6U020#ItkO-xk3qxX>$cQKZMV7GGn8&VEZ3HOXBzNTWZgF~HudJ-mDC=Zk+ zjP{Rsi6@GSp?=L0@I)`xkb+SgBs17r26GB1*(T0!RalaS)99#f{i?bxJG>Lsa&QOT zMg8cEKVE)w;H4KU80TCYVqBBS;{46-G#BojxkPgevP z#O88ZA^j00g`DHd80N&UKd2vDF=Y$o=j6I(Td8ck!Vm33oAZ^Gohm|*oxGUZ6@H84 zVrRKsdZ@jIQj?EpqEoAlK=41*;L!&TzwWj6{i|>JX{rYc-)Ki;8ME9aO$t_02y$^% zYmTFQkJWnZz3fAs$HOVmd_}jDio7}5RcEU77H~0@h|&|7Lo*~Wot6#V@*))}AWw|e z^63|_1OBA{{?`P31qKvU@%q^G6B=fq@9o~}Ey&}IcjS>IEM~}8X%)}8`aTWKlUS!^ zu`vN!|9G|x7>V(h5r@Sg{cEG6QMgr{Cl>pP?x;75yw$Zv29Q(DBRaAV&-4xJ#Q*G3 zcZ8|}dd^1A_9yyf&yx(id01b8Z0&Bw0;>!`5!Fy|*8vs-^K}FB7Z(Z*7pG1v+1D^W zTb^!ut7FSb`5#gQY?K7QoSe`#gl{UjDfrE)VLy*G--Ln2&3m`i78$08|Fu)wB&0{G z9bPjnDGFWA|0#y!pDR(vXN|hhV6VW>G*0%Yo8SN=1zzEZ+j9=F%_8n3-F#~()|+Gx zKO}wRQRi`c@;ylCQZ%qOa*I1a%-O7O)u%%Kh8hJmL1=w}<-J~hTm$A>$5 zk_%^@km5N+F57g9xuPx+G)?PNT8f68awWt?bHq!F zh8G_8Q@RgZ1-Iv{C-5S2pEI|5(Ld2O28?w4Hm~-b_DOCK+!-A47(Hb9UFdeua`8!J z96Ks?w)Pw(9Pshg<6}Osy(8fBJ=?#%c!YNszC35%gw9=bYCUSR?Ia7glQWEcKSSiO zc&pd0F)qHKa!v`7VXImz`3suN9~Ol^U7whZvX2Z)iH#n*@NjmuVB(!#Fm?zX z>lKWp>S3{JoHdHtF+QslPd9I2WlEf9xy95d_^P1FUsszfa`UB&do+-NB2x1qcFVRf zgo%k{y^7-Hwh-+2Zl-fiOsh5ny3D0|c`52@jrbD>Ymhy13~v3U$4g1}W*rmlgJVPT z*oAWX-|qenw*(rQ*9b5?fLoP2(miODbp0lolj*IEW%}fXWsZ3g<47bLQgMOgi46 zHMTHI{UNTHOq0Grflj1hcHal<+Fud;G;W-92wsFEHaPwILqfLWZ5dIp;Cb`5*Vy`? z(OoW3INq1oUPkUg%~^mHXJ@tME{PRm1Fxi5J@6>#M=Ez@bD>0IK3zS;HS;z{fe@E< zSA)P-unXlEnfq`fO^A|V+wR~Ds~0X!^YH_g&cW32=up0>Yh4h}=k$C}w>@cIXW*yv zyVzQF*|dTF=d^8g_2Xmt)ydiCf7l`E7U*@?DHQ|-+BA~18N zA_p>oOfj{22{>V{1vu8+j6+B7AVg0Dz=oII97!fV7eZ8it~dSk;GOdEn-bE=uuDBU zT6#?Tqa6r!rBCd+3*BYs;Un6qTm3S*EW6nxuui_ZrUQNyOZi(35xqL{**X+_$J%U# zcpe3Jy7Tl0#Cf~aq+^~`v+N}cXZ)=}YlhTqc0kOBBJXxnYiUJu_-Y4lcRKwJxKlBY zHdt2fLj9gm$}!I_SPDeL{<0J5#r|dU+rOzcJV;${xc~s1mK*&h_$;eHHZ48|vG)&p z2C3-H2H8vCz~$Cq3ci|I2N#o)Cg0SDLv61n=4_`7zUoo$!@8Y4FT#kCZV8?Auf%)u zW@@#Lwn@q<2suu&Qz0o|fQJQ61`dqlhY8V4*>c0BPShmn?)Jnqy1aSBVCKk**fNR3 zATfI*ac!vW$z(FM{#s5s1d_29wsk|o%WBlerSKnT{aydguW|1~=oCVG8+OFK&!eSJCy&**r1X+YQ_cWnOSPdsVU&91!+kdNfikiFv!v1H60zD zan8u$VJJF*I4~I%_@Tw-10{eUpaL3n0EK@oz>ZwWkq-m_pacp40OtQ*fUAq8jq~5x zW7Rh8w%8DSck3|jB%?R14hRGq&cH0X-E3KCVK#e?4zRYC$Bc?eL6f3vZC-lcQNPM& z6qan+C2PPVQOx1uXLKsIvRDghR|{5B8}Q^Tcp{AtHxh^4N}7K;9Ft#v3Tjc~3vzkX zCy$$`N}cXCKer5ns-dYbP#62Bt5N%=51qQO0d`U~Ui-%AO6T8wJHFXCz9XFwM5Pl= z>FbA_HzMUOV!v5jBramJc?Ngb`_OrMRo+1Da^qqfGnbZ*{t`cRqd`uA-W&N~OW19>hUAo3BkB34LVp6Cm|v1U|h+fzuzZv#Jk8$OV1{A|$3C z3kKyM=+a3&lQ?GRP|jBXCN4_`a3rkJVGe^{9K4D0dIuWViG3nf!gw5GiNRJf99w;Y zLrr#f7C3j%cV`nUyx zHrPzJmxJvcSt&hLU`M(H&Co)J;ifRQ&o;Lq$iWqE$psR1J6Q|N{TuO@qWT%TE~`iu zl%2<@9CLF#v`k|aMHSBLw!qq+bQb+q>9fOIYJ!R}?O40VQ)p=d$+*Ki|XwL#V$I zevlPU*29-pUQx5a9jGdE`tQhIRDus3#I}*hgb}B8q)>GCQbELm(-XJ$mR+!DIyl{Y z4wN$F4f(>0DSkRmgm>{D>IMg@DQMrs%~X?6z8eM*0P$dEUQ-(uvK82??!&5|LUMlE z&mx4c2|weTE4_5*Ud(fyl?7`NE1ukZI3^pn04*-7cS-a14Si{FE#;0DH?^65_n1!m zGkVRjhet1^y#LWuiqRN)1<%+i)Yl%AijfYz4!hf;8r8nCdzkh)Vu@kMl>G+&H)sB$ z1pw%u+usZMul)l$V;jr=H|&7_7c>P7f@skEef1yv_Yhk{OS}KUM``MbS=G5o*{Lbz zvH!_L2^xyM10W&Zd(X&@%2p{)QZcD4o&Uvo)bsj84JZHr>|f9S0q;NS`N#EN z^i8X4+i$X=_`TF|sNxZUMx~jaMKi-%H}E|c>IT4U3S)7^h-~VZC=p~1<(>Zgc9ys} zkmWOKWWoc~V?`XPuwcs!kxzzXB;7EYiT;qBzTzqCWyJV}%<&a^ z13wCX#Sp%CN$50FvUiYa}kQil+MT-iEYbD@m9IrI$)3m1LLfH}gBok~%8N ze^^cVVZds|2F9;Yn%U6f?pa$+k7*iht7uUhsw~jGHIbTa4!Y8O#y0RVXt}pld=KXUhHlM_)oYXA|Ss^*P_n6SAuI zs+@DX-TP<(@uSseSwjv+XXDTmj)P|heiqCf48y^Yw{uQ^evfHz;$a5xC?(Fv4Rb;k zjteBCw`DZD^V3nwqiz>2!>X>C;e9Lp&Imi9efTqKb=8fAW4?P60WJcFX$7d(ausrE z50hhjN)IAkc$GWX=@M+y?%jNR%#KLWZKf)+N(z*FFSrFuD^kxj3tg}F=J|U0AH0@l znrn+q%g-+9oWkGUE@YPHaEYrQbsZEZdo8M{g%|r;XbJBRdYDS{K*W~Tj*I?_FU_ToaKCoh; zEwZ5Be%{;c$nT`bC5@eP@84*$X{UEhy+O@h=ctnz&OL}&A={;P;bb)4Z1yYWZZ7Z2 za@3bU_`Omv<5Jn=;US;ydwg3bepczVf<*pz2I)c9pMX~_^oSAg9iK+t&{fFy!zXiH z1hOHOgYMx{u%=zcLCf*jD1h@Ke5^G;k31i+%S3aWjHfYw{ybrfwt}>tky1PtV>@D` zdbIvqDWsYZKX9xe=@{DWWz1yn?CDKx2F#>FAjoNCf%IX zO70R{2Y=m|=9*RWCes|Vy+2Kc60?jOTHQR_$Fkn#9r`r@XvMT|N5xv;(q=V5UBvkDdT zKLG)OJ=%^!d6Zj}s-(i2uBOa`c$|$f<$7YxZt&UFY0NQGW7O+)ziztgeL-F;uDq?R zKoC6N9jNyuh`Wa97 z|NoT+>px0kZ|CwC?50l6|2x4cauC@a1Ox!M{~Hfu|M!u`|8eq9Xspt2x5)t0^FbYv zgGBHYfD3Dav7$^bs(7Ua0%*J#3!u$Ja-2|zub<>((xuyWRusW9{(^_U;I%5;4KwmP z=p6i%c*}TozoEFug4FWxWdWJ(NZ4~oV0G5-{?BPi@9H`apYtqOqe*YX7< z?>fX2E8zLziYG@$ZQ{5Ey@GLx`YHXK!BEmAl=@)y%jPE*Lmm~x zynJCudsbo2sTU5Fg$%BK2?euX;;A2X?z6W?u(&y-n^)v+ ztF}BEl%1*-@*x2nC-rHV;Alrv{7fLo-ykh9Z0T;quJE5-9JH5i8%VHZse z(Vfnqy!kTPPB$eVxfx|1Z*K9g<*^VqEG}C=MsKvdE`gW2%f1sdl43S}BSTv-f!)`!2uXFhHw`M9q&NfKUL;j@OGdiX1FI)*2!N@1sA>tfEX?rMD)cKRwJ%lj&(G zF0ugyqObcdB&WPh%uU=f6F!5FtqJR}$=O8otllGwDf;C`BXmvICPw*HHCbaI{z39Z zDonFNnWUWFod(~l%+E(gT=@*`Na+S}5T!B0A|+B76&fVd#{R^QT=BGgdZlx!nT!uU zOoT~_d1XWked?f}Tve7ovNp@$lyflm{^}RQ89LAM8gMJZPL<_YZttHUuO8 z$T%yY)FV+Yv@;GlcVdIkcvPCEM1eiKeibmX8lhO$vi6@+l7I6=33XzIC1+CgZL*g1 z;DT%)<(E_do|mOI10uPHSlqLJ7JKOZiB(9~{ESi{OSZq2s^5qOAx|}gnNbr87f_~1 zP5&)E;I%m37VMWV;xSnZvtb?L3)@X^{V29gpa!dmeGh5?cVCXsQwK7tkw4y6*T(vl znbpfO7YC3wQ8$;z<1GdCr*tq!LA=?%^hGvfb^{@A2J<5cbyI1l`YC5Tn}&Y45d}l| zmU$TYzDlZvM#<3hK$ApGWc#68yT4PD+t1lE?02DKRk`q?$}t4z_TL$<+ZpW~<9{-O_ zJ?NJUA$xa5lZKdABuSQ3!_ek3%z3Sv@fsr8fPx}Y4!5Nv#4lw;f${W$jHAj=7$7oF zNwaPu=Azgd#yg;&{)G|KT^_F`9bRb$Cea57`af7bz~#$%T=l5f3~KQazQ8C{W0!Zq z9g)+$iY` zMn20SR$=2wZ%4u!M3K5wLgM`_7%q(1Pmb~-XknV&Ja4cxqC(C!(g;|cXvMK1Scz3R z6mr~v4`I@zaKWV=Uxcgl?DZq;M2ke<)|w|@5uWQ4*1m%TT*Tt^s;FgPlxfE*QC3+s zfc$sONX0ZZkD6qTbTFjtkt@PX0SC1hh_eWgR}k0OEC#yI8B!NNy*Afd#&Xx&op6I- zJnI%3UBJ^x@zItWeTmEwNNa$&jJK9hb&(4L&kBIgY`zHH43(gU7L>GHxC#8%fYD2Z z5V^CKL9*UQbIJq5bc_LEK*R0=<5T{#3$)`?-yu2Gw1iyJis6tUOdN=?J>!W6dz>X& z<2seqEBZ9mEx?0DGLLLGVWe{1>^*CnPZc-t#tqov+zH11D({3J+5TjI!}$@`S)-;Y z$5Tem0_n_xY$8MRCLp#hU+lhi3)_~^(*CqONvE9{PucWn_NB3uEp1M;TS`QoNRSfM zSsGa_@TRcgCD&nc3cCc}77CPz74qkvIsCgPZ69xmi9(RZ5~2rgkn(l_ye=MaVS;CjKgcBU7ZVeBrA9W{0iPn z2S?H~F1`w=2#I}uABnc$=RX@lB|OOm%)}d+V%Q->+AfmFrp9v8`g-cGK1=PvF1n~; z$jPd4j~dS^I*Kv+-iRS=Vys_667f}m+oUyhbJfuJ+CUfiWmogcpSWiF`Veq>Bl*Y4 z9oS&J$%Nr>LIqJOR=dzW=L#UPg={~AGer`fBtEx{7ggXy&v-0(1hHNE;)g(%HvYJ= zb%`UV$Sf+UB!A!_0`7zSPnjOzVWDO?$lL3}Bk-EtttC~bS_3_vTIKuWe?C_km|Q!=le(!^%AEW2t#8e}<$L{)KAkNTX6XHcbLv)m1sCY$ z5Z{O|vsF~{@~iq7%}=WiP_BMVcYbm$@PNs}Zx`I|6TF>*QJIV!lWg%=FiFA0A)%#?( zS)8}@pTzukez}r6Y!C;&-TlEG-G%?%5f*zpx-$H zN;H3yqTS2})rI7OP$iVYmv=V};fckf48B!JKgG6vb%@@h`!$teCFoy%y##dX$kK_4 zt6kEO=MJ`5Y@DgCM47qWy@__v*j>r6mspv(<}>wYvpN%wKqi}@WymC3sx)0P%bAyJ zWUNXS12q+BBohzV>ovhlZhur;ZwKJaw6%p8R_1usGp{vHhG*6r>>1GiUdE0iZ@5Xj za1&kSXH4>k7-`6YVxzLMx=I;={K60 zeESX~L{G*rP@&?H5~;=O7~a!0^kV?6odG9YKHGG){RUx2Eip32P)1yu5xXi9sAxKy z0$^jI7loXHEE+bs6tMUpxHF33k9M(7KDRqXn^gYXPR`%dO2EIHSqkg)V#YS<~mhb*epkJiqGcKGvE4<)PtSl z=ptUcePw9NsWv`3R9avudL=LJ1%%g4bk7yOdO9w8wNX^}fN)r3xVyOrfZAiDS}qY3FogE5E4Xb@jJ@Gw~3NNrQPJRTxwHE-nc+ND}LVVRYlhtWtXPiZLzkS*BOm+o$4_7WKaqm;#VP&eDzrq z;B2e{1Ov)Gv|Gw0>r0KLnQTP-;ysNAudEFV zniyqQqXQD;2;D8D=*Hsrh5dRc6Cd;nR(g=TLep9(tz$4t*9{i&;F^tBVHw#y*!t`p zYK-hzChz;RN30WPg~fXo{Jg{5Hy)&&@O_EJd0TZGcP8BO5Z>`Gi7)VfNAImYw44=x zvw4qyD=QfPJ$g5@G_^7Lr=n4+A!~oghR}1Vj&LI?g=@T642Ygxw%vN>)*un|Xn+A^ ztO#kS$t2-r?4J0ulSxRLlx9O-0oNch^V02Eq*P@#J>^GyNlvz!Er#i)dz(D8jjmHS z@ByhFb&I)rw^V!E*^(=jgao^CQa;{T37g)cu(8`p=eMu5)f}xS3aMA{No*5d)Yg1+ z+$yHliTXPAGQC0~*;w7aa+QptTDUkS%qEMW^EXnURxe_kipmPB@tn>FVV(_2ErIaF z)T8>1hKwLDaa+u`HFm6(aavYStr9Jy;zNHWMJSbanjs(;wgAgMt6Ua~#hksuB4KLN z)8T77WHw=9%jEXPoVFWwDI^9v-M(y~0t|zGm_w4g_tg{Y7hQETrU{tO6Hg9A1!qbt4u^3By!M%M8(p|f4z(#d@^0)U07vB3&{W zUrQ^*zzcZ>Vo%baP_6XXBB0IjhNgQvmgc;|u~3~6)oYOBKFS-j3*v zmMLJ8M{eD&dI^60W>V``~-r09pF_=al|-&>d#Vw zaHJ}m2_f(NM7AajA_$bDb0tX=bg)G7-h8O2)&!^oIfF%l)_f@h&Fjs9N6tzGV13mU zeaH&C3h1u48v(KKtRPGsg}dx$i<+K&SzX~DmV@-jsXZ2%V9S{eFuIsEBYEfa*z)D* z>(J_Q6Y&k=D!@s|tOdfvs??08*~b_JP$eh+COoYENuIptC(&0m$W|{Lm6}>EP_A2G_>+-`=QHHcP;3 zN&Ksa5Rn8KKUoPgVPc*?s)+#i=;gZo6H(=f_@nA~4PJTxE?u)aVPG$^Vruv;TvT*P zytL%qT~tV-!gu}Xw>P34-PU~TB!6?;|FOc-h>3PG*klh^SJfM1 zMZGx)Ix&GUSD=2rfI^l05PCU+99K>oNLfQ}%NraZ5{~Tq_~pL4AEm)Q%ujxYng@Q@ zDJpwC3l{@%M{*9E$tfISrz4L@sJBl!Ubt*YM^V?lE{DZ_V8sJ@$mi2#l=E4STRS;V zzwI1qu{+EBavLyyTAaB7A9lurhomT=V{Eot$wD|iMV?X-!p~#k2Qx~S&vand-JII@>w%Waj%1yLArV{ zY;S2<{jXuq;L!Epenm}I9J22c4>u?D$Sk-_2IGFphl-iVwO6@|_3-^KV%7no88~cy znkW@cYffj4A*Zb=WmElXeHfYm(mF1lKjKbx4TN?v3r#!Y=<4yfUiSm*nV`x`ejziT z4IrrIz^A*xNM_^y|E4>h#nRZu^nU_gI)0N4;rE9+0+%Fo zUH#d7KyVr4yTD?>G}w7R14ymt`p`rY(ZYBq^v}yoj6~#;^(rlWTBRpHA6)A4apJi% zX*6&0XjL_jkA*VXxKYAXPJU?9a#T!dBo>xM zR1L{Or26vRb4vNbM187`z8Z|Bm!#G{TAY3~n)&kyRJ2v7$)S2d0V#PBMniVH21RN$ zKJ^%;lp{4XVuB*@^K~BcNq&41!z4;Y)NLcEX}M9kX{P;hQQymbTE^9Qa!m5tf>IXZ zXhWz6rG%o_E4E!cr z>LS_WxKWoxmL}Xpg!I+Y;kqyFyaZuWv2%V1!@uvlnbg>QOQgxW^F#QShY4D*{jXGK z0gN5!4>e|!3I^cMaik0jf{wCgN zdRq3ca`(Ibq?_5DoXT>Rk z2aGsi!&@n#yJs@?Q%W2RaQoCVDNyP;)Vi8{m)Va2*No@!(<_;p!wf2^3PqB85cyR& zLUMkltduRp=~pXnl!j(8g;wa^h3_U7sS~MA{h0~;B#o6%e_~O2fpkzaYr7BYQ5`F6}DU4HBc{<%! zR*?m=i%YSKe8-On`(kj_e}sDTL-hwrUYy%x!!h>sO{b}A_(yb!iF;Rg-J6zS{!C?e z9y;hsQ#?3|m{M!1KNj9=J4gL;YX`t zOqi$#FU*ix{bJZ@RpBdZ|8$V~Zk_a>>MH2KH&lh492@6TtlEz5L=Y~_?FD;DI$gZ8 z6#Pp_#Z3;M{gxy6jto2Vk|F);)~7KHhZchz^gHzOV7q47{G|y%Hm@RSPCX2z&T8AX zV$nZ10L}u#K*fFy=!KM(u~n_}$5HKoTx69zO0-Ew+1OB|J5oZ;^@$k#QOqzk$U*dZ z?YfZc;r9o4>2iUZ4GeQ;Ittip?KAK^yjG4!sxPJ`05*lu9JmB`m-6d3gaMbxP9Npu z)*o1=gi#4lJXiZ;-(<=UzGhM+3>l4#I--^5cH(Uax!=6^B;e@60#2KsAm7fW%Oc4*{gl#77x7K;(l=rZ}U-EE1H_|ffEguf9E=aqi z8}P*zL+g+v^Lbb3wrKRnGcTAOz%=!o&K}S;N8(Z3drl6P^fx_+KP9W4wppfQeyv$u zR$676318`IBa}JFC9$=4-VnHD`MmSkAx;}vu@}I2(Di&@OlFCm_yhi1hyETc{;P-K zKc@@_8+#X*|3h6#eD*#`{BKPu2KN8aum2inXlG~dV(4ONZ}*RW^{D+vzv>6jsBKNP z*cyjdDxA&_Q^2B$#!L-4nnl({ER_h(b*aNXHn~f7(z+#~nz`1Fx;Y*kPm;wm&|e?tMr-2A|>4n zltyLoLr5n*wPB+C7%P8L^UIV|&QdEAwj0y_VkmhSjA)1Qo{z$8<)RS<1L$r!E zP(^+ZtqAn}LFsvGsv8lEMb)gGqC9L8#pH=#8Q~-csq<^ba-b1t-griH0LI<+dAt-Z z-KEnOpj($H#xcT<-iqS*RDQ=qLqO`qsphJWfs$bBHpF_v;vsjMKrAs?L4g*$)6bGF zG4H6B>PhHK{B`G>6TmE0HsI!FZr~|3`DbhFdL4blB8ouF!4uP1)mH(0BSvMt!oj!? zIe3J9Yo&zgc4Vl0v65>}U!aO;lruQ?0Y1$mF?aT~7vH`c(LoGYm2OWV5ou+qI=AxH zPq^L7kmW<>Fub6(@~wJ!{b9h&m&Qndi7FB{DdtZ8MNr-LY+i+I(J^~gsZ?dyUJDWs z$&)gY&NT9VTQ56kaV`6IXrcs3I#um>0}cT>aPCVwdPqd?(6iG-hAAy(GiQA!Kqr#+ zg?uK1U-GEu^y?D@HQ)ylSOwZCT@UXou38;N;`(wZ5o@x z23;85&00Gf9+sc?u{pyeo$mWzXZ zcq#dl-O|H$x@iJd|vrKdrmDR(3I@czMv2jL^$xMP4m3Z_Q z+Suy~!e?6GE%3u)=OhLEupvdmh!e%7=Y7RlY2oP*eJ(IkYci#e=dqR63fr2h#%mBQ zA3}uYg6URl`+Kc!EpntiMZ=Cq$VS*}N%_fRm)}~h!m%3YE1eh(exXiP^qij*o(-u+ z91*`iphC554pmWs7Lx|d%;U8|Uk6(-t$Rg(`DJgKDH{`;L7Gz3X#9*8hB;WotUU*M zBXaiz25#qqpLrKR?d??f5YIZgaGDG*`-3bz>K8QEQ`mmvrySIYpF;_;a`iH#I&6TC z#u>UOh7VTJcLoVh%SoYy*zXm8BPGQ+;%&~B{cay97LHg(zdOSJH@6UR=GC~s|F)d| z&5r!1w)tQDG4*h;cXIiQo?#8?e{v(gPt_5qqQ(N%?)f%?0cjCRbPFh2b(=T!7WxWF zCk%-bX(UM<+um+-F_q{y`|aeP`qRcdeVB95b+xyddYP4MGi_p9^K>h8N9a5k?_`PP ze8-P76zbSo};ey0=h8r~_^Hyh1t#^}iwe_8EKV|+wq=B93HYouzI*0eVQ zrGA#(r1&Y|b4)xA_-$b(hSt0+a0&!dqq}Xk2)$V&-H=x3H;8fhtFmW(ToyDR+{xxMsVuguH2H5$Q|;YsxLR_7(*)A6ZPwCubB^){|E_0yes|5n7lv5)3@3z75Ts*^NfDi_>@`plw#;fVe=+=9zM|7F;( zQR$;a4#?#Esiz`C#irhcaprm|dwQ<$(v9ra$Ig4w&1z4U!!$Hb!V`uI8uL+>ce`G7 z8|quX5PeX5J+y;YNjESXNY6HawmYT%ahT6x#>!uFh9)#A=B;4~`m#r~np)~mdy{3x z&WOaX_Bulq#t`m0&(Xjo_7pcbGfo(Jya4&kZO?Vz)3Q-E&P|7{aK+k@2usdfX5etW zuBqE5X0z%Wa;W$PEcbjTo7sSVEtxcTOPV>tVLg6^<;-tkh<3*p`QE>VKYSy&8FimAAGf^Wm)WU57R#*r7;^&q z=bnP$TfvCoCa|kmJTny75KH137)Ma$A^F*;C?t<>M+#u0azVPLPjrtw=&Cce0ZViz zptZ^xfdM(b=&G-0RtvQXqt6U}VHaszZ3mjwi`3}tJF%?{(fMa#awj z$+>QJ5Xg)IFA?-GdUX=!AXrSp>FWF%das(`4s3Xchcu=KWKvfE@LTg zB@7H4b8;pgcU| z7~mKJ3iz+8rBnma{TbK|P?#TvM4y)qa92+a{b{7XZoco!zzzh`8 zae4)V90Wud0(YXYIVN>st?cceMpq%4sRe>E_TMO`_9*wjc6PM8HQ1iyVzrJk z04sO_G>G*ht#ad-*XN@J32VToqyk7t=3uRe!Rg?f98-^A?TMGXSb9PiX-JJ$XYU|^ zgEB@ATtJejpC0IKf4fsW;sZ~ z#!f%`l?HR6nW=^$;mvPEDwjF7hZmT18YyP-=W#mG#V(J-cg?_!{+7PPSZL7L1(KTZ zFA~T^KsRG{2bW?nF&S&f0AuSaI8iXse@!%r1EEy_$lm>NLmKZ<%Q-8TI(N*u z1D`e!LBYM`57)xISo(hZNpENdB|bWo9IiW+VX(qq518g^$pb$WIG4)MrWi_abxc#7XmL+2^Aim%dA&tAl~DFSFq z+e9h15_xs`hU}y7t;}=6xrfJ`5aUkt>)(Dsl*SYR{5FsYQXjs*WFsAj@3b#kGiFG`>p{)yChWyskXFQD=cyda7=AxL68?RDf>uFg96$ zhhPyCiEHMZZ%@G>{~_yR6Z0Uo?M3HCa(9ooy_k@Wh{Hfz-9L$@=75C?5VK_|{cdQ_ zi*Xx@NjuugFl#%pE1z&d@+KgLNh67ReEK|^`o+P!KZONxI2Ey!z-_q%tn~x>Z?)Y> z`#97_000P+1pxS)u=*dJ&i|#hmUhk#rpEus?KO^W@@DJ(mmlav3G$!nVp7*X2CR=u zwbybGIkzMR4QskIZs=VF{6xcr zF{{~DVp3{HrcbITg^X)qtkZw-O#i;X4VS8M4`2h~~cn^bZh%rDGZ z^RsV{>%VvkpLA~|428a8A-Rplg-oEk14E(#VqNx0SQLL(O9yI5h>Gxr=naq{e)wrl)k z^A=UaBB0bcO>FohKk>w7s@Y;eK0fh@MiJRmmCXVDFl1qEv7+Vq37nm%nxtHs_$Med zbzWy~%%ZCs1XOcpYrzS&Lh)84UAz`A*-D$lM$bCoN9eN>6x8aJAJC8 z44F7q%+= zwHgz;v)Py?kN`N^_VBO(`DVyn9QgnXl=?wSXFK3cjXZsL=8;`^AQcBxhBuQu#uHL$ z)f;IX{C7b^lX<=OQEHA5Wd_OOxsh7K-g{Lo%9ESz8#IH~T2AVUv>o%>$&b+5Bsn0G z@3`5#Cib2m&RW9z9E(JnYMyypL#QvCqWR6WY&*kAffP=kRJ=8bVpW8uzjUF1enig=;DqvTvcwPl}N2>uyt3&!t{;@Y9D*7~%J-FJE^Rqb z7yY1@`u2y;0)2_N@Y}=&0QyfmO&&+i#-9al^#wq83+S@8!O!xFillveh>%~=y@A#O z%Djg&i`#XmNuQ)%tsO{3XAY@mm{+ki4MSTb{v@b*VzK};yKOditn-ca6`O_=aBDbt zh($l92wv-*2)XpF45U~?DU@%K@$J`*u+t6ddg!mX1jQYb+8DCSiA(qa{K%Y*07C5y z5(5bs`D&ri49c!QZ3+Xy0E9?@!;u5<5qAa?@*~Bt1$h1Kh!b^aWd>^KM*!%Jj4nl# zfDt^^bmG9*dP>{|gz7%tgE)GR6ISAp-f@Hpvyeq77#}hG*pV+FhB9|-jB}?UR?Pu2fP82QYR5PcYC9Tv;GVoMHK_jb zBE_3VotXmesYM}9LT^vDC^|p3CTQmSQST^0v5en4gCTsc!jpo$ssy7uAps%QY#4hO zXKpRpEEy03QMC{&B^GMTsN#?sYReHlas&Re=Mp|AF(7pW2{BD{uR3gj7o+E8Sp8&^Rf(iLhU3BKLmUZo#b_yK|V5+?p4nXLQPR7kz7@KvRv0_23XQLjWpsJoD|s>A%T!~85I6f#>dGWG7~5Ak`!sVKKWs)d z4A($LR?nn^xuzK)a8}|FRk6dJ)T&ycLdzScY$Ioz_*kI?I!EMYnUc4K;^fectTa3^tE{qY_syAe*-mf6$B`0i5E1t9JC7g0iGw*L!LT$(YB=%%ogkT6seM1=>Dd_NzI53F8ZF(?ov1PAPz#ST+!k%2n~lc&i< zGkgB_C+C~-m{P)O`r(b~mOMD?w3{~~K3El_vHw6RPVfYbsEYDc=*|{r3+ab?9f%Ac zBu-3S0xwr`yvTNpi(_{yGs&!`gHJNklq{LA84U27DKyZI&?2?}O575>29e<-6dRIZ zz}d7>NPTnSfyTDOkJ2}c<>O7vRyLQZ- z1qYZ2s}Z|b5m9m>{8~^ygpJ#w4F7xmx!1kfC1{z&mwmuc*do}EV0=%OezCW#dvkH_k#_Li*{J2Isdk$2y4s=NH-D=Ohh=6l2 zW2!*3Lv35VCPXM|;fJxasH-RDQ$Lyv8MA{@jyyu#3v^>JcesNNPP)!-ti)83_&Trh znb319G;@lruW@d{ETXL9l1!6K658eonO=NA7nl(`C%u!N>VR913&d`AVsKmI#9wXN zNzqm>9o*!xO({3=wmHP!#ghY(-5c?)vNCA%CbY7&f#V%!r?7*;p=4sG9n4K3CNs+3 z59rS)>CY#tV$SXrh@EUY$~%DC#ILkYyJevwfk4*t1K=F155o;vvxd-{gGpFuD}OuY zDOv_I-aGD3JA`e`G-QG;OdCPA=Zft|MQ{nPIjhL|z*i?$X} z`ox4*#DUyWumt4LSb58f3>q2%x`f9iqq4F=#UR22bTkCJ98@>~xVv&?J0XPmh>aIA z=ym8Ojh6Qwv!I*t+Mz{kz=z7!dfft09Xwb`pbE$d)FUp=k}!Ymw22@o)H!M#DDpTk`BZ0a`{h zxG4RBG6|7fM|;ir@brSJiiL4`k1>FT4lq!D-^B5DNCpnt*&4~4`#5EADkQ%L3&;Z6 zmqL^x8`2Apf5!l=nmG_MIrZOwMP+9IGW;YXmQm|y-{N~!td5f!N;f(1-_ScGfRE(v zPpVu16JMFJ8pCRfWHxbJDDa^$A2GaO8^FdgrYZd}CY7h736k}_convqRR}SbX2sI; zG$PGWRf|3G)Uw?* zEUtbf@KeQodD1C3=T!Xy4GVkpB+&z$%9Mak_7vx(R{7g2zg=yKqHaf3Kd=F}7#a(- z9{EY^iAia-coYY70(v<%@Z6NNCZqj$4W8?+7R6KJmbvCK_Uzqxd$G;Xey&9W&VM3G z>q%D69VTos51d1K3xWV|iuV4OCunmks(MKmv{$IRApWZR$BoS4H%jaW_q>LDdOfSw z5eYo-Y1aKjAa1I8>ffI%%2_0H>~x&nL+qhFf1HmCWc{dhyh}l@nf*Jxz$@SiNaOih zw!s=kBo=p_V@NU^btl{HVOV*o!?Jex!#0A!x8w~&H$83dRh1i1*rVD#mWBMT1_#pU zhp^E#?*YRsVa0e0m))n#M3@xOA%Q8bTM!v-XS-X3MNfVBHJ7x-@%;MbFs?lUo*6tE z@^fAm0a283hZCDzq*Fc_)R}G5qMK-65aM&O6PAN~>ku_#AJ8Gjcf@7T%9{J6HM%f} zLNYEr^)sjMJVhs?jCprm^|)HC3s{plv>TWvT}g_F=ENU9F|cNg@<#SCE%NY$ADVsM zcXANoP@Pz`Ex%*+R3k=Za?5pxLL76V-iNVsvdqa>-2@P*Qx}~GlL36Jn|v^B*NbS z6xFkn?qh8`Hsm<8D0tSchaJg&bC$s32QOHaLvP44A?}`HIXhv(TMhs{d_nqj=ch~p z0OrL|f?m*_1{(Mgde}PQANb~;WNUkCf$n-*?2sqaO<`2XeqXLaseB** zaw9(u998(+3t{SbfeNm79a4>V?m99w2E0AGHCiZrPo+=KvhqpGVQD}Y*p6cTj-V0I z#y&tIr+c_Y&#u9+cZ)@CN+rpgx{x!8kSph2MH^a@9)A%cGvr933d}`TD0()adlfkf8ATQ`~J6skId=i}Uv=8^S#<*v&-Wkg6mzTx(#*1F(L8W-gox0;3QV%OsUhc_60r1hv`# zCJofx$bH{qJ&<4*m-)6wXRwfq+jofE8X~T05GhsvJXJj$?W6G?nc_9dHPHo*qIAP< zM@b=Ji!c{?j(rOAR8xW)&0u#m>UDinx00(j0#v@*e4QLh3#$S2X?d94q5%^gKDd#l z%27bQn|5%$_=ymb;6^!SFPHaI*69o|$!ssgq`UT|H%-17y#Ikxem4T+)*t__=y+Zn zo*Sfij()S=98(_u_#pdFWG}L;J_v6FCo|MhEfyrwEQ8~Stz^&PM?gnh@ovr?P(K8z zs8q85tFX5Kiezi@w{drOcWB(*-DPlh26rFa-EDApcXyY;26r16TnGEOyL;ceFT4By ziZ~I~5uHz+rmHJX=E=+-ZRn)H+j$4$IBnSJ+s%DBxaY%F|H)DOT8){|ZPxpNNDLae zG@plOOTWcUwc{)S!>0Dm!j}@C*kqL_eQH6k8BIhrRUVJ`I_Ywk`uD)9vR!Sbjm!v% zn@Jecre^Rk_%C zMx?GI^(e>s3ZzE#T}5iiWIx<2q*OK2w($83moo!}l$6-_nBUD(>#kfoBK&5XnduxX zQeWjD-Oq|P{m(p&k(d6YHT6|GXx@(#!JJAvgiW)Am~1PI8StCO~!c*Dx> z@AL{rz5L;|gwRewrQR({=Qk9xp8iWS79~Sg*n2L*AUHu>4y_y}g_<&JAW%QI=wd2z z5;pNG}wQ1L?4uTysl8u02_t0G2*xdmB$%_<_8zy3R(+LskHVWs*w z&)7wvmGjTZUiyX8N@n&xrh%U5WKtgtUS;=953v;T4o`J|k>sRdSA~+7gIY_U)%wf= z=F*m$G&fnw>31Sa#8+zz>DC2(T>|9?Bc@c|CyRT`e-C$I4^Ajce^k&T2>ma&m%W{} zq2ph{F5Lg9n|pqZ0Qi$EXiCT&aRMVG1CPkVfJ()2+dc~+Inz3lGmWUHENIHcePrJ1 zo+s{09dXOeC;0&^-CQ?$cvvQ6Zp!!JsS!LDQM3~C+kaj&Q_5)<4aF2X{xO}?8@y&Y+s)vc5f^3D#WYMY9P1q-|pI%eb-jO+7fK;6fh1cclELbvc4erV)WEsSBQMvFAkKRUA$wskXD5(s~V zSYwsZVw9{Uk^9Gvh41BwLsa8#Ck@-b;^<~v=Q6~T&>a@YBTaQ6BOjYfB`3=rZ!_W= zPE=h?ZN8M^j^q9m+z!9nU8^@(O1gx#V+5QFHQza0p-=sKb3cuxH9H6^vOSP7ssK7t zh5&g3p%0&yI@gT45{d~-VoZ#alW7hW&Vpi-1n1An72Kf5`sub5qUa?|1J+FV$F0sO ze_A`Ekd@Q{+T5WpLL8rmoh80%+>n*woAixHg8*To4WuCT2B*x$PeJeABd?$l@BEJ{ z_N1_lA4a0xvW8G2#LB%dRgK3sTW+K?$Gt)c!yO?v-0R^;B251+Re1Cx)Zf4+OXdCFw1W>2lV$LYQtc6my;6ZE<4S`1EMReqQ>q`o_dZV${%3Np~ z-k9TOga{1~hwy{G9w^0~hoXOEk`KXh4!2v_7&%^ohYm133TMUZs=jh5MuBszW&%SY z{=nsw+^KL@d33>_@=b?>n65S&wG0fZcScnM_ztuejN=UOP>qB$=E9-LYgDgYZ^WI# z;{hx*Y2ezc&I~|*yGi~j$v4b0J#z3bxj>>Uh3DMupev=RP%MLDK01CH1YS0C!?Y+; z_(CM;t@bKsv9ytT(Mjfd=()-V~UFNVvBx>vv*JZyT2xQp%6bs3;pgc# z@W*%Wyz@6V^nN4GQR$%=K9LO*q&1K?78f3s6s6b=GbT5q$mGt@QTZ81(C4|mF-Kp# zGYDk6SQY`M2pX~)ZD)+$`W$d7Hjzo4UgdY6%)uH^!RP;VbA-*!!3CMMb3t&9N1N2P zopO$jZ^;=Q~Ty&gALbQ;J?(Vb)l2uz|z=wr^G5;M_(nKIV}sa=f~3 zN(1#!Ix-L&qY26UclhXwL53se)Y@hZQ}8n2dZc-}f=p|=mMIB}aB^dLNcdl%0f0GIGU>LozI5fla z9XD*@SWL1YT5!;6LZ(R~9XOtK9MW#)@dNsHV0kS*BYf`m1-SblwyHaHt{3^KLj4K{ zbc7V!%PEG#0!>Lr*j1MSl%SGC>3De_HO}CKzm#bK2YS~K_I_HkYslY(Q{2^uNtOkuSopD*N`U|KacNF!1Zzs)&MjpAQqOVNHym?JKtcbk+6{v z;_OB|ULfbPN?`LUB;#FDs~O=1e!tSM#Q;ce5y(KrI=)5cp_FDvAO{nNblg?*Z1E0e z=#XFy3M`ZpPcK&e_}=!F8u02qojujkFd3{1zsrs*C?~)6vK)euR!Rik0t(v76`2Lb z%Hw?evxK{LC&UKcG9N7s_1+yL!P}i(ka9yhk?q1-yv!pK54Ptt2}TsH;;H$5NWb5P zd4gYap$st#DD~9Hd@)56yXXI6 zrIOWHnx%dm0)Cys^a>HOfhZU0fsQ6@AC0Yw3MMImP4zaD$i+V6VIvV)vaWYrc0%q> z#b@Kt}t zJLeEf=T+3;6QaRarA?c$+5G+;6Kr|$ZEe_YK2ZJ=9+}x^`5(^?O0ml3Kx8ipo)YG3 zUWzAtKQY0?2Ln%4>{{~QK|>npsceU&L?hW*3oPr{3I<#U%?GeQ>euk;Hy8JwE!65r zpzo+m!nSKv0>1YLx43om<{N(hl7OC#SR5%{GcsevOIz7a0jItCA_$}WPIKoDFe$X8!)GsY zq3}w#qy~*g^rg_fd3VrC8Dme?0TwqwZq=kjjx>)Og-@&v>)Q;6f{i!_9ZwkobP!Jc*KHWdOOub_}Yhv`4ZBXSwx8?^3%=CU^hM*XXH?Hcg+AB_mE+ zW5olC2IkrZJJHFq?fz2-x&q>LFIvWRL^?l1CFGgx=gT5}6dpso@KLO@sz4EVYv~T| zttvy%C`wD&2B5C7I87>@WAkbI;bz8&HX`VIzdw|nFEg^!d&tX>y+B7+2%IBRU%!k) z{jNqb=99$F(KTR$yVQFZ3SI95xA`W7DW+@B6^3I6uptZ;jK#UN@JA4$5mXoEn7VGX znCX+A%<4=QX;YcmSH!^Y9NNZ!u&4u-I&4MA1|Nd z^tl&f3&kw&#tc7*qv$z&R6$HMqMP1rt3OHoVSm%h!$F>QVa^9;|Ho>_8OAnJI0?3x zr5eMY_kq7C+t(%Bj35VsX$pD}DJ$wRg9-NO=&5rd&XP8Ao~$|c0=WU03iu@S+b&^_2D35Ds7NlZBWG^at%?wF$-(iZl0zieK-uqHJPk&U>W<_y1ZUW~dFs+zKY9 z`WkU9&uc!fj!Sx~*ju(etFLLmLIj$+*Tg}rrOLUdVIsaOM33 zXB~UFr=;0Y+!eOJq;{ejduwYbv1QsndGm`C=%}kC=(c*299WgPR{$rqWRB-*FD@Ky z!{xT%G_&ei#b`{U3+p)&^^VSq^f9ft0}gxTT;s;6?ADI@#vPyy8)2(=6ClWD!C z7Vu-pSv_MQ^LAklUJRJU1M&qz_QT(7{R>xb&!}%J&mz;@JDxuMf z%8n}m&T`yC;=96XS@g|p+x^_?P3wQ&k`8@tfDvIImviE1*qJmIFmk~(!OB`x#H6?k zh`lROTz8fm5yk9^EK9)jG}P?gl_9?)u~;*DL~h~x?RXJ=9jj{*b?#YBuQqVkUt3I}v?O`R%s-BVz(Oy|Wtt=Rx*?3dA-g&H2)+**Bqc<1Zo z^zjU29(z8^5bUF&kbo?k*|C2UcS?hk= z0xG9BcCpn^Tr!Su7Q2-6dys!FK3Gn<*Fp7pujD;#=j`q1n@Gnw;!?lz1@9{O@HTF& z2peYi=1+x?-#S<-hCHZmcPKj}g^nSxSM9OaXHW_G?mb@wUO9MKHNNk{_O7u8QW5-G z_FD&SlDS_{3T#im*ZSHefWa8>@+EY?=TjHE|DKWlcdm(}siDdLPeM8XMOJO?BO%@D zBOdg3Na$}fLla9oC*}{I{otckc8&8tYGpV1B>mI{RnElxBIVl0^xB2uFvNfdzRseU zHpGi17yeMweSbJmL?hQuGNSx#=^;tx3%Avo&QbUROG6{SjEhYy4>NqQr3#f%BcKZI z!7!1WR>X-qc%wYsEcqoEN5mPHWzJO3BijQb`O*UByMuz72l{dvgx;F4!U}sq8(N zwX22+&dJkc2cD9NKw!a?Vlw6KvhW)AgzRp?_4Lb;I?MpP1BfC2uJXzp;#)D~Mzli1VIKau zB+#ll4TnS)3v$5FB}+kDjg7XK3M@So(ZIZj@$4mOvF3syn1-T!aUKCMNJ9Pm9^TQ3NU^+4M<@Kr;qReot7V9bl0 z`cYGDz5td+KwbEw%whC6C4ektP6JpGx@B!`1)<9_dMioOwZsprPfl67UR1UiCql)V z0eN+WB(S}Zjj^y=>tiWF-HNtdDDcFpRIApTr%&B?n;^wlIz_JSL$Gj^#(vkIcw3gw zrVeYBk7L?@t#@6PZj9|pP5w>K5gw28Xn#Fib0Ot-ADvawJrXv5iUyasdJ);1NbcSn zkkW-&^7p(SCaS?&-~tH+4CK?~$t8+zl>RB z;Fep7Ct^t{&th*rL?T5@{ILA=n-2DEI6NB9`HuNQVBf$OskR-;C}v%v zgTMJ)rZhDx9<9}&#I`;7kmG&C}F`YSyCTgS$3ogL-vT)(eW zzp>XfzC$6{A25A17zz}OJJ{tdTD(?EuKyG^urkTB{p6hYgcq7jdW zehPZipaH13oAj0kqo%PGNH&7uQ;^cr)9q8AS0R4q(w0hrU0abFOAXIT&`)q_OMrxg zjO0ZQc;P|51(j1CM?{25qKddgZ!^@XPRKge(j1fOXGq_N*55;Q1`jl1Vd7DQ-vU%* z(OVLOYbH&YY9gg=x}^Ua*1!~-(U2D^3@D_VpbGs}%psIOLQWlg#ko*Bu*Pp9MNcg+ z7AvH3CQ?bC?7lD#)PG92%Ths;p;x+tAT=HILPjRAtgn(09|`+~(Zc~5Hp3kCdT(aG zk*;*f|Ku0Gs)5w>TcOUBkluVqd!v~dXQ54??o?;qSe7?);9Kp6K=IT_3c)TU8qmcJWeNNL&f&jr7TIZ~o*$qIhTtVK$@Sk|p)l;%?7D=e~o@5|g*Z1c>KKL=qI`dgVsMUMu`vhKuP&fvZZd<*GS8|YNb_s5_ojSsDODG6KKX+P zOiz->>du!y`a)m~jH9~#u0M0hmzU>&l&#t$wd_Qi_+=;yj-+O4s-9d+<6cDR{Ar7G z?2|mMUZvP=Qn_tsE(7oduKstvgPuBa^n@>jsM84(#o$N`Di1*oHa|foNaAnH_fMBj zGlN>-LW^=+h@Fb9^K?8TR5^KkoCZDW-@s_N1Rf@%egvf3MJ0g=iYI~}Z-s3&`s90> zn);KuP0UIgkRbWxf@zBgt#CyJvV-~cu8yBrp77&xd~IUqKC`UkPY;nN#ql|=ZfO4T z+|Gn^@*Ae94L#}WSI-pdKCe;k@tABz8yUL`WIjp49YP6ZM+Y*SiB}&`FD|h1R3S`3 zQx~P!RY^f4*R}+th+YloHX{x}FW_WeeMwpdHK&V4XZiKPON3mJ*XZ7i8rc;j0}ksZ zMP?9nyLnnqofO^;c%1<%9HBzaBk-7+h`~}rA>u-%IGNlLAJQNn@F;5;SpZv^y1ZJ) z4!OxIlSz=H00p*>CV8-lBb-DN6MEPblH1h{hvFc?5Rmgk;MTGi`DJ6Y z9{8LmL0sS|j+6ORJGH`7Cz@iIlYtGw4xn9ZDEJUNZio=H^8n;_ zeG7=I!)LgbFQ`?IFg0_lJXZZI-FhcNp>-S(a5&~HN(ZvTb7HJdx3M?jAITnm%uUMy znY<$F!Je53qcF52-eHYXr~D#Jf6lnejyYf!9Kl-&1oH$}7I1bM&}wuSYoxuJsJZcZ zXh$g{HUUsE23@G)H@E3kQjLp3)fWk5gf4PM3(j70Txtyb^K2GVyzc(ZEA1cQ3U$@R zEqG_4+bFT`{Nq@J<}R;{0giXSpCMzp-Yng?UH_212@;{aF|Q1)+cdzZd9{cn8ehCv zmc*zQT&4#`KewvU??U{1A+nAUSqK!);R(71dL)#zL3`V#E#JbA1INT_pTR^nn+lho z;R2;xhJ9kDRTo>`!#HQ0 zouMAUHlsGoGtdg_S5sBXU127BXdgO z;o;J$;K$>NKf{W&Z*DtRgsSb#@19m9OkIyFVag>?Y$JhbBma8&j@$(Jfh6Mo7X zM7|SNz(Pb+!*L^7Q7f0LPp})&o~w$i-p=XbkQg{Pqf}~$nEoKjQOe<{YYAUNpULwIu-Zrr`J;Cf?KWHS zDiiz&cdG%(Bv>*&(MG?o*p+ko74y2R&T8gcdY)@jO?1@NoG^)xu!aX;n(2n5v7GTZ zNcpt-&0p+buRQk8TR+ge!p1E{qOJKCpc@Lud|lu5(*ZL(xxM@) zHp4pE{+-RI79)kuQ)TOZ7+A6XeprLTJ8Wa2 z+k&Uyx=il-94}K7A4v(710e;v&-HCkA&TXJcvoRPk0~7IT<>LdlWR5=toP|v#`IFw z(k2mZ|D>~Gyo55hw^r`mf!I4Z|c6IvJ8 zexY+U2EW0^(DMCEUX*i9ce{J+MK1=sLiV552@CG$m2vY8KH7nAQ8D8lmz_WHR_UyI zzH!m>F{65_ZrQA(oH}hqOuY1Ox_@mIe0Le}T)^4ru3&?EHi1^Nu)51~mRI|oq0&S_ zw8tQ@q?4X0QQ*n#h`52`htNt#Q+EH3r+F~BCQu(lko z{L}w?$)kjvE~{wO$jyz~@Vo#;iDQ7fvkQ2MsVjb3XWZC%&`=X-{ z&)qE(MTbePpw**X_v)xgrK|-LlQXgEjYUQ^WQ$f`={EDQ=_v%JcpvQj2&_<4cLOA0 z`1|j99twl+jP4#{hW!$xn?zS2Rz3q(=Nvg4f1c7it4WXgKBqzyTv>a~fB3!cABB*g zS9%sEW^8}0^#1XBe-W7UqGzFXVcE}FCpsf;JWN?Kl?(kZg{*a39_f*Qn(iIb`Y z2CJs{J77MOlj?piPPT-Z>N5@?iaa z<-=~Rx(h93{hB1RvB@1L)J!jGVRmAMt$n)-(<}-$I-nk(=tFj74;nbjQ5gO+1H=-MIf_J!UIXVlGrk#N65YYWD#t6 zCebAZ>z)Ingh#10(4jiN!`aSSM^5yaL&|9YDue;XWQW6B6x+!?cz2@1(23j=TQm?U zk4`Gq5_NI7tv9=FSZN9!Sk-KbQ`Hxdk}ToD&NOaVTB0r1F?kA8&bp?ozq53zI1e_d z>r9jNjuiLTDJcXZ0V3i)dCIeyW>9Ir8a-u7H(3Mvc2uU8>Ly)_FG|&m#GgMXM|OP(&81piWvBQ|Apec+oH1V<*K8n;9S zZ_wNpm|t>EpUd|yO?5kdlRK6Jz1ClUwG{OBcHyBh;nVv)jOvo(Wbsfj-OcA%Y_VQ;HxC zJd|$5b#^6}2HpB-D$c=X+PQzIurT{Fx+0CSdEw))79bl+$U{(vyaj$PlNonC%#R~q4a8VIn9M{#;@Q361GP&X`E zl9nNbe9WLpBU~{@4F{`XAe)6jPvBDw+5*)w(J3o*I;6_`gRd8w3z(BS@yiJ7>vj>8 zR+H$=oh1qDdigiTN07vkQqh`cN-2q&lE47G`Sh4&rD6SD3GW&B0;wkgWq||Xy4Zsm z=QfKKqw%lB>ilM>j}*j-KtZbyZj<9PZRZ!HTp9c!2NsC>&3pXT#rFG~0>>S$o&B4j zdhnMNx^>Bu8_K`!@GRe77kQpM{@g5Hb5P|9_ztjn>46w8{vty7GQxy^wQWYxF@^M;~%y`dHm=h~+ zCIanurQmRyjMIgyui}H`>>VqtFO!snw*V~QG}RKjxa7S0&detu{mfojZ?|H0?BTt* z`2E0q1Hy2#N@!9pg6=jHd}nO4Z)2i9xFS|xlZ<<`l59i#p<&Uy$9A*n~jk1EsM(g6>RbENra%uXY=+=)1m`* z5s?j%EmZ+)g8ZYBnlFHzB4sk>jUY`5P+&2>AYlIbrqnwA6q<+yQp;&|2c#e5 zQ>pCCr~E}X>)ga@uuXIpWWf6ep5YWxFn7>fyd`W=FHPo1Q zw}ZqD?nxQeM;AP$*M?M91x3Uxz-{7$Yr(s|3F;*?=ihpbp>jR=U$+#xE{UU4(YxjH z28)#abWfKRVfXc*Ixr4p>DJPOcH#1 zDp$D-Le8r$&LntS85$c>BiY10*P(!!Itq&g{ziTP5>MM`FMPXE%PiJJvF$s|cgY+$ zvQPMxk|c^`DI$$AR2 z*8{fHm;E!}#?spHTVZJ5mK%G<8kk+CR>YjW^*7JO?>ulTLH}BTp9O7c8@G0LIS1M9 zT)VG7Am&~t)<6}9;m$*+7YHW9rv{dR62QA!08E)bK|}e^wyYVKb9}81YR&JzZS5ej zBRb!2J=F9$?J0;tY`~uv-+S!>U#D;AP9ILc*xE*(Ub#y~Pzg<+oj{r!%=jX=>|x8? z*qXKYS#FvO1Ht4EvUf9Fm?6L}Vo&`(xwU0>8!n(AyGGvS_QSgcHX7B!iq!y%+jjpG z?w1&)AqBX)8Xo?W1U8*;mS|xXcWj`?^+g!m7s^v_M>p#1RQqU^0N#2PAGI-ddeT<7 zWjYFh6XJD*-+rr(N-{O~9O&-X&ui^Uj~$)xx642g>-|&%78c4D28@$!3iVL6!n%7k zEaKD+;VeZx_!YS6W;oMT^Z{wl3}RKAreoJ3?Kuq8yK1L9iR3*l zMSdvp3_VbKiDsvDZ!)%Wu711VJ3YGSzRKD1*?T#AuF3lLo*a46bA5O`u0syB6%4`x zbBNEQmscxH0)%yTTb35FX!hQPNqO3Z;G>&4zSUw#?*7y@$4~fRd zp}k%4!O^E(atz)ShGsZ1x_AB|N9mG0esVu`e&cSfgd?sxQPNbYm2)G!C9`CtiI87+ z(if3kVd-8nUO-~G2giQUAilMXmg+XOe&(go-p z*0NQNo|2fIf4)}r?%>UZ)QM_7A?AhZ4jCo5ubz&#tDMcLujPwJk*%){48Co1Jh0qG z2zj-iV}*YwIgu~odGAkbz2yW(p*lz% zrKA>V4N9gS6t_XmDt1^yZ7+kxjJAj*{af+k{y?h1JsdVgtb#_etHfN(uOe!VJcGdM zrQkap?x;&T@P29;$g5h>dAAxZ&fQ81oz@#;s-f(^rdDZ*-3YKf)VH<6FlSDit}h(? zSJE(VmB>Tek&N=QgQPk0QF{{f9TbZCM2>5MFNRb(J^3|d>A&a~)&2~!GPgf8ZJWG9 z=CDSALQ~4+dhSB$iO?Ni=zE!R1xXI^4Z2Ql37nnbFDOIZ7$0Leq(V+F+GL4KYjEq= z?7t7o?y(aBULHx;p>o+m@oF;V-?n_?JE2cT%=4aHJW?WA+XpmgoQ+jW4V|(z89tpz-t7?;c@ST?4A=P(>{WfTbgx?8Gwkj=q?O7EalS5wOH0sccC;ZWrr-2 z+ya5aO0xouQL-%ONqAm)uLOD5>8Gq<|3May*yYLl!;>g=L*A!-KmCK*%B1Ut<+M^v zr&?{cVnlLQ+5E0pEWTzgND}+}9fqtb@i`CpvYGdJeWrqjt9GD8oR-UpTiCNiFEFmL z3o^YwF(B(`tA*g{+hhHcM(S2&^zE+rtKij%Z}Noh#iZvma|8O1pO16ac|9=(i!{MP z1s?PHSD?NdxhqM+GWi_L3%`t&CTjf0yXkxF_av>#+yOCAvO|dPrT5AbC5GyhBX!r1 zM~Re2i7pMzvppq5`&hqEmoaxkResLUQ8b1L<{LR8qR2&qJF(8Z% zIE^97n$o$q)30S*mGiO&iH?tm$DN+Zm<|AmB!AUEwU;8TUk@NX$O`6|aa820pLnv!(ZmG!f6ExMjhRiulDew! z-+I<*IRz;7RDR3L^$FCNJs}Ey|Xy|4~!6t2`Lmq?6L2H8F zW42Jb^ni2dQy{m-5H<`Cj~2E@g-0`7KWU)5;R2g(Wd+zz@q#AYA`9t95p2zH0$(iN zkk`Ie5?#)O6<(R9*RgiM;}tMzr2-y#^o{Bz5p_oG6;ICc3BhJ)3TX?-7<3@Vi>U^EgTZ+gK< zFi4TKDtVEn@|hujGF(nspJ|;Wy%4-7>!W45@!}ZyfVBz0tj&_bcfx)VWfP$em>M#f z1i$XqweNVxQ(;#oo~1r@{fTRZX_whVNPM%Jq_uosUUb9_4qdhWSI|7Q7UoKCAIFp} zcxjQ+SK=0q@;W8FRFoW->w{RVpG|Mk6VH1SzBSoPVHI&oAQQNC`Vz2g-_Tq&T zXB8tcbDT5t%flV17gEvi37byrCjF_@1SbZ#>QqaB7N&=*(p3whXo&t9B-%D_AaK=7 zUQgESFJ_n46!$cQbRYq~dDo5mF#>#YJ$dVVSm<9tger!?k9IBRdebn%NwV zW~M<*G|76t#Uh3gUsH{SR>=g6kf*kUi}}z{V8DT<*i7xRZB47BK>S#p-YKSM3k2&+ z2JiNA0~SS-vT89V8qG^fepY*p@GfMS?p;aCaw^6_fVTato;9qoVjFR`O{Rzf3||__ znl*{Hj4W2z5?`zE?BU1}!;hhvUMiUZK-C)U9Q^XdB|U-5P~y3$60G~>ULA%O#sLPn z;zIn@{HiLjv2cRv*zNJOh+E-|fr28ufn z@5w9g$c;VCyt3vmsQLaC-;r*GNnHgtxknt2F34AR^7xfn}^eMzrkLFjNOI>!0?>jlUIlM_` zt|<)eub%xMYvLBm*K-hMI4FL0is@=&Lkq1kw<*BbG)9_%-+6||15-oL#DSkZS0{Y} zcp--ZTt(K(;yH;3t<5+b9KND-)j zxnbkd&?IyE>Plvlq#q)hp<*bc*Nq=kVGC&?z4~XNSk1TPTap zy2A;z8vPoiae_7O^Y@S|0^QH!ecoZG_*oq6b7-B(H9Z>$PRjsq)wIICW36rx8WMUN zyTYM@f=b_KahO*HnL5NuJTpa%yT&Y=w>&DMr-!M5==Tx^QOHoJqr{?;`C?y?wTPB5 zQ#6s6dfsc|D2B&qk)B|0PfnrH$!_@NdXEerTjToO{Glu z#^sn&MKf4UPc+5YVL9hTKuo`5()J0w2NUfwt8CTydNJNny!+bkrl^Dgps4jIAC_PP zYzDrCakyYrCB6BzQ5L3dyo)(l=IGZb{Ps*fdsp^n5qeidk&;f_@hUd@)f1GIkk~)i zZ5Si-q(APo_##SXE4mDu7WOohZvF92aP@csfF@kivKw3IG<>P;Fp`p9Z;9z}5K2*e zgsP*qsU70n2nc^Q-~CCIId#F8LHjMnciL5?|JY$otz@V~I`<;xUC<}jW%Nctg5v)^ zCoVfzmnukRFab`MTE+oT%=k6LLyMypLK5J-hBGWl#wS*@ot<)~`e+Y|NdV~(m-a3d^_ zpY&h7UL;_=5tT?~VI;YbZYC1~fzfVwGK{NPp|YZ=8A%Y3wmDMLl7cXH0!KLlBa)*` zJ;4Z*%y;~YXu8IiQ^tU!j^rpYosafonx@&~%eeSECJrd#)fmn43|=IRUY;b!yOrQ` z0rvqSQH&oyRZb^kGt}UU6K@m1p@m=DMViw+@rmtT+#65?4ZO;L`ul7!s#A6c^?u3W zcbVA+HA5ih2gw#%ps18TkLcym=)NIV$~Cqjk@d3b?I$X;6<{4MOEtj2m2R9Ku5Z!fzN%96Yy$XnTmU_b_jze~k=YRa4?e|T5wTfZ~BdOC4 zsA>?!XrvW}6`_JQdm~CHb)P>e!wHwy5PkUwd8mJk|I&B+UqT=1l44@Aurrc!Q*-eD zDZbpG%(%d^?Wiy%1CXX0W2jdim86rJ9vz#Mft1Ed2R#V5zL9a}i*x~%j#PGHPOLbIYU}Lip>JA_931?!-szWc zd?pM~AfUsKD!~8yV%C<%rnXL|P7JbAB4Y9?V#&%ff0YG(w9}5_tW&0{4TH^EAG84! zN!5M_@R^~eYFX{lIJh;vXJfZaq=X7){W3G_UY^u3zub}Yw2)5>UT<kFnlJ`3b~G`0%`>SO0K9(T2cDd-RYKZ3LfL4cZsXMCFfx%zmp z2|x7+#v^dA0uoDq))#xVoC9*|bL3iW14ZO-)@a{od?8$mk0~?)XaE}r z6A&j6mZ8o({04(oTpb^4b<18<-P#r#(XtxU49={so3QS;cp(_cvG;Mm$d2h2N-cHS z)L#2zK*&WMr|=dSPx~Qb7Z`pEDrF5^ZW$sARb`}#Dt^Xh0-k42*ygiHD16{I%ZR5A zqyo|3=8^*Pqpx5ODb?V*?zJMJ`T%?gs}rAE`xr`Dch>^1-e!CZUohq;UH8Hv{d1_| z0-KXK`{_B4XlLPpr?ldev;N9L2wnQg5L)2JYE=(PmiRtzSTk}WKt)x;M6$nHy1B6B zwpfThY{7mfJGrm>5Sx6rk?Qsk#^ACvbXA_}$7iBPhMPlYh(hBA)-3e+K4z2-1R|(} z^Pwn#W6feJTzK}tM1@(4L8H5)&!5`Hx<+L}EGMJ`OSY%zU}~auq$8wOQN92&i!o6s z??k^$l1a?N9MFmy4BWNr@g|X4_(~b;<2<5M2h`n{AHG!2u7o}KU9Yq(3>)hR^fhNNhW5%>mANGYQPuT`K zi8*YCvQ`uNrJ8Cs4Xp%W2 zCd;K!mPc5Pj=zSUJvU zkU(KwVIwSKY1H)eVLFM3@zFGUEZ zF(uieY(WU5q@=RW0XO- zZoD|k5-E)iwPeAixsp}Qyf3N_j4ECacQav0?8$V(_*Mk-?%tC#aWA85IUhg4OCjL| z79d;b)kPu(&LCSQE5YtOLvVUun#t%lzhKT1uGG2R8MzP!lOV`-!BUe;r_RX~eATjLoU*6Z z_m+mC73ssDGnOzU?0ioFR8=AT2a^t^jDqtE47QSc`!#Y8_>qbE_*dWuIXREPMTds1 z{43$mvCS`77cCi_!`wJegzHQRnc( z+m3W&Ws=nrzR7DFl8eFi;GAuRP007a(@RKkYmVSbVQ>&3{k-FX`XEk3xTy4{6u`xcc83zW*i!{F(Dv2>2gP^#A1icUj=ipwFtZ|A4|j zdcl91(0^&ner9~uw)%%5f&D)i|5Cd8O!=&#@(+ca@PAPLyQ0cx&|ijs|BwG_g8%nX z=wC(tpP+v=yZnFLC!bs5|3f+WO!@Z)`JborxwrK{AXA!8)A?7Y>(7kO9XtPF%rkvr z{L{blGvsrdjej7WGWq-4`Kuu0@1xLP;Nx-f z*A4e~X7m5!%lTX$@(;xI6XajTBA@5+Ij8y`M3Cmc&*Q%`tUm)jr|SFzur>a7z<(v~ zd$5N=(EfB59sCp1bub@KQljj ycKi+{FBAHJB diff --git a/dist/nt2py-1.0.1.tar.gz b/dist/nt2py-1.0.1.tar.gz deleted file mode 100644 index 52abe0ff54c96158fff3cbd688dfbf730b1a9651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30073 zcmV(-K-|9{iwFP!rp^)q|Lnc(V%s*dFucEY6j5Eye5Sx}K|euj!o`03<+y`f!}2Y3(+)L;{1sU@#cW3yIUS?VT#xwD@Z{5;y(p}+7`{M%|he)N}Cr}Jogx3f*p+nt?O`!7c8 zFQ4FNmZVM$sQl&6`4gm_Eg0-Hq2EI%b!?!AJ$`SDJU?~go zr`;*c|LxAsBIak?#$>ins5Aiy*uTesp5bIrrV;MdVhOdgV^f-FSJKy?8vExL6 z_h3p86K9+is@>G?=YQ<}HuGW^37FXFJpDxL|IXu9asGE6KknSm|4;Gb481Vv^m-k; z4J-h^U_3fCCs=r4ueW1=Yqx4nJPw0Sb1)itP;M7WDbJecUNH26aRM*fc86ZZ;Z?8K zwzu(1lBVH>8^CM$N)Hynpy|gmY_w(X)^N+25M(TW?wq?m;qw^3xy~&0Ml(MNXVDH~ z)ZVstYUjQ)xX6$J$>Izqz1|~g{Ty1GU}KN%?b`Xw^M{B^2mXt~ByHCQP}WVu&`+=i z)*rYrw1J�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 E0h7+1Gynhq diff --git a/dist/nt2py-1.1.0-py3-none-any.whl b/dist/nt2py-1.1.0-py3-none-any.whl deleted file mode 100644 index 580236cb6a8932e905ad059316d294e2b1000743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36348 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 IS{sN5049jeVgLXD diff --git a/dist/nt2py-1.1.0.tar.gz b/dist/nt2py-1.1.0.tar.gz deleted file mode 100644 index f41e8352618db2137b67e557da80de50a482f5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30928 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 I+UckN1527aM*si- diff --git a/dist/nt2py-1.2.0.tar.gz b/dist/nt2py-1.2.0.tar.gz deleted file mode 100644 index 43eec3e0961431483c7798847a2defdb15294563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34374 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 OSaSNJz+HkVCGjtX-HE&a diff --git a/dist/nt2py-1.2.1-py3-none-any.whl b/dist/nt2py-1.2.1-py3-none-any.whl deleted file mode 100644 index 18f65fc6dd1e3d1b8ee857debb58077953a4aae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39699 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 I7!nfr7p17Sb^rhX diff --git a/dist/nt2py-1.3.0-py3-none-any.whl b/dist/nt2py-1.3.0-py3-none-any.whl deleted file mode 100644 index 62f8ebdeef64213cbbca91cd76b968e253be767c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41964 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 TLA^bi686!9l_K%ay8ZTlc?XIB diff --git a/dist/nt2py-1.3.0.tar.gz b/dist/nt2py-1.3.0.tar.gz deleted file mode 100644 index 9470de846935df29ad4897eb073df5d6af48bf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35855 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

22D6}8~ip`%= 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 diff --git a/dist/nt2py-1.4.0.tar.gz b/dist/nt2py-1.4.0.tar.gz deleted file mode 100644 index 6ad5285c730c6fd8b061345489590acc201a8a23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35963 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 Y9S!bx|8JUpx__%=DsHQd^9e;pnV9{>OV diff --git a/dist/nt2py-1.5.0-py3-none-any.whl b/dist/nt2py-1.5.0-py3-none-any.whl deleted file mode 100644 index 23f57bb2f88e95b27776d1154da16a30b24fb897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43701 zcmagFW3=c%w`jR-o^9K_j}#*K>z?+p#T72{?7)uI9pgd{kwaN>Xz*` zD}v8n9s0dQ)TZSjK7YeGn0dFW%`yedmPHnO?LdksDi#ezyt1`X*WZ-7aWG3u~a~WaF(b^sYo+ zL&=%viNkl2X@O%pk@G%Y_#G1p&N8MC^U8!JjI3;fQ>#4aTix=m?Kj!5(RF2ui-*Sr z4{g|;zn*WoJa8p1=gG?~lP4dLak{A-nknOf4T{tH0k}7k7TV%;S+L2AXH53HvIc)u znyN6hAQm|M=MWVi1F6;T$)Zgv`NamqW^+D+G0_=vLBgFZP9hn!&u`u2ipu5)s&%yV z@IwURq=mXjQ8K@^Z4?+Z#)>sw1u4V2*!{)}2Z^j=Zt7*d_E2Rx%Adt-Ze6w~5qgs` z+|8;BZ)OiPjiI8JBX|%QQeIu(3vk>OB2G7l!7~fShrgIJPhZC(oJ4p0@f8@aXw+Kgq7@!Bl-?xq zFlKsq>ulNc4(BVrdigAy3C$#yV|DG#upU4zFXDHFs@vbNPQ#wDm?YnnqVMu`ePUs) z(TL`Bd7C^-2)|I4bp!lpAh^k-j`~2pOE-9cRp#856D-lZN0ATPyFdBHDYi40(7HuieW3Gr;K5IYSSr=Kd zVncV%&h7jW9jf(K)_fQNOW1#W#Om9+p4ybVJ&PjoAAqK8Z};Haqqp#$=nLHe6HY9&(0FuBzIxz zbTq*UZohRYKM+Q*2ImRfXaAJaO*(@&c~V zB-n_@5t)OEN7f;ppddb+G6O8GyYG0<%V(V9t!y2vcAbHH8@Z3~}} zmsdhV5wR(c2AwKg2Qr^i=#z9(3j1iF zB_>aZv$LCce@zAb**O<*!Io8AxQH7|1nRG3>GOTS`AlJ{9)2gU-$BTQK6H<`G4V~0 z%MLvtYMSu-ujKg$8vvmH?EY;?|KdOBGqSe$zvB=1zro6X2t=Lw-=+VF|60Vxz{2)_ zC#DqDe3nE6M#grW(w(MEgNVu!+4(o8pnh%*`tNG zw#SR{8N=4@{q`^tJH3k~&_F5iQ-xJbLxqhZe$!tWMzn>bUtTc0|Ku~H=XSs+wa)h|Af@lyN zTAC#B&YTf1UpR9{*q5WcJxlb75!B!UGuF4T(=tc|f+%=pwe6~*#${1i#!Lch%;pE`55(!&+sd7~Pyub4Q4!Ba}E zs;ZEkS((ggXhv;Y0j1348|#RS5-f)p4q0nN8Yu4utza}L7Bh)^+Og`A08nRUJXVT= zA+>+zE*|ZCyF1^irvP@#nm`o5e@*0VXYMIH3bF0DC~iWn)`1SzmXN^Te4(xGy`+mn#c-s$%LP6X9eD`D zHbi-@bvN~M@3TKXl)V-1>$*$;{v)imin0nrn_Y*IIL%3zHvi>Wf|g3J4Prf4ne+{^L> z1hyom3k%RPu}1Wci)9vX)y?y@qI;+sM@nne71hr%f~napY^IoIgYePyFHhRXHaJj? z8`4~@bX$<{h&TGq~aR)Cj>t+4CI8rznX6>MBHWmx55UA%1$H9 zbNlN!+Bje6)zK0D5j2-v-0W_tnBMx!(g2@-E3RF?eLWR8oaS1Ef;F|x(X!800;Ir0 zX|jxVRx1C;wA~1<{?;?TwH%OOK#EOe_!qR=Pa5kjI9y3mF$U|eT&nda&7@A&>)?x( zwc6?JCn)e%ZDf9JyRvoa`QOKVE7rDS_IIWSTOfGFS!zla zBZI;W7#l%XzE-29R$JqDX3SMHQZn-T&f`18j`Gs_VKDS=fe8kDg^4Jef#9 z0orKrmshgUq)Vbp7JQ0O6Pv;R>HPaAh;KnpybS&JL4CnN0p2?Vl2)xGFK&WOcie!7`WY7q_R3ptIr9irL8u@AOUtl1u_X3m=kSm$VA!2VcZJ?6( zk#3LC?SxcjG1e(+P==lLgd{o85;(;jaX|=_5lf9p!n3hYk4Tq$7g5RyLSg{8Zwf8QMCv zX4f7&B(T|@j30qFgb+qLqyyDxkrYLm9eKWyPQ)q6c{8+m& zm4|$OER~h*trJ&=l|-!-#t1l_kDwrL zoJ#SRH-p4`(7xXY@BfpV`S6fArIKL|^uDak>N2qWZq7_t7{U#Wm2py7^400RP+fG0 z689&0^xhL~#iiLGLEp`VOI1V!2>8BEGW0yg;s=`6qh}V%7jfd;L!*v}qa-42Byugo zJ5@|jJGmjAWxTx9y57u0gG>Wa!nXx6v97F0qD>dJJMeWdOZ?t-<8J?p3iItiRpPTb zM2Vh!Fe>UyE{wjAm}(>=?rEna>`z)qG{1bmBvUS#DB|2j4O)GqWyS~xTYcIMKV5sd zJM~pLXs=>jPrd}|4r&R2Vd$#}n=va|LuGezVmrlCcyZLBy9C{je&_}2GW`yCF3PYg zbhVzBz}iVybesS4;)JRHI}U;6x65-XUtJLk+L_2BPeHWk-tJ0$P@Da&dyjPgJxH2V z{zM4*l>>hvXwpJk4=a1*Ly8W0vs7?TaLb&Qb5S-uVrV(94T?T)gKt%xk%#$#5AS9M zl6%3CcO@%a#X*sC{>;8OY`5|}E^y}LU3_l!H81UWZTASI3;!n_0p)UH6g6f4Pi;{o zxBDhCgD5D2V3^F2)CpB8gMS=!{Sih`3EA}m+k1uiA$``;*h|ueASjq{6KOx&aRxT{ zl)mH7Iyl3g0G0~wh&MJjTq$)wEIZIE){%an=sG;6DzioA4j?`R;&0h> zr|89XjMOzM3Hw7wJP$r!p09F-nj3(ErY z`-cR*kd1Ur0TcEnyO7?|JUCA?v|Wd$q2v~e!+N=82A!Wxp`a<_QP>9}mA#h_>VpM( zNda5%I(xbuM3aO39)ji3{x4G4E|(!zY8lQO5+|`53T`L+WE>Z9q2^CqUczTE6QLRz zcB17=SY9IVCSGIDW*blZCR4BFi^AA3fDl<;q7p~ToWzckthTX_y!JJcEYu}F?V1V* z8PQI(6M|ZH!PafG%&LFj$jQ{sav%wNx`&~ipf`_~b1T3@r#heN#N)p=U1pP61#FD~ zvL_Tfg&a#w08Cw|HIDg|J%M6|ew>j45qE7VR2~RrU_?$~JLUNV!4ytCV~7WtdO2A| zLX4H6O*ho>y*NgW|34*3Za*!zL6r zeN-NtAd8(`Ti@U#c+mjC3CL9$Q=;a3}p`nJR#o7L`aYOFiX*ViI_#731+! zkW9CxGP~9t&;4PglU94tef_?|HQX<4BuBfTTq%xROU3+s9l>Zc~=j!Q-T6Q{D$s!7zTT6m{m^(X(F1IrL zdY1X;9FT4B<&s_|`Ly%kk0H@8=m7YRcDuHvq*Ij+V=j9?_Zzvdn+J%%lGMXFv<32x0 z9Z3D@pD(O5zJq6!+1sQ?azHu`x>3{tNL>H1-^?D;crd=?NUYL!i7Bw=D|7QL-=Lls z4DlvSaZL>3hIMl(>@NjfPd)wSHm7Wkv^pjTKK~xF*JaI-v;N)p`ig$SkM{#1&zlvs zc~C+`a&R5;)mUXsI^>H%QkmowPL`kR(t!tolh?%;k#jd`P4>j2O+*I)R$nB2jW|`A zyeMC&clHIJTamZ>GrylMv^4DdfEUnJJZZmekiJW|&u^S-ZJl0p*n6g8GH+Su;~OJ8 zhpV_&$#d}3d3aQ=O~0ccYh`DYx|dHLopr8mRo zkFbq0r0Y@Na^QNsSG?g&Y51rbov#N&Et~~D!Ry+!=dR(~!}W*6w->;_5Gc>gn!KuL zUAq}r;oNpyWes$KcM(s80HU&dYz%OF$gBuVZ%)Z@HBVNo;HZL10)~+kugURb1r{Ls z;n`K}6+jo;kX1@0(;PoJ*G~F-b2B$p963W-y}-Km3qM2pM+9^y)m_1?M~p+W=@-EA zMdUM6;;+wek)}P-Rif(m8U#M=Vel7=Mjx*}%6mY}y6#oHK(9HrlZ?#SE8#jeQi`RvNlZkDHy`eC4gh*v#=iZ;L?u*S@B;?fDu&6 zANV3c31Kk`TIMV(mPF+QJN=|WlwlRL_gTyg2M3x3MTY7cI}|4yTDqO*hOkp6%;eTMHtF7!UeIBTDFtU`GzT}H?}}l^-;jwJz#+V?!Y7f z_Al3uF+*_fbn;|#3BcWZKrS!L5D1uF77JbEL_0`1_WjzysLy*i~ zg5S!W6J?Q1-8iue#rAyg>oZiBbe^I{y9@F`car8EiIgAJA zh@6v2{8#S=h+fp5Gj`7l2D7^TW0@gQ=pyp;5JEa&u_om+V)fjSk|8;16dLv1Ds3X4 z&zL=Du)9arN1z=fvGoe?JS?|vC&ac|V6GYKN)$AvaEZ(6XqsJ!$}<*op{Poj)&O+I zwpN=dW$K4;!>xCYFOv!W5ce+^4%S~-3Gd;rt75B~u)r}_cJSh=LI~2@ZQ5}6j~nla zGP1h}ii%8+MM4nYV2Rs!O=?_~8hId*a?>L5!eM6ceoEO-$69#L=jm1oS^9Aw|I8X* zM{ty7L7Sli-*3mLz2{@)9O1d8Q(MRS?L4d&%xux!HeZ=`a^Q&cfqDht)3TA4dLHCS z=NPX0ULHS>^+-Gx`obBuso2!zyKp22!!$^VE;XFHs$zp7xkauwLG2yA7oLQ=H$0}s z61kwLkPx>6Ojf4jnU^%^6K4$6_^@lL?s+Rf!h|K7h+tThihqSNIpTtm!g85Y9?j2NiKDabgy9FbsNGhPs7-)oCXS=)WFB*{pwl&%H9pmGxG@@dqIy$xKq43l2ZS#O6C z#^O_1HzomJ27CvR#24DN*f-t7q+CM9N}!#CD#`mX)G+MXjm6W=e6<4yi|AGIOD((z z?7s>1vnPbm>Hn!*{XK0Sgq>5w+e!0;K6b@tug9ou0wT_bdx3+`#f-k~9Jr!kRWxvK z)WW8J@rr)HE4999614>7(26Z{`=G6i(Rke~=^DLK6da^%gx~LL_3F!V2}h&U2Nuc7 z#|z>+OMurOa3Nu%h0h~3D(-TU#W9g;(wQtj3zHR_-+j!ZzV+d~m897=1IjERa@BYn zghgSV+s%IW)eNgyEWt?gXrhfhyw~NrE_W?;_a{H7cGq?3qsAHH9M}iLwOP$GDTB{y z?d5)i-TIF9oUiUed5)8lHS0a!*;iPNfJo5cm# z)Voj;({Z~n8ob4A`Wx5vHoBu~lt*^ox-94HhG{dmf%9yhH^9{XJ6&bHEVrm)VET)O z&|9%rHt_ApA-}Ocl0X|kI+R?0&k?ii2l!tHIE%+}7y z*}~{Qc4|az$99Vqx%W*88v-4FCU(A7Jpf}o5b%c9smTQ`2~?zv_5ulX@%VqH7S9@5*or)xL^&%8Vu0LA@>n*|jGYw(1?I zUmDwZ} zPCb)_LINyB^#&8*NIi!o1>-8lnX{@#?zjy{H=HU?hJ=gw2ujuq8BXD0;(IL$YHY5UTx6^VRqyQbR z{YtewN=KP$mGulZu^eKMM#bdpAU*v%#Y?vyVndII5IeVRco>mzZ%_V<7h9dm_$eVa z25fH%_xRptoq_w?u_(hv+YavU?i%vL+yEs59AZgEd>3S|8^aUqL+bh)0ZVzC?iKP^ zHJVaLe>If7T0z`!q1TH(*8<_y_*SzF_R;|lE~E*OLL8czo4jZSJc8^FSiT4#%v93c zy%?UhBBu5Fw55Mc30t~@KS0hNT$u7Hf(`Dm8oJjsExJ#6$K@1xmVqzgo+5tdQQRak zM7hc{R`n5F;8%vW*L!9imNW78PJ}W_S^mJtz_)&l7||m~3DKIni86DNl-rCB=>XhS zhT%CbJJ4)z1&5M7zeIBe@@bI(ZlGn?H!iCwh^u?%zo?E!^dCMHD|4hPRc_)_E8l*| zmt~fhO)3Y?X%6}K_zU74*vPPpfNsjXn1aX#D(Q^GdFdio(f z`}V>JEZ*T<1QX;e0}o-?OnvFal>4D|dkf1AC3p5rS0#5hSD zn!oUo-fdp%N#JJa#(O`!%Z+^8!><1rjtWq09KA#sck7(?)@FZ)dbN!#nkj>Gy~2GZ zUNsz)1+jxH_TkR4b8zj(!0+N_P`R=_?N-Z?nAdg8tILo*uIZPH#PLpPoWwWv{WpRX zo^xAB|C2ae|0E9j|4I;33lnSO|G=X~O~&qs6`|)#4dGHm631Yv2mnQ9$yUp`L7iB@ zlO86Zp**;r8j`rDp=;dl4u&GKn1mxs$fKU*apvtPzEZf0=yLtxG~!-o4N9ao>&S3{ zFHPC@=PVgYATC(az3C~;;1(Y>3JQhwvdnpjHS#eO@&dOeLa)M@&2=&28l|pe#Jh0J zwGK6Eq_k8qF)n+hBpP^vSPKDN0okV@kR=km+;Sq8^*I9ZWm>!hbU;spO2Ca8^j&Z& zrJ68AznPkuG_|@mwRqLFY4>+=+)S9VAsBDfB$$noAdSzcFdDcAsV!gfk0o(RibN^54g#xiG5*-l@(Fz? z1rlNd0qhg|G_nO%T9q?EI=}OEKzuFeXXu2J{WRRd1?0RNJCA=@iB{=rAqEF;HxcZZ zs9a)1OY>ZJW5THip4uk`v@?WFl74}bb65m&lxqw~uj-rk7(JLwaC6b6hXkQeUin!- z0Y4+TNsIB{xQORnB8vg6+DJmz3eie9J2bQ{G|F7#Pzk1`%>2BqP*9j3=w*A&C%*tq z6)NYMnNdcqvz_I})Pif0yYjn+FoSt|5U^WMq~vfm~>jtC*WA4?0oW}Tm%e5G5z+HQU)F5%cBZ>D|Vv-ng3 zp;eL~GRb^r<~C3oiwBmCZ^x%9@|ATv_Y#bFKg3Mi66S#twAdJ_54 zJ^Mwj50iAcwmb{X>AR6g)&Ya=dt}*9Uxigud&8>WuLQ=U3JwJ+V*sw0?1Kc*0GH~6 zA~~Ad*Ppl@9@dwPkt5S)FH&!{A1H%ZvgAwUz;x!_NJc~svz{Ie^H^z^4=MuB$!(u6 z-^3WqzglNL(^gz-;FD;wzl8@^U@@aLB-*Yabm%lpHcnPPUF08uuZeVkVUJ+xg$#>O zt;M*k>E|hWAOB#6rP%9qi!s+Mj$swZNDvy)F2cdo*Y~krm)OttfmxmR=n8=bTouI1 z&rN1%YQV3OJ{rS{dM5vBfqR1SWiyHyjg-C3p^;iA;Fj+{H<&WXfEc{jeVZ~iwCt6k zU;+Fd#k!rTe+)-zg#N%)-I1V|5-(q(P?0BxWmcnV6Ku*j0Kh(!M`~J!RAbWst{lc& zWt!=GkuRo9q29Eq3FUpC`wLt=#sVoj{ zQPwfa8L1Z`?Zo0Y*G47YIpfgLGPkAKTQS$K_1Xe%uJ{D6T~CR_OtZEbcLYYb1VYSx zRx$1Efpt?U#wXepb;eW}F7v~3nZ`mS$}mjA^_~8lYK)Pyo`&NXjfU*hs6C;cgihkW z%pVdPQl}ZS@_mwL!qpU4C_6Xhz`9Ic8}-U#M_KT>V~cWBYf8 zQ12~Q#O-VU9ZV3Wtt0Kju#*9+TeYL2UO_|_RoPL@Kh}8n?y=W5T4F;hZ*X(TNZ~lb z;<3;0OV`btKqO^=XXlL>ipk!>;eln~qIbjcfWa~YDq7=$E_|ys1iWQY7EbxYh__Q> z?|O?F0z8+q%@uI1CUXnNi9Ahat4#JGh5Glu5qO@Pm@5wj0N~#8|520J8#w;^ezP|D z4}@>Ht?Z6O6Zd|oFuAV-vdz;Q$R@xEplH*yZv%OZ(L8KWH3Ougl1H#2i$BsEM*ms$ z%1iJs5y@ANKoE$8XbM*s7nh!@t_dA2Jas?o$jeZauu@wuR9*V^-s)KB&JRkOsprn= zkGj7!ow<8IB^Obhl2X4{Vc)LfRW<&f4(6k9KD(0Td6egac73$1KnrnWVERSS4Bjl* znMTy&l3c1RKO=Az+p9AQi{Wo*jbf>;cF$kzQeVz%rD51#W*OF2i%^*l8c7&M4+hA+ zLYr(RJ82^>+t?4Woyk3AJUvs82Y`08>^UlaD0Wwsa#56aT@R{@zj+pEek6Fh+S=Y) zFMP))y*F2>HSAHVA}e&rat~{!1D%ZkzmB_(0N%YF@1@mBXhU#$m9kJMJiFr5K;eAb z05n^SH=LshfT<*qZ; zNYu@`AmUffoPuJ1ZBWP0Vn#A zg)%{^zI=9RHS$k!gs)G~KJOg*4aDDpRct+*wv4t zXU)0|0~cVJwenjurH4r$07?=J1uc!qX@e!Ji4w=pQ_^;b?$xb1+zg8)PRa9|In-4b zP*m2+^3Mub8EPdE&+}*Bhvr|dF}Xonz?iHlEB8pU+D|+_kU5Ry9Ac~K2%k-KFKiIu z98K^uO&JOdUf>e8pS@g79=od1to7)HaBKpSS-!kWqE4L7AF+_YEEYRj$wl|$OT|1l z@y#|y#zPjUnM-FiMwqZPQu?GIDuD;;_8M_O>e|e$J1=hDiD1u0$Ao31ndb$Eewj^w zW2?_JLcAA|=a8}3*4p0Zdfjz192UIInX+(4jLhcv#+6>=(0WRIGl8G2^3+6Tm3sFw zWs+Y=E+0sighD|bLJ-u*lyRQjLpFTG(F>H0{o^~ZBPoL)AW9&C1ku9#QQ5ya4n#?3 z3GTWPbc)WPbY1&cX*#oiqV4~#w7Ov32If_=srW{9Idgz4_Gv1NyYS7bjU1VB&IXN zV?O@1YjrP3;9lguSIqStYw!sZ($ImOT%?+~~zS3A{CZ*`L%@vc#Z#InD#UE(Q~|_x{)N z9-cm<&6~Ej9D{(G33;tSA>e%r$`g4*J@---+$oQlGr%8ARaPs(@u@quotNU$)p{EiC0aWz$J*w}dOcDR&$xC<<#BzEjT8AWc2zNOD;E}nrB^!)21PIDj4wTp9n&O)HvBL7+cg_YSEu^WhbCR)6-_Se=f&+lEgdWchvslq-NV z>!ZTzwktKPgiS=p>Yv*-DW6P&yI%dRak1N>kZ@Rb0I}WGI{+>a49y^T4ud8p7PE~9 z563`zQ>*^oj`}iEw3fe6e33R8L~C8$dXXGwu)&p;7e{x!zke8NChVT`dooJ;t@oJM%$0l(~4V zght*sxm}pRjx+|?j{_wLFJg0hdlTjK^lU`S3J~k9HodEC!1qhz5t@hdo#d_MqVL;t zf}J#@RpMGK`2S3};=|idYtBhC4S(2x5l}^Ie$QHpIv5cBvSf*iwhIOL&5%-{ny0j( zkp`1u0WA7v=no43Mwrzg3_sKP%+BOKH2=rn@vmEFyemn3jwRvdS< zkR!Gbk2@=5i$U44yk0-(-Nxix*jrC} zPqP+EU?!}D);f0@@$H1l6w|Lhbw!+wMV#G{<-#k4hf+unAy>K{di3R)o0npSQYa4* z*A9eT56}aiXvwDYGXm9)%9dI8pO55e!;54*n5|<*0{q~~M3E@@DKkJ|sqmz8c!2AQ z8nFLi38?Snef3~F1etj(0+N0p;9I_7!03D?g@?R}gyQQ@W^=|G*|CQpvJVL}J%750 z7+02ttJq44`m*BT`OmY7xY82K z?W9RlACE`kWWASmq?lP$@R$cF>Z(0B_$=K&+ogJgf78g37m(wqNh9lPKYtWJ7lAkN z=e7!9qkGcT-%}wy4>hx-kE66AP2q=L^7De6yJvRSqcTiSj*|vt{c0i@r7D0Cu{*Xt z@~pUGVsDPdA7`C{IP`bwg*hcUaPGb5nHgoJS>c6S=saDWYZ1NFe8hjQy8k=SS5r0W zg}8{2s)J*!h8f`yx@m;T<;A$TVmEfzMCc?_Q1y5+AYoOis2Y73wkmcsVp5?usf3QE zAd<_V*Jx^Nj6_39bgWob8&h+V#HoTgp~d#zg8<)-lG?~s+7~f$p~%RMZowme?ebDy z5?JT?L+%Gs|HzbMqP|&d5vIP07+H>IN_y5qJjXzj5^iWBb*OH|cG}gj8g1u0l-g+c zTR@j5YI-T?_L(1~0moK7pW1oN{G^~E)<9IndavxhUsS*Ac|LF#NhPAq@L``c(_Y2U zw!QSOyHm==6uyw(&oJlrj2#9=l#=qCft;9h^2CsikyzR|#VY8=*~c#-HLTs0eDZi8 z?j6oMRgGva`S-5d1JliidkjSv|CNt;B0bz|L|gK*^|(Al266^rNlTNK6GHg@N*Tke zm_|~}D6UrO_ze2O4mtjfHKT6Ug!daU_;i4Dr&bXjPGbsul)M$0x_Fo#^UstKhr7R=mp12qZ7~+%gKA%KKpmAr<4< zq+3se?m*ul&8A{wVG+wBfsJU~LWjW?=hlAZx%k*5?`FQ<*_iMI>a5CQw|Z{a{QzR{ zhH)pjO8K36U~ZpmUO1yc_5)kyCpG<~DSGSemu}CxX=j zLZR94r)ID-r>#Gv^jIxHzyx~o;}&X>egf@Z1yHcbIGF7CJo?sR;*bz-#hlCe7wZYR zz>s}R*&sFuTGslxO9kV3Az4Vj2wkXSSh>jAe&l z-KO%{LUL`IN|Mn~fph4+lF=Q`Gm0O-^-#9d-(;>IWSvRQu95}r5Nb@_ z{YdIVj$>vv!P~Q5qGy~{-v2-(aVZeoopy+chvrmm%x5A#{RGcXWXkkyF?v5hZEK!- zw$CY%KUc5~CqwEsnZTqRuW|KOSczej2`&uR$*3Ttr|O~VOz9H6N#%{y4I(UNnC4H> zMQ~`d!P6bBTNkS|xV63>uS#uSzPpfX`WvKWy`8%t2zcvByADk#%0xP8|eMqSQx&!(YyO?M5A$lQ}sR-5#?(Lbr@EuNtUC^E#Aa0IixNS$ajrEal2?>xK)eYoO& zpFNX3mdt*ef|!8Jf?$63q6RX;`q1s@`ArRDKF^HJ{q{iIk0XatRoBF^Gg2IpX^qrV zhPID-eUBqkX!pi$laR@Y7*X(}oiIES4_OrL&tbU`HVcG}htw|17H~AAK`kIng%%6}0X3p*Ai$M!H3|o_@^)CWq@CmHos$iNm=6$jD6aOPL}4aU_*J{^zki`ES}pwM zE5q9ZkXsbfYQEuOGLNFaF(dc`F4 zy(i!x{@{^**+LKHyYoOW13lU==Ovxl@^B(dw6a)*-%h^XYHb+BEo?)8!TjHSqP=c7 zHNWB%`Tj5u9K-qQ$(FD(yP=Wx|A;*jiI+%B1o&L-e{|`zJF1st-&MEB+gG9W3t7`H z@x>F0$04roi9C%5n!TJ*I>VJdR^HMZbW|%FftE!FqwlH5rCOdCeyC(mt>z##|yLX@9kUw70Yb)2U)60 zvdLj`mv1dW(0pD9Efc<=%&aHU43r%9o4l?|C=}-R>$ZbM!qCvd3=EsIVK81^5jf>; z!~F`!gj{q~j+9p@D_|2ZcxWCEi;&Oo1V#*y+f)o*u7X!VXVAx8_uq_O)&P8^-sPsL znw<6p?G?Qz)lRYw>2Gnike!Nb`#CX@?--!74$j@9PQ`9hm@Fkf@vIinVX$YfSVg_k_e5BggcM+W6ix4QchTPF`V^yE# zvFQ6|S(Xpc96-yS{ZNfU0q2U`KL83O6hNPf-@LRZI;w)!@>dcPxJD1J)iO(tkKs;? zU=M&Ga-B?wUUqX39i{;8mW#s^?$(FFX?wyu=SLB1P6;2-H~C+u%>)ovo`nR~pjGo( zkkY&(d5srI$1%n-sJdV^drR&)WyecUFo4EsoSrPjar*XXeWd=*&BhNHVdvs$kIr3W z7IMpsNZs^vImD;SE0D-9nk9enBL%BFpLE0*xD@I7Vx=8)ts$P{M0SpO+;0mmR|Xck z5yix~e1)9HkIaY|e7v$hZ=nP}qt}`FG$now@>oBVpi_0`za2B?XZw{847osQ2zP9r zO7rrDsD9dO#B&mTHe;g9vaJ{a3}XfUWE&S-xLg98zHx?v^OlfxRX^=08(Rcst2Pcb z?RobqY2n^xi}AC(JtX|{moIbZA#9}6x#sOBx6&RZRjC1=CEIB}cpJMr-*>~K^vrE( z25ao#17c9h5xde=H7^dA;7zlV6j$Za=8ZM_ULMg%)j^%t4MG}Jq@w(-4Z*mqa0aT5 zFV}aj*!PozWVwOIB^q0L9Nx5BO+t7&Y#t){oae!=)!Q^JQ`yW(^YKc^RYf{G=JblV zI*r3uNNy%8cV-pfz5-+fTs_6bz=-OuC)`|c6mhhB1K7K1u}Q+5L*uMsGb=~c^;JE3 zF-B3!`LP@&>gHp3!;!uJnKkc!W)0(iHET}xCPvPV z|CxW>qAv9xwbpy}Ppuh{)X@wBIwIy9F4b%)1&xr3!`tf5qoN=skOUNWv7&z53*1)xLXTNzf5$l9|3N7~@tWX_fm7+#&t9{|u-*Kea{dx(8e=Oa37@q76h$AX6UXY#nN0*tFKv&7AJxNq|k)uG=PKv(R@r&R(@Cst#HY) zlAMJKq@{^oc12=Qu2CXPK}R~Wy8K`xrO7i%h-9HSNQs;{Hk)pCSm=xpOq3@RcE+5S zaHfUCzFW$a8caZmVw}*Bc%vp8Y1O3ARWqh~q5Egtj&y82GPpz%Ddf-U0 zqj%V^Z&SaItQsLqtfn3{X7>CN9jTIDV1TU%>omkEJ#IB1Y@7j{(*X1#=2IHcwQ5)sO#(JMYEDC#X{^5yKWNS zDfKPt_u5^B3uMYc*tqt!6o#Ep^h&z|9^v%NIWo~n>*-wqc|6O^@O=uMoGgXQTDg<} zt7pKT1RdiH>ooVY^)OCHFC*R2Q1d>1fpS`HjVmxCb#L$kv7(8_-PeILgwz|VJ@#8l z3=%m9h`9G(u&bKC{LQH_J038_T}2-QX9}jJWZoN`v6{^F(sjZGwiv%^xV!m29g)a! z;ulFoZo#LYqC(4?L%E8T*2nrI>3d{}6Y@9!A4%g;q9LG1ZZ=g}Wi}9^yosmIb&!41 zuvDs|+>jH=ehmRW>t0Z8F$CsV4!%W1JL@Vlp{AYkg(r35FJ?rS9MDY3t35|2-5i=% zvG1(WsFW|n`>l%mj(z>xqZw=xb)h>F`iy%EsdhYx@>e)?+iErn$VOErurA@XfbGQ~ zWJ*Ot3f1ED<2gh+8hhWwdXE&>#Sz-L@{%#DapGoxb{@Iqpn zC+nsLNY42o3HKn3H}0GRV($mxnp=eSnU5X2c^7p#>1+4P1SET=mEo{CWvx9T z*0{M3nQZLR#vLW^V*-UL4tzd@M>kh>39=uy;KUWcZ3kO#)gS(l`wGD?CEB8R+N$#E zSaXfh?XXi8=04$I%;fc*F)Ft-mshqtSe4R;$y|L&nREQyhB zXjFDM%zP%)pKCf6C%r=z+n7Nn%jL&w+7-JVu92tci1fbt`VPsbN0OgW zGLd-H3%)yuGY4Mx9>u_3&vyq&9Bo#%o0b8vJl;>G2Z``wT?wX(E?_DJHG-M=ND4^t zLJE7IcF^jcanAjp!g1x)m+%suAdV&asMd&KUdiPkI4}B)^^U$|3538#O59n#r{phiiZ8a6yE48WLhqMa{U9opjfo~}nLH6JBb?+Qb*g49 z2OEJFjAu0mVcczBCQ9JaTsmz5x^;=79V6`Mttd`T<#$aq1f*V_YOeYjC<(T2L##I~ z9&=_0#1fJe6llRa{VeGca*u1No`ufD-*$gE0nAcl18#2S2cJ`tez(W3H_%5dA_>GC zJTZ+`eHFkrqg6J_9gO>tgGbr7SBsf$M~BOnD!AtL1uBWgID=yz;Zr>la^_C^@a?-1 z9mIfD>Gl;8kXDzgb1H8AgxkFgSw3Zs!t+}z-m6D89tX{QX^aGzsQ$nvM&HT53aZw**4l?hp>+i(Yi@vq263KrOo_ zf>|mq(eFs_2i_N@AFlPuqZv=cqaS)?wFSy2%%9Jxvc93y@Jl3Bq(|x`yu%9RWYHap zi5p;8=chq|(vBf^o64rJNf(B9v);~zhvnxzB0Kb&W5xK!8|`r|aYfm>laYXvE10HW zSl+1sHnaX5XgNlt<>Fu;UPAtCw|q7CtlRccSNE}1iCg8QpgV;uUg|4vmVwTqvUW5; z=h_4@KEdcQl|j&=5{Ldu8*^Pw_(BW34SrPQoTz{wHmqnE@mF#AsvmwQZBck^cDpbqnNEH=mDRI!uJWd<*ZKws)x=*yqFKf$8*_hZ2 z(v+e`<9Dne%)ugh{Uy*Fk-I-Ia3=@+%sU@yf4AI+c+Sy<(`0DHA7t@KKfk%2!uAJ0 z`LIs>97>3ltB)bYVH12T*3d;Ue5jJXGe~$wP6{o=e!u7kDKXj+Z)>i!w|%fkIAR6; z?il}nUN!rrr~??l0RWo+T{ZuUbNlb}$JE2Y-pS?P(UbCjfc&{S0uUM^(8wbeTYQjm zfdtz?(Kc|j>s}M!@KlQM7!oTVw_2kFOVck#`XTWnm>Dm{rDJBf%2{iL2Ei%8-yJH-VQi1vzgNMrC#DS`|!=hnrR@tTlneu{I0kWH6m41Y~lE3zI>Ccyh8|Fk~>+ zIkS{MQRGv_Zc@Kx*rG$%wpt*2^DkpfK^kDnSk1H}{!1rvbIslutvR!bi}Wm7t86qt zWlYRpddD)WHdJgE=c?9Ot4cIxyN=xZS#qbMD?Io)$#mUC(8Y&OkjIGCEQIUIzQgr$jA#ryrfux+xf{F{xXkO<)Cya}P^Ese+xy1TkTsv8 z|2}^);-!a-FJQg`^qea27^9<>2B`20;B=?MPevvnczyU#3of+I)^7zy^~)DGTCT;Y zjX!`DpVe?q?c7uw>xt(HK>j)7f&t{4|1zMxB8w_xaY5xf~;ZUX9!g*s+{n9!H|F zWJ!;fKE3ZY>0*NQpsiALK2w^Dix_a8RZ_A5y%6SF(LKV%f@qGB?4@TL3>$Mf<1iaD z8FPGk+j>CAXo5SVD;)E2j3{hF%m_^BpR~m0y!N>hD5(-G;bjxNeZHZ@!okX3om|&h z9q_1upR+)TDU>izv>{6#TO2|he~9%OiXbvGW_X?q0r>`ej}$d#|+M!Ai8|Zgwwl&Rt|C- zwi1w}kk5T)rtEMYk?21!3kZ#-pHeOC&*D@9>SrSjO%ztBb=F!I6nO&MEZ6W*a(=Na zw766>=cq8msMTJOQlV4NVmieceK!I79ii*%-Jf;V04UdD}9reZzgbk zUp4O~UyNOECsB*wU(yE&&+~i9Nvkum|ZjtC^;)uw$e3#a)-KTxXfV0 ztOAH5%w66d2Za-w#5&JvfoGvJE*tR;m*T_o3HCv+e;fyG)2n<~ts)k(=lIKp91}_y zq|ecAfOIob1Oeema+T$=4S%v;=REyM{pNFgf4lz-H$nE@a|orc0RImnugX_!HkZO1?X)6+lADj<>xFd#38b(r%ckng^F35dO}ZMPw|yj%f0^f8*w z)g5q(4nQ_6px-je6r~WC6ck_Cu?{Do^XYoFp&AT$3@l}!vOU=ag$N5(FsyP}M|2ro z_?XYWmU*jI(v3V+0mw11AP1OHFbEY0*FtSC4-TVSbt$hGBqc-?X=J_N-EkUxSIgWF zQ?^@lfXUJ%Bb0aUh)~hbJgw1heVGHSc-Ee^Yq?7^Nhv1D+5l7v-j4O!58}di??8DF zml%iCN*YJw=T3PSqU;m&HI7eX)6NLj>8`FP#gtIt)!)^-@!~GOmjx%~_K4H;{IHZJ zDS#!h)QCd*c#X%RSlP3S^x$`wJkN=HZWzgr%?8Xx%mX8cZ$>gtjcl zI?%MGNan6|U&xFm6*n|emIfo{vFb> z?H08>=}$$j{Z*eQ>)&|krDPxQ%AgR~Laf%mA7zByw-qcc3a;s{-MbNYJ{{2jv7H6J zZaDDlKaXjAF`c{OF|{i0U2uB99GaF3SWjD%JL26*e^6-8B|n5m(Ka6i9Suj?sN1i01lh0si~HRWfUG^heAWg5A|1}Rg)<68^Nq*^ zuoEEyWJzr~a<1lYNWR`3Z^+(#N*7O%Di9nX6@osTBw#7A23YuS#LoNpV7003B)`Nxz0A35j0XRM{&|CV$9W6{I0cK!#Gclm?Hu4N_0PHXg@hrdlu zlcpV)*0DIt-bPg_TOuW5JgNpYmi&F#vv(f=7YInaDz)9j8*3mnXjs>!aYOGiNL5W} z@KPsxk0jO9RAKc_yd}HBH_QxEr_8Ibo8qE;V92SrcYb3q)F&&C?BLOwMBg zZmOqSDwIp2?%O^fM}tx;Z7K23sAfYQ`;qapF>Ezd4duRCS0k4up{t|+lFcbDEVgqYT z|K~lC7ELmDIVzOeqcfZ3i6*j&Jxw4X&KX+I8wn2|-;#*gYQP2`dXU$2rYrcgO+7fPD$D>scLT z!l zz04(JnMu~e)A@LagH>ql{N=WUcS)(2M0HWlU6r8wknfux#V2Huoa^WJ@*&@8GifQu z;D`JUbeMgG>BG>3&_U*bg%#fFbL*jXj)iK)mH>1vU=t1P{Tk87y2~!i_*G3dTq^Bi z^Q~$W3_{f@B1%#LabtQrOfa?|A%pWMzW`pILv~~`RpIqQ@|imc`*18ek1O}&J!6ow zt$nc2wwqJJAlYk33&7yY#Ne-xFMPH!A%Q{isv^VJ#N>NHy?&vn-oRWJu66}qL8&^I z*O=Kt{r`yfgSoV;>X1iHwJ0rChx7pr>7o%0+^s*8scAH#St5qIDuQ13XYaMz+V#RZ z-QmB}jk}}aE6rm(V*Y_!&&+a~0l0`y8YKT%c^frthrW#plbdfS45Gav+W?t> z-_L{G`Jg@I-6RGeS%sfUJZ-1^^y>l^bC)K<{j(4F)yT~P%L8l2@$?XB9Fp`0C{}MH z0C7!n0~dm8{)fi^hT_4+y$rCj?`r?E2)tckiU4JBN8Ho{r0bI*I&pK{fPyysw;obi z{Qkj3iM9I+_03_VjXQS9*AKKCLamOI+Rg(MWf#fYmxMwCVobAD%Fbik z^hi8%C#iYv-c|~I#Kg@dCU0g@H_O~GZj0zpNoj3e;NagY9rQ#I60R^~^5F?-N|t=k zRxRi>2(-ZKYR{|pD@^^ctmaWM5Y-4#Q4lYIV#!{tjBo7$W4A6a$cQ^IW-yM|M7TAY zY2yzmrFHg%!WjmAsfiFpy@o8*DL2>vbDY>4u+u_f{>1|^!`VWjI$;+PpOH4Mx~2}H zfJW{cVF1XT&IX}=YS%FX|g+c0B54a{Vo|la^ z0QDWRAhG^zcG@jd3Wu#ApWfTDpWF#xlF48)0rc|3FUF1KIMmKx(On0NSr+fGzh>LT z4Zn$?e+~J}7VqXa?QIA;o2-G{JSQja3KyQ|KYDA~z6e1(pi(Lo#~dRYEM*e#^eO?g zBH)8ng$;45fndO?wdc9i&fx_FmkTb~8e>%f!-82&TVq!V!iI7-373}4Sid$`sVNZI!^;8kAG=)V@QOkk)Q&a;F2)Ss7BfG|LbR+D>`cKXSeXw(BQ?q!S zE=5Xl)(4%)0L7GYyLjsa+%8rHb3BGy$ASzzTjK*6%CA?oS+S%a#O_p68Z*1;Iw2^?5PNIYE_QRCPVZx4K&`=l~k{{GE3O|_Ew zm=^vq22(bH`(i?=JBUPxV7svR8H2Nu+Hv&NswJRLIzMkByo@;=7FpBWlqEEbeuh zXZ!2zeTk8-lX$4TJR&sLv=63URgKKcyqL!N1R}AvdkWr3Rx(ME^q!J9FxNE?_l#iv zdcSr^R-H_R8YT?8Z|qh(g$)Nu1&Bd1sQQHaPd?E^r8C(&anlefty~UR0j)OBp&9mWkd3BM#mb>A1IX9Bb4PN)gG@08!Wwg`H zkwuv`PLf60I=4uWm38rWk>GK$7;??!NJ|_1_&H z+)E~4zb1)9^@uv<>+i^w7q?>!jyHWKE|TG= z9h3>ut^||@!RBp5#DWEO+J5v;BUl<{#xgD3ZiMM4Be~=?Xc6>eatq3Pev zKPC~iZPp&3R>j{WhAc-HqFE@{Lu8zeGeUh`mJ)*^NZo>VbGN6rKMM^@ zunL2Xh%S;VbQ7qB}y}70Tix2E@fxpp07FtJ0Ql9zU6*pY5+2;cX3GRroEqI+XIM$iFj{#^29WEhC&K}+!PWZq8t(1Ha zia7OOgfGd$0^I032XWS|;w*+lLs=$(Ce!Jg)Y{$>0aAquV}4-_ zWhNaUYTIRvCcv!Qs3@Mp?R|QuL=x>xPFw#;(i>8tw(c5Z4ec3DWl})Tc$qs>v*hE#*X6rhRj;S2gUXm&KFtuPUv3$DMOxZ74$tkFf?kCk zt~5>EaOV8xfZ?W}TlLDYX|B1Jefc@9)ZAidH{ZG;8z=>}wIY&NA2)M`q$_kPT^WW8qe3Li`57=iO%oTF!9*>xN+2% zxFV{Es3Pi9TuJ*bcnezN)J{)3c_o$g{3jv54gGkGkjCaKQO{_63Z6m3n(^Yjrofx+ zD6yhb0z=Hw-e|rVn0O7gWOl=i%bqQs2Q;{aVe_8k+7QB+U&x+bOhM<2;svLYyYM(X zBh#Zvr|G&qy!>jtz8dk$J7x+iyHCL2g^#F-0$RE|(=|yTJ05};mSzd7w|uA)P2sF8#VXlBXRB3DiR*Apam?)4xdk_hy`jIE=4 z&1KF*4H%zxAjQ;O;sJxqOv<8FMESK4BOKT(Yos(-QzGl@AV8E>qoQr=OYE) zf{W2ZpmQw2Rv;+}y*{qOWu;)u+TiGwn z9z2?ij}=Q&Ou`s>w?rFPak4HSb-3p^rpw3kITR zXQ{V<06ytciO|j2TE2E48|iur`~egjxMjls5h-Z0&nNFDpXZJtGT+6hw22VFQ(^gffCrd`=pl z&C+?tR?O3#j^UylaKhW;(h}UCoY(Nckk&{0Yfw8Rz^*E|M+jxHp%#I6nXpz%6X)i^ z?mW_^<=DkwD@6zvIV}LD#lL5`VR%ZVPil_z`kF_^lkUmSZ%;F=tyr0uz0Yh&_t#>z zv;D)asDFWMfZffx8Nr*p7?q@kAt>i*s6*w5nbiu)JweUuIr^<9h?j<-Kz1&0TmdiO zpcb~?fw>IDo7ExzNm|}h16(ZUW8))*qm-MX%iM*rMt$y*#==h! zk0!O|quB?Um1{)`A1+aTZiSuI0NQMPtj>v`^Y?c@g4{7vKnUzMR;Vs>IugWU-}L*Y zBK11o8y$IJtrVag}n&RJfDeY3wri^h=JXTu=NrK?+IgnN+we-=`gSMV)1YweQnw zP4K6iq7LS1Vt4(S#xurW;BXwtP$^zdueJw^Pc!FvT>4$@_hq#j-?(SxcYJz*&wkCg z6;*G~-v+2E*~Z`Cn(D)9qlGwZOcjYLNU!&|Ihcxxmed0CsnF8Je_j7No{eS#zZsW3;Vl<1uMV~F{k;=D zO<5?MIS{-4sw8B*W*1$zl}NABjY@^X@6~z`d;< z9pPq5vVyUKp54NMGwJs7Lv_1tRUq!<<`Z9ky+ik5)DoJA!&wbRFgNMJb9KlXSZTYn zkeQ;h_>Qm>fLR@2+0Q$+Y^R3^iS6c+aPf-YH0-{c@TVd>`%;<$tCX@lsiJaiw0!{R z6&lx`)@9T@A)uJQMggTnNlS#VU}O3`SQhDgZ_Z+7!yU=!`opX~nCCxN7_;dwqtFg_ zsWGwVy#MBzZKMQ)x!@i=s!{EPXq&hy)V(F7})Bh$l&t2>gzS_;V_zl2zmx4`8O zH7k4DwHqFQwK8eMSmm%A&za5;k??-msW!yOGj&wez?$zBC(wQ5iHUPvjY0xOsiyrz z8(TGWWj-R5^TWPo(b$H6@2lm7Vf7n3r=LechG=b8FUbpo70jjaFc{0uzCBO(Fka(w z=yFB6Z}!2#L23>}b$`3VHW`8%0qKiqQ_s)5romFkSmkJ2X~mitSKAYb9x0p~ zZAu zo@q2?aASyUHS!ZtV;90cioaOr9sy{twV$GFQm)y^t5KKtr%&F=m*)aVjcL!!ccDF7R47N&XK%)cP!BUv^Xw)-NbRpKzoN@$jzkksSrL{^DI~V6Q5wnl%Fl#) z4acEua&C0w4g5;&<-Hy5@BPjJ#5}F97d>ju`Jzek$mYDpv>c7{?%-Zu`^uRR%{h5o ztY!Zcq@N#J=luyw!96<>fO_lX`!ZBdnq{`wRXU9t#u5Ek+S{X-FO=s`YR&)cMhI@N z>_h+OD%kkvD)=u0*?<4?|8Fd~L~X{thy$hXw9eyD=}aLxnk7x5LPhqJAuVI2vW-GW z&H?EbK&&-m^KaXwTE1!)Ts}9Ay2!v69#Jte}m)4G24DpJrz+|$e zhVKQ3l_N@b&_9ju+Xm%`l~UQmDl3r=ElOCjI7I00u|vL+Q-dA=A1JR-Zc}CjPaG+2 zoF%^G?CWneW9n4`1yO|*m*=NOgUw|4jD+KXExWl18>zZue(nc-4_F0=l{gnx`Ka<1 zqvow9?V6vv_O|cK(fvT@PQe|#-cmx0b%^UkWkY?itv3y)B4zv9O;C6o#d&8`)CyYD ziW6t!E7#@A%NjEx`G%s{L`30uT_2Pb3Mfz>{=szdA-Nz`gf3h^86lt_$n*38J7V;e zG}QunIdf>?lu_&5=nql33@Ykk(#;q16_`%xSDSC{{B9I*`2qw^hlAb|?t+X^bc*1n zQjP6mlFjge>e2DXOtND$g3SrxQ;CgmNUDl<9-bTbDbfnhbK55F5^^E-gKll%&E z39CxE@C6W6A#E*IME<;#mWd&(9}k$bEzDmbnA&DWFjke*n-~g(%nEh`h2ZFC)peu+ z3Jbs;oQo(*=&s|TA9Dnq>pp7^2ixZ`{p@OQDw+s6AEm~t^)=*LTb!cCq3meuH-As& z-7L?vwzLL>b$<$|)s9g8Wgcfm0;RInLRO>IeZ~L{%2?8(D;bK7AFv5Aj(<}rYo6Xx+YzJvw&Q%>l=(K7GY)>w4rK&(~`~(1U^jPMR`fKQ~ zD$-7Da0ylFi;aMXJ+v;tk1R6O)P0{^&%y6+Uc7`22aEHWm|n>N8#}E}H`4k6GrIeo zc;J|{TJo-6lIun^h;3iVfuB@KCr2~naH7FbgJg~-WB*RGbRJCdKbQ7L?|}2lhI7Lj zL_5}MH7XnoyGg;CIt5*ctHM6oJyQ&nOo6a?YP0I&?8ZM?2{m}($d+hA#YE~t80Yo6 z))=roI(*rL)GlOw=f!%31wbEL3kvU=##fWO#hFSmAmrD*a0c}{?91{0*21J$M=-}8 z@o`fF=eB7a09`ASwcFzoK)}t(x2&8=P*6i=kjQ&V83)PHh~H5(g|t;sCT0#0ws@)V zlHip~kZi#7Uzh^UmTjZJ7CZrecL4NQ-oXK8E&(zr1O9pe_)6F@ChrgA;&c9VT73K7 zINwh~U@Uqv4ln1hWZ9C9C70?ewCAoG@_x95c@4ULT><*OWcIfWaxCMu0{A2mU zFs)%`Y81PS}4o*&XyeHe9kN*bsBZCCK z`AlU3(_0Ba3vrgwQnKIqW;JClw#;d9;E(m?G*!;Or^Ny;d7`qw&{0 z5&NOd#BRq|TM#L!wMYIn!pU>z4r{E#Y&&B!73U(W+X%yZ2s2^zWQ!SL8W@J%I3~p% zYCm8ZFdW|Kx5uwbhA>CaypGS{&GB9Rvr;jdDhZVgC2N^T&oATJimD*)OazN!uZaxC zfFwfjGz@VKw2vS#J+933Y2#EdUmYR=01X9?cwM5wv+#H|25c(@hhX#(sRJCL$3ZBc zmuL+*9s0JP;HZQKX{!PFD@6M&v!FW=79>|=u8$VlOct{54y@@A&qN#dRDYrSCa&$L-AFA~<3g>Mq!r46 z&Xi!Een0Un`#6^r1OJ#q0+N|hv(3brV)&0ju*&`rCDihDP@u25Ekp}>v5>)Mfj_!7 z`9*h$rI>SKvI81=wZ(FSF*EX3C63tRLz#`gh1;od<23+93HIp*E_MX`n@`+bx~hvb zTL4mnwpR2+8YavEhX_=9UkX~!^{3qxCN75rp)h9A&WQXX!y6FzpZs1^&?A*Qm9A-6 z1|!K&0`4~hj^$(|h)Dpfab*qxo4`m7K^lVuXCOU|pqr>LApoSz1(_YE`ul=j*EnpK z;!()%95X_MevYd(Z3vyVlS4X)?9hMO_?w_x*`qbu}PB6FWar|vDNTZcQJMaIpsnCP4gWFopw@h!*uNT zEd-~O4Cif4!Lcp+gctcyVUK9|j`;-p8LCwY=wsY z0B)BnqeA9`!L(rSjZ!(hg04lOu_I>C1-_)PvjkP~23oI(Udna>*r}&QKUG0YQrAsw zq8rIT1Yl(_p<2pemAx6JKXpl~Z`CjbtpIF{pXVvN^r1=ls%)Yf7bf(~cb6fPnFw@V z)>B<2B1S+v)wTVK#ZQMwF@zVPS?}TCFc`I{^vnMap2Nm=AEHt+ z=kFlBW68zz@%9oa_iAn(J;j!Yc?s`HxiG~;t&3sFk;6}5Jyu}ne(DVaEIxdj>`PG_ z@3}ojjRGx(ES-2bM+zGrXSRVnUobV{F_v@c)GtfM*^0O`a}WNdCHUJzFn3gu<@iP! zzH_XiTo|Z8uDLQ=t`G}TBs_&`zwrV9^p#?Mj?D|*v8M_87RKNDfhPtmeq5(FVhw{6 zXL2>extp&zED5>c+5_QHA1zv-FHTM{u;{B`T#kw~JcM@DWBzOh-3bSZzDnu2T-LBy z?Gn#LEu_I4*tD&ho-H@2C4((;4M7AdSqp|p$t5O_N?-LM_B4!6q|-~I#Y5xo){NM{ z&`7N;lLig8;lBe?+erX~7ul@GIIRvaeJKJFFPnNwT_6CEo;jgkT?p;_NG-!9#={14 zUwpC;m@jP#%V8agfsC){jaK*qD5A@3%eartg%J{YEwO~Ey*UXuoG@Z)XOZWLb-hS} zfo7CpAW>X3v*05NRAttN)DGqxqg+5lY1j=scsoiw4R}%N=Y?~W%W)T-SzT{NuQ*g+ z80A(ktyVS5JN?l7Vri%g7#;<<5FQ0x9@YR8m^A2Q(~CY)wK2vMmN3tB%}4D6u#SfY z)eIJi;Kt~6s4BYnuOY+OTDa~~Fn~QoxBEBB;8-voT`1i#9@8j;kKi&&HGng;TeEUzr<7)^M)^5wo#0siZ46>aORk zyknxXg2e`DY*qLkZ_+e7JRbz6P-nw8wb3))HY(8=7wQCfrb#7E=EHUPQx~j+v1}wY zG)IW&ItKVo=p`cmY0S+bRl4>P-xC>+p1zLotnF^04WIAdNFOaO7;*IgrE?v27TP<5 zSvqSbhguSh_$=z)N-Pi!9hxA@j_z+m^YI4z%C(~vyycd>9TVl1$^neO<3GpEvAq>6 zc{R{Sz(9nro$KC-{DH@4?96XRC1<4FoR2me8I6Y9Ld;_|f3kCMYxhu(yDd^3iDX$W ziYE-}69eH6b+*5C3ltsVsv)7~nUi&7`iBC-!kTX_UxIZ+xEMMEEvdq%)P)pV%ny~_ z#OAo}8ovp0sNc-A0K2flnBKG{%hjQ?A6_7qV}w>#)r@UhCsd*9yz-R4s?FwdxNMj7?*JL8jqta*tgDqo5-gJyEyn5Js}ri-S=s zDx+GD`A3=77S>h~joj%w3MeGMD@JEt0v1CM8fl!f zA?5yZ-XW;7@Dh?3ft90hlUT2In^!wfoL#2m;+EYnrwOy;$W0Ui;wOijZ|NRIEt^c} zmes-hYw{`fXgwUZQbIdYafHTBlwCb8lO-nvNMCz03)j{RGGO)%qjny^!bPXztmAUC7wr1Etk1T)E z)y~wwd@mwhc_4J{NJC7x{Z-AN9bW@rsE{a^@AW{skHl?|11W)VT^l?cYdzV`wO4xx z3`4##{inAcn6~ME+$9rB@_84(3d;s9=3XVf;)>?Hk;-)U) zs8>7}Ust~s#(vLFFkDA4^yW_xU1aCJ69Vh5)+QfZARg=40uXMHN8!`36v=csVc98 zt28_bohGxEQp@zKq4Qx;0!dmDOq&fdZ{sF!gjq|w2{`la3CpGWL91Zb_}#4vLbxdQ zmy16|MS5JsVnmcCt*Mtgm*R9RGX{dqJUR2)a!n$wZ3ez`B15+rR7r{U%_)a!MY+w9L^j&vV z85a$I=<<9vy7rUOfi1QEBt+;;uxH!X5)<*I!XI_}k<4z)NG8wCivDSz9eg`KVt6_B z%ZDw-sj*&+zR9)V(W0p}n?hv2s(*P8VQ%1o+)0eXXrFh2u-Z&lNjSxs=sR9Xp1F2&(OZt6%P%PVYChfSo|h z?mNd>vX5}&j{NTM4DdsT>9I0b*D9hnnuMl_<^vYBI@?1eE7Z7Nbs7G(?CUO%f!+t$l(`q}#)5YG8^DKCMVg+XHltq?>Lw7gYOSd3GTz^4Yu z{c61#Uf8zStPC_)Q`zQU5iA#h$(G(datqgg#~a^rysk~erJue9z2MSPd(DIyhSqXV zX+fGx*C^ftiGK`FIIx?2bE(ktLWaRSTM+-gWlKusu!hPe$o$*k-tM>PQ>d3Wz&(`p z=JhB|z^xhM`LD-E2L{%L+ZDTo9i8FL9PFgP9rzKv+v}aztwgr&i7`gg@czvnJhL}( zug_doJ_UCjzlL(_k8dF{bXIY|QTfZ5{4e9s#`oNBnA;A1b!f@1XESv406Si|6`fB{ zLmtdl2Se$g8`;+->0q4X2@Lw7EB?s_BZ=sQU5Vd^y@y3T*ARLDyC$3>&vG4L2e?(* zRYeh)EAq3Jbq_xpL(rF6_;KI=^#K1T+W$9P^j`)-CsRX{{~xxf+zikE`=1JE`wvL^ zFX8{cJ~K42w0CCu&%0ei_CH;F|4C;Z#UtsL&Zm4KA`net+mJ>8u~bB1Xau8GWW&}} zk)*0woB0>d`fM4cblki%l^QNmIDU}D{uowlOv*lN!<6B_`ek^6dOl&U- z;lFpPIcR>2%bq03DQ3^gGxnCp=TH(VgH9Af>gg)goyPodI1En)qP5*ZZy1Dxn0F`g zXkZjB%2WH<1IuoWnF3Z%Y3G!ZSm>`5tkCV1*y$zpDBDUZlf<%hSx5@@S#lpNDs+K- zrE8Y-2Q(`aITJhK4C=N-1sjY-r=ezAmRZ6PE%4H1f~9UWcj&R^8a&-_u$gS6YR!id z*E@$Y!_l;LM0-X`RNN-*nMK|x@9VuXWPz~ctn`%KA62GzH4GCmRi{H%zc{Q)I>Di? z6>Ug+l8uL8vpnOvwTg~85*Ye8XXLflD+Shn@m~aZ*TF^4x`VC9OCaSysx8XdRkhz# zx@Oy*0d&Rzbww-q4!jI*z*y=7JzW|@#p!xzhCtn3F6Bt8^Y}+sSHA6n(NbW_Adegg zv-@%K^extGaiu3QQOnu+-nNgypNM$$9S^m4=SY7u@0}F+vK8USjuJo{{SZxj2Rc^K zsHY^93Uk}F7c*9ly)l@$*BC=%co`DGC`1#$?C6T`AP^cWGM+wW{9aX%0hjEI{w8zs zCGXx)&K*ewwn+~{%T*C`8Ov=U#Pd^~awd86(??^}rP=udseG1Z)HEtwro}H9j9yJF|SjY-SYq?o_8&CM{eRv;4AwY#=yZf{`Zm_@2F6I^w6~dp>X$OLI7+@(^k`Whf#llm9Gn zPkoY&gVDbR=jlCtvT8+MBEL0xg;- zgsOq^Cl$?cO2;r5mvb*45O_YPVrM6sBSHSrDBwP>DjBphda;vCY3bd$IrpJA)?S+( zs5xuz)C+V*aWfaZ)jtrghA-aDVlrA|cq*G@QRYF@7bhXuwzYBmMy(t{>e25TQ~74X zXJOw_2APKf_jo-gGR!g^mcWRw*WHIE`^s>JBf9e27-Pl|sM>b7PQBkfYbkU?s0kKY z7%qd1>j|7?Gzn4q;HQIk+Y-yg4ZkOj6uOOt_Nsj=Ae;&bteWntUnjOa@8+wnO`c{B zU(flQr>dWwDi(-CB^IlKpR$dv-y{+;Nb>!8e9MBL@%N?q`~WW;ui3q8!Kj}y6wA;0 zfPZn2bk`-fy{d(DU*bWLzmJFbz}wEy`=nVzuhfd|mD3nLG#9mhnfuSZ&L-+w7d2?(MotBmD70D=sX1&1>IQ zi^G{(&6>HzkyaAdRmEPGj5U?`2E^0@n)zw9^!1*nJA5PstzJ64K(eT zL0@j1o9sBmM<*FGC!XB~4BlKNRwl)Vkv=WK5)C>r?M0c8EJQe~y1g@~u1GNw$?09X zIi3bNB|a%=&iL#}x0?pdi3Mw>Q3K*(Ph%dQMUH|W1Cc@yVV~M*s9k3mbD?E1C@Ec^ zX~MX7nEVVX#E2O&MrEkYdEQ6PnR2{3eJ(0{x}uv7Y3H9hb3r*pQJ$O>QbKv6u=7MF zkxfogKoBP!BjvLaPBTtAQec6}GQc-{s8k_NjVs{!E$m}xDwzaLdLyv$(iH!t<1cF= zMMtMGdpsgaVUZd;A>WsW+ z9Q1pu+Hd+}PLkm z1bXDpkRsbRpedTvr^@}Q)yu5(Hk@$MvNk?K;MD|VrkdFeCveI zB44wJ*XUD6X*!gD9g!ZWWtGcU{;XrZvyap=^xlsq@6k3g-s}i$15Xe}6{ZhCu@;$= z<}iZKLXE&atx7awgzWKR(8#ulocR@CPP6Zwx==@xYCTeSi`m~=K#sk8m4M@h#lj$9 zl_pRylMU??Vfg>N`&_B?!{)18x9pS6aoq@Y$x0|tQUm!wG|ye~`8q#sxausDXO^#w z5^wqm6;fOT77Bo_2p#IPSZ-DBC4ZWn#L<0f(vOR04r+7YWExePjkzNTGm|xyO>*GF zjU%T_qeE|>&!)C}*RZ!7k)+iHB%*JpY)bh&f$^EkyCxnD@IKH&GMQZnRX{iz3JbH`#Q z555pAs^f}t1$g5he?a}&r_S8VMfG0W?3_bqgv}b7$t4y%U0!a+i9VRlwPF9{z1l?J z#{cKOir8%B`Fw-qlnY!>cx3}!#?l;5vuqeo%B`|3W22_crmfIlGTqWGvX z=+HD)CC2QMW=#b`7GbE~a2;RT|E;Rr{mxs+o3Lv6c>cljt9@F(HMC4!#m(-D6f4|k z3i)G@Ir2C~LgpU%XRynv2IIWNXa`VY&H}G;)tD(KaSc4yEfdX3ILy*PD_%?7n80*! z($T61S|*ty8mxt(DO*+cLi4~R!SuGk$Q{XIq=cKipW2>>D}421_)9co=jd7qhId21 z5AuLu^L##(eV@7f9|WA)!*H%8sT47 z-e{(JJi<{p*%4U`H8tV82irw1er9Wt(cE8E(GlAvj^gfFvRPDO8!rWJ0eyzbUaDOd zbcOogk5;8)xfR@IS=8g~wG=Yts3A6S;EPgRkkyt^x_il97kvZ8_x6jT-pQu0b8fm8_lLT z>i}N4=vO_{)wa=Rx9!rA(ppwk_b%MT#VlH~TCc^U$>}Xcgcxy~Hco;I{p77yj$1K=9~ ztSXKv-?_%w8z_vkN>KyjhEt03BcYa^ayia0rUNoJ<h$i@@N-#Y8f^q}J9Z_B8mOgR$Q68T zh}W>I&&lUD-_?e)z5vfo7Rr}h8SFCyo61P!cC*&BUXbHfmclds{hiX)*LlL2*LuFr z&v<+R)ayK67sj`y7gy$0=`HGTu)mC46sH4^M$Q(@RYyN3Ay54>XM)CUj)sl&KGJke zQ5O&9#2_E`yQ@mpE?oty4p&8_D!m0O#*3V)9oBLySOGA7Y_|=)eCm21k#tr@9Ha`e zL3%*${Xz)*H)Lc&o~{3@u(N=QBVGPB?ry=|-6gmNcME~wmf-Fl+}+*X-5r9vyKB%u z2=Gnr-rf9n?%n(KIelj4oT;a)-=692>bL4w=68&UE_K@`R1DKzq|52pjr-@(uxiHO zi0a14uc-r+Qs&h^+`Mbhx>Zg;l;^CKK5(7=WD`@nm&GZ&?nRilMyBsOEG=a}EdO!w zxZr9kuE{OkFkp45)w={uk?Rz2cY6<|Nmi7*Q-b*J`DAOamYUVHmbVpbrUn0gk64!ye7pmYW?BR^GzOH+ z|0|j9&wE5OBNL8)Mbwto0G*DPN?l#O=4_WDh{Ih4I~*~A8c?5y7>8D&etE)NL(iyaAMI3`!>Jw$t*`}Gw*Wmqji92 z@b$dDAgbVcywfI+Z5JTlC?j#bvP0p9sLVVkr&sjo#ZUZ%#l2wB8|$`~#>N&GHv{@H zR9M6hV^^Laz+gUOZa!o9aM@2$PHX}9`YZMs!k+$I?l)cBaU?yQ$B<%eY=NL9E5k&b z>xqd>S_(Cv*_7N_9>m~i@u)1F4Nv{20e!4HdG-O z)QxyP*qfP2L<$FpA4#kpmO+eC!Mm#23u@^4e$23&9mz9|X`yjHg)pVuZCG zx~nhAXA|115V+YYNS(MKE_WCoFIMB~z;kcP^LyPE`p2+ia29aoeCNYMV9~Gq`1<5B zANwtNU8(AG%%z)2bX!s&$#-$K_le098G4t=d9az15Yr{ZF%)@h;h5t{HLO#dQns0J z!vq=2ib@-)4VomTm&8`8E%qotZ5fzfa1>H_i6?b6z^wtXlXJ+}8OYK{(7H?rzIFK9 zBN0OKtEy!Y_Xw>!w8c)Dt`zf0;E=M`yhIO<>I%yg8V$z3 z$LRV5c&0CHQR1Fj5JHhh{TxY+(I*giTAtH(`lO0o7=36gXK3a(kz-GCn?qm)NP7(> zkjZA0ZyPP+Lk=lB+2bYAAMw&VLFiWpm$QSZ(pQM)P{HpZ zIxqdv1@^vy=>x`3lpsZl=bJdPf+NxZ=zbS`cK($m2R$NmC)_QVp|&3I{sl9`27QAU zJd^Cu2ME+z%Yq(N(bJ5_{_**(vQEZ=?&lDVos9&Xb!&8dJB?|Z%gVdu2p7+Ke$oa6C^9J{MoPS0 z>eU4|y4I)43*wkZjMe_KX@WKDlWQ`=cmYw;|?22TP)lGh;V_5~ykBQfmj1Dej2wcsXs)3HokM>SBP8t!u}@^s6lFC8hTY zube5DmZ|auhWv0v!;kfZ`wm(TvZfaM!J%W}cC?f3BntJmmOk|we7>fNS)HXa?l_U! zYSZKfi{R>9+RD3wFv%m+|2XcGd7);nwR5qS3!VhU<6^-bC}!xLCgC)*vSw0mhla+d zs!^d1fF?;Ywv@0;`NUGtimHSm;YZLJJu=b8EG83n!_UX&Q?(*Pp&s7H{2=i3Nw?Y$FG=7ZaonXltpwhDx#OdS_Q1w0*@PH=W{LXPbh zOUOk{??(--X6}&JF4u8hJFKdQNRS2N^qZ2RMoXbqi8{3kRO{g@pIDxZA5#v3ERqnn zEzc6!_{6MvesZPd7a?Xoly{x$Ux^*QBr@c(7*mF#!Z0hUt__-@A7N8eZhP=G zm?dE~sA6fbv6i;&`vlM>;bo}#fE$n=1p|=4A^hW#VB^Zb!pOnM%xGk8@4#SgWn#@F zC$1_iCafx)p=D`}H-!4))ny5ovw2F}>8rqQ?#lqcr=&2E$0$1w)%V znmNYvxu=QKrOP{MDOJ$K5zmy2MN<>gyS!S~7uXS6NlqAQjYHpMpCAw@x`=7yF5Gd_MgbsK|%5CjwX5!*1hFR(xb+f+zl3~>_zRdb4&Ud+L1~n8Al0L9}BJ7z8a;W+4iz%IBA_f}$_D((128fu}H%CEQBDNWy*5 zOb{0dmpSbb|3Dd#1D=uTn0~;UyQc# zO!%!Vy|=eKe#Ay>r+=zT8vlK+=(ep3?dRl7FFN+g3$E5Qv!u zkHbJWyq_6SjT?*Nx-(dQGsC-;FNAslbo30;s!5ufT{;Jj6a+B&t*|QJEeTG@`y#L< zS{WR3D%{^EO$mYak!f1kL5yTzkj)mCD|)712&LV5L!@~&S@F}n3oX**-Xex-2LUPc zDC%XPV+3}rbuV)BCo)cu4AwMkC(Dl(>6T+!tRsl7^6x)!*9L%#!oK=F+qc{yO^!KY zMVll9Xi%D8uzqpQr`}Vebfbs*=`kss#&SPuFNWSt^pi9F$J8te*a+C!#m@+20(i_y zz13p(v1LlM(LoYg{s9al6Y26G+&cEb$`Yk=VrIFTb}HgC`Ii|~k=y+4gPe>md=-@P zuSNpYiXDD!Q2KoG-N74 zxtJ3ZX9bP6A#+#B=Zzx6-~lwQBNn>PTLqK-)ZhcMsA`OcHw>E2erTi73|3@(O>GD} zS9m+vwngkuR?^MTF{x9Y^E(waM&HsAE(qcsc7FyO=RH7D=Y3NfR6|0bYZi$>Mp!At zbka~6uZkSnF{1yd9hIJNJ~4Vxoe|?q6QUT7H2AJ5!{+!4HSYnHbAT6}hI(}ATaMVe z=mAg}s6#Z+7PC9P)#HVsnFr!++v>hNZSgZ3E2(9`Gv_Z&eF)uZfSy{o>-^~S?HK&O$aKdHtDRWTYM5kJ7 zB=+W2!a!^h^#K$wv)SIsdAauYnW;}MLk1F|Di}^-_h3=zQItpjkXc{a(Cr%H+K6xo4M zLaW{O_E5vWu16DL1EKQW)TLlFzDfFW-en)N$N1?hR*Xr6GJ+X}E{vz|6>M~iSgEa@ z^7$czhEOKu_MldeX%5Ch@~|xdqzDEaDpYOx*U@#Q8cJFa@tChcQ%2#qXG*s&ty^Lq z0^dZzHF^lC!MX%uIg#Wxq<4&bW>GV-%4F|q4Cn$oCqk8~l3aEDyr`}24UO4Or1rF9 zDc~NLD#=aLxY7!xb8qJs6xbFwPLd$Y3&wc5oLp~X5*!l>afkXD16L<8sA0=lN2f+*LqW#4lR zs?PPeC;%0K{J1@_bW6r%-+~j?#>a3F+?AJS_=A+@>(wE5(!9qviLOWeZg>1Q35_Y{ z*TS2GQ8v4@Y25@kshV1AwL!Ab8~ZSUAJVyqjzD{2@mMe$>Lb65`h4;q(0eDmj5oqb zK=|Y#XM0UX<0?riV6;7f8Ck*7g9Y~8SjWbdh7InOe4aRM`in0~INgl93)phf)O?pm ze75K%QMMl8ac^}kNinRF#w>PaIkvj+(7lCYH;3a+t01ujJ`~ehLJ+)BZ^f_#dfz!& zP%kQK=zZgN@0XjjIzi}u47zA{nm~@>ZQ2HU^-o8=&e7HiVeCPeD|hnS776u25uD#Y z7eY*FH*k>Yf9&YiQ#yn%IPTTVy=_@6QM+MkRTl!GMRhka0Dr@uE3wP-`(!M&BSl_oegXE%s*e{R?YE zF#+M#xarQR_o65%Q~x-URr8WlDBPrPTTgLBKA88|%RHy4$KBV%Hi>b=iv<*WOV3No zSPXb?GK;vE_U`AyAO5UA$2J2kz^FSqp0;+9D7BsNOiB>%d`zv@#@5ggy%q0Gal7)j zb^4~OjiJsDgfG*1OH?jcVkpumcX1v099I&Lq41#B7`ABTc4HfMY0Wq{o5vZb$frK! zKVe>s5G|XZz47L-x4PlBzlH323-*yfhxf8y4ol#3$0xp3AyQ|$BvP3k0^`s|xozyh zh}hNzhNi8!M5L#+s3ZJz5mJZCXU2=9)-nDOSx5pF1@j*?I~+v<#D=rz3!zoFE%c3y zQ5-NKVlGs+rc@-<7#^p6b$tS7t=d4!3G-tis_whK+9)sRZ@EgM$d5^xz)y3&|<$K64nhL>-NmJr{0kbH)MN1fN z-uzlvp;Q;|p1pQqDblMkwJV?3bpF$@C|P!aw#;e$uCXN-bo}!0ZQEl=#t`waN>Hh74#Nps_=@z6TvqFifw#iR$m2sVLJNjj0M&)BJ8^jq4*y zhWJ_WblUJH;Snf?1H4S7@H+~mey*K{WOgq^?66MKAGS6DA5=q58eJX$_KO=p&RlHA;HjTSm8Y|1#`Zn9p+zj^hZe?hgpc9&jMdpOwi6cpNv zT-6?3uXD&L*!Xd;$z)jT#?4w*zaqx={q=>+PfyGxikC1Q5B8ZGgQ)mv>2|Bx=N(0~ zG0N7rXS++98GbnJ7Nbu0r@X44_grxPaf;vCP6p-o_;V;O!Oim3L`TrC3Vg}HX)oM0 zEn6%o>`IeyU&7Exf9g;(YDwVT65p>6I2OQd(pVkMqCZ*lE6)6M=qInt-Dj> z{b?$ogdwrG&|cQ8a{aU^d+~IzxxUG?2@}RdX4X3*Q!gMZ@7)}#@nw&&M9c@xghzZC z_qHmSaUKE$$DD?xj%$uX*kpmQ_Vla`PdLAj<`wO*EG^LIZgKUhZjnR6noFO`solFB zE$ts%{8~|`b)2QH=qCxrjIxZb!gKxcg4gSd^>PKw{lScv9S2LQ-7SLm(lwfi|WdLcoFr zsOLTaJcj<~jair*8e7>L+cU{ZiHggsh$kq^M9nh)QjZSju2H704u(%(>$hYmkgCpL z;5R`}()zSRYwO(bnu*f{$n6qJKQS@sTpZIj{kARVW+or^Wv#&}nclEOP$1%BRiOLy z9?EKS-Ah&oq2~+L(V0L0gQ0a0NDn8!;i!`pTwa?X-cf1uTm3tS9PfF$?U}^U$f%5{B5prT%jma%jDfEZ+y2J(NCFfMIa8CB(7!ZKMflz_ztUq$Hm>&lh3kWwc zw!Zc(;yRO7bPYdyWz%kW&FUrx@uC{cB<_@svxts&j4+(!$m^(2SldJsm6nEVQn$?! zL*Qi%x5y?0Z|ebb2LwSAI#m@yb_p^Yb$OVIDnaT-EWTS;@Wzv95Td`gdFW#sN}kxc zsidI%@H52s#7amVmuk@3yw-HilTUJ$I0IxhJGx)(5od6vh~ zHWSmX5e_1KkI99{XT9b5P&$lbfpnk`m8z~(Y%x6^@Fo<*3}qFuUlV-QQcOk6x5NW= z;q&&|IVrqc1~}w94OF)Vu=*FJVJmV}0sF*=iZG4I6pry0^nJc-#)v@*2$+x(?(n`A zt_7R1NdDP(7V0y=8t$gpcui6AboQk@XSPqsi!` zw}on-V}u3~qxxZdmGp5oZ?wK*r_zTjmR5$-hv7MN_Gn_r@I;!htk(vsv*ajS!p5@( zZ&Ovjhy7VeJ(Y}61OsTuo?6Bk=z*Qxat-rE^T3WKR5dy^R*_RV3~w!AZjN}e9xpQ8 zv0j!}M2%jcijgxU4Wb1kb6qOd(|mCKvujHn_WM>p`!%+Eg1=AhC~0lF<^U2VV_`r* z@c;2|tSm07pe$A~*V33Ki2?;EXoaj?PSOM8gpH2wr$m7*TJB#VHj~OO%KGeH39TE& zW=h~$)Ou3o7yJWl2(w%fzY7tbGr`B8rOQ^OhAd5KD5M)c_kDXc<-Pi0{YfmuqC`$) zVJupj_A&>y6pD9`^Fd^(lNJsE$yWR(W4!Rt$$S4vfxXjDy~UvWy`gm(?i~3uLDXhihBM7|ovW zt$?wsFwHqppoYhFu47`UXb%K-W5=L%^74ya$_mJP9|gU-3TDzV>4C?Z&c$(bS^hOrfqtVbt9STkPyc71QlNb~|yZ0}bN4 zlGnGXy4|4RmlTbUE9t5qymgRpacAz;sVbRPT1Y5Ny^gRHaC9T+iX2+|7tZ;$jr_;NBv>= z_?QC<;|`%X-*;D3!mybo_1M6dM;1>mFOSUcY3GU99n^yfzpCAAb(+G(KVTO4q^d7~ z{2Z*VJ$c-*jiIuS_fsM&m;YOSW4j%R&U@c;o@0NegI$F6ih!E_uCnj`Wm`>Hm3)S^ ziNv3|DktAlpahc969)MvM$XX`i>jcEr%+`y2MuA6iC@@z>bw?TV-}f|zrohHr%*Qq zg>{#Tqf)vnA4foe)BIt2{wl&YoQiK%&T13OT%&-+*4o!CbZU3F z#(a*yorB_29UE4v&;GSKtG^TS)KXyH6Z{C0`N!M=-;3we`=RS=U*GZ*s!!qsskFuQ*v&_cj)@`}eWz?z4>Mf4!Le%unA-bx zO~SEKdiZzNmjd+=vZp*Qhj}LtZtmN`c(2Wly&0TlJ8Q6pcD17=oV^iKCHM7V*x`Hc zuT9Ix;G8_crYpXS&66H_s37bKXdpP-v9Iybbf2NOonUq1jqd2NVpDzFlwYXc+QWO2 zXg8h@_y&jd{6^-6T< z-C~N(;-yYQzvSMQv2}N(O%)XhF_!$`)>N-|c9M1@Af7|&Akabf&C18VX=AKcOYNh{ z>O4af=WSkr?))%nsn+vs)g|8;rK(a|2K#M=|3DY(s%gPCJNXYRtY8rXu#;ZqJn@B{0RWO=KCT6Zl-~D z%E(;b)XLi4!QAk_9p2m{K66>XF!BNh_gCMOKbL%8MWX*enV1_}82vZO6dyTn7NA7o z+b7`BnIZoV%Kz0b0p2s<&RM_RDSi7Npx=G8fHA+!{`}GYeXn$c{=odDrt&}jG{C)G zemj!@O!<4K7hrdQn>73eVTuE}^H<9TU2o&ED+Ss|2W3L zH8#H?S3r=zDsF)N08TsqjUaLRyC45fLI(x_=Oq0GhzI-~@b3&IU;yw8_Fn){&Cq`V z{>OYaFbg;`|IHdp`6t%D;&fmTa7_Ih^da@1K)?|;FcUa*{>>czM<#F}4a@`%8h$fL fGyloYKSBsa8A!m@;8&=D50VS$!SbB@>(l=Oh%79s diff --git a/dist/nt2py-1.5.0.tar.gz b/dist/nt2py-1.5.0.tar.gz deleted file mode 100644 index 2b748bc942541956fece0e4e19ac1be7d14ec3ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36789 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 diff --git a/dist/nt2py-1.5.1-py3-none-any.whl b/dist/nt2py-1.5.1-py3-none-any.whl deleted file mode 100644 index 9dfd59dbdecaf8b65b1dedb387a8c2967b1cebcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43739 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 diff --git a/dist/nt2py-1.5.2.tar.gz b/dist/nt2py-1.5.2.tar.gz deleted file mode 100644 index 15209cfe6ee7d0d0145f3b854820bf5ba813c63f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36905 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 From 1cda9449492af9c1da2736370378f8c9bb399368 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 02:28:32 -0400 Subject: [PATCH 02/14] dump pyright+black for pyrefly+ruff --- .vscode/extensions.json | 4 +++- pyrightconfig.json | 12 ------------ 2 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 pyrightconfig.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 00563da..0b56f9d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,8 @@ { "recommendations": [ "ms-python.python", - "ms-python.black-formatter" + "meta.pyrefly", + "charliermarsh.ruff", + "github.vscode-github-actions" ] } \ No newline at end of file diff --git a/pyrightconfig.json b/pyrightconfig.json deleted file mode 100644 index cb36191..0000000 --- a/pyrightconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extraPath": [ - "./" - ], - "reportAny": false, - "reportExplicitAny": false, - "reportUnknownVariableType": false, - "reportUnknownMemberType": false, - "reportUnknownArgumentType": false, - "reportArgumentType": false, - "reportPrivateImportUsage": false -} From d92284d6323ceb17a95c669d29cbe739067a736a Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 02:28:55 -0400 Subject: [PATCH 03/14] separate publish/test workflows --- .github/workflows/publish.yml | 52 +++++++++++++++++++ .github/workflows/{unittests.yml => test.yml} | 16 +++--- 2 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/publish.yml rename .github/workflows/{unittests.yml => test.yml} (56%) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..ee744e1 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,52 @@ +name: publish to PyPI + +on: + release: + types: [published] + +jobs: + test: + uses: ./.github/workflows/test.yml + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + + - name: Check version matches the release tag + run: | + PKG_VERSION=$(grep -oP '__version__ = "\K[^"]+' nt2/__init__.py) + TAG="${{ github.event.release.tag_name }}" + TAG="${TAG#v}" # allow tags like v0.1.0 + if [ "$PKG_VERSION" != "$TAG" ]; then + echo "::error::package version ($PKG_VERSION) != release tag ($TAG)" + exit 1 + fi + + - name: Build sdist and wheel + run: uv build + + - uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + + publish: + needs: build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/nt2py + permissions: + id-token: write # required for PyPI Trusted Publishing (OIDC) + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/unittests.yml b/.github/workflows/test.yml similarity index 56% rename from .github/workflows/unittests.yml rename to .github/workflows/test.yml index 005af95..cb5a96a 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/test.yml @@ -1,17 +1,19 @@ name: Unit tests -on: [push] +on: + push: + workflow_call: jobs: - build: + test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: lfs: true @@ -28,9 +30,3 @@ jobs: - name: Test with `pytest` run: | pytest - - - name: Publish package - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') && matrix.python-version == '3.14' - uses: pypa/gh-action-pypi-publish@release/v1 - with: - password: ${{ secrets.PYPI_API_TOKEN }} From 34ece575f02dc4eb8ac8afbd21fa37f459299aa8 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 02:29:18 -0400 Subject: [PATCH 04/14] old containers moved to legacy --- legacy/containers/__init__.py | 0 legacy/containers/container.py | 94 ++++ legacy/containers/data.py | 420 ++++++++++++++++ legacy/containers/diagnostics.py | 108 ++++ legacy/containers/fields.py | 161 ++++++ legacy/containers/particles.py | 814 +++++++++++++++++++++++++++++++ legacy/containers/spectra.py | 164 +++++++ 7 files changed, 1761 insertions(+) create mode 100644 legacy/containers/__init__.py create mode 100644 legacy/containers/container.py create mode 100644 legacy/containers/data.py create mode 100644 legacy/containers/diagnostics.py create mode 100644 legacy/containers/fields.py create mode 100644 legacy/containers/particles.py create mode 100644 legacy/containers/spectra.py diff --git a/legacy/containers/__init__.py b/legacy/containers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/legacy/containers/container.py b/legacy/containers/container.py new file mode 100644 index 0000000..dcb4092 --- /dev/null +++ b/legacy/containers/container.py @@ -0,0 +1,94 @@ +from typing import Callable, Optional, Dict, Tuple, List + +from nt2.readers.base import BaseReader + + +class BaseContainer: + """Parent container class for holding any category data.""" + + __path: str + __reader: BaseReader + __remap: Optional[Dict[str, Callable[[str], str]]] + + __valid_steps: Dict[str, List[int]] + __valid_files: Dict[str, List[str]] + + def __init__( + self, + path: str, + reader: BaseReader, + remap: Optional[Dict[str, Callable[[str], str]]] = None, + ): + """Initializer for the BaseContainer class. + + Parameters + ---------- + path : str + The path to the data. + reader : BaseReader + The reader to be used for reading the data. + remap : Optional[dict[str, Callable[[str], str]]] + Remap dictionary to use to remap the data names (coords, fields, etc.). + + """ + super(BaseContainer, self).__init__() + self.__path = path + self.__reader = reader + self.__remap = remap + + @property + def path(self) -> str: + """str: The main path of the data.""" + return self.__path + + @property + def reader(self) -> BaseReader: + """BaseReader: The reader used to read the data.""" + return self.__reader + + @property + def remap(self) -> Optional[Dict[str, Callable[[str], str]]]: + """{ str: (str) -> str } : The coordinate/field remap dictionary.""" + return self.__remap + + @property + def valid_steps(self) -> Dict[str, List[int]]: + """dict[str, list[int]]: The valid steps for each category.""" + return self.__valid_steps + + @property + def valid_files(self) -> Dict[str, List[str]]: + """dict[str, list[str]]: The valid files for each category.""" + return self.__valid_files + + @valid_steps.setter + def valid_steps(self, value: Dict[str, List[int]]) -> None: + """Set the valid steps for each category. + + Parameters + ---------- + value : dict[str, list[int]] + The valid steps for each category. + + """ + self.__valid_steps = value + + @valid_files.setter + def valid_files(self, value: Dict[str, List[str]]) -> None: + """Set the valid files for each category. + + Parameters + ---------- + value : dict[str, list[str]] + The valid files for each category. + + """ + self.__valid_files = value + + def __dask_tokenize__(self) -> Tuple[str, str, str]: + """Provide a deterministic Dask token for container instances.""" + return ( + self.__class__.__name__, + self.__path, + self.__reader.format.value, + ) diff --git a/legacy/containers/data.py b/legacy/containers/data.py new file mode 100644 index 0000000..f5e28cc --- /dev/null +++ b/legacy/containers/data.py @@ -0,0 +1,420 @@ +from typing import Callable, Any, Union, Optional, List, Dict + +import sys +import logging + +if sys.version_info >= (3, 12): + from typing import override +else: + + def override(method): + return method + + +from nt2.utils import ToHumanReadable + +import xarray as xr +import pandas as pd + +from nt2.utils import ( + DetermineDataFormat, + InheritClassDocstring, + Format, + CoordinateSystem, +) +from nt2.readers.base import BaseReader +from nt2.readers.hdf5 import Reader as HDF5Reader +from nt2.readers.adios2 import Reader as BP5Reader +from nt2.containers.fields import Fields +from nt2.containers.particles import Particles +from nt2.containers.spectra import Spectra +from nt2.containers.diagnostics import Diagnostics + +import nt2.plotters.polar as acc_polar +import nt2.plotters.particles as acc_particles +import nt2.plotters.inspect as acc_inspect +import nt2.plotters.movie as acc_movie +from nt2.plotters.export import makeFramesAndMovie + + +@xr.register_dataset_accessor("polar") +@InheritClassDocstring +class DatasetPolarPlotAccessor(acc_polar.ds_accessor): + pass + + +@xr.register_dataset_accessor("particles") +@InheritClassDocstring +class DatasetParticlesPlotAccessor(acc_particles.ds_accessor): + pass + + +@xr.register_dataarray_accessor("polar") +@InheritClassDocstring +class PolarPlotAccessor(acc_polar.accessor): + pass + + +@xr.register_dataset_accessor("inspect") +@InheritClassDocstring +class DatasetInspectPlotAccessor(acc_inspect.ds_accessor): + pass + + +@xr.register_dataarray_accessor("movie") +@InheritClassDocstring +class MoviePlotAccessor(acc_movie.accessor): + pass + + +# Cartesian remapping functions +def remap_fields_cart(name: str) -> str: + name = name[1:] + fieldname = name.split("_")[0] + fieldname = fieldname.replace("0", "t") + fieldname = fieldname.replace("1", "x") + fieldname = fieldname.replace("2", "y") + fieldname = fieldname.replace("3", "z") + suffix = "_".join(name.split("_")[1:]) + return f"{fieldname}{'_' + suffix if suffix != '' else ''}" + + +def remap_coords_cart(name: str) -> str: + return { + "X1": "x", + "X2": "y", + "X3": "z", + }.get(name, name) + + +def remap_prtl_quantities_cart(name: str) -> str: + shortname = name[1:] + return { + "X1": "x", + "X2": "y", + "X3": "z", + "U1": "ux", + "U2": "uy", + "U3": "uz", + "W": "w", + }.get(shortname, shortname) + + +# Spherical remapping functions +def remap_fields_sph(name: str) -> str: + name = name[1:] + fieldname = name.split("_")[0] + fieldname = fieldname.replace("0", "t") + fieldname = fieldname.replace("1", "r") + fieldname = fieldname.replace("2", "th") + fieldname = fieldname.replace("3", "ph") + suffix = "_".join(name.split("_")[1:]) + return f"{fieldname}{'_' + suffix if suffix != '' else ''}" + + +def remap_coords_sph(name: str) -> str: + return { + "X1": "r", + "X2": "th", + "X3": "ph", + }.get(name, name) + + +def remap_prtl_quantities_sph(name: str) -> str: + shortname = name[1:] + return { + "X1": "r", + "X2": "th", + "X3": "ph", + "U1": "ur", + "U2": "uth", + "U3": "uph", + "W": "w", + }.get(shortname, shortname) + + +def compactify(lst: Union[List[Any], Any]) -> str: + c = "" + cntr = 0 + for l_ in lst: + if cntr > 5: + c += "\n| " + cntr = 0 + c += f"{l_}, " + cntr += 1 + return c[:-2] + + +class Data(Fields, Particles, Spectra): + """Main class to manage all the data containers. + + Inherits from all category-specific containers. + + """ + + __reader: BaseReader + __diagnostics: Optional[Diagnostics] + + def __init__( + self, + path: str, + reader: Optional[BaseReader] = None, + remap: Optional[Dict[str, Callable[[str], str]]] = None, + coord_system: Optional[CoordinateSystem] = None, + ): + """Initializer for the Data class. + + Parameters + ---------- + path : str + Main path to the data + reader : BaseReader, optional + Reader to use to read the data. If None, it will be determined + based on the file format. + remap : dict[str, Callable[[str], str]], optional + Remap dictionary to use to remap the data names (coords, fields, etc.). + coord_system : CoordinateSystem, optional + Coordinate system of the data. If None, it will be determined + based on the data attrs (if remap is also None). + + Raises + ------ + NotImplementedError + If the data format or coordinate system support is not implemented. + ValueError + If the reader format does not match the data format or if coordinate system cannot be inferred. + """ + # determine the reader from the format + fmt = DetermineDataFormat(path) + if reader is None: + if fmt == Format.HDF5: + self.__reader = HDF5Reader() + elif fmt == Format.BP5: + self.__reader = BP5Reader() + else: + raise NotImplementedError( + "Only HDF5 & BP5 formats are supported at the moment." + ) + else: + if fmt != reader.format: + raise ValueError( + f"Reader format {reader.format} does not match data format {fmt}." + ) + self.__reader = reader + + # determine valid files & steps for each category + for category in ["fields", "particles", "spectra"]: + self.valid_files[category] = self.__reader.GetValidFiles( + path=path, category=category + ) + if self.__reader.DefinesCategory( + path, category, self.valid_files[category] + ): + self.valid_steps[category] = self.__reader.GetValidSteps( + path=path, category=category + ) + if len(self.valid_steps[category]) == 0: + raise ValueError(f"No valid steps found for category {category}.") + + # determine the coordinate system and remapping + self.__attrs: Dict[str, Any] = {} + for category in ["fields", "particles", "spectra"]: + if ( + category in self.valid_files + and len(self.valid_files[category]) > 0 + and category in self.valid_steps + and len(self.valid_steps[category]) > 0 + ): + first_step = self.valid_steps[category][0] + attrs = self.__reader.ReadAttrsAtTimestep(path, category, first_step) + self.__attrs.update(**attrs) + if "Coordinates" not in attrs: + raise ValueError( + f"Coordinates not found in attributes for category {category}." + ) + else: + if attrs["Coordinates"] in [b"cart", "cart"]: + coord_system = CoordinateSystem.XYZ + elif attrs["Coordinates"] in [b"sph", "sph", b"qsph", "qsph"]: + coord_system = CoordinateSystem.SPH + + else: + raise NotImplementedError( + f"Coordinate system {attrs['Coordinates']} not supported." + ) + if remap is None: + remap = { + "coords": ( + remap_coords_cart + if coord_system == CoordinateSystem.XYZ + else remap_coords_sph + ), + "fields": ( + remap_fields_cart + if coord_system == CoordinateSystem.XYZ + else remap_fields_sph + ), + "particles": ( + remap_prtl_quantities_cart + if coord_system == CoordinateSystem.XYZ + else remap_prtl_quantities_sph + ), + } + break + + if coord_system is None: + raise ValueError("No coordinate system found in the data.") + + self.__coordinate_system = coord_system + + super(Data, self).__init__(path=path, reader=self.__reader, remap=remap) + try: + self.__diagnostics = Diagnostics(path) + except Exception as e: + logging.warning(f"Failed to read diagnostics: {e}") + self.__diagnostics = None + + def makeMovie( + self, + plot: Callable, + time: Optional[List[float]] = None, + num_cpus: Optional[int] = None, + **movie_kwargs: Any, + ) -> bool: + """Create animation with provided plot function. + + Parameters + ---------- + plot : callable + A function that takes a single argument (time in physical units) and produces a plot. + time : array_like, optional + An array of time values to use for the animation. If not provided, the entire time range will be used. + num_cpus : int, optional + The number of CPUs to use for parallel processing. If None, it will use all available CPUs. + **movie_kwargs : dict + Additional keyword arguments to pass to the movie creation function. + + Returns + ------- + bool + True if the movie was created successfully, False otherwise. + """ + if time is None: + if self.fields_defined: + time = self.fields.t.values + elif self.particles_defined and self.particles is not None: + time = list(self.particles.times) + else: + raise ValueError("No time values found.") + assert time is not None, "Time values must be provided." + name: str = "" + if self.attrs.get("simulation.name", None) is None: + name = movie_kwargs.pop("name", "movie") + else: + name_b = self.attrs.get("simulation.name") + if isinstance(name_b, bytes): + name = name_b.decode("utf-8") + else: + name = str(name_b) + return makeFramesAndMovie( + name=name, + data=self, + plot=plot, + times=time, + num_cpus=num_cpus, + **movie_kwargs, + ) + + @property + def coordinate_system(self) -> CoordinateSystem: + """CoordinateSystem: The coordinate system of the data.""" + return self.__coordinate_system + + @property + def attrs(self) -> Dict[str, Any]: + """dict[str, Any]: The attributes of the data.""" + return self.__attrs + + @property + def diagnostics(self) -> Union[pd.DataFrame, None]: + """pd.DataFrame or None: The diagnostics output if .out file is found, None otherwise.""" + if self.__diagnostics is None: + return None + return self.__diagnostics.df + + def to_str(self) -> str: + """str: String representation of the all the enclosed dataframes.""" + + string = "" + if self.fields_defined: + string += "FieldsDataset:\n" + string += "==============\n" + string += f"| Coordinates:\n| {self.coordinate_system.value}\n|\n" + string += f"| Data axes:\n| {compactify(self.fields.indexes.keys())}\n|\n" + delta_t = ( + self.fields.coords["t"].values[1] - self.fields.coords["t"].values[0] + ) / (self.fields.coords["s"].values[1] - self.fields.coords["s"].values[0]) + string += f"| - dt: {delta_t:.2e}\n" + for key in self.fields.coords.keys(): + crd = self.fields.coords[key].values + fmt = "" + if key != "s": + fmt = ".2f" + string += f"| - {key}: {crd.min():{fmt}} -> {crd.max():{fmt}} [{len(crd)}]\n" + string += "|\n" + string += f"| Quantities:\n| {compactify(sorted(map(str, self.fields.data_vars.keys())))}\n|\n" + string += f"| Total size: {ToHumanReadable(self.fields.nbytes)}\n\n" + else: + string += "FieldsDataset:\n" + string += "==============\n" + string += " empty\n\n" + if self.particles_defined and self.particles is not None: + species = sorted(self.particles.species) + string += "ParticleDataset:\n" + string += "================\n" + string += f"| Species:\n| {compactify(species)}\n|\n" + string += f"| Timesteps:\n| {len(self.particles.times)}\n|\n" + string += f"| Quantities:\n| {compactify(self.particles.columns)}\n|\n" + string += f"| Total size: {ToHumanReadable(self.particles.nbytes)}\n|\n" + string += self.help_particles("| ") + string += "\n" + else: + string += "ParticleDataset:\n" + string += "================\n" + string += " empty\n\n" + if self.spectra_defined and self.spectra is not None: + string += "SpectraDataset:\n" + string += "===============\n" + string += ( + f"| Data axes:\n| {compactify(self.spectra.indexes.keys())}\n|\n" + ) + delta_t = ( + self.spectra.coords["t"].values[1] - self.spectra.coords["t"].values[0] + ) / ( + self.spectra.coords["s"].values[1] - self.spectra.coords["s"].values[0] + ) + string += f"| - dt: {delta_t:.2e}\n" + for key in self.spectra.coords.keys(): + crd = self.spectra.coords[key].values + fmt = "" + if key != "s": + fmt = ".2f" + string += f"| - {key}: {crd.min():{fmt}} -> {crd.max():{fmt}} [{len(crd)}]\n" + string += "|\n" + string += f"| Quantities:\n| {compactify(sorted(map(str, self.spectra.data_vars.keys())))}\n|\n" + string += f"| Total size: {ToHumanReadable(self.spectra.nbytes)}\n|\n" + string += self.help_spectra("| ") + else: + string += "SpectraDataset:\n" + string += "===============\n" + string += " empty\n\n" + + return string + + @override + def __str__(self) -> str: + return self.to_str() + + @override + def __repr__(self) -> str: + return self.to_str() diff --git a/legacy/containers/diagnostics.py b/legacy/containers/diagnostics.py new file mode 100644 index 0000000..98fe33b --- /dev/null +++ b/legacy/containers/diagnostics.py @@ -0,0 +1,108 @@ +from typing import Union +import pandas as pd + + +class Diagnostics: + df: Union[pd.DataFrame, None] + + def __init__(self, path: str): + import os + import logging + import re + + outfiles = [o for o in os.listdir(path) if o.endswith(".out")] + if len(outfiles) == 0: + logging.warning(f"No .out files found in {path}") + self.df = None + else: + self.outfile = os.path.join(path, outfiles[0]) + + data = {} + + with open(self.outfile, "r") as f: + content = f.read() + steps = re.findall(r"Step:\s+(\d+)\.+\[", content) + times = re.findall(r"Time:\s+([\d.]+\d)\.+\[", content) + substeps = re.findall(r"\s+([A-Za-z]+)\.+([\d.]+)\s+([mµn]?s)", content) + species = re.findall( + r"\s+species\s+(\d+)\s+\(.+\)\.+([\deE+-.]+)(\s+\d+\%\s:\s\d+\%\s+)?([\deE+-.]+)?( : )?([\deE+-.]+)?", + content, + ) + + data["steps"] = [] + for step in steps: + data["steps"].append(int(step)) + + data["times"] = [] + for time in times: + data["times"].append(float(time)) + + assert len(data["steps"]) == len( + data["times"] + ), "Number of steps and times do not match" + + data["substeps"] = {} + for substep in substeps: + if substep[0] not in data["substeps"].keys(): + data["substeps"][substep[0]] = [] + + def to_ns(value: float, unit: str) -> float: + if unit == "s": + return value * 1e9 + elif unit == "ms": + return value * 1e6 + elif unit == "µs": + return value * 1e3 + elif unit == "ns": + return value + else: + raise ValueError(f"Unknown time unit: {unit}") + + data["substeps"][substep[0]].append( + to_ns(float(substep[1]), substep[2]) + ) + + for key in data["substeps"].keys(): + assert len(data["substeps"][key]) == len( + data["steps"] + ), f"Number of substep entries for {key} does not match number of steps" + + data["species"] = {} + data["species_min"] = {} + data["species_max"] = {} + for specie in species: + if specie[0] not in data["species"].keys(): + data["species"][specie[0]] = [] + data["species_min"][specie[0]] = [] + data["species_max"][specie[0]] = [] + data["species"][specie[0]].append(int(float(specie[1]))) + if len(specie) == 6 and specie[3] != "" and specie[5] != "": + data["species_min"][specie[0]].append(int(float(specie[3]))) + data["species_max"][specie[0]].append(int(float(specie[5]))) + + for key in data["species"].keys(): + assert len(data["species"][key]) == len( + data["steps"] + ), f"Number of species entries for {key} does not match number of steps" + assert (len(data["species_min"][key]) == len(data["steps"])) or ( + len(data["species_min"][key]) == 0 + ), f"Number of species min entries for {key} does not match number of steps" + assert (len(data["species_max"][key]) == len(data["steps"])) or ( + len(data["species_max"][key]) == 0 + ), f"Number of species max entries for {key} does not match number of steps" + + self.df = pd.DataFrame(index=data["steps"]) + self.df["Step"] = data["steps"] + self.df["Time"] = data["times"] + for key in data["substeps"].keys(): + self.df[key] = data["substeps"][key] + for key in data["species"].keys(): + self.df[f"species_{key}"] = data["species"][key] + if ( + len(data["species_min"][key]) > 0 + and len(data["species_max"][key]) > 0 + ): + self.df[f"species_{key}_min"] = data["species_min"][key] + self.df[f"species_{key}_max"] = data["species_max"][key] + + del data diff --git a/legacy/containers/fields.py b/legacy/containers/fields.py new file mode 100644 index 0000000..6cbb5b6 --- /dev/null +++ b/legacy/containers/fields.py @@ -0,0 +1,161 @@ +from typing import Any + +import dask +import dask.array as da +import xarray as xr +from tqdm import tqdm + +from nt2.containers.container import BaseContainer +from nt2.utils import Layout + + +class Fields(BaseContainer): + """Parent class to manage the fields dataframe.""" + + def _read_field(self, layout: Layout, field: str, step: int) -> Any: + """Reads a field from the data. + + This is a dask-delayed function used further to build the dataset. + + Parameters + ---------- + layout : Layout + Layout of the field. + field : str + Field to read. + step : int + Step to read. + + Returns + ------- + Any + Field data. + + """ + if layout == Layout.L: + return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step) + else: + return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step).T + + def __init__( + self, + **kwargs: Any, + ) -> None: + """Initializer for the Fields class. + + Parameters + ---------- + **kwargs : dict + Keyword arguments to be passed to the parent BaseContainer class. + + """ + super(Fields, self).__init__(**kwargs) + if self.reader.DefinesCategory(self.path, "fields", self.valid_files["fields"]): + self.__fields_defined = True + self.__fields = self._read_fields() + else: + self.__fields_defined = False + self.__fields = xr.Dataset() + + @property + def fields_defined(self) -> bool: + """bool: Whether the fields category is defined.""" + return self.__fields_defined + + @property + def fields(self) -> xr.Dataset: + """xr.Dataset: The fields dataframe.""" + return self.__fields + + def _read_fields(self) -> xr.Dataset: + """Helper function to read the fields dataframe.""" + self.reader.VerifySameCategoryNames( + self.path, "fields", "f", self.valid_steps["fields"] + ) + self.reader.VerifySameFieldShapes(self.path, self.valid_steps["fields"]) + self.reader.VerifySameFieldLayouts(self.path, self.valid_steps["fields"]) + + field_names = self.reader.ReadCategoryNamesAtTimestep( + self.path, "fields", "f", self.valid_steps["fields"][0] + ) + + first_step = self.valid_steps["fields"][0] + first_name = next(iter(field_names)) + layout = self.reader.ReadFieldLayoutAtTimestep(self.path, first_step) + shape = self.reader.ReadArrayShapeAtTimestep( + self.path, "fields", first_name, first_step + ) + coords = self.reader.ReadFieldCoordsAtTimestep(self.path, first_step) + coords = {k: coords[k] for k in sorted(coords.keys())[::-1]} + # rename coordinates if remap is provided + if self.remap is not None and "coords" in self.remap: + new_coords = {} + for coord in coords.keys(): + new_coords[self.remap["coords"](coord)] = coords[coord] + coords = new_coords + + times = self.reader.ReadPerTimestepVariable( + self.path, + "fields", + "Time", + "t", + self.valid_files["fields"], + ) + steps = self.reader.ReadPerTimestepVariable( + self.path, + "fields", + "Step", + "s", + self.valid_files["fields"], + ) + + edge_coords = self.reader.ReadEdgeCoordsAtTimestep(self.path, first_step) + new_edge_coords = {} + for coord in edge_coords.keys(): + assoc_x = ( + coord[:-1] + if (self.remap is None or "coords" not in self.remap) + else self.remap["coords"](coord[:-1]) + ) + new_edge_coords[assoc_x + "_min"] = (assoc_x, edge_coords[coord][:-1]) + new_edge_coords[assoc_x + "_max"] = (assoc_x, edge_coords[coord][1:]) + edge_coords = new_edge_coords + + all_dims = {**times, **coords}.keys() + all_coords = {**times, **coords, "s": ("t", steps["s"]), **edge_coords} + + return xr.Dataset( + { + ( + remapped_name := ( + self.remap["fields"](name) + if (self.remap is not None and "fields" in self.remap) + else name + ) + ): xr.DataArray( + da.stack( + [ + da.from_delayed( + dask.delayed(self._read_field)(layout, name, step), + shape=shape[:: -1 if layout == Layout.R else 1], + dtype="float", + ) + for step in tqdm( + self.valid_steps["fields"], + desc="steps", + position=1, + leave=False, + ) + ], + axis=0, + ), + name=remapped_name, + dims=all_dims, + coords=all_coords, + ) + for name in tqdm(field_names, desc="fields", position=0, leave=False) + }, + attrs=self.reader.ReadAttrsAtTimestep( + path=self.path, category="fields", step=first_step + ), + ) diff --git a/legacy/containers/particles.py b/legacy/containers/particles.py new file mode 100644 index 0000000..910cfbd --- /dev/null +++ b/legacy/containers/particles.py @@ -0,0 +1,814 @@ +from typing import ( + Any, + Callable, + List, + Optional, + Sequence, + Tuple, + Literal, + Union, + Dict, + Type, +) +import numpy.typing as npt +from copy import copy + +import dask +import dask.dataframe as dd +import pandas as pd +import numpy as np +from tqdm import tqdm + +import matplotlib.pyplot as plt +import matplotlib.axes as maxes + +from nt2.containers.container import BaseContainer + + +IntSelector = Union[int, Sequence[int], slice, Tuple[int, int]] +FloatSelector = Union[float, slice, Sequence[float], Tuple[float, float]] + + +class Selection: + def __init__( + self, + type: Literal["value", "range", "list"], + value: Optional[Union[int, float, list, tuple]] = None, + ): + self.type = type + self.value = value + + def intersect(self, other: "Selection") -> "Selection": + if self.value is None: + return copy(other) + elif other.value is None: + return copy(self) + if self.type == "value" and other.type == "value": + if self.value == other.value: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "value" and other.type == "list": + assert isinstance(other.value, list), "other.value must be a list" + if self.value in other.value: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "value" and other.type == "range": + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + lo, hi = other.value + if lo <= self.value < hi: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "list" and other.type == "value": + return other.intersect(self) + elif self.type == "list" and other.type == "list": + assert isinstance(self.value, list), "self.value must be a list" + assert isinstance(other.value, list), "other.value must be a list" + new_values = [v for v in self.value if v in other.value] + return Selection("list", new_values) + elif self.type == "list" and other.type == "range": + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + assert isinstance(self.value, list), "self.value must be a list" + lo, hi = other.value + new_values = [v for v in self.value if lo <= v <= hi] + return Selection("list", new_values) + elif self.type == "range" and other.type == "value": + return other.intersect(self) + elif self.type == "range" and other.type == "list": + return other.intersect(self) + elif self.type == "range" and other.type == "range": + assert isinstance(self.value, tuple) and len(self.value) == 2, ( + "self.value must be a tuple of length 2" + ) + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + lo1, hi1 = self.value + lo2, hi2 = other.value + new_lo = max(lo1, lo2) + new_hi = min(hi1, hi2) + if new_lo <= new_hi: + return Selection("range", (new_lo, new_hi)) + else: + return Selection("value") + else: + raise ValueError(f"Unknown selection types: {self.type}, {other.type}") + + def __repr__(self) -> str: + if self.type == "value": + return "all" if self.value is None else f"{self.value:.3g}" + elif self.type == "range": + if self.value is None: + return "all" + else: + assert isinstance(self.value, tuple) and len(self.value) == 2, ( + "value must be a tuple of length 2" + ) + lo, hi = self.value + lo_str = "..." if lo is None or lo == -np.inf else f"{lo:.3g}" + hi_str = "..." if hi is None or hi == np.inf else f"{hi:.3g}" + return f"[ {lo_str} -> {hi_str} ]" + elif self.type == "list": + assert isinstance(self.value, list), "value must be a list" + return "{ " + ", ".join(f"{v:.3g}" for v in self.value) + " }" + else: + return "InvalidSelection" + + def __str__(self) -> str: + return self.__repr__() + + +def _coerce_selector_to_mask( + s: Union[IntSelector, FloatSelector], + series: Any, + inclusive_tuple: bool = True, + method="exact", +): + from operator import ior + from functools import reduce + + if isinstance(s, slice): + lo = s.start if s.start is not None else -np.inf + hi = s.stop if s.stop is not None else np.inf + step = s.step + mask = (series >= lo) & (series <= hi) + if step not in (None, 1): + mask = mask & (((series - lo) % step) == 0) + return mask, ("range", (lo, hi)) + elif isinstance(s, tuple) and len(s) == 2 and inclusive_tuple: + lo, hi = s + if lo is None: + lo = -np.inf + if hi is None: + hi = np.inf + return (series >= lo) & (series <= hi), ("range", (lo, hi)) + elif isinstance(s, (list, tuple, np.ndarray, pd.Index, pd.Series)): + if method == "exact": + return series.isin(list(s)), ("list", list(s)) + else: + return reduce( + ior, [np.abs(series - v) == np.abs(series - v).min() for v in s] + ), ("list", list(s)) + else: + if method == "exact": + return series == s, ("value", s) + else: + return np.abs(series - s) == np.abs(series - s).min(), ("value", s) + + +def _attach_columns( + part: pd.DataFrame, + cols_tuple, + read_column, + metadtypes, +) -> pd.DataFrame: + if len(part) == 0: + for c in cols_tuple: + part[c] = np.array([], dtype=metadtypes[c]) + return part + st_val = int(part["st"].iloc[0]) + + arrays = {c: read_column(st_val, c) for c in cols_tuple} + + sel = part["row"].to_numpy() + for c in cols_tuple: + part[c] = np.asarray(arrays[c])[sel] + return part + + +class ParticleDataset: + steps: npt.NDArray[np.int64] + times: npt.NDArray[np.float64] + colnames: List[str] + + def __init__( + self, + species: List[int], + steps: npt.NDArray[np.int64], + times: npt.NDArray[np.float64], + colnames: List[str], + read_column: Callable[ + [int, str], npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]] + ], + fprec: Optional[Type] = np.float32, + selection: Optional[Dict[str, Selection]] = None, + ddf_index: Optional[dd.DataFrame] = None, + ): + self.species = species + self.steps = steps + self.times = times + self.colnames = colnames + + self.read_column = read_column + self.fprec = fprec + self.index_cols = ("id", "sp") + self._all_columns_cache: Optional[List[str]] = None + + if selection is not None: + self.selection = selection + else: + self.selection = { + "t": Selection("range"), + "st": Selection("range"), + "sp": Selection("range"), + "id": Selection("range"), + } + + self._dtypes = { + "id": np.int64, + "sp": np.int32, + "row": np.int64, + "st": np.int64, + "t": fprec, + "x": fprec, + "y": fprec, + "z": fprec, + "ux": fprec, + "uy": fprec, + "uz": fprec, + "r": fprec, + "th": fprec, + "ph": fprec, + "ur": fprec, + "uth": fprec, + "uph": fprec, + } + + if ddf_index is not None: + self._ddf_index = ddf_index + else: + self._ddf_index = self._build_index_ddf() + + @property + def ddf(self) -> dd.DataFrame: + return self._ddf_index + + @property + def nbytes(self) -> int: + return self.ddf.memory_usage(index=True, deep=True).sum().compute() + + @property + def columns(self) -> List[str]: + if self._all_columns_cache is None: + self._all_columns_cache = self.colnames + return self._all_columns_cache + + def sel( + self, + t: Optional[Union[IntSelector, FloatSelector]] = None, + st: Optional[IntSelector] = None, + sp: Optional[IntSelector] = None, + id: Optional[IntSelector] = None, + method: str = "exact", + ) -> "ParticleDataset": + ddf = self._ddf_index + new_selection = {k: copy(v) for k, v in self.selection.items()} + if st is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + st, ddf["st"], method="exact" + ) + ddf = ddf[ddf_sel] + new_selection["st"] = new_selection["st"].intersect( + Selection(sel_type, sel_value) + ) + if t is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + t, ddf["t"], method=method + ) + ddf = ddf[ddf_sel] + new_selection["t"] = new_selection["t"].intersect( + Selection(sel_type, sel_value) + ) + if sp is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + sp, ddf["sp"], method="exact" + ) + ddf = ddf[ddf_sel] + new_selection["sp"] = new_selection["sp"].intersect( + Selection(sel_type, sel_value) + ) + if id is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + id, ddf["id"], method="exact" + ) + ddf = ddf[ddf_sel] + new_selection["id"] = new_selection["id"].intersect( + Selection(sel_type, sel_value) + ) + + return ParticleDataset( + species=self.species, + steps=self.steps, + times=self.times, + colnames=self.colnames, + read_column=self.read_column, + fprec=self.fprec, + selection=new_selection, + ddf_index=ddf, + ) + + def isel( + self, t: Optional[IntSelector] = None, st: Optional[IntSelector] = None + ) -> "ParticleDataset": + ddf = self._ddf_index + new_selection = {k: v for k, v in self.selection.items()} + for t_or_s, t_or_s_str, t_or_s_arr in zip( + [t, st], ["t", "st"], [self.times, self.steps] + ): + if t_or_s is not None: + if isinstance(t_or_s, slice): + lo = t_or_s.start if t_or_s.start is not None else 0 + hi = t_or_s.stop if t_or_s.stop is not None else -1 + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + slice(t_or_s_arr[lo], t_or_s_arr[hi]), + ddf[t_or_s_str], + method="exact", + ) + ddf = ddf[ddf_sel] + new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( + Selection(sel_type, sel_value) + ) + elif isinstance(t_or_s, (list, tuple, np.ndarray, pd.Index, pd.Series)): + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + [t_or_s_arr[ti] for ti in t_or_s], + ddf[t_or_s_str], + method="exact", + ) + ddf = ddf[ddf_sel] + new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( + Selection(sel_type, sel_value) + ) + else: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + t_or_s_arr[t_or_s], ddf[t_or_s_str], method="exact" + ) + ddf = ddf[ddf_sel] + new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( + Selection(sel_type, sel_value) + ) + return ParticleDataset( + species=self.species, + steps=self.steps, + times=self.times, + colnames=self.colnames, + read_column=self.read_column, + fprec=self.fprec, + selection=new_selection, + ddf_index=ddf, + ) + + def _load_index_partition(self, st: int, t: float, index_cols: Tuple[str, ...]): + cols = {c: self.read_column(st, c) for c in index_cols} + n = len(next(iter(cols.values()))) + df = pd.DataFrame(cols) + df["st"] = np.asarray(st, dtype=np.int64) + df["t"] = np.asarray(t, dtype=float) + df["row"] = np.arange(n, dtype=np.int64) + return df + + def _build_index_ddf(self) -> dd.DataFrame: + delayed_parts = [ + dask.delayed(self._load_index_partition)(st, t, self.index_cols) + for st, t in zip(self.steps, self.times) + ] + + meta = pd.DataFrame( + { + **{ + c: np.array([], dtype=self._dtypes.get(c, "O")) + for c in self.index_cols + }, + "st": np.array([], dtype=self._dtypes.get("st", np.int64)), + "t": np.array([], dtype=self._dtypes.get("t", np.int64)), + "row": np.array([], dtype=self._dtypes.get("row", np.int64)), + } + ) + + ddf = dd.from_delayed(delayed_parts, meta=meta) + return ddf + + def load(self, cols: Optional[Sequence[str]] = None) -> pd.DataFrame: + if cols is None: + cols = self.columns + + cols = [c for c in cols if c not in ("t", "st", "row")] + + meta_dict = { + c: np.array([], dtype=self._dtypes.get(c, np.float64)) for c in cols + } + meta = self._ddf_index._meta.assign(**meta_dict) + + cols_tuple = tuple(cols) + + return ( + self._ddf_index.map_partitions( + _attach_columns, + cols_tuple=cols_tuple, + read_column=self.read_column, + metadtypes=meta.dtypes, + meta=meta, + ) + .compute() + .drop(columns=["row"]) + ) + + def help(self, prepend="") -> str: + ret = f"{prepend}- use .sel(...) to select particles based on criteria:\n" + ret += f"{prepend} t : time (float)\n" + ret += f"{prepend} st : step (int)\n" + ret += f"{prepend} sp : species (int)\n" + ret += f"{prepend} id : particle id (int)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .sel(t=slice(10.0, 20.0), sp=[1, 2, 3], id=[42, 22])\n{prepend}\n" + ret += f"{prepend}- use .isel(...) to select particles based on output step:\n" + ret += f"{prepend} t : timestamp index (int)\n" + ret += f"{prepend} st : step index (int)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .isel(t=-1)\n" + ret += f"{prepend}\n" + ret += f"{prepend}- .sel and .isel can be chained together:\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .isel(t=-1).sel(sp=1).sel(id=[55, 66])\n{prepend}\n" + ret += f"{prepend}- use .load(cols=[...]) to load data into a pandas DataFrame (`cols` defaults to all columns)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .sel(...).load()\n" + return ret + + def __repr__(self) -> str: + ret = "ParticleDataset:\n" + ret += "================\n" + ret += f"Variables:\n {self.columns}\n\n" + ret += "Current selection:\n" + for k, v in self.selection.items(): + ret += f" {k:<5} : {v}\n" + ret += "\nHelp:\n" + ret += "-----\n" + ret += f"{self.help()}" + return ret + + def __str__(self) -> str: + return self.__repr__() + + def spectrum_plot( + self, + ax: Optional[maxes.Axes] = None, + bins: Optional[npt.NDArray] = None, + quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + ): + if ax is None: + ax = plt.gca() + + def _uSqr_cart(df: pd.DataFrame): + return np.sum( + [ + np.asarray(df[c].to_numpy(), dtype=np.float64) ** 2 + for c in ["ux", "uy", "uz"] + ], + axis=0, + ) + + def _quantity_cart(df: pd.DataFrame): + uSqr = _uSqr_cart(df) + return uSqr * np.sqrt(1.0 + uSqr) + + def _uSqr_sph(df: pd.DataFrame): + return np.sum( + [ + np.asarray(df[c].to_numpy(), dtype=np.float64) ** 2 + for c in ["ur", "uth", "uph"] + ], + axis=0, + ) + + def _quantity_sph(df: pd.DataFrame): + uSqr = _uSqr_sph(df) + return uSqr * np.sqrt(1.0 + uSqr) + + if "ux" in self.columns: + cols = ["ux", "uy", "uz"] + if quantity is None: + quantity = _quantity_cart + else: + cols = ["ur", "uth", "uph"] + if quantity is None: + quantity = _quantity_sph + df = self.load(cols=["sp", *cols]) + species = sorted(df["sp"].unique()) + arrays = df.groupby("sp").apply(quantity, include_groups=False) + if bins is None: + bins = np.logspace(0, 4, 100) + hists = {sp: np.histogram(arrays[sp], bins=bins)[0] for sp in species} + bins = 0.5 * (bins[1:] + bins[:-1]) + for sp in species: + ax.loglog(bins, hists[sp], label=f"{sp}") + if bins.min() > 0 and bins.max() / bins.min() > 100: + ax.set(xscale="log", yscale="log") + + def phase_plot( + self, + ax: Optional[maxes.Axes] = None, + x_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + y_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + xy_bins: Optional[Tuple[npt.NDArray, npt.NDArray]] = None, + **kwargs: Any, + ): + if ax is None: + ax = plt.gca() + + def _xquantity_cart(df: pd.DataFrame): + return np.asarray(df["x"].to_numpy(), dtype=np.float64) + + def _yquantity_cart(df: pd.DataFrame): + return np.asarray(df["ux"].to_numpy(), dtype=np.float64) + + def _xquantity_sph(df: pd.DataFrame): + return np.asarray(df["r"].to_numpy(), dtype=np.float64) + + def _yquantity_sph(df: pd.DataFrame): + return np.asarray(df["ur"].to_numpy(), dtype=np.float64) + + if "ux" in self.columns: + cols = ["ux", "uy", "uz"] + for c in "xyz": + if c in self.columns: + cols.append(c) + if x_quantity is None: + x_quantity = _xquantity_cart + if y_quantity is None: + y_quantity = _yquantity_cart + else: + cols = ["ur", "uth", "uph"] + for c in ["r", "th", "ph"]: + if c in self.columns: + cols.append(c) + if x_quantity is None: + x_quantity = _xquantity_sph + if y_quantity is None: + y_quantity = _yquantity_sph + + df = self.load(cols=[*cols]) + x_array = x_quantity(df) + y_array = y_quantity(df) + + if xy_bins is None: + x_bins = np.linspace(x_array.min(), x_array.max(), 100) + y_bins = np.linspace(y_array.min(), y_array.max(), 100) + xy_bins = (x_bins, y_bins) + else: + x_bins, y_bins = xy_bins + + h2d, xedges, yedges = np.histogram2d(x_array, y_array, bins=[x_bins, y_bins]) + X, Y = np.meshgrid( + 0.5 * (xedges[1:] + xedges[:-1]), 0.5 * (yedges[1:] + yedges[:-1]) + ) + pcm = ax.pcolormesh( + X, + Y, + h2d.T, + shading="auto", + rasterized=True, + **kwargs, + ) + return pcm + + +class Particles(BaseContainer): + """Parent class to manage the particles dataframe.""" + + __particles_defined: bool + __particles: Optional[ParticleDataset] + quantities: List[str] + sp_with_idx: List[int] + sp_without_idx: List[int] + + def __init__(self, **kwargs: Any) -> None: + """Initializer for the Particles class. + + Parameters + ---------- + **kwargs : dict + Keyword arguments to be passed to the parent BaseContainer class. + + """ + super(Particles, self).__init__(**kwargs) + if ( + self.reader.DefinesCategory( + self.path, "particles", self.valid_files["particles"] + ) + and self.particles_present + ): + self.__particles_defined = True + + valid_steps = self.nonempty_steps + quantities_ = [ + self.reader.ReadCategoryNamesAtTimestep( + self.path, "particles", "p", step + ) + for step in valid_steps + ] + self.quantities = sorted( + np.unique([q for qtys in quantities_ for q in qtys]) + ) + + unique_quantities = sorted( + list( + set( + f"{q}".split("_")[0] + for q in self.quantities + if not q.startswith("pIDX") and not q.startswith("pRNK") + ) + ) + ) + all_species = sorted( + list(set([int(f"{q}".split("_")[1]) for q in self.quantities])) + ) + + self.sp_with_idx = sorted( + [ + int(f"{q}".split("_")[1]) + for q in self.quantities + if f"{q}".startswith("pIDX") + ] + ) + self.sp_without_idx = sorted( + [sp for sp in all_species if sp not in self.sp_with_idx] + ) + + self.__particles = ParticleDataset( + species=all_species, + steps=self.valid_steps["particles"], + times=self.reader.ReadPerTimestepVariable( + self.path, + "particles", + "Time", + "t", + self.valid_files["particles"], + )["t"], + colnames=[ + ( + self.remap["particles"](q) + if (self.remap is not None and "particles" in self.remap) + else q + ) + for q in unique_quantities + ] + + ["id", "sp"], + read_column=self._read_column, + ) + else: + self.__particles_defined = False + self.__particles = None + + @property + def particles_present(self) -> bool: + """bool: Whether the particles are present in any of the timesteps.""" + return len(self.nonempty_steps) > 0 + + @property + def nonempty_steps(self) -> List[int]: + """list[int]: List of timesteps that contain particles data.""" + return [ + step + for step in self.valid_steps["particles"] + if len( + set( + q.split("_")[0] + for q in self.reader.ReadCategoryNamesAtTimestep( + self.path, "particles", "p", step + ) + if q.startswith("p") + ) + ) + > 0 + ] + + @property + def particles_defined(self) -> bool: + """bool: Whether the particles category is defined.""" + return self.__particles_defined + + @property + def particles(self) -> Optional[ParticleDataset]: + """Returns the particles data. + + Returns + ------- + ParticleDataset + Dictionary of datasets for each step. + + """ + return self.__particles + + def help_particles(self, prepend: str = "") -> str: + return self.particles.help(prepend) if self.particles is not None else "" + + def _get_count(self, step: int, sp: int) -> np.int64: + try: + return np.int64( + self.reader.ReadArrayShapeAtTimestep( + self.path, "particles", f"pX1_{sp}", step + )[0] + ) + except Exception: + return np.int64(0) + + def _species_has_quantity(self, read_colname: str, step: int, sp: int) -> bool: + return f"{read_colname}_{sp}" in self.reader.ReadCategoryNamesAtTimestep( + self.path, "particles", "p", step + ) + + def _get_quantity_for_species( + self, + read_colname: str, + step: int, + sp: int, + ) -> npt.NDArray[Union[np.float64, np.int64]]: + if f"{read_colname}_{sp}" in self.quantities: + return self.reader.ReadArrayAtTimestep( + self.path, "particles", f"{read_colname}_{sp}", step + ) + else: + return np.zeros(self._get_count(step, sp)) * np.nan + + def _read_column( + self, step: int, colname: str + ) -> npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]]: + read_colname = None + if colname == "id": + idx = np.concatenate( + [ + self.reader.ReadArrayAtTimestep( + self.path, "particles", f"pIDX_{sp}", step + ).astype(np.int64) + for sp in self.sp_with_idx + ] + + [ + np.zeros(self._get_count(step, sp), dtype=np.int64) - 100 + for sp in self.sp_without_idx + ] + ) + if ( + len(self.sp_with_idx) > 0 + and f"pRNK_{self.sp_with_idx[0]}" in self.quantities + ): + rnk = np.concatenate( + [ + self.reader.ReadArrayAtTimestep( + self.path, "particles", f"pRNK_{sp}", step + ).astype(np.int64) + for sp in self.sp_with_idx + ] + + [ + np.zeros(self._get_count(step, sp), dtype=np.int64) - 100 + for sp in self.sp_without_idx + ] + ) + return (idx + rnk) * (idx + rnk + 1) // 2 + rnk + else: + return idx + elif colname == "x" or colname == "r": + read_colname = "pX1" + elif colname == "y" or colname == "th": + read_colname = "pX2" + elif colname == "z" or colname == "ph": + read_colname = "pX3" + elif colname == "ux" or colname == "ur": + read_colname = "pU1" + elif colname == "uy" or colname == "uth": + read_colname = "pU2" + elif colname == "uz" or colname == "uph": + read_colname = "pU3" + elif colname == "w": + read_colname = "pW" + elif colname == "sp": + return np.concatenate( + [ + np.zeros(self._get_count(step, sp), dtype=np.int32) + sp + for sp in self.sp_with_idx + ] + + [ + np.zeros(self._get_count(step, sp), dtype=np.int32) + sp + for sp in self.sp_without_idx + ] + ) + else: + read_colname = f"p{colname}" + + return np.concatenate( + [ + self._get_quantity_for_species(read_colname, step, sp) + for sp in self.sp_with_idx + if self._species_has_quantity(read_colname, step, sp) + ] + + [ + self._get_quantity_for_species(read_colname, step, sp) + for sp in self.sp_without_idx + if self._species_has_quantity(read_colname, step, sp) + ] + ) diff --git a/legacy/containers/spectra.py b/legacy/containers/spectra.py new file mode 100644 index 0000000..ff47dd1 --- /dev/null +++ b/legacy/containers/spectra.py @@ -0,0 +1,164 @@ +from typing import Any + +import dask +import dask.array as da +import xarray as xr +import numpy as np +from tqdm import tqdm + +from nt2.containers.container import BaseContainer +from nt2.readers.base import BaseReader + + +class Spectra(BaseContainer): + """Parent class to manager the spectra dataframe.""" + + @staticmethod + def read_spectrum(path: str, reader: BaseReader, spectrum: str, step: int) -> Any: + """Reads a spectrum from the data. + + This is a dask-delayed function used further to build the dataset. + + Parameters + ---------- + path : str + Main path to the data. + reader : BaseReader + Reader to use to read the data. + spectrum : str + Spectrum array to read. + step : int + Step to read. + + Returns + ------- + Any + Spectrum data. + + """ + return reader.ReadArrayAtTimestep(path, "spectra", spectrum, step) + + def __init__(self, **kwargs: Any) -> None: + super(Spectra, self).__init__(**kwargs) + if self.reader.DefinesCategory( + self.path, + "spectra", + self.valid_steps["spectra"], + ): + self.__spectra_defined = True + self.__spectra = self.__read_spectra() + else: + self.__spectra_defined = False + self.__spectra = xr.Dataset() + + @property + def spectra_defined(self) -> bool: + """bool: Whether the spectra category is defined.""" + return self.__spectra_defined + + @property + def spectra(self) -> xr.Dataset: + """xr.Dataset: The spectra dataframe.""" + return self.__spectra + + def __read_spectra(self) -> xr.Dataset: + self.reader.VerifySameCategoryNames( + self.path, + "spectra", + "s", + self.valid_steps["spectra"], + ) + first_step = self.valid_steps["spectra"] + spectra_names = self.reader.ReadCategoryNamesAtTimestep( + self.path, "spectra", "s", first_step + ) + spectra_names = set(s for s in sorted(spectra_names) if s.startswith("sN")) + ebin_name = "sEbn" + first_spectrum_name = next(iter(spectra_names)) + shape = self.reader.ReadArrayShapeExplicitlyAtTimestep( + self.path, "spectra", first_spectrum_name, first_step + ) + times = self.reader.ReadPerTimestepVariable( + self.path, + "spectra", + "Time", + "t", + self.valid_files["spectra"], + ) + steps = self.reader.ReadPerTimestepVariable( + self.path, + "spectra", + "Step", + "s", + self.valid_files["spectra"], + ) + + ebins = self.reader.ReadArrayAtTimestep( + self.path, "spectra", ebin_name, first_step + ) + + diffs = np.diff(ebins) + if np.isclose(diffs[1] - diffs[0], diffs[-1] - diffs[-2], atol=1e-2): + ebins = 0.5 * (ebins[1:] + ebins[:-1]) + else: + ebins = (ebins[1:] * ebins[:-1]) ** 0.5 + + all_dims = {**times, "E": ebins} + all_coords = {**all_dims, "s": ("t", steps["s"])} + + def remap_name(name: str) -> str: + return name[1:] + + return xr.Dataset( + { + remap_name(spectrum): xr.DataArray( + da.stack( + [ + da.from_delayed( + dask.delayed(self.read_spectrum)( + path=self.path, + reader=self.reader, + spectrum=spectrum, + step=step, + ), + shape=shape, + dtype="float", + ) + for step in tqdm( + self.valid_steps["spectra"], + desc="steps", + position=1, + leave=False, + ) + ], + ), + name=remap_name(spectrum), + dims=all_dims, + coords=all_coords, + ) + for spectrum in tqdm( + spectra_names, desc="spectra", position=0, leave=False + ) + }, + attrs=self.reader.ReadAttrsAtTimestep( + path=self.path, category="spectra", step=first_step + ), + ) + + def help_spectra(self, prepend="") -> str: + ret = f"{prepend}- use .sel(...) to select specific energy or time intervals\n" + ret += f"{prepend} t : time (float)\n" + ret += f"{prepend} st : step (int)\n" + ret += f"{prepend} E : energy bin (float)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .sel(E=slice(10.0, 20.0)).sel(t=0, method='nearest')\n{prepend}\n" + ret += f"{prepend}- use .isel(...) to select spectra based on energy bin or time index:\n" + ret += f"{prepend} t : timestamp index (int)\n" + ret += f"{prepend} st : step index (int)\n" + ret += f"{prepend} E : energy bin index (int)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .isel(t=-1, E=11)\n" + ret += f"{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .spectra.N_1.sel(E=slice(None, 50)).isel(t=5).plot()\n" + return ret From 59935153879c0d4283bc18a0364bf9d3e825db88 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:30:34 -0400 Subject: [PATCH 05/14] drop py3.8 support, new opt depends --- pyproject.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fef7be7..49ada55 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,8 @@ [project] name = "nt2py" -description = "Post-processing & visualization toolkit for the Entity PIC code" +description = "Post-processing & visualization package for the Entity PIC code" readme = "README.md" -requires-python = ">=3.8" +requires-python = ">=3.9" license-files = ["LICENSE"] authors = [{ name = "Hayk", email = "haykh.astro@gmail.com" }] maintainers = [{ name = "Hayk", email = "haykh.astro@gmail.com" }] @@ -12,7 +12,6 @@ classifiers = [ "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -47,7 +46,7 @@ Repository = "https://github.com/entity-toolkit/nt2py" nt2 = "nt2.cli.main:app" [project.optional-dependencies] -dev = ["black", "pytest"] +dev = ["ruff", "pyrefly", "pytest", "types-tqdm"] hdf5 = ["h5py"] [build-system] @@ -59,7 +58,7 @@ path = "nt2/__init__.py" [tool.hatch.build.targets.wheel] packages = ["nt2"] -exclude = ["/.git", "/.venv", "/dist", "/temp", "/nt2/tests/"] +exclude = ["/nt2/tests/"] [tool.hatch.build.targets.sdist] -exclude = ["/.git", "/.venv", "/dist", "/temp", "/nt2/tests/"] +exclude = ["/legacy/"] \ No newline at end of file From d2361909192d4d0a8d33818bc2a0ba62a95a06ac Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:31:03 -0400 Subject: [PATCH 06/14] parallel init reading + valid_steps/files saved to containers --- nt2/readers/adios2.py | 21 ++- nt2/readers/base.py | 360 ++++++++++++++++++++++++++++++------------ nt2/readers/hdf5.py | 26 ++- 3 files changed, 292 insertions(+), 115 deletions(-) diff --git a/nt2/readers/adios2.py b/nt2/readers/adios2.py index 3b22ccf..4cb7ffe 100644 --- a/nt2/readers/adios2.py +++ b/nt2/readers/adios2.py @@ -41,12 +41,10 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, + valid_files: List[str], ) -> Dict[str, npt.NDArray[Any]]: variables: List[float] = [] - for filename in self.GetValidFiles( - path=path, - category=category, - ): + for filename in valid_files: with bp.FileReader(os.path.join(path, category, filename)) as f: avail: Dict[str, Any] = f.available_variables() vars: List[str] = list(avail.keys()) @@ -62,6 +60,21 @@ def ReadPerTimestepVariable( raise ValueError(f"{varname} not found in the BP file {filename}") return {newname: np.array(variables)} + @override + def ReadParticleCountsAtTimestep( + self, path: str, step: int, species: List[int] + ) -> Dict[int, int]: + """Read all per-species counts from one BP file's metadata.""" + with bp.FileReader(self.FullPath(path, "particles", step)) as f: + available = f.available_variables() + counts: Dict[int, int] = {} + for sp in species: + name = f"pX1_{sp}" + var = f.inquire_variable(name) if name in available else None + shape = var.shape() if var is not None else [] + counts[sp] = int(shape[0]) if shape else 0 + return counts + @override def ReadEdgeCoordsAtTimestep( self, diff --git a/nt2/readers/base.py b/nt2/readers/base.py index d53280d..ae06489 100644 --- a/nt2/readers/base.py +++ b/nt2/readers/base.py @@ -1,10 +1,67 @@ -from typing import Any, List, Tuple, Dict, Set +from concurrent.futures import as_completed +from typing import Any, Callable, Dict, List, Optional, Set, Tuple +import os +import re +import logging + import numpy.typing as npt -import os, re, logging +from loky import get_reusable_executor +from tqdm import tqdm from nt2.utils import Format, Layout +def _check_file(enter_file: Callable[[str], Any], filename: str) -> None: + with enter_file(filename): + pass + + +def _get_field_shapes( + reader: "BaseReader", path: str, step: int +) -> Dict[str, Tuple[int, ...]]: + names = reader.ReadCategoryNamesAtTimestep( + path=path, + category="fields", + prefix="f", + step=step, + ) + return { + name: reader.ReadArrayShapeAtTimestep( + path=path, + category="fields", + quantity=name, + step=step, + ) + for name in names + } + + +def _verify_particle_shapes(reader: "BaseReader", path: str, step: int) -> None: + prtl_species = reader.ReadParticleSpeciesAtTimestep(path=path, step=step) + quantities = reader.ReadCategoryNamesAtTimestep( + path=path, + category="particles", + prefix="p", + step=step, + ) + quantities = set(q.split("_")[0] for q in quantities if q.startswith("p")) + for species in prtl_species: + shape = None + for quantity in quantities: + current_shape = reader.ReadArrayShapeAtTimestep( + path=path, + category="particles", + quantity=f"{quantity}_{species}", + step=step, + ) + if shape is None: + shape = current_shape + elif shape != current_shape: + raise ValueError( + f"Different particle shapes found in the {reader.format.value} files for species {species} and quantity {quantity} in step {step}" + ) + + class BaseReader: """Base virtual class for arbitrary format readers. @@ -52,6 +109,7 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, + valid_files: List[str], ) -> Dict[str, npt.NDArray[Any]]: """Read a variable at each timestep and return a dictionary with the new name. @@ -65,6 +123,8 @@ def ReadPerTimestepVariable( The name of the variable to be read. newname : str The new name of the variable to be returned. + valid_files : list[str] + The valid files to be read. Returns ------- @@ -74,6 +134,33 @@ def ReadPerTimestepVariable( """ raise NotImplementedError("ReadPerTimestepVariable is not implemented") + def ReadParticleCountsAtTimestep( + self, + path: str, + step: int, + species: List[int], + ) -> Dict[int, int]: + """Return particle counts by species without reading particle arrays. + + Readers may override this method to collect all counts while opening the + timestep only once. The default implementation uses array-shape + metadata and is kept for third-party readers. + """ + counts: Dict[int, int] = {} + for sp in species: + try: + counts[sp] = int( + self.ReadArrayShapeAtTimestep( + path=path, + category="particles", + quantity=f"pX1_{sp}", + step=step, + )[0] + ) + except (IndexError, KeyError, OSError, ValueError): + counts[sp] = 0 + return counts + def ReadAttrsAtTimestep( self, path: str, @@ -360,6 +447,7 @@ def GetValidSteps( self, path: str, category: str, + num_cpus: Optional[int] = None, ) -> List[int]: """Get valid timesteps (sorted) in a given path and category. @@ -369,6 +457,8 @@ def GetValidSteps( The path to the files. category : str The category of the files. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Returns ------- @@ -376,16 +466,33 @@ def GetValidSteps( A list of valid timesteps in the given path and category. """ - steps: List[int] = [] - for filename in BaseReader.CategoryFiles( + category_files = BaseReader.CategoryFiles( path=path, category=category, format=self.format.value, + ) + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = { + executor.submit( + _check_file, + self.EnterFile, + os.path.join(path, category, filename), + ): filename + for filename in category_files + } + + steps: List[int] = [] + for future in tqdm( + as_completed(futures), + total=len(futures), + desc=f"getting valid steps for {category}", + leave=False, ): + filename = futures[future] try: - with self.EnterFile(os.path.join(path, category, filename)): - step = int(filename.split(".")[1]) - steps.append(step) + future.result() + steps.append(int(filename.split(".")[1])) except OSError: if filename not in self.skipped_files: self.skipped_files.append(filename) @@ -399,6 +506,7 @@ def GetValidFiles( self, path: str, category: str, + num_cpus: Optional[int] = None, ) -> List[str]: """Get valid files (sorted by timestep) in a given path and category. @@ -408,6 +516,8 @@ def GetValidFiles( The path to the files. category : str The category of the files. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Returns ------- @@ -415,15 +525,33 @@ def GetValidFiles( A list of valid files in the given path and category. """ - files: List[str] = [] - for filename in BaseReader.CategoryFiles( + category_files = BaseReader.CategoryFiles( path=path, category=category, format=self.format.value, + ) + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = { + executor.submit( + _check_file, + self.EnterFile, + os.path.join(path, category, filename), + ): filename + for filename in category_files + } + + files: List[str] = [] + for future in tqdm( + as_completed(futures), + total=len(futures), + desc=f"getting valid files for {category}", + leave=False, ): + filename = futures[future] try: - with self.EnterFile(os.path.join(path, category, filename)): - files.append(filename) + future.result() + files.append(filename) except OSError: if filename not in self.skipped_files: self.skipped_files.append(filename) @@ -438,6 +566,8 @@ def VerifySameCategoryNames( path: str, category: str, prefix: str, + valid_steps: List[int], + num_cpus: Optional[int] = None, ): """Verify that all files in a given category have the same names. @@ -449,6 +579,10 @@ def VerifySameCategoryNames( The category of the files. prefix : str The prefix of the variables to be read. + valid_steps : list[int] + The valid timesteps to be checked. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Raises ------ @@ -456,32 +590,41 @@ def VerifySameCategoryNames( If different names are found. """ - names = None - for step in self.GetValidSteps( - path=path, - category=category, + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = { + executor.submit( + self.ReadCategoryNamesAtTimestep, + path=path, + category=category, + prefix=prefix, + step=step, + ): step + for step in valid_steps + } + names_by_step = {} + for future in tqdm( + as_completed(futures), + total=len(futures), + desc=f"verifying same names for {category}", + leave=False, ): + names_by_step[futures[future]] = future.result() + + names = None + for step in valid_steps: if names is None: - names = self.ReadCategoryNamesAtTimestep( - path=path, - category=category, - prefix=prefix, - step=step, + names = names_by_step[step] + elif names != names_by_step[step]: + raise ValueError( + f"Different field names found in the {self.format.value} files for step {step}" ) - else: - if names != self.ReadCategoryNamesAtTimestep( - path=path, - category=category, - prefix=prefix, - step=step, - ): - raise ValueError( - f"Different field names found in the {self.format.value} files for step {step}" - ) def VerifySameFieldShapes( self, path: str, + valid_steps: List[int], + num_cpus: Optional[int] = None, ): """Verify that all fields in a given path have the same shape. @@ -489,6 +632,10 @@ def VerifySameFieldShapes( ---------- path : str The path to the files. + valid_steps : list[int] + The valid timesteps to be checked. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Raises ------ @@ -496,43 +643,49 @@ def VerifySameFieldShapes( If different shapes are found. """ - shape = None - for step in self.GetValidSteps( - path=path, - category="fields", + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = { + executor.submit(_get_field_shapes, self, path, step): step + for step in valid_steps + } + shapes_by_step = {} + for future in tqdm( + as_completed(futures), + total=len(futures), + desc="verifying same shapes for fields", + leave=False, ): - names = self.ReadCategoryNamesAtTimestep( - path=path, - category="fields", - prefix="f", - step=step, - ) + shapes_by_step[futures[future]] = future.result() + + shape = None + for step in valid_steps: + names = set(shapes_by_step[step]) if shape is None: name = names.pop() - shape = self.ReadArrayShapeAtTimestep( - path=path, - category="fields", - quantity=name, - step=step, - ) + shape = shapes_by_step[step][name] for name in names: - if shape != self.ReadArrayShapeAtTimestep( - path=path, - category="fields", - quantity=name, - step=step, - ): + if shape != shapes_by_step[step][name]: raise ValueError( f"Different field shapes found in the {self.format.value} files for field {name} in step {step}" ) - def VerifySameFieldLayouts(self, path: str): + def VerifySameFieldLayouts( + self, + path: str, + valid_steps: List[int], + num_cpus: Optional[int] = None, + ): """Verify that all timesteps in a given path have the same layout. Parameters ---------- path : str The path to the files. + valid_steps : list[int] + The valid timesteps to be checked. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Raises ------ @@ -540,32 +693,50 @@ def VerifySameFieldLayouts(self, path: str): If different layouts are found. """ - layout = None - for step in self.GetValidSteps( - path=path, - category="fields", + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = { + executor.submit( + self.ReadFieldLayoutAtTimestep, + path=path, + step=step, + ): step + for step in valid_steps + } + layouts_by_step = {} + for future in tqdm( + as_completed(futures), + total=len(futures), + desc="verifying same layouts for fields", + leave=False, ): + layouts_by_step[futures[future]] = future.result() + + layout = None + for step in valid_steps: if layout is None: - layout = self.ReadFieldLayoutAtTimestep( - path=path, - step=step, + layout = layouts_by_step[step] + elif layout != layouts_by_step[step]: + raise ValueError( + f"Different field layouts found in the {self.format.value} files for step {step}" ) - else: - if layout != self.ReadFieldLayoutAtTimestep( - path=path, - step=step, - ): - raise ValueError( - f"Different field layouts found in the {self.format.value} files for step {step}" - ) - def VerifySameParticleShapes(self, path: str): + def VerifySameParticleShapes( + self, + path: str, + valid_steps: List[int], + num_cpus: Optional[int] = None, + ): """Verify that all particle quantities in a given path have the same shape at specific timesteps. Parameters ---------- path : str The path to the files. + valid_steps : list[int] + The valid timesteps to be checked. + num_cpus : Optional[int] + The number of CPU cores to use for parallel processing. Raises ------ @@ -573,40 +744,21 @@ def VerifySameParticleShapes(self, path: str): If different shapes are found. """ - for step in self.GetValidSteps( - path=path, - category="particles", + num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + executor = get_reusable_executor(max_workers=num_cpus) + futures = [ + executor.submit(_verify_particle_shapes, self, path, step) + for step in valid_steps + ] + for future in tqdm( + as_completed(futures), + total=len(futures), + desc="verifying same shapes for particles", + leave=False, ): - prtl_species = self.ReadParticleSpeciesAtTimestep(path=path, step=step) - quantities = self.ReadCategoryNamesAtTimestep( - path=path, - category="particles", - prefix="p", - step=step, - ) - quantities = set(q.split("_")[0] for q in quantities if q.startswith("p")) - for sp in prtl_species: - shape = None - for q in quantities: - if shape is None: - shape = self.ReadArrayShapeAtTimestep( - path=path, - category="particles", - quantity=f"{q}_{sp}", - step=step, - ) - else: - if shape != self.ReadArrayShapeAtTimestep( - path=path, - category="particles", - quantity=f"{q}_{sp}", - step=step, - ): - raise ValueError( - f"Different particle shapes found in the {self.format.value} files for species {sp} and quantity {q} in step {step}" - ) - - def DefinesCategory(self, path: str, category: str) -> bool: + future.result() + + def DefinesCategory(self, path: str, category: str, valid_files: List[str]) -> bool: """Check whether a given category is defined in the path. Parameters @@ -622,6 +774,4 @@ def DefinesCategory(self, path: str, category: str) -> bool: True if the category is defined, False otherwise. """ - return os.path.exists(os.path.join(path, category)) and ( - len(self.GetValidFiles(path=path, category=category)) > 0 - ) + return os.path.exists(os.path.join(path, category)) and (len(valid_files) > 0) diff --git a/nt2/readers/hdf5.py b/nt2/readers/hdf5.py index 0ba198b..14d9df1 100644 --- a/nt2/readers/hdf5.py +++ b/nt2/readers/hdf5.py @@ -47,9 +47,9 @@ def __extract_step0(f: "_h5py.File") -> "_h5py.Group": if isinstance(f0, h5.Group): return f0 else: - raise ValueError(f"Step0 is not a group in the HDF5 file") + raise ValueError("Step0 is not a group in the HDF5 file") else: - raise ValueError(f"Wrong structure of the hdf5 file") + raise ValueError("Wrong structure of the hdf5 file") @property @override @@ -71,13 +71,11 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, + valid_files: List[str], ) -> Dict[str, npt.NDArray[Any]]: variables: List[Any] = [] h5 = _require_h5py() - for filename in self.GetValidFiles( - path=path, - category=category, - ): + for filename in valid_files: with h5.File(os.path.join(path, category, filename), "r") as f: f0 = Reader.__extract_step0(f) if varname in f0.keys(): @@ -93,6 +91,22 @@ def ReadPerTimestepVariable( return {newname: np.array(variables)} + @override + def ReadParticleCountsAtTimestep( + self, path: str, step: int, species: List[int] + ) -> Dict[int, int]: + """Read all per-species counts from one HDF5 file's metadata.""" + h5 = _require_h5py() + with h5.File(self.FullPath(path, "particles", step), "r") as f: + f0 = Reader.__extract_step0(f) + return { + sp: int(f0[name].shape[0]) + if (name := f"pX1_{sp}") in f0 + and isinstance(f0[name], h5.Dataset) + else 0 + for sp in species + } + @override def ReadAttrsAtTimestep( self, From 6579860867ca3f309fc9df185fadaf85b36acf91 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:31:38 -0400 Subject: [PATCH 07/14] plotter accessors moved to __init__.py --- nt2/__init__.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/nt2/__init__.py b/nt2/__init__.py index 1f5aee9..6355901 100644 --- a/nt2/__init__.py +++ b/nt2/__init__.py @@ -1,7 +1,63 @@ -__version__ = "1.5.3" +__version__ = "1.6.0" -import nt2.containers.data as nt2_data +import xarray as xr +from .containers.data import Data as nt2Data +from .plotters import polar as acc_polar +from .plotters import particles as acc_particles +from .plotters import inspect as acc_inspect +from .plotters import movie as acc_movie +from .utils import InheritClassDocstring -class Data(nt2_data.Data): + +class Data(nt2Data): + pass + + +# patch until xarray decides to actually fix this stupid bug +def __patch_xarray_dark(cls): + STYLE = """ + + """ + cls._repr_html_orig_ = cls._repr_html_ + cls._repr_html_ = lambda self: STYLE + cls._repr_html_orig_(self) + + +__patch_xarray_dark(xr.DataArray) +__patch_xarray_dark(xr.Dataset) + + +# register custom plotters +@xr.register_dataset_accessor("polar") +@InheritClassDocstring +class DatasetPolarPlotAccessor(acc_polar.ds_accessor): + pass + + +@xr.register_dataset_accessor("particles") +@InheritClassDocstring +class DatasetParticlesPlotAccessor(acc_particles.ds_accessor): + pass + + +@xr.register_dataarray_accessor("polar") +@InheritClassDocstring +class PolarPlotAccessor(acc_polar.accessor): + pass + + +@xr.register_dataset_accessor("inspect") +@InheritClassDocstring +class DatasetInspectPlotAccessor(acc_inspect.ds_accessor): + pass + + +@xr.register_dataarray_accessor("movie") +@InheritClassDocstring +class MoviePlotAccessor(acc_movie.accessor): pass From be7954408924aa6e01d227c8b065946cbaed65f1 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:31:50 -0400 Subject: [PATCH 08/14] optimized data containers --- nt2/containers/base.py | 112 +++++ nt2/containers/container.py | 57 --- nt2/containers/data.py | 377 ++++++-------- nt2/containers/diagnostics.py | 387 ++++++++++---- nt2/containers/fields.py | 210 ++++++-- nt2/containers/particle_dataset.py | 667 +++++++++++++++++++++++++ nt2/containers/particles.py | 776 ++++++----------------------- nt2/containers/spectra.py | 136 +++-- 8 files changed, 1651 insertions(+), 1071 deletions(-) create mode 100644 nt2/containers/base.py delete mode 100644 nt2/containers/container.py create mode 100644 nt2/containers/particle_dataset.py diff --git a/nt2/containers/base.py b/nt2/containers/base.py new file mode 100644 index 0000000..7e2a943 --- /dev/null +++ b/nt2/containers/base.py @@ -0,0 +1,112 @@ +from typing import Callable, Optional, Dict, Tuple, List, Union + +from ..readers.base import BaseReader +from ..utils import CoordinateSystem + + +class BaseContainer: + """Parent container class for holding any category data.""" + + __path: str + __reader: BaseReader + __verify: bool + __remap: Optional[Dict[str, Callable[[str], str]]] + __coordinate_system: Optional[CoordinateSystem] + __num_cpus: Optional[int] + + valid_steps: List[int] = [] + valid_files: List[str] = [] + + def __init__( + self, + path: str, + reader: BaseReader, + verify: bool = False, + remap: Union[Dict[str, Callable[[str], str]], None] = None, + coord_system: Union[CoordinateSystem, None] = None, + num_cpus: Union[int, None] = None, + ): + """Initializer for the BaseContainer class. + + Parameters + ---------- + path : str + The path to the data. + reader : BaseReader + The reader to be used for reading the data. + verify : Optional[bool] + Whether to verify the data. If None, it will use the reader's default. + remap : Optional[dict[str, Callable[[str], str]]] + Remap dictionary to use to remap the data names (coords, fields, etc.). + coord_system : Optional[CoordinateSystem] + The coordinate system of the data. + num_cpus : Optional[int] + The number of CPUs to use for parallel processing. If None, it will use all available CPUs. + + """ + self.__path = path + self.__reader = reader + self.__verify = verify + self.__remap = remap + self.__coordinate_system = coord_system + self.__num_cpus = num_cpus + + @property + def path(self) -> str: + """str: The main path of the data.""" + return self.__path + + @property + def reader(self) -> BaseReader: + """BaseReader: The reader used to read the data.""" + return self.__reader + + @property + def verify(self) -> bool: + """bool: Whether to verify the data.""" + return self.__verify + + @property + def remap(self) -> Optional[Dict[str, Callable[[str], str]]]: + """{ str: (str) -> str } : The coordinate/field remap dictionary.""" + return self.__remap + + @property + def coordinate_system(self) -> Optional[CoordinateSystem]: + """CoordinateSystem: The coordinate system of the data.""" + return self.__coordinate_system + + @property + def num_cpus(self) -> Optional[int]: + """int: The number of CPUs to use for parallel processing.""" + return self.__num_cpus + + def set_remap(self, remap: Dict[str, Callable[[str], str]]) -> None: + """Set the remap dictionary for the container. + + Parameters + ---------- + remap : dict[str, Callable[[str], str]] + The remap dictionary to set. + + """ + self.__remap = remap + + def set_coordinate_system(self, coord_system: CoordinateSystem) -> None: + """Set the coordinate system of the data. + + Parameters + ---------- + coord_system : CoordinateSystem + The coordinate system to set. + + """ + self.__coordinate_system = coord_system + + def __dask_tokenize__(self) -> Tuple[str, str, str]: + """Provide a deterministic Dask token for container instances.""" + return ( + self.__class__.__name__, + self.__path, + self.__reader.format.value, + ) diff --git a/nt2/containers/container.py b/nt2/containers/container.py deleted file mode 100644 index 430051b..0000000 --- a/nt2/containers/container.py +++ /dev/null @@ -1,57 +0,0 @@ -from typing import Callable, Optional, Dict, Tuple - -from nt2.readers.base import BaseReader - - -class BaseContainer: - """Parent container class for holding any category data.""" - - __path: str - __reader: BaseReader - __remap: Optional[Dict[str, Callable[[str], str]]] - - def __init__( - self, - path: str, - reader: BaseReader, - remap: Optional[Dict[str, Callable[[str], str]]] = None, - ): - """Initializer for the BaseContainer class. - - Parameters - ---------- - path : str - The path to the data. - reader : BaseReader - The reader to be used for reading the data. - remap : Optional[dict[str, Callable[[str], str]]] - Remap dictionary to use to remap the data names (coords, fields, etc.). - - """ - super(BaseContainer, self).__init__() - self.__path = path - self.__reader = reader - self.__remap = remap - - @property - def path(self) -> str: - """str: The main path of the data.""" - return self.__path - - @property - def reader(self) -> BaseReader: - """BaseReader: The reader used to read the data.""" - return self.__reader - - @property - def remap(self) -> Optional[Dict[str, Callable[[str], str]]]: - """{ str: (str) -> str } : The coordinate/field remap dictionary.""" - return self.__remap - - def __dask_tokenize__(self) -> Tuple[str, str, str]: - """Provide a deterministic Dask token for container instances.""" - return ( - self.__class__.__name__, - self.__path, - self.__reader.format.value, - ) diff --git a/nt2/containers/data.py b/nt2/containers/data.py index dec97cd..26b2a74 100644 --- a/nt2/containers/data.py +++ b/nt2/containers/data.py @@ -1,136 +1,28 @@ from typing import Callable, Any, Union, Optional, List, Dict -import sys -import logging - -if sys.version_info >= (3, 12): - from typing import override -else: - - def override(method): - return method - - -from nt2.utils import ToHumanReadable +import os import xarray as xr import pandas as pd -from nt2.utils import ( +from ..utils import ( + ToHumanReadable, DetermineDataFormat, - InheritClassDocstring, Format, CoordinateSystem, + CoordinateSystemType, ) -from nt2.readers.base import BaseReader -from nt2.readers.hdf5 import Reader as HDF5Reader -from nt2.readers.adios2 import Reader as BP5Reader -from nt2.containers.fields import Fields -from nt2.containers.particles import Particles -from nt2.containers.spectra import Spectra -from nt2.containers.diagnostics import Diagnostics - -import nt2.plotters.polar as acc_polar -import nt2.plotters.particles as acc_particles -import nt2.plotters.inspect as acc_inspect -import nt2.plotters.movie as acc_movie -from nt2.plotters.export import makeFramesAndMovie - - -@xr.register_dataset_accessor("polar") -@InheritClassDocstring -class DatasetPolarPlotAccessor(acc_polar.ds_accessor): - pass - - -@xr.register_dataset_accessor("particles") -@InheritClassDocstring -class DatasetParticlesPlotAccessor(acc_particles.ds_accessor): - pass - - -@xr.register_dataarray_accessor("polar") -@InheritClassDocstring -class PolarPlotAccessor(acc_polar.accessor): - pass - - -@xr.register_dataset_accessor("inspect") -@InheritClassDocstring -class DatasetInspectPlotAccessor(acc_inspect.ds_accessor): - pass - - -@xr.register_dataarray_accessor("movie") -@InheritClassDocstring -class MoviePlotAccessor(acc_movie.accessor): - pass - +from ..readers.base import BaseReader +from ..readers.hdf5 import Reader as HDF5Reader +from ..readers.adios2 import Reader as BP5Reader -# Cartesian remapping functions -def remap_fields_cart(name: str) -> str: - name = name[1:] - fieldname = name.split("_")[0] - fieldname = fieldname.replace("0", "t") - fieldname = fieldname.replace("1", "x") - fieldname = fieldname.replace("2", "y") - fieldname = fieldname.replace("3", "z") - suffix = "_".join(name.split("_")[1:]) - return f"{fieldname}{'_' + suffix if suffix != '' else ''}" +from .fields import FieldContainer +from .particles import ParticleContainer +from .particle_dataset import ParticleDataset +from .spectra import SpectraContainer +from .diagnostics import Diagnostics - -def remap_coords_cart(name: str) -> str: - return { - "X1": "x", - "X2": "y", - "X3": "z", - }.get(name, name) - - -def remap_prtl_quantities_cart(name: str) -> str: - shortname = name[1:] - return { - "X1": "x", - "X2": "y", - "X3": "z", - "U1": "ux", - "U2": "uy", - "U3": "uz", - "W": "w", - }.get(shortname, shortname) - - -# Spherical remapping functions -def remap_fields_sph(name: str) -> str: - name = name[1:] - fieldname = name.split("_")[0] - fieldname = fieldname.replace("0", "t") - fieldname = fieldname.replace("1", "r") - fieldname = fieldname.replace("2", "th") - fieldname = fieldname.replace("3", "ph") - suffix = "_".join(name.split("_")[1:]) - return f"{fieldname}{'_' + suffix if suffix != '' else ''}" - - -def remap_coords_sph(name: str) -> str: - return { - "X1": "r", - "X2": "th", - "X3": "ph", - }.get(name, name) - - -def remap_prtl_quantities_sph(name: str) -> str: - shortname = name[1:] - return { - "X1": "r", - "X2": "th", - "X3": "ph", - "U1": "ur", - "U2": "uth", - "U3": "uph", - "W": "w", - }.get(shortname, shortname) +from ..plotters.export import makeFramesAndMovie def compactify(lst: Union[List[Any], Any]) -> str: @@ -145,19 +37,26 @@ def compactify(lst: Union[List[Any], Any]) -> str: return c[:-2] -class Data(Fields, Particles, Spectra): - """Main class to manage all the data containers. - - Inherits from all category-specific containers. +class Data: + """Main class to manage all the data containers.""" - """ + _fields: Optional[FieldContainer] = None + _particles: Optional[ParticleContainer] = None + _spectra: Optional[SpectraContainer] = None + _diagnostics: Optional[Diagnostics] = None def __init__( self, path: str, + fields: bool = True, + particles: bool = True, + spectra: bool = True, + diagnostics: bool = False, + verify: bool = False, reader: Optional[BaseReader] = None, remap: Optional[Dict[str, Callable[[str], str]]] = None, - coord_system: Optional[CoordinateSystem] = None, + coord_system: Optional[CoordinateSystemType] = None, + num_cpus: Optional[int] = min(os.cpu_count() or 1, 16), ): """Initializer for the Data class. @@ -165,14 +64,28 @@ def __init__( ---------- path : str Main path to the data + components : list[OutputComponentType], optional + List of components to load. If None, all components will be loaded. + fields : bool, optional + Whether to load the fields component. Default is True. + particles : bool, optional + Whether to load the particles component. Default is True. + spectra : bool, optional + Whether to load the spectra component. Default is True. + diagnostics : bool, optional + Whether to load the diagnostics component. Default is False. + verify : bool, optional + Whether to verify the data. Default is False. reader : BaseReader, optional Reader to use to read the data. If None, it will be determined based on the file format. remap : dict[str, Callable[[str], str]], optional Remap dictionary to use to remap the data names (coords, fields, etc.). - coord_system : CoordinateSystem, optional + coord_system : Literal["XYZ", "SPH"], optional Coordinate system of the data. If None, it will be determined based on the data attrs (if remap is also None). + num_cpus : int, optional + Number of CPUs to use for parallel processing. If None, it will use all available CPUs. Raises ------ @@ -185,9 +98,9 @@ def __init__( fmt = DetermineDataFormat(path) if reader is None: if fmt == Format.HDF5: - self.__reader = HDF5Reader() + __reader = HDF5Reader() elif fmt == Format.BP5: - self.__reader = BP5Reader() + __reader = BP5Reader() else: raise NotImplementedError( "Only HDF5 & BP5 formats are supported at the moment." @@ -197,63 +110,115 @@ def __init__( raise ValueError( f"Reader format {reader.format} does not match data format {fmt}." ) - self.__reader = reader - - # determine the coordinate system and remapping + __reader = reader + + if fields: + self._fields = FieldContainer( + path=path, + reader=__reader, + verify=verify, + remap=remap, + coord_system=CoordinateSystem.from_str(coord_system) + if coord_system + else None, + num_cpus=num_cpus, + ) + if particles: + self._particles = ParticleContainer( + path=path, + reader=__reader, + verify=verify, + remap=remap, + coord_system=CoordinateSystem.from_str(coord_system) + if coord_system + else None, + num_cpus=num_cpus, + ) + if spectra: + self._spectra = SpectraContainer( + path=path, + reader=__reader, + verify=verify, + remap=remap, + coord_system=CoordinateSystem.from_str(coord_system) + if coord_system + else None, + num_cpus=num_cpus, + ) + if diagnostics: + self._diagnostics = Diagnostics(path=path) self.__attrs: Dict[str, Any] = {} - for category in ["fields", "particles", "spectra"]: - if self.__reader.DefinesCategory(path, category): - valid_steps = self.__reader.GetValidSteps(path, category) - if len(valid_steps) == 0: - raise ValueError(f"No valid steps found for category {category}.") - first_step = valid_steps[0] - attrs = self.__reader.ReadAttrsAtTimestep(path, category, first_step) - self.__attrs.update(**attrs) - if "Coordinates" not in attrs: - raise ValueError( - f"Coordinates not found in attributes for category {category}." - ) - else: - if attrs["Coordinates"] in [b"cart", "cart"]: - coord_system = CoordinateSystem.XYZ - elif attrs["Coordinates"] in [b"sph", "sph", b"qsph", "qsph"]: - coord_system = CoordinateSystem.SPH + if self.fields_defined: + self.__attrs.update(**self._fields.attrs) + if self.particles_defined: + self.__attrs.update(**self._particles.attrs) + if self.spectra_defined: + self.__attrs.update(**self._spectra.attrs) - else: - raise NotImplementedError( - f"Coordinate system {attrs['Coordinates']} not supported." - ) - if remap is None: - remap = { - "coords": ( - remap_coords_cart - if coord_system == CoordinateSystem.XYZ - else remap_coords_sph - ), - "fields": ( - remap_fields_cart - if coord_system == CoordinateSystem.XYZ - else remap_fields_sph - ), - "particles": ( - remap_prtl_quantities_cart - if coord_system == CoordinateSystem.XYZ - else remap_prtl_quantities_sph - ), - } - break + @property + def fields_defined(self) -> bool: + """bool: Whether fields are defined in the data.""" + return ( + self._fields is not None + and self._fields.fields_defined + and self._fields.fields is not None + ) + + @property + def particles_defined(self) -> bool: + """bool: Whether particles are defined in the data.""" + return ( + self._particles is not None + and self._particles.particles_defined + and self._particles.particles is not None + ) + + @property + def spectra_defined(self) -> bool: + """bool: Whether spectra are defined in the data.""" + return ( + self._spectra is not None + and self._spectra.spectra_defined + and self._spectra.spectra is not None + ) - if coord_system is None: - raise ValueError("No coordinate system found in the data.") + @property + def diagnostics_defined(self) -> bool: + """bool: Whether diagnostics are defined in the data.""" + return self._diagnostics is not None and self._diagnostics.df is not None + + @property + def fields(self) -> xr.Dataset: + """xr.Dataset: The fields dataset.""" + if not self.fields_defined: + raise ValueError("Fields are not defined in the data.") + return self._fields.fields + + @property + def particles(self) -> ParticleDataset: + """ParticleDataset: The particles dataset.""" + if not self.particles_defined: + raise ValueError("Particles are not defined in the data.") + return self._particles.particles + + @property + def spectra(self) -> xr.Dataset: + """xr.Dataset: The spectra dataset.""" + if not self.spectra_defined: + raise ValueError("Spectra are not defined in the data.") + return self._spectra.spectra - self.__coordinate_system = coord_system + @property + def diagnostics(self) -> pd.DataFrame: + """Diagnostics: The diagnostics dataset.""" + if not self.diagnostics_defined: + raise ValueError("Diagnostics are not defined in the data.") + return self._diagnostics.df - super(Data, self).__init__(path=path, reader=self.__reader, remap=remap) - try: - self.__diagnostics = Diagnostics(path) - except Exception as e: - logging.warning(f"Failed to read diagnostics: {e}") - self.__diagnostics = None + @property + def attrs(self) -> Dict[str, Any]: + """dict: The attributes of the data.""" + return self.__attrs def makeMovie( self, @@ -262,8 +227,8 @@ def makeMovie( num_cpus: Optional[int] = None, **movie_kwargs: Any, ) -> bool: - f"""Create animation with provided plot function. - + """Create animation with provided plot function. + Parameters ---------- plot : callable @@ -274,7 +239,7 @@ def makeMovie( The number of CPUs to use for parallel processing. If None, it will use all available CPUs. **movie_kwargs : dict Additional keyword arguments to pass to the movie creation function. - + Returns ------- bool @@ -283,13 +248,14 @@ def makeMovie( if time is None: if self.fields_defined: time = self.fields.t.values - elif self.particles_defined and self.particles is not None: + elif self.particles_defined: time = list(self.particles.times) else: raise ValueError("No time values found.") - assert time is not None, "Time values must be provided." + if time is None: + raise ValueError("No time values found.") name: str = "" - if self.attrs.get("simulation.name", None) == None: + if self.attrs.get("simulation.name", None) is None: name = movie_kwargs.pop("name", "movie") else: name_b = self.attrs.get("simulation.name") @@ -306,23 +272,6 @@ def makeMovie( **movie_kwargs, ) - @property - def coordinate_system(self) -> CoordinateSystem: - """CoordinateSystem: The coordinate system of the data.""" - return self.__coordinate_system - - @property - def attrs(self) -> Dict[str, Any]: - """dict[str, Any]: The attributes of the data.""" - return self.__attrs - - @property - def diagnostics(self) -> Union[pd.DataFrame, None]: - """pd.DataFrame or None: The diagnostics output if .out file is found, None otherwise.""" - if self.__diagnostics is None: - return None - return self.__diagnostics.df - def to_str(self) -> str: """str: String representation of the all the enclosed dataframes.""" @@ -330,7 +279,7 @@ def to_str(self) -> str: if self.fields_defined: string += "FieldsDataset:\n" string += "==============\n" - string += f"| Coordinates:\n| {self.coordinate_system.value}\n|\n" + string += f"| Coordinates:\n| {self._fields.coordinate_system.value}\n|\n" string += f"| Data axes:\n| {compactify(self.fields.indexes.keys())}\n|\n" delta_t = ( self.fields.coords["t"].values[1] - self.fields.coords["t"].values[0] @@ -343,21 +292,23 @@ def to_str(self) -> str: fmt = ".2f" string += f"| - {key}: {crd.min():{fmt}} -> {crd.max():{fmt}} [{len(crd)}]\n" string += "|\n" - string += f"| Quantities:\n| {compactify(sorted(self.fields.data_vars.keys()))}\n|\n" + string += f"| Quantities:\n| {compactify(sorted(map(str, self.fields.data_vars.keys())))}\n|\n" string += f"| Total size: {ToHumanReadable(self.fields.nbytes)}\n\n" else: string += "FieldsDataset:\n" string += "==============\n" string += " empty\n\n" - if self.particles_defined and self.particles is not None: + if self.particles_defined: species = sorted(self.particles.species) string += "ParticleDataset:\n" string += "================\n" string += f"| Species:\n| {compactify(species)}\n|\n" string += f"| Timesteps:\n| {len(self.particles.times)}\n|\n" string += f"| Quantities:\n| {compactify(self.particles.columns)}\n|\n" - string += f"| Total size: {ToHumanReadable(self.particles.nbytes)}\n|\n" - string += self.help_particles("| ") + string += ( + f"| Estimated index size: {ToHumanReadable(self.particles.nbytes)}\n|\n" + ) + string += self._particles.help_particles("| ") string += "\n" else: string += "ParticleDataset:\n" @@ -382,9 +333,9 @@ def to_str(self) -> str: fmt = ".2f" string += f"| - {key}: {crd.min():{fmt}} -> {crd.max():{fmt}} [{len(crd)}]\n" string += "|\n" - string += f"| Quantities:\n| {compactify(sorted(self.spectra.data_vars.keys()))}\n|\n" + string += f"| Quantities:\n| {compactify(sorted(map(str, self.spectra.data_vars.keys())))}\n|\n" string += f"| Total size: {ToHumanReadable(self.spectra.nbytes)}\n|\n" - string += self.help_spectra("| ") + string += self._spectra.help_spectra("| ") else: string += "SpectraDataset:\n" string += "===============\n" @@ -392,10 +343,8 @@ def to_str(self) -> str: return string - @override def __str__(self) -> str: return self.to_str() - @override def __repr__(self) -> str: return self.to_str() diff --git a/nt2/containers/diagnostics.py b/nt2/containers/diagnostics.py index 98fe33b..324fa82 100644 --- a/nt2/containers/diagnostics.py +++ b/nt2/containers/diagnostics.py @@ -1,108 +1,301 @@ -from typing import Union +"""Parse Entity diagnostic log files into pandas dataframes.""" + +from __future__ import annotations + +import json +import logging +import os +import re +from pathlib import Path +from typing import Dict, Iterator, List, Optional, Union + import pandas as pd +_NUMBER = r"[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?" +_STEP_RE = re.compile(r"^Step:\s+(\d+)\.+\[") +_TIME_RE = re.compile(rf"^Time:\s+({_NUMBER})\.+\[") +_SUBSTEP_RE = re.compile( + rf"^\s+(?P[A-Za-z]+)\.+(?P{_NUMBER})\s+" + rf"(?Pms|[µμu]s|ns|s)\b" +) +_SPECIES_RE = re.compile( + rf"^\s+species\s+(?P\d+)\s+\([^)]*\)\.+" + rf"(?P{_NUMBER})" + rf"(?:\s+\d+%\s*:\s*\d+%\s+(?P{_NUMBER})" + rf"\s*:\s*(?P{_NUMBER}))?" +) + +_UNIT_TO_NS = { + "s": 1e9, + "ms": 1e6, + "µs": 1e3, + "μs": 1e3, + "us": 1e3, + "ns": 1.0, +} + + class Diagnostics: - df: Union[pd.DataFrame, None] + """Diagnostic data parsed from an Entity ``.out`` file. + + The source is read one line at a time and converted in bounded-size chunks. + By default, the parsed dataframe is cached next to the source as Parquet. + A valid cache is used on later construction instead of scanning the log. + + Parameters + ---------- + path + Directory containing a ``.out`` file, or the path to one ``.out`` file. + cache + Whether to read and write the Parquet cache. + chunk_size + Number of timestep records per Parquet row group. + cache_path + Optional cache filename. The default is + ``.diagnostics.parquet``. + """ + + _CACHE_VERSION = 1 + + df: Optional[pd.DataFrame] + outfile: str - def __init__(self, path: str): - import os - import logging - import re + def __init__( + self, + path: Union[str, os.PathLike[str]], + *, + cache: bool = True, + chunk_size: int = 100_000, + cache_path: Optional[Union[str, os.PathLike[str]]] = None, + ) -> None: + if chunk_size <= 0: + raise ValueError("chunk_size must be greater than zero") - outfiles = [o for o in os.listdir(path) if o.endswith(".out")] - if len(outfiles) == 0: - logging.warning(f"No .out files found in {path}") + outfile = self._find_outfile(Path(path)) + if outfile is None: + logging.warning("No .out files found in %s", path) self.df = None - else: - self.outfile = os.path.join(path, outfiles[0]) - - data = {} - - with open(self.outfile, "r") as f: - content = f.read() - steps = re.findall(r"Step:\s+(\d+)\.+\[", content) - times = re.findall(r"Time:\s+([\d.]+\d)\.+\[", content) - substeps = re.findall(r"\s+([A-Za-z]+)\.+([\d.]+)\s+([mµn]?s)", content) - species = re.findall( - r"\s+species\s+(\d+)\s+\(.+\)\.+([\deE+-.]+)(\s+\d+\%\s:\s\d+\%\s+)?([\deE+-.]+)?( : )?([\deE+-.]+)?", - content, + return + + self.outfile = str(outfile) + parquet_path = ( + Path(cache_path) + if cache_path is not None + else Path(f"{outfile}.diagnostics.parquet") + ) + metadata_path = Path(f"{parquet_path}.json") + if parquet_path.resolve() == outfile.resolve(): + raise ValueError("cache_path must not overwrite the source .out file") + + if cache and self._cache_is_valid(outfile, parquet_path, metadata_path): + try: + self.df = pd.read_parquet(parquet_path) + return + except (OSError, ValueError): + logging.warning( + "Failed to read diagnostics cache %s; rebuilding it", + parquet_path, + exc_info=True, ) - data["steps"] = [] - for step in steps: - data["steps"].append(int(step)) - - data["times"] = [] - for time in times: - data["times"].append(float(time)) - - assert len(data["steps"]) == len( - data["times"] - ), "Number of steps and times do not match" - - data["substeps"] = {} - for substep in substeps: - if substep[0] not in data["substeps"].keys(): - data["substeps"][substep[0]] = [] - - def to_ns(value: float, unit: str) -> float: - if unit == "s": - return value * 1e9 - elif unit == "ms": - return value * 1e6 - elif unit == "µs": - return value * 1e3 - elif unit == "ns": - return value - else: - raise ValueError(f"Unknown time unit: {unit}") - - data["substeps"][substep[0]].append( - to_ns(float(substep[1]), substep[2]) + if cache: + self.df = self._parse_to_cache( + outfile, parquet_path, metadata_path, chunk_size + ) + else: + chunks = list(self._dataframe_chunks(outfile, chunk_size)) + self.df = self._combine_chunks(chunks) + + @staticmethod + def _find_outfile(path: Path) -> Optional[Path]: + if path.is_file(): + if path.suffix != ".out": + raise ValueError(f"Expected a .out file, got {path}") + return path + if not path.exists(): + raise FileNotFoundError(path) + if not path.is_dir(): + raise ValueError(f"Expected a directory or .out file, got {path}") + + outfiles = sorted(path.glob("*.out")) + return outfiles[0] if outfiles else None + + @classmethod + def _cache_is_valid( + cls, source: Path, parquet_path: Path, metadata_path: Path + ) -> bool: + if not parquet_path.is_file() or not metadata_path.is_file(): + return False + try: + with metadata_path.open("r", encoding="utf-8") as stream: + metadata = json.load(stream) + stat = source.stat() + return metadata == { + "parser_version": cls._CACHE_VERSION, + "source": str(source.resolve()), + "source_size": stat.st_size, + "source_mtime_ns": stat.st_mtime_ns, + } + except (OSError, ValueError, TypeError): + return False + + @classmethod + def _cache_metadata(cls, source: Path) -> Dict[str, Union[int, str]]: + stat = source.stat() + return { + "parser_version": cls._CACHE_VERSION, + "source": str(source.resolve()), + "source_size": stat.st_size, + "source_mtime_ns": stat.st_mtime_ns, + } + + @classmethod + def _parse_to_cache( + cls, + source: Path, + parquet_path: Path, + metadata_path: Path, + chunk_size: int, + ) -> pd.DataFrame: + # ParquetWriter creates multiple row groups in one file without retaining + # the full parsed table in memory. Import lazily so cache=False only needs + # pandas. + import pyarrow as pa + import pyarrow.parquet as pq + + parquet_path.parent.mkdir(parents=True, exist_ok=True) + temporary_parquet = parquet_path.with_name( + f".{parquet_path.name}.{os.getpid()}.tmp" + ) + temporary_metadata = metadata_path.with_name( + f".{metadata_path.name}.{os.getpid()}.tmp" + ) + + writer = None + source_metadata = cls._cache_metadata(source) + try: + for chunk in cls._dataframe_chunks(source, chunk_size): + table = pa.Table.from_pandas(chunk, preserve_index=True) + if writer is None: + writer = pq.ParquetWriter(temporary_parquet, table.schema) + elif table.schema != writer.schema: + raise ValueError( + "Diagnostics columns or dtypes changed within the log" + ) + writer.write_table(table) + + if writer is not None: + writer.close() + writer = None + else: + # Preserve the historical result for a log with no records. + empty = pd.DataFrame(columns=["Step", "Time"]) + empty.index = pd.Index([], name="Step", dtype="int64") + empty.to_parquet(temporary_parquet) + + with temporary_metadata.open("w", encoding="utf-8") as stream: + # Use the source state from before parsing. If a running + # simulation appended to the file meanwhile, this cache will + # intentionally be stale and rebuilt on the next construction. + json.dump(source_metadata, stream) + + os.replace(temporary_parquet, parquet_path) + os.replace(temporary_metadata, metadata_path) + finally: + if writer is not None: + writer.close() + temporary_parquet.unlink(missing_ok=True) + temporary_metadata.unlink(missing_ok=True) + + return pd.read_parquet(parquet_path) + + @classmethod + def _dataframe_chunks(cls, source: Path, chunk_size: int) -> Iterator[pd.DataFrame]: + records: List[Dict[str, Union[int, float]]] = [] + columns: Optional[List[str]] = None + + for record in cls._records(source): + if columns is None: + columns = list(record) + else: + missing = set(columns) - set(record) + extra = set(record) - set(columns) + if missing or extra: + raise ValueError( + f"Inconsistent diagnostics record at step {record['Step']}: " + f"missing={sorted(missing)}, extra={sorted(extra)}" ) + records.append(record) + if len(records) >= chunk_size: + yield cls._make_dataframe(records, columns) + records = [] + + if records: + # columns is necessarily set when records is non-empty. + yield cls._make_dataframe(records, columns or []) + + @staticmethod + def _make_dataframe( + records: List[Dict[str, Union[int, float]]], columns: List[str] + ) -> pd.DataFrame: + dataframe = pd.DataFrame.from_records(records, columns=columns) + return dataframe.set_index("Step", drop=False) + + @staticmethod + def _combine_chunks(chunks: List[pd.DataFrame]) -> pd.DataFrame: + if chunks: + return pd.concat(chunks) + dataframe = pd.DataFrame(columns=["Step", "Time"]) + dataframe.index = pd.Index([], name="Step", dtype="int64") + return dataframe + + @staticmethod + def _records(source: Path) -> Iterator[Dict[str, Union[int, float]]]: + record: Optional[Dict[str, Union[int, float]]] = None + + with source.open("r", encoding="utf-8-sig", errors="replace") as stream: + for line in stream: + if line.startswith("Step:"): + if record is not None: + yield record + match = _STEP_RE.match(line) + record = {"Step": int(match.group(1))} if match else None + continue + + if record is None: + continue + + # Entity terminates each complete timestep with a dotted line. + # Yielding here means a final record interrupted while the + # simulation is still writing is not exposed as valid data. + if line.startswith("........................................"): + yield record + record = None + continue + + if line.startswith("Time:"): + match = _TIME_RE.match(line) + if match: + record["Time"] = float(match.group(1)) + continue + + if line.startswith(" species"): + match = _SPECIES_RE.match(line) + if match: + species = match.group("species") + record[f"species_{species}"] = int(float(match.group("total"))) + minimum = match.group("minimum") + maximum = match.group("maximum") + if minimum is not None and maximum is not None: + record[f"species_{species}_min"] = int(float(minimum)) + record[f"species_{species}_max"] = int(float(maximum)) + continue - for key in data["substeps"].keys(): - assert len(data["substeps"][key]) == len( - data["steps"] - ), f"Number of substep entries for {key} does not match number of steps" - - data["species"] = {} - data["species_min"] = {} - data["species_max"] = {} - for specie in species: - if specie[0] not in data["species"].keys(): - data["species"][specie[0]] = [] - data["species_min"][specie[0]] = [] - data["species_max"][specie[0]] = [] - data["species"][specie[0]].append(int(float(specie[1]))) - if len(specie) == 6 and specie[3] != "" and specie[5] != "": - data["species_min"][specie[0]].append(int(float(specie[3]))) - data["species_max"][specie[0]].append(int(float(specie[5]))) - - for key in data["species"].keys(): - assert len(data["species"][key]) == len( - data["steps"] - ), f"Number of species entries for {key} does not match number of steps" - assert (len(data["species_min"][key]) == len(data["steps"])) or ( - len(data["species_min"][key]) == 0 - ), f"Number of species min entries for {key} does not match number of steps" - assert (len(data["species_max"][key]) == len(data["steps"])) or ( - len(data["species_max"][key]) == 0 - ), f"Number of species max entries for {key} does not match number of steps" - - self.df = pd.DataFrame(index=data["steps"]) - self.df["Step"] = data["steps"] - self.df["Time"] = data["times"] - for key in data["substeps"].keys(): - self.df[key] = data["substeps"][key] - for key in data["species"].keys(): - self.df[f"species_{key}"] = data["species"][key] - if ( - len(data["species_min"][key]) > 0 - and len(data["species_max"][key]) > 0 - ): - self.df[f"species_{key}_min"] = data["species_min"][key] - self.df[f"species_{key}_max"] = data["species_max"][key] - - del data + if line.startswith(" "): + match = _SUBSTEP_RE.match(line) + if match: + record[match.group("name")] = ( + float(match.group("value")) + * _UNIT_TO_NS[match.group("unit")] + ) diff --git a/nt2/containers/fields.py b/nt2/containers/fields.py index 5f323a3..0cf2c75 100644 --- a/nt2/containers/fields.py +++ b/nt2/containers/fields.py @@ -1,40 +1,57 @@ -from typing import Any +from typing import Any, Union, Dict import dask import dask.array as da import xarray as xr +from tqdm import tqdm -from nt2.containers.container import BaseContainer -from nt2.utils import Layout +from .base import BaseContainer +from ..utils import Layout, CoordinateSystem -class Fields(BaseContainer): - """Parent class to manage the fields dataframe.""" +def remap_fields_cart(name: str) -> str: + name = name[1:] + fieldname = name.split("_")[0] + fieldname = fieldname.replace("0", "t") + fieldname = fieldname.replace("1", "x") + fieldname = fieldname.replace("2", "y") + fieldname = fieldname.replace("3", "z") + suffix = "_".join(name.split("_")[1:]) + return f"{fieldname}{'_' + suffix if suffix != '' else ''}" - def _read_field(self, layout: Layout, field: str, step: int) -> Any: - """Reads a field from the data. - This is a dask-delayed function used further to build the dataset. +def remap_coords_cart(name: str) -> str: + return { + "X1": "x", + "X2": "y", + "X3": "z", + }.get(name, name) - Parameters - ---------- - layout : Layout - Layout of the field. - field : str - Field to read. - step : int - Step to read. - Returns - ------- - Any - Field data. +def remap_fields_sph(name: str) -> str: + name = name[1:] + fieldname = name.split("_")[0] + fieldname = fieldname.replace("0", "t") + fieldname = fieldname.replace("1", "r") + fieldname = fieldname.replace("2", "th") + fieldname = fieldname.replace("3", "ph") + suffix = "_".join(name.split("_")[1:]) + return f"{fieldname}{'_' + suffix if suffix != '' else ''}" - """ - if layout == Layout.L: - return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step) - else: - return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step).T + +def remap_coords_sph(name: str) -> str: + return { + "X1": "r", + "X2": "th", + "X3": "ph", + }.get(name, name) + + +class FieldContainer(BaseContainer): + """Parent class to manage the fields dataframe.""" + + __fields_defined: bool = False + __fields: Union[xr.Dataset, None] = None def __init__( self, @@ -48,13 +65,21 @@ def __init__( Keyword arguments to be passed to the parent BaseContainer class. """ - super(Fields, self).__init__(**kwargs) - if self.reader.DefinesCategory(self.path, "fields"): + super().__init__(**kwargs) + self.valid_files = self.reader.GetValidFiles( + path=self.path, + category="fields", + num_cpus=self.num_cpus, + ) + self.valid_steps = self.reader.GetValidSteps( + path=self.path, + category="fields", + num_cpus=self.num_cpus, + ) + + if self.reader.DefinesCategory(self.path, "fields", self.valid_files): self.__fields_defined = True self.__fields = self._read_fields() - else: - self.__fields_defined = False - self.__fields = xr.Dataset() @property def fields_defined(self) -> bool: @@ -62,22 +87,63 @@ def fields_defined(self) -> bool: return self.__fields_defined @property - def fields(self) -> xr.Dataset: + def fields(self) -> Union[xr.Dataset, None]: """xr.Dataset: The fields dataframe.""" return self.__fields + def _read_field(self, layout: Layout, field: str, step: int) -> Any: + """Reads a field from the data. + + This is a dask-delayed function used further to build the dataset. + + Parameters + ---------- + layout : Layout + Layout of the field. + field : str + Field to read. + step : int + Step to read. + + Returns + ------- + Any + Field data. + + """ + if layout == Layout.L: + return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step) + else: + return self.reader.ReadArrayAtTimestep(self.path, "fields", field, step).T + def _read_fields(self) -> xr.Dataset: """Helper function to read the fields dataframe.""" - self.reader.VerifySameCategoryNames(self.path, "fields", "f") - self.reader.VerifySameFieldShapes(self.path) - self.reader.VerifySameFieldLayouts(self.path) - valid_steps = self.reader.GetValidSteps(self.path, "fields") + # ensure that the category names, shapes, and layouts are consistent across all steps + if self.verify: + self.reader.VerifySameCategoryNames( + self.path, + "fields", + "f", + self.valid_steps, + self.num_cpus, + ) + self.reader.VerifySameFieldShapes( + self.path, + self.valid_steps, + self.num_cpus, + ) + self.reader.VerifySameFieldLayouts( + self.path, + self.valid_steps, + self.num_cpus, + ) + + # read the field names, layout, shape, coordinates, and attributes from the first step + first_step = self.valid_steps[0] field_names = self.reader.ReadCategoryNamesAtTimestep( - self.path, "fields", "f", valid_steps[0] + self.path, "fields", "f", first_step ) - - first_step = valid_steps[0] first_name = next(iter(field_names)) layout = self.reader.ReadFieldLayoutAtTimestep(self.path, first_step) shape = self.reader.ReadArrayShapeAtTimestep( @@ -85,6 +151,37 @@ def _read_fields(self) -> xr.Dataset: ) coords = self.reader.ReadFieldCoordsAtTimestep(self.path, first_step) coords = {k: coords[k] for k in sorted(coords.keys())[::-1]} + attributes = self.reader.ReadAttrsAtTimestep( + path=self.path, category="fields", step=first_step + ) + if self.coordinate_system is None: + if "Coordinates" not in attributes: + raise ValueError("Coordinates not found in attributes for fields.") + if attributes["Coordinates"] in [b"cart", "cart"]: + self.set_coordinate_system(CoordinateSystem.XYZ) + elif attributes["Coordinates"] in [b"sph", "sph", b"qsph", "qsph"]: + self.set_coordinate_system(CoordinateSystem.SPH) + else: + raise NotImplementedError( + f"Coordinate system {attributes['Coordinates']} not supported." + ) + + if self.remap is None: + self.set_remap( + { + "coords": ( + remap_coords_cart + if self.coordinate_system == CoordinateSystem.XYZ + else remap_coords_sph + ), + "fields": ( + remap_fields_cart + if self.coordinate_system == CoordinateSystem.XYZ + else remap_fields_sph + ), + } + ) + # rename coordinates if remap is provided if self.remap is not None and "coords" in self.remap: new_coords = {} @@ -92,8 +189,20 @@ def _read_fields(self) -> xr.Dataset: new_coords[self.remap["coords"](coord)] = coords[coord] coords = new_coords - times = self.reader.ReadPerTimestepVariable(self.path, "fields", "Time", "t") - steps = self.reader.ReadPerTimestepVariable(self.path, "fields", "Step", "s") + times = self.reader.ReadPerTimestepVariable( + self.path, + "fields", + "Time", + "t", + self.valid_files, + ) + steps = self.reader.ReadPerTimestepVariable( + self.path, + "fields", + "Step", + "s", + self.valid_files, + ) edge_coords = self.reader.ReadEdgeCoordsAtTimestep(self.path, first_step) new_edge_coords = {} @@ -126,7 +235,12 @@ def _read_fields(self) -> xr.Dataset: shape=shape[:: -1 if layout == Layout.R else 1], dtype="float", ) - for step in valid_steps + for step in tqdm( + self.valid_steps, + desc="steps", + position=1, + leave=False, + ) ], axis=0, ), @@ -134,9 +248,15 @@ def _read_fields(self) -> xr.Dataset: dims=all_dims, coords=all_coords, ) - for name in field_names + for name in tqdm(field_names, desc="fields", position=0, leave=False) }, - attrs=self.reader.ReadAttrsAtTimestep( - path=self.path, category="fields", step=first_step - ), + attrs=attributes, ) + + @property + def attrs(self) -> Dict[str, Any]: + """dict: The attributes of the fields dataframe.""" + if self.fields_defined: + return self.fields.attrs + else: + return {} diff --git a/nt2/containers/particle_dataset.py b/nt2/containers/particle_dataset.py new file mode 100644 index 0000000..294d388 --- /dev/null +++ b/nt2/containers/particle_dataset.py @@ -0,0 +1,667 @@ +from typing import ( + Any, + Callable, + List, + Optional, + Sequence, + Tuple, + Literal, + Union, + Dict, + Type, + cast, +) +import numpy.typing as npt +from copy import copy + +import dask +import dask.dataframe as dd +from dask.delayed import Delayed +from dask.optimization import cull +import pandas as pd +import numpy as np + +import matplotlib.pyplot as plt +import matplotlib.axes as maxes + + +IntSelector = Union[int, Sequence[int], slice, Tuple[int, int]] +FloatSelector = Union[float, slice, Sequence[float], Tuple[float, float]] + + +def _cull_dataframe_graph(ddf: dd.DataFrame) -> dd.DataFrame: + keys = ddf.__dask_keys__() + graph, _ = cull(ddf.__dask_graph__(), keys) + partitions = [Delayed(key, graph) for key in keys] + return cast( + dd.DataFrame, + dd.from_delayed( + partitions, + meta=ddf._meta, + divisions=ddf.divisions, + ), + ) + + +class Selection: + def __init__( + self, + type: Literal["value", "range", "list"], + value: Optional[Union[int, float, list, tuple]] = None, + ): + self.type = type + self.value = value + + def intersect(self, other: "Selection") -> "Selection": + if self.value is None: + return copy(other) + elif other.value is None: + return copy(self) + if self.type == "value" and other.type == "value": + if self.value == other.value: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "value" and other.type == "list": + assert isinstance(other.value, list), "other.value must be a list" + if self.value in other.value: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "value" and other.type == "range": + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + lo, hi = other.value + if lo <= self.value < hi: + return Selection("value", self.value) + else: + return Selection("value") + elif self.type == "list" and other.type == "value": + return other.intersect(self) + elif self.type == "list" and other.type == "list": + assert isinstance(self.value, list), "self.value must be a list" + assert isinstance(other.value, list), "other.value must be a list" + new_values = [v for v in self.value if v in other.value] + return Selection("list", new_values) + elif self.type == "list" and other.type == "range": + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + assert isinstance(self.value, list), "self.value must be a list" + lo, hi = other.value + new_values = [v for v in self.value if lo <= v <= hi] + return Selection("list", new_values) + elif self.type == "range" and other.type == "value": + return other.intersect(self) + elif self.type == "range" and other.type == "list": + return other.intersect(self) + elif self.type == "range" and other.type == "range": + assert isinstance(self.value, tuple) and len(self.value) == 2, ( + "self.value must be a tuple of length 2" + ) + assert isinstance(other.value, tuple) and len(other.value) == 2, ( + "other.value must be a tuple of length 2" + ) + lo1, hi1 = self.value + lo2, hi2 = other.value + new_lo = max(lo1, lo2) + new_hi = min(hi1, hi2) + if new_lo <= new_hi: + return Selection("range", (new_lo, new_hi)) + else: + return Selection("value") + else: + raise ValueError(f"Unknown selection types: {self.type}, {other.type}") + + def __repr__(self) -> str: + if self.type == "value": + return "all" if self.value is None else f"{self.value:.3g}" + elif self.type == "range": + if self.value is None: + return "all" + else: + assert isinstance(self.value, tuple) and len(self.value) == 2, ( + "value must be a tuple of length 2" + ) + lo, hi = self.value + lo_str = "..." if lo is None or lo == -np.inf else f"{lo:.3g}" + hi_str = "..." if hi is None or hi == np.inf else f"{hi:.3g}" + return f"[ {lo_str} -> {hi_str} ]" + elif self.type == "list": + assert isinstance(self.value, list), "value must be a list" + return "{ " + ", ".join(f"{v:.3g}" for v in self.value) + " }" + else: + return "InvalidSelection" + + def __str__(self) -> str: + return self.__repr__() + + +def _coerce_selector_to_mask( + s: Union[IntSelector, FloatSelector], + series: Any, + inclusive_tuple: bool = True, + method="exact", +): + from operator import ior + from functools import reduce + + if isinstance(s, slice): + lo = s.start if s.start is not None else -np.inf + hi = s.stop if s.stop is not None else np.inf + step = s.step + mask = (series >= lo) & (series <= hi) + if step not in (None, 1): + mask = mask & (((series - lo) % step) == 0) + return mask, ("range", (lo, hi)) + elif isinstance(s, tuple) and len(s) == 2 and inclusive_tuple: + lo, hi = s + if lo is None: + lo = -np.inf + if hi is None: + hi = np.inf + return (series >= lo) & (series <= hi), ("range", (lo, hi)) + elif isinstance(s, (list, tuple, np.ndarray, pd.Index, pd.Series)): + if method == "exact": + return series.isin(list(s)), ("list", list(s)) + else: + return reduce( + ior, [np.abs(series - v) == np.abs(series - v).min() for v in s] + ), ("list", list(s)) + else: + if method == "exact": + return series == s, ("value", s) + else: + return np.abs(series - s) == np.abs(series - s).min(), ("value", s) + + +def _attach_columns( + part: pd.DataFrame, + cols_tuple: Tuple[str, ...], + read_column: Callable[[int, str], npt.NDArray[Any]], + metadtypes: Any, +) -> pd.DataFrame: + if len(part) == 0: + return part.assign(**{c: pd.Series(dtype=metadtypes[c]) for c in cols_tuple}) + st_val = int(part["st"].iloc[0]) + + columns_to_read = tuple(c for c in cols_tuple if c not in part.columns) + arrays = {c: read_column(st_val, c) for c in columns_to_read} + + sel = part["row"].to_numpy() + for c in columns_to_read: + part[c] = np.asarray(arrays[c])[sel] + return part + + +def _load_index_partition( + st: int, + t: float, + index_cols: Tuple[str, ...], + read_column: Callable[[int, str], npt.NDArray[Any]], +) -> pd.DataFrame: + cols = {c: read_column(st, c) for c in index_cols} + n = len(next(iter(cols.values()))) + return pd.DataFrame( + { + **cols, + "st": np.full(n, st, dtype=np.int64), + "t": np.full(n, t, dtype=float), + "row": np.arange(n, dtype=np.int64), + } + ) + + +class ParticleDataset: + steps: npt.NDArray[np.int64] + times: npt.NDArray[np.float64] + colnames: List[str] + _ddf_index: dd.DataFrame + + def __init__( + self, + species: List[int], + steps: npt.NDArray[np.int64], + times: npt.NDArray[np.float64], + colnames: List[str], + read_column: Callable[ + [int, str], npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]] + ], + fprec: Optional[Type] = np.float32, + selection: Optional[Dict[str, Selection]] = None, + ddf_index: Optional[dd.DataFrame] = None, + partition_lengths: Optional[Sequence[int]] = None, + ): + self.species = species + self.steps = steps + self.times = times + self.colnames = colnames + + self.read_column = read_column + self.fprec = fprec + self.index_cols = ("id", "sp") + self._all_columns_cache: Optional[List[str]] = None + self._partition_lengths = ( + tuple(int(length) for length in partition_lengths) + if partition_lengths is not None + else None + ) + + if selection is not None: + self.selection = selection + else: + self.selection = { + "t": Selection("range"), + "st": Selection("range"), + "sp": Selection("range"), + "id": Selection("range"), + } + + self._dtypes = { + "id": np.int64, + "sp": np.int32, + "row": np.int64, + "st": np.int64, + "t": np.float64, + "x": fprec, + "y": fprec, + "z": fprec, + "ux": fprec, + "uy": fprec, + "uz": fprec, + "r": fprec, + "th": fprec, + "ph": fprec, + "ur": fprec, + "uth": fprec, + "uph": fprec, + } + + if ddf_index is not None: + self._ddf_index = ddf_index + self._partition_indices: Optional[Tuple[int, ...]] = None + else: + self._ddf_index = self._build_index_ddf() + self._partition_indices = tuple(range(self._ddf_index.npartitions)) + + if ( + self._partition_lengths is not None + and len(self._partition_lengths) != self._ddf_index.npartitions + ): + raise ValueError( + "partition_lengths must contain one value per Dask partition" + ) + + @property + def ddf(self) -> dd.DataFrame: + return self._ddf_index + + @property + def nbytes(self) -> int: + """Estimated bytes occupied by the particle index's NumPy buffers. + + The estimate excludes small pandas/Dask object overhead. For datasets + filtered by particle values (for example ``sel(sp=1)``), it is an upper + bound because finding the exact surviving row count would require + computing the lazy index. + """ + if self._partition_lengths is None: + # Compatibility fallback for ParticleDataset instances constructed + # directly by downstream code without reader-provided metadata. + return int(self.ddf.memory_usage(index=True, deep=True).sum().compute()) + + bytes_per_row = sum( + np.dtype(self._dtypes[column]).itemsize + for column in (*self.index_cols, "st", "t", "row") + ) + return int(sum(self._partition_lengths) * bytes_per_row) + + @property + def columns(self) -> List[str]: + if self._all_columns_cache is None: + self._all_columns_cache = self.colnames + return self._all_columns_cache + + def sel( + self, + t: Optional[Union[IntSelector, FloatSelector]] = None, + st: Optional[IntSelector] = None, + sp: Optional[IntSelector] = None, + id: Optional[IntSelector] = None, + method: str = "exact", + ) -> "ParticleDataset": + ddf: dd.DataFrame = self._ddf_index + new_selection = {k: copy(v) for k, v in self.selection.items()} + if st is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + st, ddf["st"], method="exact" + ) + ddf = cast(dd.DataFrame, ddf[ddf_sel]) + new_selection["st"] = new_selection["st"].intersect( + Selection(sel_type, sel_value) + ) + if t is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + t, ddf["t"], method=method + ) + ddf = cast(dd.DataFrame, ddf[ddf_sel]) + new_selection["t"] = new_selection["t"].intersect( + Selection(sel_type, sel_value) + ) + if sp is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + sp, ddf["sp"], method="exact" + ) + ddf = cast(dd.DataFrame, ddf[ddf_sel]) + new_selection["sp"] = new_selection["sp"].intersect( + Selection(sel_type, sel_value) + ) + if id is not None: + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + id, ddf["id"], method="exact" + ) + ddf = cast(dd.DataFrame, ddf[ddf_sel]) + new_selection["id"] = new_selection["id"].intersect( + Selection(sel_type, sel_value) + ) + + result = ParticleDataset( + species=self.species, + steps=self.steps, + times=self.times, + colnames=self.colnames, + read_column=self.read_column, + fprec=self.fprec, + selection=new_selection, + ddf_index=ddf, + partition_lengths=self._partition_lengths, + ) + result._partition_indices = self._partition_indices + return result + + def isel( + self, t: Optional[IntSelector] = None, st: Optional[IntSelector] = None + ) -> "ParticleDataset": + ddf: dd.DataFrame = self._ddf_index + partition_indices = self._partition_indices + partition_lengths = self._partition_lengths + new_selection = {k: v for k, v in self.selection.items()} + for t_or_s, t_or_s_str, t_or_s_arr in zip( + [t, st], ["t", "st"], [self.times, self.steps] + ): + if t_or_s is not None: + selector: Any + if isinstance(t_or_s, slice): + lo = t_or_s.start if t_or_s.start is not None else 0 + hi = t_or_s.stop if t_or_s.stop is not None else -1 + selector = slice(t_or_s_arr[lo], t_or_s_arr[hi]) + elif isinstance(t_or_s, (list, tuple, np.ndarray, pd.Index, pd.Series)): + selector = [t_or_s_arr[ti] for ti in t_or_s] + else: + selector = t_or_s_arr[t_or_s] + + selector_for_mask = cast(Any, selector) + if partition_indices is not None: + partition_mask, _ = _coerce_selector_to_mask( + selector_for_mask, + pd.Series(t_or_s_arr.tolist()), + method="exact", + ) + matching_indices = set(np.flatnonzero(np.asarray(partition_mask))) + selected_partitions = [ + i + for i, original_index in enumerate(partition_indices) + if original_index in matching_indices + ] + if not selected_partitions: + # Keep one partition for the filter to turn into an empty frame. + selected_partitions = [0] + ddf = cast(dd.DataFrame, ddf.partitions[selected_partitions]) + partition_indices = tuple( + partition_indices[i] for i in selected_partitions + ) + if partition_lengths is not None: + partition_lengths = tuple( + partition_lengths[i] for i in selected_partitions + ) + + ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( + selector_for_mask, + ddf[t_or_s_str], + method="exact", + ) + ddf = cast(dd.DataFrame, ddf[ddf_sel]) + new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( + Selection(sel_type, sel_value) + ) + + if partition_indices is not None: + ddf = _cull_dataframe_graph(ddf) + + result = ParticleDataset( + species=self.species, + steps=self.steps, + times=self.times, + colnames=self.colnames, + read_column=self.read_column, + fprec=self.fprec, + selection=new_selection, + ddf_index=ddf, + partition_lengths=partition_lengths, + ) + result._partition_indices = partition_indices + return result + + def _build_index_ddf(self) -> dd.DataFrame: + delayed_parts = [ + dask.delayed(_load_index_partition)( + st, + t, + self.index_cols, + self.read_column, + ) + for st, t in zip(self.steps, self.times) + ] + + meta = pd.DataFrame( + { + **{ + c: np.array([], dtype=self._dtypes.get(c, "O")) + for c in self.index_cols + }, + "st": np.array([], dtype=self._dtypes.get("st", np.int64)), + "t": np.array([], dtype=self._dtypes.get("t", np.int64)), + "row": np.array([], dtype=self._dtypes.get("row", np.int64)), + } + ) + + ddf = cast(dd.DataFrame, dd.from_delayed(delayed_parts, meta=meta)) + return ddf + + def load(self, cols: Optional[Sequence[str]] = None) -> pd.DataFrame: + if cols is None: + cols = self.columns + + cols = [c for c in cols if c not in ("t", "st", "row")] + + meta_dict = { + c: np.array([], dtype=self._dtypes.get(c, np.float64)) for c in cols + } + meta = self._ddf_index._meta.assign(**meta_dict) + + cols_tuple = tuple(cols) + + return ( + self._ddf_index.map_partitions( + _attach_columns, + cols_tuple=cols_tuple, + read_column=self.read_column, + metadtypes=meta.dtypes, + meta=meta, + ) + .compute() + .drop(columns=["row"]) + ) + + def help(self, prepend="") -> str: + ret = f"{prepend}- use .sel(...) to select particles based on criteria:\n" + ret += f"{prepend} t : time (float)\n" + ret += f"{prepend} st : step (int)\n" + ret += f"{prepend} sp : species (int)\n" + ret += f"{prepend} id : particle id (int)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .sel(t=slice(10.0, 20.0), sp=[1, 2, 3], id=[42, 22])\n{prepend}\n" + ret += f"{prepend}- use .isel(...) to select particles based on output step:\n" + ret += f"{prepend} t : timestamp index (int)\n" + ret += f"{prepend} st : step index (int)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .isel(t=-1)\n" + ret += f"{prepend}\n" + ret += f"{prepend}- .sel and .isel can be chained together:\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .isel(t=-1).sel(sp=1).sel(id=[55, 66])\n{prepend}\n" + ret += f"{prepend}- use .load(cols=[...]) to load data into a pandas DataFrame (`cols` defaults to all columns)\n{prepend}\n" + ret += f"{prepend} # example:\n" + ret += f"{prepend} # .sel(...).load()\n" + return ret + + def __repr__(self) -> str: + ret = "ParticleDataset:\n" + ret += "================\n" + ret += f"Variables:\n {self.columns}\n\n" + ret += "Current selection:\n" + for k, v in self.selection.items(): + ret += f" {k:<5} : {v}\n" + ret += "\nHelp:\n" + ret += "-----\n" + ret += f"{self.help()}" + return ret + + def __str__(self) -> str: + return self.__repr__() + + def spectrum_plot( + self, + ax: Optional[maxes.Axes] = None, + bins: Optional[npt.NDArray] = None, + quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + ): + if ax is None: + ax = plt.gca() + + def _uSqr_cart(df: pd.DataFrame): + return np.sum( + [ + np.asarray(df[c].to_numpy(), dtype=np.float64) ** 2 + for c in ["ux", "uy", "uz"] + ], + axis=0, + ) + + def _quantity_cart(df: pd.DataFrame): + uSqr = _uSqr_cart(df) + return uSqr * np.sqrt(1.0 + uSqr) + + def _uSqr_sph(df: pd.DataFrame): + return np.sum( + [ + np.asarray(df[c].to_numpy(), dtype=np.float64) ** 2 + for c in ["ur", "uth", "uph"] + ], + axis=0, + ) + + def _quantity_sph(df: pd.DataFrame): + uSqr = _uSqr_sph(df) + return uSqr * np.sqrt(1.0 + uSqr) + + if "ux" in self.columns: + cols = ["ux", "uy", "uz"] + if quantity is None: + quantity = _quantity_cart + else: + cols = ["ur", "uth", "uph"] + if quantity is None: + quantity = _quantity_sph + assert quantity is not None + df = self.load(cols=["sp", *cols]) + species = sorted(df["sp"].unique()) + arrays = { + sp: quantity(group.drop(columns=["sp"])) for sp, group in df.groupby("sp") + } + if bins is None: + bins = np.logspace(0, 4, 100) + hists = {sp: np.histogram(arrays[sp], bins=bins)[0] for sp in species} + bins = 0.5 * (bins[1:] + bins[:-1]) + for sp in species: + ax.loglog(bins, hists[sp], label=f"{sp}") + if bins.min() > 0 and bins.max() / bins.min() > 100: + ax.set(xscale="log", yscale="log") + + def phase_plot( + self, + ax: Optional[maxes.Axes] = None, + x_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + y_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + xy_bins: Optional[Tuple[npt.NDArray, npt.NDArray]] = None, + **kwargs: Any, + ): + if ax is None: + ax = plt.gca() + + def _xquantity_cart(df: pd.DataFrame): + return np.asarray(df["x"].to_numpy(), dtype=np.float64) + + def _yquantity_cart(df: pd.DataFrame): + return np.asarray(df["ux"].to_numpy(), dtype=np.float64) + + def _xquantity_sph(df: pd.DataFrame): + return np.asarray(df["r"].to_numpy(), dtype=np.float64) + + def _yquantity_sph(df: pd.DataFrame): + return np.asarray(df["ur"].to_numpy(), dtype=np.float64) + + if "ux" in self.columns: + cols = ["ux", "uy", "uz"] + for c in "xyz": + if c in self.columns: + cols.append(c) + if x_quantity is None: + x_quantity = _xquantity_cart + if y_quantity is None: + y_quantity = _yquantity_cart + else: + cols = ["ur", "uth", "uph"] + for c in ["r", "th", "ph"]: + if c in self.columns: + cols.append(c) + if x_quantity is None: + x_quantity = _xquantity_sph + if y_quantity is None: + y_quantity = _yquantity_sph + + df = self.load(cols=[*cols]) + x_array = x_quantity(df) + y_array = y_quantity(df) + + if xy_bins is None: + x_bins = np.linspace(x_array.min(), x_array.max(), 100) + y_bins = np.linspace(y_array.min(), y_array.max(), 100) + xy_bins = (x_bins, y_bins) + else: + x_bins, y_bins = xy_bins + + h2d, xedges, yedges = np.histogram2d(x_array, y_array, bins=[x_bins, y_bins]) + X, Y = np.meshgrid( + 0.5 * (xedges[1:] + xedges[:-1]), 0.5 * (yedges[1:] + yedges[:-1]) + ) + pcm = ax.pcolormesh( + X, + Y, + h2d.T, + shading="auto", + rasterized=True, + **kwargs, + ) + return pcm diff --git a/nt2/containers/particles.py b/nt2/containers/particles.py index a352e4e..4c740b6 100644 --- a/nt2/containers/particles.py +++ b/nt2/containers/particles.py @@ -1,561 +1,59 @@ -from typing import ( - Any, - Callable, - List, - Optional, - Sequence, - Tuple, - Literal, - Union, - Dict, - Type, -) +from typing import Any, List, Union, Dict, Set import numpy.typing as npt -from copy import copy -import dask -import dask.dataframe as dd -import pandas as pd import numpy as np -import matplotlib.pyplot as plt -import matplotlib.axes as maxes - -from nt2.containers.container import BaseContainer - - -IntSelector = Union[int, Sequence[int], slice, Tuple[int, int]] -FloatSelector = Union[float, slice, Sequence[float], Tuple[float, float]] - - -class Selection: - def __init__( - self, - type: Literal["value", "range", "list"], - value: Optional[Union[int, float, list, tuple]] = None, - ): - self.type = type - self.value = value - - def intersect(self, other: "Selection") -> "Selection": - if self.value is None: - return copy(other) - elif other.value is None: - return copy(self) - if self.type == "value" and other.type == "value": - if self.value == other.value: - return Selection("value", self.value) - else: - return Selection("value") - elif self.type == "value" and other.type == "list": - assert isinstance(other.value, list), "other.value must be a list" - if self.value in other.value: - return Selection("value", self.value) - else: - return Selection("value") - elif self.type == "value" and other.type == "range": - assert ( - isinstance(other.value, tuple) and len(other.value) == 2 - ), "other.value must be a tuple of length 2" - lo, hi = other.value - if lo <= self.value < hi: - return Selection("value", self.value) - else: - return Selection("value") - elif self.type == "list" and other.type == "value": - return other.intersect(self) - elif self.type == "list" and other.type == "list": - assert isinstance(self.value, list), "self.value must be a list" - assert isinstance(other.value, list), "other.value must be a list" - new_values = [v for v in self.value if v in other.value] - return Selection("list", new_values) - elif self.type == "list" and other.type == "range": - assert ( - isinstance(other.value, tuple) and len(other.value) == 2 - ), "other.value must be a tuple of length 2" - assert isinstance(self.value, list), "self.value must be a list" - lo, hi = other.value - new_values = [v for v in self.value if lo <= v <= hi] - return Selection("list", new_values) - elif self.type == "range" and other.type == "value": - return other.intersect(self) - elif self.type == "range" and other.type == "list": - return other.intersect(self) - elif self.type == "range" and other.type == "range": - assert ( - isinstance(self.value, tuple) and len(self.value) == 2 - ), "self.value must be a tuple of length 2" - assert ( - isinstance(other.value, tuple) and len(other.value) == 2 - ), "other.value must be a tuple of length 2" - lo1, hi1 = self.value - lo2, hi2 = other.value - new_lo = max(lo1, lo2) - new_hi = min(hi1, hi2) - if new_lo <= new_hi: - return Selection("range", (new_lo, new_hi)) - else: - return Selection("value") - else: - raise ValueError(f"Unknown selection types: {self.type}, {other.type}") - - def __repr__(self) -> str: - if self.type == "value": - return "all" if self.value is None else f"{self.value:.3g}" - elif self.type == "range": - if self.value is None: - return "all" - else: - assert ( - isinstance(self.value, tuple) and len(self.value) == 2 - ), "value must be a tuple of length 2" - lo, hi = self.value - lo_str = "..." if lo is None or lo == -np.inf else f"{lo:.3g}" - hi_str = "..." if hi is None or hi == np.inf else f"{hi:.3g}" - return f"[ {lo_str} -> {hi_str} ]" - elif self.type == "list": - assert isinstance(self.value, list), "value must be a list" - return "{ " + ", ".join(f"{v:.3g}" for v in self.value) + " }" - else: - return "InvalidSelection" - - def __str__(self) -> str: - return self.__repr__() - - -def _coerce_selector_to_mask( - s: Union[IntSelector, FloatSelector], - series: Any, - inclusive_tuple: bool = True, - method="exact", -): - from operator import ior - from functools import reduce - - if isinstance(s, slice): - lo = s.start if s.start is not None else -np.inf - hi = s.stop if s.stop is not None else np.inf - step = s.step - mask = (series >= lo) & (series <= hi) - if step not in (None, 1): - mask = mask & (((series - lo) % step) == 0) - return mask, ("range", (lo, hi)) - elif isinstance(s, tuple) and len(s) == 2 and inclusive_tuple: - lo, hi = s - if lo is None: - lo = -np.inf - if hi is None: - hi = np.inf - return (series >= lo) & (series <= hi), ("range", (lo, hi)) - elif isinstance(s, (list, tuple, np.ndarray, pd.Index, pd.Series)): - if method == "exact": - return series.isin(list(s)), ("list", list(s)) - else: - return reduce( - ior, [np.abs(series - v) == np.abs(series - v).min() for v in s] - ), ("list", list(s)) - else: - if method == "exact": - return series == s, ("value", s) - else: - return np.abs(series - s) == np.abs(series - s).min(), ("value", s) - - -def _attach_columns( - part: pd.DataFrame, - cols_tuple, - read_column, - metadtypes, -) -> pd.DataFrame: - if len(part) == 0: - for c in cols_tuple: - part[c] = np.array([], dtype=metadtypes[c]) - return part - st_val = int(part["st"].iloc[0]) - - arrays = {c: read_column(st_val, c) for c in cols_tuple} - - sel = part["row"].to_numpy() - for c in cols_tuple: - part[c] = np.asarray(arrays[c])[sel] - return part - - -class ParticleDataset: - steps: npt.NDArray[np.int64] - times: npt.NDArray[np.float64] - colnames: List[str] - - def __init__( - self, - species: List[int], - steps: npt.NDArray[np.int64], - times: npt.NDArray[np.float64], - colnames: List[str], - read_column: Callable[ - [int, str], npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]] - ], - fprec: Optional[Type] = np.float32, - selection: Optional[Dict[str, Selection]] = None, - ddf_index: Optional[dd.DataFrame] = None, - ): - self.species = species - self.steps = steps - self.times = times - self.colnames = colnames - - self.read_column = read_column - self.fprec = fprec - self.index_cols = ("id", "sp") - self._all_columns_cache: Optional[List[str]] = None - - if selection is not None: - self.selection = selection - else: - self.selection = { - "t": Selection("range"), - "st": Selection("range"), - "sp": Selection("range"), - "id": Selection("range"), - } - - self._dtypes = { - "id": np.int64, - "sp": np.int32, - "row": np.int64, - "st": np.int64, - "t": fprec, - "x": fprec, - "y": fprec, - "z": fprec, - "ux": fprec, - "uy": fprec, - "uz": fprec, - "r": fprec, - "th": fprec, - "ph": fprec, - "ur": fprec, - "uth": fprec, - "uph": fprec, - } - - if ddf_index is not None: - self._ddf_index = ddf_index - else: - self._ddf_index = self._build_index_ddf() - - @property - def ddf(self) -> dd.DataFrame: - return self._ddf_index - - @property - def nbytes(self) -> int: - return self.ddf.memory_usage(index=True, deep=True).sum().compute() - - @property - def columns(self) -> List[str]: - if self._all_columns_cache is None: - self._all_columns_cache = self.colnames - return self._all_columns_cache - - def sel( - self, - t: Optional[Union[IntSelector, FloatSelector]] = None, - st: Optional[IntSelector] = None, - sp: Optional[IntSelector] = None, - id: Optional[IntSelector] = None, - method: str = "exact", - ) -> "ParticleDataset": - ddf = self._ddf_index - new_selection = {k: copy(v) for k, v in self.selection.items()} - if st is not None: - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - st, ddf["st"], method="exact" - ) - ddf = ddf[ddf_sel] - new_selection["st"] = new_selection["st"].intersect( - Selection(sel_type, sel_value) - ) - if t is not None: - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - t, ddf["t"], method=method - ) - ddf = ddf[ddf_sel] - new_selection["t"] = new_selection["t"].intersect( - Selection(sel_type, sel_value) - ) - if sp is not None: - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - sp, ddf["sp"], method="exact" - ) - ddf = ddf[ddf_sel] - new_selection["sp"] = new_selection["sp"].intersect( - Selection(sel_type, sel_value) - ) - if id is not None: - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - id, ddf["id"], method="exact" - ) - ddf = ddf[ddf_sel] - new_selection["id"] = new_selection["id"].intersect( - Selection(sel_type, sel_value) - ) - - return ParticleDataset( - species=self.species, - steps=self.steps, - times=self.times, - colnames=self.colnames, - read_column=self.read_column, - fprec=self.fprec, - selection=new_selection, - ddf_index=ddf, - ) - - def isel( - self, t: Optional[IntSelector] = None, st: Optional[IntSelector] = None - ) -> "ParticleDataset": - ddf = self._ddf_index - new_selection = {k: v for k, v in self.selection.items()} - for t_or_s, t_or_s_str, t_or_s_arr in zip( - [t, st], ["t", "st"], [self.times, self.steps] - ): - if t_or_s is not None: - if isinstance(t_or_s, slice): - lo = t_or_s.start if t_or_s.start is not None else 0 - hi = t_or_s.stop if t_or_s.stop is not None else -1 - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - slice(t_or_s_arr[lo], t_or_s_arr[hi]), - ddf[t_or_s_str], - method="exact", - ) - ddf = ddf[ddf_sel] - new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( - Selection(sel_type, sel_value) - ) - elif isinstance(t_or_s, (list, tuple, np.ndarray, pd.Index, pd.Series)): - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - [t_or_s_arr[ti] for ti in t_or_s], - ddf[t_or_s_str], - method="exact", - ) - ddf = ddf[ddf_sel] - new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( - Selection(sel_type, sel_value) - ) - else: - ddf_sel, (sel_type, sel_value) = _coerce_selector_to_mask( - t_or_s_arr[t_or_s], ddf[t_or_s_str], method="exact" - ) - ddf = ddf[ddf_sel] - new_selection[t_or_s_str] = new_selection[t_or_s_str].intersect( - Selection(sel_type, sel_value) - ) - return ParticleDataset( - species=self.species, - steps=self.steps, - times=self.times, - colnames=self.colnames, - read_column=self.read_column, - fprec=self.fprec, - selection=new_selection, - ddf_index=ddf, - ) - - def _load_index_partition(self, st: int, t: float, index_cols: Tuple[str, ...]): - cols = {c: self.read_column(st, c) for c in index_cols} - n = len(next(iter(cols.values()))) - df = pd.DataFrame(cols) - df["st"] = np.asarray(st, dtype=np.int64) - df["t"] = np.asarray(t, dtype=float) - df["row"] = np.arange(n, dtype=np.int64) - return df - - def _build_index_ddf(self) -> dd.DataFrame: - delayed_parts = [ - dask.delayed(self._load_index_partition)(st, t, self.index_cols) - for st, t in zip(self.steps, self.times) - ] - - meta = pd.DataFrame( - { - **{ - c: np.array([], dtype=self._dtypes.get(c, "O")) - for c in self.index_cols - }, - "st": np.array([], dtype=self._dtypes.get("st", np.int64)), - "t": np.array([], dtype=self._dtypes.get("t", np.int64)), - "row": np.array([], dtype=self._dtypes.get("row", np.int64)), - } - ) - - ddf = dd.from_delayed(delayed_parts, meta=meta) - return ddf - - def load(self, cols: Optional[Sequence[str]] = None) -> pd.DataFrame: - if cols is None: - cols = self.columns - - cols = [c for c in cols if c not in ("t", "st", "row")] - - meta_dict = { - c: np.array([], dtype=self._dtypes.get(c, np.float64)) for c in cols - } - meta = self._ddf_index._meta.assign(**meta_dict) - - cols_tuple = tuple(cols) - - return ( - self._ddf_index.map_partitions( - _attach_columns, - cols_tuple=cols_tuple, - read_column=self.read_column, - metadtypes=meta.dtypes, - meta=meta, - ) - .compute() - .drop(columns=["row"]) - ) - - def help(self, prepend="") -> str: - ret = f"{prepend}- use .sel(...) to select particles based on criteria:\n" - ret += f"{prepend} t : time (float)\n" - ret += f"{prepend} st : step (int)\n" - ret += f"{prepend} sp : species (int)\n" - ret += f"{prepend} id : particle id (int)\n{prepend}\n" - ret += f"{prepend} # example:\n" - ret += f"{prepend} # .sel(t=slice(10.0, 20.0), sp=[1, 2, 3], id=[42, 22])\n{prepend}\n" - ret += f"{prepend}- use .isel(...) to select particles based on output step:\n" - ret += f"{prepend} t : timestamp index (int)\n" - ret += f"{prepend} st : step index (int)\n{prepend}\n" - ret += f"{prepend} # example:\n" - ret += f"{prepend} # .isel(t=-1)\n" - ret += f"{prepend}\n" - ret += f"{prepend}- .sel and .isel can be chained together:\n{prepend}\n" - ret += f"{prepend} # example:\n" - ret += f"{prepend} # .isel(t=-1).sel(sp=1).sel(id=[55, 66])\n{prepend}\n" - ret += f"{prepend}- use .load(cols=[...]) to load data into a pandas DataFrame (`cols` defaults to all columns)\n{prepend}\n" - ret += f"{prepend} # example:\n" - ret += f"{prepend} # .sel(...).load()\n" - return ret - - def __repr__(self) -> str: - ret = "ParticleDataset:\n" - ret += "================\n" - ret += f"Variables:\n {self.columns}\n\n" - ret += "Current selection:\n" - for k, v in self.selection.items(): - ret += f" {k:<5} : {v}\n" - ret += "\nHelp:\n" - ret += "-----\n" - ret += f"{self.help()}" - return ret - - def __str__(self) -> str: - return self.__repr__() - - def spectrum_plot( - self, - ax: Optional[maxes.Axes] = None, - bins: Optional[npt.NDArray] = None, - quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, - ): - if ax is None: - ax = plt.gca() - - if "ux" in self.columns: - cols = ["ux", "uy", "uz"] - if quantity is None: - uSqr = lambda df: np.sum( - [df[c].to_numpy(dtype=np.float64) ** 2 for c in cols], axis=0 - ) - quantity = lambda df: uSqr(df) * np.sqrt(1.0 + uSqr(df)) - else: - cols = ["ur", "uth", "uph"] - if quantity is None: - uSqr = lambda df: np.sum( - [df[c].to_numpy(dtype=np.float64) ** 2 for c in cols], axis=0 - ) - quantity = lambda df: uSqr(df) * np.sqrt(1.0 + uSqr(df)) - df = self.load(cols=["sp", *cols]) - species = sorted(df["sp"].unique()) - arrays = df.groupby("sp").apply(quantity, include_groups=False) - if bins is None: - bins = np.logspace(0, 4, 100) - hists = {sp: np.histogram(arrays[sp], bins=bins)[0] for sp in species} - bins = 0.5 * (bins[1:] + bins[:-1]) - for sp in species: - ax.loglog(bins, hists[sp], label=f"{sp}") - if bins.min() > 0 and bins.max() / bins.min() > 100: - ax.set(xscale="log", yscale="log") - - def phase_plot( - self, - ax: Optional[maxes.Axes] = None, - x_quantity: Optional[Callable[[pd.DataFrame], np.ndarray]] = None, - y_quantity: Optional[Callable[[pd.DataFrame], np.ndarray]] = None, - xy_bins: Optional[Tuple[npt.NDArray, npt.NDArray]] = None, - **kwargs: Any, - ): - if ax is None: - ax = plt.gca() - - if "ux" in self.columns: - cols = ["ux", "uy", "uz"] - for c in "xyz": - if c in self.columns: - cols.append(c) - if x_quantity is None: - x_quantity = lambda df: df["x"].to_numpy(dtype=np.float64) - if y_quantity is None: - y_quantity = lambda df: df["ux"].to_numpy(dtype=np.float64) - else: - cols = ["ur", "uth", "uph"] - for c in ["r", "th", "ph"]: - if c in self.columns: - cols.append(c) - if x_quantity is None: - x_quantity = lambda df: df["r"].to_numpy(dtype=np.float64) - if y_quantity is None: - y_quantity = lambda df: df["ur"].to_numpy(dtype=np.float64) - - df = self.load(cols=[*cols]) - x_array = x_quantity(df) - y_array = y_quantity(df) - - if xy_bins is None: - x_bins = np.linspace(x_array.min(), x_array.max(), 100) - y_bins = np.linspace(y_array.min(), y_array.max(), 100) - xy_bins = (x_bins, y_bins) - else: - x_bins, y_bins = xy_bins - - h2d, xedges, yedges = np.histogram2d(x_array, y_array, bins=[x_bins, y_bins]) - X, Y = np.meshgrid( - 0.5 * (xedges[1:] + xedges[:-1]), 0.5 * (yedges[1:] + yedges[:-1]) - ) - pcm = ax.pcolormesh( - X, - Y, - h2d.T, - shading="auto", - rasterized=True, - **kwargs, - ) - return pcm - - -class Particles(BaseContainer): +from .base import BaseContainer +from .particle_dataset import ParticleDataset +from ..utils import CoordinateSystem + + +def remap_prtl_quantities_cart(name: str) -> str: + shortname = name[1:] + return { + "X1": "x", + "X2": "y", + "X3": "z", + "U1": "ux", + "U2": "uy", + "U3": "uz", + "W": "w", + }.get(shortname, shortname) + + +def remap_prtl_quantities_sph(name: str) -> str: + shortname = name[1:] + return { + "X1": "r", + "X2": "th", + "X3": "ph", + "U1": "ur", + "U2": "uth", + "U3": "uph", + "W": "w", + }.get(shortname, shortname) + + +class ParticleContainer(BaseContainer): """Parent class to manage the particles dataframe.""" - __particles_defined: bool - __particles: Optional[ParticleDataset] + __particles_defined: bool = False + __particles: Union[ParticleDataset, None] = None + + nonempty_steps: List[int] + attributes: Dict[str, Any] quantities: List[str] sp_with_idx: List[int] sp_without_idx: List[int] + quantity_names_by_step: Dict[int, Set[str]] + + def __getstate__(self) -> dict[str, Any]: + state = self.__dict__.copy() + state.pop("_ParticleContainer__particles", None) + return state def __init__(self, **kwargs: Any) -> None: - """Initializer for the Particles class. + """Initializer for the ParticleContainer class. Parameters ---------- @@ -563,50 +61,123 @@ def __init__(self, **kwargs: Any) -> None: Keyword arguments to be passed to the parent BaseContainer class. """ - super(Particles, self).__init__(**kwargs) + super().__init__(**kwargs) + self.valid_files = self.reader.GetValidFiles( + path=self.path, + category="particles", + num_cpus=self.num_cpus, + ) + self.valid_steps = self.reader.GetValidSteps( + path=self.path, + category="particles", + num_cpus=self.num_cpus, + ) + + # @TODO: parallelize + self.quantity_names_by_step = { + step: self.reader.ReadCategoryNamesAtTimestep( + self.path, "particles", "p", step + ) + for step in self.valid_steps + } + self.nonempty_steps = [ + step + for step, names in self.quantity_names_by_step.items() + if any(q.startswith("p") for q in names) + ] + if ( - self.reader.DefinesCategory(self.path, "particles") - and self.particles_present + self.reader.DefinesCategory(self.path, "particles", self.valid_files) + and len(self.nonempty_steps) > 0 ): self.__particles_defined = True + ( + self.quantities, + self.sp_with_idx, + self.sp_without_idx, + self.attributes, + self.__particles, + ) = self._read_particles() + + def _read_particles(self): + # read unique quantities and species + quantities_ = [ + self.quantity_names_by_step[step] for step in self.nonempty_steps + ] + quantities = sorted(np.unique([q for qtys in quantities_ for q in qtys])) - valid_steps = self.nonempty_steps - quantities_ = [ - self.reader.ReadCategoryNamesAtTimestep( - self.path, "particles", "p", step + unique_quantities = sorted( + list( + set( + f"{q}".split("_")[0] + for q in quantities + if not q.startswith("pIDX") and not q.startswith("pRNK") ) - for step in valid_steps - ] - self.quantities = sorted( - np.unique([q for qtys in quantities_ for q in qtys]) ) + ) + all_species = sorted(list(set([int(f"{q}".split("_")[1]) for q in quantities]))) - unique_quantities = sorted( - list( - set( - str(q).split("_")[0] - for q in self.quantities - if not q.startswith("pIDX") and not q.startswith("pRNK") - ) - ) - ) - all_species = sorted( - list(set([int(str(q).split("_")[1]) for q in self.quantities])) - ) + sp_with_idx = sorted( + [int(f"{q}".split("_")[1]) for q in quantities if f"{q}".startswith("pIDX")] + ) + sp_without_idx = sorted([sp for sp in all_species if sp not in sp_with_idx]) - self.sp_with_idx = sorted( - [int(q.split("_")[1]) for q in self.quantities if q.startswith("pIDX")] + partition_lengths = tuple( + sum( + self.reader.ReadParticleCountsAtTimestep( + self.path, step, all_species + ).values() ) - self.sp_without_idx = sorted( - [sp for sp in all_species if sp not in self.sp_with_idx] + for step in self.valid_steps + ) + + # save times and steps + steps = np.array(self.valid_steps) + times = self.reader.ReadPerTimestepVariable( + self.path, + "particles", + "Time", + "t", + self.valid_files, + )["t"] + + # determine coordinate system and remap functions + first_step = self.valid_steps[0] + attributes = self.reader.ReadAttrsAtTimestep( + path=self.path, category="particles", step=first_step + ) + if self.coordinate_system is None: + if "Coordinates" not in attributes: + raise ValueError("Coordinates not found in attributes for particles.") + if attributes["Coordinates"] in [b"cart", "cart"]: + self.set_coordinate_system(CoordinateSystem.XYZ) + elif attributes["Coordinates"] in [b"sph", "sph", b"qsph", "qsph"]: + self.set_coordinate_system(CoordinateSystem.SPH) + else: + raise NotImplementedError( + f"Coordinate system {attributes['Coordinates']} not supported." + ) + + if self.remap is None: + self.set_remap( + { + "particles": ( + remap_prtl_quantities_cart + if self.coordinate_system == CoordinateSystem.XYZ + else remap_prtl_quantities_sph + ), + } ) - self.__particles = ParticleDataset( + return ( + quantities, + sp_with_idx, + sp_without_idx, + attributes, + ParticleDataset( species=all_species, - steps=np.array(self.reader.GetValidSteps(self.path, "particles")), - times=self.reader.ReadPerTimestepVariable( - self.path, "particles", "Time", "t" - )["t"], + steps=steps, + times=times, colnames=[ ( self.remap["particles"](q) @@ -617,34 +188,9 @@ def __init__(self, **kwargs: Any) -> None: ] + ["id", "sp"], read_column=self._read_column, - ) - else: - self.__particles_defined = False - self.__particles = None - - @property - def particles_present(self) -> bool: - """bool: Whether the particles are present in any of the timesteps.""" - return len(self.nonempty_steps) > 0 - - @property - def nonempty_steps(self) -> List[int]: - """list[int]: List of timesteps that contain particles data.""" - valid_steps = self.reader.GetValidSteps(self.path, "particles") - return [ - step - for step in valid_steps - if len( - set( - q.split("_")[0] - for q in self.reader.ReadCategoryNamesAtTimestep( - self.path, "particles", "p", step - ) - if q.startswith("p") - ) - ) - > 0 - ] + partition_lengths=partition_lengths, + ), + ) @property def particles_defined(self) -> bool: @@ -652,17 +198,25 @@ def particles_defined(self) -> bool: return self.__particles_defined @property - def particles(self) -> Optional[ParticleDataset]: + def particles(self) -> Union[ParticleDataset, None]: """Returns the particles data. Returns ------- - ParticleDataset - Dictionary of datasets for each step. + ParticleDataset | None + The particles data if defined, otherwise None. """ return self.__particles + @property + def attrs(self) -> Dict[str, Any]: + """dict: The attributes of the particles dataframe.""" + if self.particles_defined: + return self.attributes + else: + return {} + def help_particles(self, prepend: str = "") -> str: return self.particles.help(prepend) if self.particles is not None else "" @@ -673,7 +227,7 @@ def _get_count(self, step: int, sp: int) -> np.int64: self.path, "particles", f"pX1_{sp}", step )[0] ) - except: + except Exception: return np.int64(0) def _species_has_quantity(self, read_colname: str, step: int, sp: int) -> bool: diff --git a/nt2/containers/spectra.py b/nt2/containers/spectra.py index 044656d..93b5c41 100644 --- a/nt2/containers/spectra.py +++ b/nt2/containers/spectra.py @@ -1,29 +1,58 @@ -from typing import Any +from typing import Any, Union, Dict import dask import dask.array as da import xarray as xr import numpy as np +from tqdm import tqdm -from nt2.containers.container import BaseContainer -from nt2.readers.base import BaseReader +from .base import BaseContainer -class Spectra(BaseContainer): - """Parent class to manager the spectra dataframe.""" +class SpectraContainer(BaseContainer): + """Parent class to manage the spectra dataframe.""" - @staticmethod - def read_spectrum(path: str, reader: BaseReader, spectrum: str, step: int) -> Any: + __spectra_defined: bool = False + __spectra: Union[xr.Dataset, None] = None + + def __init__(self, **kwargs: Any) -> None: + super().__init__(**kwargs) + self.valid_files = self.reader.GetValidFiles( + path=self.path, + category="spectra", + num_cpus=self.num_cpus, + ) + self.valid_steps = self.reader.GetValidSteps( + path=self.path, + category="spectra", + num_cpus=self.num_cpus, + ) + + if self.reader.DefinesCategory( + self.path, + "spectra", + self.valid_files, + ): + self.__spectra_defined = True + self.__spectra = self._read_spectra() + + @property + def spectra_defined(self) -> bool: + """bool: Whether the spectra category is defined.""" + return self.__spectra_defined + + @property + def spectra(self) -> Union[xr.Dataset, None]: + """xr.Dataset: The spectra dataframe.""" + return self.__spectra + + def _read_spectrum(self, spectrum: str, step: int) -> Any: """Reads a spectrum from the data. This is a dask-delayed function used further to build the dataset. Parameters ---------- - path : str - Main path to the data. - reader : BaseReader - Reader to use to read the data. spectrum : str Spectrum array to read. step : int @@ -35,42 +64,40 @@ def read_spectrum(path: str, reader: BaseReader, spectrum: str, step: int) -> An Spectrum data. """ - return reader.ReadArrayAtTimestep(path, "spectra", spectrum, step) - - def __init__(self, **kwargs: Any) -> None: - super(Spectra, self).__init__(**kwargs) - if self.reader.DefinesCategory(self.path, "spectra"): - self.__spectra_defined = True - self.__spectra = self.__read_spectra() - else: - self.__spectra_defined = False - self.__spectra = xr.Dataset() - - @property - def spectra_defined(self) -> bool: - """bool: Whether the spectra category is defined.""" - return self.__spectra_defined - - @property - def spectra(self) -> xr.Dataset: - """xr.Dataset: The spectra dataframe.""" - return self.__spectra - - def __read_spectra(self) -> xr.Dataset: - self.reader.VerifySameCategoryNames(self.path, "spectra", "s") - valid_steps = sorted(self.reader.GetValidSteps(self.path, "spectra")) + return self.reader.ReadArrayAtTimestep(self.path, "spectra", spectrum, step) + + def _read_spectra(self) -> xr.Dataset: + if self.verify: + self.reader.VerifySameCategoryNames( + self.path, + "spectra", + "s", + self.valid_steps, + ) + first_step = self.valid_steps[0] spectra_names = self.reader.ReadCategoryNamesAtTimestep( - self.path, "spectra", "s", valid_steps[0] + self.path, "spectra", "s", first_step ) spectra_names = set(s for s in sorted(spectra_names) if s.startswith("sN")) ebin_name = "sEbn" - first_step = valid_steps[0] first_spectrum_name = next(iter(spectra_names)) shape = self.reader.ReadArrayShapeExplicitlyAtTimestep( self.path, "spectra", first_spectrum_name, first_step ) - times = self.reader.ReadPerTimestepVariable(self.path, "spectra", "Time", "t") - steps = self.reader.ReadPerTimestepVariable(self.path, "spectra", "Step", "s") + times = self.reader.ReadPerTimestepVariable( + self.path, + "spectra", + "Time", + "t", + self.valid_files, + ) + steps = self.reader.ReadPerTimestepVariable( + self.path, + "spectra", + "Step", + "s", + self.valid_files, + ) ebins = self.reader.ReadArrayAtTimestep( self.path, "spectra", ebin_name, first_step @@ -85,6 +112,10 @@ def __read_spectra(self) -> xr.Dataset: all_dims = {**times, "E": ebins} all_coords = {**all_dims, "s": ("t", steps["s"])} + attributes = self.reader.ReadAttrsAtTimestep( + path=self.path, category="spectra", step=first_step + ) + def remap_name(name: str) -> str: return name[1:] @@ -94,29 +125,40 @@ def remap_name(name: str) -> str: da.stack( [ da.from_delayed( - dask.delayed(self.read_spectrum)( - path=self.path, - reader=self.reader, + dask.delayed(self._read_spectrum)( spectrum=spectrum, step=step, ), shape=shape, dtype="float", ) - for step in valid_steps + for step in tqdm( + self.valid_steps, + desc="steps", + position=1, + leave=False, + ) ], ), name=remap_name(spectrum), dims=all_dims, coords=all_coords, ) - for spectrum in spectra_names + for spectrum in tqdm( + spectra_names, desc="spectra", position=0, leave=False + ) }, - attrs=self.reader.ReadAttrsAtTimestep( - path=self.path, category="spectra", step=first_step - ), + attrs=attributes, ) + @property + def attrs(self) -> Dict[str, Any]: + """dict: The attributes of the spectra dataframe.""" + if self.spectra_defined: + return self.spectra.attrs + else: + return {} + def help_spectra(self, prepend="") -> str: ret = f"{prepend}- use .sel(...) to select specific energy or time intervals\n" ret += f"{prepend} t : time (float)\n" From 2503c7c718aa63f8d525f0dca32d4004e635d6d2 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:32:00 -0400 Subject: [PATCH 09/14] tests adapted to new containers --- nt2/tests/test_cli.py | 166 +++++++++++++-------- nt2/tests/test_containers.py | 169 +++++++++++++++++----- nt2/tests/test_diagnostics.py | 117 +++++++++++++++ nt2/tests/test_particle_dataset_nbytes.py | 41 ++++++ nt2/tests/test_reader.py | 71 ++++++--- nt2/tests/test_tokenize.py | 10 +- 6 files changed, 454 insertions(+), 120 deletions(-) create mode 100644 nt2/tests/test_diagnostics.py create mode 100644 nt2/tests/test_particle_dataset_nbytes.py diff --git a/nt2/tests/test_cli.py b/nt2/tests/test_cli.py index 731c2be..49a00fe 100644 --- a/nt2/tests/test_cli.py +++ b/nt2/tests/test_cli.py @@ -1,6 +1,9 @@ +from unittest.mock import Mock + +import matplotlib.pyplot as plt +import numpy as np import pytest from typer.testing import CliRunner -import matplotlib.pyplot as plt import os import nt2 @@ -13,77 +16,116 @@ def test_version(): result = runner.invoke(app, ["version"]) assert result.exit_code == 0, f"Expected exit code 0, got {result.exit_code}" - assert ( - nt2.__version__ in result.output - ), f"Expected version {nt2.__version__} in output, got {result.output}" + assert nt2.__version__ in result.output, ( + f"Expected version {nt2.__version__} in output, got {result.output}" + ) @pytest.mark.parametrize( "test", [test for test in TESTS], ) -def test_show(test): - PATH = test["path"] - data = nt2.Data(PATH) - result = runner.invoke(app, ["show", PATH]) +def test_show(test, monkeypatch): + path = test["path"] + expected = f"Data summary for {path}" + data = Mock() + data.to_str.return_value = expected + data_factory = Mock(return_value=data) + monkeypatch.setattr(nt2, "Data", data_factory) + + result = runner.invoke(app, ["show", path]) + assert result.exit_code == 0, f"Expected exit code 0, got {result.exit_code}" - assert ( - data.to_str() in result.output - ), f"Expected data info in output, got {result.output}" + data_factory.assert_called_once_with(path) + data.to_str.assert_called_once_with() + assert expected in result.output @pytest.mark.parametrize( "test", - [test for test in TESTS], + [test for test in TESTS if test["fields"]], ) -def test_plot_png(test): - PATH = test["path"] - if test["fields"] == {}: - return - if test.get("coords", "cart") == "cart": - result = runner.invoke( - app, - [ - "plot", - PATH, - "--what", - "fields", - "--sel", - "x=slice(None, 5);y=slice(-5.0, 5.0)", - "--isel", - f"t=0{';z=0' if test['dim'] == '3D' else ''}", - ], +def test_plot_png(test, monkeypatch, tmp_path): + path = test["path"] + data_class = nt2.Data + + def field_data(data_path): + return data_class( + data_path, + fields=True, + particles=False, + spectra=False, + num_cpus=1, ) - assert result.exit_code == 0, f"Expected exit code 0, got {result.exit_code}" - - data = nt2.Data(PATH) - fname = os.path.basename(PATH.strip("/")) - - d = data.fields.sel(x=slice(None, 5), y=slice(-5, 5)).isel(t=0) - if test["dim"] == "3D": - d = d.isel(z=0) - d.inspect.plot(fig_kwargs={"dpi": 200}) - plt.savefig(fname=f"{fname}-2.png") - - def files_are_identical(path1, path2): - with open(path1, "rb") as f1, open(path2, "rb") as f2: - return f1.read() == f2.read() - - assert files_are_identical( - f"{fname}-2.png", f"{fname}.png" - ), f"Files {fname}-2.png and {fname}.png are not identical." - - os.remove(f"{fname}-2.png") - os.remove(f"{fname}.png") - # else: - # result = runner.invoke( - # app, - # [ - # "plot", - # PATH, - # "--sel", - # "r=slice(None, 5);th=slice(1.5, 2.5)", - # "--isel", - # "t=0", - # ], - # ) + + monkeypatch.setattr(nt2, "Data", field_data) + monkeypatch.chdir(tmp_path) + + is_cartesian = test.get("coords", "cart") == "cart" + selection = ( + "x=slice(None, 5);y=slice(-5.0, 5.0)" + if is_cartesian + else "r=slice(None, 5);th=slice(1.5, 2.5)" + ) + index_selection = f"t=0{';z=0' if test['dim'] == '3D' else ''}" + result = runner.invoke( + app, + [ + "plot", + path, + "--what", + "fields", + "--sel", + selection, + "--isel", + index_selection, + ], + ) + assert result.exit_code == 0, f"Expected exit code 0, got {result.exit_code}" + + fname = os.path.basename(path.strip("/")) + actual_path = tmp_path / f"{fname}.png" + expected_path = tmp_path / f"{fname}-expected.png" + assert actual_path.is_file() + + data = field_data(path) + if is_cartesian: + selected = data.fields.sel(x=slice(None, 5), y=slice(-5, 5)).isel(t=0) + else: + selected = data.fields.sel(r=slice(None, 5), th=slice(1.5, 2.5)).isel(t=0) + if test["dim"] == "3D": + selected = selected.isel(z=0) + + plt.close("all") + selected.inspect.plot(name=fname, fig_kwargs={"dpi": 200}) + plt.savefig(expected_path) + plt.close("all") + + np.testing.assert_array_equal( + plt.imread(actual_path), + plt.imread(expected_path), + ) + + +@pytest.mark.parametrize("test", [test for test in TESTS if not test["fields"]]) +def test_plot_without_fields_fails(test, monkeypatch, tmp_path): + path = test["path"] + data_class = nt2.Data + + def field_data(data_path): + return data_class( + data_path, + fields=True, + particles=False, + spectra=False, + num_cpus=1, + ) + + monkeypatch.setattr(nt2, "Data", field_data) + monkeypatch.chdir(tmp_path) + + result = runner.invoke(app, ["plot", path, "--what", "fields", "--isel", "t=0"]) + + assert result.exit_code == 1 + assert isinstance(result.exception, FileNotFoundError) + assert str(result.exception).endswith("/fields'") diff --git a/nt2/tests/test_containers.py b/nt2/tests/test_containers.py index 9e8f058..c773d7e 100644 --- a/nt2/tests/test_containers.py +++ b/nt2/tests/test_containers.py @@ -1,13 +1,19 @@ +from typing import List, Type, Union + import pytest -from typing import Union, List, Type from nt2.readers.base import BaseReader -from nt2.containers.fields import Fields -from nt2.containers.particles import Particles +from nt2.containers.fields import FieldContainer +from nt2.containers.particles import ParticleContainer from nt2.containers.data import Data from nt2.tests.cases import TESTS +FIELD_TESTS = [test for test in TESTS if test["fields"]] +EMPTY_FIELD_TESTS = [test for test in TESTS if not test["fields"]] +PARTICLE_TESTS = [test for test in TESTS if test["particles"]] + + def check_shape(shape1, shape2): """ Check if two shapes are equal @@ -16,45 +22,67 @@ def check_shape(shape1, shape2): @pytest.mark.parametrize( - "test,field_container", [[test, fc] for test in TESTS for fc in [Data, Fields]] + "test,field_container", + [[test, container] for test in FIELD_TESTS for container in [Data, FieldContainer]], ) -def test_fields(test, field_container: Union[Type[Data], Type[Fields]]): +def test_fields(test, field_container: Union[Type[Data], Type[FieldContainer]]): reader: BaseReader = test["reader"]() - PATH = test["path"] - if test["fields"] == {}: - return + path = test["path"] coords: List[str] = ["x", "y", "z"] flds: List[str] = ["Ex", "Ey", "Ez", "Bx", "By", "Bz"] - def coord_remap(Xold: str) -> str: + def coord_remap_cart(Xold: str) -> str: return { "X1": "x", "X2": "y", "X3": "z", }.get(Xold, Xold) - if test.get("coords", "cart") != "cart": - coords = ["r", "th", "ph"] - flds = ["Er", "Eth", "Eph", "Br", "Bth", "Bph"] - coord_remap = lambda Xold: { + def coord_remap_sph(Xold: str) -> str: + return { "X1": "r", "X2": "th", "X3": "ph", }.get(Xold, Xold) + if test.get("coords", "cart") != "cart": + coords = ["r", "th", "ph"] + flds = ["Er", "Eth", "Eph", "Br", "Bth", "Bph"] + def field_remap(Fold: str): return { - f"f{F}{i+1}": f"{F}{x}" for i, x in enumerate(coords) for F in "EB" + f"f{F}{i + 1}": f"{F}{x}" for i, x in enumerate(coords) for F in "EB" }.get(Fold, Fold) - fields = field_container( - path=PATH, - reader=reader, - remap={"coords": coord_remap, "fields": field_remap}, - ) + remap = { + "coords": ( + coord_remap_cart + if test.get("coords", "cart") == "cart" + else coord_remap_sph + ), + "fields": field_remap, + } + if field_container is Data: + fields = field_container( + path=path, + fields=True, + particles=False, + spectra=False, + reader=reader, + remap=remap, + num_cpus=1, + ) + else: + fields = field_container( + path=path, + reader=reader, + remap=remap, + coord_system=None, + num_cpus=1, + ) - steps = reader.GetValidSteps(path=PATH, category="fields") + steps = reader.GetValidSteps(path=path, category="fields", num_cpus=1) nx1 = test["fields"]["nx1"] nx2 = test["fields"]["nx2"] assert fields.fields is not None, "Fields are None" @@ -106,17 +134,52 @@ def field_remap(Fold: str): ) +@pytest.mark.parametrize( + "test,field_container", + [ + [test, container] + for test in EMPTY_FIELD_TESTS + for container in [Data, FieldContainer] + ], +) +def test_missing_field_output_raises_file_not_found( + test, field_container: Union[Type[Data], Type[FieldContainer]] +): + reader: BaseReader = test["reader"]() + kwargs = { + "path": test["path"], + "reader": reader, + "remap": None, + "num_cpus": 1, + } + + with pytest.raises(FileNotFoundError, match="/fields"): + if field_container is Data: + field_container( + **kwargs, + fields=True, + particles=False, + spectra=False, + ) + else: + field_container(**kwargs, coord_system=None) + + @pytest.mark.parametrize( "test,particle_container", - [[test, fc] for test in TESTS for fc in [Data, Particles]], + [ + [test, container] + for test in PARTICLE_TESTS + for container in [Data, ParticleContainer] + ], ) -def test_particles(test, particle_container: Union[Type[Data], Type[Particles]]): +def test_particles( + test, particle_container: Union[Type[Data], Type[ParticleContainer]] +): reader: BaseReader = test["reader"]() - PATH = test["path"] - if test["particles"] == {}: - return + path = test["path"] - def prtl_remap(Xold: str) -> str: + def prtl_remap_cart(Xold: str) -> str: return { "pX1": "x", "pX2": "y", @@ -127,8 +190,8 @@ def prtl_remap(Xold: str) -> str: "pW": "w", }.get(Xold, Xold) - if test.get("coords", "cart") != "cart": - prtl_remap = lambda Xold: { + def prtl_remap_sph(Xold: str) -> str: + return { "pX1": "r", "pX2": "th", "pX3": "ph", @@ -137,9 +200,47 @@ def prtl_remap(Xold: str) -> str: "pU3": "uph", "pW": "w", }.get(Xold, Xold) - particles = particle_container( - path=PATH, - reader=reader, - remap={"particles": prtl_remap}, - ) - assert particles.particles is not None, "Particles are None" + + remap = { + "particles": ( + prtl_remap_cart if test.get("coords", "cart") == "cart" else prtl_remap_sph + ) + } + if particle_container is Data: + particles = particle_container( + path=path, + fields=False, + particles=True, + spectra=False, + reader=reader, + remap=remap, + num_cpus=1, + ) + else: + particles = particle_container( + path=path, + reader=reader, + remap=remap, + coord_system=None, + num_cpus=1, + ) + + dataset = particles.particles + assert dataset is not None, "Particles are None" + assert len(dataset.species) == test["particles"].get("nspec", 4) + + selected = dataset.isel(t=-1).load(cols=["id", "sp", "w"]) + last_step = int(dataset.steps[-1]) + expected_counts = [ + reader.ReadArrayShapeAtTimestep( + path=path, + category="particles", + quantity=f"pW_{species}", + step=last_step, + )[0] + for species in dataset.species + ] + + assert selected["st"].unique().tolist() == [last_step] + assert selected.groupby("sp", sort=True).size().tolist() == expected_counts + assert selected["w"].notna().all() diff --git a/nt2/tests/test_diagnostics.py b/nt2/tests/test_diagnostics.py new file mode 100644 index 0000000..abc3cdd --- /dev/null +++ b/nt2/tests/test_diagnostics.py @@ -0,0 +1,117 @@ +import os +from pathlib import Path + +import pandas as pd +import pytest + +from nt2.containers.diagnostics import Diagnostics + + +def _write_log(path: Path, steps: int = 3) -> None: + preamble = "Entity diagnostic output\n\n" + records = [] + for step in range(1, steps + 1): + records.append( + f"""Step: {step}....................[of {steps}] +Time: {step * 0.25:.2f}................[Δt = 0.25] + +[SUBSTEP]..................[DURATION] + Communications..............{step}.00 ms 3% + FieldSolver................{step + 1}.00 µs 1% + Injector.....................0.00 ns 0% + +[PARTICLE SPECIES] [TOTAL] [% TOT] + species 1 (e-)............{step}.20e+03 1% + species 2 (i+)............2.00e+03 1% + +................................................................................ + +""" + ) + path.write_text(preamble + "".join(records), encoding="utf-8") + + +def test_streaming_parser_without_cache(tmp_path: Path) -> None: + outfile = tmp_path / "simulation.out" + _write_log(outfile) + + diagnostics = Diagnostics(tmp_path, cache=False, chunk_size=2) + + expected = pd.DataFrame( + { + "Step": [1, 2, 3], + "Time": [0.25, 0.50, 0.75], + "Communications": [1e6, 2e6, 3e6], + "FieldSolver": [2e3, 3e3, 4e3], + "Injector": [0.0, 0.0, 0.0], + "species_1": [1200, 2200, 3200], + "species_2": [2000, 2000, 2000], + } + ).set_index("Step", drop=False) + pd.testing.assert_frame_equal(diagnostics.df, expected) + + +def test_parquet_cache_is_reused_and_invalidated( + tmp_path: Path, monkeypatch: pytest.MonkeyPatch +) -> None: + outfile = tmp_path / "simulation.out" + cache = tmp_path / "diagnostics.parquet" + _write_log(outfile, steps=2) + first = Diagnostics(outfile, cache_path=cache, chunk_size=1) + assert first.df is not None + assert cache.is_file() + assert Path(f"{cache}.json").is_file() + + def fail_if_parsed(source: Path): + raise AssertionError(f"Unexpected parse of {source}") + + monkeypatch.setattr(Diagnostics, "_records", fail_if_parsed) + cached = Diagnostics(outfile, cache_path=cache) + pd.testing.assert_frame_equal(cached.df, first.df) + + monkeypatch.undo() + with outfile.open("a", encoding="utf-8") as stream: + stream.write("\n") + os.utime(outfile, None) + reparsed = Diagnostics(outfile, cache_path=cache) + pd.testing.assert_frame_equal(reparsed.df, first.df) + + +def test_inconsistent_record_raises(tmp_path: Path) -> None: + outfile = tmp_path / "simulation.out" + _write_log(outfile, steps=2) + text = outfile.read_text(encoding="utf-8") + outfile.write_text( + text.replace(" Injector.....................0.00 ns 0%\n", "", 1), + encoding="utf-8", + ) + + with pytest.raises(ValueError, match="Inconsistent diagnostics record at step 2"): + Diagnostics(outfile, cache=False) + + +def test_incomplete_final_record_is_ignored(tmp_path: Path) -> None: + outfile = tmp_path / "simulation.out" + _write_log(outfile, steps=2) + with outfile.open("a", encoding="utf-8") as stream: + stream.write("Step: 3....................[of 3]\nTime: 0.75") + + diagnostics = Diagnostics(outfile, cache=False) + + assert diagnostics.df is not None + assert diagnostics.df["Step"].tolist() == [1, 2] + + +def test_no_outfile(tmp_path: Path, caplog: pytest.LogCaptureFixture) -> None: + diagnostics = Diagnostics(tmp_path) + + assert diagnostics.df is None + assert "No .out files found" in caplog.text + + +def test_cache_cannot_overwrite_source(tmp_path: Path) -> None: + outfile = tmp_path / "simulation.out" + _write_log(outfile) + + with pytest.raises(ValueError, match="must not overwrite"): + Diagnostics(outfile, cache_path=outfile) diff --git a/nt2/tests/test_particle_dataset_nbytes.py b/nt2/tests/test_particle_dataset_nbytes.py new file mode 100644 index 0000000..74cd07e --- /dev/null +++ b/nt2/tests/test_particle_dataset_nbytes.py @@ -0,0 +1,41 @@ +import numpy as np + +from nt2.containers.particle_dataset import ParticleDataset + + +def _unexpected_read(step: int, column: str): + raise AssertionError(f"nbytes unexpectedly read {column} at step {step}") + + +def test_nbytes_uses_cached_partition_lengths_without_computing(): + particles = ParticleDataset( + species=[1], + steps=np.array([10, 20], dtype=np.int64), + times=np.array([1.0, 2.0], dtype=np.float64), + colnames=["x", "id", "sp"], + read_column=_unexpected_read, + partition_lengths=(1, 2), + ) + + bytes_per_row = sum( + np.dtype(dtype).itemsize + for dtype in (np.int64, np.int32, np.int64, np.float64, np.int64) + ) + assert particles.nbytes == 3 * bytes_per_row + + +def test_nbytes_tracks_timestep_partition_selection_without_computing(): + particles = ParticleDataset( + species=[1], + steps=np.array([10, 20], dtype=np.int64), + times=np.array([1.0, 2.0], dtype=np.float64), + colnames=["x", "id", "sp"], + read_column=_unexpected_read, + partition_lengths=(1, 2), + ) + + bytes_per_row = sum( + np.dtype(dtype).itemsize + for dtype in (np.int64, np.int32, np.int64, np.float64, np.int64) + ) + assert particles.isel(t=-1).nbytes == 2 * bytes_per_row diff --git a/nt2/tests/test_reader.py b/nt2/tests/test_reader.py index 17a889e..d556e39 100644 --- a/nt2/tests/test_reader.py +++ b/nt2/tests/test_reader.py @@ -12,16 +12,16 @@ def pytest_generate_tests(metafunc): def check_equal_arrays(arr1, arr2): if isinstance(arr1, set): - assert len(arr1) == len( - arr2 - ), f"Set lengths do not match: {len(arr1)} != {len(arr2)}" + assert len(arr1) == len(arr2), ( + f"Set lengths do not match: {len(arr1)} != {len(arr2)}" + ) assert arr1 == arr2, f"Sets do not match: {arr1} != {arr2}" else: arr1 = np.array(arr1) arr2 = np.array(arr2) - assert ( - arr1.shape == arr2.shape - ), f"Shapes do not match: {arr1.shape} != {arr2.shape}" + assert arr1.shape == arr2.shape, ( + f"Shapes do not match: {arr1.shape} != {arr2.shape}" + ) assert np.all(np.isclose(arr1, arr2)), f"Arrays do not match: {arr1} != {arr2}" @@ -78,9 +78,9 @@ def test_reader(test): field_names = test["fields"].get( "quantities", - [f"{f}{i+1}" for i in range(3) for f in "BE"] + [f"{f}{i + 1}" for i in range(3) for f in "BE"] + [f"N_{i}" for i in ["1_2", "3_4"]] - + [f"T0{c+1}_{i+1}" for i in range(4) for c in range(3)], + + [f"T0{c + 1}_{i + 1}" for i in range(4) for c in range(3)], ) field_names = set(f"f{f}" for f in field_names) # Check that invalid_tstep raises OSError in fields @@ -92,12 +92,22 @@ def test_reader(test): OSError, ) + valid_files = reader.GetValidFiles(path=PATH, category="fields") + # Check that timesteps are read correctly from fields times = reader.ReadPerTimestepVariable( - path=PATH, category="fields", varname="Time", newname="t" + path=PATH, + category="fields", + varname="Time", + newname="t", + valid_files=valid_files, )["t"] steps = reader.ReadPerTimestepVariable( - path=PATH, category="fields", varname="Step", newname="s" + path=PATH, + category="fields", + varname="Step", + newname="s", + valid_files=valid_files, )["s"] check_equal_arrays( times, @@ -119,7 +129,6 @@ def test_reader(test): check_equal_arrays(coords["X2"], x2) if test["dim"] == "3D": - sx3 = test["fields"]["sx3"] x3min = dx / 2 nx3 = test["fields"]["nx3"] x3 = np.array([x3min + i * dx for i in range(int(nx3))]) @@ -140,18 +149,27 @@ def test_reader(test): shape, (nx1, nx2, nx3) if layout == Layout.R else (nx3, nx2, nx1) ) - for step in reader.GetValidSteps(path=PATH, category="fields"): + valid_steps = reader.GetValidSteps(path=PATH, category="fields") + for step in valid_steps: for f in field_names: field = reader.ReadArrayAtTimestep( - path=PATH, category="fields", quantity=f, step=step + path=PATH, + category="fields", + quantity=f, + step=step, ) check_equal_arrays(field.shape, shape) - reader.VerifySameCategoryNames(path=PATH, category="fields", prefix="f") - reader.VerifySameFieldLayouts(path=PATH) + reader.VerifySameCategoryNames( + path=PATH, + category="fields", + prefix="f", + valid_steps=valid_steps, + ) + reader.VerifySameFieldLayouts(path=PATH, valid_steps=valid_steps) # Check that the shapes of the fields are read correctly - reader.VerifySameFieldShapes(path=PATH) + reader.VerifySameFieldShapes(path=PATH, valid_steps=valid_steps) if test["particles"] != {}: dt = 0 @@ -171,9 +189,9 @@ def test_reader(test): nspec: int = test["particles"].get("nspec", 4) prtl_names = ( - [f"U{i+1}_{j+1}" for i in range(3) for j in range(nspec)] + [f"U{i + 1}_{j + 1}" for i in range(3) for j in range(nspec)] + [ - f"X{i+1}_{j+1}" + f"X{i + 1}_{j + 1}" for i in range( 2 if test["dim"] == "2D" and test.get("coords", "cart") == "cart" @@ -181,16 +199,25 @@ def test_reader(test): ) for j in range(nspec) ] - + [f"W_{i+1}" for i in range(nspec)] + + [f"W_{i + 1}" for i in range(nspec)] ) prtl_names = set(f"p{p}" for p in prtl_names) + valid_files = reader.GetValidFiles(path=PATH, category="particles") # Check that timesteps are read correctly from particles times = reader.ReadPerTimestepVariable( - path=PATH, category="particles", varname="Time", newname="t" + path=PATH, + category="particles", + varname="Time", + newname="t", + valid_files=valid_files, )["t"] steps = reader.ReadPerTimestepVariable( - path=PATH, category="particles", varname="Step", newname="s" + path=PATH, + category="particles", + varname="Step", + newname="s", + valid_files=valid_files, )["s"] if dt is not None: @@ -212,6 +239,6 @@ def test_reader(test): reader.ReadArrayShapeAtTimestep( path=PATH, category="particles", - quantity=f"pW_{sp+1}", + quantity=f"pW_{sp + 1}", step=step, ) diff --git a/nt2/tests/test_tokenize.py b/nt2/tests/test_tokenize.py index 7e49f74..10e46b3 100644 --- a/nt2/tests/test_tokenize.py +++ b/nt2/tests/test_tokenize.py @@ -1,6 +1,6 @@ from dask.base import tokenize -from nt2.containers.container import BaseContainer +from nt2.containers.base import BaseContainer from nt2.readers.base import BaseReader from nt2.utils import Format @@ -12,7 +12,13 @@ def format(self) -> Format: def test_base_container_has_deterministic_dask_token(): - container = BaseContainer(path="/tmp/sim", reader=_Reader(), remap=None) + container = BaseContainer( + path="/tmp/sim", + reader=_Reader(), + remap=None, + coord_system=None, + num_cpus=1, + ) token1 = tokenize(container) token2 = tokenize(container) From 56f2d53172b3ab583bec431781dfac6f566c97ef Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 03:32:04 -0400 Subject: [PATCH 10/14] minor --- .gitignore | 8 +++++++- LICENSE | 2 +- nt2/utils.py | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 17eb961..430467a 100644 --- a/.gitignore +++ b/.gitignore @@ -47,7 +47,7 @@ coverage.xml *.cover *.py,cover .hypothesis/ -.pytest_cache/ +.*cache/ cover/ # Translations @@ -155,3 +155,9 @@ nt2/tests/testdata test/ temp/ *.bak +.*venv + +# LLM +.codex +.agents +.claude \ No newline at end of file diff --git a/LICENSE b/LICENSE index 3ac8c81..9f07b06 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2025, Entity development team +Copyright (c) 2026, Entity development team Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/nt2/utils.py b/nt2/utils.py index 12ea889..f6d7900 100644 --- a/nt2/utils.py +++ b/nt2/utils.py @@ -1,4 +1,4 @@ -from typing import Union +from typing import Union, Literal from enum import Enum import os import re @@ -26,6 +26,19 @@ class CoordinateSystem(Enum): XYZ = "Cartesian" SPH = "Spherical" + @staticmethod + def from_str(s): + s = s.lower() + if s in ("cartesian", "xyz"): + return CoordinateSystem.XYZ + elif s in ("spherical", "sph"): + return CoordinateSystem.SPH + else: + raise ValueError(f"Unknown coordinate system: {s}") + + +CoordinateSystemType = Literal["XYZ", "SPH"] + def DetermineDataFormat(path: str) -> Format: """Determine the data format for the files in the given path. From 48a4eec9160fdeb87c5b26f233ecf62c96f0d206 Mon Sep 17 00:00:00 2001 From: haykh Date: Wed, 15 Jul 2026 17:43:22 -0400 Subject: [PATCH 11/14] speed up valid time/step reading + explicit timerange/steprange options --- nt2/containers/base.py | 112 ++++++++++- nt2/containers/data.py | 23 ++- nt2/containers/fields.py | 39 +--- nt2/containers/particles.py | 57 +++--- nt2/containers/spectra.py | 35 +--- nt2/readers/adios2.py | 40 +++- nt2/readers/base.py | 180 +++++++++++------- nt2/readers/hdf5.py | 46 ++++- nt2/tests/test_containers.py | 4 +- .../test_particle_container_serialization.py | 34 ++++ nt2/tests/test_reader.py | 45 ++--- nt2/tests/test_tokenize.py | 10 + 12 files changed, 442 insertions(+), 183 deletions(-) create mode 100644 nt2/tests/test_particle_container_serialization.py diff --git a/nt2/containers/base.py b/nt2/containers/base.py index 7e2a943..8c5b758 100644 --- a/nt2/containers/base.py +++ b/nt2/containers/base.py @@ -1,5 +1,8 @@ from typing import Callable, Optional, Dict, Tuple, List, Union +import numpy.typing as npt +import numpy as np + from ..readers.base import BaseReader from ..utils import CoordinateSystem @@ -8,20 +11,29 @@ class BaseContainer: """Parent container class for holding any category data.""" __path: str + __category: str __reader: BaseReader __verify: bool + __timerange: Optional[Tuple[Union[float, None], Union[float, None]]] + __steprange: Optional[Tuple[Union[int, None], Union[int, None]]] __remap: Optional[Dict[str, Callable[[str], str]]] __coordinate_system: Optional[CoordinateSystem] __num_cpus: Optional[int] - valid_steps: List[int] = [] - valid_files: List[str] = [] + __valid_steps: List[int] = [] + __valid_files: List[str] = [] + + __times: npt.NDArray = np.array([]) + __steps: npt.NDArray = np.array([]) def __init__( self, path: str, + category: str, reader: BaseReader, verify: bool = False, + timerange: Union[Tuple[Union[float, None], Union[float, None]], None] = None, + steprange: Union[Tuple[Union[int, None], Union[int, None]], None] = None, remap: Union[Dict[str, Callable[[str], str]], None] = None, coord_system: Union[CoordinateSystem, None] = None, num_cpus: Union[int, None] = None, @@ -32,10 +44,16 @@ def __init__( ---------- path : str The path to the data. + category : str + The category of the data. reader : BaseReader The reader to be used for reading the data. verify : Optional[bool] Whether to verify the data. If None, it will use the reader's default. + timerange : Optional[Tuple[Union[float, None], Union[float, None]]] + Time range to load. If None, all times will be loaded. + steprange : Optional[Tuple[Union[int, None], Union[int, None]]] + Step range to load. If None, all steps will be loaded. remap : Optional[dict[str, Callable[[str], str]]] Remap dictionary to use to remap the data names (coords, fields, etc.). coord_system : Optional[CoordinateSystem] @@ -45,22 +63,40 @@ def __init__( """ self.__path = path + self.__category = category self.__reader = reader + self.__timerange = timerange + self.__steprange = steprange self.__verify = verify self.__remap = remap self.__coordinate_system = coord_system self.__num_cpus = num_cpus + self.__valid_files, self.__valid_steps = self.__reader.GetValidFilesAndSteps( + self.path, + self.category, + self.steprange, + self.num_cpus, + ) + self.__times, self.__steps = self.read_times_and_steps() + if self.steprange is None: + self.narrow_timerange() + @property def path(self) -> str: """str: The main path of the data.""" return self.__path + @property + def category(self) -> str: + """str: The category of the data.""" + return self.__category + @property def reader(self) -> BaseReader: """BaseReader: The reader used to read the data.""" return self.__reader - + @property def verify(self) -> bool: """bool: Whether to verify the data.""" @@ -81,6 +117,76 @@ def num_cpus(self) -> Optional[int]: """int: The number of CPUs to use for parallel processing.""" return self.__num_cpus + @property + def timerange(self) -> Optional[Tuple[Union[float, None], Union[float, None]]]: + """tuple[float | None, float | None]: The time range of the data.""" + return self.__timerange + + @property + def steprange(self) -> Optional[Tuple[Union[int, None], Union[int, None]]]: + """tuple[int | None, int | None]: The step range of the data.""" + return self.__steprange + + @property + def valid_files(self) -> List[str]: + """list[str]: The valid files of the data.""" + return self.__valid_files + + @property + def valid_steps(self) -> List[int]: + """list[int]: The valid steps of the data.""" + return self.__valid_steps + + @property + def times(self) -> npt.NDArray: + """npt.NDArray: The times of the data.""" + return self.__times + + @property + def steps(self) -> npt.NDArray: + """npt.NDArray: The steps of the data.""" + return self.__steps + + def read_times_and_steps(self) -> Tuple[npt.NDArray, npt.NDArray]: + """Reads the times and steps for the given category. + + Parameters + ---------- + category : str + The category to read the times and steps for. + + Returns + ------- + tuple[npt.NDArray, npt.NDArray] + A tuple containing the times and steps for the given category. + + """ + vars = self.reader.ReadPerTimestepVariables( + path=self.path, + category=self.category, + varnames=["Time", "Step"], + newnames=["t", "s"], + valid_files=self.valid_files, + ) + return (vars["t"], vars["s"]) + + def narrow_timerange(self): + if self.timerange is not None: + start_time, end_time = self.timerange + start_idx, end_idx = 0, -1 + if start_time is None: + start_idx = 0 + else: + start_idx = int(np.searchsorted(self.__times, start_time)) + if end_time is None: + end_idx = len(self.__times) - 1 + else: + end_idx = int(np.searchsorted(self.__times, end_time)) + self.__times = self.__times[start_idx : end_idx + 1] + self.__steps = self.__steps[start_idx : end_idx + 1] + self.__valid_files = self.__valid_files[start_idx : end_idx + 1] + self.__valid_steps = self.__valid_steps[start_idx : end_idx + 1] + def set_remap(self, remap: Dict[str, Callable[[str], str]]) -> None: """Set the remap dictionary for the container. diff --git a/nt2/containers/data.py b/nt2/containers/data.py index 26b2a74..abefcd2 100644 --- a/nt2/containers/data.py +++ b/nt2/containers/data.py @@ -1,4 +1,4 @@ -from typing import Callable, Any, Union, Optional, List, Dict +from typing import Callable, Any, Union, Optional, List, Dict, Tuple import os @@ -53,6 +53,8 @@ def __init__( spectra: bool = True, diagnostics: bool = False, verify: bool = False, + timerange: Optional[Tuple[Union[float, None], Union[float, None]]] = None, + steprange: Optional[Tuple[Union[int, None], Union[int, None]]] = None, reader: Optional[BaseReader] = None, remap: Optional[Dict[str, Callable[[str], str]]] = None, coord_system: Optional[CoordinateSystemType] = None, @@ -76,6 +78,10 @@ def __init__( Whether to load the diagnostics component. Default is False. verify : bool, optional Whether to verify the data. Default is False. + timerange : tuple[float | None, float | None], optional + Time range to load. If None, all times will be loaded. + steprange : tuple[int | None, int | None], optional + Step range to load. If None, all steps will be loaded. reader : BaseReader, optional Reader to use to read the data. If None, it will be determined based on the file format. @@ -117,6 +123,8 @@ def __init__( path=path, reader=__reader, verify=verify, + timerange=timerange, + steprange=steprange, remap=remap, coord_system=CoordinateSystem.from_str(coord_system) if coord_system @@ -128,6 +136,8 @@ def __init__( path=path, reader=__reader, verify=verify, + timerange=timerange, + steprange=steprange, remap=remap, coord_system=CoordinateSystem.from_str(coord_system) if coord_system @@ -139,6 +149,8 @@ def __init__( path=path, reader=__reader, verify=verify, + timerange=timerange, + steprange=steprange, remap=remap, coord_system=CoordinateSystem.from_str(coord_system) if coord_system @@ -255,14 +267,19 @@ def makeMovie( if time is None: raise ValueError("No time values found.") name: str = "" - if self.attrs.get("simulation.name", None) is None: - name = movie_kwargs.pop("name", "movie") + provided_name = movie_kwargs.pop("name", None) + if provided_name is not None: + name = provided_name + elif self.attrs.get("simulation.name", None) is None: + name = provided_name else: name_b = self.attrs.get("simulation.name") if isinstance(name_b, bytes): name = name_b.decode("utf-8") else: name = str(name_b) + if name is None: + raise ValueError("No name provided for the movie.") return makeFramesAndMovie( name=name, data=self, diff --git a/nt2/containers/fields.py b/nt2/containers/fields.py index 0cf2c75..a630e3f 100644 --- a/nt2/containers/fields.py +++ b/nt2/containers/fields.py @@ -65,18 +65,7 @@ def __init__( Keyword arguments to be passed to the parent BaseContainer class. """ - super().__init__(**kwargs) - self.valid_files = self.reader.GetValidFiles( - path=self.path, - category="fields", - num_cpus=self.num_cpus, - ) - self.valid_steps = self.reader.GetValidSteps( - path=self.path, - category="fields", - num_cpus=self.num_cpus, - ) - + super().__init__(category="fields", **kwargs) if self.reader.DefinesCategory(self.path, "fields", self.valid_files): self.__fields_defined = True self.__fields = self._read_fields() @@ -189,21 +178,6 @@ def _read_fields(self) -> xr.Dataset: new_coords[self.remap["coords"](coord)] = coords[coord] coords = new_coords - times = self.reader.ReadPerTimestepVariable( - self.path, - "fields", - "Time", - "t", - self.valid_files, - ) - steps = self.reader.ReadPerTimestepVariable( - self.path, - "fields", - "Step", - "s", - self.valid_files, - ) - edge_coords = self.reader.ReadEdgeCoordsAtTimestep(self.path, first_step) new_edge_coords = {} for coord in edge_coords.keys(): @@ -216,8 +190,8 @@ def _read_fields(self) -> xr.Dataset: new_edge_coords[assoc_x + "_max"] = (assoc_x, edge_coords[coord][1:]) edge_coords = new_edge_coords - all_dims = {**times, **coords}.keys() - all_coords = {**times, **coords, "s": ("t", steps["s"]), **edge_coords} + all_dims = {"t": self.times, **coords}.keys() + all_coords = {"t": self.times, **coords, "s": ("t", self.steps), **edge_coords} return xr.Dataset( { @@ -248,7 +222,12 @@ def _read_fields(self) -> xr.Dataset: dims=all_dims, coords=all_coords, ) - for name in tqdm(field_names, desc="fields", position=0, leave=False) + for name in tqdm( + field_names, + desc="fields", + position=0, + leave=False, + ) }, attrs=attributes, ) diff --git a/nt2/containers/particles.py b/nt2/containers/particles.py index 4c740b6..31a3623 100644 --- a/nt2/containers/particles.py +++ b/nt2/containers/particles.py @@ -49,9 +49,40 @@ class ParticleContainer(BaseContainer): def __getstate__(self) -> dict[str, Any]: state = self.__dict__.copy() + particles = state.get("_ParticleContainer__particles") + if particles is not None: + state["_ParticleContainer__particle_dataset_state"] = { + "species": particles.species, + "steps": particles.steps, + "times": particles.times, + "colnames": particles.colnames, + "fprec": particles.fprec, + "selection": particles.selection, + "partition_lengths": particles._partition_lengths, + } state.pop("_ParticleContainer__particles", None) return state + def __setstate__(self, state: dict[str, Any]) -> None: + particle_dataset_state = state.pop( + "_ParticleContainer__particle_dataset_state", None + ) + self.__dict__.update(state) + if self.__particles_defined: + if particle_dataset_state is None: + ( + self.quantities, + self.sp_with_idx, + self.sp_without_idx, + self.attributes, + self.__particles, + ) = self._read_particles() + else: + self.__particles = ParticleDataset( + **particle_dataset_state, + read_column=self._read_column, + ) + def __init__(self, **kwargs: Any) -> None: """Initializer for the ParticleContainer class. @@ -61,17 +92,7 @@ def __init__(self, **kwargs: Any) -> None: Keyword arguments to be passed to the parent BaseContainer class. """ - super().__init__(**kwargs) - self.valid_files = self.reader.GetValidFiles( - path=self.path, - category="particles", - num_cpus=self.num_cpus, - ) - self.valid_steps = self.reader.GetValidSteps( - path=self.path, - category="particles", - num_cpus=self.num_cpus, - ) + super().__init__(category="particles", **kwargs) # @TODO: parallelize self.quantity_names_by_step = { @@ -131,16 +152,6 @@ def _read_particles(self): for step in self.valid_steps ) - # save times and steps - steps = np.array(self.valid_steps) - times = self.reader.ReadPerTimestepVariable( - self.path, - "particles", - "Time", - "t", - self.valid_files, - )["t"] - # determine coordinate system and remap functions first_step = self.valid_steps[0] attributes = self.reader.ReadAttrsAtTimestep( @@ -176,8 +187,8 @@ def _read_particles(self): attributes, ParticleDataset( species=all_species, - steps=steps, - times=times, + steps=self.steps, + times=self.times, colnames=[ ( self.remap["particles"](q) diff --git a/nt2/containers/spectra.py b/nt2/containers/spectra.py index 93b5c41..68f2148 100644 --- a/nt2/containers/spectra.py +++ b/nt2/containers/spectra.py @@ -16,17 +16,7 @@ class SpectraContainer(BaseContainer): __spectra: Union[xr.Dataset, None] = None def __init__(self, **kwargs: Any) -> None: - super().__init__(**kwargs) - self.valid_files = self.reader.GetValidFiles( - path=self.path, - category="spectra", - num_cpus=self.num_cpus, - ) - self.valid_steps = self.reader.GetValidSteps( - path=self.path, - category="spectra", - num_cpus=self.num_cpus, - ) + super().__init__(category="spectra", **kwargs) if self.reader.DefinesCategory( self.path, @@ -84,20 +74,6 @@ def _read_spectra(self) -> xr.Dataset: shape = self.reader.ReadArrayShapeExplicitlyAtTimestep( self.path, "spectra", first_spectrum_name, first_step ) - times = self.reader.ReadPerTimestepVariable( - self.path, - "spectra", - "Time", - "t", - self.valid_files, - ) - steps = self.reader.ReadPerTimestepVariable( - self.path, - "spectra", - "Step", - "s", - self.valid_files, - ) ebins = self.reader.ReadArrayAtTimestep( self.path, "spectra", ebin_name, first_step @@ -109,8 +85,8 @@ def _read_spectra(self) -> xr.Dataset: else: ebins = (ebins[1:] * ebins[:-1]) ** 0.5 - all_dims = {**times, "E": ebins} - all_coords = {**all_dims, "s": ("t", steps["s"])} + all_dims = {"t": self.times, "E": ebins} + all_coords = {**all_dims, "s": ("t", self.steps)} attributes = self.reader.ReadAttrsAtTimestep( path=self.path, category="spectra", step=first_step @@ -145,7 +121,10 @@ def remap_name(name: str) -> str: coords=all_coords, ) for spectrum in tqdm( - spectra_names, desc="spectra", position=0, leave=False + spectra_names, + desc="spectra", + position=0, + leave=False, ) }, attrs=attributes, diff --git a/nt2/readers/adios2.py b/nt2/readers/adios2.py index 4cb7ffe..f63d202 100644 --- a/nt2/readers/adios2.py +++ b/nt2/readers/adios2.py @@ -1,6 +1,7 @@ from typing import Any, List, Dict, Tuple, Set import sys +from tqdm import tqdm if sys.version_info >= (3, 12): from typing import override @@ -44,7 +45,12 @@ def ReadPerTimestepVariable( valid_files: List[str], ) -> Dict[str, npt.NDArray[Any]]: variables: List[float] = [] - for filename in valid_files: + for filename in tqdm( + valid_files, + desc=f"Reading {category} {varname}", + position=0, + leave=False, + ): with bp.FileReader(os.path.join(path, category, filename)) as f: avail: Dict[str, Any] = f.available_variables() vars: List[str] = list(avail.keys()) @@ -60,6 +66,38 @@ def ReadPerTimestepVariable( raise ValueError(f"{varname} not found in the BP file {filename}") return {newname: np.array(variables)} + @override + def ReadPerTimestepVariables( + self, + path: str, + category: str, + varnames: List[str], + newnames: List[str], + valid_files: List[str], + ) -> Dict[str, npt.NDArray[Any]]: + variables = {newname: [] for newname in newnames} + for filename in tqdm( + valid_files, + desc=f"Reading {category} {varnames}", + position=0, + leave=False, + ): + with bp.FileReader(os.path.join(path, category, filename)) as f: + avail: Dict[str, Any] = f.available_variables() + vars: List[str] = list(avail.keys()) + for varname, newname in zip(varnames, newnames): + if varname in vars: + var = f.inquire_variable(varname) + if var is not None: + variables[newname].append(f.read(var)) + else: + raise ValueError( + f"{varname} is not a variable in the BP file {filename}" + ) + else: + raise ValueError(f"{varname} not found in the BP file {filename}") + return {newname: np.array(variables[newname]) for newname in newnames} + @override def ReadParticleCountsAtTimestep( self, path: str, step: int, species: List[int] diff --git a/nt2/readers/base.py b/nt2/readers/base.py index ae06489..bee5349 100644 --- a/nt2/readers/base.py +++ b/nt2/readers/base.py @@ -1,5 +1,5 @@ from concurrent.futures import as_completed -from typing import Any, Callable, Dict, List, Optional, Set, Tuple +from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union import os import re import logging @@ -134,6 +134,37 @@ def ReadPerTimestepVariable( """ raise NotImplementedError("ReadPerTimestepVariable is not implemented") + def ReadPerTimestepVariables( + self, + path: str, + category: str, + varnames: List[str], + newnames: List[str], + valid_files: List[str], + ) -> Dict[str, npt.NDArray[Any]]: + """Read multiple variables at each timestep and return a dictionary with the new names. + + Parameters + ---------- + path : str + The path to the files. + category : str + The category of the files. + varnames : list[str] + The names of the variables to be read. + newnames : list[str] + The new names of the variables to be returned. + valid_files : list[str] + The valid files to be read. + + Returns + ------- + dict[str, NDArray[Any]] + A dictionary with the new names and the variables at each timestep. + + """ + raise NotImplementedError("ReadPerTimestepVariables is not implemented") + def ReadParticleCountsAtTimestep( self, path: str, @@ -443,13 +474,73 @@ def FullPath(self, path: str, category: str, step: int) -> str: path, category, f"{category}.{step:08d}.{self.format.value}" ) - def GetValidSteps( + # def GetValidSteps( + # self, + # path: str, + # category: str, + # num_cpus: Optional[int] = None, + # ) -> List[int]: + # """Get valid timesteps (sorted) in a given path and category. + + # Parameters + # ---------- + # path : str + # The path to the files. + # category : str + # The category of the files. + # num_cpus : Optional[int] + # The number of CPU cores to use for parallel processing. + + # Returns + # ------- + # list[int] + # A list of valid timesteps in the given path and category. + + # """ + # category_files = BaseReader.CategoryFiles( + # path=path, + # category=category, + # format=self.format.value, + # ) + # num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) + # executor = get_reusable_executor(max_workers=num_cpus) + # futures = { + # executor.submit( + # _check_file, + # self.EnterFile, + # os.path.join(path, category, filename), + # ): filename + # for filename in category_files + # } + + # steps: List[int] = [] + # for future in tqdm( + # as_completed(futures), + # total=len(futures), + # desc=f"getting valid steps for {category}", + # leave=False, + # ): + # filename = futures[future] + # try: + # future.result() + # steps.append(int(filename.split(".")[1])) + # except OSError: + # if filename not in self.skipped_files: + # self.skipped_files.append(filename) + # logging.warning(f"Could not read {filename}, skipping it") + # except Exception as e: + # raise e + # steps.sort() + # return steps + + def GetValidFilesAndSteps( self, path: str, category: str, + steprange: Optional[Tuple[Union[int, None], Union[int, None]]] = None, num_cpus: Optional[int] = None, - ) -> List[int]: - """Get valid timesteps (sorted) in a given path and category. + ) -> Tuple[List[str], List[int]]: + """Get valid files (sorted by timestep) and steps in a given path and category. Parameters ---------- @@ -457,13 +548,15 @@ def GetValidSteps( The path to the files. category : str The category of the files. + steprange : Optional[tuple[int | None, int | None]] + The range of timesteps to be considered. If None, all timesteps are considered. num_cpus : Optional[int] The number of CPU cores to use for parallel processing. Returns ------- - list[int] - A list of valid timesteps in the given path and category. + tuple[list[str], list[int]] + A tuple containing a list of valid files and a list of valid timesteps in the given path and category. """ category_files = BaseReader.CategoryFiles( @@ -473,65 +566,18 @@ def GetValidSteps( ) num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) executor = get_reusable_executor(max_workers=num_cpus) - futures = { - executor.submit( - _check_file, - self.EnterFile, - os.path.join(path, category, filename), - ): filename - for filename in category_files - } - - steps: List[int] = [] - for future in tqdm( - as_completed(futures), - total=len(futures), - desc=f"getting valid steps for {category}", - leave=False, - ): - filename = futures[future] - try: - future.result() - steps.append(int(filename.split(".")[1])) - except OSError: - if filename not in self.skipped_files: - self.skipped_files.append(filename) - logging.warning(f"Could not read {filename}, skipping it") - except Exception as e: - raise e - steps.sort() - return steps - - def GetValidFiles( - self, - path: str, - category: str, - num_cpus: Optional[int] = None, - ) -> List[str]: - """Get valid files (sorted by timestep) in a given path and category. - - Parameters - ---------- - path : str - The path to the files. - category : str - The category of the files. - num_cpus : Optional[int] - The number of CPU cores to use for parallel processing. - Returns - ------- - list[str] - A list of valid files in the given path and category. + def is_inrange(filename: str) -> bool: + step = int(filename.split(".")[1]) + if steprange is None: + return True + start, end = steprange + if start is not None and step < start: + return False + if end is not None and step >= end: + return False + return True - """ - category_files = BaseReader.CategoryFiles( - path=path, - category=category, - format=self.format.value, - ) - num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) - executor = get_reusable_executor(max_workers=num_cpus) futures = { executor.submit( _check_file, @@ -539,19 +585,22 @@ def GetValidFiles( os.path.join(path, category, filename), ): filename for filename in category_files + if is_inrange(filename) } files: List[str] = [] + steps: List[int] = [] for future in tqdm( as_completed(futures), total=len(futures), - desc=f"getting valid files for {category}", + desc=f"getting valid files & steps for {category}", leave=False, ): filename = futures[future] try: future.result() files.append(filename) + steps.append(int(filename.split(".")[1])) except OSError: if filename not in self.skipped_files: self.skipped_files.append(filename) @@ -559,7 +608,8 @@ def GetValidFiles( except Exception as e: raise e files.sort(key=lambda x: int(x.split(".")[1])) - return files + steps.sort() + return (files, steps) def VerifySameCategoryNames( self, diff --git a/nt2/readers/hdf5.py b/nt2/readers/hdf5.py index 14d9df1..4c24226 100644 --- a/nt2/readers/hdf5.py +++ b/nt2/readers/hdf5.py @@ -3,6 +3,7 @@ from typing import Any, TYPE_CHECKING, List, Dict, Tuple, Set import sys +from tqdm import tqdm if sys.version_info >= (3, 12): from typing import override @@ -75,7 +76,12 @@ def ReadPerTimestepVariable( ) -> Dict[str, npt.NDArray[Any]]: variables: List[Any] = [] h5 = _require_h5py() - for filename in valid_files: + for filename in tqdm( + valid_files, + desc=f"Reading {category}/{varname}", + position=0, + leave=False, + ): with h5.File(os.path.join(path, category, filename), "r") as f: f0 = Reader.__extract_step0(f) if varname in f0.keys(): @@ -91,6 +97,41 @@ def ReadPerTimestepVariable( return {newname: np.array(variables)} + @override + def ReadPerTimestepVariables( + self, + path: str, + category: str, + varnames: List[str], + newnames: List[str], + valid_files: List[str], + ) -> Dict[str, npt.NDArray[Any]]: + variables = {newname: [] for newname in newnames} + h5 = _require_h5py() + for filename in tqdm( + valid_files, + desc=f"Reading {category} {varnames}", + position=0, + leave=False, + ): + with h5.File(os.path.join(path, category, filename), "r") as f: + f0 = Reader.__extract_step0(f) + for varname, newname in zip(varnames, newnames): + if varname in f0.keys(): + var = f0[varname] + if isinstance(var, h5.Dataset): + variables[newname].append(var[()]) + else: + raise ValueError( + f"{varname} is not a group in the HDF5 file {filename}" + ) + else: + raise ValueError( + f"{varname} not found in the HDF5 file {filename}" + ) + + return {newname: np.array(variables[newname]) for newname in newnames} + @override def ReadParticleCountsAtTimestep( self, path: str, step: int, species: List[int] @@ -101,8 +142,7 @@ def ReadParticleCountsAtTimestep( f0 = Reader.__extract_step0(f) return { sp: int(f0[name].shape[0]) - if (name := f"pX1_{sp}") in f0 - and isinstance(f0[name], h5.Dataset) + if (name := f"pX1_{sp}") in f0 and isinstance(f0[name], h5.Dataset) else 0 for sp in species } diff --git a/nt2/tests/test_containers.py b/nt2/tests/test_containers.py index c773d7e..5994100 100644 --- a/nt2/tests/test_containers.py +++ b/nt2/tests/test_containers.py @@ -82,7 +82,9 @@ def field_remap(Fold: str): num_cpus=1, ) - steps = reader.GetValidSteps(path=path, category="fields", num_cpus=1) + _, steps = reader.GetValidFilesAndSteps( + path=path, category="fields", num_cpus=1 + ) nx1 = test["fields"]["nx1"] nx2 = test["fields"]["nx2"] assert fields.fields is not None, "Fields are None" diff --git a/nt2/tests/test_particle_container_serialization.py b/nt2/tests/test_particle_container_serialization.py new file mode 100644 index 0000000..768a723 --- /dev/null +++ b/nt2/tests/test_particle_container_serialization.py @@ -0,0 +1,34 @@ +import pickle + +import numpy as np + +from nt2.containers.particle_dataset import ParticleDataset +from nt2.containers.particles import ParticleContainer + + +class _RestoringParticleContainer(ParticleContainer): + def _read_particles(self): + raise AssertionError("deserialization should not rescan particle files") + + def _read_column(self, step, colname): + return np.array([], dtype=np.int64) + + +def test_particle_dataset_is_restored_after_serialization(): + container = _RestoringParticleContainer.__new__(_RestoringParticleContainer) + container.__dict__["_ParticleContainer__particles_defined"] = True + container.__dict__["_ParticleContainer__particles"] = ParticleDataset( + species=[1], + steps=np.array([10]), + times=np.array([2.5]), + colnames=["x", "id", "sp"], + read_column=container._read_column, + partition_lengths=(0,), + ) + + restored = pickle.loads(pickle.dumps(container)) + + assert restored.particles_defined + assert restored.particles is not None + assert restored.particles.species == [1] + assert restored.particles.times.tolist() == [2.5] diff --git a/nt2/tests/test_reader.py b/nt2/tests/test_reader.py index d556e39..a0d6582 100644 --- a/nt2/tests/test_reader.py +++ b/nt2/tests/test_reader.py @@ -92,23 +92,20 @@ def test_reader(test): OSError, ) - valid_files = reader.GetValidFiles(path=PATH, category="fields") + valid_files, valid_steps = reader.GetValidFilesAndSteps( + path=PATH, category="fields" + ) # Check that timesteps are read correctly from fields - times = reader.ReadPerTimestepVariable( - path=PATH, - category="fields", - varname="Time", - newname="t", - valid_files=valid_files, - )["t"] - steps = reader.ReadPerTimestepVariable( + timestep_variables = reader.ReadPerTimestepVariables( path=PATH, category="fields", - varname="Step", - newname="s", + varnames=["Time", "Step"], + newnames=["t", "s"], valid_files=valid_files, - )["s"] + ) + times = timestep_variables["t"] + steps = timestep_variables["s"] check_equal_arrays( times, np.array([s * dt for s in steps]), @@ -149,7 +146,6 @@ def test_reader(test): shape, (nx1, nx2, nx3) if layout == Layout.R else (nx3, nx2, nx1) ) - valid_steps = reader.GetValidSteps(path=PATH, category="fields") for step in valid_steps: for f in field_names: field = reader.ReadArrayAtTimestep( @@ -203,22 +199,19 @@ def test_reader(test): ) prtl_names = set(f"p{p}" for p in prtl_names) - valid_files = reader.GetValidFiles(path=PATH, category="particles") + valid_files, valid_steps = reader.GetValidFilesAndSteps( + path=PATH, category="particles" + ) # Check that timesteps are read correctly from particles - times = reader.ReadPerTimestepVariable( + timestep_variables = reader.ReadPerTimestepVariables( path=PATH, category="particles", - varname="Time", - newname="t", + varnames=["Time", "Step"], + newnames=["t", "s"], valid_files=valid_files, - )["t"] - steps = reader.ReadPerTimestepVariable( - path=PATH, - category="particles", - varname="Step", - newname="s", - valid_files=valid_files, - )["s"] + ) + times = timestep_variables["t"] + steps = timestep_variables["s"] if dt is not None: check_equal_arrays( @@ -234,7 +227,7 @@ def test_reader(test): check_equal_arrays(names, prtl_names) # Check prtl shapes - for step in reader.GetValidSteps(path=PATH, category="particles"): + for step in valid_steps: for sp in range(nspec): reader.ReadArrayShapeAtTimestep( path=PATH, diff --git a/nt2/tests/test_tokenize.py b/nt2/tests/test_tokenize.py index 10e46b3..be73014 100644 --- a/nt2/tests/test_tokenize.py +++ b/nt2/tests/test_tokenize.py @@ -1,3 +1,4 @@ +import numpy as np from dask.base import tokenize from nt2.containers.base import BaseContainer @@ -10,10 +11,19 @@ class _Reader(BaseReader): def format(self) -> Format: return Format.HDF5 + def GetValidFilesAndSteps(self, path, category, steprange=None, num_cpus=None): + return (["fields.00000001.h5"], [1]) + + def ReadPerTimestepVariables( + self, path, category, varnames, newnames, valid_files + ): + return {"t": np.array([0.5]), "s": np.array([1])} + def test_base_container_has_deterministic_dask_token(): container = BaseContainer( path="/tmp/sim", + category="fields", reader=_Reader(), remap=None, coord_system=None, From 6b1597d30c7591f44a9dbab9e11381e7f99e8188 Mon Sep 17 00:00:00 2001 From: haykh Date: Tue, 15 Sep 2026 17:12:13 -0400 Subject: [PATCH 12/14] support for spatially binned spectra & deprecated annotations rm --- .gitignore | 8 +- devenv.lock | 65 +++++++++++ devenv.nix | 43 ++++++++ devenv.yaml | 4 + legacy/containers/data.py | 39 ++++--- nt2/__init__.py | 6 +- nt2/cli/main.py | 31 +++--- nt2/containers/base.py | 58 +++++----- nt2/containers/data.py | 82 +++++++------- nt2/containers/diagnostics.py | 30 +++--- nt2/containers/fields.py | 22 ++-- nt2/containers/particle_dataset.py | 98 ++++++++--------- nt2/containers/particles.py | 44 ++++---- nt2/containers/spectra.py | 95 +++++++++++++--- nt2/plotters/annotations.py | 23 +++- nt2/plotters/export.py | 29 +++-- nt2/plotters/inspect.py | 101 +++++++++-------- nt2/plotters/movie.py | 22 ++-- nt2/plotters/particles.py | 25 ++--- nt2/plotters/polar.py | 16 +-- nt2/readers/adios2.py | 68 ++++++------ nt2/readers/base.py | 168 ++++++++++------------------- nt2/readers/hdf5.py | 63 +++++------ nt2/tests/test_cli.py | 4 +- nt2/tests/test_containers.py | 26 +++-- nt2/utils.py | 12 ++- 26 files changed, 689 insertions(+), 493 deletions(-) create mode 100644 devenv.lock create mode 100644 devenv.nix create mode 100644 devenv.yaml diff --git a/.gitignore b/.gitignore index 430467a..5567ed1 100644 --- a/.gitignore +++ b/.gitignore @@ -160,4 +160,10 @@ temp/ # LLM .codex .agents -.claude \ No newline at end of file +.claude + +# devenv +.devenv* +devenv.local.nix +devenv.local.yaml +.direnv diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..85e76bb --- /dev/null +++ b/devenv.lock @@ -0,0 +1,65 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1789480904, + "narHash": "sha256-anHWHTkxI7423/eUroN9Rc4+H8VIGyIUWq/hV1egBDQ=", + "owner": "cachix", + "repo": "devenv", + "rev": "0fd5e6d3a9b2ae6f10205a3e95e0ca58d526c5a6", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "nixpkgs": { + "inputs": { + "nixpkgs-src": "nixpkgs-src" + }, + "locked": { + "lastModified": 1787753358, + "narHash": "sha256-Tl77VbWyAKrOfRNQhL6JbQtb/MLzbYa/1RG1gWWfICk=", + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "256551e45f6303e142ab4a98be1bf243feb77dc0", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "nixpkgs-src": { + "flake": false, + "locked": { + "lastModified": 1787394516, + "narHash": "sha256-pRGOQSClnXNI2iLUG6DYpsGvYcuw0drOutVZFTJNw90=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c8f90650c15282fa8656a041bfbbd2403997a9a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} \ No newline at end of file diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..e6f6ca2 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,43 @@ +{ pkgs, lib, ... }: + +let + # override with + # devenv shell -O languages.python.package:pkg python312 + py = "313"; +in +{ + name = "nt2dev"; + + languages.python = { + enable = true; + package = pkgs."python${py}"; + + venv = { + enable = true; + requirements = '' + ipykernel + jupyterlab + pytest + -e . + ''; + }; + }; + + # https://devenv.sh/packages/ + packages = with pkgs; [ + black + pyright + taplo + vscode-langservers-extracted + zlib + ]; + + env.LD_LIBRARY_PATH = lib.makeLibraryPath [ + pkgs.stdenv.cc.cc + pkgs.zlib + ]; + + enterShell = '' + echo "nt2dev devenv activated: $DEVENV_STATE/venv/bin/python" + ''; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..68616a4 --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,4 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling diff --git a/legacy/containers/data.py b/legacy/containers/data.py index f5e28cc..570f872 100644 --- a/legacy/containers/data.py +++ b/legacy/containers/data.py @@ -1,7 +1,6 @@ -from typing import Callable, Any, Union, Optional, List, Dict - -import sys import logging +import sys +from typing import Any, Callable, Dict, List, Optional, Union if sys.version_info >= (3, 12): from typing import override @@ -11,30 +10,28 @@ def override(method): return method -from nt2.utils import ToHumanReadable - -import xarray as xr import pandas as pd +import xarray as xr -from nt2.utils import ( - DetermineDataFormat, - InheritClassDocstring, - Format, - CoordinateSystem, -) -from nt2.readers.base import BaseReader -from nt2.readers.hdf5 import Reader as HDF5Reader -from nt2.readers.adios2 import Reader as BP5Reader +import nt2.plotters.inspect as acc_inspect +import nt2.plotters.movie as acc_movie +import nt2.plotters.particles as acc_particles +import nt2.plotters.polar as acc_polar +from nt2.containers.diagnostics import Diagnostics from nt2.containers.fields import Fields from nt2.containers.particles import Particles from nt2.containers.spectra import Spectra -from nt2.containers.diagnostics import Diagnostics - -import nt2.plotters.polar as acc_polar -import nt2.plotters.particles as acc_particles -import nt2.plotters.inspect as acc_inspect -import nt2.plotters.movie as acc_movie from nt2.plotters.export import makeFramesAndMovie +from nt2.readers.adios2 import Reader as BP5Reader +from nt2.readers.base import BaseReader +from nt2.readers.hdf5 import Reader as HDF5Reader +from nt2.utils import ( + CoordinateSystem, + DetermineDataFormat, + Format, + InheritClassDocstring, + ToHumanReadable, +) @xr.register_dataset_accessor("polar") diff --git a/nt2/__init__.py b/nt2/__init__.py index 6355901..4a1f655 100644 --- a/nt2/__init__.py +++ b/nt2/__init__.py @@ -1,12 +1,12 @@ __version__ = "1.6.0" import xarray as xr -from .containers.data import Data as nt2Data -from .plotters import polar as acc_polar -from .plotters import particles as acc_particles +from .containers.data import Data as nt2Data from .plotters import inspect as acc_inspect from .plotters import movie as acc_movie +from .plotters import particles as acc_particles +from .plotters import polar as acc_polar from .utils import InheritClassDocstring diff --git a/nt2/cli/main.py b/nt2/cli/main.py index a7ca8cf..ff4f6c7 100644 --- a/nt2/cli/main.py +++ b/nt2/cli/main.py @@ -1,7 +1,12 @@ -from typing import Union, Dict -import typer, nt2, os -from typing_extensions import Annotated +from __future__ import annotations + +import os +from typing import Annotated + import matplotlib.pyplot as plt +import typer + +import nt2 app = typer.Typer() @@ -23,18 +28,18 @@ def check_path(path: str) -> str: return path -def check_sel(sel: str) -> Dict[str, Union[int, float, slice]]: +def check_sel(sel: str) -> dict[str, float | slice]: if sel == "": return {} sel_list = sel.strip().split(";") - sel_dict: Dict[str, Union[int, float, slice]] = {} + sel_dict: dict[str, float | slice] = {} for _, s in enumerate(sel_list): coord, arg = s.strip().split("=", 1) coord = coord.strip() arg_exec = eval(arg.strip()) - assert isinstance( - arg_exec, (int, float, slice) - ), f"Invalid selection argument for '{coord}': {arg_exec}. Must be int, float, or slice." + assert isinstance(arg_exec, (int, float, slice)), ( + f"Invalid selection argument for '{coord}': {arg_exec}. Must be int, float, or slice." + ) sel_dict[coord] = arg_exec return sel_dict @@ -122,19 +127,19 @@ def plot( ): fname = os.path.basename(path.strip("/")) data = nt2.Data(path) - assert isinstance( - sel, dict - ), f"Invalid selection format: {sel}. Must be a dictionary." + assert isinstance(sel, dict), ( + f"Invalid selection format: {sel}. Must be a dictionary." + ) assert isinstance(isel, dict), f"Invalid isel format: {isel}. Must be a dictionary." if what == "fields": d = data.fields if sel != {}: slices = {} sels = {} - slices: Dict[str, Union[slice, float, int]] = { + slices: dict[str, slice | float] = { k: v for k, v in sel.items() if isinstance(v, slice) } - sels: Dict[str, Union[slice, float, int]] = { + sels: dict[str, slice | float] = { k: v for k, v in sel.items() if not isinstance(v, slice) } d = d.sel(**sels, method="nearest") diff --git a/nt2/containers/base.py b/nt2/containers/base.py index 8c5b758..69b7a3c 100644 --- a/nt2/containers/base.py +++ b/nt2/containers/base.py @@ -1,7 +1,9 @@ -from typing import Callable, Optional, Dict, Tuple, List, Union +from __future__ import annotations + +from typing import Callable -import numpy.typing as npt import numpy as np +import numpy.typing as npt from ..readers.base import BaseReader from ..utils import CoordinateSystem @@ -14,17 +16,17 @@ class BaseContainer: __category: str __reader: BaseReader __verify: bool - __timerange: Optional[Tuple[Union[float, None], Union[float, None]]] - __steprange: Optional[Tuple[Union[int, None], Union[int, None]]] - __remap: Optional[Dict[str, Callable[[str], str]]] - __coordinate_system: Optional[CoordinateSystem] - __num_cpus: Optional[int] + __timerange: tuple[float | None, float | None] | None + __steprange: tuple[int | None, int | None] | None + __remap: dict[str, Callable[[str], str]] | None + __coordinate_system: CoordinateSystem | None + __num_cpus: int | None - __valid_steps: List[int] = [] - __valid_files: List[str] = [] + __valid_steps: list[int] + __valid_files: list[str] - __times: npt.NDArray = np.array([]) - __steps: npt.NDArray = np.array([]) + __times: npt.NDArray + __steps: npt.NDArray def __init__( self, @@ -32,11 +34,11 @@ def __init__( category: str, reader: BaseReader, verify: bool = False, - timerange: Union[Tuple[Union[float, None], Union[float, None]], None] = None, - steprange: Union[Tuple[Union[int, None], Union[int, None]], None] = None, - remap: Union[Dict[str, Callable[[str], str]], None] = None, - coord_system: Union[CoordinateSystem, None] = None, - num_cpus: Union[int, None] = None, + timerange: tuple[float | None, float | None] | None = None, + steprange: tuple[int | None, int | None] | None = None, + remap: dict[str, Callable[[str], str]] | None = None, + coord_system: CoordinateSystem | None = None, + num_cpus: int | None = None, ): """Initializer for the BaseContainer class. @@ -50,9 +52,9 @@ def __init__( The reader to be used for reading the data. verify : Optional[bool] Whether to verify the data. If None, it will use the reader's default. - timerange : Optional[Tuple[Union[float, None], Union[float, None]]] + timerange : Optional[tuple[Union[float, None], Union[float, None]]] Time range to load. If None, all times will be loaded. - steprange : Optional[Tuple[Union[int, None], Union[int, None]]] + steprange : Optional[tuple[Union[int, None], Union[int, None]]] Step range to load. If None, all steps will be loaded. remap : Optional[dict[str, Callable[[str], str]]] Remap dictionary to use to remap the data names (coords, fields, etc.). @@ -103,37 +105,37 @@ def verify(self) -> bool: return self.__verify @property - def remap(self) -> Optional[Dict[str, Callable[[str], str]]]: + def remap(self) -> dict[str, Callable[[str], str]] | None: """{ str: (str) -> str } : The coordinate/field remap dictionary.""" return self.__remap @property - def coordinate_system(self) -> Optional[CoordinateSystem]: + def coordinate_system(self) -> CoordinateSystem | None: """CoordinateSystem: The coordinate system of the data.""" return self.__coordinate_system @property - def num_cpus(self) -> Optional[int]: + def num_cpus(self) -> int | None: """int: The number of CPUs to use for parallel processing.""" return self.__num_cpus @property - def timerange(self) -> Optional[Tuple[Union[float, None], Union[float, None]]]: + def timerange(self) -> tuple[float | None, float | None] | None: """tuple[float | None, float | None]: The time range of the data.""" return self.__timerange @property - def steprange(self) -> Optional[Tuple[Union[int, None], Union[int, None]]]: + def steprange(self) -> tuple[int | None, int | None] | None: """tuple[int | None, int | None]: The step range of the data.""" return self.__steprange @property - def valid_files(self) -> List[str]: + def valid_files(self) -> list[str]: """list[str]: The valid files of the data.""" return self.__valid_files @property - def valid_steps(self) -> List[int]: + def valid_steps(self) -> list[int]: """list[int]: The valid steps of the data.""" return self.__valid_steps @@ -147,7 +149,7 @@ def steps(self) -> npt.NDArray: """npt.NDArray: The steps of the data.""" return self.__steps - def read_times_and_steps(self) -> Tuple[npt.NDArray, npt.NDArray]: + def read_times_and_steps(self) -> tuple[npt.NDArray, npt.NDArray]: """Reads the times and steps for the given category. Parameters @@ -187,7 +189,7 @@ def narrow_timerange(self): self.__valid_files = self.__valid_files[start_idx : end_idx + 1] self.__valid_steps = self.__valid_steps[start_idx : end_idx + 1] - def set_remap(self, remap: Dict[str, Callable[[str], str]]) -> None: + def set_remap(self, remap: dict[str, Callable[[str], str]]) -> None: """Set the remap dictionary for the container. Parameters @@ -209,7 +211,7 @@ def set_coordinate_system(self, coord_system: CoordinateSystem) -> None: """ self.__coordinate_system = coord_system - def __dask_tokenize__(self) -> Tuple[str, str, str]: + def __dask_tokenize__(self) -> tuple[str, str, str]: """Provide a deterministic Dask token for container instances.""" return ( self.__class__.__name__, diff --git a/nt2/containers/data.py b/nt2/containers/data.py index abefcd2..0fd67a7 100644 --- a/nt2/containers/data.py +++ b/nt2/containers/data.py @@ -1,31 +1,30 @@ -from typing import Callable, Any, Union, Optional, List, Dict, Tuple +from __future__ import annotations import os +from typing import Any, Callable -import xarray as xr import pandas as pd +import xarray as xr +from ..plotters.export import makeFramesAndMovie +from ..readers.adios2 import Reader as BP5Reader +from ..readers.base import BaseReader +from ..readers.hdf5 import Reader as HDF5Reader from ..utils import ( - ToHumanReadable, - DetermineDataFormat, - Format, CoordinateSystem, CoordinateSystemType, + DetermineDataFormat, + Format, + ToHumanReadable, ) -from ..readers.base import BaseReader -from ..readers.hdf5 import Reader as HDF5Reader -from ..readers.adios2 import Reader as BP5Reader - +from .diagnostics import Diagnostics from .fields import FieldContainer -from .particles import ParticleContainer from .particle_dataset import ParticleDataset +from .particles import ParticleContainer from .spectra import SpectraContainer -from .diagnostics import Diagnostics - -from ..plotters.export import makeFramesAndMovie -def compactify(lst: Union[List[Any], Any]) -> str: +def compactify(lst: list[Any] | Any) -> str: c = "" cntr = 0 for l_ in lst: @@ -40,10 +39,10 @@ def compactify(lst: Union[List[Any], Any]) -> str: class Data: """Main class to manage all the data containers.""" - _fields: Optional[FieldContainer] = None - _particles: Optional[ParticleContainer] = None - _spectra: Optional[SpectraContainer] = None - _diagnostics: Optional[Diagnostics] = None + _fields: FieldContainer | None = None + _particles: ParticleContainer | None = None + _spectra: SpectraContainer | None = None + _diagnostics: Diagnostics | None = None def __init__( self, @@ -53,12 +52,12 @@ def __init__( spectra: bool = True, diagnostics: bool = False, verify: bool = False, - timerange: Optional[Tuple[Union[float, None], Union[float, None]]] = None, - steprange: Optional[Tuple[Union[int, None], Union[int, None]]] = None, - reader: Optional[BaseReader] = None, - remap: Optional[Dict[str, Callable[[str], str]]] = None, - coord_system: Optional[CoordinateSystemType] = None, - num_cpus: Optional[int] = min(os.cpu_count() or 1, 16), + timerange: tuple[float | None, float | None] | None = None, + steprange: tuple[int | None, int | None] | None = None, + reader: BaseReader | None = None, + remap: dict[str, Callable[[str], str]] | None = None, + coord_system: CoordinateSystemType | None = None, + num_cpus: int | None = min(os.cpu_count() or 1, 16), ): """Initializer for the Data class. @@ -159,7 +158,7 @@ def __init__( ) if diagnostics: self._diagnostics = Diagnostics(path=path) - self.__attrs: Dict[str, Any] = {} + self.__attrs: dict[str, Any] = {} if self.fields_defined: self.__attrs.update(**self._fields.attrs) if self.particles_defined: @@ -228,15 +227,15 @@ def diagnostics(self) -> pd.DataFrame: return self._diagnostics.df @property - def attrs(self) -> Dict[str, Any]: + def attrs(self) -> dict[str, Any]: """dict: The attributes of the data.""" return self.__attrs def makeMovie( self, plot: Callable, - time: Optional[List[float]] = None, - num_cpus: Optional[int] = None, + time: list[float] | None = None, + num_cpus: int | None = None, **movie_kwargs: Any, ) -> bool: """Create animation with provided plot function. @@ -268,9 +267,10 @@ def makeMovie( raise ValueError("No time values found.") name: str = "" provided_name = movie_kwargs.pop("name", None) - if provided_name is not None: - name = provided_name - elif self.attrs.get("simulation.name", None) is None: + if ( + provided_name is not None + or self.attrs.get("simulation.name", None) is not None + ): name = provided_name else: name_b = self.attrs.get("simulation.name") @@ -298,11 +298,19 @@ def to_str(self) -> str: string += "==============\n" string += f"| Coordinates:\n| {self._fields.coordinate_system.value}\n|\n" string += f"| Data axes:\n| {compactify(self.fields.indexes.keys())}\n|\n" - delta_t = ( - self.fields.coords["t"].values[1] - self.fields.coords["t"].values[0] - ) / (self.fields.coords["s"].values[1] - self.fields.coords["s"].values[0]) - string += f"| - dt: {delta_t:.2e}\n" - for key in self.fields.coords.keys(): + if ( + len(self.fields.coords["t"].values) > 1 + and len(self.fields.coords["s"].values) > 1 + ): + delta_t = ( + self.fields.coords["t"].values[1] + - self.fields.coords["t"].values[0] + ) / ( + self.fields.coords["s"].values[1] + - self.fields.coords["s"].values[0] + ) + string += f"| - dt: {delta_t:.2e}\n" + for key in self.fields.coords: crd = self.fields.coords[key].values fmt = "" if key != "s": @@ -343,7 +351,7 @@ def to_str(self) -> str: self.spectra.coords["s"].values[1] - self.spectra.coords["s"].values[0] ) string += f"| - dt: {delta_t:.2e}\n" - for key in self.spectra.coords.keys(): + for key in self.spectra.coords: crd = self.spectra.coords[key].values fmt = "" if key != "s": diff --git a/nt2/containers/diagnostics.py b/nt2/containers/diagnostics.py index 324fa82..0a8d001 100644 --- a/nt2/containers/diagnostics.py +++ b/nt2/containers/diagnostics.py @@ -6,12 +6,11 @@ import logging import os import re +from collections.abc import Iterator from pathlib import Path -from typing import Dict, Iterator, List, Optional, Union import pandas as pd - _NUMBER = r"[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?" _STEP_RE = re.compile(r"^Step:\s+(\d+)\.+\[") _TIME_RE = re.compile(rf"^Time:\s+({_NUMBER})\.+\[") @@ -58,23 +57,24 @@ class Diagnostics: _CACHE_VERSION = 1 - df: Optional[pd.DataFrame] + df: pd.DataFrame | None outfile: str def __init__( self, - path: Union[str, os.PathLike[str]], + path: str | os.PathLike[str], *, cache: bool = True, chunk_size: int = 100_000, - cache_path: Optional[Union[str, os.PathLike[str]]] = None, + cache_path: str | os.PathLike[str] | None = None, ) -> None: if chunk_size <= 0: raise ValueError("chunk_size must be greater than zero") outfile = self._find_outfile(Path(path)) + logger = logging.getLogger(__name__) if outfile is None: - logging.warning("No .out files found in %s", path) + logger.warning("No .out files found in %s", path) self.df = None return @@ -93,7 +93,7 @@ def __init__( self.df = pd.read_parquet(parquet_path) return except (OSError, ValueError): - logging.warning( + logger.warning( "Failed to read diagnostics cache %s; rebuilding it", parquet_path, exc_info=True, @@ -108,7 +108,7 @@ def __init__( self.df = self._combine_chunks(chunks) @staticmethod - def _find_outfile(path: Path) -> Optional[Path]: + def _find_outfile(path: Path) -> Path | None: if path.is_file(): if path.suffix != ".out": raise ValueError(f"Expected a .out file, got {path}") @@ -141,7 +141,7 @@ def _cache_is_valid( return False @classmethod - def _cache_metadata(cls, source: Path) -> Dict[str, Union[int, str]]: + def _cache_metadata(cls, source: Path) -> dict[str, int | str]: stat = source.stat() return { "parser_version": cls._CACHE_VERSION, @@ -212,8 +212,8 @@ def _parse_to_cache( @classmethod def _dataframe_chunks(cls, source: Path, chunk_size: int) -> Iterator[pd.DataFrame]: - records: List[Dict[str, Union[int, float]]] = [] - columns: Optional[List[str]] = None + records: list[dict[str, float]] = [] + columns: list[str] | None = None for record in cls._records(source): if columns is None: @@ -237,13 +237,13 @@ def _dataframe_chunks(cls, source: Path, chunk_size: int) -> Iterator[pd.DataFra @staticmethod def _make_dataframe( - records: List[Dict[str, Union[int, float]]], columns: List[str] + records: list[dict[str, float]], columns: list[str] ) -> pd.DataFrame: dataframe = pd.DataFrame.from_records(records, columns=columns) return dataframe.set_index("Step", drop=False) @staticmethod - def _combine_chunks(chunks: List[pd.DataFrame]) -> pd.DataFrame: + def _combine_chunks(chunks: list[pd.DataFrame]) -> pd.DataFrame: if chunks: return pd.concat(chunks) dataframe = pd.DataFrame(columns=["Step", "Time"]) @@ -251,8 +251,8 @@ def _combine_chunks(chunks: List[pd.DataFrame]) -> pd.DataFrame: return dataframe @staticmethod - def _records(source: Path) -> Iterator[Dict[str, Union[int, float]]]: - record: Optional[Dict[str, Union[int, float]]] = None + def _records(source: Path) -> Iterator[dict[str, float]]: + record: dict[str, float] | None = None with source.open("r", encoding="utf-8-sig", errors="replace") as stream: for line in stream: diff --git a/nt2/containers/fields.py b/nt2/containers/fields.py index a630e3f..7636244 100644 --- a/nt2/containers/fields.py +++ b/nt2/containers/fields.py @@ -1,12 +1,14 @@ -from typing import Any, Union, Dict +from __future__ import annotations + +from typing import Any import dask import dask.array as da import xarray as xr from tqdm import tqdm +from ..utils import CoordinateSystem, Layout from .base import BaseContainer -from ..utils import Layout, CoordinateSystem def remap_fields_cart(name: str) -> str: @@ -51,7 +53,7 @@ class FieldContainer(BaseContainer): """Parent class to manage the fields dataframe.""" __fields_defined: bool = False - __fields: Union[xr.Dataset, None] = None + __fields: xr.Dataset | None = None def __init__( self, @@ -76,7 +78,7 @@ def fields_defined(self) -> bool: return self.__fields_defined @property - def fields(self) -> Union[xr.Dataset, None]: + def fields(self) -> xr.Dataset | None: """xr.Dataset: The fields dataframe.""" return self.__fields @@ -155,7 +157,11 @@ def _read_fields(self) -> xr.Dataset: f"Coordinate system {attributes['Coordinates']} not supported." ) - if self.remap is None: + if ( + self.remap is None + or self.remap.get("coords", None) is None + or self.remap.get("fields", None) is None + ): self.set_remap( { "coords": ( @@ -174,13 +180,13 @@ def _read_fields(self) -> xr.Dataset: # rename coordinates if remap is provided if self.remap is not None and "coords" in self.remap: new_coords = {} - for coord in coords.keys(): + for coord in coords: new_coords[self.remap["coords"](coord)] = coords[coord] coords = new_coords edge_coords = self.reader.ReadEdgeCoordsAtTimestep(self.path, first_step) new_edge_coords = {} - for coord in edge_coords.keys(): + for coord in edge_coords: assoc_x = ( coord[:-1] if (self.remap is None or "coords" not in self.remap) @@ -233,7 +239,7 @@ def _read_fields(self) -> xr.Dataset: ) @property - def attrs(self) -> Dict[str, Any]: + def attrs(self) -> dict[str, Any]: """dict: The attributes of the fields dataframe.""" if self.fields_defined: return self.fields.attrs diff --git a/nt2/containers/particle_dataset.py b/nt2/containers/particle_dataset.py index 294d388..91bd675 100644 --- a/nt2/containers/particle_dataset.py +++ b/nt2/containers/particle_dataset.py @@ -1,32 +1,26 @@ +from __future__ import annotations + +from collections.abc import Sequence +from copy import copy from typing import ( Any, Callable, - List, - Optional, - Sequence, - Tuple, Literal, - Union, - Dict, - Type, cast, ) -import numpy.typing as npt -from copy import copy import dask import dask.dataframe as dd +import matplotlib.axes as maxes +import matplotlib.pyplot as plt +import numpy as np +import numpy.typing as npt +import pandas as pd from dask.delayed import Delayed from dask.optimization import cull -import pandas as pd -import numpy as np - -import matplotlib.pyplot as plt -import matplotlib.axes as maxes - -IntSelector = Union[int, Sequence[int], slice, Tuple[int, int]] -FloatSelector = Union[float, slice, Sequence[float], Tuple[float, float]] +IntSelector = int | Sequence[int] | slice | tuple[int, int] +FloatSelector = float | slice | Sequence[float] | tuple[float, float] def _cull_dataframe_graph(ddf: dd.DataFrame) -> dd.DataFrame: @@ -47,12 +41,12 @@ class Selection: def __init__( self, type: Literal["value", "range", "list"], - value: Optional[Union[int, float, list, tuple]] = None, + value: float | list | tuple | None = None, ): self.type = type self.value = value - def intersect(self, other: "Selection") -> "Selection": + def intersect(self, other: Selection) -> Selection: if self.value is None: return copy(other) elif other.value is None: @@ -92,9 +86,9 @@ def intersect(self, other: "Selection") -> "Selection": lo, hi = other.value new_values = [v for v in self.value if lo <= v <= hi] return Selection("list", new_values) - elif self.type == "range" and other.type == "value": - return other.intersect(self) - elif self.type == "range" and other.type == "list": + elif (self.type == "range" and other.type == "value") or ( + self.type == "range" and other.type == "list" + ): return other.intersect(self) elif self.type == "range" and other.type == "range": assert isinstance(self.value, tuple) and len(self.value) == 2, ( @@ -139,13 +133,13 @@ def __str__(self) -> str: def _coerce_selector_to_mask( - s: Union[IntSelector, FloatSelector], + s: IntSelector | FloatSelector, series: Any, inclusive_tuple: bool = True, method="exact", ): - from operator import ior from functools import reduce + from operator import ior if isinstance(s, slice): lo = s.start if s.start is not None else -np.inf @@ -178,7 +172,7 @@ def _coerce_selector_to_mask( def _attach_columns( part: pd.DataFrame, - cols_tuple: Tuple[str, ...], + cols_tuple: tuple[str, ...], read_column: Callable[[int, str], npt.NDArray[Any]], metadtypes: Any, ) -> pd.DataFrame: @@ -198,7 +192,7 @@ def _attach_columns( def _load_index_partition( st: int, t: float, - index_cols: Tuple[str, ...], + index_cols: tuple[str, ...], read_column: Callable[[int, str], npt.NDArray[Any]], ) -> pd.DataFrame: cols = {c: read_column(st, c) for c in index_cols} @@ -216,22 +210,22 @@ def _load_index_partition( class ParticleDataset: steps: npt.NDArray[np.int64] times: npt.NDArray[np.float64] - colnames: List[str] + colnames: list[str] _ddf_index: dd.DataFrame def __init__( self, - species: List[int], + species: list[int], steps: npt.NDArray[np.int64], times: npt.NDArray[np.float64], - colnames: List[str], + colnames: list[str], read_column: Callable[ - [int, str], npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]] + [int, str], npt.NDArray[np.float64 | np.int64 | np.float32 | np.int32] ], - fprec: Optional[Type] = np.float32, - selection: Optional[Dict[str, Selection]] = None, - ddf_index: Optional[dd.DataFrame] = None, - partition_lengths: Optional[Sequence[int]] = None, + fprec: type | None = np.float32, + selection: dict[str, Selection] | None = None, + ddf_index: dd.DataFrame | None = None, + partition_lengths: Sequence[int] | None = None, ): self.species = species self.steps = steps @@ -241,7 +235,7 @@ def __init__( self.read_column = read_column self.fprec = fprec self.index_cols = ("id", "sp") - self._all_columns_cache: Optional[List[str]] = None + self._all_columns_cache: list[str] | None = None self._partition_lengths = ( tuple(int(length) for length in partition_lengths) if partition_lengths is not None @@ -280,7 +274,7 @@ def __init__( if ddf_index is not None: self._ddf_index = ddf_index - self._partition_indices: Optional[Tuple[int, ...]] = None + self._partition_indices: tuple[int, ...] | None = None else: self._ddf_index = self._build_index_ddf() self._partition_indices = tuple(range(self._ddf_index.npartitions)) @@ -318,19 +312,19 @@ def nbytes(self) -> int: return int(sum(self._partition_lengths) * bytes_per_row) @property - def columns(self) -> List[str]: + def columns(self) -> list[str]: if self._all_columns_cache is None: self._all_columns_cache = self.colnames return self._all_columns_cache def sel( self, - t: Optional[Union[IntSelector, FloatSelector]] = None, - st: Optional[IntSelector] = None, - sp: Optional[IntSelector] = None, - id: Optional[IntSelector] = None, + t: IntSelector | FloatSelector | None = None, + st: IntSelector | None = None, + sp: IntSelector | None = None, + id: IntSelector | None = None, method: str = "exact", - ) -> "ParticleDataset": + ) -> ParticleDataset: ddf: dd.DataFrame = self._ddf_index new_selection = {k: copy(v) for k, v in self.selection.items()} if st is not None: @@ -381,8 +375,8 @@ def sel( return result def isel( - self, t: Optional[IntSelector] = None, st: Optional[IntSelector] = None - ) -> "ParticleDataset": + self, t: IntSelector | None = None, st: IntSelector | None = None + ) -> ParticleDataset: ddf: dd.DataFrame = self._ddf_index partition_indices = self._partition_indices partition_lengths = self._partition_lengths @@ -479,7 +473,7 @@ def _build_index_ddf(self) -> dd.DataFrame: ddf = cast(dd.DataFrame, dd.from_delayed(delayed_parts, meta=meta)) return ddf - def load(self, cols: Optional[Sequence[str]] = None) -> pd.DataFrame: + def load(self, cols: Sequence[str] | None = None) -> pd.DataFrame: if cols is None: cols = self.columns @@ -543,9 +537,9 @@ def __str__(self) -> str: def spectrum_plot( self, - ax: Optional[maxes.Axes] = None, - bins: Optional[npt.NDArray] = None, - quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, + ax: maxes.Axes | None = None, + bins: npt.NDArray | None = None, + quantity: Callable[[pd.DataFrame], npt.NDArray] | None = None, ): if ax is None: ax = plt.gca() @@ -601,10 +595,10 @@ def _quantity_sph(df: pd.DataFrame): def phase_plot( self, - ax: Optional[maxes.Axes] = None, - x_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, - y_quantity: Optional[Callable[[pd.DataFrame], npt.NDArray]] = None, - xy_bins: Optional[Tuple[npt.NDArray, npt.NDArray]] = None, + ax: maxes.Axes | None = None, + x_quantity: Callable[[pd.DataFrame], npt.NDArray] | None = None, + y_quantity: Callable[[pd.DataFrame], npt.NDArray] | None = None, + xy_bins: tuple[npt.NDArray, npt.NDArray] | None = None, **kwargs: Any, ): if ax is None: diff --git a/nt2/containers/particles.py b/nt2/containers/particles.py index 31a3623..e19c76d 100644 --- a/nt2/containers/particles.py +++ b/nt2/containers/particles.py @@ -1,11 +1,13 @@ -from typing import Any, List, Union, Dict, Set -import numpy.typing as npt +from __future__ import annotations + +from typing import Any import numpy as np +import numpy.typing as npt +from ..utils import CoordinateSystem from .base import BaseContainer from .particle_dataset import ParticleDataset -from ..utils import CoordinateSystem def remap_prtl_quantities_cart(name: str) -> str: @@ -38,14 +40,14 @@ class ParticleContainer(BaseContainer): """Parent class to manage the particles dataframe.""" __particles_defined: bool = False - __particles: Union[ParticleDataset, None] = None + __particles: ParticleDataset | None = None - nonempty_steps: List[int] - attributes: Dict[str, Any] - quantities: List[str] - sp_with_idx: List[int] - sp_without_idx: List[int] - quantity_names_by_step: Dict[int, Set[str]] + nonempty_steps: list[int] + attributes: dict[str, Any] + quantities: list[str] + sp_with_idx: list[int] + sp_without_idx: list[int] + quantity_names_by_step: dict[int, set[str]] def __getstate__(self) -> dict[str, Any]: state = self.__dict__.copy() @@ -128,15 +130,13 @@ def _read_particles(self): quantities = sorted(np.unique([q for qtys in quantities_ for q in qtys])) unique_quantities = sorted( - list( - set( - f"{q}".split("_")[0] - for q in quantities - if not q.startswith("pIDX") and not q.startswith("pRNK") - ) - ) + { + f"{q}".split("_")[0] + for q in quantities + if not q.startswith("pIDX") and not q.startswith("pRNK") + } ) - all_species = sorted(list(set([int(f"{q}".split("_")[1]) for q in quantities]))) + all_species = sorted({int(f"{q}".split("_")[1]) for q in quantities}) sp_with_idx = sorted( [int(f"{q}".split("_")[1]) for q in quantities if f"{q}".startswith("pIDX")] @@ -209,7 +209,7 @@ def particles_defined(self) -> bool: return self.__particles_defined @property - def particles(self) -> Union[ParticleDataset, None]: + def particles(self) -> ParticleDataset | None: """Returns the particles data. Returns @@ -221,7 +221,7 @@ def particles(self) -> Union[ParticleDataset, None]: return self.__particles @property - def attrs(self) -> Dict[str, Any]: + def attrs(self) -> dict[str, Any]: """dict: The attributes of the particles dataframe.""" if self.particles_defined: return self.attributes @@ -251,7 +251,7 @@ def _get_quantity_for_species( read_colname: str, step: int, sp: int, - ) -> npt.NDArray[Union[np.float64, np.int64]]: + ) -> npt.NDArray[np.float64 | np.int64]: if f"{read_colname}_{sp}" in self.quantities: return self.reader.ReadArrayAtTimestep( self.path, "particles", f"{read_colname}_{sp}", step @@ -261,7 +261,7 @@ def _get_quantity_for_species( def _read_column( self, step: int, colname: str - ) -> npt.NDArray[Union[np.float64, np.int64, np.float32, np.int32]]: + ) -> npt.NDArray[np.float64 | np.int64 | np.float32 | np.int32]: read_colname = None if colname == "id": idx = np.concatenate( diff --git a/nt2/containers/spectra.py b/nt2/containers/spectra.py index 68f2148..6add10c 100644 --- a/nt2/containers/spectra.py +++ b/nt2/containers/spectra.py @@ -1,19 +1,38 @@ -from typing import Any, Union, Dict +from __future__ import annotations + +from typing import Any import dask import dask.array as da -import xarray as xr import numpy as np +import xarray as xr from tqdm import tqdm +from ..utils import CoordinateSystem from .base import BaseContainer +def remap_coords_cart(name: str) -> str: + return { + "X1": "x", + "X2": "y", + "X3": "z", + }.get(name, name) + + +def remap_coords_sph(name: str) -> str: + return { + "X1": "r", + "X2": "th", + "X3": "ph", + }.get(name, name) + + class SpectraContainer(BaseContainer): """Parent class to manage the spectra dataframe.""" __spectra_defined: bool = False - __spectra: Union[xr.Dataset, None] = None + __spectra: xr.Dataset | None = None def __init__(self, **kwargs: Any) -> None: super().__init__(category="spectra", **kwargs) @@ -32,7 +51,7 @@ def spectra_defined(self) -> bool: return self.__spectra_defined @property - def spectra(self) -> Union[xr.Dataset, None]: + def spectra(self) -> xr.Dataset | None: """xr.Dataset: The spectra dataframe.""" return self.__spectra @@ -68,24 +87,76 @@ def _read_spectra(self) -> xr.Dataset: spectra_names = self.reader.ReadCategoryNamesAtTimestep( self.path, "spectra", "s", first_step ) - spectra_names = set(s for s in sorted(spectra_names) if s.startswith("sN")) + spectra_names = {s for s in sorted(spectra_names) if s.startswith("sN")} ebin_name = "sEbn" first_spectrum_name = next(iter(spectra_names)) shape = self.reader.ReadArrayShapeExplicitlyAtTimestep( self.path, "spectra", first_spectrum_name, first_step ) - ebins = self.reader.ReadArrayAtTimestep( + energy_binedges = self.reader.ReadArrayAtTimestep( self.path, "spectra", ebin_name, first_step ) + num_spatial_dims = len(shape) - 1 + + x_binedges = [ + self.reader.ReadArrayAtTimestep( + self.path, "spectra", f"sX{i + 1}bn", first_step + ) + for i in range(num_spatial_dims) + ] + + def edges_to_bins(edges: np.ndarray) -> np.ndarray: + diffs = np.diff(edges) + if len(diffs) == 1 or np.isclose( + diffs[1] - diffs[0], diffs[-1] - diffs[-2], atol=1e-2 + ): + return 0.5 * (edges[1:] + edges[:-1]) + else: + return (edges[1:] * edges[:-1]) ** 0.5 + + attributes = self.reader.ReadAttrsAtTimestep( + path=self.path, category="spectra", step=first_step + ) + if self.coordinate_system is None: + if "Coordinates" not in attributes: + raise ValueError("Coordinates not found in attributes for particles.") + if attributes["Coordinates"] in [b"cart", "cart"]: + self.set_coordinate_system(CoordinateSystem.XYZ) + elif attributes["Coordinates"] in [b"sph", "sph", b"qsph", "qsph"]: + self.set_coordinate_system(CoordinateSystem.SPH) + else: + raise NotImplementedError( + f"Coordinate system {attributes['Coordinates']} not supported." + ) + + if self.remap is None or self.remap.get("coords", None) is None: + self.set_remap( + { + "coords": ( + remap_coords_cart + if self.coordinate_system == CoordinateSystem.XYZ + else remap_coords_sph + ), + } + ) + + ebins = edges_to_bins(energy_binedges) + xbins = [edges_to_bins(xb) for xb in x_binedges] - diffs = np.diff(ebins) - if np.isclose(diffs[1] - diffs[0], diffs[-1] - diffs[-2], atol=1e-2): - ebins = 0.5 * (ebins[1:] + ebins[:-1]) + if self.remap is not None and "coords" in self.remap: + new_xbins = {} + for i in range(num_spatial_dims): + new_xbins[self.remap["coords"](f"X{i + 1}")] = xbins[i] + xbins = new_xbins else: - ebins = (ebins[1:] * ebins[:-1]) ** 0.5 + xbins = {f"X{i + 1}": xbins[i] for i in range(num_spatial_dims)} - all_dims = {"t": self.times, "E": ebins} + all_dims = { + "t": self.times, + **xbins, + "E": ebins, + } all_coords = {**all_dims, "s": ("t", self.steps)} attributes = self.reader.ReadAttrsAtTimestep( @@ -131,7 +202,7 @@ def remap_name(name: str) -> str: ) @property - def attrs(self) -> Dict[str, Any]: + def attrs(self) -> dict[str, Any]: """dict: The attributes of the spectra dataframe.""" if self.spectra_defined: return self.spectra.attrs diff --git a/nt2/plotters/annotations.py b/nt2/plotters/annotations.py index 4a768b4..1373ab1 100644 --- a/nt2/plotters/annotations.py +++ b/nt2/plotters/annotations.py @@ -2,11 +2,24 @@ def annotatePulsar( - ax, data, rmax, rstar=1.1, ti=None, time=None, attrs={}, ax_props={}, star_props={} + ax, + data, + rmax, + rstar=1.1, + ti=None, + time=None, + attrs=None, + ax_props=None, + star_props=None, ): import numpy as np - from matplotlib import lines - from matplotlib import patches + from matplotlib import lines, patches + + logger = logging.getLogger(__name__) + + attrs = attrs or {} + ax_props = ax_props or {} + star_props = star_props or {} if ti is None and time is None: raise ValueError("Must provide either ti or time") @@ -21,7 +34,7 @@ def annotatePulsar( ) ) ) is None: - logging.warning( + logger.warning( "No spinup time or spin period found, please specify explicitly as `attrs = {'psr_omega': ..., 'psr_spinup_time': ...}`" ) demo_rotation = False @@ -45,7 +58,7 @@ def annotatePulsar( xy=(0.0, rmax * 0.95), xytext=(0.0, -rmax * 0.95), zorder=4, - arrowprops=dict(arrowstyle="->", color=ax_props.get("color", "k"), lw=0.5), + arrowprops={"arrowstyle": "->", "color": ax_props.get("color", "k"), "lw": 0.5}, ) for i in range(-int(rmax * 0.8) // 2 - 1, int(rmax * 0.8) // 2): if i != -1: diff --git a/nt2/plotters/export.py b/nt2/plotters/export.py index eb7dafd..2c89712 100644 --- a/nt2/plotters/export.py +++ b/nt2/plotters/export.py @@ -1,11 +1,14 @@ -from typing import Any, Callable, Union, Optional, List +from __future__ import annotations + +from typing import Any, Callable + import matplotlib.pyplot as plt def makeFramesAndMovie( name: str, plot: Callable, - times: List[float], + times: list[float], data: Any = None, **kwargs: Any, ) -> bool: @@ -36,7 +39,7 @@ def makeFramesAndMovie( raise ValueError("Failed to make frames") -def makeMovie(**ffmpeg_kwargs: Union[str, int, float]) -> bool: +def makeMovie(**ffmpeg_kwargs: str | float) -> bool: """ Create a movie from frames using the `ffmpeg` command-line tool. @@ -62,9 +65,7 @@ def makeMovie(**ffmpeg_kwargs: Union[str, int, float]) -> bool: """ import subprocess - input_pattern: str = ( - f"{ffmpeg_kwargs.get('input', 'step_')}%0{ffmpeg_kwargs.get('number', 3)}d.{ffmpeg_kwargs.get('extension', 'png')}" - ) + input_pattern: str = f"{ffmpeg_kwargs.get('input', 'step_')}%0{ffmpeg_kwargs.get('number', 3)}d.{ffmpeg_kwargs.get('extension', 'png')}" command = [ ffmpeg_kwargs.get("ffmpeg", "ffmpeg"), @@ -86,7 +87,12 @@ def makeMovie(**ffmpeg_kwargs: Union[str, int, float]) -> bool: ] command = [str(c) for c in command if c is not None] print("Command:\n", " ".join(command)) - result = subprocess.run(command, capture_output=True, text=True) + result = subprocess.run( + command, + capture_output=True, + text=True, + check=False, + ) if result.returncode == 0: print("ffmpeg -- [OK]") @@ -112,11 +118,11 @@ def _plot_and_save(ti: int, t: float, fpath: str, plot: Callable, data: Any) -> def makeFrames( plot: Callable, - times: List[float], + times: list[float], fpath: str, data: Any = None, - num_cpus: Optional[int] = None, -) -> List[bool]: + num_cpus: int | None = None, +) -> list[bool]: """ Create plot frames from a set of timesteps of the same dataset. @@ -160,9 +166,10 @@ def makeFrames( >>> makeFrames(plot_func, range(100), 'output/', num_cpus=16) """ + import os + from loky import get_reusable_executor from tqdm import tqdm - import os os.makedirs(fpath, exist_ok=True) diff --git a/nt2/plotters/inspect.py b/nt2/plotters/inspect.py index 2e64ec5..c4b55d8 100644 --- a/nt2/plotters/inspect.py +++ b/nt2/plotters/inspect.py @@ -1,9 +1,13 @@ -from typing import Any, Callable, Optional, Union, List, Dict, Tuple -import matplotlib.pyplot as plt +from __future__ import annotations + +from typing import Any, Callable + import matplotlib.figure as mfigure +import matplotlib.pyplot as plt import xarray as xr -from nt2.utils import DataIs2DPolar + from nt2.plotters.export import makeFramesAndMovie +from nt2.utils import DataIs2DPolar class ds_accessor: @@ -12,7 +16,7 @@ def __init__(self, xarray_obj: xr.Dataset): def __axes_grid( self, - grouped_fields: Dict[str, List[str]], + grouped_fields: dict[str, list[str]], makeplot: Callable, nrows: int, ncols: int, @@ -20,7 +24,7 @@ def __axes_grid( size: float, aspect: float, **fig_kwargs: Any, - ) -> Tuple[mfigure.Figure, List[plt.Axes]]: + ) -> tuple[mfigure.Figure, list[plt.Axes]]: vpad = fig_kwargs.pop("vpad", 0.5) hpad = fig_kwargs.pop("hpad", 0.5) if aspect > 1: @@ -51,7 +55,7 @@ def __axes_grid( @staticmethod def _fixed_axes_grid_with_cbars( - fields: List[str], + fields: list[str], makeplot: Callable, makecbar: Callable, nrows: int, @@ -61,7 +65,7 @@ def _fixed_axes_grid_with_cbars( aspect: float, cbar_w: float, **fig_kwargs: Any, - ) -> Tuple[mfigure.Figure, List[plt.Axes]]: + ) -> tuple[mfigure.Figure, list[plt.Axes]]: from mpl_toolkits.axes_grid1 import Divider, Size vpad = fig_kwargs.pop("vpad", 0.5) @@ -89,7 +93,7 @@ def _fixed_axes_grid_with_cbars( v += [Size.Fixed(vpad)] divider = Divider(fig, (0, 0, 1, 1), h, v, aspect=False) - axes: List[plt.Axes] = [] + axes: list[plt.Axes] = [] cntr = 0 for i in range(nrows): @@ -117,15 +121,15 @@ def _fixed_axes_grid_with_cbars( def plot( self, - fig: Optional[mfigure.Figure] = None, - name: Optional[str] = None, - skip_fields: Optional[List[str]] = None, - only_fields: Optional[List[str]] = None, - fig_kwargs: Optional[Dict[str, Any]] = None, - plot_kwargs: Optional[Dict[str, Any]] = None, - movie_kwargs: Optional[Dict[str, Any]] = None, - set_aspect: Optional[str] = "equal", - ) -> Union[mfigure.Figure, bool]: + fig: mfigure.Figure | None = None, + name: str | None = None, + skip_fields: list[str] | None = None, + only_fields: list[str] | None = None, + fig_kwargs: dict[str, Any] | None = None, + plot_kwargs: dict[str, Any] | None = None, + movie_kwargs: dict[str, Any] | None = None, + set_aspect: str | None = "equal", + ) -> mfigure.Figure | bool: """ Plots the overview plot for fields at a given time or step (or as a movie). @@ -239,20 +243,20 @@ def plot_func(ti: int, _): @staticmethod def _get_fields_to_plot( - data: xr.Dataset, skip_fields: List[str], only_fields: List[str] - ) -> List[str]: + data: xr.Dataset, skip_fields: list[str], only_fields: list[str] + ) -> list[str]: import re nfields = len(data.data_vars) if nfields > 0: - keys: List[str] = [str(k) for k in data.keys()] + keys: list[str] = [str(k) for k in data] if len(only_fields) == 0: fields_to_plot = [ - f for f in keys if not any([re.match(sf, f) for sf in skip_fields]) + f for f in keys if not any(re.match(sf, f) for sf in skip_fields) ] else: fields_to_plot = [ - f for f in keys if any([re.match(sf, f) for sf in only_fields]) + f for f in keys if any(re.match(sf, f) for sf in only_fields) ] else: fields_to_plot = [] @@ -265,9 +269,9 @@ def _get_fields_to_plot( @staticmethod def _get_fields_minmax( - data: xr.Dataset, fields: List[str] - ) -> Dict[str, Optional[Tuple[float, float]]]: - minmax: Dict[str, Optional[Tuple[float, float]]] = { + data: xr.Dataset, fields: list[str] + ) -> dict[str, tuple[float, float] | None]: + minmax: dict[str, tuple[float, float] | None] = { "E": None, "B": None, "J": None, @@ -304,22 +308,23 @@ def _get_fields_minmax( def plot_frame_1d( self, data: xr.Dataset, - fig: Optional[mfigure.Figure], - skip_fields: List[str], - only_fields: List[str], - fig_kwargs: Dict[str, Any], - plot_kwargs: Dict[str, Any], + fig: mfigure.Figure | None, + skip_fields: list[str], + only_fields: list[str], + fig_kwargs: dict[str, Any], + plot_kwargs: dict[str, Any], ) -> mfigure.Figure: if len(data.dims) != 1: raise ValueError("Pass 1D data; use .sel or .isel to reduce dimension.") - import math, re + import math + import re # count the number of subplots fields_to_plot = self._get_fields_to_plot(data, skip_fields, only_fields) # group fields by their first letter - grouped_fields: Dict[str, List[str]] = {} + grouped_fields: dict[str, list[str]] = {} for f in fields_to_plot: key = f[0] if key not in grouped_fields: @@ -329,8 +334,8 @@ def plot_frame_1d( nplots = len(grouped_fields) aspect = 0.5 - ncols = max(1, int(math.floor(nplots * 1.5 * aspect / (1 + 1.5 * aspect)))) - nrows = max(1, int(math.ceil(nplots / ncols))) + ncols = max(1, math.floor(nplots * 1.5 * aspect / (1 + 1.5 * aspect))) + nrows = max(1, math.ceil(nplots / ncols)) figsize0 = 3.0 @@ -338,9 +343,9 @@ def plot_frame_1d( kwargs = {} for fld in fields_to_plot: kwargs[fld] = {} - for fld_kwargs in plot_kwargs: + for fld_kwargs, val in plot_kwargs.items(): if re.match(fld_kwargs, fld): - kwargs[fld] = {**plot_kwargs[fld_kwargs]} + kwargs[fld] = {**val} break def make_plot(ax: plt.Axes, fld: str): @@ -373,21 +378,23 @@ def make_plot(ax: plt.Axes, fld: str): def plot_frame_2d( self, data: xr.Dataset, - fig: Optional[mfigure.Figure], - skip_fields: List[str], - only_fields: List[str], - fig_kwargs: Dict[str, Any], - plot_kwargs: Dict[str, Any], - set_aspect: Optional[str], + fig: mfigure.Figure | None, + skip_fields: list[str], + only_fields: list[str], + fig_kwargs: dict[str, Any], + plot_kwargs: dict[str, Any], + set_aspect: str | None, ) -> mfigure.Figure: if len(data.dims) != 2: raise ValueError("Pass 2D data; use .sel or .isel to reduce dimension.") x1, x2 = data.dims + import math + import re + import matplotlib.colors as mcolors import numpy as np - import math, re # count the number of subplots fields_to_plot = self._get_fields_to_plot(data, skip_fields, only_fields) @@ -402,8 +409,8 @@ def plot_frame_2d( else: aspect = 1.5 - ncols = max(1, int(math.floor(nfields * 1.5 * aspect / (1 + 1.5 * aspect)))) - nrows = max(1, int(math.ceil(nfields / ncols))) + ncols = max(1, math.floor(nfields * 1.5 * aspect / (1 + 1.5 * aspect))) + nrows = max(1, math.ceil(nfields / ncols)) figsize0 = 3.0 @@ -443,9 +450,9 @@ def plot_frame_2d( "vmax": vmax, } kwargs[fld] = default_kwargs - for fld_kwargs in plot_kwargs: + for fld_kwargs, val in plot_kwargs.items(): if re.match(fld_kwargs, fld): - kwargs[fld] = {**default_kwargs, **plot_kwargs[fld_kwargs]} + kwargs[fld] = {**default_kwargs, **val} break if "norm" in kwargs[fld]: vmin = kwargs[fld].pop("vmin") diff --git a/nt2/plotters/movie.py b/nt2/plotters/movie.py index 9481c4e..6fb0b2c 100644 --- a/nt2/plotters/movie.py +++ b/nt2/plotters/movie.py @@ -1,8 +1,12 @@ -from typing import Any, Optional, Dict +from __future__ import annotations + +from typing import Any + +import xarray as xr + from nt2.plotters.export import ( makeFramesAndMovie, ) -import xarray as xr class accessor: @@ -21,8 +25,8 @@ def __init__(self, xarray_obj: xr.DataArray) -> None: def plot( self, name: str, - movie_kwargs: Dict[str, Any] = {}, - fig_kwargs: Dict[str, Any] = {}, + movie_kwargs: dict[str, Any] | None = None, + fig_kwargs: dict[str, Any] | None = None, aspect_equal: bool = False, **kwargs: Any, ) -> bool: @@ -58,12 +62,16 @@ def plot( import matplotlib.pyplot as plt + movie_kwargs = movie_kwargs or {} + fig_kwargs = fig_kwargs or {} + def plot_func(ti: int, _: Any) -> None: if len(self._obj.isel(t=ti).dims) == 2: if aspect_equal: x1, x2 = self._obj.isel(t=ti).dims - nx1, nx2 = len(self._obj.isel(t=ti)[x1]), len( - self._obj.isel(t=ti)[x2] + nx1, nx2 = ( + len(self._obj.isel(t=ti)[x1]), + len(self._obj.isel(t=ti)[x2]), ) aspect = nx1 / nx2 figsize = fig_kwargs.get("figsize", (6, 4 * aspect)) @@ -75,7 +83,7 @@ def plot_func(ti: int, _: Any) -> None: plt.gca().set_aspect("equal") plt.tight_layout() - num_cpus: Optional[int] = movie_kwargs.pop("num_cpus", None) + num_cpus: int | None = movie_kwargs.pop("num_cpus", None) return makeFramesAndMovie( name=name, data=self._obj, diff --git a/nt2/plotters/particles.py b/nt2/plotters/particles.py index a001e9a..f9557dd 100644 --- a/nt2/plotters/particles.py +++ b/nt2/plotters/particles.py @@ -1,7 +1,8 @@ -import xarray as xr +from __future__ import annotations + import numpy as np import numpy.typing as npt -from typing import Optional, Tuple +import xarray as xr class ds_accessor: @@ -12,10 +13,10 @@ def phaseplot( self, x: str = "x", y: str = "ux", - xbins: Optional[npt.NDArray] = None, - ybins: Optional[npt.NDArray] = None, - xlims: Optional[Tuple[float, float]] = None, - ylims: Optional[Tuple[float, float]] = None, + xbins: npt.NDArray | None = None, + ybins: npt.NDArray | None = None, + xlims: tuple[float, float] | None = None, + ylims: tuple[float, float] | None = None, xnbins: int = 100, ynbins: int = 100, **kwargs, @@ -57,12 +58,12 @@ def phaseplot( -------- >>> ds.phaseplot(x='x', y='ux', xbins=np.linspace(0, 1000, 100), ybins=np.linspace(-5, 5, 50)) """ - assert x in list(self._obj.keys()) and y in list( - self._obj.keys() - ), "x and y must be valid variable names in the dataset" - assert ( - len(self._obj[x].dims) == 1 and len(self._obj[y].dims) == 1 - ), "x and y must be 1D variables" + assert x in list(self._obj.keys()) and y in list(self._obj.keys()), ( + "x and y must be valid variable names in the dataset" + ) + assert len(self._obj[x].dims) == 1 and len(self._obj[y].dims) == 1, ( + "x and y must be 1D variables" + ) assert "t" not in self._obj.dims, "Dataset must not have time dimension" import matplotlib.pyplot as plt diff --git a/nt2/plotters/polar.py b/nt2/plotters/polar.py index a9dfbeb..8488cd0 100644 --- a/nt2/plotters/polar.py +++ b/nt2/plotters/polar.py @@ -1,5 +1,8 @@ +from __future__ import annotations + +from typing import Any + import numpy as np -from typing import Any, Dict from nt2.utils import DataIs2DPolar @@ -176,7 +179,7 @@ def fieldlines(self, fr, fth, start_points, **kwargs): fxs = self._obj[fr] * np.sin(ths) + self._obj[fth] * np.cos(ths) fys = self._obj[fr] * np.cos(ths) - self._obj[fth] * np.sin(ths) - props: Dict[str, Any] = { + props: dict[str, Any] = { "method": "nearest", "bounds_error": False, "fill_value": 0, @@ -188,9 +191,10 @@ def fieldlines(self, fr, fth, start_points, **kwargs): ] def _fieldline(self, interp_fx, interp_fy, r_th_start, **kwargs): - import numpy as np from copy import copy + import numpy as np + direction = kwargs.pop("direction", "both") stopWhen = kwargs.pop("stopWhen", lambda _, __: False) ds = kwargs.pop("ds", 0.1) @@ -292,10 +296,9 @@ def pcolor(self, **kwargs) -> Any: Additional keyword arguments are passed to `pcolormesh`. """ - import matplotlib.pyplot as plt - from matplotlib import colors - from matplotlib import tri import matplotlib as mpl + import matplotlib.pyplot as plt + from matplotlib import colors, tri from mpl_toolkits.axes_grid1 import make_axes_locatable ax = kwargs.pop("ax", plt.gca()) @@ -434,6 +437,7 @@ def contour(self, **kwargs): """ import warnings + import matplotlib.pyplot as plt ax = kwargs.pop("ax", plt.gca()) diff --git a/nt2/readers/adios2.py b/nt2/readers/adios2.py index f63d202..5086793 100644 --- a/nt2/readers/adios2.py +++ b/nt2/readers/adios2.py @@ -1,6 +1,8 @@ -from typing import Any, List, Dict, Tuple, Set +from __future__ import annotations import sys +from typing import Any + from tqdm import tqdm if sys.version_info >= (3, 12): @@ -11,15 +13,15 @@ def override(method): return method -import re import os -import numpy as np -import numpy.typing as npt +import re import adios2 as bp +import numpy as np +import numpy.typing as npt -from nt2.utils import Format, Layout from nt2.readers.base import BaseReader +from nt2.utils import Format, Layout class Reader(BaseReader): @@ -42,9 +44,9 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: - variables: List[float] = [] + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: + variables: list[float] = [] for filename in tqdm( valid_files, desc=f"Reading {category} {varname}", @@ -52,8 +54,8 @@ def ReadPerTimestepVariable( leave=False, ): with bp.FileReader(os.path.join(path, category, filename)) as f: - avail: Dict[str, Any] = f.available_variables() - vars: List[str] = list(avail.keys()) + avail: dict[str, Any] = f.available_variables() + vars: list[str] = list(avail.keys()) if varname in vars: var = f.inquire_variable(varname) if var is not None: @@ -71,10 +73,10 @@ def ReadPerTimestepVariables( self, path: str, category: str, - varnames: List[str], - newnames: List[str], - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: + varnames: list[str], + newnames: list[str], + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: variables = {newname: [] for newname in newnames} for filename in tqdm( valid_files, @@ -83,8 +85,8 @@ def ReadPerTimestepVariables( leave=False, ): with bp.FileReader(os.path.join(path, category, filename)) as f: - avail: Dict[str, Any] = f.available_variables() - vars: List[str] = list(avail.keys()) + avail: dict[str, Any] = f.available_variables() + vars: list[str] = list(avail.keys()) for varname, newname in zip(varnames, newnames): if varname in vars: var = f.inquire_variable(varname) @@ -95,17 +97,19 @@ def ReadPerTimestepVariables( f"{varname} is not a variable in the BP file {filename}" ) else: - raise ValueError(f"{varname} not found in the BP file {filename}") + raise ValueError( + f"{varname} not found in the BP file {filename}" + ) return {newname: np.array(variables[newname]) for newname in newnames} @override def ReadParticleCountsAtTimestep( - self, path: str, step: int, species: List[int] - ) -> Dict[int, int]: + self, path: str, step: int, species: list[int] + ) -> dict[int, int]: """Read all per-species counts from one BP file's metadata.""" with bp.FileReader(self.FullPath(path, "particles", step)) as f: available = f.available_variables() - counts: Dict[int, int] = {} + counts: dict[int, int] = {} for sp in species: name = f"pX1_{sp}" var = f.inquire_variable(name) if name in available else None @@ -118,11 +122,11 @@ def ReadEdgeCoordsAtTimestep( self, path: str, step: int, - ) -> Dict[str, Any]: - dct: Dict[str, npt.NDArray[Any]] = {} + ) -> dict[str, Any]: + dct: dict[str, npt.NDArray[Any]] = {} with bp.FileReader(self.FullPath(path, "fields", step)) as f: - avail: Dict[str, Any] = f.available_variables() - vars: List[str] = list(avail.keys()) + avail: dict[str, Any] = f.available_variables() + vars: list[str] = list(avail.keys()) for var in vars: if var.startswith("X") and var.endswith("e"): var_obj = f.inquire_variable(var) @@ -136,7 +140,7 @@ def ReadAttrsAtTimestep( path: str, category: str, step: int, - ) -> Dict[str, Any]: + ) -> dict[str, Any]: with bp.FileReader(self.FullPath(path, category, step)) as f: return {k: f.read_attribute(k) for k in f.available_attributes()} @@ -168,9 +172,9 @@ def ReadCategoryNamesAtTimestep( category: str, prefix: str, step: int, - ) -> Set[str]: + ) -> set[str]: with bp.FileReader(self.FullPath(path, category, step)) as f: - keys: List[str] = f.available_variables() + keys: list[str] = f.available_variables() return set( filter( lambda c: c.startswith(prefix), @@ -181,7 +185,7 @@ def ReadCategoryNamesAtTimestep( @override def ReadArrayShapeAtTimestep( self, path: str, category: str, quantity: str, step: int - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: with bp.FileReader(filename := self.FullPath(path, category, step)) as f: if quantity in f.available_variables(): var = f.inquire_variable(quantity) @@ -199,7 +203,7 @@ def ReadArrayShapeAtTimestep( @override def ReadArrayShapeExplicitlyAtTimestep( self, path: str, category: str, quantity: str, step: int - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: with bp.FileReader(filename := self.FullPath(path, category, step)) as f: if quantity in f.available_variables(): var = f.inquire_variable(quantity) @@ -217,7 +221,7 @@ def ReadArrayShapeExplicitlyAtTimestep( @override def ReadFieldCoordsAtTimestep( self, path: str, step: int - ) -> Dict[str, npt.NDArray[Any]]: + ) -> dict[str, npt.NDArray[Any]]: with bp.FileReader(filename := self.FullPath(path, "fields", step)) as f: def get_coord(c: str) -> npt.NDArray[Any]: @@ -227,13 +231,13 @@ def get_coord(c: str) -> npt.NDArray[Any]: else: raise ValueError(f"Field {c} is not a group in the {filename}") - keys: List[str] = list(f.available_variables()) + keys: list[str] = list(f.available_variables()) return {c: get_coord(c) for c in keys if re.match(r"^X[1|2|3]$", c)} @override def ReadFieldLayoutAtTimestep(self, path: str, step: int) -> Layout: with bp.FileReader(filename := self.FullPath(path, "fields", step)) as f: - attrs: Dict[str, Any] = f.available_attributes() + attrs: dict[str, Any] = f.available_attributes() keys = list(attrs.keys()) if "LayoutRight" not in keys: raise ValueError(f"LayoutRight attribute not found in the {filename}") diff --git a/nt2/readers/base.py b/nt2/readers/base.py index bee5349..501e0a7 100644 --- a/nt2/readers/base.py +++ b/nt2/readers/base.py @@ -1,8 +1,10 @@ -from concurrent.futures import as_completed -from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union +from __future__ import annotations + +import logging import os import re -import logging +from concurrent.futures import as_completed +from typing import Any, Callable import numpy.typing as npt from loky import get_reusable_executor @@ -17,8 +19,8 @@ def _check_file(enter_file: Callable[[str], Any], filename: str) -> None: def _get_field_shapes( - reader: "BaseReader", path: str, step: int -) -> Dict[str, Tuple[int, ...]]: + reader: BaseReader, path: str, step: int +) -> dict[str, tuple[int, ...]]: names = reader.ReadCategoryNamesAtTimestep( path=path, category="fields", @@ -36,7 +38,7 @@ def _get_field_shapes( } -def _verify_particle_shapes(reader: "BaseReader", path: str, step: int) -> None: +def _verify_particle_shapes(reader: BaseReader, path: str, step: int) -> None: prtl_species = reader.ReadParticleSpeciesAtTimestep(path=path, step=step) quantities = reader.ReadCategoryNamesAtTimestep( path=path, @@ -44,7 +46,7 @@ def _verify_particle_shapes(reader: "BaseReader", path: str, step: int) -> None: prefix="p", step=step, ) - quantities = set(q.split("_")[0] for q in quantities if q.startswith("p")) + quantities = {q.split("_")[0] for q in quantities if q.startswith("p")} for species in prtl_species: shape = None for quantity in quantities: @@ -69,7 +71,7 @@ class BaseReader: """ - skipped_files: List[str] + skipped_files: list[str] def __init__(self) -> None: """Initializer for the BaseReader class.""" @@ -109,8 +111,8 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: """Read a variable at each timestep and return a dictionary with the new name. Parameters @@ -138,10 +140,10 @@ def ReadPerTimestepVariables( self, path: str, category: str, - varnames: List[str], - newnames: List[str], - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: + varnames: list[str], + newnames: list[str], + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: """Read multiple variables at each timestep and return a dictionary with the new names. Parameters @@ -169,15 +171,15 @@ def ReadParticleCountsAtTimestep( self, path: str, step: int, - species: List[int], - ) -> Dict[int, int]: + species: list[int], + ) -> dict[int, int]: """Return particle counts by species without reading particle arrays. Readers may override this method to collect all counts while opening the timestep only once. The default implementation uses array-shape metadata and is kept for third-party readers. """ - counts: Dict[int, int] = {} + counts: dict[int, int] = {} for sp in species: try: counts[sp] = int( @@ -197,7 +199,7 @@ def ReadAttrsAtTimestep( path: str, category: str, step: int, - ) -> Dict[str, Any]: + ) -> dict[str, Any]: """Read the attributes of a given timestep. Parameters @@ -221,7 +223,7 @@ def ReadEdgeCoordsAtTimestep( self, path: str, step: int, - ) -> Dict[str, npt.NDArray[Any]]: + ) -> dict[str, npt.NDArray[Any]]: """Read the coordinates of cell edges at a given timestep. Parameters @@ -273,7 +275,7 @@ def ReadCategoryNamesAtTimestep( category: str, prefix: str, step: int, - ) -> Set[str]: + ) -> set[str]: """Read the names of the variables in a given category and timestep. Parameters @@ -295,7 +297,7 @@ def ReadCategoryNamesAtTimestep( """ raise NotImplementedError("ReadCategoryNamesAtTimestep is not implemented") - def ReadParticleSpeciesAtTimestep(self, path: str, step: int) -> Set[int]: + def ReadParticleSpeciesAtTimestep(self, path: str, step: int) -> set[int]: """Read the particle species indices at a given timestep. Parameters @@ -311,10 +313,10 @@ def ReadParticleSpeciesAtTimestep(self, path: str, step: int) -> Set[int]: A set of particle species indices at a given timestep. """ - return set( + return { int(f.split("_")[1]) for f in self.ReadCategoryNamesAtTimestep(path, "particles", "p", step) - ) + } def ReadArrayShapeAtTimestep( self, @@ -322,7 +324,7 @@ def ReadArrayShapeAtTimestep( category: str, quantity: str, step: int, - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: """Read the shape of an array at a given timestep. Parameters @@ -350,7 +352,7 @@ def ReadArrayShapeExplicitlyAtTimestep( category: str, quantity: str, step: int, - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: """Read the shape of an array at a given timestep, without relying on metadata. Parameters @@ -378,7 +380,7 @@ def ReadFieldCoordsAtTimestep( self, path: str, step: int, - ) -> Dict[str, npt.NDArray[Any]]: + ) -> dict[str, npt.NDArray[Any]]: """Read the coordinates of the fields at a given timestep. Parameters @@ -419,7 +421,7 @@ def ReadFieldLayoutAtTimestep(self, path: str, step: int) -> Layout: # # # # # # # # # # # # # # # # # # # # # # # # @staticmethod - def CategoryFiles(path: str, category: str, format: str) -> List[str]: + def CategoryFiles(path: str, category: str, format: str) -> list[str]: """Get the list of files in a given category and format. Parameters @@ -442,6 +444,8 @@ def CategoryFiles(path: str, category: str, format: str) -> List[str]: If no files are found. """ + if not os.path.exists(os.path.join(path, category)): + return [] files = [ f for f in os.listdir(os.path.join(path, category)) @@ -474,72 +478,13 @@ def FullPath(self, path: str, category: str, step: int) -> str: path, category, f"{category}.{step:08d}.{self.format.value}" ) - # def GetValidSteps( - # self, - # path: str, - # category: str, - # num_cpus: Optional[int] = None, - # ) -> List[int]: - # """Get valid timesteps (sorted) in a given path and category. - - # Parameters - # ---------- - # path : str - # The path to the files. - # category : str - # The category of the files. - # num_cpus : Optional[int] - # The number of CPU cores to use for parallel processing. - - # Returns - # ------- - # list[int] - # A list of valid timesteps in the given path and category. - - # """ - # category_files = BaseReader.CategoryFiles( - # path=path, - # category=category, - # format=self.format.value, - # ) - # num_cpus = num_cpus if num_cpus is not None else (os.cpu_count() or 1) - # executor = get_reusable_executor(max_workers=num_cpus) - # futures = { - # executor.submit( - # _check_file, - # self.EnterFile, - # os.path.join(path, category, filename), - # ): filename - # for filename in category_files - # } - - # steps: List[int] = [] - # for future in tqdm( - # as_completed(futures), - # total=len(futures), - # desc=f"getting valid steps for {category}", - # leave=False, - # ): - # filename = futures[future] - # try: - # future.result() - # steps.append(int(filename.split(".")[1])) - # except OSError: - # if filename not in self.skipped_files: - # self.skipped_files.append(filename) - # logging.warning(f"Could not read {filename}, skipping it") - # except Exception as e: - # raise e - # steps.sort() - # return steps - def GetValidFilesAndSteps( self, path: str, category: str, - steprange: Optional[Tuple[Union[int, None], Union[int, None]]] = None, - num_cpus: Optional[int] = None, - ) -> Tuple[List[str], List[int]]: + steprange: tuple[int | None, int | None] | None = None, + num_cpus: int | None = None, + ) -> tuple[list[str], list[int]]: """Get valid files (sorted by timestep) and steps in a given path and category. Parameters @@ -548,9 +493,9 @@ def GetValidFilesAndSteps( The path to the files. category : str The category of the files. - steprange : Optional[tuple[int | None, int | None]] + steprange : tuple[int | None, int | None] | None The range of timesteps to be considered. If None, all timesteps are considered. - num_cpus : Optional[int] + num_cpus : int | None The number of CPU cores to use for parallel processing. Returns @@ -574,9 +519,7 @@ def is_inrange(filename: str) -> bool: start, end = steprange if start is not None and step < start: return False - if end is not None and step >= end: - return False - return True + return not (end is not None and step >= end) futures = { executor.submit( @@ -587,9 +530,10 @@ def is_inrange(filename: str) -> bool: for filename in category_files if is_inrange(filename) } + logger = logging.getLogger(__name__) - files: List[str] = [] - steps: List[int] = [] + files: list[str] = [] + steps: list[int] = [] for future in tqdm( as_completed(futures), total=len(futures), @@ -604,9 +548,9 @@ def is_inrange(filename: str) -> bool: except OSError: if filename not in self.skipped_files: self.skipped_files.append(filename) - logging.warning(f"Could not read {filename}, skipping it") - except Exception as e: - raise e + logger.warning(f"Could not read {filename}, skipping it") + except Exception: + raise files.sort(key=lambda x: int(x.split(".")[1])) steps.sort() return (files, steps) @@ -616,8 +560,8 @@ def VerifySameCategoryNames( path: str, category: str, prefix: str, - valid_steps: List[int], - num_cpus: Optional[int] = None, + valid_steps: list[int], + num_cpus: int | None = None, ): """Verify that all files in a given category have the same names. @@ -631,7 +575,7 @@ def VerifySameCategoryNames( The prefix of the variables to be read. valid_steps : list[int] The valid timesteps to be checked. - num_cpus : Optional[int] + num_cpus : int | None The number of CPU cores to use for parallel processing. Raises @@ -673,8 +617,8 @@ def VerifySameCategoryNames( def VerifySameFieldShapes( self, path: str, - valid_steps: List[int], - num_cpus: Optional[int] = None, + valid_steps: list[int], + num_cpus: int | None = None, ): """Verify that all fields in a given path have the same shape. @@ -684,7 +628,7 @@ def VerifySameFieldShapes( The path to the files. valid_steps : list[int] The valid timesteps to be checked. - num_cpus : Optional[int] + num_cpus : int | None The number of CPU cores to use for parallel processing. Raises @@ -723,8 +667,8 @@ def VerifySameFieldShapes( def VerifySameFieldLayouts( self, path: str, - valid_steps: List[int], - num_cpus: Optional[int] = None, + valid_steps: list[int], + num_cpus: int | None = None, ): """Verify that all timesteps in a given path have the same layout. @@ -734,7 +678,7 @@ def VerifySameFieldLayouts( The path to the files. valid_steps : list[int] The valid timesteps to be checked. - num_cpus : Optional[int] + num_cpus : int | None The number of CPU cores to use for parallel processing. Raises @@ -774,8 +718,8 @@ def VerifySameFieldLayouts( def VerifySameParticleShapes( self, path: str, - valid_steps: List[int], - num_cpus: Optional[int] = None, + valid_steps: list[int], + num_cpus: int | None = None, ): """Verify that all particle quantities in a given path have the same shape at specific timesteps. @@ -785,7 +729,7 @@ def VerifySameParticleShapes( The path to the files. valid_steps : list[int] The valid timesteps to be checked. - num_cpus : Optional[int] + num_cpus : int | None The number of CPU cores to use for parallel processing. Raises @@ -808,7 +752,7 @@ def VerifySameParticleShapes( ): future.result() - def DefinesCategory(self, path: str, category: str, valid_files: List[str]) -> bool: + def DefinesCategory(self, path: str, category: str, valid_files: list[str]) -> bool: """Check whether a given category is defined in the path. Parameters diff --git a/nt2/readers/hdf5.py b/nt2/readers/hdf5.py index 4c24226..ae82e36 100644 --- a/nt2/readers/hdf5.py +++ b/nt2/readers/hdf5.py @@ -1,8 +1,8 @@ from __future__ import annotations -from typing import Any, TYPE_CHECKING, List, Dict, Tuple, Set - import sys +from typing import TYPE_CHECKING, Any + from tqdm import tqdm if sys.version_info >= (3, 12): @@ -13,8 +13,9 @@ def override(method): return method -import re import os +import re + import numpy as np import numpy.typing as npt @@ -26,8 +27,8 @@ def override(method): if TYPE_CHECKING: import h5py as _h5py -from nt2.utils import Format, Layout from nt2.readers.base import BaseReader +from nt2.utils import Format, Layout def _require_h5py(): @@ -41,9 +42,9 @@ def _require_h5py(): class Reader(BaseReader): @staticmethod - def __extract_step0(f: "_h5py.File") -> "_h5py.Group": + def __extract_step0(f: _h5py.File) -> _h5py.Group: h5 = _require_h5py() - if "Step0" in f.keys(): + if "Step0" in f: f0 = f["Step0"] if isinstance(f0, h5.Group): return f0 @@ -61,7 +62,7 @@ def format(self) -> Format: @override def EnterFile( filename: str, - ) -> "_h5py.File": + ) -> _h5py.File: h5 = _require_h5py() return h5.File(filename, "r") @@ -72,9 +73,9 @@ def ReadPerTimestepVariable( category: str, varname: str, newname: str, - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: - variables: List[Any] = [] + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: + variables: list[Any] = [] h5 = _require_h5py() for filename in tqdm( valid_files, @@ -84,7 +85,7 @@ def ReadPerTimestepVariable( ): with h5.File(os.path.join(path, category, filename), "r") as f: f0 = Reader.__extract_step0(f) - if varname in f0.keys(): + if varname in f0: var = f0[varname] if isinstance(var, h5.Dataset): variables.append(var[()]) @@ -102,10 +103,10 @@ def ReadPerTimestepVariables( self, path: str, category: str, - varnames: List[str], - newnames: List[str], - valid_files: List[str], - ) -> Dict[str, npt.NDArray[Any]]: + varnames: list[str], + newnames: list[str], + valid_files: list[str], + ) -> dict[str, npt.NDArray[Any]]: variables = {newname: [] for newname in newnames} h5 = _require_h5py() for filename in tqdm( @@ -117,7 +118,7 @@ def ReadPerTimestepVariables( with h5.File(os.path.join(path, category, filename), "r") as f: f0 = Reader.__extract_step0(f) for varname, newname in zip(varnames, newnames): - if varname in f0.keys(): + if varname in f0: var = f0[varname] if isinstance(var, h5.Dataset): variables[newname].append(var[()]) @@ -134,8 +135,8 @@ def ReadPerTimestepVariables( @override def ReadParticleCountsAtTimestep( - self, path: str, step: int, species: List[int] - ) -> Dict[int, int]: + self, path: str, step: int, species: list[int] + ) -> dict[int, int]: """Read all per-species counts from one HDF5 file's metadata.""" h5 = _require_h5py() with h5.File(self.FullPath(path, "particles", step), "r") as f: @@ -153,7 +154,7 @@ def ReadAttrsAtTimestep( path: str, category: str, step: int, - ) -> Dict[str, Any]: + ) -> dict[str, Any]: h5 = _require_h5py() with h5.File(self.FullPath(path, category, step), "r") as f: return {k: v for k, v in f.attrs.items()} @@ -163,7 +164,7 @@ def ReadEdgeCoordsAtTimestep( self, path: str, step: int, - ) -> Dict[str, npt.NDArray[Any]]: + ) -> dict[str, npt.NDArray[Any]]: h5 = _require_h5py() with h5.File(self.FullPath(path, "fields", step), "r") as f: f0 = Reader.__extract_step0(f) @@ -180,7 +181,7 @@ def ReadArrayAtTimestep( h5 = _require_h5py() with h5.File(filename := self.FullPath(path, category, step), "r") as f: f0 = Reader.__extract_step0(f) - if quantity in f0.keys(): + if quantity in f0: var = f0[quantity] if isinstance(var, h5.Dataset): return np.array(var[:]) @@ -196,21 +197,21 @@ def ReadCategoryNamesAtTimestep( category: str, prefix: str, step: int, - ) -> Set[str]: + ) -> set[str]: h5 = _require_h5py() with h5.File(self.FullPath(path, category, step), "r") as f: f0 = Reader.__extract_step0(f) - keys: List[str] = list(f0.keys()) - return set(c for c in keys if c.startswith(prefix)) + keys: list[str] = list(f0.keys()) + return {c for c in keys if c.startswith(prefix)} @override def ReadArrayShapeAtTimestep( self, path: str, category: str, quantity: str, step: int - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: h5 = _require_h5py() with h5.File(filename := self.FullPath(path, category, step), "r") as f: f0 = Reader.__extract_step0(f) - if quantity in f0.keys(): + if quantity in f0: var = f0[quantity] if isinstance(var, h5.Dataset): return var.shape @@ -226,11 +227,11 @@ def ReadArrayShapeAtTimestep( @override def ReadArrayShapeExplicitlyAtTimestep( self, path: str, category: str, quantity: str, step: int - ) -> Tuple[int, ...]: + ) -> tuple[int, ...]: h5 = _require_h5py() with h5.File(self.FullPath(path, category, step), "r") as f: f0 = Reader.__extract_step0(f) - if quantity in f0.keys(): + if quantity in f0: var = f0[quantity] if isinstance(var, h5.Dataset) and (read := var[:]) is not None: return read.shape @@ -246,7 +247,7 @@ def ReadArrayShapeExplicitlyAtTimestep( @override def ReadFieldCoordsAtTimestep( self, path: str, step: int - ) -> Dict[str, npt.NDArray[Any]]: + ) -> dict[str, npt.NDArray[Any]]: h5 = _require_h5py() with h5.File(filename := self.FullPath(path, "fields", step), "r") as f: f0 = Reader.__extract_step0(f) @@ -256,9 +257,9 @@ def get_coord(c: str) -> Any: if isinstance(f0_c, h5.Dataset): return f0_c[:] else: - raise ValueError(f"Field {c} is not a group in the {filename}") + raise TypeError(f"Field {c} is not a group in the {filename}") - keys: List[str] = list(f0.keys()) + keys: list[str] = list(f0.keys()) return {c: get_coord(c) for c in keys if re.match(r"^X[1|2|3]$", c)} @override diff --git a/nt2/tests/test_cli.py b/nt2/tests/test_cli.py index 49a00fe..f43a9da 100644 --- a/nt2/tests/test_cli.py +++ b/nt2/tests/test_cli.py @@ -127,5 +127,5 @@ def field_data(data_path): result = runner.invoke(app, ["plot", path, "--what", "fields", "--isel", "t=0"]) assert result.exit_code == 1 - assert isinstance(result.exception, FileNotFoundError) - assert str(result.exception).endswith("/fields'") + assert isinstance(result.exception, ValueError) + assert "Fields are not defined" in str(result.exception) diff --git a/nt2/tests/test_containers.py b/nt2/tests/test_containers.py index 5994100..a770a40 100644 --- a/nt2/tests/test_containers.py +++ b/nt2/tests/test_containers.py @@ -144,7 +144,7 @@ def field_remap(Fold: str): for container in [Data, FieldContainer] ], ) -def test_missing_field_output_raises_file_not_found( +def test_missing_field_output_is_undefined( test, field_container: Union[Type[Data], Type[FieldContainer]] ): reader: BaseReader = test["reader"]() @@ -155,16 +155,20 @@ def test_missing_field_output_raises_file_not_found( "num_cpus": 1, } - with pytest.raises(FileNotFoundError, match="/fields"): - if field_container is Data: - field_container( - **kwargs, - fields=True, - particles=False, - spectra=False, - ) - else: - field_container(**kwargs, coord_system=None) + if field_container is Data: + container = field_container( + **kwargs, + fields=True, + particles=False, + spectra=False, + ) + assert not container.fields_defined, "Fields are unexpectedly defined" + with pytest.raises(ValueError, match="Fields are not defined"): + _ = container.fields + else: + container = field_container(**kwargs, coord_system=None) + assert not container.fields_defined, "Fields are unexpectedly defined" + assert container.fields is None, "Fields are not None" @pytest.mark.parametrize( diff --git a/nt2/utils.py b/nt2/utils.py index f6d7900..8509d71 100644 --- a/nt2/utils.py +++ b/nt2/utils.py @@ -1,10 +1,12 @@ -from typing import Union, Literal -from enum import Enum +from __future__ import annotations + +import inspect import os import re -import inspect -import numpy as np +from enum import Enum +from typing import Literal +import numpy as np import xarray as xr @@ -77,7 +79,7 @@ def DetermineDataFormat(path: str) -> Format: raise ValueError("Could not determine file format.") -def ToHumanReadable(num: Union[float, int], suffix: str = "B") -> str: +def ToHumanReadable(num: float, suffix: str = "B") -> str: """Convert a number to a human-readable format with SI prefixes. Parameters From 7dddd56012e4d128bcfec30505743dd395eac066 Mon Sep 17 00:00:00 2001 From: haykh Date: Tue, 15 Sep 2026 17:21:02 -0400 Subject: [PATCH 13/14] py 3.9 incompat rm --- nt2/containers/particle_dataset.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/nt2/containers/particle_dataset.py b/nt2/containers/particle_dataset.py index 91bd675..70cdaf6 100644 --- a/nt2/containers/particle_dataset.py +++ b/nt2/containers/particle_dataset.py @@ -1,5 +1,6 @@ from __future__ import annotations +import sys from collections.abc import Sequence from copy import copy from typing import ( @@ -19,8 +20,12 @@ from dask.delayed import Delayed from dask.optimization import cull -IntSelector = int | Sequence[int] | slice | tuple[int, int] -FloatSelector = float | slice | Sequence[float] | tuple[float, float] +if sys.version_info >= (3, 10): + IntSelector = int | Sequence[int] | slice | tuple[int, int] + FloatSelector = float | slice | Sequence[float] | tuple[float, float] +else: + IntSelector = Any + FloatSelector = Any def _cull_dataframe_graph(ddf: dd.DataFrame) -> dd.DataFrame: From ba1aeb3ac1fbaff260fa4b893138cefa3809bc1a Mon Sep 17 00:00:00 2001 From: haykh Date: Tue, 15 Sep 2026 18:01:36 -0400 Subject: [PATCH 14/14] py3.9 support for cli app --- nt2/cli/main.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/nt2/cli/main.py b/nt2/cli/main.py index ff4f6c7..718fe99 100644 --- a/nt2/cli/main.py +++ b/nt2/cli/main.py @@ -1,7 +1,5 @@ -from __future__ import annotations - import os -from typing import Annotated +from typing import Annotated, Dict, Union import matplotlib.pyplot as plt import typer @@ -28,11 +26,11 @@ def check_path(path: str) -> str: return path -def check_sel(sel: str) -> dict[str, float | slice]: +def check_sel(sel: str) -> Dict[str, Union[float, slice]]: if sel == "": return {} sel_list = sel.strip().split(";") - sel_dict: dict[str, float | slice] = {} + sel_dict: Dict[str, Union[float, slice]] = {} for _, s in enumerate(sel_list): coord, arg = s.strip().split("=", 1) coord = coord.strip() @@ -136,10 +134,10 @@ def plot( if sel != {}: slices = {} sels = {} - slices: dict[str, slice | float] = { + slices: Dict[str, Union[slice, float]] = { k: v for k, v in sel.items() if isinstance(v, slice) } - sels: dict[str, slice | float] = { + sels: Dict[str, Union[slice, float]] = { k: v for k, v in sel.items() if not isinstance(v, slice) } d = d.sel(**sels, method="nearest")