From 00e862e016e8e3a7f4dcbc430948ac0bb70ae97d Mon Sep 17 00:00:00 2001 From: Andre Henriques Date: Sun, 14 Apr 2024 20:55:37 +0100 Subject: [PATCH] add ability of to create custom token closes #82 --- users.go | 29 +- webpage/bun.lockb | Bin 100603 -> 129378 bytes webpage/package.json | 9 +- webpage/pnpm-lock.yaml | 2115 +++++++++++++++++ webpage/src/lib/Tooltip.svelte | 48 + webpage/src/routes/user/info/AddToken.svelte | 132 + .../src/routes/user/info/TokenTable.svelte | 4 + webpage/src/styles/app.css | 15 + webpage/src/styles/forms.css | 6 + 9 files changed, 2352 insertions(+), 6 deletions(-) create mode 100644 webpage/pnpm-lock.yaml create mode 100644 webpage/src/lib/Tooltip.svelte create mode 100644 webpage/src/routes/user/info/AddToken.svelte diff --git a/users.go b/users.go index 5cf633b..acdf69d 100644 --- a/users.go +++ b/users.go @@ -341,10 +341,37 @@ func usersEndpints(db *sql.DB, handle *Handle) { }) }) + type NewToken struct { + Name string `json:"name" validate:"required"` + ExpiryTime int `json:"expiry"` + Password string `json:"password" validate:"required"` + } + PostAuthJson(handle, "/user/token/add", User_Normal, func(c *Context, obj *NewToken) *Error { + // TODO handle this for admin + + token, generated := generateToken(c.Db, c.User.Email, obj.Password, obj.Name) + if !generated { + return c.JsonBadRequest("Password provided is incorrect") + } + + _, err := c.Db.Exec("update tokens set time_to_live=$1 where token=$2 and user_id=$3", obj.ExpiryTime, token, c.User.Id) + if err != nil { + return c.E500M("Failed to update token info", err) + } + + return c.SendJSON(struct { + Name string `json:"name"` + ExpiryTime int `json:"expiry"` + Token string `json:"token"` + }{ + obj.Name, obj.ExpiryTime, token, + }) + }) + type TokenDelete struct { Time time.Time `json:"time" validate:"required"` } - DeleteAuthJson(handle, "/user/token", 1, func(c *Context, obj *TokenDelete) *Error { + DeleteAuthJson(handle, "/user/token", User_Normal, func(c *Context, obj *TokenDelete) *Error { // TODO allow admin user to delete to other persons token err := deleteToken(c.Db, c.User.Id, obj.Time) diff --git a/webpage/bun.lockb b/webpage/bun.lockb index b93f148886ba3bde78ece8fd5fd1da072f7ded9e..ab72073e27a1a432434b2f3bcf4a7a4e16495a05 100755 GIT binary patch delta 40286 zcmeEv2Urxz*7np8WK@zOf@CDACy(OK3=TPCXr{v+}ms1Y~?fidWF2r7Yg&Phs6MNu<# z#DqVBk^+BSQDIV6VfUoGVPzTT# z6=X77(DR^bidc_;J?KPG8_-@7Z4FBCK@x8TN(IP4EkIwwAZnrP9=UnRXq@G+l4_Qf zl+`06MJ7wl?VO*HnIdyX?W#a-0a_Kb0;mb-OCyf}87Sq~miWhpV*V?jlc#tGd&CN;5M&8ui?ry1B zy=1*0r!GxVr}oTG%9P16A)tcVOBs`rd*oyxgDZHlw7;3ymmSg3RP#6J2cin}55+G> zJdGiZ!J0174A%WfM+T0z70b!(k&~R7Qz%pCCS|3h=E!7;c4AF(GP>s^rO9N%P=x{Z z7#LKO9$Cr4Ea;7jWEa91$Z7PO)s)H5SjBxog}w)+nq_3Ar{-kjx@Y97^Wvm}tAUb*n_wvos+FLmFgGbhD7br02F#JkW}~K*?wFHE zcY;#-w$7qKJmSf)*Wf9C_tcy&sopZ#9q?3}`J!^>y zw}VoRE=U+gVN&-@SyE1y?4+FB)RvH=8`Q;7 z2vECcbjj+GgN6(TPt8O9o0OR=llzIh#`&aWWTm*ltL%rI@@sT4qvSUTTWW78wk|r{?D8Wx#;c+@AR~ z5}krX1*y5&IjJyIAL(eW&W4-}X5gvDBZEc$k-IomQ+g!lH|FmVK@C*``q=q~-i zQw5qU#q_h4TvuIdwMV#Eel^ex%X41fF`juA7+u5Gc8#tM$Zs=cab=MH6*YeWCv9;=-iN%#7ST*;FK?g4;I`?S>~# z%}tichC)saSj9%9!uUY_hBXu$Fjp!dQA#%$apYuE;p?*UkWMl*6LK<4H(FdBjzr01 zX6V`CTL{p4QlqhGp{Ax9mq0_Tb0HSa%%oiE08D&g1stam4X^;EhFuChwxBUcL-gAP z{;E8Ttj|rWQE(9&F#C&JG!=U)0+hV?R>*0AL{AB>0xn8e$7p3w%a_SCEBv2bP-y{G zlcnbopuYaA3+SI%AcYEiV|^4C&VPP^6bIpN*GIHJHEo6F;%M%cnVOHmDf`$=?Awc= zaLmP;rq-nUwOqqv;0ayxL!y|U#!gOZfy^mM)SsJ?19u{m<@Lx*qEX*nozp#|JErpu zDZy!Eqy=y%D2@7*)Lu!M`Pj|%!0rs`)-ILhxs`p3k#UI+KfN25^s29JhiPG>7G(7vly=*_X}({@881LPU(UZ(3ZB)(E3)uHsmbPQxqj5d2PODaSzsBHg-EMw7 zzS6~4f3l{!>&8{SD>vHQs<_W8qs4Dbb=p`pu^M=oD=^FkJoU1ypYJ?((IJStYv^h8 z)0}gYiws`v(li;2&*l;pyP`^Kz6@`fJyRzkY`~}vn^i~ZpWi#>$DL-YqDwbixqfQk zqlt6pRZrTcHC&VK*K!TdMHpr4SsZg*vbd7Cj13pQ4=Fs{%zTrq&jWS;0! z9gaB%$geVPi-%GtTrQK<<@&jV$V=p0u%}YK6~tXBuc5`gGgiu5Xc4F2v}7`@C&h9u z(m6nJ92~rBu@+Zi6QD5GmdX6VX>-grK;B%N3wBj1MngzRkl(T4y6-Lb-l6A##}^x5X5r$`DDp ze*Pgk5pXv3h0q{`8VaE!2t^5@D)5bBY&=4uY$iftx*tEsy1-S5vDpa42zj@CmT6=C zZz9NAASA}lL`c$tkeJuCnx?dDghbgUgv1=$aCKsi#t1bQ^i4oWOm`I_F`WxG5t1zk z3D)cHLWssK2CPh*D+w0HpZtAwF4#(Gti)Oyfk@068OEthp=mey6Ekj$l~P`2&b(E9L$*xFTz%VmLNSSn#Dub_$%JgQkhx*n$hTQOfICa78vsMIp9NG)+*jO@Ms6 z1@{hdPm#n{DR;Bvia^ws+!kAK$ZY|6;K;oLv2)^rU6k_XPF#_TQlWOzR4URoKygvx zgqGGZ!;Mc}!SG~+L=$(zJ2CA;Oc`zWzkU9zT(m*XjZfbhd(S|STuFU zAs9^M$dCAP!Ty*weq52iQqd6W7A=Rm!U8x59E}4VVUas2#R=n0VSorRB`v!#;K&X! zB| zDZ%-3Va_3nJcMZUA+dd+wjln1R(%r46$LBho5WwrD7O_7(X-}uwz&cj?AkdG`R&T zgPx*cfc-=4XO5Jq!I8n(cYr$$t}Zxn*J2W;DJaqvjR}slU=M>5cyQFI*lD1Ru1G1x zPN<5asdUl!jtG)YaWE_eheF7Ip|-b`TyTU^Q4dp;ni$zJGJAtV%aOV0nN{GZ?&7HZ z1g^ahhhEcZhoRV%X1&f*gyLu<%0ESL?;@4*%t$V{u2QiOQ@6RO3v0q_2r-XbVGa#q zSOn*z2G;}}y392|e!MPMR8OfettXSUfDjfr1n3L|hnZOqGt*l(`l{Ay&&@-w3Ny1( zeJ;4ZQqdYsK^3ULMY;zlCW52R(-qqEJ8(4Ygtjr(fzL{yIGK1EeRe@z5hFNg#U_Nr z5l4OU5FFVjY70hZiPlp4l{Vyx8Y&fgAfy6OA?E=7_u#0`RDktomlNAa%!qaj4p1xr z*9vJALXNlKFpY#=OOPgqzB?wwZ={N3NReEss$;ZF*!+nVF8~K?rMT_jI(+7w;2k5t zF=0fffg_6*9QpFu;9#^gL~etlaw`cl(@7-`J8?+121jEwm4Gt@s%z)4lWdK?3Z?-%u4woO@{)>7ge3DZ zJr{x#i=z4U3%JjXVB87o4JKo81$2fEpr`3?#Z<&lrO|W^0u(pE;ZJNjV-JjYnk9P3 zf$DzQ4k@}JCLS?jbGV?NX{5l3c?KwYf%621yM}s!tT`84MX7TIvUXfpl@J|&jOR8& zXe>ga>^?#*1zA{2?7_LPYN6T)bPz>7l`9Pbc{ z74kO14n3L+s~)P2KvO~VJwjrnYg>(yT!h4|+Yl1fv343+V}!&UJVK&**AY?)`f9=D zhWOH-tN@&`~Dq2@ZqQ%A}GP zP9*x&H+XZWMMZKaiiL<3dsmpq;KGm=13*T8Lfkt9b&|=tiW;DA9yl=vjlH*@m=DOfNA0Vd zlXM|KWiAHj5-6wNp*oXsRvm0O%Q!s^)Rca?kV>SKZ>7W&rTA46Pn6c9^#G;Y2+&28 z_)P$%-we=2l;m3hl5Yd(Do52qf*lZ2ZyW_E;W2(I$Y z=mjh2pvu{Tk~%wy+7pB8k0>RnDWxMydYmMlCWs<5^W*TmY{SIrSx$UUyh1x5|0S7v8|NgTa*;EM?59z zfPXXs2TJLQk|D!EDcwj(PL$Rh4wOU_Bsx)|lNeknWt>j25~bh_i7!t{@hr$`3M~hv zd}~2TzFtaClnUGiN}}x&-2qDJc7am-A&Mj_j7bVWK$HHsl<+%HYWj*12ze=D# zf*OK8C*j{f)qh42Elw55{J)>7|0%^^>7~Z1Bvqh1)uxZG4G}?2Z3apS%|U4}T1j#z ziLVVxO&`Tw<@R0pa2zr}#Rvg1K4 zOc1+-Yt+8l|L(p1ckd;PhX37r;Uf`pyts(|@7{}Ag7#pv9RBa#>u=tJ{r|rAvc;hK z!@U4|G;%;B>m(j;0^kqxST|XF4 zfA6j5?z;2j!}C8KFl{w4Wc&V__b2T)_~gMqy432-8LeU!xS$a&b!Y>s$0a2vFa=jSB7s%pHV;Z*mAHEdSLW=7CNO=j5dRIh z$dL)mkeh=4M%>{c3Cx%?9-P3ca2fbtmD@cyfg6^t&p8fJv1;7YkqKO2hQ7LOqs6h^ z9_yAQo9Ja4-8|B8NbgmrW;Jz5dX(_}g;49vNR?6RGv}L^{d~f!ihOSD%6)Gizu2*B z+xackJdzD>UDP&)ahQ~Pbdo~bD9xq)Jm6uZiLOoe6ZaRcOSNl#+vn|o>z1Z3vT6lq z>F(N)mN#jCC-Yhro2nPzj%snCljnokid{WSQrey$x98&}n+vCG=_p>K*i54pR6D|~ z`>H0lOfm+)yjv&qr?nx|El29P9a~}+ditDRe9Ngjsq2p+;{dy~UvB!uM4Xpi6thjoQc7zc}n~-t9osp934X#1!O=Z1FV6 z;irP7zI&1ki1xL3Z(r$2O_L9AwZskiTrcX++>6@P|%ajZ!H_<}>9rs`NncdDJW{&M)}TN$r9 zzq3BB)4Be-JNrIWK6`%ht?%BJ=5E#;?UBJ&<@LIpt8m|Q=XT@bTD9vOc6gTizO=Kt z+3J9g8PgA4IFhh?rmLH?b(2T^`ndFXQTXP4`{QR)n>@%El;F_3dBMZulec%dKo;Ys zxfs;Cyy9NLOXNX2M;=_(rX;V<0<&B7n_TPPzv-Z7^GB?HP(Rcwc)ZSh{rTti4y~TN zV8*TSx*zwb`>lNvGPZj4g=*K?FZR3k78J{cmar+Wc$Omi!9=r{Hoht2s?NjECWhIoS;aFayM}2`A5!m>&8f<9L2ve^92$Ic z^z!SSpD8!popC72Q~juW(&KE-yHrrDEf{Q9UU9Y-H!3;p`7q1-XV+g0tKad|*7d%b zakgi4;!e12dVMy?v)^>vm{;ca7S4)p^1$$;vHH@AHx3USt6w(2W4U1AsvTT=NHbuvfp~< zFU~fT)NX?|rWy7*weeDZ|IniYM)ZoazJI*WA=|QwHRf7I)SuKYUH$rir`kkPOik=i zPO|2V3>ZLx>U2j`u zM0#JhUpBLF`6i|FkVcaar0icpXRp)}G@l*ID~|3~=ed^&cYH+Sr7LX@nOD&tQgzCJ z=yxAhH+?k7w@GRLB|Y+tTEFX?VCWOPV#ra`US$pLMh$k{mi^<3j}51Me0ojL`_b?t z40e)nBhusBIG0!7R*}&wHbBSu!nh)%ZoNLuz1MB-Nryd~Rr)4ldYpWb`F(J;vpH2S zWh|)O``Vo2N?F^J;|I*PnX$aZrP7MV4TjA8v7CArt~4Wo)#C1DB&ao?tx!?gZO)8Y zIAwxg(_!6b7^VkuYrpqB5%eH9X1H%r#VzA46C6X`-?qIL<@I`SZmIq&``{Umq8d57 zzb!sD(5un>ob|)+3uVakia|981qjNt1I8xYYLRed=Ym)MM{Cuda&PVEvA!Nw^WWQ+ zs9PPqt+zDwWG{btlafihZn+thT{+s(^5+8sdvlHIcG!NP){PENW{9T>;sn>6I0%ZZ zo}K8gZrwJcN-dMxbKiBb^IzBN@=D_#;f+hqKc2W`Q={3N7e?Jw>}ilS?cI=;CoV+J z;KpCBG5mh5orb*OF_SYB>2QZSvl!Z_5Y44+ZZ_?}kkvlt>rM~t65eO|oQM;zUOLRL z9A!6iNW|D-6Wc7iUGMer#yj|qPmR_e^h!B@BDC%0N@D|R-&@vv(&S&RVg;drrxyY0 zu2BlAeJN(}2BR%KbDk9id`gV&a6{c|-nsVhoNe_q>jdFz8W zVqPtof6Mr}E$iEfjazu`mt*gH+`I<^^LHZ=X{{ZXznKmHWhXwLF&kY)Qgg-_CnfI}1as$71mcJriz+2UO@+*|G7=5GJNyuxX-+*rr` zYy8#?d-gHqdDm{8mw&fa;bVR6@VT(gsnA3QljHFEtQ9SB_F#6+d1KT~4xa3HFLd=b z+ao@_{O8rRtL&RIZ)6kyTVt9Gx|BS+bLofF*oFRQ`%j!va_eE8cModU_^DI1@b2EH zR?(6N#lrGOpWkUN?cMu_Mcub(keqhy;JRt0CsGgioZqw9vaD~b?H%}jVFoU1_BT(j z_Ve8*g--o%aGH3p8V)GuXjms-`2_Zf7);hw4w4>!!L^>)%B z>soi>p@U(hQA_x0^wQyu_VTbJYi8eD9$?eecSNs#o9B*t>pbiG)|Lx07W}wnWMt)x zW7BZX0aYPI#=<~>HP zi8p`NYJ7#h4x`E`_AjqE%=+P?`RZow@@j3JS`BRMe7u%tn@;-Ajl4!J>a;a~{n_gy zUIceI_jXn4-ED{GbbFcHC|>`4L4~&a+s9U^%+*>}BIwm4gVpqf+s~KwybkUgod=CO zvtPfo*|d|3!`J`Zqu<#rmlaF(@7Ma!v`xZHrz+W}^xr&uAG6J@TC3JBn+F`QH*Rgw zKsV1~Vf}}5M+l0=RVwhaRI?e6XBWxn6=P}wJow_4-Rnc6I6gMHUWy<5`tqM%sZ2n3Z^9AD+TLYoRP zd$0D~I;qWW6T@ac5BA;9@b@0OA5pJy<~lhJdEmV8>>}ONRy(f7J9f5+oqf@4MHi28_iHRZl-;3b zomBIp7Zne#?%Z$6&~`nbiVUXZFZ8ooH1YcC)fb%}z0mx)O`}djK2_}8FlqF6L$770 zR3CR_<1s~6T%X#lJ{XPOG5SWRfh>8^wb0h8$&)%RQCI(|%7%zpRrs9Mf?{!94J)ts z#>`<2!Z)0paoM5YPZwPG4ZK>mr~cmJppaPG{hc0GGf5YqI>CF|JulM#kexqA! z-Z}e5&rR-&^2{q9=y}a#%KQ6?!%Dm=tsP-9O~>g)8@t9c8+Cr>d5y^}~g!f?~{SD2^zvxa@o5ZcDQ-#Sa`ZFFquB$z@RhGg&rgEhV&SADQqtRi zsJ7uv7Fc>A?|ggL36bNC^?iGoj&Yk`@?Aui({q*Eqc=}}=zn$SiLEwnH7=gMke7wH> z&*K&@THF59>;>|i4>Oh38xGlT7wEmb=HWi)KZM>Gx7zC>8@gMtPTc?0<1XbSaC(LM zF@t>Ta5*pL?tk&<;>kmY_&IyluJQhU%aOTHD&F$jHMgEwvqodp?!zz6O)xP#+UC@& zvyFD2Y1FB&a?1_%j7e>pW{clI5tTOJhUelQx=^2cl&fNmxS+fQF1<*fn~|qt(cC?7 zW_|Rz*nAaJaZ~aWxI^GRfQ#j#dnIrMef7B&y;Q6z_ZFN>KYgx4Zxz0#wWN0fcM+U^ zfr_={+7#ekx<5_=z{PQjLflKM^||haDwe=)26q?S=o}Sm!`)0z;3gOAa}6?7tQ}`u zl)y!m=yUl+D%OG94ekv%$3807iR;-Xfm=L4pF0OGiL>jQz_lKz&kgRYV#(YoaC(FE zIlq1?mdcg%L;b-01g;C`)gSd6tj|sCuVNY8O>kyIP@Y=Fx^bmy)DPTCaNW7cV$^S_ zKDVG)#d>g0!MP06=i*9KtS2|81oZ=_GeE_1x#j~NirK>xWZ?KHRCHsNX2qIZVa+aV5i0KX5;RQ*&O!QNPi!bGV9? za5urV9;2_`b}2YL#yhiH+ua#!-@kt{J@Le-T9w+^zS^_w2eU-mz{+y-%<)ORFV3^b zJ2@aFrqedJ9eoV7rd`!tKksDmg8QA5%8jOhG{&V%yJ?(K#Xng$cu;!xUs`6!hmZK_ z$pGJZgM*)#{A|DKgIPwvSe=u%y<*IVwbkizGoee?-E;R&2ihHI^7y<%!QtzNgY3Bv zW6ad5PIG$SiCXTVoi=xE(~}Q3czrrGYu3+8oTk3&Qu?CW+J_^GT;0sIEO)#Q)r11#6g09F~JMrh#gIA2nsY){XCOov|BXJ>uQuc_(_S zW9R7%nsNK)q8d|l66yu)d(bca`fKx|&9;e(DJ@4oy_s-7C+BIq(@O^C6}q~cC37pr znyG7gzfUXCvNegX8dSHZS(EfSOOk6AmYlBm)?ij&bp!Ht!s3sQUm{vM`i>Z$^7oq+*|yIZR@)XsT$bx z{EGQM#~v|HiKrRZVcWCn=6P8!TJiq#wLGt$40f3Nc8GD-`8^3I58rvubr@%+Zd}!D zWd8i+eru{)u8HOzmW{nTu4(smW7ec~t{1&rQFrsBKI{AvE}ZV!tpBESCtA&qEUR~; zICu3N-uYQt^;?(khzCGo+YK*o-L9$I8s2+m8aI930^imX3wNCy^>c7!wIx-4UcjO^ zuk-BMC1?EhC+8!~b>=A7ZGQh=Yp-5|SgY*K-cxsYmQAaB#ds2@Uuwo}7_EvOSzc|x zkfY|OQp`8*s%yWhQ^z0Oo+QqgHE3F_!=T#%tooAqkG~)HDLKP6d-TPsiv6?R8mKo< zT)b+Q?Tw6%4d-0#k@({kZacK5j#07E+?p|%XX7zL#;Vv@E@>?08K=+f2Up4&kHb6z zmp@L$IBqw%VH4m1N>ywk*RvG!Y$7}WIG(c`k9h`e@OTxQ!kq#)c@kz8r()B%5)Si> z$IJpZgY%kzc?NFc1Qnab-2}IIGCaUU6`RAAPQ*N$0uKOg9v3+Yeq<^IZJ(EEU_y-2}II9_lw+#ddS0vr)hKs2{k!T;v?o zZvpBzN5%GYPr+>h7dKbM4svtmqJ9fezj-Qlm}@={^;?Acfji2v`KTYb)cGoQoLd8~ zU@_{qK*he}k`|zTOHe;>r#RzittAng|*{b&c~{isoK{=3c5|-*Y#?EnbP{UZ!F{QjMDT$e>{pC3K4P4yNF(zIn`8uV(mUzwf~;?kwt$?)4J zO@hvE93Ou3ewpVMV{dQ&{yER_b=_5FG5IGZKfAiGr<1v7uN``OkB)qkGp~8B-+kw- zDyoO~@_HT}Q8&hAKCjR=Z0+$r&CC1jxm$Bfio$k;cag1eY%^%_o^sXriF>*ny}w#t zoj-HOl!sk1ye*hZkeY2Dw-8+SYPaaEcAle0?} z{rJk|-TAowR=wM9%1|w>w4|KUJLPNK`Ma`#DVN)Al2yKytNcD7YFb@`sx@a^(DICH z_95`YF#X8B)AzfCr+Y4e?&huCkG~%|;ha;afD>EeB5W(9jNZC=-`SZf>bH2QKK+wl z#n!DdI+&Q7XLW13RK76T#$s$v-iWQuI=D=d-44C{Y5G7;f32B%Xza2i#e3%;+*jOK zWfhk@q~rGYi8c|*C)1Kgjq2XGZ>>J_dOq^1)inL3O!;_$+tGxY)5q7xM;X^GCxq{6 zwrfI3IqM#jx9*pX;bx!WHV>Otcw|px%7_6S4s5R%ls(|o#>?>=v)!L0t6qiW_ZivF zd{bIlns?u#pd-n)&3km|V6OkbsM*qMddHl(?Xa%7mfpNA?VhHjPoAIu=?9%w>mSS> zxi|hy^{Xq#w5a|5NY1lkHj1K6i)UV&7E>wB_tl1?2-|>-hKA1X5+2T8aZXuS&bmkC zt*gCY&f5e#b@j@AMv5_ED`xH+o_GG>n%2(a%v$#hIM~1jx`)-|g=IS2%sAV;?_htEd6ffZdbh~85S{@SZDG>@C-PCA?4>yeGI{IEFe#ZGul+ql*1d-hhKMZ8Pc^*B?82ud-ik zQQfsW=5$@%@7dxD$sxx3x~|fiXnnnYg*WY6Jd8Ja-a344#;c2aUM(1(GUC{ldN&>G z9EsH99&Iv*#1tQ#}1L){;* z?HDz&B3E%zhX1*lXII!AKinm){#DoN8=IGFolo51weV(}_0<7JHjA~6yJn4SlDT#B zsB|z@{BDizuUS_OD836lASi+eBQk#AKx{IZoVw+ewZ<(I*%)GF{p|CMMHtf$_ zu=_}0cSqTd2l4w(nBLrULOwioLC)ocwh#DH<9K@1sJyGy*>2wC z8Hg$48h4AAS7+Q@5HrTT12Jb@i_Ca=4aO}6v0$9Md%WC|acx1Y7`GP08kT3p%WW9f z8N?RGgV@3N9`SN}7!Oht#)CM(`0RMOBa8=eg7F~EFurHJ+y%yi)PnIKwPActyu1#q zM%%c;>J9O7H^zXySrq3oJk6_TN2d@=qI_ zC*P2_s1$p;aXEv%%eRF0l))bkJ-%2pVbY1bb`A$4xJT@#d(4_kn+UIjmH8*}txw=OY(8N>66Q>%5} zF!9aOtbVKaZ7`L8oLJ5PKgI=bjFxFITz&KO`EMS_RH)j?c4(9|F-RS>#iMLx+`VVh@kV)o_ed39m-i+mvOf? zG@)qw*cVml#qBlydB%>eql25dC8^^?#y}KPW@} zkJj!F3YN-Mi;pJ!*9rf=blTLPxQP0y%k}YRp(LZRa0{r6G2o7GyWj(pVoLLO%IFh_ zzg6MCsZaecYe%i1c?@DNd?7_4wZh*cL;e39h16#nlsD!t%bI;dA=Oy(V8%1HUwpuy zk>R(gyAE=RyM5K`9mGdwL77bRw8j6ROq|&Ng@TL43aiEEOa2FIEEO!3tN!mcKfXtV z>(4YlZ4-RdbMVCqjeo&|7xVHmQgbvi8jqT%0b1ev4EoXx{2OJOWk7u7;6GG|&_Ule zTK(4wrk2q>aD7n{FW{qOd>uy#t1NLAJU;;S@| zP5n1zqF?%TW-3JUc-58o44qntrv2Y9Q;W}V{i8z282S{^6h=&IBpO4qZ#%kw)6c2@ z8Fya{`~H-Hf?xVuYVy}Aq81*3`=4KrG~I;y{{yS-pKg9S_xVjf(cscND);kQ17!ci zsezgvZ2w<8AyEI1&qTzj_*d^9(f^n8}IadeI$J<7d8-Vf+=#aD65G56aa4je^Uyj8<{?#C6wCO!4A&B?bP!jEb@d z@vyp8!-*xVshU2pD|dP=)9}W z1eBMak%8@#aA`~FkWVc5djm;`dpg+?DWRbx!vURaDZ*3(BTy=sj9Vtj zOr&(ikPSwdu4G3#J zupJPC0QGep$nYop1SwXM(bI8ARugC<$=o2I=5+unLq=nQJ`bZp907V}3XKW+B#F{F z0ml%gF%bYtPvVg|gE21TGCl*wEWUWqXEe-J2i3y&)shcNYZh?K52!qEs*zlKV( zItaHzn7S)WlHt%r)&^nfE~O-MLpY9}`a=ChKk~+(@GFug6u=cB$vhBliZJzIBq$l< z38VqkhxH_xmn5U^Y9PtH5grCmH#C9_e=^*;%f?DFH9g6Pg!EGdQfLcMji?YmfMoW7 zN|MnJ1n3bo)D5wqRHFdkvLs6Z#h>s*#4D046_i>x2%u-IPD0p4;Y}rBE`(HY z2vA*;ks2dhg|C7Q-04bzySR^Hkl4R5kizQh!!ZnbAnv$FqwM=7x6b1wII3m)g0;rp) zC21g2YsCQ6S|r;Kia%M~Sp1{rBH;m0YOW>#8B-THBPDDq$;kS%lB}5|BLm3o;!jrG zkp5%p#qwPlbK)m3R$ooOt)_?O)B#)pH^2k%1iS!xYmpD&3-|%#*G~ec04j`>)ANu{ z0QBR3>V`Q0H9a-;0$?FPEk`XyEi(uh48Yy0Wt|X61d@QxKr%ohl}2V7&;`f`0Qt^6 z06l_h3_!C!1lWkQWdQj-a&tideZ)^6$HTX(W#mlV0cXGkZ~$oepmoX&pmmM>oe8Kh zPz6{3zA~sjU<6bIXl~GByb^$xKr5gLUF?)st4si%5G6I0$gSa`J{N5LgMU0`4H=IEm7l5GIA&fwlqS zfTlni()9!=y(U}};WfZOU>Gn47z=!khXEA6g#6@`t^kH=2u%Q556J(Qk0j-U%}BTv zm;h*G9OQ&%kZB4a2i6DBP>QEG4X>fkk>>^Q5>UUwzt_MU;4SbD_yu?md;mTIp8)c) z43Gm_fHt55=mHf0JwO3ap|_F#4saK^2iyl901tsjz+>QN;0g8rQv{v?+spglr8pe~>VAe*pU zlV5cP$g%4IpQKB>Tv#Kk0GTd%IvoV60mgt4U;tDGDgg?B6jcOhNjC&2j#iDTfC)h9 zDBcOs?nY&Y7USmCy!3voxHpXXbeOHjev%LCcTC> zfs8=;Xx*N?Y*lfgV72 zpd&z9vw%z>5$FUY0o{PEKn9QsBm1$qJbbdTH{ff9iH8TB+x znnHkjo_dgmXJ4QnK8;0EwLa22=&TmUG~D1h>v1I_@af$xA509Euja0u8#wb=%c^3A{| zU?Z>|SO=^DsK8ag5?~%M7nlvq0%ig;02=?(fvLb0U_3AxNCkLc954nL4U7dQ0Fwaq zMEv6b%1{bW1o1?t0doLSz5tjHECdz-i-D!UN?!YfqlRM;2=P?KL#8H4g*JkQvkKvNgxfN<|Lk4Z8ktHlLt_X zP%E4T$e2;Umlj6*Q$Jn=8USs8%fJ=jI&cjj*)8BEK(mDSO8_Y%l<(&|;J?|=kbkqA zssI0}etrSn_kjn%J%Cz=3?>=11W~mn;%6|Gfkyz86YTXVYU&;qFM>C#5H zD$oY$bU^h$$(LHFKam<@>GpwcBa8q;zyP4z2)do91kkO70?-300J=bJpcX*4C(eKq z;0QPXH354-vz?}GIc?8rn{EkM05xcbYmNZj&(M91DNqeC0myEumxmN4o^FtST~|-Y zsID{@sGgd9-sNQF^E5&_P5b!J4o8!b5|z&sfw*u$3B(|dw%eKprW=qP$U;E_0Y88W z)?5ML{ecjG(gp#Pzb;T-Z*Y0VWZAbAmp7^)0UB`i=lB+tS#7?cGV`$VbN3fdfGn}j zXx{3l$9&v9-92Sx`zkXz(=kNUE&ixJ^I?zqPx`EWMb^>R-Phe4cToH^1Lm&n?dk5t zA2(p;7J;8XQ*4%bCCYF?ByNL2rEI<`Vp?Q;|pqdQ*{AO>>>lEe8LCT|f<+kSijB?iB$KA`F ze`Lk1`NWou?8|0w63teLmGvKHUgn#DwEUI4CnBP0s)cK3Go!uCR2Sf`6M?}QX$ zyeLNVE^y7;At`2(6|?o%ybL_-`K~objQr9O5rF1JmLGM*dTF=zZgpID>3+oci821V z{9{WP27|7`K+A6$5PO zD%LpS_$5a3cJSs?A3u(med^Q^+Gu|=!12R+8sRa4z4Q2 zs4*BcFCh18#I?|+HWyodF6q@&);diD2xiJ@1u+M=KU z=M{n8znpCNB}Vf$bj{l}DMl^URrA91R?-VNzhu(9Qa!vv^R%2{hf}`9XkNN*Rn(OI z)c0KRml(}!*$r=<@^XED^!=BZ#qfJpFm71RH0Nu>qV=`apBqT?3iVD+Z5-_PoF9o! z^>O!c55UI3KpZ={!=pZ~U*OOeFx>`PxExvW}&d@uDv=YcZEiV7J-3cU~=y_@{n}(Y#oFriJI0 zGxw6)eu>e%dfl_`)J|o(h8PPP6ErVp*RNh*eQ)N-~_ml(|( z-ZM6bF80;!e)~&|<{j`?2BtOinsj;hml(}k;^!{u-}SMcV%Q#(uQd-Pw!+LT<|64CSs@~xR8f6yN;eZ z>`Tl`#8g4d?w?8*SFPUY^_Q3m#$ujBuZnH@&X421#8?=^6OixJGgj8w#3mg366KCe zq|QI)*v2{I*B5<>>2Jn=tjfGCHLqRw3ZL)Tcc5_%VZeIRfSql|@2CwgwA_GCGhyBq znpf5L5C5)b^z9h6;IF*geXu3r*O{<74%^Ly8^vPH3)VI7szpM{e@2?~S*B14w`Exk z9=E+Y->e!OT&B4=H=-6~t-NTXTR~8bMFTUyoF7z;#aIqPipr?S;rp+?e>Q5)S;0(U zCX6%ZACivQQVPwRa*@K*-N)12Pqy5gx2000(k)-=3ir~*%8v4FXMfiFUe0O@OCxTN zzt}g-l%>hvSn^LOCmL&1b(GN&v%Wg4NQ_RdWIsIavS0;fv5-?qDHPViy?n9ey}U?4 zvmEYT)NQKmDbr|MiL@1=jcaSEZuutqG}2<$(~`W&n%@O&^4aG6W{ z*5rLHSh3|!Y(Vu<&@#K$bKedA;hsi z(TYc=Ojxt+@?nesq2=LM?>O_;wDe+c5NL_QUpw=eL`P`xvq`?%g%7o2G5){RKwamD zR_<9#9H~Pq)S4MPZ|x$%E-&{W-1*hwcUb+YQS^WL43g$WwII~DKPEk9Ua{td)u=9} zox8WM?3+_T*hWcHA%&*G@8$lx_JMr74fA#=bQKP%itD-wpKcfDZi`#CQf~MZ*3w>9 zoWSIo_}QMUhFKz#kwfk8yHasFc>rzA(7D*ep0H=;mY6EJNI(v}W`|u`gDW`=5NnOi zDD8tSVt+j!5l!1pxapyi=J^G68hNz3W{4PnaThQZG2~nJt?XU53aj5oit+N}*SIrN zAEd&4zf|np=W`dj-v97U&elk|a(ks_=B46}PkLXt3A^gXU$tds6+a;b+y$!6e+2K} z$z5#no5QZ;t!Z*Z59Ro}`;&(%Kn%@_)c*H+=d`&=BNyF8Ru6OMW9%?;$0LOWQiL_h zF0>lFClo2*+pq!lS>etXQ;Iv%%-ZQX?Q%$*S!1N2y-Xm^Gu-+0c9`C`+2<5^d?hpC_8+!B=zu9pb?&9Z-U~z32yQBYS>^CDN^$yx*g9pEhQUstEC`DT~{Yt~vvq+b;Y2WP0k8{KTs_e*W zSnfqKniZQOW}Q&Uw!K6$Y6gs)tDbyaN36TIk%Ah#VDrlWo#5zYNFh0YNs;AMsi?q7 zZWHYGRymA&7wq|I7-)*RilXFlKmH9A%D4FOu1=`Sem}mU6IRSESV!m<%VUvp*X_Zb z`=J2TgtDsw_?1qqSpG7A_jE=Mry#zuGc?Q&;``UV>Hl>`@q)8duvtj6X>khKKR@T~J7KC2w5|!*I4z zY{*lsm!6D%G3zJP4&#Uhn=Lv48`Wa-L#2vqgI80_PHb zMns^yAMPeGkbiGt`u=}1F;kaDi8qW{*3WmIyXX)kX94hPXd2lO#9)~zF1-@X)}Bfn z`X%NTVjK{&#Om6ib88#C`VylXE#BwKuMX)udALuO6vOxQW>)+mH&!F{_qFO{{LHZs|fT|HR!&1v98>Xv@HLz^JeRvdoO{dZ~E-n|+2Uci` zet-KD(Nw%qJao@@dH(9_57Dc_F_oXJ1!DBkq%(VMbIUlblOx3V(Te^%Jp>p22Sed^ z<{ZDuotZIz-bkOBgcz}oaBS56zmpmz{7z2`Gt~6kGeJ=9^hNpa-v>rC<*%a`YFun4 z9G4eImu|Rn{nWrma<&^1+NBBmMES>Nd=(!oK)-+QS)nA7;x( z`LZf{?VF3MEWh3WE0uIgYWe%8q|&*c|2NP5XkN>{dG05~1XbWejj)yZ<|&_$qE`hz z8!7z1d88+#_~wzG5Ocl)zk~9A^8ims@y)Y1A*P2OUzzS9zj^W|q*$!SM<9j&w+_a< zg52@O@UIWX#B(t*X1XDNm9&5B6iiHUz>qhp0`1>A^Ab~(JM;Q{B%hr@H6y^67rye@Nt~`?2~`dMh1lHk^`pZGU*4 z8%g4(v2W?_wiR~S&XBXyNql2}7EH>9AjQ9{Tp!90arn3fSJVXj_`rle@6TL$y#VHE zv>shi8ND$m(C-*4F!(4)Yy4VTKwtX8b>vN1ivXs}%sjothILC$PfhNYSD2leo1Bx8 zoyV7iF$?}dAe*d(n@E005R2vw6Ilpt!gA-YMKD{Hes?;U3M`yR}q@2{OJbrLT z7QlZOgpJyy#>l)4@w{7G){%eFku~BC+p|JGuoIg#sVl3&-)+Yn@PJpQQ#P(GtH}5Z zosjrp5DU}7_NdG?n0YgPS1{A9l-;9uYEE{tzi(zLzap5KD{_5;JPX{qWaaZ-5zLfN z4Ph(fzV5tT17^o}QZfU6bqK4-$A&WNuf?_@OqcH$!u0s1p%|B6Wr>Jj75I;#%;IY? z8Q}7{JP$Vy@rQeE_|0K{f!pT@H{nB?au!fN-*SeNwZG2&tLSg);G2bENPcB0YGKH4 z3B!kIUx`tof_GP<;ucC~S3WMZJYzs@YQ$ev{uFMC7J6V@$^X(cjqjLFh9`f0KWBz_4d>Z>j zpvU)!LcQIi7|!`WCljQ$UkSEFeN~hmuNBSk$!WPPO`^ZDPLGE`kN2#Ln#_-8_`u=o zw0iu*=wB7;)|i=5$MDgOSwrT_?@GjsTGNy z-M*W0wea&S=W)nGavum)Y|VV^}4=xEZq+^FW0@f1??z z&U5_{3)h5Cx%uWzkgIzVDt<4Kxgx7+5<4jO^5L&1u@bqLH=o#66i40;HB*!wFJLZ=`Io&aWRDm$oGOC)j(st`4EwU0T67la*O&DpkuHC~Gt-C9 z6AWD23*$@(H>`lAj7C16Sd1Ed?8_GMRfeIqm>5-f8#q1w`+lg+S27nZWa1n5XVEBB zsK@nI7^gwJZ3kAf44!g6E0^IA6bl(16tgb;{=UqdpIXe^`PhDFS*{=3N~{H+-=7Ia zr1LhIlLqiX`FRH*BpQmBu( zuDfNW7Ua2m+V<^hD=qY^1~5y0+(1^bYD#KqcK6hrE~(P0lHNUsFD-zZ#xu(;`JDq< z6Fxr(L&rHA)|m!lAutbRzGcrs*d%TKY9!plwffAV>`pz_MVJ5n|I7oZh_{7t{`BRc zKo;DV>DA4Qs-_TU7=pqXGUSEqF7R{%c!1DAHz~CwQO^+UT+``t6^!yAlS~*5A)yR3 zUmDo`0Y@Rwr_x}5fNW5j{<#DgXFxHl>8pLw?bn>XriIZ9m`=X8Fs3q3cPfP_<(&Sa M1vod9+`%{l0Dm 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 M`GK4uTq@-JfBZ)c$p8QV diff --git a/webpage/package.json b/webpage/package.json index 6fbfc05..03bc694 100644 --- a/webpage/package.json +++ b/webpage/package.json @@ -14,8 +14,8 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@sveltejs/kit": "^2.5.6", + "@sveltejs/vite-plugin-svelte": "3.0.0", "@types/eslint": "^8.56.0", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", @@ -25,7 +25,7 @@ "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "sass": "^1.71.1", - "svelte": "^5.0.0-next.1", + "svelte": "^5.0.0-next.102", "svelte-check": "^3.6.0", "tslib": "^2.4.1", "typescript": "^5.0.0", @@ -33,7 +33,6 @@ }, "type": "module", "dependencies": { - "chart.js": "^4.4.2", - "svelte-chartjs": "^3.1.5" + "chart.js": "^4.4.2" } } diff --git a/webpage/pnpm-lock.yaml b/webpage/pnpm-lock.yaml new file mode 100644 index 0000000..caff32f --- /dev/null +++ b/webpage/pnpm-lock.yaml @@ -0,0 +1,2115 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + chart.js: + specifier: ^4.4.2 + version: 4.4.2 + +devDependencies: + '@sveltejs/adapter-auto': + specifier: ^3.0.0 + version: 3.2.0(@sveltejs/kit@2.5.6) + '@sveltejs/kit': + specifier: ^2.5.6 + version: 2.5.6(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@5.0.0-next.102)(vite@5.2.8) + '@sveltejs/vite-plugin-svelte': + specifier: 3.0.0 + version: 3.0.0(svelte@5.0.0-next.102)(vite@5.2.8) + '@types/eslint': + specifier: ^8.56.0 + version: 8.56.9 + '@typescript-eslint/eslint-plugin': + specifier: ^7.0.0 + version: 7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': + specifier: ^7.0.0 + version: 7.6.0(eslint@8.57.0)(typescript@5.4.5) + eslint: + specifier: ^8.56.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-svelte: + specifier: ^2.36.0-next.4 + version: 2.37.0(eslint@8.57.0)(svelte@5.0.0-next.102) + prettier: + specifier: ^3.1.1 + version: 3.2.5 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.2.3(prettier@3.2.5)(svelte@5.0.0-next.102) + sass: + specifier: ^1.71.1 + version: 1.75.0 + svelte: + specifier: ^5.0.0-next.102 + version: 5.0.0-next.102 + svelte-check: + specifier: ^3.6.0 + version: 3.6.9(postcss@8.4.38)(sass@1.75.0)(svelte@5.0.0-next.102) + tslib: + specifier: ^2.4.1 + version: 2.6.2 + typescript: + specifier: ^5.0.0 + version: 5.4.5 + vite: + specifier: ^5.0.3 + version: 5.2.8(sass@1.75.0) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@kurkle/color@0.3.2: + resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: true + + /@rollup/rollup-android-arm-eabi@4.14.2: + resolution: {integrity: sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.14.2: + resolution: {integrity: sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.14.2: + resolution: {integrity: sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.14.2: + resolution: {integrity: sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.14.2: + resolution: {integrity: sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.14.2: + resolution: {integrity: sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.14.2: + resolution: {integrity: sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu@4.14.2: + resolution: {integrity: sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.14.2: + resolution: {integrity: sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu@4.14.2: + resolution: {integrity: sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.14.2: + resolution: {integrity: sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.14.2: + resolution: {integrity: sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.14.2: + resolution: {integrity: sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.14.2: + resolution: {integrity: sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.14.2: + resolution: {integrity: sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.6): + resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + dependencies: + '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@5.0.0-next.102)(vite@5.2.8) + import-meta-resolve: 4.0.0 + dev: true + + /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@5.0.0-next.102)(vite@5.2.8): + resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} + engines: {node: '>=18.13'} + hasBin: true + requiresBuild: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.0(svelte@5.0.0-next.102)(vite@5.2.8) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 4.3.2 + esm-env: 1.0.0 + import-meta-resolve: 4.0.0 + kleur: 4.1.5 + magic-string: 0.30.9 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.4 + svelte: 5.0.0-next.102 + tiny-glob: 0.2.9 + vite: 5.2.8(sass@1.75.0) + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@5.0.0-next.102)(vite@5.2.8): + resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.0(svelte@5.0.0-next.102)(vite@5.2.8) + debug: 4.3.4 + svelte: 5.0.0-next.102 + vite: 5.2.8(sass@1.75.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@3.0.0(svelte@5.0.0-next.102)(vite@5.2.8): + resolution: {integrity: sha512-Th0nupxk8hl5Rcg9jm+1xWylwco4bSUAvutWxM4W4bjOAollpXLmrYqSSnYo9pPbZOO6ZGRm6sSqYa/v1d/Saw==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.0.0)(svelte@5.0.0-next.102)(vite@5.2.8) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.9 + svelte: 5.0.0-next.102 + svelte-hmr: 0.15.3(svelte@5.0.0-next.102) + vite: 5.2.8(sass@1.75.0) + vitefu: 0.2.5(vite@5.2.8) + transitivePeerDependencies: + - supports-color + dev: true + + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: true + + /@types/eslint@8.56.9: + resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true + + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true + + /@typescript-eslint/eslint-plugin@7.6.0(@typescript-eslint/parser@7.6.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/type-utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@7.6.0: + resolution: {integrity: sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 + dev: true + + /@typescript-eslint/type-utils@7.6.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.6.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@7.6.0: + resolution: {integrity: sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/typescript-estree@7.6.0(typescript@5.4.5): + resolution: {integrity: sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/visitor-keys': 7.6.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@7.6.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.6.0 + '@typescript-eslint/types': 7.6.0 + '@typescript-eslint/typescript-estree': 7.6.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@7.6.0: + resolution: {integrity: sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.6.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-typescript@1.4.13(acorn@8.11.3): + resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} + peerDependencies: + acorn: '>=8.9.0' + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /axobject-query@4.0.0: + resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} + dependencies: + dequal: 2.0.3 + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chart.js@4.4.2: + resolution: {integrity: sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==} + engines: {pnpm: '>=8'} + dependencies: + '@kurkle/color': 0.3.2 + dev: false + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-compat-utils@0.5.0(eslint@8.57.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.57.0 + semver: 7.6.0 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.57.0 + dev: true + + /eslint-plugin-svelte@2.37.0(eslint@8.57.0)(svelte@5.0.0-next.102): + resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.57.0 + eslint-compat-utils: 0.5.0(eslint@8.57.0) + esutils: 2.0.3 + known-css-properties: 0.30.0 + postcss: 8.4.38 + postcss-load-config: 3.1.4(postcss@8.4.38) + postcss-safe-parser: 6.0.0(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + semver: 7.6.0 + svelte: 5.0.0-next.102 + svelte-eslint-parser: 0.34.1(svelte@5.0.0-next.102) + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrap@1.2.1: + resolution: {integrity: sha512-dhkcOLfN/aDdMFI1iwPEcy/XqAZzGNfgfEJjZozy2tia6u0dQoZyXzkRshHTckuNsM+c0CYQndY+uRFe3N+AIQ==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /postcss-load-config@3.1.4(postcss@8.4.38): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.38 + yaml: 1.10.2 + dev: true + + /postcss-safe-parser@6.0.0(postcss@8.4.38): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.38): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.38 + dev: true + + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@5.0.0-next.102): + resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + dependencies: + prettier: 3.2.5 + svelte: 5.0.0-next.102 + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@4.14.2: + resolution: {integrity: sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.14.2 + '@rollup/rollup-android-arm64': 4.14.2 + '@rollup/rollup-darwin-arm64': 4.14.2 + '@rollup/rollup-darwin-x64': 4.14.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.2 + '@rollup/rollup-linux-arm64-gnu': 4.14.2 + '@rollup/rollup-linux-arm64-musl': 4.14.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.2 + '@rollup/rollup-linux-riscv64-gnu': 4.14.2 + '@rollup/rollup-linux-s390x-gnu': 4.14.2 + '@rollup/rollup-linux-x64-gnu': 4.14.2 + '@rollup/rollup-linux-x64-musl': 4.14.2 + '@rollup/rollup-win32-arm64-msvc': 4.14.2 + '@rollup/rollup-win32-ia32-msvc': 4.14.2 + '@rollup/rollup-win32-x64-msvc': 4.14.2 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /sass@1.75.0: + resolution: {integrity: sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.2.0 + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /svelte-check@3.6.9(postcss@8.4.38)(sass@1.75.0)(svelte@5.0.0-next.102): + resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + chokidar: 3.6.0 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 5.0.0-next.102 + svelte-preprocess: 5.1.3(postcss@8.4.38)(sass@1.75.0)(svelte@5.0.0-next.102)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-eslint-parser@0.34.1(svelte@5.0.0-next.102): + resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.38 + postcss-scss: 4.0.9(postcss@8.4.38) + svelte: 5.0.0-next.102 + dev: true + + /svelte-hmr@0.15.3(svelte@5.0.0-next.102): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 5.0.0-next.102 + dev: true + + /svelte-preprocess@5.1.3(postcss@8.4.38)(sass@1.75.0)(svelte@5.0.0-next.102)(typescript@5.4.5): + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.9 + postcss: 8.4.38 + sass: 1.75.0 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 5.0.0-next.102 + typescript: 5.4.5 + dev: true + + /svelte@5.0.0-next.102: + resolution: {integrity: sha512-T1U+S5fws4WEaG37U2kCiYrl8II0o4U68BTvIq/9GGk3jwXQ5jFMiFoFZ+FXZ27o1enSOCHGTu7WJHjJ3sk5Ig==} + engines: {node: '>=18'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.11.3 + acorn-typescript: 1.4.13(acorn@8.11.3) + aria-query: 5.3.0 + axobject-query: 4.0.0 + esm-env: 1.0.0 + esrap: 1.2.1 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.9 + zimmerframe: 1.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.4.5 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /vite@5.2.8(sass@1.75.0): + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.14.2 + sass: 1.75.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@5.2.8): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 5.2.8(sass@1.75.0) + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zimmerframe@1.1.2: + resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + dev: true diff --git a/webpage/src/lib/Tooltip.svelte b/webpage/src/lib/Tooltip.svelte new file mode 100644 index 0000000..931fa7f --- /dev/null +++ b/webpage/src/lib/Tooltip.svelte @@ -0,0 +1,48 @@ + + +
+ +
+ +{#if isHovered} +
{title}
+{/if} + + diff --git a/webpage/src/routes/user/info/AddToken.svelte b/webpage/src/routes/user/info/AddToken.svelte new file mode 100644 index 0000000..6ca1c3c --- /dev/null +++ b/webpage/src/routes/user/info/AddToken.svelte @@ -0,0 +1,132 @@ + + +{#if addNewToken} +
+

Add New Token

+ {#if !token} +
+
+ + +
+
+ +
+ + + + +
+
+
+ + +
+ +
+ +
+ + {:else} + {#await token} + Generating + {:then t} +

Token generated

+
{}}> +
+ +
+ e.preventDefault() } name="token" /> +
+ +
+
+
+
+ +
+
+ {:catch e} + {e} + {/await} + {/if} +
+{:else} +
+ +
+{/if} diff --git a/webpage/src/routes/user/info/TokenTable.svelte b/webpage/src/routes/user/info/TokenTable.svelte index 7062717..4ebb0b9 100644 --- a/webpage/src/routes/user/info/TokenTable.svelte +++ b/webpage/src/routes/user/info/TokenTable.svelte @@ -10,6 +10,8 @@ import { post, rdelete } from 'src/lib/requests.svelte'; import { userStore } from 'src/routes/UserStore.svelte'; + import AddToken from './AddToken.svelte'; + let page = $state(0); let showNext = $state(false); let token_list: Token[] = $state([]); @@ -95,6 +97,8 @@ + +