From 36784f51daa4a7693dc783c387956b63426e8682 Mon Sep 17 00:00:00 2001 From: JBthePenguin Date: Fri, 11 Jun 2021 10:57:16 +0200 Subject: [PATCH] ok entry return for rent, next output for borrowed equipment --- materiels.tar.gz | Bin 21825 -> 22218 bytes src/lib/Entry.php | 21 +++++++ src/lib/Equipment.php | 33 ++++++++++- src/templates/entrees/retour.tpl | 2 +- src/templates/index.tpl | 2 +- src/templates/sorties/stock_disponible.tpl | 2 +- src/www/admin/entrees/retour.php | 61 +++++++++++++-------- src/www/admin/index.php | 2 +- src/www/admin/sorties/stock_disponible.php | 4 +- 9 files changed, 96 insertions(+), 31 deletions(-) diff --git a/materiels.tar.gz b/materiels.tar.gz index 9b42823d982c7cecdf81900d9176616d9f133bd0..11982c1c0c64afde9f478f3f982320580d2027da 100644 GIT binary patch delta 21664 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%0Do}_ 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

YMvIfeDk=dIlkF-z0W*^- zD;ffH%#%hdBpESq+?Ep|BExe`JJ!ytB;$bEb8KAR#GFTygDWK$%kiS=Svs7KIH4i) zI>6RMqf3VK(7oi7zbhC>sd^4jxwvX4y`GS)7;zLGpqB|F0wksUWeMh_xfje5+HX81 zrGjX2esIN$pabGkx?mP?Q)uddnm*OD=rlOHT63{#Y*8B}ORHUsc< zr;}1FCx3}j$w!-*$=gTFiV)-y7fB0oW8iz}7-(Vi!$lNJ#5!iWGkBTs1zF#w?f^xH z@dU_-!0|%mgps7ex}oFoauY-f0!@Uk8 zb^u#)AiSMYmM=SnP}sY+&sG5^C9{kr?;OM_aL2p-f?{NcEN-#+4Hyb zs98%dN9egup$mP=?C!KmkFq0$qigRGA%FCAf+l2+jS$}to!RWz7&ye%QcS9);8jad z$ti)yU~_O=r^qOb0^~YcClGPp^T{l7b>W94ClnGYe>60K6xyBXAuaPc7>c+Rk^9Vb z%+yB@1ar9zA}W@}i<^!(WDf~;8etU^NgcDJ>fAvbC5hdUglNn;3rrPe?z5JL$$ubc z`#mcU4`(LP%f=?6a}ga~{{SFIsovrrQH7Y{*#W~&F>p?FR~lVwjzFY|9-=4+Qppug z7yyOkoe?LdA-YA#@s0*c34Rbwi=ef!q;@jD%&D&ps&(sb=HS3|u-LalZxF{NUb%z>Uy_3;1W{Zxny?@N*w&YY#f=71610}vD9X7!}G41XkF%qZ&$Bb~2 z8^(#T&JJQTC)3!$>b4;(7mML&mdXw%w)K^Ao-nG7IGtNLcZV(CI!fJ+p*4P6Hvi!h zIe{d~XZ|Ed6ZA-@H*??YuBw27E~{{kA_=E2IHm9q44z{Kq?cX2f|&s^Y=5k(3XQ>K zxRT?~sVG1`$B~4~R1c&5*={N+N=W9&;Db(m2Ae}}iRKI}5#VX7Sr)e|{-WqgrUCDv z5(jz|>g=q4T8_37oOB~Wa2Uq|Gp(4Q*+t3{5WzWPM%kRWkQD{n z(bnm{7v>U*e3%kF%A6m25|BjNqz=D8{}%eZC`~5NLWHqN>2PLks3`_HB&yRTV%k|R z&fyixnA!<(Y|>3hZHX@p`^r*yEb}wF+)UUDyG9vYfd9trkQj9!i+?|iwQaHFZKY1c z<0^Y{7uXoV2aVbay%Gz@;nHQa+~3-Oh3!G<>yt(4(WGh zEoYc_8~;r7RJt$_x}vnb#Ihb5GYn6}HML^0rFaXlIkMT|u_gjM3kYa0fY+rbYm z;2-SXkK)2k7#&?tIDZ?+U%)WJ5d#yQEr@J|sJa-G8C)L6F^c*@ZiKPm8n)nBw6f-` zT#6(}@JX_9hc>36!+RX&!s@b>P+Ww)3|AaP2Kd+c7!Rb*Np88Ssk3Yg+bEGY3w#Q> zED%{AFd<_)7Pd{(v848bFgnz*4zKNY!Z|r)sIp&^YzzWYM1K+NVlKuXl>ji=0Zioz zL2Sin6XMxuo&fm{=~`V(^NtAxCGiH=E+-M~2iiwuB5yMTyJoKW06>pomqh8&+&$n> zd)9hfArMtzNfv`vvtr&{Ru;9u>8gr_WCUCIEN_5MS!XDll*)9O`8lRTWpzlBMO7sT zPHoA>MBAdD#ee^+7)yqf`ITEvc{`uhDk_%u%;OtXvqrs*V%U=@9K1^j*qJqd+eSgt zWihuj={dRqt=AzDoumU3gl7WS>|~}Eg^U0QXa~foP(s{%4GBIF@;a%Gf==jJ91uo1 zC1*!YP&P9DPAMSEIzLhIM76X)B_ZqL7|v2|t$-&jbAOo{B}n^HEr4fAz$=Gs0EnWt zUqhBFb_8G=G~fTWL<&m4pL@#1eNaA{$r#B>HWhYG61r&)$P5z@rVS>Q!vIk)MgcX& zTF$AJH^NH38O@Q=xVYVA6o{Tl@pAbrt5g=?+ZC_udMf(F+tCX|N>Z!nOF0$FXA27& zwp@5Nxqrx!tqz+$zO#bDNO;HiN3PFC>UX7xn2IDEJEn>r`&}(lbx{CRWFsQ`0xQ4^ zjuArHp)8hRGN^&FGOCm#b6HiP=L~}|55#<8PnHXeSnF~bfmRk3WEiq5WA!*r7+!BHkEEJmDt|jc`4|R8--2!%5!7=@NOuCFV*$}x zQ)x;14O&UyC)Qe=+t(sxwgQ$D=<7@hzoKN6k&L+st%0s*VvNqGW%+a=)8m}tbhD&` z!BiZKS+54Zt2TTciTHr&OpM~plVamuMj!BL>5SzKImWD)ol1n5Ib>-3m5LlFO_5$^ zK!2gbH_QOEP+U#hX5I}N;Fsuv)rE|~ah9uk`J{;m(|geset%`n z2if`91isKqRGi9Co*B7Td9O;2yJ|X>SORWYzck83OA>KgMp|Htv+N2NdZ96sDZ3&_ z{>lM1e-_Z}EJbV3HKEg}z3X`*j181AULO zDA^1{PEODwfJl3+AWTP|LzcKq+(Nf#5KSpPfh8^wpGQ-imt-jx^D1UK>VNDd7<8R6 zClqI#;&Te>PYWesCFResdVe^?kgJl|Ec!N5o(dHz(VjO+Gc>->LP|cee9C*DB}nH= zLx@u7*yCp>7E3qB(X~4gPg!Jz&~f%wHkaZ&X4O`@wpWbRCg{5b@Gs-5lM5Cm$I>FF zLGu1nL@NCzrw^u-PSI3??tim$t;9Q)pe~Iwg6(BqkQQ^L7JlJj#HDp~WFr-*c1L^^ z5i+r{df7$caGWggNwP{hoh9{-Mo+Smb0J$DqqwdEZwewKo+)F|rJR5YHNL>4t-^G< zYBBmTj6`W{%y=9*Z_^~JO_(J@=nw^&CY(ll)~5WP$sx(L%!=XIV1E}c71FodZ3h^S z?^)G2EPtxiaVra28ll$=>xzny1G|Haltq1gx1~7+7SAKMpta*9aDy-xqPS~P!ku!+ z^stB=WG>_!X>p4cfzoo&DkB1+_Du6qXHJP6PgDS`ASmgxUzO5ZF*cuQ$2Ppug0f;R zE!oIuRL=^&Wq}piynpJ*79~3Kos!b1+z|qeO?C-2F#)eRQvtae3f!~D>7CiEEg{S$ zyM`%0fK?CUk%v{a4AoiWnmIX@+ampWB%FbRC|o#P(t_f$a4+ScbF@31az5f&*%z)# zF-Iif(PiPY5Q7a_I{OnNy_twmVQzFOrEwc&*JN4u3TD#X80A_aJ5ao8*^a za6lyL3s<702qY?|LE0@jPMfCeT&R04$--3LK6{79yYxes6FI4}{8a4z+`_Isxv<0q z7-^sD5`11Tns9IfOBbdUe6~tF8qXM(0tiTb=;9+U1 zoTWB1IMo&ybbpbEd>Apg031`&oJx6P+@#Kn_HIo{QaZNXb+Y=(W{^V4gJIGXWstAL z%q9jWH4arYj#{CwIzep4T44=nbBr7_cowLN&cJh4JbbJb$~p=KqzH(ts_ZDV6cB=y z0j6^T zo8b^{mRYn@)R7L9$+;7|3rez#4x_-o^s^ugIdxbsJWi%A2V}9>49g7tT$xm4uA_WV z9q=*PXn&?{Ry6=yK_=Y|BS@!O*Mb(J3AakBGo`PS|FDVq3RSj*9sKmJ^B6{dF?L^Z=^3GNqU~#12+SC zK2fKwP#sc`F#r-H4@@<-?DHf;W2VW~6_>yiplwD(KJ)XDlg8|Bdph+(rLa|JWeJO0 zozRysJ+6O!ggqt=`dpS5jkWw%sQ1Sv3Qy{ksixKsshr)ED#Nfl!;&Af$u1~~Vt>QH z2QL_yuzWp4mCNl~*S7;eBD=+LjcsW5yGxn)3Brm+X!0yRiKM)NPAyA<@pP2Bq0c3W zI8v`vnJZ@!&?QoIrWjf(XzAH&!d^;tdE5LW69gLXQt^|bsYugA1T7ixGM~84t|Om2 z$+{!@dZ(-PI1+(O3Z{{GtTPL50e^uRTP)uxgknmTihNm%ZGi@CXA#MNQSN&eIVc$w zoE#0q7!NT=XX+TWeDauG&8V}wq>lY@1S>ogd3!&r`~C`}y)y}P_7`wIKRQrgpM^j= z1~7ynrOXu$e6VV`v%YISgXEafBi8o_Vp`%T%cd}8d64bOa>|GZhuxe`~}J@ zp@;l6Hp|0PQZk%Op|X1yK~G!3b6&OUaL>rGKW}7g8jSy7DV9vp&zn`HrkaI9cJCtQfIf9i;Gu5lP;v zj*+KW5j%?{S0aTX$xM!CNeXau;CHrGllno08ccy3lGiCW*^ao=zf@K*#Nm2peTtG}sHN0hEWODW*Q^f{iG}YjAJ1aKj{ZXg8-M&u6*U12c6SZ| z0c{FW9}-J)O@cTu>EjY6n|);pp^KB{s8xKy!xSd`5}704&!HgzZ$a)Diwp;xE)Ffn zrp7Y>5trg6X%(?!3J^df(JlDP#U|8HQ(Y5utkn+_v(7K%QwXa;<`h6y7b<|sH<`7a zr6>`_((KgHY~)kcNPng*+v1EbK8c}62lDBOI%cB$8Is}*RPKveX%UN@42#MEnMPM+ za9vv;$Kv6&ig7DKWzma+i%2`kbYEotG}CmdrfDI&mMrawmbMe{=fgFBS`nUj`lE%z zDHgVJE^`O%F6RMzlJpUsRe~cl5;5uJgAenr{S0V!;F0Ai(tko1Lxy_SZ)nStEzBIy z_G+QutObF4E|xnxW;cqn7;(qWKCzmB#h{)sv~Qa|h*AMYHV{;1v@9peM_?)d22 z9KiCI&;Wysi?4KUO5Cpp&p84+kgPmjN-TUKrM<=}{#UO-E0N}^_Cx2D2 z0s-v5z27k%0d%2%kGDIAyFDDsTC)S&gv(Vw9=%7t0qZ{4%K-%e)l+-DH@)4{{qK7% zYzf1hynovhc%Pg?r_Rp7fjaE%!hCm*e^e*EXjN9!%$Idh1I7AHUeUJF@{_p@Haoqd2_pnyP5|zh)66}BH+v6Sq+QJFvhkckB z?w&ym#fZ_OSKvX07(W7v9jUiRd;4#2TLf`-j}E`@{dnToPysk+D7*9e2m$jNCbCcS zff*o_aNqWJ-tK(cJFzeW$8_XF*e!MPuD837f53CVM?ioB2G!vStQEHwZb&C;2lg0y zK;-0obl$^%K|lmN)QAIP<2`$_&1~#4QmTWa6U0DgZ|8JJ(Tw5W*F9`~+&ct7(HYy> z-F<%y=M7un8!(%b_izID4|z9my>!I)kM|sX$Ov!W?Cc-BKQ1C3j(h|l#4ZT|t)1W& zCkrhHH(%|)fuVN4lWkMEqx_@#4z}WT51Q@leZNnC$5F%?UV~G_@ z{4k5bz>`v{l+DAu9MLm*S=extL*y(8#FU!hcyBRKocSURjUp_$!6{T+-&&&Vg$k#X zw8w$!4vLHZ6>CRRQUgipVVPNaa<9a4ghjyyqloj7F}>;oeW@dH(6V}#0e=*L>qH~0 z;y~rQSr|b}JhM%LUbEO$9|Scfy`GSss4mOLP`q?9J{=~0I$6g# zW!omexg+rcPLo20b4&blNy?S9Fnsia{5mEWS-i7Bf9m8vMa)u>uRmAMUp28lxov%W z+;};)g+_m>k0KRY7~1cONjei|bpoGJ2XtiWK50{lJH(~ojLq9)-54Y)&iSEGHY?eK zzZ!(DPhB*BbnTG*B{p@dwr0LGHuXeZBo|~&B1v4=ASBhOZe*G|s={KNQErB6Z&{Ehd`zzGkm$s^B z^oR5Lioz7Yc$O@sGFj@xXH^e-xP#iQU1Y2k>#Ahv@3Jx0M9$|UH*f7<$`@KC?=r}; z_6OLE0XDwcyhzhY@^X3k>gsCgJe)2?@%ge2D_Y)$iS1yBC?;WL1r2FgCm#g=Ye1lm<~{UtWCwQ*XW z?|O-u13M~#h+q2JbSNbWPl@=@my@{ifB$u28PlaMs#MRT4|N&MkC-z_A^Lor`DrR4 zR9OxMwks}j}T5(Y~O*1orsh&kYx z11y|dPsE>|ugAGCXOK$TEGH4UvX|YTB0Tba{=Jk=MqfHcyWL)2TT}3FXQSJ;|D|hX zz1>lrwKn{-w!XTtuG%ZB-PMghsrExG@V0A;vJgz=r!zpy3Cjpo?QVO{Yf+p4?XI0%>f7eF#`=j$pBe^R{vO;Z04H$G2ZzF?tiDMX(j`KZ&aI^XM;8U@~s z;}k~tCh3RnC3T)_+=n|^kAjSKcz;vAoQcKpU?>ny>yl@*RsZ+`!|3|ccyv?Wc50hL z5Cgr$PvP&{<_Nzb=xy&XK7*Ks5*~J|yvCI3o_zWhGaIwuzotDaD`W}s;wzd>M zRQf(_nfz7%xEu^`w&m^3W$tv_9_iz<%qttewzZ!rsf>6thQKe&|>G8)hn%z_%ADnxJpVkua z3%wxMxOx$pJ-SbYGBFrgmT`=AKz^Cx7ni9t02`lS-5*|pHj2efLB#v?pG!+i6=0Um z;Anjq0i{eYw(2Y0e=fizx=OazF!CYUT5Z!bdDWZC)`{JmaM4mgrRmu?Nb3ZaK@t!9 z)C%i`ZM~r1@E7*-5mb*9MGjh}yd`T)K$thH>V>g?j;alASaRWFb5TTPNOU&Jj(kMX zQF@m5cfxQwvflMSpy$4>E@FQOQ$laVsE@DR;F>1e&L(2`e|Wn@{e->_qbQ|4y!ovq zn~eW+4cX;K7z6m>#zuE0|0jM4{J*>2SziU-ukdkq?N6%v2y-c2e{lYjJG?mTXn7eorARLo-F|> zTF$o;s}-=#rFPu`CNtgY&_8|S#Yce!mHZ|2!}dwtzfs#;>f_EXI=TAjU+Ue|F-Ub7 zoNu)qpu~Nv-_Fu{{kNvZPk&|fUyJ1rKL(!v_1WjYf79u%(D~m00F% zPjPL+u4@@6b^8@WXidVPD-Wr3*vQDjoq%l1R8 z%HYi*GK;79wJ{y)X__1pg@F8R>_ zA3yy{2q^;Q*RNau9CYX-*V%ZHQ%Z#n;+e@=Ua?f-E4S69~H{C76iSD(-SQ(TtG z93?Wgd~aT?Zokzk-sUp=%8cS-0%u!z(Xj3RGEVE;cQ9)6>&B>^H)&@!*1(vyxo2Z8 zE*Q4)Y0^Kt?t=(OWNkDYlz6;ZcCh2(`O()v!x45W2zJRW7)Z$`& ze>>N$9701>)Z0T{z@RUf-!~Cy;Sn_EQ(|N9%7|cou*Vath0?- zFU)?ywyRgXnm5R^HC~&mZM*Gnjls{?mt0p@SIf*eHT{41G0^_oz1{x1-tMfdw%1Aj zUq}D%v;Ft+ud@8ln&d+of^Osg8yl;zAbg>#n`JKeoqxo^2bGW5f0I4q zp(PepJ~#g3{B!)v%x^P2i@a<7VnK|O#fl)szbsK|GmUK-W;69bbmCS^Rt&&@;D7oY zm-e#pjko;Gc=?;_1_(~6H}ic7SeVnI=>5NA>-o*f-uOa$_+=Jd5Yyn1h9&%oxUuc9 zTz5z9cpA$0)e!q0iN@Sw|2O{Me{N^By|La!{@-pt`~RNgvi$#<^&HC<#25tHH#fgT zAh>P+LE2;g|H{f*w+-^&N_VC6Z2xnr8|88X(Zx{z2E4-`}(^VJL(hd z)c`}Y)xh|KFcvKHXRE)|o!XTf<2QA->Yx56oQ%awETEix`oCEGN5PL#e-y;ZoDtyk zc5nah|EO;g_5c1abR^RmETLJ$sktLRhNbP`H%B;>J^yBi#oRG~9_ur6{mdXP%#MT{ z_|GLy;nV+4V_#3?)35$g-MKT}*H@Hm{l zn}31bb{zT;*aQSiPG@P6Pe%$yYN#m;Edq>0pO zvJDlBho8;HN$;Syd#e76dUJgAR#neL9UWsOh}S<-nCLaD}A^&*b0 z7T8WH3#Bglf0Jo)(X=~nQPaik?3N60Bl7@g!vwIlf_19%GboO2^<{=fn^!*?_SvE; zy;ARs+q>=vi<_tZ(KJ08o?wgD*J#4jJ6@cd!i>~rMVE^?^iZ3sy`ar!#;B$%SGc3Z z*WKM%OP1%D#X}hSPZ~{v^50{RaaZ{d#J}$9MhEzRf49?FeU|^8;z~dx8@o%%FOLxS zt*=}3|CRN1&i~k0U0>^T*HHdj*?5lsd6H}QxQ7*;PN@vm{u`<_)%*ATlhczj?-Qfk zwQ4#w;AG_s%QBn;!NpDv-ya+(_3n88EtVJiYwt&@&mV+?SPFgDC}FmEU1DtpH*R*? z?FG{he>BGWTBpZ5`-i7$Y9_)tx9<=4|LuKGH7R;XEjYj(ock=xu;&L_mzka2SFsCd zXT|!I*T2&3&R%~eP}qGKIM_EA;N3Sz$G!b;4{5SZWlwKG9rxaVD08^mo3r0dMNN+m zL1a7V0a%ZFFqeH0m*Cd>cY6rw-JO%&oxR@ue}PZ(6o_FD0C`m-iEI{1t>iJP=*ye2 zO{$g?-)8S8G|Ys#?4qC6uw`#wVb`&z{Ep=&Fn`NT)5qL1_FF#CX?cV#yX%hCEQj$I zZP?TA*Mrgj%>HNj|D(DLyzti1VXaC>odV6gJ>wm1RZ#>ukc#><5{eQl3 ze`i;iL!sUKG$2#aOy9xMQr>-l5xcBdW@U9e6V0u-U+}0*wXrFaM%mpxbeAe;efI!Ou<83qAU?JiBm{9@P$ME-W}W)A-uh zC}?qP{-GgS>Tg)Lp@BQmP+Qw-I-qZyF3EctZqHy2u}AwmX!e?`TG zeW4H3`yNjZ->=Eyfo{^`n~l;w$S!!Fe*Njwe=gD7YBvh7%AeIoaVGo<>*bDJfB|;# z4$v@uD>p$=sY#VC0g#PB1J*ziU1@{c3z*)5$p;+=uu1+Si@qf7aJK z?G>{BgC6)y|DWP2$N!ds9UnXYf3MS7+pzL~IR9^D{dxbN;`&48|J*0f=e}7!vvYht zlC|0t(jrUspSQMDy-q?y@zItT#^K$CxplUx5{Kycn!F+N5waPHLzQVmRY^n7Nkac@ zSEa!6z$qZN*?-aIOZp#Zecd+Zf2^#mKl}fmQbw|T54p>Ko5YWr&iW`-rNmx^qr%S6lxmdbL6t8lQv&W&5UnIe$OAns zMujBDxGVBsUp|U@De`49~icja694&pUY)`DPCKikPYeV5&#o97y8m(sU)34UeLalxJ zHV>L;iv{Ryojb4S!mmGe)%kM$ALAu`FdB0U{cmrq==wjMm35N;I&16C{+}ng=H-9h zIlJeUh8PxipOBF1WCM=>*Y~AQx*1S%1V3NgHrXriIG>yle@J2i1$%6(7eo&!ghX-+ z^7#lDdBSZLw{4dc#vbVY{)V0X!+LHe(&tVrBF5n+m0<_c+x;R8@(1=aBMP$fKePVp z7n6e9&j0#KrvHQBhu?qN=swGTPjY?!`9GrI$$R7gep#HD1fBBn*JIBh75Shp*YhM~ zRRYdt2Md*|e`(_zvqFV*l+e8n?Yt_>zePk4=Kt!zyT=Lwy2bv}S#PudZv$k2PJ12e z|Exa8e>~0gW%<97)~gYyGPAcLm$p{BPbRI_hJLeT+TsM}=hIe9j9oK0wb{#;HgiXB zaQ-NUrLq`O2?ml|aHv8ab;Y0@VR~B%ugUx2v{#zMb6;M`s%Pd$1l@0IzN`*do#FocOoQO<_J4{0 v2VK3r+EMsL(Drlw-;-Qlsr_$m{jX;S!1MKdJzvk)mtX%Mb#5820Js4Fnof9q delta 21265 zcmV(Hh2mqW1!e9Uc?S1W5<4BfZ|FxbX+9zu;y9R87VJ8#lLxQu4 zZ4z>TteQOCeK^9BL0z`wl4M9WhZoqVn16d}_YwBr=8Nt9icsjo2C{(4scLgjfZaPCo6sU??n^`@aLZ%_iD9T8yj5(|F$=}Er0u8bE)=PtGnLmu5D~| zRIAfk>vaF5x{o}M%4?FOZVXfT=XrYRkNxms5`Qg*xOyY?z{gR zYpdPPT3fZ+-PT%rzW>j0rRMzmVH*37fB65z``^8L|JPgX4k7^TKTv_S`Tjr0h3CKb z(oLmw)3Y7z5z3zP2`P|6$WtW&hV&t+n-zqQ^l0TTd{T()9=5|INR^o;yzH zj{Ico_I>rO8^^8}gnxfGoLs;^Z-F>~P%unhInE@pp6|VWmA_GZ;qSXFQQW|r{h^yA z${?Ea$x&)NIUfdnHJF6`G>AgwdS2s&=ccaOQh)o$qJLAvMoPW#&f&)1>z6Mt{B%Er z?F##TWAT+!tHGnC?I2A2IBhJ9Y522|9{$YNqb)QQ^$YJ{hq0ed;!x4cFfHs8IyjE5 z_dV+N)~T4B?*(b&Mc_$S_ne|UT-u(D;Vu6@lWg(}*Oz__?E??*2j1e;iNT0CuSIzD z$zEP*Hh)XogCI@-P$#{E-tMXTFY3+l(OWfrM(T&}ddEE#c(As=ypnm~nkwfp43czb zIDCDhcfFBK>4nIaH_%h)U#ko;^wR{Mm{zbY+?fHP|I;W<&dzVnpb4}@jJwef2T|<1 z{Y%y0e%ypQT9lz{xp)7DkCwI(+y7BHqQTIl!GBF<$+&16ckE85f@Ien_9w_(PtvIW zV}6%jAiD)wy9#e)r*@;^WE3{2xl(o6wq!DDm@PUBC!=#eUYxd-Fvg8+W$NrUNT_6d*cqHqwCQ3 zzLH)0lGXoud-cn3>P8SBbTRaltX+Lo>~Gt1Ah*js6OQyW+_E4L|3ie`gyWV@661k4nQQiA?Cp;A->+s)R=1ip z-)zIxf3+tMP|44t+`WaL(?__iI1;v)M*^PpY|0^-@=6g7Q_pnqMXN=H;K*lf`plbC zrq{e{8uWa+bZ#(Z=gJL+?)lLF8h=>agT&Eh)^Y}?`5g<~lb&W>Z_!>~3O6Gbp^3TU<5li$tt6vD>LS zaIvcgkf7H$duS9fRu%t`LXQ?c!J2PHD#l5i;p){UJ;6V37hWya|5(JzhJOi9X9iI2 zB4xMEuWeWTtz6gF*DJ0!3PR)m38U~V_Hjee8T=S7f!X%|*6PN_I@|v{t843P=>J_^ z>#Wc1|Icwvwf`5*{Uz&u4++=(T>y7`X1I zg_Y&ym9rr1BbqKiyBAE;*?-I|Gjv`cMI#F{J!R44uXqn7gBOWE^!q4Diy?!X|E={8 ze3fVrclUSXR;R%Tm?GTchh426DeF>9l~*n`L}qumU&rPw6XosYwyiv8CeKzOLKrrLHK2q-oh9+$>_;C#vwz@v9`ing7)lI- z#zNv=`3sAS|c3$&-w`*S(d|$_G#t3OkA71vjmKSQ;&P z^};yWie(LiBRF}3FV+G}+n)nV896Fn6=-VM+ikLmbBiJ*tbeu@m?N{U!YTbCgSl2C zlJxRr?0Z0v`f20c!TWFb56|8oA0R=}Tojh?e zWb}eWUqZWD4e=MY9sVCg`K4`;_}=M%5Puy*r;0!SEHc37 zpO*=;ob z*!}cTpTO6w^CHq0E$B;4ZkpJ4PwGEE{>b6_mRh0ia>#J*X`R_Td%>f{p2ZGEt;N>PG z;`Zj{>VNiIO)NH7;MeAgJi=DqaGPl2rk8GSf+i0H1*pJQeQ<_!xsHwT=C;~A-)=0!0g2^z?7J|HXq;Ze(PXS>0e@Tdr6u(VC8=Arv}BDweGb-;_1i*w z?jOnQl{=ikIzQ1n%b@nwx8-k(!QXDKaP!i*D>86l@+*4w_6wg@fM$`HAL|3N&CsCX}LGbsV9uoh#)>+-?V*KCwMrR)X`5af-{`0uD zAAh{=;QyVqwaot0U27r#@2+*`{Qo(wC$|4QtzGASMh#T@A8HREGf2glU!r3_OusJc z)>HNBFVv~a`gE>wVD*1LrTPmLYF4JdK$S-AvDzq8aznCJrqT`h+cgRPGQIg;I`f0| zWgGC1sW<1eWPIya)RTX&S6Tj}kexGxSbr1-=fg*k0`Btvbh~Yx|FPO_chUc|u{!tv zJj?av{Qrm?uFoa_h>M!(t{!^|E11R$W`(oZR9|{!nrk=(&)`>Q6(ycf5Q2D`k0=Eh zKSxPScx9d&{xw7Tpw^aa{|m$?>+NaslaBVJt$G&$+d2=1L3%?0l0BF!<4(i)5Pxzj zXjaY8@(-DwZP&*P$49k@mK(9$a*CHDw|Z(&o~mj4B|Z-ANctiVhj9($0A)D|b9*PT zEyWY3mt1^Y<%cYLBJD8?E$-(zBy64p(o%>9CRmj)U(cZ6{m>ye`$KZ21fww_;Lyj| zAY!nwssj+wzY~NPi}};D4A1bXnSTTbE}1=$9)JE%HFW8`C~s2e%7!@XlQ?becDQK9 zKTB}*L&c%InOrbcek=+Q^;a{5NF%Nl<-PkzdpRjIhfDVmLn}m1M-_zG2Z@jxj#`A| z-(R^1naO`v{f8_t41j-T9(<`Ji1Oe1bosBbvCO z?xQD*5Lkr^{zr_OS7SF>u8TRLiZm_sA9nWdad^H?I#7B3A9;+{1M0tYK~ZdVTB~cV zx&8k+t}^?2{4pNj|5~Kr&94VtSpSDDB2PyG?)3k5JKFx+ zX?KbKQ~j^``G5NBDeM2(7FjL;#F$oD{l~JZI)zd;xujX0i==<b5UOo=l^PP8{?YMX z?^wP5kjwkp>z(YrT9`VIS(e=jqb_F`*2=cYhv(JVll;wP(`{SHbUL2jPB^t8qrqln z?N+5i*jcqXz+!T(b$`Rk)6H^5ZM$z(nr$vc)b32DBIHwUxxb~nS#?vj7NvET2rGy? zaEHmPB-b>a_=JML*NnoF|Mv;RfIH>?4blHMI_=ham+HT^Hs<{QIj&jq|5OuR&VKhW z>-bk{2K&Qa+4(o_pGP0#4*9>e(USa+wT*5U?LVDXYaajkJb%}$^H02$rJJSg(D%Lf z;|qA^b7(-#Jeug+WKX}pPH;c^G9|y#7*hT8@A-{XQCw-KGDx+g%<1-J$y5op!f7xBorM^$CvJ zaN_xD5DfjTI)Af*vrFIg5C!Tg4N|=SO;Z04H@-+-%AsElqmk-Q;ux@It1cQ)sS&6k zj#C)n8#om16?L9#dUEE8qts)5Ll;RNTC zGzFC@xpc=qO*g6Q6fcwKmQN^Em$5(Cs^^m-B&F;AU4NGHRHfT;jg1F)?T4tNOes5) zO&?oG|8_o?!zplFJ_U!~OsOalnQ6A_NS7qvZ8Jq=Fo}BU<@VX1GZ{?fO$~QL)w=fBB+S{oA&umbP5W8RFnXSqJPKD<1 z%PhB$69|tq5aCZmifxCJ2#Y6KXvH9kQaaARR~7kpeO2XuX`1m^W87{3xAMQb8_54R z+N*Q^{~XtECI9PbQ@wsk$(ZUiu`ese^3YN&Reyz8vS{R4b?IgYDBq(l%e}M69#Wj; z7lbW;SzVUfM@uOC4QGYT7A2>riQy|VgL{jKVbcO|brzVN88$5stPmHBugvqnzWmDg z|0wbTP!M7R%109c?$rM~9kKtny6p|*|DCng-2V40*9`vuWt{!d;)L&G1cdwfM2%^I z!hilxcSQEV9yXMTrJ|{n>|i&K5WcL~8dvf`n7Ux^~+8&CufT z0v@EPjPUTV!gXI-wvLO|-Bn91$E&G&*vtZI6p--c#nWo^ez|a34mGA0PGf}O+G&(| zV~V9s>9?X#8kR|`-JP#vv+^m?>;6xbb$`r+4NuFtc@U#4vy0y?kNiDfmGS?{WIT@H zd_6+$4_``xn?j=B;C>uq6(D$v-EL%_}Sa;pv!6s`PzMLa9wNgf@??vVem z=%dvCZLPPuc>Y`M`S%~5=lV+HKL{Bq`s1>bks=ftQZ-xvE*sS1^-;eC!osL|gs|54Ks6V~C)A{guz z^a;Z$k1%!?BR-18`Re9-ru0VDbMupf0Qe6xa~(o~4el;*T+6SuCP4`0O2(;I(S!G>>IbH)8A1VKtSe^1lFs`o_~ptt&h0 zDP+?zV6Rzhg70h4o4|`2M_yPB?>-QqrQqD!!Wgbs^uck6^za1b>=Gl>ORQX8+Yz zxyK*luKcggn&f|V+iPo`b*le9m;ayVnpyursP)peD4RR|KHO>O`!8Rf^mb48j}Fh? zpY)DTnksv+v%A|nIXU~`c>lCl%AHuqB>sh_nrGbk^N;iy2i@V{u(y9$&#hXd+>0g5&8Rsi-F;cr$uCR?tMvaq zG6}fL|GO&rpX(hs_N$oxi3woy^Zy*zS6lzl^2$OBiJ5++fPe3z6PClLL2X%}=utb6 z2}YuO`*17wN){2(>$t{GZkBZu^07m@?Zbxmj&8rG>XC% z34uTqc+BrV&eH$ZyHfwRv$oM)?b7$3HsYH!v6Mw7uR@}aYt5t35+r2G~0TE!>KYxx*Sy5X^#+5U!kj_qO| zvF2%6PC1AHoI|{oPq5Zul=ShW1wn-(cfRGlwFcqjCfX*cS-7xQ4~>d ztbgd=($u8ri^cnC{QQy8wE0sR<8G^u5(PvUR4s@qF2G(dsGL`CmSjrq)D`fEzJD1F zJwHYc{}O{eV5y(~*MxG$T}8R%p1-`jT(L%-uwIB#RdIBkY^|w&G)%TuTQp^cz!R!- zbJ-_%?H;}Ruz&dNla4V{|7*8aLEYo;KYz4WH#S;ps@3kU&cFZpJeR7tzCC=ecHX?{ z9UrN0dxyQ_odfmm{p*AMT?PN^9iH@@s<+_!-jC7!uU4C?{jcgUy7H-hMW@x;a2&N8 zjc@31smAUi-BfRYs;QG`kX{2xQg5P3=#i7GsrJMEvf8{%({b{0Wo3{ImZSJ$1%G%$ z@5+yFBH-mgqQ-sBG>7~yQ91Q$8 zQs4TaAG<^KjtiI{$iUFO3ryMfn}0O%p+88?q<};?i3SR;C<4@r6*F&G!F3e>m^4)~ z_WPi;_F;-Qiam@B3Fu@J`%XWK06-jwcO9gcuyV}I8jU7lklv^uUc4`Dtn5vlKI7Z0~X2f$;_*Bo#ftjW5kI?+uy-_z&5b%)R_gT)Wt7Ekk~STDu^Om6UJ#}ryfGv$CT{G)Z@)O6QyLGTi0Fd& zOF(upeD)%CM@vi4(FiAwP({>;edG!Wb(d`v!Ua1C(nL)FiV1=4hf5!z@8f22!!GbMoZ{ngw>LuOTek*acUUyOwo(ZHEap| zv|hzF*1ntJ;dOK_!rb~iJM1JxXQ4y$lr4h8fb%rn{TN2qre80@K7SMJ8Q{yivgcp< zLp&V`zl4L#!YddjMTwiRh-g^i@R7QXNXAQEsz!TJfym&49Mm_IE(&uC;(0bYi?9~h za0ll|^hlG1>&pOy^$P%FLJI&*1g1lDjv}ixp=(;3=Rlt;bSS-GaFZL47P|vy8jg?W z#y9F57B~PP0w_T^gMV{^D2G@}7`tGwBVfQd!3dTPWE@B&CUSasyr4bEpP|e2)f^Zc zSN5ZcI}N{Y9E}s#0pRBtsHBG@0kwr0fwp7{_tWWN8sb@d6FDFzMKK6fFd7_!w{Cc2 zHz?sN{tuMb7)Ssd1ptiWLkE-Cy?~$R44l|cKq$q9TNDyH|9=h${S|&KB2O8!6Am-? za7Xi`GHLP_a<>4a8}iEXPT?BQLH}HKG+UU$515r9jDMspQDTGlG>mC6LqDa76Rf!d zmtykpU|<_fz7aWLScMCMnGJn6VZN3)_VG+3tE=S)aW6w}a%>28jJXe?4}mh707fG$ z2~d8vFnc154}VF95ROdE@GID${ZwmL2|eS@L&QOHU0`4^6GYv>(Oqh?BcdiLL-4u1^FO>(>iW)_Xc*iI$E2sSHL z7m+(m2qu6RK>}-qxxw40@|l^CFl9h3tI%_LcfbOe{JwM(hmjT!F~x>VeNjlJK0ojp zjfndQ(xi_pE0gyOiUTR?2gnoPwS>h0ppc{pvxI|07W%O0tUiMbdC9{XL?|Clmkv*R z$8S&QD}OAzM~8d+7%Y2&ja$pWg9bs!BhvfzQ;QMQSt1||&`V#{i@)=Ha(_nNt^>tR zKq~NESe)TaOT*wtRNb$I2fE`i9pHkr>1b&ak1^mv;*SD^)ufLnZ{#LFn(6x>2NV6b zXO9%yj7g-PPN{5&$D2eH)X}q7s)r^kX~MFy=YPSeCv-?u9XMkhTGizRG*IBq)NxbC zSa$$!ARRtOcI5>?1SS9hlqNulaKqq#xEa__BgH8YH_!>sjRB=q3bdTztFGscNgu!; zWbTmdz;_&Ei$M32OClshrI^ELNg(6lO@S~#of(bLd?X&B<9`GZn%-k7W3elm8~{TO zwSTMXMJiC2IXS=rhv?3tS8($DSN+^&9#*G;?N%Zx)ce5hV`zi->H-QskO>1149%Fb z*;e<|yCX7>JT^eaY&7?R>~lppdxRz=pRuL_+>H5$@G-}R-gPt?dMx9jh{RD?fVwab zE$9UBa~NpB0ybxWyFp@%ARJ;l9AZijGJksnhoPx_ipqk2{Qe{rWe|_PgLIE9$wt;< zP7MU*ss&J)4gX_`2tq3+MME~v9rkkf)V4O<)rumJC(ugZj+~vt}zi(@W5;kShhim3d=~ zRV5?f`vX)Jt$hH7n~)OW(kJBb6^QjzX0)F+y9> zHTw|W>KNWitq_$!PK<`WV1C10MBvHWo(4jQ#fXP`(}B+Qe{?UH$bY|e{|P|Y1#%UI z#$L#xr%6rejNHkB=MmKM1LfqJ!a5=cnTa(!$7N)qT%5VaAT(tAR62(B1h&0GU3i+1t@Y! zljRZ|J{bBjVIw^i$NoXl$Ql;e79n0LBRs(q zXyrI16APJEqaielP!Tk8L(U|E1-pDkbbaP@w+o3=Jgx*(UdV81Jc-AXq#-f|bn#d; zRg>ExEjT80M{G`U&~=D(dvb0-qoo3)4NP?dh^?gQXm)yzM*lPzkpmn*DJ#Ym(Pc^N zWmFh|QVZHsdhL@yA|`*5MlfYrAZuggv2(*YJlyQL9l2Wu0a9+D(8m zy)z04tC2gP7qVekU69Mcs}P_FDfMG5#GwfSxlPGv{7xHF5!~e2fK^;Yth8uZj`1o* zG;}Nz1~wo0sW!^!@%@je^#mxlx*#>6?So9(lW-V}0_-DiYSw?WrL6Udaw;i#v@6Xo45a5bd7Y3p_yee#C?=!E(U3`Z8G zYHtr35N`+;jy?fNQHj7qX%sy&yKvYG%V)wN7{ZPyg+zb4%+3*R5Z}3+7`u9Il7&rk zWT|R2Ns!&)&e)KEBS9NDXa{80=l!}2#>|4?O~Tb(12-{tK>v*L{UGj7M*N-Y zB=15;96^7HU5uuF4o8W=z{=6ssniLHi(+NXJIY_74TjiByX7Eik!u1#jvl=T2Wl<*jXEv02VkI>i1xq!>pGq(M;p<}5UWu{qpFX_A_h`F2L>1t zxw>A1^WbM3P$55S{sZm(z>7j$?)eak!zQ*2<+D$;+} z?4mW?Y$V53;4l>Bfp`^0@;5T046OF1pdjJsgMj@|ECE$ej*#fZnW0eP7T8mT;_kp_ zskmz++gmN$iDWEcT$Na7Tl!0asz@6}!{s4Q9`$K_($gQ9-u;`0gW4o zJ=CWhoVqNuzsR_PYt%9AVhR!%}OjnLu~#-mopwvd}PchM?L66!=cu+3Hl{ zw7^hnc3VV+H0&?<}#f)pQ;#Yxr|J3Jc{L$BA^M*00VZ}%R(Ke270C$h-mR?k_)QREMI2sXcH=n zX2fJUyagtZ6P%(_{|gdJ>74tMswf@Z01z7kp%C z#Z}%UX8W1$ojYU>29zrrar6M;EZJyv^dHe54pPln`>(oYmx)@8`g_PyU{ev*XK4@k zFo+I#UNA=T#&=^j-C9kUb6WN%EliG?TM@Fy0vSulWWy30HOx{#oRhFA8Y3*bEpvE# za|{N^j6{x_YJ6-~;{z{*0DgabXlf5BN$$eMN0aR-Cjo_%6)H0V{l1e*Dkgti3yACI znOrpG;Gc^&M#q`=NWia4z=`fa33aM*fmRASVvIq&AB!wnG6XX#bv`O|`i6@}#hwcn zCrRNp*-ajtFo1d)Ok%bUGBz-yGIEkA2FlWT?}c{-4cGz`1&FZYnPwsyhVC*?N|O@q zHm9NzA3ToyVTR) z(X-?&@;{;xpEw(#^O%#&EGG;Tl%^R}Xhk*y@N_4W|12keL;l1)MQ1aUw~v?=A;={z zk|yFt-}lfl(8TD6%P5wJbX5htSMXex=RfDwl- z!iJ%ng~Y=QYC=nwA+d7I}X1M9(b`!%|B(mD# zaYnS0_^Pp=PB2GU%cTx$&=jiDs5EcpXP6LkgkK(iuyo(VUzjj0adopi{&jDO~@P@A-*3vv)QpRaEPs?m{d!_tEQlmQv#2{=HRYQkx>{0$aS<%AmYB~ zlUd~Y(ho~cC?r(=a9{!{v^TIO>w6mcse_nGUMsgE8A=5iH8R4j`ZHyLus9un*{ z!YU?`I%Y@Jx&1gw61yV_(U@@-m?})&XDtnXlR?h*dsZGE&P<}0jZH-7B09SM0YHvY zy~RJG3Ngde1BRVq;GF2LG`iLtfk+cQL{Si=l53nW01C@HBTh_0bc>MV9SxKc{2-bZ zL2F}K?PPwLQ(qfY>(<@O!GY;uv2TaoAdXACbjiG_)6NiQB_7Aug_%WrC!=S~79C-K zdzs5^*{PlckL-#EN_9mHl%rm=(7Z9`Tr7Q@jj zl^srO>nr6vVN@G&I=6D}4qLu;l)4>5Yy7rs{=+A70!ft5{7H@`=#fru=DyioRRINE zR^b9g5>8)mO5q_GJjV=3FS~jLQv+gu*jQB+8iUJlCC8srQGk4oA_pl~qe@fD+;!wtkim8I}l z=4W=fnXngjjWW0Z|Bc%rG3r2n7JnFP+hWPvN}Y(uRr_Qa^z5EP$-`x3J4mzH_ZRW_ zo0vDi6r+3PcrfhbMGzY0Hp5w&ewJ~|&#ROj((lY#&N1&c{*maZbYUQLO=)|HWj!=z z7@ml0YQ|0bsHNn93D`*ox66#Iw;n0rDNvwYr$*9TN&l z;tj4{P9oY5w2#O{-ev}N&0O;VfF8vziPEFFd%&Ugto67;AgaQWEC#Kn#k{$!ENX$% zRTT@#2)6K9-TX0Ohs!9-?+LDWjwnaaGi~m zLe|AGoTc1a0Z&?g<}x)(koKio0MC?wR}R|%5JhdjhAda?2*5OGzW;5R6qJBJ_mqqK zpnNowF_M*RD(svjbkiJ=873f18%!#P0is@v0&0r2oKq`rgq3_Vnj@oeal5N15IvLP zlpsVu;^D_+_4RP>3rqZf#jq*l?Faw?S178W#Yx$ta%e3>I#Z8m*;X9b0k@Q(41 zT%V29?@AFd6-hXDOcg!$yIQ8|q5!DKMnv`nR)7~BBZRU;SuDe3Py=OUSSd&5vZ_MQ z83bV-i21~xEEgED*5xt+%`CP`I(MXVtR+Rq8xPPxe3slc0|$^JDgt52Fl1N8>T#Sf zyxvkCNi~CiRCa>$F${{n1>H6xsOOT9?gd200;091(vtKWw35J2thG3IuSLpi1uQ4f z*O?T4Mad{58FLd_16@zW7@bec^66rx$2rC6W=RMAi8vUuUJZO#ZTLD8@d48r8^xI? z#m2piKH$^R8Os}Tj9D)`l?X9&$k6yJ6**9vBE8IifI^3Fm;q>^xSH~5UeT7j z)HFmG75CwHoY7WDm(a13wsXYobGeK{t{E^&4p-3=1%gRgez}OGEc;v6&Ih5N} zODTtc9FjGkL}u|qxZ1@9bJCdxcR0WuYg#fNEZ#&!-e89|8@L8aRsuJQ7vwF?l^(JK zkdadJiOh!|S8))IIWMGP`jUywnj;t7vCh5_bII1L*o1shH8jSV8ateN$UrV7m^LLK zfaD5cSQ!jT=bpho z)pRPc1l+QIX_SekB;q!Ww7?c;*%dDILSrTqc14i==4ETGw0iq@cOLZ>}(US>d0 zJGXryL|KdsY1bIr2^AJzC*>*g|I}IHw>?6}=fvZ1swNk_vP*KY2$uPA@wg001M@k5 z>K0T+-G(C6Snw$KG4kUJ#vHre7tyzA$Cazza2&Ia+6q;9brR;zP9g#|Fb#XHNQA8| zw#f%anqY9QX@GG%ctkULuJaAp*TT;Bn*~e`^gYU=WHSsoIYEm6BJHt)Fd2FdS>iHr z3*DkYG@AxfcRkDr}bEZrPOH||h8Wswy^ z$JtxiT#ECUR$J-DUNKgipzjvIzl^U=E?AfxOG}&v$@@<%(g7WMVrrsfn_JdfOh){c|F4Z>WA;;u;vcgi8tgCcT}xsY?D#Vu9@O4C8Bj0l9< zGtEn#Iwf*EQ30@mprp@!RZ4Hg*nFZL+we*Y%8I!(Wh0|uJuCQ@1y*Q(^Qt3Tl<3TN zN=l=0M+h`F*(KD(1ia=<1>|ZdaL*p6cV@G;gfN%v8m9aJRy~Y|9#+*dRA-56=Hygv zi}dG_a0(8haN%%C3yRCay_AE_(e8B0`G{v_U$`p843UIKmxWJ53^rux>`#pJW+Fm` zy*0Zc>r*|yNG1~DjW&;eIMCD=>lC}+gOu%Wl3#|w0g>VEO$`4&muFlR7WjyE7$8>DYGH$?7YcK?*4khDlSDLB0|*n;4wbI8@O%YK6Y)1hFY=g*Bkf zF>=h{S)eL9120(d@Ud1X>nIeEA|SG=vZK&aKnPZngT%JNn9601RWm}!zwyNVu2kU>?fkURu#}O0-7l;q@#V!+%&^*j6(z0s;m9kno>!d z4lA&PzMsI;M~;v)VKXX=$p?#bW!WqFAz1JuLpXV=O=$xWSa*tmfuZVHeMgKjkSRKa@FXL>WFbiTaMbBq z$Z}rkDl!KKl~{5}c+J#cWK0=)8YiF?P$|AZM|@4^C_zdPX_oFtb~63344z;Xazboy z?B0wh&MC?q3Nk{jDutA$(e_m-5_rRb`9f9-HTvv-@rr%3Y}V8z%?+u}46jT{w4JVW zI<(=nNoh$o`VwDIH&Q8R*iomf6o_YEUt`cw&5fqE1_(I;0?D03=2pm}+d<=Sc>} zOp~iCE`cdP+l+{O?&l*XjoIDybn1mlVXJm$8H-z;(3dbhu77=mJthnExhyXlY5A>C z?~hFsp42H*4XqziIlBo}hGBPxB|m19T~rc(#fE_oUeGsT`Fe;dm)ni5ZwG)xc8lX0 z+tBoPmoxDbgcXa>nJXOlVAXJEeb;;j$uXrz ztnU%Tw8UYSOSX43{uj6-K=u>inc&1O0=w}Lwn-Tyna4S$seQ})B;s>|1>q{vO>WSAh^wS=c<`-_)W zS*iTyqbNFiZN|5ibP$sDEh#T2g>!_6wm=x$!uTyTa9dV^k)jdGKlxYnq6YLSZ{=IL1sjOg#!}U)46eY({OR2k9 zdXq1%Ssx}63*UV{p2dV6{f7vDHu#q+Y62MS?i>OF+7zTdB$nhF2XSE1$0bZQ`^pqT z7bnY6tN4P4DNOh!GDp6jLqh=Gg4{6@84fsI99oV|jb{KNF2zgIDq_b3Ab?1sTkw~Q zO{k%!x+dsYs~;w2onOeO5LScCDS)glQ~;B2GHW|aQ6h?^*{P%1$fvA-kxW^(#VKEW z5<`y;^l zzR3J(rs-5o(?WJFS=tjVZ71N*#~c2%B0TZ*M+*lNENtamm% z#H5!GKFquJGoaalN0z65NDEyI8R}iXp)F6gFmpiLtA&2E76k5vSnlkY-6+mt#2q{P z#EN1A=4!uTiK_*n9dqX;3_q%fvm*IaJ~F5!0a})Xfis$e44p$!CWPH(lc2ze^@F4+ zF!}qgcidC^C+hG>{jhU-yQc(PGADi_x@X$aStBuAMPH! z--Ed{)obYC@aR+>?8C~S+38W!!O^6x?j0us{lD!U?|uhAcV6!w>;t^;8*gv+PY+=T zg53_!eE0pq&aw0E{qeh_lispo5JD#a@ZZEu4{r)b&;kfs1Xa5+Xw0m@XjJ+HkG8(NfbBcp;yB+A*c_ti(h(W#Y5kKA^ z9v~!+d;j(x){0o7@>qX@{qKBx+#^6+IN|)T4->=PGl-!WF`D!WJjf8^1EAQEdV93D z{|2{35NG%3@cZ6}6UT-Mz&S(No!3VQnAb3oeVPx<0HK8Ywzu88&|KR;`5%F;3BLE?GNeF1|1h+U@Y&y94YX1!kwfmiHo5~&K59&ME ziq}18wzK#BJ{^BY83!i0FED}CQ4az~#=ebZRxI(uECvHlN~uyd5A$+F&*Wuc!(k4Q zvm_8xYKG&z#XxcHi!?Nhu;d1(P;q^0iLw_eoKn&r2dXJLB>Uk0kv5Etg?`B~H1@V92Di~UGudv+Z)L|XYoXb$l z(p&O?$dc~a4_^v`#Nl8oCULR2aK#09N&7tIbC}un9e-VHhd{(Zg{L~f;RCX~Ly%x) z0*U3vl&?!ESBtpWr!%4Cki!=aQ5wX<_*2CHZws zFtT`OgVcY?e~Or;B42;5p1*2heRA9S_PFtKY7342R3AkuHZio{6_a!(%<2R_0qhbJ z?V}Fp$kct(rV@96OT!tPw@11$NK~BjL!oR|vIl=P2wk7LX#ViVA^A&e>Q-&dd}(az ziMmKG$(lrxxUNA+s!`p@G<8&k#W<(N5gA6<%B5>K4JM|4!Z5C8fFi0O*9DFX=WS^` zoLs;^95?I_6RCEk<)+5&qUy9dZKeMEYv}Twk19;aeUM#ZoCN~qw(h0*c6e^Xf>i5$ z;>6-iv}zyqeFR@Ou_SZK<(w^@H?^KpvIS%TI-J+m$mcOHmQ|PKYB*%eH6KO0M8B2J z{?b}092D4pAue}}dZ(7akSS;>?3Mi$YVJ#0)ie6T`FurT3Sc}g$Chdtaw z?ba?b){1piGW2)Z7;7Tu^O2i(_AliNt&(>cWLf(IY{mc^Uu|Bd={R}0vT}WWy?hZ) zmZSJ$MTZrwY{SHMFhmrSyX+D=SgeMrBl%hQbM*9oZ3VO^$5DvY$?%&r?ieGaV2xIw zhgG<;?`B`j$+Bf_)cMkg0pC+g_qQ^Eq zLLdIQ_LlG&z)u5ZpXFjpw=M$hs=EFX8`;`8Ezfto#LR&ml|aO=d~G_El7y#3eCW$b zT>1ZhCb5j^QWsUK=h26{jOItonWPYXKF<9#l@O{diCBL>>lI;v$!}QInyB&8maFG| zD1aRSNwD$(bkPk4sfZao`>=)nNTVMwQkWhpi*RK53wq?p#G+PQ)J@aOOkk>Kkr}2^ zKNig~pK*C(!X)xIiin^4QYec%ctccFbDrpbyWao{=gt%Hr}_0X7v>C7Nt=}yf z7z@1XnxHHMQ~BpPpyillgsOITJ?FJ3^Y3ru`lLNDD7tOcU2hbGD`%HLGI8hYDh*P9 zy#Gy7{|`65NM62Rp=&urpCI|D)2%w+J1aE`yj#a9jPOlz7P?o|d9Lvp+{t`tiO)uTv9J=Q|eYtF_J~+egY}dC>Z^k|hh7Y#Y=J|F* zY=aR{{>9Ce^X<(Qk5&R}@nAaAU2QWVhEK&Cw(8WE3cRdeqfhbtSul^I(bfxpe4fx3 zl;yo!OZS3~#b$ox4ktbW7u(#{X{kJ>@6i})YfJG%rSHR*$zSzPE5YD)Ti)JW;ZC>h zkv^@+yt46Yn=9ObStqRCV^Cv%au<*Zzc-iy=(g$}eUyN~z@HC1<6E9Ta3{lb>xKM5 zw-rHptG-8t|1~buO>W>8Mun(3eaj@|i`SO{*FWnwSqw~1bU6T6at$Mqz z;8@YWdTQ{uAk+$DROy&#di<%3X1CSH2j`yQr?mw9LNCZQu3kiDk3OS9nHY>L%Q(h5 zAU{p;i_26RfQ`?v?vF1)8^z+LAmV-g&*kOi3NTA&aI`)Sfl{WITlG$Vw+k?du9K}b zjC@G8R$DYpUiIdRbz(QiT(lHWX>vXa(mH{qpTvVRYK8T}wqDS0_zQda1gb}hA_uKf z-jX#YAk3Rp^}^V{K-C5}EV*>CxhSGCBsv>qM?RtGC_T&jJ7G8(TJQQF(Q{u{m$5&9 zDWNxFc!sat;+n?W&L(1i_-MOC{e->_q9~<3y#2K$n~eW+4cV0^7z6m>#zuE4|0jM4 z{J*>2US9>?ukdkq?N6%v1am1}e{lY=qNMJ?Z~9C)$y(KoUgFn;`ad>*FeJ3HI=Rl!ztp>}W02|~xY%krK#9++e%s6I^O=eRau*R>3ky5|Y0QIjDnP=S6z zDu5_wDEu#A`L~Y?w{nXl^!oOu%K}mTlgOm3m+gmGncD@Scyq-CrDhngj6bV?Eah+k z#KTYSGl&RR*-I-lzvc1exDK!EBDLZN*$if{52=~|puy#Tjr_Q?;=jZ=9F3V(&5*b^*H!oMW-)a?aa|M27MsYEL zvn{-6*!F)KrS8K0jg3{_|5ZSN^)=-G>+Q~* z|3Aln_4UjDl@dyYQ-6%%P~Jq@qDtPGC(b*pe`q{|M$A!u$fj%xCW}Ih2Nnlko$jAy z_u1z0(Edl`coM=d-D^qF=3Z^K>yV_vzHO3KHdFqBG+T0pL867C%@p^{$W!U%HV9wn z>Smb>e&-)?@ImDx_GC|aXo-cD&yD{${~Z5+GV|L^&m-?fzgQ5XWU(Sh@h?l1+Dv0x zyxB}W5S_TyvK0gHANZd$j!S#F@Qt_f&1mJDn+1@mQg7<}60k6%MbZ0z&(^b>mA&zW z_VCLrx*);9BMnRV6LDkPVUh2i+VLcm@2es9JrRw$!~Splzuop~Yh%5O{J+(j`~RMQ z<+A+$ne`mY7Q`3?dS-6^5`o~Z{Re4}{r{cLTDJxAU#Ht?&+UKDa($)zKSRcPRTmPg z;(_ieWWKsXr^d3tR{cbywCZDMw(1+75XORK{%rM^x>LJ$WBjJhR{it;gp;v!g$0z8 z&;J*T|0wt|jDlF1GXk96?(P5mAN5UtqW<6ig^px8{be+3I5l_Z$FQ^={N@OUvgh9n zv6wps&|`gOuAdpih1rpi1OK_gDSZClY3%EXeE!*At~>Xp`})fCznn+sQE}|9^WWZJ z|8I8#{#@O__>cAOoc=${wfPs=ZO5SxfsHYt;#&y_dgbVk$DU!02z7S0w|{(pcBYoq z!pa$-7-Go+G{We_rEN*TXuLak|Ly+a+40fQDYeYlONL(X!ouRKxk>4(xU%#AbYtAp z{)7I%4v2st|E;$-*5~%0=eUN!`3goU+&r=TKg<3Dd!O0=S{u0k>#OZK{eO;YD*gZa zJCdUQ{#Iw#0laQ0!&_eN7%sOZ+!qZRkp-sve z$9`@aqSh|#^e^3Xp{alFMPc^i`18;G$rwZ+@{45m4MlVYb=N;X;O@T&(KPKv(Qx3 z4UAN)9LNWazVQM-uvRhL3-26mlm>mJA1-b4N7wHfy~&L!XS%Tvcz8eX7N<@M_hM%_ zY|un%HQ9!W#lz3W!b$I-w|lDoi+Xc>^j1~RL>(Ptfrr;0DEjk;(=7ISC%dl}couUP z{MUXV|9|Q+?#usy{dZS?H`+k|yY2Ssoc}+^m4HM(a+i~zo*?d5Uw7z#o%MB&|KC_$ zUu$>QkpFi!R_FZxIj-H~9#-@@r7}qSZ>ZK#@89=NPEX1-UyL$0s^QcEPn9oB%fIkr z>g4eK!GTimj`!bUd8xnlK2UvjP#j|^^jxEa$>Mc|x%qC~Xt!E_i>4oFjP;dHk9YPD zPu0XsgmW(6AMXF#`<`l0^oUw?fb}>JS(Y)=KhnC)?CidZT|hf4)}y@sPPaRK{h1rW z?!&;rzPSkRzBxMX?SFenlWiz_dW-6~_ojE;JKXKf*zbm-rbmas+YfpG*5e+`Wgnyi zxb^lf<`xxg%X);na1S4`GTMN%yQqG;AT1XaTr6VK`16bYq5@48%N1Qy z5AQ)~@9EFBH|o1ZPfxhuf5dMhsj-_Z*P)+V97+<(6{h{bQO~4{1(@)Q{?c~f$%uo- z0;ZKOEUJHh`4{y9-A+r}AV2qiY?xl?(VyknrJMAqc0^-w(ZQL+hINPQMx-$Ygv02lw%Pe)e_m_>cAVcB_N&pQs1U z>Hl+oT;=%BQn1@o=YO@^U8(=H+HJSjS1JFiGuQv0<@!VBe>^15nxQLN7RyP(D{9-vO%qur3_^8{&JW9Hi7>&9ra(TN{GD*M}?iCDb*;_4l2t*+RAHsJrz{@>b|%YV;veWmiBLB@*ok2zy` z#49`hMi9}$&!f?SyX=1(692QlfiYls{yW{)-2eA1*H?P}$pY~Z)eqhF?$RLYPZF%H zjjBLVotvT=YJpt!txT)DVrZ#>Wt%7JELMrZdm2A;=Fg%5)C$qj_D>qcRsiyUIutxk zayryZlcY%bh05;aiDkDdKAmN9wDhsEHL=2$SS;?Y&4e=*Ys;i*w3@xoKU+5owbtp| zENG%F79h8E?!2N4zy8=&$IJC!jF~?SwR!!o=ecI(|IH2n z>1i*`U6CS`9rBQn5O#l1M29th$O{e?l>5>r-NY{xqO%0=Ep3}L2Y9TBWW%&`6ZL|E zJ+{>gqK6bh!taXTh21V3dBSa$wr!Ub#vbVY{)V0X!+LHea>kulM2y2tD#H$>w}(X- z<%JnpPKRJ<0q7a9cbw*O1~Kj`YM)waSfLbm4df6sD#rS`v>^`GVy4uJVJzvkEc`sLUE M2N}I)AONrd07Z)6u>b%7 diff --git a/src/lib/Entry.php b/src/lib/Entry.php index c9e33ac..41a2270 100644 --- a/src/lib/Entry.php +++ b/src/lib/Entry.php @@ -3,6 +3,7 @@ namespace Garradin\Plugin\Materiels; use Garradin\DB; +use Garradin\Plugin\Materiels\Equipment; class Entry { @@ -31,4 +32,24 @@ class Entry { return DB::getInstance()->get('SELECT * FROM plugin_materiels_entry ORDER BY entry_date DESC;'); } + + public function PossibilityRentEqmtEntry($id, $eqmt_number, $date) + { + $after_entry_dates = DB::getInstance()->get( + "SELECT entry_date FROM plugin_materiels_entry WHERE kind = 'Retour de location / prêt' AND equipment_id = '{$id}' AND entry_date > '{$date}';"); + $entry_dates = array($date); + foreach ($after_entry_dates as $row) + { + array_push($entry_dates, $row->entry_date); + } + $eqmt = new Equipment; + foreach ($entry_dates as $entry_date) { + $out_of_stock_eqmt = $eqmt->CalculateOutOfStockByDate($id, $entry_date); + if ($out_of_stock_eqmt - $eqmt_number < 0) + { + return false; + } + } + return true; + } } diff --git a/src/lib/Equipment.php b/src/lib/Equipment.php index b3b671d..fd23201 100644 --- a/src/lib/Equipment.php +++ b/src/lib/Equipment.php @@ -65,7 +65,7 @@ class Equipment return $entries - $outputs; } - public function GetAllListByCategory() + public function AllListsAllByCategory() { $eqmts_by_cat = $this->listAllByCategory(); $eqmts_owned_by_cat = array(); @@ -119,7 +119,7 @@ class Equipment return $entries - $outputs; } - public function GetAvailableListByCategory() + public function ListAllAvailableByCategory() { $eqmts_by_cat = $this->listAllByCategory(); $eqmts_available_by_cat = array(); @@ -151,4 +151,33 @@ class Equipment 'Location / Prêt') AND equipment_id = '{$id}' AND output_date <= '{$date}';"); return $entries - $outputs; } + + public function listAllReleasedRentByCategory() + { + $eqmts_by_cat = $this->listAllByCategory(); + $eqmts_borrowed_by_cat = array(); + foreach ($eqmts_by_cat as $cat => $eqmts) { + $eqmts_borrowed = array(); + foreach ($eqmts as $eqmt) { + $borrowed = $this->CalculateOutOfStock($eqmt->id); + if ($borrowed) { + $eqmt->borrowed = $borrowed; + array_push($eqmts_borrowed, $eqmt); + } + } + if ($eqmts_borrowed) { + $eqmts_borrowed_by_cat[$cat] = $eqmts_borrowed; + } + } + return $eqmts_borrowed_by_cat; + } + + public function CalculateOutOfStockByDate($id, $date) + { + $entries = DB::getInstance()->firstColumn( + "SELECT sum(equipment_number) FROM plugin_materiels_entry WHERE kind = 'Retour de location / prêt' AND equipment_id = '{$id}' AND entry_date <= '{$date}';"); + $outputs = DB::getInstance()->firstColumn( + "SELECT sum(equipment_number) FROM plugin_materiels_output WHERE kind = 'Location / Prêt' AND equipment_id = '{$id}' AND output_date <= '{$date}';"); + return $outputs - $entries; + } } diff --git a/src/templates/entrees/retour.tpl b/src/templates/entrees/retour.tpl index 37795a6..1fc3c03 100644 --- a/src/templates/entrees/retour.tpl +++ b/src/templates/entrees/retour.tpl @@ -8,7 +8,7 @@ {if $eqmts} {foreach from=$eqmts item="eqmt"} - + {/foreach} {/if} diff --git a/src/templates/index.tpl b/src/templates/index.tpl index 55dbb3f..e90de43 100644 --- a/src/templates/index.tpl +++ b/src/templates/index.tpl @@ -33,7 +33,7 @@ {/if} {/foreach} -

