From 349846e5bdaa473827eab244129c30c4d6715e2e Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 9 Jul 2026 13:16:20 -0700 Subject: [PATCH 1/4] added improved pdf report functionality --- reporter/fonts/IBMPlexMono-Medium.ttf | Bin 0 -> 156996 bytes reporter/fonts/IBMPlexMono-Regular.ttf | Bin 0 -> 155940 bytes reporter/fonts/IBMPlexMono-SemiBold.ttf | Bin 0 -> 157552 bytes reporter/fonts/IBMPlexSans-Medium.ttf | Bin 0 -> 202460 bytes reporter/fonts/IBMPlexSans-Regular.ttf | Bin 0 -> 200500 bytes reporter/fonts/IBMPlexSans-SemiBold.ttf | Bin 0 -> 202632 bytes reporter/fonts/LICENSE-IBMPlex.txt | 93 ++ reporter/logo.png | Bin 0 -> 9654 bytes reporter/make_sandbox.py | 82 ++ reporter/planktoscope-reporter.service | 16 + reporter/report_generator.py | 1272 +++++++++++++++++++++++ reporter/requirements.txt | 6 + reporter/template.html | 401 +++++++ reporter/template_combined.html | 734 +++++++++++++ reporter/template_onepage.html | 304 ++++++ 15 files changed, 2908 insertions(+) create mode 100644 reporter/fonts/IBMPlexMono-Medium.ttf create mode 100644 reporter/fonts/IBMPlexMono-Regular.ttf create mode 100644 reporter/fonts/IBMPlexMono-SemiBold.ttf create mode 100644 reporter/fonts/IBMPlexSans-Medium.ttf create mode 100644 reporter/fonts/IBMPlexSans-Regular.ttf create mode 100644 reporter/fonts/IBMPlexSans-SemiBold.ttf create mode 100755 reporter/fonts/LICENSE-IBMPlex.txt create mode 100644 reporter/logo.png create mode 100644 reporter/make_sandbox.py create mode 100644 reporter/planktoscope-reporter.service create mode 100644 reporter/report_generator.py create mode 100644 reporter/requirements.txt create mode 100644 reporter/template.html create mode 100644 reporter/template_combined.html create mode 100644 reporter/template_onepage.html diff --git a/reporter/fonts/IBMPlexMono-Medium.ttf b/reporter/fonts/IBMPlexMono-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f24cbab268a696d2f075eaf1ccd465344642ded1 GIT binary patch literal 156996 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

#j z*(1IqzAqjUkBTQ486y5|9J%t;w6RwH%2H3Cwj=aRi(+J>O;60x+MX$&Msu!D&xi?$ zJ%+{+@rJo~9k545K50q5_q z#F=pU$7b_c%tDiyC1)|4)H8FfW`=BYo6%-(MNj=4y3!6Ton0tvJF)eTq1*lxo5QJQ zZ8sJ{*>+XMXC$Rml3Kmlvelxchtu?s=Iid|s5;4y7N_azG;L4Q$I|rKG_~4ff6?|d zeL79;+E{*KE%+$?9MOR^-@GJS-&JmJ@;Sm(YzBVQ4^81N^nfSA*`!?jv5PV}i1_NU zLeBZ~EMew#FZuX9Pg;M>r`x{>JC+O$@L0^*I7yBBuG+WlPU7sY{ z0+AMcV9zj%+VflodoM<`HA+vwN~Js=_!C!iw66X8Z*$!7Xv`;}E;p~U0!4WxcKvMh z;&tf67oibvKpVacJ$N$;@HUj)rt0R2Pq4UHeP{{xWFoasf*}FDTAq_7=LmZ{-Hf5^Km{LLX?7Ah)__* z)5j@9CEyoQ29^+8U@7qg))GPBJ|Y9y=pAvD2f_$1ri$9H=9STM zIqlhzTdPtL=lczoZQSIDlqhF8qAcQS^7jxg!n=LUFaZy>#0|En1GF+viQe7uOW4vk zX#2-uIa~IIk8A6F+{t>IJ6RS5;$3F0_uTv3)%t+DS_g@=amf9NS?ka4NY}o&LsD|p zXKaxW?5sn44N7jSHT#iTdAatf=pA-$z4d;S-uL4i?Y=@j6HY-q!e#63f<2kWN@86f z{5m{Wy!j`I{r3#dl855e?{o$D^{={N#N8mSCf@x%cO72+2{!`I{v$V%s268kAwGR? zHwwQ#$Jw15`W(G3xqo5%x2LE{-Rz}i|6jGk`BDRBA6g6WY5~?hGI+_ke7YgjQu0Xy vy7y5oR*f(rQ#Sc4CW%%yw|tk>-e`<#33+3vZ^ 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

8?f~5QNfLSm%vgRp~j@E<7p-1 z+ZT|FL`BQsUa>-MJA^HpY!8g`u8+>%yE|pup|As&bpFx7P2Mxu9Se8lcjMvmyAE8k zO}LE$RspF<@4KIv4-5>`#%!sem7j&Rf@VfXX8UH?G6FPD$z{a0bxau#P=_}C8TC)H zX2i^Q(s2NUhYfBae(~&-B-TRI{xtK#Jn(Ewk--Wb&R=FJfpF(gCCW@fnKbWayJZSp z9&;4RDL}_-l!I^>xt>X= zC-H3}&Ga0pp2QJxZ80)WIPE#Ko?L_@>(HKD2DX6n#|1D3BHEK~AlkdKl6JgvZ(?yN zx4ru+wV#%?!<3O=>P5?K!oIWPt~K^XP;J@fFpC$^b_|Q_~DMaZ@l|Y@`n)1T4^DgtD+QNRE&+)FuaV za(blU9XGqY0pg7mH^iH-&DmB-vK9=bt=We@WVMmqXldIyq!$3u=$;rBCT>*a^7#k{}`|YrO%Htu= zg@rm9@vH6>kcQwNvUNlSO?|LF)I4hJtR(Uy^vTw^J{v0+xZ~;a{ry2hao`L-3%iQs z!?i6%ra!o_(EkFSE{_vA29^9~bLI-2`DssmAF(gt2o*;a4+B#-nbtCXm?P74NF7<}=)QX-n(F3@(?3kpk>MSC z8!|s0p$!2q{@cucapad5zBU}Cep(NX$TJ^!{YHhCO7qKOu`*6m_72Z@w&f9Jy`Du( z_4N)ubCV4@k}Yg+8|k83)8m~~`tCJtYVgB8N`BS!)j9xQo`~gJtR|2l3HTU6y3&Tg zLmT+vucfw)g+Ef=J!UpuB;43oZiXV#Zl0u)TtdL(!8OuafQ&ImXi#R%!ZA-OD*DH=-HeJjS}YPve*hF1+0rL`2cXR29`00exal4k%g0l>wKvi6|Y7N%lNVd*v3hzk5@%?WN6 z)>7Djsb(!qa!wPaWS| ztwT34YeMqL!PoGIbvtPtL|HqJsVvN&(D87znuob{wr8gEGn$0$Oly<8K6w>WjBt7!a}`%X57Js$W&%HWW{q$=6~|uLQ6?Bna0-SWOdzE6QDgazXBxa=rN? z@F4J`r5R_w2J`eZTZ6yH#XSd6m>IXz8Uxp#aZP}A1!i^ElL=Bymr_{Ky5K%q5Lf};0ZIx_;8 zfik1?s545Z$pD&wz^db+@v_93gSpC~jc-06cD^Z|HoTU=v?&tzfHVj7q5zwo;4$J2 z;A&{&Sc00wHqnM!G!f4UYvMOh6e@!#Pc1-71imd=mtww*6<9Gr!sx96z^(%JchCSH zRp9ji@HBXl`G!u7OffbDw*Ypa0t%@{thfV;(*nFcZa7D;Fgy#!*^4>V7nsYzH)fp6 zd_!J&Zn=7XPtO}W62Zscr0$@2!Qm|j2ba+-En8X4H`M=ttDy}!K5CbFdR>3J5?Ct$ zi*Hdqp+x6T>z37XqzD-jCSaEB0kmfUZEcJED=I;>q5jTm2TU6u-y|L#-{=(uunezA zfNx~Uq48WUx*GL=rVX~CIJBX8VQ=m;o;HdpL&iW6^{ByRde{%@tktrK%QUocG_n>U z$;3Bf7;BuwfEJ~dV_JNs(LSUDT2_BE*|Wj4*}}+OH*<);rH-*fV>0BNV#wn7=t}Q zQe2wSnmvgripLO5Q&BhSPh{H=O-Th<$dHPdGU{*S5k;x@l6R8v&7t04q#GF{gL|1v zA>qgcNB)%Odoiz?eXM(cw2I}Kb4O9m#O2Ecvx|(_rUDuIf zcf3icd8jaoxwn&U8@@&)0ZFD)My)qe5tEi89}=2y*E(Y=>u~K`MT!G+;;dPjs@gno zY$Eg@;whdrbNVTnsD`I#A`-g|(YmBR3~d3E`i;ZAx-|*5GpnhMCbXkgDbzoVPD!z9 zJ?;f(=SY4+oiAWA-XVl=@3jB za>r|72PWa*^%{MWo911{q7c0YSR_zwnQeEH_8HvkR+-w|R9njh)_W7I#dNHi_J;uu z>89@tl?w!$BoH|k5iaBUJ_+LH7gQt#y~MY~A0$f28-);oy80 zohCoYnhYyO3lSS2NSF{PiZgWUfeOdmg6T}Xv0RA8I}?S{*I~0A{&HKE@Haik-@Cn)IbCwnr&Dq#G zt!3#s8$vD9S~t!ayqRqc$b9mR;qv_7>p^*BVUIzdfkaJ*k19@PB$wmNbdgN&7Zp)a zc>Po^mq1XFx*xKh;xbb`9Me!H`SY5+25=AMBH=KaUMp7kaFiQdEXAoPlI#i7x4FzT zuS}=jrp$Eq2u8)>C7do+czCLN2XA)qV@yUw~%p(eUEksu>X`Zj>6fra6XLI$_@11-3#r6g%~F}u*O*!v5s}{Cre#h zqomgyV}iIn2_+-}fh4qI60i^ngYT7!1d&iW_#OvzSs{MAaIlbr!NP^&w+LMN^Ee*9 z+~h97zN>!UF7}FrSqn!PGG#S=xy_F3@5+8Nx;-2iu79i_28|qf%xHkH&k6Gy!+-#A zd}>J=_Q`3eNcFG4uwXcs;`+W}`j7HqWRkbD?u1cN{Fj41*>Bq4RZV{vlV+qFL& zVWK@yXg0~w`AlgN`$TP&Hw;d0IfNdK4GA}-7$@4T=*&@&^g9SY4RZZ)oHWo!LJ7B20`I-r~nkr={#osUj7@s|f(#yQ@z~&8fBxM^%D;Q? zQh)x6BjpFf`SM#Yjg}vr{t`0y>T6wdg#6bagFpY$BjjI-3?@JN0{GC$@5&C3o&sEi zZtT{;vdRx19Q>o4q@D*yW@D2}HTGC8wASEr6x*%c)u!A7?uXVdte0_q z*?ZUoIsv;@XJA9*0Z5+1p_6HVTN#=Z{iXY*O|E4#EVRPqKP|A+-2hPO?;V&_nP=-6Mx;r_n7!`6aU1- zFPZpHCjP6A1r#6QC(=xe!}9rhx```HJlDiaOuWj(8%^AA;!8|?m5Hx4@ogr)+r$r< z_{S!G-o!7O`0ua<#V@Mw7cb-YI^-8G1inO@V_vfOh#$W38r^u!cjFzp@ebV}g_r^X zMFO=H=}Jn8D=j5H!}pfr>2aLu!P5bLx)4v7^Sw{w>F4-fv6UjG^S%3!?_o|IMm{q4 z=s3v~v7J*GFp0a7(&jyx&@}N!W+<8ax#qeMaVf5A5mzE^G}rUYbt~efxW69pafnYb z*PF~W_`>SJ{c{ixApV%S{)D-{9Py`d|0cwrL;NLkeY?2^pIGlU|k#4TD&2=8)V%)DrJRNb=T+cGsO^6rb{u;!~ z5uaeLPczpYh_~bZZp3FIJ`eG3#21+2DJ2Jsin^?q}GC*r$t|9=sG3-R|5 z|1aVnn(JqvjP=p?<}_~SC}ujD+m}x8rTzE)X@8!nzWnvRbha-&Ql1a096u~So_@G~ zSR>^L_;B{u#b1se)<}8$utv)BVU{BfWR4q`NxvtCBt%16GMyEfoc6?!ggEGAAKdAr z+!A&=*$3T}TY?BW*^lwX4bFQm7_ry6HTa?f(Sx(sxiu6&5Asm_Jd{05U5NkT7uCJG zDV%D#@e17xPL14n%?Ff!$$z-~|1|z1l@FWdg~4CSa`oze#HQKtUzQbaG;?$ckF<$4?ex&Z?R0mS0aVi}t z+Oz(k^(6S=JDmC$Qs;206{&fg?-`W$L!{`SbIe{roh$qbk_&mh>5nqY;PQ;%< z9B-2R5cluK{bvw=3-R5E{U*ulxc&w1zlr$Qh<}0jWyHTm{Kx;ADEcJmIFrn8e*Ayd zM0unjJG+2>PYg+jxsHx>b+nrhzjLw=?sQUa3A>#4JeBUfnB!zW#uryR@3~;aUgy@} z?;VI99M^u?<>Yc-^dP&Ky6<@?3m4N5>qT|1ZVCrsH*Oor6!~v{rqM|Bp?Q}d41Qm> z+O!J!!Oy$w|F4bm!P_X}7qAe1%~k__E1suNFtw5FPMjpWlPSrV03nN`2l;q11(PAk z?i5P0JFSxJPN5{b(<;e&3I$UQ$?mjDGG=$kG9ljr_$cs-C|&)(b0Xze!21udRmg^U z4KZE&Y?=>!T7_(yi(qq*O>-&YcpHYU_v8L&5Z{UT7vsMr@KwBj47Fy+y7?h;(1gn~ zoYQa3XzS*6+$Zbi&Hq|A|NpgaZmBLRs;1u)LlR=4qh4M0?k2=9o$P}u4jaOX^iLT4^wn>_IZHy6*PJCzUn30lI-FiZrZS{n_hpy?YdU$0IeQ3fs7Lrw(?Y%Pv>@nBfzyCc z(sb!m*g**e#^L0isYC7oSEZAUe zrb>9<-OJ{W7}RH{2{Di}ZTzId)byNjg=tmA{tLM|V@zsFT58$ELN|eWT_v}P$K|uA z7rtpUO1<3bxE1^`se`sArwi~gEBvlEu{?fw_{k+%w-w%mA2OpY z4$H;jMg`A(l83I$H6^`sNtXnJ>Pr9v`-hUA9pWwV7-7 z2OeC!E+P*W-!_Tie^Ra#Kaz*gGR;&&?8ibULd|SlGl(sEKSc72y5&bXq21j`+EVu< ziAkaX=w$~=@f|a9YER|Bz>FSw=*ohDfr2Xu&rizr;zx?)GWN6j;4lRrB~)Sr!g#tv z0C(~u0AxUr{aS`jXPLU#K2NfR>0X4VF>rq;_f`IXV^tfC21GLn)qrc5Zx z%8pj%qmCb!Ys60hH{A*n+zb{-v2baViUv204nAd}M5mcUELGIbpEPArSxRv1*kDT8 zqA8Q+%Qcmu#_Tg}DeW_|8$*@EllRN{VxO7@KiooVIYBA1ikT!6U4C52Bm?c@*avrl z^yo~?+rOZ{RSrIbEQObnp@4HVEgk9H(cnN>aB6KJTYrB#O^Sx;)hW}G^0OvP&MBWVAv|79 zn3z|ZQBd}DZrb#e^l{_UG866g<5Xf%Ff%wY8My2QE=}NAe29ybc{YD=kopB3Uu1Sk zr_=dB=?puYKb%~T-blyNX4QsCYrj%8Z)Rg+Q=qgmJ27W`L1tNU<qPZa_{YtORUGB2LiV3-g{Oqwt69V19pOYZ!hju@x4U%-sy6sbu;8^zz+EC zt+#H5EDYFVeD~Ji9==FoC%N}dlxwV8`ChVn?{Ycc8bJRK*eUuRd{pm{P1b3Ekz%!j zs$+p1;b@gu%t(VgC=1TNx5dI9nxg&Bhc z7vy6W++gT@`Qo)ZrUi4dCsobdB@YF&vm$x<+1rTLPspX#ap)8HuDgRbMlYpS5BNM_ zryX8EZ34XShQH-a>;Om`7UuTeZfqjKPNyg1Yo>Rn3zcZ=F!^alc$}uW}!^W znHt?mux>kCW1R~Y4%p*ddVK%zTC4H!BVhYfluKWlfej4YGh^%kqyF#k6hGl~*Wm=b z`xv@nfN+AX8$h3p>{vEu?!yFc8Q^7smjm{A15X}45$*nE^>N(Iwkr57Q1)r6BGEcd z3X|X^({&Q14t-yXbq*hfUDi;F(@Mp3mRJ*dEZFgvrvL1B%;+b;je~#jdXtwTTuuir`_w03 z|4oF+LbwF9g&9CEAq~#BfYt%vkO^GU5KjRv3LT^#U;G#aor?bQfq{ztE8{Wx<=*_h zzWluxdzg5sqo$7nF7fn1HyIV7UFa_BV=`op)YvXVtX2 zsSslmC(g*rn=x@>bs&3coqT3%(faj8TPI}|PS42B%g@Nj&&$r3UYNyr4gO2Ef=7s7 zN239$g`qS^=79^$K9B(aX&5s2FEqnbng~q&87>hd__5VGsLn?x$gmcJ-s6cItFgC- zWi~!-g9M!4)gV3=Ms{nL0R$ z)O_>3g*<3m70&XeYRH?zoy4IJRiITDjVKszH1s`ps5t!eCHXx)`Io>Jy;!A*XVrzM z*EX`Zz3-P)!{oUVe0URe5vrrBz==6&(Db2BMX5A*2FgtU4eKhEAsz?czHj_t3Tgc{ z%2b+eC^X!WrqV{9dr}$hl#`nv{P(F+alhIQ(&H>N-*|_|OFYv=W~rHSO5oY31IQ=o zi|~|qkuIPx;-;R|cD)zQdJXNnU0n>zuZ~8?-q}&azx0od+yj)L@5-N!1Wg1`k(i$1 zVX(g!i3&3{rP6#;Q#3cFCSrfh`GAv4Ut}LLH$}Fi2hk4*cUKX3s^>mR7|?iwrHG>f z$%OEu65FBUXR*{oum5@}6wmWm|G+%fJ)m5GcCL>!kL4PwnmQ0N+7yVLzWRqVeMNIu zZ(#1~n<#L!xhq|o9+2y~t2f-at2Z!rW!{hH1$XRBt?r+@QdfC%SMOk+XFuc(cBlL1 zl-SB~_1S@8_1OqhR%*X9jRao(q!K9qYbYNl+4#!mmOY)D4s94mHn&x2&dQ~so~hzl zF(q6O1VbJIjN34Bm^E~+3M@fvIx>v+GkbMt*x4%p!u-`C%wOFG{m%1dvGZ4P)jYO| ztV3}VSu~IJC(H>QfKDj1HVr?Ih00SeNr3H&&V(O}<&lpkuBZ9&zcsBjvwCq` zw=(22e#ibni(>5hhV^B;8hk*$T}EmS;kEZWWPW4#A@ec9J@%pU8^aHk zUAQHnZ2?B3IK4sJRbw?PAHZxh>4Pj-P%ttfKO7q~mYUh|!{v4EaQOIP29q`>4D|HO zKjIOiHaG!ou;0#wO;KrW0!}#^ryK_-N_-1nStFdt;w!_*fJP$PAUYa@B6e*Kdd)NI zU@?0JUm(6-BU^iC3{y{a`%u&G{-HJ2W52`J4R$U1Esc#^QES#3T3LX{UG=d~_g4i| zfx74iJ#1FJqYRsQ+sB#v5)lOoclQ^9d|MrlY#*RaV)as&9 zhtxdh@bA&}gBotz>7xv{!Skof*M-gPKipVTPoHWoA9<`f{CJyNG;X~8ck3p53fgeE z@%Cu;30nK#8E>m|jxgSS9lS+-U^E)MukkjMKX$zRx^>VlgWSu&u4x)?)44tg(Af42 z?rvt}eZY*oX+%wpEG%N)_?jJ9d44IWi5o4()d^nJI>yFwtg z%YV?L@0Uj!eQTNgI%M)R9)E8EhQp1&LAL`KJRf-=u0`~@qYlJBh@rPVZK(WphTfQ4 z|L5TnD@lz7-BVB_I!#W|h#y`{Nf{Yx?7whc!{M8dr(I>xzzuoQkcYlL!sno3@XvFB zG_itLmW^Gv&ir4NA#Yxka@=v||Du0g2)@E_@9@R=KI)@LHkMOZJxh`aa}`$3 z=n$Vk_FT-3W#x&9i2*DihwCs&g9nMYkwvaJ5Jy%R~2R^&Q2)J%PXm> zZ3<4x%9@1Vx#DVZ>)?iBHKAa}l)44!Q%WXeDU(jKA_)%M308k% zP~Qg~N)oR&X@N9)2jM29H7)T4lU7zy04JyNecOrzN=!PzDi0XkK>JYO!Ua7$&+6^m zx~)GL##gz6i<_4R7xeV*tO_=Dbp`oBU$D2MucLQY$L1<}x~i+=Bf;f8-94*2whnZ) z_lB!Np~x(HLIFLchn42(@g2Q=oju(_&gFaVlyqybvoF{l?C)*g+_9s*cYCmBi;F`A z0B`N=>+k68*c|Na4(@30J}Y>}KyPQ?=FUz1D77!RyQjBn^X|^g9aYUeU7HE5&FyC` z@7&%IY}&Z7vwM3*a8>(2S8!K*cW`q@Z*W?L{Lq*V`NKI8uRgeoa?=mHJwRd*4Z|v#_?(Xd02Ew#89T#lx zpBXfG^lj?x+}Yn()z{fo)ziDRdS%j<_FxwEyetG#a< z(C!}Cu@QKm-O<~#v#TA%_T6aj0=c@|`~5|A^qt+&-|sy!+50-Tb~g`nZEf%E1j!eG zv${~b;Fg}=9evgU?A_RDon`e}oz_;Yuk~ZbIE)#*8mwakF}L1qEk{hbdXcXR=_bgN zF2vp&eSFnn^;sRby9?oFH&vUFXfpxOb0dh<(7FN+!&mvUExD?>pr?_rHpFI)Qf(m;_PxUc{SG<_^YeJMQ&Z zTM#<$IdrJNy)F+S@@NVpQr-AMI<3Y(GY zWVltJcMsojsI?g-odwEuVjjN(?=)E(@kda$Ln{U`8QIR141(?iGsxxiB3_1Tx}$S- z;%$wmmvc2>^)as0Lfzc@{b=Qx7(Z15C;F=bG>y>?#N8;J@To#gdhjOk%g{GE@y-r6 z&syZtG;ZS(h{M((wFPhPMrlMxrxm)8a}(o2yhQXIV3@>L)IQrd?;5nnGF-0&u7r2c z@=9J7Qv%gJo=0kc8U2EmhgmFK2b*@LX(#jPMudbXwG`o@Ii?NmaU7@nLA78UJ^D}= zYWtmdqYn^?PrDFPt8WE`R|4;4@9UjKC}TI^5x<_z~i$*`P$abvxGi#=+Xe zOrCYGb)R*Q^-b%$*7vMOa9-9|tlO+xU`XGL8IBYf(Q~c&)~T3p$-sF74~a<_13nIG z^q_T#wa5A-&U^cmb))rp>mo5(ZfCVQcE zwe=Y>1*aK&LgZQBvc712$-2S1O622QuAp@-_6=Sv3au|&ABRQG~?W_7SSrq!1EEY?|Qn5@d7b|cY*eY?HSS{9wwPKw(UaS`z#0la=oDp`i zwNIR44T1rB#Hr#mak>!JpRAptU2FuW^odPkvvsEE5L)v(Q&}i?gi(agI1woF~r5DP$iN9}^dfi^Rp^nq+%E30{$iak?i63e zJpISS*Q^V~UE=HF8{%$pkNBpzSKKGC8&EueQ_&t04~s{{|B6S&x5Z=PJJze>yVe8Z zd*X4Nm-d8s()xq=f%T;Lp?J#rzO_;O$huSfSUfEbSewK%)>p+(aHiU`;%DOL;uqpM z@k{YMMi+a<3)Ug)u(etITKonluDxje(drN{iQi!a^8@j+c*Xjm_&@P`@dt5G{89V~ zC$haNUK4+@-WIQmzly(!zl%4lr^G+Ro7Ru4A6xH=x2&hdKk2wO@veAJ{7W1XgW@p0 zZYZRb%KDwOWr9q!w#a~WK#q|~)-%>tjLUv1Q{-5gYWXfQSuY!8qns&cS$~$ZF-m$+!m(M-mrd61WwZ5J>sISJ?4-TP zx?V1jEwWX%$%S%}Tr8K!rE-~EE?3Bva+N$zu9j=$TDeXhFV|x*V$F26?0Wyu3;7lV6ZG%Uk3Z<(K4_<$igq{EECy-Y)NucgnBIugSaQ*X1|l z-SQs!O?j`pPu?%TB_EIv%7^5`@)7yJ@=^J1`I!8U{I2|-d|ZBCJ|Ul!Kaf9^Pstz2 zAIqoZ0r`yliTtU2R{l)>T>e5nCx0oQm%oxP$Y0Cf$luBryoUoEopvRfd|NCaO%8rLxr|HCg4TTs1}IseDzSf~wH^oAr0= z4OOIyRf(Farm0d@rlzZMHA7XXN>!z*RY=vSu&PxN6;*YrUNxvjHB-$}v(+3mSItxN zRg-E~3sj40wf>>n)I#e`>n*iNEmlj^QngGiS1Z&?wMreQR;x8?ty-s!SL@XVb%Huk zoup1yr>IlaY3g*)OOXScBpREqjst@Rj=w({c1q%QoGeh z)LH6mb&fh$ou|%M7pRY_kEsjQMe1VpadnCMgxaGnRhOwxs!yrQ)fMVWwO9R*x=MXo zU9CQ&u2G*=*Q(E{>(uq?26dzQyt+y4Q(sUwt6S6;)tA(l)qZuW`iiJjz7>QVJ=^_cpO`mXw(dR%>9J)xdd zKTtnZPpKcNAFHR;0riafiTbH}R{c!U~lr+%rPSHDs(s9&q!sNbp=)l2Gk>Sgtc z`aku1^#^rO{Zai%{aL-LUQ>TjudBbRzp1~gH`G7Wo9Zp~PxZEXN4=}wQ~y$j)Sx2@v?HP83 zU1?X@)pp3PvBP$)9kHW!on3D?*p2o~dzL-ho@39o=h^e^CcD{QV7J(USuz} zm)J|~W%hD=g}u^VWglm+w%6Ee?REC?_Ii7ReS&?WeUg2$eTsdmeVTo`-EMERH`$x* z4ttBe)!r5u=-_y5coSV{_;;zGEdb&HR zDC3y^-94O0?%&qiq37YBuxWpQ&lP`T+^susIB9;CfusynpzXr*{uV;J#-Oj zt!?9*p(X>hDPpem%b}(QbFB*vH8q**W)ruVSOW<)n{t{Bmd&QTW`ljRDX-a-*KEpb zHsv(8CAM$u1-+=)P|X4^wx(61hqyM-zN39pZ%=oiy=N<0WP38^54yLuZyM<5SCEBk zRMXmAPemYRj1Y765i=&p=fn&d*Cu}xV}|SIvF%)}rtMgbmcB?e$my%}_D!9=n+A4l z!GxB+Gp>DeC#ItMI{Uo*D6vLgjcwoB+YTmSHl?EQsMcJW+BsLcj`}KvYpT=Zy;|!V zW83>XyD+!qFSE^m)m$HQWl+)3n;qzyU{Qb0rr4{Nm}fC%HZ{gPYt~nR_70|E$|jFU z$(uI!^tW%qG+2M)=1uKr&BP9F^u!LnO73uI9U(%c-t)E_s0hbE1AZrZTfwEY6p zmJ3YVFEDMtfZIG2jy9%j_0So+6?1hv(Ab1f@>Uo2*sY9|u1C7>1$`&O|C+uv-g{Z! zu(xe&?@ig}!Ak7(ad!)M`I^=R+?fzJ20BgkI(79DJGoh9=NW;{Gh8MQg=^~*^<~N# zUfE-}`|2@v`&J02?ymN3%z!3#@wYLcDpLgr$-M;53-R(Pj`uZ`~ zx2;2UbZ<@U@mGL*IS@DWU(lA?vuyy~v3FocSNlMJphs6HrH3aE8Aw9Uww~T@-EJ+W z;;p8AT1+`DrX5>N`?WZ+;e!?@zv;s*^@+W@2AI7BJB{u2)gZBtAEos9DAnhCPN-l$ zyKVf|j$X_gZ{FBtdad1$#!Kwy5;;@2hVc#6)YT>q_{qRRuBNrspwn8PIuJvK0n@4j zx>XY}F%3!%aN8yfc=TvB^=mWrZFT5l=+eq`3DvZ)bVkh56!8LGiI%3s-MX^7y~-x- zc7##lZWcT#XL%2GJG4a;&*Des(sZA;#>BI^xa70lPLbH;tGLtdO@@)1!ht4J)h1ol zY$SR!R{`SKys8xjt_>} zr9R+^%XGG7x|=NXJ+hYpuf!Gl`3n7fh3~m)1(v_T)jq5f*YKm1H9mr@ z@jchg-`HxerM|wF3!rVS{g&ReLBB)?y_RHuMe~e8L7FJz7IP zL(gy=J+vuB-)~RDB2RsL)r|)b3>CxQ*NW7jUEM} zd{bW3z`>}HWl+@6RuAn$kye8rcAE2ZZC-_ERaI z$2_ky?V&X~?wk5(%?`dWxry>jJA@oQaNcwHz~I+v z@ToV?wdw^QnCIHI1Rpr>893S&1s@nVT2+G&95@aim{{AgXb1DW&6KZgUEDYIZ!>Y7 zQ;un;kZHe=Ltn!OA(KDk>?l-FR&YcSiENt$KMnjT1DTMhP>WMoB%L zrc*SX#`$PEjq~a0G*0U2G|tG=X`JGTyv^M`I~WEh2nHn#3`%MkIz=!zAHm>!8U`md z49>_fC`EjV898158Z94jt?OSC)%CB@{TTOk{cE(m!Zo)WVolc?-LG-Y?T48A0b*`P z#G3B)W(Kc5V)E&JiwQsdyhh7&T{mtZGjh1KOXh_o|s^tu> zHC|CIr*N&ykA`&lQQc2)UzZ=%{RG#VZ=)d%CmQ1Zg8Q0oQ7vb1t?Lyv^^KbPMhzXJ z+Exii4c((P2ELh!jcVHj&kcNSo8a2O*Fy+g8~EDxz_o7QsJ1-JVfx zd*E90nUPnxHucxG2CfZ!ZEN7#z}L10t_^%`Yv9_zH#5W0uz_D|=wEB#o2lk#t$|-_ z>R)T%n;GV4t$|;w`6^m#;MW@Z*Bbb>hW^@?4o9^ujo84~wsSbDZD+)${k5%(YXe`~ z#<3l-RO{Vv)b#VH>E}_?&!eWF zM@>JEntmQN{XA;=dDQgpsOjHP)4!vpe@CMRex0FzouR+h58rDOYO#SN&e4`(t^#;Dym*J?kpAZ}P+OEL0fp7Fi)aZ?< z(HqfvL;rdMzuv&FH}LBX{CWf5=$WX|Gf|^wqDId|jh=}bJrgy0CTjFd)aaRLgQ@Uqm z)q)S#+@Oe=!4PxDLd*yut{Y2+7h(p>R#>f;p18@>4Aq*ETdf(H)tbpr9Hpf5n-LO@ zoiW!9x+Z#7fh)!H4oRHc*3+|HKj*5aI`bBs+r8rX825@_ALmVIa9-av7wo&{{Apf( zf|=$3($h4)+>A%EZV2*$9q((CD!P%PU*U9`J4wQqE{c4W?w=6iJIRcyPBK=U^a0n8 zxVk!Nm;hkMnI!n(G(v-!f-|ML?7^3&4IBAFzvY3|*B{ALHJ`A5W^3)q^9Q7o8-E6*>4*xm99&QreYyUv{E$dx` zg8~P(!Eu!{2<&SI}vV|+Y$EQo2UYwJ~&So zK0aq5JV%~`@B(=O!jH>K5nd_(2jPtpb%CeOtqAXwcOtw?-i`1fi5iht4#Mxq?;w0q z{t)3a5<5%aaq|MgKgvHM{EPex!Z+oc2oK@hGXYN;9D--3+Xa?_uR{&O`Sxel)*7hwxo>?)-(>o9M0u%35UmXxDfyeD$W81cK=S=M!hoNiCJXI3+h;1 zrsIS*9S2^u#F&aPXm9Xn4#AYabAF-|zDzH|Z|PO|D7_7Tq*vjGlnkGv@kot_ztI$U z6_wF7{;D{P$U%4x&4-VWzB?1%L90!=4bPn1`ssL-e{_E@0*|Bldlk6S-`k`9Q9XwH zGj*d949*76QLnO?5>uEOM31BWbIPs)?VLa7-ciM95&mO}&j-~<`WwBpnRtJ-+e)M7 z^*trnrmnubqf+V!`Iy_@<}$%y+y;iLP&555@eoqXHN+3x&Ul0PPybD!mNo6C>7n1$ zoagLo6YvK{FT>t53g>XhhYG-BnC?V5jBvP&!v!2xa7fZzh-n<|=5RWPPjNVl!%Pn8 zW6wBKh||p+;v?>sNc?N!Tey$iZwM`MF1%OIg|F=%aRqkrT_^UzGxiSLIr_f~@%GXF z?E#$8{;mKPL;tP@W~2RG2fUB=Zy#zn+TWK^|Dk_(fF`5;X$lgKL_wk*QAF4DYOWFC zr{QwxM0;utc+4Uc?{N4DzEi~Mw>UkM!!aDPY!*0-9c@^V*vxJC4fx7i;^!aY?*+g* z_TOjWdEN{!^A+$YZ-yuN>F^Lg5uV{E!XNx2@c6zM_fK^Hw!qVSFZ{S~fXDW&$hk#) z6@T||imtZ66Z=u$72TQ55U6Z|vI73tPjQYehN8*z9 z9u`4shW~am;G77b?N?CZD@b*rHj7LxeuJ3m@h6nM1%BFF#9IuHaNTQCbcgW081(pw zxlgdZO57oB4j%w_`@MHseIDXiKb;OZ&sr`R*{GkBxUftB?Vc454X-3p7XSFsc0IQS;Nfn6wXS^vZ? zly|Imu@7Ysdsj{t2_o6rh@B&8);8F}1=e;^D5hGyu!XCzPXW6uth2GdB8r^{4PrL- z8_X4L)`e)rrPe3eI=+(jPGA=Y_D)z=WADUz?Asj#s-PZHii*TRyBJD)L zZit6qW&a7MsZK7MscL79C`Fi!I54 zz?hD|0C*&Dik(Gi);y6Timg^L6`ZjW?Rti_iuSo! zCt`2QZt&10*r9SdNfzwI*)Q(0c405cebz^@Z{!K<67d7H)?QFK8M`fL&&BoFWsz;& z$m5_d5Phv%h`!briN4mCcwF;kqMfy$C}rKsqm?^&wDL6`mE1)XvA)6Mk$ZSNavyo{ zW3Lfxd5k^sVa`v**dvX{9=V{(XPF)W)R1;HrK0C#;G84>PAcr9;`0v+tRN_aquh^i zht>~qO5yLU-(!6FHg#%388T;~9VE^5T*6G$3j6Qp@JJK0N z&gD^Lx4{!%s6#KwL?4-o-FUQPdJa7M7h@OSI_%hM$38;Z8F-d~M)G((cHvC{w@ky{ zy)gFa&9z#rCD`+KJmmF8?1=2f9>udw{sd4m9eeiZ(Be|;^sB|LzIoU=h|{^TFYpxX zKct<+1GK}d9nQ$|PaOW8!*?lElEY*UGd6A7u~X%6Sj1sDhhYw9a@b4@ZfXgKt2jKK z!;?AO$lk{fXoXue~hl@B|!Qonj^$90(cshq$IPBuEm&1?r z4Q%X7IG@9dIlPR+y&PV{;SGHQJNpuD=I~Yyzslh~96rF|qqLTs@HmH0arhGspX2a1 z9KHg{An_wPa`Z9nd8PbE7Yp=hf-rg*;5?&;X`E;DkVh=6b%m)BR1%=`c;*OUD(4(M zOyoSHhuNHG^e~07ty& zGK3kTh{GuyW^st)rEnke9^n{-69jBsNcw+qNTc-$*f&h!pEx{-a3XXog)eaUa}E!1 z_yZ1~K$wZ$#}q!q;k_K*#o=un-ij~_JDVxIfx~M!+{@u*98!DnoWl`9vc?75pwq)rNCpa-mP=LwBu$jyxT@WGD32N3rL6FZN0A!+z1bVCy`J z9kT~u?Z1fq*nfr9VTtj;iHf0fTB)dJeT`gv-y*uQE26ce-XrM~z4 zQJJMlL76B>(IRnCi{#QOYH2}>7Ez1-gW9!h5t6ltBBJOQgj5s}^aoU*bLRRKGDwIN z=iHe&XXehYJ9EzPJrd)fmyZSE5BPj&6HTnaOW@RlM2gaiLAk#TD$r*}*|){(y=YE3 z_UmEJ1{0h?&ahWs0MUNcTz4(>-?Zs+;*V|GWZVv=S+`SZ&ZU)hyAGv2u2X5R%PH+s z`6!l;V)@8;`N(+r$awk4c=^b9`G~Vo-lFVUwZx3ur8K8;DN*8-M9Yep&6_xbG?_Nn zrd(MkzRRbnr%P$Crc3>jF7-<~_0dDfyY`q{sFb-_`) z#>p^Y-Uv1m-S|Da@jSZD2XviJAkaUXFX+i%!Nq@LEh&zd6E-MlB>Rvn^j;M3pb$7p zCR|1D1&o6{YiOBkaJO(ug`d;o<(1U7P=0WndYi$Hw_+C%y|V+Pc$SlWKRECq@ZU$k zevg3p9=9jKc29xhzNlzzZgN~RBT&dpII3f)=hLtm(@JqzM_3Xz5SE7Zgk}1U#q6Wl zCeV~DT2o4SSU2!A5|-l&)`pc!%Bm&4F5F63fO2wpe?YB>8R#4mjmqEU{cA%QD7f_ z1P1XRa2VeK$M6|2hM$1bcm_BJ;$Obr^6x@75L&dD9KGMeZ$jf~=CdKSPq{4Z-9ucy zo74zLnz)4*&@}0@_<;z_96O9dM@^Yh@g~453*boR{gNOVjHvt!VH(LK;fzYpVas}i zEla#RJZ9&5VxD5xdWK!=IUY1#n3wEYugvR(vape)R@`Foa3HOA;d&6-(rfaMOI6R6 zw_CyNVpHdRaA_kfaof+ z=%ULaA}S)fh=>>v@nR8KL}Xo8eH9haRn~RAmUUtB|5iWGWG0Ea?*88Q^ZBDS{Y=mE z^ix$`T~%FO-C>+D7KRTs%c>dQFbdx|lX`kl`i!cnt-Jl|+rMVgs12yzGHPtg_|H_; z-!ZAd##rF_QR6389Xb%VmPwPt84HPO8K0T6WA!6-xc2~_@0_)8=8_$6^{3zkyBYJ_ zGV99a2Gw!xV#bU|@O$H&B|Qth+qXCv)7RsfD|%*Lv4ll2Gv3#S-$Qy9Ts`N1UOef| zSn6Ahf3~}K_RMbciLbB1y(RcPzZVr=Gt_JFeL21-_AXq0)rkpz-ouy_#h7-}g2l6D zE{^_uKVzl)?%~&&Uc*Kr9Sm9@ZFb5REvMaZtnam9&W?$??`>3CHXh;sh%zFnawY38Bi)gM%@ z3CGtJpnIwSPXopQUIcUiIu)Sb3A`21pd?(rRe<^=PN`dgG6--3;5q<(KLeN#Abg2d z0)GVzD2Y$RZx>L1yRKcoO+=k15Zwe@l#<$^XQ;pQ0BS!5kOrXsBwi5B)aQ9p+rTN5 z#B-82qGuF<`htM^hTcmuMSa%@hyYMK)F%BF3!rpJldo8 z{x8D7C6D%8{Y<Ek7-9+$n?j<^0_l4qmtOpPt!@-U^(u1Br&$#IN zzbFYWPoOdIW8fN7RMMET0%+`z%_LgF0i>7H0W`+i05twr0qA~`8~Tm(QsbYiQh%zd+!!htwwFK)(}EJ%LMxsct%e z##9x+bzd&7>0LA?sEx6JWq<%c2!P~Q0uT>e{X)19kbKi~^gMkh8K9Ed$N^CQMkys- z6D~xb4dBAhTe&7W(>&_QM$o+k#7hFYmw4;~!kz57ryZd8yLe7=N!KntNcR!_#8(2M zmrCjbs?P+_Gi0ARpaS6H6Vd1bs;BWw@1j1@0;o?sAqn3Jh)(L4LO>CK+H>JV@9t87 z>`RCO#0$ce&yg&c0rXzNg@DF~>lvbl z-sAdCJSN)j1l$j}2XH&!4#3@j&43+%UjsG)e(rtSaPNZ(Y)4736YwzLalk_Ws{6V3 zdE?&yR|rBI5r6=|C$fzn?C@1d^& zoW}E~0O}{e;CGT&fa^Pzu4}sA^}MV6Pk$Hhr1vV|YUls2rOVH9@qqATM-`r+q-#&y z#eM%lz2~z(c1>-%eiQAx`V=MAQ=JRwJMmWBr}USr-vrM+o*k5p|DcXzY!6Vo?*fkF zU3gYf10Hg>=?tlQrz@3150f^rWJP61GR1SkCe5ZG~$}x;N z-|?&i9z;tY;6I`TZ4fU1&HMg?ej3^j6mJ>%Z{Q!mgLq5-R0_lqhY-`+A!0#{#WA(d zI#j&L`VcLegsVW7#R^#ko5Fh7O16q$&+p(H`Tcwkf0qwPv64e-mkvq4m;OhkRt2a+ zRXSCy%B)IO9Z|=s6V;jO8R}W;`RWzw7u0`N|3&>zFH2Cl{$~AF{XY$X2Av_spf{Kd zNrn_dmcec)GSnDm7?v2WHr!&k->}2*kl}H|Uc*y{e#5hd=Zs;-2&2iEWXv#*Gjq9q&KCR@=f)oPSb45eU{_aFze_vZ5I3Pt$#_* zfq}~d14J?CGO%n`#46cT*2}J8+XP+P`0w~1`1ewjpzEM?RC-IrRNjMhC4nxcj#FFI zS?VtJJoPg52K8&|chz5bC4#O#(6!CL3?YUnL!7|?x{?i(A8~W3SB{<>remU3SE5QTR|BcIE%i1h{$9q z1F@nMAI`r!_w!Z`X{3KVfctST27Wl_1I9Zi$n~C|UoB(oqv=$0woa};TX4>SZD{b%E;4pz9AjQDA|~4-%O^XHR=xy$ z53ECY1hpxhl1@u!q_3n)^o{;W-;)f=*AVd#Kq!4v)u^_scBmdw?N*0CCd<^IQ@}JY z;Ov#;mFks2_sO4h<@wJm&hwk=+AG{E!VA$}FGO)Y|9R!24lwecmx*(~-; z_B(bh8_&AfGIj-9&+de_o5-fKt5`9c!Dh01*xl@2wvs=cHn zb_3h04p#ZIHEf|OPnDy}XG{2Pd=0+^V|zW{z<-Mo{y2Y_@8Xa0qx?Dk0)LS|#NXm) z`P=+|_<8;w+r-aF8i^y)>m|h@ggu3wU`N?2=&9rE6#Ir@v^e zWxRkF^BTn6@8VUwhtK5Qd^W$9ck)&Ic6O4lWxwZlu-Eu~>^r`l{gXeyzUSN6Kll#z zFa99A1g)dtJJ|r=%~kvf?!zD9jQ4Xbe+E)Pvir92EWXw^Gkf16v!7! zete!J@h&NVFOYosT*;r$m!kRAQary-N|4NawPfKpONsm@-p)VawNemY#MiN7{COS^ z{aPfc_$(=$FPC(Dg%rtuAw}>j`JL=_zLkB;Kjzi^d)~&KyhH7)mel_05Y>QMt&UVj zsH4?K=rA^Yk(s5~x^on$|^s01=^oDe&%1e4l`lIwK>Ce)yrFW!zr1zz* z(*H=mk^Um>ls=bsNq?92K<7LmeJ$;kE=o^JC#Bn@e@Xq)1?f>KmR}=9@vEd5zLMX{ zUgf`Jf4~aSTl`-3HvbKKhi_r;@_X2y`LEa;{4VxKem8p)>m`5Uo7frt7+1sgc=Ns7 zmp=);{1mkFejdo5=0SWP_vgRoCjK%v@b`Hs|A3eCzw##jH$H}c$(#A#c?+MLkVD9hPnu>t?fIC+ENmn9FWux3T-wQ`vRwDYl>1XtDpggf?5bRqLsg(ER28X;RVAu2Rk^A{RjH~~)v4-Lqg0bsZK?)UqiVFO zNi{|_Ue&CcAf>R4?6>RzRjX>OYMiP?ouW=--dMAuwXS~%Uxm~r`7Hnb-@n(ZWvm?j zOeL#g)vSiqvbtfK*2qj)J4|F2mc*i60iKAW!(rV>``!=D`xbvs@`6S^ z0iAjrTJ;pW2z}}$G-@n#Dl{teX#q59F)x8eoe6CUU5dV0E37~tyN}%ft-Kmm;3l;f ztifhz^>ge&_AB-qwuSA16?jBSk&>k}wgYxz4OsgPuVPDJMYgjC*kkZ>t*{;oS%vF=`F;6<2guFf><)+UEdcwx$EjcWm1eoZsGlfDhb!fYro514&TL=tw`n zxXoawom;bqcjAj=Lq)0)S1OyKZjZ`R*V<-oH>@|TZ|Gics5A7=?B1ich!Q`{Uf-T+ z*u%!R&Bf=0HshX(_SnJ8+3oE`Xh%)$;1S%uz8x*hQ(8bNsxmL*CNEo)VUH?lY}>fD zJ$*H?dn#($V~s{b?VclJ+x8r(i8Z#j<1X((Oo8!rbE6cTHNe?B6~Ft)t&DHmQxUs| zwXa`KZH{j<8~60BUmv?3bSU2sup`4NI2&G3p;UkqXak(6J;3|MqA?U^V=Psejbs4!I0@nAHXlxx%wl8G3AR@BKgUTidmWj+R6 zj8fyxN-)^0KtQY1Xn>9$14s+UM}Eo&12~x(1xj*_F9xOjF4x=rFvOxkL=c2XzQ-S~ z)>4M>9fr7E6Trp+n_RRXuG9ny8cZ0hu6BYzK|J0bqP!hEBSbW5V4&Q?{rF9XEP{Tt zESD8ZxkM?qdH%kl9~9$0l;Sy*2^c z-T>V^AJ76=iint+1z@#5KspDA5^}+yA?5$}!q?iyzmgV6=Tv3zQEv3A_uA(5y?3+s zz22uaQ#5;hynR;seB(RT_o!cl-y*+<{3ZVm|DFDy2IK~854adu7T6bfC@3drQ_#ua zkl>Esb-^Eoq=sA@a!i}0yM#&NyFQQ^G1WQ%Xrw7XqsTU$+XLK%3NjM zXFh5EG%+bLBk@zqDa)rxAxSSJeQ({8yde2ZN?Xc9DVI`XQj=0gr{13WSz1ThIh&8I z&DLkzY&&DSnBJIvWkyIwS4LmP){K)G&P?yj)XWK)otaxR`!g?P1Lcy`cK4>YJ)JRBx%?S-r3NNX?v@Wi_j6*4Nx!^H9y+n!`26Yu>CmU-MOsv(~Tn zZ0&{Gi*@R{4Ru@Uc8;=*I#xfezPEmPeP8`;^_%N=)bFW3RDZ1gOvB2CH4PgZwl_T9 z(BE*hv81uSaYAEf<{g`XVtQ)gw%(gKXnptx|b5wI;^M>Xv%{!a-H6LlQwcOUSxn)Poo|Z!`$6C&` zoNc+#a&fGB?AEcn#_k`NIxc@))wt$yQ^w61w`|;v<8B{!@3@Cr+giI@m$Y8nx~_H8 z__5=sjqe@5e?rED;}dfyR!kf{@y$u2C$&xLp0s4rwUgFO+B9j~q}`JaOnPZ@&E&C@ zr%gUO`Sj%XCVw{hyEdsUs4b=~sV%3itgW$aQd?KsqPCT7YuYxpZEf4tw!iI#wv%md zx1DeMs?FK%*B;SsYR_mdYOiZQ)PAh}O#9jP3+xAfaeCJDis_@L zw@vS!eti0y(?6X4#q{qxR(7oE*x0ePV^_!iju$#kcD&tjzT>M7=ZxMN%V)eaF_wwar|GP;Vo z>bm;7j&_~ydavuVuJ2|^vqER-XQj@{pS5w;)>*q|?Vt6+tdrf#x>t3t@BU_X#q80u z+h)HsCuUC4oSZpja~kJNn$tCB(VUfY*38-16W(L!vGuI)xw~h3&*MG)Jx6;^_q^Bh zSf~*Cb7JRzk%LNw~u2~eZXxrk@#Zwk{Enc*E<>D`v)GxVv$*HADOIIyjv-I%N zqf1XNeRG-jvY=%V%ig-8`-%lu>|P$UymR?OD{L!PT^VrYyerTAqVX5ouTo#N@@n#zQPW#`J?l`pJ3zVf?kx~|!KP5-qMu048P$aQho-MuPwRp+WLt9Go~y=vd83#-0a zb?JKb^<%F;-#4kRqi^pG0XMYXaNx#}8&}?Ve09d^eK#fEblXjvZ`yIwo|_Kc^wLeI zZkBE?x%tMMFWh`_je1SUnssY7t=YD=WbL7~$JR|-cX-|Rw|L(YdW-&+)LZgz*}Xo0 z{hnJhZrycT&~58(JAd0(zg+dpbGIkmzTx)Gx4(Hu;vHFcl-yB&$AmlXz2mD5(>C;O zICf{won?3KzH{H5-`(ll=(jO+Gox02K zuI{_uyz9fezPRiAyQkgVd-w8RXZ?EbuMcl7*t~J`y_+A}ym#~A&ByQQxaW&|m)v{l zH&_1Vn=Myud3VdFzg_g((_169UbVGv>*4$S?u)q3bYI4OMfX+Rw`p7GHvP6O_Xpe` zb^rSNH{O5#{x9zTe!H}N!S+)RyuzJ3f8T_Tb$QzWq?nLx&#@didIh&+UxZ zx&IOUBkLYHzRR?0*RG3?&Uy6YZnk^dV?K{9du;#XA&+1C`0?N6{_gJI9p5u{&;BP2 zPjo$TXm9e~EBBs#vg*m@Pkz6zW8b2EtM=W#Z|lCt_Z{AMa^HLVzS!q{D(ETwQyEW{ zJ=OeF$5V@*+Wyq3r@r5xwSUh34g34|pL;s!>4K*hJiYDd6Hi|}ka%G1ftwB-IB@j9 znP-BYnefcUXHNBp^pEX7bTIW`*}>L>^A6s4@bJO!4^CmZX8blXcWy!8Fc zsV{fEeDBL=js_g9IeP8UeMi6gea`Q%{C)rLzdDwBtn1j8V<(P%_ln__x>pvwvf-8f zSI!>~IbMH!`SGpC-+Wbi)%I%ls~cYJfAy;qrW2D+Y&mh_59|;1e^~X0-GBJ*r0wLi zlRHm-`C9&KTVFf++LxzdPSu?1Jhk%Fo>Rw9eR%59>*23wyk7Tu=j&I!zUB27UO#_2 z;I!d%?&-SIZKoHU?mNBd^v=_VPMEmf1 zAN%;z^WNv1&#ynf>HOC7JJ0Vuf9U+t^QX?geg53}FV0{5MEa!cllo6uKUx0Cs!tyJ zWdA2eKK1#u_0wH{(f?)9UtahuQVc7FEd=Z&A=eIe+=@(XWYxb)Z5zxMt0&|g3N z!sm<8U#$D$)ZhI6w&ZUgei`v)+n4u#`Ptul|K9&q$XA_T?fP2%b@SIdzrOU%j-UPC z{%_v>b`qRf10stBh%2fPb1Ujc@C|`CZD=9p3L$X(PLcau+lG(KSXyz=mbGI}@-DvP zS2aqGQuA(Bwq0w~T8vtwL5gx#@LuO;Rluch+N5cCMq&j6-yp6M0_Qe`t?P#uiYcdf zMugVHB_OIUpfK{O~^Cwe0{%xbB24OM0)|5&!BaVIyHVvlo{E2g}D0RM-QQ9^)BQrHCueD)|DLW@gUzS!pqvPw& z(P@_2s_+Cbm*`Ii{b8U#91i&n{qTt~@fNu0h>L^tYl&Q~2mJw55#UjwrV6zOL&B*d zT&@TJX$HX%=}?!IZ4p#wNO`&Wpf%E-XV;poIb~8Q&&`m)1VQqz zG`fZoTSIQ#g7%UIou;pEeuOn%tBtot6qJ@u%`7lhLrrXX|bt{+4d|@}y=m~6BhVS3HQ8$uO`FAUzHqY9l| z5dzvG1#K#n-r@z`sMCwOFq9#J-Y~n?PTi`Pbm2iD5Z$gbJE(g_pA)&YeJ*n2avN-d z;Lky4fvvn;I_G>@CbwozwGjkQ5mctxw%gJ$-DlOHHB!iSHBFch?!Zf3qsEWW_46Re za~SynSGQ0`0qd-6FBA1knM56<$$L*ee z)V(?uC+N~g-0lTs-hmY zL;LW8vd&7AxngQz!IW~7^X|IxtlG$ixcO7_t3E45_s%LSNB3H4I*U>R3u>)~hLj?H zxTZkkTTlghIf4=l(JmTu%lZ+(Kp4(L4*jWT{XKeCQ6z3v8$owO(7+-!PnwdtP9?7V zafRrDs5`)dL7WOa3`I#+Ana6DwgX+52P(>>Vy-jm>^ig7t}`}m-MLen=&(Hg+;h+E zbQaC#MYAU)*e$x**UWYvosGux25eG=)PWGoD9p|u=ttEgHd!#3-cXA-P+3pCWd=Wm z4TvR7V?D-{iYinrjFf~KsG3AyrK2iVG?h+$)rqJHpHA&PgODh7CdE8eyiYkpNpS7zZ&*Y~Z4 z{&p@Tdvz<>tLlEO%B0J@?^@yRVJ?LA*e3p z@&giyari^Rs0;TVDuZDj(#cbYNn=iy^|{GG0mEf+?M6igUv~-RnPH+B*&;+SpiP?+ zojODe4dce}6K)Z7z9NgI&|}C^kwT%zbZmY$3UtGqzaM+FBT|>mO!*WI7>26&h45ovsI%rkLmMn zy8f;|e00x)rPTAyt$nXLfB$6>(yTa!9h0=c%a@HJ?jcRV122VZZoJ%RjN}@r7H^jU z75!MhV+T)s(CL^h#mv5Z19cdO>%ycQ_%ey?;eNbL_NIr83Abb^vnF>%5Ro0^!5B|3 zR16YDs|#Ti6=C#9n9MqwXvy;m6-o_A#rRRt_zA)x&C+Gsvr@P9iW z7lga#;|$|w_Rms=LaJ+{fL?0kIxVK zF=NN#nLK2?Ni7iJ!NP?eGCwe)OI73{izyGL2Yr2<`Dmi81=fOjMO9Ba$IuMnm$7zh z)KxWkj|*GHSw6-N#ZFS$;(iQGq$=P|u2G|4<(5Rxp&bD<;xS&xjffXxnp`=uu~bLq zgmhUy2BU^Wh~a3;?8owKJTu`NxmEB*^#~l~V|td!GgL~zM9j9&p$dn!a_@WD^M$9<(ZRxP(E^d&H>oB%WLwFQGQPVPXPLVObv~ zO-_jgYMqH$?);8G9z3bMatY(#_g<;QuI;A2*X^1yomsTq#P|s%0rYO+>R*#U6}bV zU7lH(1)f=-(7Jq#^JU?e@%GD>4PvGPt zsNR2OO>L2;sP=|uB=tLo55J?l5BZi-Bi4p338ddgts7v zkNt?XVOE8=aKAFSIhdQC-~X$!EKOF~y8X{@8kMcd9>u+#Q|s%eUUYub+tAQU{TmNG zUM%?CHj>{zW>MYBLK#59ot2eBAY?=~N`c^}FAzg#2O*m>&+ZVN@8Hke_zzuOMaMPP zQ|nqB8i%C5ye-c$yO$5VwPT0NHw+OnH=dl#p)xn3%RPNV1l~o6MGm_VmwcE?aLyZZ zR3BV{PkG#!XVf8rRL^bB_xL{N8J@q8=geN{JV^>ug4i)+DUz!6CoKY&D{ih2DDoQg zHxy^ttxZM@PIs@8&*`NMPCrE0@e&|P`h+-Sw3;<$2pl)7?ELxc*RpPUY5&X44}8XK zf8q(L|8kvF===!yj|E=Iz)K4s#=;i%L&}hV2BHv2LQDLVT)HE3%KP0ID&cVmKlwp{ z(Bbfll^Bl&XvK&+4Ql1d3@N%q)RAYO69G-F(J8ZGqZ0j1<2uEsz}48VXU#9pFK>v? zYsz$fbIyT(-Q)A@_Pp^@|E!56^&wutE%mlhxp6a6a*Ww2Z}RM~2FK9%6y09L>ePz_k%3GKa5&|Dwg?jQhjSuox+wkXg zH{ZPO&!_5ZYwKI2{(X<^dU9^Zl&jl2oKfgF@NGPBq3jxenuYo*lIp@h(a%53H;(tJ z@m``st=M)S$N=Vaz>0Y3E3m?{l+N|vc>av@I8Sr_k>^YO3-&KKvcQEyEO78;W9Vb( zc>S+&pc#3uid7If!^%jegdNe!h!zqO6fzv?_|nO{*el?g}NM=qBE621!e*g_eX0kz?}6 znO|Dzg%mK(-Umn&pr3(@#jY=zxF{E2Xt9a(12-e;gXx`cEjFH5y&C^Ry`GW!p<+#! z>xhPC(BLO%z^EBc!w7Ba9^L}1c%2O=9L7`K;y!p4k<%fRz+b;fH zSC`YT3(sW_e8a!PJHuExdD%n#L1l{WW|Lb+D9AzY3`1wjqmyfur7y*yh1y_D*8{a)X##WeD$onunfCK4^3BWW2J!3E<`cAQDZlp%^ zoo5Wj8v~9k9O*$a0q6-tUZ@|)$qF-bUBl|t-s66?>79=^@tn@nK=J7Eqt3UTgc@+` z25xb{&5PyH+5xtWc<9}q7`tR)so$x?jk@mDJP(FyuS{Duz2o^(hJ{dk%J;o++p_T=13Ao^58K3_IvxTUF++; zY|Bhd*T!YM`ndBR-gDgfEI2X1IZ5Ww@imi_>Hp&RlHE!M9Q}c#1~`U^u|lyjt@&BM zCHFrK;NLp^fssG|mN1f7B6M3WbXzc%Lq)v9z>K1s-D|&!cjjiC=ZFar(o6ATQ)+;`4`1#{NS&&$Zjn=kb*@9tji{En|k%S_6|dNT2@LGVroKL))S zG3X^l0I$G7yhaF~qJo5y3`c*310yaxN^;b~P~!#6A_R_sxJr;Y3ky(+{Xxo_vv88^ z!x${7*EUwn@0K~-J^#M926_B+Q<*jFz&$dT?>P`Q?&%-qvqR{QNVbId?23;QpWU%$ zWtQQV2ZixJtn?$nC@y*{5@eFHBijudDC#7IPz-RhR_+7LDpamDfB1TDtfp=lRdv^f zn_JvHF=lR%^FtmyNA$(p;GP+BoD4Zmruee~<~9}WyX=;ddf~>{Q-U>u&*4Bs_EdvV z(kzH#rqqqpT)0qI2e6^?05f7_4Uad_^5S3~fE;fSD~mjF%Js=D)~UHA6n&%?v2Bx2C7%+f&ng1GMuSy65Mnw;HV-$*F#U+V1A;am5B2 z0~GdWQaSoY!%E4f$(cVc`bO9^rHe$5kSvk^1z(Hw7Bm)?A#{At!##qbJqN38uto%vm%*I8H77ISG`;KTw(mi%{k=XorY`~3|5>$3q zxH}sv5-dP$AS}}E2(znBJ-1=9U6b2(%X7fszIWf{GochY>@bt+@IEoe4#8K?Ira!G zGa}gI`93knR)YHS_<#hdAyeW6JRxP?B8DRS8f05T22mu#LTFNKpfYo5gs*Si$~s@) zh=rMtl=+ka8|9#YIczWlBQ93oW5IKOHievop>}bE#u?#vx_M4d%V7+tQLvU~tE5&%=pt_rC*9{C zZ5&swsc8M>M+5xe&O7ed>8u?99xk84mmwyg8aBrmG0xoFp?I37??@vR33}*ZdAO3h zla-xc+VC5ods7oEqI~Z9>*hqx`Ac}*zhF;MUDs_VERGJ z@-r>7JmH}2DzaYFllR?%0KV|P4Yw);~HC!NDhW5EB7a?@9)U|#slAeTl z_sq<43|;OVV(aURi|Yx@v9V^r5Q{&zXX>?6d&I}fap4i+apGeLFQTv-gLs#FHO9q@ z=%2$2IWI`|RA|0Qo(iS*`HAIUGTg2!tZ4`y^~2_3YAX6{s7IrMCnJSra9Wj@RC>;b zkl9%J&!7UE_#8r_v~b?EU&QiYbJFFDbmjcJ839j*69AO{mb{TZK;t(VO! z#bN-arYf9IkWWKKg#!R^A&(ELp@a{5HU?$Bc$TK_8K{H39b5=Q!s;NI2ybCMf-)R4 zBxT`(n1SFW4=FD$%*m>cnHZX0SeKsHUT%)CWXC1sCr2gK&Me7kF0pB6M%R{QrNXa*Vf^cWi30C1Z4cye=^_x+yi^k?oUZUx7c6NTTobAmM&S{Qg|DhE)Q7`Sgp`m zXofVy`7Dorprgb2=vzK(m+%*z_Bm_+%8@yMzO$q6(t%eh#g`I?tsN;56nEb#>lMPH zrhwNpZ>PsXS&ASg5qQb^n6fhB<(@EVu&Ct{G==l{?oweIYnV~;b{^6C1jJb~6Ku^z zMsxMd^6W81wvZVC@rmj2CFK=GHive848LEh|18216QnO_&CPAAOcZ<$H^&557Wz2K zjA6mpJ1?;e&_waO1f;Kl*M78ZSD;6EjfS72x#Un#Ka!BK%}_jQ1!XidAPa9$ra{_F zw_)r>9Vc)|CeY|Z`4#X=nIF(} z>4~3^B6*HO;b{^=G$N=|gA#ifa(>~VsviF5KbP>&|1P!keZK56X5K6n{LH}kHbPgH z%Ju+TsKtXOh##$BW({&x2|>GM#x22ewx>L1Q-}i5L<%^YCGhbVXO(G8d48p#q^+>9t;A57Up~fE)mc_tURFZfcN7&l z009a4jkekeTA#47rODM-y$)#h%e6$m4ZH@T}bMi97v-0w?!ZUG>MUE{fEjv3c z$d*G~6zh_yLT{(jOvr0c=Ew(f%bb!3=jM*mRTxn;--%^jf+q&>M2>k=a-3CgCjd3_ zVn6_Ti$jZP%w;Nvl|q!RjA*^&H8`$l;xDC+l(~Wg$XpT0;{b!yk@WF>o?@32Hz;cM&vf2GmY_3emI8aJq5GvgoEs4~95;G63$$BQzB!N0P_nx7Y z^M+|{Q-jD)9Db8C&n!b69L*34BRyy*&CYG{v9a+4c{Me81O+o{lagv@6e#7H*odHr zSn;uMX$=FB7KS~uY%tP5;RBL;)1cfdKB1dV zx7<^-gVwDmS|exP#?X4AkaRkmht|?bTZM~3OmcvT3+mk3#ic!EDYt4Otl^Okkt)P( z!{{q;)bqE^b$~)geZX+CKxC)C*GcmY^if%XmqT`4efsZnZ~h&1KQH%YIL1m(jX-w3 zyMKTuZ8K+5A$A!1v)Yk9nlgj>VGJd~e_Fm#q2nl((xgs|$%r-~xC~;tlBNzq+6e5T);T|HVAM+ukX9=`P6%Tcv2F>{od0SkY)lirgGBvug zz)@ONQdv=q%<#!M<3iK&s#0?&mKb!2*|GY(J($1HOAW;URFV32G&nVcB2O7U|l{+_*KxmG*uqvR|UH$S0eH59&>xo zNZD6dAx9@EuVScgMX3Wp@U6Ut`Bu}hZl&KbZJP73H+}EDcP{^(v$5;mOFWn4wFG@( z1a8UH7yjuCSy$KQ&7`KbGI&JgwD)mlvjwDKwZWW;_&bPLHk&H$??i z75d~?8{kb{Kljs=-1vfVaJDKEfu5wSs8WGX-Xf}ZhN?7Ms0?_#xD-5b+)Gbgv6@p zMTKQ$g#h7tHQu}gu2<`Xsd+BfD?6_pu2*ScFm@5q2l})E@)mQbEC_ zVtsX9d9$&iqf}u%*3k;{009Y(#x(N1w9Vzo)!DJJ+11JA&G}VNwbR&A(J-rNfLA(`TI|i`E>dF6gC$5N}9#}%P5M>fzavNl!mS+;=(a~&G z&f*;I(GBxsQ%IC;wG&ewE}B-I_QRqqCDJsaVfCU(acM2%+jFIG;m@_?kSsg5dI+=N zoff`*3;fo6?2g(`76XSO3DGctcSVEV&4^jN+q+ThN)FkT93>G;5gckSggHceG}Vt5 zBcK?i?ELuP_hKP*iOPNb=t4OZgv~_|&NT6aeej7aOg8P}i6Z3+V@J4v`3~0-jYtYn z_66#3$Qov!d6)|aaZRL|wzI;Cg4c}m)xslAXO7B=E~+pXPconx~~u zmRpdLKO--%`Ja-@guxL$Vn7dBJ)vcK&xsq&eQ1)VLp$VFo5_X^LCpRW-+C=Zqs448 z-JfVOB?7kL+KkdWAtEIr;YUBHj|G3EAe>!BXOe2@lg~om>>F6XH{;YY71Pn&K;biV z69$0_^JNE?b1v*&J@WzQD?&EJ{i2=DA?kE@2Yu+Du7BU31Ya@Y;>~JASM^h3BF@WOJB#W~XB}cG4V^pM3?- z;;W2{Cruuw4Y;3WyH|HA&jO!pJQ*zT>Asox)Xn+?-OZ@CiTc^1em2$r7yPRnSRfhL z1E9C}m(+eQTPNDt&C+nn+}Gd$`oRl7&{7Pvnu@d<`oUt&b3|$)`IX0yTi32l+qHbx zgbf?;{)2dKx9d4R^f_-lSI(`DNS)^3+O^i>$FJY8VFI2cd8ou+7BKOzfycbN2#7~$^k$Db#q)s(Nw$Ep$X4mDUq~rkhzdA7RsuZ27kJG1$5BZ(n;+@2fFv|6CWhu$; zbnkx~vD!8?TZxeH5=elDb{*1xhvX1qi}T!SIFnyoPjJt=-@~_Fh$9Nl&Unh-Xo%p?%B8;b(EvhWcm^XS#g4sj=W*>Z^aGMX@)TO z&z>aMU4#`Ww457Cft#|wd6EJde|q3boS1tN-XO+C0PM7~|D2XfLm}f~*c?ui8DVfE z%^9kvjfJCA`_fy>ES9p?^uE;5g+}gZSi5|>!7!<3MR{lWik?Y^gpTEF(Vu94+`yHH zkSp!`yW1yMfyR(4W(f0v`MX`O;`jf^3px@!USOCmUclLlX#ab(uVE=9%!9cQT#Rjb z=8T;Lin!3q7X}Qn$0&2}Meca*we_kS+b(Cc5w0C*>n_ojh2}(qZE4V!1jkR_R!=+2 zkO7BwxYkJ7mU;Xx=PR$hCSAO=s!ckLmZ+^xv~>|}6;dobfE5X!k{w_P3SJ3lMUJ}# zp_FHyL3jsk@u0AVR>`y{A$QGpXl$W3%8+3~sqHz~-(t;Bk>M2^*ux_tDN$MpKYMFv zB-nL)R7t*nNVu;yaQWoP%LBE(;UWI{B~KiT3eoC|3JZ($+K{M&>kDi-F;;z)e|UUI zNn1%se7Jv<-Wro*D`+dQriSaX45@aFx5l1o$kK(US__ECVKj!hX)FYd20$TjFA(%- zQ5u9xsRfPl9$5o^H7e8wi7gj2=b-Jeh$7P#e6i;U2{e&7-lH~<7v6o-yLd80}WA*MN4SE*VMsQh$G-5Sc zlI4n4Qpl8R$ee%E@kqxO08&QIbRnx5c1d|R{KJ)K0qK~Se~p8F^T!k?9(|OKDCf(R zwqL?ZMe`QuIbV2LRMNQ;RK_c1f>IU^+AYOoxN(jlg&yOPK4hc{qcTq;)u{vo#R>$& zFY@LN2H8=fV33_KAv<(1ryMs(26yA&{*fD~M@d1#4BT^oCF3d&SI}lk;aMpC-?;5xzY zfFJmYc+SA{wn3gdaDeD|cD^5spTH&xo)?2G;yIPXb1Gw%Qm>Tbew^oeVzJ(X#o1Jm zO%(^hLNz*Copun8xf*6ookrH!TUoT1*&YB!Qa(BkS%rd19Q>7*SIb466(#MUfW-!G zX~0R3`*AoY?$5)!De8NGWuvYRbq82E?ivFh{l_~+V~NDJJEcQhJCfzoCgeFYbe}7q zbTHa0vPidTO362juWx8=ZKxk# zXN^sYwTh3`o69yk-ydIJKR!AlBHC4Y+~B@d=zwpb|7W@M#t-O#NVw|XE^_G%iMj8` zP8hfKaV7G?a**~=i|qkkOocfYIr}Qn%A!U5PTu3Z=kmw&iPytNsT-JtzZY>7Yop_6 zS6e7+W#a|^Y1d8@$q89_Pyb4cPl^f3Lo5+ja-<^^CCw1~Aufr^R ze=R~r5#?Xg*&y=KO~W^2%Ez#X+#%(_B=^ot+V5i(TQ@mEB1#5jWEtld4TUXPIo+vM z(G^Kqj*QI4v|>w$!;xaa;VYs(rrcehUyx#HPR_6Q4e^PLa+NA;MS8S8sX00}*{nAQ z=mHGZ^vLv4k%0*BCs(9L=`Ahz$)ryl^3&;rjG%DITNR!jJ9tI*FK%Ey;;!TX=F-Pt zZs6dlEAE^uc{4f~4#h-XBBew)T+4(;%EQ!}FK3P`Gn>oCW%BrW4fDP;m5k5M9$#X* z^n~=;Wkdr>yN5zY?8FdE!4SHh#^@+kFM8Fr_LoXM>nH3CImc=YGg{$G5Le-Naq7E> z7Ty7en@-h9Kt&E!^dV$J(ZE8SdW3uMM1?qxEgv-%;syDTyz0Sk)vzcQ7y3$^(BmvJ zB|d{Bupd7Z%T~T{TxRCDh2^f&KDj(Gv3#;!DT~K-L}yl53rA_2{0%V%OQI>>6ws)x z56zgga?I#!CS_zyx@Pp4m6I|YN!3&ACH5)RNrM*?dnc!j%8AWSwMNCI7;B6v@sU<* zA=ss6EBF-t5yl1aFds*<{GGUnqt}OUG4GUYMjV6s)UziOm_IaH8ZD0EscWI?GNURr z2(6~EJ%A$s)zV7eAr+@ksir_}2rl?CTzp9vw8@30Jya`EHc^(S?MK(8DcKC+lzNnf ziVA>){33*f@p_x``UA`c1zalX%23J&^p&A5U)1G*MmY~D4V|3}vE%=~-)M6&Or(fS zI&z?7k$cT;N!2-VaXG~1?D+WX>ZJJWL>*Sia4kx8&J>f;oZ>J=#l^(L@hNdx)mCeD zR-CI$2{UEs!}VFFu)&M$XH2olAvMJoosW)E7NEC+_!h~6F@>W6*=mY{M=MK}lt=I0 z2dV5&ar+b_(pfz-?P;S1BRQXecW|8cMaM}=;15ii($%!Phdc*LCZzox5h&@1tgt*V zgU-g%+L0$r-oC@Ev6>@wZH;FeXOA!TDsHayR=2dMz4?~&1qJ81{)#J{AI_U{*IiTQ z5j{8H?{a(qd80EF@1$LZt}_&)@DdT}(!2DqazYVk0;U6aLM%XSb6uPg7qU@}7e*Dk zdxeQ6*G#^GFj_LBXnsOQmy-5rO&43u@DBMfMKZj!@r*PA$->}SikL&dyGC}3$6<ybKrOoENKml`Zc)5{Mxn_|N=;!|p> zw%6Wc3k=uA$EFe=uEXCYc}MYYuu8??bI8Yh1&A@`;(^;&1P`vK-jb8;=z=bNow$d%7-DS@{Th@(>E#L$2tH9pwD8vUv?l#Vs5PLh&mcUP0hjgE@qbz?Tw4>ai z%x}a&9CVm~ycLEPx-}S(lvGH$+t_M_xuAUZ!M9K0Ox>rBNegG3Jv-wvb}qVc2xC|c z=1`lS=P@XX!i|HHNc%%L$bOh>66L~%(rV=tT1s=LsI?c$Ae4kB`R0UYDB(%U!vj}R zB*0f-44lu-;2DIq^Yo0fG)DaKF$R50VUpj{?o!vD8#;f}chDA%$ow6#`@+4^QemsI zs4wPI2pTGjF)COIIy6uwQ(nYZqmDM!y9v^QAX1>Ng9CLS%mKOt(2UZq0bK&jtFE|N zyW~c5?=`)=sMoA~d8M!x(pjHVmw>0@xw~{^-u5c-7)jnx?`7l zgY)T3e!FuSwUfg3NtygHn9Byz3(9_-gBa!5--ZbtP2RvHEZ6y>jzs!8$P^v>LP}Mh zOCy(5B-6l(M9^ta$ZJlHfW4#wKaw#T3Q80AA&EI`|PtP9w|9EdN;n{@0P8=v9MTX+5gLKQY zFAaIo$n}DP721{C?r!?^ubb``pP#rc@D=!#;jh!iNaeVq!)g(+$5FwGl_IS}IgV6@ z5;ahof(O*MP*CsEE&w{8PN*e(i^ezNuW?vNd1$m8y!*nIm}v6=@bc}%*vJ@*B_ZmWV$z zwxFlyf6#f9$GQNr{T=YOlMfY-zk!k`Iwl_EAvSgptnft&4oSHcRW!-+{sBp+@CEu8 zocJ-BN8A$6$KY8r+N2ygj1n`Ak{CRjE_7uU-b9;lFiNs$l)wS`kx_zx{g3>@?};xo z#H8wC^nufY#}xg%FT6f1BrrVDU@B`Kym)u;YVZPGA;w1r zd7bxGzQcp_7K#h!-}5qN_FUOBQ+x;3j(m1dZ^}EZC_3V>m#P8+AF z4IPJ!Gqh~U4pVTj$&pND<%40y^cX`-x-m>#WR)}qf2A!NspfV%Um;>p1JkUWBL7royEL(^U+_K(EJG*9;72R+j(wq1 zDYpzdRd^nxO#<;S^&jnYC*7NY`y%jMhOA+QA0pyNVo$YlD5Ylz7%5ipP-vcN983n% z==rw#F|AGZrU7X*}O4W;BuN1W z2g#xcI$`k-vtz~2R8h~$%i+9!VvkR>uOlWeG$ym$GJbNLW4t5LV9to2qwkp>VaRgC z223043-g*LNw+0sy_`O?C?Ls*{!~MrnKWK{ z0rDM{q8u0(#M|RCei82wlsHy%6+<;@`(Ewy@POZ z)Q~0`EGc*&IWY7$CMXych>{MbCkA3TVF;5OV^qR7?$`&{+A-zFdH|h8qIGXIq>-V4 z8_mzsYA@jOz&2B)Un_m^712RK(SQkW^U+f~JEsyj_hD)9G3WPEJ9d(f=iZke=D$iw zYNQwnK6Z{8CB_2IxDn^AP$t)G+HvEGYtc@d$U#0SCq25k;JLRb7$cn)7T`-@)@c?J z6N-|Ks)3FOCBKUnB;-H*LF>Y9(T|A4z^8nHp+{m%$;j6)KuW3^=YeGujfwKnZ~w&+ z+m!l@OUh}gT-z{zl*v-lRa!W`DlsojHSyN+*ruMf&M&LVOUtXo2gZSeX^|882%OV& zb{Bc>gZaBeTL|TdpN012)9JSmp{~$J6svt76@Mch!GEFzQ%V-6^e?9Dlp>$WOX*Pf zt@ten4HyI;NRjwM1BMRP&~l9qHTuEl>2UX0SUZc!in)Wl8jcwR^drq8}H*bWM9ja;`na{Vm0wkw@p6+HDm*_cwTYmoy7^{b?9^4o=CTbkw{& z3n$l!X5m!Ez+8H{&hfWnwTPCGtXgOh{Iv~@PKA^KEf$WrPe)Hr$E@;}hz|dxxP-Kz zsgV;ZA5BiSrYxHua@)d%w}s4~>r5iFMjU=-b>fDnl(9rR+)qv)*_Zkj8r z+x5p@V6Y<59b%)D2G0Aa@tpTI1caF@rZ}4CTiT*aGIL9{{!iZ{1xLmO@%HP@?cM=i zUGe2f8Dkv!LVL3@xuDRHAJgUI8=Gc|()b{x13p>??vU)NG?0mX5OjvPH`ZEng!qu_ zWCdXbFb#b z=9a2Sk=ditb#rHSRZcgwWYkA@wauN?)smbsiK|jG({29V#hK$8{a#c1CgxUHCieRG z_W0x^k8=bZR)_X9Ow2b!AGTL|B zk}X@__uX>5#);!3CaZ|aMibINn$jgn*|$)50TL2ISn?8DND71mN*_FEOCPlG=asUQ z|DSmLe!p|hopVRmHuV3TjONanJNMr6o$ve3w|@ocTbo<*UdVwri2<7q#IZ1i47K`l zKxbAvu#I-Lc^~tm*k-L^L*bdI?G*+xBD0CwbR5z0Qh;|;Ehcz~>H|sIuux(K|G6Z+ zM#et*$+I81|Ic&&{O*sO{p2Up4M#2G&)|Zs#+$XI8(V?#p}p#zli-vjRnQY8JQW zBzb$9=ULxDx{>(+Wc`hJrwG%Ecj8euz~Dg;zh9X0MCE0(o@c^v^~C}M+@+etkrecr zj6H`w^{GQf`|6&mk^a%uwY}>)a&}Mu>HPeb=|64n>};gRFV7LR0&pn3&Sr6i~jyN8% z1&_-2-VE$)rEsi#!~>WyGf%<_wp0Zx3TW+uvI@YvWto;@T(%JBmthAFs8I?_ErRlB z%4!$;0Rw8x>(H4H$N9aP?*`QQgd{fonB4SHYtM&vQ?R(G4bUYwz+xj-7WKK%z@{ut zN-N`5m~vHC=FH^Htva}rJDpQfRgg2Cml!KQ;`8Unt6~L5s&-7}%oKXvErDQOBKW}~ ze?vokzUSm!jUT@APd*boz2tNrzpZ?>yR$4@knSz$40nz%7M^gvZd^>~I6dC<3vF{% z#`B@Q6PN|+swy7c>9~t5Lgr$dJla-&OG^Zw1Fm_%?SxgZ7$0bYV(?ar*c&}qC!&-W z?=ig7AQi*6QSmM5&n(sgjOYij+xE}bE{CGKdc(89%S%ZI5UBtq}3j_I^{IT*)bFp-ok?XU-8@D}<(+5(G_b}dhK2s_hS&{*ul;(N%p$jNc zBp_4|b`UXY&KyeO-$&M{_q`i)f1SJQ7r*%F)}gIGRd2?Sk)QtcO9tIu4%Ssg#arlpGOq18T*^>e+z=R9r`qy|ROJnZxk!-( zB9>!F+%1IjWPc++-dQ(}QbtHbJxQz@#8n^*_=U3S^$DK{!~ztW&lG-xhZl&2I`fRi zMWsFz#`c#(`1yEqXL((DNqDqnbahejLRo8hO+|5dG%>brXw56>7mUAXXlie2c#-&q zEF|aJ48DQaQ3aRyRtZSbR>OB)BjEqa%SJmsOKcJ6SiTQMT!CfO*-+CAN0jP`N5nhg z7kz8eW=vp8{4?>6@5DR4M}cQ$z%i0+Q!=Q{%AzznN&=R}$|88pj}E(1{k}7X;WAG7 z`ctmq(cBNTRJ45HRCLHN@|;6a!?$I_mgir5@p-(Z|6k*i>Ba5F&h&@)0x6=-0RHp< zUVbd|ja1W2Xz?+tGdseSgafVETFcM~L{!44a89!Bkz`Xc0F2Qmgikdz8P?>~W$_YD zd_u%O0>TgwpD_H-@7xk-sx94zLcJ}|z4LRd2))x^8xL%AR;C9Fs$1)g-=+(C=6gcU z=R$Z(f85w!-&$R8@!gmn@L?YF>w~?p3hcCvUgc_RD>SZ2!ls3R1m2RFsgioMWv7J% zrAii;;nY%ikWl-LtBWJXuye;J&2h{PsgR|)SO-q_J)wS^r-D7CHp~5!Mh!}q2sjlF zQ$=4GSTM*%)lXCmhRlVHF0IO}4|aItZg1&iYTdql>r#`Y-h1vjpGuwI#|+%AuC5Ol zFa3K{-{GaBhx_99?dk8|lU}zuQM;x#k!*=HCx5Y@VL-rD1l0+9ZW+5>mj0LJL%ne+ zUZhuCii)gn1-UAt1zk>5q%_4iBb2-ZuETtzL`4?9{N{yJ>O$M69{k(~AN%qn&$k)f z$Bl6MhkPARf8FR7bD#~2wIG9zza{pDL>V)4ueBMaR5}lE@^fIZq+NP~%J5zxXqc1> zXB^g%T{xhBLg=NXjLp0_C-cb5Ux+azQz?;HT9)}+S-+US&BLC=Kv0^o$ZRPsmSEkH zzE0nZa(L*w@W?ywF#frC%r z<%Eri!Tj=u?#@XcwlX&i2X2JfqKfv}$y^X5JLkGHUx-*k;aFuPB2U|o*BQL-#LF$8 z0V|DoLU{Ukw@w_;y(|iEKY@c!h!6A_Nd8SVnEYG1nWeHr%Tx=_laJOy9eNo93KlK6 zX$xV&tGD3l_;3~G>QFZ$m-bpyk8N!jm z2;1TUTZAkJ)(M#}VIT%45JWauEb!Iadhzc+HXJA)>**OQJGkMd7jxPYN51lvBW;PC z7mb;%!&@I-wHANZt~Snv>;7(P>cRRjLDB;Kp$hs#4bUjzc!FZPX(gryn(`>$6B!w;@ZpbaX8o#8C zN!HlIwk6Jj(kTRyVM8khh*N>>Gy!u$Ho;z})l9&^bVS7&_arkegI`}p=VPC9E!|MQCD~BjQIyU#%EO6Jn34_BoWJEgc*k-7QMGf?x6WR5Sq2t(p7B)v=7KEx7_bddK_N>I)5E6 z+Ii&zxV{H2ZgSZ#V1_Qnxh|8H@?cRM$nq@UzF2xwW22@FW!1za@Ltn!`e38eV^0uN_jl*zB@gWgWoY+hvMy9n;Q-u^mwA- zts{%&>7S6E+c5WGG542fK+B%HO=r-Vt&He0<%$9vVPneD4G0;yO@v%wh_XmrU#GHy zun-Mfl38^KMk}LYJAUB<#xhEgi(wuWs$WpbG_Qj8&Z^)Nb8BTMg#lBbKqRXWCVT+^ ztS>1TVB03wsyl@p|8$;}d5#qcAH~1gSGr zz@PnY#&kzi3R*}kl*#q1wK9Z8prtQ{Ihgev=@sWH-Ue=kM1p*L%!L}9i-7-JAVRL= z0A3z}Ik_U;nrJMAG>1Y4Stg$G%97&+f!+fUqJR{9DP0x1XEI>cWJ(zSc3~R-{=cIq zPc7a2`s;i8Iy?LJoIij5;KV^=;<|$e&*0se=xkyW_eB-GRNs2_5mW)o1sF9lwg%v zl%1BpwYPWG{L!0?)beMSjq|FTtMSCrma+9qx1zb&6X}CaOAlHsznX6$^vDwI4DVoD z5wq_CcUs*KQ~CR}_NZ`PI{jOS*J zmuJRveq%kqAT#c>p6~p}%(yEvjtcnB5;g8~M~$%MzWRB*ne+La{>=Hc*7KcT&0OE$ z`BG$l%@pf^aEPDB5D`Kg)U2XIIH|1RzXFv=w-3S5~0#N_;CZS zz%7v_8gOwe5bJiyOp{)5#3aIgvEx$i7{M4Qwg}~pO*u+B^ilhW=2@lv+Y?b5bsmbd zudzMk3zqn+^1BNL+e3*+*;vYG>2Q0BHjS*`^Dn!*`nyL0bD@)4kKQnv{^{|Krq0n| zq_Q-(yr{UKD^QhN77jKKR=ZrCO(=%?Yd+gcYQpwevO&+10J|cJd3-DX9^oE_t(FRXMRU~cp`JXrmXRY zGULsb@mbejXU5wy|Uyhq}CdWx_VqCyoj+=DWj@lyVKdR2>%)qg+uJSsh zGkLyAXL6i$#&Ms!)_T66GkLyAXYHV~F3?#UqMrYf?oTs^upM-!^VC#*BF+9(CWaoc zC1xu+(}bs#C6N;o1R143M%1y2RYo;MDjAww4U>&@JWmXJH znlc0fD=FG~*S-*H6U5c*3(SqQ&Gput+Bq^8@GZwdfT7~js=S_p!51r(WsQ^8U;{M>Iu;m6NBM(J+67fluNkEKn0TSmXzUo5t`iD$&@NAgjv9Ppb&3Is;I>fD(ms;#LETiOD6>P7Gd^hP%6r`sO)`48Bzg709LVqTz%mk zv!(tE)6|&L7~gcH>TprA4JAy6I|lp*s*Wt?y7Pnib*+I|N2n`RkjM)M%PMQygGC2U z#3uJTOJ-92k(Q~!ZK>(j*kJ#Rv)%1-M`EF9Ah)JCS>P`$DhPU9)5Q;*89TBnPChT; z1)6jFG`!4l=f8q>2wAV&iEl|eVZePE@-5~02FIVXXM~LPl3_7ayBQwSkf9x=-DycT zLfA$edO&GF8u~V3vWog7A(@7ihj(f4Bf3`!ZeNUtWIBq8`A7c?HoZ^K@FHp|>|YmRP3srta4rJ$!f>6`iTli!M+B(VkT4x zUSYh5S5)$w#Y`P|mo6a&n8=Xf61>waKuZKVz6p-TYS7XcN~cs1>qF;K74!k=MzZX4 zRET70OyUY5w4bP@>JbyQ_$2EaSx_{6F5VsUlE-q@^2 zPa`HRA|brXbL!PM(y~BMf;@eUx3Ndfim*|{&Kkji?C4qJdmF-ot(6T^2%+6S8LRDI z*Dw>l-{D zcrgI}jOzm(#%U|6fLb;w@Ru1A!x?%~anhQ6Y|-LYDUj5{(pl0?H!SFeg_>Bm76uX- z%2-QNq6hb@#YS3-jg;KW+^U(UPU9FFssd3mGNLIUnkhb!%&uwptg>R6Ok=M#j1$zr zMpMq5YCjO5AvUplFtuwuntpWEc-L%j&fncs6|KlM#l^hQzWym8C&mXtZl}9p_Q=FI zICkUAfuYvI)NE6DF4$U+=!UX9rLQ@S+|<-e%BNvWom#-yb;+_On_PeGXmYo4H6&Jv zHNo0a?sEHZrnzEbg~giX2wddvI#&GdSBMv*jw9E&)4Ik&?vmr(;#XW_-~`sV8av1B zBx7^upwy);Vv5xD8tViANwqRoHh^WRSF8|DJ+Y)BuzUliM$ffyE*`*v$k0Lolt#Snf z%=#|1IVXfH&5aXun#LPoEyo3{F@pZQ7}nzfz>-;HUU%V}mT^Ika@=`Qj<@6bQdTbz z=WD%?GllVT!E2j?2bJO8Y;w(h2C!OT!Dzr|<3CPaB|GFZ*@2o|5N9#I zD6?q=RMHb8LRk7Z;9omDy!_BZ9{=j`b^DhOmN(S;o$I(Yy{~n2X2z#mts^Mj44S8opXtt7`9x z$E!ot@{hTGTn`B^*Chcjw__4{20_4!SptkndKZNl*`bw&Ls)k)CBD_kOGKUllM%(36nT-^P>N(F(r#W}UVdtM z_56D#Oe?xa9XQ<=-#qNR=HeH}*1KvnVDu5=R5k+^i>`VB3)y|e#`q$-SIDYS*O+Zx&Dtf z;zc?z9J?>2j8B7~8HTj9iOC=v+PU`+QzH97UHUH9Kr*ny* z1YYqzm&iwqX51I{#5H)6!8ed5N*0~1!zR4XkQv3zH-F)5!5bqqG_iFvo zHDW3Lrw43txGK~N^h_Jb%Kqq$qCa|o{n63V*eDoZUiL2B@h7kR)1Uop^b=0^5BFa9 zyYyGZJn+~~zv~U~YuW{#HoQ=BQ1Q#b5Fn^Z$il`)%$MiQpk{WHyT}M(NSw!U%-65x z+h!Rb$N3v^e%w)tozUlYI=+>DH{ihQl;C{7<1e^wnHqKiWo+In9pPr~1N2MLia;+e z)H)%pu=;3z<`a8t%P?DH^(*hLnLfe%Z+FJ0YaSJ5&g0%f7Y`CC;J+373%$44W7fR? zzWd&9G~f^RnGdudY%>B&=_m32HM!rc#k@-8e&Zx`$^i?)O^yqFB6}QgD}@Y4JYlJS z@eA{OVPEDIysk_56)r9QR03`RMCZJX&S!)&ipkSiuk#;&Kb_|xU+m;9-jeCjHQR38SsJS@x#jRpV-rsI?$*)$`w%NS zd@er_u1J5#`J=CKN~l)?o6BV75QYz6k``g z@?iokUqk_7GDWPU!Hje%;jlWhDfW;NeC;bj%voNRLeHxCXAT>WD=9}z26E5MfG)4RjXamt1jQ$RBPhJ?eQtCv_<8KI9w(7B)ZvL7Yk;BY{x+ zVB{R%b>xtuX}x3`-^c)Rggrqv=pYs6sCcxZ%uz_4BYo1+JQc}&8wKV_i$q)Is9k-F z6&}bWU|@?8`Es{;BGH7bmb%#_jDN$;v(@9PdAM(ghhG_(aJoKM)L5b3 zjm^`iY4t1huj}1Bb4nc=|2#c8pC8KoQGR~Wn%2%Y$Y5+?5!Nh#%*!F827rZxIIK0i8|kk+e6MD0*4*c z;Vjojy=kSt%RLM5SNCm}Iv?(9Qi`A~@jdHQH;dnOka{FlsCjg{-UD9VX&Y}A`n#mL zZt*R0CU714O$xCP!;Tl2vt(AfZo+D~zJVA*yz8ir2AXyk2RWS5H@9 zW1bv$Px?aWA4h;Mj+l&6n(>b$g@2?IBQoW$Q~F0b;UDP~QDjKj6%G`KDga4yHuJBs zRc1xXH=2eTlu^z&*x?aT#gw!BBA=;`#p>}gHpcL8p?NCkDj#fJyLHRL*0{T3w0Z58 zpEWhs*5_>VRW>H)`Uf8w>=%Fj1s)CfHPSD~8e@%jJ@7{t7F*+4J`k=Y_uX!ZTM@1l zWfnay_T%hv?8n`Z&$u7wi?zisaGidvmGCFKJ!1c^RM(N?dS4gg;Aj2N&)^3}y%nzx7VFBDGT^~;VE?55AsQ=yQiHR;}>I9Y6(D&X!LLklU<2_mxg@ehBP^>6MkAF{D3E?w|~dE zgR?ty$DzL~IJo2ZwTF`Zq5iHzUr6r*>?i|(#ulCb4np`-R&JM>c;|Oe-~fIj~df ze7h_%VOHLNBis7>w~d7R68-h{wNrx!clYnEn=kLFtxZ(MYRAXcuTG8( z_uP(NSXEVie&uv(DfclMqoP0`Uq~Ul|9=ok1sSCY}B-&#&6I@6n_6RX4x(+GCHswtj5Wo~5PA z@a<18E$w*=PyuwzIn}s4)H9K)fldsVm>3s&Cbmk@@oAhY#t8%PTf#tC!`w<1HDO@O z15mQ3rj-~Oa7;4bX32n?K?BXWUh`!ba10YB1E$Sf_A{oi%fwpRa+tl!1mUotmX+)j z!2&e0W`F{f19ihPu505K_@Uc!l^?ozZdSqRwR;NO`Jwz;xT@Q&JaX;&F{4ZZFa7e; zV8%ZU`EeHfBLV(VA^ihEF#fn$+aMmYWTj0qz};#rPQNY`WETD5C;%GuNm7C9m(zx-a!Fj?>Po&o6gD|5E3>t>+8>p1h91ap3zZ z;5+T;?d+TwS5<;cd{>NKqjww8yUikSXqs2N(k3|C!!B8JM{WvL&=)97!cj$9w;Fdd zft4!k3&;+8rb;w*7Q(ulgAPDCh;nq$XfZtsWsSA|WvgvB6WB!ugRzi)NvPh&&J27J zyXDSbu^zw!p-TyPxp1n27xTPt0(9?W&Sf@_RPhiRUN#NN8bmJa3)+rO3sgvSD~HGq z3lt-fiUgT?0VZ0|Ww-#1%B&!S`h`gUFxyL7pwpLhZmwxnriSH%gvQR(&f<87J3R-x zNfrdonmD#u5r-ymyX6YwiLCKYWUkYy#^EV)&TD-TlB=AT9M`sytZ|ENBx{`45m(T9 zVlDXMuo$n$g`tNV^7?Wd*9Yh4IK8)orx+JFCCBOE*W;vpjuX!RLyudoZ~E}%^-25k zeA9=&;`$l?vapd_;1I@Lcwad#bPf!7vCmk>h3}Cgh%r**@QFItx&9XSjfnA7*7&D0 z<0Dz)FJ#7tv&Ns!j1Ogv|50YV-yDYzY@Mk4&iiWpedY5En&*q>{G7Uu&pkms8S|Cr zpUYgom*->0DFhEZjy<2*w(wyvfJ!Evg+XdsYgW8Yr_9@8&TTP6%HAxjhj}9AJc>I? zpLi64Q7v*nDDKDtO(?T-c@~I*pfLl+&~HBdk~Mg>J=7LP?1GW({(9HjjBw7vd!5f+ zTy;6d_uu}Tb1?nS8U{bgz+j9ZFk$1qIWsAv=6cgvw~0@db_pXOQMA>Yh{8dq7txmVPcBXQueQ#+j^;IU1O?pNol%9>wz6W)3ZR zfgG|J1+zr+L85X)pi4qFUo675P$`My50}=N#f79S!-&CNUy6H!XkMxbN{t z9(g?dua$F$o_fmp+~NOz_|?PC{prsbYq9=fKBR5qG0e~FPJuZPFM1#kwF#P!$#DcA z=yB4v93SR59=Qj!#QJ7qv^2(Hb(p{wX37)26d!smjnlN+iy|qQibG6=7IvRHf-^#j z(Ls=B5Mp#th|z7ZW5i*{K#DkE#K^f0%w2@RGEzk5cUnyelodq{Ql`gt8Zyb4l`3F= za2X>r!^1N*&DEv8^ZAYabKTmE5b7SVSRk%Hb>aTr4MXw#^S;vRX6No>yUy=C?yqkR zMVqI3YA+wvIaTu6$DjOsP4{d|G}Kz}&%l&8Dq%O21=Dvy7U{!?SA0uY&jHsuU4(T5 zAmnuq|CF#suNjVmZ_yL|DdLCpcF{^%U}JF2T1ypF&0$r$mL{x9tMRn_l=29ncO~Q_Y+Be zvA~AO$#30v_ucn>>#J*KXV=W#e6ulr*a&_4BOm?L@qN4AvUA_3_IwvN0BjTtoL=Jt z;`3&}q(Il@Miwnf%A}aXs9uuM`wRbp~L1R=zCC{PK%ECBI`!5wa8sInPf0y0BBAbn8 z(_b|b={JmiYg`64Fp;5=e%$%osi#kU@zmw^uFJ!{#{%~)f}cxxtuf(6xVy~tGodM< zFW{d?IJ2a^c_*&a|ft&k)yw8I87P++GkG0 zF-$8>l=9)1%}Dty04CWv7lSo7rHeEo=!Nkx=!@Pb!+$Lq{vv>yv5rRD%#q1@V(mrQfcDCYInt|D(7j&!mHeamnP!0mo^~KR}#>Er{?n<=*ue&l5ZgIy`w6{_=b|PM#&lO}Sc*lV{0s zQ?8cdyuKXIzCL-D95>}^c|O)jjrW=N1?}Vsp2hREye-eC{4cL#%G+|BJWHN$%G+|B zJWHN0BoL^5lF(k^ONI6mK7B(KC zFk0ihGNy?T#$v$^48QQGQm$d1c%MIl7$|3MczA2?(%F(b-6f%hs`j4r7cX2uLF}B) zb^WzV8*2mcnv#Jb<6qM^N*v?!Z4z?d*D%oJPFYj7Rj;Z|&1UYL<&To5aU>bM|ro{S4} z2uYOZ@%OlHjk+#%6Y+cVx&l{uJ;nt+n0^xbVvP60`GxGbQUEc5ajNFNs9>pqtE(i@ z3IlVs;2*TYuu_Bkl!s50`}5>?Ks*_ZN6U=#fQX(j_?CgQ=nf-}@-x3+B@b4R>gq;G zM@9oB{fq^QIBU`y=jShc@ry>=o1r5iV^{js@gw8UU~ZCMP(~m}@WMEUf0=R8KSv-B zn&W^`K*5O65WmQr58QMUE7f%XqiNVLcz&tlHoMQtR+Yr2%IIwj^hQ<2mieh%1j63S z_&+x&l3oCYQ_1{yR+$ww!)U(}?w>vs4)agH=b60gR?UC&-&&smBTDBRzrL6^w*Jsj zxjKgz$W`Tq-S})$uk?k8?oQ3 zam^d`^N=fg#jo^zKL>gcTv2|Ld462SJ#d-x$us4BCC_xBKG93?;r$wWSVY!va)2;o zu52BkN`9xKb!~OitV_j8X0qlIw|5$18O0`#cp-*$PzVH*5&k^lhj~=Z@5C=^a1F{W zboiP_t?FC4e$CqM^l@eCx+BRhSSI=hDw}L&THP zG@UvjXs%=#QUwxy;Z>c@4rDe9a6zsxWS$pc#neRSOr*=#Qonp3#XAD3E57Yi`X{lj z+QNZVs|E&~FSm5H-oN)_FHpiGkPsV_tnQg>zj@a&fM(aR3~kJ4nlXM1=t#JXasJT# zIg*Xj@_d2Qmh%ZO?Dy(?bHA5xd^>PDnFidm&WEiAG$5=r78(F8Nf{mYl^Cz?E}o0= zF}+Ggm;4MgVbYG0(e2}u(MdZ#w`r@v*5sT5pJPpD!fUBOB<^mCVC zIZ>bni4W*Ar=<2mC`fr?oRq^wl@Xr^v}T^VHpDdg)mkQv%DeBn>u#e(T4PYtc-7pe zKKhYQ3wz9A<5!3FpWS~*%oAF*bAao`ip0cYk}2jd$H~j&_^>$+{y(7je~Q20_c%WW zI5vyxB;|ET_?dBDM~)A3oO>tavu4QkGpv7%?${y++uS=Dwwh7cWk#_G zqnB}cGRU6>2N^t+z!4J!6RLm`J9NwZNbVOY><%m4o{S=4s;)5OWCxL0yy#Zb5A35> z8_vRY4I37Yk4$t8&Ueiu%I~^i)6ESFH4FWzp{}91-8*i&UK@X`{?Q4~Nax1weaY5D zUO`Sna$Ok*3a$=0sj$$&n3vZ_4S=UQ-QU%19EvLnhp@PJ}OIBx;jh@x9?l zQWnGdMc5ml2F#RP!-Ts+Mh$nHB~c~tim(jY1!b8uIx$!#jd^u)2WH@cR4s|J^;iLz zVi185FtaToQ4+$)GmRr417R4kr18u9qm#+{s{V}wnDkg{s=cYLW55yYx>(p>)|h*I`yT) zcr4()crIa6;|{B3s7kC2pO)Wbv}Lxq>}^cZ&L$0N-bjhrP~4CbGrTNHVkU2-sv=h|BoGb49txLmP$1K;U7P}9fd*C;T&PEjR!kST6sS`*ztz{Ld?3#^Wxg@Ud{sin;JDr&Gtc9eGGF#}s1M8Y&HYiH zuVudM^C|Oj#OpTo9xg>4rNsBGrW+iFo8SOF_MabvMoiD`k zc0o&IzDU+rf@Bn9%)|ma@R!#?a6^e5%H?Qjby<}ewZS2?_`l={B;xTzz;nS{(cWB_ zs4fTTZ9gyYf9eY?nSN0e+VWu2*n%~%9rVE{t)evDW9zBP#?s!sYuE1WT`~Ey*TgzJ=_lu}oo{T! zAIn^KX!*=p#3>29ALE>yaWRsOfAV~Rf0pwJ1B=eVZxsFPaAoAPtn;hfjBSzlx{jRB zq&Hz(mE*Hl7+;+=zB6;3RcgExjAoUd7kXI8dC752huPz#L!leFO*+)qk@RMspM&c! z3ceu5-IRU!{BoT8uN*h+VL71ZMM2LT*YK3*^S<(Y^S&#u&u{hhN$2u9CY`Umj=)Vk zPZyq3%3*vG&A;S0`IHi9*uu=nNm7HFgaZ6fe2maO&@*wqZfZ;e5lftrWr@aZJ>s@ys&3(=@$I`_yNgbF=lY9JVGRw(2-dCw z_bYVl=EnJl*`=^DbnoTCP9~ju4C$wGN`s1wz$L5F7A8-mudL4nX(3V;a7COI>G;oo zZu~>~)8F}yvF>lq8Vhb?;q0mOx3{Ig&1a&mtPk>N!m*Fh57Mq+@=T@EYMzj-=>%CgWa3p-Y(0`^H?9G^KU~e{3KYdvIzdJaKSx z^58^xX6nJ81j2#*f${MHq2xz2)`#=G7K9+Ge=cL3;O(Qx#T&=uSfYTwr^aptGqWDQcRJbrH zl3^Mm9Md1$IqPhmo$Z}p{Wyy@E+LeXah2(V`AzyXP>|~Ma(+JQp;i5w8rRTn90OuRRI~SNh||}eMXXUD{B($k}a&4hdt3arzqa#jHApo`8o!EfS0Jn)ro^~`N4%6@@QnidhJi}fW?Z%2z)=X zU4R$EY!?7T0KjCRdRe3gxn5@9r&y%12N(xW75Lw>Q{(=QpZ@6~XFTu)cuBIOLTmV%4j$COynqY=%(REAHP6 z7*Orudn{vxvc<1kF@T6E`%re`UBaUi7{CscG<-d%&x3j8isyVrJBw~ENyR{*a?CrcI{egjGZ&&9XcY;pu00T+`7d#G_65XIGpM_4< z)HI!1xjmPM(FHwM(5C1Z`85K=ftjME_hN~mSsg38-pFU?Cy`?g^l(=KtU!@QJ;(-T#VGNCLzD>%C zqV9>{Z3Tk2shTq2ZMm3-0cbj$vzSMWc}$>o5n*Sphk983^oqXqfHJk}fvk;}d$r9? zsH5|k7iwm18?v|%8vTIcnN>q)4eIfWr7neOuQIdn6erj>aR3ojX!poQ#hpe{HjF|! zdA8fCGwO|46G}M$=g7eI9l4QkRV1h5^uXYW!GY5qIgzSxB)8-Gfsqs6{qCn5nsU53 z(eTH=j(;ByNAaPl;nUy!u7=HzE)N?83eE9t!1}+24f68E^e+n=L&cmiUqeEKFe+8e z5?8_o!XQiSXTj#TqY5_RoX*n&L&v}+I&;DTHfQ@sj{!D~@f=T1L-@(B8=pvT{Q8sO z27HV+3g{3%%#AAqEw?hqzYelT8y?rh9Tjk{F~dsBGPA!J(wz)AFXrk$0cln-ejLcH zKpb$}D8{x?%x#1Ff;f-OKhUjQj1py7f1g3?EObMAP_Y1z)lexm2h+3xxki<86atU1 z^&8PmH^&xg=lTYFXYM@P813roo~c^fbZYa7>r@b4RtxGopsf|s#rKY z*^yj7(J_?k$r(?s*#?+&qt1{QFzIw4=dN}|o{Gv~vcUv$q!j37@hq9qR{)kGcZvdG zui>m3F)J3p;H+-#*k6>g-)gb_82{5=|ZBt80?8Eo0mB-R_!>(T2{2!FuvO!?6xLqX0ak zkaHxJT79@z+8gwwRUC;H)^&{wnH0-TUHKqzlpa7+SC;=7fb((P?fKqsoELwb?ib%_ zY`ysAi|>4w;`rTjLX~)>eDz6dR`v9A)L=9%%>6a z39*tI3op>pX5z7JKDHb|UAzJ;n=DV4xTeGxQma@YaU2=8MC~*92FOk%t^g8O0JUXX z2G)FciUdwbT0m!Ag~39TJX8X!3&(>9X zyq=oq!KFz29dC$vE?}O+$QLT3-HL@_XwhFWPtDJ4^Rzk?#5~n@jfJEP;}&RuhX%Gf z1r2f{eu1s*MP_+?!I~GAkDkB(Y-u!D6)n5*9k(1smCW>(S3X-?jmNHze&r4M%)v`< zB2I&;>|3au1sx&FGuygATU8$Mh*r-ZH6Phjm^I(&>lRxpv>c%pG7laM5}kc!3d#z7 z#;wcuW6fd3%ZiMQHYL$oxp?3)SN(U-SQWg@xRmkwXa=#^Yz#9xU>UdKVz*8Sp`G$ zxvSYA^z-YdQ=rXWU&-Jp6w@2xkF7JlC>}sIMiBR3i?v0K6x<)^h3Ap^ef*4_0G~ze zS@At0_JDt*IKLXW;B$=9P?BvUvFXy*=hLdQhij|+7eD)i@jpKy)nlO-!v_ZZ=KUch z;{Gy^g?yG9fy+@3o5>*T6NRt`&N^Ot4jH|x9IHW}s6Yv{VRb3K>r6x?3u>E%O-N{= z5u?SD$fncO6jYT|rLjU8+%aHE)GZ)y88AqB07!tHGXeo+9FN956jjW`5$%Yw4g!M$ zQUXaDvyv7O@{%cTPV0!MZZ0dxm{kyw>bOEDe`ifyT}@Re6g=TAX{)PiuPZLbpSrdZ zuWjHja2m9Xx~)Ca*G>0C;;+ObARtd`ef9XUb?c6eSJ$^*x@7$n66c7s@$i{7VBJCX zPeDwT1L~@rlo@~0ozYR%Myq+eO=eXRiZ(eamLkASErnUJh+)!#MLNpw_nHvbpVOsn1H@E4O+=} zY$C7D=0!GIQ6UGKxRrfVAejs=V-zFh?tG;DwV)@Q{4WqQzMj4w#oIQXbGp+9+4JNV z;{L1D{i_@|=tu{X7uuG=mcOj;ugE|>As$FZ#!)Jy-bg8!_C^{_%?#vEjTS=?HX-XY5RFpW_n+yhJT7}uVk`WHnfh2b=!NgetOb92| zeM6ge|LFFMH#bjpRnd<5pFfN?HAN4=vj2FfeL9htZVw%32-k%hJ_vRITive^e}x{i zSe@gPnx)kdyc^H1Ex0z?x6&Ky5z@85hz$4<#j_Vd(~%XG^D(L_DytQfHhfVc!zwSV z5Eb?$HxAaH{SS|Sy1Q|rqbfYK*xTCG)!N+MT~L?W(DVAzt6e>H{qu?LjYHvsy=~Ff zWOqwE(Tjaw%4W1bhG0d;zF!IvKpInMfh_!n%)ZmvE;in$c!ee@oBvT^xY%QYxRac< z$lfrMHYizxe`7Vlzu}P2%${WfGn>6$G`7%cJTqag+b2F2iN_-&M(3F`PIqSMcE{p% z@z^Jgj|fKUbnL|=VoL6XSw-=wL?czQUu&BKpzy zF2CJ;?DTJbNqoD(^2`}@10>b}-%9Yj0Y{A9M2E7fT630d0*1ylZmpK7n4wAknLDzK!U0C~2Y> zg5nIv6y^|s9V^V5GbLb5EFom>T~}%6VoKiZ#v&{3Ffg1|LO^b$^PI1kXu zn5}#B(YjZS-pNr~`aZz}bnJz2Af}s16-Ay8t5Ycpo)pE6(B@;+yGsUpMkYV=8DkPr zgGKwQj%^v*$EtPv3a0z}BW<(8JBMZyv1Dr26duVRxK9sYu2nGCy`4=;yB$5^f!lyz zy62Lz^Js!m8oeISi>Ua!Hg#zyHWYn|JZG@T6nSL%WiBeK@=2RdJhQyCVT%<;CW)M; zrPD-_6EVnjPUHR-MDMufPoJK5SGJ8dwNEAj6^W@taj@9u!yolt5E|G%{#~d08{=D& z6*c3>)~-D^Ub8p9rYn9d-c^&IIlyu$nDoO|M3|t9`ITT|^Lp8Uq(PuyqJc!1plYrF zwHKKFhk(ML9J?AQ?rRxqH9?UWZEBkWDB30yCBY(}uP9hjEZ-F*CD5Sx}_ zGkjVZE)3PmLs5)b$qqCwP`{G;F?$wPf(35noMJ|wQVf-nNUD?27QogK&j*w}be zBo>Q2*6PAcrkY0Ef|$wYjljdPs>-Se)(UzbJb|Jng%@i@JYI!AZHVh2bt4ZnJI1^? zvvvw8wPnJ(RMMl#NDe8M$mD@4g}H7_uTq7V1R|MTkKSk%svB5kd@%j}N4ggJYijxz zy3+q@xY{~9+m?}B`@#Bw^<7=-2kMWvBsvl;2>ZYs7V*r@h=Zcbo4oieJ{MySSM$Z{ zC%5}zRUk1?=B)8p`hOud81bfnO~IuT@cj`smFz831`x?w!|Z(H&A>)!cKQx_nPt`{ z0x!P74HWSC9yr@2Tu_*{_v7FUUV_y>Bu8O25(iRFry-Vobfv`3;9B@Pg+Z2fI`}%- zUkhg0WI)E%Colk%Eym3QYb55fDv~%I&r_vW6ebjLMCtTmnSWo7jdnv_X zeVzEc4bK~MeCdilSpAd=GxdNi-6hNL_+RtEdQe)@z@p)yq;tZ6{fr;zh#=luow9P( zBEmUqIv&g5snJeZ+Wq~2kaj%MqV^v>vu_#7k4I`7^7^iy>^avnd3|4ALv19UKlGN_ zo^wWL`kU$Q4xc9{(edx;e=y>F{h~dQn%Q44(z$6dtepvUVf zZyapuT%S^YHbmBnIOD7N+4LM0-Rl9X!B=cQSN5~{rJoJPeOGMkj-s4@yG8s#Wbi+I z$@sy=RYu*H(%`4SUGYrJMRy(t?t0y@K?@vaPUIkPIOO=NEBes%qbcKu9?&i`B_-&+ zWrYuo&fp5ji}aX5aNLgr`qC7-T779;$XtFU_Ezaj6Rc36q|5Y$o4z!EZ2H3fTkkpL zk5*Pj{IkRJt^MWO_A^KKe;U#BrRJE&-hermF?Qk#{xm&B z+nlvM%w`SXM&(dU%P-@m{Ft*}PV)>7?&OE-0f1s0)bj(y=>0h0w+b455HCN_bS0r- zb;y+^6%2wTT1@|KyZ+?Rb$-!4Cq!&{+P^Dw^ysa)cfrdJYl{%`qg)sLnA5Y0le!=ra)~VbKV#c4}TT~e> z@7+~5Q(9A&XT0r#bNwv`9ymN%-g{ly;Ep@Czi|;8J=a9-|5*4d`{eYqX^yX!Ad7W^ z$(ueo_`LA{H=p_M56sQw%&!G#KolV(lKuhP+Ji1cOt9eT?cy_W13A3l@y+71$U{Yb zsuvu~#2x1NUd^|ppVLOl+0VH$zIEDo4FwN$d@G)hGDSi>51tgCMg1W0Jcvib=SqB! zJQ_S7q+P%dtC+K0dFcmu&hO&6 zDk0&$NK=w2jmy|X8KWq&Ls_3s)XXX7l&Da438f1M4BHkX=$I*ml};Rtsd2#)5IE& zdK0kvCSdhrum~1ug60y0Rv`_GtPsi=M!ttA5fu|wloga^0zM*IF0f6CHFF?=$O90_ zu2UYIOmnMr4$F`=lsU)5IK`ki3gLU|5A|H>xL?k&0?FiPSz?>uYnUHjdV2AI5qan@ z^S5pdq<_G7=V8yn+MCucc+?wl78V`nyujHM7Z`E8Cj`#sbFNqL@n{rP6V(ISTuUn? zXTv#49}m{^64;XxYxBWmtriTT)>NpJJ$a8WAT3lxYWQ zRdcUAN&?G{H&N_TKbB&bdO+`${B@o(3uBvL2o-S-2X~4CISd9@m+|qJ z^{ePdwC#1u3ZT!(_Nx%sEBz|bvq-o-d+}$0-N&3;#Y^${DApNyB0x@bdAfoxLEp)? z&Nc{Ne&Mry2?7CB+}VEInL%huuMwlvYj}`_0Mf(u|D^j)Z^3`#hb>e2*zbU{V2ZHx zIoDz?jP^nXBlc3Yp6u7)zOt^OlyTvgm3DQ)kj)(`fVvFXH3grnIy%hol@9;Q6!^OL zt%m#T!E3KQ`0Iac>*#3Phs4D6o9C{%<{XsMkwgoU_FWk~$b=ZFDQoZ zfy|TJG;3SBzEvI&EJ#ZXX0oi45fN(hz)DO2aI~E<@f))Nm_?9p!qC=Q4-hmbgRWQjEKxjev97MHDxCWzj#7d*zw@|9wuY zRe9}&hY0cX&(j3?t>zPEAWnXffUd*Zea(!S&PVt{D?nk&TM>GlB9?qZtFA+VicBJ3 zv3lT{T^M?%nqB=LN1uF^^%)+rg@cU!>U~@Q%w!koNAHtGUnBL+9umW&aty+ z$6P@icFnZGra0SC5-iEd!5{TrP`l=qz3FdY0smp=O{;1nn;tlE{DDo;rTp+v$3Jxp zh4V895*ENY+H^wLlCfLWV+mD}e&AeL2IrKiMNeHbf3;t0NsE2$Olhkgo1=6WvgkkQ zgi>6Ya#GPvgP?f;0Wz43pf-()$YN#;9E^$(L57X!=tyxiv~62$-$Iv>b7Agqu&-&Y zapJn&yRSQSzP85g^&Hs_^Hm+B;fj|#BhHOm+P8@Lh1LAnmjX6LKOE1}K}K^*ZDxK- zCDrr0s#3&OD$P+Rklnv?SUSsF4L(L*@vvM=WxLp!d3dgEw=Wv8HM~PmRkQBA!oY z6VCrndA=AI=gaXtHSPs%pjQm!?_Y`Q-T}f-yHMNM$;ND`VO)wg@B%UJ{9_28lU&j4 zm@h^8+98ppHvsTX*smy}A)Akk6a572;@$aSox9Q9v` zYs9r>Wl3hdNLMcHWM~*+MNyWBV^KsrNg(#F{rj1n^1k;izr5$4mTuqkvUrxQ zA{WpNl)aTQaJ@)4G5M{cNDX7FRYh!HDk?(+b<3PP(i>AcxWB`&D3}w%fwO~uv6MKW z45yHLfj=qnUl_woO1~bYr7_e|}+W4`N`98-D4joEhA@adFG$!-bvg>r;uk z+S>r!FV!{fJ9_Y%y~NW@e{5*R#3!#4Z|1nDeJ#gb)^UNSay*aYz(2+yRygSwM0H)i z;#wwb)P|^GqxT}2ZfF7lo4E-DdihjLbUhEGH?RWUKnO6>z)^uE5FaSlGHjZ3&hRFp zvWyatElFjFo@iX-o4~5K0OTL=w$^F~^2(c+*Nw$i;9m#vPIn(P<1Y<9h;#6Er>bzc=Lu)_@<~ zIC$lpn|<5QyKB{;RQ_)Aowa6j1D*qJrUUWBozwtNkXKPbu)zZ>MbfF^dt;2l_1dkia z;&EbJ$RKhYx~e!|=FwPspTMf2uk%&lusq*T=ZpLrah)-YsJ@7tFL0ar6P3)naVzhm zIbS8?Yffl$KW7OyKJsiN52Ftn?d(|6;DN`a<_{W8eI=miEoL+Tn!Z z&MKRN@w+exdO*Pd0;4sN2XKg@YCFFCR_Bd3c5aKEzT=2LR#_V@>ggYj50p(eYpQbE zu;PIWj~y0x-~tZ=rD362ql-ovasyV#V;YV;ClBYyK2B85Wc5^Y;pKF>*pxc65nnC% z&T%xGUfyu_-cx95E|Slt8vDu@HY_`9cbz`H>tE!8TN2PEml=9CzV-P&P%Uo03@1w{jUfobFd&6>IpN@9flT$2l|4 zztHgxih{o<*VVRmHsw&u^F#%#o|q{jBPp9P+EGkdc^Wz~GLDz@;BxIuWmioPN}+XA$`H1Wk7^uuS%x0W0o`OM#41?@~X-{~D7Lgz5hKhM3aV)#$n@tzCGIj9` zHri2@BZSm0LnlMv71Ep%0)%Nnks$@e62jVo0yTq=>Bl1zvy=&C+kyPT%1|(DoIHBc z81dz|x1OBYypA@M+uCEbweMy+4`%fJSl4?Wg&Bo1?lfxu1%;jNx0n)gFd@S-Ha*|5 z!Jgx4lVPlIri3Epc50iKVahTqQ!r(bnF#>P(nZ2#hI{*QZ`ST8b{wHCFneFIu_7D7 zYQur#E99_Pc{~gg$RsdVB-5xzqRAW*@Hf-%IcQ8Bd|-L?Ir(5_x*Ommb48&GVD-s+ z3}shZ(F@IO+MC3<=#MDR7tPJg>j*oP95?Myao`qphkQo(xmVz~nwj2HZ6bwQh|A|W zGTKkdODKZwO4b|6aU_nZ|EBP z5#>r2g(=0fv#>jXl*2f;fFLE#EhOfqxXL0ow=P$Qx7E}mGqb2VXaD-0JD>Sv zIPQD!L2pe3Gc>tYl&N~eTJ4Z)#ifFPM_X&1^Cci;m|ag9ZZCaej8f4aWkpfiXQT*7 zgF%^9g=UydK-sF0L)F=!DkRgFStBAWHV-zzG8G_Y*s=O;4=gM!zw@0B#wRq7D*29W_I<;)Kiimy z-bl>-nX)|DgO=&ZrJ>G1qGz>(51#uVH)rFCi*G*g03HF)bO`Wnb^aVaCj>}kK0{tK zpruk?49oL&UrHHY5$Ba)z(9O;3UvzDw;ZvaEFIMVf;VYOg(qt}mCdBBpIz~fD3#i% zL+tD1b(1V_Pz8jn!dg^`y3AEr7pa>Uaa_o%Ouu6RFd1>cI!J{APl!1HEY1OQL@)DL zw8)7T-4K*B3o4|`faq-TwXYm3Z$Mw#;o;?n9+I7ESIs|j*mzv@qD_Cux$ZzJb>MyM z&zin@Y(3!wC~*GhZ59%6lXV;L8R`MQ&(zp57O3oW7m2|ni`g3c_;TAIhp=mM_*%m#avOeZ6ML!@}b6pJFf3&UAq4C zx%+QvEgG1ON9FHQOuR~Njx!R#$0)}hEGrTug|UB;IYrQ zVz_;R(|zDx|M~qZCLHd`H$H2b@9WMvX9c>v3_2cSRFkJXaPh zv7VeS{SC4LAa@U@)82+<>thp)~UHk!b~nWPen2Ap#pyB5m&YHqrxx^F`=r_ht{ z$@8?e%uE;N#iN^c?Anw_7Ka0gUsu%*4-U3<=j1;8_K}0LjfSz`In#Y+Y{A*QfA*S_ zC$Cw1GVF0b(>zw0*s^Bx7Qrv#AOhy!mN*uCorlHmQ{{LAPn6?}kbbW0m)AR1mI#Fvw)^Fw zsUTY?c8f^Yc{H6CWomgJ#J(|Zp+ zMICo=f6eSsQE(5TUE0!UtY)?-o?EsrBQKKSGa;ay3_gJ!*#~P)2%hT@W)i{<1$l}s z#9(owkD3Rv{RjwBDxn=tP$Bw)%jf6*Q^)L0I`VyQEiN_VFF7GIDD&XfGiysmyAL;u zNX+yvuq5Bf715c8Z#_j^7I{RXzBVK(;PN0tQ!?YkaXH?fHBKCtp)*f^Tu_ZTPOO|jWcSd3(%>-i0k)2;zqyXJlFn6|h6?`cf zcxH69C7kSmyYGI$5^lD7^kt(p*Ah?m{KwI>RR^1SPRKb!y>xCPT|2MAfTn9X&U_U) zuJTnb{T6g|18};@@jK4>vVMAv)3%sJCDiCMvM7xflt0{0&$JC62*4+)p%Vw=;)C4N zrQ@CfTvvD8lT@g2G%@(R9upJD_>er{J(_TjCKob5W- zWlh_{$4uH*Z0a!6vaXuA^=Axtb>csn>!$qtuplcxe=Qze$GzEtcK_>seo3p+&o3il zv;F)gYq_$Yzs&0AS4lF2mGtwEWtQ(<;Qm3gcaL&tUpdE(!TbMXbVvPFliZH)zQvb25Z`pw zEVoT(iXP&etHFChpu;-Hc1C?<$6DEVk9E%MM9uUMyWd{=>$$$a$6rr5$Otap*0npl zrG0RGZ1~(O+rD8u_3Ytu_ZOu47Ml_S9VP8ON1yiOp1JA$?rRPmze(`d^}u2F;q*e@ zCBKDN8~snndydQXWD~0&t>Tf%$l0$MaY8v1_o{;AFGIS$(UlR4i>+@Uat42H>Q!WUrVq zD?63^A-;B#dDGWkMwSeC(E4D7NygXyYWuCXw(kqyu)I{hD@XlR(@8QBIp)fKy zml!NvyBev1rv!TZF4BN{N3oUi+v15tJkPmx>-qPc91jG`ju-drdF1R<={IjUcI*a~{DB7> z1Yc#2W3l692GL~uPi*L~^cp?&t4eq-Fh{u;yClDGfeKtE70|7%K6K(>TzoKFr%|m( z>=$4~ajsaFRLDv)0<<2&Q-hO|Nt?+?6z3?+3A>-L{TW}~`s{@Z&msYhnY)r}iX=2A z%xw;_-t^`F^~&l|+Lv!509zuLjcaP>{))&XhC7>aNaDfGLIW}F%76sv_h=Mlxf6tk@%X>+>AoBVA|9_jlJ9FpWJ9EyNGjq=u8pJ$dOM&EV{yN}MeByh`jl*zTTI1BI)b@=vPHuC6HH6<+Ip^^4p=4o zqchh}iWYBu=FRj6^-OmG&T622RSR*Y&22=5bCl}dbI;woaCTC0R;V~MHas?*H+x~s zt(cwaoT~cJ*S_}9`b`@$64O#slGF0iH*AvWU7ZQ$Heo%PYGP=S3o8$HgRwvqy_1ha zi}7wxcLcO3aA`rK3~jF?PY1ml%m~<%^%c$yFvE_3>EPRhphz8#S86IDv}wII8jVTNsL-&;wyQ-Sxmns!>x4s5_zH{d zOZTk7nUHcB8`JUJvjoq=``-q=?yXII8V`}H^!us zEk?gT+oUHVe>(Rqz~{9Iz|Qwz1n?EPn~|2_jDv^S8x1>qgz-C*QI*n0E~pfASKh=v z^?cffOoV}dYwQd<+~EHF%H=EO2IsB()GK@Up0{^MJaFq}m)$zpzTw(y(VGB9)YS>7 zt8D8o5*{PYp?e@1o0*s3wLw5aV=}Kc31!H30DUBL=v3#VCS>b92}p&4z?{gs6pNW` zs2bVMFpM6PnqcPIU8FHhRw7=mSu#6u?y`%Xc=*bBvx9S5FZ%AKYxZ2cXV1lAi&%Nu z8E2d}c-wn}gQ)ik)K3HrD z+O@%hmQU-2M8xuX-vJ^Z*OwjSxJ{kh)owOX>hv^Z+jL+Us zinI`HvCKT{ZEdgZ%Cxn;V_{`m>{WhWo7cc1gi=bPsyU3a}q4A9#Dp_IV++}24?YT!CQ zN7p%3Im8F;!B7pnNsq)_7%lhIKIF7+$2%!(7zO-VVlp*yMwqodi?uzX10FbZAVoI` zwMQHJ12v#W{jK)-)Ti!g_0ZEIV@FD?DEcSx*R5D_{ujS^HZQ&&dV>~UZ+JWvF`^EutTS4tfcXbs#}+S>&(0&@!%>FR*escYl&Ob_>M3$a##27y@rIM!Hbfgc@I&7GCedOaLX<7QE=9kNMR#9~}yAmRbuxw=#G zMtXE8BTd>n!<{i;<4n9ni!f;7BvWs+MPeQ@(^>wgr|m_~7bi~*P02j(67ji960#c# zI@fkAx^l6om=j4#9DIa?*w<20H=Q>456syUPT*6*DVORjh-T_P<7HT#4O?aHO?qIm z4ghP>o&bO`b~kGUd_xsr zKKyRr1dS39FRK5OUkY$Xx`Cd&5#2E~}!zlNGnl~v7sU^XE2>@dSRC%iyZBCq4##e6lk_= zE}gQfbn2`P2l$RdJE-1{+DJTq8`;9VGde_FJ{hwNeS+jyA$c?Ajfib8K@O$sdZQpy3RK$)AelOO`CBUr}yu5&be# zQ#0`sts71}0Y=mlH!PY`zOZ}>U)H84rzEHI1#MMWH;RSganLrI_C%6EjmE7G4#S2e zejKp46FAV!F3vw>K2!z=GW=lJiKnCtu*(D7)`I0&#aWkq@A|dHJJ%g67Ir*8W$w(u zpLbB7A*^cv$3viPKFy(Jf?;W+a0iZI<8V{yOv^kjNkWV%&{3<>G}y)}F+epQdD8?B z=vfrSqGy^OBrk???LLQ%Su;ePcxdqV10{upmDZKSn7W5^;5DN+Pq)Y?FR^?J@M^y(EM@>~ zI3L_>R_pEXMr&ujLlij`LhDIHev99m_^}k5hzQxn=5hiZm24v)S{XBqxhEfZmm+Uq z>z)DRq6%%9PY9&bY_M4lj8$fD->8@{F(0S+Ov`A>ombzotTJ3ywYq&`bxB?_mY{?u z6qXd0%BeYH?9A*?c6~unLuJX-1UpbsRy#8_D=(uiRG2$Xg|Ze<-+vkE@%zkA>2yv3 z4FmPgCVDF>heE@2X^*pr4K1TI(;gUUOe=W(n6v)8Oc3usk_AX7g)f5mLuY^LP`?iRJ>(5$Dlz8R}_$ z^}t-&SSP;nt)zsM((>^z_8hZ#X6xAIw9-QS%MTR>7iIiI_V!IE8BVaDQV1$8+S zCyuv6`I(8y&wy%I1Gh(kTL?VRN$gc-O=7m--SHU1VWw|C-7`qT#0MXxt@I#CNLJ<= zR1%GvH5N5e==D!M`YdN?fI~+7@ zt5^>cIIaM4>qScjUqFxXS>}g_xkry$Um>bF zwq<=h6deWSlsRn7;4hQL07Xo#JcL9?ctYk?=Ym7tM90Ld;xcq30jg*oR8b7$NjE(O zksbJ*i=V<#0oB~9gSaELiBx1A(={>~WjNA7Z>3I>fV?4f^Nu~9Bjol2Tq70pmrX61 zP&U7%Wq#R&lBvt)=jG?;@vmS)e*T04(K@@Tq%z4)o)Vtc*f=dbCD~4@EUB9PQchM< zRt{gT3uUE@%gGs+l7*uutSdmwN6-&uqeXSma7(u+J?G~6!VH^pGvW~~i)0VBb<*@o zCcdL7w*sbQ8lLDABhtWkIhyZiGwl+%wKzVagnrOLld*h+xo*+%DTe3T7cRd#e_~<& zjES-mOjkXoW_7L1E}aXOJ7y#E8!;ZL9x{IDJ@G@a`>14mzUv)p_yHR1NHX3s3cDxc z>4a<+HV(!-@3lw+|)JMcF74eF^DPR|B_4f!pC_x`&~k=7*B$ zxn_Ralj+FQwIGjjFyZRFNi0bN4GJPaW;$?bWR-8;X5}o?+&oV#kJ}Q|$a+xI4 z;mi&Gm`r-NmQj<9OrPw?bdHcrpA4Bk*^%j!A=4*ArcY*>PGdSU+D+zNEJ>#8m~PqB z$I)CfNrS`7bhAS!6vk0xx|ZcyuIJ|mMi%KUo*ci|GToz`XQMc@ zOm{pyJ(*tipUCuA4=K{Y4>yP|aW8a~|7hGE(lVX812VK_aee-0n}Onjc_@k?J@&3A!$i+Ov!9 z=n3bJAD3H@*cuoYt}L9@oRMFaGwaqNOWd_;d}&B!X65JPWrlMzW=zd42~W(ZAfSbH z6Zqjyz&w@KU1R8MRiGdTX0!95H+DC@DZ?CO*v6pqr_*<_%8SRRL{B=O5=-{b#!KOZ zMUsSdbUnUveUf>=?KeL-l3Pq}oI7SlN=ZR|@r1%~LH_uhP}r!_eanstaYfK>#;wR051>hDEHGeDX%Jxs3?mJ*v&}%922NsX!|aUdDW!Q6@+aU($%OW_mv4o{E-9;;w*Z9C zFVD^^%t-(zB_=*RuP1k6w64C5=zWX9iO$G_)yg{~&)Z>RwDC4`6M;udniI_uUgD+# zPD?{bRcFR|ERltOl0Px`W#<4X@{tc#0ik53|x3bO62f*AReK@0Ln@ zpaxb1_tH4}aW+$JGE*oI_8?l~qsQ2X z8Z+y0xo1&5ynKxxGtZrmKfvHbeX)Ly|4`0#(`2GxZn1_6*3ic`UcwD(a2P zlrlANR3g>1(Yrv4Ba^8kQ9+w|9GPkvyYomg6*D+7#^? zpZk0i_-d$p^a~jMC=i;&6+ zrih%Up6cBH%}&17h$=C4_TalBID7D!!C%Z4!NGTtcdE4;d#yABmk_xJ8-I=mfDWxV zvZn#YP=*LKVw;5W;6xED|G)WdRbq_@55BZURJG0jy=3aMw#i)TfEFg4=xh>bj69?TM*?5UzqY> zNCc5_2)ho7fm3FwW>LL(@aZNyVWZr(F#!vEpII!bn$@gRL>u57hdie^c_w;!rXf%4 zoJM&yU8 zCHft%OKvmR#RNVz+-k&gI-BglkLhg0m5k56t?xP9OuW1U=Y*Mjle~PX-D3nmJYw>V zI{C`QobTYrM0QNR?`_@Z<(p=$0K6w?cwPGY;iWzgwMqM~=$4nJ!98d2&nDXj2G^G@ zcx3|eUF_uR?)jtpDGjfaFLKuTeoTY=XK_wUzCJP_Us`KVe!R>tZoU|^QUC4dmn0Cz z-^gjL5SWvj`LPVJTaRz)f=`jjx?t)%4q1+$U%YaPxHDmw?3i*~zT{$L^57{>G0<63 zhrWgVh-}E*cC?4@L0f?<&=5+Gd4@E8hIi;0;IpiY<#Dna`YZS>gn=u~tbxz6fVN)_ z7?gt=HqFP+%#T1MG=K>r^Ph>ik=64f<#s}XU9O+FaV}H$-H)P7$O(8J>oN`Phk0Fk zE2Evh+wglxGpfHE*97@J6G+E(kNyqKsCWQ?%?&^S{s~q&`0Hwn-GDzijj&Dh0mxk1 z(31N%&A0V*D2(w@ChxTZ^mimb61cFux+S%>OX~8r)kjClzldpn3(QB z@Nr++meq`U--G#D;2n16Yac*+i>vqAIg*{SqwFu0E~h~rQD>=Xxh1=-ATzU|EW2{W zoYK-cD=N3>GGq#amK-V>KfWZCvT=OPqMDk8HRCmS%y+)>g;zfHZ~07jEmLVaozc#w z-S=?lR(=c%^E&GVy52wKuv~auHiV)u$ z9yG%;&pPjS+b54KNGgmCGY|_Sc0W86gxL+hvf7c{g^I=`8h+X+Pv|2viJUm^YkjO>S+OUt675HMg{EPDO4-b;u5Gl=p88+GBI-TUR$M+O=|8 z#qv|zkH5HK-jr=Eb;}wi6f~`;5YD9{;z7o9PxXXFLp#o9v*B4h*d(3~Sl4T54Jjs?u2YM?NutaNTwUUlvKme$FO zHqDvcwP12~Y0ZQX!z<1P{@K$ux7Mv_Dwxo)tgdC-lz9yoAK!lJ@``CIcP(mI-CCbB z7Bt|tI`kWnEcb|I;E*)*PzrxqTTqZG#q!#N8^tor35cQJSO@Ul4)?v}VejqOi}ytG z;7wwg+K>0L$#K=@1tS(=jYEb>64K(W;Oq0F zJajUi0=2O(45+RBNy)38{7z`k*d+Xt@uRt}bc8(5Mc$?6$6H6EcJx0v>&0&T*q+2HH>QFvWzRiO1WA zs}+zES&-v9ZP!Y>I1^M3cTkwMW5-p_f5RkT6Tk%?X?J<#$l*FNZaGT0G!uc162L=` zfQPPf>n)4CXj3q>(F;)sP2wW|F0~H&@N^_@f&>9K5f{;JhG&^Q|d&*tbr(3Y2oc-Epv1V%3EHcE=Hyd->kMcVf%kfi^fY%<<*&w@$gJ zGRQ*6BL0?`-r#E)e2oo(w)}t?YQw%Q`_%q}SCf1c$s`{~{gxIY@;ET=+xtmoS_h7( zTu4Hcdtfh`bFV3uzCEIHM2 z?0vgKb{wpA$|ae9WaTFB9qf%Qcl2-L%jIvKa!EJgItp47sZ)dJz0psxb~ZRd9kZrF zyYoO>K{cZxvwkyT9zj}v%X!4sbxa=jQ-e0`8Tcnz(_(C$v<(8mVWVvkzj%5|5=$Yf zf3mDF4?NpeY@kAe^XFMkMY#4;i9C~#C)w5D17-3QIzQ$pL zFjD*1Jgs@lK=lqZHJwEaOrzncX>|m666Mf2jE-j#@Fc#a#k_~blQ<%-E=K1Gr#^?{ z$yqpk9qNw0HYTvW;PhPICN9#;}r3U}&mX$}<4?Dp!|9 z`|l}C7dT~AumVP?6;tQo@iUioD0*?$a2`Dry+}!lg?|~^`TMSecbL0BlsdQ^a*&Jr z5b7YAwNcW~KHxgg2>9#3=uko3ZbxiW9uIjgEwsFm_*FLw^oHOc(se`ynLbz^>UL)I ztR(U$^!2TW>=(G<>HPieL6_o`Gx#j@D(WAuZo@_{+y}X3q5VPgb~LZcF@2Ef zFc>-Vv7k=FX@9y+=<=clufcuPCV<)fd*jMG6z#Zq59{-EStHVpdpuXqG`a-$ssCZ! zBtrxKFzSZN8GHx2=Z91`TwX7=mH%Gd7~1*k#^`w|v=%jfKHSe*{<`<^H62n*=b5mO z^7>v3 zA&5vM;eZjuTtdL3!Bx`Q0E|&bXi#RnG%cHcdqc4y286TDXdXwA# zf3W>AW2m(>R&73v{@5#1i%>9iTz`zYai5HHY$K2-V09W7lLedRiINfewHjxH9K)-I ziqcvP-80S1N1z03mc^DOJ^d0q)ZBxfTPTBleDPIRi3&$Qo40R1z;M!!ef+V<+X$%Jt{KZy#bvFYWo zoghb_E}n!+@n+eE!%3EW-OcHl0M>^D!Fmw0X@X!yzRR=?FeYEmUIZQld^9!V*lS>? zCu0OqioFFpaV7Sb)-9Mn&BaB zPR|GE(ooXizP7!h;y@eVCo2x4;MlAj+W5vqL6kysrZi`y*Iqgn0a&2SC_QQ{|4zOWE^FmM)<*5cph`@hE>wvJAu>dQfk}!I!Kw*~y`rBv#4-|Ml06Yy|WWJ%@ zGMzCT*8prJY>A~cW<2^dHNf-ZhI8}`!?R$VeXyy%$XpJ-G2>je9m7W9<*V&`+HUOh z2tNKMaR#yBX@=a@-H4+E&l#V@`_srBex#dXbU z8!4__5)3d)_M)_BQQGP@`4*5cmcR&>7Iw zsQoi-VE1!qLv~@$_8Ctb#grjspqN_J;1WIT2X$8KzKQcRv~eV|?n07@Hi-;1cmp*` zGsiUfOo|3L3H+naj`qe5TJ7N3vLy$|@RlrZJ2>ViKmkqIH@}c#)zB`ho^A~rZpsn! zjyvnX-Hu@&bUdby;65^iJgrBpYdyo~crOw*o_yinLHCw4tE+p=0|(fjBVn8|{exGy zf8%nJwATW*rZ-*-BwUF|6eelzq7rFJ8fAitPI-x-B5db|iln$vf8xx^bC1ocqz4Bv zg$oNc8Q{#iB=Z~7)F=PRx13u2$bFU5+TpXQt>jP>skf>CkD%I!?O=;8B_1(yhdeYu zQ`>DnH$+{U&2st;-KWx!fT-)}SdOGb3)E6wn+~+F)cvWk5ii4c z$kOS(x!2Zyg?e7YabeIHI&&P3%miiSwbaHT8VCn18EpiWfz_HG00R#H_hXD+krtJ*x7pQFN zfyl9lU?Ddd>g(azi@MkKZ2Ai$#ZlvKzoEMi&D>gS=`M;{JO&<&{WD_Wp}HXd;X~C0 z?J!1AX!tS_=OMQv-?+clI+Cs@(-d?&(9K#m3Cq^)4g5!PFB4A8XV7}?TyxAXbs{#3 zp^!*H;aFXJDF3KyFq5g5%9()r2x;5j41{z>Tx`wyT9ChnSp_pKiMl9V&!mlM8DRAI zWgsj3U{Ghwf2ivW(3K>e_RB7UGcawKs!ydB$&usETwGi{dwu()w#8>27ipW+zJB%~ zEt}=On0#Y6KmYke$dBfGvD*iEJ7!|oXq)B5tOBFhb*T! z&omFlbmWQA5Ax+a;Q`B8!s|7&PAv1mD35cY6elA~(kG0*$a&KF+|=%Tc$+*k*$Wtm z!!tNjEc4)0`v-4w;p9x=-#!$O$ElT|8T)t|KN&}kk{ro~TdS-oKlo(1S~>q;|H2|B zz!Li%oe#kNHO@E+`vhf|fK>80`tI)ecEWt$HyJcyO?BWWOTU=cF^Ee*<+fbyn@2cOoi@jo@ z*1{2nR9Q`5uCv4YyRzSmt`DaS*FV-@28|qf%xDT>pA+`O;xf z9r+rgj1llKWoR_0J(x0rRuM6YnK$yr$K-|PcxULD-zfF9gctgLOgX}$$+)4h5pF^9 zi=gf1+3!cY@F}>a&>AVd<+wo4Z-a|y1cN{Fj43v5F&gh!nB4hx?GHy|FYSRs)+9&f zGo`8Pr)fUqHv&v0ybaql>AVTRQYmw0lt_n!Rs&wOynQ%8AEp8D?^-+PKye2hqs zasRs1|K8|yBMXp2k2I%kxcx#LrPB`n&GBgmZNwvod0#v-ILH6~?!&#md+@q(eXKb&twpqKa^RbKL=dD|;yRpOckFDpdSFkbdzp%(N z3#(G6VZmdoST0Two5g@QM_epEE50bcE*`*cs6P|G6@M20P}kj$?b`n--lgUyPK6-B zK#4=BAsiN(u+)SNCTua`0uz43gxx0WG2z)JyvT(6On8$C?=s;xP57t@pE2RfCj65L z-_oIwCQLWsI1^4WVTB3jm~fE^k1^qT6YezO1tz@QgjbvJt0uhLgb$kVrzU*fgfE%! zuh0d>bJh2XSMYli{TEL>zDz4+Ubc9fA5M6K65jA7yh{o1QUVFYGz?v-LoG*_SV=K) z85Trb$!Ux6bOp!y@N^eHosXwWIqfredJU(QSZQJkr`?11zRj^AyhrNZ1K6%HO>E;B z7Uzh&5!32DsnBHjBQ=!N{d{v@gs>d4#)55BPa zkbWk@T?jvB?mubnKZWo!NWUK8H3)Au_g^#j;1lZ}q<;_Lw-Nrx+&^jVe~$2F3`btz z0}%d*yT9Q#H0E9bEnQ#?D>BV}$lT*Z4N-#hYJ^h|M$P?9bKi_`KGIhqT#E2`bHC2q zcOl${^xX(gMfg#KyAhsm?k_}m8SX!i@JfU?n)_SK{p|?vM*4RU-iPo92)~2y$L9WN z2tIuzfZ12v*;SbK827~!d~tueKkk30%=dnyFCOy6M|;Dy?XYjij@w*USgWvZMe-hz6`27g+pCkM> zet$%z)Pd>P>j2>*ugWrXiSl&2sZLYN8Bo`CcrgdyA~AS^&Q6JZI$W`t7^mLRM~ zI0a!8;W~u#5q2S5iZEU!IUniUkbWV;QxR@MxEtZA2tSJO7KE1}ydB|{2;)_fA0z#4 zq(6=DK7@B8^s6Lq;{G|L{~h745k80T6@sm4yQTac_Q8WFwc4YC_h~3eCHM;_Bly|e{f3l%5n9V z)10^5551CINZs!|kcA8BhxMV_udBiV*bO^IQ$_ywKGSG4`jFk_@xdR;cAI7)KX|*# zE&tO|K6o8PJO>To*Q_;^qt@7j0@Fr{YdA@9jVUQGfRM(~hxgc+0%J&uYeGqJ%_=Fb z2_?lftE6ZX3QP?tu304o)*aGJ==5KB3-OF7-TlAQkn#fH{v&i1(qY~}NcTRS=0i8D zkWOsfa`!Lga{U|?N z=zQlEBlbB-gKs(|dgZvP&pFOp?uTB~Il^uzj4?blV|0PKb{N7G{d_de5T zH2RpiJvGkEMa9mEk`J7oJ*7!eA=3^wXN5U5ndZ!L@%$)FVL=XJuA3%x=`gUk*;(xm zM6;km&xtwj`{u@-*<5c<%r|dJB{=hFqs&X{Su`#~&)MSr1gnJn8(jYjXUzrNH-7iMwvq1V$K=@8{!du)HG2KUlnKp2}r;M6?O~ayrxLXjQl4Z zkdUF7M|NOx_tYWx0P+E&d2qzcJh%gsJPwoT&F2in%VymC!Sh-s#gXvF&({25$CjB9KEZc{NV{j zmU9HY1}~E1G4|_biqXCrPaHG0a7=z~)tE?$FD}=nB_^kYn(|7W z5IB5R_Tr4!$59nCsXk2mhqaDQ;p;;R)BH^*atuZ2jO24Ug}gZf@W`cg7@rkW2Y(?S zKM_gD_j$QooGo7i^=pZ}ymfJu@00Wj)#W)(gsPj)`wLn@a`25iV7s!ctP(%Dd{TaH z{v^Io8{Y%^{|3C223zM^a?94IR>Rj1O*)hO{Je9WskD8*LKuZ0K|xNmK`V@(Jc&35 zdxW7k2qMgW3Yf)!QWtagy(!`F6#TwoLbpnSGW-HoZGiWV}Z-eZE z91E-FazI(lKqGRe6M2dw#sR1tJCv3;hMt?hZc__>a&FOsbzjAg>fm)bSKOl}qD<`f z;P%yqD#HuVbpYxkKQVpjx*j>V?12X4b0hNUaq@}hk>$(?45(q23{C;*8biSwd)6(L zuQfbSM)2&E^TewPTutYG5g`)MbWuw-@dOUt)jYA>iDWpDJ2|3zY3jbI<@3h8_#9u( zbRbw{3dYW?kuc*wAe+VS0ZRr+MW25umtT%4Gn zmX@Dbyg5`Mn|qqdwkg|I+sc}HkS)$^kriUUngL(niPo`HQkV~3yw@7%w#&;1AZnMo zG#6n+`kY70If8SXU(^T6Qvhg6@cq)%lO6$N!=+1X`v1x}ckAI-~` z72`^43JYpW$2no^gxqjF{ZNtD%PMi7dIGT!W>ES_AQxLDEMAE1XjuY}3vz zy3FhH>~iN(pA#8FkyCLnGf+tf0?6=1%21#2t(%=9zgDx+uSN++?35Jalrb^2=G2al z7uHS6$(dAF=!8v8O=?Q@uC~FOGbdK$=T}V3bi#R&^a%bF`K(uEhxnw*242voeEk6T z@zqE+wLlTTQ5P%`jmKnPsjy(s;vV$R6Rdh#4^dzh>NYXnR1ShffD?7> zopHlE=Qh^4hp?qfF+I|hT9FhEWsRRu8OokB)=tSyDZojCmCsDbs7uXEOHU0Ys7A z+-XHwv!@4EB~7Zx4Ti>K=B3o6PJbpTD;%0UJwGEUJ5)4&Y|^;&jMPYW9__TBoW^ka#|N_(ZKuBsx93iO}J=%zM=o(OsTNIfYXo z%9$0Y7t$wW1?Y^3lI@?UEicT?Z>c&%WlqV@pHo;AUZ-h#pX{(s1g{6}GzUJ6in6UM zz`sE|eFzJ!@lOnWTI{#_YiNhTuSAmNSUV}K=bbntE5W>EQPDA_T( z#FV02~OyJLA1|~OIIB;{Yio$3K$B(&p~^P zfk6&6%Nf>p)a_v55cZ&_uTX3?7mLVpC!zsC%3Dr~)-0%}B_(#BY$fB`0|2D1^8b+zJ6-{mBmm*J}`JfBf+B} zaYumX-mY~W!{HJ0>K-fxvMx;5vwT|M(8wi?ORU4uXae}85Gydl}%Zv_9g%>q0ji@KNfNHdiL~b{s;IsYSY`A%x0D z#-MT35z`3xOvJD$R6=8@3O$B$Z-(RdM0#RMYFb*;_)<55RRTkcJIRGCR)%e zU>d6(x&rnomaDXYEJ&ghIFW1~i;%Sc@ua$=(^fH!ELMF_={ULTZ`|&};oDh-FDjBx zl{`>4_(V}|D7Pr?LVTmpk1w$HtFJ?U90%oq;Nv!4&25}pHxDY5^^|G#I1kl`dOf57 z{Q=(uz^4FTBhDc?1c+68XYbiFbMH0rQ2yca#-5(W%dd+Ak#9Ae?~{%S^oyq>n%E(M z+}m|>$0>0Tsx#{zDA_wAcoH;h6lGk;$<_&=AWH`p0a_bOj1v=Yku0FG8JIQ^#0vmO z3X`Ff)8-J#&N#r3ei4&iGeA&}1#UtA^!E$qoUv!-1zg2vUEa{s({MS_N)9bWe|fjM z0d<;ZwG899x0uo5M;|cX=u-8dL+dP=+=jBa$hnTb?sc8#*Prvz`tz%&%$k~?Gu0N%2MAI8SR&Vx{U`yoolZ?!&vCF0KnGC( z(rIVcPA;fWg-xG+2Y$|T&4f57EjCB$RuB4}A>`s{y3-*N$VQE-)t?>M-e;zVxXh(;^EiU8Nb58{ zd*8{MD^kcE3Nt{r`=^cmxj+hrk5cVMZ9MPvkQPO`{QL`xG_WG}jy`kg73zqdbl$xT5n^q!-G5LT$8mJ+bjJudtGiqc)r~wc40#$m{MGuFeH_|5*(Bxxd$vhXb2YWY5yIY)T+Tq^ zgR)DgJ%_bR{MFiT9}n3^b_s%!?Go2JW4v`bLNEqVLp0e*(-0rLZ9?rk0^7voiaLS#ea|>1Zq$(X-F48_{y1J~f)?;M@=!d@J2y>R-U zWYhn246FSSD&6USK43$Joji&mgETPM^{BpE*_QD#pk!OdI>&Nxy^au(>1@hEhsb2% zaO@eF5414E8-rgMKREu3M_-m^9fRK~`0c>&T>SRocLRQR;`cCqPvQ3xesAHIdQx*r zOfC^5&ciPO!-$d1C7wJwoVf&SvFL*^mCQZ^rV_i=6+3RkHI-oQ=O06*RubmvXnzpW zjL0j8gnVX6(%7*o_21aLWaxUl)2YUigALwE$2)Wq5AO*K;}~0*se8dEOH$XYG5?p0 zl{YO&S+TH4SgKv!aj^xAz&roM@8%0#40g7hyys*Sml0_1r=ri4>DhFRVunJ`CThL<+9GBdoG^9}^F z>w>inm;%>_?vBfG9rON{T{aWPUk4n*{}330qnKO#Oc890TT~my~4*$JQ20{a}!Up>cFr1+Z1cO$TD&GcZmuU z2bYUECZ2BPiJzMI7_7iNVB(orL-BVVM`mNiK@%6&SP7ddfhMGtC5ucP8jP$raoft1 z?Iw;LvgA4w4_LX9>_EcCgt_$*d5MV&Ym)qfiAyV;`I6pI)*O{*(rw>6309t>zMtL+ zSjDQ}#DmsN>IxH2v~uhQ6Hl@>*-K13#j3TxVdAM)sZG8Iluw!nC(tfv6i>J61CvdB zjFlHS(Zn;YF@e)eJj>b{xIo82jMBh+CN8YfV4;aiYf`Yq#Npu(++yOkRUf>_#1pKk z!G}ydU`2ulTKjgK(cis!%g%5uPOJ|vY*`v^?d#uB6>je73G;)2aDUf8SN~~U8>{H) zF+E+UhnM#C_Jvn%Z|T{%vTO6Mp3eT-sz{`MCOxMMy+f~5uIk#}-O|^y@z}2Zf$qNE zFuxY_0_EXkduzCRAlw<=+26UbYkOz^ws7Aj7oZA2vAKI-XIFpM#&CCUczb8>8R4zF z`nv}b@qlg zcJ+ssbawV4sk;k#a^lLqf$g0=UAx_bBS-Bs(6(RR+KYD3?4--GV;+bL!B z7C_w5*Sj;ks&CWI-JShighEgEhOXWLz`3iJ3fj4)E4*sqlJN2!UA_9{CHjSmutS%c zs+y`WXJ)=-N}Sf&-P5_grz^a>d*>DqrlWa9xO3->uz_P>Lx1;*sYbio{s~_)GA>M5D;4kd^Vu0_u&~tSm^)y^J z;!WqqDt~$k>zxb{(Svg9#dSOK=>@&R)>dFmR3E_8ZfgVH)o@dpyODc8VWL;hSb_J^rYaZIHlW=slfG*Dz{?$_#Tp{Ro%fo>KH%-S}F= z>AkrU!1nDpUG;-ukUbmN=t?mMgT zmZotB=Rmx-3b9T2ayN1#Iy$w`gEu!YEW~9*&s|(5)i~A97JhdXxMm6NmjhOUJ8XG5 zFNw*4aF6Gg8bC(BFbuQ~WU=Ks&~!3QyP0d(<4SN+O%WWLV>(bDD>%LrR0|{BPmclM zLUq3bsRJmHc(w;2)%s>ocsbx+^1i-_=VOOk`i8ZZ1t@JdAS2G+!zHgrYy-Hbl6iAG zpd)VDjCVHStvQoVA@ytYmTq?=ztM>|H189X6eGNd zF0oKi-$uDo9gg%(Z0>}?X5ihz?Qb)_pt{ynYXwc{j`~pIXre9E`gW9naS&-;(53fb zobKq8oT4vw7o|cg!!&|WRy(+4zO?{6zevz_UyH#rORZ(#o@2m!D^cUCtu^5CwaD#w zc>bJVorpa>O06<$5?ppBTT`s5)-?12P}IS5)aTbix2(6KRs(wfCRlH0pdX%P&Bkfu z0TG0CC>w^u5IG^!LshJ{DMVd$#8Dfmc6l0;0CRruc7&xA0iyZ44*4-im zT4Y*Z!{{dieHP-fiTohSfwmt!E{VGu` zN<^tB6O%-_m@KAQ7s~(M%0QrQIC=1cdc#_6%A-FJ)+UtDw@P}F~jN= zGp+4nmY6N(h`C~(XcjHlo3Bl@iw-egED#IDBC%L35lgXq>2h(5SRq!5RbsVRBaRho z#c|?z@e%CfccOKJILR6mmenUt7VE?*LRf#Yc8E@~9=tLjHi(VZsiI44!j6AiM7P)~ zwuv6GUG!S-iazW=daCFb17fGxB~BB&v0LCyak@AIt#!B9W9<@WinGK=#o5>?@LcgR zah^C|d|Z4&Tp&Iv_KFLwSHwlwLGTjmbnz*1sda|9OzguBEoX^OTR0;`d`4Vh-H3J8 z9~D<&m%*#WHR5yP^Ws|Z1#z9YUff{aC2kZqi7$#TS--dbEp8TH7PnXzid)53#8<`F z#BJ7Jth2@K;tq_&KPJ9zog?lPcZqL^yTv!fx5R#NkHCsuaX)r0d{BH_JS4s&9v0sf zkBIMCuZ!%|k+?c%56N%54mK|F2UA)dj$ zhtGjEG*e4q8LjM)7O$8|;eslJ%O^C0-W4vmUb^7q5s{tsjfu zi$91ziUZ;`@h9w>__}yQ{KfjGcvHM3{!jc>{LT7_cpGD;C#;`Z?}>M;C&fQ#OGWXX z_?P&%I4B0ikhG+bQY!0r(v}G_U~Q5?>nWKildPw$%`(~gnM{$XGR^w5Ot-!+GvpYV zDaXnzIZkHF92t_ia=dk?%#-#fhrR@o-oWrv(E7s!Qjkz6d7$fa_bTrQ81E96SKO0Je`~rMyahR$eWyk)M;Fm)FWK$m`_w@&BF5i%Uk#FKSf&Y_#m4B0O%fHKar&TQ)MYXCn)o#75I@EmY@76nNfm)~*sl{rETB??*Ptk$VhRHs_6HmHrNOKnn{)fUyQwyJHaM{QTVs!#1ur>cH6 zpmwTV>NK@movzMMd(@fgEcH=!wmL_ht3IaAQ|GIXt52v4)F;(mb)mXQU92uqpHi2q z%hW#gX?3~!jJiTysjgC=RadKP)aTUa)wSvi>N<73xK=8kx=-D&9#9XeZ>xvYchtk`yXq13J@tL{ z1NEr-p?XaHNIkB8tbU@NP(M{qs;AV`>KXMj^{o22`h|K<{Zjo(J+EF+FREXw->BcJ zm(Tl|8^>_7-`iJ_bdRM)t z{-yq{4yr*lghRcBEwSdnwiE1t4S#w&$xgOY>{L6=PPa3xU)f`<=dBm5ORe8ppTel@ zm)MQs1v}IFwLR9(vd3A!v0k#X?HoH~=i1}#JUic>U>Deh_Cz~u7um&jiCt=!*^}&Y zd$K*no@!6CE9^?U%C5E}c8y(Y*V*-U)NZgF?IwG=J;R=9&$4IRbL_eHJiFO$v0Lpn zyWQ@v=i3YHh4vzQvAx7zYA>^w+sD`|?3MN^d$qmBKGt4qA7>wLf5bk)KG8nOKG|Mp zpJI2~>+KEpM!U=2WN)^&1b6jzM6hZ}YZLo=yQ=8L#GSkQIFh_`OMjP6OWM@8tDh5-Hg%t7-W%vXUB5Tbby`=ij&_lq zM!(qGZ89XtVY!Kzu*QV7CX8}eTcg8Bok_2&8>7eLG#odmQbx5k)Aa{+4II|gw(GE_ z&V&ti`>y^zx{0*cb#P*&*_7H`Z|?QSk>)0IuQQD_H=Fww6SkR97ZPbP`Lq})TTFf} z2KpA0UyI4F#pKsw@@eS^bgu6Qy(rsAO)FATF%4c+}4c5UATlbKG*=-k*1E7w5xfcHLftkHL=otyhR!6eM4locM;nLC4>bEk3C zcPWgij*s!M)(NSdJG*;eHuLA%;lFEXjJY$Q=+ax9(lx=N{x_Rr@7iLX#pKyMJ?2@9 zz6*ACF%?rbctlFxu(5Av=LT5Vb_Oy13EL=EEa(+h%l5y*-`1Fs=rA_}f4alQ*@;_nzGYd;`7ud9Qxn>wBKk z+qt7}U?(hwTe?(N@8&?C9|3OV0Nl{OwIi)>%Pus>{$1O9I(O|1_Gxrd`q%`?g(UQC z>Fe*+_10z(Z#VVRX7Xt>_1JFeugwV!AGA5|n>O6m80gm+zy=C-O6~Vy5E$S`DFZ%A z4fviDD6pG%jM?1P50mu9^*yH5+B;Esft{Qqzf@bp@J4DH>H@p`WZ+J&roG*O)83f2 zD~1faOs($HwVD8%Hz>J_>o#GRM~`-cUx&fB-Jy@6OFPpgQq#u0GeYi75w>b1+L{Bq zHL|-sWRrF~ol#&ncRVR)cn@_wbVLJZ@FR0;noq~{z#h&nd5_yD0?j_eoqBIJjNDus zY&NJiYgCh)CM4*gFt&s2V@)<1K2p=v zkuu+dDs{e(-IC|KW!np=cUa)P7+B~huG5*Zh(sf63NAFTEi}EuLftzoTohcmh-nef zLCPX8&(y`f!UIe6YfE%9S>k(SF9BSEW%~It{d}44xoQW?F89IbG|E;(o7VQUcA>~ zl(Nc4kX63ty85TL+pDRqujULWEmB*<;GwP82G;noHeFA<)8-q}*2G}F#?;Xo)7IB; zTVJEw`Wg@Yc5b^h?HvZqc845>ob5~ov~4Z3YTCF_;@+M1ZGEk7 z>&JT!P2;W)9Pe-IhLby*0w3Y*l0V||CljK+F2d>#LM_uwDtA$l`nuW-A{WA{p1ut| zE%R5J=XEB%E-t;^q}Ru#Yc%WY8qD*CxaW-~y)iDm$)q>MrB65M)8o>cO?q=&dW%VK ziA(3|0DjyBBh=MWU)N#Y?}&ZBo~tubUvKDBZ|GAWN1uA;BfMwmQ6EQ-dP9$TLy!76 zdem!nsINEp*T>;sZ}6{=!@u6(Umu5my=JTW`c{oseQO+E2LJkY^SnLoxuHjW96j`~ zCQ@Hx=uyM17xxDL8iRjL9R7N^gZG#}5gL4Jw8*R1qa36gd}`wGsWJ6g6IY)#rao&7 zJ~gI3YqV&suQl~oYv8Rl@YWi5YYn`$aq!lf`l>bX)*5(g4ZO81+9UO~x?8EQHT14E z@YEW3^k@z58G6>n(Nn8Fk@~h8-74FBx;v%%+oZ1ns=?13`1KV^b-M}6-xJS)< zrpu|1YN=MQ)w4)_tD(tslTU-eMXPO*`soH&t-j%XLtCvMMe3t%nunrou{@;JKs+}z znQro(ZfK)Nfym$F7d7QzRLFf$)X-KB?IQK<20rZ6z|XaM6^S}^rH6cx`esv3vnfXp z5%Ik#N2_Cz`VOZY!!vrQ8L8JpOoZlnhoPq)f+F3(*lseWS@=OH6QwsoyqJpAiGcbd%m;%AfAkuk)UH4x@@L z*Sr^T_`=ke9&Vw2%<~3QA6lX#-Qc4oJNUxnt7U1V9>yD8Pp15c!v`jx>E>Rmo5;`9 zL&V_&=R1cF41Dbdo<{Rri(c@7d9HO!@PYH4DM#y~-~&^R7S-SbryPe5OsI8P)Ps56 zVe;3yF47JD9VTpW@-g)kG4&U5=xg{OV&0E9?>l_p(APX~ao~2~GU<&BM{T5$>5b62 z=W=n+i5GU7Oorx9Vqe z8b`>SMiFC9qo_8g=@^;Q_&qYG@q5~w#!+of;}_YS#xXYJZS3va&Sh|f%AklTgQB_& z9iuY%Jt~9W(`9f}m%%S`85AQvg+)%|U!(g++-v-6q8k4i-Hws2@vqVS74Es-5Nf*C z=yr{Ju0Mp_4iIuZBGhzmG#0$Zdh?!cw=nqW=QX-N$Gxtf8r=?Yuj`>k_sh69@MwO; zs8+wk6ogRMf6a6!G<48>kNi#fx?h53ZSXh7 zzZ%`2)kY(l9#P%T;9kQO)%_Iib^g(a&OfT#3DR}`QQb~(ulY6_(d9%V++L8b=@!-f z4DK~vQG;*P;2Sk`h-zJ>Hfrb|tuf^rQ*2c0CU|bj*SZPrP5F8VfqPTF);(~q>o=-( z58QLRuZ?Qm1EH?ZsMbAjuldaMSGYI$Yh45PrhKhy;NFz4bq(B`^0lskdsDu#3`c8C z`E`c=b*6k{YL3>K^6L!#b*6k{VUE_B^6NBTMe9uYb%y?Rru;fXf2~W`Mzt=D(3G!r z=h~>&oe`S)*Sa$9P5D|k#=UN5QLPK(-jrW&%C9%&Yuy&lP5Jc(|9VsZ^`?B&9;2qc zMYY_mjhc2IHSIiV+IiHp^QdX(QPa+&rkzJkJCB<79X0JcYT9?ywC`xtl;2?J-(cvk z$>k9}C{tbry4F>-PL;nVYe}lna%U^tF=-*)QZ!q{b82lSd`9?lO8%_CIUe-pn z{)Et!uk{MtoAQm^h#I*OHF6``Xz1T)%5OB~H=6PrP5F(cd?RO~M$SZyoQWDa6E$)s zYUE7R$eE~-Gf^XFqD=<>CR2WsDZj~--(<>fGUYd!@=bplHT`MS^rKPJuSQM(7M*VB zZ~E7$>0hI!UyYi6Hagvuuk~11olW^#pT)f?e|kp>n+LS+p3K&UstsrK_awy_&my%( z@vAk0zRoCcbw&}Z(;Z=?&L|9Zy5qw=S13YeFofK&5Hdgr8&XN}LdeCk7FMTwPb4xm zBXwrvR%b?Lb;cN4XGS`8W`u;zne_LyO&SwzRbZsp?vTXMEq#64^m9f%&9PhX+wL9P zW86FbJi{|+@VmZy&e(U)@27k3Q<>>bLE22?dz;}%))hgXv}1gAQbh?V`V)?)yG9be zbwT92Ous>hQ<51}9c8FE>MLA7Vsv%XFae6qFj4TsIs${4f?rB^*@JIQ9Zu&P{gqd& zzW2&bcWc4-x`+H&hfH1$ZjuM3o8;v?&Lg+?sV~vP%a`bVp5=W`wZ*VyIk5QX@B7#T zn)xoGM+dbLqeVn?BLVO0-qj1Wbb-@5YjY8!RYXj095LEO#Ap{0qg_Odb`ddBGh(!i zh;D2h?H#%|i5O`dF(dzo9$f-1-3!oEH5y$XyBKZs(tj} z!`A{oHcHEc|D0eCHwo{xw-JBGdJoq@kq$4u@uCdZ$zn3D6`~r~S`o#yQ7p!FsaTHd z3UM5+Ckm{ufbZ8AaJ?R$RYKf?eGvsbr5?ofA$URw@q~B=*Pn|waD7w!AFh8BC<}f` zLs-TkB+4QmAzW)@4X*VPyR*VOs0ml{4-#^=#EKDk0kz@UAs65ZFCbi($z`~%kSlOK zP68fy{G5U-e1349MB5?^ci zI)|@|_{HsWjOzY4jm@imPl+%L@k0xX|;_d zf9L!}H+-31g5T2X@KO3F{E=Q)Htq%~CI{h%GzLCL6Zn2m6;lY$qRH?mnhZ~(8GJtv z-a<>v8};xG8l&STWd`y;vcH!A$C3QK4#?>5pNISd9wYs^xKR#-7SE3JhR+CC+)~WrnWf>5Y-oP@AYv`WyNA(WDZ5 zfRMQDpF}@=%XQ#!mCg-(HJM|?HN+2G&-A`a!!cB|y8bjh%$E$Mng>3oe?k=TwV1C> ze68YZn6KF88t+u_bqQZ->8B9bZW`C^e4WbI7x^0DYYttlPjh@4U&ryajj!|gI-Rb; z#2|Wkw79VZk2nk7t7pO2cCWY;D-1s;Zh&X(ZAdxtzw_|*k^b#PIfweY6i^KRy8@6M z>hE)a`$+$80EUP9`!et!{&yQ_a;QH|L4uJeNVFr0XiTqQj0iqmF6U0Pr`mwDqbquL z)a?}<=emU_E~Rt*%T$gh^E+I_fwsU$xDLMoUwKRX;zRs_=isk=w7<{7^SlLK=F8ww z-U3hZQ{W-q17GkS_$4!o5WAx zNv&hfbrzS<0lD7$@^vCz?MLmOAWzd1 zVf{r4ex+FZ5y6#0`lD5MM2%O`8Wz%3e1oqSssQ4Rh~wlG=v5_X9TMwENcZ5Q8L(y| z6YD~fuqq^iwHLL}smh`4K90MeSUld*40_zZ>(3H=@ zii=rThcHKUSm&X37h4yz)_fVQsle(Etf{cBz?zD+SkrMLR#SWy8g!R+4OUF_S=V8O z#M#y@SpRU5^(}FU_>A?ixKdngJ%--nT6p=>N`@!VGQMOz4PE;->shpryRGN3M&Tao zC0e0?RT2+E`~E$&@BgQ_vw_X3I^*~`_ujX#f`t|+Qd&NWXj>4mP{e*f`_fhfgsuWB zT?bgOV}ONG!P=Nfj3dVQLCnGoLnF>9G0s(E)GTHp8zWE+tHvn9<@E*H-)Y~^EOb;eU!o?+pymDp-ONAvWJyIZ1ZzFvhXwtDK|Tj{K%O6m z0${wKZ1y{6q9iEsw+CfGnJ>j=ukdANv-@&v_F7-TulHyB8D_crnP$2BDznyo5^KHL z&%#=7@zrLh`x@-@jefS->3%M@`D1>b+2+2^Y;%9N+2($sS>=9_S>=9-S>?Xbta9IE zzmWIeGppP$GppP;n^o>tm_6=Snmz9CHGAB*(58HJ11+YI7L%aGe2Y(jcVsVm7|AC> zoimm>i(05)?-nZl=%i<6Mm&Ps>=qd0p-5 z=m+j|jc8sTpbc$7xw4$zVh0+XSA3`2gvR6@w;4UjKDWhpakjQn%ju{vOpEa|)EC3u zbMlXNTK&48Tm8D1tbW}umTBiu9;N*2L2^8M>`r#y$zscn9pO1 ztXsIQO&!&Z@5@lhf4Xnzx71zg=he#3v$ufohnHs7TAKR8>#5TMly6h%u_~pvtfwbh zineq$%E3+aZz*rERLc!x{rxykL(smB;#?G>m@7dYSA_!aE|hjlP^aCC7VL*;2W>mU zIP?8Et3%n>(Q$7(4J};~z21Cud5vzlYr!ksfNrwKyPP5KvNhh%khU?1^^D}om>@lN z1;6;e6LsGrlzjJ~Ff`5JgYnj^KOT%aFPGMGBbvTq^m{X0H4#VZPyjZeja-Ey@qSc{ zsl7{3lbLAw@@QK(p#YqM+HWR`!nyR!-$5m~0(Ig#^ouCJ?%_wu!71^Kc-|NWV!D{M zV#R&y!yGYREE0>wQZZ={;=(y%ow!(R5}UP2t<(d*W}!efGdHJRp87ej*+fPl%tdBMHxl=fn%fC=%1f!Rt1xY>l$T zTrpoP5D5*y+^KEUQdBBdinZcAv0iLw`$209)`kVNbc;1+BVwyM*mL#&o>%~#x z4Pucv8BR+~6U)V zQQRfIF1{uHTHI~Vm=k-&55$keL*fzfI6Xtazx5+mpPCld%3odTxu$IkebWLNS#Q%9 zGc>nvTA$}N>iYPI7?Q}bD8b)E`9<`1R`NF;5GIK*S?($oJ-JS%=7 zo)S;Op^UA@!{R})TkI0|!C|P9jqizXi=E=D;x3qt;@P-E+$L@n9~Z4orQrtbmA@36%ga{0$<^J$Di(-|daGnzCoa;;*7YTUoz)xjRg0E>5>Fq}c-=c4RHyQT#c{eS zPCMfCi8y^ePOUasU$8w+pN&&HHHdt{9u`x7?QUi`MQLSNqO>Z!O=&W;*O;}tSz(3J z>TrhAnlP!fR?Bz9%Xhfc@*OUL^_iPZGP<*VYkmMS;wa_K!(__%|K=%B*hH%c!lhV-3HKM%Y~mXq!#6&TuX6%l=OoJXQ|_<$$*0lF z|D9_|`d%z-)X^+i%W?x#(G`fS;6v67)2Kbqd9d$dKwG19F;*(&@xhD~;3)-oO%qjy>xMEn!<^_An0Lv#3YgA}#>4FB zMmRjWNhNsd6YS>y1G}2}x2GPdoV}Oi*p<%x5i1#&v79~pzuueUgLgR&`oTCS2m`Lu zL|m7jUhTR2pVX#fbj+o%`0t(~pq8)0Vz5{piU>k$xAvEc;L zySNJMy}k3f7H%e8fNp#eX&vfu3&s9zG~{;f>QRz&E`lA5jQEe}h$~SOS6xX7OdUmd zl*{lC?YWqba^MJ}65L8ef@wT$EDg%>3oD55}GcfJv(x1RVv_k?_k>cO}0phGNuE{BBmyPFYzI~+s_CS z;-gMU|wkHoLv>2mSx-*9=v*&xOy{{4P8 z8o&Oy8-s8EnHx)#i!&}CuYQ0Vhi9MR?A{I699LcH4u-AYo|>lWW*;^C|Ee91ml`np z&{}|33$XT)z)L0oKYI5O@t%h0+{d{{HNt>Q+0-S0RdwN^yd$E0=$MfKc O79DNv#c$+m+5Z6RL};7< literal 0 HcmV?d00001 diff --git a/reporter/fonts/IBMPlexSans-Medium.ttf b/reporter/fonts/IBMPlexSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a3826c4e9ab3f2d6e64e0c9aea7122ea3431e174 GIT binary patch literal 202460 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%0Ddh{R*&}GNDKH5ex->IMz32>sP%%N+ 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 literal 0 HcmV?d00001 diff --git a/reporter/fonts/IBMPlexSans-Regular.ttf b/reporter/fonts/IBMPlexSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bd6817d5202895da5ac4fad88de3da71e652881a GIT binary patch literal 200500 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±Lk;941wN9j(O#6{H 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 VkO`yz&)k7yBj|jf8c=D*002BjV;}$k literal 0 HcmV?d00001 diff --git a/reporter/fonts/IBMPlexSans-SemiBold.ttf b/reporter/fonts/IBMPlexSans-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..09ec8cdae8208c26165db0c87da409cda8c26ae4 GIT binary patch literal 202632 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

R`tEypug7icv=;;n|9pO|AA77&M-M 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 literal 0 HcmV?d00001 diff --git a/reporter/fonts/LICENSE-IBMPlex.txt b/reporter/fonts/LICENSE-IBMPlex.txt new file mode 100755 index 000000000..c35c4c618 --- /dev/null +++ b/reporter/fonts/LICENSE-IBMPlex.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/reporter/logo.png b/reporter/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5d449d4549f304b95aee9c6dc34a2c380f69d604 GIT binary patch literal 9654 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 FKLGxm-BSPn literal 0 HcmV?d00001 diff --git a/reporter/make_sandbox.py b/reporter/make_sandbox.py new file mode 100644 index 000000000..50b1778ff --- /dev/null +++ b/reporter/make_sandbox.py @@ -0,0 +1,82 @@ +"""Generate self-contained design sandboxes for BOTH report surfaces. + +Renders the live templates (template.html + template_onepage.html) with REAL +Chase_1_4 data via ``report_generator.build_context``, but swaps every heavy +base64 image (flat field, charts, ROI thumbnails) for small labelled gray SVG +placeholders so the files stay tiny and artifact-friendly. The brand logo stays +real (it's tiny). + +Charts are restyled in Python (the ``chart_*`` functions in report_generator), +NOT in the HTML — so using placeholders here loses none of the HTML-editable +design. Open the two .html files in a browser / Claude artifact, iterate the +markup + CSS, then send them back to re-bind (see HANDOFF.md). + +Outputs (cwd): sandbox_full.html, sandbox_onepage.html, sample_context.json +Usage: python make_sandbox.py [acquisition_img_path] +""" +import sys +import json +import base64 +from pathlib import Path + +sys.path.insert(0, "/opt/PlanktoScope/reporter") +import report_generator as R +from jinja2 import Environment, FileSystemLoader, select_autoescape + +ACQ = sys.argv[1] if len(sys.argv) > 1 else "/home/pi/data/img/2026-05-20/Chase_1/Chase_1_4" + + +def ph(w, h, label): + """A labelled gray placeholder as an SVG data-URI (keeps the real aspect).""" + svg = (f"" + f"" + f"{label}") + return "data:image/svg+xml;base64," + base64.b64encode(svg.encode()).decode() + + +full_ctx, panel_ctx, name = R.build_context(ACQ) + +# --- swap heavy images for placeholders (brand_logo stays real) ------------- +# gallery is the same list object in both contexts, so this covers both. +for t in full_ctx["gallery"]: + t["img"] = ph(120, 90, "ROI") + +full_ctx["flat_field"] = ph(800, 600, "FLAT FIELD") +full_ctx["chart_esd"] = ph(760, 280, "chart_esd") +full_ctx["chart_sharpness"] = ph(760, 280, "chart_sharpness") +full_ctx["chart_heatmap"] = ph(640, 470, "chart_heatmap") + +panel_ctx["chart_esd"] = ph(380, 265, "chart_esd") +panel_ctx["chart_sharpness"] = ph(380, 265, "chart_sharpness") +panel_ctx["chart_heatmap"] = ph(380, 265, "chart_heatmap") +panel_ctx["chart_concentration"] = ph(380, 265, "chart_concentration") + +env = Environment(loader=FileSystemLoader(str(R.HERE)), + autoescape=select_autoescape(["html"])) +out_full = env.get_template("template.html").render(**full_ctx) +out_one = env.get_template("template_onepage.html").render(**panel_ctx) +Path("sandbox_full.html").write_text(out_full) +Path("sandbox_onepage.html").write_text(out_one) + + +# --- data-contract dump: real values, image blobs abbreviated --------------- +def describe(v): + if isinstance(v, str) and v.startswith("data:"): + return f"<{v[5:v.find(';')]} base64, {len(v)} chars>" + if isinstance(v, list): + head = [describe(x) for x in v[:2]] + return head + ([f"...(+{len(v) - 2} more, {len(v)} total)"] if len(v) > 2 else []) + if isinstance(v, dict): + return {k: describe(x) for k, x in v.items()} + return v + + +dump = {k: describe(v) for k, v in full_ctx.items()} +dump["chart_concentration"] = describe(panel_ctx["chart_concentration"]) +dump["_one_pager_only"] = ["chart_concentration"] +Path("sample_context.json").write_text(json.dumps(dump, indent=2, default=str)) + +print("sandbox_full.html bytes:", len(out_full)) +print("sandbox_onepage.html bytes:", len(out_one)) +print("gallery tiles:", len(full_ctx["gallery"])) diff --git a/reporter/planktoscope-reporter.service b/reporter/planktoscope-reporter.service new file mode 100644 index 000000000..b31daed51 --- /dev/null +++ b/reporter/planktoscope-reporter.service @@ -0,0 +1,16 @@ +[Unit] +Description=PlanktoScope PDF report generator +After=network.target mosquitto.service +Wants=mosquitto.service + +[Service] +Type=simple +User=pi +WorkingDirectory=/opt/PlanktoScope/reporter +# Dedicated reporter venv (created with: uv venv /opt/PlanktoScope/reporter/.venv). +ExecStart=/opt/PlanktoScope/reporter/.venv/bin/python /opt/PlanktoScope/reporter/report_generator.py +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/reporter/report_generator.py b/reporter/report_generator.py new file mode 100644 index 000000000..0d0e50e55 --- /dev/null +++ b/reporter/report_generator.py @@ -0,0 +1,1272 @@ +#!/usr/bin/env python3 +"""PlanktoScope PDF report generator. + +Subscribes to ``actuator/reporter/generate``. On each message it reads an +acquisition's metadata.json + EcoTaxa TSV + flat field + ROI thumbnails, +computes the same QC statistics the Validation dashboard shows (the JS logic +is ported verbatim so the PDF matches the screen), renders an HTML template, +and converts it to a self-contained PDF with WeasyPrint. Completion (or +failure) is published to ``status/reporter``. + +Trigger payload: {"action": "generate", + "acquisition_path": "/home/pi/data/img///"} +""" + +import base64 +import csv +import io +import json +import math +import os +import re +import statistics +import sys +import traceback +from datetime import datetime, timezone +from pathlib import Path + +import numpy as np +import paho.mqtt.client as mqtt +from PIL import Image, ImageFilter + +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +from matplotlib import font_manager +from matplotlib.colors import LinearSegmentedColormap +from matplotlib.ticker import FixedLocator, FuncFormatter +from jinja2 import Environment, FileSystemLoader, select_autoescape +from weasyprint import HTML + +# --------------------------------------------------------------------------- # +# Configuration +# --------------------------------------------------------------------------- # +MQTT_HOST = os.environ.get("REPORTER_MQTT_HOST", "localhost") +MQTT_PORT = int(os.environ.get("REPORTER_MQTT_PORT", "1883")) +TOPIC_IN = "actuator/reporter/generate" +TOPIC_OUT = "status/reporter" + +REPORTS_DIR = Path(os.environ.get("REPORTER_OUTPUT", "/home/pi/data/reports")) +HARDWARE_JSON = Path("/home/pi/PlanktoScope/hardware.json") +HERE = Path(__file__).resolve().parent +FONTS_DIR = HERE / "fonts" + +# Dashboard colors (match the Validation page) +BLUE = "#1565C0" # flowing +AMBER = "#F59E0B" # stuck +GREY = "#9CA3AF" + +# Thresholds — kept identical to the dashboard QC function nodes. +SHARP_LAPLACIAN_MIN = 0.176 # >= this == in focus (~P40 of new ratio metric) +BLURRY_LAPLACIAN_MAX = 0.086 # < this == blurry (~P10 of new ratio metric) +STUCK_BIN_PX = 60 +STUCK_MIN_FRAMES = 8 +SENSOR_ACROSS = 3040 # object_x range +SENSOR_ALONG = 4056 # object_y range +GALLERY_COUNT = 48 + +# Object-gallery plate: the tile grid is chosen to fill the page rather than +# fixed at 6 columns, so a 12-object plate doesn't leave two thirds of it blank. +GALLERY_PLATE_MM = 212.0 # tile area below the section head +GALLERY_WIDTH_MM = 178.0 # A4 minus 16mm margins +GALLERY_GAP_MM = 2.1 +GALLERY_META_MM = 5.2 # index + ESD line under each tile + +FRAME_PREFIX_RE = re.compile(r"^(.+?)_\d+\.(jpe?g|png)$", re.IGNORECASE) + +# All report sections the "Report export" dialog can toggle. Cover, size +# distribution and gallery are always rendered; these are the optional ones. +SECTION_KEYS = ("metadata", "lightness", "saturation", "cleanness", "alignment", + "focus", "clogging", "stability", "spatial") + +# "Objects images" criteria dropdown -> EcoTaxa TSV column (see the mockup). +# Every value is sorted descending (largest / most first). +CRITERIA_COLS = { + "area": ("object_area", "Area"), + "equivalent_diameter": ("object_equivalent_diameter", "Equivalent diameter"), + "major": ("object_major", "Major axis"), + "minor": ("object_minor", "Minor axis"), + "perimeter": ("object_perim.", "Perimeter"), + "circularity": ("object_circ.", "Circularity"), +} +CRITERIA_UNIT = {"area": "px²", "equivalent_diameter": "µm", "major": "px", + "minor": "px", "perimeter": "px", "circularity": ""} + +# --------------------------------------------------------------------------- # +# Tolerance model +# +# Every check is drawn on a track so the reader sees how much headroom a +# measurement has, not just whether it passed. ``lo``/``hi`` bound the track, +# ``good`` is the acceptable band. All bands are the dashboard's thresholds. +# --------------------------------------------------------------------------- # +TOLERANCE = { + "lightness": {"title": "Lightness calibration", "lo": 180, "hi": 255, "good": (220, 240), + "limit": "220–240", "lo_label": "180", "hi_label": "255", "unit": "mean lum", "dec": 0}, + "saturation": {"title": "Saturation calibration", "lo": 0, "hi": 15, "good": (0, 5), + "limit": "< 5%", "lo_label": "0%", "hi_label": "15%", "unit": "chroma", "dec": 1}, + "cleanness": {"title": "Cleanness of optical trail", "lo": 0, "hi": 12, "good": (0, 1), + "limit": "≤ 1", "lo_label": "0", "hi_label": "12", "unit": "spots", "dec": 0}, + "alignment": {"title": "Flowcell alignment", "lo": 50, "hi": 100, "good": (85, 100), + "limit": "≥ 85%", "lo_label": "50%", "hi_label": "100%", "unit": "uniformity", "dec": 0}, + "focus": {"title": "Object focus", "lo": 0, "hi": 50, "good": (0, 30), + "limit": "< 30%", "lo_label": "0%", "hi_label": "50%", "unit": "blurry", "dec": 1}, + "clogging": {"title": "Flowcell clogging", "lo": 0, "hi": 30, "good": (0, 10), + "limit": "< 10%", "lo_label": "0%", "hi_label": "30%", "unit": "stuck", "dec": 1}, + "stability": {"title": "Flow stability", "lo": 0, "hi": 150, "good": (0, 100), + "limit": "CV < 100%", "lo_label": "0", "hi_label": "150%", "unit": "frame CV", "dec": 0}, +} +# Order the conformance panel and the check tables read in. +TOLERANCE_ORDER = ("lightness", "saturation", "cleanness", "alignment", + "focus", "clogging", "stability") + + +def _track(key: str, value: float) -> dict: + """Position ``value`` and its acceptable band on the 0–100% track for ``key``.""" + s = TOLERANCE[key] + span = float(s["hi"] - s["lo"]) or 1.0 + place = lambda v: max(0.0, min(100.0, 100.0 * (v - s["lo"]) / span)) + g0, g1 = s["good"] + return {"pos": place(value), "good_start": place(g0), "good_end": place(g1), + "clipped": value > s["hi"] or value < s["lo"], + "limit": s["limit"], "lo_label": s["lo_label"], "hi_label": s["hi_label"]} + + +# --------------------------------------------------------------------------- # +# Data loading +# --------------------------------------------------------------------------- # +def img_to(path: str, kind: str) -> str: + """Map an /img/ acquisition path to its /objects/ or /clean/ sibling.""" + return path.replace("/img/", f"/{kind}/").rstrip("/") + + +def find_tsv(objects_dir: Path) -> Path | None: + if not objects_dir.is_dir(): + return None + for f in sorted(objects_dir.iterdir()): + if f.name.lower().startswith("ecotaxa_") and f.suffix == ".tsv": + return f + return None + + +def read_tsv(tsv_path: Path) -> tuple[list[str], list[dict]]: + """Return (headers, rows). Skips the EcoTaxa type row ([t]/[f]) and any + bracketed metadata lines, mirroring the dashboard parsers.""" + with open(tsv_path, newline="", encoding="utf-8", errors="replace") as fh: + reader = csv.reader(fh, delimiter="\t") + rows_raw = [r for r in reader if r] + if not rows_raw: + return [], [] + headers = [h.strip() for h in rows_raw[0]] + data = [] + for r in rows_raw[1:]: + if r and r[0].strip().startswith("["): # type row or EcoTaxa meta + continue + data.append(dict(zip(headers, r))) + return headers, data + + +def fnum(v) -> float | None: + try: + f = float(str(v).replace(",", ".")) + return f if math.isfinite(f) else None + except (TypeError, ValueError): + return None + + +def frame_of(file_name: str) -> str | None: + if not file_name: + return None + m = FRAME_PREFIX_RE.match(file_name) + return m.group(1) if m else file_name + + +# --------------------------------------------------------------------------- # +# Display formatting (precomputed so the templates stay declarative) +# --------------------------------------------------------------------------- # +def fmt_coord(value) -> str: + v = fnum(value) + return f"{v:.3f}°" if v is not None else "—" + + +def fmt_position(lat, lon) -> str: + la, lo = fnum(lat), fnum(lon) + if la is None or lo is None: + return "—" + ns = "N" if la >= 0 else "S" + ew = "E" if lo >= 0 else "W" + return f"{abs(la):.3f}°{ns}, {abs(lo):.3f}°{ew}" + + +def fmt_sampled(date, time) -> str: + d = str(date or "").strip() + t = str(time or "").strip() + hm = f"{t[:2]}:{t[2:4]}" if len(t) >= 4 and t.isdigit() else t + return f"{d} {hm}".strip() or "—" + + +# --------------------------------------------------------------------------- # +# QC computations — ported from the Validation dashboard function nodes +# --------------------------------------------------------------------------- # +def compute_sharpness(rows): + blurs = sorted(b for b in (fnum(r.get("object_blur_laplacian")) for r in rows) if b is not None) + total = len(blurs) + q = lambda p: blurs[int(total * p)] if total else 0 + sharp = sum(1 for v in blurs if v >= SHARP_LAPLACIAN_MIN) + blurry = sum(1 for v in blurs if v < BLURRY_LAPLACIAN_MAX) + return { + "total": total, + "median": q(0.5), "p10": q(0.1), "p90": q(0.9), + "sharpPct": 100 * sharp / total if total else 0, + "blurryPct": 100 * blurry / total if total else 0, + "values": blurs, + } + + +def compute_concentration(rows): + frames = set() + for r in rows: + f = frame_of(r.get("img_file_name", "")) + if f: + frames.add(f) + n = len(frames) + return {"totalObjects": len(rows), "nFrames": n, + "perFrame": len(rows) / n if n else 0} + + +def compute_homogeneity(rows): + counts = {} + for r in rows: + f = frame_of(r.get("img_file_name", "")) + if f: + counts[f] = counts.get(f, 0) + 1 + per_frame = [counts[k] for k in sorted(counts)] + n = len(per_frame) + mean = sum(per_frame) / n if n else 0 + std = math.sqrt(sum((c - mean) ** 2 for c in per_frame) / n) if n else 0 + return {"nFrames": n, "mean": mean, "std": std, + "cv": 100 * std / mean if mean else 0, "perFrameCounts": per_frame} + + +def compute_spatial(rows): + t1, t2 = SENSOR_ACROSS / 3, 2 * SENSOR_ACROSS / 3 + left = center = right = 0 + points = [] + for r in rows: + x, y = fnum(r.get("object_x")), fnum(r.get("object_y")) + if x is None or y is None: + continue + if y < t1: + left += 1 + elif y < t2: + center += 1 + else: + right += 1 + points.append((x, y)) + total = left + center + right + return { + "total": total, "points": points, + "leftPct": 100 * left / total if total else 0, + "centerPct": 100 * center / total if total else 0, + "rightPct": 100 * right / total if total else 0, + } + + +def compute_stuck(rows): + """Per-frame spatial-bin stuck detection (dashboard STUCK node). + + Returns a per-row boolean list ``stuck_flags`` plus summary counts.""" + bw = math.ceil(SENSOR_ACROSS / STUCK_BIN_PX) + bh = math.ceil(SENSOR_ALONG / STUCK_BIN_PX) + bin_frames: dict[int, set] = {} + objs = [] # (row_index, bin) + for i, r in enumerate(rows): + x, y = fnum(r.get("object_x")), fnum(r.get("object_y")) + if x is None or y is None: + objs.append((i, None)) + continue + frame = frame_of(r.get("img_file_name", "")) + # heatmap x = object_y, heatmap y = object_x (matches AUDIT binning) + bxi = min(bw - 1, max(0, int(y // STUCK_BIN_PX))) + byi = min(bh - 1, max(0, int(x // STUCK_BIN_PX))) + b = byi * bw + bxi + objs.append((i, b)) + if frame is not None: + bin_frames.setdefault(b, set()).add(frame) + + stuck_flags = [False] * len(rows) + stuck_count = 0 + for i, b in objs: + if b is not None and len(bin_frames.get(b, ())) >= STUCK_MIN_FRAMES: + stuck_flags[i] = True + stuck_count += 1 + counted = sum(1 for _, b in objs if b is not None) + return { + "stuck_flags": stuck_flags, + "stuckCount": stuck_count, + "total": counted, + "stuckPct": 100 * stuck_count / counted if counted else 0, + } + + +def esd_values(rows): + return [d for d in (fnum(r.get("object_equivalent_diameter")) for r in rows) if d is not None] + + +# --------------------------------------------------------------------------- # +# Optics / calibration QC — ported from Validation Panels 1-4 (client-side +# canvas analysis of clean/flat_color.jpg). Each returns a dashboard-style dict: +# {value, measure, state ∈ good|review|alert, label} +# and the pill labels match the dashboard exactly. +# --------------------------------------------------------------------------- # +def _luma(a): + """Rec.709 luminance of an HxWx3 uint8/float array.""" + return 0.2126 * a[..., 0] + 0.7152 * a[..., 1] + 0.0722 * a[..., 2] + + +def _open_rgb(flat_path: Path): + try: + return Image.open(flat_path).convert("RGB") + except (OSError, ValueError): + return None + + +def compute_lightness(flat_path: Path): + """Panel 1 — mean luminance of the flat field (100x100). Good 220-240.""" + im = _open_rgb(flat_path) + if im is None: + return None + a = np.asarray(im.resize((100, 100)), float) + mean = float(_luma(a).mean()) + state = "good" if 220 <= mean <= 240 else ("alert" if mean < 200 else "review") + label = {"good": "Optimal", "review": "Suboptimal", "alert": "Critical"}[state] + return {"label": label, "state": state, "meanLum": mean, "num": mean, + "value": f"{mean:.0f}", "measure": f"{mean:.0f} / 255 mean luminance"} + + +def compute_saturation(flat_path: Path): + """Panel 2 — mean HSV saturation of the flat field (200 wide). Good < 5%.""" + im = _open_rgb(flat_path) + if im is None: + return None + w, h = im.size + W = 200 + H = max(8, round(W * h / max(1, w))) + a = np.asarray(im.resize((W, H)), float) + mx = a.max(axis=2) + mn = a.min(axis=2) + sat = np.where(mx == 0, 0.0, (mx - mn) / np.where(mx == 0, 1, mx)) + saturation = float(sat.mean() * 100) + state = "alert" if saturation > 10 else ("review" if saturation > 5 else "good") + label = {"good": "Good", "review": "Calibration suggested", + "alert": "Calibration needed"}[state] + return {"label": label, "state": state, "saturation": saturation, "num": saturation, + "value": f"{saturation:.1f}%", "measure": f"{saturation:.1f}% mean chroma"} + + +def _count_blobs(binary: np.ndarray, y0: int, y1: int, min_size: int = 8) -> int: + """8-connected components with size >= min_size in rows [y0, y1). Iterative + flood fill (no scipy on the Pi).""" + H, W = binary.shape + visited = np.zeros_like(binary, dtype=bool) + flagged = 0 + ys, xs = np.nonzero(binary[y0:y1]) + for sy, sx in zip(ys + y0, xs): + if visited[sy, sx]: + continue + stack = [(sy, sx)] + visited[sy, sx] = True + size = 0 + while stack: + cy, cx = stack.pop() + size += 1 + for dy in (-1, 0, 1): + for dx in (-1, 0, 1): + if dy == 0 and dx == 0: + continue + ny, nx = cy + dy, cx + dx + if y0 <= ny < y1 and 0 <= nx < W and binary[ny, nx] and not visited[ny, nx]: + visited[ny, nx] = True + stack.append((ny, nx)) + if size >= min_size: + flagged += 1 + return flagged + + +def compute_cleanness(flat_path: Path): + """Panel 3 — debris on the optical path: count dark spots in the flat field + (320 wide) that stand out from a 12px-blurred background by >12 luma.""" + im = _open_rgb(flat_path) + if im is None: + return None + w, h = im.size + W = 320 + H = max(8, round(W * h / max(1, w))) + im = im.resize((W, H)) + orig = _luma(np.asarray(im, float)) + blur = _luma(np.asarray(im.filter(ImageFilter.GaussianBlur(12)), float)) + margin = int(H * 0.05) + binary = orig < (blur - 12) + flagged = _count_blobs(binary, margin, H - margin, min_size=8) + state = "good" if flagged <= 1 else ("review" if flagged <= 6 else "alert") + label = {"good": "Good", "review": "Review needed", "alert": "Alert"}[state] + unit = "spot" if flagged == 1 else "spots" + return {"label": label, "state": state, "flagged": flagged, "num": float(flagged), + "value": str(flagged), "measure": f"{flagged} debris {unit}"} + + +def compute_alignment(flat_path: Path): + """Panel 4 — flowcell alignment from the edge-vs-centre luminance profile + (80 rows). Good quality score >= 85.""" + im = _open_rgb(flat_path) + if im is None: + return None + w, h = im.size + H = 80 + W = max(8, round(H * w / max(1, h))) + a = np.asarray(im.resize((W, H)), float) + profile = _luma(a).mean(axis=1) # per-row mean luminance + edge = max(1, round(H * 0.10)) + top = float(profile[:edge].mean()) + bottom = float(profile[H - edge:].mean()) + center = float(profile[edge:H - edge].mean()) + diff_l = abs(bottom - center) / center if center > 0 else 0 + diff_r = abs(top - center) / center if center > 0 else 0 + score = 100 - max(diff_l, diff_r) * 400 + max_edge = max(top, bottom) + if max_edge > 250: + score -= (max_edge - 250) * 10 + q = max(0, min(100, round(score))) + state = "good" if q >= 85 else ("review" if q >= 70 else "alert") + label = {"good": "Aligned", "review": "Slight misalignment", + "alert": "Misaligned"}[state] + return {"label": label, "state": state, "qualityScore": q, "num": float(q), + "value": f"{q}%", "measure": f"{q}% edge uniformity"} + + +CALIBRATION_SPECS = [ + ("lightness", "Lightness calibration", compute_lightness), + ("saturation", "Saturation calibration", compute_saturation), + ("cleanness", "Cleanness of optical trail", compute_cleanness), + ("alignment", "Flowcell alignment", compute_alignment), +] + + +def compute_calibration(flat_path: Path, sections: dict): + """Run only the calibration panels toggled on. Returns a list of rows for + the template, each {key, title, value, measure, state, label, track}.""" + rows = [] + for key, title, fn in CALIBRATION_SPECS: + if not sections.get(key): + continue + res = fn(flat_path) + if res is None: + rows.append({"key": key, "title": title, "value": "—", + "measure": "flat_color.jpg unavailable", "unit": "no data", + "state": "review", "label": "No data", "track": None}) + else: + rows.append({"key": key, "title": title, "unit": TOLERANCE[key]["unit"], + "track": _track(key, res["num"]), **res}) + return rows + + +# --------------------------------------------------------------------------- # +# Charts -> base64 PNG +# +# Themed to match the templates: hairline axes, mono tick labels, blue/amber as +# the only ink. Each function returns a base64 PNG data-URI. ``panel=True`` +# renders the compact ~3.8x2.65 aspect used by the one-pager's 2x2 grid; the +# default wide aspect is for the full report. +# +# The reporter ships IBM Plex (fonts/) so the charts and the PDF text share one +# typeface; the Pi otherwise only has DejaVu, which we fall back to. +# --------------------------------------------------------------------------- # +def _register_fonts() -> str: + """Load the bundled TTFs into matplotlib. Returns the mono family to use.""" + if FONTS_DIR.is_dir(): + for ttf in sorted(FONTS_DIR.glob("*.ttf")): + try: + font_manager.fontManager.addfont(str(ttf)) + except Exception: # noqa: BLE001 — a bad font must not kill a report + pass + have = {f.name for f in font_manager.fontManager.ttflist} + return "IBM Plex Mono" if "IBM Plex Mono" in have else "DejaVu Sans Mono" + + +CHART_INK = "#15181F" +CHART_ACCENT = "#125A9C" +CHART_AMBER = "#C97A04" +CHART_BLURRY = "#C7CCD4" +CHART_LINEMID = "#BBC1CC" +CHART_GRID = "#EEF1F5" +CHART_MUTED = "#6E7785" +CHART_FAINT = "#A6ACB7" +CHART_PAPER = "#FFFFFF" +CHART_MONO = _register_fonts() +CHART_DPI = 200 + + +def _base_style(): + plt.rcParams.update({ + "figure.dpi": CHART_DPI, + "savefig.dpi": CHART_DPI, + "font.family": CHART_MONO, + "font.size": 8.5, + "text.color": CHART_MUTED, + "axes.edgecolor": CHART_LINEMID, + "axes.linewidth": 0.8, + "axes.facecolor": CHART_PAPER, + "figure.facecolor": CHART_PAPER, + "axes.grid": False, + "xtick.color": CHART_MUTED, + "ytick.color": CHART_FAINT, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + }) + + +def _strip(ax, left=True): + for s in ("top", "right"): + ax.spines[s].set_visible(False) + ax.spines["bottom"].set_color(CHART_LINEMID) + if left: + ax.spines["left"].set_visible(False) + ax.tick_params(length=3, width=0.8, colors=CHART_MUTED) + + +def _hgrid(ax, ys): + for i, y in enumerate(ys): + ax.axhline(y, color=(CHART_LINEMID if i == 0 else CHART_GRID), + lw=(1.0 if i == 0 else 0.8), zorder=0) + + +def _to_datauri(fig): + buf = io.BytesIO() + fig.savefig(buf, format="png", bbox_inches="tight", pad_inches=0.06, + facecolor=CHART_PAPER) + plt.close(fig) + return "data:image/png;base64," + base64.b64encode(buf.getvalue()).decode() + + +def _mono_label(ax, text, x=0.0, y=-0.20, size=7.5, color=CHART_FAINT): + ax.text(x, y, text, transform=ax.transAxes, ha="left", va="top", + fontsize=size, color=color, family=CHART_MONO) + + +def _yticks(ymax, steps): + """Pick from ``steps`` the tick values that fit under ymax (deduped).""" + ticks = sorted({0.0} | {t for t in steps if t <= ymax}) + return ticks + + +def chart_esd(esds, stuck_flags, median, panel=False): + if not esds: + return None + _base_style() + esds = np.asarray(esds, float) + stuck = np.asarray(stuck_flags, bool) + lo = max(1.0, min(20.0, float(esds.min()))) + hi = max(500.0, float(esds.max())) + edges = np.logspace(math.log10(lo), math.log10(hi), 23) + + fig, ax = plt.subplots(figsize=(3.8, 2.65) if panel else (7.6, 2.05)) + cf, _ = np.histogram(esds[~stuck], bins=edges) + cs, _ = np.histogram(esds[stuck], bins=edges) + + ax.bar(edges[:-1], cf, width=np.diff(edges), align="edge", + color=CHART_ACCENT, linewidth=0, zorder=3) + ax.bar(edges[:-1], cs, width=np.diff(edges), align="edge", bottom=cf, + color=CHART_AMBER, linewidth=0, zorder=3) + + ax.set_xscale("log") + ax.set_xlim(lo, hi) + ymax = float((cf + cs).max()) * 1.10 if (cf + cs).size else 1.0 + ax.set_ylim(0, ymax) + _strip(ax) + yt = _yticks(ymax, [round(ymax / 3, -2), round(2 * ymax / 3, -2)]) + ax.set_yticks(yt) + _hgrid(ax, yt) + + ticks = [t for t in (20, 30, 50, 100, 200, 500) if lo <= t <= hi] + ax.xaxis.set_major_locator(FixedLocator(ticks)) + ax.xaxis.set_major_formatter(FuncFormatter(lambda v, _: f"{int(v)}")) + ax.minorticks_off() + + ax.axvline(median, color=CHART_INK, lw=1.0, ls=(0, (3, 3)), zorder=4) + ax.text(median * 1.03, ymax * 0.97, f"median {median:.0f} µm", + color=CHART_INK, fontsize=8, va="top", ha="left", family=CHART_MONO) + + if stuck.any(): + ax.scatter([], [], marker="s", s=42, color=CHART_ACCENT, label="flowing") + ax.scatter([], [], marker="s", s=42, color=CHART_AMBER, label="stuck") + ax.legend(loc="upper right", frameon=False, handletextpad=0.5, + labelcolor=CHART_MUTED, fontsize=8, borderaxespad=0.2) + + _mono_label(ax, "EQUIVALENT SPHERICAL DIAMETER · µm") + return _to_datauri(fig) + + +def chart_sharpness(values, median, cutoff, panel=False, duo=False): + if not values: + return None + _base_style() + v = np.asarray(values, float) + # Data-driven x-axis: the focus measure is a scale/contrast-invariant ratio + # (~0.04–1.4), so a fixed range would squash everything against zero. Cap at + # the 99.5th percentile and always keep the cutoffs comfortably in view. + hi = float(np.quantile(v, 0.995)) if v.size else 1.0 + hi = max(hi, cutoff * 3, SHARP_LAPLACIAN_MIN * 1.5, 0.3) + edges = np.linspace(0, hi, 31) + counts, _ = np.histogram(np.clip(v, 0, hi), bins=edges) + centers = (edges[:-1] + edges[1:]) / 2 + colors = np.where(centers < cutoff, CHART_BLURRY, CHART_ACCENT) + + fig, ax = plt.subplots(figsize=(3.8, 2.65) if panel else ((4.6, 2.51) if duo else (7.6, 2.8))) + ax.bar(edges[:-1], counts, width=np.diff(edges) * 0.94, align="edge", + color=colors, linewidth=0, zorder=3) + + ax.set_xlim(0, hi) + ymax = float(counts.max()) * 1.12 if counts.size else 1.0 + ax.set_ylim(0, ymax) + _strip(ax) + yt = _yticks(ymax, [round(ymax / 2, -2)]) + ax.set_yticks(yt) + _hgrid(ax, yt) + xt = np.round(np.linspace(0, hi, 4 if duo else 6), 2) + ax.set_xticks(xt) + ax.xaxis.set_major_formatter(FuncFormatter(lambda x, _: f"{x:.2f}")) + lab = 9.5 if duo else 8 + ax.tick_params(labelsize=lab) + + ax.axvline(cutoff, color=CHART_INK, lw=1.0, ls=(0, (3, 3)), zorder=4) + if not duo: # no room beside the legend in the narrow column; the caption says it + ax.text(cutoff + hi * 0.01, ymax * 0.97, "blurry cutoff", color=CHART_INK, + fontsize=lab, va="top", ha="left", family=CHART_MONO) + ax.axvline(median, color=CHART_LINEMID, lw=1.0, zorder=2) + flip = median > hi * 0.55 # keep the label inside the axes + ax.text(median + (-1 if flip else 1) * hi * 0.015, ymax * (0.97 if duo else 0.86), + f"median {median:.2f}", color=CHART_MUTED, fontsize=lab, + va="top", ha="right" if flip else "left", family=CHART_MONO) + + ax.scatter([], [], marker="s", s=42, color=CHART_BLURRY, label="blurry") + ax.scatter([], [], marker="s", s=42, color=CHART_ACCENT, label="sharp") + # The tall in-focus bar sits at the right edge in the wide chart, so the + # legend goes upper-center there; in the duo column the peak is left of centre. + ax.legend(loc="upper right" if duo else "upper center", ncol=1 if duo else 2, + frameon=False, handletextpad=0.5, labelcolor=CHART_MUTED, + fontsize=lab, borderaxespad=0.2) + + _mono_label(ax, "FOCUS MEASURE" if duo else "FOCUS MEASURE · SHARPNESS RATIO", + size=(9 if duo else 7.5)) + return _to_datauri(fig) + + +def chart_heatmap(points, thirds, panel=False, gamma=0.72): + """``points`` are (object_x, object_y); thirds = (leftPct, centerPct, + rightPct). Matches the dashboard SPATIAL convention: object_y is the + *across*-flowcell axis (short, 0..ACROSS) and carries the left/center/right + thirds — drawn horizontally; object_x is the *along*-flowcell axis (the long + one) — drawn vertically, so the plot is portrait like the physical flowcell.""" + if not points: + return None + _base_style() + pts = np.asarray(points, float) + x, y = pts[:, 1], pts[:, 0] # x = object_y (across, thirds); y = object_x (along, long) + if x.min() == x.max() or y.min() == y.max(): + return None + + cmap = LinearSegmentedColormap.from_list( + "psblue", ["#FBFCFE", "#9CC3E6", "#16548C"]) + + # finer binning on the long (along / vertical) axis + H, _, _ = np.histogram2d( + x, y, bins=(24, 32), + range=[[x.min(), x.max()], [y.min(), y.max()]]) + k = np.array([[0.5, 1, 0.5], [1, 2, 1], [0.5, 1, 0.5]]); k /= k.sum() + Hs = np.copy(H) + Hs[1:-1, 1:-1] = sum( + k[a + 1, b + 1] * H[1 + a:H.shape[0] - 1 + a, 1 + b:H.shape[1] - 1 + b] + for a in (-1, 0, 1) for b in (-1, 0, 1)) + + lo = Hs.min(); p96 = np.quantile(Hs, 0.96) + norm = np.clip((Hs - lo) / max(1e-9, (p96 - lo)), 0, 1) ** gamma + + # portrait figure: the long (vertical) axis is taller than the short one + fig, ax = plt.subplots(figsize=(2.6, 3.2) if panel else (4.0, 4.4)) + im = ax.imshow(norm.T, origin="lower", aspect="auto", cmap=cmap, + interpolation="nearest") + ax.set_xticks([]); ax.set_yticks([]) + for s in ax.spines.values(): + s.set_color(CHART_LINEMID); s.set_linewidth(0.8) + + if panel: + left, center, right = thirds + for frac, txt in zip((1 / 6, 1 / 2, 5 / 6), + (f"LEFT {left:.0f}%", f"CENTER {center:.0f}%", + f"RIGHT {right:.0f}%")): + ax.text(frac, -0.05, txt, transform=ax.transAxes, ha="center", + va="top", fontsize=8, color=CHART_MUTED, family=CHART_MONO) + _mono_label(ax, "FLOWCELL · CAMERA ORIENTATION", y=-0.12) + else: + _mono_label(ax, "ACROSS FLOWCELL", y=-0.035, size=11) + + cb = fig.colorbar(im, ax=ax, fraction=0.035, pad=0.03) + cb.outline.set_edgecolor(CHART_LINEMID); cb.outline.set_linewidth(0.8) + cb.set_ticks([0, 1]); cb.set_ticklabels(["LOW", "HIGH"]) + cb.ax.tick_params(length=0, labelsize=(7.5 if panel else 10), colors=CHART_MUTED) + if panel: + cb.set_label("DENSITY", color=CHART_FAINT, fontsize=7, family=CHART_MONO, labelpad=6) + return _to_datauri(fig) + + +def chart_concentration(per_frame_counts, mean, panel=True): + if not per_frame_counts: + return None + _base_style() + v = np.asarray(per_frame_counts, float) + n = len(v) + fig, ax = plt.subplots(figsize=(3.8, 2.65) if panel else (7.6, 2.8)) + xs = np.arange(n) + ax.fill_between(xs, v, color=CHART_ACCENT, alpha=0.12, linewidth=0) + ax.plot(xs, v, color=CHART_ACCENT, lw=1.0) + + ymax = float(v.max()) * 1.10 if v.size else 1.0 + ax.set_xlim(0, max(1, n - 1)); ax.set_ylim(0, ymax) + _strip(ax) + yt = _yticks(ymax, [15, 30, 45, 60]) + ax.set_yticks(yt); _hgrid(ax, yt) + ax.set_xticks([t for t in (0, 100, 200, 300) if t <= n]) + + ax.axhline(mean, color=CHART_AMBER, lw=1.0, ls=(0, (4, 3)), zorder=4) + ax.text(n - 1, mean + ymax * 0.04, f"mean {mean:.1f}", color=CHART_AMBER, + fontsize=8, va="bottom", ha="right", family=CHART_MONO) + _mono_label(ax, f"OBJECTS PER FRAME · N = {n}") + return _to_datauri(fig) + + +# --------------------------------------------------------------------------- # +# Images -> base64 +# --------------------------------------------------------------------------- # +def img_b64(path: Path) -> str | None: + try: + data = path.read_bytes() + except OSError: + return None + mime = "image/jpeg" if path.suffix.lower() in (".jpg", ".jpeg") else "image/png" + return f"data:{mime};base64," + base64.b64encode(data).decode() + + +def gallery_layout(n: int) -> tuple[int, float]: + """Columns and tile height (mm) giving the squarest tiles that fill a plate. + + Falls back to a dense 8-column grid when the selection is too large for one + page; the plate then flows across pages at a fixed tile size.""" + best = None + for cols in range(2, 9): + rows = math.ceil(n / cols) + tile_w = (GALLERY_WIDTH_MM - (cols - 1) * GALLERY_GAP_MM) / cols + h = (GALLERY_PLATE_MM - rows * GALLERY_META_MM - (rows - 1) * GALLERY_GAP_MM) / rows + if h < 11: # this many rows can't share one page + continue + h = min(h, tile_w * 1.35, 60.0) # never let a sparse plate become posters + used = rows * (h + GALLERY_META_MM) + (rows - 1) * GALLERY_GAP_MM + # Fill the plate first, squareness second. + score = (GALLERY_PLATE_MM - used) + 2.0 * abs(h - tile_w) + if best is None or score < best[0]: + best = (score, cols, h) + if best is None: + return 8, 12.0 + return best[1], round(best[2], 1) + + +def gallery_tiles(rows, objects_dir: Path, criteria="equivalent_diameter", + mode="top", count=GALLERY_COUNT): + """Pick ROI thumbnails for the plate. + + ``criteria`` selects the ranking column (see CRITERIA_COLS); ``mode`` is + "top" (largest by criteria) or "random"; ``count`` caps the tiles. Every + tile still shows its ESD label so the gallery stays comparable.""" + col, _ = CRITERIA_COLS.get(criteria, CRITERIA_COLS["equivalent_diameter"]) + try: + count = max(1, min(200, int(count))) + except (TypeError, ValueError): + count = GALLERY_COUNT + + enriched = [] + for r in rows: + oid = r.get("object_id") + val = fnum(r.get(col)) + esd = fnum(r.get("object_equivalent_diameter")) + if oid is None or val is None: + continue + enriched.append((val, esd, oid)) + + if mode == "random": + import random + rng = random.Random(1234) # deterministic so re-runs are reproducible + rng.shuffle(enriched) + chosen = enriched[:count] + chosen.sort(key=lambda t: t[0], reverse=True) # still present largest-first + else: + enriched.sort(key=lambda t: t[0], reverse=True) + chosen = enriched[:count] + + tiles = [] + for val, esd, oid in chosen: + b64 = img_b64(objects_dir / f"{oid}.jpg") + if b64: + tiles.append({"img": b64, + "esd": f"{esd:.0f} µm" if esd is not None else "—", + "id": oid}) + return tiles + + +# --------------------------------------------------------------------------- # +# Report assembly +# --------------------------------------------------------------------------- # +def load_hardware(): + try: + return json.loads(HARDWARE_JSON.read_text()) + except OSError: + return {} + + +def _load_acquisition(acquisition_path: str): + """Read one acquisition and compute every stat the report can draw on. + + Returns a dict of raw results + a ``common`` block of display-ready fields + shared by every render path. Callers decide which sections / charts / gallery + to build from it, so the heavy TSV + image work happens exactly once.""" + img_dir = Path(acquisition_path.rstrip("/")) + objects_dir = Path(img_to(str(img_dir), "objects")) + clean_dir = Path(img_to(str(img_dir), "clean")) + + metadata = json.loads((img_dir / "metadata.json").read_text()) + tsv = find_tsv(objects_dir) + if tsv is None: + raise FileNotFoundError(f"No ecotaxa_*.tsv in {objects_dir}") + headers, rows = read_tsv(tsv) + if not rows: + raise ValueError("TSV has no object rows") + + sharp = compute_sharpness(rows) + conc = compute_concentration(rows) + homo = compute_homogeneity(rows) + spatial = compute_spatial(rows) + stuck = compute_stuck(rows) + esds = esd_values(rows) + + def pct(vals, p): + return statistics.quantiles(vals, n=100)[p - 1] if len(vals) > 1 else (vals[0] if vals else 0) + + hardware = load_hardware() + instrument = f"PlanktoScope {hardware.get('hat_type', '')} v{hardware.get('hat_version', '')}".strip() + stats = { + "total": len(rows), + "esd_min": min(esds) if esds else 0, + "esd_p10": pct(esds, 10), + "esd_median": statistics.median(esds) if esds else 0, + "esd_p90": pct(esds, 90), + "esd_max": max(esds) if esds else 0, + "flowingPct": 100 - stuck["stuckPct"], + "stuckPct": stuck["stuckPct"], + "perFrame": conc["perFrame"], + } + + # Aligned ESD / stuck arrays for the histogram (drop rows with no ESD). + esd_pairs = [(fnum(r.get("object_equivalent_diameter")), stuck["stuck_flags"][i]) + for i, r in enumerate(rows)] + esd_pairs = [(e, s) for e, s in esd_pairs if e is not None] + + common = { + "meta": metadata, + "serial": metadata.get("acq_instrument_serial_number", "—"), + "instrument": instrument, + "instrument_short": instrument.replace("PlanktoScope ", "").strip() or instrument, + "brand_logo": img_b64(HERE / "logo.png"), + "position": fmt_position(metadata.get("object_lat"), metadata.get("object_lon")), + "lat_disp": fmt_coord(metadata.get("object_lat")), + "lon_disp": fmt_coord(metadata.get("object_lon")), + "sampled": fmt_sampled(metadata.get("object_date"), metadata.get("object_time")), + "stats": stats, + "sharp": sharp, "conc": conc, "homo": homo, "spatial": spatial, "stuck": stuck, + "flat_field": img_b64(clean_dir / "flat_color.jpg"), + } + name = "_".join(filter(None, [ + metadata.get("sample_project"), metadata.get("sample_id"), + metadata.get("acq_id")])) or img_dir.name + + return { + "img_dir": img_dir, "objects_dir": objects_dir, "clean_dir": clean_dir, + "metadata": metadata, "rows": rows, + "sharp": sharp, "conc": conc, "homo": homo, "spatial": spatial, + "stuck": stuck, "stats": stats, + "esd_arr": [e for e, _ in esd_pairs], + "esd_stuck": [s for _, s in esd_pairs], + "thirds": (spatial["leftPct"], spatial["centerPct"], spatial["rightPct"]), + "common": common, "name": name, + } + + +def normalize_sections(raw): + """Coerce the dialog's section toggles. Absent dict = every section on.""" + if not raw: + return {k: True for k in SECTION_KEYS} + return {k: bool(raw.get(k, False)) for k in SECTION_KEYS} + + +def normalize_gallery(raw): + """Coerce the dialog's 'Objects images' options.""" + raw = raw or {} + mode = "random" if str(raw.get("mode", "top")).lower() == "random" else "top" + try: + count = int(raw.get("count", GALLERY_COUNT)) + except (TypeError, ValueError): + count = GALLERY_COUNT + count = max(1, min(200, count)) + crit = str(raw.get("criteria", "equivalent_diameter")).lower() + if crit not in CRITERIA_COLS: + crit = "equivalent_diameter" + return {"mode": mode, "count": count, "criteria": crit} + + +def build_qc_rows(sharp, stuck, homo, sections): + """QC rows for the toggled focus / clogging / stability panels only. + + Shaped like the calibration rows (key/title/value/measure/state/track) so + both feed the same table and the same cover conformance panel.""" + b, s, cv = sharp["blurryPct"], stuck["stuckPct"], homo["cv"] + spec = [ + ("focus", b, f"{b:.1f}%", f"{b:.1f}% of objects blurry", 30), + ("clogging", s, f"{s:.1f}%", f"{s:.1f}% of objects stuck", 10), + ("stability", cv, f"{cv:.0f}%", f"CV {cv:.0f}% across frames", 100), + ] + rows = [] + for key, num, value, measure, ceiling in spec: + if not sections.get(key): + continue + ok = num < ceiling + rows.append({ + "key": key, "title": TOLERANCE[key]["title"], "num": num, + "value": value, "measure": measure, "pass": ok, + "unit": TOLERANCE[key]["unit"], "limit": TOLERANCE[key]["limit"], + "state": "good" if ok else "alert", + "label": "Pass" if ok else "Fail", + "track": _track(key, num), + }) + return rows + + +def _fmt_range(values, dec: int) -> str: + """A readout spanning one or many acquisitions, at the quantity's precision.""" + lo, hi = min(values), max(values) + if abs(hi - lo) < (0.05 if dec else 0.5): + return f"{lo:.{dec}f}" + return f"{lo:.{dec}f}\u2013{hi:.{dec}f}" + + +def build_conformance(acqs, sections): + """Cover panel: one track per evaluated check, one tick per acquisition. + + With several acquisitions the ticks share a track, so the spread across a + project reads at a glance — tight clusters mean a stable instrument.""" + rows = [] + for key in TOLERANCE_ORDER: + if not sections.get(key): + continue + ticks, values, singles = [], [], [] + for i, a in enumerate(acqs, 1): + src = next((c for c in a["calibration"] + a["qc"] if c.get("key") == key), None) + if not src or not src.get("track"): + continue + ticks.append({"pos": src["track"]["pos"], "state": src["state"], "idx": i}) + values.append(src["num"]) + singles.append(src["value"]) + if not ticks: + continue + # Alternate the tick labels above/below the track where acquisitions + # cluster, so their numbers stay readable. + ticks.sort(key=lambda t: t["pos"]) + prev, low = -99.0, False + for t in ticks: + low = (not low) if (t["pos"] - prev) < 6.0 else False + t["low"] = low + prev = t["pos"] + + s = TOLERANCE[key] + rows.append({ + "key": key, "title": s["title"], "limit": s["limit"], "unit": s["unit"], + "lo_label": s["lo_label"], "hi_label": s["hi_label"], + "good_start": _track(key, s["good"][0])["pos"], + "good_end": _track(key, s["good"][1])["pos"], + "ticks": ticks, "numbered": len(ticks) > 1 and len(ticks) <= 6, + "state": ("alert" if any(t["state"] == "alert" for t in ticks) + else "review" if any(t["state"] == "review" for t in ticks) else "good"), + "readout": _fmt_range(values, s["dec"]) if len(values) > 1 else singles[0], + }) + return rows + + +def build_qc_table(sharp, stuck, conc, homo): + """Legacy full QC table (green-pass / red-fail) used by the single-acq path.""" + return [ + {"label": "Focus quality", + "value": f"{sharp['blurryPct']:.1f}% blurry", + "limit": "< 30% blurry", "pass": sharp["blurryPct"] < 30}, + {"label": "Flowcell clogging (stuck)", + "value": f"{stuck['stuckPct']:.1f}% stuck", + "limit": "< 10% stuck", "pass": stuck["stuckPct"] < 10}, + {"label": "Concentration", + "value": f"{conc['perFrame']:.2f} obj/frame", + "limit": "1–50 obj/frame", "pass": 1 <= conc["perFrame"] <= 50}, + {"label": "Spatial homogeneity", + "value": f"CV {homo['cv']:.0f}%", + "limit": "CV < 100%", "pass": homo["cv"] < 100}, + ] + + +def build_context(acquisition_path: str): + """Legacy single-acquisition context (full + one-pager). Unchanged output. + + Returns ``(full_ctx, panel_ctx, name)``. Still used by the backward-compatible + ``acquisition_path`` MQTT payload and by ``make_sandbox.py``.""" + L = _load_acquisition(acquisition_path) + sharp, conc, homo, spatial, stuck = L["sharp"], L["conc"], L["homo"], L["spatial"], L["stuck"] + qc = build_qc_table(sharp, stuck, conc, homo) + base = { + "generated": datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M UTC"), + **L["common"], + "qc": qc, + "qc_pass": all(row["pass"] for row in qc), + "gallery": gallery_tiles(L["rows"], L["objects_dir"]), + "gallery_count": GALLERY_COUNT, + } + full_ctx = { + **base, + "chart_esd": chart_esd(L["esd_arr"], L["esd_stuck"], L["stats"]["esd_median"]), + "chart_sharpness": chart_sharpness(sharp["values"], sharp["median"], BLURRY_LAPLACIAN_MAX), + "chart_heatmap": chart_heatmap(spatial["points"], L["thirds"]), + } + panel_ctx = { + **base, + "chart_esd": chart_esd(L["esd_arr"], L["esd_stuck"], L["stats"]["esd_median"], panel=True), + "chart_sharpness": chart_sharpness(sharp["values"], sharp["median"], BLURRY_LAPLACIAN_MAX, panel=True), + "chart_heatmap": chart_heatmap(spatial["points"], L["thirds"], panel=True), + "chart_concentration": chart_concentration(homo["perFrameCounts"], conc["perFrame"]), + } + return full_ctx, panel_ctx, L["name"] + + +def build_acq_context(acquisition_path: str, sections: dict, gallery_opts: dict): + """Per-acquisition context for the combined 'Report export' template. Only + the toggled sections' heavy work (calibration, charts) is done.""" + L = _load_acquisition(acquisition_path) + sharp, homo, spatial, stuck = L["sharp"], L["homo"], L["spatial"], L["stuck"] + + calibration = compute_calibration(L["clean_dir"] / "flat_color.jpg", sections) + qc_rows = build_qc_rows(sharp, stuck, homo, sections) + + cal_alert = any(r["state"] == "alert" for r in calibration) + qc_fail = any(not r["pass"] for r in qc_rows) + acq_pass = not cal_alert and not qc_fail + issues = sum(r["state"] == "alert" for r in calibration) + sum(not r["pass"] for r in qc_rows) + evaluated = len(calibration) + len(qc_rows) + + show_calibration = any(sections.get(k) for k in ("lightness", "saturation", "cleanness", "alignment")) + show_qc = bool(qc_rows) + + crit_col, crit_label = CRITERIA_COLS[gallery_opts["criteria"]] + gallery = gallery_tiles(L["rows"], L["objects_dir"], gallery_opts["criteria"], + gallery_opts["mode"], gallery_opts["count"]) + gallery_cols, gallery_tile_mm = gallery_layout(len(gallery)) + + ctx = { + **L["common"], + "sections": sections, + "calibration": calibration, + "show_calibration": show_calibration, + "qc": qc_rows, + "show_qc": show_qc, + "acq_pass": acq_pass, + "issues": issues, + "evaluated": evaluated, + "gallery": gallery, + "gallery_opts": gallery_opts, + "gallery_criteria_label": crit_label, + "gallery_cols": gallery_cols, + "gallery_tile_mm": gallery_tile_mm, + # size distribution is always shown; focus/spatial charts are gated + "chart_esd": chart_esd(L["esd_arr"], L["esd_stuck"], L["stats"]["esd_median"]), + "chart_sharpness": (chart_sharpness(sharp["values"], sharp["median"], BLURRY_LAPLACIAN_MAX, duo=True) + if sections.get("focus") else None), + "chart_heatmap": (chart_heatmap(spatial["points"], L["thirds"]) + if sections.get("spatial") else None), + "name": L["name"], + } + return ctx + + +def build_report(acquisition_path: str) -> dict: + """Render both PDFs (full + one-pager) and return their paths. (Legacy.)""" + full_ctx, panel_ctx, name = build_context(acquisition_path) + + env = Environment(loader=FileSystemLoader(str(HERE)), + autoescape=select_autoescape(["html"])) + REPORTS_DIR.mkdir(parents=True, exist_ok=True) + + out = REPORTS_DIR / f"{name}_report.pdf" + HTML(string=env.get_template("template.html").render(**full_ctx), + base_url=str(HERE)).write_pdf(str(out)) + + onepage = REPORTS_DIR / f"{name}_report_onepage.pdf" + HTML(string=env.get_template("template_onepage.html").render(**panel_ctx), + base_url=str(HERE)).write_pdf(str(onepage)) + + return {"full": out, "onepage": onepage} + + +def build_combined_report(acquisition_paths, sections=None, gallery_opts=None) -> dict: + """Render ONE full PDF covering all selected acquisitions with the chosen + sections + gallery options. Returns {'full': Path}.""" + sections = normalize_sections(sections) + gallery_opts = normalize_gallery(gallery_opts) + + acqs = [] + errors = [] + for p in acquisition_paths: + try: + acqs.append(build_acq_context(p, sections, gallery_opts)) + except Exception as exc: # noqa: BLE001 — skip a bad acq, keep the rest + traceback.print_exc() + errors.append(f"{Path(p).name}: {exc}") + if not acqs: + raise ValueError("No acquisition could be loaded: " + "; ".join(errors) if errors + else "No acquisitions selected") + + generated = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M UTC") + doc = { + "generated": generated, + "sections": sections, + "gallery_opts": gallery_opts, + "acqs": acqs, + "multi": len(acqs) > 1, + "n_acq": len(acqs), + # cover / running fields taken from the first acquisition + "brand_logo": acqs[0]["brand_logo"], + "serial": acqs[0]["serial"], + "instrument_short": acqs[0]["instrument_short"], + "cover_project": acqs[0]["meta"].get("sample_project") or "—", + "total_objects": sum(a["stats"]["total"] for a in acqs), + "all_pass": all(a["acq_pass"] for a in acqs), + "total_issues": sum(a["issues"] for a in acqs), + "conformance": build_conformance(acqs, sections), + "errors": errors, + } + + env = Environment(loader=FileSystemLoader(str(HERE)), + autoescape=select_autoescape(["html"])) + REPORTS_DIR.mkdir(parents=True, exist_ok=True) + + if len(acqs) == 1: + stem = acqs[0]["name"] + else: + proj = re.sub(r"[^A-Za-z0-9]+", "-", str(acqs[0]["meta"].get("sample_project") or "report")).strip("-") + stem = f"{proj}_{len(acqs)}acq" + out = REPORTS_DIR / f"{stem}_report.pdf" + HTML(string=env.get_template("template_combined.html").render(**doc), + base_url=str(HERE)).write_pdf(str(out)) + return {"full": out} + + +# --------------------------------------------------------------------------- # +# MQTT +# --------------------------------------------------------------------------- # +def publish(client, payload: dict): + client.publish(TOPIC_OUT, json.dumps(payload)) + print(f"[reporter] -> {TOPIC_OUT}: {payload}", flush=True) + + +def on_connect(client, userdata, flags, rc, *args): + print(f"[reporter] connected rc={rc}, subscribing {TOPIC_IN}", flush=True) + client.subscribe(TOPIC_IN) + + +def _handle_generate(client, data): + """Dispatch a generate request. Two payload shapes are accepted: + + NEW {action, acquisition_paths:[...], sections:{...}, gallery:{...}} + -> one combined full PDF (the "Report export" dialog). + LEGACY {action, acquisition_path:"..."} + -> the original full + one-pager pair (per-row button).""" + paths = data.get("acquisition_paths") + if isinstance(paths, list) and paths: + label = f"{len(paths)} acquisition(s)" + publish(client, {"status": "generating", "count": len(paths), + "acquisition_paths": paths}) + try: + res = build_combined_report(paths, data.get("sections"), data.get("gallery")) + full = res["full"] + publish(client, {"status": "done", "acquisition_paths": paths, + "path": str(full), "filename": full.name, + "url": f"/api/files/reports/{full.name}", + "filename_full": full.name, + "url_full": f"/api/files/reports/{full.name}"}) + print(f"[reporter] wrote {full} ({label})", flush=True) + except Exception as exc: # noqa: BLE001 — report any failure to the UI + traceback.print_exc() + publish(client, {"status": "error", "acquisition_paths": paths, "error": str(exc)}) + return + + acq = data.get("acquisition_path") + if not acq: + return + print(f"[reporter] generating report for {acq}", flush=True) + publish(client, {"status": "generating", "acquisition_path": acq}) + try: + res = build_report(acq) + full, onep = res["full"], res["onepage"] + publish(client, {"status": "done", "acquisition_path": acq, + # legacy fields (= full report) kept for compatibility + "path": str(full), "filename": full.name, + "url": f"/api/files/reports/{full.name}", + # both formats, so the dashboard can offer a choice + "filename_full": full.name, + "url_full": f"/api/files/reports/{full.name}", + "filename_onepage": onep.name, + "url_onepage": f"/api/files/reports/{onep.name}"}) + print(f"[reporter] wrote {full} and {onep}", flush=True) + except Exception as exc: # noqa: BLE001 — report any failure to the UI + traceback.print_exc() + publish(client, {"status": "error", "acquisition_path": acq, "error": str(exc)}) + + +def on_message(client, userdata, msg): + try: + data = json.loads(msg.payload.decode()) + except (ValueError, UnicodeDecodeError): + print(f"[reporter] bad payload: {msg.payload!r}", flush=True) + return + if data.get("action") != "generate": + return + _handle_generate(client, data) + + +def main(): + if "--once" in sys.argv: # local test: legacy single-acq (full + one-pager) + res = build_report(sys.argv[sys.argv.index("--once") + 1]) + print(f"wrote {res['full']} and {res['onepage']}") + return + if "--payload" in sys.argv: # local test: exact dialog payload (JSON), no MQTT + data = json.loads(sys.argv[sys.argv.index("--payload") + 1]) + res = build_combined_report(data.get("acquisition_paths") or [data["acquisition_path"]], + data.get("sections"), data.get("gallery")) + print(f"wrote {res['full']}") + return + client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) + client.on_connect = on_connect + client.on_message = on_message + client.connect(MQTT_HOST, MQTT_PORT, 60) + client.loop_forever() + + +if __name__ == "__main__": + main() diff --git a/reporter/requirements.txt b/reporter/requirements.txt new file mode 100644 index 000000000..4682123fd --- /dev/null +++ b/reporter/requirements.txt @@ -0,0 +1,6 @@ +paho-mqtt>=1.6 +matplotlib>=3.5 +jinja2>=3.0 +weasyprint>=57 +numpy>=1.22 +Pillow>=9.0 diff --git a/reporter/template.html b/reporter/template.html new file mode 100644 index 000000000..b6f4f8124 --- /dev/null +++ b/reporter/template.html @@ -0,0 +1,401 @@ + + + + +PlanktoScope Acquisition Report — {{ meta.acq_id }} (full) + + + + + +
+
+
+ PlanktoScope +
PlanktoScopeFairScope · Quantitative Imaging
+
+
+
Acquisition Report
+
{{ serial }} · {{ instrument_short }}
+
+
+ +
+
Quantitative plankton imaging · Quality-control readout
+

{{ meta.acq_id }}

+

Automated quality-control and size-distribution report for acquisition {{ meta.acq_id }}, project {{ meta.sample_project }}, sample {{ meta.sample_id }}. {{ stats.total }} objects were segmented from {{ meta.acq_nb_frame }} frames across a {{ meta.acq_imaged_volume }} mL imaged volume.

+
+
+
+
Quality control · Determination
+
{{ 'Passed' if qc_pass else 'Review required' }}
+
{{ qc|length }} metrics evaluated · {{ qc|rejectattr('pass')|list|length }} outside acceptable range
+
+
+
{{ stats.total }}
+
Objects segmented
+
+
+
+ +
+
Project
{{ meta.sample_project or "—" }}
+
Sample ID
{{ meta.sample_id or "—" }}
+
Acquisition ID
{{ meta.acq_id or "—" }}
+
Operator
{{ meta.sample_operator or "—" }}
+
Gear
{{ meta.sample_gear or "—" }}
+
Serial
{{ serial }}
+
Position
{{ position }}
+
Sampled (UTC)
{{ sampled }}
+
Instrument
{{ instrument_short }}
+
Median ESD
{{ "%.1f"|format(stats.esd_median) }} µm
+
Imaged volume
{{ meta.acq_imaged_volume }} mL
+
Generated (UTC)
{{ generated.split(' ')[0] }}
+
+ +
+ Generated {{ generated }} · WeasyPrint + Cover · 01 / 05 +
+
+ + +
+
+
PlanktoScope · Acquisition Report
+
{{ meta.acq_id }} · {{ serial }} · 02 / 05
+
+ +
+
01

Sample & acquisition metadata

+
EcoTaxa identity fields
+
+ +
+ + + + + + + + + + + +
Sample
Project{{ meta.sample_project or "—" }}
Sample ID{{ meta.sample_id or "—" }}
Operator{{ meta.sample_operator or "—" }}
Gear{{ meta.sample_gear or "—" }}
Latitude{{ lat_disp }}
Longitude{{ lon_disp }}
Date / time (UTC){{ sampled }}
Pumped volume{{ meta.acq_pumped_volume }} mL
Imaged volume{{ meta.acq_imaged_volume }} mL
+ + + + + + + + + + + +
Acquisition
Acquisition ID{{ meta.acq_id or "—" }}
Instrument{{ instrument_short }}
Serial{{ serial }}
Frames captured{{ meta.acq_nb_frame }}
Pixel size{{ meta.process_pixel_size }} µm/px
Flowcell thickness{{ meta.acq_flowcell_thickness }} µm
Camera ISO{{ meta.acq_camera_iso }}
Shutter speed{{ meta.acq_camera_shutter_speed }} ms
Minimum ESD{{ meta.process_min_ESD }} µm
+
+ +
+

Comment

+

{{ meta.sample_comment or "No sample comment recorded." }} Processed {{ (meta.process_datetime or meta.acq_local_datetime or "—")|replace("T", " ") }} with the PlanktoScope segmentation pipeline; objects below the {{ meta.process_min_ESD }} µm minimum ESD were excluded.

+
+ +
+

Method & QC thresholds

+

ESD denotes the object equivalent spherical diameter in µm and is reported as measured. Acceptance limits — focus < 30% blurry; flowcell clogging < 10% stuck; concentration 1–50 objects per frame; spatial homogeneity CV < 100%.

+
+ +
+ {{ instrument_short }} · {{ serial }} + §01 Metadata · 02 / 05 +
+
+ + +
+
+
PlanktoScope · Acquisition Report
+
{{ meta.acq_id }} · {{ serial }} · 03 / 05
+
+ +
+
02

Quality control summary

+
Dashboard thresholds · n = {{ stats.total }}
+
+ + + + + {% for row in qc %} + + + + + + + {% endfor %} + +
MetricMeasuredAcceptable rangeDetermination
{{ row.label }}{{ row.value }}{{ row.limit }}{{ 'PASS' if row.pass else 'FAIL' }}
+ + {% if flat_field %} +
+
Flat fieldFig. 1 · Illumination
+ flat field +
Fig. 1 Median of the first frames, used for illumination correction across the field of view before segmentation.
+
+ {% endif %} + + {% if chart_sharpness %} +
+
Sharpness distributionFig. 2 · Laplacian var.
+ sharpness distribution +
Fig. 2 Object sharpness (object_blur_laplacian). Median {{ "%.3f"|format(sharp.median) }}; {{ "%.1f"|format(sharp.blurryPct) }}% of objects fall below the blurry cutoff (dashed).
+
+ {% endif %} + +
+ {{ instrument_short }} · {{ serial }} + §02 Quality control · 03 / 05 +
+
+ + +
+
+
PlanktoScope · Acquisition Report
+
{{ meta.acq_id }} · {{ serial }} · 04 / 05
+
+ +
+
03

Size distribution

+
Equivalent spherical diameter · {{ stats.total }} objects
+
+ +
+
Median ESD
{{ "%.1f"|format(stats.esd_median) }}
µm · P50
+
Interdecile
{{ stats.esd_p10|round|int }}–{{ stats.esd_p90|round|int }}
µm · P10–P90
+
Full range
{{ stats.esd_min|round|int }}–{{ stats.esd_max|round|int }}
µm · min–max
+
Objects / frame
{{ "%.1f"|format(stats.perFrame) }}
1–50
+
Total
{{ stats.total }}
segmented
+
+ + {% if chart_esd %} +
+
Size distributionFig. 3 · ESD µm · log
+ ESD histogram +
Fig. 3 Log-binned equivalent spherical diameter. Flowing objects {{ "%.1f"|format(stats.flowingPct) }}%; stuck objects {{ "%.1f"|format(stats.stuckPct) }}%; dashed line marks the median.
+
+ {% endif %} + +
+ {% if chart_heatmap %} +
+
Spatial densityFig. 4 · Flowcell field
+ spatial heatmap +
Fig. 4 Object distribution across the flowcell (camera orientation).
+
+ {% endif %} +
+
Spatial summary
+ + + + + + +
Total objects{{ stats.total }}
Flowing{{ "%.1f"|format(stats.flowingPct) }}%
Stuck{{ "%.1f"|format(stats.stuckPct) }}%
Left / Ctr / Right{{ "%.0f"|format(spatial.leftPct) }} / {{ "%.0f"|format(spatial.centerPct) }} / {{ "%.0f"|format(spatial.rightPct) }}%
Homogeneity (CV){{ "%.0f"|format(homo.cv) }}%
+
+
+ +
+ {{ instrument_short }} · {{ serial }} + §03 Size distribution · 04 / 05 +
+
+ + +
+
+
PlanktoScope · Object Gallery
+
{{ meta.acq_id }} · {{ serial }} · 05 / 05
+
+ +
+
+
§ 04 · Largest objects by diameter
+

Object Gallery

+
+
Plate I
{{ gallery|length }} objects · descending ESD
+
+ + + +

Plate I  The {{ gallery|length }} largest segmented objects by equivalent spherical diameter, in descending order. Index above each thumbnail; ESD at right.

+ +
+ Generated {{ generated }} · WeasyPrint + §04 Object gallery · 05 / 05 +
+
+ + + diff --git a/reporter/template_combined.html b/reporter/template_combined.html new file mode 100644 index 000000000..5b683f35f --- /dev/null +++ b/reporter/template_combined.html @@ -0,0 +1,734 @@ + + + + +PlanktoScope Acquisition Report{% if multi %} — {{ n_acq }} acquisitions{% else %} — {{ acqs[0].meta.acq_id }}{% endif %} + + + + +{# ---------- shared macro: one tolerance track ---------- #} +{% macro track(t, state, ticks=None, numbered=False) -%} +
+
+ {% if t.good_start > 0.5 %}
{% endif %} + {% if t.good_end < 99.5 %}
{% endif %} + {% if ticks %} + {% for k in ticks %} +
{% if numbered %}{{ k.idx }}{% endif %}
+ {% endfor %} + {% else %} +
+ {% endif %} +
+{%- endmacro %} + +{# ============================== COVER ============================== #} +
+
+
+ +
PlanktoScopeFairScope · Quantitative imaging
+
+
+
Acquisition report
+
{{ serial }} · {{ instrument_short }}
+
+
+ +
+
Quantitative plankton imaging · Conformance certificate
+ {% if multi %} +

{{ cover_project }}

+

Combined quality-control and size-distribution report for {{ n_acq }} acquisitions of project {{ cover_project }}, totalling {{ total_objects }} segmented objects. Each acquisition is reported on its own pages against the same acceptance limits.

+ {% else %} +

{{ acqs[0].meta.acq_id }}

+

Quality-control and size-distribution report for acquisition {{ acqs[0].meta.acq_id }}, sample {{ acqs[0].meta.sample_id }} of project {{ acqs[0].meta.sample_project }}. {{ acqs[0].stats.total }} objects were segmented from {{ acqs[0].meta.acq_nb_frame }} frames.

+ {% endif %} + +
+
+
+
Quality control · Determination
+
{{ 'Within limits' if all_pass else 'Review required' }}
+
{{ n_acq }} acquisition{{ 's' if multi else '' }} evaluated · {{ total_issues }} measurement{{ '' if total_issues == 1 else 's' }} outside limits
+
+
+
Objects segmented
+
{{ total_objects }}
+
+
+
+ +
+ + {% if conformance %} +
+
+ Conformance + {{ conformance|length }} check{{ '' if conformance|length == 1 else 's' }}{% if multi %} · {{ n_acq }} acquisitions per track{% endif %} +
+ + {% for c in conformance %} +
+
{{ c.title }}
+
{{ c.readout }}{{ c.unit }}
+
+
+ {% if c.good_start > 0.5 %}
{% endif %} + {% if c.good_end < 99.5 %}
{% endif %} + {% for k in c.ticks %} +
{% if c.numbered %}{{ k.idx }}{% endif %}
+ {% endfor %} +
+
{{ c.limit }}
+
{{ 'Within' if c.state == 'good' else ('Review' if c.state == 'review' else 'Outside') }}
+
+ {% endfor %} + +
+ Acceptable rangeMeasured value + Each track is scaled to its own check +
+
+ {% endif %} + +
+ + {% if multi %} + + + + + {% for a in acqs %} + + + + + + + + + {% endfor %} + +
Acquisitions in this report
#AcquisitionSampleObjectsMedian ESDDetermination
{{ '%02d'|format(loop.index) }}{{ a.meta.acq_id }}{{ a.meta.sample_id or '—' }}{{ a.stats.total }}{{ "%.0f"|format(a.stats.esd_median) }} µm{{ 'Within' if a.acq_pass else 'Review' }}
+ {% else %} +
+
Project
{{ cover_project }}
+
Sample
{{ acqs[0].meta.sample_id or '—' }}
+
Acquisition
{{ acqs[0].meta.acq_id or '—' }}
+
Serial
{{ serial }}
+
Instrument
{{ instrument_short }}
+
Generated (UTC)
{{ generated.split(' ')[0] }}
+
+ {% endif %} + + {% if errors %} +
Skipped {{ errors|join('; ') }}
+ {% endif %} +
+ +{# ========================= PER-ACQUISITION ========================= #} +{% for a in acqs %} +{% set ai = loop.index %} +
+ +
+
+ {{ a.meta.acq_id }} + {{ a.meta.sample_project }} · {{ a.meta.sample_id }} · {{ a.stats.total }} objects +
+
+ {{ 'Within limits' if a.acq_pass else 'Review' }} + {% if multi %}Acq {{ ai }}/{{ n_acq }} · {% endif %}{{ a.evaluated }} checks · {{ a.issues }} flagged +
+
+ + {% if sections.metadata %} +
+
+ 01 +

Sample & acquisition metadata

+
+
EcoTaxa identity fields
+
+ +
+ + + + + + + + + + + +
Sample
Project{{ a.meta.sample_project or "—" }}
Sample ID{{ a.meta.sample_id or "—" }}
Operator{{ a.meta.sample_operator or "—" }}
Gear{{ a.meta.sample_gear or "—" }}
Latitude{{ a.lat_disp }}
Longitude{{ a.lon_disp }}
Date / time (UTC){{ a.sampled }}
Pumped volume{{ a.meta.acq_pumped_volume }} mL
Imaged volume{{ a.meta.acq_imaged_volume }} mL
+ + + + + + + + + + + +
Acquisition
Acquisition ID{{ a.meta.acq_id or "—" }}
Instrument{{ a.instrument_short }}
Serial{{ a.serial }}
Frames captured{{ a.meta.acq_nb_frame }}
Pixel size{{ a.meta.process_pixel_size }} µm/px
Flowcell thickness{{ a.meta.acq_flowcell_thickness }} µm
Camera ISO{{ a.meta.acq_camera_iso }}
Shutter speed{{ a.meta.acq_camera_shutter_speed }} ms
Minimum ESD{{ a.meta.process_min_ESD }} µm
+
+ +
+

Comment

+

{{ a.meta.sample_comment or "No sample comment recorded." }} Processed {{ (a.meta.process_datetime or a.meta.acq_local_datetime or "—")|replace("T", " ") }} with the PlanktoScope segmentation pipeline; objects below the {{ a.meta.process_min_ESD }} µm minimum ESD were excluded.

+
+ {% endif %} + + {% if a.show_calibration %} +
+
+ 02 +

Optics & calibration

+
+
Flat-field diagnostics
+
+ + + + + {% for c in a.calibration %} + + + + + + + + {% endfor %} + +
CheckMeasuredLimitDetermination
{{ c.title }} + {{ c.value }} + {{ c.unit }} + {% if c.track %}{{ track(c.track, c.state) }}{% endif %}{{ c.track.limit if c.track else '—' }}{{ c.label }}
+ {% endif %} + + {% if a.show_qc %} +
+
+ 03 +

Quality control

+
+
Dashboard thresholds · n = {{ a.stats.total }}
+
+ + + + + {% for row in a.qc %} + + + + + + + + {% endfor %} + +
MetricMeasuredLimitDetermination
{{ row.title }} + {{ row.value }} + {{ row.unit }} + {{ track(row.track, row.state) }}{{ row.track.limit }}{{ 'Pass' if row.pass else 'Fail' }}
+ {% endif %} + + {% set duo_both = a.flat_field and a.sections.focus and a.chart_sharpness %} + {% if a.flat_field or (a.sections.focus and a.chart_sharpness) %} +
+ {% if a.flat_field %} +
+
Flat fieldFig. 1 · Illumination
+ +
Fig. 1 Median flat field used for illumination correction. Mean luminance, chroma, debris spots and edge uniformity are all measured from this image.
+
+ {% endif %} + {% if a.sections.focus and a.chart_sharpness %} +
+
SharpnessFig. 2 · Focus measure
+ +
Fig. 2 Focus measure per object. Median {{ "%.3f"|format(a.sharp.median) }}; {{ "%.1f"|format(a.sharp.blurryPct) }}% of objects fall below the blurry cutoff (dashed).
+
+ {% endif %} +
+ {% endif %} + +
+
+ 04 +

Size distribution

+
+
Equivalent spherical diameter · {{ a.stats.total }} objects
+
+ +
+
Median ESD
{{ "%.1f"|format(a.stats.esd_median) }}
µm · P50
+
Interdecile
{{ a.stats.esd_p10|round|int }}–{{ a.stats.esd_p90|round|int }}
µm · P10–P90
+
Full range
{{ a.stats.esd_min|round|int }}–{{ a.stats.esd_max|round|int }}
µm · min–max
+
Objects / frame
{{ "%.1f"|format(a.stats.perFrame) }}
1–50
+
Total
{{ a.stats.total }}
segmented
+
+ + {% if a.chart_esd %} +
+
Size distributionFig. 3 · ESD µm · log
+ +
Fig. 3 Log-binned equivalent spherical diameter. Flowing objects {{ "%.1f"|format(a.stats.flowingPct) }}%; stuck objects {{ "%.1f"|format(a.stats.stuckPct) }}%; dashed line marks the median.
+
+ {% endif %} + + {% if sections.spatial %} +
+ {% if a.chart_heatmap %} +
+
Spatial densityFig. 4 · Flowcell field
+ +
Fig. 4 Object distribution across the flowcell, in camera orientation.
+
+ {% endif %} +
+
Spatial summary
+ + + + + + + + +
Total objects{{ a.stats.total }}
Flowing{{ "%.1f"|format(a.stats.flowingPct) }}%
Stuck{{ "%.1f"|format(a.stats.stuckPct) }}%
Left / Ctr / Right{{ "%.0f"|format(a.spatial.leftPct) }} / {{ "%.0f"|format(a.spatial.centerPct) }} / {{ "%.0f"|format(a.spatial.rightPct) }}%
Frames{{ a.homo.nFrames }}
Objects / frame{{ "%.1f"|format(a.stats.perFrame) }}
Flow stability (CV){{ "%.0f"|format(a.homo.cv) }}%
+
+
+ {% endif %} + + {% if a.gallery %} +
+
+
+ 05 +

Object gallery

+
+
{{ a.gallery|length }} objects · {{ 'random selection' if a.gallery_opts.mode == 'random' else 'largest first' }} by {{ a.gallery_criteria_label|lower }}
+
+ + + +

Objects{{ a.gallery|length }} objects from {{ a.meta.acq_id }}, {% if a.gallery_opts.mode == 'random' %}drawn at random{% else %}ranked by {{ a.gallery_criteria_label|lower }}, largest first{% endif %}. Index at left of each tile, equivalent spherical diameter at right.

+
+ {% endif %} + +
+{% endfor %} + + + diff --git a/reporter/template_onepage.html b/reporter/template_onepage.html new file mode 100644 index 000000000..7214e02e6 --- /dev/null +++ b/reporter/template_onepage.html @@ -0,0 +1,304 @@ + + + + +PlanktoScope Acquisition Report — {{ meta.acq_id }} + + + + + +
+ +
+
+ PlanktoScope +
PlanktoScopeFairScope Imaging
+
+
+
Acquisition Report
+
{{ meta.acq_id }} · {{ serial }} · {{ meta.object_date }}
+
+
+ +
+
+
Quality control & size-distribution readout
+

{{ meta.acq_id }}

+
+
+
{{ 'Passed' if qc_pass else 'Review required' }}
+
{{ qc|rejectattr('pass')|list|length }} of {{ qc|length }} metrics outside range
+
+
+ + +
+
Project
{{ meta.sample_project or "—" }}
+
Sample ID
{{ meta.sample_id or "—" }}
+
Operator
{{ meta.sample_operator or "—" }}
+
Gear
{{ meta.sample_gear or "—" }}
+
Position
{{ position }}
+
Sampled
{{ sampled }}
+ +
Acquisition ID
{{ meta.acq_id or "—" }}
+
Instrument
{{ instrument_short }}
+
Serial
{{ serial }}
+
Frames
{{ meta.acq_nb_frame }}
+
Imaged volume
{{ meta.acq_imaged_volume }} mL
+
Pumped volume
{{ meta.acq_pumped_volume }} mL
+ +
Pixel size
{{ meta.process_pixel_size }} µm/px
+
Flowcell
{{ meta.acq_flowcell_thickness }} µm
+
Camera ISO
{{ meta.acq_camera_iso }}
+
Shutter
{{ meta.acq_camera_shutter_speed }} ms
+
Min ESD
{{ meta.process_min_ESD }} µm
+
Total objects
{{ stats.total }}
+
+ + +
+
01

Quality control

+
Dashboard thresholds
+
+ + + + {% for row in qc %} + + + + + + + {% endfor %} + +
MetricMeasuredAcceptableResult
{{ row.label }}{{ row.value|replace(' obj/frame', ' obj/fr') }}{{ row.limit|replace(' blurry', '')|replace(' stuck', '')|replace(' obj/frame', '')|replace('CV ', '') }}{{ 'PASS' if row.pass else 'FAIL' }}
+ + +
+
02

Size & composition

+
Equivalent spherical diameter · n = {{ stats.total }}
+
+
+
+ + + + + +
Median ESD{{ "%.1f"|format(stats.esd_median) }} µmP50
Interdecile range{{ "%.1f"|format(stats.esd_p10) }}–{{ "%.1f"|format(stats.esd_p90) }} µmP10–P90
Full range{{ "%.1f"|format(stats.esd_min) }}–{{ "%.1f"|format(stats.esd_max) }} µmmin–max
Objects per frame{{ "%.2f"|format(stats.perFrame) }}1–50
+
+
+ + + + + +
Flowing objects{{ "%.1f"|format(stats.flowingPct) }}%{{ (stats.flowingPct / 100 * stats.total)|round|int }} obj
Stuck objects{{ "%.1f"|format(stats.stuckPct) }}%{{ (stats.stuckPct / 100 * stats.total)|round|int }} obj
Left / Centre / Right{{ "%.0f"|format(spatial.leftPct) }} / {{ "%.0f"|format(spatial.centerPct) }} / {{ "%.0f"|format(spatial.rightPct) }}%of field
Homogeneity (CV){{ "%.0f"|format(homo.cv) }}%< 100%
+
+
+ + +
+ {% if chart_esd %} +
+
Size distributionESD µm · log
+ ESD distribution +
Median {{ stats.esd_median|round|int }} µm. Flowing vs. stuck; dashed median.
+
+ {% endif %} + {% if chart_sharpness %} +
+
SharpnessLaplacian var.
+ Sharpness +
{{ "%.1f"|format(sharp.blurryPct) }}% blurry. Below the dashed focus cutoff.
+
+ {% endif %} + {% if chart_heatmap %} +
+
Spatial densityFlowcell
+ Spatial heatmap +
CV {{ "%.0f"|format(homo.cv) }}%. Distribution across the field.
+
+ {% endif %} + {% if chart_concentration %} +
+
ConcentrationBy frame · n = {{ meta.acq_nb_frame }}
+ Concentration by frame +
{{ "%.2f"|format(stats.perFrame) }} obj/frame. Mean across the run.
+
+ {% endif %} +
+ +
+ Generated {{ generated }} · WeasyPrint + {{ instrument_short }} · {{ serial }} +
+
+ + +{% if gallery %} +
+
+
+ PlanktoScope +
PlanktoScopeFairScope Imaging
+
+
+
Object Gallery
+
{{ meta.acq_id }} · {{ serial }} · {{ meta.object_date }}
+
+
+ +
+
+
Largest objects by diameter
+

Object Gallery

+
+
Plate I
{{ gallery|length }} objects · descending ESD
+
+ + + +

Plate I  The {{ gallery|length }} largest segmented objects by equivalent spherical diameter, descending. Index above each thumbnail; ESD at right.

+ +
+ Generated {{ generated }} · WeasyPrint + {{ instrument_short }} · {{ serial }} +
+
+{% endif %} + + + From beb0f9527c581b3932318178cd6ba3a6bdffaf5a Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 15 Jul 2026 08:09:11 -0700 Subject: [PATCH 2/4] chore(reporter): migrate to uv, refactor MQTT layer, and update service MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add pyproject.toml and uv.lock, and remove requirements.txt (modeled on segmenter/) - Add reporter/justfile for setup/testing and wire it into the root justfile - Add reporter/README.md documenting the MQTT API payload shapes and responses - Rename report_generator.py to main.py and update planktoscope-org.reporter.service - Rewrite MQTT layer using aiomqtt/asyncio, running PDF rendering in asyncio.to_thread - Verify on-device execution, service startup, and full MQTT round-trip PDF generation Thanks @sonnyp — all addressed in this push. --- justfile | 3 + reporter/README.md | 140 ++++ reporter/justfile | 20 + reporter/{report_generator.py => main.py} | 94 ++- reporter/planktoscope-org.reporter.service | 18 + reporter/planktoscope-reporter.service | 16 - reporter/pyproject.toml | 50 ++ reporter/requirements.txt | 6 - reporter/uv.lock | 907 +++++++++++++++++++++ 9 files changed, 1189 insertions(+), 65 deletions(-) create mode 100644 reporter/README.md create mode 100644 reporter/justfile rename reporter/{report_generator.py => main.py} (94%) create mode 100644 reporter/planktoscope-org.reporter.service delete mode 100644 reporter/planktoscope-reporter.service create mode 100644 reporter/pyproject.toml delete mode 100644 reporter/requirements.txt create mode 100644 reporter/uv.lock diff --git a/justfile b/justfile index 326e507f6..8897d818c 100644 --- a/justfile +++ b/justfile @@ -14,6 +14,7 @@ setup: just --justfile node-red/justfile setup just --justfile controller/justfile setup just --justfile segmenter/justfile setup + just --justfile reporter/justfile setup just --justfile os/justfile setup just --justfile backend/justfile setup just --justfile frontend/justfile setup @@ -24,6 +25,7 @@ setup-dev: just --justfile node-red/justfile setup-dev just --justfile controller/justfile setup-dev just --justfile segmenter/justfile setup-dev + just --justfile reporter/justfile setup-dev just --justfile os/justfile setup-dev just --justfile backend/justfile setup-dev just --justfile frontend/justfile setup-dev @@ -41,6 +43,7 @@ test: just --justfile node-red/justfile test just --justfile controller/justfile test just --justfile segmenter/justfile test + just --justfile reporter/justfile test just --justfile os/justfile test just --justfile backend/justfile test just --justfile frontend/justfile test diff --git a/reporter/README.md b/reporter/README.md new file mode 100644 index 000000000..c460c5e1f --- /dev/null +++ b/reporter/README.md @@ -0,0 +1,140 @@ +# reporter + +The PlanktoScope's PDF report generator. + +## Introduction + +This service renders a self-contained PDF acquisition report for one or more +segmented acquisitions. It reads each acquisition's `metadata.json`, its EcoTaxa +TSV, the flat-field image and a selection of ROI thumbnails, recomputes the same +quality-control statistics the Validation dashboard shows, draws the charts with +matplotlib, and converts an HTML template to PDF with WeasyPrint. Everything — +fonts, images and charts — is embedded, so the report renders offline in the +field and needs no external assets. + +The report is triggered from the dashboard's "Report export" dialog over MQTT and +written to `/home/pi/data/reports/`, where the dashboard serves it for download. + +## Usage + +### Development + +Install runtime dependencies and (re)install the systemd service: + +```sh +cd reporter +just setup +``` + +Install all dependencies including development tooling: + +```sh +just setup-dev +``` + +Start the reporter for development (stops the service first): + +```sh +just dev +# make changes and restart +``` + +Run the code auto-formatter on the project: + +```sh +just format +``` + +Run all checks (formatting and linting): + +```sh +just test +``` + +### Prerequisites + +To use this project, you'll need: + +- Python >= 3.13.5 +- uv +- Pango and harfbuzz-subset (WeasyPrint's native dependencies — `just setup` + installs them) + +An MQTT broker must be reachable on port 1883 of the host. We recommend +[Mosquitto](https://mosquitto.org/). + +### Rendering without MQTT + +For local iteration you can render straight from a dialog payload, bypassing the +broker: + +```sh +uv run main.py --payload '{"acquisition_paths":["/home/pi/data/img///"]}' +``` + +The output directory defaults to `/home/pi/data/reports` and can be overridden +with the `REPORTER_OUTPUT` environment variable. + +## API + +The reporter subscribes to `actuator/reporter/generate` and publishes progress to +`status/reporter`. + +### Generate a report + +**topic** `actuator/reporter/generate` + +**payload** (combined report — one PDF covering a selection of acquisitions, as +sent by the "Report export" dialog): + +```json +{ + "action": "generate", + "acquisition_paths": [ + "/home/pi/data/img///" + ], + "sections": { "...": "which report sections to include (optional)" }, + "gallery": { "...": "object-gallery options (optional)" } +} +``` + +A legacy single-acquisition payload is also accepted; it produces the full report +plus a one-page summary: + +```json +{ + "action": "generate", + "acquisition_path": "/home/pi/data/img///" +} +``` + +### Status + +**topic** `status/reporter` + +While working the reporter publishes `{"status": "generating", ...}`. On success +it publishes the download location: + +```json +{ + "status": "done", + "filename": "___report.pdf", + "url": "/api/files/reports/___report.pdf" +} +``` + +On failure it publishes `{"status": "error", "error": ""}`. + +## Licensing + +Except where otherwise indicated, source code provided here is covered by the +following information: + +Copyright PlanktoScope project contributors + +SPDX-License-Identifier: GPL-3.0-or-later + +You can use the source code provided here under the [GPL 3.0 License](https://www.gnu.org/licenses/gpl-3.0.en.html). + +Bundled IBM Plex fonts in `fonts/` are licensed under the SIL Open Font License; +see `fonts/LICENSE-IBMPlex.txt`. diff --git a/reporter/justfile b/reporter/justfile new file mode 100644 index 000000000..e824bf381 --- /dev/null +++ b/reporter/justfile @@ -0,0 +1,20 @@ +setup: + # WeasyPrint renders through Pango; harfbuzz-subset embeds subset fonts in the PDF + sudo apt install -y --no-install-recommends libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz-subset0 + uv sync --no-group dev + sudo cp planktoscope-org.reporter.service /etc/systemd/system/ + sudo systemctl reenable planktoscope-org.reporter + sudo systemctl restart planktoscope-org.reporter + +setup-dev: + uv sync --group dev + +dev: + -sudo systemctl stop planktoscope-org.reporter + uv run main.py + +format: + uv run poe fmt + +test: + uv run poe check diff --git a/reporter/report_generator.py b/reporter/main.py similarity index 94% rename from reporter/report_generator.py rename to reporter/main.py index 0d0e50e55..cee230101 100644 --- a/reporter/report_generator.py +++ b/reporter/main.py @@ -12,6 +12,7 @@ "acquisition_path": "/home/pi/data/img///"} """ +import asyncio import base64 import csv import io @@ -25,8 +26,8 @@ from datetime import datetime, timezone from pathlib import Path +import aiomqtt import numpy as np -import paho.mqtt.client as mqtt from PIL import Image, ImageFilter import matplotlib @@ -1178,79 +1179,90 @@ def build_combined_report(acquisition_paths, sections=None, gallery_opts=None) - # --------------------------------------------------------------------------- # -# MQTT +# MQTT (asyncio / aiomqtt) # --------------------------------------------------------------------------- # -def publish(client, payload: dict): - client.publish(TOPIC_OUT, json.dumps(payload)) +async def publish(client: "aiomqtt.Client", payload: dict) -> None: + await client.publish(TOPIC_OUT, json.dumps(payload)) print(f"[reporter] -> {TOPIC_OUT}: {payload}", flush=True) -def on_connect(client, userdata, flags, rc, *args): - print(f"[reporter] connected rc={rc}, subscribing {TOPIC_IN}", flush=True) - client.subscribe(TOPIC_IN) - - -def _handle_generate(client, data): +async def _handle_generate(client: "aiomqtt.Client", data: dict) -> None: """Dispatch a generate request. Two payload shapes are accepted: NEW {action, acquisition_paths:[...], sections:{...}, gallery:{...}} -> one combined full PDF (the "Report export" dialog). LEGACY {action, acquisition_path:"..."} - -> the original full + one-pager pair (per-row button).""" + -> the original full + one-pager pair (per-row button). + + PDF generation is CPU-bound (matplotlib + WeasyPrint), so it runs in a + worker thread via ``asyncio.to_thread`` to keep the MQTT client responsive. + Messages are awaited one at a time, which serialises generation — matplotlib's + pyplot state is not safe to drive from concurrent threads.""" paths = data.get("acquisition_paths") if isinstance(paths, list) and paths: label = f"{len(paths)} acquisition(s)" - publish(client, {"status": "generating", "count": len(paths), - "acquisition_paths": paths}) + await publish(client, {"status": "generating", "count": len(paths), + "acquisition_paths": paths}) try: - res = build_combined_report(paths, data.get("sections"), data.get("gallery")) + res = await asyncio.to_thread( + build_combined_report, paths, data.get("sections"), data.get("gallery")) full = res["full"] - publish(client, {"status": "done", "acquisition_paths": paths, - "path": str(full), "filename": full.name, - "url": f"/api/files/reports/{full.name}", - "filename_full": full.name, - "url_full": f"/api/files/reports/{full.name}"}) + await publish(client, {"status": "done", "acquisition_paths": paths, + "path": str(full), "filename": full.name, + "url": f"/api/files/reports/{full.name}", + "filename_full": full.name, + "url_full": f"/api/files/reports/{full.name}"}) print(f"[reporter] wrote {full} ({label})", flush=True) except Exception as exc: # noqa: BLE001 — report any failure to the UI traceback.print_exc() - publish(client, {"status": "error", "acquisition_paths": paths, "error": str(exc)}) + await publish(client, {"status": "error", "acquisition_paths": paths, + "error": str(exc)}) return acq = data.get("acquisition_path") if not acq: return print(f"[reporter] generating report for {acq}", flush=True) - publish(client, {"status": "generating", "acquisition_path": acq}) + await publish(client, {"status": "generating", "acquisition_path": acq}) try: - res = build_report(acq) + res = await asyncio.to_thread(build_report, acq) full, onep = res["full"], res["onepage"] - publish(client, {"status": "done", "acquisition_path": acq, - # legacy fields (= full report) kept for compatibility - "path": str(full), "filename": full.name, - "url": f"/api/files/reports/{full.name}", - # both formats, so the dashboard can offer a choice - "filename_full": full.name, - "url_full": f"/api/files/reports/{full.name}", - "filename_onepage": onep.name, - "url_onepage": f"/api/files/reports/{onep.name}"}) + await publish(client, {"status": "done", "acquisition_path": acq, + # legacy fields (= full report) kept for compatibility + "path": str(full), "filename": full.name, + "url": f"/api/files/reports/{full.name}", + # both formats, so the dashboard can offer a choice + "filename_full": full.name, + "url_full": f"/api/files/reports/{full.name}", + "filename_onepage": onep.name, + "url_onepage": f"/api/files/reports/{onep.name}"}) print(f"[reporter] wrote {full} and {onep}", flush=True) except Exception as exc: # noqa: BLE001 — report any failure to the UI traceback.print_exc() - publish(client, {"status": "error", "acquisition_path": acq, "error": str(exc)}) + await publish(client, {"status": "error", "acquisition_path": acq, "error": str(exc)}) -def on_message(client, userdata, msg): +async def _handle_message(client: "aiomqtt.Client", message: "aiomqtt.Message") -> None: try: - data = json.loads(msg.payload.decode()) + data = json.loads(message.payload.decode()) except (ValueError, UnicodeDecodeError): - print(f"[reporter] bad payload: {msg.payload!r}", flush=True) + print(f"[reporter] bad payload: {message.payload!r}", flush=True) return - if data.get("action") != "generate": + if not isinstance(data, dict) or data.get("action") != "generate": return - _handle_generate(client, data) + await _handle_generate(client, data) + + +async def start() -> None: + REPORTS_DIR.mkdir(parents=True, exist_ok=True) + async with aiomqtt.Client(hostname=MQTT_HOST, port=MQTT_PORT) as client: + await client.subscribe(TOPIC_IN) + print(f"[reporter] connected {MQTT_HOST}:{MQTT_PORT}, subscribed {TOPIC_IN}", flush=True) + async for message in client.messages: + await _handle_message(client, message) -def main(): +def main() -> None: if "--once" in sys.argv: # local test: legacy single-acq (full + one-pager) res = build_report(sys.argv[sys.argv.index("--once") + 1]) print(f"wrote {res['full']} and {res['onepage']}") @@ -1261,11 +1273,7 @@ def main(): data.get("sections"), data.get("gallery")) print(f"wrote {res['full']}") return - client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) - client.on_connect = on_connect - client.on_message = on_message - client.connect(MQTT_HOST, MQTT_PORT, 60) - client.loop_forever() + asyncio.run(start()) if __name__ == "__main__": diff --git a/reporter/planktoscope-org.reporter.service b/reporter/planktoscope-org.reporter.service new file mode 100644 index 000000000..05abb3910 --- /dev/null +++ b/reporter/planktoscope-org.reporter.service @@ -0,0 +1,18 @@ +[Unit] +Description=Run the PlanktoScope PDF report generator +Wants=mosquitto.service +After=mosquitto.service +After=nodered.service + +[Service] +Type=simple +Environment=HOME=/home/pi +Environment=REPORTER_OUTPUT=/home/pi/data/reports +WorkingDirectory=/opt/PlanktoScope/reporter +ExecStart=/usr/local/bin/uv run main.py +User=pi +Group=pi +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/reporter/planktoscope-reporter.service b/reporter/planktoscope-reporter.service deleted file mode 100644 index b31daed51..000000000 --- a/reporter/planktoscope-reporter.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=PlanktoScope PDF report generator -After=network.target mosquitto.service -Wants=mosquitto.service - -[Service] -Type=simple -User=pi -WorkingDirectory=/opt/PlanktoScope/reporter -# Dedicated reporter venv (created with: uv venv /opt/PlanktoScope/reporter/.venv). -ExecStart=/opt/PlanktoScope/reporter/.venv/bin/python /opt/PlanktoScope/reporter/report_generator.py -Restart=on-failure -RestartSec=5 - -[Install] -WantedBy=multi-user.target diff --git a/reporter/pyproject.toml b/reporter/pyproject.toml new file mode 100644 index 000000000..0f1b39dba --- /dev/null +++ b/reporter/pyproject.toml @@ -0,0 +1,50 @@ +[project] +name = "planktoscope-reporter" +version = "0.0.1" +description = "Server-side PDF acquisition report generator for the PlanktoScope" +requires-python = ">=3.13.5,<4.0" +readme = "README.md" +license = "GPL-3.0-or-later" +keywords = ["planktoscope"] +classifiers = [ + "Intended Audience :: Science/Research", + "Natural Language :: English", + "Topic :: Scientific/Engineering", +] +dependencies = [ + "aiomqtt>=2.4.0,<3", + "numpy>=2.3.3,<3", + "pillow>=11.0,<12", + "matplotlib>=3.9,<4", + "jinja2>=3.1,<4", + "weasyprint>=61,<70", +] + +[project.urls] +Homepage = "https://www.planktoscope.org" +Repository = "https://github.com/fairscope/PlanktoScope/tree/main/reporter" +Documentation = "https://docs.planktoscope.community/" + +[dependency-groups] +dev = [ + "poethepoet>=0.37.0,<0.38", + "mypy>=1.18.2,<2", + "ruff>=0.13.3,<0.14", +] + +[tool.uv] +package = false + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.ruff] +line-length = 100 + +[tool.poe.tasks] +fmt = "ruff format" +lint-ruff = "ruff check" +lint = ["lint-ruff"] +fmt-check = "ruff format --check" +check = ["fmt-check", "lint"] diff --git a/reporter/requirements.txt b/reporter/requirements.txt deleted file mode 100644 index 4682123fd..000000000 --- a/reporter/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -paho-mqtt>=1.6 -matplotlib>=3.5 -jinja2>=3.0 -weasyprint>=57 -numpy>=1.22 -Pillow>=9.0 diff --git a/reporter/uv.lock b/reporter/uv.lock new file mode 100644 index 000000000..ac748a8f9 --- /dev/null +++ b/reporter/uv.lock @@ -0,0 +1,907 @@ +version = 1 +revision = 3 +requires-python = ">=3.13.5, <4.0" +resolution-markers = [ + "python_full_version >= '3.15'", + "python_full_version < '3.15'", +] + +[[package]] +name = "aiomqtt" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "paho-mqtt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/44/cfc58272783a11729462dc6df5adbfeabd084f840f609054ac772ae98c19/aiomqtt-2.5.1.tar.gz", hash = "sha256:25a0a47d157e8f158d2da1110ea4786c0615518751e94f7b04976c977a8ff20d", size = 86641, upload-time = "2026-03-05T18:28:56.421Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/9e/5089fa596220bf0dc73deeb23db27904e4b3504986caf08571f6f5cb84a8/aiomqtt-2.5.1-py3-none-any.whl", hash = "sha256:fd58c3593160e4d475d90ce911cdfc4239cd64de96b0ba22edf6c86bd7afa278", size = 16051, upload-time = "2026-03-05T18:28:55.14Z" }, +] + +[[package]] +name = "brotli" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab", size = 861523, upload-time = "2025-11-05T18:38:34.67Z" }, + { url = "https://files.pythonhosted.org/packages/91/9f/9cc5bd03ee68a85dc4bc89114f7067c056a3c14b3d95f171918c088bf88d/brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c", size = 444289, upload-time = "2025-11-05T18:38:35.6Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b6/fe84227c56a865d16a6614e2c4722864b380cb14b13f3e6bef441e73a85a/brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f", size = 1528076, upload-time = "2025-11-05T18:38:36.639Z" }, + { url = "https://files.pythonhosted.org/packages/55/de/de4ae0aaca06c790371cf6e7ee93a024f6b4bb0568727da8c3de112e726c/brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6", size = 1626880, upload-time = "2025-11-05T18:38:37.623Z" }, + { url = "https://files.pythonhosted.org/packages/5f/16/a1b22cbea436642e071adcaf8d4b350a2ad02f5e0ad0da879a1be16188a0/brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c", size = 1419737, upload-time = "2025-11-05T18:38:38.729Z" }, + { url = "https://files.pythonhosted.org/packages/46/63/c968a97cbb3bdbf7f974ef5a6ab467a2879b82afbc5ffb65b8acbb744f95/brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48", size = 1484440, upload-time = "2025-11-05T18:38:39.916Z" }, + { url = "https://files.pythonhosted.org/packages/06/9d/102c67ea5c9fc171f423e8399e585dabea29b5bc79b05572891e70013cdd/brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18", size = 1593313, upload-time = "2025-11-05T18:38:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4a/9526d14fa6b87bc827ba1755a8440e214ff90de03095cacd78a64abe2b7d/brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5", size = 1487945, upload-time = "2025-11-05T18:38:42.277Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e8/3fe1ffed70cbef83c5236166acaed7bb9c766509b157854c80e2f766b38c/brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a", size = 334368, upload-time = "2025-11-05T18:38:43.345Z" }, + { url = "https://files.pythonhosted.org/packages/ff/91/e739587be970a113b37b821eae8097aac5a48e5f0eca438c22e4c7dd8648/brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8", size = 369116, upload-time = "2025-11-05T18:38:44.609Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/298c2ddf786bb7347a1cd71d63a347a79e5712a7c0cba9e3c3458ebd976f/brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21", size = 863080, upload-time = "2025-11-05T18:38:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/0c/aac98e286ba66868b2b3b50338ffbd85a35c7122e9531a73a37a29763d38/brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac", size = 445453, upload-time = "2025-11-05T18:38:46.433Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f1/0ca1f3f99ae300372635ab3fe2f7a79fa335fee3d874fa7f9e68575e0e62/brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e", size = 1528168, upload-time = "2025-11-05T18:38:47.371Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a6/2ebfc8f766d46df8d3e65b880a2e220732395e6d7dc312c1e1244b0f074a/brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7", size = 1627098, upload-time = "2025-11-05T18:38:48.385Z" }, + { url = "https://files.pythonhosted.org/packages/f3/2f/0976d5b097ff8a22163b10617f76b2557f15f0f39d6a0fe1f02b1a53e92b/brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63", size = 1419861, upload-time = "2025-11-05T18:38:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/d76df7176a2ce7616ff94c1fb72d307c9a30d2189fe877f3dd99af00ea5a/brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b", size = 1484594, upload-time = "2025-11-05T18:38:50.655Z" }, + { url = "https://files.pythonhosted.org/packages/d3/93/14cf0b1216f43df5609f5b272050b0abd219e0b54ea80b47cef9867b45e7/brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361", size = 1593455, upload-time = "2025-11-05T18:38:51.624Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/3183c9e41ca755713bdf2cc1d0810df742c09484e2e1ddd693bee53877c1/brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888", size = 1488164, upload-time = "2025-11-05T18:38:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/64/6a/0c78d8f3a582859236482fd9fa86a65a60328a00983006bcf6d83b7b2253/brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d", size = 339280, upload-time = "2025-11-05T18:38:54.02Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" }, +] + +[[package]] +name = "brotlicffi" +version = "1.2.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/b6/017dc5f852ed9b8735af77774509271acbf1de02d238377667145fcee01d/brotlicffi-1.2.0.1.tar.gz", hash = "sha256:c20d5c596278307ad06414a6d95a892377ea274a5c6b790c2548c009385d621c", size = 478156, upload-time = "2026-03-05T19:54:11.547Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/f9/dfa56316837fa798eac19358351e974de8e1e2ca9475af4cb90293cd6576/brotlicffi-1.2.0.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c85e65913cf2b79c57a3fdd05b98d9731d9255dc0cb696b09376cc091b9cddd", size = 433046, upload-time = "2026-03-05T19:53:46.209Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f5/f8f492158c76b0d940388801f04f747028971ad5774287bded5f1e53f08d/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:535f2d05d0273408abc13fc0eebb467afac17b0ad85090c8913690d40207dac5", size = 1541126, upload-time = "2026-03-05T19:53:48.248Z" }, + { url = "https://files.pythonhosted.org/packages/3b/e1/ff87af10ac419600c63e9287a0649c673673ae6b4f2bcf48e96cb2f89f60/brotlicffi-1.2.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce17eb798ca59ecec67a9bb3fd7a4304e120d1cd02953ce522d959b9a84d58ac", size = 1541983, upload-time = "2026-03-05T19:53:50.317Z" }, + { url = "https://files.pythonhosted.org/packages/47/c0/80ecd9bd45776109fab14040e478bf63e456967c9ddee2353d8330ed8de1/brotlicffi-1.2.0.1-cp314-cp314t-win32.whl", hash = "sha256:3c9544f83cb715d95d7eab3af4adbbef8b2093ad6382288a83b3a25feb1a57ec", size = 349047, upload-time = "2026-03-05T19:53:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/ab/98/13e5b250236a281b6cd9e92a01ee1ae231029fa78faee932ef3766e1cb24/brotlicffi-1.2.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:625f8115d32ae9c0740d01ea51518437c3fbaa3e78d41cb18459f6f7ac326000", size = 385652, upload-time = "2026-03-05T19:53:53.892Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9f/b98dcd4af47994cee97aebac866996a006a2e5fc1fd1e2b82a8ad95cf09c/brotlicffi-1.2.0.1-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:91ba5f0ccc040f6ff8f7efaf839f797723d03ed46acb8ae9408f99ffd2572cf4", size = 432608, upload-time = "2026-03-05T19:53:56.736Z" }, + { url = "https://files.pythonhosted.org/packages/b1/7a/ac4ee56595a061e3718a6d1ea7e921f4df156894acffb28ed88a1fd52022/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be9a670c6811af30a4bd42d7116dc5895d3b41beaa8ed8a89050447a0181f5ce", size = 1534257, upload-time = "2026-03-05T19:53:58.667Z" }, + { url = "https://files.pythonhosted.org/packages/99/39/e7410db7f6f56de57744ea52a115084ceb2735f4d44973f349bb92136586/brotlicffi-1.2.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3314a3476f59e5443f9f72a6dff16edc0c3463c9b318feaef04ae3e4683f5a", size = 1536838, upload-time = "2026-03-05T19:54:00.705Z" }, + { url = "https://files.pythonhosted.org/packages/a6/75/6e7977d1935fc3fbb201cbd619be8f2c7aea25d40a096967132854b34708/brotlicffi-1.2.0.1-cp38-abi3-win32.whl", hash = "sha256:82ea52e2b5d3145b6c406ebd3efb0d55db718b7ad996bd70c62cec0439de1187", size = 343337, upload-time = "2026-03-05T19:54:02.446Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ef/e7e485ce5e4ba3843a0a92feb767c7b6098fd6e65ce752918074d175ae71/brotlicffi-1.2.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:da2e82a08e7778b8bc539d27ca03cdd684113e81394bfaaad8d0dfc6a17ddede", size = 379026, upload-time = "2026-03-05T19:54:04.322Z" }, +] + +[[package]] +name = "cffi" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/5f/ff100cae70ebe9d8df1c01a00e510e45d9adb5c1fdda84791b199141de97/cffi-2.1.0.tar.gz", hash = "sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9", size = 531036, upload-time = "2026-07-06T21:34:30.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/88/a996879e2eeccb815f6e3a5967b12a308257412acec882039d386bd2aa7b/cffi-2.1.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:10537b1df4967ca26d21e5072d7d54188354483b91dc75058968d3f0cf13fbda", size = 194331, upload-time = "2026-07-06T21:33:03.697Z" }, + { url = "https://files.pythonhosted.org/packages/58/85/7ae00d5c8dd6266f4e944c3db630f3c5c9a98b61d469c714d848b1d8138a/cffi-2.1.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a95b05f9baf29b91171b3a8bd2020b028835243e7b0ff6bb23e2a3c228518b1b", size = 196966, upload-time = "2026-07-06T21:33:05.353Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e9/45c3a76ad8d43ad9261f4c95436da61128d3ca545d72b9612c0ab5be0b1c/cffi-2.1.0-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:15faec4adfff450819f3aee0e2e02c812de6edb88203aa58807955db2003472a", size = 184795, upload-time = "2026-07-06T21:33:06.699Z" }, + { url = "https://files.pythonhosted.org/packages/84/4c/82f132cb4418ee6d953d982b19191e87e2a6372c8a4ce36e50b69d6ade4a/cffi-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:716ff8ec22f20b4d988b12884086bcef0fc99737043e503f7a3935a6be99b1ea", size = 184746, upload-time = "2026-07-06T21:33:08.071Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1c/4ed5a0e5bdca6cbc275556de3328dd1b76fd0c11cc13c88fe66d1d8715f2/cffi-2.1.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:63960549e4f8dc41e31accb97b975abaecfc44c03e396c093a6436763c2ea7db", size = 214747, upload-time = "2026-07-06T21:33:09.671Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a6/e879bb68cc23a2bc9ba8f4b7d8019f0c2694bad2ab6c4a3701d429439f58/cffi-2.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff067a8d8d880e7809e4ac88eb009bb848870115317b306666502ccad30b147f", size = 222392, upload-time = "2026-07-06T21:33:10.896Z" }, + { url = "https://files.pythonhosted.org/packages/88/f6/01890cfd63c08f8eb96a8319b0443690197d240a8bd6346048cf7bde9190/cffi-2.1.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3b926723c13eba9f81d2ef3820d63aeceec3b2d4639906047bf675cb8a7a500d", size = 210285, upload-time = "2026-07-06T21:33:12.251Z" }, + { url = "https://files.pythonhosted.org/packages/a6/cf/2b684132056f438567b61e19d690dd31cd0921ace051e0a458be6074369e/cffi-2.1.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:47ff3a8bfd8cb9da1af7524b965127095055654c177fcfc7578debcb015eecd0", size = 208801, upload-time = "2026-07-06T21:33:13.617Z" }, + { url = "https://files.pythonhosted.org/packages/6f/08/f2e7d62c460faae0926f2d6e423694aa409ced3bc1fe2927a0a6e5f05416/cffi-2.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:799416bae98336e400981ff6e532d67d5c709cfb30afb79865a1315f94b0e224", size = 221808, upload-time = "2026-07-06T21:33:15.466Z" }, + { url = "https://files.pythonhosted.org/packages/38/37/04f54b8e63a02f3d908332c9effbf8c366167c6f733ed8a3d4f79b7e2a1e/cffi-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:961be50688f7fba2fa65f63712d3b9b341a22311f5253460ce933f52f0de1c8c", size = 225241, upload-time = "2026-07-06T21:33:16.869Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d6/c72eecca433cd3e681c65ed313ab4835d9d4a379704d0f628a6a05f51c2e/cffi-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf5c6cf48238b0eb4c086978c492ad1cbc22373fc5b2d7353b3a598ce6db887a", size = 223588, upload-time = "2026-07-06T21:33:18.239Z" }, + { url = "https://files.pythonhosted.org/packages/c6/4b/e706f67279140f92939da3475ad610df18bfd52d50f14953a8e5fede71d5/cffi-2.1.0-cp313-cp313-win32.whl", hash = "sha256:db3eb7d46527159a878ec3460e9d40615bc25ba337d477db681aea6e4f05c5d2", size = 175248, upload-time = "2026-07-06T21:33:19.799Z" }, + { url = "https://files.pythonhosted.org/packages/5a/47/59eb7975cb0e4ef0afa764ea945b29a5bb4537a9f771cb7d6c8a5dd74c95/cffi-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:8e74a6135550c4748af665b1b1118b6aab33b1fc6a16f9aff630af107c3b4512", size = 185717, upload-time = "2026-07-06T21:33:21.47Z" }, + { url = "https://files.pythonhosted.org/packages/5a/af/34fee85c48f8d94efc8597bc09470c9dd274c145f1c12e0fbc6ab6d38d74/cffi-2.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:2282cd5e38aa8accd03e99d1256af8411c84cdbee6a89d841b563fdbd1f3e50f", size = 180114, upload-time = "2026-07-06T21:33:22.515Z" }, + { url = "https://files.pythonhosted.org/packages/d8/f0/81478e482afa03f6d18dc8f2afb5edc45b3080853b634b5ed91961be0998/cffi-2.1.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:d2117334c3af3bdcb9a88522b844a2bdb5efdc4f71c6c822df55486ae1c3347a", size = 194142, upload-time = "2026-07-06T21:33:23.657Z" }, + { url = "https://files.pythonhosted.org/packages/7d/95/8de304305cd9204974b0ca051b86d307cafca13aa575a0ef1b44d92c0d8c/cffi-2.1.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:702c436735fbe99d59ada02a1f65cfc0d31c0ee8b7290912f8fbc5cd1e4b16c3", size = 196819, upload-time = "2026-07-06T21:33:25.007Z" }, + { url = "https://files.pythonhosted.org/packages/20/71/7c8372d30e42415602ed9f268f7cfd66f1b855fed881ecd168bcb45dbc0b/cffi-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1ff3456eab0d889592d1936d6125bbfbc7ae4d3354a700f8bd80450a66445d4d", size = 184965, upload-time = "2026-07-06T21:33:26.605Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5c/584e626835f0375c928176c04137c96927165cb8733cdb3150ec04e5ee5e/cffi-2.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c4165821e131d6d4ca444347c2b694e2311bcfa3fe5a861cc72968f28867beac", size = 184952, upload-time = "2026-07-06T21:33:27.823Z" }, + { url = "https://files.pythonhosted.org/packages/2e/d2/065fcae1c73979fac8e054462478d0ff8a29c40cdc2ed7ea5676a061df53/cffi-2.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:276f20fffd7b396e12516ba8edf9509210ac248cbbc5acbc39cd512f9f59ebe6", size = 222353, upload-time = "2026-07-06T21:33:29.178Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a5/e8bbb1ce5b3ac2f53ad6a10bde44318a5a8d99d4f4a000d44a6e39aeb3e4/cffi-2.1.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:7d5980a3433d4b71a5e120f9dd551403d7824e31e2e67124fe2769c404c06913", size = 210051, upload-time = "2026-07-06T21:33:30.534Z" }, + { url = "https://files.pythonhosted.org/packages/28/ed/c127d3ac36e899c965e3361357c3befacd6578c03f40125183e41c3b219e/cffi-2.1.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:6ca4919c6e4f89aa99c42510b42cf54596892c00b3f9077f6bdd1505e24b9c8d", size = 208630, upload-time = "2026-07-06T21:33:31.753Z" }, + { url = "https://files.pythonhosted.org/packages/cc/d7/97d3136f81db489ec8d1d67748c110d6c994268fd7528014aa9f2b085e4e/cffi-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d53d10f7da99ae46f7373b9150393e9c5eab9b224909982b43832668de4779f5", size = 221593, upload-time = "2026-07-06T21:33:33.044Z" }, + { url = "https://files.pythonhosted.org/packages/d3/27/93195977168ee63aed233a1a0993a2178798654d1f4bddcdd321d6fd3b21/cffi-2.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c351efb95e832a853a29361675f33a7ce53de1a109cd73fd47af0712213aa4ce", size = 225146, upload-time = "2026-07-06T21:33:34.224Z" }, + { url = "https://files.pythonhosted.org/packages/b3/c1/6dbd291ee2ae5a50a034aa057207081f545923bbf15dad4511e985aafff5/cffi-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:dbf7c7a88e2bac086f06d14577332760bdeecc42bdec8ac4077f6260557d9326", size = 223240, upload-time = "2026-07-06T21:33:35.57Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6f/ade5ce9863a57992a6ea3d0d10d7e29b8749fc127204b3d493d667b2815f/cffi-2.1.0-cp314-cp314-win32.whl", hash = "sha256:1854b724d00f6654c742097d5387569021be12d3a0f770eae1df8f8acfcc6acd", size = 177723, upload-time = "2026-07-06T21:33:51.626Z" }, + { url = "https://files.pythonhosted.org/packages/41/de/92b9eeed4ae4a21d6fd9b2a2c8505cbed573299902ea73981cc13f7ff62c/cffi-2.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:1b96bfe2c4bd825681b7d311ad6d9b7280a091f43e8f63da5729638083cd3bfb", size = 187937, upload-time = "2026-07-06T21:33:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1a/cc6ae6c2913a03aab8898eee57963cf1035b8df5872ed8b9115fcc7e2be8/cffi-2.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:7d28dff1db6764108bc30788d85d61c876beff416d9a49cb9dd7c5a9f34f5804", size = 183001, upload-time = "2026-07-06T21:33:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/14/f0/134c00ce0779ec86dea2aa1aac69339c2741a8045072676763512363a2ea/cffi-2.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7ea6b3e2c4250ff1de21c630fe72d0f63eb95c2c32ffbf64a358cf4a8836d714", size = 188538, upload-time = "2026-07-06T21:33:36.792Z" }, + { url = "https://files.pythonhosted.org/packages/50/d8/3b86aba791cb610d24e8a3e1b2cd529e71fa15096b04e4d4e360049d4a4c/cffi-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6af371f3767faeffc6ac1ef57cdfd25844403e9d3f476c5537caee499de96376", size = 188230, upload-time = "2026-07-06T21:33:38.011Z" }, + { url = "https://files.pythonhosted.org/packages/14/d0/117dcd9209255ad8571fbc8c92ef32593a1d294dcec91ddc4e4db50606f2/cffi-2.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb4e8997a49aa2c08a3e43c9045d224448b8941d88e7ac163c7d383e560cbf98", size = 223899, upload-time = "2026-07-06T21:33:39.514Z" }, + { url = "https://files.pythonhosted.org/packages/b6/3d/f20f8b886b254e3ad10e15cd4186d3aed49f3e6a35ab37aab9f8f25f7c03/cffi-2.1.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:bf01d8c84cbea96b944c73b22182e6c7c432b3475632b8111dbfdc95ddad6e13", size = 211652, upload-time = "2026-07-06T21:33:40.851Z" }, + { url = "https://files.pythonhosted.org/packages/28/3b/fad54de07260b93ddeef4b96d0131d57ea900675df1d410ae1deee52d7a6/cffi-2.1.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:33eb1ad83ebe8f313e0df035c406227d55a79456704a863fad9842136af5ad7d", size = 210755, upload-time = "2026-07-06T21:33:42.183Z" }, + { url = "https://files.pythonhosted.org/packages/cc/82/3d5c705acb7abbba9bbd7d79b8e62e0f25b6120eb7ae6ac49f1b721722fe/cffi-2.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ac0f1a2d0cfa7eea3f2aaf006ab6e70e8feeb16b75d65b7e5939982ca2f11056", size = 223933, upload-time = "2026-07-06T21:33:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d0/47e338384ab6b1004241002fa616301020cea4fc95f283506565d252f276/cffi-2.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c16914df9fb7f500e440e6875fa23ff5e0b31db01fa9c06af98d59a91f0dc2e4", size = 226749, upload-time = "2026-07-06T21:33:45.046Z" }, + { url = "https://files.pythonhosted.org/packages/70/25/65bd5b58ea4bfdfc15cde02cb5365f89ef8ab8b2adfb8fe5c4bd4233382f/cffi-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5ecbd0499275d57506d397eebe1981cee87b47fcd9ef5c22cab7ed7644a39a94", size = 225703, upload-time = "2026-07-06T21:33:46.374Z" }, + { url = "https://files.pythonhosted.org/packages/dc/78/aa01ac599a8a4322533d45a1f9bc93b338276d2d59dabbe7c6d92a775c81/cffi-2.1.0-cp314-cp314t-win32.whl", hash = "sha256:7d034dcffa09e9a46c93fa3a3be402096cb5354ac6e41ab8e5cc9cd8b642ad76", size = 182857, upload-time = "2026-07-06T21:33:47.696Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/d00496b22de4d4228f32dde94ad996f350c8aad676d63bcca0743c8dea4d/cffi-2.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0582a58f3051372229ca8e7f5f589f9e5632678208d8636fea3676711fdf7fe5", size = 194065, upload-time = "2026-07-06T21:33:48.953Z" }, + { url = "https://files.pythonhosted.org/packages/d5/dd/0c7dbf815a579ff005008a2d815a55d6bb047c349eef536d9dc53d3f0a8d/cffi-2.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:510aeeeac94811b138077451da1fb18b308a5feab47dd2b603af55804155e1c8", size = 186404, upload-time = "2026-07-06T21:33:50.309Z" }, + { url = "https://files.pythonhosted.org/packages/55/c7/8c8c50cb11c6750051daf12164098a9a6f027ac4356967fd4d800a07f242/cffi-2.1.0-cp315-cp315-ios_13_0_arm64_iphoneos.whl", hash = "sha256:2e9dabb9abcb7ad15938c7196ad5c1718a4e6d33cc79b4c0209bdb64c4a54a5c", size = 194121, upload-time = "2026-07-06T21:33:56.109Z" }, + { url = "https://files.pythonhosted.org/packages/99/e2/67680bf19a6b60d2bb7ff83baefa2a4c3d2d7dc0f3277034b802e1fc504c/cffi-2.1.0-cp315-cp315-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:37f525a7e7e50c017fdebe58b787be310ad59357ae43a053943a6e1a6c526001", size = 196820, upload-time = "2026-07-06T21:33:57.288Z" }, + { url = "https://files.pythonhosted.org/packages/ed/da/4bbe583a3b3a5c8c60892124fe17f3fa3656523faf0d3484eae90f091853/cffi-2.1.0-cp315-cp315-macosx_10_15_x86_64.whl", hash = "sha256:95f2954c2c9473d892eca6e0409f3568b37ab62a8eedb122461f73cc273476e3", size = 184936, upload-time = "2026-07-06T21:33:58.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4b/1f4c36ab273980d7aa75bb126ea4f8971f24a96108acad3a0a084028c57b/cffi-2.1.0-cp315-cp315-macosx_11_0_arm64.whl", hash = "sha256:cdf2448aab5f661c9315308ec8b93f4e8a1a67a3c733f8631067a2b67d5913dc", size = 185045, upload-time = "2026-07-06T21:34:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c3/ad299dc38f3583f8d916b299f028af418a9ec98bc695fcbebeae7420691c/cffi-2.1.0-cp315-cp315-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:90bec57cf82089383bd06a605b3eb8daebf7e5a668520beaf6e327a83a947699", size = 222342, upload-time = "2026-07-06T21:34:01.814Z" }, + { url = "https://files.pythonhosted.org/packages/eb/d8/df4543cc087245044ed02ef3ad8e0a26619d0075ac7a77a12dc81177851b/cffi-2.1.0-cp315-cp315-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6274dcb2d15cef48daa73ed1be5a40d501d74dccd0cd6db364776d12cb6ba022", size = 210073, upload-time = "2026-07-06T21:34:03.255Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/fac738d73728c6cea2a88a2883dca54892496cbba88a1dc1f2909cb8a6f5/cffi-2.1.0-cp315-cp315-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:2b71d409cccee78310ab5dec549aed052aaea483346e282c7b02362596e01bb0", size = 208551, upload-time = "2026-07-06T21:34:04.433Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3f/0b04a700dd64f465c93020253a793a82c9b4dff9961f48facd0df945d9b8/cffi-2.1.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7d3538f9c0e50670f4deb93dbb696576e60590369cae2faf7de681e597a8a1f1", size = 221649, upload-time = "2026-07-06T21:34:06.157Z" }, + { url = "https://files.pythonhosted.org/packages/5d/7c/b7379a5704c79eda57ce075869ba70a0368d1c850f803b3c0d078d39dcaf/cffi-2.1.0-cp315-cp315-musllinux_1_2_aarch64.whl", hash = "sha256:8f9ec95b8a043d3dfbc74d9abc6f7baf524dd27a8dc160b0a32ff9cdab650c28", size = 225203, upload-time = "2026-07-06T21:34:07.489Z" }, + { url = "https://files.pythonhosted.org/packages/5a/02/d5e6c43ea85c41bda2a184a3418f195fe7cf602967a8d2b94e085b83deef/cffi-2.1.0-cp315-cp315-musllinux_1_2_x86_64.whl", hash = "sha256:af5e2915d41fe6c961694d7bfdc8562942638200f3ce2765dfb8b745cf997629", size = 223263, upload-time = "2026-07-06T21:34:08.712Z" }, + { url = "https://files.pythonhosted.org/packages/2c/d8/772b8259bf75749adffb1c546828978381fb516f60cf701f6c83daf60c85/cffi-2.1.0-cp315-cp315-win32.whl", hash = "sha256:0a42c688d19fca6e095a53c6a6e2295a5b050a8b289f109adab02a9e61a25de6", size = 177696, upload-time = "2026-07-06T21:34:26.355Z" }, + { url = "https://files.pythonhosted.org/packages/2f/dd/afa2191fc6d57fedd26e5844a2fe2fcc0bbfa00961bbaa5a41e4921e7cca/cffi-2.1.0-cp315-cp315-win_amd64.whl", hash = "sha256:bccbbb5ee76a61f9d99b5bf3846a51d7fca4b6a732fe46f89295610edaf41853", size = 187914, upload-time = "2026-07-06T21:34:27.58Z" }, + { url = "https://files.pythonhosted.org/packages/05/ef/6cd4f8c671517162379dc79cfae5aea9106bc38abb89628d5c16adf6a838/cffi-2.1.0-cp315-cp315-win_arm64.whl", hash = "sha256:8d35c139744adb3e727cd51b1a18324bbe44b8bd41bf8322bca4d41289f48eda", size = 183004, upload-time = "2026-07-06T21:34:28.905Z" }, + { url = "https://files.pythonhosted.org/packages/11/b6/12fc55092817a5faa26fb8c40c7f9d662e11a46ee248c137aafc42517d92/cffi-2.1.0-cp315-cp315t-macosx_10_15_x86_64.whl", hash = "sha256:f9912624a0c0b834b7520d7769b3644453aabc0a7e1c839da7359f050750e9bc", size = 188378, upload-time = "2026-07-06T21:34:09.926Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2e/cdac88979f295fde5daa69622c7d2111e56e7ceb94f211357fbe452339e4/cffi-2.1.0-cp315-cp315t-macosx_11_0_arm64.whl", hash = "sha256:df92f2aba50eb4d96718b68ef76f2e57a57b54f2fa62333496d16c6d585a85ca", size = 188319, upload-time = "2026-07-06T21:34:11.101Z" }, + { url = "https://files.pythonhosted.org/packages/e0/27/1d0b408497e41a74795af122d7b603c418c5fed0171450f899afd04e594f/cffi-2.1.0-cp315-cp315t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0520e1f4c35f44e209cbbb421b67eec42e6a157f59444dfb6058874ff3610e5d", size = 223904, upload-time = "2026-07-06T21:34:12.606Z" }, + { url = "https://files.pythonhosted.org/packages/8b/31/e115c985105dd7ffb32444505f18ceb874bb42d992af05d5dced7ecf1980/cffi-2.1.0-cp315-cp315t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:3681e031db29958a7502f5c0c9d6bbc4c36cb20f7b104086fa642d1799631ff8", size = 211554, upload-time = "2026-07-06T21:34:13.987Z" }, + { url = "https://files.pythonhosted.org/packages/5a/67/9e6e09409336d9e515c58367e7cfcf4f89df06ad25252675595a58eb59d5/cffi-2.1.0-cp315-cp315t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:762f99479dcb369f60ab9017ad4ab97a36a1dd7c1ee5a3b15db0f4b8659120cd", size = 210795, upload-time = "2026-07-06T21:34:15.972Z" }, + { url = "https://files.pythonhosted.org/packages/19/e5/d3cc82a4a0be7902af279c04181ad038449c096734464a5ae1de3e1401bd/cffi-2.1.0-cp315-cp315t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0611e7ebf90573a535ebdc33ae9da222d037853983e13359f580fab781ca017f", size = 223843, upload-time = "2026-07-06T21:34:17.509Z" }, + { url = "https://files.pythonhosted.org/packages/b9/65/b434abc97ce7cecc2c640fde160507c0ecc7e21544b483ba3325d2e2ea17/cffi-2.1.0-cp315-cp315t-musllinux_1_2_aarch64.whl", hash = "sha256:86cf8755a791f72c85dc287128cc62d4f24d392e3f1e15837245623f4a33cccc", size = 226773, upload-time = "2026-07-06T21:34:19.05Z" }, + { url = "https://files.pythonhosted.org/packages/b5/9f/d4dc66ca651eb1145a133314cda721abf13cfac3d28c4a0402263ae6ad75/cffi-2.1.0-cp315-cp315t-musllinux_1_2_x86_64.whl", hash = "sha256:ba00f661f8ba35d075c937174e27c2c421cec3942fd2e0ea3e66996757c0fdd9", size = 225719, upload-time = "2026-07-06T21:34:20.576Z" }, + { url = "https://files.pythonhosted.org/packages/68/5a/e536c528bc8057496c360c0978559a2dc45653f89dd6151078aa7d8fca1a/cffi-2.1.0-cp315-cp315t-win32.whl", hash = "sha256:cb96698e3c7413d906ce83f8ffd245ec1bd94707541f299d0ce4d6b0193e982b", size = 182760, upload-time = "2026-07-06T21:34:22.059Z" }, + { url = "https://files.pythonhosted.org/packages/d3/0b/0ffe8b82d3875bced5fa1e7986a7a46b748262a40ab7f60b475eb9fb1bb3/cffi-2.1.0-cp315-cp315t-win_amd64.whl", hash = "sha256:f146d154428a2523f9cc7936c02353c2459b8f6cf07d3cd1ee1c0a611109c5d5", size = 193769, upload-time = "2026-07-06T21:34:23.589Z" }, + { url = "https://files.pythonhosted.org/packages/a0/17/1073b53b68c9b5ca6914adf5f8bf55aacc2d3be102418c90700160ea8605/cffi-2.1.0-cp315-cp315t-win_arm64.whl", hash = "sha256:cbb7640ce37159548d2147b5b8c241f962143d4c71231431820783f4dc78f210", size = 186405, upload-time = "2026-07-06T21:34:24.857Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, +] + +[[package]] +name = "cssselect2" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tinycss2" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/20/92eaa6b0aec7189fa4b75c890640e076e9e793095721db69c5c81142c2e1/cssselect2-0.9.0.tar.gz", hash = "sha256:759aa22c216326356f65e62e791d66160a0f9c91d1424e8d8adc5e74dddfc6fb", size = 35595, upload-time = "2026-02-12T17:16:39.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/0e/8459ca4413e1a21a06c97d134bfaf18adfd27cea068813dc0faae06cbf00/cssselect2-0.9.0-py3-none-any.whl", hash = "sha256:6a99e5f91f9a016a304dd929b0966ca464bcfda15177b6fb4a118fc0fb5d9563", size = 15453, upload-time = "2026-02-12T17:16:38.317Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "fonttools" +version = "4.63.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/84/69/c97f2c18e0db87d2c7b15da1974dace76ae938f1cfa22e2727a648b7ed43/fonttools-4.63.0.tar.gz", hash = "sha256:caeb583deeb5168e694b65cda8b4ee62abedfa66cf88488734466f2366b9c4e0", size = 3597189, upload-time = "2026-05-14T12:04:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/8d/d8fec3dcde2963f8c908fb315e5ff2cd0ac34f82394bbbf73a2aa5145ce3/fonttools-4.63.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:cd7e9857e5e63738b9d9fd707bc1f59c8b09e5177726d23664db393c59bb08bd", size = 2876062, upload-time = "2026-05-14T12:03:32.554Z" }, + { url = "https://files.pythonhosted.org/packages/ef/71/d935dc54e4ff121bfdd11e08702db63a7e6f25af21d8a3d7b7212df53641/fonttools-4.63.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c2a2a42198b696a6f48fad91709afb55176e66a5e566131219dba372fb7f8c59", size = 2424594, upload-time = "2026-05-14T12:03:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/8e/40/e76320afa1df918e146155ef239b1719ee266092e96f5423bfd075affba1/fonttools-4.63.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e874792a8212b44583ea02189d9e693906b2f78b261f372f95d6c563210ac1d", size = 5024840, upload-time = "2026-05-14T12:03:36.745Z" }, + { url = "https://files.pythonhosted.org/packages/ce/36/0b805d8c485f872f65a509cbe3b58a5d0d17bee855333b54a150c79d3061/fonttools-4.63.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:22135da48a348785c5e2d5d2d9d6bec5ed44adacbaeb9db12d9493bf6c6bfa68", size = 4975801, upload-time = "2026-05-14T12:03:38.833Z" }, + { url = "https://files.pythonhosted.org/packages/c8/26/2cee03d0aa083ab022da5c07aff9ed3f689da1defb81ad6917c9627896da/fonttools-4.63.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ccf41f2efdf56994d22d73bef4ced1052161958169428d06ba9724ea9e9a64be", size = 4965009, upload-time = "2026-05-14T12:03:41.494Z" }, + { url = "https://files.pythonhosted.org/packages/7e/48/cc4b66d9058c0d0982c833fad10127c4b0e9324606aafa41382295ca4102/fonttools-4.63.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9ced0bd02ac751dd6319b0da88aaef24414e3b0dbc32bb4f24944821a3741a27", size = 5105892, upload-time = "2026-05-14T12:03:43.525Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1f/a98a30a814b9ddef3a2e706025f90b9e0bc94890e6cb15254bc86547d11a/fonttools-4.63.0-cp313-cp313-win32.whl", hash = "sha256:85be818f5506e8a7753153def2c9550178f0ecae6a47b5e0e8dbb23f7cc90380", size = 2291313, upload-time = "2026-05-14T12:03:45.594Z" }, + { url = "https://files.pythonhosted.org/packages/92/46/5177b01f3b4abfdd4409f31cca4ab279c9343a26efbe9ec78c97fc612e02/fonttools-4.63.0-cp313-cp313-win_amd64.whl", hash = "sha256:ba04cb5891d4c0c21b6da95eda8d7b090021508a294fff33464fc7d241e0856b", size = 2342299, upload-time = "2026-05-14T12:03:47.414Z" }, + { url = "https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745", size = 2875338, upload-time = "2026-05-14T12:03:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/cd/58/7dfa0c761cb3b2964e2a84c4dc986c926a87de0cb9fb60d5b28ded3f2914/fonttools-4.63.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:6e528da43bc3791085f8cb6141b1d13e459226790240340fcbb4625649238b03", size = 2422661, upload-time = "2026-05-14T12:03:52.154Z" }, + { url = "https://files.pythonhosted.org/packages/dd/87/64cfa18a7a1621d17b7f4502b2b0ed8a135a90c3db51ea590ee99043e76b/fonttools-4.63.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b2248c5decb223562f7902ff6325077a073f608ee8e33e88ad88db734eb9f49", size = 5010526, upload-time = "2026-05-14T12:03:54.647Z" }, + { url = "https://files.pythonhosted.org/packages/36/e1/a8933a72c45a87177fbde2696e0d0755c8c9062f8c077a961c6215fa27b1/fonttools-4.63.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:308f957cdeaf8abe4e5f2f124902ef405448af92c90f80e302a3b771c2e6116b", size = 4923946, upload-time = "2026-05-14T12:03:56.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/60/872e6e233b8c5e8b41413796ff18b7fe479661bd40147e071b450dfad7a1/fonttools-4.63.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bf00f21eb5fb721dbaf73d1e9da6d02a1af7768f2ebcf9798be98beab8ba90f6", size = 4962489, upload-time = "2026-05-14T12:03:59.443Z" }, + { url = "https://files.pythonhosted.org/packages/30/c4/83c24f2ec38b90cfda84bf4b1a1f49df80e84a1db4e7ac6e0d41bf23bc39/fonttools-4.63.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c1aaa4b9c75798400ac043ce04d74e7830376c85095a5a6ed7cba2f17a266bf4", size = 5071870, upload-time = "2026-05-14T12:04:02.122Z" }, + { url = "https://files.pythonhosted.org/packages/de/40/3ae22b60ff1d41ce0bd044b31238cdc72cef99f28b976f1e128ebd618c9b/fonttools-4.63.0-cp314-cp314-win32.whl", hash = "sha256:22693918177bd9ceabec4736d338045f357769416fc6b0b2508eefef75b08616", size = 2295026, upload-time = "2026-05-14T12:04:04.47Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d4/98078064ccc76b45cb0f6c002452011e93c4bd26f6850344f0951cc1fe89/fonttools-4.63.0-cp314-cp314-win_amd64.whl", hash = "sha256:7d782fac32985914c351556f68ac0855391572bcd87de50e05970d3cd4c96fc5", size = 2347454, upload-time = "2026-05-14T12:04:06.752Z" }, + { url = "https://files.pythonhosted.org/packages/49/4e/652d1580c5f4e39f7d103b0c793e4773129ad633dce4addd0cf4dfebde02/fonttools-4.63.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6db5140a60a5d731d21ec076745b40a310607731b0a565b50776393188649001", size = 2958152, upload-time = "2026-05-14T12:04:08.706Z" }, + { url = "https://files.pythonhosted.org/packages/0e/55/ad864c9a9b219f552eb46b32cd7906c466e5a578ba0c3abfcc0fe7413eb6/fonttools-4.63.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d76edbff9014094dbf03bd2d074709dfa6ec7aba13d838c937a2b33d2d6a86e", size = 2460809, upload-time = "2026-05-14T12:04:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/0aa8db70f18cf52e49b4ed5ecec68547f981160bf5ded3b5aed6faa0a6f9/fonttools-4.63.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eac00b9118c3c2f87d272e45341871c5b3066baa3c86897fa634a7c3fb59096", size = 5148649, upload-time = "2026-05-14T12:04:12.747Z" }, + { url = "https://files.pythonhosted.org/packages/7f/63/18e4369c25043096f1048e0c9915951adc4f842bd81c6b18155824d6fa99/fonttools-4.63.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:51394295f1a51de8b5f30bdb1e1b9a4231536c7064ef5c6e211eec19fa36036f", size = 4932147, upload-time = "2026-05-14T12:04:14.806Z" }, + { url = "https://files.pythonhosted.org/packages/a1/3f/67f3eac2ffd8a98446c5022f8ed3864eac878a5ff7af8df4c8286dba16cc/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9e12f105d2b6342c559c298afb674006bb2893afc7102dcf8a1b55b0486b4e40", size = 5027237, upload-time = "2026-05-14T12:04:17.675Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ba/4e6214cb38a7b04779e97bb7636de9a5c7f20af7018d03dee0b64c08510a/fonttools-4.63.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:796f27556dbe094c4824f75ca85267e4df776c79036c8441469a4df37038c196", size = 5053933, upload-time = "2026-05-14T12:04:20.818Z" }, + { url = "https://files.pythonhosted.org/packages/34/3b/214dcc19ee31d3d38fb5ad2755c11ef0514e5dc300bbaf41c0b69f393799/fonttools-4.63.0-cp314-cp314t-win32.whl", hash = "sha256:948428a275741f0b64b113c955425a953314f4b9ab9997f73a72c83e68e569c8", size = 2359326, upload-time = "2026-05-14T12:04:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/dd/1e/3ff1a9b523058c2eeb6a9d50f5574e2a738200d0d94107d5bc4105e8da3f/fonttools-4.63.0-cp314-cp314t-win_amd64.whl", hash = "sha256:6d4741eb179121cab9eea4cb2393d24492373a260d7945006358c08cfbf45419", size = 2425829, upload-time = "2026-05-14T12:04:26.829Z" }, + { url = "https://files.pythonhosted.org/packages/2c/47/c99d5268f354002ce80f8d029cd9d7d872969da1de8b93d32de4dc56d6f4/fonttools-4.63.0-py3-none-any.whl", hash = "sha256:445af2eab030a16b9171ea8bdda7ebf7d96bda2df88ee182a464252f6e05e20d", size = 1164562, upload-time = "2026-05-14T12:04:29.092Z" }, +] + +[package.optional-dependencies] +woff = [ + { name = "brotli", marker = "platform_python_implementation == 'CPython'" }, + { name = "brotlicffi", marker = "platform_python_implementation != 'CPython'" }, + { name = "zopfli" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/67/9c61eccb13f0bdca9307614e782fec49ffdde0f7a2314935d489fa93cd9c/kiwisolver-1.5.0.tar.gz", hash = "sha256:d4193f3d9dc3f6f79aaed0e5637f45d98850ebf01f7ca20e69457f3e8946b66a", size = 103482, upload-time = "2026-03-09T13:15:53.382Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/69/024d6711d5ba575aa65d5538042e99964104e97fa153a9f10bc369182bc2/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:fd40bb9cd0891c4c3cb1ddf83f8bbfa15731a248fdc8162669405451e2724b09", size = 123166, upload-time = "2026-03-09T13:13:48.032Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/adbb40df306f587054a348831220812b9b1d787aff714cfbc8556e38fccd/kiwisolver-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0e1403fd7c26d77c1f03e096dc58a5c726503fa0db0456678b8668f76f521e3", size = 66395, upload-time = "2026-03-09T13:13:49.365Z" }, + { url = "https://files.pythonhosted.org/packages/a8/3a/d0a972b34e1c63e2409413104216cd1caa02c5a37cb668d1687d466c1c45/kiwisolver-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dda366d548e89a90d88a86c692377d18d8bd64b39c1fb2b92cb31370e2896bbd", size = 64065, upload-time = "2026-03-09T13:13:50.562Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0a/7b98e1e119878a27ba8618ca1e18b14f992ff1eda40f47bccccf4de44121/kiwisolver-1.5.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:332b4f0145c30b5f5ad9374881133e5aa64320428a57c2c2b61e9d891a51c2f3", size = 1477903, upload-time = "2026-03-09T13:13:52.084Z" }, + { url = "https://files.pythonhosted.org/packages/18/d8/55638d89ffd27799d5cc3d8aa28e12f4ce7a64d67b285114dbedc8ea4136/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c50b89ffd3e1a911c69a1dd3de7173c0cd10b130f56222e57898683841e4f96", size = 1278751, upload-time = "2026-03-09T13:13:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/b8/97/b4c8d0d18421ecceba20ad8701358453b88e32414e6f6950b5a4bad54e65/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4db576bb8c3ef9365f8b40fe0f671644de6736ae2c27a2c62d7d8a1b4329f099", size = 1296793, upload-time = "2026-03-09T13:13:56.287Z" }, + { url = "https://files.pythonhosted.org/packages/c4/10/f862f94b6389d8957448ec9df59450b81bec4abb318805375c401a1e6892/kiwisolver-1.5.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0b85aad90cea8ac6797a53b5d5f2e967334fa4d1149f031c4537569972596cb8", size = 1346041, upload-time = "2026-03-09T13:13:58.269Z" }, + { url = "https://files.pythonhosted.org/packages/a3/6a/f1650af35821eaf09de398ec0bc2aefc8f211f0cda50204c9f1673741ba9/kiwisolver-1.5.0-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:d36ca54cb4c6c4686f7cbb7b817f66f5911c12ddb519450bbe86707155028f87", size = 987292, upload-time = "2026-03-09T13:13:59.871Z" }, + { url = "https://files.pythonhosted.org/packages/de/19/d7fb82984b9238115fe629c915007be608ebd23dc8629703d917dbfaffd4/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:38f4a703656f493b0ad185211ccfca7f0386120f022066b018eb5296d8613e23", size = 2227865, upload-time = "2026-03-09T13:14:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b9/46b7f386589fd222dac9e9de9c956ce5bcefe2ee73b4e79891381dda8654/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3ac2360e93cb41be81121755c6462cff3beaa9967188c866e5fce5cf13170859", size = 2324369, upload-time = "2026-03-09T13:14:02.972Z" }, + { url = "https://files.pythonhosted.org/packages/92/8b/95e237cf3d9c642960153c769ddcbe278f182c8affb20cecc1cc983e7cc5/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c95cab08d1965db3d84a121f1c7ce7479bdd4072c9b3dafd8fecce48a2e6b902", size = 1977989, upload-time = "2026-03-09T13:14:04.503Z" }, + { url = "https://files.pythonhosted.org/packages/1b/95/980c9df53501892784997820136c01f62bc1865e31b82b9560f980c0e649/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc20894c3d21194d8041a28b65622d5b86db786da6e3cfe73f0c762951a61167", size = 2491645, upload-time = "2026-03-09T13:14:06.106Z" }, + { url = "https://files.pythonhosted.org/packages/cb/32/900647fd0840abebe1561792c6b31e6a7c0e278fc3973d30572a965ca14c/kiwisolver-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7a32f72973f0f950c1920475d5c5ea3d971b81b6f0ec53b8d0a956cc965f22e0", size = 2295237, upload-time = "2026-03-09T13:14:08.891Z" }, + { url = "https://files.pythonhosted.org/packages/be/8a/be60e3bbcf513cc5a50f4a3e88e1dcecebb79c1ad607a7222877becaa101/kiwisolver-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bf3acf1419fa93064a4c2189ac0b58e3be7872bf6ee6177b0d4c63dc4cea276", size = 73573, upload-time = "2026-03-09T13:14:12.327Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d2/64be2e429eb4fca7f7e1c52a91b12663aeaf25de3895e5cca0f47ef2a8d0/kiwisolver-1.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:fa8eb9ecdb7efb0b226acec134e0d709e87a909fa4971a54c0c4f6e88635484c", size = 64998, upload-time = "2026-03-09T13:14:13.469Z" }, + { url = "https://files.pythonhosted.org/packages/b0/69/ce68dd0c85755ae2de490bf015b62f2cea5f6b14ff00a463f9d0774449ff/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:db485b3847d182b908b483b2ed133c66d88d49cacf98fd278fadafe11b4478d1", size = 125700, upload-time = "2026-03-09T13:14:14.636Z" }, + { url = "https://files.pythonhosted.org/packages/74/aa/937aac021cf9d4349990d47eb319309a51355ed1dbdc9c077cdc9224cb11/kiwisolver-1.5.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:be12f931839a3bdfe28b584db0e640a65a8bcbc24560ae3fdb025a449b3d754e", size = 67537, upload-time = "2026-03-09T13:14:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/ee/20/3a87fbece2c40ad0f6f0aefa93542559159c5f99831d596050e8afae7a9f/kiwisolver-1.5.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:16b85d37c2cbb3253226d26e64663f755d88a03439a9c47df6246b35defbdfb7", size = 65514, upload-time = "2026-03-09T13:14:18.035Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7f/f943879cda9007c45e1f7dba216d705c3a18d6b35830e488b6c6a4e7cdf0/kiwisolver-1.5.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4432b835675f0ea7414aab3d37d119f7226d24869b7a829caeab49ebda407b0c", size = 1584848, upload-time = "2026-03-09T13:14:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/37/f8/4d4f85cc1870c127c88d950913370dd76138482161cd07eabbc450deff01/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b0feb50971481a2cc44d94e88bdb02cdd497618252ae226b8eb1201b957e368", size = 1391542, upload-time = "2026-03-09T13:14:21.54Z" }, + { url = "https://files.pythonhosted.org/packages/04/0b/65dd2916c84d252b244bd405303220f729e7c17c9d7d33dca6feeff9ffc4/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56fa888f10d0f367155e76ce849fa1166fc9730d13bd2d65a2aa13b6f5424489", size = 1404447, upload-time = "2026-03-09T13:14:23.205Z" }, + { url = "https://files.pythonhosted.org/packages/39/5c/2606a373247babce9b1d056c03a04b65f3cf5290a8eac5d7bdead0a17e21/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:940dda65d5e764406b9fb92761cbf462e4e63f712ab60ed98f70552e496f3bf1", size = 1455918, upload-time = "2026-03-09T13:14:24.74Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d1/c6078b5756670658e9192a2ef11e939c92918833d2745f85cd14a6004bdf/kiwisolver-1.5.0-cp313-cp313t-manylinux_2_39_riscv64.whl", hash = "sha256:89fc958c702ee9a745e4700378f5d23fddbc46ff89e8fdbf5395c24d5c1452a3", size = 1072856, upload-time = "2026-03-09T13:14:26.597Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c8/7def6ddf16eb2b3741d8b172bdaa9af882b03c78e9b0772975408801fa63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9027d773c4ff81487181a925945743413f6069634d0b122d0b37684ccf4f1e18", size = 2333580, upload-time = "2026-03-09T13:14:28.237Z" }, + { url = "https://files.pythonhosted.org/packages/9e/87/2ac1fce0eb1e616fcd3c35caa23e665e9b1948bb984f4764790924594128/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5b233ea3e165e43e35dba1d2b8ecc21cf070b45b65ae17dd2747d2713d942021", size = 2423018, upload-time = "2026-03-09T13:14:30.018Z" }, + { url = "https://files.pythonhosted.org/packages/67/13/c6700ccc6cc218716bfcda4935e4b2997039869b4ad8a94f364c5a3b8e63/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ce9bf03dad3b46408c08649c6fbd6ca28a9fce0eb32fdfffa6775a13103b5310", size = 2062804, upload-time = "2026-03-09T13:14:32.888Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/877056304626943ff0f1f44c08f584300c199b887cb3176cd7e34f1515f1/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:fc4d3f1fb9ca0ae9f97b095963bc6326f1dbfd3779d6679a1e016b9baaa153d3", size = 2597482, upload-time = "2026-03-09T13:14:34.971Z" }, + { url = "https://files.pythonhosted.org/packages/75/19/c60626c47bf0f8ac5dcf72c6c98e266d714f2fbbfd50cf6dab5ede3aaa50/kiwisolver-1.5.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f443b4825c50a51ee68585522ab4a1d1257fac65896f282b4c6763337ac9f5d2", size = 2394328, upload-time = "2026-03-09T13:14:36.816Z" }, + { url = "https://files.pythonhosted.org/packages/47/84/6a6d5e5bb8273756c27b7d810d47f7ef2f1f9b9fd23c9ee9a3f8c75c9cef/kiwisolver-1.5.0-cp313-cp313t-win_arm64.whl", hash = "sha256:893ff3a711d1b515ba9da14ee090519bad4610ed1962fbe298a434e8c5f8db53", size = 68410, upload-time = "2026-03-09T13:14:38.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/060f45052f2a01ad5762c8fdecd6d7a752b43400dc29ff75cd47225a40fd/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8df31fe574b8b3993cc61764f40941111b25c2d9fea13d3ce24a49907cd2d615", size = 123231, upload-time = "2026-03-09T13:14:41.323Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a7/78da680eadd06ff35edef6ef68a1ad273bad3e2a0936c9a885103230aece/kiwisolver-1.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:1d49a49ac4cbfb7c1375301cd1ec90169dfeae55ff84710d782260ce77a75a02", size = 66489, upload-time = "2026-03-09T13:14:42.534Z" }, + { url = "https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e", size = 64063, upload-time = "2026-03-09T13:14:44.759Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f9/b06c934a6aa8bc91f566bd2a214fd04c30506c2d9e2b6b171953216a65b6/kiwisolver-1.5.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:80aa065ffd378ff784822a6d7c3212f2d5f5e9c3589614b5c228b311fd3063ac", size = 1475913, upload-time = "2026-03-09T13:14:46.247Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f0/f768ae564a710135630672981231320bc403cf9152b5596ec5289de0f106/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e7f886f47ab881692f278ae901039a234e4025a68e6dfab514263a0b1c4ae05", size = 1282782, upload-time = "2026-03-09T13:14:48.458Z" }, + { url = "https://files.pythonhosted.org/packages/e2/9f/1de7aad00697325f05238a5f2eafbd487fb637cc27a558b5367a5f37fb7f/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5060731cc3ed12ca3a8b57acd4aeca5bbc2f49216dd0bec1650a1acd89486bcd", size = 1300815, upload-time = "2026-03-09T13:14:50.721Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c2/297f25141d2e468e0ce7f7a7b92e0cf8918143a0cbd3422c1ad627e85a06/kiwisolver-1.5.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a4aa69609f40fce3cbc3f87b2061f042eee32f94b8f11db707b66a26461591a", size = 1347925, upload-time = "2026-03-09T13:14:52.304Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d3/f4c73a02eb41520c47610207b21afa8cdd18fdbf64ffd94674ae21c4812d/kiwisolver-1.5.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:d168fda2dbff7b9b5f38e693182d792a938c31db4dac3a80a4888de603c99554", size = 991322, upload-time = "2026-03-09T13:14:54.637Z" }, + { url = "https://files.pythonhosted.org/packages/7b/46/d3f2efef7732fcda98d22bf4ad5d3d71d545167a852ca710a494f4c15343/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:413b820229730d358efd838ecbab79902fe97094565fdc80ddb6b0a18c18a581", size = 2232857, upload-time = "2026-03-09T13:14:56.471Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ec/2d9756bf2b6d26ae4349b8d3662fb3993f16d80c1f971c179ce862b9dbae/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5124d1ea754509b09e53738ec185584cc609aae4a3b510aaf4ed6aa047ef9303", size = 2329376, upload-time = "2026-03-09T13:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/8f/9f/876a0a0f2260f1bde92e002b3019a5fabc35e0939c7d945e0fa66185eb20/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e4415a8db000bf49a6dd1c478bf70062eaacff0f462b92b0ba68791a905861f9", size = 1982549, upload-time = "2026-03-09T13:14:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/ba3624dfac23a64d54ac4179832860cb537c1b0af06024936e82ca4154a0/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d618fd27420381a4f6044faa71f46d8bfd911bd077c555f7138ed88729bfbe79", size = 2494680, upload-time = "2026-03-09T13:15:01.364Z" }, + { url = "https://files.pythonhosted.org/packages/39/b7/97716b190ab98911b20d10bf92eca469121ec483b8ce0edd314f51bc85af/kiwisolver-1.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5092eb5b1172947f57d6ea7d89b2f29650414e4293c47707eb499ec07a0ac796", size = 2297905, upload-time = "2026-03-09T13:15:03.925Z" }, + { url = "https://files.pythonhosted.org/packages/a3/36/4e551e8aa55c9188bca9abb5096805edbf7431072b76e2298e34fd3a3008/kiwisolver-1.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:d76e2d8c75051d58177e762164d2e9ab92886534e3a12e795f103524f221dd8e", size = 75086, upload-time = "2026-03-09T13:15:07.775Z" }, + { url = "https://files.pythonhosted.org/packages/70/15/9b90f7df0e31a003c71649cf66ef61c3c1b862f48c81007fa2383c8bd8d7/kiwisolver-1.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:fa6248cd194edff41d7ea9425ced8ca3a6f838bfb295f6f1d6e6bb694a8518df", size = 66577, upload-time = "2026-03-09T13:15:09.139Z" }, + { url = "https://files.pythonhosted.org/packages/17/01/7dc8c5443ff42b38e72731643ed7cf1ed9bf01691ae5cdca98501999ed83/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:d1ffeb80b5676463d7a7d56acbe8e37a20ce725570e09549fe738e02ca6b7e1e", size = 125794, upload-time = "2026-03-09T13:15:10.525Z" }, + { url = "https://files.pythonhosted.org/packages/46/8a/b4ebe46ebaac6a303417fab10c2e165c557ddaff558f9699d302b256bc53/kiwisolver-1.5.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:bc4d8e252f532ab46a1de9349e2d27b91fce46736a9eedaa37beaca66f574ed4", size = 67646, upload-time = "2026-03-09T13:15:12.016Z" }, + { url = "https://files.pythonhosted.org/packages/60/35/10a844afc5f19d6f567359bf4789e26661755a2f36200d5d1ed8ad0126e5/kiwisolver-1.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6783e069732715ad0c3ce96dbf21dbc2235ab0593f2baf6338101f70371f4028", size = 65511, upload-time = "2026-03-09T13:15:13.311Z" }, + { url = "https://files.pythonhosted.org/packages/f8/8a/685b297052dd041dcebce8e8787b58923b6e78acc6115a0dc9189011c44b/kiwisolver-1.5.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e7c4c09a490dc4d4a7f8cbee56c606a320f9dc28cf92a7157a39d1ce7676a657", size = 1584858, upload-time = "2026-03-09T13:15:15.103Z" }, + { url = "https://files.pythonhosted.org/packages/9e/80/04865e3d4638ac5bddec28908916df4a3075b8c6cc101786a96803188b96/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2a075bd7bd19c70cf67c8badfa36cf7c5d8de3c9ddb8420c51e10d9c50e94920", size = 1392539, upload-time = "2026-03-09T13:15:16.661Z" }, + { url = "https://files.pythonhosted.org/packages/ba/01/77a19cacc0893fa13fafa46d1bba06fb4dc2360b3292baf4b56d8e067b24/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bdd3e53429ff02aa319ba59dfe4ceeec345bf46cf180ec2cf6fd5b942e7975e9", size = 1405310, upload-time = "2026-03-09T13:15:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/53/39/bcaf5d0cca50e604cfa9b4e3ae1d64b50ca1ae5b754122396084599ef903/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cdcb35dc9d807259c981a85531048ede628eabcffb3239adf3d17463518992d", size = 1456244, upload-time = "2026-03-09T13:15:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7a/72c187abc6975f6978c3e39b7cf67aeb8b3c0a8f9790aa7fd412855e9e1f/kiwisolver-1.5.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:70d593af6a6ca332d1df73d519fddb5148edb15cd90d5f0155e3746a6d4fcc65", size = 1073154, upload-time = "2026-03-09T13:15:22.039Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ca/cf5b25783ebbd59143b4371ed0c8428a278abe68d6d0104b01865b1bbd0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:377815a8616074cabbf3f53354e1d040c35815a134e01d7614b7692e4bf8acfa", size = 2334377, upload-time = "2026-03-09T13:15:23.741Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e5/b1f492adc516796e88751282276745340e2a72dcd0d36cf7173e0daf3210/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0255a027391d52944eae1dbb5d4cc5903f57092f3674e8e544cdd2622826b3f0", size = 2425288, upload-time = "2026-03-09T13:15:25.789Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/9b21fbe91a61b8f409d74a26498706e97a48008bfcd1864373d32a6ba31c/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:012b1eb16e28718fa782b5e61dc6f2da1f0792ca73bd05d54de6cb9561665fc9", size = 2063158, upload-time = "2026-03-09T13:15:27.63Z" }, + { url = "https://files.pythonhosted.org/packages/b1/02/83f47986138310f95ea95531f851b2a62227c11cbc3e690ae1374fe49f0f/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0e3aafb33aed7479377e5e9a82e9d4bf87063741fc99fc7ae48b0f16e32bdd6f", size = 2597260, upload-time = "2026-03-09T13:15:29.421Z" }, + { url = "https://files.pythonhosted.org/packages/07/18/43a5f24608d8c313dd189cf838c8e68d75b115567c6279de7796197cfb6a/kiwisolver-1.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e7a116ae737f0000343218c4edf5bd45893bfeaff0993c0b215d7124c9f77646", size = 2394403, upload-time = "2026-03-09T13:15:31.517Z" }, + { url = "https://files.pythonhosted.org/packages/3b/b5/98222136d839b8afabcaa943b09bd05888c2d36355b7e448550211d1fca4/kiwisolver-1.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:1dd9b0b119a350976a6d781e7278ec7aca0b201e1a9e2d23d9804afecb6ca681", size = 79687, upload-time = "2026-03-09T13:15:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/99/a2/ca7dc962848040befed12732dff6acae7fb3c4f6fc4272b3f6c9a30b8713/kiwisolver-1.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:58f812017cd2985c21fbffb4864d59174d4903dd66fa23815e74bbc7a0e2dd57", size = 70032, upload-time = "2026-03-09T13:15:34.411Z" }, +] + +[[package]] +name = "librt" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/2f/3908645ddddab7120b46295e541ead308109fa48dbec7d67d7a778870d60/librt-0.13.0.tar.gz", hash = "sha256:1d2a610c14ac0d0750ee0a3ab8548e83155258387891caaca04def4bf7289781", size = 211402, upload-time = "2026-07-08T12:26:29.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/3b/18e7b63255297a2bdc9c25c8d6d4ca8eca9f63aceb1252c0f7427ac7099e/librt-0.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a468951af16155824e88bdd8326ebe5bdb371f3ec0ac04642994b98201d914f3", size = 151027, upload-time = "2026-07-08T12:25:19.638Z" }, + { url = "https://files.pythonhosted.org/packages/4d/68/e2248452c00d1a03b45fee1752cdc8f790a476efd2402b75181da88a9e61/librt-0.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ae01d8512cc17079e53425635327dbf3f7ff57a42c00dec348bf79791c56444c", size = 155152, upload-time = "2026-07-08T12:25:20.851Z" }, + { url = "https://files.pythonhosted.org/packages/0e/16/52b1c99bf19057a062aac39c900cbb81499f6f75d6c537c14463d247ba78/librt-0.13.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32c26893cd085c1efe83219e78d866da23fb20a066101b8f68210004361d224c", size = 502499, upload-time = "2026-07-08T12:25:22.055Z" }, + { url = "https://files.pythonhosted.org/packages/9f/54/b811151805c795f55e0dedee6ec687b75f9982a8105d240ea3910737a77b/librt-0.13.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:5929da1981a46bcf4b28b1b9499905f0ff58e2419da402a048234e9783acbc4b", size = 496108, upload-time = "2026-07-08T12:25:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/8f/f8/094d6b2bd93f3fdaa54db54cc788c4a365333bddad65ab02e04da0b1d004/librt-0.13.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:94b85d664d777bab6c0d709416cb42938251fda9e221b79e3a2215d85df5f4f9", size = 531576, upload-time = "2026-07-08T12:25:24.648Z" }, + { url = "https://files.pythonhosted.org/packages/2e/40/541733d5755824f968f7ec39d78ffbd75d145964157ae5e69a09ec6d7326/librt-0.13.0-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:531b2df3e9fe96b1fcf73a6d165921e4656be5f58d631d384ebce344298368db", size = 524390, upload-time = "2026-07-08T12:25:25.898Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b5/255673cfdbf5ba663339d36cd863c897289ab4337577e19f9405ce059f36/librt-0.13.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:109b84a9edf69ad89dc1f66358659e14a031baca95e3e5b0060bd903ede8efd6", size = 543053, upload-time = "2026-07-08T12:25:27.436Z" }, + { url = "https://files.pythonhosted.org/packages/9e/11/ab5005e9c9850710f21e354201bf090646349d3fabf5f951eaf70235729e/librt-0.13.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1304368a3e7ffc3e9db986796cc5326fdb5943a3567ecc137cff318e4240c0e7", size = 546387, upload-time = "2026-07-08T12:25:28.65Z" }, + { url = "https://files.pythonhosted.org/packages/a2/04/a5d7ce1d1df1afd15ca283dcdf7530ac073e12d69ae8c40879dda96f7868/librt-0.13.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:e4f9b472e7d308d94b62c801982065661158c6ed02790d6c7ddb4337cea0f9c1", size = 535970, upload-time = "2026-07-08T12:25:30.171Z" }, + { url = "https://files.pythonhosted.org/packages/5a/76/927e267a6daa290174ac281b23c9804c8829b042ade9c6f24a065f540958/librt-0.13.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9f836c37478f167a81200d8c8b2c920a22224564bed2c23d7aeec760965c367a", size = 573582, upload-time = "2026-07-08T12:25:31.507Z" }, + { url = "https://files.pythonhosted.org/packages/10/24/b6c5213efe39c19f9e13605644d0cf063b4ddaa33ac2e45b088e23a70e2e/librt-0.13.0-cp313-cp313-pyemscripten_2025_0_wasm32.whl", hash = "sha256:4000d961ff9598ac6ea603c6c836a5ed49bc205ade5fc378b998dfe1e2c36628", size = 82189, upload-time = "2026-07-08T12:25:32.675Z" }, + { url = "https://files.pythonhosted.org/packages/4c/00/d29736be177a906ac0b84a5b04b4fbfa22c776dc2f366de4172b0f968c08/librt-0.13.0-cp313-cp313-win32.whl", hash = "sha256:79e44cff71750d299d61a678e49995b0d5935a9cda238c2574daeca3ba536927", size = 106193, upload-time = "2026-07-08T12:25:33.692Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ac/aff6fb45393cb8912f39dfb156ef6b2d1cadb207ff465fc8f66141054be8/librt-0.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:54dab44a847d5ad1acd05c8a83fe518ae685516ecf4d3f7cc6e3df2a66767650", size = 126962, upload-time = "2026-07-08T12:25:34.769Z" }, + { url = "https://files.pythonhosted.org/packages/d9/3a/d68cb2b334d53fd30fac81d3a489ce4ba0d9506f4df43fcf676b68352b19/librt-0.13.0-cp313-cp313-win_arm64.whl", hash = "sha256:d4cb6fbfdf874340ab5e51450753c0f817b6958a3621125ee695bbc3de866566", size = 112127, upload-time = "2026-07-08T12:25:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/7b/66/f49ae0d592bd45b6941e9a8bafcb6a87cddcd501ee7874707e767f01b585/librt-0.13.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:25218d94b1d2cbc0ba1d8a3f9dc9af578d9646e5ed16443a70cde1dfdcce6d71", size = 149818, upload-time = "2026-07-08T12:25:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/3d/50/51c76d74014d04fb95b6506d286808984b78a2f7a41039094e6b2194ac48/librt-0.13.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:f26629539d4893c2957a16c41bb058e1e135c1f150f6a2e25ed047f64cf3f5c6", size = 154071, upload-time = "2026-07-08T12:25:39.399Z" }, + { url = "https://files.pythonhosted.org/packages/b8/fe/f19b0f5f82d5a1f2da736586bc840abd00ce07d6388136ae80b7333883fc/librt-0.13.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4517d47b2b8af26975a406fba7d314de9696d864252e0257c6ea90238cfe27f", size = 494168, upload-time = "2026-07-08T12:25:40.641Z" }, + { url = "https://files.pythonhosted.org/packages/94/bc/b8550c75775127fd31a5f20e8775997f7b527ad661fc8ddccd7497c064f7/librt-0.13.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:f19e181de5b3a1148bb3420b8c4b0b0ea0fce6950099724ad151d6cea5acc180", size = 491054, upload-time = "2026-07-08T12:25:41.905Z" }, + { url = "https://files.pythonhosted.org/packages/30/14/4d0204867623df3f33f86efd3d3692ba5e01321443f4d6eab35a22697618/librt-0.13.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22034924f5b42d5a56371cf271771bfeaabf235a7a8b6264bef2d20013f786c6", size = 523006, upload-time = "2026-07-08T12:25:43.327Z" }, + { url = "https://files.pythonhosted.org/packages/19/0a/c45fc9a260934696bace1ac5df1e148ac92bd71767aee3bf7cd7a4534f4c/librt-0.13.0-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c7897db4e95e22468bdda33d8e012ceacd0182abf001e6389d763f0def6286b9", size = 515058, upload-time = "2026-07-08T12:25:44.541Z" }, + { url = "https://files.pythonhosted.org/packages/13/0a/50c5ce45b326854ef8fa6ae4c36cf5142e5c55315eaf9e51d0ae73ac4da3/librt-0.13.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1ce61b3746545029d4f5c17d6bd74b676254ad98433086c846ffb5e8fa73f007", size = 534025, upload-time = "2026-07-08T12:25:45.825Z" }, + { url = "https://files.pythonhosted.org/packages/89/2d/08c413c8f93fc13b8103624fce38e5caa86cd08cbbc8465870ab287af54b/librt-0.13.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:46c330e82565962c761dbce7941be2cff7db674ee807455a8d0cadc5f9b759b0", size = 540557, upload-time = "2026-07-08T12:25:47.059Z" }, + { url = "https://files.pythonhosted.org/packages/b3/c1/93af71fb4a364952210051811dd4e40174e79656b050c89cacac18af3330/librt-0.13.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:375f5af8f99cbaa99dd293af986e3d57caabc9ba81a5d3f021603764854197a1", size = 523201, upload-time = "2026-07-08T12:25:48.392Z" }, + { url = "https://files.pythonhosted.org/packages/c1/6e/9766f07b676a4889d9f8bc2864e9ba5fff165653143ef4dda7df6aa34d16/librt-0.13.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9320d34c3376ae204b2cd176e8d4883a013934e0aef822f1aed9c536490c275d", size = 565740, upload-time = "2026-07-08T12:25:49.678Z" }, + { url = "https://files.pythonhosted.org/packages/a2/1e/664e3472ce2b6e10e9b83f29d4a36eb982ff6b5a169ae7567bba3a4c4ff5/librt-0.13.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl", hash = "sha256:9af313c66157a69dc69ea0059a66961692250e0dc95af9c385a48ffb770a0d16", size = 81611, upload-time = "2026-07-08T12:25:50.857Z" }, + { url = "https://files.pythonhosted.org/packages/2f/d4/8582a4d65e2234673685e07309d02c230b28a85724eb0acbf13f019b7f6e/librt-0.13.0-cp314-cp314-win32.whl", hash = "sha256:f2a7253458e34f33543551394ae4fe104b497ec2a65ac266074de64c1df82e37", size = 100106, upload-time = "2026-07-08T12:25:52.03Z" }, + { url = "https://files.pythonhosted.org/packages/63/ce/0cb99efe6086b46cd985dc26672166fae312a239690e75871f7fafbd3fc5/librt-0.13.0-cp314-cp314-win_amd64.whl", hash = "sha256:a3dfe4edf10e8ed7e55b026a8bfc2c2a8704218b659cd4bffdf604fab966dc39", size = 121209, upload-time = "2026-07-08T12:25:53.166Z" }, + { url = "https://files.pythonhosted.org/packages/26/85/4f3ccb083a3c9b0d42e223acdb3c3f507953324a59cdcab4826e8e2e3b89/librt-0.13.0-cp314-cp314-win_arm64.whl", hash = "sha256:68a5faee4bba381cb93b5961f684a514cf0053cb92308ff9c792c2fea0b174c6", size = 106404, upload-time = "2026-07-08T12:25:54.253Z" }, + { url = "https://files.pythonhosted.org/packages/b2/77/333191499538c8e8189de7a4cba8e6f49ee949fd6d6e6324b21fd1522466/librt-0.13.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a38fb81d8376dfa2f8963b265fec07637802b0d01e2a127c19c66cb070fb24f5", size = 159231, upload-time = "2026-07-08T12:25:55.432Z" }, + { url = "https://files.pythonhosted.org/packages/7a/9e/2aa83758f22c278b837a1d8025898434ce2b8bff36678d5330ecaef56dff/librt-0.13.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d4c8d9bd5abce34b2e75edb3bf37ab0f34e49b1f915a40ae8468eb7c85bc5b46", size = 161300, upload-time = "2026-07-08T12:25:56.585Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c0/86791e936553ca763d6b3c2fb4d31d596cd00e14fa631c283a40ba01559a/librt-0.13.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:387e2f1d27e89bffe0d3f520f0da0662c973fd607ca16c1808f8a5085419485e", size = 582056, upload-time = "2026-07-08T12:25:58.144Z" }, + { url = "https://files.pythonhosted.org/packages/a8/d3/a9ec15984a185e000c4d2a16ba28bd623124ad4c38a10974c7ff78e3a893/librt-0.13.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.manylinux_2_28_i686.whl", hash = "sha256:4f6db193d2e5e0ed60359b9a5a682cd67205d0d3b1e459a867dd4b5c4e7eaa7a", size = 562758, upload-time = "2026-07-08T12:25:59.544Z" }, + { url = "https://files.pythonhosted.org/packages/3c/af/dbe36b78b19c06a55097f99305e4ea9458e2273e6ae16a3cbecaad7ee978/librt-0.13.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0d38604854e8d22faadf683ec6c02bb0f886e2ba56ef981a1c36ee275f21ea22", size = 602095, upload-time = "2026-07-08T12:26:00.991Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a8/2966891b4dd2830f5203fbee92ac2c4947653a2390ba73dfa44244fad025/librt-0.13.0-cp314-cp314t-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:371f7ce73026815dafd51c50ce38416e91428b28c4b2ec97cd39271164b0045c", size = 593452, upload-time = "2026-07-08T12:26:02.352Z" }, + { url = "https://files.pythonhosted.org/packages/61/f5/4df8bfc8405ecf8c0d525b4d69636f694bdd8620b313ec8b76e54a5926cc/librt-0.13.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3aaedf52171bee90860704c560bc798fe83b76247df47568e0197e9b13c735a0", size = 623729, upload-time = "2026-07-08T12:26:04.294Z" }, + { url = "https://files.pythonhosted.org/packages/d6/13/9ac202dffc8db06f75d06c08c2f9f6ff054be67d21272dcc078fa1cc0c57/librt-0.13.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:96bad8725a4f196a798366c25ce075d1f7543a4ec045ffc13e6a7ec095cdab04", size = 617077, upload-time = "2026-07-08T12:26:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/6e/f0/ebe38610716aee5cb28efd95089bb90192096179802779381e1c5dcf239c/librt-0.13.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:6bf6a559ffe4a93bbea6cf31ddf01a7fd9ba342ef51f27beb178e318b74acd61", size = 599561, upload-time = "2026-07-08T12:26:07.21Z" }, + { url = "https://files.pythonhosted.org/packages/4f/5c/c2e72e236fff7abc716d5b1753b8b8cd3ea85ac46fe17d2e7c51d4e1c723/librt-0.13.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:301067672387902c55f94b51d5022304b36c966ea9fe1f21caab99a9bef487c9", size = 645511, upload-time = "2026-07-08T12:26:08.562Z" }, + { url = "https://files.pythonhosted.org/packages/0c/99/6203ce619dee940d6bfbe099ec3fe4be00a68e9d60f70abf906cf124fe66/librt-0.13.0-cp314-cp314t-win32.whl", hash = "sha256:5fdcf34f86de8fb66d7dc7589f96ba91c4aa46671200d400e6fd6f109a483f18", size = 104357, upload-time = "2026-07-08T12:26:09.828Z" }, + { url = "https://files.pythonhosted.org/packages/52/dd/843b6314087c41657c7036d7914d8f294bdf9b580aa8513ea0588c8e9a3d/librt-0.13.0-cp314-cp314t-win_amd64.whl", hash = "sha256:260c33e92263fa629b4f6d3c51967a1c2158fe6c33237aaa3ebeac586b085259", size = 126998, upload-time = "2026-07-08T12:26:10.975Z" }, + { url = "https://files.pythonhosted.org/packages/5f/5d/3dcec2884ba1b0806d1408612555c38dd5d68e90156b59f75f6e36435c3a/librt-0.13.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2f281549a4c52ac7bb97997f14353f8bd0e53a34ca0dad1c905cfd0b4a58ae99", size = 110771, upload-time = "2026-07-08T12:26:12.303Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/24/080c99d223d158d3a8902769269ab6da5b50f7a0e6e072513907e02b7a6c/matplotlib-3.11.0.tar.gz", hash = "sha256:68c0c7be01b30dcca3638934f7f591df73401235cbdbf0d1ab1c71e7db7f8b57", size = 33251176, upload-time = "2026-06-12T02:29:15.508Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/41/aa47f156b061d14c98b906f76c428507397708ec63ff94f410ae1752b426/matplotlib-3.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce3b839b34ae1f430b4616893a2945a2999debaa7e94e7e29a2a8bbf286f7b5", size = 9450532, upload-time = "2026-06-12T02:28:06.769Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4f/5a9eb0375e81413953febf8af7b012a6b6357f53438a15c4f5ad86c6bbb5/matplotlib-3.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:373db8f91214e8ccaf35ac833cc1dd59dd961e148bbd55dd027141591dde1313", size = 9279760, upload-time = "2026-06-12T02:28:09.152Z" }, + { url = "https://files.pythonhosted.org/packages/a4/c0/1117d53077e3ac3152503a84e9cf7a5c239576805ee71276e80c2aaa7471/matplotlib-3.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:be152b7570324dc8d01574cc9474dd2d803237acf528bcbb5b211fa347461a09", size = 10031623, upload-time = "2026-06-12T02:28:11.26Z" }, + { url = "https://files.pythonhosted.org/packages/92/7e/e937138daffad65b71bf831a377809dcbc830fb4f31a31e067dc1faa2575/matplotlib-3.11.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:126f256df600652d7e4b394cf3164ff75210a00038f287c95a012a6f58d0e83f", size = 10839372, upload-time = "2026-06-12T02:28:14.102Z" }, + { url = "https://files.pythonhosted.org/packages/1d/c2/438ecc197ffb8023b6b9922915542f2172f5fd45b76703b0b4fc47322243/matplotlib-3.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:03acfeddf87b0dddb11b081ef7740ad445a3ca8bcb6b8e3011b08f2cf802b75c", size = 10924099, upload-time = "2026-06-12T02:28:16.383Z" }, + { url = "https://files.pythonhosted.org/packages/40/2e/395883da416f378b3ed2c9f3e843ac477eae1ce731b671b79adaa6f0bacd/matplotlib-3.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ab3722f04f3ff34c23b5012c5873d2894174e06c3822fcdac3610965a5ac7d06", size = 9329727, upload-time = "2026-06-12T02:28:18.581Z" }, + { url = "https://files.pythonhosted.org/packages/61/82/2c388956abf8bf392dfb5b8917c502f1082df6a941b781ab8c8e5ba2474b/matplotlib-3.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:c945824670fb8915b4ac879e5e61f3c58e0913022f70a0de4c082b17372f8771", size = 9003506, upload-time = "2026-06-12T02:28:20.474Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c1/34454baa44da7975ada82e9aea37105ec47059514dc967d3be14426ba8dc/matplotlib-3.11.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3489c3dc487669b4a980bc3068f87856de7a1564248d3f6c629efb2a58b03f24", size = 9499838, upload-time = "2026-06-12T02:28:22.713Z" }, + { url = "https://files.pythonhosted.org/packages/b1/c3/98fe79a398cf232219f090163a7fa7e6766e9f2e0ad26df54d6f8934d8ee/matplotlib-3.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6a98f5476ce784a50ce09998f4ae1e6a9f25043cef8a480c98949902eda74620", size = 9332298, upload-time = "2026-06-12T02:28:24.796Z" }, + { url = "https://files.pythonhosted.org/packages/95/e4/b4b7c33151e74e5c802f3cde1ba807ebfc38401e329b44e215a5888dd76d/matplotlib-3.11.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:565af866fd63e4bd3f987d580afe27c44c2552a3b3305f4ecbb85133601ea6f3", size = 10045491, upload-time = "2026-06-12T02:28:27.141Z" }, + { url = "https://files.pythonhosted.org/packages/71/28/394548efd68354110c1a1be11fe6b6e559e06d1a23da35908a0e316c55a9/matplotlib-3.11.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e6b3e64dea5062c570f04358e2711859f3531b459f29516274fbad889079e4f3", size = 10857059, upload-time = "2026-06-12T02:28:29.222Z" }, + { url = "https://files.pythonhosted.org/packages/c8/44/e7922e6e2a4d63bdfbc9dc4a53e3850ab438d46cf42e6779bb15ec92c948/matplotlib-3.11.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:942b37c5db1899610bd1543ce8e13e4ecff9a4633e7f63bb6aa9205d2644ebd1", size = 10939576, upload-time = "2026-06-12T02:28:31.66Z" }, + { url = "https://files.pythonhosted.org/packages/3d/be/b1ca96003a441d619b727fee21d671fdff7a5ce2f1bb797b2521aa2f679a/matplotlib-3.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:c08e649a6313e1291e713623b97a38e5bb4aa580b2a100a94a3309bc6b9c8eb3", size = 9379519, upload-time = "2026-06-12T02:28:33.888Z" }, + { url = "https://files.pythonhosted.org/packages/e3/72/4bf3b91821c34596dd6a7bdac5836d94f744144c8208939ef49d8ec43f7e/matplotlib-3.11.0-cp313-cp313t-win_arm64.whl", hash = "sha256:2746cd2c113742ff6ce37a864c5ac5fd7aa644568f445e66166e457ac78e40e0", size = 9055456, upload-time = "2026-06-12T02:28:35.878Z" }, + { url = "https://files.pythonhosted.org/packages/57/52/a94102ac99eb78e2fe9b826674f9ef9ee23327110ea6ab4776c1b4eb6209/matplotlib-3.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3338e3e3de128cf50d0d2fb92a122815daf9c755bd882a474343c05f8fd7ec79", size = 9452137, upload-time = "2026-06-12T02:28:37.93Z" }, + { url = "https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:25c2e5455efd8d99f41fb79871a31feb7d301569642e332ec58d72cfe9282bc3", size = 9281514, upload-time = "2026-06-12T02:28:40.028Z" }, + { url = "https://files.pythonhosted.org/packages/b7/2d/4e1240ea82ee197dfb3851e71f71c87eeeb975f1753b56a0588e4e80739a/matplotlib-3.11.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9695457a467ff86d23f35037a43deb6f1134dd6d3e2ac8ce1e2087cff09ffb9", size = 10843005, upload-time = "2026-06-12T02:28:42.39Z" }, + { url = "https://files.pythonhosted.org/packages/29/dc/6377ecfaa5fef79430f74a1a16638b4e2aa30d4692bae2c19f9d76fe3b01/matplotlib-3.11.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:19c16c61dea63b3582918503e6b294193961261d9daa806d4ae2151f1ad05430", size = 11127459, upload-time = "2026-06-12T02:28:44.483Z" }, + { url = "https://files.pythonhosted.org/packages/6f/41/795c405aa7560443a3b01309424cde4a1113b85c90b8a63417444a749617/matplotlib-3.11.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2d72ea8b7924f3cb955e61518d21e43b3df1e6c8a793b480a0c1214f185d30ba", size = 10925160, upload-time = "2026-06-12T02:28:46.564Z" }, + { url = "https://files.pythonhosted.org/packages/1a/f7/3a9e6389a7cfaeff76c56e40c2dabcb13110e21e82f837228c834ebe748c/matplotlib-3.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:1c02da0a629dfa9debf52725ea06866b74c1fb70a895bae05e4493d34074f9f2", size = 9485186, upload-time = "2026-06-12T02:28:49.344Z" }, + { url = "https://files.pythonhosted.org/packages/8b/c0/396478ee7cf2091d182db8b4a8695f6a37f1ddb978989cf9dbb84cd5c123/matplotlib-3.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:aa55d73b3117d4b07f959cd9eb6f69b375d8df3414139c479388e551aa5d999d", size = 9160349, upload-time = "2026-06-12T02:28:51.382Z" }, + { url = "https://files.pythonhosted.org/packages/c5/6f/1c3bd51bb2b34eaacdcf3c3d859dbb357f952fc8020c617dc118ad7c9e38/matplotlib-3.11.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a9d8c6e7cd2f0ddf11d8d92e520dd1d9d2abb0cf6ac8831e338666c81e905847", size = 9500921, upload-time = "2026-06-12T02:28:53.443Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/4d861d0121840cb1a3fd4a10deb211efd6fccd481ed23e553f31f4f4da4a/matplotlib-3.11.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:be050fcf32f729eda99f7f75a80bf67612ce16ab9ac1c23a387dcaede95cb70e", size = 9332190, upload-time = "2026-06-12T02:28:55.623Z" }, + { url = "https://files.pythonhosted.org/packages/4b/cb/22f6bc35711a0b5639a784e74e653e77c86210bd4304449dd399a482f74e/matplotlib-3.11.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dfabef0230d0697aa0d717385194dd41162e00207a68bf4abf94c2bf4c27dca0", size = 10854181, upload-time = "2026-06-12T02:28:57.856Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7e/9a9eaca731a2939589da520f0ebe8fd8753d0f51fca98c7d20af6dbe261a/matplotlib-3.11.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1644db30e759199443493ac5e5caec24fdb775a8f6123021f85ba47c4133c3cb", size = 11137715, upload-time = "2026-06-12T02:29:00.555Z" }, + { url = "https://files.pythonhosted.org/packages/ef/f9/9b030b6088354acb0296871bb624b25befc1c42509d3c6cd17420c83a5b8/matplotlib-3.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:15b0d160079cb10699a0e98b5989c70677b2df7cacdc62af67c30f2facec46d9", size = 10939427, upload-time = "2026-06-12T02:29:02.527Z" }, + { url = "https://files.pythonhosted.org/packages/59/94/6b273eaee4ee250863567d100865da61a5c1527fa67f527b7ed22e0dd29c/matplotlib-3.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:446307e6b04b57b1f1239e228a1ec2af0d589a1008cebc3dfa3f5441d095cfb6", size = 9535809, upload-time = "2026-06-12T02:29:04.994Z" }, + { url = "https://files.pythonhosted.org/packages/60/95/1d36bddf2b7e2692c1540e78a6e5bc88bc1496b137e3e35a611f91b65ac3/matplotlib-3.11.0-cp314-cp314t-win_arm64.whl", hash = "sha256:652fb5696271d4c50f196d22a5ff4f8e4444c74f847423570d7dc0aa2bbd0159", size = 9209226, upload-time = "2026-06-12T02:29:07.033Z" }, +] + +[[package]] +name = "mypy" +version = "1.20.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "librt", marker = "platform_python_implementation != 'PyPy'" }, + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/af/e3d4b3e9ec91a0ff9aabfdb38692952acf49bbb899c2e4c29acb3a6da3ae/mypy-1.20.2.tar.gz", hash = "sha256:e8222c26daaafd9e8626dec58ae36029f82585890589576f769a650dd20fd665", size = 3817349, upload-time = "2026-04-21T17:12:28.473Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/c4/b93812d3a192c9bcf5df405bd2f30277cd0e48106a14d1023c7f6ed6e39b/mypy-1.20.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:edfbfca868cdd6bd8d974a60f8a3682f5565d3f5c99b327640cedd24c4264026", size = 14524670, upload-time = "2026-04-21T17:10:30.737Z" }, + { url = "https://files.pythonhosted.org/packages/f3/47/42c122501bff18eaf1e8f457f5c017933452d8acdc52918a9f59f6812955/mypy-1.20.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2877a02380adfcdbc69071a0f74d6e9dbbf593c0dc9d174e1f223ffd5281943", size = 13336218, upload-time = "2026-04-21T17:08:44.069Z" }, + { url = "https://files.pythonhosted.org/packages/92/8f/75bbc92f41725fbd585fb17b440b1119b576105df1013622983e18640a93/mypy-1.20.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7488448de6007cd5177c6cea0517ac33b4c0f5ee9b5e9f2be51ce75511a85517", size = 13724906, upload-time = "2026-04-21T17:08:01.02Z" }, + { url = "https://files.pythonhosted.org/packages/a1/32/4c49da27a606167391ff0c39aa955707a00edc500572e562f7c36c08a71f/mypy-1.20.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bb9c2fa06887e21d6a3a868762acb82aec34e2c6fd0174064f27c93ede68ad15", size = 14726046, upload-time = "2026-04-21T17:11:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/7f/fc/4e354a1bd70216359deb0c9c54847ee6b32ef78dfb09f5131ff99b494078/mypy-1.20.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d56a78b646f2e3daa865bc70cd5ec5a46c50045801ca8ff17a0c43abc97e3ee", size = 14955587, upload-time = "2026-04-21T17:12:16.033Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/c0f2056e9eb8f08c62cafd9715e4584b89132bdc832fcf85d27d07b5f3e5/mypy-1.20.2-cp313-cp313-win_amd64.whl", hash = "sha256:2a4102b03bb7481d9a91a6da8d174740c9c8c4401024684b9ca3b7cc5e49852f", size = 10922681, upload-time = "2026-04-21T17:06:35.842Z" }, + { url = "https://files.pythonhosted.org/packages/e5/14/065e333721f05de8ef683d0aa804c23026bcc287446b61cac657b902ccac/mypy-1.20.2-cp313-cp313-win_arm64.whl", hash = "sha256:a95a9248b0c6fd933a442c03c3b113c3b61320086b88e2c444676d3fd1ca3330", size = 9830560, upload-time = "2026-04-21T17:07:51.023Z" }, + { url = "https://files.pythonhosted.org/packages/ae/d1/b4ec96b0ecc620a4443570c6e95c867903428cfcde4206518eafdd5880c3/mypy-1.20.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:419413398fe250aae057fd2fe50166b61077083c9b82754c341cf4fd73038f30", size = 14524561, upload-time = "2026-04-21T17:06:27.325Z" }, + { url = "https://files.pythonhosted.org/packages/3a/63/d2c2ff4fa66bc49477d32dfa26e8a167ba803ea6a69c5efb416036909d30/mypy-1.20.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:e73c07f23009962885c197ccb9b41356a30cc0e5a1d0c2ea8fd8fb1362d7f924", size = 13363883, upload-time = "2026-04-21T17:11:11.239Z" }, + { url = "https://files.pythonhosted.org/packages/2a/56/983916806bf4eddeaaa2c9230903c3669c6718552a921154e1c5182c701f/mypy-1.20.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0c64e5973df366b747646fc98da921f9d6eba9716d57d1db94a83c026a08e0fb", size = 13742945, upload-time = "2026-04-21T17:08:34.181Z" }, + { url = "https://files.pythonhosted.org/packages/19/65/0cd9285ab010ee8214c83d67c6b49417c40d86ce46f1aa109457b5a9b8d7/mypy-1.20.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a65aa591af023864fd08a97da9974e919452cfe19cb146c8a5dc692626445dc", size = 14706163, upload-time = "2026-04-21T17:05:15.51Z" }, + { url = "https://files.pythonhosted.org/packages/94/97/48ff3b297cafcc94d185243a9190836fb1b01c1b0918fff64e941e973cc9/mypy-1.20.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4fef51b01e638974a6e69885687e9bd40c8d1e09a6cd291cca0619625cf1f558", size = 14938677, upload-time = "2026-04-21T17:05:39.562Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a1/1b4233d255bdd0b38a1f284feeb1c143ca508c19184964e22f8d837ec851/mypy-1.20.2-cp314-cp314-win_amd64.whl", hash = "sha256:913485a03f1bcf5d279409a9d2b9ed565c151f61c09f29991e5faa14033da4c8", size = 11089322, upload-time = "2026-04-21T17:06:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/ce7ee2ba36aeb954ba50f18fa25d9c1188578654b97d02a66a15b6f09531/mypy-1.20.2-cp314-cp314-win_arm64.whl", hash = "sha256:c3bae4f855d965b5453784300c12ffc63a548304ac7f99e55d4dc7c898673aa3", size = 10017775, upload-time = "2026-04-21T17:07:20.732Z" }, + { url = "https://files.pythonhosted.org/packages/4e/a1/9d93a7d0b5859af0ead82b4888b46df6c8797e1bc5e1e262a08518c6d48e/mypy-1.20.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2de3dcea53babc1c3237a19002bc3d228ce1833278f093b8d619e06e7cc79609", size = 15549002, upload-time = "2026-04-21T17:08:23.107Z" }, + { url = "https://files.pythonhosted.org/packages/00/d2/09a6a10ee1bf0008f6c144d9676f2ca6a12512151b4e0ad0ff6c4fac5337/mypy-1.20.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:52b176444e2e5054dfcbcb8c75b0b719865c96247b37407184bbfca5c353f2c2", size = 14401942, upload-time = "2026-04-21T17:07:31.837Z" }, + { url = "https://files.pythonhosted.org/packages/57/da/9594b75c3c019e805250bed3583bdf4443ff9e6ef08f97e39ae308cb06f2/mypy-1.20.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:688c3312e5dadb573a2c69c82af3a298d43ecf9e6d264e0f95df960b5f6ac19c", size = 15041649, upload-time = "2026-04-21T17:09:34.653Z" }, + { url = "https://files.pythonhosted.org/packages/97/77/f75a65c278e6e8eba2071f7f5a90481891053ecc39878cc444634d892abe/mypy-1.20.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29752dbbf8cc53f89f6ac096d363314333045c257c9c75cbd189ca2de0455744", size = 15864588, upload-time = "2026-04-21T17:11:44.936Z" }, + { url = "https://files.pythonhosted.org/packages/d7/46/1a4e1c66e96c1a3246ddf5403d122ac9b0a8d2b7e65730b9d6533ba7a6d3/mypy-1.20.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:803203d2b6ea644982c644895c2f78b28d0e208bba7b27d9b921e0ec5eb207c6", size = 16093956, upload-time = "2026-04-21T17:10:17.683Z" }, + { url = "https://files.pythonhosted.org/packages/5a/2c/78a8851264dec38cd736ca5b8bc9380674df0dd0be7792f538916157716c/mypy-1.20.2-cp314-cp314t-win_amd64.whl", hash = "sha256:9bcb8aa397ff0093c824182fd76a935a9ba7ad097fcbef80ae89bf6c1731d8ec", size = 12568661, upload-time = "2026-04-21T17:11:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/83/01/cd7318aa03493322ce275a0e14f4f52b8896335e4e79d4fb8153a7ad2b77/mypy-1.20.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e061b58443f1736f8a37c48978d7ab581636d6ab03e3d4f99e3fa90463bb9382", size = 10389240, upload-time = "2026-04-21T17:09:42.719Z" }, + { url = "https://files.pythonhosted.org/packages/28/9a/f23c163e25b11074188251b0b5a0342625fc1cdb6af604757174fa9acc9b/mypy-1.20.2-py3-none-any.whl", hash = "sha256:a94c5a76ab46c5e6257c7972b6c8cff0574201ca7dc05647e33e795d78680563", size = 2637314, upload-time = "2026-04-21T17:05:54.5Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "numpy" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/fd/89965aa4ac08c74998539fcbf24fa3540f3e15237fbeb6bcf9c908f4aade/numpy-2.5.1.tar.gz", hash = "sha256:a48a113e6afea91f5608793bafa7ef2ad481fefbda87ec5069f483de61cb9fa3", size = 20755553, upload-time = "2026-07-04T17:08:00.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/07/ec2a3f0c91761581d4b7104a740791800025983f9a4dc4e73f91a99aeac4/numpy-2.5.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0bfebd8695f9863592fe744be833a258120b14a9f39da255e8aa8fade2c0ddd1", size = 16796419, upload-time = "2026-07-04T17:06:40.37Z" }, + { url = "https://files.pythonhosted.org/packages/ab/ab/ddb499fc4f8780354395face5b65c7fd107bcd6e1d667a5f07d046956f6f/numpy-2.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:30b44a6b53a7ae63c54c089a8726e5563ed302716c5b7ccc85afade40b0e7ff6", size = 11765832, upload-time = "2026-07-04T17:06:42.768Z" }, + { url = "https://files.pythonhosted.org/packages/88/b3/3c28c558a09fc72100c646dac6d2fce8e834c471b0edca01a29996706117/numpy-2.5.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:6165343f81b56ef8f514f396989e529b61d9dc709b99421b07e9f3e698e2287d", size = 5325143, upload-time = "2026-07-04T17:06:45.466Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0e/ce19b985bb15c596f4f05954e76cccc77c845083b3b8f938a6c68e523128/numpy-2.5.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4939237038ada79308dda3204ac6462df056b5672b2e25db1149cf873668b3e1", size = 6659749, upload-time = "2026-07-04T17:06:47.288Z" }, + { url = "https://files.pythonhosted.org/packages/2e/20/1ee6614d64332a1bba6411f38e68cb79eec1b2459e20a623777c5c5492a2/numpy-2.5.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c6759f538fb912fc46de0a6b1758ccf7b57bc7c7ebebc23974fdac3de8db0cd", size = 15164716, upload-time = "2026-07-04T17:06:49.494Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a7/2bcd3fdbb87804755c35b729bf8709d62025c5f4cfd7d5b2415997097515/numpy-2.5.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9726558e8db4a5bf7929a70ae50f63abda4daf0efe810e3bfbab95976f75fc1a", size = 16661440, upload-time = "2026-07-04T17:06:52.061Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d7/a41e3310c886fe457d36e670bbf24fae411aca8a7b6ad92a32afd924077c/numpy-2.5.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3935f3b419b244a02732676fa5317a9193cc596a4c0646db07e5b421229ac9f7", size = 16526305, upload-time = "2026-07-04T17:06:54.605Z" }, + { url = "https://files.pythonhosted.org/packages/53/75/4333a9a707c1edd3a4e1a0c58eca52c0f31e55089fa80db02b5565b24df7/numpy-2.5.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc932a65ded7ce9013d120845a2514dcccb1a67bfc8deb8d37633762951904a6", size = 18423008, upload-time = "2026-07-04T17:06:57.54Z" }, + { url = "https://files.pythonhosted.org/packages/ee/90/e314a32b1c11a2ffe818ddad3a57b50b4b6e1b6c487192eb50cdef0415d0/numpy-2.5.1-cp313-cp313-win32.whl", hash = "sha256:4b4ff1608417eb7a59da7b967bbb798cacfe071d2caf526a24281cd562072ed9", size = 6063885, upload-time = "2026-07-04T17:07:00.14Z" }, + { url = "https://files.pythonhosted.org/packages/10/70/800b3fca480af32df9e8ea9f3d4a0c8feb4b32d7f195d174eabbda4829ad/numpy-2.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:6c3fe51bc6a16453d452997053454f309e8e0ed7b42d6b361ce4ac8c32913d74", size = 12425674, upload-time = "2026-07-04T17:07:02.387Z" }, + { url = "https://files.pythonhosted.org/packages/8b/0b/196350c122f50f6ca56846f2d71efd5e0d24b7b2e07355e019b2e2c7a11e/numpy-2.5.1-cp313-cp313-win_arm64.whl", hash = "sha256:f7feb014281029e628ba2d5a007407443b06e418b6fe451d1e2adcbc8eba0107", size = 10350256, upload-time = "2026-07-04T17:07:04.878Z" }, + { url = "https://files.pythonhosted.org/packages/db/f4/731b6085a83faf6ca843394cbd5e217280c214399f7e8b21b9f552af0ae2/numpy-2.5.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:7c786fe9a5bbe360022e584c5a34cf6b54265c71bd7ec8ac3d8fec38968071f8", size = 16795063, upload-time = "2026-07-04T17:07:07.374Z" }, + { url = "https://files.pythonhosted.org/packages/bf/64/0e215f2048dd11a55bb989ed41b3585ef57452404e638d703a211a3e4157/numpy-2.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32985c896d897419ef8da6917872d80b78ad0ea26d85b23245c7366ffde76d75", size = 11776652, upload-time = "2026-07-04T17:07:09.907Z" }, + { url = "https://files.pythonhosted.org/packages/b5/59/2b844c7a6e9deff69b404a66221e1542937734f65d5e6e39411876053862/numpy-2.5.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:efd736408cc97c79b9e6917338dfc8f06013b2274f992e96b1d9a81a71e2a2c2", size = 5335944, upload-time = "2026-07-04T17:07:12.227Z" }, + { url = "https://files.pythonhosted.org/packages/86/51/9bf7cb2cabcebc9e017e4ec7e6322b378317a542c08b4cb68479c1efc716/numpy-2.5.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:ab84dc6b074fa881cae55bea94cc4f68e285181ba7f32497bf7dee6b1496165b", size = 6656266, upload-time = "2026-07-04T17:07:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/83/3e/fb7615b211b82a32f44d5180a6d421b61f84d4fadd578b48ba4ac34e189f/numpy-2.5.1-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caf3e317d33d60c37986b452613f4ab51246d0691350c03d0cb4a898627f4a95", size = 15179720, upload-time = "2026-07-04T17:07:16.272Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/0f992cb24560673496c5d68de61913b57166ce530ffda07c1f280e0cc464/numpy-2.5.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54ad769f17bc2d833b620851989f62054fb9ab93c969d9e1dc3c8e3d56beea21", size = 16664835, upload-time = "2026-07-04T17:07:19.021Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/97d6475ee91afe2587797d09446f9d3e475ad4cb681662d824809327b75a/numpy-2.5.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c12afb53450fa976d4c681c50a7423729a4c51c0465ed9f32b8a9cabbc472373", size = 16539135, upload-time = "2026-07-04T17:07:22.015Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/4db81e4ba0be7e2776b1de68c82aa862c7f8ec27e1b4927d4ae075e20678/numpy-2.5.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e8c11c405efc5ff6816d5983c96cdfa215bab3428961243af3ff59b228490438", size = 18426684, upload-time = "2026-07-04T17:07:24.941Z" }, + { url = "https://files.pythonhosted.org/packages/1f/64/c0ba2d90724d450279a7df8f32057241070250a26a7e2b5337d77347f481/numpy-2.5.1-cp314-cp314-win32.whl", hash = "sha256:f2479a47f8d5932d1718168a681ad6e536a9df484c83cfcf9de365e164537ace", size = 6116103, upload-time = "2026-07-04T17:07:27.622Z" }, + { url = "https://files.pythonhosted.org/packages/c1/1a/837f9ed7405adcd7a40538792eb169eddd8fa5630c16a1ef49dae71a30f4/numpy-2.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:24d0eb82c0541d3415a33425db64ae439dffccd7b4dbcb30e7c35120205c506a", size = 12562177, upload-time = "2026-07-04T17:07:29.887Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/49707938b6dd0a78a9178dd93227dc89e4c11af47f5c798d70366e8d0483/numpy-2.5.1-cp314-cp314-win_arm64.whl", hash = "sha256:5a4c988b38d261deeeaad9954e3deb091ad905c94e8bb6708654ef1d97f286b0", size = 10627739, upload-time = "2026-07-04T17:07:32.568Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c7/bb4b882cfe7f299cbc8b66e42e7dd78cf9d14e40f9469fc5e3db7e15b3bd/numpy-2.5.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a33276be12fa045805f477f22482088b66bb758ffbe89a9d21457de863a32e22", size = 11894709, upload-time = "2026-07-04T17:07:34.941Z" }, + { url = "https://files.pythonhosted.org/packages/40/3f/5af7f4a7f6224aef48017aa82bb6174c7a659d724be0c75017b7e64a55b4/numpy-2.5.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:f089d7b00756190aacf1f5d34bdf38c3c430ac82b4f868f8cede73380460fce7", size = 5453810, upload-time = "2026-07-04T17:07:37.495Z" }, + { url = "https://files.pythonhosted.org/packages/20/c9/3474309bc94d634d3f9c3eddf03250ecb8c22cd948ef16fef69a77cc5d7b/numpy-2.5.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:09e9bfd8d2cf479c7d174804fb3811c53a8e9f20a37444008606b57d6b7a826d", size = 6761189, upload-time = "2026-07-04T17:07:39.563Z" }, + { url = "https://files.pythonhosted.org/packages/90/8a/558ae39fdd55d7e7f7fef9a84a6e964ac6b23edbd2a07e52bb084500507d/numpy-2.5.1-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e68d8dd1e7eba712948f2053a29ec86917bc70ba1358df869d9f06649ef9cf09", size = 15225039, upload-time = "2026-07-04T17:07:41.682Z" }, + { url = "https://files.pythonhosted.org/packages/63/27/ca7392b2d030277bdf0273e7d23255b3ee57d57a7c170a6f4fb3981e1e5d/numpy-2.5.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:99d5095fa265a0c4152e7bb12759e14381ef5496152f1ce58f44bdf55c44beb4", size = 16701306, upload-time = "2026-07-04T17:07:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/02/42/03d53ae7996c44d4374a8262e9dc41671fd56cbb98f7d47ef85cf5da4c6b/numpy-2.5.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ab87a91b3cc3382b8956095bd8f95e00cf679bb81554339be1a2ba404a1473c1", size = 16589955, upload-time = "2026-07-04T17:07:47.694Z" }, + { url = "https://files.pythonhosted.org/packages/7b/15/6c1784ae469640e65db111e9a34b3d0f14d91e8a38b9ce34810ced370dbb/numpy-2.5.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:224ca51130ef7da85bea2191625181cb4f337f9cb64b471f10c1a12aa8b60077", size = 18464252, upload-time = "2026-07-04T17:07:50.684Z" }, + { url = "https://files.pythonhosted.org/packages/94/a8/f98e50356cf167df656c526c2dfeec2d7dde182f2a3da4b458a5938e2776/numpy-2.5.1-cp314-cp314t-win32.whl", hash = "sha256:6eab239876581b2b3c5a242281b6007bbdbcd1c7085d7709bb57c5929b11e6bf", size = 6263298, upload-time = "2026-07-04T17:07:53.445Z" }, + { url = "https://files.pythonhosted.org/packages/72/ac/96ae880cdecad0b3275d9359fcec72667b49a4863c9f12942e43679dda02/numpy-2.5.1-cp314-cp314t-win_amd64.whl", hash = "sha256:83ce9c80d5b521b0d77ddcbe5447c218d247929b6cc056ca5351342accfff0af", size = 12748623, upload-time = "2026-07-04T17:07:55.384Z" }, + { url = "https://files.pythonhosted.org/packages/a1/5a/4d2b1601df3602dba7a14f3348ba9bfe94a18adb428e693df6154c293831/numpy-2.5.1-cp314-cp314t-win_arm64.whl", hash = "sha256:5a6db61f9aaa57e369905c67d852045d3c4f7126405b29d09b19dec118e9c9cb", size = 10697674, upload-time = "2026-07-04T17:07:58.506Z" }, +] + +[[package]] +name = "packaging" +version = "26.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, +] + +[[package]] +name = "paho-mqtt" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/15/0a6214e76d4d32e7f663b109cf71fb22561c2be0f701d67f93950cd40542/paho_mqtt-2.1.0.tar.gz", hash = "sha256:12d6e7511d4137555a3f6ea167ae846af2c7357b10bc6fa4f7c3968fc1723834", size = 148848, upload-time = "2024-04-29T19:52:55.591Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/cb/00451c3cf31790287768bb12c6bec834f5d292eaf3022afc88e14b8afc94/paho_mqtt-2.1.0-py3-none-any.whl", hash = "sha256:6db9ba9b34ed5bc6b6e3812718c7e06e2fd7444540df2455d2c51bd58808feee", size = 67219, upload-time = "2024-04-29T19:52:48.345Z" }, +] + +[[package]] +name = "pastel" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555, upload-time = "2020-09-16T19:21:12.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955, upload-time = "2020-09-16T19:21:11.409Z" }, +] + +[[package]] +name = "pathspec" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, +] + +[[package]] +name = "planktoscope-reporter" +version = "0.0.1" +source = { virtual = "." } +dependencies = [ + { name = "aiomqtt" }, + { name = "jinja2" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "weasyprint" }, +] + +[package.dev-dependencies] +dev = [ + { name = "mypy" }, + { name = "poethepoet" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiomqtt", specifier = ">=2.4.0,<3" }, + { name = "jinja2", specifier = ">=3.1,<4" }, + { name = "matplotlib", specifier = ">=3.9,<4" }, + { name = "numpy", specifier = ">=2.3.3,<3" }, + { name = "pillow", specifier = ">=11.0,<12" }, + { name = "weasyprint", specifier = ">=61,<70" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "mypy", specifier = ">=1.18.2,<2" }, + { name = "poethepoet", specifier = ">=0.37.0,<0.38" }, + { name = "ruff", specifier = ">=0.13.3,<0.14" }, +] + +[[package]] +name = "poethepoet" +version = "0.37.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pastel" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/f2/273fe54a78dc5c6c8dd63db71f5a6ceb95e4648516b5aeaeff4bde804e44/poethepoet-0.37.0.tar.gz", hash = "sha256:73edf458707c674a079baa46802e21455bda3a7f82a408e58c31b9f4fe8e933d", size = 68570, upload-time = "2025-08-11T18:00:29.103Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/1b/5337af1a6a478d25a3e3c56b9b4b42b0a160314e02f4a0498d5322c8dac4/poethepoet-0.37.0-py3-none-any.whl", hash = "sha256:861790276315abcc8df1b4bd60e28c3d48a06db273edd3092f3c94e1a46e5e22", size = 90062, upload-time = "2025-08-11T18:00:27.595Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pydyf" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/ee/fb410c5c854b6a081a49077912a9765aeffd8e07cbb0663cfda310b01fb4/pydyf-0.12.1.tar.gz", hash = "sha256:fbd7e759541ac725c29c506612003de393249b94310ea78ae44cb1d04b220095", size = 17716, upload-time = "2025-12-02T14:52:14.244Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/11/47efe2f66ba848a107adfd490b508f5c0cedc82127950553dca44d29e6c4/pydyf-0.12.1-py3-none-any.whl", hash = "sha256:ea25b4e1fe7911195cb57067560daaa266639184e8335365cc3ee5214e7eaadc", size = 8028, upload-time = "2025-12-02T14:52:12.938Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, +] + +[[package]] +name = "pyphen" +version = "0.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/56/e4d7e1bd70d997713649c5ce530b2d15a5fc2245a74ca820fc2d51d89d4d/pyphen-0.17.2.tar.gz", hash = "sha256:f60647a9c9b30ec6c59910097af82bc5dd2d36576b918e44148d8b07ef3b4aa3", size = 2079470, upload-time = "2025-01-20T13:18:36.296Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/1f/c2142d2edf833a90728e5cdeb10bdbdc094dde8dbac078cee0cf33f5e11b/pyphen-0.17.2-py3-none-any.whl", hash = "sha256:3a07fb017cb2341e1d9ff31b8634efb1ae4dc4b130468c7c39dd3d32e7c3affd", size = 2079358, upload-time = "2025-01-20T13:18:29.629Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "ruff" +version = "0.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/8e/f9f9ca747fea8e3ac954e3690d4698c9737c23b51731d02df999c150b1c9/ruff-0.13.3.tar.gz", hash = "sha256:5b0ba0db740eefdfbcce4299f49e9eaefc643d4d007749d77d047c2bab19908e", size = 5438533, upload-time = "2025-10-02T19:29:31.582Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/33/8f7163553481466a92656d35dea9331095122bb84cf98210bef597dd2ecd/ruff-0.13.3-py3-none-linux_armv6l.whl", hash = "sha256:311860a4c5e19189c89d035638f500c1e191d283d0cc2f1600c8c80d6dcd430c", size = 12484040, upload-time = "2025-10-02T19:28:49.199Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b5/4a21a4922e5dd6845e91896b0d9ef493574cbe061ef7d00a73c61db531af/ruff-0.13.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2bdad6512fb666b40fcadb65e33add2b040fc18a24997d2e47fee7d66f7fcae2", size = 13122975, upload-time = "2025-10-02T19:28:52.446Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/15649af836d88c9f154e5be87e64ae7d2b1baa5a3ef317cb0c8fafcd882d/ruff-0.13.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fc6fa4637284708d6ed4e5e970d52fc3b76a557d7b4e85a53013d9d201d93286", size = 12346621, upload-time = "2025-10-02T19:28:54.712Z" }, + { url = "https://files.pythonhosted.org/packages/a5/42/bcbccb8141305f9a6d3f72549dd82d1134299177cc7eaf832599700f95a7/ruff-0.13.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c9e6469864f94a98f412f20ea143d547e4c652f45e44f369d7b74ee78185838", size = 12574408, upload-time = "2025-10-02T19:28:56.679Z" }, + { url = "https://files.pythonhosted.org/packages/ce/19/0f3681c941cdcfa2d110ce4515624c07a964dc315d3100d889fcad3bfc9e/ruff-0.13.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bf62b705f319476c78891e0e97e965b21db468b3c999086de8ffb0d40fd2822", size = 12285330, upload-time = "2025-10-02T19:28:58.79Z" }, + { url = "https://files.pythonhosted.org/packages/10/f8/387976bf00d126b907bbd7725219257feea58650e6b055b29b224d8cb731/ruff-0.13.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cc1abed87ce40cb07ee0667ce99dbc766c9f519eabfd948ed87295d8737c60", size = 13980815, upload-time = "2025-10-02T19:29:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/0c/a6/7c8ec09d62d5a406e2b17d159e4817b63c945a8b9188a771193b7e1cc0b5/ruff-0.13.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:4fb75e7c402d504f7a9a259e0442b96403fa4a7310ffe3588d11d7e170d2b1e3", size = 14987733, upload-time = "2025-10-02T19:29:04.036Z" }, + { url = "https://files.pythonhosted.org/packages/97/e5/f403a60a12258e0fd0c2195341cfa170726f254c788673495d86ab5a9a9d/ruff-0.13.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17b951f9d9afb39330b2bdd2dd144ce1c1335881c277837ac1b50bfd99985ed3", size = 14439848, upload-time = "2025-10-02T19:29:06.684Z" }, + { url = "https://files.pythonhosted.org/packages/39/49/3de381343e89364c2334c9f3268b0349dc734fc18b2d99a302d0935c8345/ruff-0.13.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6052f8088728898e0a449f0dde8fafc7ed47e4d878168b211977e3e7e854f662", size = 13421890, upload-time = "2025-10-02T19:29:08.767Z" }, + { url = "https://files.pythonhosted.org/packages/ab/b5/c0feca27d45ae74185a6bacc399f5d8920ab82df2d732a17213fb86a2c4c/ruff-0.13.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc742c50f4ba72ce2a3be362bd359aef7d0d302bf7637a6f942eaa763bd292af", size = 13444870, upload-time = "2025-10-02T19:29:11.234Z" }, + { url = "https://files.pythonhosted.org/packages/50/a1/b655298a1f3fda4fdc7340c3f671a4b260b009068fbeb3e4e151e9e3e1bf/ruff-0.13.3-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:8e5640349493b378431637019366bbd73c927e515c9c1babfea3e932f5e68e1d", size = 13691599, upload-time = "2025-10-02T19:29:13.353Z" }, + { url = "https://files.pythonhosted.org/packages/32/b0/a8705065b2dafae007bcae21354e6e2e832e03eb077bb6c8e523c2becb92/ruff-0.13.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6b139f638a80eae7073c691a5dd8d581e0ba319540be97c343d60fb12949c8d0", size = 12421893, upload-time = "2025-10-02T19:29:15.668Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/cbe7082588d025cddbb2f23e6dfef08b1a2ef6d6f8328584ad3015b5cebd/ruff-0.13.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6b547def0a40054825de7cfa341039ebdfa51f3d4bfa6a0772940ed351d2746c", size = 12267220, upload-time = "2025-10-02T19:29:17.583Z" }, + { url = "https://files.pythonhosted.org/packages/a5/99/4086f9c43f85e0755996d09bdcb334b6fee9b1eabdf34e7d8b877fadf964/ruff-0.13.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9cc48a3564423915c93573f1981d57d101e617839bef38504f85f3677b3a0a3e", size = 13177818, upload-time = "2025-10-02T19:29:19.943Z" }, + { url = "https://files.pythonhosted.org/packages/9b/de/7b5db7e39947d9dc1c5f9f17b838ad6e680527d45288eeb568e860467010/ruff-0.13.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1a993b17ec03719c502881cb2d5f91771e8742f2ca6de740034433a97c561989", size = 13618715, upload-time = "2025-10-02T19:29:22.527Z" }, + { url = "https://files.pythonhosted.org/packages/28/d3/bb25ee567ce2f61ac52430cf99f446b0e6d49bdfa4188699ad005fdd16aa/ruff-0.13.3-py3-none-win32.whl", hash = "sha256:f14e0d1fe6460f07814d03c6e32e815bff411505178a1f539a38f6097d3e8ee3", size = 12334488, upload-time = "2025-10-02T19:29:24.782Z" }, + { url = "https://files.pythonhosted.org/packages/cf/49/12f5955818a1139eed288753479ba9d996f6ea0b101784bb1fe6977ec128/ruff-0.13.3-py3-none-win_amd64.whl", hash = "sha256:621e2e5812b691d4f244638d693e640f188bacbb9bc793ddd46837cea0503dd2", size = 13455262, upload-time = "2025-10-02T19:29:26.882Z" }, + { url = "https://files.pythonhosted.org/packages/fe/72/7b83242b26627a00e3af70d0394d68f8f02750d642567af12983031777fc/ruff-0.13.3-py3-none-win_arm64.whl", hash = "sha256:9e9e9d699841eaf4c2c798fa783df2fabc680b72059a02ca0ed81c460bc58330", size = 12538484, upload-time = "2025-10-02T19:29:28.951Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/ae/2ca4913e5c0f09781d75482874c3a95db9105462a92ddd303c7d285d3df2/tinycss2-1.5.1.tar.gz", hash = "sha256:d339d2b616ba90ccce58da8495a78f46e55d4d25f9fd71dfd526f07e7d53f957", size = 88195, upload-time = "2025-11-23T10:29:10.082Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/45/c7b5c3168458db837e8ceab06dc77824e18202679d0463f0e8f002143a97/tinycss2-1.5.1-py3-none-any.whl", hash = "sha256:3415ba0f5839c062696996998176c4a3751d18b7edaaeeb658c9ce21ec150661", size = 28404, upload-time = "2025-11-23T10:29:08.676Z" }, +] + +[[package]] +name = "tinyhtml5" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/1f/cfe2f6b30557c92b3f31d41707e09cef5c1efbd87392bc6c0430c46b0e4d/tinyhtml5-2.1.0.tar.gz", hash = "sha256:60a50ec3d938a37e491efa01af895853060943dcebb5627de5b10d188b338a67", size = 179242, upload-time = "2026-03-05T17:06:30.704Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/48/01695a036b695f83fea7aef6955d735db0f517b1c8e25ddb399ac0bdbcbf/tinyhtml5-2.1.0-py3-none-any.whl", hash = "sha256:6e11cfff38515834268daf89d5f85bbde0b6dd02e8d9e212d1385c2289b89f0a", size = 39686, upload-time = "2026-03-05T17:06:28.498Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" }, +] + +[[package]] +name = "weasyprint" +version = "69.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "cssselect2" }, + { name = "fonttools", extra = ["woff"] }, + { name = "pillow" }, + { name = "pydyf" }, + { name = "pyphen" }, + { name = "tinycss2" }, + { name = "tinyhtml5" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/59/53/dcc3885c2f7a47faa45f6b8b801412f5f9e055173a52801ef01c09943c5a/weasyprint-69.0.tar.gz", hash = "sha256:a7a32f39ca16bd82ef11de99c92ea4b5f14951c9033af035e451ce4f4ee0a88c", size = 1549834, upload-time = "2026-06-02T14:42:17.765Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/cb/208525c6bd5033d7b2589b55e07bec23d9c61bb00703cbaf20ef52c3811f/weasyprint-69.0-py3-none-any.whl", hash = "sha256:475951cfd917014de6d4d005caff48c6aa867e7e42b80cd5b16a0484a1609ee6", size = 322872, upload-time = "2026-06-02T14:42:15.871Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, +] + +[[package]] +name = "zopfli" +version = "0.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/21/3b6af43a663b22b00e738bb0642931a2579e15da6852613d56c6aa535d28/zopfli-0.4.3.tar.gz", hash = "sha256:d3a50f91a13cea9bafe025de8fd87a005eb26de02a4f0c193127ddbf23ac8ebe", size = 179156, upload-time = "2026-06-10T09:10:19.96Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/5f/b7d81b670daf990e15a0f7551da96c3c0700f69ae6d96b0245d6a19f51f3/zopfli-0.4.3-cp310-abi3-macosx_10_9_universal2.whl", hash = "sha256:88f4fbe429aad72bc206275d81fab11a097e0f951a5848d1f51083c37ea73073", size = 291492, upload-time = "2026-06-10T09:10:06.621Z" }, + { url = "https://files.pythonhosted.org/packages/55/c8/d8d8d731e0b192024567b7198fb77b748821d355f3c8bf0109de27191f43/zopfli-0.4.3-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:769875152d0625c46707bcca57d4b2233fe653482067acd55fbf6ec525cb9bdc", size = 829354, upload-time = "2026-06-10T09:10:07.909Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2b/fbe8ba2ec40f5986b8983a4752f7a32672a80a10ea6e68213324a7055469/zopfli-0.4.3-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0c9c1d40a8cb1d58762d7e57290ccb753e0828c4d01be8acb59aae5d0ca206", size = 818436, upload-time = "2026-06-10T09:10:09.063Z" }, + { url = "https://files.pythonhosted.org/packages/de/d9/63568c54c8b68b9135f3456c5add83797a5528d596657f0e4f4910173b08/zopfli-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7fa3c35193475290e3f007bbcdebdbae64ba2f012d75c632da0d727e1da50d5e", size = 1778931, upload-time = "2026-06-10T09:10:10.282Z" }, + { url = "https://files.pythonhosted.org/packages/7a/05/8f3aac10a858e89c2146d3a1f6ce33634c3db757365b4148fef1b85784d2/zopfli-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:47604eee5c6704bdf0e94d8391fe3b74ddb2abd84128fbcfdc3ee0fc265feaef", size = 1864132, upload-time = "2026-06-10T09:10:11.595Z" }, + { url = "https://files.pythonhosted.org/packages/8d/20/9ca59d14b91f9fbc631793b4b085b309777edadaca496aa518a180817827/zopfli-0.4.3-cp310-abi3-win32.whl", hash = "sha256:628c3e941752880b3491db8d44163d0aedb221944e22a17187ff7fc549b050f6", size = 271715, upload-time = "2026-06-10T09:10:12.7Z" }, + { url = "https://files.pythonhosted.org/packages/9d/3a/4ff4fdead77ef30f5832b38a47eb7a1283e98b3c678576b83f8fdfff53eb/zopfli-0.4.3-cp310-abi3-win_amd64.whl", hash = "sha256:921c2c9907f4364963848da5ad194b46d68865e07fdb975d04fd09bc42d47357", size = 288550, upload-time = "2026-06-10T09:10:13.639Z" }, + { url = "https://files.pythonhosted.org/packages/e6/44/6264f929057236fde72dd6d271f54612b4811ce37288e002f5d5339d696a/zopfli-0.4.3-cp310-abi3-win_arm64.whl", hash = "sha256:7e9703ca6e7ef66c8d05e0826b6f558b680c9db8206f84f05a3ee93430a12e42", size = 451343, upload-time = "2026-06-10T09:10:14.72Z" }, +] From 05fc78c68f50b81efc0a393250229ac2ed1d487d Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Tue, 28 Jul 2026 13:21:04 +0000 Subject: [PATCH 3/4] remove make_sandbox --- node-red/projects/dashboard | 2 +- reporter/main.py | 2 +- reporter/make_sandbox.py | 82 ------------------------------------- 3 files changed, 2 insertions(+), 84 deletions(-) delete mode 100644 reporter/make_sandbox.py diff --git a/node-red/projects/dashboard b/node-red/projects/dashboard index fb2d7adc4..c47130817 160000 --- a/node-red/projects/dashboard +++ b/node-red/projects/dashboard @@ -1 +1 @@ -Subproject commit fb2d7adc4abb7d33fdf500b6bc60d4bdd4e68e36 +Subproject commit c471308179aacca15116560baf03f067554281ce diff --git a/reporter/main.py b/reporter/main.py index cee230101..79bc7320d 100644 --- a/reporter/main.py +++ b/reporter/main.py @@ -1029,7 +1029,7 @@ def build_context(acquisition_path: str): """Legacy single-acquisition context (full + one-pager). Unchanged output. Returns ``(full_ctx, panel_ctx, name)``. Still used by the backward-compatible - ``acquisition_path`` MQTT payload and by ``make_sandbox.py``.""" + ``acquisition_path`` MQTT payload""" L = _load_acquisition(acquisition_path) sharp, conc, homo, spatial, stuck = L["sharp"], L["conc"], L["homo"], L["spatial"], L["stuck"] qc = build_qc_table(sharp, stuck, conc, homo) diff --git a/reporter/make_sandbox.py b/reporter/make_sandbox.py deleted file mode 100644 index 50b1778ff..000000000 --- a/reporter/make_sandbox.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Generate self-contained design sandboxes for BOTH report surfaces. - -Renders the live templates (template.html + template_onepage.html) with REAL -Chase_1_4 data via ``report_generator.build_context``, but swaps every heavy -base64 image (flat field, charts, ROI thumbnails) for small labelled gray SVG -placeholders so the files stay tiny and artifact-friendly. The brand logo stays -real (it's tiny). - -Charts are restyled in Python (the ``chart_*`` functions in report_generator), -NOT in the HTML — so using placeholders here loses none of the HTML-editable -design. Open the two .html files in a browser / Claude artifact, iterate the -markup + CSS, then send them back to re-bind (see HANDOFF.md). - -Outputs (cwd): sandbox_full.html, sandbox_onepage.html, sample_context.json -Usage: python make_sandbox.py [acquisition_img_path] -""" -import sys -import json -import base64 -from pathlib import Path - -sys.path.insert(0, "/opt/PlanktoScope/reporter") -import report_generator as R -from jinja2 import Environment, FileSystemLoader, select_autoescape - -ACQ = sys.argv[1] if len(sys.argv) > 1 else "/home/pi/data/img/2026-05-20/Chase_1/Chase_1_4" - - -def ph(w, h, label): - """A labelled gray placeholder as an SVG data-URI (keeps the real aspect).""" - svg = (f"" - f"" - f"{label}") - return "data:image/svg+xml;base64," + base64.b64encode(svg.encode()).decode() - - -full_ctx, panel_ctx, name = R.build_context(ACQ) - -# --- swap heavy images for placeholders (brand_logo stays real) ------------- -# gallery is the same list object in both contexts, so this covers both. -for t in full_ctx["gallery"]: - t["img"] = ph(120, 90, "ROI") - -full_ctx["flat_field"] = ph(800, 600, "FLAT FIELD") -full_ctx["chart_esd"] = ph(760, 280, "chart_esd") -full_ctx["chart_sharpness"] = ph(760, 280, "chart_sharpness") -full_ctx["chart_heatmap"] = ph(640, 470, "chart_heatmap") - -panel_ctx["chart_esd"] = ph(380, 265, "chart_esd") -panel_ctx["chart_sharpness"] = ph(380, 265, "chart_sharpness") -panel_ctx["chart_heatmap"] = ph(380, 265, "chart_heatmap") -panel_ctx["chart_concentration"] = ph(380, 265, "chart_concentration") - -env = Environment(loader=FileSystemLoader(str(R.HERE)), - autoescape=select_autoescape(["html"])) -out_full = env.get_template("template.html").render(**full_ctx) -out_one = env.get_template("template_onepage.html").render(**panel_ctx) -Path("sandbox_full.html").write_text(out_full) -Path("sandbox_onepage.html").write_text(out_one) - - -# --- data-contract dump: real values, image blobs abbreviated --------------- -def describe(v): - if isinstance(v, str) and v.startswith("data:"): - return f"<{v[5:v.find(';')]} base64, {len(v)} chars>" - if isinstance(v, list): - head = [describe(x) for x in v[:2]] - return head + ([f"...(+{len(v) - 2} more, {len(v)} total)"] if len(v) > 2 else []) - if isinstance(v, dict): - return {k: describe(x) for k, x in v.items()} - return v - - -dump = {k: describe(v) for k, v in full_ctx.items()} -dump["chart_concentration"] = describe(panel_ctx["chart_concentration"]) -dump["_one_pager_only"] = ["chart_concentration"] -Path("sample_context.json").write_text(json.dumps(dump, indent=2, default=str)) - -print("sandbox_full.html bytes:", len(out_full)) -print("sandbox_onepage.html bytes:", len(out_one)) -print("gallery tiles:", len(full_ctx["gallery"])) From 97b0b823b3d4e8b32a5ec5be6f1da509f04507ea Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Tue, 28 Jul 2026 13:29:11 +0000 Subject: [PATCH 4/4] test and update reporter --- .github/dependabot.yml | 1 + .github/workflows/build-reporter.yml | 55 ++++++++++++++++++++++++++++ eslint.config.mjs | 1 + os/image/rpios.js | 1 - 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-reporter.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1a8b9572e..a67f4d71c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -16,6 +16,7 @@ updates: - '/documentation' - '/segmenter' - '/controller' + - '/reporter' patterns: ['*'] multi-ecosystem-group: 'deps' diff --git a/.github/workflows/build-reporter.yml b/.github/workflows/build-reporter.yml new file mode 100644 index 000000000..011c01bc3 --- /dev/null +++ b/.github/workflows/build-reporter.yml @@ -0,0 +1,55 @@ +name: Build the reporter + +on: + push: + branches: + - 'main' + - 'software/beta' + - 'software/stable' + tags: + - 'reporter/v*' + paths: + - 'reporter/**' + - '.github/workflows/build-reporter.yml' + pull_request: + paths: + - 'reporter/**' + - '.github/workflows/build-reporter.yml' + merge_group: + workflow_dispatch: + inputs: + git-ref: + description: 'Git ref (optional)' + required: false + +env: + IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} + IMAGE_NAME: 'reporter' + MAIN_BRANCH: 'main' # pushing to this branch will update the "edge" tag on the image + BETA_BRANCH: 'software/beta' # pushing to this branch will update the "beta" tag on the image + STABLE_BRANCH: 'software/stable' # pushing to this branch will update the "stable" tag on the image + TAG_PREFIX: 'reporter/v' # pushing tags with this prefix will add a version tag to the image and update the "latest" tag on the image + PUSH_IMAGE: ${{ (github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork) || github.event_name == 'push' || github.event_name == 'push tag' }} + +jobs: + ci-checks: + runs-on: ubuntu-24.04-arm + steps: + - uses: actions/checkout@v5 + + - name: Install uv + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + + - name: Set up Python + run: uv python install + + - name: Install dependencies + working-directory: ./reporter + run: | + uv sync --locked --dev + + - name: Run checks + working-directory: ./reporter + run: uv run poe check diff --git a/eslint.config.mjs b/eslint.config.mjs index 8534a54a7..b1777b518 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -8,6 +8,7 @@ export default defineConfig([ globalIgnores([ "controller/.venv", "segmenter/.venv", + "reporter/.venv", "frontend/dist", "frontend/public", ]), diff --git a/os/image/rpios.js b/os/image/rpios.js index 54b7962f4..a60f25e45 100644 --- a/os/image/rpios.js +++ b/os/image/rpios.js @@ -3,7 +3,6 @@ import assert from "node:assert" import { basename, join } from "node:path" -import { fileURLToPath } from "node:url" import { access, readFile, readlink } from "node:fs/promises" import { once } from "node:events"