From 705329d3c21be9dc4e57d5c54f90dfebd914ccc8 Mon Sep 17 00:00:00 2001 From: Carsten Graf Date: Sun, 22 Mar 2026 19:26:35 +0100 Subject: [PATCH] Inital Commit --- .env.example | 2 + .gitignore | 5 + Anlagenliste ITT.xlsx | Bin 0 -> 354583 bytes database/init.sql | 75 ++ package-lock.json | 1293 +++++++++++++++++++++++++++ package.json | 25 + public/css/style.css | 866 ++++++++++++++++++ public/index.html | 17 + public/js/api.js | 114 +++ public/js/app.js | 1502 ++++++++++++++++++++++++++++++++ scripts/import-anlagen-itt.mjs | 156 ++++ server/db.js | 163 ++++ server/index.js | 776 +++++++++++++++++ server/init-db.js | 29 + server/ldap-sync.js | 209 +++++ server/password.js | 12 + server/teamviewer.js | 294 +++++++ 17 files changed, 5538 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 Anlagenliste ITT.xlsx create mode 100644 database/init.sql create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/css/style.css create mode 100644 public/index.html create mode 100644 public/js/api.js create mode 100644 public/js/app.js create mode 100644 scripts/import-anlagen-itt.mjs create mode 100644 server/db.js create mode 100644 server/index.js create mode 100644 server/init-db.js create mode 100644 server/ldap-sync.js create mode 100644 server/password.js create mode 100644 server/teamviewer.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..be5ef42 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +DATABASE_URL=postgresql://crm:crm@localhost:5432/crm +PORT=3000 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb47ca2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +data/ +.env +*.log +.DS_Store diff --git a/Anlagenliste ITT.xlsx b/Anlagenliste ITT.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8eb00d8dc68f60a6e224ac254044440bacd30df1 GIT binary patch literal 354583 zcmeEsgMZ~uvu12(VoYq?ww;M>TNB&KL=)S#ZB1<3n%H~td*8i#_p^8RAGn)O(x>}$ zrM`XoRCPV|R4Yh>f_(#m0D=Mn0wM&$ah1^<0R{pBh5-UX1%d+661KB-HnDZqQ}M7j zanhl4x3MP30|TMR0RjQY|No!=#yc>Pye7BDfE042zKch+RfUa_ELyIrOy}1LMzRda z@X%0un!sagv6U6RmWO7EBO2b&IXas9`8u3z#?z{!rCdRf_fTb+a_}2%yFh()lKSEC ze(D&5ngO~v=mvqR3D~%KF48VxNfwBPV%1>qG_lX_kK&>}cru?~etc@I8i{AL6Mm3( z80U5Q%~Oc<6-o<>R5V1o+@%3oG8r18)k}xV-y%Hf%cf7(l8A7msAQse#V*HFSmS*& zW?Dgy)&>$C!!Uwxi$J4kOd_%aPau?vh9ggcreJ{^Iqelv5fei-i@@E=r{Yl5*e3~S zgInS^a-6upEXR9(nYHAaS0!lQrihBf4J;g=SFhc^W7uudkIfP39Pw2PS_HekhI95# z@e@xqkNZcnJe%yq@Kya87>;GWaquSN^T`U2P5;~{R;&fjs(x>lO14E?MG;$y+~Cbwx2Au?k@A&_Xz5PFZ^on1y z(x8k0#}D`Rdw&!Ybk1$U_spnv%koIQH?7Ne z&qwldMM)Ng4#+T_Ygg-&es5`kL{4xNi$0g=^Cz+{J1f6uj;1=uUB2gwsMyU5q9gtE z!*mf>8w}uW)wbaHk>rS}c_)QfMyj23fETibtuVmDP-rk{D@l8ffO> z^En52Lq~zA6RPies@TsXh7Kmg;vcs3qj`^vwY)}u)Th`{{%qF0{Fg3MK!CET2L_0l zus}eF010<%dN(^qD?>XwtFL%jpmt`v%kk}_d$uc(TqsS?VpqFGq%a>TtZ7wA)uuV~ zds19Frs0Cak6}uce2-%95bru(1Yo6Q*fl|Yqt~a~)}KeqM|z8#;?*k26-dIM*((rv zM3hQo=)!x=ugm8+B`P8XK^OrD(d?SodUQS?CqGq3QjYT61%U|0a^oo*;b_Wbn9>sd zR{T%`roI(A6zNrGlpK#zN^%;ny{Jk;C5wU=B9QN;ICM&$c8FKuM6(1Xq9liz zr)O@WX*Tz8gwdAUmu_T9AkqUFVBVAIT*!eKOW1ZKgpthR{M|Xkrz!p9x)W++o^c^r zR2Sp=sP&*U2p;7T=#K&3-v)ifnWf`)V&?C8^T4vb3IO*I+q5Kk|ydARt0Wseo zM{P0*DC1F(#kV-!NIPQ+s~8dIl&DTyH$huG0w*j%Nmi-IoQuVifkw@lA6RYFlCumm zRJEAh9}R&s!I5!C%)`)M6Dv!P{cP$RWaPxsm+-Od=1m{b706hJ zLjqo^vS=?Tj0lei;@iMNdUgTR6c|zH#oDzpIXwR^Sg-S11;40z_g$I&>RW>*_Tm9LOQjdd={E}s;9#Al-PMygRDV7Z-J&0B%jn&+^A^y;2W!wv ztxhCSWQM>&(she;&5h%{JVX^^Xrmmz5!QK=1$d8@KUgK{7WpYc_pZOr^{Wv@U~1XlY`##O2X)iqD=j zEQ%cY?Wa)yX5t=?MBc%_S~26Sd1yxlyJQ& z)XaTo@aWTV_DDWcaTuCw4go*IU7sYkNy^nZW20%$s`%(dKl~EWf6dh&vX^!=TBNOf zg`=m5c^bdi%0;!TEi_<+09wq)*SH;Y_|A|593OvK0kJLXB-Uu@YR7@)#z^PeT|UVV ztAS_8tF$iFt0ECqg#s7vs$qZIJyTb9&Mg_18(($dz_nVo!j*Ts0JrO7kl8FUT>cCS zOda{FV)8Lv*-Nunhspcy#>D`?hJ41M%^p|s+>^F=GtbTzvj?L!cAe@Y(JuBh{r2Wq z2tCs3@30|z8f%ZH^FHOQXnK(1fsm8J=t(N9(p;@~q^i_aYiaV_4Uygd?H(1sU{8 zDwDNYM9fs+e7|Vx$KI`_JWGj!kre{AWK*#$FP^3=*T=cWeb{K5hFz9$Ln#Gl9k#N= zyL|Ufubcrc1=0ph!eUU(wsAYVCcEW;+w=-+PwAf+CY(us?&YI22x~!cPVkeeRaTw1 zf0|n^266~Q(?st@rOx5A@SjOOkQSTjdA=JScmBQKY%9a|r`P=HTCxrfZMrf20vZP* z6CE?x&G9!XQ72h%lJc{1vR6uk9T`_SIXX!d>d;3H^XLkSJdV+LFD(djHW>0(i2ko& zgMfrl^pH`ZgcTaNdT8AQx1?vjT0b=&Y4iCz_t;XTLC>A|3SoxW`qebBz=L+?%|`i+ z3zm1p{y$ONpWy!$PAspaVxTny1v-ty0Kx=V(7%J8levkBvlIP4FN|N&FXM-e-5MLx z2cQ0@;Pm5i(Wc1&WgA#;8=CM;!&=uE6CP~5h`bU?asS8bB}wMUfW??oe43foPj|N| zC-K>%D+JXOo{=J2l}^V&>m9DTKMO@AcIuZ)^h;*pXAL@Pc6CY%jt6|Bi{5TGxAI4^ zWvy0jO0Eb5^A}?qE*n0a+0D;#Y8u?iUK;)ES_>)~kap>79_@CP8|bYaO3&V;XSP5V#;GpbzU|Zxw7Ga}YVPS|UO_)bzxNN8@1#S^gNc8r zif)#u*|cj^l|65-IwYR(c%z#ot$}HpOm4h?!1+BQt+!D`UX~&*xs?5U-f2>kZKCs! z4}_{)=VZA)>h;~S=it^I-8`Vlj*DTo04EOcApQ=Mm>lv~Zafc)oJKzInLI!g6|<;Z zV-q7i>GjI+%?%>ICneY?_v*um{tr92IbyyecB@Y7)!^TkD-M~B=RptpOMckrW$dOo zlQSHRv5thADEmx1DOGk4wK4u0E~zJLV3$y|MzvFfVqZTpG`LN>>7_g510B-Eq!C) zH8(TBMgpC0cmiv_FBCIFKzcH`$%5kM&jzPn$O003>mQSDyyl6=w9Z9`jKGNac`A5Dt+WlY1v0z~(N=Tfp4_Nr0lz?D0& zer{qcI^H^yuHkyZBQXUI_eN_c)sS^?srt*JQZaGg?d{bRH2)6gi2jACuzCqy{tbWZ zN=rYe1KS@0D$W@Zcn=Dg?wUYggcmFd%zuBS0zXRG0Jm7Ip5P9gY#0V8>uf2+0W8eS zVB3KSDH@4E2}L-Nn3{bT8B|P4u-i)m325pbxu*nL{{SeWUfeGpNyrvOp)4@51~2OG zy}NdpWQ=|kW)lz0EFpG-&p@GI+_xEmL_aKW3ng z5i`?D(5o@*ozCOkX9(1P+7fz^=&=;(4m<>dMMeKsP-26jT%LnLXT%BqcAi3pK(cn9YZ)Ul4fLXh( z;|B)lvG<{jhc7=Q28M=CfI8~ZWrBu=Zf;9l{HX1|Spx=Qy_(z%I=<0T@Tr{~MN*=B z#*%|7W#%%p(=r7I2SkKiGdW5|4|_pBM1`#q)T^Lt(|Oj;H9+J`rl)^5jJ8vfs+gOb z`?&ikN5Ntl+-y#FrVPK*GDzZjL)-TH_oAeEbbs_OCa6U-oGqoH2K!zHuThs%2O7eK^V}&#pYp$O~B7kHvQDp+{;pCj!*V1U5cquHjqT1-%@b%?oMiv;@ zj3kj;@F1df>^E9P-m!nQf4f`r{dm9nVCT@_Ie0rSPGWD%W+4^{xtJb>SK=1S-^Le6``h2xp z`1vuX_wj1S|9-H9Kc~%Qt|qh^EqvNPXejVbip}0o^O1$lrgb;9mAv)A(xgDOMXZLE zM~A$D?+`~=5KHbgU=V_d(~VPF&zq;Ivh~3PC!?3l+xV;2%U*(4?+l9nv1Enl>M)P* zn?*Ijg+1ZyYF9fWX@A^8xhQFVGFKv^6l)6hTJ+M7O2oz?Zh^@qCg^vW!$~CxSjQks zol_k~H5b-7PJVC=CJ4MJ|C#Q5!s#)($D~2W@kQi%-w&Phtvn;|D#wqdvwI~n=H3X= z8eLeNE6?Q$eGSUf%HjQejVXknF!7i)^-!sgar`8CkHVaCV3vwC96!l_;2^09}ic)A4{YBpZ9v*K~V%# zzP6u1+8kqtCnQ!)eGgM+XyZ&LjJF1`{CUO3tJPjIj6F;p@+9JNafitQb-&U>@m27_ zZ$Wi#hDl@=)x0DL3^ZO_AS?e)O3Pd!8ti`i59<&lJB-(&O8%@ZL$|_< zm;E&E>a138L)E@i9Movkh3;;{vGPsfii@?4{W}w#a6BA+srG}j&3kk?@u8M}EVPpT zm%$wH%3Y1)vhlrZidQ0BdPU3S5ccAR=Zvu4em^?bDI!i&LM6irifU^&L6q}*+i+Ci zyNLXW+#<4s{HGB}X_JE#!9w&DGzqs#J+Ok!D~lg`86yvhL{sfyl0cnhdNXv+!!Lod zkS$aR&!wUeNLLOD49_;61d_eBo4oe>ywI+ZR(v}x{;0DJwPiI8%!jQmeG;4clgPgp z`nknBcz&mYGGX(44>f_geGgb!4YV(bt2ta7;Qlfi=^$-j(@LsM<&-&RlsV}J)8e+Y z_txEwsVDd^d2jb7oK*?C%Q5gz!<5ll26e)8E~?04h>(3FXtb!UCFXBTJ*FT8R{1W|?!Axz$=o_i%L=iK+h-P52x(Z^91`&|v?X<|m z`@PC2ic-mv5F{c`fimPpm|L#4W4!LcMlSDLsgLRXxC zm3X?=xg-KLOL~<|lQ#4PM5g>e0gXYE*2+m*;A+vbIzKq)tg0|UJgGfdEpqimi_2q? zORk|{;#gX`Ojm^qs-fi0-O@s_a#Cp?(d^?iCuA}iJxMZ86irs$b+!)X_um9`wVsCO zhK9v4YE8`r8P!9GFx5$wxk9w#7#Pg}+wMZ6%Cu5^DeA_wQk&3Z%T6_ZCGp6{v=c3Y z%0($W2t3-QwklOjJUdu#-n>0o3~TZ7RcjkO+A}G=2QJMeSnu!BXIx9%)H+c*n#-h8 z;lkAITr55_V^vg*Fhzx#-P)>2*uBR+6;uZpw3k#`O@ry0_c~R_wve$YwHw?&Db3H6 zN4!_p+?w1?Sj2mayDm-7gpRXuJDrb<_?*>uNv9pRn1Jf5s z3I)nOJMoqWIj8*ndBW97<-6ckb!TNAxi`I7XSJ!%Z)q`1n_s}~HoF=q1#!^@R*_t{ zz~jJLN27~XD5bU3f4W|;seTwG(?DsjT6x78&Z8GDeTVE&c90KbNOcKlHz@16CEX}&@x<*_Ol|^_E$Q&IB3d}^GdJ()t)8m1S@`eIi z?}2rdk$)7Ns>&88UrvGANTQ0KNIHcEhCe#`O@CqoMJPKib0pJPOA{}Ms`B<68!Ysi zsH%&M=)JhJMIddlSMI5iD~;K03EM|ZxQ*wb!1?`gxCweY)9)b$FX!d?I;KN^jbl{A zQ%`H?DN|D$dexH3dTo`GevZm6_2AXlbwo!DsU(e4w}e%-pt|E^jLb)_fc5-Rri^L9}UXiRLil&U>2ucJYA#ITYGa|&@7SCLmvL5 zyIzSR>fRlT%In^pi_+`for>D&-d&2yf|_7WLJa1D;?|T&Hoy=ePMMNmkNGjmilqX( zA>4xqV(Uu;Ev;I!sw=Qf6IwY9h01t1dN91hPxyj@nfn35D-ft)Rbxm@1HoeF2!isM z`$N)R=YZok^aP^2PlF%|dDM0_{<}}4yLteOsJSf&`z3ZkI}iLXae{^@zHLi3e0^G^ zTyUZWfgtp-X%J*h0wG8dC>_JC9v25Le>wxBEns#bX#oezXenon*mh?~=Mz6Vyy-&F zHfMnpgyUIY9j+W{_Gwb9TY;1cxUX@WNXk7X!c1?|Op-Mv+Bc|S*vN&)Q}S2$hQ9ei zg!hC9fxPZ4B8mBTX0UK2PrkyoNubqJ;QNU_H?3cW^L%27%xt2VrfJ8hJTHP^V&Jvj z-Qp?hkiFq_rB{LNV?G~hdD`MQu9O1)}3j2f5cTR--9u1 zI*uJ_gbp0diKtTEs|~*4=?$~C>_KpEzZ6B^Cq^&0Y-evjKr@BJ>ckAX#7wmmHcEk{zgK7!!4U(H~M3JRe)^VPfL5dZHCPbqMT< z6Lp78)<=d_HrBCpmUm5m36pN7c$cEQ<_i=lgezuHWAauggm=PhtCtMKfHDP3opTT< z|GT@s2a~is?kAIrg6Oh;TfEeY(k(^1lCC~mKL4w^ciwOa7I>?i^h&sHulIakea-`% zV4*z*Vp{I=M;XRlP*8=8WI!6i0JoFeulW;SMHcZtQL;BiCCf_vCMy`M^M!1ARHArs z!iOPT+Y#R+$|mnqn@QK4Fr(ll8Gnxra(pC?4r;Pm_o#dSvF9R8J(lv`t3=-ss>1+TVRcW` z=r+#`i-Xr3JEa-Ovv|ETomKLAdLV*t1?2DpLNGbxKD3hIJD8hP09>>XLLsz*z8HxH z_D|NVxD|8D2FGJnmHcv5FO^0b++TMk5XI5tMw@VW_!%$4(fGKX7Kc9CELJ z(p)%}khU1WJj>5qTuD+irye|~zb|<{q(s3~iYudMSlb9A6DJ3r25X825E8&vI0XIG zxS;1hsDBZ;*#3#K!1hfQqWA-kYlkn-<#oU0n`Yc&Rb6&BT8U?2Z;&`~)P3I`{&f;* zm7TIZsa1l;E)bdxiet9oTsaMM?;n>=N-cavN1{Wewj#@2hKLgKhi-g?>R;@V+AE?O zU2aMzLRv0*AjxG+dvIMSHD4%1WKx!oi%yhr=1UXck|5S-%!XBEgAyGo1u&f_VW6 zR$QNcPXB6IH#!|Yn;uTdh6-7!QSC@-dBl8#wk47i%HNh^5_H4dw4!)IaC|QDLVC}# z9E0q#Y@HH8Eo6i(T^l8+#(m3K*R~34 zj=ZrAk;dExy~$zoZ3T3TS;XXgL(QU;$eJepDq7q8WL4w_8X%yu2{AUmr=lL{g@Q*h zIb;&AbF6^<=zUy4$93Ig8+6j*C&jD|u^UI3t?8Ch+ViTCLjlB|*E+N^WL^Wb*%)=} zijJ!eVhI;N1Vz&*&Mb(%6E+K;6o~f0T82(g#UfWEOA{YvY3KQ=`bKfD zYqYmN-IlA!YKJQItMjDF`d9{S(d)T$9xbZ|&(cjG&iT~_<`~bbfPNP*_pJ_}F@Z;E zu7I$(V^-_jKYO8zhngLEI<8j(zHYk$;#{`Ui!$3%{?uA6wZyAVZYH{A zRcv2}@}uCNu{eJhAy3RcRyNkzEwOALgEwbo?jLKR{^=uwiq}vlp4Y)8r=|UQ`9bMQ z?DVN{wDB%X;r5wB;{^Cqhttn^)9Ff4rGVI@OiYz^z88bB;`l?GOXZNinBRiK{?;Le zcN*$QblNx=;=I>khd3?qy^wZmL>1u4)k}a;Jh?!+s%-!`^-=zUFY#wWRkBha6LxPw+;0l4;3f9H zu?zS?U`_*pV{Z$9l9>B}!%yb`e+7O8-KdM3a7cPk{2-~l7E}t*|3Cw~^~k#P|Aq$- z5c~gt0ZiBq+MYnRn;f|N;81_4e=tB0_FgnFk+VP$9r8}OzHW6MsI7B24$+?raPeJ!VX4PU#md z=BxRg4n&tqDV9|9$*7i8tOc&L-#RgP-DmPKcs*w7F*@C6$}u`UX4)}=iwt=!H7U+= z&Y{Kt@l1B`Ok#c1A)L}&8k*aV9iV)6*Zz9(c_rNf(D!4=lzA1Gx`r3=YGz=Adm z3@N1SfLrrV7g0!=Q5!G=@r9CdOP}h=6(D$^WCyds@q>zXIlf@je;%1r#r(6;(<%>B z5khe|r76^BYl8jkRJX1KYf~#(eQ&-F=$_jn}dYCtJ*xdIV*BI)nqriBwl(A1aV(K{s7sxW|4x4n{N|;MmG1kM^7HFf=j{+@{UFKQO_@;y4~t z7?(z>#s0p%aK@&K_fGftTSe<{YY}5|ERpqQ)xwfpc+UnPCLs*V_Or!kq`m&J7vRB# zFu3Fu{@p(1`QwJ~1i4{(4zxRz)N4|S*)Y^n{Nit<8js>7{#oG#UrvL3O{jF8lHHFI z(-yLOA;dop;P~|C$?Y9bhn$$TkM`dlXPMrQ$#^x7Wn#wJMjf`YrdWu5f4IGv)yog> zKwwYBsL;9;UC>^B-}Vad+IM)D=rU~W^v=hps<~Vq{F{H%dpG62o0Z&)FR*s+|I5K`r*akV_tsWjj&`p)k9#BWJC8>rvpSClBXv8ECnGmIDb6_; z^J|XWH6Tp{O2`{g@d>9zM@7A~lpa|=l03Z%;7g(o1JBb>a|gyK5ql0$2cEI9(y&*#}LEr(|p8i~IuYD_hHS zyz*&JZI#ffsblxRGMnhJV#_5pcW&F`G=KAMvwsrkIWH)u_=d=z9xOWfUiU?^={lc? zs_QyuMmXMsL7=b8f?C2w)#iCs-~3m5IFD-OQ$nu0D2O#pK9B0lW;C7?0mPaXg#(K4 zdm0E$i1)_RA1*hG!!}14&|acvbp|s1{tNyml6g>p;S^8??pbp&kBJZgWi zP2ad5ba$lF@I4en5ncxZB*HHl8PQvA+Y7D9G$TpUxjtKN>qru{J0;nawoWoK{w_Tr+bN^%!BQuaWc^XMcox=B*#Id}N@Q@d}Rbwf?Z%|GU?)@bHbiVu8Oeh@s``FBai$O%P!@ zPat^zyu2T(rUwLU@?nZ@jg8M3LIFP04>-6#-BpQ}ligK8%FP_pDj4C=$TOVt{}K&MPolf8+VY0}VUaivs+Mmy zgPKPpiV;)q!~Sf8Qg(uQs8_i^x&S91E>G&={hfa&Ys_{o=gbv-nc5N6QaQb+{crOAs^)9`8VDmO$i=L-ODuEVpg}PceA!QYb&yFG|e`(_p77f z4AM`-sd*Sv9_dgW^$mnT8&#FF`Mb%9~G zPrAX@z7C$R`z>LtzIN^9G?#D~6wNeIHL)yp-Zq7JZKERI<4uS4^LQe)9HJe$Wvxe6soyw$urCV8sKYZ;U?*vWe zam}BUcBp$76Hf6sKHUW)y@j2pyrnJ!GXZ3Z2TJ}O3%~amV0F`wXt43FRE~2)jg=aR zdM4b6ky?Y&Rb@O4A~{{8GwVnSc$_#@BP+(IO($pH-sT$C`84#djWTcKl^=PBFWx8l z$PY7|Fpf0T)6k1WCsk9Jr0p{RJCvnuh|e}l>ZsR|N|~=?yn}R{*C{sZS71A(NHc#8 zc~LB_-Anc=UqW>TVadEgRXZGlOS9!5fQEo1>6=HekKhdgb^OJGTRm2dcJ1DR<>wA- z3KXOvXO|`28Sn3O@Z6rQm{$A@*q32oU}hjXV}5bu!>dQATc>XZA3pMM{*SM`*69ll z9X!U(h;?|ow@Y4SDyU1t4qCRD%p35l26G(ev0B`5SML4OwcTdPC(HafET8%^h_K{R zbpyjYvbVXRZc7Xkhz^OST?ol!+9!4S6zMwM=RLF9q{nN?W@m@u3&D)mSFO?{ylL$s z?rjZv7Hu%GQ2bm~kxF*Uo1E`^d^-$4En+#`hLIHRpZG!E1?&PgIqdrB6U0JwcNr^D zv{&!Fhkq&7Dk21L%3FC}^qdCutJwMN%&&Rs;uM@VKCZ?tD=xT6v{O1c=70iq1sJAb zkq$k3NtQX4Cg(!|7SqjvD!Dy~)s>v-bU!wtC!&*@HXgyavn^rI(5kC)+_Ib zi^M;QTtv?K#{#^%jljmXx>WrDyCnHV(2v6_Qng)|!mJ;zOWb%^KQujKYjzJAEb_XB zJ<9fezG@fFVV(C1ye^_$WcV*!FC#8{)n7P&8L;l*koN9Ly&oEf4;Jy9IX$I(Iec6~ z4}R4$Ez2Z3SCp(4RrtZoVxwbin2Ow>Q8J4~Z>cgZCd2o*R6dPPC7+E9J5~4BExlOR z?DIZ;kqy9BIw5YexgMl}UV0#l(kp2AHLRD7umfzifP>u#1pcsyfj-}RPJb31~*J>t8?hsPHVcm zEIs7SW0_=pze`VLnl#Y5TrUKg%nmqiskb*(t6BI(OR!$Es+`QurD$_5P~{e_i^jCX zwl;QtoHUlYCl!Z-aK8b8dYQRRD81RVrToJBb0bkXpNc7GXGzY{8Hzph{JWgAuw8a` z|4n%gY)-$@szRD2tg^Z0$&x5yy65HLBATasP!oP`qsHHRhHYQqXRS+tV`-}mGu7J- zcj&FRVaV>E9c`N<+I$r}JVoIq=`S9(DwCIkz7Us7bNoaoBEFt!l`%I_!c|406XwH0FJhqoP*LvvF;5(CsSkV&*g zy6uMnkCZPtF>;_2!1J#Z%m->}QwU4OHwYM08k;}>6wcfa1l~Re7=@)L0K$A4=!;{e zkXwv}lDGrlF96#rzpb$?nC=>7O{euW4xLv@XLEpZ;Cc*`8>a&HqB9uHeg=Nf&6Q2_k zqmBUcgEvX)X8kFVyk2kl#*Vt{_= z+bgOrYeAuA_QZ9P-@x-fo2kTta&jBMe=r#ULI~4?$`RGicI=>17sT{4QI0Tbv0FS& zi%p321VeU!x<#!FHTeiND8%4{9_B4ryhxmP4BgTdpK^QpEJg2rds+H?+RE?#d^p?s zL?+8x$tDKf-tt*ZzdL+gJ3El8@*kkh{Yic$w)`~9Ir3@l6bjLE7&AFu z3-U)J*?JL!*z(9Mj>01i&-vo?npw5MK zCV?1X+vZwWTAv#cG-MnUBosLCa0OK?iovlGs8e{9cr*)t6$g7K ze({OH4gh;0ynZ0Vp6u#xA>4-S`TfFEV4A@Bps}7c*tB2oX%W)6_c4yb39!42*Oi7> zhE5Rg2C3IZ%i#|i1r2G{t>TAi^rw;OK1v(rGmE2`Y9pTnJ{Y@Y>=i&BqB8O2Ce?6? zp5qrzr0PpYzK^dpGM|+jRL5(2T5w+eSP}}=IeEmhwYTO`3xRkMSSaE?iPKT>>RaU* z3$_fbkqz+Y1UImiO9kT=9}`?AlgK~Ag}VKLnrE6UX!_ar>}R88es29FZ2$8<3gJ8S z4$C?FI$44~J=`45GcCPZcc~yTODr%3&XI=R3Km{i@$< z=prQwD+Bm0EPZ?owhw;vefhPr%sR%!-+PSlvXLixLGS(bTY(n9ZuCOXx42&zm7 z|6KO-$p?1I1T>C3f!3!G>{+oN+836&H>HHtOBcIM=&Axcv=O=a|J*;WO+mN79U|S6 zl4a{^$1^h}Yht%f*7?qB`uhY7I$0D~d;5u^zRkepXcSLC8#{-ogP9InV|DD#K5N5& zl_}dqQY`}22Uz2m&#?Nao8d0pC~?tIvWKw( zWVt*PsO^<2DfD6*`tZw%-ECX%_D*~Aa^b(fUgRJ}N!!<-l$hQCF(m0U#vN7gEtpu6*!%qr?@))CL zbp|v2{(v~_1_oj2@q?h427<&U5Co+$_k)1{&&51ISn=B3!!UEsCN;->eSjPD`&Y4V zApG3rpP=IfItB6{1wNZyL99AxG|;a~9;}G@Khz#5k#jhdo;PD(`Z_Rs+W{ z1})-B5Y_)#%rmFuUHBU(OYu*Ik8Y;$$q+0`u+=6}YMf0v=&ux`o~l(u+N}bY5L%ZxnsU z*>bzzJ%PUmW%-stE-OijibQ4iEOaxFB-yX$&_=6bigKD+EZGT$2NS4nHTJgm{N2mK z1cp`KjuqZ@{AZ$|)up@jg%+Z*4%L5tY7=mvrr+YpExSrOJNrwHiI%sX9~%3Ey*m-;L@?4T=aayCsbl3$2?l z#?HY;1sYIpa!gupi=`sLHS)~T-W)@8xLi<1I8HSzby(sf5PtPds3 zF1+h-R}slAgEIGBM;O(#Jn0odE> zmiB5pNSDRb-AW0oS$Odl4oSmgHZL#uSoC*ZKS;oF8hQKT?c+M_D?XxOrB4I zz1lFXsExIlpFsYYNW#!5&Rd5Eo&%wOUL5C2DFq3e-LYzJTHB7mI z6vG|L<%cP2D0UKJ@6i)tFU)ZXF=m?!SH!=LM2854WD7M64BiL7!$Ba}LWm2=0>vJ* z0~nh01Oh}6+>wS`_vCWm+yQc56w#M7;+ORHKhj^+@lMFK*;i|?z3UIq03`y@0HB0# z`mQ(#gjxvUFhbwE&ZXIdzKCIVum~r15k%^BBwg@n(siUSN*JdPz#e@)>lnp03}3y4 z@QWC>h590forO87*4d;QP13!D=96u}1|Hi8LmF_NwTezRUY+TeGWr%7;ELl9qd?BMOHE!hZHwc zy3dM*vP*tR1uE;s!(A2-j4gZXo-a;hej|a)_y%?R)Gb-#bY85tx-D35RRiZl4qgik z2ig*Mj!om%Th+@15ah6h@k%ATz=IsDI|%t>P33GtHiad>&qt06*ASNMi1Li#Uazj8 zFziEw!7zRlG)6)QISZKY9s1ZTy0&WlMzK8ly+2n`e^G5pk`-hNySUN<;-wr-6Q`7q zpQ2IrX+cy)Lv`0BRl<|>Ex0qWC5t88uJVjS?8{h;;Kl6tbn$%EvlQDX;1&TlScw>7 zQv-sH=S{AWukmV)S=G-HKsm>D)sM{IqJLnk_36Jp{9)!o?kQw&bRmMQVt`U8)YI6s zb;XK%t>WX&C;;Y0mqWvt&tl`=*%QKG^B?9WgY#u>Metwd*6?L+zuCUbZ7yU7Fa($z zKonqZfceZXMp6cVtiIYW3fQ9G;Xh3SBNFw^0^SI#S>GFI*g*tE{zskAmpYMusjH=b zoo(2O1!3=N@ZVi;nCS;BSRL3IdJX{F=nPivai>YYG`9uq&h7!G0CXilg$qerBH-ys zYho6w%ZD*f!2WRFWf4Sig7k$=up;5&hb`jXg~>TI9_pO3tV6$}V!Yosr?48wul!<4 zGF=I;xN)9WW>0mJfn=jJJ}eKTyPBW1WG@txd8w`{Ehyc*W!I)!%m9~GFYyo}bTDM< z8>7c2FS*O zuvU8SkQ2*&;rMJ9GE#brZ^~o+8(T$oK!<7mh??S%E-chf84~)Ahk38hHj<`Cg+op` z-o!&-j|MVAf>`~mKYrBr^$zs3k2iV>&6eK6k;I7DOnNKg6mw6923yy>Q6!Z$Llu*l z_OV7?P1P);Zc^Ae0K=y+S^0nw1`7C=pp=Bw4T7vG2W8trZ)M}tX=L!XHE)MZ?L>o?rqGfSu3K zyq47|`{V6$WM^8Q#fQdetr+JHP=?|SF=FU7P8f_|cgf>F4A4^N^9ELkkQdkg>K05k zOeneMT&A<*(uN(qotHqbK}`}+#DLwBq|?aW@|Z{ovQ^}87#3D>Jk;=@kt4=z?dOEo z&tsl6(BH!>Z1pSc!ec#5zY!lb@QYw}Se{u>N72t;Iu~0uj=XceYB8>ewSZQdmZwIO zWKG@nGjdv&iVEpgZY8)FWsjEK!Bf_+g6H(Gv*d_v#i8Nl(~Q@MmU!mU-OV8)suTUg>^| z!9P>v@a(7vtRtove`4mak^_RAH)panj={HsRUkC{fd^@9?gzhfd}C&pbB;cy|I$CR z_ty_7*OwE40x1T67#O;522f=Yr;_&=(aPio$dgBBpos8~l9X%fJ2ZcQ` zE-%F&mtXj5fTaQ$gD*K}=<*bRukRc?0DOHu1z#O71qdrK`2U2JyRWbUBWn!JNzy<6 zl1W&>O$n$Vu2Wi0SOf1bsX|W6E&PScCKh}%z3e6*A3##Wr(r1Iiy&{kn8`t(sg!yPK(-Soe5V@VH4EqmTYjC zd5{a}hori>V$%?N$}uD*$NOTAvt!;you!TrTYH6nIM9$d*yQ=9GLKvo=vu+v*~Ne8 zQ-C{Qy@xK|6kU#5dpQ^gVdH~WHTT@J?Rm1H*2`i6(1!o5@-l zSTwB6Vy0!;%w}VY#ak`@wVwL(zGo>W_v(I=N%Wg+xk+oeS!>%i-GQB5)>4^?OL^Wy zY)?DlV7T}GN=-GWm3uQZBz+sl)MJvV@3d6|1!olD;pa^g}SzaJY3#7Usz^?8MDr8cCYsVxXT1rB#jhQ} zVilFetoO=x(j}_=I;JdP*uYKH3)C%+3tYWKo5jED0%w+q^b_y16!6ZhG9gE8*gXUn z-yi2)SQCqCQY2@EZhPsL@i;Wsa9%rk-pS*8tLIXk<1-%a;YdBGZIzwA9S&Sfj(fJ~Qp-YyIsX}0(J8-BcXDUg z#l>1HiG4W<-^`3^vJ$Srrd_rgrF!o+IiaM&SDl=rJd0!** zdZk&>W9P;+5%mC_Y?dETr$ylVa&f1oRiqMP}=kv==tw(|nuU^Hf{d!RjX3 zg4az^mU668yPDE2^*fh?K<4a|<8{ec^s+5J0~_=jsgjmnLn_wkem+^i6)|{2MGs5W zV!kX2+ihhz2Pn}@iWtg++!EA5ookUF6jc4%2gSjsE3A^M>)k)4YJ?j#*kXC~R@n-) zFIHF`wt2p}V4vd+Pfk=xOa_y=hGRexwFT!f?ePpH4$JQ0#@k;vGFYdR*1;Q5-Suw4 z)#2?sfgX`qgcIrgq>XYbOf6h>@7D-cPn=>qtTLdqEhv!8K3M}*8sYbk_*S+ZTwKla zin(GhwEvw#+IwW|QaLpPxz0btrMjB zLUFKAR6*#W?uET!`ABraf&Q>uJw;Ha2tzduJ20)GWPrw9uB5ea2ve~_3H_bONN>eq zK`}y4R($1C^C#lKrjMOH2u+gfN^I-L$AFSdq2CRA(r&bI{H}lBxs2pIMfG4?faBOg z8c&A1#H05(%P&HUOZ)w8`_N6XV`s^*L*PP>Q|q8--h_YA`I0ppF{Q;m2Z08*Q^FR> zTzkhZ7`BWlswU6B--VJKb3)ZYuvGv!^3C38_nMO@~Hld@H`9#&3X9-&OYVP7^ zTDP0Jl?%?+G>IQ<`S;yjQpeU`8#{7Ervk-qU$;a|?*}U5IXy*p{SYIc!1-u`S`n>K z&T-ccR|s12KZK;M!M>yS_JjsAJR0;GCm_NaT=u7dd7VHSzlJ~2kcUcn{SU&vDk#n- zXcu>P4;l!bV2is1cXxMKT!Om?cXwZcTW|<&i#ud-cY+C%dY-*Pb$rM|Lh^-LrGtlIxxOl~sqNeyi{$^98wn zUTQYK%dnMU2 zz0jokpT?{ts<;b4V3VhAt-hv|?U2HUa^)eI#hX-1Q^q ziYd?9|HAR^8zt#Z-s|jDnis_%KbGToTlgC9`$#@$^1KonC8<0-qY4<{{L-E;3~jpv|;UM@$~E83{x$tVYVCEr`aN9?|f+n@Dlv&EvCROQoA z1!cIKdZ6Uz_iH?XQf^6!QmOG`W}Wf_W;uC&LW}oXvJb>Uay(y?1>u*H`#-x{^D4k1 zPV*xK`Z0HPoEC6zE&tJs%jZ={xBR1g>asMM7I_=JeG^lq1O=Dg?<8jDSB1p8sbA{i zM<2n|A#4nUii%}!T+jaEGEZ$_W+3TR?2wHWuvERQ*+P!)Ca{{65>K6)nxUfU^>Hbv z9o4@(g)!`ruF9=8!Wxc!76TTAQGp4LT_L!e^57I6ium;EjYT$uzX;5Y`XC@>gLNRW zhYC~#bWt3H&aH387|e8k1}oB*8PbTqC9U$xtU11nhxuEzPPVMFffY~7s&m1UsT74Q zE1q^KK#-1>q7anT8i)FKXMU41Ifsdf2 zD-v^Bz|gdUUsAP#0QaMO?+5+yBaMIbhL zciH`cWr*>o5$;^m=VP_CeX8!5oUi}-ycY+x0d}hRbk23~Ri)f}B`@_~^u_p=2E6xf zS;aWn7qjoOp9`}vOwP5fGI$ru`=-kK9K8V(cz@XEo3Qr#%#m)4znuq@r~swxCKqM| z8adC7#%Z;ECk)s>@eEAN4YM~keVuU2qqx_2+qRiwMMhvf$8PZiuCf03FyW5RzVhhx z-xAnb=9)uP+jLr#qYus?W8m~C)Q)R3TxNyI@A7mB5pr|aCAj(_K0kmcEH-|gl5+%> zisSoVx2~J#Os1!C6-7S%dga3{zna<*-<3+!htcw1A0Wp7sX}IA?Rs8c&OHAf8Jux6 z;LG;*2a_Q|ynUqAqn!cQMP?}$-q&pgBz4jZ@8L9y)?3aJIs_HxaZ0ZE3VaGQAqk~8ti3e?U#y;(E3Er^yhUdH zQ0;d#S8_ydsK*pMSy*zbpWLzhGhdnrN1zKyjMZUNYy;I;oU7m!n|mt>0Qh`K&FvrZ zdww&APJFRe+HGeJB4C(g)V8s)f;n-Qb_$Q~Y}Ikg!O3U-^`2aZmukJoT(qaDNT-y8 z9Ud!Qgc6ExAyAR4Kn?v+9rk~Tczj$IPr>*7S#!Nbb73|ioru5p90eQd zKTlUkpW>A(&h%juCtC;}tPZcSKRxrO(^Xui7{kyD?slA-@D7z4kPu0|!r2o|vybG5VGW^GL+7rHR8PfhixznquQzbM630)_9V89K)opGk;+RDvo#f zCS+Pd$Ymh)M@hX0H8_AJ-Y61CRwJuCV=7Bl^zpZk1TO0>AsNVo?=c^ z_os@G*Ij?LZ1*UZyFWJJysri422b7?{VxLL5xH%Rf7~0HV&IBzayZLP9|}&*$nG4x zb;Vg=^j=p`a9XlTdTr1N_RF~#6pVDt(F4sgfZo|IF&K9W{Qe`|Al74(1;9yJOafva ze<$@3kh|=s#8rN%)~z=p4Z9iNdaJ;bo`{Oq5K{K2+{`$yg?wStkd%}0k5X9{?jh3n zkuE2iD z_JImOT~>Wyqm<9S%$4qYMdg~?eT2&1rXoOcO^#*f8hz+;)D8}G(rF){Dodh}cqP2o zUD8XC!6X}K_NhrSs!qQ?ZAi*zmVWB1XC7gF2jO|HC!ngDe12^$7uA2-W=nuR)!_Gr z_~N!zF}F%$S+pcOD0T`fm35ybw^;I5GRjn>en#&(RVlBbOlg~uuQqBo+`p63*}tp% za^=BzW&KyO{rvg>6jWsRaQ$uzJHl76)cMX=IY;9jI7BXFSDJb|G>k=Zk+~P%z<-qf z*~XH`5v0t{#>wv7p}^iV5hIAOA6C+L#NDEf-p}6(o|H>%N?^1xF$5tyew?&@_;jcZ z4g=T1-_o!)mlWb`wLf-_=+mJ1LDOZbIrpm7f@%T->qN^Fv1+RCXUP7(h182#3#=I5 z`GL7Cf9!r_qn=N*DLQthxU4i-6VfBW+x?(F0h1)qp@cn;-6d_DaTQBkIMRcGehWEd zPaJ2)!z7=y0t~w6wbuG>jmDQ*525tB&436*EK_i>=SJ|IePSlS;m?2v=?vF^;J)2h z_Jg-&Rim70L5%mTF7{t%OGu+=l8R^KDI@xw38EdkCR`% zv{rk_`J0t(3#P1U^DPRPbk$Fci*H-q0I)@-?Yrx>{gGtYzV>p!TXS?c0RwUJI0ZgA zJD*s6_&YPCUj2=$keO+JKt1Lw_|)OCR_3o@8gHeu_R85+EzPvGVlq>qn7qrvwf0*{lY!6q%cJN~KWft}9lw?Cw*^ zPZn*cIJT}X-7cKky>sCe5kYRSGkU1Ra3Z{f zz`?##_P?0dqj-q3P`*>j==CCCm`q_KA&^0TFi`3FCy5NF?JDC>>rRYkg#D*qb`VVb zm&g|;P4!rb_dBId4Y#>p!2O`` zSJxCiQzWNeth56glz z#&BWnUtrzMlMugO2KWVUMZP3`r}p-6{V5@VN8&J#IN}mXSVh+LR);phMdwe_#ajo zfUKfm+)9f?}HiwRoPByD738&iM>AGwY^D4Yy)S`W2me z)(E~?UUk{B*(x|n_M>}{Hv$s>Y0}WW?I;%PeeV!ZWgfjhLRnY1#xgDmkOl5MoIpx1Im^Dx|CMt)Bm4FK@>}kR zfv)GOvjvp~>e}~_;rn7b8;y1Nw90o6xlbb1L#nL^T7oqJmpl*TC10(%ws~HG2d@^x zf1$c(O4F5R{AlIsyMJVwPr4Uu)OYn?vrGgjC(fxiE)}!i>29dwduNlK2dR0sAmWK%soLbQs<7p1r^AejF`vid3vwma1 z+-84!Fs)xuevp^`Ks7E|2^61vviC)yL4e>l`u1OUc#If`yUV?4#{IR!S(8AK3L;Ev^Mo`(BTrU4*{43R^J_{l7e5i~`mO6@#(u{zAR660I4HkD;i6>KxPKR+qiG zw2m*d7VOd+H15&)Rf~lZP>tUYd`qUh%|NPxi~XIakc~5WfDXl@)s*cKj!85H>*D11 zU`dIHdd-*CdEu64L^*NR{MU0O1f-?sw4N-rntH|W_SW0CIGgj}o`IhNYU%ZNgRhdd z)l^pX^ADnz+39!Z!hR3=LNDbX+E#i$N`J>29FcO|>UBaqM(~o}N8ROQG*5^|+pUvX zhtW4=@36%kbe+LvH8Rlibc$SX0hUZ)}{&k zm`s_p*-+3aN=wdj=vbKYA7`k-`i|JYOCm7`EHDtI<<9}}bPDG_Pi*MU+@Lz!nV6)l z4W3X;%&+23;120v?Lf&*%nzZH6%wTz=f%UiqwOC7v`Is}`7joTjq?Oqzbd_>-=0AI z!=GrpsOr~3NPA|l@yVpe4`)oCy|4P0kI0bc$+LN5TNputUicDph0Ns|RfLEa@?!{c z5{E3ta`*E&OXXXxBZ%dGbKk)+wxj<1FNgDVgINMdjd91|rbw~cCALV=w;Em^QlslEM=wx+elaka>SX~`@3@*=| z3tz28jMOD>O1paDyvX^nVp5fmmm;Kr7fO5|M@T(&QWNS%V7MG+gq)?T*He{o1@Ntn zrz(d&yvg3zNrLe{j<{|wH=nGyB1B~VQ#^r@0L6Pq%ZVN%J$M*da( zK97GYL2ur)Gs-U2Wm}Ndzg&#+1cgkaRY1DA6-cUSpkR!{oXCfcA*{xfOIL&!)=>I@ z`bD3H#d4;Lq$R%5oreg{OGF(Uj;KIBMhKyURRRp`>+i=-rqc&Tx# zzbtKk6NB6c(R%|D;$R-c@avA8W0*Wzqp_5HtudDZh%ia3u#8Xm@7uKfys@=d@x9B% zMPASS3h!zF`FDjbg}RUYxInCD3IQ_W=sU_f*%}#bsWZZZn`+Q~6@+V%$uaey^siA+t2;s)+IyTHN|@(l@c%1xMSEUfJV<>*!SvTwO`^-fZr&2=iFC1SoHnUe zX7GyPhM%5HCmWf^$^l^z*^Wc)Yv$FG_E&bEc0)_YYpZWObL?C^PmP(`Z?0Eab9>4+ z0(1*3R|4G5b7`LToI1ElbWf4F}AEJY@@{wG2!3PdmGs5LEVwG>^ zzFo@1iJ^2X7Q=A2G@o4{!^MoEihUX5GB2MsPj=j`uFV0ZJ9tpB|#@<)Pkfi7zfI`T| z6a(qHeQz(CTjalim`z$Zbe&s_wucrtcHw+jN(wV6&b@*k2t9s|ZL0&f3lk;}?m$hx z**)C~ONH|I>vUNk@NUh71kRlKkPk)4P}t}f%>GOv$%k+FKIZJlbzXPBf86A6HXQrs zqYN+OF!;AUeyRYGAm7ZtUwxQR;1@HN;pH$>sn{O;VQp_BX<~*AJ`A3NK8S z(BJ@be0%%wt0stI&NV>03`3LQy@Iab7~5?fKOdgb$Pb_ypy;G-6FJd#1qCq_cCb5~scC*p zawdJX28bAoHC*;LF0LGSg$mp6$c;tAJv9&HiI1|l-K~0tmZd*4C-TCSLu61-Y~G}R z<-oh*Ewcm8h;_puvT)X(r4ehFMebgyj*OyN@@MX*b&QeTG(NR6% zpzhwg{*cYYmxO!cT^;61+q5^|6D}TmWi=YwRhZ}O-#Uy97XXf@-Cb7<=pXbY1*w0w*|Fz#{?SkR$_Zf3 zWm6F=DHmiNqdZq%0y~ACha_m9-*3l)kNd*iW~qL5q8f|j{Sh(mK_O>)sOoGw=>ZKs zHuhticGy8z-00N7$ZO^%vqo5m*z)eXb!`K8AMHKmh=`QN1K}m`=PS42^B#*b%)+!# zVD`F&FTB0XqX*%o-j@&`Ycu3Nyw}~|H-Z@VQPPUoX!ih4kR-zR+m*Z~ZbFWj4a&12 zeQgGC2$Y3F*a%wQdjxEw-Jl~)fR=ZaJ1G^T|E(9*Me}M&9PIVzrtyNYmv;j>S9jGH z(#r`QfHm`GF|d*~DP58k!tS8%GXwd0vyzXK;6$XCqcQ`GX>9RhkndjJ^_oOQ)nFz7 z4fP=$FYtr3fQ?PhOJ2b*e>Ch#_fi=xrz-f2Ge|OUv2P`d(S6gvA-}DtzBqG1q25$O zGfX}(|3~DfU|fiwG&4#%zitWqsgAw8>GW<-L#YZR$`0YJen_3j6Uta~H@N!!qF@bD zd>rDK-h;^ljrGIP}AsmW-F1y zt`Kj(lQ^tDk0IJOW=Cd?Szd^VzRmdo8?L=$@$C5bBP{`Sv=eh_!a&`VPV3foSrS)2 z`g{}AuW2wRv#l=|En$c6JT37)`4NC?p zR4;c3p`uXGbcMHsc|JCyue;OV*1>&wZH0;~gAp?CEs`*`0Hgf@2m|*7I{ZTh2eGVsnGGVcn|c4l1y&QD={&&H)L$ zOM3Q4u>>(C*V|{o&x1E6k2x=QOmRj2gB`1aGGeuwb}H=$#2L&lY`U&-X+HG4=1-9=f<%qjf&en1-IO-{I` z<_&1em5nlLFtzef6;upM)=%ObgzU_9K&7R}=04FiBp%lTIM-!vw8zHM?k@>)*^B(VV_CAzt=)bFT@#%E<0XCE2$t|8`-yYa*~aQdF~Vh#fwoMQw5Ld}31BTgS)2|5te# zv2%j=`AUXG&#q(lfZ4-Di+!_!bOG@>SJ`9lL>iwFK!3|^;Wj`Je9)jsR)tTCQdhIV zWt%o4t{Kgga^gCL9A}^{+e%nN=7lG^x;hu%)lk(gj$L|0#c@2R`{4A9$*TSxidB67 zk2Nch==4f@5nK4eV$v<296b%YoV14YiVF+z%9nNu^G8hT&U{7(pG`wSCi~aZuPjC%^8e$SDt$w;Fiv3NAjBFu_uRkfqn#rlHgOV?2k62=`<8+Za!4#dlY{boUK#UPb`|6@MY=OK z@zn>zdOgl8%>#UoPco$Ca6Oh^EwGJ>W*eec18i99Hw-3*XtwPEduvr{605vY*>#)??V&1Wc-7;qAgU>Vfl zUWcEg8tM8KxNye+N~C3~kLfI2I9nKOxL#~gkqlh8svIMi;&__ineQ>^-lEP+|0r4O zWaUuTt^If1pd7!p1X1hVcTw}V7UW$rLzpL7Yk&){6R@c6(;}Em9xtBi{j2i^1@OzZ zl2VNtx;!$%LNZK@--s%m1<5)C+)aoF5jpUGexvN76g7ZZSu*_by=p(j;<#A8V703$ zps#VZv~@C(uLVXQ3Iz!qnMI>aPKnL%6AccTf9$K6Ti@g^cx*FFr>=gs9Mv=^x1slW%4BPeJ_wnA|nVS!#cdWkQtRREm!9w#Q z;Y#%)iT@bqKu^toM5Qa-%3OOa-PF8vL)b4Lj5l(oRNi572mD?6BIZ8ijmRlzN3;6T zb+ZI}=A8>3odj+Vqw~xqX-{O)Zc10u?;#Tour;yaIy$Sy`YeP#5dbeLbm+@|?BTAT zCB4L$1eQ@~ZF;$cMVtp=NUny<1FD?dZ`BCiXsAWz!Oa<&vpH#+p6+!^Pb2sZKO{RZ zk`|>GzYg5g-j5gy)3rhLjR>O#YJThZIgjsBPwBa1ZAv_gW3#>0ex;2N9WOb8oL$L( zSu>vq2vYUn&E+U<>Q>2q;_o+hSroJ&H~I`FD?J^gm5qX|)rv^0e9$O~i@3uIpp?vl zJXK=&mX#-!!Qx+l-%tMcPL;8@06EC!VcrGy$RIJ@?Wjv3$vd-n>tgM43>4?Y3Ayir znH7k8u3cCrO>!BoSi+>20a`ltm*P79JwN*xA8?6ziejbC{*>h-c0{3I9e|Nos-wyl z3awER)HY)WbfR_e+m}z|BZ`0dQ2TO^^Iz$?Kp4|PMQ9tmK$s#Jes~ERMd(UL3210( z3c=7y=?gtWVe0Z=1b<=kL00?v%L~)Qe**I5RZ_)SrDo#CVg=4Lv0un!XRY%PtkB!; zWwNHS#7%z4(U+?MYO>YZDAE|n-m29Ab8L}5pGy&>sd~AyQg4(imcakcq_Q;*m#sjv zO=WwF4bmvW3EdCAL@911=~qcP^W%z|W$8@5usnwrM%L17OD99azfK6oEeM|*8Cegl zhL`uJUvJzr2>nPljeo0or5ZZfBf%^FQCTE2Yr^}ZrT?4ZpO%!43}@5O{B9AmRcs}T z5AV4n&K!3tk=Z$_yO`zC)5!p3m%MAUwoO%xG#OrbETH$>bpFScLeE|Gw|VbS7*WyE zjxTYUl{ec~!$q#v9H6887Xp44j!7>Qv~<@mMY3Zq_^5@b&f$h|$_74QEAx~$UE~dA zgP6B$Px*~(5<(Y_)z`tKoj~3OTA&DX^~W|>*bbJkQEdgN?3baaiQ(Vp{7Tp7DX-*2 z6H#mM%`Ge9EUyHs7FC9>Syw)Q)n#5&32O@~8Ljng`IE^id+@$8czUGu?r^E+VAS(# z`?A=Ly+K7Rfvfk6U#19plX(g_$%~EJTLtuUO9Gj2QC+n@%l;2heB{;oKGHh!O1x|G ze3Tp7|Mu1aJAtJ0@-U9;eZMX++P?M@Tuo*ET_su(P3%6ksc_Dmt$Am$S3Acef1m9) zA|tQ8DzO6OmCUr(h-G`_bRwlp-!>~u{v)K2?>=n2+COMtN`r?7ikQ#?UCBH|O#XAen>7$v6&f8_YR(T4Y1SyYL`4d?qnLAP|-QUh5UMIY!{B0KAI~P!g-IZZO{u) z;_#!fTWRF9?fymMZZj_hb)o-LO+!_M61oBg??ex=MMmlIfu=%R*#I+*q0ncSF&Sc4l3 z2*LD>iX|M2a98sZ1#A!C+Q(yJMkZmJ(dA&`qCK(?#A4D+JUKfi-t4^O>UYl3k44;A z?F|eZ*t`i}8&|aMx`z(&_Wu=}VbZ!_aM%N<{zI*>!)LBw+6(N!`B`CC+RJn<2pITK zwjj-n(iIc@<`j~8z{$YGA71y;;HZvoQXs2{3*9dJ)e=eC%3S zFO3{DR_pk{UIXk8Fgrg<8`CuQK^^mSJJVu98xwR?Cr*6ZNoY2tjyQN7KO0$bxkFb0 z)y4yERj)UMubC=fFBtVgD7MYTWYbz(b1=n}KX7lKRVCh+mu94WpOPM^P#2p2^3ay7 zkL!-#_IZ@1E((IPL`w;rtRxgV$O=VGsy3WD0Jg#WI5qriTySJ0!;9BsN(N~j; z8J>$}k_|D}=}w*&#kbJ%trw(LR}o^;I2FD?Df@G#R`yr~(RDF8huVuoa*fwUT>E6{ zJcW&oMAo25X-C|~V+U_|Bk~yaqqcXAILPC(a7d%CXzUH@daUdD2s-rn671Tba`7bG zu{5ZZqla%W!u7yg)gbNQ#aSw^bU~7=t6Nv6hqUg~r8vQ1r8_p_ z3#ga;X(yA>@P_hdZucfwz_m8#ljh>FL+{Y@)gEeva61;gld6%c^3~p{f93V{O7>5byKl}7 zW-p^MMu23`1roJVj?=8Ck_(>p`!0HLLv&l4b(85Y2kE}?rYSW;;>ub73Py6| zZ2prGL1Ubl8LC^$HSyOw@D7vL9;|msP2*i=3CTtIrG0RrQGqFS#G#5v!AMV0Q`GVB$5J%bNj`FaleyPv8z|C6f*axNj^ zchgFEtUHGKwW}vg;qIZ;Tt#rp7ETYur<%}gz|FSUbFD7nS6Uo>@WOtdHc+q^BiSAV zUB0ELUCa;p+c5epKs_trvQ0_SsLbHTxsk-N99U9+rQ8gSe#9!05(zA z2fq<)AZN5>z6re&L^G;$wEQW*r@Lz=vEwv;3tb1kQFjcRDb_NZDRGH|+y0eTUs}>( z4E!Zx`|L2y8Sr8Pe%#@EezJA1!)_T$@>j1d7(ChNS%C1?9ImJknOp30b{h1(A?%$c z$sPREjzJJ6@VMrC4$a!@G%$&}P<{GmdaT75P%3rhBLablS^h&Gy>6Xw(K`jMy<{Gq zFW2pr>2)U^RnKk+1w9s_nHa5}bxD)qAN2a^RBBDR$9bg@u%x@F-y}iv8^CNf7=3{H zeaTOYG44YU)wnNr@ZnjCITs^g>-6c*Q4s$qO)}Z>9D8;^A-pM9kOM6Ov9&(i_+RB_ z+m39*g+z=ImBp{}P_SCG)?{uYma1?O*_Cx)^A~3xtcK@vgw(eg!Peyr`-@lZco)l~ z(+~FNl%}uud2Asgep>!!Lk6p3rX2tV3*j5=qjCks-l3hu@){wTb97OlcB?B-GoW;J!jZfzLqPB_NAD1JQX{MJx3tochW8Gq2hcG}khq?%SQYdcKx z>vtHt7w-ApbMmbx|6p9NCH*r|&Q?PIK7$Kp#`UaGqPa7&I2Vr(qqD*4-WQ^L2EUy7e&mM;l2*Tb^ zgn=p+fljdmmMp8fz^JL6y{G+{Z?s|ds1+PPMip|?N@*~ z_I?SjG1gbvFh_yc7pQU3p7WqH)Jb-w=g_KOZ8MLtDy1F1Hzy0MHFcZW2UR+m*11|S z)Zaz+GaRJeg#!+)5HAqzTRL>8!7il_T|M$3-uRVN0>@>g^EQ28?x3olWD3rhofylh z%5Qz3j@8ArRy3T#g|s!o?8^lKBH!-`cK0YNtRYK4Zb_dy{jO`>w4y6px0%iuPDrDu z$#~qiK)LWEcT%#+(s;F;VY5QUv#9LtkyAI0}h7s06#C2N1&9ksp@%NDu?|;!tlQ+kyV^ z(@h_EDBa(cC_UZE*rfcWzGo&!vp8={?YQmS&38s1c!TiMm&3L84tUQ%6g^7L<8ip` zM)=$uwHBxo+Uf~+qvdZKIg4~BnpL#uAMj6`%ugpS_DLP+b6R@)&-E5~ds4Wnf~s3S zc`1d>bWtmZ1ZTWFR>ez%h9x{Hs@-Y^1gqu3%B0|u&<4syUWyS!LlXL3F59H6oGUusn$N~Y zRQoVl(&VB*`Io1S?MSs|S}~1M*~VN_4Z-}?O|88~+-5jk!3V1Gg$y9^MusrZl-T1! zvvEF$6ucpsv9>{>`P)KBopQxs1Yb_CuksFxQ_R|j?u()EkcN|57e~^AvBQ*6LuVrK zuII&(duGVEIWg%ZqHnY7Ps~8GZ3n%d5)o>-HFy1a{#(tw$8Tc2{1$`rl%Nm1*wJOa z%Hk}$li+&y^qi;ZR+L84+4`Mw>2}yWK7$}$cP`_m=J!ukA38jWq~`hF{*l?xFMcQa z9eg*Cx85wlu;OGX&4@g4BbFz~&-X9gT-L%WUDHEx2kX9d3EC?*r z^5RgjV4s+;Ns6$5-M#o1UWlBN)3-ZcQaxhY zB|C!4>sx{!jFe6Z3W;0veoWzSSkqqdqhp=kSQDA#OS3N@P)$5|e{2KwuQ%jEK=F+) zGGm2^{?CLd2+sm!Gzs*BY5#;UO@2>T2m3kqR9?K}m^gQ5{zJd_22&A4kC@4FBMi=B zuqw1(YTMH8i06GyWY(|U(@Xe6A!o};RH)vC^B{PfWW^;xw9HtO>;&@BUNwGl+WUA; zqT+=VeIOEDlb)5IyU-(hr5eFuF->^O*uCATX!{5sPhr$&VUrDmUnBTO2!v?W7<;U< zN4yW=#0zteZTUbkK4UXZh<$yccd)^ow^xzKIIV0)#mLIIV<{_W6#K*h+D@Ta{Z&yY zq?RBwZ+q0Ld2#Q+CR)IBasv?aH%@5sI^JbM;9Y`9U~mM$Gs6LBoJnoVmR+Bhcb$}( z-ku;G2k^{u3|M&hl#yFjSUFo(G66sG*_NjVYVk@bh#qRUAAx%~oG$`k7oi&lFES;I z+D!!gZ$tW#Yo?X;EY}<^ZlAbWBUkXxeEU@lZLE(*zCWS*OnpLyk(>C97?XEd6qJiEvzXsxd$3Jm*U35f8$+Z_zy!Zn0@1h%D$BFX&@zb zF1~q5T#Tq!-tXw!vIaWHbTQgUljIlC}W@pM?=p_bQ90u$OKfm?uW0;%k@@5 zgjA`_`PGu`Y53K2&DhHFT9a>v!b zYr)hG9Gqj;t7wv$t~b3RVp=fbn{z8%r5{F3f;xbIJs3nSpot`;9VPYCp!b4yuYjOR zW*nf_hMbu>idVWFAqM?qYtr1tXKL7rugCvWg+Lf!3y**r_WSCux+oB<985_-+mG!o z8V7S63}8v;va8h#fAyp=9e{W5bGf^BS|*%hDPj$E-Qs@8=Wn%A*Er!RW|!hJ^ z*7+ccM?@?{{o)aex*cJ~#%{MEOurmQap``__Ang%;)_n!uvyy%9oA;d{)VJ~3^_xc zHs>)Hh27t84m@-Ax~q$~1PxqT4*X2T_DZQ^_*k7Ary>kho7~=VQ$g6;Y?%ywl31TP zsP_4L7fEb!=E+Tpf=$Th6xh4>N%d(19>9=Qg<;7Lt@oP(H7UB#xPcCxqMWg%<_<+KX)LWLOVK(@KnB`C+8v zq|2}PYSjkXi=2N2K5AEz|J4;CYa_rytb-p6vI}b3+>31>Km0~Cel}5O*kIRx`uUGz zrJXUZWot-I2e+P1H9I+&R8ragKoaR>c4v40G(#s_!^%RPULQ*xDf0^K&t<~FDDL=V zsCZ>~-4vaQ$&|pwWTZKK=U6@Bc}CE~Ru-V+-L5yvED-xjzzw?LbwcNGH*5dRI_;Uv z{&o7SneOX!;?>JT0z$`$(pisU!rw!KB=%`2J)4XlWazP=mO?^;a(*bqJhWSvF?#P7 zk`*_$q0wU;j>_a;Szsq%qe3S%;LeK6!B$v>F}ysVFHz)ujk8P z9nHn?rgwDB#js&irg_2MT{Ppr=p-hm=+Sut*SBMA1GnD8#(L^3zVrwtcJ6ZsYqHHt zaBh7q*Pf<uGkegtNCwkWkawW(-fMJm;2@t3iH$tf%;S}mW#d8Ql`Z|&(@!DnT| ziX>spNDxHz)52>X;4BhE3pPod=6rarCkB%2VZ}549EoRyDk`p0q*OwEU>agAQQV%G z09mz!Y^f6R?J&_xCnk>IdX4DDh7_TF)0CPso&NU+fVpW!_SN!O%nKS3z8@DL@R{P! zC<=8>I*u9J9$Ym__Hy0mP44?f)|aS)pux@|ja z94W0}4z$nW0I>p>m60=)>OyWAmg7f%wec;YPI?m4Mj3@lROt|({T1|f7m4zDY7E1# zwtq>AEUn3=ZsFny)&7W0-LWb5#rwvK&-m5k`>e>CX)vpwglV#CYajnKC<*0M=Di(( zUbasQE3T;~!F;wg$f-uMh*%3{fqp)-&O1Lg+;>dV5kCE>evj=O@`ARnO`i-|NdT?D z_E4z&C6w6FGng|i>?deXMmHwd!5znIkx3f?eKd*4QWml{`WGK0(ykPHUpjqmej=RC zUq7VCMu2!$41`-n1j#hBWEW{Gxt2~Zm=4LyM%Mb6iCq*jnEI*HSh$M*lj{C*E*YjX zxC3?>Gwx|UisUl*{OWr}3p#sc1v{?u1s4%9Ief4+h_IaB? zcnS7QEmDErw!PVj6&iZz{d||;%Y)x$(nz`6m16@onqk??YNNlX`(kqPls;D-f`J&} z())*P3Aw=}t>WL)qlb2WluOFvg808I=hjXLZ&Kiwq*CE{+AqEnz`AA-X&d&$ke8nd ztTI6Y_CN)lS$UYKoTD1rRDp?0UZIl|5YI?5aT#~z3(G^^{+ANL1yL4@nwKa3Cx4E9 zZs?=NXaDDENb_K=kGfb)Ay*!cec5c0P~l?xUaQYK?mtNy>!?9&Dd-T&N#lm8rQX#x zu|aHC`huQzH70f>bdQ*_!Pud;y6~D(A}wut_B4l@!r_M@mk5CI-$+;~MS$7ghOR>D zY5`4=Sf-jJLi=JALiy~~9X9D}B()c+ssce*4mH+69%cTQ!t61R!L*;ph)b8mhu`~9 z*Aqi?kM8ccdrg=d!%i1TgyvFC3@{tU|AnM1{B^YTLKdycsDheORE6z{n% zI7+dXq`DA_wgjalGX|r!M|K2}Vn_2U8IhfL?jZZyx;5wx4elmE3dG8$4nh+z^IS0E;?1uQ4@(_Y+qFbvG`dD zlg^@;_gO>7XieA?sVj`4oc+^@d4dPs(#mm5Av)uk9`S|Zr!NzX{c!F?rW~n=Zp0T` zLDfhaZSuJEgBYscB+t77L{2;4WJcauqH^mPVmM%^8?pl%2kRnoXg$DU7b*`(&nIey)$ndpA6EuHfeiJP)Frnj4=+6T)T!<4|jcpybeM zy7#i1yZ2_?ty@!SqQRMliBM}U3)=Y#0yNPjSizcS18~?b5GosBzgiTUi$)ZhN0AzmOD;}!B?zheAuA>n1%s4eW}1?9cYAWvoxwW9T_lP_bq${pF8MdYO(-_|(LYKx!bh%( z@tMZmve~^+8&Gg(Y^b#(OJ+G$48sANd7%**L?-yDHgA^;i3a6cRJIwV;4b*1$Zkp2 zyH~4bNw)ToYaqu@9p6V!#;jcR9Il9BPGL;o+KPr^;GoG#eQT12o8;v?*xH#M@_`%< zxTEeiy;{7`{^U%j;>Ykzup4;6KE=VixZ~)>=+y$r+~->={CJbZDH8%cPvw32Yf7Gf zJ!tT?=H`jB+!E;Prs*`dt)`gOXFmF(lMScI^8o_=ZYfk2kS_qjPSe^$#*WtKl;f)y{C^By}pk&?< z=b0U_9kh!_Af$Gv!-ajL0Wm+rFYXxIzK0zod61$BX9T2Z!u0||Bv_uOfZ+C8#BRBC ze3E#kxyJ_kX-7F{Kk+~}K}?|oU0&EO!s+Gei2ogM+3=HElHpIwh@UZFuR{851d=Sz&lea6gkxOC$4xFYgL3dzL8CGyzDW4rcf(AW=|n9$T(&b>IkShUHZ z{z7trqnvnZq0GP(51pIizsIGEY`E#}l2#4rGnSrKVvuwq=Mz@!Ow-{6Qs z2A4?nQVJalLi&zeBDc);$?3CmiT-ox=#C8Ta_2g@1T=@Z1h!fe!^OIko3&oaz=qc5 zW}WGkiXanIB|jZN4IwfC;wV#fFE24uin*x61?lX{Js~g11U47;%82u00hC8%g8GFH z1+b$bPZZ+J_{V0M3N~Dji7H%>3F;U)3t*fd1=Pt4asuVjRVQr6h4S#Y>%;~7IY3D8Q>KnaFcYerB{T?T(&3JOr%*Fp@Zv)L zAn@~>Nk4fsh}EP8&0YI_dAUa*4s^g3hJQvS?CMTwZa$Al7#g3v`takpPG>`HZ)Zh3 z!tme4fyCI!YUZa^O}rj$qO8BcE+CKCYH8UP;t}VH`|n>0*sMpt7gSzsC*fN)gfX;K zR}In#z5!Y0mTC=Su7k9tCgBP_$qCfl#gV=vElCJ>aeS7c?O`bYm>F#f{ID?W;3YId zezTo=XSL9EDVC*_iEX*otMsAoxm{<92%V-X`NbC=31Q`7-EhDJ7A}(-SX_Kz99(=s zAY6Q@6nHh$Eq?K(QsAWVk^W-xm}*@0eop1B$)(bNc4a-77!EKnF~k8A!x^q_r&vJ= zXCCjki_T-Gcg$H+mymv_PTq{Jn!I3QuvRUIiIGynRdgH>bN>VrBYET|qJbkf5#Z?3 zIo1y{d1L)3lXsoKU~Hr@5VkSl`lt;JupL+AegnN*sG({(U02#^PFGc{N#9Eb7Ez3O zhub=vI(Ze84)l&Ln@{@LMNV3Js!7$;)${59#@wdC4@sGbAC9=TQ1E)89L2@47%4d< zS)xfuSI@cr;Pt}#f!C|YrK{&$h{vT+rRhpJ+=9-G(}>fNuA&vLlIZgEXSsBkVZ$oo=V^NVgM0 zO#Qc_Rc!$xKNk1yzmFc^=}2*_7h7V!&>^h0L#JfEJsw{iAwcAX&xMYw;eRQ)%f!c6ku z2!bvU0C(Y}*mvPXxN&Bk&Wdm&jtDmaiE!^LP=uT23UWm4Y@rA@76`|qg!7xN-o>{8 zclIl-mHLV61-^~#1HKKolc%eD7ym$9#+l&&#td(WD$#9}1gGyCq8bL$Em6IBM?_Uv zv>Ye`-+}tsz8^!k1M*_>U@BfD2O{t|GU-!|5<>)@B#_Q|NwSE*Q~Qv>?-U24lH%-=$+r(nHTlw5>FCZl6^`MInpQPw~i^#b_4-VyKqvOp_cboaS zx1|&F%jt5AkD?)|BB~3ud|WRN$eo0ef4gkb=$0<_D`@nRcDB%HnXO&04+p>zj~=j1 z9^LcY7PB=JemxuC5|5^~0*~&nB6481hSG>fmmWFa)Ml4JmnFqFlJ$Sj-suk9KIR7wpi813PrbRZU|*zIQ(;)pvfF3Ke&N)}O(n6ku_6fdsC! z-V>@w(8_z{z!ec5rRB9rifqZt>vCfn_VDhOL&-68F#;x9+#BHZ)n_MzVsBI)?TIu4 zu_tP4qIw~Nq0PaY(`{uitdK{xULOf%papUBg!Z=u^7)Y~$xa*u>nj;>*GL#7ZO|uq zUH})5Kx$5OSe}yzZB8^%bVyo;1P)2595*Sq*g>q%UE+tJ9ZDE6S!kB>4&{F4TnW0> z4<1TY<1l&m#`K&@(nb99Y10-e>CahVafG)o8ui%=Wth*eqDU%N?c@Q z3!h-G9aVmH%U@eiWYffO7bF&*IT$;vxEYcnUg|SgMiT-I?vPpA_Ue(8bM28kk4ZaM z0IKH-N!L27qiRKIp4a;|&O^F}W(f=u1NQ2ZbWl8#K*uu)Z#`s72HZ(HwB#k*8Y)Z5(eutYLs5ReQR`wG-nh@%Sbcl!#IAp;A9 z)4+WNjK1wF39GY+QmM~jIVi3QvuE&!` zn*6xRQg_2Zdr1F(BmJ*5R%0-x*w-QA?YhU&A>uo_!G-2petK?487$~d~TAEIy_V=HVb+di#{NK-iR#J3aovKOz0j4&a1@J;IXL1B`h6Xxqf=ONW5gm-oo(N2yPvQy5*!>kQ-Vuh$Pl$ux{1<+h6M zNW@VB@=&q1*)3ZV_9$DT9?vA{@l47$o=Nw{GpXKqCe0hqL^0yoyZA&toCSN3K`GWm zO0nicDb{=_@{kWj9`d1-Xg-u_IUh=i=0h=sd?@Xh52YRRp|oQ@oF!>y$BCQ;XCS2; z6G@`c0#_0_3&*s`{nPY)7MSnhW+D0>js&Z**K8q))(44JqpI=uMpg46iB{vKi6qf# zF~W%?(fT0K`XJHzAkk`>NS2DKPYQ*Y3|!N1x&_Uh*oN%&T|xFv_aq}pY)mx!N|M;p zoFtMYvBi`u$d=w~nhPZZRf}NajNl)J7x|NrKuKVj@WgHinqURq|@Sm5!{AYx#GQyylbE z2V@F`AsyJLAPlkSr&>~`39;Bzk z_Je~I;()Go+`N-$@*T+gET*g*1rBT4*cO_b{}d!}x_dS2gm*WkH>Emv7ZP25{2Hy& z>QexDyE&ci>v&a8b%bQ{KgGEAEXR#&?n(7=AQ%|eR@iD>Tc2$lnq%2%T|J;u+2Ky9xGWS+;0?KMh}dPb_Qg-4o#~s}5o~IlW%b z_BI^WJVHmPb1v(g=TN^-K`}>tOP6 zG%bb0$$ebqWl6I_rba9fZg^yz-&Z&U^wU&|ul5y#WDcDSlJJmZRt8BxlFZ5=2}n}6 zGDre)70_akd?AZL68^rWN8QC(M#|S96(c1SIT%JA_Q%8+jZwGE(qE9w@wjBDE-9c- zhr53X9tandS}Jc8w-pupLd;RIRQUN}8?O{1wDsb;^tEu=Uh7dt4bN*OFXGYV_H;~5+<_tmNWpC&EB zJcf+k1^;edZ59H^@lrc`kjsF@cg^zo+^bK14Ahu#)$U6AYo&-6)98cYw-%Kdyt$k- ztiEt110oKKr!i~%k{TPCQCOs|;g2|r)HH2A8}g7`8$E5}kSURIkh+CBBHHHm?^OWr zOHP)z)8pdiMcI9OagW*kLB;tjjm_Lsj;~7GSZYh#{sm|0&Au(C%KC+xd5fNQaK{l# z9mQ>(rS}R;4n%4Mu~cZQ65-T^qum-{XE()Yv!>Gg{7r&gdt@|C-%#bfSgP6GB=QB3 zEVWi(C-eHs>hH_R0nt?G51gFyg!>IJQrIXM2ODkCRBOH?B-v1svS-;6(C)trC+)fm zClyOLSH)7Zdti!@VjK}#l0O%VchLl_nD{KsEb-ZW1@a0(K1&r7pQRo{#zg8dT|CD) z;Iky7#Aj(>&hF~b2rYI52rc4FqUHO^>vu||j?Q+dRYNdSo<8On5I<94TSGgFxy%p(gp z%j)3~o)6;aBwr7=j5R|s0;6iN`98G8Bu8w%7g+7dUFuZG{+WU%GpWB~Ui9621Iu(|7n6djGr{7#u$iE+*bSU=_MF{|d8{WK5mM&1}6%7KRpY11sL zF)#a44yFouByXA*{p4-}UaR|BHD>?R6AY&zj+?THHCyD;`T5~k_w&P9B~R8(xcc~2Vo9t-ZM<$KRywu>(_g_o zmPFOYJ$zjqp4Aye2|J-y^HN&10zwUEpK~o-fE^xwZGe~s7H19C`X-oP_#u)#U{9`O z5-Vy^-XpcBi16$zuhX-0d0nW5dTshtGDxEXht)iYw#`V-)NV&EHSGsb(#7{bZ3h4g zA54*lJuulf_Q1q35C$9rab(&fVIkArz5;brP4fVkp>R*4g)H@X_RV6CN7dBhFzspk z102#I>@d(E!~qRLLH6?WaYr*kewR4IULK1*-BHN(xR{*Gy3W5LQO?O9VzRuDX3#-4yxtm8_64jnKrI8mqhqt6e8 zSBd$4d8?+pt`Xj=cuWshWjQ@$)rj7dV;DB9TqKaez*r#BnUaQ`oGB3p&Xj~Brq-wD zu-b3t-TV`i8A&tQt+Em^zkDd>M^bf)1NEV>lvDFbIL^m=+zZ@}m&+_3-tO1PbTcIH z@HX2e^v$+;w%iggd%~U{&%}9L@;56)e099I8nMw1m?-~jkdP%PWlXG+VBqMmz|K#R zuw(U>@zm3hss}%sh4k1Huh!1HZCe}j(^A*M=+_`XT>(?cp`1SlZqrh?AS$88Mwq4( zp(dDnb&6R4?Cd_GT3WTKHs2!3fSD z^C@k*y2V<{zV_M~p4KQ-L^e1Q7_hyCDb7ZGTEw?`l#c z5Xz&F@Vd-&BIC49#Bme&6`*AC&sm1tkBoI?D8N`p)k|D@bgE*oFOL>*TdI0_VkdaSt+7fn^r=^eG1!{mepaz5^YJk%Y)PTm> z9i7{G8sfYkG7Id&$x^TjC)+6XH#QSd1H=I}Kpap5#5pzCP!{B>)ytDI|2~C)dXYj5 zT+^L8pK~@M3Q-`BqdVX!s|-nTczu7&t9o)yfeTPri}V7 z1yBeohbRQrmq}+(8p(=;<-vL1f-71H-L^VzA{xByQG%J*q)aBLp}*{05QO>aOtDdy zKF#%95dXYsKlMS*?U!y+z3S_y{XNncbf(NN)M5Rd#;_ebDBg6rj zLL87O!V#IGk)bO^aH+YkaAQ+cV90{l)GnOZ)Gizg>(#CL%^(BiU41`n-cDFAur3;C zI+jD(hhsUa7mwu#czJk)2raH$8m?9wmzu%bg-zYW=vUd#aCT?56uOK&fLe)mFQt6Qf#(vyu6}SM zwKHJPX?*x+oEAv!l!v=WoM9G-9080xoA$t@W%j_d-yjUg5#op(0Wes63tHS)pvVyb zksR$SkQW7#BdVB!7OBVK*)%VYS-rTyM`sjJ-qoXKnj<(43~(*P0oTI*f(H~0Glm|Kgh$3K#Ez!j(7v*(LQiZ)m{#9KgQ6;)%c6fS-a{KX~E9gM%q~5f-BBh zS9jpig}^8*4;L0z&qxBxn1Ef3`bl;%?5EqYScvJidKC6E*u|)Q5U8E2b& zWA44Y#YOCPyu3x8ys-krj-Q_+kE5Hrbd3j3#O6I7C&)S7uE_jRC#h#S$~~gLPN{j^ zsI8dbB}K^$1LD5IwupO26ynZp2#X-YOc(wZn|kp~QooyE3puTX`uFyp7`b)U8F_sj z7Q_DfaF`te75rrV`7;lFa&j7-EB!b^at&(V0f;J(OA=M?uOFWdC0W}?Hb$Dc zJhJ_hDUH*?os5+>c`d4YeL1yTl~Zwvfso35t@`_`%EMvxFVf|^D7A2~S{s}MlFLcY z=@+i_3IZvyJUCe8dXqqMz3J=q!cA7rKj0vp{Zw2;jv90J*j(kGV4O*?0ysOa?u*3a z5U7(xABQ1ThtqlCU#Gj9B6LeHwNLwJGQLsoG+aZ{#G{^c;_dtha=dPwvmmIBE#qt> zvu>O{>5TV>Io^^Nu>Ey#yqo8!m2T^>`J?{kAOBKq3+!-S?*Z5Bj{lDI;~JCxaI%SO zGYw>$^nCaidib~T@OedYwPm*t%&)lP_*ssnavdGZ)dav;BHHsrx zpCpaC4Qv`<$48pDyyr{6U*6E-oF`_S^Ka! zhy53NraN8wf2Z%j_pzkrhvNOz=mYV703z?-SD;iC$qMBB+u6d6H5W8p?2IY~^Z9EK z%N^%nK2OV!Kxb5d?W#L?#k zi3qqb;LHbZW8pz=K`ak)3lffU3*z{N1Ls(cIu9S)H*auf2y;&H`1l3Lj65p1IcdIU zT>7!{bi!8=PA7a75iY-q^t~M`LU&-}mY&fGHoUnRlt_iW)%9`_Dk?tBrIEeYFi7`F@bB>pGfjh7#MrLlSIVbIomo zFRk9Tl6erSnYW6O@^0Q2#zT@taTy79Dq>d20uD)rT|nN_m{ZaKFiTPjrDuV)tEwgo;LGpV>vl{lSB>N=GQ<+ zXjUfwdgI9AD^TIhohyHhuv6a3NTtE8j0A&Q8EYrqcq)M{gMc3hb(q53US6lUy}zCv zlyq&5eMd;hVGJRI_X{?khp4y+O18Ou`0Q(0ly=|U_9r2S7KICpbS6m~#1tV8Vu~1- z;l}%L(p}WPh*8qEMH4_KYQhnPBpjKj5$7gvZGkw>?h7C{SOmJjDM=sWOp@NkA*tfX zPNV&;<7UykO%8z1B!Z2MQHLR!ALD?GL3w$n^@bpz>6tnl-l*Ea$_i5AQg55~vjS1T zvAdwo>u}zlT&b_~|0xB6X;5lpC!HJf?-7~JYEAP+{HG3w`I?IAU^yA)L%4Kj*pMS| zQ+Sm(Sp!#fTYPB&xiLRicXn>{q4$q0ge_Cc7i1QZA-P@HQCw+maT!pvHwTOk%?E6W z6n2+&4e^4ghvxlXE&I%B@w&Rk7e6e;r|W5bk2`N|VC=l*b?&_VwHzfzJI`)Tl_bDm zMJTUq`K7X}r)HO&6hIiuq?c({GSe=>!lhJN8A=OSJH19+mO5a(5=wPF^67Q*?8vh!TrHalhDnh;|_y zMZ0udyKQP!$Zwu{T#kJza`;3TcP2;d+2=>kv%Jz)~f_vn?F3;lpiF+hg395 ze2G(+SEJ!b)A8l5@?zT*v)fs(e#g+Si!OMey~83sqa)9=u(t@&5}_`T$MNQ^n$_&naWfK* zD%TFqC^>GTgn*T8!4)nYiSL_Hj3kLDavg}I$XE`zav}~WGUA-7>Fft_K#>s#WT)dQ zMaDma>t+5~JU1VT)Zzm1D@0_A>(f}$`|+PQ>1oTT^Z%a+`LrbFDfHC0Zf#|W0vSjU z(o=%Lj4d!qgnViN|6g#w@Ut9uXbkP63w4$lpZSzgnGJ1wk<1R<=6Pk$RPfn(B~+*g zs=7F(jS*&RNy->t5U@`$IwGP?!w6^x(g@uN8?M!k%$9INI0T| zh=b!u9A`R?Bp@9}?!t)^BF;Y}#Pzs=RjiuvlsXJ)k{JhF56gpNOTgi=CH5CWyRpL& zD=rR41(H#8;1&)S?pES(1)@9~9=|y+?1@h_dKu_79~V+5p#7Iom{;lzsdc)YF>Yi7F^cx>e0Ck2P} z0OsP%!n(JEg- zBcH{XmDBggU$x%5Ei{D}Ktv-EmZIBXL?iX=ORSvFa{ScW!+t*w1e@f`&L$?*2!cqWhFa7N`R*P11K{3{O&FgGeM zc4WmOa6kOio2P^Bt>E&!AOG5@*Zq=s9jE*MFL_+Rj||5dPN^B^jOOpk{dnxecXTTMme zW?Tx$&3Jj;?gU=Bv1>r>&(xc|?h2>OlL|@Elr~+{vD|unv1V&yf%e2cuaiZ>;RX)n z<%av~jq>t%kLz{ZUpD%Yr*_=mG|?cAHhP@TbX((oz($Yb=l%HS#`wWTzo$G|UQjN> zu%V5fADWM1I`rNo5ccmzBhQo?pty@=+ zQIzID{{=ar&x<2|@x#0Y;aBFyr?I5KBF_w>On78d7)33nQa5i)hxOn9O~dyh>A2}O zouV<+bdS@Qv7k1~_^|j%d5`?0Ad;Wd3aVz5Hd|g#*PMuqK-0tBzHR=1!_A*?>9#K0 z7yv0JF;<)f@+44B;++M~)AfCCA?^wA4(u`T4#E-dz^Mb?0l1s*n+jB8QSkPOcVNBg zF24(>05qJCaBml1#D4gWES^BC(H5J0XRtWWg81>rP$qtO`7st&&+GX(#r7$hur#V( zZbbF~T0h{7j-7<77hY?AaVGXmYdq=c)czk{u0#`x3i3~MkxUZq$brT}L6c2FA>a91}R>3C>^ZgF$R4uaiWwxr;pw40v>YWV{U^1iNJ zcv|Lbo3s}%rD&A9;okJB^hZJDUR++Mt)RbN1xjK&{xU_#fni|4UQ;IZQXBKgJ1bYj zntv*viAqN4QWEh@yFfgXNjaYBcp#ohnZ&dI!ZT%uN}#es!9($rDDquAFds^@jK@y_$M1Uj-`5+1TAPM;(3Hcxi`5*~V z`XFf1EFqH{SYGioOU?7s=MtCykqjwy5Y(zIGslr+NOxxfl4R&($k5?!{lHcz9Q>bz z=!1mlgM>&v!B8d%QL|k{Ka~ooKeW4{z)+EYCb?2}ATAM(F_sb^B|8wbkwonqiP|?3 zHDw2aGD#UJI}jjAkmRNDLKZg}cu0cO2-z6TNzfl|v~FiBeUK)<5mHdfsQ)T*4kD5z zZ?&SB*#qL>no;71dD;?hR?QyHbR}j0qkF_x+$JeoO8WF@2HRz3S*bRJrRf7;5f~t$ z8n9>U-3hk7PO`N8yIksUbK9Ln5847gu-r5Ij+A(oCSR}Cs%8_RsUweu1^4N-+`YU{ zujSr{(-NV%fozD}4>w?FAz^>vU}6_es(cTweW??UzKH>sCU0qpE>2UHL+%{f%Sp)S zL%4_!xP4(c>9a_ajUU2Y$g16XES!-jPP=+Ol-`Br+}tOqsonnP<(`v+;*dSFVKYaU zz8{Wnm#wIda|;alieqpJM41x6Ey<1!&+6>7Je93hHWp_#B<=Dgnn>2m2+{3`PjxcZ z7b%^&SteUz1yEWGAlYTs<8oJ@((2Hguuw~? zaR_Z&lU6Tnx_Xp}7DDZ{pI}K*Kt<#h2QYMtBOGlahy%B{T{yACT{s@sbc>q@cD9y- zb(@AStlQEd*gm&zi_qh|`{}WG7S$U;jw0!Vqtk7~!Ra>QynVcAZ_||kiw5I)!&7h^ z7e6f*voG>~ev3RX;`vw<9EDR?$;M4nOZz!anRj7`N(mCZMZ#TPxpA7>J{+lD+T!cb zMfd`iLr3CRA5a0r!S`dwRVt7V*Tp>{XAL;%WzP%RsK8R<;@!5myzv-+$0q(YL7is^ z>b%-+Eep<`piTgxH~zk$&R&}Q0Mh}m#eRGR^I2j@Y7RQje<}3`Fvvl-!ZsZMmx4;t z5i0!Xhf(^Zgf<-Ai$aos8y?F0r3K_lo#0?d2(p~O1I`95-3&XK> z2yV|wsC@ZX|8#CGT?k@eTr*5oFAv1EYZVa&j7 z(&PnEX)-n>`Z@Ge+8=%M1sMu#}C(e1+N6K5Ar91aK1Ih>X|;mETTa2UFZ?SqIG z#KFPQF5JfSy1s0jhWbmK264b?5C^tA#6d_Z^*0P*QmhNkfu z^1%9F3+}jTeaeTc*jDQkRC9BN)T~c^OiD^In(%Gw(*<%t{FKxg&vJhLvwE*;Tzq_Z z!DKd@_8=R;U%p_gU&EiKe@=-rUd5Hf8EYNm!0*rScjYYx=8f3E#g_u z&wp0kBAh6E90*1`@rv8pi94d~#MlUr;{G)@;^tO^-yrPZ=_G$Q!JZ!+<}vzvdrup- zb=EiR`Z~NQ`s?CFarFcTl9nZix=aw9w-M};;iaq`u##1+^yIK7I7hhv4#p(uad*jGG1#uz)@WHfejR+zWR zB~wYx_^i6LTlF9q1YwX}Og@!RZ9 zb8&xDZSOD=;3SD75x1vEUDR$LJ)NwCy&%pvYq_L6M)U9ROoC4>2c`fpNW0G+G?gHx zu&1>D?1TLmx}_kO?7xCs;NiE8THv?~TMfru+`B07R~uvR2Xeg5jufrSlbOjs5C_Ly zFPv1{db=20fez#P2O8`@(!;UJZs(zq-{&PY#ourT^IVN_K+Q<{iJAe9?hs%R$vXu0 z;r_|830I(Fd2p@<6E!chG19cC6c?0#S6mQ0oEOy~9={-@zRYO~h%JUfQ>YOAIrGcv zV-hO?YS?kJ!0Rpn2hJPQ=-<2>m3X4arNXVr!?YFm{I;bF24L`M>3oPY<@k+_rcmJ{ zoyF~IGHpAGPI~=$N@qK7JYxiBc^?n;-H|Pyw~(3H(lisZt-ELVm|<@rMeYkXi%VMh zc#Dyzm(@EjkcsG>^Wcu_1xDTbIa#xK&B*X)jhWZX;K@YN6b6+Oq%bIWIPVG5hT@-I zij2Z_?T#Qi*Ig?D~t);ZQ_IW<p`l_Q}_fRtrs0y2#-up4^p6E2Xyj;onMHCIt~`F(lE@qPPS> zdj-vF9!Ktii3IH_O|%GM&akEN5l0^tBu?&m_%52XuRvZElmcjHfxIp#1<=j{=cO?R zHMsp!jD;ieU`k*(*wNdHe|upu-xbfc=ls8xzS;PaAnv&oEQ-aLzKtT z8W}|zg{Si1Ze8qe+;zjks@o}z2(xNN`i}i|2d`B(e?s3^?OT9wjRX!1nShH{ zznOp+$fp*?c&h0pPy?)p0jfM1(Zgi|FmGj4Dca}anBiGj?t#4x4H2cB7 zSm%;^9M=mhyVqOUJ+SPKt1KHk=OmAn;W6Ck#GGlLAm)sNG!PyaZS@HjPTG`W}9Y4Sn$@lG+XOK{Argcqjuc0T!BZfM}sq~eSww>$`65Jz%Z z@+s6f5;vep{{jrpFa9gJw7M_7b@tgz>*w)ax4rHx2zYcGP>me)ya z`)hfstPUT3lqOmWy`ckl?6mDvQr@Lax1+fkNWP$)h+h?FrHO_E_dPJ#K=#0-ulK;@ zkcT)rm#6aL?g#DeyKvgIcj3ebag4$Ei#Ra;5{`_&C`xcHkNtpidBnlF{4Si>;2vCK zdDLGB*6p}*p=z?Xp;v?(Cb%)_<Sdh^T85jem^j7s?#H-P0ph%48Z$&|P}KN%NoCjo(M&M#bXMudm!k}b}NRL#vZ z^0n>1k8yEEQV%{j{+TT&vH&)Wv|X9Pn5}9DMmNxY-YFsH2)E`85)gZ=39qB-Q84ll=N~^;m;H zf5$7orIq-Kjj*Sun2kxdxcL5X0T^tAfXa<!sXvJd*8!KkuXAUVsDg!C~dh-k%LbwOZzy4f^hRB9B!Tf z#LaVGfjn`zdG0Gvn!S+{PA+<-it@7U_VBAX4i|u-O?lupZORLxdWd7`_eieDt#G-Q@}~0K?@lVYG&Zv<*7vyUQbp%C z8$Nj;)tWp``}JBU6vGOAy!krS{tMNSV>q?y=Bz_nq_paI^fOusbU{4atw@|3sv_?S zY7tnf_rPSS-UE}8*#m22gm7f3MqGxDQ+cSvdiR%z?()EmrUP?B0dbXE)+ZD=V!J_QP*XX_jy5Zy0_z8{p7rj^%;T9LF!*nDv!{3&bgv3=M=M<2vEaF@j=D1Gt#j{f5=X zm=;J`L=h{aTN3uQjfEZ^CVJDfxv$YyLHafnsVgBRzC_uX<~!mE<$;fDB}{i>gK9MP*@T!4@IR=xQV z%B(RLYsLL?{U7fIi;mdC<|#%??_Do|wEo%WL7gCBnjnko= zZqRIif9@EG*I}$QXl?KLXudcSL?|5cQ0{_h+ul=}6e7+>=AmR9`Os2<6qttVuyiX0*>-fQoUz)*=r88ICBs$w+knN zxeLdVnt3QiFvqHz=8Xs@)k_YvG|pk_l1U73NHD3qxCNNiDH6dVwq=4#;B1RkDbG2C@j!oW8Z| zzFt^F99M}{W@GdXpAT0lEhXv#aSO5=V)|G}r7jr1$93himVACJ$#uZ5FwliuB%sH~ zAR~!iTjA0_jt2?IeSmKlblQq&by&@n7Zj)3lh)+-Zuw5pIQj7>QIn@45 z&G*wbnI~)Otu_f-d9Mw}Od9&ot|f$bOnIG$g3D_=6f~)m97Au&C<(B;TXm$mYm?vn zz88R6)_5OHAk zqkcs8ZJxHHCxmKdKO7hDueQluII%M72eC55`S-5a7UIC1hd40jAw=;ulHAHAOp7;Ga}cQK3NOo5y5ZGjz_Jhlh0kP(w0f(#i(i5TyQ%1 zoJQm1*}gZFPn4(6R;rh%Ssk@ZE`a3#HA5WO@o;?IG&OInvt1LY*-~E7ipoN5{g83H z<0ju;-cK{Rz}SM!Nvh9Sb&`Va-95EQGtc!uFCq1h`w@(DWo8Z!$fQk^e4kDSD~Y;7 zuG61ln0uD<^Pd&N+&!%32Z9laT5($>sv|xlQQR&Q)n8+~?r$ckzv1Smv5qRedhqD) zrqY&k>nfkWxA$}uY{TSStG*7d^?F@SfDi7*{%7npkS(0sHG z0(^h+|G^DUQicr&QieDnWsJ)++m{H>XRODFLi+9K?e}qi+30SPGHRb96RY$n*c@>{ z${3fVjK|scDFvG&5DsJa;r_KzULMBw@)R;W8##lPeZv{KyTr&Z3`YhsLoqIC8RL?c z?d-@9t$LYxBoZB}=(Cae0}nMEv#vc^h*_|jKbaPIocyCp#0Q!$54vrAu(zPnc065wOcav8ntt!bGQO5shxBu;BFoi|BDH>$pDvvK4pN|d=qOi zK!6>Nhe!pBIM2)_Za0eC;CAIba=ThWaJ%w4xm|x52wM&RW^p6ZMq(MHZI-w7+w$&7CzQnq#T-J%JFcAGAi3*O{3*G^ zVF7Z7I3Ra`qjON4c~91>b5IINoJ#i zCHO>r=Y9+yqGH&ONKGUzh7z3~Z-^r*RyE1n*&VS(#R^1J%!hYg`IBvis2H^#q62Wc zz()4Medg0OOXC*p&&!iW#naZNr*z(-9x(|HHqQ;*m zlcY<%(oOcptR(8_J{#ZGy+B5-aq^~J#i^;j_j|1ihq~M!kqUEGK+hfbBBBL;Yp-^d zPdwGR4wI3nmVeX^8SnZ${LzqyYtLgkn{ss%p2d?MUa)yYj^{W~9k?~IfOfD^#p^U) z$_%QF^l8#%9X3~c2xm3vGQdUVcA3c#W|An42aP*t9?I;ObYS#VUkvf=kMK;&tm9Vs zm-xqj^}!I&B-ZgvQXJ1Du<=X+8qY*_;+Zs1Jkur@&%}V@nRHV;`!76Ga`^-*xjZ}+ zUymZ+N!A)QO5`e9tE9fKax^_$rDl3K%gD&=EpnX|kx0CgOuUm&ysuI*)lOpZPIB>1 zg3%0U*-jFT#-0*M!l9E$K$3X8lYG3BfG7wd%T%Uxct{fRK@##o64LBp(ajH%kj9!4 zNfOd{QzA)1K1f28fB^nZ5~2`EK$3(gQ8^$bNCO^TjF_ZvygHm)t^fDrn_L$#!zXLCjGnzCXF54YP2sO zN@M54d4bIzdJwvR&4JJbZZ?E2@Ys8B#k}~w+ro84&YFkPYV2&`x+ZIZp0+~!L=LR> ziF~MiA|Gm>$cO7Xn|P`S2Z}2g2N4IxLBi3=FNxwYqCMs{HqBMcJ+HeXq#0+S^Qa54 z9%^8eH!r>MnK3W4=~kgviL<>n6Oz+PYc@z~&LgZ)8>=teX~dU8L>kM6S}61ar3OMT zcwPAQ6Y>V^z|T&JdGEtZilBeUT8tmG7#sV~ zIT2~2nLm2~U;83JVA!d7cRRjK5tz@sNA1gDDY1PytiwP7B2+a6h^)9L&pP?u+`cw) z3}}(HuMJW)WKE3{+XqNK9E(g8W8C^fe6f9P0KY&$zvSP?>iPU@WBIdvZDfh_{xe-e z1a)t0EO9ta8%sMe&$?-2QQ~w!uCiP|Kzf<=10*YAxfQWViGfe(T57a&VFNuL~+12zg-qY2}PzhgrlLD686Y;OUWrU z)xB<{ya7hujipDvq9w!SJ$|?pM1&&O0wNUo^;*GAYX*}?M3Ue%!U1@1%Y4jqhtC!q zXb=#`!~&8+{USoOzJPhv0%NC z&4on^9V@ZkjCbMofnz0&i+g`GhKmyIaV*-40e5$IndZPq{h(8Gs+Ug90Y@2Pdc7sG zYJe>ED*{152adEC*;u2YMzMQn(nm@v-=2Y!9>fW zb_z_tC|Ged4$T5wjf3(B)?lbKGS)PjMdD1Jiwmykq`Ui#wc~j#55iJ#P~841E(SQ{ zVt}JeFFeY?#i(8iU%~cyc~XvugYXp^KZq&DaV7^xDla&exY!kgU_=xdBY_SwCbP)EwGB{LAUaQ6HQ4QW9l#@Qk8S2ZE5(mO z8tbDT66-^WbC#=}d%=Cq=5Qd~)+she?ISiLIN;=D)C!QM_)hX@)w%oeWOUm*{{*hUX~U*{TiQS~N2Y}u#3!nI(@VqGFZ?w*@W3UYxR-e!{!hNwV!6rwU< zn>ITrh}<5;?}%RwdR*IJgLW184k4B3wG^37I9j<-O>oElH{1I#dzNQY)yh zrI`Ec;;~76B!`1h^qN(0ZO!YM7E9o?FyfhXZ9J3M(=>y%F8->`J)Y^DB%Vnn$1@pU z;#oW4&xb?urw^6JFQL_WABMhzvP6*s{IioudD7&chaAt%8A3Zh)E=LIpT%*U%g!=5 z9?oJn9_mOW%UngQx_>58`#VlH&{V{M$&helGDIBERGJwK#33N@RK$7o^eoEL1{Qpl z#Jl;W=1`M>H^0++zzV~IZN{xBk@xbHR7iv8Dy2rnuj9YaV!nB;IVYpLi+WCB(RwO6S>NIJ((fVZh4P()q+Up+gd>o-{tl6ttZi@$p9lN4y%1mO49!y zYvZ zrq0U&GOV08CuwxLJ4*$QZnlwXQop;3=wgxj9c-T?Fs;SZ#!Roxg_4gd4Y!|CCKD-E zk9<_Af(P(X9TTWE6a{92#=#o)s@uimM!s$l04x~jEaHI90uJNKQ9s>-Q>!Nqo!5`` z6g@|2L}G+R9ENb>5`+t@u(&L?*L@a63rHU1;YJ)h^n&9{DTru%$%>2P;nC+C3LREv zUWvhq+po3VU1u~z%mD`^Q$wz}Ij|zyDr&KanhnDKw8&)2rEVjtJX9+Y3YtFfC|<+0 zNAWyjpQl4Q0&J|b#Cl6tfT@@Ifsz{`4otm>15+>Jz|@O4Ai^`Qx2`hxpp=mJLFw$o z%L3a=?6=)snZ0?7I^0dOhr`+5d7F|4)v-6&1mGA`SQ8E%kW*~1yK(9iHH6zxLN~QeW>JzyE&}Ccy7GOnu`4gWD?8uZG=}{kx8dVB8epMM3F%Y@D>^L6pif{vp&iQ9)7`j8NITu zZ1T117G)0&o+5kZ$_&f743OyRt+?u=Y`Vws1@D4CL`8K6OmYF z>3wINymapU3E#;Kisb?OYq+`{dVJm+D=uFClb+G#KTQOG!)G#!F1^_WHN-nFvXliK1Mrn#KlRc7M0tsyh!pvPrg3wVcD zfh*9+?UY0PJ;?2xi@mPan;mWt=+$pYLFr98jSrrwUs5M_^j^M_^j?sTVwpnYMuum`rB?JGlSe z#JCYhaY4dER{#sQbc76X^Y z7DJ>H;vmv#2*(N?nOBLDhA6ROBphh@{ZIQ<;>j7~*Y~Q{jN|z@5fuuwytXK4dHqbZydr{@*Uv%A@1J{C zuIK8l9)ITXNm|Z5?MwWRow#Wn4}156|H%*+zv}yW8HSP^DtS5UpDnPzVEZnEe;4U+Ohhv;v=J_o;mL0w)A_R zN?}O;!PY9>vU#WU3*G}t%dK@vyQuvmn{=cz{ z1yr|+a;nQqBE2ekm(y=u8bz-hT;qaBQoQXhN6PU%Syfa^u}gy$Deqmi}tR2 zb+I9@y|pCA>NnZ$24wGd!1BMn|MmPZ!0B?1*DFLrO-Bxgh~<(C?j2N^@1^q`H5xj- zNMJ_f<41T%JkKv1OnI^UvS@LO*ISn#{{oxOLZ*U)Ur4{McUM=NL8Z6i;DB!o9I9FGQ42QxJ(r>h7$$C za$R2E(9Tu|sU5Jr#MPl(zLb%M5Wlz^a*nWJ1-C@cq^bWhjoSdlc4rVdXx|OJ$<}=22 zhxTLL9RfM+4*8=xC4W?>v>$1Am}2SQV|SQi^6T@BVJF{DW+QE_RSP`R*XJEFTg^#F*72-ho?s7e|zaCM|bGTt5B_Eq?}}VBb6s*yN4q%<9%Y;7!ArMH96ZQ2KZcXNf~MmxQU{BQb4%!q>+|08SWX73sz0aQ>73W5Tx8b>Gd4^i<|AH@|5K)w zy}0`S-JkyTAOGXu{@>^S{?C8>`~T99yHBSCQMYtZFZ<^fHm{nlrkJxkS|bdcA4wWG zKd!LNTh@r?*Uk%7g(T_Rq6jd@s%Db(p+dFiE_J&tcVW&bpOKFiMDo${Id56p=icA> zd1v!pY!rHstQn{iCQa*isnh=C>zZa$ZIlP$h>Jo=;M6z-(^`!6HWQT=+Y#7gWC0xC zv5oDUo?pU!MaK}1?)5bl7V~ruFL6Vnt zC04D(>6kRD$&Ayzn@K>lcj9 zEE|c4w6V_RK6InQ`klNTJZ|Jgx5}HAdEj5I-wwU)>TvMqfs{1}djt}nH{9MOx+j+` zI;2zX2&EVr#$^o69oO9~@d`!})bPhTZ?+m1PcM6?#zCefM^)twE56VbvJ zMU)A(C{mwm%Nr?FM60yOcBb#_GZL*LAc@w8?s2|2}HUB1#1PhmWaV34(JZy$gqV& z0`bP&5a2r?Fnz^XXV9mNDo8$MJaYarCM%aXvIE6-_q~=^MSk$Pe z$)YyY4pwPQYR(mOe=OG3!wI63an_yU;X!Sdttr}AKNyRE3kZ=Y>KZa)Ew~L5HGiL8 zpX?s~YqikUzWlhM1%9jWCLZ02EYSnl^PUu0$qunY$;gDOL>QUGnn~BlZwqkeCueHw zrquh5oXBr0dqJcue-znjKX#qHY+&_OP(3fR8jFlMO(DPU5TE-DG1ZsI#;?q{w~Noo zoVKVlF(-=9&UgG)X`9Tc3F_l>sSd=PutjEc(`gN0#GC*I@A!F(!bY`-*>t%nh@?*C zbK0odXQ|fuj-S&X*{En3;l{MV)^r3~B1;AII;Kq(oiA$({5D%U4yBVpY6K>VhU08U zH*KN>^NZWbAO$!uNa-j@KzPb~P@vXN8Wc}2@FK=HRzp_pJzaWI!DI*n95O>}2rxs$ z0W-wB%^1k1Cz+Ho+2^CesQA7nu>-nY6k@y4B0VMJt$D6j@nheAv(mzTK|8JD>f8JDrQi~~zx zYe%&NV&gohKgOw+o znoOGQuV<6yMYqGgl1_KXMaiDer)#{$&D+62kH{|^&zSiX&-)JV^*lrH_QkohY?>6~ z9e3&oBb(+TZIhX|aOJ|xp$^2%0j9X=baTg++Z5AsKT@jZNNtiaYgskRceH92L{jte zIjMR3EN_7|eZk4Sag%YcAo`yuZZaX$e)TT#h>bxptb$W!#K-)tFHu6DSUXya%5258*`6hHyMr@UQ{$@Ya0@*Uz92EEam1C`VW+II(e%f^(gb z-C7#q(>kMv8tMHa)EM#;B~5@N?^tO%zMwph(&ecLR_%UATb?88x3T5Ne&Y3m0tX$a zqIPCKveEq1n@P~y{rv3SOv1Ga?d(*cw6iaJlx}{PVnplOU-ujleO0m9{=&&?KlzqY z`kA);NPCc8O+wA1GtW|=4dXp&5}kRdUF3lZIC?dS>knrhtRI|t8m`_LP^H5ym9{ZG zq?9T+-7Tevbt_#h4B^)KRYStF4|~$r$BE-y@>O#>GBx1r z;GxY_InI6X*2#646Ouk%oj6W$;!BYcsk)_iMkaz6W{zRDC^!Jc6BnkkF3mGbjW+|7=!>zb-fU)&MpnN@hr6w7mM{|c*r z@g(41b1O42crEl+dt2VW^VUINaFq~&!S%C|oj={>>y?M@QZ!FO)HljnP<#3>8+~I& zjlXTcZ2SHD7)aaJQLfA5ULjsg&BFGYPF#+kTsqcgfy-b?s@O!^2)J~bd4KJN35e8`nNlH z$9#_+^BiuqKiFb(+C^~EvR-J7pVq7EDN=s?h^6fz&I#27Ug0EMJ_)p_aeYnRQyjc* ztv;E52d5cOL{<~0VyvEuA~5c=Y*%F)rF=cD-1_7Xb}B>?Aui0+fA02&g}y8cT74Rb zyTQrI&x^#4I&F=~mOXd6VtEfA)tekK8+qPzp`+4!3uxRo;D>|EwXn>IWC{!{x+`qU zqT3L~OBIFt!AOe?)ZxkR3$(^iRekN%5(BVs@BX%f-CATTkXXzjX3N*2BEq0sKZim0 z{<(Kk#W8c^tyZg6wbk`U+DLtvxyOfK+U7>2{kAc184Aur0-@jt1h0refnV}00I!Ha zfvkk&6@fzuUJ(sfT%yP;0_B0fEaTEpNjQ2t5+KOTo1P<$>{za3@GBj<|U2M`sh_H1H@8bb>f-`{VK?(EUf* z&ej*LlyWhi1iAx@19AJ&>1F4`UfmQfkZkZ{^6K5>SW2YhJ|1J;6D|#Lvarpm09BQl zuexgJ$TA}yTG$prU3Xqgn?+#(cJW80#2x^401I2Gy>GVSru92n*lPRh;Oo>}KBtAP zeJdm4`fNB9tDqE>{7C%QP+F65c$WFyyvTjSm~HS%^-r; z^z6e|-kQwVE$Q~kI3RdfzjS-W{yT+9OB)?^pnRV!WQzwl8JQR!353jjV>mG~YB4yf zGR{p<%L-AGc)|;es4-zn+nD@hBg1|P8(F^$bT>}$EDLsESgm4J*oC1?`&F6V*W)## zps;(%mPXAaTN>bwF|4b8c8MEBrbs8qAXeH1WD4atP6ji?0huD4XI)SvILiZ))Z~?f zk@r6?H-7M=XfgHiF5bTuEpEU{8tAW;m3+gs@iJwnG}p#kPUt^;c{iuI++X{66=m7= zLy4ZLyu}^e3i(jr5#q=iw#wTyhc(D~RYzGPs2(RUh!Kt~Vki$xVuT}`SZ$Y|7PaD3 z0J%9DB+X(~MB2sfgDR)m)zk6Wmp_?#aZuCM@s5+0-0i`lDfd!(ntXV6qoZbqRreVF zjd#SQuW;PeYForX^{ZcPi$gdWK8A22QrJ(5NIC((XfYIj+Q-cO*$cNG~0n2Do(-hJctkt z&paInG0kQI`Qd^m(;<>R8k%*Tz1y?5O+%KCU9 zn#vkU7Qq!c?Z3}wPg^#b1X&u{1UJg{6M@(dB9D=ERAlsy?44A|dGHRby>oDnDR~ce z$Q$X{`}@8Mu1buj30(IBmDuF?=x*%=#GC6#0C8@B!qN6*h9uwt+zsz-EE3TW*(9EO zdbo#lOFWGrN5Rs)U6|FzYA?Un@DSWk9}l4FsEvqq&w)ISOjd*1|H?M~6jsoM#E7mv zGz#8FVLvO!@%d@*_9sO=jTE~w9_Qz)mY6XSa?^j@!C+4H9tQ*WgOQ8J;K6`!bTC+P zn+JmisRsj;4+jIn(ZK-a!NGuVbTFvxf`dT?;K9ITgiW%3&x65zP#+!)a8Ti3uxd$n zFu4Et@L*uog@ZvuJUkfSpu)jm2&YY82&Y9J`^gUm6X9nqA;OPHBK(6QMfkCnbcH`C zQiPvHx|gAByxc=T_z8%FpNj^<&p;sj1VqA*{ey&`TLXlD3@Gk02HenHyw1ng5aAyK zitumfPZE9v65&T65q=zOBK!=@qzK&MMEF@E5Poh95&nkMy4M8}araVQ`VP6x?pc|M z-7}J|{1J)l{*HXe?$@s9h#a!}6}ips0|V?nFu?9{%!%EvKn^9k57lFK-y{_vvU>s| zyKlh9?4DZ-HuQVfRd&Cj70K=y2<-k2e9Z1^|8KGT8D;D~-iuLa&N5u9$!8vqH<7xni|%3 z8(kj5BL)}0(-HxpHxcsr@NAI|n@fG~YpX0Q@tgeTOUu&=Up^<-Zl84;T+g4ovoQc2 zRH64M#wIE#`waZ)Awo=acC8IL+q{)hhj5)w<2R{!{3c!!zlnlC#Ukl|%qa1vV$|`Q zXhr;{oB;5n42g*p_s$=CwO&Hmbyb*1vFH48(b7Koz@n4=k0QYN=cIx!q=PTL5-#=B zEpy7$y>kB8YgZSs56E7b7G$qE%a5cjlkaMlPWtjf3iHxy%u*2P#|tUQ3u%Y~+_Opw zaEBjBLtaTk6uJ(7P8#w`8uCgS@=6-=N*eM?8uHp}NEgc&5#znm+=$5T;_(i>3e90Y zetWGD^R)wJ$jOPb3~GxiOpr^2u1=Qa(3Z)uG=C&zn;b@GA!_;7D`1y10G=D-LV%pjgtr_3PpCq zkEEt=w2&!%75q6ZWO}6Xj;xLtt@7QEq+5FN=&mvQ-h6x5`4d1B!E3$LF<4sNCepWb zUD@GRqF|=kDYgGQyup2$p9rXLaJ$!>RIkBGdM-DIYC&snIg~fJ*S}q+m-?UyEN^fp zavH0p=stQZe^h6;AK?w|%aok=9rEhl<0z zfvMjcqCdb;bovaNe1=w6)s;Uz+JY+*%0AceH3% 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 z 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

