From 315677ee26eab31862f0bb898add0c6e8c05a81d Mon Sep 17 00:00:00 2001 From: svquick Date: Wed, 14 Jan 2026 18:10:43 +0100 Subject: [PATCH] add unit- and integrationtest for selected diffusion2d methods --- coverage-report.pdf | Bin 0 -> 45085 bytes diffusion2d.py | 10 ++++- requirements.txt | 3 ++ tests/integration/test_diffusion2d.py | 25 +++++++++++- tests/unit/test_diffusion2d_functions.py | 50 ++++++++++++++++++++++- tox.toml | 13 ++++++ 6 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 coverage-report.pdf create mode 100644 requirements.txt create mode 100644 tox.toml diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..20adb062397ddf1ae3e5a39f8eb2ea264e04aa89 GIT binary patch literal 45085 zcmd431yo&2wl$1~;O=%HxO4E}?hssp1b2505Zv7*K(JuJg1fsz2<{M^-~{*&h-$nNy~X;jsxAVE(gW4$ob9Qrm|O;w)Dk4W{2UI zVI>FqtT!_+XNNoA;CY{`Cd!OB8|y$c)EOQ&&YejM{P?^nd>##Hj{rZ>GmLqqTW8-g@HbLuY8_UCYUl0d3ikF>Qj!I8r?wgMLo|$C_Z(Dg7 zW_y>%i-aQ`X4D#pp5Au^E1WS6Im}i$;=Z4#J?#fb7anNYXrYLgrnbDsvJgA7+b5j3 zlM^8noxAwaNJso#2Z?NnefIL8yi9%Ra(zlC+Y0?{j86ICyqcPtKD?UEeCy}N+FBQ4 z#;-+-i=K6+%@!`&v)a{fEz0l5er&!cWzmK8^$5g`I4Dv zot%Lf?Plk|Lc#+HKI=npgL&((#Gee7yiMehCc6z&3x?Zh_NlVRF{~3})1<{=9q21r zVs9&uKf(zw3!#y|&tH|#0ZrOEAG8SGxn=7UO#8!Lkg-g@4&tJFg*Xn!G+VFTbQlPw z{sALcHyrkdsP!19UlLo2fq-hs`(ROk0YA9HIHm-KE#&U)C#(thA(y*-)GPtg3)J}z zUnn%mWUXyVerTI<|NxqP20WLs(FEc8SRFL6Y`zYIDUs&=$PeFY3 zI>po0Z)2mIiVY2;lh^39eIdtym1~4&as!g#eAtqFl;xU6r;wR{exp6l4nd1i@AOLU z#J*zAB<)9oYxD;-lR_*zYDm=sI1E5a9B z=7d5wGt)MLKShN#7qEQ5q}`d- z4Sf00rqy$?<%W>_d=`0o07$blhol(6weObR*FRN&A-DQsx|o>S;~HSZ=v22SW^h8_ zi_pAH$>|_p^L!rS``}t?OnR6#U9`qh%?mbkT~4q%OiTo@>zXf(-l_1UlLr5ClsY4X>+(4>=fybB7 z?f6iZ+-Y?I$lEU*z}{m`ChC&Ig1!6d?e~d{n2d5_{h^Ys3AH2Eva?q5^k%+LUyU$ z$O46D2Kw2POnm3qCv4}~vOA2<2cjP5qwK6`@n0OtPmW?DjZ=0}$=V7s6y=2{g;{om zlpu-jwJRlbF4IzNtXmt*${9`VosSqb=W82}*5PI4go`U1uW2qgL#ll?coYiF4x6FO zHvkb>`y8yALh&`(lloZ#%I*;&a|>q83?GuA(HH=&i{nmn&X-$zX<=e~q@SSJCgQr~ zms?Dx$;}KdPqtAzfM(;Q*Cz4C!R9YgUMgvaOvK9WA`@r3Yksk_cHu8_L6{bJq5W3A z(Yl0;>lqw8>TXM5jA$^w3ud1Zil$=AZc#g>S;2{1mHP5~jgQz=vS5~k9E4)2O%RP1 zcGBO}&^|MC(kdX37)#ZqL8Op^zZnQCWNHeMW5UE?*c_Mak;P*f zH4@VkWr(Nn!@p2gloA|b^a@)3&>8_j?u%tf39b2DMUoJest`EYP|_!Ahuvr93zshr zt!buA?nE`#wv-D|D)I_`iV5d*NV8IqT|XK(kQadr3H1$h)w5)QA(<@#A-0J=>jHqM~`X`H}bo!Y9Wl^FMQEz>`pi%Ll)O5%R!bPThXzvthbg@*w_=dyx z*N;U5R%oifee5&XkkAXT0DyZyhp_sDRc?o&^plaN7u$W1G)eV&YmSSpB=mf0aIEia z*VH+f+3s?FzA-H*mSm*6BGYpFxq5?AsDa72T0dniwj}gK(QrKyg>y*ed+)C<1#W1HC zrkFKWDNnk+LRMa{42kjVJG6JPJq9`mCv?&kC1_d{Q!UdkR~PWbJoGbAJ$yy*{4ktU zK7}tqYvHo%uT&L(>U0a%k&GLAA5AA}D)Ff;*Z#vE-0Uaf3KK3eP+7I{V(PflSLq2+ zJwS*I9)E%eo$Mhk(Q@O~p&thYE*L3E7!JfX%dIbBtxEboG$q(ZUwB#5y`W*fEw$J7 zSXTbD?|?}siZA^RtEZQXlsU>+olf|2Ll=z&YqzZ%k2Wj!hJ08uaf+(Xbo6zI-`qAF z*#wI1?#K5u6jC7Vr46erA3ZN8*pVp#bqx^X9qgu2H0G)`#KOEnN{eD-!Mn6 zY(JVt3kgjbM5P%bI$-Eth>}2Bg%Th+q#m4=?*~p2s$R5ePe&UqAsn4k_EBF$Cn;C9 zC-a5kG0L1g35{qrTRTM5Kuj5}7VQNb>5OES$E%QxNTbAcr6NHG8OdR{lCCwbm235j zn?pqK@K-%=^B`qQw`mH^ZW+qAX*(zA(Q}j4uRk7r*x;G#P%_SQ=(lLtBw;_CD4ztw z=NqSVS=M3gDq4K|^@tLQ!L8SgT&Xw%*ECO~n7B63Af?}*>wsBNI4nIMVb4sM)akP7 z;}DNp``W{IedYv%dCS<~J^{m%K*)L4&ghW#w5YS=8C~FQ*F4f~0RxdP0-Jb>r%GE zu7f;J+7lbbY^Y2avZB=YYjCD>)nz(S!OUvS6t5$7>&}7N!^mck86BETMRGy$W#z)Wiz$Z)M~c7QNo1Hk~35a{IM=YOk$*eow6NzRTi9Fq5v;!aDlS z6M?v7KfEhun~6i$H0p2yHhc1X3HRwmEAvLVVQGd`U;-8{YvF9j+x|Ovimuhgd($7q^R+hoyiAz23pCSp2-bz8MIq3wq=MclAEy}+MBlS zB843SEf)d`P3umpYWo$asm%jlyxtM#%w2f5;Fnr;N*V6g`(M5sX z_7y^k-b5R$`lga|D2d4MWi`p$c&c_40*EhpT5YhiPDJJfFAbnz$jEdDtkEwC`{)LT z7QG_$d1y{Be2M18*3RzPr#40;=bKxYYCO(0P8a3_dIMd@v^wfW*wG_9yl%cpzd zq!R^HDB{e7fg7b8ylBYgaeK(qJQdAfwE82X%001T4)W)=3UG*)PxjUsdD(;v6r zJxO1>qK|5Cp={0e3@C{%2yIeGV_9vTxsF(>a(&lY)wR!0k3Bg~5ld6?ioNpG>|@|^ z2uRgYvERy_8?uM1AkpXc?2}nA-0tsc6R^Kak}yf7(j{_`i^qS(FZ+#$Ll9|;xu4g~ zGXCYLG9R1L%Q7VSYZ9S~wFkF+8M4BIvgYkgpwZk`&``XE+hO-<(qR0amHsi8>PmWl zeAd!pAXbD7wHY(tk9z7BEXjd)1s*(d>8fY&mrf3zUe=m)^8^Yw9A-T+(l@sX=lyxZ znz6S-w)$(98J_%cDGk+JsaPSJyz=a-A)F>*qa$IW@5Rq3u*2&Q)Tb_ns_VXPXlaT} zMbgIH!hHbyA|J+R@jfsJ@yAeH%bb92xRTstBnFtO*!l~>yH8-QwCHdjr&E~z(t@Eu}d7R9+DQHg?0{0++hq#2(pYpXxKK^+lJnOj!s^Mq~PvgB9V`j_pQ zn<_ntj+?-&`KgeE8?2XDJ7aiyMs1qC4wq-JEFr#pZQ=F`tt*K<--GFJpY>=Daavcc z@?c5bl4)2kZWlRZpEHQ_l7By*Y9GT|ke?JvK`6DeNf@bChCa%=hcB9f#)dPpHvB_7 z0eyN@T$q1TUXrJ(H*3_D0r@03aw^5x}TuvS^8t{C^M?VC z75c2dUW2R<5d$zP8@W0H7$vPh776`v7yjce3D5>G3foxP*eluU85jW` zl_OyXW&qoxJ#c({07g+)M{y-bkcRY>Cl1PEdF-qrNIwFJOCbB7(v_8&0qjr7jLOPD z0LQP7EC9}@nn0;+0OrR|fqJQ|%no4w0}^3o0P`Q6S61c(Fh4c?ScD6}{ErHmL4}^` zdCXu2!ZCCGs)(5t0Q_mrV-6bt__Nwa+tlUt&5aCxnkQ)ms^K4I|B2cYjE}Ir1^|B! z3Gk-@z@Kdce|7};vvJ_hW?6oAL;Dx>PZj^d{^#KTYMW8XN#F5lIy|8dU{o_R1nF-e zlNlw9%uGxjA8}xm1Wf{aTboCr4&Z3-1e!K~jtJZzfC!m6I=nKn7q+powXuGjQXq7G z$$4Cy|61<*UEwo$gX4OfbqF>$iZVF4h8oQiBmW?Xq9>)v!{A`5$IZ~lwD``9TZGX| zLS{Zj`?((a5w>A-as!hQOxnR2tV1yU)m@=ss^^Dt55= zYX!HzFNvpV@>f{?oJ)+tf&eB4R*>a?4hGBP*!_Ay4zwf~1s^3$>ql4^MU0%y42%@T zK@<275fjM%h~2-EIe+hWMxu+d(i~RMXfsFi7#b;n{0z?>7BImrfeED$BI)xABG8}0 zSp-@P1C?6UP`M3UJc!gl6a)U9pZ+ZDDaxy!b_Eg9&BbsF*rQUm?@Ot7y&B7N+qJWE zCP!Yg4PdW+_(63zs)PHmW~*Zy?zL;7p$~RlLg1i)BdLS8tr{CciC>98O#Nu)O-U(~ z=&8CmWbiR;oTqDjMd2{>@HU2&LzwIt7@X)dJC8R7_9jHUQdKuD@BwPzEP)yr$PC2F zhRrDXkjS$I%?Ne@(C<;!lVU=PUb5KffaG)`>WqRE@ zw@l=%bjRE0eyegqu|JwA7@n!IY`I^;*o*~sL8h5TSk;oC0#b_xwv zy_Ei)D9}a#SFu2|s78s^Zx?o-bT(9aRVft)%!GvExl3DY+LwN1IMq!5QYiTkqjVX7C0=nOC z-w?xVg<7x52$CvoT_8jm+LPzd;pQ&;Ted@>MZ-A0hhz0+V1l4~gGk`RVhgzh0Q2{e zK!HqzWRQR`6M(7|H--1(ikE!dQ=`xum*AG_@{Ehx1%L|b?SA8`S=z;Oy91@KZD{wtVQHVqH?qjy_E8epg zj(82vwcp*mhZzH~KDz_=@<&aEnAAi30`}Qw?h`k`bMcPB6%kj=bQtWm`BkYpEIy># z4(wI@V=%e^-Hy2D0)5XR$Hmm21Up`hZ^_ArWJ@0r@N_ zTQ3<0s|R;INF#hzUsZ2LUy5lu*&ta}278O$7=^|6+AmLkx*}hlvV`9mmK`-Mg1$@j zP1Kv$pOPvdzv%6A6Cm}r;jR(bde`A-0j=4}plXq4!yA3}IuTbXPF$O4mN1U|klP)O z^*u>i;NB9vC0dRm?rEirhSh|!@Ixj^1dv&hDWl*$-+q4QkJ`bi;9Dr~NE(RZ)}^IS zT@m?3ut}1DLM{$NGLQ^gk&HT}+E-c9oK%~Fm!g>@uK%T>xIK=BfR20_Sr$N-966T% zRXi01hP)JksL-4omsGugn}C~eo+4tQ^_2R@DKAFxIF_XEN$dTkam6tf z342K%l<5(CSN45`)Ptaj|5L>GS6+Iu3EPG+iOy(5kdggQHx6=&85u*j8E}5elx~vZyKZ3q}Y6x+! zyD>lS{Koq&4lfn21rHZb1uu!UhYdH?I<-G_Gj*G_x7t(_z6MHjQ**mUhbbZDa7fvh zyef<LK!CI|aB^M!iX-0KM-ExJaY(9mo z(yR}y;;paW4z!H{zP=6qVv&?pg`dC%3!)90D%mUc}G&l{#5 zmVvd1rAv1}r$oO;N321u0j+LT{q56D=hv=O3vC0h-azwpgQ}7I#jTpsBKl?L)&no@ zRP9fTSdDUxqZddQq_-5e%rLw`u0hR6mtP#6sT%#grcw8HR_jJi!q;IaJt!+CB@31_ zG)AaL5Jz(15wMT3r|5C)$L&_@2<&4R3>m_8U2U_cROS=bHTQ0YWM?C`ox7~M7QgV$ z-PPUFB1pu?)!Wqtie6t-M7XO_BC2nqPdqFFOB%~XtY5rabXr_i z)I&5$R60qWPNQl=EL<}jkk5-njF0I-=4@YdIk6}mw7$Ovw|>aLqLo;+|JA-`vuJR% zELyi+!;XdspO|nN`b@bWfN*Pt}*B~cDsjmJK{w9%IHT7RFZ$C|F}p} zmv)GOWSJzU-(*UPzRw>PYwx9mk(0jwnEjt9jCBaHBu ztwWcl6y7U*YI$Q?b+pwZR4=5k+Dt$48p*QT64UZv(YUJAd_IX(XZ&1$a4mFAo_ry8 zZ&|}j?Rs(O!vCN-?;`KkWySfq%fjMr!*}%*kXAQ0R<@#Dx;b>3b6VS|w%?+v_uB3a zvRRa2R5h@$vRSI!TztCV+lOzycu}ca&EGs~4>G>?&d;_kTfLnGkAUok;UmHzXnNas z`O2bH(5hQ+VYQ@lbT8*yL#xSK-M1nK5+^aE;sN4$y&X|b)7(?D9EBY5>>UxYJr(PA zy*76%=fWQ7#k;Rqa_g_4I7zrp)_Sjqk1`Q>=G;QPKJHT9WnFw8(+t(jo>`a)`TT+1 z%tOXwdDmw$gK&h9oJg}SSQT*kZ@ft-w8chG)gO0E%r^kRD3l2 zI(*T+;;j34Fg$5;J)o8P{_|zRcyX4u%WboXet*}o#rR$dztmD;3)jueh1Is<&c>vR z*-?H$=u&YD|Ap^e_N~ELZ_Mt#{FQt{Rs_F`C+v??R|+fRt>sJq@3(*VWFKAdpCo}% zQdn3>&%wwL@Z_v20{%e)e)nDfB!CY8HKluW_MIO6c>trdnV|!SwEg5M+93Azi(#<* z9@zg`yRe?4o~4b+Po4?lgFgw8s*$~enT<7ok(q(*chCBfvHbF^1pzF7uumZydqdC> zf!CnS#|y*+f7boPF#&&a7a22ai%0SbB2%x~Ss2(^S=c!M?5wN|Y|NmlSeTd@xY$7^ zva@k9a4@s6{l)U%dFdau8#q3hs03hCQI!1oi{&TF`K`ylFsCv$vow0i$jGST0O}i~ zgPoI^fd!+8je(QZBXMR_a&$5@bFyNT)pG!G1x6($QAS522S+n&6M9=WM^hVXdLvgO zdjm5EBSuq4D@y|#XGV8jW)6KrRxY3+6DJ1;7pp#(?&Bl6hGxdbPLJ>b4Rwv3te?zu z(6x1Aczlrh*H}D}z~8X^gQWiNuw-Xv;9`B`vYgBeOzcc-0Cr9w12ZcN>tC>ZZ0c9b z{{hRNob@*>9}^y*`#-@_kCn-o-4MvZVZ_AB#cpW)cP#&g;3J#<)eq2Y{Day5?-1nV zVqjtC0%;7a93TWaSOFYNp!o@!j(gvLQoly-QI-(| zu>KSt82?8|0U0YB(%Zl9-h%&Pmty^!==N)0rurZB_SX*g z$JqWa_GD%*(54Jz;Q(;3b24x-b8rBFY%B~+EFjH{gOh`Sm4gZRm)`#O_GHk^_$l-K zV{Cs}{C}{I7+C5#IOv*L8ydO(({}s2v7kxuzu0b>nOPY)ALZ14z{JeS&cF-=iG2SO zrr)RIe^>(lyxp??TD1QMF#UQh{VSyYZtjyh`{!$186++K?8l=E^D|TM@kfZ3K}k$b ziC)pj#K}_6Ue^V*PIYZ;9o(6jnLt0f;);SIx-KBK67EUx6)|!!us5@Hw6O=U{;_w9 zT7%9Pg5J3xcSp}a(Z)*8`p*m=l-@cw|V&i;V)NE{zPqMLt z+5^3oLGKX&3p)_hHWz@6lM|#BKaMfe<1%|J1$qLstAa{Crm=u}!Ukl4V_^rSKIS~_ zW1v!?-9!5~pX>>`zwWS)L-HHAPhiXGS%K8g|L0+{)H4AE6(03bP@O_g5e0fyc1{32 zD4qZ^pPe1R#l``0_#{DIq?v)BwTYz>$aY3S2ZKj#nG59KffU!LKj7$rAc31vSkLwk z#hR0i3*;L*8d<46KB4|cDm!Sq01dwD9|AWk7f8N+Y#XG{8UX>UPjA%UJldy(U%me+ z=rV&AHz%mZf5^Ka0RKyQH!lg^R<#?mceHu=a&z(&4hqvOdj;}Un2>n1b2J4KIXK$K zCVwh_Fkh+=SQ3Gb=TN@KNWm`!Kdc&|J|{g5=Ap~QgpQGVP4y+RTW%^8PAbJ0HhN)l z`LKDz*OYtm&c3Q~JCoNV^I7U z@Aj6=z~%OE?KnQ}gRX=6lBPE`vubz>n`K~!1FPe1Mzt|7qeNdJ$?2SQt@pP}LOE5+ zDT0uB{KY;Vva;+6b#$*u4|TFbPbVQKp#>dbvoXyVW+nKHXmhlptJ_8{SCY7dnG_nU z<*td+iMRDUDEE}>+Lhh)blukBmas{K4aYjB36%^}$#&Q&E18LzV`~0EQb)&3nd^$* z)>Tn#KK@tw+rIk#GiyZn$(jQz!2kCJ7^# z)rL<=v~;DMwc_+WPeF}{_zq1*&Y~k%v8;y_U$kf}38Qq`f=r-la2tmd{x0>>q4To= zvqIg8Bli6U0q&|LgPnorDU^3~Y_rAsF!FJ`{S2CZ7z2Q~lUG?YFz0S(;zC!EeeP=- zqqTu}187B(LK`wS8pd2&IWJD|GA9*YB~^M?XCivx9MWok^XPW(a&5beI*?sJSyS>m z(bEn&v52t!x?U-p&)pVUE3o}dF^fumPy&|$ev{)~Yy0GNsl%B?ItPlKtWnN>yd+S3 zDVnttQspc?)2~>4R0sz!Xvk_D6$>4nJ0V56J|f+qP`esjdc#f2rI0Tf`kg7{%s-)0 zet8B@j2S3mER~aIHN&c{I+=K4e!D0+>&8k@EqMW zo8(m`kN$Fk1&!z@`J`7oX$Yb(B^k|3%+-s}yu1{2r*kDdz!($6MkHwI*kY=jQ^=|* zG(%tLR!~8sdZ&^P=nKurd6V!5ddtc0BsJ*hR;6kA=#%hQ`_{ucfj^@cWJ}dqQ5LK}&V=l4m&PMPUk^C{XOHv;j`PSRJ+*$H(s@P@C1ZJto$>0sMXa{`!nBTgdc(5GwAURtwN=x&78!sPb(lvnNFy)f#A{ZX+j zr0BXE(2U@y6ZBMZ@&fznUn+6L{kR=M04s;8RuBn%CQ(o16l#8hl4V53a-uH_T~zyd z3m2W`xIYE0Ug8zk{GOu#Vs3~egwk}{dEp_mG zMvg`*z;m}|OI@_cD#$^x!_E+qBgFl7J>sjsZ>}#qO_%GuKH@{UozHk*`kNZ0osTEW z1}#zkkY5_>7e)^0fQ_1ittKmx?^EZCBe>H8PD7d`)a95fBT}1XdlhuZC-~p*LtLt! z4i*P_kYk~4`MSIgZZAIT0&gxbL!f+D@NO5LekLLZ!ni|8CC)p)#ob@-)? zC?_$#C+lU^jwZUN1>P6qA4IM-yypu3E${-4p>wRSit)dwW>21zmrglw=D{S?)Mct% z-@G2*#hC1<*4|nK5$GpX^#V8XgRlYY8 zS3TKUEnaWVQgsM?c<={;oxHxDRwqIcqH+c~f5J8wuMN3)+WX$^8}U1gbh-x3U3Lz! zir(n=MCCZmbw^_REw@hDEjlcTgp{`HTy2rOWyYe-mI(GAMpDj~r#*H*L&3$KX*37h zD#dWDZ=CqZM0TYeys~}4#7Y1&I>vv6aY&A-g+ei4;qwfTFYMZ~DZn^cyW+*T@~zG8 zfi~2Ez~?+#em(U1z3j)9h1fut>g8f+!N~Uex~|Pn607fby5c&BsBu!Ia&9;)Vd#gp zW6e(b3U(zI5$oJ;Du~wNISYvG3ckvj@B4fftBPB)m@aYnqZwD;W1j*VlBki)c4S!K=k>x3MmUCbB7I(`woH zXZCE;#r5D^m44jA5nb4@uuZ3fZCyJb#R6MVGi4C5ZZlJ;s(h*~%b2zHO<%pE9ctxV zHhvuyxw4SH3*pRGpPK8Icw~L}5uJQILvICnKy!w0YWB>(qMjpo20}YWum#U3(ha?S z+9h5+b1|IWUUhU^OyP~_rvX}|T0_jw`hwBQh)p5r5`pM9i1&@pKhwRZWZ~5v}-XG<9 zP^XfgLK_~|i@_8>cU+FjFV4Gez@5yP)Y@m+wALASsRp*k|Z=jVhQX+FJW7sknFd5i-&>#FS0- zD<>~F1fj~RD#y@s$dRS)<8w$i_M4KQ@+F6U9P3}4h!e!DetrJ; zcQ*D%&c)6Ggahe(e=E-cVnzS{*?*Js57x%^BsD#jVq<%(8+7RDpK4|l8!4{V@AIluF%CwP7_ia*EXKk%vlm!bIo8J}W%(%pXJQ%?!MdjE@0u{>h*i%&6g zae&Cxe|20YPZi!)r5pGDu>R718cbnA$jT`7W4C6I^2;`fVP!=eo$lwbg5&!N zz-X9uD3tFjsBnQ;WCAD<7$m0XLVi=9XMAcTN)47LgHmqZI~tlg0iVUDmoFc3`ICwD z;yxH2-A66HeVD!XI8EF(S#>WFMd2734cY1tS`kmx(Ww4lnk~-V-G;bbS(O9NgO`!o zYaF&Z?mM1pGdj}$dUq1pOiruPvW3xQLbP{VMD6D0#6_4fV$0BN52kdMhtFj$lqV}w z-xT?QpcVWeqFV&v(@TVDd<5}zm-a#Wl!_3m=Q<{vNBa%eR_~gsEV{C|;~GY~GeQZl zaQzLso#i(~U7n#_3YsXIC@xUv=3#e9O+swb3e+J%XJdQ_Iz>gSG2I{Mj5rv9j;O-H z#0#>^ri>wq6b*4eHYbIpiplpWw|j5NPyLbz`GV8Hw!G?wQooBRSdbW9=X}+`Z?x_C zjfGHZr`HU!fCvG4+a8?p`SuTDNnNFE0`AfgI)MPOFnH?L9e3Qm3ynAGY%oKPCu; z#K)MCvR=W83Lza*@wFDH6nAJID%GQ2rsR_T_Dr7|FD8m|EL^54kQ$Hpl)jW^Ta-Dr z0$PD9Jp^tQ6~O?U@fe6)rE_=}A5^j>X>aZRhGxs4VtQgo_l88W^QBBxQ*LO|?gT3z$?3YL)2SG1WE%V`6t@0E<9 z35l3F@im5C+`R607luEqm6Po;NcL|Z=x44!C6TwMtty?wym}twbSS9RZd~On8otSM zueC#=AYbTG+T%U+sq$q$?I*_5AgLf;)a5p>y5R+m&x7NHCF}TbdQLuRCCb>6D?KS-Lq>yiC9yLq~UYY`#2#874whsKtu5=hzCZBhB-Ry`M^ zdrwSwlQcTf#y%UZ33n2aUhajOE#sxBOI2^XvZdo-fP8n{$2aGA&L^z+rPTxhuA=EI zrzgmXN`aROrC(Gm*c;n8l95+!^(`-+ zx9j4d6oim`9ftiQ+Re?`|r6PDIg zOyL&i{#A$XMR^lXN@}@dapydlbi$U15m1n2s*yB3H<_O-3l0%xxr1&2-ccJa`56;( zuR_VIq`po!F}miq70nA|Rd$GhSwG>5?ru(kww2uNcnp{_ZKaZg1)Gx&fj^nUgj}U@e;PqGF)ThVU-=!!@p%N zaCSCLARVvKq~)u0am*UYnnax_L;D=)?Em^$`-tevap(b;4TTNPsFyPb>12Z)iCp%; zuF?Lx-?Fow`Gn$Ib_FMq^sd=GaTmigpD5SZ)UNPE_Tvh%-a=0E6zMf7+<2P8J zNrb<8mn8N0NClO8M$ISZseK4`shm2^zBnn2~oMT8_CXQM%qa-$%;}2m>pQDKHRa%H>Y62DN&=^r-XNHcDON^sO#6dd*={8 zp<2RrU99)|{Y%reVg$-LQ!};Yhu5x=va0Q@;XOD3LT$z^7qFg6ymuuCNIO~O(TT?s zK7qEm?(=HXi#>1rlIE8BfyUSQ8dIZr$2uB^_4%s1)LYc0OiYs0GPAnWO-%0?CENu* zf6L}*+n%CLy=oGtK5!a(e*f(D8oqcNI*Whq8}l;9>>1CEdAWrP*%)S0#Dr9 zH+6T`NN<88*w3^}GE)rSbZEmC#lkg zt85jVmma_;=1tE3?wbBR#QEQKO-26dn*NlAe~$xb2&yan>o~xZTK+%uP5&tl@UInn zc92~D7zJPjDf*B1M{kq~Bp9asdGW&46C92u^T5)DIlG$kZ1Zh$8^-L5W5Y zdM@=0PA?b%6&2R+S?4P#5m6{i2&(53H2yG(dDBv~YsG9xFJgTu5$_|?L_q72vOT5>bV z@9ArrxWjW_m~wNRTC*{h(!XYO68(uBW09tn&{>-C-UB z8gW&f@4a7hz3tz5!4_)}uff7utm&TLhOtt8h)Y@m+71_yx2UK^>o! z5gzbz(g?DVIk{UJwn+5I1(D%J$4!*1KjzK$@ zWZ~W@RPum(5i$??MX5 zXEI`$>WA1+YVLPt4ORy|?nQ7L2YrLp-DHrqFs`1`x`?_Dw0rerc zYO~ejUB{u%`!N}Qf8qI1!{h01r{A0bS>yT$IaUm10 zjdwWQ16vRqgtKN&&X%da8%Fa`mxJAfCEGFg%t|~Pux*^BOh03&(c2&Iyl5)vZcuF< z6TWfVP<1Er&Eemry=e_xCE(q15+tHlFvEdO_6{}TFzx-eR+e~DsX?JZ9HKUL@2&|? zViP7eop2MV0khg2%V1!Lx}--7lJ`bl>YALstsvChuS=)8iItn&KKtOEzdXS&Q9`BX zfYn$wrm}w6tBEQ_fH|kC?b=FF+y9pF-;bc}%vHb|*C)O*`J}z10k9XT;B!HQoT6|%3%{T&$gW!3MYk2(3BEW^phRF);Hs_sEl)bv8_`5v>RvtO1dU)gyT-Y zD5Z&hGVhf)Z7VzB&avfzixe~c2VTfY9AqEO0i?6b_xA%CqHl4Qm(<-M7IchLt*5DD zqzl7^J)`;+xnSS39P~*wtAw4QJ6^$lmosGpcq8B(vgO87)Q-Q-o*XZyMZB{-B6qdY zu!%`rP9}dgr2cHLK_+W+yoq*P9GiZUMWTh|GZ(aeCK*Oe&DTLNsj!-?`yL`*p9-%p z(;{>9YT3IMM$POK$ahCR`4xM1WMCL2cI?p%Gn8ktjb%flTfFL6q&(wN+6Erdn>yg9 z@Abm0w)=Hrb45>UEYTK_UO1ea>9k^VHOd58m|Qw*E*fD`D3{-A4@tp9p|dKDfkD+- zbrdXQNv`y-=j9oY=D#4sy~dU3EplYb+1YW7q4y>ay`B;pirEuglZr7iXX=y);wPe| ze;q~IbJ4wl%c`y&!O15=H`~ur7e~Fap|44A$T~(uCG1PC*+thsQgTo;>6RXG55!z1Wmf6Fgal{@p|cbTbLH$&hXzWKW}ERkxi=snm5;UQ!xFc6zlS{ z02Sf55JPyGt!!?mQmb0A=S3xQFGlM@!A4}C&gH862Y zf3%?I+h%xSpVu)sI@cxd)bSyY@k%RL+}kD5GFysR$-a0BwsFh8q;9mBB&*)_=t_PFm;>akF^%d{@w3#$uqL>Dj9dD}|tC2m-xn08Y` z2BIM52bof_4&R|PC_hB@MP)Bg?z<9u9>1x@P;~aGuOI89@0$pw+bsrwzQ5&Y;83Fe z!dTfn3vzX#^gtuhyX_;w4gPF7T>J|A)Vg=TXP3yUmL{6lb4ET*o4UKf`CQ2n@)NtC z?c<78P11Ycm%da)l#TS>mG5M9^f511%T>QsE6^2oE4#;p@_I*<_U0{p9;E5s^OK0{ z?o~Yw6qdO3%gvfTfibQ8?{{V;=3PeRG8X6DRnSy}c?GyIY^O|FnkaZ3J)=ky_8slI zL)jTuE?}Da;}z%^jS7s&`{=lJl_JGW?^b6+%%~G}ge~J2h|B60$5yPyr%2R34>DK3 z6sO6Ju?V;rH*EE^atmkl~KH(5rrQPN3-GI z+NZlk!VoR5SAL2ydDkLN){3NzxQQ!fRs4W;3LqTMy@9!V(aOK0VBfw)MRtYCY;m|n z;J?osQZf>w3@8O-*_Iq(CDjt$>epj>xk#bzn0;ZwhVO(luIZAbI<2o_%`m{&Q^RWD zw^LkqWpzVJWDkkE*4VIQF}x$^7l`X6#p1{ns2LbHFtd3N(c#lP+7D3+-TwuHjwS-5 z41ZrUsw!du+8>BqJ}DPM0)rkO`F7($Zgf0 z(BEze79D<*Fol}DlDO5fhhr66&CDO;+Iv2;1d%NcstJ>hhL?hE*-*?9H+Ys%lA=y3 zF!?jmRMFu&l$p{ESn~ZA-}7MWncK8%YI))fD6a*7f> zK=|umH4Fg1h@{TN&R1nMx~B62{J}{^d@kz59Xusi{0#8Ae;R*WI9sO}et+)ZSkGeP z1(N)|zw8vB&76_dYF~M!lC*Xm5}`5SSLgYVB=&^Kn!2u| z^j_+IrSYg59J~#_rt`;Cg#~@@i!|CxnuC?r0=7I(U5$Cl@v;h)CkgGD*DFSd$Raz- zD`m8G3O2XNG);BzO2IezN>2JX32X@<4`SH|m+)&LKE`<*Wq#rD>CC=i#dWYAO}|s; zauT*;d+7tr2!2CZ54l7C*XT*Jp`a~lcSMzrP*9g#N&!({J>r5w zaXTV}5z`})&RmD-j@hWSRmEXgb`8(txyvGag8@}iE-E@XSyC)2nPWao3omX^Q!uIe zyd>(lcp>X%H`e9xOVVPWy*!*FlJ?e8WU@Sy`nYp`KBE|ouQf(O3NyW}63oEUTc+%= ziQi$E?_9tib?nbV{ufonzikon{vY5l-w+7^4kKkMZKD6(@{#@z7B8S){*#3Xpw<0g zVSbZ>{G&1WO#%-9R%n=L{@PaiLHhmH>ij{?1BgBTwg6WSYcuJ-n@jqV=IsiP+{IRu#am_vz(iWkuk5!MuH@pBBFA3H7oWh;Og1tXiZGg}$v*3dnC+ zxdaYWw6yts<^kx?PkF=7ng0)s$p6uVe}`}YOwRvLAe{e(+xZ)W^Q|-c7YOH9Ch`vm zhl%DVwUdqk015pafRio3%8xD%&u(fnmt4fD4WgNz#v{SANR)?6=MBrl$=%DKP~1^B z2cwhxNmm@$9Uf6pZZ-?Hh>ZNDg25KzdamGmuc$!j0C;gKvI{m-n;_mAu+2fGVb+^v z+ZAUl)AF!3TqiD&V42}TT(>fTVtL&w=R8KBv&G>!OX*;6`!6}TK{w&7M@hA?`}!7{ z8w#~&^!q%+N^cG}Sgr3p;s>NIs#7;->}~rXu0F_5J#c`Dgl4>=P5{k5#?FiOomP5! zBwwO(^7q5+Y<;@5D+b*f(#?&ASmBSlBp(hPEm%#uZF!DSJSRblKH}NqG%hLNMy!^H z95XVei<41?wi|TW-`i7TmzGvXKe!!)_Up?q-Q_zY=Uva^22MByL58V*ABY^%8s$5a zyvZql*CBdFGHQ#y`PE17)kDSYx#=L3?`AX+Uz>^)R-6AB5at6@7@-B@>;U{7wVMEa zjH8+1{T4!pt9HL;G>ZS!wUEDkl0NTcQZ7zdC-a3J);W@`Wzgx;m@SqOsxenbh)I1& zV;Gqn35lB54MGRRF~52dX*{Z9gJ?YVQ?1#(i>vwzc;d@dJ%!Y-p z9e~^QlC^$cBj4RW{&&%lkCb2A$VS^rUsL^$HSlv`fqy3u{I6i>?_BAhY;;B@@V{^i zz5&j^pYG33{^Lx3;cEZ&EdLdIfEm!TC#M6D#i_q(aHs(?1c1BCzoug|e(T(S`>=1^ zY;qa^@cj!Nn}G=s!vC3$4GvJ|{ffHMQ+@0G|4GND|AV&w3+no7*WkyJrDynM&C+}i z4S%<2yW||rq^3}whn){i`19U?&f$^Wn8f0T3VWq#V1o@*pux7|zDsND)nx4R!NZSe z3ww#!pxM^%0WXve9wKO1{4RXJr!7$on}%h-N?|fw=0GaHRD`d)Wj9aH#C6A{0+u)K zp>5W3d-24+*!|{hY!-6C3_pR;)wX0R3-{9; zu7`BjNEZt*8^eg-l}HydLSBw|xmZimjfYiD#HK|ir1AG3%8Zr^7atu&T3o+QtC=#~ zzdyn?4kIrPzk1x5U=5pU#3>%jdhR9s*i%zn-`K4B^j?p1VP3D50|HjS7RFNs8x586 zrFKRMPQ??sb8P;aO;qoltb)uk)fJBRnYzEs@MFHf^ZD}7&WAvk_|&JgBTJ(3LAyl{ zmzeezt_(=fd+*EFl8BX96doc2>_xs>)54_ehjgr*6T31bc&~%qnD?27T!dOk=?L}v zvEL@^jEpNac$(yTNHHe2)2&QyUcKJWkw2|xvl>B2&-YEn@keE2VJ!h=pkH`onR2iy z;7Sa!K}+bN?GT~9#yjG2L>JD|sYzx?Gv;gaAogL*Oi+p0(!L=E34DYyXJzlgXsXYz z^WT#D5G2TULlJa;mJ%t~un>ZD?jA$-$B_L%K`#D*Z0c2v*zo27Y_Fvzw!NvC14bxG zE=FOLq+YVXL^_upx-1ln3~6J}u8}I&*LZH--3zsdBFnS`^XzJ~(s40^`JKZl?_n<* zlxzHDD{YB*$@-x)cbX5XwbZ@%ANk`LJEV=ik`) z9p&QGaIB>iU%GW!H5PymT<;&Il=OQ@)DAN^5K1E+k{1oyA`Oc#dLw-Ox*FT0wWQHJ z!P3DpwqK4Y*CU@i&1P6*>_t9tjiKmc95xqrCVY1L)nVLfj3WqeM%a#kyu9XQ*{ z1A`&jH?>-Tp^dl3Xvyvbd8KTQ<$%qnF#;xT12M94_s~pM!g{ulKPmDvH-QPV&NBV% z-pk52bcuA=ZYJr)jMkrPMX{*K4K2K%4PwjmQR*B@R1OEzkBUp)8u+5WH^$M0ZR@1h?ecM2qG;gW^k?gI3 z0p8}!T%_3D3`}2h6me?SOJ?5saXSgWpxV*p?JCpqv+xHT?dxjPXZQhg1FH*yOW{<( z=1ZWXTwJa6+%HI@;0}H&I^=crv18OMJ>8>2@EyUW6X-6cuWxO6vO2u<;P$4 zn}XQy(XY>EK51x%Kk_sL?#HK2jj0rMzd%f9vXKRD#ImavcQ033BpZe$P-9HWa4b{2 z86%h{pvVO7PVMBr zyd@cRLQY0P){C`+d2m-E*+r{vrD77|JSmJ@X^I{m&CG`DESE535RNadCWUS$?Imrj zBp2CTPeLkGcNp*yrv5WbcXNpWf~PZG^iALwy50$hk#179W&u&t{z&ZtNqqx>a#XYY zc~Y0yg34?Nk5#PGMy>*zw#}V{2Z~56sO3GL*Ys+p=Y^;cg)fRTGKn$4?u7#6YmweT zk`iyf4vZbQR}0qRWmp5riC@G`+iG}tLEiHUlVJ?Qk4}#s!sCT&$^?oBRDm~VkhsKR z(R6B2N=$Wyu5wTZ2kM3~ zlYTEMT+H~|{QVq_i+_xGQwtJu;dvwx_xIXq6@v zjS07RHgSgFbK1~KIc|gLYs`jocI`7D$qA?)FG~}#wiSy3XwLg6cy94c5L?S~1@~~$TNUvQgQkM_B{F%!v!5dtvZ#1A($7AYF@PoM z!SG)CoJ$zd!6$eyZP=q*xjV9XfssGLd=#F#EnTHcM;28yR}wbk6bt-%L08J*CH>|4 zsQ8UR^K53qcR28&7je~`v62VDJs0Z_E<*h* znWPBIF5V)G-rOaXa&PZE>XPiYQJIuQvJlqemIKJy%Q8KR@;alrf5BhOLLz^GUxzk6C1dj|#eW=)J_f)kAL)A0L{(_~_= zW_wg+7pR^RCY!wmtib_L&X$Myuu^_u5cyJ`JJQd+9RQ2AUNP)aG}z56z!`BayCoek zZ;n0VZU)D4QiNisQlXUQJ(Pkz>7{9{3Q+<}3G1J_!bU&iU#_jJ$vX)JYGudwVQJT# zu?XnZd`{jaLyc_9gl0yrvERKH1)0hq$K-~X&>zQ5qx#VG!CY5D%7 z-!Je#6mq{0*S8&20ODFe)%9&8zG-X070KzS83ENCK$=WV17O!v1CX?TE3O4R1HfPT zvz()41XOB&s%yakg&;sk`$s*;01(>#(AP52{iDp|2QZxgd>k9yKa{rL#^TpX@4JNd zN2Ny#4iGK>)2Mtq@M8r2lq>u?tpID#f8cy{0Mgap;xw9CYU&zlT3Yb7ATMlO1UDd)=I5)juAG%(Q+ui#V-?qmMd4OrL>_XF#@%BQIZM}GKT*n5}jP~-#E zV&M#qoeEcuXTFH&6TY62O?P2l~&h|)?h#ahLbQ^Qu%gegL^~aGLQopEseLA z2RkZJB+EmIfI{J$bpJ&h`W5i~319va1O6>=El4V?ZDM5l!$;tc1@d!kfq&PX`~{u< zuIB(8`FH3vU}^jb$}mv<6`B72+8=lF4`dqP|N6Igta4bhNhkI@FUJ&(0U`63s=;9y zfg%>+SY3UMrR%jVb{3-gp$n+cL4=F|Bh?sm$TNPFTCN$4HlXSG07DKPiJWG|b=d zufL%TF3AQuMoyu)ww~N1U&a8&cNUhypI%O%J3CL05SQGzTt+^d1rEXZJ^3f%Pedxy z(k$}YAZ0Y~acHce#N#c;sDpE?mf$J5x8F77+i51!L^1n%6tyd^IPKXnr0TkUu@N~} zaoJ%%Ay-W~NeaOqNazz>0s$X1G*tM!U3Lt|;IJ%=krI{S0uin;0#|g;<+75^dS|yNGQVM{@osh7Z-(rc!Y7xmI5Zd_|xdVlDh8 zqj77t9Td)J*>hX%k{{bM={_vcEzXHk;S)FAKV>DhC|OHLKJLl-B`AER=xwQDz!cIt z{Aw{}R(8rTWaYBSNYc2kF)qic#oVmSx2>8G=8H2ZzwZZyNnNi_RgO{6EW5KeK> zf%4Guo2$>&v1bkh*HkVecI4|)rNM0{yy}b_Q$#k!*ZImpD>N#5?EtenWJ($vlYSXW zsubM^pEJX5w_7x`HCdU<6aGAx?vNH{1HPB64Z$s5qE|zls$ckTPtiB#h}N4C_EEYg z+EXywDZ6HDx+&Z3NP-BB{kB$jf(V(+U^z6|hHv$uYN#5Rzu{hM(I&Y~r+FpZCdaARTwQ{qIx!q&jiW4x<9!Fx|P%~(6EC)wUHU|Yq znuT_@5(e!0cm>cf^j22CcYnLoeb?w@@Q7XnjciNn(kn-J*8p;So-Ug(rs&R^J8X({#8T^Ep97r(V^ zuiMsEBJZD~P>OzKpW#WN)OX9U0dDKwkO3J>i;7%{5^J5Faz>7%LrpRDurJY#|7H?l zZGGO!`b=taxL3UTYh50Ts&Z!>@%$i_0Z*Yo8Vi>6ODW;5Ai>;(a8DF-_IJHhB&3H0 zMN$h(#4&h5psWya zF>k!oKYgX1#9?2>(h4Psvh!7WpRK#znrY{7Y(I(RGYo^bIDwCLP+tX`J>4*7utd1v z1vRl|R6>+nE1v9E<_}tym*sIqLf|9t{{I6<}u&OOABknOh0o1O%IF~ z@#ucpVA?|>tt6A$!U+_WP*wZJ)iX^ejBbHV^Put|>hT3?$l3>z;?rM%KOBU@tjE_LX=2#rce7Fw=Q9mLVBq-$YdP=x6D%X7vu+O-`i`^n_2l5<66 z*$%Pf%>%O*eyUyX$6E0E(Q1PE|7;m0xfHRU?1z0;N4;CYWo)EpmVj#3&I< z7qVYw)K|&BEeP&&0mG6??FS!|6IxssB#k18XkI9|(vQ57uadpC9p9=0Wz=Y$)`Ul8 z+<14j@5S4Yq9W;uh;)^MAW@qAsc}k=PB+)?VA7NUwc6N<-)XqZe5^TQPNz~MuyScCp%Mzv5NSPZoa5iuMmGhb9~4~YD~(XTE>}+ecq-oalAn<9~BSQ9A}JHA5pt^ zB~g$qB<{HIZO_ZtSL~F&O-~V}`IvkOguGYfhl=cHYioCDYclC^sBoT?>^isL&=0j; zz)ukkcWHzr$ui3H>opDKf?s^nc)~CFRZ;>dEN%xUwZUxy{^12RxVMus1*8Gx&1#?M`Q5&Eaf^huPJ+ zbb6Y>k+2i<&f#09AQMc!riAEjC|oT6DBXK>*BaQ<;!?y^y|gAkrYn0!s1(1|ZIK*23gAiQo&_|E)<1zXNy zl*3*K4od=Qql&xHY~0eY3-J&71^AMty_C7;2K3L_eQ*x@JSO;oiza?ex$iRG&_vd{ z%Y>j78w4&ojq5q3+Ec^|`2oI(g=9&sJOx!}ZS827uQ8TwZx5AnXZ9{wnu|e`<-l+J zp_vkNSY5RIx5&)#TL!6}5+Ck|7B~etK1Ci_Xhx*>nR7(P<9`*C#p~(nie;cwm_1Hi zVso8q&%x(WeQ^?GB>j7?_}w<^_gwM6$^C`?F8BY=68IIp_>WFu0FlU_92J0L+h3}H ze<{xSmL&f3KY&Q+m!rQnbO9Ck&no!8N{WBKzCW6}->|lsBSqH_r&NmT5$ZcvKa_yvE zZ))gDh1e%hcQIMwfzI4Ve#L4)Pd;=0w; zRhH=-WSZWWph#bA%cg=Rn!>oXw|q5c-#h$Oa$A@$G*oy(mpo6QiV25i!R)dFi7aWE zH8ob#na}FbQ~_%F3ojMS81dj>O*v0@r>NtO!A8J``{=u%87#&n^JHcX9Jo*l5%SSE z4%evr%^O1#3v;~f_kLrX#y~fFJAE!e`MIsCmZSpcV|334nqZZ2hn|8MwMPp|?*r~F z&>*O}6nmshv|*hjvV^_3JIP^|(e;ImSn1xtd~jKrYW!60+f%8q8#L(25b|{t73W$5 zw^BpyCEXoZY2Y9Xj7sn>afUb!>M=BbM1;w-L}=CtzV-dC>-=t`!rgVZ!dY>a>B1D+ z4DfolLW6j&%1J-`46xNwsg3qHt!K5D+l+-W?(cwUZo2ix8O{Hy7x^Yo^%Sy|z0`$dbi>uioH*Jtpcr)mmXOw1mh|KjxLed*SEWjZ!RB90_{Eo+9>YUE32F-ksqCp zw+h@nDS*61m~$ z#|gM1YSLWhitS?5`H7s8lUl%6gJ#vln_M$E9?qJRXQ8BA)6;N!`$qtICkZ2r0-2RqtJj zMi{{A z4@!WeF9Rkb0LV-{%m?}y*C#YnJ;KMKSR*g1-JA}uH58d91bh^M|6DyobX*M*`k4Ex zGZD0s3iwtxLEs|8`8M90(jPl^mZMlj3*QJM8<5|yv*d1|saJ`;q$@7uZrmnCOz-bCixlVetv;1FHk^$ z5O)17P8Qz$y7yn2)?ek!bdUhenROMB(=8 zPXwwRift#|bL+x25y~5&EZx5DtR9X7(nwWkvmw1pXuC9pIoyYktZl>Yje~(;H|Mm2 zU6g9c^c+R$qcHrX8O7{Ap zJ?IS$NOVDf1Tk5@X#kh-z9CXPtK~(N!pA%){%S6dN)?Ny` z8eCXv&HHG7jV9#KINgu6xZ@^%H7vBO0!v?;}AP$!!)zEbird8a?piH9EEM|L}{@$xtvwm#!6N09q*Xxz?NX4WH zlH}lR-WxyOi%S@lq-Trn^mwr+*qsAlb(g{qgM#-Mox~BCu8lR6xtJ`t@TgPsdV{=Rlv%BaUMMH6KKHpergh5$*Q1Z8WkSgtFUJG z+}&y##49}&shX*QASxZn(?avkO*AB&hM9CBv_*(q)0(nN=!&~kQTZ+FlQI?O38QMO zVsq+Wz8Dm|ZIiT9VkOO<(S>soLH07YoCL={&#f-|sF|r_DN(;LB{4G_H|@vdutjC~ z9PUwxMf%VjKs8|mlJoN zh_c!J4v69kBe^tLqPNHMTuUE~-?S;+I+tTLenda$7#Dy3)Wmx)J=Tv-me`e!^|H2l z8FXj8B5*>EMk+onJ&iiemy`CRsE3R@SK3kdSjOoq+~ zIWN@yj?o=4E6=C^4Ky?e0-%If3NICa=RxOzS-@CcIACez5lvT0Q2}#)!Y%-#wfUeS z^4gMRNC{PEmx|jLg(YsftqLl~nyT1SALH|Zn!@Xe?}tP#W<1i+!TR0*`p~9960qUs z1FXmNj|WeGy(%c412<@O9a`Tx(P7OVf*9Brw6WTs9N=h*-4or}i78lJscH$3Zha7; z`mA(!FS&gXZzGQO7ImiTX=%O!ncO@)s^ha6I?W~3-vp;ly;IpzjY>Q)G?sJzsI!?D zde?H2VC_1$Sg);ZiQ4}5$)MEM?4ZDh3X9q0I;oIGbA;-M&hgn-#UkxRrYdn)z+?8Oeze!{{E=;m z8GTgmQF0c(Jrdw`cxlCjLBd6-bJ2X}_j&WzgJb<*c7vU^b!1kw6`1%j|<1vUUS4y~9X*7Mgi-|(=ls9=D1*?_xC_VToocs|h*N4T( zwmb1oxj|1i@%Uv}N2Ewv8(ba>OB)(m6jrpNAA5?GXQDb+UNBhXJAuwfv;ic`#JA~AXIm;^C-yFx9F?Fd6_D={oL;FQu=0C&DvLnnDOBO>Io7pxYwK$j%OvZ$Ft1DIisf3gLt!JzJp~-FHq!BG$ z*KvsHG;=~y<2^$ocY|>aJ8)zqvb^L3?a*G-T3I&>XuB$tQw`j(dgMV9h%f7q>hkUQ zgSPmGnG{3>(E+!1tGZlvfw`vB($Gn05y`seP*y$9i5?BK47Odx_%qK2G(s zqRx}mGx!m|bs^-gy~J0!Q{{_#YJ1cL!&--_YR7xbj(oWz8EsAi8?b>HOofC%=l&mg z$!x{lv%hTD)RC8PZF!*gK5yPV%$CD3qVcq*6k1i}s>Lq0dA80>hkOWB)#TV4IlgSX z3YpaL%$zg2Ee^;WcBp1%)>_`~gzu2C%`dIOb(v;6(RSI3>!n@=;o6+5W5mIuv=TfU?WrYhwI zR|e&+Q?wsd!eTuwH)~gvA{p)IS9)X5twRzm6>X0UocC-gYj_N*-o(8H)?ty^6-B^& zMad9KG6_32C=-cYat^sY+A%Xj_6b!&Ik`4ays+~lZ^VF4wzBYL`_RY;5j7*kr=E@_ zQl6R`j$$76U_SOPYQ_Q0%!d?sTtmz>Ly;Q>LZ9*4x3iI{8iyQ2OVb=n@QEfu18G)~ z1L2_#`<;vd-A57QSvYDJjPL9$#P8-~il&@QldpUU_853)E2H~;gcbK?P3Lh|ZJP>Z9WsW4zd-r>)29;(LkV5kX%=D9Q*Fk?wmQzg~ZHG$KC?)vr9 zGv%cI>jjM?T8c)ayN7z|W&a6XnUUm*u<}-*eFy)re*vfb%Buc}GW<7iitt}GK>q_v zc7QbG8xZh|1PDMQ_r9->$Y&zGIAbm<6W2P?K{pSy4QJJwXCb_XZ{3pZMK}4lHcrm>2MF z{fR*O(Lsw5;6xlR`7Jj$2|G3o-JEI`JHhk5LfX1Hc{g<~O8GeuAYmVgg{dmN+zJHJ z2L?-g83B_Q>(A-o{?-W8&lmh7&PS(|uRCjYE{Ua(gXn5s2`lljJds6p3YDKXZf}B4 zDXtMdQqYc)fdTESuUt^NxpUr5VD)f>v^RdtNdqEC6Ce%(SEJ_5BZD5rVEYL32^%YC z*|QCpsJ%PvT-47Q>YgnP;}CKY@&U3Pavc&fBxv>pFcsn~IWn?K5_ZTFVJFd-FQ+HK z8w5nnC>&VZBd)o~X=iV)UwZ)g0OP{x3h?Tvm~(2-5J91!c%`{$XpRCmpo2J7UwJG& zcvyQ%ObA)R2CffC3ev1!Km-&*zJ2S4z0BS_hTp=*o(Tf8so_nY*vk- z-^3-6|28hsaB+Y0GyRRG_1$?15T1Ur*!~j^{7u{P0|y3Bqy7Q}f9H4o)t~9d|L6hj z{(tp{<_~XC04wU}Z|ML^nO`H`_Y?emaQ?$e{$GsAAK39fXbu1Ow`cgiO~zkV^sg+j zA1j)g?iW1}fVlDZOFCOh*$7e`{z=ECRtSCy77vf-Y?Y8iiWEm4l_7)Ncmk2saH7Oy z*Ip>JU6@`rwA8py+5&Tnqpm_LG^{R-?@=Q!Hjf4J?bbGWtkS^W=~b%l1qLjDFe;U{0Uq<^k?+_Nq#z+ zja7|(>MaEP$0vq$^)a#FNUTBMH;G(hWf&)Y8P~EhQa$Kw5e_lN&pk7%vmjY#(ix+r z8OSXo%Bm-?eJO82X0VS;O_A?qP>$Y8s&qR$8xxZ+6L2AYKAP5Ssx3nJC}_Kgbdz26 z5YFlzFUal!vN%LU1FUD|%Jn5W__GdG(k{<*by6J=+%xjYXPzmJ9cW&8inmL^Sv}mYb>po&;!q}}kC-{MV zod%x6FA#^^*!DzQ}qD08^Vc;{wbN3`+J*fJXLx&=e51WT)Wfy=X`6Q+o= zG|9KoIB&y?)7YYSGD^nPyv)GZ#5RWqNaj{zc`9Re;}^qZ4L$`wEM8d^Cg0>o6DJjb zhIQ1cC$V5BA3NCSgAhC}68bz$!h7GLSo*>XWE|qjRG_iztxs?Z1s+DFOZcHjX|{B* zMX}WP=Zav?LyB5SvFM*{;K|B&A>^!-I#qPRGPFe)?UUQ_kw9M!YM-8*iSF^TS%*$EI$H#(ab|{eW-AA?Yk^#{UR~8MiB*@KGx+-PN&Gp|o{g$rNj%&J zm4Dh<+SY`ku@p~te((XG`77;tyLRFLw{%-^b~%4pMumf;!aSLvnSKf-Xki~XZ9$7O1y^+&JjXD9;)a8Lg!S^Vy42Z+yqn=Ar0 z?fKSS`%CEjRr&m9viL2^{Y{VQ|6h!}?}PsPWd59%Kc?vyM&3Wo;Xl*yzNLeJ42ztW z8L;ggz;2J4ik{}*ib?;Djt97>{%LQY@3xBnmW~IY0RFY{`2E0-%lq-&LBseVMY5L$0UI>kEjbDmT zg@t{j0UwfB6mL;_x#Y{%tpFbMQX8R8QD`ZLYfdivkrR&OL5|UQqlZA43rslCC*x4( zq?$V$=ji5ICG{fZ#(w!C=|*W`XSq#zo>XQ|+GLqM4?$zX0mr3O7+ObS)woaU=KlYGr#T3Qw=WlN?CNM2&kC)tmA+2sfCR zL$D5*#C@<{g`cgyW@#ziaAa8?HE$Yt9}2xO>!*lG+S4oUi*CM=2V81gZRm@~z zCxtm?emlx*ZwK!yxu5RIX|IP1^=Z$+Zx#NC;q zDWc8n<%)jCJ5ng`GaAAs^llaCYpOCr_gJgLX=)}hlGlRehC532LOsLvySg>5$j+FD zyBN`|R+raCQO%jV!ujlqo)x;d4mkVQN3-2+HR49WpFzVnnfpL$$`&F%GL}vramNC` z!AP_=8Xsd0g2JH08+~e0tU0h-4&G_^n~CnTW7gQ3{ito>8KT>98xwM6jBn8lY>Y2g zTccDmpk`diT|&-R2)r^`u4Bzr(x+zqa%5L;?98fC=tDARC4^|O<`k0*R3`C$gm8yn z!|7XSnc357suU}YuQZ8DC7N?^_!jYRMWfXABJ?fvL4^=wd+{gA@Ukf=+SdK%>w0m~ z(8~P+6*t@3K|_^hJ$zo7%&oS)WNg1+r%C$al(XYVRk{pE9D9+GccVtZZRwl`!K|%} zvTq@XCz0i2a744oLzMfDubQ4g-jL5&B*6PVS+>(d<6ee>a zDyK~wqSQrk{x$Y$_u!rhGc9E6H1?w?m!^{87syh@;XJR*ka-Ng36RP&02LF&cUt5w^Eq|z$F{&RSL2y{Qbl`&E-ZwF;Q6S8h-(!+ve<4d zT9j^s+I|urKUD0I=sho82sZjw2VDN>GD5*!G+yx|pB|hg3!~@KrI{YsJ6590F@(EhH?>>N^Ta{9n$g6%7Ky-CqL*V# z?4O0ulyGw(*~a;r$W`vn>@ZTy5T2_q9{7DNg2L*c7~ zOwz=ieK1Fd9z3-ePF7(N`@`G2tQB`H?G@!kxOtnRo8?YPTy167v{OB5&-j zfx;7aOQpCk!{_j%Pv5@L4=I8*64Amn)SNe6e`*-TP2Z+6ls6cPIi9kJj4Y;}BHfT@ zW)DomF9Zd)eL}O(rI;K?ov6?h9wVO02_e!nrdDy|039r(rjkdBmvi3o~XY-2}U zfM2msxkkye9hoirSR{_Qr+zFrX)Rs@Mlg zbnVhA386-qxNL;`>UleBTr4oAt7v+5UXB6bN(XnWZsuerp+d8`{7`Q4Ahd^h;95Id z>FiWyL~6*UWKO1|DKo9TmS}xQf-RYWZb9RPD?_x1<3v+vJ`A&_rd z;DnvBswL?U^Mhl+4<(US+FjebND^VlFRW)s z?3y*~xAzni8%5!@eX_gEm~3~$T1A|fDj&Q<7l@a6L^2S3s;5hi=f@^wZ?0NWKptP; ze^Sf*7rErGwcY=$`WOF?x#a%=!wW$7`c>!gUopJ?V0Zoc_?KMtf6Vaur;Gbn^se8t ztbe<|CX)m(o^#kBxh+bu3$QQ43 z-DrQ++W+CuwwxjUMK7~O^pkVm8=Ow(12&pf&*QDa* z_L~1>-03$~6g8hz6LOT58)GM(Qdw*+AnCZo zctJW~w^=IM=7w%$kCwwNZ~nnTou`|d_>@Qy=#7&a$QN46h61HgM5p`i5!oeExd-Up zpg@wA`lW3dRxFpQ)ir+EP4*|3Mc^;k1X8aqQ);*ca;aBBtcYj6-jnPI;eUWMf2FQI zTKh=vZ9cNT1^hoz)AnJrwz3ne^zg+wr%ZjI6eyIPtat^FE|N@D<-;yh@ch zC4SXfy!xc$e}eUe@FxCiB;sPN?E3v+ooqWhIf_&0Yd)*n&JE3nH?Oc(n%y}*_=G|S zG}_kR9>1+yAUw8MI~4)Os#y~Oh6-M(k^EE!My$SN=yww?Ht^L2HOBMGyZ-4L7sKDKRKJmCl?M zqdWtJm===DUF~o5blM_X#^^)e41?G6ansRvQA6k&U;z0+NY86(N-& zSUbXO67I$ijJ$@T+_yoQju+l(LXC^^bXv>f4Ad)s;bNk&B_B(S&s zlMESY^?8K?89DWZ1Zhm%n55BG3N~V7-E08Fl1!>MWf4~`0@6D}PEbUI{-$2PPwH(u zfk+S#kWFIU?PWkb2!o>QuRzJbD$O&t4PkE|@RG1}JX@?aT*!xM)l|s0x8>|jpc?Yb zr!=6*g+mZ3hvK4jw&gLcSOn`Y7_8o{hzG>m(2jiWf;6Ck|4bNd1)UQ=mSV7OV=!3> zLzy$Lm159787Er91YFyvC+Vy}s4x^K5r{~mi_*1eK^L3puWdE~iONnSgh??1u-oeM z^ugm`gj9nS7jT)3L~#b)hkdIQ>+TQw8QUdEre^~Z87VP6MkjA7T_#z*DR1peDbg*0 z>Y|zK+-_4H^g|+12oAVI2#ORgE*cqdn;+Sr2Vk?4wr6Yi=XBe>A}{Sqq}dNl5bcY! zLo)3SyFCCRBVQTJx>|Fd=A4;79(D88>Dw_MBz~EfqF)Fih(V+q_EuteFs}GMVW?!= zAct(=qX+bVK)QyA^?Jk>Bl*Ca^xp2paK{@aAS7%MRVpO&6*USONZN!#(wX4L zPlVU)L1?g=EwnWSeu2^Ig5Kxsn08=+S`7DYJb5RWrK1rWA5cEtLtMI0W){c| zRduRck`BfmFi!(dnT!Mp1$LB7f(3n9l(}Ie!mlWK8Rgp6h6R0+x@r8)%^%U)1a=9P zu#Ipb-(ADmz%>xH?|$Ublz5HWAoQXR`)lhltN5z`c@P!`9z8IH_STcn@>cr>a?p-^ zLCs32RAO_0GP zFhDR6!XD59N^zkJn}C26Bxo#4utG&}>4<<75ClpE?I=q@JVH#XES0$rJD$mlXXc&! zlV863-J5&A_wIS;`|j@-mFTE>en;`kP5(H+i4teiQj;FZJ>gyX5(`&ztled3ET=ev zZhyIKyWElIStNS=Y)ADp+&RxjVXS@5+ivEeWrDQ2Oo0;XXmYC&wyeqsD@= z^CI`m+u!g9xFKUQv%Rt*k4L_qUWFfadu&|VRPcOpX6EOgXJ!&&n;Kdk?05IBS@gul zm!5Y|4^G5By&4%bQ60^1H;*xGet*5xeyRHTg()JqN?KJVmCg)2yclx3FsD_r??zW$ zwDScco94m$)}{ljg}TN(nKk|C&do74gs(ME&sf{EraWCYy*@oqJH@d_K#O~|tN5_Cx-85{8q4HOe|n|PNbih<@T&^& z;eT_|@Z)l`wL`vY-ueL+KXLTfc@DUwcKGV>tMEaAe^cz^dB%8L!zDZ{_ir<4=BMb- z(Q&<3H)CZ6V>;&o=PKoEKI~oJ332XUD9Se+W|fO$T~GaL`;prxi)y#r^~V;}+h#wg z^L{Te!A-MyHmdMb^}Jm+h)%)T>!;;nom0Cdo#i$rTP?N z!@VBqnD~9KsLfB$pqpmZDh$7mQ^fQ)4?RdZKZ^!8{$4GcynVXLo-Qe93Vs^Nt9|^( ztLZfRACQ{Uik)(QGDJ`pQynGRXygrDfTIJ}KW^Y?bm z`*n-BvA(7z`ltBtCp81Eb&V?*vd(zy*jLSZX;VA<=Yt2$Nk{FR{kdPNktn@B)hm5mHZ;jjoXzxexSKW(# zJnc}N*-n?9G^}Atw^woIv3o=ATEA#rbD=1}U}#;S+_Sj-iBDuSJ)}QXtH8IwGp8~$ zuRmllBWv@>z8C&0OFiiwf!T_VQr5gw&df+N9G%c&&G)oiy;^m+$;6?fowYt^jz4UC z_K1V~DJ}U10{MEk2U<8D=yrmAbDJ>$M?7c0o1~$Juq)_?e6~B0lcgvR$`q z+T40@I_c4#SFn%4>W<_Bzx{{R?ypEbc+JqDK5*)iqVbZjklSmQcX9BCdoZ0HHh#{$ zobkm|p9H>BNA||C7MTYpGcBw9ikjIKS1hUH*tP1UsjdkZ;fuZ-C%mfzc=DLB&11!d z&t&q2qM~Plum}eFXX?%NJGr^_rM(|`wv_YTSLJ-ZE-10Pt89DHv19jGic!I(&K+tm zJdFP6&#XHbvyBn;_ir^_5Z-Fj3R^$VZYznj?7eq#!$OT4n|_E6_rAM1V1L?-W$7!u zDAhMfrc!-Ns0e7t8*>D)JU}nPGZ*qA1ws+v@^BLhxG@}_kY*ea#BpWQym-RsP{AP@ zf?L2ee`DL2P>`5F7`99+e-oN}Ops8NNOQAyumh)Rc<~|=4NE&AFGwT+?b$)WLBder zav1?W?1Mz0OZzPdgy0YiYF8LQn}^{CK}O&M?Dh({|J&rhglFP~ykPL&$s{z$y!Gpg zhBFu_gBDEt3&SuVJ+u51?a+TPD+q8nQZNVtJOmUB!$HQBf>}X;`cWB!A%tXMA+I-m zz(Ddw#SX_vieV+Y*WZ*e1X`B(RJH?jkRVl~gdqq5lzAu^Ih_>jwFSivX995}3Pvyi zldv-OwzepSfCRj<9m+thsB`evwt)MRI%bdq0jHXj{XrN3R*`}c1W5)%UT@|ZB5?9x z7zM+?t2`Bh$pQmqJ1Z+7_e8~(g{UZY2&&=_oXS!eGXq6c{lR2*76gvV^Sxbn3$PyoAe*{XBxKc5)4vK;;i)K+U98wt{h!@qiBmdt6+w+>@Fam%FdQc90mV zGD;r=Q`L?jfS8=J9fp!6l5a4PFesGI6D~7bu|pGiVE>?5dI$s}8sJD@POX!~SG47w z5@gkP+k>?EHlSw4;lL<2hznV988{b2K8kQ*CWjf!!C{QML*xIOyiUAFi@=4"] +env_list = ["pytest_testing"] + +[env.pytest_testing] +description = "Run pytest" +setenv = { PYTHONPATH = ".", MPLBACKEND = "Agg" } # had to add this due to my python configuration on mac +deps = [ + "pytest>=8", + "-rrequirements.txt" +] +commands = [ + ["pytest", "-q"] +] \ No newline at end of file