From 001eec66af81b1840e1470bacdcdc817c83f5d91 Mon Sep 17 00:00:00 2001 From: Igor Barcik Date: Mon, 4 Mar 2024 21:10:58 +0100 Subject: [PATCH] Reorganization in projects, fixed tsconfigs and eslint configurations --- bun.lockb | Bin 271496 -> 270136 bytes client/eslint.config.js | 30 ------------- client/package.json | 48 ++++++++++----------- client/tailwind.config.ts | 25 +++++++++-- client/tsconfig.json | 86 +++++++++++++++++++++++--------------- client/tsconfig.node.json | 1 + client/vite.config.ts | 6 +-- eslint.config.js | 36 ++++++++++++++++ package.json | 3 ++ tsconfig.json | 5 ++- 10 files changed, 144 insertions(+), 96 deletions(-) delete mode 100644 client/eslint.config.js diff --git a/bun.lockb b/bun.lockb index 530e11159ac98f5825290bb093e63f51846375ed..cb603343f895554bc528b23078c056c19783b952 100755 GIT binary patch delta 52789 zcmeFacU)9g-z`3KWRy{{7qA;EC@7!~hz|CSy+$%)4 zPO5FF*s9dXqS6XvZ!yw+0oxmT5TkbgECWv{Ft6UaO{dDXolJJT6ab08|=O|TdZe9g57Wx3G+fY12%)*oppO6ms}|5}9TFB3AC3H~LudDNKqOmJ0yf97Z%kNXd_=U5 zt*eHiNQ8j0_Qf_Zyvb5XaV&D(i3z**;1M6r%%z$_vb%$_>~ z?^586;NsxyB@71qOI-<@Z5Lqr{Q{BsJO?wMB_(y90p?t-j!fA0;qd1i>jQ?=A=M;> zGo>*h5itcnT)}DJ^56$$^o*XO{VXuS7B$EgZ!l~vt7n)JGH_r-LZacz992D>O4(n3 zrALc$da}D{1VqjlG ziz-^eR126LSq{u$%P;kh9=e?YX8a8>3Q9d9^>tuOfYdpfZ8xNjM1bQQB_q0lnXrlG zU`VY2W(H-XofFIqeskCT9)SzPJ_lw+c7PebOxn}HOrMzG86DHtW@v{-=7PP}7Y(!{ zkixl-D+mHJXb8>;?i+0320cQGgR$V^}n=9ZFY*yzu7`3r~cKGY|>_{LT zQ)BAs{o+{9?*sILM%C9V6oHDe0`0*pz|jxw8|VWTZ%c?7ILKz`+)!Upt-v`Am=RV4 z*x}ePVg_SyrZm!Pe%DXWs8(Y=J}e=@mJntzoQF>T*qDSwXomVtbpJWfIgrsI(J{O; z?SWkowzlV^^OIq-f}5nD(hTVaLRbcY8Ky&E2C*CmTr**FhD=602X2J)b7T}5kr+Y0 zz5@r54AC;#& z4LlvpYUgdE+lAWd0~Y~iEl)t_z&g6?Ds0y7PsFo%eIzf1PTRk|p5HpKD+jz10tFD! zKPDEvWH8Ku&1PmpLf*G)bkyxkWWbfR228zHC%vEtuvvk1D6iyrSAtnbnNV&Xk* zAz|SgI_vSiVCK`lD|dPf_z5J)3&E|MJ~Pt6tm#8IlIOtA2ObM%!KpGn510jRLwYtK z1ODuhg|Lf)$4DL|<9mRML2m>`%Tud?3v&x7g8(al8-Kj5zb!d0Y!(!efI$mMF(|Ov z!gnZu6XGO--UaY*ljIhRVy_(`qN z{}eK?w=rR}aJ}Z6z_f!R^cJoMvt`RAqo)#ViM-`|Muo&041UnL3zr46#reSO!OO^( zwmd`F2BBa!v!pmNM_4cH9sf&AEmadG;P^s^(tNz@I@i29Ou#p?;N z#e@tD>1$gHn_WE{%&x48j5wy);x)zzEFvZ;!H_FSuh_5X9rnl*aDH%PLMW?DEiobi*lgu%7Wfa31K@lhq};D%#z!6|o`bAam~Bg3bKH zV6&msllAuOL3XTf8n_Vn$Dz7?7t9eq4Q6qBz--4FF!O5&E()F}?U7(^Lw*<;lw(g- z5n#nDgPEW#MvxU4C=)s|=mwhw%ti%Rz?M|K;xVx{jGZ=h1}C7cmJzyM3C#Q=2PZJv z5IHzRbmKwu@z{y5q2sddE4AqaNStEiVpcfjPiz`8)X0ehy{s==EL}wQum)=FjQp1zBYZQ z?uUIM91ga`5bbPILpoL&qh`2x*;8S1q|Q##d-#atc<8K0lr1qlrf-6wGi;7vAeh-F zMaM?OqU7SR*`ly3XLAE?#ffk9yeW2kNe}`=y=>OW1|Mfpdr7_(Cg7ZB&k0;VE#-!nd4+J z4K~Yt06$LEQLwdQV&n0F%wV_xo%MFCpfR)b_D9FWVkixUkkHV0+aT50i1-{=js*t13EhrYdD&IKCoFJ?%3K)u*JuFhT(8oR;DiqW(S)j+oBO0 z5#7J;d|iJ#n-#>J?-c@E%zs@=H=q}S9u|WC!fl2L3-u}d5X_c;4Q2~t_1)L7Y>^)C zv{>MLnMY?6K(Cc*zToCc&R_cE7VeC$W;TJW3{-O<> z)AUO4obDMC8c`gn*~$+~^;9pxT*wc=tn5xyj-`d-<2HIX;Yzw1nZHyw$7i~D8>$fz zZy3H>@63TQeM7ihl3=rK{cVYu5cr%7o5k1?qO{654z4| zH*C;r6$Q=(yE~ZML_Xn7dL;ctS?zVJmn)0N(=7xR09e&g6KZM0Bp zb@CR?-<}$S0PC+E3J_Uot8NEF=W=kIlb=IpyP7~}0oS(alVDIpB3G3mK4#!RJftwR z-l>03@d1~BUtwwgu|sd@9dH@w`@p3*Yv&>G6@+2n(%@c_>uCW`-Ht^%JcR zDpCmc*?szK*bQdIcJ9}2U8!L1KhqEBdOVorbO9F!FQuOyfdmA&{w9FgVig%x28V(< z6p;xr(KQWteqxK}dBNaxM9=W;VZAH$2R8|Z!AG&7!oM3B_wm#~FbjGr{RV^c!ww4% z88`s>@ll4IGtTiW!|{m3@fqmLGYx%t3_Y$7K`CTh7U{+yLk>x#{>jB~12*&92`&vT zcUrGN4lsLe7Ida_e5k`ygx=a?g#Ksr=N+BE?7~nu76#`77XwG3C)l#D(B&+!2$)@q z&qusl8GO#`dRZ`A=!jRgY(7=^&m3xUp+&*T?Z09F_OY+RxnKW^CJ=cXpXHQJ)=<_kK-N_x{V)oS%2kvy(a%9V)hVS@Ro61roolrkQpIcG4_<1YGG&~7K5Z-6+B9yLx~PnwIt%qvuE(W{`aV^j zr;W>d?OOI&bw}kLuG?&@g7)>CuqU&A_u!gs3i*q2fmLrs*L71*luXOF`@-SuO}(z> zO&FC_xRQ&{Sv9p(v&}ckOi?z+mP^Z~mZ`L%ZM9)5pMEM(?0lRlrDe#QYYT?D27HJZ z-Lc=4XE*M-O*t~X{r4*dOb=b(`R#2(cxIlv!;Y*Q+@OH5(a_n4Lw=ajWzw;|`Jb)a zp1a}lON%pnzWUy~?zGCuo0HvtG%7};8d=4vbTg{yRjkGd>WeCY#z(4q)j*|yqDEG= zDt#0+y{gqbS1}k`U_^4L8+|NFm29eqr&Uo*Y9z>NQqw)H=5I}ShzA#wy3x~OJfOOJ z1uFj8)krU^afG_cE6})6ec=^o%FGToHB+r)%%MhBvnmNW)bwgr^Qs&MLldMns&Bk3 z#vfGo>Vb-%vl?05Y8K9V#s+3=z6`68=IFi9&lx*TJs3{v#wr$b7g+IH6dkX_s-?xf zscJF1;J)AoOJOETZ)3S=HH+- zgJ#saC=j=!>Y9Zbn_^(qP&2F7QCC?4&9`B(e4`rYWpOTuRmc*>h~CEPYM(03O1pe& zq@UG1K}KZLGCT!Kuco)JMKR=8J^ZcaCRm{q6_uU$wYthb(6~o^fuHYG_u7F<%>rs< zZL4`CHUf5^N%gL3F+NaV)DAQk#2tpimP3t0vwOgzhm-oo-(sE#tF30S8=t~rby1I| z7Nt}n)uWEp+_sRxP!%FdM!$azi*3lkdYB)=^3mcrCIzwk=oT|;42yFNa{$&XSPful zS(|Uck_91`0!8$6PFe{)VR6c#y6FGKu;{6ctobG^mabR6JobI&sm(HTEG&*2Mx~lI zQh|YHv#UOONbTk441-yrA-)z<60ElBTCV`}QG|MEI;TZh+}GP^*`RnO)=l-OZ#5oL zBkBj5-y*7(UV;V7vY47tA7h8Dmc5H1Ms;t)(ihgoS{9{jaW%bx)!Ya7lTLa%tktcm zd&5BUS0xO542jC1=ahsJT;k?5h|CKOs%A0g!0o6tEOZ$Vtb@Sr+Hb-?zqP^g{AE+=9jQKe73A*42H&^t&y;L zIxN#GSoKuTY5`_H+>O}LSX7u}Bh-kdf#!YCIIFU&-h2F`q*JSQSF|vSU@&TZ1ZARtO81CfN3k^w1G93DW7G< zntQ>bCz^}$(qM6JX}hNREiC4VILy#$74*4v*LUo)FXs$`#Sh9NLAcS;nKSFd1FlF~- zY-XD}P6+6c(-8{NA|HO%JiJgxO-n&Yk3EKvo{38}N7~K^>4nYxtUX3ZPvKqNks=wP zmRf#?5z@=e?d|aEijb}?K}gHbDAZLQ1C<0{HKU`|xKnlS6lnh7tM5npvZ#p7nH!ik zPR2p%3wUgThWt6M@>dR7fEO+m=2X3nqU%z);O z4Nl2jOHJ=$Ra(|kGrCxfV^#OyK;wHg0zXsKRl$L#GZx&bRnO`H<}w&Jrb9)%EJ|^I zHL|Of)$bZ;e(vvB54Z~`rE04l-K^#)%qP8^I846nu()I}y?rg_%+GOL>s12uZ4Q$U zHHr#QBfDFT$JJHc0~JdhHKV)LJQ_2c(?-9|?T3XVsX4VB=>sfIT};+a7NuQXHKT{s ztk%^tHl2ZZs&amc{%6R%cjf7OEK-s8`xqvxdQ9I^^f#6z;a4q>haPTVCDz`drt?b_y(}!8l@_orA^F zP_IFL&JFYvl0o&ZV^R7yP(4Ddrfm?LaEnrMG*r_=tj8gHpD`UaZwVC!uSU7wmgU~!^iY_P>mfW-#l;4#9_ z83r>zYq9_2#c_kR)9-ZcV4?KXyzCd}EwKKjDD#g{WVV<-Wtux~@w`FB!eXE5DBzDX{J z1!q{Ogy{!*s-FG<=1Q&f+)dg<>;wy=j41;z;|g_EWT0}dl^S`#YOWJxFmywdlZv8T zF2HI7D~AD}4%M<%s_-;rY6hvh>iHcOBen!gELIa8I~W%G3s$H_+0#}{PY5)&Q!})m z9*GP`YCqEx1D$bGW*^{We8|rUx6Rg^P^M!D1*=hEb#mZtiCTUcSaT#4_O^Z+oC6ER z(ZYPrfTcH^J5jTapW|>inAK6u7;ZJaf`}ai_tpBH^r6un1JyG$Ksne+jT~$> zKgWbbzp-XjET#s*oa>ls<}nCy5O83xYEcdZtC7i8)1MGKGPU!-uKMXlpNVB^nVleL zDNSDJ(Dqs$n-S7mz0qPZWzu3|Q>E@a6(eMhL5MBU*T+s+U;KZDg}oDX@$RAb4w``b z@-SF>zi;enF&%={S@Uwmse*fo)?=n-}tnrPmHC!ZZd}Ep=^!0P{YCxNflA>RU{PKA5~(4eB6-ewTSofrTZ5 z$;q5=z+yRA6BdiPRET53BhJ(fR!8QbtP4>yMp#Wwq3leKUNAzO?|Rec!QwR0vwRK< zwU@;;2}9#_Pb|mvY7eYw1MWymAeX-tWl`N{1#RtJr{WT_tQPm72^P*R{qhC4xM_|b~RG?>s-pg2pll+`v za38_$fQ9k)v&GHMJJPW+GtTzKI_BpL151jfeP=Pff~C)>1_K=H4Bg;70T$=i=grsr z2nyGTz8Mu8=okQYOgt=1P1%BTu=Kgf#+Q%MmVNgC^VbM*#^7#-G;gG3<_@ehj#eWF zSk057_4}?i1C*1|Y6e7ejDBOs>h!TV2g3SNvocn*GX#Ahy}@zh2Ax&U)&b`7v5tEU zbR{@ejf}FIw?fpNagTEO1dGF)(_k=Q_*HEWG^fVtvlll;blx#oR`_84_q8Za@oIWB z4m0s;2IxY(>Jei#dnM>ygR#fyqF;iV9%EHjC8!xO`^=$<_|*)O=htRe;iS(?0bS4z z7C%*J>719sY60s@muEt$t``mOl7sa2pjzm#c7s%pcszxG$f=A)V)et>Egf2|!3KjT zwCw7}E*A3`SX_&!|8R@>6)ZVvk!3)#-ZqR#HH(sxtVVuoHE)E-)uew)dLk`6GO+tO zrD&at(?M{G8aWF0a|m4aXaUyFOIU1y_R&D8IYjmN4j-q7d@cjMc@UPr=Hgx3V*UUN zH%!zmF3Mv5IP~-2W7qKe8b@Bl={uYq7LK#H-5o(F5ISyyC^FkH{dR}h+|6Qc1gnh} z$Lgq`jp3TyKP9b@Dio2#cN=Lfr1w!D1!! zVt<9DAGO(_^55u|7H6`U zw}Zv{;{1hH+ogqiVV_+qJ@cp=gDmEsVd*m`t}!O!XnmX0x?Wj3TJ@M}HSZqdI2CXm zzJ$d(>y30Dt7c5KDoJBik7-tA(^xffn$`SbtnPxxQK(C$agGgZV|71g7>%^l=yGN0 zI5kqWDv!sh>8jOKcszPay8(4Vh-ILIQDGGpcRZAcd)jGO976297>eJ&c*1HtLGNp= zZst+2=&29kR#^N*j!I$uJ(F>mued7}o#<#&oR6OqjM~~=VlqOt^rBGNqZ8GPnO5^} z5UVp9S4K!zNrw68~k@KvI zLFImzzmBT!3MPa0D++@dC)Y~qgJx!DM6gLX1>@2S_&LL1 zn=n?`Wp=^RtHL?D|Q78HU~m-ssxgv$B?550<`km~1Mn zCR&zwqU?Mf7B`bGH<1#v_1UQJYOP?&)?-em!s5_t_h56|Il3o04f&?RVjMaRpA})S zNtjlcwgu+u&BY!8$M&$;LS%Bz&lyH_82Zk*4;EX2e!)aG%u~~sSp7&oYY(g#P^?Nfu1frAY!eU42%l#EBD=htV<*~>y@7Xo+u=D}uuDltR zJ^-91`4{U=)=!fiVClKAr>06vpL*w|r+)0qza;CxbbzI=7Y_e4SZp@(#0lpiEGxGw zrSwwOW3|=XYpLFP{RT1%7F&;}%V==@W%^KI8RDt_2v{}Lwb-`zBg8?|K1@0nTCRJ^ zS+m$|T&`xUv6^Q>=bnSJ1DbXS7UvFTQjo>`D=dz*cI#Ivu23`9TFsFwKDPq*vIVeM z2`Cl4+`O(&V1t!M{-Gs3(mhKoC?*u<5 z7>)Sg#WW8g?5q9(&W{ml2KO&3sp@J+i`g5~VAayH<0LroB@Vs*4pu$HX=~2pw+5bS zR1`jmA%q9!RRWZKYgCUdR`V|qxLmbiFng_aWXbv17Zxj^{c=TFvsU%kYBk@67yvP+ zwxWvQSLqPjt6nEof98=coxudtRLpGF_zED$O>DvPL^|i1% zARUH%gheU1LCx51H79S-7YoK42Y~gka2~S+n0`ShQ1#prphRy}Gj>>&B^ygC(8VMS(SxpBW-K=Kp8g3fDg_DAxm0uym zb{5dKnCe>%2H($C7%ax2W1=lC3t+XNg$oZo8siMV$LtKT3q+jjzO$IyY}0!Z?eVg> z2v}TOdIIlm`hyQ;JF-zT*94fmAjFA{!NVNh3ach8%;9DDmDx@_9{Fq?gVpu3ReD#} zxFN9gK4iMHutGk2dhOPKE1>5&9+vHM+>fw&f417}$!e{G)$?;)uDw~~B4K^0%VAh- zzg|MIeUA3?gqZ=WA>z<|V=Rj2el_ES)pUM8dp`3-fVt!WeM;gsvf8CLE#`CJ0mWK`eqG&b9G2x>{>dd%^@}8lvP=9NcA{vHG3S^w|qU% zaz`9D6aIpy(-AcTF4G`>F35ZjRy{3iR$~59J$WvUfpYbznsLTzZg@;T^x}71gDvKT zu!8lvMB}&(>vM9&a$LWUW;7NS zcNyHX(R;^XHPGU`u~N(@^+sb4$Ijds7M?eq3NVdE$fjnV3{YO3R3k4~&6ZQ23&$xi z0v5B>`opvmRv*>#bb#4<+R+NMNttW-x%)0>ioITn&d^&l6+oGzhYH(omVriSdE`l_p5>C+7}%6y0TS#?S&26w6ewMx0m|A zW21WZT2Z5-W?n1m%`}*7T0OAlw2Mr=8^HGUly)z0cD3&HN_N(?KfsGj?{FHp{vFdV zLi5s@xet^!nekE5CbOIvfO;&z3vAbfI2eqGr;3Zr43hxrg8*J++JkA}%E~Mt1z`LT zfESteP|06|d679iQu&1-I*b5#{R^v6H}wAb4l(o^O&45$$E@x+E%sm83=PMA?IN?9 zGjvm9<~vi`S($z~HQTl6wg3i&MF6iwfHRN=FoRV9FEZ_P$++Qb7n%AR$!o!!#+w0N zS=j`82f*@n8Pqv9i`khJTeo(RY44Ma9a_7xGLs$zTmUR+t*Y0+ys|Qjx(%@J?g6~W z%>O7W4#*?Wxm-c^Ul+OZNN{6h>gsq`7zO9TWQ|}<{tW2pRevmuKcrw#>k#<(5 z-j)5&40}k2zhmwqePn!AW(J{BC)2MVm{NbK|L@rT?;N=NV`PT0lH+8?WL6+S+JDE4 zO2iLx5`Gi}j{$SPnhHjR?S>hQ#YN`im;!j36_?F0ecJdoT-n4#q#j3&|NYaFH2&DQz+{{sGK%zknI_R`Rcs ze*?4U-qYs%|9}85GF!x0N=7j49AIXc8_Wvkm0Un_VacwNi-YmcP!c~_p|Uh2)2;xU z`BwyM>%Wq8AT#KWA9U~lvp`QU6M9R#hK#Q%Z9g#QNTKCPwQPI5;uD-bNX2bdZ31hZ#C!Fj=P(jElnhBXYF8$1@w^b^7OXPC?% z8teN{7D3N=3LIF#RLRpMtCFXKS@3KyGoCMbvD8<9Idp5l%x5ha{|xK-Lo$OKwX+ce zu;{o+I*^(1HffU?+#zi;Tex4^f5%LJ81d}-W76-hY|koiU7m+yF7Pdx;6Gtj{I>Kb zb1r-jW(A&s*;B8;^veYEl5BSbG-lin(jhA|;g3=$Gx(FVvob6G5jy?A9DyMYyQ z0yAlLuy+5+fdKv)a^eSTUI0voLSSZ87>s`gSN@R9U~&9ldvgu@0c~60Y7dei@|Ks@@(iiMy!w-WMx()P3l>h&0GteW4Rs74PvkKBQxE8 zF!Mbi`Jjv^v*4rBKAH{f=WIPI9nZ;#|Abl41^6?`Wtoo5g0D!MoDcS6sXqZT>N$Qe zeMWg&3`pUXw8?aMOB2&)`X6gLP61>1_%V%b_)iY;pt1T$w3(I&i(-o0iRO(ro17A+Ymj~0OGJbG8 zJ!wd0K3=d{b#E~1;VZeOlf2a-pj~7-`bnG24E&`{X0Wcb{~a@(Rr>w+tSuPbkqH82 z0y4L)AZh;{)4#Qh{~xm*88DCbG9xlG?f_<2b&_^x8BeAj3}#PtmwHyF)LZIg2E*`! z>15xDqKr=hv*2WD^RKor-4HOxo(*DtBfz}Kv`0#t%sbK~ zFit0S!+aU>e}lQXES2SvO`Lye2(SgKz--wX>F{^VmaLQUWTsmWroIu(^VR_w|98xu zJSF4F+EMp31Bf^SW=7}0tjI-aUzYYYF#WEBd1YnlH)Q-x8BbFeAehKE7{wVD?U|xU6toY9|o=p3#O!q68<-C{iSy*3x6zK4WbU={rU1^~7 zcTW-NL!A}=pFd6Hr!QPB0M@t_fJX(_szuQHcMlK|t;MtWtPc>W)29CK9w5?>@&7zX zWKU=h6xrqfJV?~1PCEL6Q)o57i%ffsz@aS+9vnUgT$;46nTH? z!=?2X=5F-QgT#LxB>wXt@t+5Y|2#QmMDMQl*LR6)(-Yxw`y_r<2{H{@C!fZO-ft>175qPkwP_NA+Wc7mqt| zYQD|Z?NyVU+2aqjtFj^QVV9e0*R8+2D17y<*4sZS#xh^kv)N21_WEA_Hff%*%=+uQ z-;VF}c-yUEm)BbM%vpBr+0|9Ad@C;arsv3qn||Lj#QY%PQbOvSYPr7Yw7QPD`^w}s zFJ_3I6^yR-la{6~xq~y0q?r$Rjwx~Vyj!n|ZrO8O?jQG+kN4e9IGwe z&r~>h_tcwtE*X*&{A)?WFSG-x^V(;H4j~lyc8~v*?g&zmE9O z;8VR^>VnfByq{!Fu0A$of8KLjZ>{%e?>h3$9kJs0c3VYb+Z^_IkDJT#7B7FK`@??2 z*Sy|0Ct>WGkcNZpMHa_?TW-Oh=G4fo>s=F$jXf2$cq@ z`F`I&v?s8#m7}t@@|;Ju^J}*cZq&3^@i!Nrt!W>!@T)p6)!vnw<=b=gRjFmmZ)gA6 zo_RLX?JL{RQh5uO>y*DufjP(b|9te1u)8fneyrSMw+Qk=E4LLCzUSkz1-&r@Rp`EL z`KH^?PNjAnSopU$OI|;zlvp7k2t6AI`^-5Ww6`mZ$`KGN~wQ0diSy}q0^>sz12Ek+OQ{$ zf9lt<<4@1`Rcf$P-0p07IDT}E+*js&EZXPk_O;cFZ7Yk3XN@gIvtXl(c!E%nk#_=l zIe9y>| z1vlXy3BfM}!bH}ixERZNJg1O3076OOKM=yKPzdt}LMSa>P-qqgAt(w$Sur~b!aE8d zDU=h`#6oZvU1K5aps<%h6%i5#A-q3? zqj3;CMgDjQuHg`p;vrNM2PvGOP=U?&7AF%RBu79P#bNLj7ZV{=j)YJ%2|`UVLhBC- zN&O*Mg#Tc8j2Qr7{$L3H;spi2fe?a{Aq0ro$q=4X_(-9yXr2OLRuqIxjJ^_R6t&MA zJBwz~%;Y?j`bLpK9 zFG6W<6d$PUpwjaal$OZn5|r?GC@zeKk>1jX|@l&(fGSE7pWfXm zE+!@;-;Z4|c)dmQU<_Wf6f|IMFoY2Cp29l{J-b2(6RWyHNE-sdr5gmB=-LfJ@K6YQ zDfAcS?hu^6h7i>qLWI~!VF!d(SA6EW{9fhxa;NF%HjK>lZFJN4G0(Nw6^8KjtInqU z*=yCBb20CGuJ5t<`<`1q)#+SqeqgQsK7M_M9vstUa@Pj+ZhgS+Zy?MMfiP6OpzxeR5ci#7VsT3w2#ZC&&qalGsM^t5N=S&q#%U;W>qm z6y}TO-$Ix*3BuZMAuJT{DKwi5q30+Fi^Zx@5Z+O6`3}NT(e*nBX;UEVrLbI>M?(mn z3L$DVgq30^1?OoHN{)fBN<@r-u!F)`3af?NSP0=NgkfVLtQ99IxK4-QIS#^lkuna# z2?}>9Y!vR}AtcX$FmXJD&Eh77$}=I5XJ}y^Cv>sDPBw<@*)UNC|nla0z&1*5M~GnSH(jLHz+io z1>w4wIt#*>B@o_HxGCz-hTyjp!t&V=Zi_b*o>S;F2f|&kcn*YF%OIHMLbxy5&4tix zIfShgP{uq6?l(0?`}9$y>n|{Yv8rf8Ox&Ad54QXb|#lg>=4=F z&motdhHmWl_?4~2{IH5!yFY5RB&Kvsp8dU#Ra|-BR?_vLUCdvB{jczR6!b)d%tt}N zD^bu<3eQCT1rVImAS5k-@IoA{O!l*?Meh?Qa zoS;y1F@!f_#9|1^t06q0@U!q<0-^F62s4&Icq<-KxIv-uQV73^sY@Y@SqtGUh4-TV zG6;U_AS_=7;dk+d!gC6pmP7a`7B7b|Ydr+h3J9M>yA=?cZGf;9f?`yJvJ&^JcT{XE zp=49UCMszgp%hMoVp2qC8kFEoP>xc`p@;&jpg3=alC%nnSrLb*?4VL19ZD`m#HT|E z-vZ?-6&FQ(wHk`+Rw$!ZL&>X%OH@u!sksJ9enot<21@caC{L&qRD{o3D3!NEnXwj1 zVMRQma)V0abx?{bV%j<=V|GA!OT|qQ4c0^P+X-d)dML#e@e`HjR61=yXOt9+H?Vhh zK`?EEP+GLx$llovVJn5Q!ng^-I|{Z<5Xy;-6w>xUD7+a$1rf3tLhxP)M=4Yi`L{rD z-UlIR3j}v@kirfM6}CdCBI33}2;UFkDg{qbb{hoO0}w`SgHTOeq;P^l&Fv7p#fa?? zk`F?7Lcv#f?|@MG5QG^!Ak-8ODcqpYcqasln7R|fn8Og>Qt%h`cR}zw0%7?s2m#^^ zh36DH?S@cSEZz-a)=>ziJrDv#yFCz^9mB10%O2bs>kH#v2=9);!?qV54aG(ZX~!WH z-Up$v*triv@CgVd_d{qZBK8}*7@LWMq~^ly0H}qCBefJKNv%ZLgPccXq?dazX2pW5WO^rm+{%Tp4LrG7u_!vr?bpfTB zaI(dT%6I}ovx`O-d)*(5JAP_g;qK94Zcm>N^P0XS`=W#ST0V)q+;NES%x~7TwZ|Q? zZz}ZXrN*ZxjsGrJu*oYXWXbfSmIr47Tl79ycynNuazgm1UtUgS^IW#wDz<9NpH)5D zf0w8Bq(Pl#79M#!&yxD7B|-)tHx?P%ySu$@c!*ov<7}H}{1O{EZtvKpHD0cN^>pj8 ze!ncvm3m)fUc~c(h#p^`yZplsAE$e6sNy<**7yC6T?@(gG-T=W+b;(SbK#)NQ4{74 zeO$rQ%YD=Rgf8Gn+?`F@-mf9xYyZ5M$<7^g|wR-hhUw?UHO1Y<94s~ht zVb85izn&al!9FRov1{Bf4TjCU(|+#G@sTSJopMX?TGBGl$6=icK6@Ku&n%j{VL?c{ zeeHTJ4iNJ%8C_egzuwE`hlt1RJJy|2{!X4@2SR@Ts#@?mziWq^Jw5zBwE4y-H_ARb znf#&ff$MoP$KCb2Y8ZUE6Sb$;dn`k7Z*th!u>1?seA*4OuT_Y zaJIYw;Rc1eHzD9`c@x5zn-DT7;B0vdg5NC&^KU`G*^2)+klFNM*?}IeF#za zA&eC}DeRz7@&SbLBH{sr@COjiQkW>*9zt+^2w~Vm2$RK03MVLdK7ue+q&$L<{0PEb z3aW7b9zx~sAx!)p!VGbf!VL;_A43pg>|+RH9z)2aFkARPf#CN9!u%%?=86{-o>K^V z3SqvO{S?Birw~3;SSXr5gV5|5gtgBgEEex6yra&YF4|tmW`b5kI~)))BEk8_O6I zw@>}q__NXEUm0Jj=AVjaEY7_(W>?y{Z-1Rvxn!i5)AlvL8T}N~_5geroOL*_m$v73 zl=eph{F?N0X`;s;(8e@Ik<>b{2I2s6a<`s1$n?Z199p3A1?X&Hf@W1gF}Jh!jO zr7Y7zF53S|qJK*4brs)u{nCmlc@$^U*VAQd?`xTinu)Kai-!f2?lf~c{$C;aXR||J zE6QTB5ky|NNw1j7fq6JB!~<=H;-NPJgP7msO+>pRMx+ z2wsDw#@_@CNN^05czXp;U~ zAAI>{zV=;q%8pn2N+7&RR+_K*F>n6KhRsr&AvNCQw@7WK)Jj9!DK(*Mc0(D6p;DYB z9m_%!=mmB;-yvinUjYkb&&-ipIcR*BiCsQdYUL5;8&&M`c~Yx@a7kGP-$i786@k)D z`nS#v3#3>HVp-|9P-?gX7$*t(qvj} zx`s+J?Ph5B$G`PxxXRbWcx{zpZG`X0)@_%GadS1?l^S2`WQKKsds5pewYt#mOKq3b ztkAxf+HR@w?CyANY!6>BWQO&C!_slDbgU08A2bfbKB+Z8xQ_JWSHT!;2-ILExDG+% zj@Jmdg%-2dj!VDB2=fIF_8K=jCTYU@17pT~6XQb8);lj{(ot0X1gdHz{ zos(J%Xm4Z%&r6NpdFD%!4Zs(q)(T;M``6CeUzB1H!WM|sE=jF5!hTY_EVVY!YP0&d zu0UgXd_y8Y`dx>Hf7;s*Y;hxmZ_2do5oUv_;pN%hS~qln!FO2LMSMe+d3OXFBEZ7# zNUamXjih#0YMr4mZ9DKisU6_bz*T39IF+tc6u+b^jqKbIxaV?<<-1G+0N$;lfM_5F z;GHTChzAk?zW&ScI|1;H#c|^>aacGE>~^jYu816{7$+zvBqtyz+#Z1Q2`eFofm460 zBKECTCe^KnO4J7$09@NE0sakuLBL=j8At(!0$&5e0KO@h3XBjFS1U#BT@mDOHF5#D z0p2L{0C@r4APWM8fWkl#peVqbByWl(fl@#j;8#@PH{cz>PmUje-+@1XKY>pGM})tV zRDjzs@9@rj7XfY&yiM>PRRrKYi2DoQUbBhU%x3Xe@ z&ln6O1MxrtkO;&9I6E66fvx~o5LXPB99IXIDE9~M2VCk{ZFc?{DE_5gZO!v7d+y^s zfnGpwpbroNECYCB3I+ND;XouX02l~F0ntDV5DRnyIs;9Bra%LrA^J6GUb5^Kt-Su;A|AF*DLMqKg0hQ;4N?uI0PI9 zjsQo2)4*(C4&VlC#E9`A!-ESCDqDeVz;<8UaDcC#^Oe@3Jjl2r;06=}iUTD8o_b0FrGYX44>w-{+mVomnw;iTJdjR`E{5S+0 z0geHufHS~Z;2dxsxBy%NE(2G9o4_sLHgE^H3)}8fFI>{BfbT~JUP__ssL-DtphdzeE~nT%mXM4@SyWM@CnEcI|q;p_zm_u z!2Sk5eg<9vnZPsP9B>pk2Alv+0cU_fpdL^kXaF<<8Uq%<5BLEU3`PZhK&5^J-T*wQ zj{v>_Mgw~g&qL5Ya6zvBJg7}>;5jmQ0R$ql9>9-w7*T74>!CEx>d*cR->b zpc-%m_Htka@Duzl0rvnN*-rvt05e<)kcqm`>HvJX{{Za0z-^!>^59UHjX7mR40*uD( zueT{nOm>O{cM;y{ILO_BZU7H>*je}|O%2V!g}|&0ClG7I8gqhiqOsNrz`SyTdHCa@ z&jjQEcnB;2@L-q?pbs`DyXN4e8`>Xyb4Hj6vIF;#nM;;9X2#QI-oI#hVCM$tOCQ3K zj&TnE{0P&}Q9(0bdS{L3zz7~!xn;6&){^5<2Ph6Okt0)%H3yx8&%!tnI3XMr$=V3E zoEuCrfSZjM;0u%iD%$abGn75R!nt>|o48awfvNy^CJ(?J;J#i7r~s4%c&2t#&JAH! zz!hK*vcM7mD_$O;Rtn%DhU=II8ar#j#m`74B$$BAL<~DJW~(X!%=GUHcEtZ(8fxrW zre|2r4|`VQzl529-Ngisim|&{+3HefMzq;`^mBlIjHAtbXfrGeHgGN!InW5m z>evD{E0tAaWjTDof6-Y{PEf8M`fy@$ayup^Cu9)7Ic8_!bYd5_2Dlos7UF0%Gid|( z0qmhJ0DG=8&1`Gv;04YE+Fc=sF zd=2CU96iC7a(o?Q%V8S}d<*zMXTGDQJrev4kP3_dz5_-9V*opE5aSS-1Iz_x1JeN& zmfeA%Q;cLc9f^_8^m7$c2_F+A^1JG z7%G(qZ~<}wToXCL@rY-^W`wf?Ccp_`D~;ekz`q0Zajc<_2!8_p1USF#gAmAufCA9b z0e&cA3v+;nX3=xQc4X#?a8ba~E9}7{u(MXoQ7QIR0mS78*sH77IO);gxw0@t)n&27H9)-lkNiU0JH}fM~z`V z9c0qj7c2B=7HsWVK3!sgz_C#xaS z?-9Zefxgn7gz#gaAMEj9`FmZGSaV#-Xa5v}92k=Tk9Z&s;G?=2AR34Q1_A?sNFV|T z2l@l4z+!-1IS5Ds*ot95GB6zA$NIt29ts`;qyV}PCIKB60nBV6Fb^z~6l|s^m|rq$&V&x9X$X%8CIgdz3BW{P z3NRI5?HS(?1u~QC$n*v<1L3R{WF=+;vjA3t>DWL=;R_I+4>XBJMspEh3+90x89I7o zDYO;9a$wnC!edTAz*VM&=zLnK*d`Ccc~MTaVJn}0Dp2fvne6ytge^J|o2-mU7?o7G zl8evTGT9Ss@q=vGE%-swzn?W%{=^?V6QG)QLtafJQ778Nr(T^4HdRSs^JL^@1%DIn6tf`$7 zU#E2aRQRy7u~!YRT3%S+2MnT@C7Y}G_KZ>kUq9Z7T#NJ2mJ{9!E2LJfGRhVT@0wn| zUcT7CMcK28uTsk>I-ga1lom!Yj@$viLpiIsdOtydWsva1nR6M%+V=8Nj216%FK=XL z!e@L|px@2FO`Sabp2!%HeOPPXN3JCs()3?zmI0}ktO?~%%Bz<;tRDn0Ke*9{w(^nu)kD_ltP2wNuN$PA66+) zy5$hfN9*Px!gvXJ{UM59!suqtF4|sFT$R$B}f*qVT_rChiwev|fnO zv=)oqwAP5LmzAIri(T}YUu~uJz|&Eo!?e0$;BcSHBdk}HRO217{|Z)s)(u5OxvNS^ zd?CI5Ri%IN5&87AQSPNe)2D~FQH;L&h#NME!&epG5>*T6i)hyLdPlD82zEv0oZtFL z7PzK(l-moBVrW7KEGI6vkV9pUHl5}67M?ZWiE3;Ty|1CVI*Do5l-9;w;^8&aXuPO) zU2!YX2)}&e+HGC!&=R*(hYM**wHCA~BKlred}&LgUKUt(PmWA3QJ`oSOX* z!_mALoPMGCFAK3+hO-AT-`hBeGuIW@;G6cFR$dv-^8-^bRt8jqjRbGRC6gF&|UM_np3R&#ja9 zQ8l__u4(&E5fhduc7>UD(f2}}yo;1~#mBp-PRH{4B&hrIfsLo~)eJ{UY;0`Q9N~Qr zo&HL+ya)H?!cObIv{dWD;o>YJi~slCeL)!SD}}XQ%&e%LXHs*t9y&PI{dI#cWAZOu zr|(<7`p)C%JjIkvytN9}zKJrKibzhKZF z&xlK=crB(T*VKPs%Pfu4Ck19gt~-vIpi9L$6aJevXwycHv*`R#si7oP784$#&wms9 zAL0%(&0VkVy?guTulCvN?_@+z`+Ir&7?vT1H-r;8+KML6qYizE*&$pWp>NMg2iFfD zyxX6uW&7grNYsY|is%k1k<&x_g?y?@(MB&8tQ&Ovi(eTJG3AlsTB`;;u<@iu?5vYk zBYV`-FCI-0!%Ey9*{_NB%v%S)#B}oz_mH-Dl+1l~lZc-2ftBWc@fa!ce~((s5mi9N z*Ga#DeU^N>Hg#wHFMdZvZ#dMvAuI80X5vqa1ApE9#UTSRTxDaN)`a)YUpx6r%tx^n zNo(b=qSyc6lc{M1i#Gl3i$giYXr1_LYU!_+byB~?SgMFWzDNCA$h5Uuo!Pc{+Lj?- zJkE(~kCFLHEEz7O#*gYA-81j|U6?k!k>jrNyNnq=dGndld5V4YB_@}z82%V{vf{pC z)?-Z0D!$?jxu);TCyGyrhFE(!+21V(6s|UHY^s(}+tz}7MQeJ5z=Ipws2(T!jA)fJ zqY$ zztXGa9k{H**CX>6L&b4C;}X&j7_E%SBH$TDTa?pV_%iCq+~8;JPQwv*YOk6&xr-P& zO!m{OKQ2CUZ_gGlj%hh*JN6t=@@K_O?0JSgZyCIBz)h_lbAI;JqQkiVd)LGbpgL}Y zZ;*{~kI3~Lxt*7OU00XOa2Yjd5BzY*@sJ*|K^c)R}@W*$|F%a?o;?8rW zRf&;kHRnf0yRe~c$5%#I;P|55o?6rvYhEBlr`nETwOz`%~>@?OyzqTO!Ib;JXt#Ag5gg;FJFfjat~vuYjTm4QXKwXEKkKOPwtJMa3L z%ZhOjJn|!}sEFu@*pP&TgzQs>h0Us+tQZ|>Yt$8ABW>~eb@f8iQvQtbT~r*4iPdJQ zXNB>VQm72(3J%TE>)nT;;fI2!FIS8=q2LCd`dSo!rMR^%Y}LEBZ`Z?z7UW%IQjGjx zj{UF7t~{>Fs`+1@b5UGSR6v$T7Re=Ly}$)`+)GwbLCwsoERqO#xheuFZa=Y1EtgSD zBqhToL_^UuqO{UnQY$kTvh1~TK{PZ})Zh0!iy?{2=3nQAi*QUyzT*MtDVy{KQyJ2!d^v(*X~o@n7Z9AZylHz4mxn%|Y#Hj{K9 zC4r8CUjv03>&>|FV=nit7$T9AX8SB4oTHtoex=D(Q}QMCNf2}X*hogBmzj~IbwtSH z;)t1+veAvVc<Qz-*6RR)q#U9w8u9t%g~^fD7nYaXEx|#Y2`y#e=t?{V-7;tU`hd|5Hpx^Zy{Q&B)?iLitld;PJ(_YRRe}_4byg{&Q(Y# zRBy>2VTaymh58E&8H7n8t$VXb|PH*)uFQS#x2_y zlXNM+N`goeDX)0@M!Wiw+eN{i?E5gMd27RQG!LF!BV?pAl!^@4SZ#6V5BY5IzXh%dIBIwg>v@AZwoJfbs2XJJOPDD zW+~Llch+3{dHREpQ3?otGcI+C$(WQ9|K^w%hk2boEDIwU^m26S0CILQC$D;X9GNKf z!Sn~gBOUC+9G!Oqfv=Cz7c;x}6oV54i}%sOJ%pUo&MQZ?4XS?^O%7Z1ldJ0dA>Ii< z+5__OJG%wzm8UeI%~Li&Dgog{Z~i{0g~!X8MP^QKD3G2V(^gFwHHUM`#Y3N3KzNYx zDqdji-scNf4hi%QrX_uuoghR~eqZJ$w2h<+)Ls32HSy`mN&ML0!04Q;T{cCvHWu9@ zvM9*v~ay#0qr%CTe);uWBCCVNI7*c8<@^JR$@$>-mS zq?NF0J&TfUq@>k_=^2an!R1K;!s=`R;lawMr zWw|TYTm6Ucj<}J*#Pgyl;%Sq8Y4=m1lTaK@SMCEx9j6}Qql$iR?&|lx?cOo!_7vu( zA}dVM+*-j&%mW{`P{|Ks#idcDM+zlAq`jD`hk(&^x-}+19@EYeHVti6@HxU&{uD#-cM{3h4Yw43%iX&Fe9Ah!d%24D(~C z8co>FygeAZCSObDr0T{Mx_JT{I4nN8zI^Pqt7e+N#86Z-(7GOj zUwna9Ein0V{HY^(x6euVO~C|Tstqf8#*dTab)*l=?CHJfHV(58d;ECrB(EcBqT9w& z8fVolmfV`7^ob?U#~5Y^I&&A97LvWAVqTv%$}nJgLM%-JhJF?>xN5(#z(F&=`1Ya#fst&ArD9HfpVHT|y=i~JhGFWQg0-WuRL%MLF_x|jVc13o zDAR0bsaF?qnBYH_=03rssV<{Y1xp84(c`GK0D6k=X)~VEEI=0OQu+#x<7wv*VC0Nn zlMHiPI$riIt$yuuJ#^JO))MoQ%g!6WrT}>IgxI-)+3mpPmQb+1rQY?xvfGNF&n!V2 z2fSVyjDBjVaH3Xaj-DAYZL(lNV$&w3n1P_m^_-smXG+TI`ELiVx7bwwq4Ly(fB#>b zWzVB}iMv)EhKdA>&@OvoodwsDdg&jqO{0PK=JrD_aBl|`pEljB!IXxjinOl>?RLbkvc@!>_7=3ZplXltJIBaj7)_ z)pn&+Ulj_rD+{IHgK;^>M~8g&ZP|+c5emmZcpU+eN1KTeS4RCgvim><0{5)ASkWd) zcIjDv-}UeYFgOkGb?z@-AK00PN}e`CgTYBOWC+$_ExugBOC?%} z;poAQ`n#>~kB;&uH3@*UvPTXRK1d?(p|G-Dz~lk@$*U`3Z=4%@J)c~Prp6Z4+;@SRHl~UA_ZT49JY-p~ENn2tiH@?Dze_;I6uPURf8J&XaAe^2~ zzgA;+h$9UtlYfx0@XpmP`HuYbDHwY7)l4OyJ3^v;h9#E3hU!$k4`?l@e z+%Uon;8>g=H;tbmZx{UEos#+a#sX{?!qLJv9|Ak-&D`s6Q3D1L^eZzzC`MVEBh%RWMB2U6dJ4yzD8o%AbiI(dE@5UjB=QQsP* zS}rE}kZx?mxwF=mpPrO%PW`;$03uYqFMo2d0Y^ejRA!|JbjP}6rKlWHZ^VI>;u^L9lS=dDrEx(5YzyFx%5~p<^ zn4HhxU2b)*M>qL{mU02pY9`rWhaqm9B~Qfz>&|=aLJFz{i?`9jml(E7Ct6{BG;klz zjfOtS=4IEYCyl*t!nRl0D7h zpluEhcfb3YL_qR+;{oBy^efK#v+jk0VhJK$DIz~Bci5bbytT>*x0Ig1Y2 zqO8uMYFnnGN$pqw|BsU}IE$XN;}eiYCA?HHl=iUt@PzgdUBMR{gR7ki z-&q$U{r25%^OBiwWel{j#~jp%cz`@LY=O0B%;zCGVc#_q`6-PP*ew zNIQr*srRF18#bEO2^Ko}Fk7RbiH#~zn!)i|FIwji~8GPk{dMxNokFaCfU0(TI1@(5hsptrAc)V-^q~=B|LVzopste7@rBl zI+Tp8Fo$aFSb|WRLlf*FeYg3v(jM9fnorw#9c3jiVaSs@qCI*6d7>1P7swP-I{Nf| zu>T&`43C_C7*oYmN^#mk*}x;(4O-IG^T2pu26*Fr1s>2Wq~eY&OgOfX>Nw5wz~tsU z)$-9M{hu@CcL>t1{f~v@>i{j)0)v}#rsK5%{w+k%f*cY?^F^}PDme2=+L<;f%K_mh zuJCuxi)b$T3OyFlItNIq^7mg$@-GrBSwagOSr1|D5-N7YdDw4D=(HpFyt731t)Acf zaPyl<*BO|Jxs--dGy;=*tyZ%V=l$^W zlb(Dm>1+>oVN}jB-^`^F7mNX&v=&icn@b@g>YH7Pg+Wsc>A=abf4Gj z@iwFr%d201*a`hYbLk})lrkp{$~ZX+U7gTt86~)a!={gcjw~n94I`dhPI@=u z{jmWTPL$_vD3zWVNEV<-O{d*hfFh6sxwylTL9@Nx;l-QQ9OBj?cZ{a+OI7Y{!M~#~ z>&$fe=YvJPnu;@zRd#HXz7P#~@K7AxF8h zQ9_RMP4sO6rkqD!i2CFD)~*UO5KVe$;V<3;f(;O^c?4B%IrQxo1p%?hGLO=_!@xS^ zQJ5!OoqL`fux8A^S#xLO8&f1q=_&&DQ4UN|2MnH(p6)m9$7vHxYk|SnIR+b$M|Zo! zJ`mbMUPM`!N6TLX?PeRO=tWGgoLbq@ofp|+q2ETz=m8{H_*WZ$yq)n8KkgJ%R&Upqfc?LPzw)4995|^!txNv5YK79G>jHXqhs6ueh zqXbWIn7xTgJ>j31Z6eVNmi3E5ee~AMVwddh`~X{Vbn>$^ePMwd3@m>PwJ>cCToWkbKc;%XCd|X0g=E$*^EVxzfKkU#Z1Mph(Men zCFW3}58RPVK_~1jq#EAs5xVi2?q*RqEOT%FyXeOE1yG*V2QEw z$!0BYe^f}Gekd<&rAa8oTU%vHC$5S?qgiM>iISv|H$S9eKlHRJqN9E+%%X z{dU=4b7tN6K6Zq@PLASWSTkXVZ0jwazO!kP=@$z*%J}udd2=tCs{=FfJLsAYgU{SS zPW~w8?w|;icvCgspKTD<6q8E;MwCN~14RX}sRDK<%k?mBO^F-@_xCg{XuZqrHS-4W zl@h8#H|OcV;8U1)JLhn|@!-d13?;Mn-%Wi3L2Br3`If2Y@a3z;P`&&J(=W)|-#>mg zr2)ga>A@6I3ZmX}kIdDy3xAz|>v7@=^Oz2RaBl9u+`DMd$v(@>km)7V8WO4bzU#*n zVy>#KirD(Hk7b{~S~D&$yRF3+W->yl?3TvfSg^R%X7^rf*A!c}FQrRdWu1Xx0~T@* zZawQT`-~?r{DS$#QZHR8+2AQ`xcU{d?%E`q;Vm9!0E0hvz;YahzU|TX({{gqSk`(l zZt`K6f!s-t1*9V&_bzIt-fDAMey@mLzO*8UISZ+!v=gMGGJw_rXfrJ5gc|Og%U28w z1TMl>xMoJw9!s{oy=AnG#ZL-u7|#E=Qx|@mkwXJ@$UdZ~0^{nom#zdc-MpqTnuh$b zS60LN!-m@{W0&)=sq9Xh&HyX4GA9ilqXxk*U&hN1F8`6@*@N0!49OBKq$__g*|cDk zbJu*09-w|t?(F;5b)B#JabLsl``{j)r||neI1P+OlY-e)+mVXu)F(K$7E8+LQZUlU zyfS(c%yNYJDU{O->-u_`-0z^Refw8etY4tDfP0X3ahCh(R4*i)?)&9~+L3uxRUrju zo|rL00CB;X%}i(Gl2835m?0DQlh_-U^@h?nxH>Dcjm?rXW{mgtQxq`taPke-s~bjpmh_)qo^Ic5wUAb6me)ArXh zex7y5>&%dd19X#fHo06juF?lC7gpxv^ZhNJE@S7SnO;ufaA2$gMt9KY>SiD0nmy*S zis7$0SWZ#E5KflU>%&=(mKT7@*H8Lql+W99J|nl6Kw;TuvITT{XGF@Bf>pE4YjVqH zbd!&902ub@+3zc>?xU=}-fPBCXy{`rarSS37L7jX5wu6UVY}@Zvu!JEcB%po>7@Sk7v^h-Wk*H5Dr)u7F@?kkg z(j=50xwUe}CG=GG_OlPu$`QcKJxu*y#vH5zCY}rB1Z2Ox?r!#;N|iso<^UkBfQ-v5 z{Pdn(B|m+TH0-ZAf0&k`uK;~{hN8T7m?}^g@1Y0Zf;rVrzqKv2^P6%HzEcICzG1-B z9-%fP*bu?~2#p@WdJ7G>5nR3`mk8hu_>wBYr8piRRp|tZy$`%K`jK7S9+@H@t7&F` zNy!{jS^1-XF~c`(h(6 z>G{?cX(}E-?*XRR$OCA+`QmXtq2t9-OPqwqdXRE- ztD-i2^W*ZenfOz+cSM2HQdM1kfgXTx_mVny)zF_l>~T_sJX56Dv^m143b?9OR{yD0 zzrZmks0#4F#1pbRxv?YugZ#6b_Q_-LCE4(_5)d4>!Xl9k_K9TS`e-B%+}CcfE4%Kr z_|P;UVB^Ns*7TF7hBj}H;KGB7lUe<@1kim;U8A7;2KAO{BN+TG zjzmJKB#MPJlPVgjj$*#^Jh3=9)kVR9CoD4BJTawv@$Zpp7LC;>v^!ck@pt56Jjkut z*QvyQNlBNxN`20OeceZ%s6PJ~b-pGd2F0E-e$i`1YeW`~AKaqX=FK~XdUr&f!%HsD z?l5qO^Rcd|^No3O=au$zKc6;ea{wCJqk)!Gd~kHP->G4!bCeKP}fz7rXpFnU7EMWtV4(k~;K>pbbBq@2tX|3S$mq3s(+poZ}DnNy60 z^mxs_FVk9W2)8rV1j~G19FtWTyTi@#De7D=^E-}d^VBw=vK3~K`_M0Yy*6sVtlmGm zg~>WC;A;kVHuIvHucsj`EyXZB-bel&QHWZVe>`NaO1~JQ;%GLGbaiZaS@Tg04+#Cr ztjDl7MLd&6*^zQGm^B@m!M4%rx0xHI&A`V-@qb#fq>V-Z8noS(M+Z zB`(>JZld>FXl+T`OlxOljK^=F(&KUc*;ea7uFbSL_*Q#CGwtdYQw+(;Uie&a9Gx#> zVr*i($qO%{@D40JY06YXx>x#~>625F)6o`hOfe*Tr6;GFjPZ%_8EM{W##B?PX--C&k5kfk;Y9Jl%Q9L^^PgxjE{&Jn`vX@kV2+F+Fwi z>+w_gkm+e;_>{Sj)hBEyC2wbbBK9!KEz)y?PR{>`w?qSPj|4F zDRdi~NJTqX6d4b&(HyXfrX6J6=vXO`rxmm5^h+^|XqlLtI@yqHnwpeOeRr|M=H7U% znv|GQc4`-EDU_w}VGfq$Q^xGdelBCHEa_u?W)$v zsj2DlUhyfjk`m^Sdosj)+FTnvr@$xYkjfOe(wEYaYmRMKv z$$(`oZL1ym?620H6$5CbFEl3G#%sT^E>vu(Z9`9^nN?YzO>70T2&UtkkwEwIEBj+J zyJShh3z>7-m*p(FV_EDuc2SGZ_m3RMT+5;_vawENx0>0P)!t*hn+*;z8IqD`gZ7m4 zbf1J&hyXYybLKx(+%WqV4a3O*KCT16pgfc@$e>D zLjQi!ro$~e+l^aoTs%H|o)2r=Sck<|>85>wZq+e=`uH)b4)>UI?Wji*Ggj ze7U71r^Xr5r+QD}D{A>_5V2mztjL>~58eG7)#~G{xeJF%^8_mOI!H}k0n~0B^N9M# zxRR29ES1t|k}&)kv{(A9M6Wo5$>259m{d=?{{7q}NxcloX;Tf}el%kO4Ai%pX}kTS z3#dLv2I|6&qwL$q>{hd~3vIQpv~PJu_J5jMkp^_ux>J^iwo|JR{>3!>JKagkzmn`k z8#`-1ZYh034XwT|&rq%X)gNDm28UVBA7b36{^auhxR}yW=QH-HKeWu?A7I13A{T|^ Yrykm#F6s|9)t_fRD`gj3<)O{{f3E?Az5oCK delta 53624 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 H###RZfo-3w diff --git a/client/eslint.config.js b/client/eslint.config.js deleted file mode 100644 index 8ee6ac6..0000000 --- a/client/eslint.config.js +++ /dev/null @@ -1,30 +0,0 @@ -import pluginReact from "eslint-plugin-react"; -import pluginReactHooks from "eslint-plugin-react-hooks"; -import pluginReactRefresh from "eslint-plugin-react-refresh"; -import pluginReactRecommended from "eslint-plugin-react/configs/recommended"; -import globals from "globals"; -import baseConfig from "../eslint.config"; -/** @type {import('eslint').Linter.FlatConfig[]} */ -export default [ - ...baseConfig, - pluginReactRecommended, - pluginReactHooks, - { - files: ["**/*.{js,jsx,mjs,cjs,ts,tsx}"], - plugins: { - react: pluginReact, - "react-refresh": pluginReactRefresh, - }, - languageOptions: { - parserOptions: { - ecmaFeatures: "latest", - sourceType: "module", - project: ["./tsconfig.json"], - tsconfigRootDir: "./", - }, - globals: { - ...globals.browser, - }, - }, - }, -]; diff --git a/client/package.json b/client/package.json index 2a5da18..d462c61 100644 --- a/client/package.json +++ b/client/package.json @@ -1,26 +1,26 @@ { - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@tsconfig/vite-react": "^3.0.0", - "@types/react": "^18.2.56", - "@types/react-dom": "^18.2.19", - "@vitejs/plugin-react": "^4.2.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.5", - "vite": "^5.1.4" - }, - "name": "@appname/client", - "private": true, - "scripts": { - "build": "tsc && vite build", - "dev": "vite", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" - }, - "type": "module", - "version": "0.0.0" + "dependencies": { + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.10", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@tsconfig/vite-react": "^3.0.0", + "@types/react": "^18.2.56", + "@types/react-dom": "^18.2.19", + "@vitejs/plugin-react": "^4.2.1", + "vite": "^5.1.4" + }, + "name": "@appname/client", + "private": true, + "scripts": { + "build": "tsc && vite build", + "dev": "vite", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "type": "module", + "version": "0.0.0" } diff --git a/client/tailwind.config.ts b/client/tailwind.config.ts index 5153a2e..2c7912a 100644 --- a/client/tailwind.config.ts +++ b/client/tailwind.config.ts @@ -1,4 +1,23 @@ -export default { - content: ["./src/**/*.{js,ts,jsx,tsx}"], - plugins: [require("daisyui")], +import forms from "@tailwindcss/forms"; +import typography from "@tailwindcss/typography"; +import daisyUI from "daisyui"; +import type { Config } from "tailwindcss"; +import twanimate from "tailwindcss-animate"; + +const config: Config = { + darkMode: "class", + content: [ + "./pages/**/*.{ts,tsx}", + "./components/**/*.{ts,tsx}", + "./app/**/*.{ts,tsx}", + "./src/**/*.{ts,tsx}", + "./index.html", + ], + prefix: "", + plugins: [twanimate, forms, typography, daisyUI], + daisyui: { + themes: ["light", "dark"], + }, }; + +export default config; diff --git a/client/tsconfig.json b/client/tsconfig.json index 22c545f..74fc7d7 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -1,39 +1,57 @@ { "compilerOptions": { - // Specifying ECMAScript targets for the compiler - "target": "ESNext", - "module": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], - // Enabling options for better interoperability and module handling - "moduleResolution": "Bundler", - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - // Configuring behavior for JSX, specific to React - "jsx": "react-jsx", // Transform JSX for React 17+ JSX Transform - // Strengthening type-checking and ensuring consistency - "strict": true, // Enable all strict type-checking options - "strictNullChecks": true, // Enable strict null checks - "noUnusedLocals": true, // Disallow unused local variables - "noUnusedParameters": true, // Disallow unused function parameters - "noFallthroughCasesInSwitch": true, // Prevent fallthrough cases in switch statements - "forceConsistentCasingInFileNames": true, // Ensure consistent file naming - // Improving project robustness - "isolatedModules": true, // Ensure correct transpiling of files - "noErrorTruncation": true, // Show full type error messages - "useDefineForClassFields": true, // Align class field behavior with the standard - // Configuring project build process - "allowJs": true, // Allow JavaScript files to be imported - "skipLibCheck": true, // Skip type checking of declaration files - "noEmit": true, // Vite handles the emitting of files - "paths": { - "@root/*": ["./*"], - "@/*": ["./src/*"] - } // Allow absolute imports from src. Create a path alias for the root directory - @root + // Specifying ECMAScript targets for the compiler + // "composite": true, // Enable project references + "target": "ESNext", + "module": "ESNext", + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + // Enabling options for better interoperability and module handling + "moduleResolution": "Bundler", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + // Configuring behavior for JSX, specific to React + "jsx": "react-jsx", // Transform JSX for React 17+ JSX Transform + // Strengthening type-checking and ensuring consistency + "strict": true, // Enable all strict type-checking options + "strictNullChecks": true, // Enable strict null checks + "noUnusedLocals": true, // Disallow unused local variables + "noUnusedParameters": true, // Disallow unused function parameters + "noFallthroughCasesInSwitch": true, // Prevent fallthrough cases in switch statements + "forceConsistentCasingInFileNames": true, // Ensure consistent file naming + // Improving project robustness + "isolatedModules": true, // Ensure correct transpiling of files + "noErrorTruncation": true, // Show full type error messages + "useDefineForClassFields": true, // Align class field behavior with the standard + // Configuring project build process + "allowJs": true, // Allow JavaScript files to be imported + "skipLibCheck": true, // Skip type checking of declaration files + "noEmit": true, // Vite handles the emitting of files + "paths": { + "@root/*": [ + "./*" + ], + "@/*": [ + "./src/*" + ] + } // Allow absolute imports from src. Create a path alias for the root directory - @root }, // Specifying folders and files to include in compilation - "include": ["src/**/*", "server/index.ts", "server/services"], + "include": [ + "src/**/*" + ], // Excluding certain directories from the compilation - "exclude": ["node_modules"] -} + "exclude": [ + "node_modules" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/client/tsconfig.node.json b/client/tsconfig.node.json index 1cbc80a..a4f1214 100644 --- a/client/tsconfig.node.json +++ b/client/tsconfig.node.json @@ -9,6 +9,7 @@ }, "include": [ "vite.config.ts", + "tailwind.config.ts", ], "ts-node": { "esm": true diff --git a/client/vite.config.ts b/client/vite.config.ts index d60e3b7..68d228b 100644 --- a/client/vite.config.ts +++ b/client/vite.config.ts @@ -1,10 +1,10 @@ import react from "@vitejs/plugin-react"; -import { defineConfig, loadEnv } from "vite"; import path from "path"; +import { defineConfig, loadEnv } from "vite"; // https://vitejs.dev/config/ -export default ({ mode }) => { +export default defineConfig(({ mode }) => { process.env = { ...process.env, ...loadEnv(mode, process.cwd()) }; return defineConfig({ resolve: { @@ -16,4 +16,4 @@ export default ({ mode }) => { plugins: [react()], server: { proxy: { "/api": "http://localhost:3000" } }, }); -}; +}); diff --git a/eslint.config.js b/eslint.config.js index f11c6f7..ef3026e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,6 +1,10 @@ import eslintPluginJs from "@eslint/js"; import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import pluginReactRefresh from "eslint-plugin-react-refresh"; +import pluginReact from "eslint-plugin-react"; import tseslint from "typescript-eslint"; +import globals from "globals"; + /** @type {import('eslint').Linter.FlatConfig[]} */ export default [ eslintPluginJs.configs.recommended, @@ -8,6 +12,7 @@ export default [ ...tseslint.configs.stylistic, eslintPluginPrettierRecommended, { + files: ["./server/**/*.{js,jsx,mjs,cjs,ts,tsx}", "./shared/**/*.{js,jsx,mjs,cjs,ts,tsx}"], ignores: ["node_modules/", "dist/", "build/", "coverage/", "public/", "**/eslint.config.js"], languageOptions: { parserOptions: { @@ -16,4 +21,35 @@ export default [ }, }, }, + { + files: ["./client/**/*.{js,jsx,mjs,cjs,ts,tsx}"], + plugins: { + react: pluginReact, + "react-refresh": pluginReactRefresh, + }, + ignores: [ + "client/**/node_modules/", + "client/**/dist/**", + "client/**/build/**", + "client/**/coverage/**", + "client/**/public/**", + "client/*.{js,ts}", + ], + languageOptions: { + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + project: ["./client/tsconfig.json"], + tsconfigRootDir: "./client", + }, + globals: { + ...globals.browser, + }, + }, + rules: { + "reactPlugin/jsx-uses-react": "error", + "reactPlugin/jsx-uses-vars": "error", + }, + }, ]; diff --git a/package.json b/package.json index 274bc72..306a316 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,9 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.34.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", "postcss": "^8.4.35", "prettier": "^3.2.5", "tailwindcss": "^3.4.1", diff --git a/tsconfig.json b/tsconfig.json index dc9d5c5..c7b989a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -38,11 +38,12 @@ "@client/*": [ "./client/*" ] - } + }, + "rootDir": "." }, "include": [ "shared/**/*", - "server/**/*", + "server/**/*" ], "exclude": [ "node_modules",