;US;s1DuZP$Vsqq5c)@bWC-1$ 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.5.0" + } + }, + "node_modules/@ldapjs/asn1": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-2.0.0.tgz", + "integrity": "sha512-G9+DkEOirNgdPmD0I8nu57ygQJKOOgFEMKknEuQvIHbGLwP3ny1mY+OTUYLCbCaGJP4sox5eYgBJRuSUpnAddA==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT" + }, + "node_modules/@ldapjs/attribute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ldapjs/attribute/-/attribute-1.0.0.tgz", + "integrity": "sha512-ptMl2d/5xJ0q+RgmnqOi3Zgwk/TMJYG7dYMC0Keko+yZU6n+oFM59MjQOUht5pxJeS4FWrImhu/LebX24vJNRQ==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "2.0.0", + "@ldapjs/protocol": "^1.2.1", + "process-warning": "^2.1.0" + } + }, + "node_modules/@ldapjs/change": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ldapjs/change/-/change-1.0.0.tgz", + "integrity": "sha512-EOQNFH1RIku3M1s0OAJOzGfAohuFYXFY4s73wOhRm4KFGhmQQ7MChOh2YtYu9Kwgvuq1B0xKciXVzHCGkB5V+Q==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "2.0.0", + "@ldapjs/attribute": "1.0.0" + } + }, + "node_modules/@ldapjs/controls": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@ldapjs/controls/-/controls-2.1.0.tgz", + "integrity": "sha512-2pFdD1yRC9V9hXfAWvCCO2RRWK9OdIEcJIos/9cCVP9O4k72BY1bLDQQ4KpUoJnl4y/JoD4iFgM+YWT3IfITWw==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "^1.2.0", + "@ldapjs/protocol": "^1.2.1" + } + }, + "node_modules/@ldapjs/controls/node_modules/@ldapjs/asn1": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ldapjs/asn1/-/asn1-1.2.0.tgz", + "integrity": "sha512-KX/qQJ2xxzvO2/WOvr1UdQ+8P5dVvuOLk/C9b1bIkXxZss8BaR28njXdPgFCpj5aHaf1t8PmuVnea+N9YG9YMw==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT" + }, + "node_modules/@ldapjs/dn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ldapjs/dn/-/dn-1.1.0.tgz", + "integrity": "sha512-R72zH5ZeBj/Fujf/yBu78YzpJjJXG46YHFo5E4W1EqfNpo1UsVPqdLrRMXeKIsJT3x9dJVIfR6OpzgINlKpi0A==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "2.0.0", + "process-warning": "^2.1.0" + } + }, + "node_modules/@ldapjs/filter": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@ldapjs/filter/-/filter-2.1.1.tgz", + "integrity": "sha512-TwPK5eEgNdUO1ABPBUQabcZ+h9heDORE4V9WNZqCtYLKc06+6+UAJ3IAbr0L0bYTnkkWC/JEQD2F+zAFsuikNw==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "2.0.0", + "@ldapjs/protocol": "^1.2.1", + "process-warning": "^2.1.0" + } + }, + "node_modules/@ldapjs/messages": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ldapjs/messages/-/messages-1.3.0.tgz", + "integrity": "sha512-K7xZpXJ21bj92jS35wtRbdcNrwmxAtPwy4myeh9duy/eR3xQKvikVycbdWVzkYEAVE5Ce520VXNOwCHjomjCZw==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "^2.0.0", + "@ldapjs/attribute": "^1.0.0", + "@ldapjs/change": "^1.0.0", + "@ldapjs/controls": "^2.1.0", + "@ldapjs/dn": "^1.1.0", + "@ldapjs/filter": "^2.1.1", + "@ldapjs/protocol": "^1.2.1", + "process-warning": "^2.2.0" + } + }, + "node_modules/@ldapjs/protocol": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ldapjs/protocol/-/protocol-1.2.1.tgz", + "integrity": "sha512-O89xFDLW2gBoZWNXuXpBSM32/KealKCTb3JGtJdtUQc7RjAk8XzrRgyz02cPAwGKwKPxy0ivuC7UP9bmN87egQ==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT" + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "license": "MIT", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/bcrypt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", + "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-session": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.19.0.tgz", + "integrity": "sha512-0csaMkGq+vaiZTmSMMGkfdCOabYv192VbytFypcvI0MANrp+4i/7yEkJ0sbAEhycQjntaKGzYfjfXQyVb7BHMA==", + "license": "MIT", + "dependencies": { + "cookie": "~0.7.2", + "cookie-signature": "~1.0.7", + "debug": "~2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.1.0", + "parseurl": "~1.3.3", + "safe-buffer": "~5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ldapjs": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-3.0.7.tgz", + "integrity": "sha512-1ky+WrN+4CFMuoekUOv7Y1037XWdjKpu0xAPwSP+9KdvmV9PG+qOKlssDV6a+U32apwxdD3is/BZcWOYzN30cg==", + "deprecated": "This package has been decomissioned. See https://github.com/ldapjs/node-ldapjs/blob/8ffd0bc9c149088a10ec4c1ec6a18450f76ad05d/README.md", + "license": "MIT", + "dependencies": { + "@ldapjs/asn1": "^2.0.0", + "@ldapjs/attribute": "^1.0.0", + "@ldapjs/change": "^1.0.0", + "@ldapjs/controls": "^2.1.0", + "@ldapjs/dn": "^1.1.0", + "@ldapjs/filter": "^2.1.1", + "@ldapjs/messages": "^1.3.0", + "@ldapjs/protocol": "^1.2.1", + "abstract-logging": "^2.0.1", + "assert-plus": "^1.0.0", + "backoff": "^2.5.0", + "once": "^1.4.0", + "vasync": "^2.2.1", + "verror": "^1.10.1" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-addon-api": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.6.0.tgz", + "integrity": "sha512-gBVjCaqDlRUk0EwoPNKzIr9KkS9041G/q31IBShPs1Xz6UTA+EXdZADbzqAJQrpDRq71CIMnOP5VMut3SL0z5Q==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process-warning": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", + "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "license": "MIT", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vasync": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz", + "integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "verror": "1.10.0" + } + }, + "node_modules/vasync/node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..b079063 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "sds-crm", + "private": true, + "version": "1.0.0", + "type": "module", + "engines": { + "node": ">=22.5.0" + }, + "scripts": { + "start": "node server/index.js", + "dev": "node --watch server/index.js", + "db:init": "node server/init-db.js", + "import:anlagen": "node scripts/import-anlagen-itt.mjs", + "import:anlagen:neu": "node scripts/import-anlagen-itt.mjs --replace" + }, + "dependencies": { + "bcrypt": "^6.0.0", + "cors": "^2.8.5", + "dotenv": "^16.4.7", + "express": "^4.21.2", + "express-session": "^1.19.0", + "ldapjs": "^3.0.7", + "xlsx": "^0.18.5" + } +} diff --git a/public/css/style.css b/public/css/style.css new file mode 100644 index 0000000..4f861df --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,866 @@ +:root { + --bg: #0d1117; + --bg-card: #161b22; + --bg-raised: #1c2330; + --bg-hover: #212836; + --border: #30363d; + --border-hi: #444c56; + --text: #e6edf3; + --text-sub: #8b949e; + --text-muted:#6e7681; + --accent: #2f81f7; + --accent-hi: #58a6ff; + --green: #238636; + --green-fg: #3fb950; + --amber: #9e6a03; + --amber-fg: #d29922; + --red: #b91c1c; + --red-fg: #f85149; + + font-family: 'Segoe UI', system-ui, sans-serif; + font-size: 14px; + line-height: 1.55; + color: var(--text); + background: var(--bg); +} + +* { box-sizing: border-box; } + +body { margin: 0; } + +a { + color: var(--accent-hi); + text-decoration: none; +} +a:hover { text-decoration: underline; } + +/* ── Header ──────────────────────────────────────── */ +.header { + background: #010409; + border-bottom: 1px solid var(--border); + padding: 0 1.5rem; + height: 52px; + display: flex; + align-items: center; + gap: 2rem; + position: sticky; + top: 0; + z-index: 100; +} + +.header h1 { + margin: 0; + font-size: 1rem; + font-weight: 600; + color: var(--text); + letter-spacing: 0.02em; + white-space: nowrap; +} + +.header nav { display: flex; gap: 0.25rem; } + +.header nav a { + color: var(--text-sub); + padding: 0.35rem 0.75rem; + border-radius: 6px; + font-size: 0.9rem; + transition: color 0.1s, background 0.1s; +} + +.header nav a:hover { + color: var(--text); + background: var(--bg-raised); + text-decoration: none; +} + +.header h1 a { + color: inherit; +} + +#main-nav { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.75rem 1rem; +} + +.nav-user { + font-size: 0.85rem; +} + +.btn-nav-logout { + padding: 0.3rem 0.65rem; + font-size: 0.85rem; +} + +.auth-panel { + max-width: 28rem; +} + +.row-inline { + flex-direction: row; + align-items: center; + gap: 0.5rem; +} + +.users-table .users-actions { + white-space: nowrap; +} + +.users-table .users-actions button { + margin-right: 0.35rem; + margin-bottom: 0.25rem; +} + +.options-page .options-section-title { + margin: 0 0 0.5rem; + font-size: 1.05rem; + font-weight: 600; + color: var(--text); + text-transform: none; + letter-spacing: normal; +} + +.options-page .options-section .muted code { + font-size: 0.85em; +} + +/* LDAP-Synchronisation (Referenz-Layout) */ +.ldap-section { + padding: 0; + overflow: hidden; +} + +.ldap-section-toggle { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + padding: 0.85rem 1.25rem; + margin: 0; + border: none; + border-bottom: 1px solid var(--border); + background: var(--bg-raised); + color: var(--text); + font: inherit; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + text-align: left; +} + +.ldap-section-toggle:hover { + background: var(--bg-hover); +} + +.ldap-section-heading { + flex: 1; +} + +.ldap-chevron { + font-size: 0.75rem; + color: var(--text-muted); + flex-shrink: 0; +} + +.ldap-section-body { + padding: 1rem 1.25rem 1.25rem; +} + +.ldap-section-body[hidden] { + display: none !important; +} + +.ldap-subtitle { + margin: 0 0 1rem; + font-size: 0.95rem; + font-weight: 600; + color: var(--text-sub); +} + +.ldap-sync-check { + margin-bottom: 1rem; +} + +.form-grid-2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.75rem 1rem; + margin-bottom: 0.75rem; +} + +@media (max-width: 720px) { + .form-grid-2 { + grid-template-columns: 1fr; + } +} + +.form-grid-ldap-attr { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 0.75rem 1rem; + margin-bottom: 0.75rem; +} + +@media (max-width: 900px) { + .form-grid-ldap-attr { + grid-template-columns: 1fr; + } +} + +.options-page label.full-width { + display: flex; + flex-direction: column; + gap: 0.35rem; + margin-bottom: 0.75rem; +} + +.ldap-filter-ta { + font-family: ui-monospace, monospace; + font-size: 0.82rem; + line-height: 1.45; + min-height: 5rem; +} + +.ldap-hint { + margin: -0.35rem 0 0.75rem; + font-size: 0.82rem; +} + +.options-actions { + display: flex; + justify-content: flex-start; +} + +.btn-config-save { + padding: 0.5rem 1.25rem; + font-weight: 600; +} + +/* LDAP Sync-Panel (Optionen) */ +.sync-panel .sync-actions { + margin-bottom: 0.75rem; +} + +.btn-ldap-sync-now { + padding: 0.5rem 1.1rem; + font-weight: 600; +} + +.sync-last-line { + margin: 0 0 1rem; + font-size: 0.92rem; +} + +.sync-log-title { + margin: 0 0 0.65rem; + font-size: 0.95rem; + font-weight: 600; + color: var(--text-sub); + text-transform: none; + letter-spacing: normal; +} + +.sync-log-table-wrap { + overflow-x: auto; +} + +table.sync-log-table { + font-size: 0.88rem; +} + +table.sync-log-table th, +table.sync-log-table td { + padding: 0.45rem 0.65rem; + border-bottom: 1px solid var(--border); + vertical-align: top; +} + +table.sync-log-table th { + font-weight: 600; + color: var(--text-sub); + text-align: left; +} + +table.sync-log-table td.num { + text-align: right; + font-variant-numeric: tabular-nums; +} + +.sync-status-badge { + display: inline-block; + padding: 0.15rem 0.55rem; + border-radius: 999px; + font-size: 0.82rem; + font-weight: 600; +} + +.sync-status-badge.sync-status-ok { + background: rgba(46, 160, 67, 0.25); + color: #3fb950; + border: 1px solid rgba(63, 185, 80, 0.45); +} + +.sync-status-badge.sync-status-err { + background: rgba(248, 81, 73, 0.15); + color: var(--red, #f85149); + border: 1px solid rgba(248, 81, 73, 0.35); +} + +.tv-device-row { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + gap: 0.75rem; +} + +.tv-device-row label { + flex: 1; + min-width: 12rem; +} + +.tv-conn-hint { + margin: 0.25rem 0 0; + font-size: 0.85rem; +} + +/* ── Layout ──────────────────────────────────────── */ +.main { + padding: 1.5rem 2rem; + max-width: 100%; +} + +/* ── Card ────────────────────────────────────────── */ +.card { + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 8px; + padding: 1rem 1.25rem; + margin-bottom: 1rem; +} + +/* ── Stack / Row ─────────────────────────────────── */ +.stack { + display: flex; + flex-direction: column; + gap: 0.85rem; +} + +.row { + display: flex; + gap: 0.75rem; + flex-wrap: wrap; + align-items: flex-end; +} + +/* ── Typography ─────────────────────────────────── */ +h2 { margin: 0 0 0.5rem; font-size: 1.25rem; } +h3, h4 { margin: 0 0 0.5rem; font-size: 0.95rem; color: var(--text-sub); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; } + +.muted { color: var(--text-muted); font-size: 0.9rem; } +.error { color: var(--red-fg); font-size: 0.9rem; } + +/* ── Forms ───────────────────────────────────────── */ +label { + display: flex; + flex-direction: column; + gap: 0.3rem; + font-size: 0.85rem; + font-weight: 500; + color: var(--text-sub); +} + +input, select, textarea, button { font: inherit; } + +input, select, textarea { + padding: 0.45rem 0.65rem; + background: var(--bg); + border: 1px solid var(--border); + border-radius: 6px; + color: var(--text); + min-width: 180px; + transition: border-color 0.1s; +} + +input:focus, select:focus, textarea:focus { + outline: none; + border-color: var(--accent); +} + +textarea { min-height: 72px; resize: vertical; } + +button { + padding: 0.45rem 0.9rem; + border-radius: 6px; + border: 1px solid var(--accent); + background: var(--accent); + color: #fff; + cursor: pointer; + font-weight: 500; + transition: opacity 0.12s; +} +button:hover { opacity: 0.85; } +button.secondary { + background: transparent; + color: var(--accent-hi); + border-color: var(--border-hi); +} +button.secondary:hover { background: var(--bg-hover); opacity: 1; } +button.danger { border-color: var(--red); background: var(--red); color: #fff; } +button:disabled { opacity: 0.4; cursor: not-allowed; } + +/* ── Table (global) ──────────────────────────────── */ +table { + width: 100%; + border-collapse: collapse; + font-size: 0.92rem; +} + +th, td { + text-align: left; + padding: 0.55rem 0.6rem; + border-bottom: 1px solid var(--border); +} + +th { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--text-sub); + font-weight: 600; +} + +/* ── Badge ───────────────────────────────────────── */ +.badge { + display: inline-block; + padding: 0.15rem 0.55rem; + border-radius: 999px; + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.03em; + background: var(--bg-raised); + color: var(--text-sub); + border: 1px solid var(--border-hi); +} + +/* ── Timeline ────────────────────────────────────── */ +.timeline { + border-left: 2px solid var(--border); + margin-left: 0.35rem; + padding-left: 1rem; +} +.timeline-item { margin-bottom: 1rem; } +.timeline-item time { font-size: 0.78rem; color: var(--text-muted); } + +/* ── Table-Wrap ──────────────────────────────────── */ +.table-wrap { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +/* ── Extras / Anlagen ────────────────────────────── */ +.extras-table { font-size: 0.88rem; } +.extras-table th { + vertical-align: top; + font-weight: 600; + text-transform: none; + letter-spacing: normal; + color: var(--text-sub); + border-right: 1px solid var(--border); +} +/* Nur Key-Value-Extras: feste Schlüsselspalte (nicht Anlagenliste mit 3 Spalten) */ +.extras-table:not(.anlagen-voll) th { + width: 11rem; +} + +.extras-cell-input { + width: 100%; + min-width: 0; + box-sizing: border-box; + font: inherit; + font-size: 0.88rem; + padding: 0.35rem 0.45rem; + border-radius: 4px; + border: 1px solid var(--border); + background: var(--bg); + color: var(--text); +} +.extras-table th .extras-cell-input { + font-weight: 500; + text-transform: none; + letter-spacing: normal; +} + +.machine-detail-card-title { + margin-top: 0; + font-size: 1rem; + font-weight: 600; +} + +.machine-detail-actions { + flex-wrap: wrap; + align-items: center; + gap: 0.75rem; +} +/* Anlagenliste: Gruppe + Beschreibung schmal aber lesbar, „Wert“ der Rest. + Kein width:100% auf der letzten Zelle — das drückt Spalte 2 auf Mindestbreite. */ +.anlagen-voll { + width: 100%; + table-layout: fixed; +} +/* Spaltenbreiten über colgroup: 1+2 kompakt, 3 bekommt den Rest (kein width:100% auf Zellen) */ +.anlagen-voll col.anlagen-col-gruppe { + width: 10rem; +} +.anlagen-voll col.anlagen-col-beschr { + width: 22%; + min-width: 11rem; +} +.anlagen-voll col.anlagen-col-wert { + width: auto; +} +.anlagen-voll:not(.gruppiert) thead th { + text-transform: none; + letter-spacing: normal; + font-size: 0.75rem; + vertical-align: bottom; +} +.anlagen-voll:not(.gruppiert) thead th:nth-child(1), +.anlagen-voll:not(.gruppiert) tbody td:nth-child(1) { + vertical-align: top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.85rem; +} +.anlagen-voll:not(.gruppiert) thead th:nth-child(2), +.anlagen-voll:not(.gruppiert) tbody th:nth-child(2) { + vertical-align: top; + max-width: 28rem; + white-space: normal; + word-break: break-word; + hyphens: auto; +} +.anlagen-voll:not(.gruppiert) thead th:nth-child(3), +.anlagen-voll:not(.gruppiert) tbody td:nth-child(3) { + vertical-align: top; + word-break: break-word; +} + +/* Gruppierte Anlagenliste: Box pro Gruppe, Kopfzeile = Gruppenname */ +.anlagen-voll.gruppiert col.anlagen-col-beschr { + width: 22%; + min-width: 11rem; +} +.anlagen-voll.gruppiert col.anlagen-col-wert { + width: auto; +} +.anlagen-voll.gruppiert thead th { + text-transform: none; + letter-spacing: normal; + font-size: 0.75rem; + vertical-align: bottom; +} +.anlagen-voll.gruppiert thead th:first-child, +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf) th { + vertical-align: top; + max-width: 28rem; + white-space: normal; + word-break: break-word; + hyphens: auto; +} +.anlagen-voll.gruppiert thead th:last-child, +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf) td { + vertical-align: top; + word-break: break-word; +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe-spacer td { + height: 0.85rem; + padding: 0 !important; + border: none !important; + background: transparent !important; +} +.anlagen-voll.gruppiert tr.anlagen-gruppe-kopf td { + font-weight: 600; + font-size: 0.8rem; + text-transform: none; + letter-spacing: 0.02em; + color: var(--text); + background: var(--bg-raised); + border: 1px solid var(--border-hi); + border-bottom: 1px solid var(--border); + padding: 0.5rem 0.65rem; +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr.anlagen-gruppe-kopf td:first-child { + border-radius: 8px 8px 0 0; +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf) th, +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf) td { + border-left: 1px solid var(--border-hi); + border-right: 1px solid var(--border-hi); +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf) th { + border-right: 1px solid var(--border); +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf):last-child th:first-child { + border-bottom: 1px solid var(--border-hi); + border-bottom-left-radius: 8px; +} +.anlagen-voll.gruppiert tbody.anlagen-gruppe tr:not(.anlagen-gruppe-kopf):last-child td:last-child { + border-bottom: 1px solid var(--border-hi); + border-bottom-right-radius: 8px; +} + +.main:has(.machines-overview) { max-width: 100%; } + +code { + font-size: 0.85em; + background: var(--bg-raised); + color: var(--text-sub); + padding: 0.1em 0.35em; + border-radius: 4px; +} + +/* ═══════════════════════════════════════════════════ + Startseite — Offene Tickets +════════════════════════════════════════════════════ */ +.home-open-tickets { gap: 1rem; } + +.home-kpi-bar { + display: flex; + align-items: center; + gap: 1.25rem; + flex-wrap: wrap; +} + +.home-kpi-pills { + display: flex; + align-items: center; + gap: 0.5rem; + flex-wrap: wrap; +} + +.kpi-pill .badge { + font-size: 0.8rem; + padding: 0.2rem 0.65rem; +} + +.home-open-tickets h2 { + font-size: 1.1rem; + color: var(--text); + font-weight: 600; + letter-spacing: 0; + text-transform: none; + margin: 0; +} + +.home-ticket-list { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.home-ticket-card { + padding: 0; + overflow: hidden; +} + +.home-ticket-top { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + justify-content: space-between; + gap: 0.75rem 1rem; + padding: 0.85rem 1.1rem; + border-bottom: 1px solid var(--border); + background: var(--bg-raised); +} + +.home-ticket-top-inner { + flex: 1; + min-width: 12rem; +} + +.home-ticket-titleline { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.5rem 0.75rem; + font-size: 0.95rem; + margin-bottom: 0.35rem; +} + +.home-ticket-titleline > a { + font-weight: 600; +} + +.home-ticket-meta-row { + font-size: 0.8rem; + color: var(--text-muted); + display: flex; + flex-wrap: wrap; + gap: 0.35rem 1rem; +} + +.home-ticket-open { + display: inline-block; + padding: 0.35rem 0.75rem; + border: 1px solid var(--accent); + border-radius: 6px; + font-size: 0.82rem; + font-weight: 500; + color: var(--accent-hi); + transition: background 0.1s; + flex-shrink: 0; + text-decoration: none; +} + +.home-ticket-open:hover { + background: rgba(47, 129, 247, 0.12); + text-decoration: none; +} + +.home-ticket-context { + padding: 0.85rem 1.1rem; + border-bottom: 1px solid var(--border); +} + +.home-ticket-context-h { + margin: 0 0 0.4rem; + font-size: 0.82rem; +} + +.home-ticket-desc { + white-space: pre-wrap; + word-break: break-word; + color: var(--text-sub); + font-size: 0.88rem; + line-height: 1.55; + margin: 0; +} + +.home-ticket-machine { + margin: 0.65rem 0 0; + font-size: 0.85rem; + color: var(--text-sub); +} + +.home-ticket-events { + padding: 0.75rem 1.1rem 1rem; + display: flex; + flex-direction: column; + gap: 0.65rem; +} + +.home-ticket-no-events { + margin: 0; + font-size: 0.88rem; +} + +.home-event-box { + border: 1px solid var(--border); + border-radius: 6px; + padding: 0.65rem 0.85rem; + background: var(--bg); + font-size: 0.88rem; +} + +.home-event-box-header { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 0.5rem 0.75rem; + margin-bottom: 0.45rem; +} + +.home-event-box-time { + font-size: 0.78rem; + color: var(--text-muted); +} + +.home-event-box-body :last-child { + margin-bottom: 0; +} + +/* Status badge variants */ +.badge-open { background: rgba(35, 134, 54, 0.15); color: var(--green-fg); border-color: rgba(63, 185, 80, 0.3); } +.badge-waiting { background: rgba(158, 106, 3, 0.15); color: var(--amber-fg); border-color: rgba(210, 153, 34, 0.3); } +.badge-done { background: rgba(110, 118, 129, 0.12); color: var(--text-muted); border-color: var(--border); } + +/* Priority badge variants */ +.badge-high { background: rgba(185, 28, 28, 0.18); color: var(--red-fg); border-color: rgba(248, 81, 73, 0.35); } +.badge-medium { background: rgba(158, 106, 3, 0.15); color: var(--amber-fg); border-color: rgba(210, 153, 34, 0.3); } +.badge-low { background: rgba(35, 134, 54, 0.1); color: var(--green-fg); border-color: rgba(63, 185, 80, 0.2); } + +/* Ticket-Detail: Ereignisse als Tabelle (neueste zuerst) */ +.events-table { + font-size: 0.9rem; +} + +.events-table thead th { + background: var(--bg-raised); + white-space: nowrap; +} + +.events-table-time { + color: var(--text-sub); + font-variant-numeric: tabular-nums; + white-space: nowrap; + width: 1%; + vertical-align: top; +} + +.events-table-desc { + color: var(--text-sub); + vertical-align: top; + line-height: 1.5; +} + +.event-inhalt-block { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.event-inhalt-label { + margin: 0; + font-size: 0.72rem; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--text-muted); + font-weight: 600; +} + +.event-inhalt-text { + white-space: pre-wrap; + word-break: break-word; + margin: 0; +} + +.event-inhalt-meta { + margin: 0; + font-size: 0.88rem; +} + +.event-artnr { + font-size: 0.95em; +} + +.event-tv-placeholder { + font-size: 0.85em; +} + +.ev-field-group[hidden] { + display: none !important; +} + +.event-type-badge { + white-space: nowrap; +} + +.event-type-note { background: rgba(88, 166, 255, 0.12); color: var(--accent-hi); border-color: rgba(88, 166, 255, 0.35); } +.event-type-call { background: rgba(163, 113, 247, 0.14); color: #d2a8ff; border-color: rgba(163, 113, 247, 0.35); } +.event-type-remote { background: rgba(35, 134, 54, 0.15); color: var(--green-fg); border-color: rgba(63, 185, 80, 0.3); } +.event-type-part { background: rgba(210, 153, 34, 0.14); color: var(--amber-fg); border-color: rgba(210, 153, 34, 0.35); } +.event-type-system { background: rgba(110, 118, 129, 0.18); color: var(--text-muted); border-color: var(--border-hi); } diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..f095543 --- /dev/null +++ b/public/index.html @@ -0,0 +1,17 @@ + + + + + + SDS CRM + + + +

+
+ + + diff --git a/public/js/api.js b/public/js/api.js new file mode 100644 index 0000000..95f83e0 --- /dev/null +++ b/public/js/api.js @@ -0,0 +1,114 @@ +async function parseError(res, text) { + try { + const j = JSON.parse(text); + if (j.message) { + const base = Array.isArray(j.message) ? j.message.join(', ') : j.message; + const parts = [base]; + if (j.detail && String(j.detail).trim()) { + parts.push(String(j.detail).trim()); + } + if (j.hint && String(j.hint).trim()) { + parts.push(String(j.hint).trim()); + } + return parts.join(' — '); + } + } catch { + /* ignore */ + } + return text || res.statusText; +} + +function redirectToLogin() { + if ( + !location.hash.startsWith('#/login') && + !location.hash.startsWith('#/bootstrap') + ) { + location.hash = '#/login'; + } +} + +/** Geschützte REST-API liegt unter /api (Root-URLs bleiben für die SPA frei). */ +function apiUrl(path) { + if (path.startsWith('/auth/')) return path; + return `/api${path.startsWith('/') ? path : `/${path}`}`; +} + +function onUnauthorized(path) { + if (path.startsWith('/auth/')) return; + redirectToLogin(); +} + +/** Wird bei 401 geworfen: Aufrufer sollen keine Fehlerseite rendern. */ +export function isAuthRedirectError(e) { + return Boolean(e && (e.authRedirect === true || e.name === 'AuthRedirect')); +} + +function authRedirectError() { + const err = new Error('SESSION'); + err.name = 'AuthRedirect'; + err.authRedirect = true; + return err; +} + +function parseJsonBody(text) { + if (!text) return null; + const trimmed = text.trim(); + if (trimmed.startsWith('<')) { + throw new Error( + 'Server lieferte HTML statt JSON (API-URL/Proxy prüfen oder Server neu starten).', + ); + } + try { + return JSON.parse(text); + } catch (e) { + throw new Error( + e && String(e.message || e).includes('JSON') + ? 'Ungültige Server-Antwort (kein JSON).' + : e.message || 'Ungültige Server-Antwort', + ); + } +} + +async function apiRequest(method, path, body) { + const url = apiUrl(path); + const opt = { method, credentials: 'include', headers: {} }; + if (body !== undefined) { + opt.headers['Content-Type'] = 'application/json'; + opt.body = JSON.stringify(body); + } + const res = await fetch(url, opt); + const text = await res.text(); + if (res.status === 401) { + if (path.startsWith('/auth/')) { + throw new Error((await parseError(res, text)) || 'Anmeldung fehlgeschlagen'); + } + onUnauthorized(path); + throw authRedirectError(); + } + if (!res.ok) throw new Error(await parseError(res, text)); + return parseJsonBody(text); +} + +export async function apiGet(path) { + return apiRequest('GET', path); +} + +export async function apiPost(path, body) { + return apiRequest('POST', path, body); +} + +export async function apiPut(path, body) { + return apiRequest('PUT', path, body); +} + +export async function apiDelete(path) { + return apiRequest('DELETE', path); +} + +/** Öffentlich: keine Session nötig, kein Redirect bei 401 */ +export async function authFetchStatus() { + const res = await fetch('/auth/status', { credentials: 'include' }); + const text = await res.text(); + if (!res.ok) throw new Error(await parseError(res, text)); + return parseJsonBody(text); +} diff --git a/public/js/app.js b/public/js/app.js new file mode 100644 index 0000000..c437afc --- /dev/null +++ b/public/js/app.js @@ -0,0 +1,1502 @@ +import { + apiDelete, + apiGet, + apiPost, + apiPut, + authFetchStatus, + isAuthRedirectError, +} from './api.js'; + +/** Zwischenspeicher für GET /integrations/teamviewer/connections (Benutzer → Geräte). */ +let tvSessionsCache = null; + +const ticketStatusLabel = { + OPEN: 'Offen', + WAITING: 'Warte auf Rückmeldung', + DONE: 'Erledigt', +}; + +const ticketPriorityLabel = { + LOW: 'Niedrig', + MEDIUM: 'Mittel', + HIGH: 'Hoch', +}; + +const eventTypeLabel = { + NOTE: 'Notiz', + CALL: 'Anruf', + REMOTE: 'Remote', + PART: 'Ersatzteil benötigt', + SYSTEM: 'System', +}; + +const eventTypeBadgeClass = { + NOTE: 'event-type-note', + CALL: 'event-type-call', + REMOTE: 'event-type-remote', + PART: 'event-type-part', + SYSTEM: 'event-type-system', +}; + +/** Anzeige Dauer aus gespeicherten Sekunden (TeamViewer start/end). */ +function formatRemoteDurationDe(totalSec) { + if (totalSec == null || totalSec < 0) return ''; + const n = Math.floor(Number(totalSec)); + const m = Math.floor(n / 60); + const s = n % 60; + if (m === 0) return `${s} Sek.`; + if (s === 0) return `${m} Min.`; + return `${m} Min. ${s} Sek.`; +} + +/** HTML für die Inhaltsspalte (nur server-/formularbekannte Typen) */ +function eventInhaltHtml(ev) { + const t = ev.type; + if (t === 'CALL') { + let h = `

Beschreibung

${esc(ev.description)}
`; + if (ev.callbackNumber) { + h += `

Rückrufnummer: ${esc(ev.callbackNumber)}

`; + } + return `${h}
`; + } + if (t === 'REMOTE') { + let h = `

Beschreibung

${esc(ev.description)}
`; + if (ev.teamviewerId) { + h += `

Gerät-ID (TeamViewer): ${esc(ev.teamviewerId)}

`; + } + if (ev.remoteDurationSeconds != null) { + h += `

Remote-Dauer: ${esc(formatRemoteDurationDe(ev.remoteDurationSeconds))}

`; + } + return `${h}
`; + } + if (t === 'PART') { + let h = `

Artikelnummer: ${esc(ev.articleNumber || '')}

`; + if (ev.description && String(ev.description).trim()) { + h += `

Bemerkung

${esc(ev.description)}
`; + } + return `${h}
`; + } + return `
${esc(ev.description)}
`; +} + +function fillTvDeviceSelect() { + const userSel = document.getElementById('tv-user-select'); + const devSel = document.getElementById('tv-conn-select'); + if (!devSel) return; + const ukey = userSel?.value ?? ''; + devSel.innerHTML = + ''; + if (!ukey || !tvSessionsCache) { + devSel.disabled = true; + return; + } + const u = (tvSessionsCache.users || []).find((x) => x.userKey === ukey); + const devices = u?.devices || []; + if (devices.length === 0) { + devSel.disabled = true; + return; + } + devSel.disabled = false; + devSel.innerHTML += + devices + .map( + (d) => + ``, + ) + .join(''); +} + +async function loadTeamViewerConnectionsIntoSelect() { + const userSel = document.getElementById('tv-user-select'); + const devSel = document.getElementById('tv-conn-select'); + const hint = document.getElementById('tv-conn-hint'); + if (!userSel || !devSel) return; + userSel.innerHTML = ''; + devSel.innerHTML = ''; + devSel.disabled = true; + if (hint) hint.textContent = ''; + try { + const data = await apiGet('/integrations/teamviewer/connections'); + tvSessionsCache = data; + const users = data.users || []; + userSel.innerHTML = + '' + + users + .map((u) => { + const label = + u.username && u.username !== '_unbekannt' + ? u.username + : u.userid + ? `Benutzer ${u.userid}` + : 'Unbekannt (Benutzer)'; + return ``; + }) + .join(''); + devSel.innerHTML = + ''; + devSel.disabled = true; + userSel.onchange = () => fillTvDeviceSelect(); + if (hint) { + const ndev = users.reduce((n, u) => n + (u.devices?.length || 0), 0); + if (users.length) { + hint.textContent = `${users.length} Benutzer, ${ndev} Gerät(e)/Session(s).`; + } else { + hint.textContent = + data.meta?.recordCount === 0 + ? 'Keine Verbindungen in den letzten 7 Tagen.' + : 'Keine gruppierten Einträge (TeamViewer-Antwort prüfen).'; + } + } + } catch (e) { + tvSessionsCache = null; + userSel.innerHTML = ''; + devSel.innerHTML = ''; + devSel.disabled = true; + if (hint) hint.textContent = e.message || 'Fehler'; + } +} + +function syncEventFormFieldGroups(form) { + const sel = form.querySelector('#ev-type-sel'); + if (!sel) return; + const v = sel.value; + form.querySelectorAll('.ev-field-group').forEach((el) => { + const show = el.getAttribute('data-ev-type') === v; + el.hidden = !show; + el.querySelectorAll('input, textarea').forEach((inp) => { + const name = inp.getAttribute('name'); + let req = false; + if (show) { + if (v === 'NOTE' && name === 'description_note') req = true; + if (v === 'CALL' && (name === 'description_call' || name === 'callbackNumber')) + req = true; + if (v === 'REMOTE' && name === 'description_remote') req = false; + if (v === 'PART' && name === 'articleNumber') req = true; + } + inp.required = req; + }); + }); + if (v === 'REMOTE') { + loadTeamViewerConnectionsIntoSelect(); + } +} + +function buildEventPostBody(ticketId, fd) { + const type = fd.get('type'); + const base = { ticketId, type }; + if (type === 'NOTE') { + return { ...base, description: fd.get('description_note') }; + } + if (type === 'CALL') { + return { + ...base, + description: fd.get('description_call'), + callbackNumber: fd.get('callbackNumber'), + }; + } + if (type === 'REMOTE') { + const body = { + ...base, + description: fd.get('description_remote'), + }; + const tv = fd.get('teamviewerDevice'); + if (tv && String(tv).trim()) body.teamviewerId = String(tv).trim(); + return body; + } + if (type === 'PART') { + return { + ...base, + articleNumber: fd.get('articleNumber'), + description: fd.get('description_part') || '', + }; + } + return base; +} + +function esc(s) { + return String(s ?? '') + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +} + +function extrasName(m) { + const x = m?.extras; + if (!x || typeof x !== 'object') return ''; + return String(x.Name || '').trim(); +} + +function parseRoute() { + const pathOnly = (location.hash.slice(1) || '/home').split('?')[0]; + const raw = pathOnly.replace(/^\/+/, ''); + const parts = raw.split('/').filter(Boolean); + return { parts }; +} + +function formatDateTime(iso) { + try { + return new Date(iso).toLocaleString('de-DE'); + } catch { + return '—'; + } +} + +const appEl = document.getElementById('app'); + +function updateNav(st) { + const nav = document.getElementById('main-nav'); + if (!nav) return; + if (!st.loggedIn) { + nav.innerHTML = ''; + return; + } + const isAdmin = st.user?.role === 'admin'; + nav.innerHTML = ` + Start + Maschinen + Tickets + ${isAdmin ? 'OptionenBenutzer' : ''} + ${esc(st.user.username)} + `; + const btn = document.getElementById('btn-logout'); + if (btn) { + btn.onclick = async () => { + try { + await apiPost('/auth/logout', {}); + } catch { + /* ignore */ + } + updateNav({ loggedIn: false }); + location.hash = '#/login'; + }; + } +} + +async function viewBootstrap() { + appEl.innerHTML = ` +
+

Erster Administrator

+

Es ist noch kein Benutzer angelegt. Legen Sie das erste Admin-Konto an (min. 8 Zeichen Passwort).

+
+
+ + + +
+
+
`; + document.getElementById('form-boot').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPost('/auth/bootstrap', { + username: fd.get('username'), + password: fd.get('password'), + }); + location.hash = '#/home'; + }; +} + +async function viewLogin() { + appEl.innerHTML = ` +
+

Anmelden

+
+
+ + + +
+
+
`; + document.getElementById('form-login').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + try { + await apiPost('/auth/login', { + username: fd.get('username'), + password: fd.get('password'), + }); + location.hash = '#/home'; + } catch (err) { + appEl.querySelector('.auth-err')?.remove(); + const p = document.createElement('p'); + p.className = 'error auth-err'; + p.textContent = err.message || 'Anmeldung fehlgeschlagen'; + document.getElementById('form-login').prepend(p); + } + }; +} + +function formatDeSyncDateTime(iso) { + if (!iso) return '—'; + try { + return new Date(iso).toLocaleString('de-DE', { + day: 'numeric', + month: 'numeric', + year: 'numeric', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + }); + } catch { + return '—'; + } +} + +async function viewOptions() { + const data = await apiGet('/settings/integrations'); + let syncStatus = { lastSyncAt: null, entries: [] }; + try { + syncStatus = await apiGet('/ldap/sync-status'); + } catch { + /* z. B. ältere Server ohne Route */ + } + const ldap = data.ldap || {}; + const L = (k) => esc(ldap[k] ?? ''); + const userFilterVal = esc(ldap.userSearchFilter || ldap.userFilter || ''); + const syncMin = ldap.syncIntervalMinutes ?? 1440; + const tv = data.teamviewer || {}; + const bearer = esc(tv.bearerToken || tv.apiToken || ''); + const tvNotes = esc(tv.notes ?? tv.apiNotes ?? ''); + const lastSyncLabel = formatDeSyncDateTime(syncStatus.lastSyncAt); + const logEntries = Array.isArray(syncStatus.entries) ? syncStatus.entries : []; + const logRows = + logEntries.length > 0 + ? logEntries + .map( + (e) => ` + + ${esc(formatDeSyncDateTime(e.finishedAt))} + ${e.triggerType === 'automatic' ? 'Automatisch' : 'Manuell'} + ${e.status === 'success' ? 'Erfolg' : 'Fehler'} + ${esc(String(e.usersSynced ?? 0))} + ${e.errorMessage ? esc(e.errorMessage) : '—'} + `, + ) + .join('') + : `Noch keine Einträge.`; + + appEl.innerHTML = ` +
+

← Start

+

Optionen

+

Integrationen für das CRM. Werte werden in der Datenbank gespeichert.

+
+
+ +
+

LDAP-Konfiguration

+ +
+ + + + +
+ +
+ + + +
+ +

0 = nur manuelle Synchronisation

+
+
+
+

Synchronisation

+
+ +
+

Letzte Synchronisation: ${esc(lastSyncLabel)}

+

Sync-Log (letzte 10 Einträge)

+
+ + + + + + + + + + + ${logRows} +
ZeitpunktTypStatusBenutzer synchronisiertFehlermeldung
+
+
+
+

TeamViewer

+

API-Aufrufe nutzen den Header Authorization: Bearer <token> (nur das Token ohne das Wort „Bearer“ eintragen).

+ + +
+
+ +
+
+
`; + + const ldapBody = document.getElementById('ldap-section-body'); + const ldapToggle = document.getElementById('ldap-toggle'); + const chev = ldapToggle.querySelector('.ldap-chevron'); + function setLdapOpen(open) { + ldapBody.hidden = !open; + ldapToggle.setAttribute('aria-expanded', String(open)); + chev.textContent = open ? '▲' : '▼'; + } + ldapToggle.onclick = () => setLdapOpen(ldapBody.hidden); + + document.getElementById('btn-ldap-sync-now').onclick = async () => { + const btn = document.getElementById('btn-ldap-sync-now'); + btn.disabled = true; + try { + await apiPost('/ldap/sync', {}); + await route(); + } catch (err) { + alert(err.message || String(err)); + } finally { + btn.disabled = false; + } + }; + + document.getElementById('form-opt').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPut('/settings/integrations', { + ldap: { + serverUrl: fd.get('ldap_serverUrl'), + bindDn: fd.get('ldap_bindDn'), + bindPassword: fd.get('ldap_bindPassword'), + searchBase: fd.get('ldap_searchBase'), + userSearchFilter: fd.get('ldap_userSearchFilter'), + usernameAttribute: fd.get('ldap_usernameAttribute'), + firstNameAttribute: fd.get('ldap_firstNameAttribute'), + lastNameAttribute: fd.get('ldap_lastNameAttribute'), + syncIntervalMinutes: fd.get('ldap_syncIntervalMinutes'), + syncEnabled: fd.get('ldap_syncEnabled') === 'on', + }, + teamviewer: { + bearerToken: fd.get('tv_bearerToken'), + notes: fd.get('tv_notes'), + }, + }); + route(); + }; +} + +async function viewUsers() { + const users = await apiGet('/users'); + appEl.innerHTML = ` +
+

← Start

+

Benutzer

+
+

Neuer Benutzer

+
+
+ + + + +
+
+
+
+ + + + + + + + + + + + ${users + .map( + (u) => ` + + + + + + + `, + ) + .join('')} + +
BenutzerRolleQuelleAktiv
${esc(u.username)}${u.role === 'admin' ? 'Admin' : 'Benutzer'}${u.source === 'ldap' ? 'LDAP' : 'Lokal'}${u.active ? 'Ja' : 'Nein'} + ${u.source === 'local' ? `` : ''} + + +
+
+
`; + + document.getElementById('form-new-user').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPost('/users', { + username: fd.get('username'), + password: fd.get('password'), + role: fd.get('role'), + }); + e.target.reset(); + route(); + }; + + appEl.querySelectorAll('.btn-pw').forEach((btn) => { + btn.onclick = async () => { + const uid = btn.getAttribute('data-id'); + const pw = window.prompt('Neues Passwort (min. 8 Zeichen):'); + if (!pw || pw.length < 8) return; + await apiPut(`/users/${uid}`, { password: pw }); + route(); + }; + }); + appEl.querySelectorAll('.btn-toggle').forEach((btn) => { + btn.onclick = async () => { + const uid = btn.getAttribute('data-id'); + const active = btn.getAttribute('data-active') === '1'; + await apiPut(`/users/${uid}`, { active: !active }); + route(); + }; + }); + appEl.querySelectorAll('.btn-del-user').forEach((btn) => { + btn.onclick = async () => { + if (!window.confirm('Benutzer wirklich löschen?')) return; + const uid = btn.getAttribute('data-id'); + await apiDelete(`/users/${uid}`); + route(); + }; + }); +} + +async function route() { + const { parts } = parseRoute(); + appEl.innerHTML = '

Lade …

'; + + let st; + try { + st = await authFetchStatus(); + } catch { + st = { needsBootstrap: false, loggedIn: false, user: null }; + } + updateNav(st); + + try { + if (st.needsBootstrap) { + if (parts[0] !== 'bootstrap') { + location.hash = '#/bootstrap'; + return; + } + await viewBootstrap(); + return; + } + if (!st.loggedIn) { + if (parts[0] !== 'login') { + location.hash = '#/login'; + return; + } + await viewLogin(); + return; + } + if (parts[0] === 'login' || parts[0] === 'bootstrap') { + location.hash = '#/home'; + return; + } + + const isAdmin = st.user?.role === 'admin'; + if (parts[0] === 'options' && parts.length === 1) { + if (!isAdmin) { + location.hash = '#/home'; + return; + } + await viewOptions(); + return; + } + if (parts[0] === 'users' && parts.length === 1) { + if (!isAdmin) { + location.hash = '#/home'; + return; + } + await viewUsers(); + return; + } + + if (parts[0] === 'home' && parts.length === 1) { + await viewHome(); + return; + } + if (parts[0] === 'machines' && parts.length === 1) { + await viewMachineList(); + return; + } + if (parts[0] === 'machines' && parts.length === 2) { + await viewMachineDetail(parts[1]); + return; + } + if (parts[0] === 'tickets' && parts.length === 1) { + await viewTicketList(); + return; + } + if (parts[0] === 'tickets' && parts.length === 2) { + await viewTicketDetail(parts[1]); + return; + } + location.hash = '#/home'; + } catch (e) { + if (isAuthRedirectError(e)) { + updateNav({ loggedIn: false, user: null, needsBootstrap: false }); + return; + } + appEl.innerHTML = `

${esc(e.message)}

`; + } +} + +/** Einheitlicher Platzhalter, wenn noch keine Gruppenzeile gesetzt war */ +const ANLAGEN_GRUPPE_PLACEHOLDER = '\u2014'; + +/** Baut das extras-Objekt aus dem Maschinen-Bearbeitungsformular (Anlagenliste). */ +function collectExtrasFromMachineForm(form, machine) { + const prev = + machine.extras && typeof machine.extras === 'object' + ? JSON.parse(JSON.stringify(machine.extras)) + : {}; + const beschr = prev._beschriftungZeile9; + const werte = prev._werteAlsListe; + const gruppe = prev._gruppeZeile7; + if ( + Array.isArray(beschr) && + Array.isArray(werte) && + beschr.length === werte.length + ) { + const n = beschr.length; + const newWerte = []; + for (let i = 0; i < n; i++) { + newWerte.push(String(form.elements[`extra_wert_${i}`]?.value ?? '')); + } + prev._werteAlsListe = newWerte; + return prev; + } + const out = {}; + for (const k of Object.keys(prev)) { + if (k.startsWith('_')) out[k] = prev[k]; + } + const kvKeys = Object.keys(prev).filter((k) => !k.startsWith('_')); + for (let i = 0; i < kvKeys.length; i++) { + const key = kvKeys[i]; + out[key] = String(form.elements[`extras_kv_val_${i}`]?.value ?? ''); + } + return out; +} + +function extrasTableHtml(extras, opts) { + const editable = opts && opts.editable === true; + if (!extras || typeof extras !== 'object') { + if (editable) { + return ` +
+

Anlagenliste (ITT)

+

Keine Anlagendaten gespeichert — nichts zu bearbeiten.

+
`; + } + return ''; + } + + const beschr = extras._beschriftungZeile9; + const gruppe = extras._gruppeZeile7; + const werte = extras._werteAlsListe; + + if ( + Array.isArray(beschr) && + Array.isArray(werte) && + beschr.length === werte.length + ) { + const g = + Array.isArray(gruppe) && gruppe.length === beschr.length + ? gruppe + : null; + + if (editable) { + const body = beschr + .map((label, i) => { + const v = werte[i]; + const grp = g ? String(g[i] ?? '') : ''; + return ` + ${esc(grp)} + ${esc(String(label || `Spalte ${i + 1}`))} + + `; + }) + .join(''); + return ` +
+

Anlagenliste (bearbeiten)

+

Nur die Spalte „Wert“ ist bearbeitbar. Gruppe und Beschreibung bleiben wie importiert.

+
+ + + + + + + + + + + + + + ${body} +
Gruppe (Z. 7)Beschreibung (Z. 9)Wert
+
+
`; + } + + /** Zeilen mit gleicher laufender Gruppe; Titelzeile nur bei Wechsel */ + if (g) { + const n = beschr.length; + const groupForRow = []; + let cur = ''; + for (let i = 0; i < n; i++) { + const raw = g[i] != null ? String(g[i]).trim() : ''; + if (raw) cur = raw; + groupForRow[i] = cur || ANLAGEN_GRUPPE_PLACEHOLDER; + } + const segments = []; + let segStart = 0; + for (let i = 1; i <= n; i++) { + if (i === n || groupForRow[i] !== groupForRow[i - 1]) { + segments.push({ from: segStart, to: i, key: groupForRow[segStart] }); + segStart = i; + } + } + + const gruppenTitel = (key) => + key === ANLAGEN_GRUPPE_PLACEHOLDER ? 'Sonstiges' : key; + + const tbodies = segments + .map((seg, idx) => { + const spacer = + idx > 0 + ? `` + : ''; + const titel = gruppenTitel(seg.key); + const kopf = `${esc(titel)}`; + const zeilen = []; + for (let i = seg.from; i < seg.to; i++) { + const v = werte[i]; + const show = v !== '' && v != null; + const label = String(beschr[i] || `Spalte ${i + 1}`); + zeilen.push( + `${esc(label)}${esc(String(v ?? ''))}`, + ); + } + return `${spacer}${kopf}${zeilen.join('')}`; + }) + .join(''); + + return ` +
+

Anlagenliste (alle Spalten · Zeile 9 = Beschreibung)

+

Gruppe = Zeile 7 im Blatt „Anlagen“, Beschreibung = Zeile 9. Zusammenhängende Zeilen mit gleicher Gruppe sind zusammengefasst.

+
+ + + + + + + + + + + + ${tbodies} +
Beschreibung (Z. 9)Wert
+
+
`; + } + + const body = beschr + .map((label, i) => { + const v = werte[i]; + const show = v !== '' && v != null; + const grp = ''; + return ` + ${esc(grp)} + ${esc(String(label || `Spalte ${i + 1}`))} + ${esc(String(v ?? ''))} + `; + }) + .join(''); + return ` +
+

Anlagenliste (alle Spalten · Zeile 9 = Beschreibung)

+

Gruppe = Zeile 7 im Blatt „Anlagen“, Beschreibung = Zeile 9.

+
+ + + + + + + + + + + + + + ${body} +
Gruppe (Z. 7)Beschreibung (Z. 9)Wert
+
+
`; + } + + const kvEntries = Object.entries(extras).filter(([k]) => !k.startsWith('_')); + if (editable) { + if (kvEntries.length === 0) { + return ` +
+

Daten aus Anlagenliste (ITT)

+

Keine zusätzlichen Felder — nichts zu bearbeiten.

+
`; + } + const rows = kvEntries + .map( + ([k, v], i) => + ` + ${esc(k)} + + `, + ) + .join(''); + return ` +
+

Daten aus Anlagenliste (ITT)

+

Nur die Werte sind bearbeitbar; Feldnamen sind fest.

+
+ + ${rows} +
+
+
`; + } + + const rows = kvEntries + .filter(([, v]) => v !== '' && v != null) + .map( + ([k, v]) => + `${esc(k)}${esc(String(v))}`, + ) + .join(''); + if (!rows) return ''; + return ` +
+

Daten aus Anlagenliste (ITT)

+
+ + ${rows} +
+
+
`; +} + +async function viewMachineList() { + const machines = await apiGet('/machines'); + appEl.innerHTML = ` +
+

Maschinen (Anlagenliste)

+

${machines.length} Einträge · Import: npm run import:anlagen

+
+ +
+
+ + + + + + + + + + + + + + ${machines + .map((m) => { + const x = m.extras || {}; + return ` + + + + + + + + + `; + }) + .join('')} + +
Seriennr.TypKonzernName (Excel)StadtLandJahr
${esc(m.seriennummer)}${esc(m.typ)}${esc(x.Konzern || '')}${esc(x.Name || '')}${esc(x.Stadt || '')}${esc(x.Land || '')}${esc(x.Jahr || '')}
+
+
`; + + const inp = document.getElementById('machine-filter'); + const tbody = document.querySelector('#machine-table tbody'); + inp.addEventListener('input', () => { + const q = inp.value.toLowerCase().trim(); + tbody.querySelectorAll('tr').forEach((tr) => { + tr.hidden = !!(q && !tr.textContent.toLowerCase().includes(q)); + }); + }); +} + +async function viewMachineDetail(id) { + const m = await apiGet(`/machines/${id}`); + const ortName = extrasName(m); + + const renderView = () => { + appEl.innerHTML = ` +
+

← Alle Maschinen

+

${esc(m.name)}

+
+

Typ: ${esc(m.typ)}

+

Seriennummer: ${esc(m.seriennummer)}

+

Standort: ${esc(m.standort)}

+ ${ortName ? `

Name (Anlagenliste): ${esc(ortName)}

` : ''} +
+ + Tickets dieser Maschine + +
+
+ ${extrasTableHtml(m.extras)} +
`; + + document.getElementById('btn-m-del').onclick = async () => { + if (!confirm('Maschine wirklich löschen?')) return; + await apiDelete(`/machines/${id}`); + location.hash = '#/machines'; + }; + + document.getElementById('btn-m-edit').onclick = () => renderEdit(); + }; + + const renderEdit = () => { + appEl.innerHTML = ` +
+

← Alle Maschinen

+

${esc(m.name)}

+
+
+

Stammdaten

+
+ + +
+
+ + +
+
+ ${extrasTableHtml(m.extras, { editable: true })} +
+ + + Tickets dieser Maschine + +
+
+
`; + + const form = document.getElementById('form-m'); + form.onsubmit = async (e) => { + e.preventDefault(); + const body = { + name: form.elements.name.value, + typ: form.elements.typ.value, + seriennummer: form.elements.seriennummer.value, + standort: form.elements.standort.value, + extras: collectExtrasFromMachineForm(form, m), + }; + await apiPut(`/machines/${id}`, body); + route(); + }; + document.getElementById('m-cancel').onclick = () => renderView(); + document.getElementById('btn-m-del-edit').onclick = async () => { + if (!confirm('Maschine wirklich löschen?')) return; + await apiDelete(`/machines/${id}`); + location.hash = '#/machines'; + }; + }; + + renderView(); +} + +const statusBadgeClass = { OPEN: 'badge-open', WAITING: 'badge-waiting', DONE: 'badge-done' }; +const priorityBadgeClass = { HIGH: 'badge-high', MEDIUM: 'badge-medium', LOW: 'badge-low' }; + +async function viewHome() { + const tickets = await apiGet('/tickets?open=1'); + const eventsLists = + tickets.length === 0 + ? [] + : await Promise.all(tickets.map((t) => apiGet(`/tickets/${t.id}/events`))); + + const openCount = tickets.filter((t) => t.status === 'OPEN').length; + const waitingCount = tickets.filter((t) => t.status === 'WAITING').length; + + const listHtml = + tickets.length === 0 + ? '

Keine offenen Tickets.

' + : `
${tickets + .map((t, i) => { + const events = eventsLists[i] || []; + const mn = t.machine ? extrasName(t.machine) : ''; + const machineLabel = t.machine + ? `${esc(t.machine.seriennummer)}${mn ? ` · ${esc(mn)}` : ''}` + : ''; + const standort = t.machine ? esc(t.machine.standort) : '—'; + const mBlock = t.machine + ? `

Maschine: ${esc(t.machine.seriennummer)}${mn ? ` · ${esc(mn)}` : ''}  ·  Typ: ${esc(t.machine.typ)}

` + : ''; + const evChrono = [...events].reverse(); + const eventBoxes = + evChrono.length === 0 + ? '

Noch keine Ereignisse in der Historie.

' + : evChrono + .map( + (ev) => ` +
+
+ ${esc(eventTypeLabel[ev.type] || ev.type)} + +
+
${eventInhaltHtml(ev)}
+
`, + ) + .join(''); + return ` +
+
+
+
+ ${esc(t.title)} + ${esc(ticketStatusLabel[t.status])} + ${esc(ticketPriorityLabel[t.priority])} +
+
+ ${t.machine ? `Maschine: ${machineLabel}` : 'Keine Maschine'} + Standort: ${standort} + Erstellt: ${esc(formatDateTime(t.createdAt))} + Aktualisiert: ${esc(formatDateTime(t.updatedAt))} +
+
+ Ticket öffnen → +
+
+

Beschreibung

+

${esc(t.description)}

+ ${mBlock} +
+
${eventBoxes}
+
`; + }) + .join('')}
`; + + appEl.innerHTML = ` +
+
+

Offene Tickets

+
+ ${openCount} Offen + ${waitingCount} Wartend + gesamt: ${tickets.length} +
+
+ ${listHtml} +
`; +} + +function ticketListQuery() { + const q = new URLSearchParams(location.hash.split('?')[1] || ''); + const p = new URLSearchParams(); + if (q.get('status')) p.set('status', q.get('status')); + if (q.get('priority')) p.set('priority', q.get('priority')); + if (q.get('machineId')) p.set('machineId', q.get('machineId')); + const s = p.toString(); + return s ? `?${s}` : ''; +} + +async function viewTicketList() { + const qs = ticketListQuery(); + const hashParams = new URLSearchParams(location.hash.split('?')[1] || ''); + + const [tickets, allMachines] = await Promise.all([ + apiGet(`/tickets${qs}`), + apiGet('/machines'), + ]); + + const mid = hashParams.get('machineId') || ''; + + appEl.innerHTML = ` +
+

Tickets

+
+

Neues Ticket

+
+
+ +
+
+ + +
+ +
+
+
+

Filter

+
+
+ + + +
+ +
+
+
+ + + + ${tickets + .map( + (t) => ` + + + + + + `, + ) + .join('')} + +
TitelStatusPrioritätMaschine
${esc(t.title)}${esc(ticketStatusLabel[t.status])}${esc(ticketPriorityLabel[t.priority])}${t.machine ? esc(t.machine.seriennummer) : ''}${t.machine ? (extrasName(t.machine) ? ` · ${esc(extrasName(t.machine))}` : '') : ''}
+
+
`; + + const selFm = document.getElementById('sel-fm'); + if (mid) selFm.value = mid; + + document.getElementById('form-new-ticket').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPost('/tickets', { + machineId: fd.get('machineId'), + title: fd.get('title'), + description: fd.get('description'), + }); + e.target.reset(); + route(); + }; + + document.getElementById('form-filter').onsubmit = (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + const p = new URLSearchParams(); + if (fd.get('status')) p.set('status', fd.get('status')); + if (fd.get('priority')) p.set('priority', fd.get('priority')); + if (fd.get('machineId')) p.set('machineId', fd.get('machineId')); + const q = p.toString(); + location.hash = `#/tickets${q ? `?${q}` : ''}`; + }; +} + +async function viewTicketDetail(id) { + const [ticket, events] = await Promise.all([ + apiGet(`/tickets/${id}`), + apiGet(`/tickets/${id}/events`), + ]); + + const mn = ticket.machine ? extrasName(ticket.machine) : ''; + + appEl.innerHTML = ` +
+

← Zurück

+

${esc(ticket.title)}

+
+

Status: ${esc(ticketStatusLabel[ticket.status])}

+

Priorität: ${esc(ticketPriorityLabel[ticket.priority])}

+

Beschreibung:

+

${esc(ticket.description)}

+ ${ticket.machine ? `

Maschine: ${esc(ticket.machine.seriennummer)}${mn ? ` · ${esc(mn)}` : ''}

` : ''} + +
+

Historie

+
+

Event hinzufügen

+
+ +
+ +
+ + + + +
+
+
+ + + + + + + + + + ${ + events.length === 0 + ? `` + : events + .map( + (ev) => ` + + + + + `, + ) + .join('') + } + +
ZeitpunktArtInhalt
Noch keine Ereignisse.
${esc(formatDateTime(ev.createdAt))}${esc(eventTypeLabel[ev.type] || ev.type)}${eventInhaltHtml(ev)}
+
+

Weiteres Ticket für diese Maschine

+

Optional.

+
+
+
+ + +
+ +
+
+
`; + + const formEv = document.getElementById('form-ev'); + syncEventFormFieldGroups(formEv); + formEv.querySelector('#ev-type-sel').onchange = () => + syncEventFormFieldGroups(formEv); + document.getElementById('btn-tv-reload').onclick = () => + loadTeamViewerConnectionsIntoSelect(); + formEv.onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + let body = buildEventPostBody(id, fd); + if (body.type === 'REMOTE') { + const sel = document.getElementById('tv-conn-select'); + const opt = sel?.selectedOptions?.[0]; + if (opt?.value) { + body.teamviewerId = opt.value; + const sd = opt.getAttribute('data-start-date'); + const ed = opt.getAttribute('data-end-date'); + if (sd) body.teamviewerStartDate = sd; + if (ed) body.teamviewerEndDate = ed; + const dn = opt.getAttribute('data-devicename') || ''; + const u = String(fd.get('description_remote') ?? '').trim(); + if (dn) { + body.description = u + ? `${u}\n\nTeamViewer-Gerät: ${dn}` + : `TeamViewer-Gerät: ${dn}`; + } else if (u) { + body.description = u; + } else { + body.description = 'Remote-Session (TeamViewer)'; + } + } else { + body.description = String(body.description ?? '').trim(); + if (!body.description) { + formEv.insertAdjacentHTML( + 'afterbegin', + '

Beschreibung oder Gerät auswählen.

', + ); + setTimeout(() => { + document.querySelector('.tv-form-err')?.remove(); + }, 4000); + return; + } + } + } + await apiPost('/events', body); + e.target.reset(); + syncEventFormFieldGroups(formEv); + route(); + }; + + document.getElementById('form-t2').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPost('/tickets', { + machineId: ticket.machineId, + title: fd.get('title'), + description: fd.get('description'), + }); + e.target.reset(); + route(); + }; + + document.getElementById('btn-t-edit').onclick = () => { + document.getElementById('tick-view').innerHTML = ` +
+ + +
+ + +
+
+ + +
+
`; + document.getElementById('form-tu').onsubmit = async (e) => { + e.preventDefault(); + const fd = new FormData(e.target); + await apiPut(`/tickets/${id}`, Object.fromEntries(fd.entries())); + route(); + }; + document.getElementById('tu-cancel').onclick = () => route(); + }; +} + +window.addEventListener('unhandledrejection', (ev) => { + if (isAuthRedirectError(ev.reason)) { + ev.preventDefault(); + } +}); + +window.addEventListener('hashchange', route); +if (!location.hash) location.hash = '#/home'; +route(); diff --git a/scripts/import-anlagen-itt.mjs b/scripts/import-anlagen-itt.mjs new file mode 100644 index 0000000..d8ee3e6 --- /dev/null +++ b/scripts/import-anlagen-itt.mjs @@ -0,0 +1,156 @@ +import { randomUUID } from 'crypto'; +import fs from 'fs'; +import path from 'path'; +import { DatabaseSync } from 'node:sqlite'; +import { fileURLToPath } from 'url'; +import XLSX from 'xlsx'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.join(__dirname, '..'); +const xlsxPath = path.join(root, 'Anlagenliste ITT.xlsx'); +const dbPath = process.env.SQLITE_PATH || path.join(root, 'data', 'crm.db'); + +/** Zeile 9 (1-basiert): Spaltenbeschriftung / Feldnamen */ +const ZEILE_BESCHREIBUNG = 9; +/** Zeile 7: Gruppierung / übergeordnete Rubrik pro Spalte (z. B. „Kunde“) */ +const ZEILE_GRUPPE = 7; +/** Nur Spalten 1–99 importieren; Spalten 100–180 entfallen */ +const MAX_SPALTEN = 99; + +if (!fs.existsSync(xlsxPath)) { + console.error('Datei nicht gefunden:', xlsxPath); + process.exit(1); +} + +function dedupeHeaders(raw) { + const count = {}; + return raw.map((h) => { + const base = String(h ?? '').trim() || 'Spalte'; + count[base] = (count[base] || 0) + 1; + return count[base] === 1 ? base : `${base}_${count[base]}`; + }); +} + +function padRow(arr, width) { + const a = Array.isArray(arr) ? [...arr] : []; + while (a.length < width) a.push(''); + return a.slice(0, width); +} + +const wb = XLSX.readFile(xlsxPath); +const sheet = + wb.Sheets.Anlagen || + wb.Sheets[wb.SheetNames.find((n) => /anlagen/i.test(n))] || + wb.Sheets[wb.SheetNames[0]]; + +const aoa = XLSX.utils.sheet_to_json(sheet, { header: 1, defval: '' }); +const beschreibIdx = ZEILE_BESCHREIBUNG - 1; +const gruppeIdx = ZEILE_GRUPPE - 1; + +let width = 0; +for (const r of [beschreibIdx, gruppeIdx]) { + if (aoa[r] && aoa[r].length > width) width = aoa[r].length; +} +if (sheet['!ref']) { + const range = XLSX.utils.decode_range(sheet['!ref']); + width = Math.max(width, range.e.c + 1); +} + +width = Math.min(width, MAX_SPALTEN); + +const rawRow9 = padRow(aoa[beschreibIdx] || [], width).map((h) => + String(h ?? '').trim(), +); +const rawRow7 = padRow(aoa[gruppeIdx] || [], width).map((h) => + String(h ?? '').trim(), +); +const headers = dedupeHeaders(rawRow9); + +fs.mkdirSync(path.dirname(dbPath), { recursive: true }); +const db = new DatabaseSync(dbPath); +db.exec('PRAGMA foreign_keys = ON'); + +const cols = db.prepare('PRAGMA table_info(machines)').all(); +if (!cols.some((c) => c.name === 'extras')) { + db.exec('ALTER TABLE machines ADD COLUMN extras TEXT'); +} + +const replaceAll = process.argv.includes('--replace'); +if (replaceAll) { + db.exec('DELETE FROM events'); + db.exec('DELETE FROM tickets'); + db.exec('DELETE FROM machines'); + console.log('Bestehende Maschinen/Tickets/Events gelöscht.'); +} + +const insertMachine = db.prepare( + `INSERT INTO machines (id, name, typ, seriennummer, standort, extras, updated_at) + VALUES (?, ?, ?, ?, ?, ?, datetime('now'))`, +); + +let imported = 0; +let skipped = 0; + +db.exec('BEGIN'); +try { + for (let i = beschreibIdx + 1; i < aoa.length; i++) { + const row = aoa[i]; + if (!row || !row.length) continue; + const padded = padRow(row, width); + const sn = String(padded[0] ?? '').trim(); + if (!/^ITT#/i.test(sn)) continue; + + const dup = db + .prepare('SELECT id FROM machines WHERE seriennummer = ?') + .get(sn); + if (dup) { + skipped += 1; + continue; + } + + const rowObj = {}; + headers.forEach((h, j) => { + const v = padded[j]; + rowObj[h] = + v === '' || v === undefined || v === null ? '' : String(v).trim(); + }); + + const typ = rowObj.Typ || '—'; + const standort = + [rowObj.Stadt, rowObj.Land].filter(Boolean).join(', ') || '—'; + + const werteAlsListe = padded.map((v) => + v === '' || v === undefined || v === null ? '' : String(v).trim(), + ); + + const extrasObj = { + _beschriftungZeile9: rawRow9, + _gruppeZeile7: rawRow7, + _werteAlsListe: werteAlsListe, + ...rowObj, + }; + + const extrasJson = JSON.stringify(extrasObj); + const id = randomUUID(); + + insertMachine.run(id, sn, typ, sn, standort, extrasJson); + imported += 1; + } + db.exec('COMMIT'); +} catch (e) { + db.exec('ROLLBACK'); + throw e; +} + +db.close(); +console.log( + `Anlagenliste: ${imported} Maschinen importiert, ${skipped} übersprungen (Seriennr. schon vorhanden).`, +); +if (!replaceAll && skipped > 0 && imported === 0) { + console.log( + 'Hinweis: Für Neuimport: npm run import:anlagen -- --replace', + ); +} diff --git a/server/db.js b/server/db.js new file mode 100644 index 0000000..bc882db --- /dev/null +++ b/server/db.js @@ -0,0 +1,163 @@ +import fs from 'fs'; +import path from 'path'; +import { DatabaseSync } from 'node:sqlite'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const dbPath = + process.env.SQLITE_PATH || path.join(__dirname, '..', 'data', 'crm.db'); + +fs.mkdirSync(path.dirname(dbPath), { recursive: true }); + +const db = new DatabaseSync(dbPath); +db.exec('PRAGMA foreign_keys = ON'); + +const machineCols = db.prepare('PRAGMA table_info(machines)').all(); +if (!machineCols.some((c) => c.name === 'extras')) { + db.exec('ALTER TABLE machines ADD COLUMN extras TEXT'); +} + +const hasCustomerId = machineCols.some((c) => c.name === 'customer_id'); +const tables = db + .prepare( + "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'", + ) + .all() + .map((r) => r.name); +const hasCustomersTable = tables.includes('customers'); + +const eventCols = db.prepare('PRAGMA table_info(events)').all(); +if (eventCols.length > 0 && !eventCols.some((c) => c.name === 'remote_duration_seconds')) { + db.exec('ALTER TABLE events ADD COLUMN remote_duration_seconds INTEGER'); +} +const hasEventExtras = eventCols.some((c) => c.name === 'callback_number'); +if (eventCols.length > 0 && !hasEventExtras) { + db.exec('BEGIN'); + try { + db.exec(` + CREATE TABLE events_new ( + "id" TEXT NOT NULL PRIMARY KEY, + "ticket_id" TEXT NOT NULL, + "type" TEXT NOT NULL CHECK ("type" IN ('NOTE', 'CALL', 'REMOTE', 'PART', 'SYSTEM')), + "description" TEXT NOT NULL, + "callback_number" TEXT, + "teamviewer_id" TEXT, + "article_number" TEXT, + "remote_duration_seconds" INTEGER, + "created_at" TEXT NOT NULL DEFAULT (datetime('now')), + FOREIGN KEY ("ticket_id") REFERENCES "tickets" ("id") ON DELETE CASCADE ON UPDATE CASCADE + ); + INSERT INTO events_new (id, ticket_id, type, description, callback_number, teamviewer_id, article_number, remote_duration_seconds, created_at) + SELECT + id, + ticket_id, + CASE WHEN type = 'WORK' THEN 'REMOTE' ELSE type END, + description, + NULL, + NULL, + NULL, + NULL, + created_at + FROM events; + DROP TABLE events; + ALTER TABLE events_new RENAME TO events; + `); + db.exec( + 'CREATE INDEX IF NOT EXISTS events_ticket_id_idx ON "events" ("ticket_id")', + ); + db.exec( + 'CREATE INDEX IF NOT EXISTS events_created_at_idx ON "events" ("created_at")', + ); + db.exec('COMMIT'); + } catch (e) { + db.exec('ROLLBACK'); + throw e; + } +} + +if (hasCustomerId || hasCustomersTable) { + db.exec('BEGIN'); + try { + db.exec(` + CREATE TABLE machines_new ( + "id" TEXT NOT NULL PRIMARY KEY, + "name" TEXT NOT NULL, + "typ" TEXT NOT NULL, + "seriennummer" TEXT NOT NULL, + "standort" TEXT NOT NULL, + "extras" TEXT, + "created_at" TEXT NOT NULL DEFAULT (datetime('now')), + "updated_at" TEXT NOT NULL DEFAULT (datetime('now')) + ); + INSERT INTO machines_new (id, name, typ, seriennummer, standort, extras, created_at, updated_at) + SELECT id, name, typ, seriennummer, standort, extras, created_at, updated_at FROM machines; + DROP TABLE machines; + ALTER TABLE machines_new RENAME TO machines; + `); + if (hasCustomersTable) { + db.exec('DROP TABLE customers'); + } + db.exec('COMMIT'); + } catch (e) { + db.exec('ROLLBACK'); + throw e; + } +} + +const tbl = db + .prepare( + "SELECT name FROM sqlite_master WHERE type='table' AND name='users'", + ) + .get(); +if (!tbl) { + db.exec(` + CREATE TABLE "users" ( + "id" TEXT NOT NULL PRIMARY KEY, + "username" TEXT NOT NULL UNIQUE, + "password_hash" TEXT, + "role" TEXT NOT NULL DEFAULT 'user' CHECK ("role" IN ('admin', 'user')), + "source" TEXT NOT NULL DEFAULT 'local' CHECK ("source" IN ('local', 'ldap')), + "ldap_dn" TEXT, + "active" INTEGER NOT NULL DEFAULT 1 CHECK ("active" IN (0, 1)), + "created_at" TEXT NOT NULL DEFAULT (datetime('now')), + "updated_at" TEXT NOT NULL DEFAULT (datetime('now')) + ); + CREATE INDEX IF NOT EXISTS users_username_idx ON "users" ("username"); + `); +} + +const tblSet = db + .prepare( + "SELECT name FROM sqlite_master WHERE type='table' AND name='app_settings'", + ) + .get(); +if (!tblSet) { + db.exec(` + CREATE TABLE "app_settings" ( + "key" TEXT NOT NULL PRIMARY KEY, + "value" TEXT NOT NULL + ); + `); +} + +const ldapLogTbl = db + .prepare( + "SELECT name FROM sqlite_master WHERE type='table' AND name='ldap_sync_log'", + ) + .get(); +if (!ldapLogTbl) { + db.exec(` + CREATE TABLE "ldap_sync_log" ( + "id" TEXT NOT NULL PRIMARY KEY, + "started_at" TEXT NOT NULL, + "finished_at" TEXT NOT NULL, + "trigger_type" TEXT NOT NULL CHECK ("trigger_type" IN ('manual', 'automatic')), + "status" TEXT NOT NULL CHECK ("status" IN ('success', 'error')), + "users_synced" INTEGER NOT NULL DEFAULT 0, + "error_message" TEXT + ); + CREATE INDEX ldap_sync_log_finished_idx ON "ldap_sync_log" ("finished_at" DESC); + `); +} + +export default db; diff --git a/server/index.js b/server/index.js new file mode 100644 index 0000000..6611abe --- /dev/null +++ b/server/index.js @@ -0,0 +1,776 @@ +import { randomUUID } from 'crypto'; +import cors from 'cors'; +import dotenv from 'dotenv'; +import express from 'express'; +import session from 'express-session'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import db from './db.js'; +import { getSyncStatus, performLdapSync } from './ldap-sync.js'; +import { hashPassword, verifyPassword } from './password.js'; +import { + computeRemoteDurationSeconds, + registerTeamViewerRoutes, +} from './teamviewer.js'; + +dotenv.config(); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const app = express(); +const PORT = process.env.PORT || 3000; + +app.set('trust proxy', 1); +app.use( + cors({ + origin: true, + credentials: true, + }), +); +app.use(express.json()); +app.use( + session({ + name: 'crm.sid', + secret: process.env.SESSION_SECRET || 'crm-dev-secret-change-in-production', + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, + sameSite: 'lax', + maxAge: 7 * 24 * 60 * 60 * 1000, + }, + }), +); + +const UUID = + /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + +function badRequest(res, msg) { + return res.status(400).json({ message: msg }); +} + +function parseJsonField(v) { + if (v == null) return undefined; + if (typeof v === 'object') return v; + return JSON.parse(v); +} + +function mapMachine(r) { + const o = { + id: r.id, + name: r.name, + typ: r.typ, + seriennummer: r.seriennummer, + standort: r.standort, + createdAt: r.created_at, + updatedAt: r.updated_at, + }; + if (r.extras != null && String(r.extras).trim() !== '') { + try { + o.extras = + typeof r.extras === 'string' ? JSON.parse(r.extras) : r.extras; + } catch { + o.extras = null; + } + } + return o; +} + +function mapTicket(r) { + const machine_row = parseJsonField(r.machine_row); + const t = { + id: r.id, + machineId: r.machine_id, + title: r.title, + description: r.description, + status: r.status, + priority: r.priority, + createdAt: r.created_at, + updatedAt: r.updated_at, + }; + if (machine_row) { + t.machine = mapMachine(machine_row); + } + return t; +} + +function mapEvent(r) { + return { + id: r.id, + ticketId: r.ticket_id, + type: r.type, + description: r.description, + createdAt: r.created_at, + callbackNumber: r.callback_number ?? null, + teamviewerId: r.teamviewer_id ?? null, + articleNumber: r.article_number ?? null, + remoteDurationSeconds: + r.remote_duration_seconds != null ? r.remote_duration_seconds : null, + }; +} + +function mapPublicUser(r) { + return { + id: r.id, + username: r.username, + role: r.role, + active: Boolean(r.active), + source: r.source, + ldapDn: r.ldap_dn || null, + createdAt: r.created_at, + updatedAt: r.updated_at, + }; +} + +const ticketJoinSelect = ` + SELECT t.*, + json_object( + 'id', m.id, + 'name', m.name, + 'typ', m.typ, + 'seriennummer', m.seriennummer, + 'standort', m.standort, + 'extras', m.extras, + 'created_at', m.created_at, + 'updated_at', m.updated_at + ) AS machine_row + FROM tickets t + JOIN machines m ON m.id = t.machine_id`; + +const DEFAULT_INTEGRATIONS = { + ldap: { + serverUrl: '', + bindDn: '', + bindPassword: '', + searchBase: '', + userSearchFilter: '', + userFilter: '', + usernameAttribute: 'sAMAccountName', + firstNameAttribute: 'givenName', + lastNameAttribute: 'sn', + syncIntervalMinutes: 1440, + syncEnabled: false, + syncNotes: '', + }, + /* TeamViewer: Authorization: Bearer */ + teamviewer: { + bearerToken: '', + notes: '', + }, +}; + +function loadIntegrations() { + const row = db.prepare('SELECT value FROM app_settings WHERE key = ?').get('integrations'); + const base = structuredClone(DEFAULT_INTEGRATIONS); + if (!row?.value) return base; + try { + const s = JSON.parse(row.value); + if (s.ldap && typeof s.ldap === 'object') Object.assign(base.ldap, s.ldap); + const ld = base.ldap; + if (!ld.userSearchFilter && ld.userFilter) ld.userSearchFilter = ld.userFilter; + if (s.teamviewer && typeof s.teamviewer === 'object') + Object.assign(base.teamviewer, s.teamviewer); + const tv = base.teamviewer; + if (!tv.bearerToken && tv.apiToken) tv.bearerToken = tv.apiToken; + if (tv.notes == null && tv.apiNotes) tv.notes = tv.apiNotes; + return base; + } catch { + return base; + } +} + +function saveIntegrations(obj) { + const json = JSON.stringify(obj); + db.prepare( + `INSERT INTO app_settings (key, value) VALUES ('integrations', ?) + ON CONFLICT(key) DO UPDATE SET value = excluded.value`, + ).run(json); +} + +let ldapSyncTimer = null; + +function restartLdapSyncScheduler() { + if (ldapSyncTimer) { + clearInterval(ldapSyncTimer); + ldapSyncTimer = null; + } + const cfg = loadIntegrations().ldap; + if (!cfg.syncEnabled) return; + const m = Math.max(0, Number(cfg.syncIntervalMinutes) || 0); + if (m <= 0) return; + ldapSyncTimer = setInterval(() => { + performLdapSync(db, loadIntegrations, 'automatic').catch((err) => + console.error('LDAP auto-sync:', err), + ); + }, m * 60 * 1000); +} + +function requireAuth(req, res, next) { + if (!req.session?.userId) { + return res.status(401).json({ message: 'Nicht angemeldet' }); + } + const u = db + .prepare( + 'SELECT id, active FROM users WHERE id = ?', + ) + .get(req.session.userId); + if (!u || !u.active) { + req.session.destroy(() => {}); + return res.status(401).json({ message: 'Nicht angemeldet' }); + } + next(); +} + +function requireAdmin(req, res, next) { + if (req.session?.role !== 'admin') { + return res.status(403).json({ message: 'Administratorrechte erforderlich.' }); + } + next(); +} + +/** ——— Öffentlich: Auth ——— */ +app.get('/auth/status', (req, res) => { + const count = db.prepare('SELECT COUNT(*) AS c FROM users').get().c; + const needsBootstrap = count === 0; + if (needsBootstrap) { + return res.json({ needsBootstrap: true, loggedIn: false, user: null }); + } + if (!req.session?.userId) { + return res.json({ needsBootstrap: false, loggedIn: false, user: null }); + } + const u = db + .prepare( + 'SELECT id, username, role, active FROM users WHERE id = ?', + ) + .get(req.session.userId); + if (!u || !u.active) { + req.session.destroy(() => {}); + return res.json({ needsBootstrap: false, loggedIn: false, user: null }); + } + res.json({ + needsBootstrap: false, + loggedIn: true, + user: { id: u.id, username: u.username, role: u.role }, + }); +}); + +app.post('/auth/bootstrap', async (req, res) => { + const count = db.prepare('SELECT COUNT(*) AS c FROM users').get().c; + if (count > 0) { + return res.status(403).json({ message: 'Initialisierung nicht mehr möglich.' }); + } + const { username, password } = req.body || {}; + const un = String(username || '') + .trim() + .toLowerCase(); + if (!un || !password || password.length < 8) { + return badRequest(res, 'Benutzername und Passwort (min. 8 Zeichen) erforderlich.'); + } + const id = randomUUID(); + const ph = await hashPassword(password); + db.prepare( + `INSERT INTO users (id, username, password_hash, role, source, active, updated_at) + VALUES (?, ?, ?, 'admin', 'local', 1, datetime('now'))`, + ).run(id, un, ph); + req.session.userId = id; + req.session.role = 'admin'; + req.session.username = un; + res.status(201).json({ + user: { id, username: un, role: 'admin' }, + }); +}); + +app.post('/auth/login', async (req, res) => { + const { username, password } = req.body || {}; + const un = String(username || '') + .trim() + .toLowerCase(); + if (!un || !password) { + return badRequest(res, 'Benutzername und Passwort erforderlich.'); + } + const u = db.prepare('SELECT * FROM users WHERE username = ?').get(un); + if (!u || !u.active) { + return res.status(401).json({ message: 'Ungültige Zugangsdaten.' }); + } + if (!u.password_hash) { + return res.status(401).json({ + message: 'Kein lokales Passwort (LDAP). Anmeldung folgt mit Verzeichnis-Sync.', + }); + } + const ok = await verifyPassword(password, u.password_hash); + if (!ok) return res.status(401).json({ message: 'Ungültige Zugangsdaten.' }); + req.session.userId = u.id; + req.session.role = u.role; + req.session.username = u.username; + res.json({ + user: { id: u.id, username: u.username, role: u.role }, + }); +}); + +app.post('/auth/logout', (req, res) => { + req.session.destroy((err) => { + if (err) return res.status(500).json({ message: 'Abmelden fehlgeschlagen.' }); + res.json({ ok: true }); + }); +}); + +/** ——— Geschützte API ——— */ +const api = express.Router(); +api.use(requireAuth); + +api.get('/machines', (_req, res) => { + const rows = db + .prepare('SELECT * FROM machines ORDER BY seriennummer ASC') + .all(); + res.json(rows.map(mapMachine)); +}); + +api.post('/machines', (req, res) => { + const { name, typ, seriennummer, standort } = req.body || {}; + if (!name || !typ || !seriennummer || !standort) { + return badRequest(res, 'Pflichtfelder fehlen.'); + } + const id = randomUUID(); + const row = db + .prepare( + `INSERT INTO machines (id, name, typ, seriennummer, standort, updated_at) + VALUES (?, ?, ?, ?, ?, datetime('now')) RETURNING *`, + ) + .get(id, name, typ, seriennummer, standort); + res.status(201).json(mapMachine(row)); +}); + +api.get('/machines/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const row = db.prepare('SELECT * FROM machines WHERE id = ?').get(id); + if (!row) return res.status(404).json({ message: 'Nicht gefunden' }); + res.json(mapMachine(row)); +}); + +api.put('/machines/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const cur = db.prepare('SELECT * FROM machines WHERE id = ?').get(id); + if (!cur) return res.status(404).json({ message: 'Nicht gefunden' }); + const b = req.body || {}; + const next = { + name: b.name ?? cur.name, + typ: b.typ ?? cur.typ, + seriennummer: b.seriennummer ?? cur.seriennummer, + standort: b.standort ?? cur.standort, + }; + let extrasJson = cur.extras; + if (Object.prototype.hasOwnProperty.call(b, 'extras')) { + if (b.extras === null || b.extras === '') { + extrasJson = null; + } else if (typeof b.extras === 'object' && b.extras !== null) { + try { + extrasJson = JSON.stringify(b.extras); + } catch { + return badRequest(res, 'extras ist kein gültiges JSON-Objekt.'); + } + } else if (typeof b.extras === 'string') { + try { + JSON.parse(b.extras); + extrasJson = b.extras; + } catch { + return badRequest(res, 'extras ist kein gültiger JSON-String.'); + } + } else { + return badRequest(res, 'extras hat ein ungültiges Format.'); + } + } + const row = db + .prepare( + `UPDATE machines SET name = ?, typ = ?, seriennummer = ?, standort = ?, extras = ?, updated_at = datetime('now') + WHERE id = ? RETURNING *`, + ) + .get(next.name, next.typ, next.seriennummer, next.standort, extrasJson, id); + res.json(mapMachine(row)); +}); + +api.delete('/machines/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const cur = db.prepare('SELECT * FROM machines WHERE id = ?').get(id); + if (!cur) return res.status(404).json({ message: 'Nicht gefunden' }); + const tc = db + .prepare('SELECT COUNT(*) AS c FROM tickets WHERE machine_id = ?') + .get(id); + if (tc.c > 0) { + return res.status(409).json({ + message: + 'Maschine kann nicht gelöscht werden: Es existieren noch zugeordnete Tickets.', + }); + } + const row = db + .prepare('DELETE FROM machines WHERE id = ? RETURNING *') + .get(id); + res.json(mapMachine(row)); +}); + +api.get('/tickets', (req, res) => { + const { status, priority, machineId, open } = req.query; + const cond = ['1=1']; + const params = []; + const openFilter = open === '1' || open === 'true'; + if (openFilter) { + cond.push("t.status IN ('OPEN', 'WAITING')"); + } else if (status) { + cond.push('t.status = ?'); + params.push(status); + } + if (priority) { + cond.push('t.priority = ?'); + params.push(priority); + } + if (machineId) { + cond.push('t.machine_id = ?'); + params.push(machineId); + } + const sql = `${ticketJoinSelect} WHERE ${cond.join(' AND ')} ORDER BY t.updated_at DESC`; + const rows = db.prepare(sql).all(...params); + res.json(rows.map(mapTicket)); +}); + +api.post('/tickets', (req, res) => { + const { machineId, title, description, status, priority } = req.body || {}; + if (!machineId || !title || !description) { + return badRequest(res, 'Pflichtfelder fehlen.'); + } + const m = db + .prepare('SELECT 1 AS ok FROM machines WHERE id = ?') + .get(machineId); + if (!m) return res.status(404).json({ message: 'Nicht gefunden' }); + const st = status || 'OPEN'; + const pr = priority || 'MEDIUM'; + const tid = randomUUID(); + db.prepare( + `INSERT INTO tickets (id, machine_id, title, description, status, priority, updated_at) + VALUES (?, ?, ?, ?, ?, ?, datetime('now'))`, + ).run(tid, machineId, title, description, st, pr); + const full = db + .prepare(`${ticketJoinSelect} WHERE t.id = ?`) + .get(tid); + res.status(201).json(mapTicket(full)); +}); + +api.get('/tickets/:id/events', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const ex = db.prepare('SELECT 1 AS ok FROM tickets WHERE id = ?').get(id); + if (!ex) return res.status(404).json({ message: 'Nicht gefunden' }); + const rows = db + .prepare( + 'SELECT * FROM events WHERE ticket_id = ? ORDER BY created_at DESC', + ) + .all(id); + res.json(rows.map(mapEvent)); +}); + +api.get('/tickets/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const row = db.prepare(`${ticketJoinSelect} WHERE t.id = ?`).get(id); + if (!row) return res.status(404).json({ message: 'Nicht gefunden' }); + res.json(mapTicket(row)); +}); + +api.put('/tickets/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const cur = db.prepare('SELECT * FROM tickets WHERE id = ?').get(id); + if (!cur) return res.status(404).json({ message: 'Nicht gefunden' }); + const b = req.body || {}; + const next = { + title: b.title ?? cur.title, + description: b.description ?? cur.description, + status: b.status ?? cur.status, + priority: b.priority ?? cur.priority, + }; + + const lines = []; + if (b.status !== undefined && b.status !== cur.status) { + lines.push(`Status: ${cur.status} → ${b.status}`); + } + if (b.priority !== undefined && b.priority !== cur.priority) { + lines.push(`Priorität: ${cur.priority} → ${b.priority}`); + } + if (b.title !== undefined && b.title !== cur.title) lines.push('Titel geändert'); + if (b.description !== undefined && b.description !== cur.description) { + lines.push('Beschreibung geändert'); + } + if (lines.length > 0) { + const eid = randomUUID(); + db.prepare( + `INSERT INTO events (id, ticket_id, type, description, callback_number, teamviewer_id, article_number, remote_duration_seconds) + VALUES (?, ?, 'SYSTEM', ?, NULL, NULL, NULL, NULL)`, + ).run(eid, id, lines.join('; ')); + } + + db.prepare( + `UPDATE tickets SET title = ?, description = ?, status = ?, priority = ?, updated_at = datetime('now') + WHERE id = ?`, + ).run(next.title, next.description, next.status, next.priority, id); + + const row = db.prepare(`${ticketJoinSelect} WHERE t.id = ?`).get(id); + res.json(mapTicket(row)); +}); + +const EVENT_TYPES_USER = new Set(['NOTE', 'CALL', 'REMOTE', 'PART']); + +registerTeamViewerRoutes(api, loadIntegrations); + +api.post('/events', (req, res) => { + const b = req.body || {}; + const ticketId = b.ticketId; + const type = b.type; + if (!ticketId || !type || !EVENT_TYPES_USER.has(type)) { + return badRequest(res, 'Pflichtfelder fehlen oder ungültiger Typ.'); + } + const t = db + .prepare('SELECT 1 AS ok FROM tickets WHERE id = ?') + .get(ticketId); + if (!t) return res.status(404).json({ message: 'Nicht gefunden' }); + + const desc = b.description != null ? String(b.description).trim() : ''; + const callbackNumber = + b.callbackNumber != null ? String(b.callbackNumber).trim() : ''; + const teamviewerId = + b.teamviewerId != null ? String(b.teamviewerId).trim() : ''; + const articleNumber = + b.articleNumber != null ? String(b.articleNumber).trim() : ''; + + let description = desc; + let cb = callbackNumber || null; + let tv = teamviewerId || null; + let art = articleNumber || null; + + if (type === 'NOTE') { + if (!description) return badRequest(res, 'Beschreibung fehlt.'); + cb = null; + tv = null; + art = null; + } else if (type === 'CALL') { + if (!description) return badRequest(res, 'Beschreibung fehlt.'); + if (!callbackNumber) return badRequest(res, 'Rückrufnummer fehlt.'); + tv = null; + art = null; + } else if (type === 'REMOTE') { + if (!description?.trim() && !tv) { + return badRequest(res, 'Beschreibung oder TeamViewer-Gerät erforderlich.'); + } + cb = null; + art = null; + } else if (type === 'PART') { + if (!articleNumber) return badRequest(res, 'Artikelnummer fehlt.'); + description = desc; + cb = null; + tv = null; + } + + let remoteDurationSeconds = null; + if (type === 'REMOTE') { + remoteDurationSeconds = computeRemoteDurationSeconds( + b.teamviewerStartDate, + b.teamviewerEndDate, + ); + } + + const eid = randomUUID(); + const row = db + .prepare( + `INSERT INTO events (id, ticket_id, type, description, callback_number, teamviewer_id, article_number, remote_duration_seconds) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING *`, + ) + .get( + eid, + ticketId, + type, + description, + cb, + tv, + art, + remoteDurationSeconds, + ); + res.status(201).json(mapEvent(row)); +}); + +app.use('/api', api); + +/** ——— Admin ——— */ +const admin = express.Router(); +admin.use(requireAuth, requireAdmin); + +admin.get('/users', (_req, res) => { + const rows = db + .prepare( + 'SELECT id, username, role, source, active, ldap_dn, created_at, updated_at FROM users ORDER BY username ASC', + ) + .all(); + res.json(rows.map(mapPublicUser)); +}); + +admin.post('/users', async (req, res) => { + const { username, password, role } = req.body || {}; + const un = String(username || '') + .trim() + .toLowerCase(); + if (!un || !password) return badRequest(res, 'Benutzername und Passwort erforderlich.'); + const r = role === 'admin' ? 'admin' : 'user'; + const id = randomUUID(); + const ph = await hashPassword(password); + try { + db.prepare( + `INSERT INTO users (id, username, password_hash, role, source, active, updated_at) + VALUES (?, ?, ?, ?, 'local', 1, datetime('now'))`, + ).run(id, un, ph, r); + } catch (e) { + if (String(e.message || e).includes('UNIQUE')) { + return res.status(409).json({ message: 'Benutzername bereits vergeben.' }); + } + throw e; + } + const row = db.prepare('SELECT * FROM users WHERE id = ?').get(id); + res.status(201).json(mapPublicUser(row)); +}); + +admin.put('/users/:id', async (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + const cur = db.prepare('SELECT * FROM users WHERE id = ?').get(id); + if (!cur) return res.status(404).json({ message: 'Nicht gefunden' }); + const b = req.body || {}; + + if (b.password != null && String(b.password).length > 0) { + if (cur.source !== 'local') { + return badRequest(res, 'Passwort nur für lokale Benutzer änderbar.'); + } + const ph = await hashPassword(b.password); + db.prepare( + 'UPDATE users SET password_hash = ?, updated_at = datetime(\'now\') WHERE id = ?', + ).run(ph, id); + } + if (b.role !== undefined) { + if (b.role !== 'admin' && b.role !== 'user') { + return badRequest(res, 'Ungültige Rolle.'); + } + const admins = db + .prepare( + "SELECT COUNT(*) AS c FROM users WHERE role = 'admin' AND active = 1", + ) + .get().c; + if (cur.role === 'admin' && b.role === 'user' && admins <= 1) { + return res.status(400).json({ message: 'Letzter Administrator kann nicht herabgestuft werden.' }); + } + db.prepare('UPDATE users SET role = ?, updated_at = datetime(\'now\') WHERE id = ?').run( + b.role, + id, + ); + } + if (b.active !== undefined) { + const active = b.active ? 1 : 0; + const admins = db + .prepare( + "SELECT COUNT(*) AS c FROM users WHERE role = 'admin' AND active = 1", + ) + .get().c; + if (cur.role === 'admin' && cur.active && !active && admins <= 1) { + return res.status(400).json({ message: 'Letzter Administrator kann nicht deaktiviert werden.' }); + } + db.prepare('UPDATE users SET active = ?, updated_at = datetime(\'now\') WHERE id = ?').run( + active, + id, + ); + } + + const row = db.prepare('SELECT * FROM users WHERE id = ?').get(id); + res.json(mapPublicUser(row)); +}); + +admin.delete('/users/:id', (req, res) => { + const { id } = req.params; + if (!UUID.test(id)) return res.status(404).json({ message: 'Nicht gefunden' }); + if (id === req.session.userId) { + return res.status(400).json({ message: 'Eigenes Konto kann nicht gelöscht werden.' }); + } + const cur = db.prepare('SELECT * FROM users WHERE id = ?').get(id); + if (!cur) return res.status(404).json({ message: 'Nicht gefunden' }); + if (cur.role === 'admin') { + const admins = db + .prepare( + "SELECT COUNT(*) AS c FROM users WHERE role = 'admin' AND active = 1", + ) + .get().c; + if (admins <= 1) { + return res.status(400).json({ message: 'Letzter Administrator kann nicht gelöscht werden.' }); + } + } + db.prepare('DELETE FROM users WHERE id = ?').run(id); + res.json({ ok: true }); +}); + +admin.get('/settings/integrations', (_req, res) => { + res.json(loadIntegrations()); +}); + +admin.put('/settings/integrations', (req, res) => { + const b = req.body || {}; + const cur = loadIntegrations(); + if (b.ldap && typeof b.ldap === 'object') { + const incoming = { ...b.ldap }; + if (incoming.bindPassword === '' || incoming.bindPassword == null) { + delete incoming.bindPassword; + } + if (incoming.syncIntervalMinutes != null) { + const n = Number(incoming.syncIntervalMinutes); + incoming.syncIntervalMinutes = Number.isFinite(n) ? Math.max(0, Math.floor(n)) : 1440; + } + Object.assign(cur.ldap, incoming); + if (b.ldap.userSearchFilter != null) { + cur.ldap.userFilter = String(b.ldap.userSearchFilter); + } + } + if (b.teamviewer && typeof b.teamviewer === 'object') { + const inc = { ...b.teamviewer }; + if (inc.bearerToken === '' || inc.bearerToken == null) { + delete inc.bearerToken; + } + Object.assign(cur.teamviewer, inc); + } + saveIntegrations(cur); + restartLdapSyncScheduler(); + res.json(loadIntegrations()); +}); + +admin.get('/ldap/sync-status', (_req, res) => { + res.json(getSyncStatus(db)); +}); + +admin.post('/ldap/sync', async (_req, res) => { + const r = await performLdapSync(db, loadIntegrations, 'manual'); + if (r.skipped) { + return res.status(409).json({ message: r.message }); + } + res.json(r); +}); + +app.use('/api', admin); + +/** Unbekannte /api/*-Routen: JSON 404 — verhindert SPA index.html (HTML) mit 200 bei falscher Route/alter Serverversion */ +app.use('/api', (req, res) => { + res.status(404).json({ message: 'API nicht gefunden' }); +}); + +app.use(express.static(path.join(__dirname, '..', 'public'))); + +/** SPA: Direktaufrufe wie /tickets ohne Hash liefern index.html (Client-Routing) */ +app.get('*', (req, res) => { + res.sendFile(path.join(__dirname, '..', 'public', 'index.html')); +}); + +app.listen(PORT, () => { + restartLdapSyncScheduler(); + console.log(`CRM-Server http://localhost:${PORT}`); +}); diff --git a/server/init-db.js b/server/init-db.js new file mode 100644 index 0000000..7e4ce3b --- /dev/null +++ b/server/init-db.js @@ -0,0 +1,29 @@ +import fs from 'fs'; +import path from 'path'; +import { DatabaseSync } from 'node:sqlite'; +import { fileURLToPath } from 'url'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const sqlPath = path.join(__dirname, '..', 'database', 'init.sql'); +const dbPath = + process.env.SQLITE_PATH || path.join(__dirname, '..', 'data', 'crm.db'); + +fs.mkdirSync(path.dirname(dbPath), { recursive: true }); + +const sql = fs.readFileSync(sqlPath, 'utf8'); + +const db = new DatabaseSync(dbPath); +db.exec('PRAGMA foreign_keys = ON'); + +try { + db.exec(sql); + console.log('Datenbank-Schema ist bereit.'); +} catch (e) { + console.error(e); + process.exit(1); +} finally { + db.close(); +} diff --git a/server/ldap-sync.js b/server/ldap-sync.js new file mode 100644 index 0000000..f358f6b --- /dev/null +++ b/server/ldap-sync.js @@ -0,0 +1,209 @@ +import { randomUUID } from 'crypto'; +import ldap from 'ldapjs'; + +let syncRunning = false; + +function getAttr(entry, name) { + const want = String(name || '').toLowerCase(); + for (const attr of entry.attributes) { + if (attr.type.toLowerCase() === want) { + const v = attr.values[0]; + return v != null ? String(v).trim() : ''; + } + } + return ''; +} + +function searchAsync(client, base, options) { + return new Promise((resolve, reject) => { + const results = []; + client.search(base, options, (err, res) => { + if (err) return reject(err); + res.on('searchEntry', (entry) => results.push(entry)); + res.on('error', reject); + res.on('end', () => resolve(results)); + }); + }); +} + +function bindAsync(client, dn, password) { + return new Promise((resolve, reject) => { + client.bind(dn || '', password ?? '', (err) => (err ? reject(err) : resolve())); + }); +} + +function unbindAsync(client) { + return new Promise((resolve) => { + try { + client.unbind(() => resolve()); + } catch { + resolve(); + } + }); +} + +function insertLog(db, row) { + db.prepare( + `INSERT INTO ldap_sync_log (id, started_at, finished_at, trigger_type, status, users_synced, error_message) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + ).run( + row.id, + row.startedAt, + row.finishedAt, + row.triggerType, + row.status, + row.usersSynced, + row.errorMessage, + ); +} + +/** + * @param {import('node:sqlite').DatabaseSync} db + * @param {() => object} loadIntegrations + * @param {'manual' | 'automatic'} trigger + */ +export async function performLdapSync(db, loadIntegrations, trigger) { + if (syncRunning) { + return { skipped: true, message: 'Synchronisation läuft bereits.' }; + } + syncRunning = true; + const logId = randomUUID(); + const startedAt = new Date().toISOString(); + let usersSynced = 0; + let errorMessage = null; + let client = null; + + try { + const config = loadIntegrations().ldap || {}; + const serverUrl = String(config.serverUrl || '').trim(); + const searchBase = String(config.searchBase || '').trim(); + const filter = String( + config.userSearchFilter || config.userFilter || '', + ).trim(); + const usernameAttr = String( + config.usernameAttribute || 'sAMAccountName', + ).trim(); + + if (!serverUrl) throw new Error('LDAP-Server URL fehlt.'); + if (!searchBase) throw new Error('Base DN fehlt.'); + if (!filter) throw new Error('User Search Filter fehlt.'); + + client = ldap.createClient({ + url: serverUrl, + timeout: 120000, + connectTimeout: 20000, + reconnect: false, + }); + + client.on('error', () => {}); + + const bindDn = String(config.bindDn || '').trim(); + const bindPassword = + config.bindPassword != null ? String(config.bindPassword) : ''; + + await bindAsync(client, bindDn, bindPassword); + + const entries = await searchAsync(client, searchBase, { + scope: 'sub', + filter, + attributes: [usernameAttr], + }); + + await unbindAsync(client); + client = null; + + db.exec('BEGIN'); + try { + let n = 0; + for (const entry of entries) { + let dn; + try { + dn = entry.objectName.toString(); + } catch { + continue; + } + const un = getAttr(entry, usernameAttr).toLowerCase().trim(); + if (!un) continue; + + const existing = db + .prepare('SELECT id, source FROM users WHERE username = ?') + .get(un); + if (existing) { + if (existing.source === 'local') continue; + db.prepare( + `UPDATE users SET ldap_dn = ?, updated_at = datetime('now') WHERE id = ?`, + ).run(dn, existing.id); + n += 1; + } else { + const id = randomUUID(); + db.prepare( + `INSERT INTO users (id, username, password_hash, role, source, ldap_dn, active, updated_at) + VALUES (?, ?, NULL, 'user', 'ldap', ?, 1, datetime('now'))`, + ).run(id, un, dn); + n += 1; + } + } + db.exec('COMMIT'); + usersSynced = n; + } catch (e) { + try { + db.exec('ROLLBACK'); + } catch { + /* ignore */ + } + throw e; + } + } catch (e) { + errorMessage = e && e.message ? String(e.message) : String(e); + if (client) { + try { + await unbindAsync(client); + } catch { + /* ignore */ + } + client = null; + } + } finally { + try { + const finishedAt = new Date().toISOString(); + const status = errorMessage ? 'error' : 'success'; + insertLog(db, { + id: logId, + startedAt, + finishedAt, + triggerType: trigger, + status, + usersSynced: errorMessage ? 0 : usersSynced, + errorMessage, + }); + } finally { + syncRunning = false; + } + } + + if (errorMessage) { + return { ok: false, usersSynced: 0, error: errorMessage }; + } + return { ok: true, usersSynced }; +} + +/** + * @param {import('node:sqlite').DatabaseSync} db + */ +export function getSyncStatus(db) { + const last = db + .prepare( + `SELECT finished_at FROM ldap_sync_log ORDER BY finished_at DESC LIMIT 1`, + ) + .get(); + const entries = db + .prepare( + `SELECT finished_at AS finishedAt, trigger_type AS triggerType, status, users_synced AS usersSynced, error_message AS errorMessage + FROM ldap_sync_log ORDER BY finished_at DESC LIMIT 10`, + ) + .all(); + return { + lastSyncAt: last?.finished_at ?? null, + entries, + }; +} diff --git a/server/password.js b/server/password.js new file mode 100644 index 0000000..e7b82d2 --- /dev/null +++ b/server/password.js @@ -0,0 +1,12 @@ +import bcrypt from 'bcrypt'; + +const ROUNDS = 10; + +export async function hashPassword(plain) { + return bcrypt.hash(plain, ROUNDS); +} + +export async function verifyPassword(plain, hash) { + if (!hash || typeof hash !== 'string') return false; + return bcrypt.compare(plain, hash); +} diff --git a/server/teamviewer.js b/server/teamviewer.js new file mode 100644 index 0000000..088412c --- /dev/null +++ b/server/teamviewer.js @@ -0,0 +1,294 @@ +/** + * TeamViewer Web API: Connection Reports (/api/v1/reports/connections) + */ + +const CONNECTIONS_URL = + 'https://webapi.teamviewer.com/api/v1/reports/connections'; + +const FETCH_HEADERS_BASE = { + Accept: 'application/json', + 'User-Agent': 'SDS-CRM/1.0 (Node.js; TeamViewer reports/connections)', +}; + +/** + * TeamViewer akzeptiert ISO-8601-UTC ohne Millisekunden, z. B. 2019-01-31T19:20:30Z. + * JavaScripts toISOString() liefert .sssZ — das führt zu HTTP 400 „from_date is not valid“. + */ +export function formatTeamViewerDateParam(date) { + return new Date(date).toISOString().replace(/\.\d{3}Z$/, 'Z'); +} + +/** Dauer aus TeamViewer-Feldern `start_date` / `end_date` (ISO-Strings, ggf. leer). */ +export function computeRemoteDurationSeconds(startIso, endIso) { + const ts = startIso != null ? String(startIso).trim() : ''; + const te = endIso != null ? String(endIso).trim() : ''; + if (!ts || !te) return null; + const s = new Date(ts); + const e = new Date(te); + if (Number.isNaN(s.getTime()) || Number.isNaN(e.getTime()) || e < s) { + return null; + } + return Math.max(0, Math.round((e - s) / 1000)); +} + +/** + * Gruppiert nach Benutzer (userid, sonst username), pro Benutzer Geräte mit + * jüngster Session je Gerät; Anzeigename Gerät = devicename oder sonst deviceid. + */ +/** TeamViewer liefert Feldnamen je nach Version leicht unterschiedlich (userid / user_id / …). */ +function pickUserIdentity(rec) { + const uid = String( + rec.userid ?? rec.user_id ?? rec.userId ?? rec.UserID ?? '', + ).trim(); + const un = String( + rec.username ?? + rec.user_name ?? + rec.userName ?? + rec.UserName ?? + '', + ).trim(); + return { uid, un }; +} + +function buildSessionsByUser(allRecords) { + const byUser = new Map(); + for (const rec of allRecords) { + const { uid, un } = pickUserIdentity(rec); + const userKey = uid || un || '_unbekannt'; + if (!byUser.has(userKey)) { + byUser.set(userKey, { + userid: uid || null, + username: un || userKey, + records: [], + }); + } + byUser.get(userKey).records.push(rec); + } + + const users = []; + for (const [userKey, { userid, username, records }] of byUser) { + const byDev = new Map(); + for (const rec of records) { + const did = String( + rec.deviceid ?? rec.device_id ?? rec.deviceId ?? '', + ).trim(); + const dn = String( + rec.devicename ?? rec.device_name ?? rec.deviceName ?? '', + ).trim(); + const dkey = did || dn; + if (!dkey) continue; + if (!byDev.has(dkey)) byDev.set(dkey, []); + byDev.get(dkey).push(rec); + } + const devices = []; + for (const [, recs] of byDev) { + recs.sort((a, b) => { + const eb = + (b.end_date ?? b.endDate ?? b.EndDate) + ? new Date(b.end_date ?? b.endDate ?? b.EndDate).getTime() + : 0; + const ea = + (a.end_date ?? a.endDate ?? a.EndDate) + ? new Date(a.end_date ?? a.endDate ?? a.EndDate).getTime() + : 0; + return eb - ea; + }); + const rec = recs[0]; + const did = String( + rec.deviceid ?? rec.device_id ?? rec.deviceId ?? '', + ).trim(); + const dn = String( + rec.devicename ?? rec.device_name ?? rec.deviceName ?? '', + ).trim(); + const label = dn || did; + const idForCrm = did || dn; + const startRaw = rec.start_date ?? rec.startDate ?? rec.StartDate; + const endRaw = rec.end_date ?? rec.endDate ?? rec.EndDate; + const startDate = startRaw ? String(startRaw).trim() : ''; + const endDate = endRaw ? String(endRaw).trim() : ''; + devices.push({ + deviceid: idForCrm, + label, + startDate: startDate || null, + endDate: endDate || null, + durationSeconds: computeRemoteDurationSeconds(startDate, endDate), + }); + } + devices.sort((a, b) => + a.label.localeCompare(b.label, 'de', { sensitivity: 'base' }), + ); + users.push({ + userKey, + userid, + username, + devices, + }); + } + users.sort((a, b) => + a.username.localeCompare(b.username, 'de', { sensitivity: 'base' }), + ); + return users; +} + +function upstreamError(res, httpStatus, raw) { + const text = String(raw ?? '').trim(); + if (text.startsWith('<')) { + return res.status(502).json({ + message: + 'TeamViewer-Web-API lieferte HTML statt JSON. Typisch: Script-Token ungültig/abgelaufen, falsche Berechtigungen (Verbindungsberichte), oder Dienst kurzzeitig nicht erreichbar.', + hint: 'TeamViewer Management Console → Apps → Script-Token: Zugriff auf Reporting / Connection Reports prüfen.', + devices: [], + users: [], + }); + } + let detail = text.slice(0, 600); + try { + const j = JSON.parse(text); + const msg = + (typeof j.error_description === 'string' && j.error_description) || + (typeof j.error === 'string' && j.error) || + (typeof j.message === 'string' && j.message); + if (msg) detail = String(msg); + } catch { + /* Rohtext */ + } + return res.status(502).json({ + message: `TeamViewer-API meldet HTTP ${httpStatus}.`, + detail, + devices: [], + users: [], + }); +} + +function bodyNotJson(res, raw) { + const text = String(raw ?? '').trim(); + if (text.startsWith('<')) { + return upstreamError(res, 200, raw); + } + return res.status(502).json({ + message: 'TeamViewer: Antwort ist kein gültiges JSON.', + detail: text.slice(0, 400), + devices: [], + users: [], + }); +} + +/** TeamViewer-Antworten: `records` (Reports) oder andere Schlüssel / verschachtelt. */ +function extractReportRecords(data) { + if (!data || typeof data !== 'object') return []; + if (Array.isArray(data)) return data; + const candidates = [ + data.records, + data.Records, + data.connections, + data.Connections, + data.items, + data.Items, + data.values, + data.data?.records, + data.data?.connections, + data.report?.records, + ]; + let fallbackEmpty = null; + for (const c of candidates) { + if (Array.isArray(c)) { + if (c.length > 0) return c; + if (fallbackEmpty === null) fallbackEmpty = c; + } + } + return fallbackEmpty ?? []; +} + +function hasNextPage(data) { + const next = data?.next_offset ?? data?.nextOffset ?? data?.NextOffset; + if (next == null) return false; + const s = String(next).trim(); + return s.length > 0; +} + +/** @param {import('express').Router} api @param {() => object} loadIntegrations */ +export function registerTeamViewerRoutes(api, loadIntegrations) { + api.get('/integrations/teamviewer/connections', async (_req, res) => { + const integ = loadIntegrations(); + const token = String( + integ.teamviewer?.bearerToken || integ.teamviewer?.apiToken || '', + ).trim(); + if (!token) { + return res.status(400).json({ + message: + 'TeamViewer Bearer-Token in den Optionen hinterlegen (Abschnitt TeamViewer).', + devices: [], + users: [], + }); + } + const now = new Date(); + const from = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000); + const fromStr = formatTeamViewerDateParam(from); + const toStr = formatTeamViewerDateParam(now); + + try { + const allRecords = []; + let offset; + let pagesFetched = 0; + for (let page = 0; page < 25; page++) { + pagesFetched += 1; + const u = new URL(CONNECTIONS_URL); + u.searchParams.set('from_date', fromStr); + u.searchParams.set('to_date', toStr); + if (offset != null && offset !== '') { + u.searchParams.set('offset', String(offset)); + } + const r = await fetch(u, { + headers: { + ...FETCH_HEADERS_BASE, + Authorization: `Bearer ${token}`, + }, + }); + const raw = await r.text(); + if (!r.ok) { + console.error( + '[TeamViewer API] upstream HTTP', + r.status, + String(raw ?? '').slice(0, 500), + ); + return upstreamError(res, r.status, raw); + } + let data; + try { + data = JSON.parse(raw); + } catch { + return bodyNotJson(res, raw); + } + const recs = extractReportRecords(data); + for (const rec of recs) { + allRecords.push(rec); + } + /* + * Wichtig: nicht abbrechen, nur weil eine Seite 0 Zeilen hat — TeamViewer liefert + * manchmal leere erste Seiten, setzt aber weiter next_offset (vgl. records_remaining). + * Früher: if (!next || recs.length === 0) break → alle Daten verloren. + */ + if (!hasNextPage(data)) break; + offset = data.next_offset ?? data.nextOffset ?? data.NextOffset; + } + + const users = buildSessionsByUser(allRecords); + res.json({ + users, + devices: [], + meta: { + recordCount: allRecords.length, + pagesFetched, + source: 'reports/connections', + }, + }); + } catch (e) { + console.error('[TeamViewer API] interner Fehler', e); + res.status(500).json({ + message: 'TeamViewer-Verbindungen konnten nicht geladen werden.', + devices: [], + users: [], + }); + } + }); +}
+

SDS CRM

+ +