Matériel dont l'association n'est pas propriétaire (loué ou prêté)

+

Matériel dont l'association n'est pas propriétaire (emprunté)

{foreach from=$eqmts_no_owned_by_cat key='cat' item="eqmts"} {if $eqmts}

{$cat}

diff --git a/src/templates/sorties/stock_disponible.tpl b/src/templates/sorties/stock_disponible.tpl index c13c432..37ff335 100644 --- a/src/templates/sorties/stock_disponible.tpl +++ b/src/templates/sorties/stock_disponible.tpl @@ -7,7 +7,7 @@ {foreach from=$eqmts_by_cat key='cat' item="eqmts"} {foreach from=$eqmts item="eqmt"} - + {/foreach} {/foreach} diff --git a/src/www/admin/entrees/retour.php b/src/www/admin/entrees/retour.php index f9f9711..39e95af 100644 --- a/src/www/admin/entrees/retour.php +++ b/src/www/admin/entrees/retour.php @@ -8,36 +8,51 @@ use Garradin\Utils; require_once __DIR__ . '/../_inc.php'; -$csrf_key = 'add_entry'; - -if (f('save') && $form->check($csrf_key) && !$form->hasErrors()) -{ - if ($form->check($csrf_key) && !$form->hasErrors()) - { - $entry = new Entry; - $entry_date_format = date_create_from_format( - "d/m/Y", f('entry_date'))->format("Y-m-d"); - $entry->add([ - 'kind' => 'Retour de location / prêt', - 'equipment_number' => (int) f('equipment_number'), - 'equipment_id' => f('equipment_id'), - 'entry_date' => $entry_date_format, - 'additional_comment' => f('additional_comment'), - ]); - Utils::redirect(PLUGIN_URL . 'entrees/index.php'); - } -} - +$entry = new Entry; $eqmt = new Equipment; -$eqmts_by_cat = $eqmt->listAllByCategory(); + +$eqmts_by_cat = $eqmt->listAllReleasedRentByCategory(); +$selected_eqmt = ""; $date = new \DateTime; $date->setTimestamp(time()); $default_date = $date; -$default_number = "1"; $default_comment = ""; +$csrf_key = 'add_entry'; + +if (f('save') && $form->check($csrf_key) && !$form->hasErrors()) +{ + $eqmt_id = f('equipment_id'); + $eqmt_number = (int) f('equipment_number'); + $entry_date_format = date_create_from_format( + "d/m/Y", f('entry_date'))->format("Y-m-d"); + if ($entry->PossibilityRentEqmtEntry($eqmt_id, $eqmt_number, $entry_date_format)) + { + $entry->add([ + 'kind' => 'Retour de location / prêt', + 'equipment_number' => $eqmt_number, + 'equipment_id' => $eqmt_id, + 'entry_date' => $entry_date_format, + 'additional_comment' => f('additional_comment'), + ]); + Utils::redirect(PLUGIN_URL . 'entrees/index.php'); + } else + { + $entry_date = f('entry_date'); + $selected_eqmt = $eqmt_id; + $default_date = $entry_date; + $default_comment = f('additional_comment'); + + $equiment = $eqmt->get($eqmt_id); + $form->addError( + "Il est impossible de rentrer " . (string) $eqmt_number . " " . $equiment->designation . " à la date du " . (string) $entry_date . '.'); + } +} + +$default_number = "1"; + $cancel_link = PLUGIN_URL . 'entrees/index.php'; $legend_part = "en retour de location / prêt"; $tpl_materiel_name = "retour"; @@ -45,7 +60,7 @@ $tpl_materiel_name = "retour"; $tpl->assign(compact( 'eqmts_by_cat', 'default_date', 'default_number', 'default_comment', 'cancel_link', 'legend_part', - 'tpl_materiel_name', 'csrf_key' + 'tpl_materiel_name', 'csrf_key', 'selected_eqmt', )); $tpl->display(PLUGIN_ROOT . '/templates/entrees/ajouter_entree.tpl'); diff --git a/src/www/admin/index.php b/src/www/admin/index.php index 39ae74e..3bc0237 100644 --- a/src/www/admin/index.php +++ b/src/www/admin/index.php @@ -15,7 +15,7 @@ $eqmt = new Equipment; list( $eqmts_owned_by_cat, $eqmts_no_owned_by_cat, - $eqmts_just_listed_by_cat) = $eqmt->GetAllListByCategory(); + $eqmts_just_listed_by_cat) = $eqmt->AllListsAllByCategory(); $tpl->assign(compact( 'eqmts_owned_by_cat', 'eqmts_no_owned_by_cat', diff --git a/src/www/admin/sorties/stock_disponible.php b/src/www/admin/sorties/stock_disponible.php index 4e45c48..2b35c40 100644 --- a/src/www/admin/sorties/stock_disponible.php +++ b/src/www/admin/sorties/stock_disponible.php @@ -11,7 +11,7 @@ require_once __DIR__ . '/../_inc.php'; $output = new Output; $eqmt = new Equipment; -$eqmts_by_cat = $eqmt->GetAvailableListByCategory(); +$eqmts_by_cat = $eqmt->ListAllAvailableByCategory(); $selected_eqmt = ""; $kinds = $output->listKinds(); @@ -49,7 +49,7 @@ if (f('save') && $form->check($csrf_key) && !$form->hasErrors()) $default_date = $output_date; $default_comment = f('additional_comment'); - $equiment = $eqmt->get(f('equipment_id')); + $equiment = $eqmt->get($eqmt_id); $form->addError( "Il est impossible de sortir " . (string) $eqmt_number . " " . $equiment->designation . " à la date du " . (string) $output_date . '.'); }