From c31ebd35e704f6a999c00e38f886e95d9cf2404c Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Thu, 12 Mar 2026 06:37:16 +0800 Subject: [PATCH] initial commit --- .env.sample | 1 + .gitignore | 26 + README.md | 73 + eslint.config.js | 23 + fonts/Vazirmatn[wght].woff2 | Bin 0 -> 111152 bytes index.html | 13 + package-lock.json | 4310 ++++++++++++++++++++++++ package.json | 44 + public/vite.svg | 1 + src/App.css | 42 + src/App.tsx | 42 + src/api.ts | 13 + src/api/client.ts | 26 + src/api/users.ts | 80 + src/assets/react.svg | 1 + src/components/AppLayout.tsx | 9 + src/components/LanguageProvider.tsx | 36 + src/components/Navbar.tsx | 86 + src/components/SettingsMenu.tsx | 31 + src/components/ThemeProvider.tsx | 59 + src/components/ThemeToggle.tsx | 17 + src/components/ui/JalaliDatePicker.tsx | 59 + src/components/ui/button.tsx | 52 + src/components/ui/card.tsx | 25 + src/components/ui/input.tsx | 25 + src/components/ui/toaster.tsx | 21 + src/config/constants.ts | 1 + src/context/AppContext.tsx | 71 + src/hooks/useTranslation.ts | 15 + src/index.css | 35 + src/lib/utils.ts | 6 + src/locales/en.ts | 103 + src/locales/fa.ts | 104 + src/main.tsx | 10 + src/pages/Auth.tsx | 233 ++ src/pages/Profile.tsx | 423 +++ src/pages/Terms.tsx | 88 + tsconfig.app.json | 28 + tsconfig.json | 7 + tsconfig.node.json | 26 + vite.config.ts | 7 + 41 files changed, 6272 insertions(+) create mode 100644 .env.sample create mode 100644 .gitignore create mode 100644 README.md create mode 100644 eslint.config.js create mode 100644 fonts/Vazirmatn[wght].woff2 create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/api.ts create mode 100644 src/api/client.ts create mode 100644 src/api/users.ts create mode 100644 src/assets/react.svg create mode 100644 src/components/AppLayout.tsx create mode 100644 src/components/LanguageProvider.tsx create mode 100644 src/components/Navbar.tsx create mode 100644 src/components/SettingsMenu.tsx create mode 100644 src/components/ThemeProvider.tsx create mode 100644 src/components/ThemeToggle.tsx create mode 100644 src/components/ui/JalaliDatePicker.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/toaster.tsx create mode 100644 src/config/constants.ts create mode 100644 src/context/AppContext.tsx create mode 100644 src/hooks/useTranslation.ts create mode 100644 src/index.css create mode 100644 src/lib/utils.ts create mode 100644 src/locales/en.ts create mode 100644 src/locales/fa.ts create mode 100644 src/main.tsx create mode 100644 src/pages/Auth.tsx create mode 100644 src/pages/Profile.tsx create mode 100644 src/pages/Terms.tsx create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..b53dc6b --- /dev/null +++ b/.env.sample @@ -0,0 +1 @@ +VITE_API_BASE_URL=http://localhost:8000 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b0b403 --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.env \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/fonts/Vazirmatn[wght].woff2 b/fonts/Vazirmatn[wght].woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a501289a85595158570b0c2badcb4608b042e748 GIT binary patch literal 111152 zcmV)MK)AnmPew8T0RR910kSXv6aWAK1F>WP0kOIOAppey00000000000000000000 z0000Qi$fcM(JCCcPCrOiK~kD)24Fu^R6$gM8YeCQk9IF?5eN!|yEKFG1~7)IRsl8w zBm=2b3zTdC1Rw>DSO@4T3j*!>(=7LIZRxZxk{dCss|NsC0|Nj>zi|{vpc7fT?T@DfiBz%Gz zEY{lgwSAz`1DTPfcD0~3QQLZx(c6G7eOtXf!7|h94%zjsUyInG^@7z=EBB~zIFx;d z=i~EcG!b#q`omedT%AgFUn|qN_os~tq=rB4rx4_ZNtWrLk=vZ*h`!ouk8|% z)hLp_6Aq`nb-WSQQOp!`h;+j}#`i%4;+3Mnb|&t`w>7MXDM#@z?5DLo;{*%k28tVn z(cMJCO`*eGexNszS>$t|E%;qLPU79$XG#}lO1XnSBn@9`E^%D$klPRUwU*1fEO&^+ zd{=XM(?um!QhyZ{chnH)xH4jqxdi3>xG0f6d%V%5A2A>TU3?+CL`@M9sITBA2FI3S zd&e*+N8Ld=342jVji5>{{IhDr{vG`&A_6grxFTlh#Ze9-V#xf!qcmh&Xq<5*Y8@j4 zClr@XhDjPRI3oCPr^q$TDYj1^4`jE&lQi|0dR@s~{$7f&PQPnO^hXLqz&aC77nM^_qj{q^5hzTK>R)8v%wQhI4T_2v7u75J(yPn--ce9bE zX+1TlC#?g;^#8+8kW=l1}xqOE&ae@`8CLVJv~?@$lc1dz1Xmp<`05AY;`L=It>71cqs4?%&h|ji>Q$~#>O_bv0&XS zSTx&+!5EAlky17Y_@a%XsHpE=toTU3+WPQ2L9vC}$-UHe6b!Qg$_IL(P$sO~eT&3E z5Edmo38=CeZQl`s0G=4z*TuseaX>MD$L>W0@xZb7t%3$VfsKAHiZ>h;H6{-vq9{^F zGO;|UYVV`7Grjk|l%YhR026^?KpBu^7dHVR0&Z$%Kn#e&?KOhQ_rGhZy1-NAy6h=! z_w8AokvvV(85tem0{_5!<=?_A%-gn|wVSy3h!(#G60TW+~Ux7}9b;cVA$ zJM9lC`wWlphzdGcr|$W`iCa=t6gnuRbEPeWO{+If&%8NE=YP(B?YAS&Cwf2_zyb$u zpuK_SQlLrSfHWDiGovOH3pY8T2c?;-s_KL6b!0d&XQTyeS#wFy!jgUV|NQ$rTLEgC zEqcPqeZETt;LP*<6}s4MtkIeYRS7iNBzq-x?E|tCFC9U)Em=xlDDuyk=}=y9EnN#w zhp4CbpIiM`C1_O=p!8Iw1Se7 z5E6p22#v=mjN@|bKiy&86_oh1fD)2bzP<-*Zj??VG*UJRi4vBfPEB4;UZyBSxNOPZ zrnGxXFGAr2!XxulSOp9ba|;j0#$du&QcRX)3kF*;)aYuFF$N&b&58+?l_$;0Av{9E z^ZhTKO%Z0Vduv?QyG+!iQWXCnWT_Hw0Q&FuI{oL#sJIvt;bUc^?Z32ss6|$xl0F`= z-3Ap)Yl=aZDp4_p!J=>=oIq)WbM5~()z5YwL5QHVyB0P@%9Z34TWUk9oYLuIdboGq zyqS3z00c+~#E=vPO8g@E14t?)Yv;|I84d!W#2=*PPYN4Cr1+Dh4Jq{wF&C997p2R8 zRH<}GMd_k+(YWnh^u2lbe%jC8;7|z+w~55EX!ex|KD+rARP!ooZ*gF7b5Abu5nfCD9I}c zg5qW_F2jizmrk*}qIBuaaCh#rFP~eBx*h=bx#s%)j(XwF~;56nlav7*IoCv zd)>onk9*wf9*sR5uNw>a;q;Z}$8iAZm~1S9&O$9@`uFa>oi8~{cE(z?OAc~^+z`~T z0+?c0_y;bh*MGNv1N90++6&`6!0xEANG;!5{_L+U1EIOnl{y(Gnb{3@L*`N2FP7%8 z*g%)35l-R%tNOZL0E8s-Q?`i{`oQJv_LgD%|37D9I@38Vc9#W9Ze`NRR7wTtO1O&Y zN)@-Xx+|FFlCtix3mKP&W~sH+(@hX1}vq7VF)GEI$yfG{IC5+)jRJ=>|A@% z3^Ir`Vx$oxA|g^Toyju)a%Xd#)_i+qmBYQ9`{AUmF+vEjh+$ZU&GFUVA74RqYTZC| z6$U#m`)*(T_f7)y)pz!y-WHlrh=_=Y1Q7}1%nlV`+kaIvK)l%BZsY~f2;nfk_;XNR zI?x@BShW-=ZQ=I(y080@HR}nAc3XR`o$Fv2mogY3jS*r9;Taw=B7eTca#i%i^fiJ+ z2xBAz8)9^g%==TTl_OI6J@3Rbmw0S!iUbG*sB{FF`@2IntwH8=!vDlmF$hw5>Xc{6 zaY;kQ3tF-THLVc%-UC6Vu33qi_5zEx(1p~-JXOm|3xKuVV%0t$wbrYTs`ifA z*6oz(FwtGqsmId&hB9xhJpC~{XDeYb*V+UY*HPN<_8A!&vQ&3i`H%j9LC{0vr@Pt41>X{G5eZ%U1d=F;B8i^FDsssLDv5!+$)p)$tw ztpSz9f7{+yY5@Y+4->#~04@jI7w~8xZV1F{0r7tz_#=D*0B7+5>i`72;O$R;C)OYw z8Jj3qtJas$1^^1sFW(&^v9UgmDI?2;Dyw?I3u4P?cl(18gF(SjzX1XQ0kbDqQk8B1 z2GB!#1b)%?NcoD~$`m=hKCqr#PpzldXV>R6;+1jDEH$f@-{#on+2-FC(iYYh-Ue$! zw4vLuZMZga8@(;Njn&3)6KDc737uEE;<_>2g}vc@8U5k?as9}CTz`6hc0d1M>@a%t zxznfIIwRc>vjh%}6jjxteeFFay`@!}+;q*YXPqA=nL$|~fkb0ipPk+W}Q ztpU8U3IYZW0$xyH!GVW>JgR6x7n~mB`1ht34lI}mM=!$((wZ;{ddZQe#vntiu*%{6 z!*-NeA?vo@J2WaX-r3w z8O&UniY}r2rB$->b)YBsftFhCSQp1V)MCqRaFd@2DJn@)RT5y}_~76XkkAMcBT0%h zdG>PGcmD5m@m+1cuj&?a!c+}1j1diIc%vB21Wn51&Bq*ywJ}B#S^PeJDf3(glT0f5 zubiQYHuQh@VnM7RKf3dwp#~33;^8*AYkEbiXSi(t`p7EIPh=&-%b;}Zoju(hk%m{ z^T&;t0E~A@p{zUAn#*^KY*hdQa>(P?d8sJ$OA}>OP(=-(z{a#8FdP)%wtR@|r$Gs5 z-}m>rap`MBFJh8ZF3HZ1o!49toXO5qf3E+SpX298Gj60wiV5A=<{T$E@KEMwE*jvF zF!&Jg6Cg;K7zt8j$Wfp~g%%nD1Pc>xod3j`Ai*Rl(qzaqRkmC+%rb{ez5??su!w-r zAPJcvBgQDGOw!UbGP9z&ghVBzW#tup<_o)h?SJ+;;E*GZIpL(!&KhxE!k7tZIRz!E z)M;U0ONc>Sq=ZzFx|m)m8CiKn{VJ*k4I4FX(zG4sTV|0}PFOaJ{fY<~I&%DkNlK48 zLPM>#abUP$_=_e$ssjc1>Qs^7FxGbJ<$wlH8iC@+6gXORGkiaOm^5)(nd7(%IKt7s zgu3#O7xgN+N~G6IBbhoPAM<2Vbyt2Lp5pCkwAA4b+NUiv3N;nbur*!=pgGLC(Ey{C z{e=`!PQ6I71sP`CbPLqrqG!rN&}b8^6UsEaR*tCh7?=DgCkLr4)s}Ilb$!waa2UTp z-0B+f;P=sct04fz0}cTR1p|wKh##2%YO|AX6dUE1uey*RFSVkPQ8%UtW3TKeGpzg;f66H-Ie7&|N|amne`}LiMHVVnVx&<<8)LF*X4_($ zQ91L#{!IXG1n;OSWf6b|yW$vL`=hZ+^{h`8|K+ z&-|4GIhaE^oKv}xGdY`cc{Q&Mb^t?e$Pa~~IF!*TDqC?k<=g}+Y7h5=W(&b(e1YuD;+KYE8V z7p~(2Ma_%!MW`_0B1DQ3EhdxBBun#Fjaqe%0vrMX6bu{^3K|FDQA**EBMF{rT2yy7 z?)K!NM?84);?0L|J~_`YrX%nsPFq;KV@ZffA)nesD&9WV&=wy%oG;z_&nFH1%g|ow z%Wu2&mBzDaIhr3)Pr97IkYenDYfdQG)_HRoSS6N)&km@FjBi74VrLGPybF{k6m?N?SLI5TolyZHl;?1AQ5vNQMO;$WAIcYsltQJI z2x*~~w$yf)+F3XJ(XH57AH$k8t2S+7V`Fb&7i9uFh?!epSY0RIlEoj@wHRR+p%6H5 z;l&@g(l)a(zkWA1Ha0f46E-$BHa0dkHum$`%+(%`4!FH-w|C&og)1+WS?P3Sj@uN=g#+=AAT7%ZZc*T z=<&9nyu+CbS6+OD3KK3uq$ts1Bun#FjoPRyfkTn=L|7!0KKIQJzl<6;88eeO6#-KW zREa_gzRE%cRAqH{|P%0%6L2cSHhv<GF>hp&$HKy=1dSL3cpw=#m~LP8>N=Hef)GIL8l#>{g?gKS0p8hJZ&&97za_$Y0y z_!HSrFbBx>a+u@Na6E4>X6C+1wB7T*@`^Wl^3Z?Yd2uPzCjYm2e=a!N61o3CuGs_S z1DBaJN~91%tvMV4zpj90BZ6Mm5P*fhi`jG`@VwRrS896G+%VP|-Qs0hZhyD5$a(85 zc;r^bT&`+k#aTWR$JKt@^1{Jtd8x|90e@-6*1R4sKaa;yC<35saaUHb@?U}pi2i12 z{bDsMpN6))Cv5A@uGWRI;ON{svjW+o;)F6gu{zpXtF&M0Wix{MUzc_D__>ld7!XzS zG`qIHq|A8MY}nKWW-5a#-TU>9wPIYLd$sQCvST0;@8o6$lw|v*$fah=7lt5w~MGwwAo_IKl(YtE&%doTH8=dc7j@o}Ga)!rvFn=fn8sPOn&E$5b_Q%PFo zrqe-UMx_k2)%Z}VD!&e@;?nK`z|31!|GjGANZH5|dtZ^oqWQwVhOqXnC6WWv| zi6hDF^2R1po6MN5S{sLgv6vx#G7~MVIF+aByy!zzqgLHJ)+oCT4!C4{EDoP&Gg`tP zz8f_qBf`J!hBva&jREuM_b_DFQ>np&;Zs8yMrEr8Bj7{>j3y^qU__kgfEmWga4`Cu z7=jtei7^-xPE5g!=ENLLn41_k32su{WVp$JaAC(4gc~~&5bo@FfbrzSiveGh0F+>q zFqCkVaVYyjY2j`> z?$N?8@OS{kNj01S(W-_vkai*+AZLkmf}A6A9^?X%OCXntTmiXCGKD)8#3B| zWn!Q&TMAP}3O)K(U}{}p>P$e@76`o$gnAwc_WuJ!I~J#2RSd{j4jBP4#S{l~i6UCt zg30=Uvl=LC^#~RfD>lW8A0Y7vxjaC&V{Pe;J#aiXsQZgS+Xq9fmj~1<0_>Fm_o{%o zI6y85h}VX8-yUjR9y;Q;;XoV;jMx{Ts10Zw44kMBoM;Fw@%Mnnk${Fgpm8)naV)gP ze*+^2{Q$ksW4f%WW(g(k_$5pmtsA9M-LBxIf=cu3*rvMT?`MPu!p}Z!Yv%! zro#*ecj>Ue!F@Vl9PH@e;9yS&4+|$ML`vv>ppW2f7MGA)z$NOIa0$Ev0^qR+R8kUWEx=179h}K=;@lVOab8*hJj&zF&C@guos1c9?KXG@tGYL z>U;%#e?DLr1g;AM^1OgO|6(kt@QGv`2)r3ytpXx&qh3$Iydl(iV^ND|oNkW$C?NDg zAdrUR6rnCo7q!rxIdl8me!mTcMr|6m8-jL2#DWk4Y9gNWfZ}O@@hqTt9$>r(C|(8_ zuL6qKfrvK&#oGe}^Lo#L#PbsS1A&Z>HGMv^uSfMgN`6G8Vy+tD2}gC%2l<1C7rj0V zINugNVfk2&Jq(~1Fd_IT5{sQ#{nv(Idu{1-AW%k#uOX!GqTog99d4Dk&RQIS2lBb* z`VIoFv*AlTz4e!of4Lin*c*4#ymXm4*5mNgG&jr-$H>t_r-+nm`Z0?9#@+56-saQb zBjgX>_BpY~H9)GdAf(UX$~7X3C1v8sn^?5ReqV9@f&;Jhvu8cB*dAwpqsqAl+#gm( z4_HaI9b_f(iyydXV4TNb3hEn_3Dd$ZZtO9Q-hPHWQU%ue2OCTgf5_>F84;3Yl=msG z_}mLQUgoPRaI@Xk2Xnja&b}mfA0pCy?H;U2y)Wdr*DtNr1=`Eq?KXp4H=%Ug`hzF|V8O<35z|3oez@U-p%pUjbd@*CKr@(zm7V`ZwtenKW?cLA0RE)?w!W8tjaSK!VsI65Uclh|Br(mv=@>6U^%73P;@(l0rk=0)1bG}i3uDHWb!pI!Y%30w-htqf2TI)_5Gzsg& zwf_SXYWh*?p7d%{_rp^jUdr%KSdb8G^0%=})2XKK<6MjHivNF2fYos0OlcOC^M8C zFa*BPkB~O>8KepA32{JxfKWyl=vin1z$(-m&i5P;RFa+4@Chn*IO zc_2*93^b$xJVW5b+w35bd>YXIn$S-)Y*m9VE5K2K7K+JYQmhnEn1fJ3s5jpnT%%j_ z{ib;kbp*8V(e{40G%%;0OJBEx=7*xQ#Ma?fJ*)|eOq}b%)J^k=!G$5>!}EFPY~_~4 zqqzep3A5HHZhOdWnaN73R^CPkSQbQA#2_XeJT0&t<_rxe@tV z=BKO4kp(@hEwa+!X%wN5N<-vu{a1_ph!_sh;?}h6KOl_>Zk)Q3bC_MI!{edZek#x` z(!?br*$ptNJ3cqN3aPH7LXZzcuIZj!DK`HPz};{+biC2^t0J{g5iAW|a5jedkQQ_T zxf7r>n8DE+R;?=~CIh1_@}?o&eh97%Za*X_G%b|cCv7K z;*!>N=g%Z37g~6UC6`)y3-c||dLo8L^ncJKN+PDom^rH-L@&6|F7OG7$t$Ta{9wg7 zf(OsDUhlo`dFNYf@h#5NW|@#!!mH=xQf8Bs0kMpk7>g;{$v5Vargf##pKfd}I5m{81j9}B`^la6FncythOioq^(^1Wg z#b|yiF+D_8kUv~nQOzbwcsIVXj3`fGGDxXixHRO21!MxgXyn5{uF09Q@h8W756__kFM1NtaFb?Z*9%%qGzS+(n7dU@eX3Y@?U3?3bh8JP9M}8(&`u;kr z=iXDU=Dazkiv{oiGJp+aLmkHb@p@hIQbfDIU6+kC12YjyTZrZ_-@hXO$AiwP>WJ%>kwKAMK3030E;+cH{(u_ z5gP!&0Im(?AG6x3zf`qcoAsy+Wh~RPgaAY4zrFp>?~!^d9f-3OUD2N9;>UiKg}wHP zpOkp&eXvj8=DTx$#(VUPjkT~`H-ap0_Wt(k@Q%rQ!Xj=cAAT&eyO5?n(YzLRcS~E| zisj^3Yg&5)UGXI_Oz?n!u=7ClR2gNAcMV_}S{TO??JF7xk4leBFmM(Ev|$)ZOyD`x zxY^srO-8J+ob*UKfQK2j7Q}GTg06IjSGf~Ax0=-z=B#UA43kJ>E*a2R4gxb_E)&Kw z$)Z&A9-q@BEa)H)#bjd5tkE&CRHrMFXvP7tzi*({se79J3^^`Tj1MkHgpGiX85{hngT#^EraH5-+(v$-a1mnU;%}-k^ zn2d~ON54-R@<4C0+azVEliSA`!^%Wu-L%cV~w4g+ktvQXftN_}N!A zL!q+*En9^y)LYrID)a>0uHY9Z0hOB=3qQKQ9fSIPM(2k2qJG{65ZIEFj!UA|sWB&(WgeGBc)EZ8}Qh(0Zl+E=~u5{YMoR+QIvU3MYjUdmCA?M|S{jy`ps2=lx z3tt_5^jQsSmF&q{pqvh`HTdKE>%?`hWI3IB@@X!!ph%=2xmLaj1AA55D{ay~7TW5b z*&lC&pTtd~^H-(t`AngTR)$}W8rdy2j8arD6!1xz_q`A`=_|lB+_W zm`tUm+HsBnBlnc)f7-^EOQcsmq|_ctiW?JsD2jJ=Q{31Qbgvb>RwFe9NSG+wLtTVq zqv1;io(X|4NgxefPU$R9_2$tuA;t?A@2aHy-wx}GB2G83npKxyC~qXtkrnDSb&YE@6q8ZxFpPCT}I^UJD9A^gX;sI*UbluY|cQdMIz*D3a8 zk*o?qgRhvKNupjzgC1hX<*XBj7KgKnwF*sDn!@1A1*x=bqD#*0qfp)BY+y&YcSek! ztHopui}3&>RYu~!4Utfq;VLQWMj0uiLiJi%tNh|K5gPbV?upRl5;^rr zP0Q&jmdZ{P(ZcE6mNFY@*YYrpyD2ve6!>XbwDh*=lp^w^+=w8Ia*4WXAM<*!OtIY3t??4<++!48^c5k8n}B6lnP1)JPrq*q7$BwbE~T1*(p z9a*zEv6C)TzUv}Wuk(~WHx)IkSaoT&k|)=x8XnZ+q``&FX?>9L)-dIyR)3OSt@1O7 zn2~Hml#x!XM1?h1YY)K2a3$qs+4XG+Y4}#8da4u8NvNdkSb_8!=8%0qPMW`l!72N7 zTrf|A?H;hRX0*^J+;@LM8(uW_5c6>zEtoZy^2Hm%Dfsf_76MD!*ERnL z%r_Q$fFCZoeC(6u9_a3g4{iie2AvK>zK*DStwe)gyT^<5X9suX_lKYQHN}Je=rPau zn-{(64e$BL7xp;lxHIA=?rZWjg!?a;^K%`xzs|eV*%! zcxtoc{r69fwOqOqhA{~G5w7{`8SqaUs4M&?6EK5GEZ=IAN^&&<W?j zBv3&^G1#a<3kETTb?BhS4neCQ8Oj6}vXs1KEp@pRQOXkb%J-m^lB?A74Zq0}bPz#4 ziV~_6<*Hb0-t&8KUw{omHM;bJsd^>XoV0pLvC|l6AeV!N?T?e4V#XI8eax}OSn|rJJV_}wPvV51zaq<2t`}_?^u@!@IpRF4#rNyek3S)K zr`O4i19jGc{pGq(ZuJXL=J8$q$pdt-4}?Ge?nF-$Jr9s5Jpb&%&2NRWth`q^d9v=C z#qygg_R>dtfP>vEo!#7#fhR@$*R|990LM7S+hv~&!w6P-n-Oj&Cfw;{J$-n_$BY0x##vT zq-|rRiMsxLvGwVJod0pT;fc!byBVl&URR6?n@~#=XCJ;&k*Qd09 zlAo6|OAj-})1&fiy(@1=-PvKa@#iDX@-hFsj|Ihy=e*D2+>0Ke8&z|aUe<+*l6A}` zQlufarS|Kt;Nw6` zVT%Upg7P>0*9iD){{t#0S#-cbcc&KcmRukeeeZ)4jqhcBe^em6UB>?HI-qH}O7IUf zVD8+mk#^BYm#Cn=u4`c4X(wNBV6o=p^?hr&+84>GtL0OVTV{7?SvU{eg|FA;(i8Y< zdzFsm_b7(uDN1FfFutDr5eHTjkn!eGa}6M2Hu|)fHb1XGAPDrwNnWZw$l5 ztC1$(YKK_}FBjrLIsl z??>mBdHm(H6rT2jm6*NlXx-e2lYrDXL+u-G;S_P%3+UyYrN}z4R}$!6e;yf-m+TzyjQ-IW@(L{`fOie;4gO`echM)3rUHm6YTa*vO)q~@E5I9 znhb0rJHNm%Fu}-1?pAoR-vgUX;CBBQmK@vf;hcC^V!1a15in-XYgE4m3&XQHvd7gB9IcnKmF`vwu+W+`q%#zW}Rw&M;Y&;$pdQ({Sa$r2SSl?4u8f30tK{ z-sBT~eBOAYT==29e+2*>GyY=vn;&o@wBZ(jJurzj(IysVRNK_7J+}gyc@sg4Hw}_>u9wBb9TIy$Yq8vd7qe$0IrKP`c$63-*Nt0%C_R} zoso22Q!J;~e@2m6c)Hx#*t_Df3f>$M+Lit_!vzs5Zb!)|C311RDVJDIA>921T|Tb@ z7Eij-D~^b5Blf!)oohehrioxbZcpr3dPW;M{MxSps}Ln)_py|S{rB_RM35Sj4&Y{O zycP@XOB1rK#@lqGK!s7)8rL3#gLZOeLUKL}G=d>Gg3WTLn--`*GCAV}P88<*WqxM0m7#)o2nC=5HYgo4@@9oDOfo-Qq{ZZSIzihj7 zTsqoq+q?8E2pw#Dy7s()JwMNIwpezIo*7R@%MJI*dtVZ^?a|9~_G$S(eSl?Fy{md)+Y4K)YPz&uE9?XW!)!-O&^8>n0?QERO14p zttI#t_8MjE`|gUR03E34wE3fk;44gXdM~na<{J)U`RU}(eiUw@+Ib5Yf7zJ%B7T)C=d{cEK(gr+h2v|nEyQPTs_pXCbke4ubYrgd z<-^h1x#i$FRp~^1x=C5Zb%t(2>uj$Agbqe8!pIb$mZ;CQRrp}$CHW7M$8v}2Vu?$F zx&d}8*Rl`{j{a=8#OkyhgAILU=dcC^S+5QFfF_6OLGedGu|QFmzko{0=il<=d0IZd?D7HaX?(9x((YFL_ciA9#?Gl|FL{S<5~BNNy{2r(_lVMx^~z; zUH?yq=5X;c*TozVOMdFD=aZt0RI9DqzNFwfkMOx^UyTOzn)lZzVkO30ezzU!m|JwX z0H7~<+3s=_rZyk00X(BL*K-Xvd}wWCjK#?))W&c47gjwO!#jB@0awoL+IKpT(@dT4 z{*}o7@t#ZlPxy2}v&_9n&vjt9YrJzpL#Q+Bowlsi$;?ml-}up=7}W*O4`s{u4b|$v zz%^Wf4%Tt#<^&cU2do`%ZKgIAUR-l?4-mMf%Oh?;-b!?Ly*$!K&ElFu*0T}dl;^;t{3& zvh*>svweycC5obO?7RyNCOIPHlc9nuaJHtNK^su#G_RTG zO+6r(qbkpWxWh*6U+88S6xWHJUG>xz(=QM2MUS6c6of@JL~VVWqqp^B>l|Idk|GxtD(fx^#2_|NkE z%)C*B^vXMsDKsIy>BXP7Eo#(UgCDcv(*OtX&{kpPZCP#^EkZXtVxmXo&xiRNN>slI z^?%^)qkk(0$WftHhzKzzN|7nYEcq5#MrMqfj)jw7R9ew)dqL}8SI_oM`0Do$^E!FA z1*)_+u)Su2ZQIs2YJXI}es%yyZ=GqkH-k`2Q_}XmKTu@@e9^r*&%G1h_AU0yAw4I2 z%RD`K-EDJb_)dE@lHp_zz{ls^dpPb=gva4xT>Nky`r^3Wpz<`h@K8b}QP?z0N-~SI@}?_gK-Y>2sqQ zp*&nB4x1tvns9rxOcJidC`IaCkde_5i%gR{$MSg8awXsYIMF{&%viA_8*RKqew=ht zS&IX_Ot*RbfR^rPXaeYQ3P_*Om5+W`K&f5N-L&|kb*4NTmhaSAZM8yi?5 zy!G-&9*@?Bkno3IhbJWBgyV2B&Q$ro3Bjol*e@+NhoHQ^Q{~OSSqmY*G3Q%_Fk2cN zO(Fc278E)}>UTW2sEckjqN03u5F*k3K!CfcDmo;pZVVBX z;+saOiC5#XT#k{pmg+DStx6+U+xR0&0ZRx-hcG;#jC~T)%DHo-TlLp^Q&7?(VLzAz_fukhS3xemY3CBVo)Nn zR6aa9p;S-l3?_@s;SR@=nOvbX98VXkjUYixz0fPY(K~(6Cn3$XlqFZbLg+w)g#gK_ zB|t_L@sKi7LmJ|e()#2Sl#~sq88Twbgefz2%D2)|Upi^cJPr(AeAp-n5>>=gmGKX~ z!A;!<%-djTWmsx7SJeoYmafj_@%*fpa?^>^w}{Apa_M|XQIn@ZLO0rNfmk}5*sWNd zNR@ypW)ut76slIjJ6P?XYMM`_nti2ftR?T#t+stK96ELB)}vRSK|_X(7&Rtt!jx%= zc~mHU=Nmg@afRVij`Q+Nq;tFA1XaY%(BXk6(?>56;@nEnJd1``tDry zT=^ANoI&hujDthi1w{$fVe=2o3k{Eif<~RcAfd*J6fM?x$@Xyah=@yhfsQ3cEaD>- zB+w%f1bb8pr07gVX!v9p<-pzo z1Oo>w2@p)|0ahUh2AeJWDuUABCH~WQpI}m%NS_@Dz!!LnW%_L%rg{#apOoXE7k?UV zOnKoijwbHEx;|O{&Z2)V3x6OH_zVZZWQU6o3DWjtfCccL9YKq)hL2E9har9|xilBz z7;whwqNI0@X(I1CG2~BPTfX;nf&=rq93Im9KRZ%54NkIiFi`vG@vl&$PuSJCB?!$M z!8)grrVI-?YN!f!GheDBo9An zm1*CsvyP<&@9xJ6KrS%FA1vP%6G>;=DHpG&yRKbWn(=ODyU=i1@$3?D%+%5)J#g4p z&VAub>&Q3%s4eyw6(5N;T~qTxkEKM# z)2b< z3a~D?i|Wx^GY35Gd>H83RiRi+)U6dEv^`W(6};Z0J9ea_E;zulr@Ak(U1HYtHqUcm zfK6+RwcOY4TExM{6cIk!zT$69o$=QxlBA+~Tesb?(#J!Nf{;j^69WsB$B>j%S|`;b zM;;KQc@gXktY6zoT5XxHeB+J<98`3;sOyVWY;WOfoWa@Ck`c&VZRB|LZ8Ra`Fm_N+7oCfgFLXs6jtK zO&LN7j~Nj{Y&jC8hKndWiaZ61ssK}}EOaykWb^-t+X;ZKLQ+5f_UGPVc`)FrAS4Rj*NmUcRotoTk}N$uI23G{7$B&aVS|E+5|>M| zqF~CFMW8cVTr$VqX=+-IdLqkFGb}(Kv~R8fVF{nH5m&AxX_YI1gsCh#-+4gQFwMNF zixiW6gZf_ux=b|rI(L*&v{~8_e7fWFCYt5BHfaZ~Iu#8$6`0DfdQ8w76V~&^TT7Uu!l9b9;`S zguukXSCDfhHO8%lo|T=8=U7w~5W-wvr6skeMtX z;rHGlFLWPL<>8|jRA|s*s;5ZrL*^F{77>?FW?^IJ;^yNQ5^i`i)p}(ux>;Pa#mZx< zeN8P!5sV#APU|or9XTe-yYL{)ITUZ9q6-!VhAGq3%y!~@F00XE6cRL8Xw=f0slteW zzxsm5I0BJO)u5kq<2GRvE;K-23(8%z}$cv2T{z=Bd%M?}&d=kL& zCcNKw4SwYczjoCh?_d!GwG0cX2t_GIaSPPWVv%#U_hN$EzZMhHmV?Lng)a@qC4cAs z@nU7lKuD?kq6|IdmBhx_+zIf~kepbbjoBJ2n|0G%6su$TBd@MPlDR%M%9Z9^ju(vs z$?McCv%TV8|MYM7`JV?obQJqU=pd1oyzEu~@Gt-IU-x^^ioUp56>Fk6*2UV`5SyYR z%417Zp$DRHzUh>eF3z&WiVN-wyN(A_qwYcC0&tQuToTtE96H2Warbn4;2n|(3APLz zZKr{6JaX|3p5uY`^J%iXyKDQT7q}sqOK%s8K|mmow@DxZK>&0Qm#pKT z$y61*K!Jxfg!6QO7A^30nBl$~y$-hs!+!NLKBd?yV%AZc} zJrCZa)<4kv#o*tl|0U1<5NiGi2L2;6|C8xEX!34yKA5U!&~?>!{IQy$zrpj?W%I#P zd!z%gBwyb;0JJ`UO?br6Mlxv?4I>YPbl5vu5F9U_hShSzndy$Yd7M3;yX`dQK?cJM zUPzc&3pn~RSh&c*i$wE(UTwC1*?_w8k*I|Il`+zu9#Cv%)0@54YVikr7`5uFn>Y#d z&wGD*Rn^W_Xz1b4|9|yJ;b8D-rc85x6`i$@7ymW?{$UDB-ml0>Fx_3abn>UN>(@7R zQaoCywk~v;sjRh^&+%oM{z0_y>L9%x)c%a;>8Q z7F}*{+qP42%s`bEu(yZ+k#|0j&)o_#$3{`)T2Fc%AeU0}LnKwX zAGTa|OfvCh_(Qvi|KAFo^W1NeB)3W;C>2&@q?kk|o4 z&xYe7(2fW0vpg28yNwSFCxm&2lXLU-=uM4pba5eO>dx^9X2777P=0fKLlb=s*gOoP zE1qQ$%il-t{~FYE0pNi<>*@WmztSvq?I9B^!{^(Zy0M~W`o7u{-E9B;7gVy> z;Wegf`d95TkSU(0naAyM^lbi08xdgQfW%YTe$;_z5|Y!(+M~ zv0V3L{Uco`W~SCt9!y%8Ouu^^2_)Y)fFuu9NfAcldSBds4g z82maWRY&Y?uD;l}ncKDDue;DY-yk4|g(+-L+5ZiYD}Q4T1IS}{p3QKNCBol+%$U!b zd7C-dA^X(H08!J#LUys>Pr(_B^qj@Llbn6o5C%Rb+?Q(tF0M~x^`RC;>pmO}^z)htkH2OPpSotA7_MI+%glE+ zudRrWU0M3YJH`cTrQDph24G|`t~j$GQi?1tf? zPkh_1V`Jru(zk$Ecn=yTB9wH{$0%dWF~T@gEC3$<)|zQpKaL`8S;~fGST>jj0>Cm+ zeo^$U;`Vm^e2~x$1FOM$ZWI=dJ!#Ukoc8nf)v=SD%!K09i{OXZHoIre`mvtdB{6`lDqUp$)Gq??A}8;lAg?;HB4t`0!x zKc&={d0;>I^zCnLAA9iIAHVwVw?DQ0$?c6N2Tt}KKYH`*{jUMI-|WMK00O|nkYn4A zUcYzx9&+?$0QsoJhff2rMmF~)v(={_OAp%P`J?PnN*_M!5&MXFL_NZQ>4a#Icb|MQ*4Fz#|VER3I;aS!sFJOI)oZk6E1Gn{yeIPs*A{eY6ydCoWK z7o7j+zv<9V=)}VKw=!t?C3RYg&n>?G7miPS;+^)frNyTxjKAZHc*}YqIl37uwU{x@EzWLpxwm7Yeq_4SlB|pZGr;l6NimG9882Sa%AE+2 z2$9_N7L&z^D934aPDDRQq$(a>jB?+0;n{|Hp;7+cEHB6At=8Gm znu^?zoTUvz+W>raLvU(vc)Z&=y1V$_?&Rd|=c7H$**(bVJr<@S%@tO%F{bREF;22Cv)P=# zwZ1j$q6OxgYu-qY=!kIl56u}tFXk6c(G*XKi^#2j}M%J_8Sb9&i)YC{aZ3-2| zlu*X~k%ft6&~UN2MoS7Z!0cETk4Ot)KspU5Blt{Y(P7F{4F8C!_&Vl%Am&T#wS584 zyg;q+0!khK#Vp(o$hQN|z6WmgCpho}fSr%Rd}cWQimu17ooFy<_Ud#iLr_b2#e;qJ z8AF&G67?q<2-Bh-TOW3-A^$!$1Fb_&V#bC!xEe*8eGGUMLI@JhGAPu^*HeOFlA2>k zdGDRjoCrzcAlekFd=EyDGLnXrk;o>mux8!d!~mOt%tgkIOh0mpEZRJ@FltoTH^D{) zj?OG>QRHB)@sJsF7z}@+fHn`D$A3>Qpn`KCgcC{Q9sm}80};ikK?7{96=`VEz$|zBoQQ^$!cPm6oGQGYR_cyTQ1Kl zNsaSRNSV-rw}e-QD=-rh;zP#><%ERUOB^-XbLOH9(|7&lO?lZD?RoZf@Db!N72L{z z3Kx4+Nb%x>QQZhpXD^_-u})lstS%?^K$!TvZO+4m?9(pPTMMGev}dwa%P-ZJOXEI_#-hcGpy%2*AN`Yz$To!DLxu z;k{VWFY8dL> zuv7Q-)5i`+yt@aPN%?wid{x7WK1nRtP3qvWzet|t)4IlI1T(NhQDvvG?IpZ87Iz9p zO1057?$WK1p(4whovIF<~lu_2PbE*Er~B?z%!q)s8>6h0faXzQ$KYU9T#Snj-R* z>8c&RQ&v)#Ka;scQU19?WYic&SJzFMeeH3#JD}O`@pfiJAHON^xR%rev#aTJ-jAKE zJTw%^bUqG)sj{vJJqNw;Gf<|NtCdRJOcpb^_xdYkZTp_Ze$b6|efa@y1uzyIM24}@ zI40k|dGvk~f=&@3&o&3w@5+6_*iQrEw6BLdZ=$^DhjP@z!<%o>x3hFTnN_~v1IMD{ z?nsXXhQCLNY_yBx=lZ-ic}~xFo|5M(w^Q36EdpVdMl^rUxAMvwZ!@fpCrOmFx>mpm z55E6GB?#C9KOL6J=|KPKc)<_bnYumag7unlEh4Id?2ePm9^jX`fX#j$hfe$ARM@-h z_(MCSL}nagFU{iR8I*fLZZ3O#J3ejii}ruv^Ji-}_HI|U)eD#JH|6QLUz|45>s1Hr z`n9rgr{#-t!Prn7aSm^;k@ROq`_|eK8!=Uo+7dkEDs`iaukEGZw6c%hX-q(d!$|3E zrXb(Z`Z9PQRJub-7YsrjwpkBNl8CVuz#Zh5P8!9RHCd1CVz~=wQ-v&Q2mdexRq$|M zi$aPH)-s5hYJr1o*dha&w3Zir8gTwlz5)`rtrM5&^3WFvu!&8S`tk+N9p(0zc1UqT zGM__{#9;6VN2g@m2JQZ0fU#4yZ%Zl48av~81d!WRh)}2Ll((CLhCO1m-MCCFnka#Y zM@pSez((ly&S6qje(EIpr2~zDkh9h^lr1yX1aGJ`E!6*!&3W=r7IH*^sVEGk7D|-w zGa1TmK3(&mCB7jkd^9qeP3+-O@x)R~EWi)A^Xsy#wRw zCH{L8Vwjuh!YbW_3%>B7l%kwgr*XiNKSmrngcRvV_lC&pV#%7L$PX|m)Rp?!IM{W_ zp`bdUj+SQ%l%Sh~F@B*z%d=zPArM&J!3KrSFNU+6QK+W$BxW=UC>K_#GG&~aET2z3 zE&Ex4TlJ(fE10NjS+p9eY(bzIsg$xwRKAMY^ODfZB@qCk3%~NZY zsr%o(jT*eo3KEoz{1UZ=rci5fm^BWTiO!}!K1WTHu2zqQ!|nf?vD+$Ki!{5g+#peK z2eHcFouR6DK(;)W@nyEi*RP@IsRZ)nM4&P+k3pBFibXb1j%Es8k`p|T2_V@O)NiA~ zhqo0WE%9fjG%zz$=Blbdc|6HiY*?cyM6e+@f$B{Jsl~-6ACkU~nQOf}02m~($f?w_ zIq(Pi)k9_@oP7RX9hUdfUUpM2hNkBKZugvM$G8e0IrXrOZL;ADz z(Aoyk9@X+55NHb{{TS*Ph}?lH21Ja?HQv!}t24(8lUOkfQOSx-ht&Dl7(v&VexE|2 zbf6nTrDbFr9i3n5m;-ri0LTnOcmNfQ=#CAL?|_bDL?zL$;}XfTc&SA5LiU+VAwGq) z>b)Mn3MSVIm>;D!eA^Z{F^WCzYG5cevi}~~zlJqjqU*%XhbUVPBIJGng9gPGC1gedJw>(z-LFZ8p)wtUnLF-#fQ|n?L_DuWW8OACT zMzA(DcSm{`7Ob58flyC2{n}Y3itoKXi>bNWtLs&p(P|-^QZRvU3F^jDw&k@_ab(gX zXO!UKX)=7Y5H|>>OM&xcTw-X4VRmNr@paXhf7=ENH)95AfwI!ZdGx?5l63jV9)+%pCM3Y__t>XnRA@h))&Eeg)SH8O@aK~ zo4@*Y)s{1qZG)#;EQ)@L(k4)O9%!-#kJ9w|kqx0+^8WGXuU?>Ecb)POM`x}Q*K7rO zNpPTJ2B@7&M@e+9(?^)Ys}Z(V>Fa%p**SfuutbeWzl_<4Ap~t*Hf#TY&J@+GB~aL! zi6bFFNs3Au1G{$#YYP2hof@cp3AKppAVR#Hl9RCnB?U3qS!>r+BT`7s&P3>*utz*V z&9RGI)@)j*#mmQ>%2ck(g*F%sZhNk^vvCJK>D1y2*=Dq1Jt@{2kiPHq28htC7x-SY28Q5GjgLX&(c}PT z)K#|WRIB)8%2|*5IA&(2F3e+LsZ?1sdZs_Ov-8SBYXL4e7!yNyd6R44pdYAL36DGo z!c2g(R^d$SnK@GhNZq?K-C{A{l%!j$6gTI|z>KBU^)4Gl37$w5BTEpXBV$TyF&Zkf z82qu%IHXoh`gPs#Rjnbg$_d7XGU|z$*ww;ZkUTy)DV9|*lfO(?q*=*0j@`+eqFRPH zjRePdtA36($ney~a$j~tp3}n3jo4W{$^MBhALy1`$!Yl_2}*P62P4EH@@lb$gZ&0G zhT{{V6-rDCgO-A3a&upSj-}kV@*JxboEKryAG|ZlKV1b-v8(s_>lGfHlN)Fky+v@01ZFuoeh{S5x z6ndydc4H;PJfz@l(q`lA!e5+g#o?A*)Qc z8%MaaGa~~)^Jqdc#tRzwggLj@EJV5{YBD(7?O_X!ed{(P&Jvu~FE z3KXh6{DeH)KP$ie(8Q+tCl)^0-!2cQ0Zq*6?j{l*2bn`s$e`&R#iC(h#o(q0B1uM& zBDN>?M@glF^ltxMI^@#mnQ#`=Uza)GQ8E(4VP&DC>P@M{{WAh1`5~F4N#IW`^A~r7A5q zU|F`}Ax@meU(?QZ;4;<4sfpQFeQ;XLQsy2j9EoDAMUw}uy-hgI4qFBLLn7O?t;TWe z%b2g(-pDHrmScPbBh74o0n@tQ(Uk&hW@GFU+;S*1#p#@NIynsz922YmgR2;UZB?8> zy(e=xtmrKfVrLMFVqV>P3r6-H?;MrLqt#1&9CV*gjyBe=(0zQ>+GXFi;;>h}*gW$| zhr{ci$fi0YJ{QB?mfZ>vUPi65xW%XE5>tOIwj+siIA&l)O&g>vI=#&g9l0nLok*idcxb17oRFqo!`ZM9; zzYn3pvk)+1cRb6zKusyS*q7z=0n6f7J};lW;eAv1%3I~h$EvH7iu7I{PYmD3-4SAJ z+w&}Q$h_^x3ELoGFgmoG87@6n$<|&Nr(gmSJ#l~^$$r=+aT^kKMEo%neKc#Q-`vvSu?z~oJ# zLr|a{nXxT@XPt5lQCg7r{L*3*LkskhnmfbM#GTx*Eei||PTauS#-S!2njR2)x{s&Z z?qaBzy@$f_Zqs<24eVvMyPq5p_N_=9A;HGjbiSzvgXNua^VyALKP2 z<|^Lk`wt*BOEa&Y%FOkRv8R{~7G{Ydcs(|^XxGkS*|<4(GxA_xf5%J>hzc9l;+CEF zN-3~lM@sw(48AZtJE0|`|HKAUdvTO|p#B(}AVipZgd~4?8uH5XTl#uNghn#9TJn4W zn$hc;aJfC*sPt=K4L(`hX?%jqY8i)PO3*?l|Q4$s}R*zQjfEwf-_r)^HQnf;+woL3*IKfdni8peLg?hL8I z0#~Qy1J0o}WDLCr-shMmcX}4~aD#!q_7m4ain#vW7N(&`FVyIX9;Yetv9^^;vc=Ph za>0znSV|Y;kMG~Aq}jUf+J3`!8a2nN)h(kTtvEm~<|=ioX6fkniVQ4eq^Jos&9E!2 z@(+_*37MGEEq~MI{JO9tc&P0;X$dH#Y~85DG8#m)f$uhRx4Bpf5BbU-WeJVQ7)( z??s!on3{t1xJI{(lPs5kw#(V%mgF-U4|5gS{I)}$&Tqftplnz~eIhhMm=Cf(xy5fs zZHwz5IMxSHkJrU<(P4-rw*9s!Ba&ypV=EgM5Z^ zzU2NX;iR4a{VaE@XHe7ZPRhi#_wZgF8f|t0wAgLvmvU$D6TNY%KH|eqPuDtEN+xT5 zN*_=k@k#UEs^Vv;H5AXi;1{0&*SCRf8GRR7rr=tWmyT-JA-CEY^XrFfPl8Tb8GOc} ztLKEa&kw*Nrt`P8sjgPir=!K5_<5mEc^v)0_Rgi} z@hqFY^xs&L%S{(1{R46&L&3i)Ds#xsv4g;_-my1`T8T0HAbHcl9o_03^hRnrt_i&( z;6#iF9{hmoa)DG)kKcjTaoUz0bIl;Q7#LE$P&$Vmc8{%Y6xE?s>yVcLOPkSjAZ+PC zE>{?)Qi~y(C36dQVc9O$mB*2-%VKyrWMqV_$~4adV?g7$HDaJnaZR~+P!bC2B#`it zWy^W{vPNQrd(mZm@PT5bQ)L=8?Ua&fa87e91}| zmIop>YzY(Lhs(|O&jYtlCMgl$r@qwN@SDZ9Y-R2c=wcJwv1m=aq5x=px?*VQ18P0R^SS1+N9q8%#$^|I-GPM=w0QB_uNVSpc1n*q+RXzsTngl*ER= z5R59(WoTbk6aHeP;NEBTvN9@=sczAJ8Ip`FNinI|5cAvh8*CqOds}Lqv50(m`2H1; z@LFj%CjQ`a<+{~d4jf0*i4lAD%P5rCA86Ko@$qx~?3=X!V9VqRLKaCdCE;w1fX{qX zo|ipbR4x|;SszFc=3(RBC7PdJdhp5J-d1&LG(H7mumo|Y3WD5D${TF?B2t9fc}m<9 zZ|92XanSL~4mA6M%2PTX1Hb%y;?3ubvo`EO%ZSQ%rp82(YY@ zUuNxS*H@G-WggZ)n=BKg}&UAb-(lQ!~b#YfX{o^;=ZojlyU5om=6WSha< zd9c5;>x5Kyak;^}{Nt%iyeH#^!FEn|U={IJOWC~D_EI0(sECVnBH0mH*a+Q`AjkYh zlHkyT_02;o_v!Y5gV)rnplqa{{=0 zaJxNt5$L!j7)~UZM21KMeVL)9lM6Dx3b1pk0J5f%_PO7F2lN5<|0MEB9sLXnwHZj1I)TJc7R*4o=mUm~`DTl-{F`<`|% zYU$mEo9~Wq{UQyroR)6r`C!;C*g7q}GoqSQ0pGY|whbd%Ev*BB>ck%_Dqj57Sf}|& zuejg)ZlAfZBVz<^Hw=@j=mlx1m&w9tMvLdEW6z}tApQTpEbu*onfjTsX(&r z?xy`sH!PJOl)Ik2-*^{iI~>`1)-`8KZq2zSY*Xqv{Zi?Sexnq$@0~ov?0JOG|Kpq> zyP_R-dtMvyQ{Y=F5REB>y;zzrwe?YZbn%M)IQsTETdyTn)Krj_Urm>90S1A2KxvPE z`}<-q23yySWf(^HPcquVtD0-`5x%Y60rvQimi!9pDn&ZHm2hdrU5GNL>D6qd2NIDO z5i;-bmsLvB;v02ucvOxQmcAm)IG@nGk=vP?h@#W;KY}8o9HPD?E~qe~|HT0CExI~q zTqVB$ws3U#|4NG6CB-GF+lqn7zNLb~2gdR_tLA3yP|=74^}4k|9{aAprl>#>9jO2= z?9SP>EU&RkR|1#leYa`du}G*?DBBw-{`Fclm z;|Pyd(JGHS^>iy*JIjOu0Una4A%{OJ^_j6*79AqKiGRmm5ea(p;ioF~|0*g9$ccHy zqSGW>fYf>P>b=;y#G`H4RX4RoKZ|;om#+(%dXEkK#wk2+CYd*ku`H6tuqqBo;{WL7 z4pKhMiiH%hJr7k7rf38HX>qf1YV_p3+Lk{`%74(Vj^_PX;yN2o6BvEQnePt;r22h~ zjdCJ%qA;l_VXB2d6SBQpzuQ;`{Qmr;TzwCnktdzd5-UnhX2wL3M``pwobSXt)8b8V zr=GP7`d-b?<8AQi4Z_s4iuj6z>fBQ=yIS+p2gXr3KHenIxy)ZLr1;+`-H_GKnTCn!)JR&bUSKRy-%==U&Dxh5^qg7g#BKT2iH$Sv;j#HPr zcqOB}{3S5cBB0OeQ>)cVz6Qk>+iI&ayWYD zeNBu0=;UU12!?D&f$y9~b5EmB=JnZtt5&7TVc}y3qnCAx;IpEDoiNS)3>N1qPl@hh z1726!(XF?7ww~@e=44~mZ=2Hg=}qMO+=zp|aFNFqA7G=GjBMa;+d$ejVq+<-aB!4r zHvL`S5c)-0DAm=2&?O!b4m^;v^;M_g+_Nv98Qy8X#|xH=gK&xR5E{>K-W#lo;=*yW zvZ@pC?9)pY+G;j^UuZ$&5im|kjVY&g-6D}x!@#?jXSfOfg9_l5uu)NZIoD3B6_?`j zO)V;|N-9NeGQJ+E{&YnNHae5=oohpR@Tfa}XFQ*0; z7#tiJWtM8@2502jQ+I_#U$Q`1Fy`fyz5A0}6L-z~5>i7px*=6i(;29l?gSZd{|ycc zuxkv?$sdeZUFo)ia zRvHGQ+k@6N8pnF~r=w3R_9!rC2GZFvjmCjo?ZGP=jG`-lK1(*zx{uWu{%Eq9+NSQG zcW+0jtIC?RCJRY~Z>r~I-fRkGB1mwXol1mqr5No_-WYeu%9-WvZ1`#_Ue}QsKF3ZS zyLqxA78d~Jhd!G0Kn^h&9PgLw9AA;8ElAxU?c>=0MB-C_C#MZ{vzx)n>S83{Y|D{s zUyQBILIxX3>4uYqrKcl4iaEz?tbcY?^#4V!adc2TkBn>iRT#l}FU35-b zSklC5e%AmGdum|=XFx&VuoVR80MmIa;8i7KTQz(4T`_oCaZ0sZHLn6uw}1EVkC6M{iO7FB;OB46XOz=hpLT1% z_ykI%GEEt~COlA#j0!BNiDRQ2txwW7_ARk<&lT0?E-qyN$0@iPUM1jQ5(ULoo4)8M zH|1vt8NGB?M(3F%pciq2z?qOgg}IRLrvkfS@ddo(jton$ zYdAA@OX=?qfS;*--us-yJ0(kx>uustH>>XIwIxxjV9~xKxU;O zSXC}Pc9#$x+gW}>TH z@Lj~vexJQT>T= z|Kxp6d_z-sI$4GAMSTv?v6RjlmI}wOp$ki{p!3E{4UZTmoy#ilQuZ|F7l8oD9}9DU z(x%N!qOR#zwOswDrCfHC%zdU?m|qmes2ZVE_BRr&F6NGFZVoh8m6Q zG}fp{%h^ty5rQMmv@iFDANFX|t(({FrnE|{uUhfOn_iEUc70k9ZtrV9?u|ZTZt6UTp@yFFcs>sK#vo5obl##VTfVZoW|3L8Ip$%!f?YwROJq|p1 zoHcN5{1@cbuDH^dFL#v-7l<+2FGdlS{_L}ocV&vuP9sNCGAW5g;c$wrw2F4X>B80SM>X~)V(Ks>D<_`AS3K+y5&{~TvL zxRKr(MQY(^@_Q8vG)Gl$uEf|wFb%ldn-^_UUeF6Zxhr^hw!3^shv5b>0t4p zX>DWs(&0x>>w2D5bH8X*+w(tPl}o^bhX%jN9JglLh|xV>H~}lB1dq^n*0Z$=DmPC7 zGox>gOM%Sq24=d%jlKt-plynnjlz3)EN)!tq1l<;Pjq4aJc}EeX<`v)uMz@Z#-& z>e+U`-`Xtt(iC#`dOiZpUh?r6Xi{gdtDL~VsgxlYx z=bl;ztH))P9?#9VRxy|dzY!MSvUVsc>=t6=BHocCI)igN3r;agAwe=djPmz~6I_Ih zf{^#)2EJfXVsb0;p5I!;;=P4@_>eUEcwL+||us3UWw6 zCMK6cqeFJ9F=cQyozSUAv*}Y1iKxm5SYRsB9UX1X1reR+EOwzwXLe<+PtIPAS87De z?ZMnJE^wH!ncM(wF8U77J8_YyR^b>m#V1TU_P93eaW#Mm7@F*o5si!k&n(Zz{E)af zTzhlF>*@%5_2*S%QLcxte`(x_nsi-oVsm!h+kyW#{pEPqTI*Gp7hoRic}S1z;Tgl7 zfuGo1JTMd$3Mop$h@01&7~#7P9UG#iiJ5!vt}Qkh75~yrQWypPU8=N;csII$Pl`JY zxZQ99Le)&J*ZLw0A?<13kEWDY9TAdWnP_k(9pqQj!ph2HRjEI8jaCfY`2spEEW?c_ z-|1TX#P_?IM1a7i7tnmpfmI>S;k&f15Wo^w0NbMcMI4MSKj6%6bJSfcxSAf8w{b~XFguzNnXHJ`w?n=QGa-3!qBW1Bj66O_JK(M6>7*4%WWdn3Ww(2Bc z$pD^3sOAAno>#E|x&fFt-EHD^G*;JiHu9SMLUhQu5Hzqf(rwW7e{0-=$c9~$JlO;y zGdsyu?a3k%m|4KEBsklfXNGH+69alrrgM94HB!GSloiykx97XX$1@n(<=M35!6bTC zU?fMv^*T$~Zo!^_uZEb;s%bwx8 z#Dao5#O~oZPgyy3sr%p^0(a8W26W@*YG6aUi5DCdaiBLjMZ2{##y>$?wp>&px1u1t-JQ@ zP0P};x%$j|a}DL<2Cwc|emg%U`lRT7YB&VDiy z{LP&5+0h^GLC{loCLF$-y8@l{My)X|+uWeFs0K{@rw6yYM8~(KJMEigWlV1sMs~9w zLjOKdCb)RdvUKRWW$wk1oYwQNxmJ!|cjcd7%~o&%J)BB)7l##4sF-a5sz%dI4RL4x zs`FgBX)ElxWy@Wv>uWrF(=@N=rir8%iy|oA2D(7tA(Ool5jg_IqD+5e1N~=|hfUMh zqT1T8i@ehwYdwTVej-jFI2p&3>k|DclIq-fe40Bkslw2o&J3sRA|*Z*iy~KO;cU(r zJiP)%NtbIQ+3c~%4EYSx3ma?NNyU2!NCYc|;BPF!#Dc_@F0gp9^{E71H4w0 zmxM$Oh$LaXv>BZ$CXF@VTUdO4D+^CIlKeK7CTI8W`}Tcx-yMh-`ZY)hI@*ksfO5zf z#PLs$T$_P#B0gRR>3906$VvS$Qz2pZB%)@N%Z3h)t8BvFH){KOo*D<4;c>uaufN7a zT*>nlIUPm@;iwHWJdgjMW!U-inQ@bsT~TvzGw=;Oqer>odHFzE!|`OfI_@Gj2X#TI zo=r}x`mMI~b3WXB6X;H>fy9_*A!a4CsM??kt1Z@^Rr`T+Q>xqX%p>9d6C?jR)#U$u zW300FPI3OD$`5HWVClh~Ng&UHG=jr0~uxWJpU%8X-wY3!dVpYtvSa z9DgprZAoVGNgF&MEmk#G>L)zc>lsz37F68>(~yA|0(+ym_a}cz|rTct@C_aUOP3D@dz&qk{#y$y2aR^ z$wXs5&YW&+XQ^4!=J2S*Sc2KCxp%6wRJn2OAwUO?>$u1ZQun^eRkN&7rMtN>18d6P zLuTvsd|UqiCgl;Ao8LBrw8;i1*jw+1V|GmP1TON?Q+d<}%9`{C7e#HTHg`caylFL= zW?HbVkcZ;O1~!s$Aqq(%0Z;G%eA>L}3X*8TaM9jso!ChW;-QQA^he72ybtedM>5at z#gd3s!Jenw((BYI2?KO&czt;iAt}vX26VSJIEDxYyVp9|nlPpLU1NmQ!+ZvMbcQO= zoQ~irR?}+?Q4z^$IXM;djIt6zLgF@X(IK=!)jci2uRGxq2`LqCs}zI>bPYtNN0xZS zJC}v$1xLA&BB%-qHChs}uNx>VhsZ7(ta7jhSn-WX!5Iw8hB>1Xx^~B~O+Ho%N5`!w z4K0lW&YOLu+QNk1{xnG=&{{l~Qh@IvfU zjq7pb@+|8*?K59G@L|^YN=~X2i&v0?mJ7)*t}H8oc)3nk`ji{3?DXRq%*nIaa?r!cx_^44MZ6B_)40)}4& z0h{QvAJ^a`;4{Pb{6dAv|?k_7C-3h$1*hcr#GuzKR zyjW#!+34GiUjIOq|8wTmW<=puI5YczfS2W8Y4fSiG3mBfCl*#GNMjpvf+*9#?%)H(lSG2X!&GP4OFj%qs3dXAKx*XH1s7%cU z?g4Sb;xfSG%%Ovw%{G$7Nxy7OUDmcC}XG_b~U7z?uCu>+fKWb+=%$-#RPN7wL~y*9^ba ze0WZ&szo=>Li;w=mbAdRo*BP2YIqBllFDXC064lF>NtgkLX|P~a7fQY%dO|9EWGpH z{X=akKW9CH>KNOeM((-Xb1CfceH3WiSPK58>*MEhKXtl4xHZ3`r$)985-N+GMzpmo zbDqmHjyHunQ`bYnU;XhGo;zAJoRV-jM8I`0X0DIk`(Mg@g z3Aza;LaQ{&l*L3BmqBI!4&^`c#v)$V@t?9R5N8JuW&B?8V`wr$wzxv)y>C4tD{0#) zP-Yuu=mBl=X7w_F${qQ=0@Go?cm~p_L|`}Mhh)SXmI@l~$?p^Z>4|Q^>sf*2u8o|~ z{nrK;?;y=Ww3|OCV$kUHX1-jZS{%E0U3V_g$LZe9RWf}U&Mkw-wiFbE@SLumkW}Y% zArgkG&d#34`c%8N@hGNZ8Z6rcG+*|~I%L2xfwT%4F#BoyZzyVp{n1t_g7chJs?DtY z?3{5wDanJ9*GqIeHaju{=+H4x23uo7d$iVcttqWxjmauwYOky@DFPhHpZXk)+I<#F zF`au@l_~)`TD0>}yi($}05s2{+kZo=w^($ZMbn#IPLQ9LMNf+fkxBU||M}D;-@Q3$ zXnzk%rP@S$^Sp%NevqRWhzKpx6?*DeX#R43? zE<9dH|MwWj>79%9F@=bTE&&eODM`g3dG2DFlM!AMQpue?Ma-+aCSg6VA1HWvEl=F| zR3Q5MH&N0$sR5aU!9@rW*~Ofg%CzEc`n40%&K@x|?g1$edHIQ@wyk*=(dkB#-C z^U(fes3LS1BZsx&cYVJk=RTH-8w_caMu!y^!!h_0I8;vdti>FlXZ857qk+$t7Ww%9 z2$DzD5V9+{%ge6AeeD4aDDXdMTV$4Vj~zTBOi#+It?T~x7cCIK$c1Vc))<#2u&Mb$jU{h>n_?Lx6r!U+9H)1EHn zodoY=&s)q|IRj{e?s`tefazIawF2Dc zKz8-O>hoa!qONXsG%~gQT`w^BY-QDkzUxzz%8ifws{I}wDoujuh8G$`ZH+kM z{{kR;^MB(WxGyuZo^iX2OY}BHV#FSpC<7C%eF^f5pZoeb|M<;to!=W)tL|2FJ~XeB zW<9

20Qz5CZ10>zuTc#gq(csUYC>q7ax9mlML+1&q|F==ku8G6arLiU_;oqY+^h zZVrzxAMCEyMDNb!&G(e=g_h+YN+rl#Bo~RdMtoo1VQmbuNP;vm@XHV|+7XjMqOe1e zQeF%L8K-T-o6hcQ&$O6W*QOZ*ZoYv80wfSwI`Z7r4w!Q!Me3xkFd!k9K#?#Szjoo! zaFh@cEIgtvKqLbz`_*&MKn9bYws^xreeJxCMysMxDpY^Ab5y`P zUaM+UZEL+TaKpM3+Z@siBFI|6#?At|bjiyn;yD41sRsbXm|U#|bjZzO%&ITr$DC48 zIU}S+s8(g9p}v|GR+r7mGXBXXKP_hD2x23O&HL3T0wmS_Q6ypRzW@x>vmn{FOGNgk ze*#CkS=m%3kBX`yfV(<9*26AcBKPFAi&_k!$4J%2!SE?&Lrn7+&Mdmg|%dt>h?IpqmtX1J0DzdCov9x1|UnNdvS`^ zuh%b9HE{nrK-xALEyg=r^0jy#*_S<4hH5eWEZn zf*Cp|ssbXN_um(O*9m8<<%@ytkUUl#P5`k1ra9D4>LmQU+UFp3YQ$d$GBg2%6k^!b&zO zfUa(VRc@aUlN z|KrckWhaIBYUV>_E)A}iQyFT}$m)}iQ*=9;NT@#kj9#pP#~#p@UQwsvWBjS{b7AE! z3YTl->~>+p>rvoG)>54=z!sePHdv}Q-ONjK`jvlhG&UEs(mqRg^75aobNu;ta(sWe zqy{h&L~pvZh~IU00D}2?&U7JW*Io1MePwrD_Xn)b^ z&rZlO&#c6uP4*E2vsLd`D^)a_P(h}0h3pbe_O7&jFj7?=h2P&Z=aq1~2Dy6km{>Sv z#n%uHHTjNKfR%X#zajP&h9f|Q{XZ_eRk1|cD^chM55Vi%ck`7kS)-I=9433f7w_0Ad+}`E{X+E<`=H)^lT$%84X{DRSjW}Z9Lp?=xIPzew{2C-^aZHu{+(r& zSdo8%U?IZkBtzb2nsj z)w9r6C97MxiX+ME;QXduyWYLc&;>XzUk&AxQSiSxdO~!`0$XGsz{!UWvKw*qsxEAm zw?OKx?n6>^^v2U2L!vR1+O1eX$jD4CpMs{TutI?Cb(Q|t)~Zfl2KWMEgSCQ!VWeZH zV6bh-K$w8gXrq!#=;_lRL6wPgAeuX)OcEGt1?BXD8F=nbg_Q|BW1|4UDq!Tpa^j*H zgAY!=dj=>=vq{y}UX$b1n3Se%TVzsJiX>Sv{k-AgE*o&xZf;Ij_9)KIW*sZ^5bK9# z1-5=6ZA81;UH{UX`CDK8@?L|j;8gbsp?qW!Fd@5wKm6nwb2>vGEhsEQYaHbgSto_l zqFD8{uD;@3HhKhYnl;mrorYFAsYwio+BsF)(8)G-jbfNA_trUvJ38!_T(0A{9mT6R zE@nosMtvh(0WT4pSlF-eWJR$k7;O&f-wF{|MBK;cwT^JjqqBt#a`%8%c6tYZO{8V{ zRISYYFM1Q{Y|6)Cw0-!&YGiB2!sUTWjmJ_6bp~iz+qj;*2k=dHY-JL5ZHX9Y)=S{A z7Rb+{{PE{2lqx_n{co;O zJBd0xmI5h*S}}sFu~wps5N;UsakuWlm8jB~IC=EP4r=t&?n6kWg)eKUS5=+dkv#q5 zj?S${bw(q^jD$t80M;s^u;EcrWRc?uiF7{OohFVZsHBXTEh(ht%Q?n;QcdTW1)aw< zT7TT`GR*2s%JheXCnB4eL=KQ~_&LUWV};i-h+ybBG(@E{=u^}bhgW9g z(Q4Vyp334!#JcPReo9+y;;t9q-``l_Vi`E;-;^*=SF6i*CcDul|Bg}HBE^CHZ7+AZ zrTT$bqFV@5p&E-4T?BU*7d`G876O_QlDiHd6=t5irdC_wVPw>39&S1Ar$-eR524z9 z3*{8bfN5DwF@+_Dc@#y*ik!qLl|v;Xijk6TwHoWmeJn0z^79ENaxAOr=A(C=Li|e^ zaD13pt>+c1Aa!LUm$`Wy%~o~gRy70H#;4QM89A_&#p{$pcX#U2yHX898WSRfvh6^~ z>XUx`|7;S)`f@t+DZOIsyB5)=_P6`>%L}2>QiflzKq#)oMW_G1^kfN=;AC3@VJS;M zs^O4@p2{qX4+uA-%i7Mh^IE=`Ge7vg#fy^M2HQtdN;6X?qxHDe1k5vahJy|Dj-@kc&6<%x}k_5)f+hot$7L%`~iptSV z5#LNpJqT?WJzAUmn|8biHow!6Z#<0>w*?BNv z)jr|8efr7A#326{C>I1`QJwoC!lUImTJX$3igflkeIx#AY)&kQp9Km697pZ_y{cYH4^8%b(8U zGgIGrwbVLW5z`c#SR~0*#AJoHmNcg|5_noFx<-+qh;5F~HYAb|n)QI6;{SFD9G8Oo z6FUa>#_{I*?w{2(eEVcs)8TgmkE1|EDvZM9vy$b>UIahu7pM&@=E9LAEe-8au=FwR zI@FPcrutRdPpa^Say$_&!Jx1f?2w_2;8ccoJVi1bFjf{Eh8 zF;$uUYb%#^5n!cn{}*m$r+Qu`fwj3=#^WSCQcauaP^b}#xM9NVZcZB3eOS~oN;&PI zr8y`ZSHAF2nKm0KtQz4w4XxucZ?L8YEY%b5O4hH>F(7*~3;hP2!}>9H`)eN=n49!G zp2^B0mJ2imZ=TF>Zg18l^UCR1$of^Y(p4Ur+K~qN_KBhCaOewH$?Qft#Fd*JR+Rf~ zq39oAm=Ni>wZhhq-AzA@Kr>Old~i7^$NC7%KzMKv#YVqjjzcwU=#PgkfRv>wHbk6W zrzDgV-7Uar%j6MnYgn+{0%R5JE5`2>InSeGA@#9_O{|=PmfYeE;kE!>bK5pI6so-= z^{h@=5#QzFCzSg!0eGD*r)Wx4@T6=BQph;LXMkJLahYnkyd)`CN2nBE6EH&lG*Sa$ zziiRWA7XdB`Z3vvw7$CFA#`V>**Oo_)6x?k8s8O&t_OKe5$+8_JW<%|>=EvKya?>?{YnPm^#X0oJ&v z;r_6oNHvfqB%_OSHC0vnwcW)DN9ApivTQdD$K&-CR3<*Kb57rHmNEFEe9oLlN^Ep9 zz_F#p(>fU?kUtUKndfiaGNaTAe_l*=f*jDx*8E)g`jxNkKKiF<7o2;yr&w(eg20b$ z>8I#7U;YZIlW3ZB6Ek96yk$+q?(kK|WvlaY>S8kg+`K6!a`&$i5>KSt3@6fLiBF3m z`_e&JofbWFVmX-S->ZVlYwx?c>g1%&$(wuO#Q%aPW^Kq$Av8ULP`?x}1 zA|?=|GQ7=@67VUEX}34)OD7~GOO#20+u58Ac4S4)9S$^&(2%zv8B)fbsyyOO>C7RJ zb931T_Ca$p;=R-0OMdsnFFkXtfVAj?wDL;B;W7WX#aPLyk|+^m4?&_(4dhL)V}GU5 ze+o=RUIpf68F8(txT>}KKCI|irhjR3>{aMxrKQxgUFAy-CflrzFmuckux-Ii9piEb zH-0`wcB&*&n6!(bY8^@YZcu>RaePQ{^U~aVSjThwOzmTa#gLu`vyLG@usbmjmYtcBorKv zSZYf3sy;FazzV)496bHmp@5)2WVHCQbIk};Di0{@SIwR)suKr$mQFJ9O}lb2(@f?n z?Qb(WN&v&?vL?eU0KwSm>UDr8<3WQ(q%E*J(msUDW`wrC7^TU_lq6}t2lmF(_Tsh% zO$Cx=L?0kGm{j@w?Y?{H=X;D|fJh^HjrA@o#z2pq4 zh}$mPcL2>v+ULPMmg5@5>ram^*&_ttYs8;%nZF z`GAzUrKx|CJ5$R>`Tsk6C2tMRE6&g1{CT>R&|`7g$xa-bFWi?t_>XhSCTN_$(?(^+@8!3Vb85QzOpdwy$fCyL*z$jBpr=X)hFgE^J#e>jhiN*0)U!-zKX5wYD2+0e8-Io#&?HlW^YQuSYaB*1dLa5aBmSnPouF_ zk;a)#X$7eD`y0uy6^cKv*Qd=HknamG)05u+-n)ifQG_@FY5; z$?UDYX`eO}*SGXnH-A+gBQr)({dPj+6zW21P!cDvw`kCEC`w9#7m1~`=f8*zD3Luk zeiL@iu-DvfWNQkoz4}h5d;Qa=>Crh3s@k%3Z?fKcP;Q&4L8clAm2U-I!kC(%qu~k4 zHtYW+?kNc8;s@ueVcM}X(lztU zE}mj$jC@;MUlO^`lxpdYOPDq(StwYu^BqCi{%M-%tOpk}pYGU4D)1$oWtaE;O<}H++ZzNp!1JfdR(d0j~m#!WzTJ4 z^Ue`giOx@ZM#U1F;EZDCw@*FT{b8H*YhjkvS0hD0*%f3R-hAi_b%;V-UPTb=Tyu=; zx%VPmpm*UR(c!h5BSNG(NuZ`BSU(NQn|d9oi;?^^Jjie;O;}q5jdyIyEZ>B-AYs1- zsUaQC+{P3uvO!wk=#$y1;R&V~Lw-%Fk1#!~?5wMiub8l0qG6n@?X(*(2i`zcVU!#Q z7*uEc^iKIIk0^M7DYTBg{VPG{^~%zvrg4Y3;h7-3Vcc${rkxTznfB(}X{%e@AVU&H z-hP8wlSN^TP3#Fi6E$YCq@&hRUWR0`kVxj9F(+6|v-K#OV!#BSGqWr1dK}$$XsF0r zFG&~+S9h5U4;~~GgcwO33F5}uwLstPvjX`>2P&g`as{u6$G*!Az9$M#Vb#yix2QdA52%Iv&^PuJ(%5egwu}oteF}oPhMmC` zbKCBHHpn8tHvWppxMjpq0>Hp@QP@dj(AdTkFwgZP58n z%}8-prR=SRQ??h_MD}QT0uK#@ja#P?nNakZSjHMlVkIRmFP3iLQoRrkJfDsCyZL}C z!=4u{KN8JJxgH(eHdQ}yPvcm|t?!nXTNJ#KuVAWh_$|kZ>W?OL5^sukpxJv>NUi9n zxb8HA?r>-CEMIS^X$HKJD)vj;wwtK+-rZlw-g?JkwZz<)QFmfofjC#GEs#s4u?NuN zjMZW1(bn)X`QTt})?Tpt;YC{AYz)2ZM#=^6IqX4Ye~D*eCJhQk#7X#*#&Hd;`@;{M z*zm`*TKLX`tHKo6#s8YR>*LT8>lj$Rjc=fb85ZKBDAJTK?8_+@^iK0rPtyJ1WIdu1 z0$SXs$IKI)A9^gGSxd`GgtgLN=<}JJ1VHuzH%}i|p|1fN{AxefW3>XD|RwlsB-C|C@_cL63yYVUOckcxHi7OZm z?SvgViF!~6Sur^7hTHi4Xqse{kNK#r$r~T>)iE18kYnKE>MXpha# zK5Xzc7(6u2vgN)HttTXqSqMlJ`@Pk?W!6B0#mV9R1J&^y3_uEuJ+!Is87t>ZQLQnb zQMHxrkK2K~T&|KQ(*w##<-|Sd)7PIC@~e(=rD`sPJV2+D2j_?_sAf?!82Q4w1{%Z_ zgeE785TO-_=y=|SU&$sHK!dqqHQpi0aJPrnNTj4R3-Oa%I3vmAE+0p)h3_f7W9^sD zetYG|cF<*jGy3_e*|zmgIP}stsPP)oPu<+@Aw(^#^+}KQ_^vy3-)&`0eSi`^$Z`)x z9;Q%SzJvqIF4&Wom0FwlEvU-~Z=8XNb!@TAA;%hU%UH|B+UM2^elSipEQ{d7E3luR z*fc9b$Dv^QZ6oI`%+$T@+zFd^9etIWCk-lGTT=Mex(&Wa$MRHt_{IL9x|?cqamTP` zb_nXs$TD`K4#)Dt+6j12fGZm>ZfllxkxhHl-ZXGwIM0URd-Bv7JXKdsZHH~p$eJ{! zA^4Wrng4CSm(Fiu|H?C+x}2HXpOuL9mFInkFUHLa7Af@%n&3%@^F^}tqgD@&{k(Q@ zd~=F7E0|p&ref^=aYBun#isNdn~%yqiHQ86Lu57nkf23G0X+|)mL%&w7XiztKz>%L zwiU-B8!xRNyGP`wG{1_ecB(Efm{Yfp;tpU|1AE1;0zVU;Bg1neyxr_tMSp1(JIKU2 z6KkjR?;on5k-IyRVgULhUc!ZsAzq#rPL#0-Df1_4b2^!#>RcAC$9Jl`8*?czW2m9D zysO`>?b{_dZ?e+2b;#BBF<<4S!jI}TUMu@oc3QxzQcRDdRSA}qBd9Je8(g{>tZ$z7 zJo_7McKr+%$PytkV_76WbvsO=4k{X7=kIH=50kxTn*J8awvQoivw5-k$DcQgCK9hk z0jz>vtWvtJ-W3fw2#IBFBXRKsRYZKnBi!5xfbh%jA_T0NNycu@rzVV2 z=A&gw{}?6yHwsf*hp3R~Sj=J=U&o$eTXT~av(kv6;e=ob{>KdFIy+-*sWLgTm0lr1 z1WP#jl=u5a^WCI|3qk8!JBMHNJ-`yC*6|5E^qrII^UheOK+e>qa&~1e#=SOcPVQpg z{VeT}CMfpqCW@LhN!RiX8^ZXUZ2jSnG?wh7!o4L|W7}F|S+Dn@Pr>L@*CNSvep zOMlO}hj&r*2!(PKyAZSeIsASAM3)ep08I6a zYBzp`W(8jdlYP`N`wLonlSJ<(3s?Gfp;wIJk1N#MLm zcnib*=2>zlaRR-I#ET;0=|?BFtbpFntGO-uh+hN|CAg*ElGubvTz%SJ`fJ=x#m!4N zAbpM+GB0G+;um-=`O~M?lJ+^2o~83WUwHtgb8D}AnG4N^7t#;KPM^yc5|>$VBtV2arZVYt(>%Q#qqNXKEFf> zZpY>StJvViqfX45oKm-YWW|CM@uavmJ(y{zwuM=u?^g=S)=CPyoo%C+m2Gt@#<<8q z#Z6Pwb^3;|%D>*MQeiChP>nfg+`J>ERFE$SNI`Y8jAJWrApRXwJ0n+xYyR48v8009#@z=Lu@e)ioQIn2CR@r>^ePD2pJHon_8TF)6 zFf&|%@>$!apx}ae$96tZ`hAQ4^}H>c!{`+_sSjCok(X?AB1v@Nh6w|7n zT3YW!a7EE0R3YW~o&0fg>9Ht5@;}x0)KU?EpvDdj2FeA=i&37v!^L=it8ka`!1V3N z`{#YH=3dP#T-0Seldj!sYck_b$3&~D$kUVxb>k39vrPVt4))IMA zv6eA~IGikz9!{P@s2RmcFbT(0X{l5LU#2%z;3~CXw)y72LO=BBoAeQYbS% z?BX|v=I#%+hn8i zEbqw=7V4Bd$fRrgU0vkaFRR2ii(i~q_jB;evNFpMvrBK9z&FCMRC+KSeo#`^VI4F9 zzpn#y?((f6?`(S>m0Oh_%6-Obgo<`3#5gy>T*Sy!EA|^p5H7uy>!#yO=IzyX~e3{9*mCo&$W9#$#^SZ z|I=(Y5k9`zdl*>_Z5T>gFbyumV)Vd&xWP4CBjAff8N!r3Z@lqM6jZBV+RCb@t{Ydg7PyiS9dRTP8^Y`HSlffsz?t%WVx`9gyY&hnj;f4m*A9NqlAx=t)T zEtp!uLtylg^mwywW=C@Ed--^i=S$}%jXh*Iha@&qE-BF$ux)iBlch^JkX~G2zS!Yn zJ5K%p`r-$fHCm{)Ya>&~_Vu>mUH6=2>Dx{>4?Qw^2jVjxE-CV+SW{C$Cb9gnxPC!Bwzwt^Q| z{Cb=}(3~$;QLlaTb#3Arz`34d9j&?3U%dTCY|w*OK*VBC7g1Lf%opplMW^}-tNG>* zxI3SEXW;yI>g~XDesPA^{96{T!uR5x$uE3j-*YccKSWCOC6)o7(3b$h;}iS|;$NnI zdUqRF|N7n@BJ2?EgHX$8fBJSg=aM0Q$hMY5f1(x>_mA(ODey1fUZ+OKKi-2cesUbT zWOW94l}BD_Dh;5DH5A`&z>&4di%(UUUbl?8V)yYS7$Kh<7NQw*J|uFz(M>q+t}H6W zwuAHKQ6Y7Z9c(f!%fvO(ZeEkEx6|eB@3bKtp-&hK816L%2&4@9WOfrrC@~IS0&Xs; zpr8v^{XSoum7d2JJf+nkj<$ZJq`yfi)(Z7%FRpv);v@G;0(j?d=eI;ZAA0b@!NMcU z$p)D%%MFXQL>vqi#eW$6T{JIgIKCl)6o{OJSXihmyM!BtA>i&-Gg6me{fgN{Ro)s) zi1E#3rc)w|BapyHB4Y>9#kcTmYF-etWpvBq~H9ucJ0J1uZIN|>XrT8TF*yoNx$bU$SdaF+O-z910IyGS$gb$3kZ54 zzgK;%x}R$0$$RJL%x-2s-N6b04|$rudEv}v$7iqIaiaK4FJU5U(@ogyWxtMi4{qn! zu)NKz0p@nAG-Si$SYR;zOcWyWLOTdqLdwH+pV!^qY?07ywkAO&e(M>*W=w)>XvG{0 zJjXW)J{CM$$bXyg`ll|}ZZte-V zAi$%r`S|@Wf{^++%Uh+Z-Y!=ue=n<8bxOEUzViKYrRrT-*~*#cyKCc*H>HqC%9MoT zwYzH*PBf>I$jVgY2_P9qeE-Nu#-qy~{k>NkYaX5cf5qeNiK1gn*ZtLi$BO}n{Y@Q* z7hfy}FE#o7OJL!~~YOayV*ld;ZNUth2T&>l8xV#PJxPONS<84( z%r7t>6zh@h47%usWCmRr0^XpD0%Y`!R8Gqv8PslT#B5ttdM0~VHlKQA2P+;vz*^@t zUPbsSEM@9<|5gnB`vA96uE&JVlymeG*E@~_7n6k^_v{u{C;Z=eqhQM2xZdUkU zc%;;z*+foc19yj)Oq8ZfVJ)3m zUgij@9^mf!TFTbYEK>zp&9-1hgng+d#R$cAqfqIf1cU|ytZOGxXMNZJ!p&;1xk)s-G%IEQo&y-I25nG@ zS*it~AW9>avh^=J6#1|y*5$+5{#m}ES1lFj!?sQZxovaCUK`P-T(A$6iuL|}ejSI4 znYw~|8Q43J9v3s6#z@LVTkK`~QB-x`wfn3(DCHe&!KwU>+*MpP${r~fC*nj=mkjBF zlVTW(HDscMWg=rN<@X3*0V$KDlyOAL6)olb!5wms@F*;G^OcMgG$Lo*D0o}Nh!1X- zzXhlAT87G0EPFf(vdE^Ri%b!fN9T0v*^piE(k7Rk(M85%4ZMsuO7VEbb{cq@42Sdp zcf;3GrivO=F}wnxyp-mMmh>XL%1VUUcKf2zvOW_xg zkll&p{EWhSQ{i}Gi!Z^cAUH!!cdK86;M?i;%t^ndh)S*;&XLU+O2Z&7@ z2BY_pmvcK}ru&ZYcPPXRbV@NO<~JxEa6!=%k;kdGV`S3F^>jbhXU=iB$4bU3dTHNN*&nL$WgW7f3$_I_-1N>M2*WrRAG|=THC#SSqap z>uN+xKd#5{He_xivDR^hd7-e_q+Zgtec!P)g^(=sf6A+Y&sO-Mh0N#}r6!TZ?NmEVeC3FSV=NK@4Q~tsxxSrThNsZfVW- z+jUc4-W#|F;a6pqlXvgl8wo^#i2)If%+OwW{arN4tOxRHk53J8n&F-IO~Zbiaz zw(xjm3Ar@Cv;OG^qt0d}mIlCqlFUYd4&30N@3%~iD>J9tJzl}^n==qotIUPiQfEsc zdwj`Q>r4buZ*mm8J^EYU7*>004rpDoh@4wqBYKW(h@QF&i^0w~y4I^)zdQBO4AxR- z;=9tUCBwl%O^@+LVln^^ePSbMsy#DgFcSHKi}5#DArM20qVVZpx)Wa=qEuzwoj`r1zZ z1Q^c{rL~##$40KnOQyQScXR3Ru(~C4rAdN(&2D*k`K~hb6soXJWRBmEki0MTUveU! z>*S=5pp;|uBUEg2xmI^#GW=FjUAqG_`lT_9-)x%!W8rJgHhFwb-TucXEi}cVB5Kww z0@Quzf#Fpwfpc=9F@#m~+r_sEikVid8V95Yr^X|5`(^54kY+QCA`Igng)rt*vk?e- z+HrnU7-O=JJAS(w?w=i!AQU52nZhZ+CK;Ln!{Eh-ixyQ9iMXYBamq*$IqC$J9M9V% zYcnTTz1TUW>)Y^;8OLiB7o06*X`O|`&otAWaRxlZ#qbDUB%`_>Sr#=1Mh}20)Ly_Y z;Ekie2e%Mk%1p*#FYap;u2G_B9@+T`a}+Pe`LM5E;9ae6rB!pt2-r;2_vdl^l7}X) zLkE~WH%Q+#6-Vs(1Fgws&p&@zc@~VE>t7v!;efE?U|@)-kuTG}L6;Z&xC`B%Kbl>t z6`2xbuzGWQhajvES$zIq(!Pfq0{(Xw!)nJWGVGQ`!3vKokE}IeHuzXETii!xhXW6_ zz1J5ySeG#~lbW67R&PBAl>FlK3wmWoZ8%$Sk9>-YtpQ=Q#SCc}SRW z_rpD~uk0e0@`{ld&9;`K>A+DMUEm*Ad2FeE+~&B53we-re-ZOMBwLB=TA+q{ z*U}(HRBXHt?=BH0zB$BB>EBXrD9N#69=H4sZ-XWHldoq993%u;RB4d2?|!Dl#il=H ze=t4U2bgNsv;ck#4{AJ0bBy!_&4#PIJg~x9~DRYj-9!f&1JKq zGLZN^%7>NLuK@knI)!g%U?t3#E#=AM$8{+s^U58oGyRWdIiI=f%e1x4%9)ESC-3qg zrFmsbF0HMlw|!1V7%0pI z^a68kgaey{b~ciMdR$6JcITZV7d=Pje*nd0;9q)auGRBl!CL)N4?ed->p{iGz~`VDps!IN4pe_<4s%+Un-V!p`4bh? zD5;&Rw)_875n-m;h*)GUx)RIQvR6Rn$~`*XIj>X#XVw4?-~gc0wgBh@?a7v@AfJk9 z6E6zd*a)F*3V;UMvr*B4baYHy8Im(_OkJ1x5SbIMBxF~ZW2_eo;~}fNdaNLVq-b)Y z7Ay)!K|zD$M85cS0gf<5U+i#Y%%q-CZC8N)Ot~VSDd+Y;d+{LO&i3ewb($sV5J%>A z`eK0@PR}TnXA=00m%$w_$Ehm|-SF(5iERp9uKH_O@NPTzqW(;|0{i9MjEfHtC>p#? zdha8Kc_0&T)Nk|kC15LR;2j^*v@HA&=(#1gTvGjIUBEOb2r-a32hU_=B>~4tdnJTL zC8xB^B+p!W>w)j^1It4t4%)o9IdmN7K;cL)8$Dse69(R(&Yj8+L_0k%N5DIH(t6Y( zapaSdjB;?tRW1KAiEhhuN0P`XqN<-GtGv6IW^q}^%3q323{qL2S%V7r4AYYmtD^!TZ8CyMEzb1Oi<3(=e zac_9VYpK)Gbco&*ypKdL3Xnb^eqY1iaFNmWrr?q!dQk9`!b2dIU6?9<@b21qp2F-y z%6!Dm3KoLmcxsjT#C$Bfg1bBa3+|toWFG7!xk=6?oS$0Ib$rw6&v z^{hK|K0~b2dA3+%dtBp)!7b8C@(F$IlSXL!mP{GrBG8}B7~Ncw*dgT!q?2XjliCl3 zfW*d4CzFMo+&rLS_~aR-Q;1RQjayDDl3b?UameV7_!zy>(Nl~dm$~HRnbDWkmB^Z9K2{Q(kqWGG384=If+AFS92a5Rh_<$ z(^-bwL33KAFE`2(j?iP`xKkntowRj)^}^TIzkbr`-1XMj@z&VwY^;FHT0)AdcY5hyv_&-d<;3_vWtlQbrnkP4NCFg5YGQ zxcYAIp2J@H-}>|OrpAhV$YR^l{%ok|$FL<;Z>|aUrgJs*{ZHltHd+0tyB)DlzeNVW zih^nUWXx(GR=opY_kzK63gN5f%mFaxu-KjAG{WoE<}FxlM_KqV)w$##7O7a(v!lw)AudM9iySpi7Lrp?@p4Qve6N0Y!}fytoBf zcw-r^SiE$`)1uLdqgg^HVx~H4J6>>Dj81m<#cE`n6~wj4T+#v1{eu>r?!HRula^U36-Fu$73s#hkI+wI43DdP$o2dR#ONhOQ{Lq;$QC1(RC;|E=Q( z2Aq#X%;b#KDWKZxm5FO)O9ITqr`;6vCQX)3Mv<}7mgDDmdDDEyIj2|EvqiZ!(qVaQ z%3zha0*(M{&7(YyOWdj;4o2(UWc37MkgCL{bSN(XW&)EfF6|5jW5B$-A9;t>7>*k$ zXN80TfCzqr+I;d@#Wtonz*S2zyhFXkGE#qv7}*V@cuAY&<>?e_1k%(5!$~F8GIZIh zwi(mS5r>8Eq({J6$+J^IpleCd8B2>!C%ktSzy$08?VVf&F_ljL{oY zK>;*tV-53J?>9dn7@wz8*bC}=xjJd79g(LdF{)O*BDiCqcTGQ`_(H*SijbLj2{=il z+_C!#H9^B+g*hO1ujqd4KSLlFh$s6cIH1iU)!%ZCX#lrN+(tywc>G(&dlB^rA zwCaFKw9eV92kR*a&OhAogIAj39d(Sd!;mdHJ`msWGXnWTN}*Ogorompba7#nJV*Z=_ZcH5CGi-knsFhfq3WV##Og=~4Bn_a>t5 zgSPHYE@mIueJtx&KU>Bh9v0x~0(P3RW);e`+BR|hzz{bqii2~zdO!)gsmL%yTw>&o zV!4W>$pWFneu}(Aq@Q|o9fL3j(94pib6FS<3!MQ$uj=Qqx;2Oo`-U$7p`R2I&SoF3 zt;7k`r7TSZZ8(TKL0voaomkYO;pQR417XLPI^{b;w@9y_9C>9pxFRD)Yx%}sGz)Fd zhXG7WLB~JZN$snDESi=Z5IA_ADk#J706{>$zjL{SIde`{T@%2o6DZX9*BrFYhsji$Lc3yQ6?<;@jCkNj4%7t$6>1MC(nvQOrVPh-Gb&jAHk%2xHm3y)k?CKxxTp|CiwSGQu5UnGFa$xwS*BDzFzq z^%D!}yE{}$8@+v?_EjpR;ZVN}E``9A?;FFkoWz%G0%9ZX;T3Wr*c}eo=lY31ZLUvd zR(NmhcfOuTE$%^{ddAtWD3xV_TAjLd+Dfb192MTDH=%)1-61>F5;@Zyjsj5+Dng&g zFwF%X(zl;wQ!xfH(F4ZSN>BuOiL=G^fp43jR?J2pO`^V{?^D~@hv+8W0b`Pc4Eyv5 zVPpRI>?Gasym9zMh}N(FsA0o~l-q9-W>gB)SS#6)SNc9`Ssx=!PZpT&2g>Vq(PysI zXS#k%Jbc`szd(#FJw5|+eCd*o_1YF;)t~^rX!*RN6Gc&pQ8`;*uGnW_P9SXx>ZQ}t zas;L{UN+T;U-u~lBX&=1K~-@p-92HHouX?yuV;cPT|_&R#jX@Xx4~K^o?sDP!m;YH zUQUi8(fO2(j+ML?{k@%gUBej&^>rW1M&*g`zP>Ib+{JfU%)8U>mb9A?X6r(Z9 zQqbXe#0WC3W)dwgh80^)RvW;hwW$ewy^AZk!c(SU_CsAr?6f>%?&jrHNKVS9P({V2de6U(qrZI zqV~@RQWCui;YcnA64C_JQf?ztNE3)_a&%By*Q*h-IZ-Sw7wXdrrHyP|R{j#`Jlb`F zC`%`2=wmyfG)4kzz0~l(N;KsbiIgJ!&c# zIUo{U_&RZ_^WAQ4A{Ac==(V$yW3M3sslxH4Gr*sc4~ST#my~;>QbQXfdZ%iPxli_r zwrZkS&r7Kv;zfuRQt6I)*=(PTsht$?wUrWGHYHQP>K72RYjwC&;ZAkr3}V&1@jEgE zIXKxcQV=KWRisl#t1+^OFeP}}>$A1P?mJezO@W1`Ib1pos@ou8ig{bH5_L0FOi3sx z#qZFMc-I%+lo6LiEv!#GGpRoKYCresh@y86*1}dXZx^@hwA3eWs+%7V8fO>IEzzev z)m#i2$`wrZFQjPzw7@c=PwNw%YC2r$RD{_??G&{tR84iBiq`3q-lP)4k1eUm_?KyH zEs}0;coH>Q{d6j81C~1C4f81`Loer4HL`9P(r995Nl(ZcEW zjUd*yM)s_lJp?j#^sI^u?)y+-wsJsH=_9C|`8c{s$7EvCG3z*!i#Qt_rDRm${?OVN zZ5b!l`s~db&Z;d@GP7QsWrX!Q%vMHWN^sxNmuGXfjQGsXmVrZ*0c0|uTXvuPN>QvF zHp_8_uTzyJvBMb+SZ(jWms)p-&p(Z1{r>Ra^`#P1d&k?+K_q5DVE+~&u`wr&%z9_~ z=Pm@xob~B!gr6Jg&j#?P8g+T5lhMN|!=$GKymVN5Mq#uXxp!oxdpx9>=5!}{Nho!{ z6s1yn$WP2$!p$tiJ?0}*QjZ4X9=x6tWjPm-?p?r2>*hS%06%ZaJPt9$*kyjZ`FlD# zylZSdr;?d>5nfhUu!^L6-Q{id-;~u)_w=~uc^hGhY^hMb7k|=`==$Y}J3xmW<3`@a zbQO5!>FDv!!W$74x3s47gXa~aN5HG`aqz;t7p={?@`>~{nO@JN?|31W^WajF{nb0O z818jk0ark*bZ&*aJZ#bC_o=r^v?}UAcTi870Qy9_XtZLF;o7+bM+_T5HFc6q6Jdy` zEJ{06PUhhAorj#gpUO%F&pUC}x*X8DSd<8A*YyiB6a8XzotM+ED-egVRwlk~Fh-uc(;{PQVfN2f>bUW?+6Qk&-QqBGsjGtcMj`Wih+a$TwiwOPT+mQrmoI;ASBc4eqcEgBMPMVCdit?(Eb z?{RwEoX+zy{qz6k@O-`QTz#v0IeJH{o$dC{=<;ss(f-^m^GeSS8`IFu0W=9DmU_u4RAzR$1oST&jvB_)VIlXb*ZkLt6ej-Lfdpi&$@P8 zin$(}9Xl4g7<(rU8W$ax83&J3#yuT(J02aM6kiaJjc3Ly;;r%C_@4O5`1$y65)2cL zK@uVP5DbI?kweUo21qw#0x}0VmKc|qorp}NB#IMnCut;YOZqZtJ2^Z#AvrhMn7lLj zhZJ7Qc*+YY{VB648>wqj<5F`{=hHT(C8rgo;nLV?$~0TrvuS_Qrqb5Z!_!mKvFXfo zMY=WJn|><&#Q2ZBaUTugk6d(O6{!%S2AIg0V;fh%VGtFJ5e9_<{`97~cxvdF?mzU15tuF1l}jeqTmqO6Fy0_T^mhRxl!1 z{O?MQ6w3rE-`oD#JvVSg4N_C;+I`PnR@c<4Dpen8JGG9(-(v>9$BrWepM~BYYMgRU zBd6Jr5%vl5;l?@bTzYOfpNKd`o{=3FE^;Aq5Iqzfx@xhYSTxpg%erZ?zXB$*3|Wi( z2K5NF4Rr=}9i5CWL}SrRv>a_ld(d5Fo63^P^2$zOk}>%h9EOEaU@Vw3SPYhlt-`vn zZ(>0mUK|zIgzLq9UVf!~y8N~BQM@{yjNgX;lyICtB8Uik2v-Qt6V{0kVmXmTtRlLI zk4U+sCDKLGbELl&H!GSd1}lzK+#^eno#bKiVe%)GV-zICNa>)AQ)VbvD9=;almqHU zYBIHuilwrs3R(`Wn$}F~r`@1^qwUi%^fEe=E~i`Qjr1P+Bz>9w4#S2q#W=)xnd!}R zGY6PoGY424tOS;d)y6uSx2)vFvR2Ec-AgjWfpihVz#TaHU)$ca(dd`;|My z``LFXo2{?iTL7o63USz1Y|d{X&Og;Qm#h^k6egQ`n4sSZ&`s#Da1>c{GD8mMNy=3}j` zc32zKeph8vMX8$CCF^XuxAdNRpuBn-Sout$&AdA<`i>*8DnOcWoDDP-rQ;4Y~F1?Vm@cSVZLsDYW`^cYe8Ee zmOKmELbFIL21~7_-7;dCwj8#cv)r_FTYg$0w>_;2>!9^1>+d#u+g{r(yQaOxe#0Sf zWIIp}szd59J3NkV$GBt8u~?m44Xtjh?x{Xiebs4kdR-B&bXUKt2dblNa6{b$H=mMB z$)My?N+}JL4$3g)2xWnCmGXr0f$~3f7xe`VMWfPmnH%d4W@k*1jBC04)R4!@|X+-Zu-wPqkyf?oW z+k32VQoN^+DMpI_k#I{kNVZ9QBw-SSgeb|Dh$V7Khh$W8QgT)DRPw$^yc{0?3ltm> zfE;u}7F0nS41)p-a0c#x4M&iNI=6QJ|vWPE;|CHC%hA7SO$`@wX>#H zliP%wzL1Z}jdGtnBVUALRaSX&^M#-z@C8)x&5&})G87!j4=qm?*8ABMl+;pcFZGZH zNTa1#DNULuEt57#yQHJi6Vgl42humvZz)Kbh0I>&F7ubcWf&P%#*>xG>Sdj>5!rFs zW!WRy@3OyBIpyo+&T=n#h#VnLm1oOE@*251xXC{Gx0%; zZFy}aZMAKxwx0#oniS2C^P{I2ZqK)2%wRGE3>m|cI3*UvEpMYALJ#lIyY`-|sga;E zePvwl+_T*ts6BAL^H`Vp!J30tyDbiF=~;Qie*}Moe#CXedt`TSNAFKvsW zH6C>yed*|*MV>`!v0xFi$XcvibS$2xqWBJF+ zEm~jsNBvs=hw^T=2lnhs`rWVb>*s(ZzJ=I;C!Gli2iqMqGiajtb&Z+3SI`Mp?6k~%5 z&eI)5b=8LK<(u;CyFku!*rH{;CC?{%TkW(-!MB*0#prOL{c6%|`w5L}l*{*8!}%6O zc?hzqes7RiBy7BxP^7;5KVjUg#(egTYbtUuHfhbBk5fbldey1{n+#@fW6u5}*j|i8 zh$5slmHWs+6qK7KHl6-6DE)Y|GEjM^YxU|6c5ccOI4DNVv=3)%CC-AJP5|Lrgdid@ zLXOsJL&Z=2lm8D^^YGP9kwvr#Tj^W6_jaO7oC<-gv&2DN{sTYusW=N=Jb ze(U{~h72I@JcAXV>ir`8gbh_+oP^a!&l`)iIqikY#Am)a=pf|n`nCsKzx1Dj5!l0f z@4OxC*~RbR(@<;$Ms=SBAy|et{Rd=j$=v$JlR!X}5QX2l{A)lu+N1Me|H&`_3SA1> zSw_rrqiB#zrKvX|m(Hm`%elgCh;$7Oa6~t-4}SU{STJ-^&rK(t6HfYyd702>Ds=y*!)%QxZ8RrL{%d{?&jGk~fmdLFn`62d*jk=Dv-!%oA#XJ*I;l!=CIn8Q@ zl7BPK5B}vPW;sb=u;sQ7M_r2qr@F4zioE@<7?^ui+np-Z?*4$R<|iy_(UK(i(=uTx z#IkOr0MG+`$ufNUM4hZcO>;bUG2E z7dUm&TMzU0gQ7g#tNj`99H+bd8}5u(ec;Vl2Q@d(bnD;HtVu3IKOh=C2bISr<)9x5 z3abrJx?X|bcc;@Ik3u_Z8Xkbohx)7I(2kt?gHT-Wo`!biJgUG^?f4Vq$q85r)pg)b zh{-V*K@IJ{9|{qCeR>7fU?Yo$6luJ$b!~fJ^gG(0Rq{F?UoGoXUC}5%Wz4vqpf4@G zSvHJ@BLq4DoPgaIc${a)bNi{Q80m00QGBG~Y071}AoSfySSH8Iwb)FTmCp)`>UYa` zBkoKu%@wSC}HQe z-0jz1mzP78-G&b1+V~!Hq<%}e^F`}AXmmlUNNoxM__lJ!ZJSqqGP-LlbZG=_#vZDzIh)`sa6wIT6PT7yzr|}(8vTB+x2p_} znv@Tg4b#z~W_GHLMP4Jwcle6hN9LvJy;Wot$53EG4nE@9_gmb}4C+QZC zDjf)_(do2d2*>Yb_YtiNx5uZOl^t9W{!bnVc#|c|Nui0eCB(de;Kzao77|mF)L!aQ ziMtxU1m|R^Oklc{-RChV4K9u(YrDW+m3Y*B#SodLjy!pOkpNp<#7|8UY+mP2C4c5w z&2Q?PqaFUfWz)rNV-D>B!X+G2+Cr5fh|4N*aGShY>=K4dw_t$X{z2GKUkp}9%mMV` zdBm)#9fc!mA-dpNRtxZ*`K$5~fLsi4B;(d9i2^MrJqmHRbY4RY5KpjXHKp`ZIYjvC z5y&%Zwb(8*mHyz+g7jpDh?$CCSC$JUt^y0dK;}Fx_RfXho$4>YAy+Um7<+?nJxKas zxa<+)0o0(g}J$&;k80D2d6k895{SfkBx+J8Yz9&6| zY{JVGFvmeAfC41vZm~ydt0u3gUbX~I(zpbfEQ<}g9FB8$gkf+Kgbct$>8n^^r5t3o#viG zVGMHEZTrIp{Gxz>0|foRTfjTtg9MkpgUzkjJ9W43|BDS86xYJ&d@~FFBR;&v07z&? zBHGisQSvkK&)&Rr>HOzp#GmhhS@4m21bEN(TO3hG{u$sc_^SioB~$7f7oOwQFBn@1R@k-RjV~+Ko4GY&Eim`> zUmv^!*0NlMw8t7P8Kl$1oW+^WW-n>%3Br6#xFVB?GWMi z@+x)WdDrGfsm{`pTF<+-vnutZJ;xFlq}G$Qq>E564NF33%WmHAs@%A}2-kL(@pTkX zu&(z5`^Hl>fM|xW$)|5)tq2oUCO4nxiA1iRTcsB@2rr&b|6ptj2GZaa4tM&Wa%Pcc z@N|J3q_d)v-e<-LeM*kfUx<(CX`&yd#~MG?qt7THUV~P+LU4lhpQBO|^j9Jw zXIbhfSq4xizArtKu;>CntlATk@PoycV2mZ9A}J}V)6ccXv}2K9_udM@bTBN(`rO>A zpK*W(1z!%q0n$4PgYonFDJ2UnHF)5Awfj2vUjBpUCn3&FK=(?ndcKfw1jtmUTYwff zjgR5qYqV-h%qtTiU856}<6-La#}enx-z)Z1NI{u4C~NkQnD8|UkvW@SIS8F4CK(t% zqfr=Go9vvTeCtT!f8o!DM2!VesEwkdPhmC9IAmiPIUN`R6Wg(f*)XN-&aM~p4*epgKvKU#!jgt z0HH7kR}A8JYarT0%f=-PiWA7w(r|d1A~hNnd5wKpw+V?guhs;w4O&3M?KkG)Cc!!! zfOUxh_B=%?RoAv|EkkFvIyv7QjNTE1sfDT|3oA%oIa%9IW!?v<3<|r~^xXCPuFM<2 z>Bpkvq_rWv7yhbl)_O^;^!c1h^5kahM=z{HZd9 zs8PSmcw-~v_n)SyZ1?#d=VrCw9o0Oe(Hp-eE+6t;_>&Dca=g;Br*~g|dGC7XUh+-; zV`$p|J>r_0O8Tv)*pWU48Qru=64 zQR?L4V%%0~q*6FFD_~=9u~N9tQxb;DH?5L%cF=ud%BayiZvY6gaQdmR5{0y*&;U?e zBmI8I#c>?ItF8~MZtarw61T{^c?hc^7@_3~idX=A>kzykscX!t`EQj&qfpUy8j{R@ zJ8-=q9O4Exklhc(&=k^C5_hvkrIqrDVyrJK_M5Wr1!oOSQ?oY*6t@>l2A`X|XZ^QB%df~KQ|4aep4a^Iu5mGEQ=jA#X2)MO>@Vmwz6vduFA#X+_ zx2ZeKyzs_@?F7hzKA4gS6UQ2fn0XPV z!{7uWs9aXM+2*b4<;~^2puEZace9blKgR3Wn`&Gs8?cg6&tDV1ZtLR4Q94IH zSd12@uMQKh=t80X_>dSp)Zs{^k5obgFa>F7`D2}nRiRX^A;VNkw>@Xcs>Tk zFP)?3#Y|?cr2rlg;tpmz>QGhr*SPKeyZq;%aNu76+G7v_Tj1|{=-Y<^B;B_+VPb|b z>5VTTOI7K49qj_R_U&XJ$TAD|f4dA@{I4$tDa6=4!hL?Q;#dNbR@fH2JRc;M`_A0` z0kGJq>Qo9O;}zg4SG-Dq)A3@k$xW@8n;O0%nsss%4~pX7X{^eJ0aS;ofk`njOY);j zub%x z*8qNCmkp~-+v=WpiRGj3qMR4$YZGQf+MySULom91NL+tm*>MI4JqhX0iE<8wMfnw_ zt~@qdD?HPnxJjPRqmSe)GfK^J@%+!Vm0D;cyZ{^kjjqaA&3gUVt1P#Ha<;nrAElx^ zP^DNJY7_s!m7a?i01jX&_>yVYD3k9k7B>ib7$aH#>=T&HdAJ3F(cK>=XMvZo7~L+X z-goAYju(06Q-uegnFS7nNZ_Vz0|{MxdlJ>=e%z-~prF`$k-zRYPrKf+vq7+drhM1R z#p{l-ry0wt=|p*}|93-Wo_;#`8@&WleSl2_@zui5p{A7yxhFl4`-aN}Z;v;*8Q zRlxBbp`RQ11jn`|hD^C1`Ork-KKy9$X>2L76 z2O(f*g209Ejy}+LoPEuhic!YaGb8s?(EsL7P$ZhkZ?FSU1rT;X2_pLCCpEGEMHTPx zGazR`efB%94;=*F!zSvni#pzER%kZ*twB@nbNIzOUPoU3WTI(EtnD~*ED;#xvk@m?r+;J>+vI8DxaVm~)lm@W~h&7FoC1 zdn5srqef(Oj3KTZBe1W%pVs|m|omXxg>HMoo#T$6S z{6QM-LlUqPBI5NGWN_+5&;ax9o_&4SySDcg3fFHC1upzwe*@?mCH{hs$-J4e?^-F> zu6*l#>}LModOc6=DeHTk@FV~o6imT%LCwCm$UEM%J;SYr)vhPW)i)_2EE53NlDY%2Jqzm??VBs-B zw(<*gN~}-87Z79roytC%fOb`VO-ooi0L}h~uW!~c;8Xjz!c{bXeB=YO zCr(MjP$tc-H#kHBLY2jhs(J98pXY-tT<+t7+O14ELqqa$ik>_*51VC0z-U@OV(rrv z%M?K&#WAF?(c4Bp4*)CFj&MSFJy(q|yZT%-Y4TxZbF@CbF?ycya?*UZ!H3m8f z_`+#K1oqz%6D;J2K8}STSV@6opK?yu&Nz>pQJc^)s%MQOXA9Da^9$C#Jl(kc;&<)# zsX0P;@h7P{Qh4!8^UX9a&c% z2wsBET^s{Q8Cl+7B^3=W#j{^-H*{`X?A%m0BsVv1=cbxg?lnMYT~HHYWQ|0z zp{g(u*9SE^Ti$zeOtdb`JNw|a{KRW)1MRZGcQZx@)iJr5fqY?~HvXD>O2_BXquLq? zK@}o^2@N6LnICIH_jOF4Akr7%eJ=n+ZC)SSzO-1WgxvcTaWZm6Q`o;<5~J&i!`55a zqIj%G{<+kpO?H;D9v8yb%~D+7oLPB!uKz{JdaT%_(;ZhFVQd^WW~2a35NONs{#-WL z?jFI{t*?4hlTvu0MBW_?_`$240DxiD3`E46$=Bk^r{6_J4u_#=pm{vGSVc2d z%ar!%CIVGc`|PtOFkX{tYPF0Bh5w!&KDMT|ncbv}fc9xMoRj@p&8qZp^?IS+z|2KNXngbuxdFg57`$gKEFdOtvxvX}tTNvz5j0Q3|x9Hxg% zUw-sKIh+1rb`$y~xu1S6()6pc+!(4L{b!#ud^~k|H!}jZM zhCx5=C{|o{eZ{lbS*noqt$4o0f|<-g3ri^Vh>}vt9KbeS+_{=mLC$w1v?~ew^%e^Z z2|MfB9H5{zhL%`Can!5SwUj}#oMBa+ld44Q@%W64 zK+`0v)J`UwYeD}N0kaGqERGq}<(HR{*@#{cf1&%#{2KD$)~QIlkJfO#AXb zhz(;wt%_?ee4{H5;69YlY$gk^%w%@k)kIRgW)%>2TkS z^iDY^eFifoakp~X=QT|iaX1dGiQan`+_y$DT|kE0Ti(0=m9YBU8u$wKK=PIGUa*Wc zl(1e>2q&9u#SyN!@COUYkJ@2gL37LM(RnZx_PdG0<1_xHUWBF=b^`M}1%%hnd*hqs zFSiEgOAWRSTNw5f-i->D(=BI zZm=D55j{@#y>e#;?tP#ioS65H=5kjF?IdIn>=khc?uw4ted$}2 zs3>L$Tyt}Q;fo-WOzY7{FK@`Vi9cli)98U;(AO9STq;2$=3Q2j3y9(as5?4$Z9jPh z&a1kyp56PDQZIxzR-CYl9kbX)V&C4kCx87v!QbvKfr~^n*d2!A$eHLdRC}6O8Qmd( zi$yG}pa>?PZ3!o#L?W81z4X%2#TyDN-VZ-D)%88<|0oI!AZUQhkY_g#IINoObLDpv zSD z;8qLAD%qL~29Egf{pQu?Wyz}h*E$0>SOcp*c^&|rVv7P zNLbwsH?xImW&hjYH6-Q|k#{5MawuCsoWtpKT(oQ7XrS_MXyny&AgR=HQdJSE9ABv&xul6TeXOTEE1zE zPLg)edY+`HuNC^1Jbwd?NA{vw5pi-G^HSRnNgeAI!{6J0kKqafQm&;XC2_P(X<{Xo zowbv=GrVgm9f>ijQfMhcL*gYVG-ESDMsJ}f-Uw%IHAg88+M+3@yHxtMb#}bVxXA%>s-k9@>pzH)Czsasm3tx%8H*UfJeUG` zpqy|z9B&PP#Lh`@;D-88Z>kc99)2uQQAo#(>ZP&~qj^~3FzyxmBMd7KziYClu8(mO z_eL&jDCDw_hnL0!QF<6E1srf}oAxk6fd_(-p-src+8g%|yk+|IDvO~wBTsaiXa7O5#K*8Stzn7jt zDkr&kM3PsmYv;j`>MDSB^Cnz7X9hvXErKDb#cE7)!?K2CZ&MyA9d3KK;n49`Arp%} zqqeqe`8w1QBOI3&{suUqTC$)*3s5m$c0XDv0oTBOYO8bqH%d3++Y>`s^Z_+_ed*jH z?x?`qfg9kpHCB&^v4QD~GxdTxe(cNwMJ9Q0|t>>JJJnqJ*ra<-B6VScZ zdLdpxx9JO#YHm;p0SwOX>sgPS8aRt4b&2MHkl0j zLv>p2EU!GP1;<*`-9BrY4@q8kX5ohdR?aL*?EI#tE&3{{yM70oLVl+ep3~nbdJ4Y20&xFi?*iucG2r9ZWi1^4CDe? zur;ASkKXV-fgiuDtP=$u?Dlf}fxI(*GB^$(W#s*vK4t<&Br7xcL$8h-&z_>thomR^ zZzn7)KgjaE=7-h8Cu*QJ_}0}`??~LienJ>{khWB zH5A|?4hL-z4}!U^1D!XUvhhLU*$pCsbmU8a(XvKY2j3g$G z=H{ZnUj(X0P<;xE{PY(~Kq9KlAVK}<9?%2?J0Lg>gp5MMP@s2*84%pX_0TD<5bo-1z-(Z8UykKn4ncbP<^z2(|947GFPf z#IvSSe=)85^!K+5d+5#15%CDsv9>+6FZo?2b-5J~q#*u1wL*>fDDi)#H51!}rF$gD z+~Ps}83U`Q@jf+&#O3$jrn>=wiAwO&!MFObUDG}whXBa(-5w|{Yx{IN2#2fKI<^GgxiPj8fwSh6S zJ{A3zyp*mKJpE_sZbq2}KgxJmfV$`T@lX8lkL54lJS=wf;D8=H2_K{iaL7c20vxfL z-~+iox#IdKF67tGEdtR3GH(E(t{009l9H5BLF#8e_T#4tzx9HUO?pyC>h*i z;cYcuAEEvK*}nCa_pkrI1cYgZl>=yJqNb!|FqkUs|Nib=ysvly?6Mie3UJ;B86zSu zrT+4BGtJ+6WS|QlI0F{RmjWm_8_uD|t<~=$U;RkK^+5Vf1F#AZgQ2JbDRnoh&Spjh z@Bi7+^L3y~S>Ff3H_N~C0v&)Q^c)Aw;pUJHsX94Q%b93U@Sh;+{ma`13rSdWX}aSj zOOHpLKJIe*_#ONBGh5^4eAXVjU>-wW^cUWyjmD*=XULpCi;nwT{M6J_omV5bzrXDu z=KVNOQfg55R-Z}nGfZ7lm`8;_moQHHlT%MLUyU6&vIV(61>{Ao17aqYjtJWXS(!J# z(LC)7w`Q;U-K9vmHweQ`Yj)m-wdkQ{19G^UmMS)%N5nIx`W2jg(Ad(m@&c*SHkTSW@46(-+u zr3>XocfoK39_xe#-eXgylF=MfCNQH*m;{W%)WTR{sk; z`6FBd1z3m0ta*9(j|oWL12#57e=~Vh%Cj&RO}(phAN#-gwfZ{@8UIFdYcZSB)PauC zyH|Ss5`HUu5vWSOkbRRk9+B5dM58on0UbyzhTa&Gl!O*5I*E&g1|c~lG^8=$j}_H) zP%;}^S}in8<;Lv>$#}{HxnCZ*w$4Ara!o)&VgtKDGu8)tv?sf@rmXQ*tW{66dCc%E zb%}3k5E`Yd#oXO%k33NNu-OU@3KpFgLH5qHvGs;{Gt?0k8x4;nH=!^=dRsmb&8_da zbDKRlJg=+Cp4{!XQS)qWuMmi)(Frvhb7x^HruwL1LohvEen_L=9%fcGq}((CGSy5i z8btZ59QG{aq9kj&($$cG=O$`ShXq&baG3|OdH^ns_hKFo1e+Z3#{*XTQ`4XkW)|0o z(I?=n*qgBnu}u-F&GYH->7xjI{emaRBsAgo{o4J8=5G$C9VhUJBK0fHTvHHsO^DB1u~O-} zu{jv6z#FucK8FET}syK?3GPpk!L$5ybd37&bUK{Mfp^*PO*=k0^cLbjj zN6Cz7=^h~-H+)HAGKs{8ygIAHLK3CnSR{nRasfc9syWtbPOf^DG|t_`$)x_=@n|xU zRK!>UW67{LXxJO(h~QAwvlpTcLxDL<(D_2$4z@K#qEZfjnIT>^iIz$YMZ{<)A2%hI zbr`t2+Bmp^Fem~r?pC$P|Dw2NA!r8hyiUu&K= zu|Xax>nUx(PkZd7(kX;w#UBXwt1Lyz`yz6qKbu|6ms^tCWT5@4&!0tY@-XD)a=s&| zvlTz}Y(AGSqK0EyJ-67P8YYYLIFLj|D>1)CrJ^wUahLTV3f{wkL6mCJTT~lPV3X~5 z(s;o(XIw-&m7@#Ou06OhpbDo*=Xt#zOzT*p*EL^vxgA0?!J@QX zJPt7j0^qG@{U8__b&OTy&~Vi66pF9_8jyswkihTNU-JPYkb`Aqh#+KK2#g)1%xTng zeazPOF-ceXu^_`xlv?|t*UK0Cat!6`8D!vubRAoyXSz?hBuV3yhI^E2PDztBJ`C$%K_ z+{R~*ifgZIo)j7%m;^V6_2~|89BtPnUi< zeF0_53**l%05ixMuT$qiXVCb7yhyY=sOr`w`*?6(xYYsa`?&NeDBSZ^eJv-vob5)T zI6?-S1gwdJ0edmTGQ7RUIeh|5e}L)WgaZ^l5jf8FH<5_vZ3>TC>)3O+v$?5blFT)( z(?^l%Pv#Pfe8Q?P^ZNmGN5_d_!pxPR0%Rz6iaB8K^K4JU z6GXF$fDp4+_=UhR8( zpA~sHoU08*SqL%=`>xhCcs33+Fr#xlyFPRt^8RRuo$v?t#jh3B+6bar=!~bL?8k;K^kg#a z@nWfxLHmi*^N~n?yDFONY?2YB9$FC6asK{bq?#;ucCg<99zk4`&zLwNppdqk!tD0& z0yx7luggL}^qEvsJMA?aN+?|S(xDtq(f}3)mWXT?z{VV7$fg9UGHz)9S>#;Nkv51( z!EHrWM$?vd|A@ln&8r@d9Zcp{PX&WF2_oatgY&mME?1CmVK+lF6l$_Mrfu6+Huw^* z_4}V7bFh($04d!1XBv0U?v^_JQAXl9PAyMFeRkV>!PBTdX_^kLOk_dnC(zAy!$X7! z4CyTej{UvQi7^`2zR_kRgHYe3#KMkY}4te41F-&otnp=2P=eI&f&7B+VKcBf+nppp#$ffB*~uJ*kA3qZf^)@Xi`b zI3Cc*xsibO$zm@GlZN?LylZ-{K+|gO7ja5CIVYWn^Z=t5+M=2!T%%#boku z4@DAm2pa)|;Hgkbao18rG_#3Bqc>l23`;{F9QoRXZH-;2^dcAmoFBQv_UobNjZy*! z?Zf}sr#bavX6TmJxSS!eG(J>EVieOCizic}p-1YnVS7n>7e4->9G3LV_SuRg<6sQX z;dB#ik;v7$i3xDw++e%aXCg@6>3Tm|Am}=TQYGks74awguDwsaHihZ~TmC3$*NL}% zVo*Q*$h|Lu&3IwsrRVr<|AFZ|=mTu!4SVlBavMnP^jQ#azWyR#F-VvDZ=ub0Pd7ZH zrcnc2t6;7=;n|u)hngx7{v^H|-#PLQzd&crGjw=Hwt>#rI)5wzcc|L`!3P6=H1ULQ zd*49-_vhF-C@Z!zOJdR{B*eB8e5IGb?Nh2%oG!DxiaLx;Ali`@97=K#tiJ1MRjx}F zsW-<1TUiu8z77Br{kRY;6dx^ABSaY!@Nqe1U7A7j`cc=)n`LelXIBErVf=5|44iNvWgn=dq3w=GlE#?qVo zmffF0G_2 z%a^K;JQ8@)uLt$1E@oopAx+ksaTB+`1K5E~}^yM({`&nfh#X4*Q#G z4QN`Av~y2Fv=Huo?Nv8#Igt)jWn2Pkz7feT1$hV}Hzc>`HiHRBG$j>tRhiyx^TPt* zqt(WnskjCX&Ojv&0g9KPXJ;xygQ8AUeEfnx!W@M{Q$pzK()U+ zKP7qWNaKqGK8^~dqraf%G6{YOVqc3p69;n?^)_w-&J7=;H) zKFtW)!O49E8r<$6)3Lo1bhEXxTFkZqSg<=I;f?Y_bsUdcP>xr<9ts?RvwmJTAW0>* z%yG*Jt;I&CHf~t~4XKXx152CLC56|Zdtk+i#k27%jv=vVW9^hW+1h2YJD`4X0kwi3 zb$LCg8cPj+NOugy+T++&<255-6sLo9u`kj_!@2ZL(e9XcOBnEL>~SZzDGo^hD^z9v z+`QWzown>>up}dR!0)QxnR%B9Z_*{;CrdK=rZPsB;r#AoOJGx*5OiNgfcZ zDQu%<&UDFO#5luNVKYjeIzMyPx-s=(#72^AABRDk04T&j=c5-{=}X6m@C1w@0aLoZ zBTZKnA|P3D4Z#;H483yaS$N%Z0DbYvHNOW<1&OeiWfqcomeMh=ab2qfAdI+mk7od> zIL<0r0WQf7d@kLQ|Em9;`Ni0UffD@2i5psJblU9OAnqB9Xrt zC4c|*be>~KA{h+^)CZ$Uf@HXS8i-_i;LZz&SoTl|g})fPF!&UHBVwI+bS?`5OV!0J zU1*q(!e(8C3?n0>QMcTuWhG{vH{CDJ{Y<28GhO4QaDVN}?;>xyoG#ZQe zuHv@y(_k!A7}D?Di-K`*P10Qzy)|<7T5Cvac3hfOUQ>({94+Aq_4zr!yP@c^`OVio zp+O9k{Z?1(doJ03aW1{26$&R@C8`!)U4w4{3N~VsObMw-d}qKr)@b*FJtcGzm*)%7 zuzl+G#M`K!;GU;)Ob?Q@A=rlwBZL4>Vru&(T_VON zpxgd~#BaWLoX&tAg&zN#HMilbc4t0>oDy;fcCy6tNO6Xpq1$~s4W4FN-|gA64?T;{ zGtTIf{QWoJ#Js**pS)#4@!t&rrX6*=7Z&yoh#`9ZI&)DT1Xk)4=Xq1zlh3o4A{*Tf z(zc~8RTUSq+18A1rwlk_et#<_s^+f+h#Wf75s2Dh(CcJLcs~(Xk9ZTNBVPix$K+& zaB#jyfQX7n66=0F9|QuO+Oz?$+@Q$>m)o?Tn+!EOtQHpJO)}Lmi09_}g)l-+o?rA{ zTL)hK19=#*YTtjI0&t$vN?0|B4!m*&{xb*2i9q|E!dLLdFD$liE*_X?<>HM3oX z6;FjU)>z8re%q@CG#d298$gc6))3ul)axyt%16BE3@q1l#cMPzD|3?A;p?i7PnRMJ zW90~iO9&l-K%qaDWV3f%eZc3G9_8|B>zn2EzDKIQ=59tV^Fv6S9f;NPg^gx=T$S59?DTAuloR3e=*e zv~Am>MP?nL`8aza7(WIG=;$Nj0(!4mpB=r+Ob~jKn2rlXK=7QUTc#2C4*P?Eh{{T}vNp14 zQ>ztAwVy8qPR+z$?AMH_gP-24xCWM9lSSp;h@ta>jdDhif7o;%n+(6)k2hw@-O^mE zny?RCDz%i}R;g4>F(RQb3Bo-P3ns5zHXz^X8nfgrIG6!wtif{y2Y8WR=DwD6M3kbg$|GaSt#wt1Z25f|hLRl$Rs`W;fwPqzJmQ>gAsi@t(bM~HktL<$* z&vKI1vSy34Dp`*G)*N|k%6e2>2?LR?IXmadlB!k>rN^jNiy6L$rPTH%&tlV4`8;K_XWn&@g$e~Ui!4CJ;|%XKkCw<`u48_+epX$rCc@qfH3qees0Gt`^atrv)8QUyvWmA4-UVv5 zly<#dD#(kOL5&+T-fMhi&?@P93M*Xf3J-FndluJM)qyaJTkKj5VqENd35_|X5Td1; z*vok=U`hfqUhYV$&UECFGL~ivxPY*&T(|pp8qQ1LEC*8S1m_lNE#A-pn(5rFFRO6508#QyJL`2C)qXsl>mnP3(a7-US8E zBGESj=w+^^QfI5$1HYOzn{Sk&c*rSHges8f6p>PQ_tC@E;P!mLY6Zgxk+f7c6x5)@ zlMUxAErQ`>D3Nkroj_qKxF*M8o48qgy+Oy z7Jw>h70LlwH>}*S{pFSi%a`w~hneTaV3bw*gB#RMAcnM-`r(??H)SR;*O|BW2Q>5LDtj#86x+5)2(}prumW=DOs)?&UG6wT{%9 zQtV=Kr*T6C@?dv;dWz8Uf9$op9jh{du4Tq?b~M_7CQK%?Y*|Y3A;?F@+oGS|rhE>) zoZRXQ=Lm@_V%lw?W~1{CXNb7yiIms4gQd-CuwxgJv-bnOJ=zTZ9M-Xh!-8nuO0T^0a83Oro3JjWV=Jo*3lW)Y$=x<&8AX5}(=>SH2OmS+ zGvBN%IqV;Ks8p;~|1hMSbS-fs4N5BM)_}gKnL2W*r_nJQGHS7gMD)zy->w6pCx!9^ zP|LlGo^brQVq|2*n%_@izXAUNV?|kePK`>;rQM@ssBAuO+Bzs=XPl0*ZG_WUPy}{- z`~3rtL3WX=_m8wxGFv?`w$PkGLjf==mimKoqX}Eb!xtT>q|&Oz?yG+Z6I`x{c8}IP zbz&0`x{N>^gcLAsx=_@(VP<+tmR@pCxwaEEJP*tE75GIxdJ|NP?!0aSq%_k=Jd_v| zjmOY#P&VlI9+xD^aNl!>IFMXw+vT)qOOs@(lvFZ_Yr&6KyQO;_rAAaVj8))1QK!4NRCp2zndNf5tK_ER2rGcvr zLLu_}u=R?pokK<~c*apJ61sqqxYjg+b5C9pnID2ySzbygsM07`0nv|Jv{xX87os;P z=&H~r=O^=DeFp){0fO63#%lj%Gk^-8xz*LpIGNxU5oyPb?4Wk7b~sm%aYH+eiqAw1 zP)qgJi7DFJ>Z3NJASN+GPS*(U-}WxQ9z&YL5@(~*%w6j>#L0ElsBufAE*pn?bPEZ* zxxHhgXY1rt;if+jE1D`)nGR7rT&q&&@8xGmQ0iTC37?Hro`4v zLT3!;>N0mSF{H=pI8LCIT9Q-R6B*X5=jOpj6a`mli3RvMGLj^;Fi`FYz%L~NB(7dB{aso zyVg6;()}={R53<9Ju^NIodg!IKPK2KD`B>Kd*q%9_8toMK~6qU9@j%RJn`omKS3Km zKltx|8}WTN4&*>C+om7gBzXAwGvf+4n7nY){&H{!A}*;f6wy7{^CkEPP`!v)DLg|y z%6~a_R4h!ldf%{?Z>UGa$Q0?p7l4Q0+eC42V!ekr8dyQ8ZCFwEc{}cI`_+u)aWdcs z4kSKY^OO4+^XNm5{7>fcJMgjfYy1MxLl+86lKi}rJMUlh9n66g{Ln4Z2g)rENNAb? zCsK~x?e`ze0vE4X&y*G!fxdjxt-_Ej?X?ITaO4-0;eu~?qG`0&R?Pgyd_1e@Qw z0Oj}<*iCs7a)t4b)#b8yDUM3Ue?a_{*0q#1o_EDpa={uXf^d^NbRD0; zr4zj`oD$0vC=Y)Xz7ACKAT?3S(#oZAuE7SQx%)M9${M*hO}K|GdB^lmtX<5bR`TG? zT?EU()uW7ivVsnKe?i>^;a4~`4BXxO(lI#yJr>ZA26m%%LODf!@YJ=ZxsVOmP4MXiDSTQIo)iOWJ*k7YNwO{iMk`#jIA}aX553gSR42@6d z`4SbJz*hvH`I8#EcZE05MB$yDzqZj3jmA-9@m94D5f*Uio=29D%9=CNcdm~f2g!|t zpbQX-G%Jny=_qOy00dGk>&C6snnv=%#SxTuO!n6iWZdA!4bJo|>}!>#5avTM2%a#< zdhEKI7s4@hbEst_-8R~q48C$vSSXdspjk6A<=S<3|5_Okw!}LLxbM@$m#0e|n$P(v zeHVG=`lv8;2YibCsjtEub$irv_>yrltZ1>C(>|Se?637E`J~9=4sV&xbp-=_5-0nYYjUzZ(UMLGXi3Pm z*Sxb6z)N6>=1PaQ)mARebiK5*CzH=4(@}i1vmuKg3LT53m@zJ32v`U*B_d;{JDkya z>pE&zVlhhwhL2L+4qy@=lJt%BMF80eFN2lo3$vt2yx%n4QU4tu-`XUASh06p=&xtX za>%H%u6{*KB*aJc3IH3H!2ai$cRe<~_$aYOM!v)A;K{?{T=(xPV8QDD44zl9L`n3yk^ELp%VLD zr=yA*+pHz|Q>uPs_o^_XM1Fz*lC(&OEPeETmk&$M0~0z<<%^Y;I?^qBEK!&K8z|lG z)~l)+s6jY?N!4#Y6L#MI)tPz5?%43`Tdcdl zCP2Us3(VE-=hyK)Y?!elpj~d zeA+c+>H7L^=t>AcVaes*Q}7)mI7d0oD5PPFLhDzHJ3ro{i}v~2wi6tk9s3gZNC(M6 zLt3+WcZ=ht49Q4liZWWYCwC8!xFbN*IRefSWxzr$et^F0{|N+w@S#>@=qF2zbu#(+ z)nBvs$lx&mE<H_bp?P&Ays3)->B5(nH$v^9UsQ(Vo!4mx zluP>#%=z<;dbQ^JwOV7o>CgS^cfWxb&tL2JjvJ}~QSGR6fbDg zp8tWrkoqV`Du~%==rX2-7_KpDd|eIA7($gx0cNCTJioqWH!iJ2mzSv{+RoHSpQ(NobDJuM=yA}Y~Rr`t`MVzQ)QuznOIQ5);Ot@tbv z461MtavJi*Dg)JZ1SHiJ#-fdZpvs{J`7q()0-->$kGY3$2OsP>BDtPep;9Tt+y>rh zQa%e95<==jjPj~WiL$^`1#=pNu+`AXV8iKzU@d|NRBp{`Wa{+!CoQtofJ>?5VATV{ zJr(z82SbxOyQ(imXkyzM@K}}g)lDy$L(fYfur^`GNpwD6IPCRD3Xj(sA{+KQv9QB3 zPcPD76X-@q*%1EIY_RlTV*qWN6~2*eNE(hK^ZXXyDEEZ)o7S}NiIY>f4cG)h! zsTdlIB^rr^V}*|ink?J${srhYWvvW;BWA(>VVZ{60a~p_ajA4y9+lb(&;CA!VxEUy zPuL&Nuq;V#h^<=Xf*z&o7$6}-x74G}hv2T@{;9*W4qaUM2XuJ-nNLY@;D_SBOzEH1 z^6-xk$}|$6|K-9@HhV#{ga9=NQnUC92|3)JL>>x{M2~_T3PoNb{GR(Ab(l3j3BLq@ z$`};9UexOcTBwXvpx7U<_zgFLl24mhJ?2~Ik0bTiL+=1BhLUrOK;LgXy|XiN{O zygP~bcAiQdg-L!Y#s{~qPya_jVgUaN{=9;}_WrPXtnaZ&3%KU#>24`dXVzX@fDys6 zi?0L!fM#mMAqmT8c7rZWY`oCaQ_)z7k-LDci5bYN&!Hm*=#Qe%>bPH^l0_^a=cMxW zZYhKd|5+WtEy4BQ{?bR^>x-VGsSKV7o?+kiIXD2}0{#2`ZmiGVKi7^5K!M!-oT>8; z`LO~v89o2l6CG_Ga_MSjpyS_d@cCT#N^f8|yaIxLnJsX`(8R;f-aL8q$n{NdUA$ox zXul2uhf%~%x62dDpI1+3)0qr2%f=0bpX{G;%{ng>jic7}D0t^GYcW8}U-9^~)*L8^ z>OmOl9WLeDM)Tyb`E$oQ$5$w#Zsq5+0nJNZ5V>v`5ZwlnWl6@99SZ!yp4$}Oi~wC) z(kIYx6ey0lM#K3oJ$S3>?x#kZz(Scs!t~n6%U-$5%q$2mcW3w=1WVaip2SblXVXL*e!Nlesz~R3kP`nW!nuQLEM3^|D8-p!TTCJk~n)$(#Mv zS2vFX1h#RtMlAF%>w;mK&$b(0C-TvN+ZuIQ7af~X@DdIlkaC7zv%&VKS@6AWY%m_z zf^u~|d*Z^6QJE^G#z&5Aun(FkqZQWR8iINN}+;Q=V1R=P>vXMzP0ciF<;C+N9B+~0cAWRH(qK?dNhY!a7bVa zo1t=>fX%Aw`U_7M!`vxHmad2ZMO~Av%;huXa{FNl%-iKc1w709)&}m>=xO$~`|xeV z_Dl2|w0|2w$O70FT!LQ!+i@=T>QA+Y?pJ?+nbSP;*|80G02TqE?jQ^p4DX!vW0PAW zj5w24l&SE`I^a9aI8*xu@}Tlzy&LVTbPED_1eU)bzU5XMJveMXL&JB4->;*|I2{T5 zgp?R1;8EM`jdvD1EUHL*8E*q^6eg$poZg&Hg4zO>o7OG_wKtFASh#H^&m5~N6s{lc+?+@f2G>(G|Q=3OW1Fu`KQCN^`+{$TqYt*ZZpf!swqq?9Fvka znYKuR3BZ~L?iwiEJZjv3waN48y@rBdb*N`fIL=Lvr_pINT=a*}Barn6n&pA7?qHA2 zwc)R;gFQ*Y97r<3UiEKNR>8-A_c!iC18R=L=3!!5>)!dtkaL~t4E# z6h`xQHTw(B4&Dmf2R(a`dez{c#ger^aQg`#2ey#7g5Jer!kPhmFKiE!;&%ZN5^nsG z0@&0^(GNJAF_oTyLv6IbjxAyr>2%5e*7K=yF`o+iT~rjz?I^wecgq(l>W9M64Y;(W zCD$kXm+OtC+wuPTG6(|C`jiN67$N69Og_W<6yLbAN~}*G4uaADH8T4}Jw1_+6`VeZ zEkYEp`d)v=rp_w!CQ)~?g%swkF^`wq|9k9CSK&{2{SIjFHUrG#x5Kx2X=6(gD0O-s z1$tF*_K^!HxP^79l&v2oyH`~O#fC2hU#H}zHDO18mQRfaM6Zo*Lv?5wJCllM1uC?h z*crYC;v9Vd-4Oj~&+OiT9MUav-jhJQ#O*fFW%u_EIT>wt!Th9KNly|1Td@Rx;b8SEuElAcbo*fx%l*Se8W$_X*Wo@ z(92-wb&HL@bUG(mk;`F^iHOE*G!NvPQ2?&dOjDQJ!KX7xtqxOdSt)jWn)cf)mc>-i zW^m^h(Ri~pt1T>x#8VP&?GY((p1#NwZ~nk%M-Kl_G+Am37jD!!Rj8retv67;Y9xdn zt}5lL4I*2RMZcHZ;z(oxTnBTNiH1SPwDvHo%5mT8BAIEK+tJ1N3@sW$x$QO@tO;>n zh_GA9!37ZK(BokHT)XSiZMzYA>?*aOf9!<@xcY`sBXvt*y`24&Kgu`gp$cB&_-r8g zWW1;CZGIiy&q4`*lf`9SoOClAo~=3`3v+vxR&n zP7r*>Y=IQ5+d-SaQ@m%8OLgh_xHo#z6x^VoG>0HmScqbZEre{e>Mf4Vq)6W9QmPHZ zv}=x`>Sm*2BB-=XI9&#p0M*!P8qWbY7xWR3a!0C$nsXJavQ0H(h z*Uv_Bjd?9^$sWC?0SD6E>{s$Tms?~RzzrweK53uo4*xyfJLLhYhFL#+<}t^M{MrGR z+&SN;*CMk+zp*h2?&t}VFx`pKav{+EFlt=?oR_@h4IlnoB;D-hW>)(19R0iay(nE% zrWZ`4W)E-MgSzs0gk%^(l{7bG13l8Y3KD)SMo;OgiDB-3W&go4W)UCvFT_2;=bfS3 z9+(zJFTXT+!1=^KMq_h65Uv1$$M5S(#a?qMs(szV>3$9dwm07!+E-J<^ThnhLDK_s zjDW@p zlAW4=pama-Ky8317!<4+wyj_1;r|J5&V9&EPAhYy$Ro9~b^bfP-uqg%v^xp7@3GH7XNe3qj=|GYuxm>q4;wkZqJF zXs-WyXUVX21Z`!@+b%h~DlCx4Cd0>xi!adu3F4eJ-Vwi|ZT~8-E0rl*oV|rGzN2d# zLNKxyPc_XZllAm@mqpOHZr&cvP0d6H=uu_yrP}#l&d1jkL8zv(8sk-R`F%7h@N~?U zYO{(56!MRPfCSpxr#;iAEMk-@p5z_`1U*=Vh7cLW=ff2xf>G0C>U282sKo9KvFIPD zO@)bfYml2AUE>hK$nGCNFq_Qv-|7<&mZR=azEsg@vAR=y)yIo~F@Qg+`K%d!>o%U_ zLa9W6x6o06WlWQJ(IsI2?0xlQF_*(BxOzM6gM1X-?L`mW(uJv~lXQi0djzA# z8Xb%MU=RA_Ozf2bE78yBQ_;ehRQxzsfrN-vCo338~PTaC*jDGO4 zGvBZ>A4p$W?sB~d;(!B&q9x9>FQUxd)rZ1u<2!H^u*0C7O?+7AD!AdC-8j%kGNEw< zL`?XcFmB|onOXMJK=5z{fFCkvGoJP~dGgZkiNCSLA?@lvzHw^vn+s#iyDASy+Qzr@ zS(OABocfK@e8Rk6Gc*4KDF6)Q7unOW%AA`Rmo{T@-~t?icW%^7g^?WGs{&@&C($R{ z%b>*lC|o-VW=*pa5(m2*_dNr)y&0q`2lm1T98Sva0gF*E(oJ(8gCF;a&cCm?ZFYW| zINJEQhf1?FG)2k*J8{7_MOmOmN2T^{uZ@ zst(O}& z+p3J~V#QW#;};_r)NOe@vYyME-Fn8fA)!LsYS9^N8#O_<2^yGIc0sd~F*^|Wz%($W zilNzV?r-Qizjzi}Y`*f+P2tPUR+oPsuetrbqUap%xZ<*!0UdrLNpsGJl7+1TaQ1At zh&SskUG-fTp_GCV8ZDD5-GEdy))hGrO|TSO3GC%ct;Jdm2(8pLq|7~=lMB(_FEGTS zWfag7UAxIpoyA(^e`XcFQ}d#qpuSjjIs!!NPqa^bk0T#hT; z85(091b|GlJeIneyHO0_OVGFiICSj_1|)GrZvMYE!1^`D%11&_xd-F@tEeMFMOmqy zctgZ?^Tj*W_RZ>C7JkLs+<<^=*?sc!E0-G!0pp7yO^Q9gWCx24O0Xs{bqj*s9}y?7 zGT~_h?JliRJbY;lzx7IuHCtD1v?!{ljk-WFvJ+vM%w39Sh%a@bFI*lLluJK(D9a+yTQmkd~ha zhFkA6e13jr;PJuNu7?1=4FJ2Us=c+%7z{p>;YPbW3w|ZeQF$zdT;z}(PKzPjXJ6xo z)w?xe9y1#aY%*Rx6hETjfVXq4ZyGX&!IP=v?H&h1VH+cP$eNzVQfz&-=UVFF(liiL z%+F(gtW-yB*EBes>`0d1%6(J#wQ_ZC0&L(|lBmx?K2+ENAH`_ZNf0N)2otL^2{FXH zo&Qa3yi$~-EiF-56gNhPT^Oi^8{hHKG-haOLy2Qn>|_SVi(=m*5|$(jG#-Y?iwH_Z zqsoZ?y8__=5@6#k6Dw@6LUu{mR8U;}J_@vDAJ`bdc4d)JJpB#x!@jn9kKj8$rK7zk zlfzjD$pc$UPB+Y!%Z$+pe~DNsY`*PaFuz}tO*f90>Xkdl}7YXBGz@#LJi zVR$*~c;?msY$BGYQv*1AbyW2oryF3{KDNCPllDS9>N%ynriKb$L|H}(T?$Nc90-AJ z$q&@d39xYGSX=UyUHJA?A?;iR-Q)9txZ}V`V-?nBUVOyFrLNC1KF+XG96#=&rWri~#<;#S{>xBPPpmQcFZV1S-A`{b5%eiUr z*LT6ll)?0)pqzUXtbiI`)@1yG`XYX(+j_<1a2UN6Hx+aEgP`y16uCIw*YsbsjI)+$ zEjUzzPuUEX{FKX8EFDko36i7D5F-@o7otnhzAq;tR^^t&d)0K)CWRkfajehJcms)8 zk+#Hz@zF-NrAoUm5K)OZ=Pa%MWzsZ=RU*57@U|N3)zMhk5y^FZ>07k>D+{eOY3rOq z*zbdnuA1ffZGMoPL{DG;PC1kmLp97hfetuxw^~${ZETLXRjG>hX0RB907=0$HCkAP|wE|BNkUDBrYA za#7u1DE&K8A=FU~k{1&#b>mZ3qSc-x7QH}N!ER1D98=m7a|yfWlKVx_{hr-ulO)qX zFe$mM^gw40PEPq&S_m}}=||lS5=ME(Q!*)t==FPb%n9aqy^7DK8Vn;!bUMW$FzOfI zW3+mU3x*pb-b;bGPVM)_9Tq&5Yw!ctiD*-a0Py7#E_;n;b8+_|pjlRKkk%LuW!J}0 zv;hay`lNZE4-8JrPT-{{{o>|3@xz#y&J+I)e{*TAxFCls1uc3;Gau9!^ zu|RdyLXNK$cSm8*${j1f;etyUlK9R8lJ^-c>@8&V#w9=AM@)RCP__%tClUpfKs(t1 zcFIjSn{@JmTO^^ePLcbK6}co(BqLIk*7iA99Iy^=7|H$JHtmBrL@?MRk|rfeWWNA| z4?AItSE)dNbjLu1sN=>X;*3h8i2*9b{?F%EBi60)9&dU}-~zRAcx}M*Zh=3An;da@ zy_ntaHJ(RpC$7!+L*tJOt@A@T4k|@5#kpdAE~z7_CU@&@s*AzpA-G-zf%#W-A`nP~ ze7IR9oEiTZq@L?A#;dh40Z z7YE!frG{gvO$BR?CSpu;;dz#cvArKmxzO1+c#6u&46UsWzzwliVA|sf-mGbW4Ik+` zj66Ka066zyiv|1}-P!k=aXn9n0@fz%J~4m!e63|uiCMcZms=A%Xc{yCY(4nzdTVKf zzc9DKwG;qXTQLf)e>Tp>Yz=2jm=}arF%S;IF98ZOfK92!N(b{f=#pvwXK>Tzb*w$B zK1f{&aR!SIpd-)y&>Nl$zf2F1VMEJP9Xuq0itd9}0lRQe_~w_L(^|W^!e}7m6U$cp z4;@=&*c)qSDx178AutLKh3DLG4~xmxjOtl*R?YQw`558pnox9gS4);@-?(R8GCu`| zPZ>h+01@92s@_-M01*~uNOoS>FrzKg*dtqbTBce%gWFrcq<$cBPmB++dEyPQfvnS4rQa!9V4%rkz(N+)pCo(q9x_U9^6Ia1kAm@I` zZIePs0>2PJ!bgz=zjAzj%U<<9Yadc6(c>`YJY{W-L(tfWa2#RD>CYucah|~RG4Fi2 zJUy&X`DvElqN{;gLoJhr^wTiRQjxni!xd}nTQr+f_dOo3&*$|VuNzBPEQ#EZX^dd9 zA}0cHzNrgo$(0%h4Xw=>LgT6_lIFZ%eWhuexJ{Ph#M~^Oo0weY(-U}nfApl10wh>A z+NhoNpBp-{$fFP6G|Mm>{IGmp2{f`nOC+?YKiV618;X^dS_=S@f_K$Hy|?LAX@E|2 zM^)2??3Ogmvkp%mO~66iRIhvOU9sYnJtOmMtyJWtS}T5FY|?k@8sJdZP4FvoU2wyx zmx(DyrDX9Xv9nAn;C6q=d-fD|Obi+c-UvBNUpJl%rxBv~(2#4B8%(srF6^}CNtMd! zNLaKh%~FVEYd#WM(P-4wbT|@Aq_~>GWdc^~%3is02&;qWhi zLEcvF3?jzibi32{EbwX1(>0Ib{a1@e&MOY8I4(mf9PmX*R;nvrY?jKorIN1+C6f>M zqxqm+q!c#m{O3-sQ;t$)6d=QhJr%zTcAW{p9H#$S~C;9vwd_iVpW%&_c5AK3*`L(iAbf^$=cBO zi~Ul*L7?^yWmunNIu3tzkc}`d!d&tkxwxh(?ejROaX4>$ea|6xYN}eu3jpD71~y%u zPM8GE0#*(ZwS&6!0?MPa#1e_{$(a=pvzgIymmB%cY}N|C2)9krbay~ocB?1X%Eyh^K- z&G^hH)G7#$Uf*!|a_X9D%4KoS1f3^vDsZmr_n{!-ZE}#{5JlY!F1q%7!R@c8`DX*c z&DgD=pCd|I3`9YwGO{?X^T%1Eih7D@Z$e=3+Aj<01#1SImTV7Um7N7_CRAKQQGPTU z9HXYa#M)jz^m5pX{T{s8p~lj?Zd7L#?&;TX^zpifmz3dx&%66in-bhkS9{oi&0!0~ zt0GmhEU}Ku%=fzC8qLn~_UqvplQR?z#nEJx7UjZgy_gZ4hi7#UbRS7;r?1KPd%<38 z=8;O%(ru&Tnr0Ym#vLT9q=cIC=ZZX=5sTJE!Sgkv0u(E(OMLm(`#<%t170xozg zdlFQkYejJmr_Fi{XDd`P-z46RB7va7s8)F@B$F0bg6y6Sa3dME+{Q6%4YmisXNaM$ ze-L>46R6+ya6s^~(IF`7g>Cj=C}r}Z^ZcNNmg-L3#cVa7bXczVH1V?Qb<=zKs!t#B z^|wtE0oi#PjHYrEYyp+%`UR&M8Oo~@7!eY`c~zw#K!qDU|J#J%`=Z?)*B z8}@P2g0$4ha!Hh|u8pYHd3=PPu+Q8Ggez8WGT+g&9cEs*$tLojtK3kwA(9*2WF3Hz zi3C2iJN^2zXkZfs%<9b1*JsaGGdCiD#X4w>Agnpu$FOU2WQ*O0tnTw)Gv5|M0pEx- z+ch0n+lKlzXM2VGeHD<{7Q^>nz7u=>+Kk@5CfQd#eqTYd=^jCPjNFU${R|B@m70f; zudpCsdTeYd{i)bPxGkrsKUx#7vUk8ZwOhW=TX6aa-~gvRXK(*~F0b$B+CF7+h4|Hl ziFAGq%{F)agCk%jvb68{76^vejM&mo;0~rl?|J7QmcJ`fXKo?rBXT*m4|ef9NI!BP z`sRvl>#1FcFTYSyhGrA~P|zCiFGTEi(EadzM%F?Rj0b1(%1*_tettl`2tJBNAE7$) zJo)3~i+sL-KghFhnCDSse&)&d5b8rT$QWmbH;Aqfnm*p*do;%&XfagQij^GnwG z^D;0AWpjhi5z9a-H#hXIZPfOJ(wwUcb#@4p8CFHrY&5OzR4;|xnTpKfoGgc#nfpY6 z4>xo!ql*q1zzOOPAhzF4)%mceZ>1;lN~1ORmTEv$nRBI#oW`s+eFw2ad$DQ57U>OX zSc%7*Z&H2w;|64#Rabs@xBFD8%u(S6i;An0?R(TUqjGhl47+4tH6|GRc7@ZpE*jCL z)&xK=$L1jplrNl6;n3qjqsIZUZFW*HUsVnaOM@z_!%(TyTcj6DZ4%hUd*qPx`>O~v z6r5JU2_H~G&!k^msy#@aVY>9<|HFW~YbV?&lTjeRhi>CH8H=ZNWJ4(%G2tH;L!s<@ z{Zid6*#hM&){!oPyvj=w&m54y|Ob2HM(C3#t(C49WEKWF`Z7jS^hw z_wIX$)Qiu}ffU>k4qV*^Yesb##%d_W?&NgMD>iBkUFFTA=>ep6RT&n==0)D^y^?G) zk#zcUK_{_0(A?`{th~eGR!KKZv_$bh!sh^|z#TVm(d^)MH5)`iOUESC*_KvU=xUFY z+%QzQHswbB2`qVbjA~ic&6DQAS~!#LP5=t|use--e-)BUXoFlEg}6uDe>UHceG)G>%>VPku=p;JC7y?P3R}6{4TL ztg*+-hIBj>a7<6%%SJ5=C5O}L4wGPTs;Xm{t~f%KR+1%Di3G42m`-}F?K;p-?Vfxt zu0=JTVzo?WrqVD;NJ$z6c#rKit1{lSQkpr zj2lL$P^2P*x_v?OjK}S0$IivDT%Bc&m&Y?p`3U^*-C!`YET(Uf{EF)Po1D?KDXo~7 zY8bZi?bghMp5MffQNX-vSPqAzc&VLUdx9Rz8T7DA0GTWV-^YzH!(pYpB1ETvU943C z$ThyeposJa~$w>XBi z*XyxI-EJG9;F8rWr|4Iy&QAUq8DDYQq_6AZyB8Oq%~W`9c9ocE&y~ZF>46;Jp*pTp z<4Y3mehzFa<2YS`58Wbzjzz=YsC6JhBMr;mo-GPaB~{?uihgC@30@Vv6scGq6ss8& z3fZzpsCvA!uivEfHiTg4EmZfk;GcW}iAbj`eTN$?ZjAn{P>FJVQi2xj|9gqZbOsO9 zIdpnDnILQ<28iA}2*gsRdl0A^S#iq#stQ9H>>=N^z)ifMb?9C?V}DX?4>&c}Yw?bS zV3cG@ux9%rF-+EB7>^{~h7aWT;5LFycSN`m{Hk?#Izt=H%`B(N+tWqtL^50JuC{Ac zCX2MHteaO)GUc{g7ycSdA?6vm%}c4JkmO|elDFAw2eZ$D$X%KLfdxRdYCgfm0X#K` zMD6vuj0z@t8AsdSs4qb(74zwYWC4T+W+zLvR#Rw4j!%CC8UQC~or>$gR8|m_QB}== zlkWpr#c_dpw=5Gi)A-{rQ8lUK^>57&kMTM*-dCFx3tO@2r;2ltR_~v;Yva^GLzrH3 z6`%L~7%`%-v@l9Q=gypI=nle`+u;Q<p%j)V`Bvbc_8#kI{H{YZ@C9?I1aO0yB zuck9XS16nFKLT428fmXLpDz=oR0g7;W0qXBN7(q@7(h36LFF_XoVz~ft*>_gC&Bqv zu8Z%fK2J8fE^gHhe_r@K^wU$jH_`FZ2OQDOl%Wjq@H}zRj^poV*oi$x$!mdhwkS1y zW7t+!j*cq6tM^(w(H1T`np)Th*B`8mf!T#iY^iaR;r!F>>^-)VIDa+{flcn|BukXq zdVG6$Cc_)7J0ig-4WvhY2D*8ujS~>nJpGgex9YMJFH48EMp8ZNEg)vvCZmqd9wI}1 z=}kmm^O!{p@%pMAP?Xbg0=Z_c@z9Mzg4(v>r7f9I*A~<7Ndg0jHM3yaPYClMqAz|7 zfh(g5G@8pMvVuAfg6Qi%fT%KVb(-)8BdH0ZzU4zm&P!s7rx*r7-a1UO+8Rz`tUBMA z9Lp4g>Xvp&_7bMz`8`B;x<2nX%+He(^>8}%f%EzU=D?jXJNT6b8UF0N$%c_%xH#31 zEvW_lY%!J1k_5Pc3{9Zcb*~C$$=nK?s7zj;6SszlRpF3>a*-O<5+Kawu3?Bkizw1W z1C{a;v0q?9819SjoWvYqp+-!0JAGKaq$|sCelUpD}1hb);7(nTl{Jj$-*%m zmtN?0dwZIwr4gB}^KS9b#oYfRoq(y$!R3uAORwTBh&swtSxv{xQtdFP%809Zp>4Zq z{ia`*>~|dCyUNt{=dd%P+7YOFqhwjZIZ6nErU^L&f6=cyaB{-909GHc)G^RtZsQF! zk8;m9KVR5nn>Bms>VY|;B>t1Nv~2GTDkkej_awBTHSDr6UReLFiH%ph&{m%G6kruJ zAxecBA@CBaf?p)b=2$aF^;%5u8J@dlO z{noN){`~OrWAw}e?r~jFY|pptwBkglXC%3*0Y#_@c_pg(&#&WCWF~k}6h11(;I{e0 zm%AJu{_*xh=UVLoPVP|+KF!BgaO{oQu5w|+ZI>_k?H)3$OY^PnO4vI`N3}IOxdsoz z3s+6k?S34RwVt5Q?b|9Dpt9jv5r-(5aW;#ckX@6~My81~k6bj%X)SnCY{E5uD0qT4 z2gyU3{-VUYj6s3-6cyn$*3LOM)VerKP|Q{<_PF2^Je=7!>*MAV73{=JilS@YRG(@v{DFWULU(bxq0@s2JQfQ0W$)t@ZmW=t zm349J38~#=6W6?=pmf{Lh^^uW06bRO<4F`fTD2NdXeX@7&KXo%@r_WpKrMP_$@#g? zF&Dal(^%Xd+Jxz>{q@`iEb?s8b-~!U>^>W|TD?XS0k1!XJ_~3w&yLCAe2W`13zv+s zl*`%$*{!?(zCJaT#8PUCYtK>Rg>L)4bYPq?Dh+!v?F8Fwtk35eV@Mg|;1}pL(ITj= z&UJ~-8&sez*;t$3%{-qSu>HK->9$iIra~|9SJHnY6en|R$qXL1FV7Q{peSTA>UCV$ zZ_%?bdA3{XUO?wieJtWv8_Dmko#L8y6O0g>)f1<))hXjFx_Y*HK~5HZKGeusHw9VZ zL{KD2^J+xPU?r1$(%#qPufZ?UNkUMhuqvfmJZ6bIU2Z4#d$?+;2ddC7 za^akWB625~?|0|C*Sf?HPErS|PsN8V$OEju<8ru})wd1YD_r43ej%cD$Fnaj#|ztq z1#Q6R6?B#C*^vPw4ZJpnrDOjT=CBNDJ@Gc!J4K=DQvqGi6D z!#q@3fotqxk<}!RKZcJ9=Wx1S`+AF$At53a~dQhMo`&} zia0s4oWGo*;CtW%PKI;D}0@6C1 zH*+g&>n05{>QMQ`I$0$Hm|^MxR2hQ?v@4Ht96AMOjkG$ecdIk7)aq#Qk{{54$r1r! zX17`j#lSE_)E*>5VWJI>VJ}k>>Hy#!7c~XWIb%pSc1;|3^I*_NY*@^aR&+M5u8%s8jgv(9<)XR%6-I3cjM- zn>t@1#_(xF$VhrwD5M8s(Phz54N!afXQc+c4~Fu;klhQbzz}S^p6bl)L1B>e^ss8q zNNwFECgt)T#FJDI+zyASn!6TG`kj<}*4ro?KdG#65$+k%dX9D%u*m`nOP@PprK+*n=f_)!)~5`h|;-NmWdaCM^tom7Bki-IV4d(5H* zx}~9xIypCFpOX2Em~w?5!R{s{myJwYXw8If|LTZx|JD>+hrXrk&C>3R&Qi@+pY6}O z&F~SC-~pJ+dq9Uoc_OOKM41K8%IwAQ|K7_b11t_bQ-~xuLO}&%0((uspZ$g)Ol|7Y zPx9eP#ghLcYF##Z0u-ux9z@>ty%rNBuTbbonU}g~< zwcO8T9E_yi-^-o2I;wKebZ8~#I;+;ubeAM?g>g6UJ`?+iQkKAbSioHHuFhRiNMlab z_D$RI@E#%X3(RNvAH^(a;-J+f2>0s6xvLollZ#TUWtii(X}(qhx!p*ho)4#vZnB>X z1G7Y2R#=WHf8T1-cuP+p#|_52TSdGv9=-&lRB1_OkxYhsj#;|M8K{u9=bfvt=H@`< zHE!N1l{lI#^qteBGB==S+J$7ROPz>WP6Ikv>aYx3tUJ)fkP@z>Cz_FgzZxaBpiNY+ zjg2~rLLQ4LEd{P~xOcaXamJgDR~Ud$0Ze_vhC1hTp?t8;Kw7m9dwLhA=iCbtlXBL{ z6hm~;bTEN#Zbl5T;kJfgx#>PAS@+bHQz07!kk3Rk@pbTAgpwl(0@L@GF&H87+mHlB z;@)f~$66woNr6!GAds`51s`)UYpun+hS?%<6n=>tVI`eNmu%{-7L&<} zMOB1@l_vAbQ>54fI83sH6j`gQb|Zngcz?yPE~1Rld2fZpfA)c(yW2&>?Tjzu_I#Mt zYFYAmlNC=Sk)ci+4RpNXj1rj;c8xBbg}MrK@hL{-bD!0+`jJqI@nc+B7W_!ebW{`pQl8uHq>?mn(JzuCcRQLmozmsxGe^qQY@4k>YF`)&(Xw7 z8$52~mq_~W;bF51X|VA-#_J3FA$JCN3+^^&RaWe-6N}ehbqD@WnazJ)eE$be?{5Yt zq1QhIQB@3AAy;j#&_7smmVi;(^uTm+6ge}K?Ck4B)?(MHYn*gIW_nEu_{MdcGKB>E z3MIj&fFaDzK)0V|*~`y#roa*`ORU{VFkB-abI9TLkWT*srxf!nv|pida=XV`u0nys zu<7Tw?MecAONpIeEd~EFYDp~k(wgjN69MdE;{E^wfihm~ic(_s32QkZnJ-)v*NQ%& zx;^T{RGjOY*wIUPS%JxYA)DfgWSw%{LrF3hY6OtDG#u-KHLwh}>vE5kSZ(sIVVlAd zX=^l>R;#m)lOy=w!u;;jmrD~%P(XdLaDx(Ge=b0dQi z(UiZ0MO!TaV#MIlvpFUmC}pT*>I(dI96oc>hUc{>Z5SF+a1L$!Vd-YxcFcAoT8s{u zXAhrhFdfIG;k9P$`%6DZ?Jr)q}+=?ivn)JKx==bok-U{nEXi zNzS}0F)&M$hvy`;Mx!&exY2Ox2m|tYjCZp}JmVVYl>kuJ;=x?!Xsc!Rg z8!DWs7y~V$DdZF!t}1~cVnT?%12J8k;h%L}DwYDqa`^H_7}bW2C8LyC8tln%gPsvUrCiqripZUf zZSHw~5S)SCEiIU+RLbE@l!n6dwIy06AZu!hVDFkeRya>uDxAWoFV-Dg%TN6{Q6YR5 zah4IeP47bU34(z>h)@o zI}a~}MtrV*F*miFbXz&uH8hbm{n0UdGw+nxd)B0QyzJ-4Mc3rmuit#R7*Rd*=U#|a z+OoPdd&;UV0xx-8ds`78B_dNx%K0!DW3LvK+Nk4@nIKtYk(U(Z?dEbF^hC5518f+;$-oco{B(om2<9+-4q3@zViM?LZ!|I9G5FNe<7(yn z_iKt`TM2%(f6y|u?T>*h>hfi`2{QkSE}pSVr3nwV#2Xp9d25IxyONOi=|u7wFl6#S zLw%;z{jqMU`l|u4Da)GD+B=2eF(e(+%w8@}?s;od&6Z-C@LX4!1Z&;iey6F5Lu3oF z5~JyQ@dSN$y0C3m(j+?e_w?dOAMWyWVus=Jqh2Pdsf#USwINlMpgE3;j&WmkU7K3j zwq2*K8%DB;?VKO8znn8zi9+sOFLoowINljPhVTNkFLicT5{lrCu5M^7m@P87Eq3v` zkW^c2nG0!U?F6JKw9x@XS>Y*FsAAIQhw7$LO2ZO(Id9rq4CtrL_^^^p?@f~0#dSiSmYMxF&;quyMpZ?astCBesz(2m9&HUj5*|ZoLNoIbL!a#4pQy|5| zhegv=UJ-KR?skBAz`}>OoC6D@bz{HrB_Zsy`dEUeWL%^z5J|&ZG|Q6a0xX3#P0O)>t2;(@SYN}4V^{R9U^&Uv zJ4g063(<=oJ_XICyc?R+6FoOilIR~3bOEl?cG}eqa6bKc|BYxkkuO%1O{W}+-$Lev zl+{XmiIteMA$Sdoks7s}#Y*3v#yoD{tIT0LgS0?+cU0lMzFR?j@+3aqt67?_08YkpBWd$PMer&_p`LK;8DqRmeBJG?)CCkdW;rK&N#_+e$s2OHbg2F zih1BJ1}OPXyOjf`#%Q1{7&j9(z2-Rur;HBHd-1`I;47tm?*)v92D*4;)*j1kLTD=1 z%;)0g!l`%w46(??s(F_+wgEf-W1%tEfw~yNXNzM2X#(1>4vP6D=p`Rc6s$)m2l?Ds9zQQaQ@fZ65Kas!2zo=B*4B*+yV!|1pLX=SvJUi%VmL zHm4=b5lbR1hpz)7_;x=X4BLzeh!WPo7-W*87{?(&nS?=SmOI34O_q*h3#y4&y99T7 ztR*)@T2(yDz+Rmt(9e`1prmtE5@nj7&yg2#v>eLjZa8{6{pk(5DpEXhf~RS~l*l@6 zXjMp!ghpZ-Fb_T+OB=w&I#FYeDA{w<_?-00$uz*olNpXXNs|WP+hbANw$)R9SR0q_48cJYFJK zYB>T0DF2u3u4FvhqkBG#$CFT0<;N$kB* z-=qg^WePCjJeZaV52r|kh5Av63kBgV82D_5Ngd}F2h6x&$Fq%TGpuxLsbhw30(xL4 zIQ(!<-g_men1G$2AT=A(AQJMiKAOD8YZ*Ur<5yKlqSqm4PsOz$4+;kN+vr0x3?bn*wLj|Z0p^`&zV@-8`@&M8OJu^0s@cW=5}YM?n*81IF-nWc-tFUtxSQ<$AK&D1Z}R`?;3}% z*Xl)%ycoE|*La{X@A!nMKmN8K0KB!$=q1E^^xfCPl^blHyWR;tmQDbh$3w8=nH7h2 z6SNW!BSn0j#59E*kD*)!36CU%A)0aAsY)iTe-&WJ_Jfq)r6|)ckMv z`JUz5ms)uD%AsH^MeXUz&~1{0@3}3CzQJV_fUny(|!(v~&0wKmY(Q zO4`A$xk>Wmo2%)6zYsrYT46m5gHBMM`xiZQCW7&k%GSxlmMB1Q)Df?MflcT!U7a{U ztA3)*%w1Er?5?%oX{)hr;lXd2BxDijvexX8!7*4km7|$Qc+H#`4p7rrihqiVHo4y4G_d|Ux&a!%eTSV6U{O7x$8lqkU5OeUS&GhL3$&6@hHOW? z^14JMtli%dNvZM3llEX9wg6BTjMs*`jN5s?$cBnJ|GnCH^3 z-G(i{Aj#zHURJ?nU>6lqc~hpmMGT+datKF{pHNGdSRnCBQ-x|MX^9-ZvK$%)7l$LiUYRmPOYGlK~ z!BOs}ymeET&*0E*z7zK&{^3znFukR@fB@espVFblvumc@gn+0-q?c zom}Yxa}$}1k!7~w+Gt#20Rs|Zi=zpt?lwSS96I|>7MNf)?6h$a(p89>0>3{uw8V@g zzpSVwJAzVf&`H)}hfZ=dp_T{o`9F#ayY2e>XH(-f_!)CU6lB;P5a#o+xLt z=srYt4JQ^c|j2KI5iU#`0w--N&Gl_=tCc4F(AsRrPUmxo=o}0 z=$r>QV7Q*^eFANa9x%u(LN1ffxt8BBbGCX00YiZAexokX{n)%;?=*95Y8+u#;z;K6;OxE}qg#>&rJq^l7yMi+NtRXeCU@pM?0K>>YXerU@wcO=uVWJX& z)TF>P8?8mRfT2YmVc{&|wixRqg^DmajV5VtB{diVZ)dw!aJJ`<$CZtu$n<6{Xa?Ha zn4;W}FO*io4V6NP^a^OC=SIT5eLO?hs+Bwby|{VPJO8#nJx%C4&MWqJ^tGC~_EoRd z3}+6DR9f(s_lLaq)$hpcDyiyBVDi?ON4qN96KlryBfiC$hEvp3*ZMfNPA;B2JrRsIj%?DY@~5>*ljmNn1;6 z_9Zsn1-;6%$oc$Oq_<(q%P^d0Y76dcK}sP_T6I-4={^n#_k2qzu|!a6KT1^z8m+Pz z7qcP8$n$s>Y^SDFGS;tSdiEz;wNGn=YP9>3HM3h2uG*7jviTNfQ8(U?p@By#LM~SX zqfeRs5Z9hgTK+@f3@1p*_Fw{jLd8?2pX{=Yw-mwh#*0uti26sM+U(8fWT$MomVK;I z9(40`VoF_#K?~6VK}|MzoO5QrOue1Q$$<+A!UK)0A_01E)I*tsPFXvVmIe5}Nccu2;u{{t z1k;-v^BbtKa5Hx_TWyb4mr8A=nJMjV4(se{`tTL#^AGNeBuXNBp$igc2tRMJxDo~6 znEFRUdw+fZ3$=_QbNx^>E*zl1{QW!%t)E@Rq=##>XV9+wpbmHKVRQ8a0(3_b1ZD;5 zFsw%Sf+Bex7Roq^eGG*tGnmW9{r>zc>tv1_ZGMEQ*<~T1jAe0E&wx79J6Gpi+U8rE z+M1VF18?OQ98fMNZfN-2+X z%?tY>{bB=ykVoe|n3HTdy^e(sZ-$%5F)f~t=} zLhc3YJq_87Jj)|i=WW?D&Fm`trL^N#eU`3;%3pYxk%KC0SGI-x3 zd=Ykt=J>+I@Dv?;>`cX>+0*a#&$#X8pMmXL1{{}MA$D+ajlr1pL412v~C-63K+> zu(WqF7w}y;{vJbJm!F~YRGg;c*5kuE_N3pk)@?bvKH(=_IWi@jRE`w@^%M`c%nQmI1Rj?W{P(7k0x zv7a%PnMJFTKPU*CzE~SycFuI8HRV0XQQOc#kgwbjkoGbq_#x566F1=10=h~EOa8!g zFew?Sm(1bfzo0T`5V zDVmU|@>%9eSuYWgW!Ws`d+MH<=AT zta+Z0L&QeKD2`Zb*jw1kR}r=ACjD^_)b(Y~Az?deu?6ia`Syd)@Ge7($#@M5M$7F@ z5YW^$eGr2n3Tv9SK8XSvf6mlmMiFkD8^4oje?Ze@rbV;H76S@Rynr=3jkGe(CKz>Nr+HSLyCe$c?)$ReG7 zct}AFpu-pja5r=_iOr0pJ?|(ml;RDb*vsYy(+|1;d=V(a2wQI_{hl!P^Y8BEHVI}0 z#Z2!nwh@p=H;fF;R@Q+yK1%_b^fh8gy_=pgxkLwHC815?c>xzJZOV2{NqiK+}&M+omqT7 z2UIUtqZ~}rkM%4vA{ej1RY>;ii74Fzw1C7w*8P^gE|8NU2n=TRJxoC-yWp&D7EG*n zA-b_%ucG8UdWkwJ3tufC$%k%$8683%UZ&H|lWYJep&4|-+LUb$ehEiNE_f2cGxQ>r zAD}}nQzT2cpf@Vo4uBU zGOoM=bkXwJET6j@nBH zv4-vT%Jd&!d-m6pA#0(Buhm;;Rk@mj=}$(vgsRjqRi}ySrs7zZ?dJRVW43ozOPY;EKFE8=qr$DDk_ry zrOAUJp~g9y?C(j52=zAuF*M*T27l2Z=t#>)H+ycAIeZ#C$7-l0x5V!s{1K1fJkJTb zY$V(t`4Y73Vw%NIjwhMTbUG4LUc30@OeIMi%A>WK1hoRYuB@@k4@L6k-OIDFE`%O3 zPpMp?kjA|A6;TN_`&OdHlP$@#xMa4}ESx;o*kY^PD#aYS5=CqIf zTS~2M%;YXCopQELwb0FF0ReF2gW=lyE&>5dUx(HX;i~(YBR3vJPgo#wFYHb)Y`pxM zQFmdbioytK-q{v%LKA(&Z*EzoQL>D=wvAESxp8*>z0fj{q^{)IL>&36(|jl$;fW~EJ zO>fyS`^x+(A0Gj7dOq2>g6>?O9}GKwh_YCKu>k-8=tP{}L9@q!^hd~vLrtwpBlqA` ze}uAPdq#<%xb)chg7ox;*G&^!U`=jw{IGoKe&nh*}D#7>R=yH#7dUM}m1!@_Z zUbVR#(N#d_C|NQ*Nhd2_oX*QYv>nM~uexveY$T85Vn!?N%`OuKLxnr_p=%S0Wuqn3 z1$?B|&vKqxHsD1~>7c~(yW&1;h(j91QeG7BJ|2<~_#2zr7PS{Mzz}!zbCp0k8AQ!I z;)p6l+pOYPv$-kKa)X5IXE|%BCWR!Z=8ZHlA)w%sVMYalGpj*LERjUm=SagzYbv~E zkwcYdAaX|h(-!uzhEAr9z2FG&4H#jdSPOs!#`$leBuMsnvA}ktk?dLm*Plt~=f}H9 zyWd8=ekB}YvsHR|Jz)n0CRD?K2q5+!xBOKG{3gsGbTN(K?mFQXniIagK)6MD%hVc@ z?f!>1KpqX>8+EnYM&sdxreJ4_Li8g|09QyZ3ayg{X+0=ZAw<_XqaegRMuNu#g3Mt; z6;lQTd^SRE;7Z6fw_tb%VviYYQRPdqAgru8e*|dl70!8GQE)({kxSoq_2+oonj-wZ z>~9ZEy|7FDWMr=p$fxU#$1e^$J*?K(l<4PEc=-ISoVKxhrJ2o^Jom#>h))C)!})bF0qWj;_=<@AhhOzY z^6D@@<&2ote;@>bk)LA$`iB$m>;yRm)7m(~WV=RUK%A?Y;v4}fnm>Fyt_9D(x&J(zj}8q&SB{)# z!j!PRoPr>z8a-DyqVg3*pP$LjFRG8#N<8LE53xf>6>(UgHgXi-y2=1(~b1y1OAD4)Jv};0XFmYC0$za z(EXC=Fc<0bNc=`cJk990PEX%D)oZyp z|D3r$3_qx{dZZzb za&k$7fz{-E8;Jln;Y0wVbnGiQH=AwDAxPP_nFTM;u07I?IE4`2b{LTMX&FKf`s$Q9 z{F%TbAEVyD)}o1qdLm$0UoT%t10I1S5W^^||57Z>*{nKofFo@}KuJ_=UyN7W^SNA; zW*8GkcYRuYu+6^h`{S0s7a!~bXG?K65(}L7X7_Vd(g05`6zz9~Krf3s9CnLA=O~5U zQ>LK3u(f)81qJ_-Xb&bxgrTbA2NJgU9)gw6lYgZr*M zx~0-QkM~LGP52lWOhgnlTwYE5Iw0aA%at>zN^V3*b*$J(G_~WHGNIGLXx_|bv zE3+z*MNjv~6F8oxV4u#+`u$A1I*jGedEvcuI9LCq&kW5j>B1J{;0E+mDip(boYZp% z(_Eo6k)zFL6h(c;Wbr6lWBA&_Rsn&*=xWsj4|I)ZJ}IX5=TMW)Uc9geTEofpt{dgE z;c`cDL)^6};bKW+eATs2*sRch27Tac0c6gDeAVbU`= z=ykl79cx$djn*)+g=oMGLH*=%91|xXiBR*RJ(mv*Eqxs#mN>FJo~{C(8Rb+z*RLuZ z*TuEoF@nG1he{q^dMQE^G$4Wy)0Phig%&-$xw4&rAy=s7t?{VOZVU77!%zM0&M&#H zBI;CvN<@1-SO_LcmHa4l$O1VAAonpt-%z6O+?`%fXera`dCJ~?rfH`HAZ=si#$xoL zPaq(>;GMGMsO64TEH2)kCW=NBUT-SDBc$=#sx)o088aYqqVrT``~ze@mHK4Z;+G_f zLJ^9^;=*@qUx#1d3>ujUg5d6ps_T0TAdCD(%3~H(E3FV|=#&o!D?**&5yl5Pr6&L)-H8^E6dc zr3C$P4$OAZ)k%=J!p(q){qaFytks;zvow@C0?v&%0ZdD!Kq|un((5(uAE|*5;<3Ka z3E#QS^BoW=_nntT4?-3gLdIpYY2!0^QQ zZr#B2(qo9ZvSbK~$H1sFwby?1l7T4$^pD`dF^uUX2dZP)6f$e8I;f9ygCLuF zPZ;5Ho(w=J5*fV=+3(HFA(#ZhC84JJ=$;08+?1!enpJM2ivx7 ztB=6j*bnBpEHwn=mA zmt?_6&1n`PJpI-v)Kxd642{pmg;|6gTf`z~Sy2-J#hoDUp2fYSX2+6nj8PYL&|f)d zA|vav3-Q)8?S&@k`r;i>remy`{Xz?Ff(7S^=JqimsMKLCde<=s=e+8b{OO)C4nGZA zrJt-gYs82f`+O`3$MD{dhdEcCBg?eJG4%a+(`pvNO3x69Bd*&gv`WP@t~- z03?`g8N8A;4nijC(Yqx}zXTcsXfG?)jOYH!WFMQj4LvCGVZ!gLc)oi^s0lDLu7SC3 zIzN!1gOF;1DH$9PRTealVUG%iZPJwAFPX4|sLeVIwmUI)ibav95)q`2FnhOwvQJ#; z7EgdP&LL%%KG3wVmkVacwj}4$r&}?Sv9a@zI?1vcwAr8j)RF5}cTjk(FJhZ+B z1}mY$16%24C^(>^Sm*Fo$ZP3Th?mfP?yKgTU6`@jwY{}l>Tdqdoj#OXyopTqUv zfNm`B75X3`d6!e~!RJ$-T5naKs(0^}7M#NNL9EXVK+|`<0js{3_+>2T+M~i?dx9x18jS2w2iZ?`7hnzE zmIKvoc*^Hv%W!JpM;4>>Jqrw|ZQMH&{8WmP$*px*<3@nAm`MYYCr;H`BzZ&~ai={K z`1K!!o8iME(2>tP=RSf!QRa5Y-2LTOcYnuXbAIQ658j{XoK7aS3S;&ua1$zHt12Oc z?N1CjJ*q_%4*y5rLO^9jFMJz;$*h%{bNACC{Oq;p#VOVqbXbi78INoIGaalUGqvN# zQ!}E?V6wuScb`=|=2+rCu2^b# zf^vrcvqGzobsLLw+jYcaX(@2EPum-D0z=#EN~xZTPN#2d0rwhjyn*a@B{sxj(GI6i zi{M{gJKf}v2E;5onJ9tZ(m)}(6-zOy?k@K9c?Sv>Eq8MZ2sh?f@Js}3XGi*t7P8ie zfMYp=WvVcZ32mua6ypE}ZyD;pnh#%#t`EUjyL4LmaFX%sMj*TC1EV4AL)ooHUmt&k zLU?F)?=A?SOC&AE+h!9RBX?pTqECHBCe!ntN{2?*tx6-E{jh&9Rk$qa?jU+jOid{l z5;6D789^F-+%(G0@E6fvH`h8JV@p=M9^cdoG(IH1munK@aZ_%IM>tR>Cl zV^C6y$FW1L`jNF5=GR=~#q8oR4mQBNl1M+o+SAJAGiGt5C{x%-OSb?$*a@AZYsq#u z1kQCf@6N)ihpI_Ai(Q+PjCssp)^ zZGOEV8nzp9tFA((d0fiRO^4| zl5`R=z0-B0EPECEzgTijn`8Hl^d#YzCsB})Ths?m0Xmb`pGKF)l&F~P2A+*kQiuLo zCiP%2xB|xWtC~gE7ytFy9^n6fW(e+p|Jbj+T4VJw1i>~sG3oGNLbd(7HP*krq(h@b zZrg+xPH(R}pHHDlXR;K{U`S;%=@gftv+4MSQdx%EjMc?Z@0D-(e*UW^cJLbpH@&xg zI%7HH=D}39@77^_lS-OsI$-m)joE#Ia8D(IbUm~?V~D`LFS!*?CWFn`MuXPqZ1SiW zx|1n6y3>Yta%P;E?U$RNAbUJyyLKvmbz@A^+sS^e?>8S+hc*3_&9{tvPX)nt5ePv@ zWV-?1Mozo9t>%lzvxP!BRW7F!;c&X3eCzi=zwl?B*j$;@heeEX0)eeywBwPj74!nflFhm;DQ1Tw!X+t41I| z7&xs=Ck#zw4M5t7_~@}+Q^W#*u#e`D4HRqT7qvcG*imaS6}|&2RhNw!3jv-covr1Z z6!9jk3T}#?O>cOgqa)YvHSKsqLfUe;ufQgI{{-Qg#>!FdC4)to=c25)TC+&{?% zIb&%IKRZz`MI@}g4e)M zkFQq?D8_rdN!qFw4(_U<~*6#NDm`SbF z38&AAq{={4E|+(0N*ri9`(j**iyBj&VJspb7ZV;80tIEN(cz@yH$|9}fj| z>_M3I)@m*)G|rA@C4q3ko}2YJqIv>sjANwgqyw{@ldJUSEF6xlV)h>FJJ4;@eV%qE zodV`7guhmY$en;s*$e>D*x#&@fd{rJ6-;!lGK9Ne??JN2A62{S15Ss=K)JX1N-!94 zTChVB{Ws3B`8$1d$I(;y7cDWMuWm6wkU&zcS_{jVg{PD=mneFt*3|SrJu$5uPV8tk zBE9N0#^%EL6KA*m&p!fs6%S-ugg$pvUTd(|y%QZC3gKq4L=t*04%#4(YeYvMkXS0*J<%&&EcpL7(G72U%3=sFFR<_ z^}lKhJO2*L><#-dUN(=j)b{P4SldF7^u}%tj7z(U*E7MF#S)1;=r4mVURMB+sEm+Xau%?tJbO2|$ zyjv3q0<)$tin6YR+-_HR8Aj=TNq)*Q_9Zs=R?o~dLA?i^Y}h+-#k@X_W~yVaM3PmkgsDN6J+0HIvbk3$$}{iFKizY2!D~ zn{3{o-z`pVz!Hto`~)2Irp>1=-R?`Q>?fX;EyB5xk5aRS_#7Mct^qTtOZP^{l7)W< zB;H&&x-imEUS9J-ZSP+A|7d-)uXd{G8NK}e|DlNeSRSF(MmzU!r?@jZgMxaM(dgP( zo3QQpE^$6R4G)eF+>>i!pwIWXY+jwVi*h{$9p(;FdCWIzjlti4eGBmR3ve;gPbtMo zBzpy^=^JHBdDT=Gtzv#k zZ7OKLTv{dOH+v?YFmeJAO|Y`QP;0t*a$G-{5cFAJZ=K^p!Ir^Pi?tUUR)9|)r}Xq8 zs~L|eEg-W*NB@{Lf}4>7!v$A`>w;R_+2&({@>w7={;Xgz{Y)Qa_<02o*1ZQyz<1d6 zD5!A|ORuV~5JSd8&}O$sAQe9NPDZMl!NM7Z3opAf3qoz2uMLHziv=_u9uLmjjj50q zsau^*(q6Jlzw7$9a$;h*<1m_B;#5ry zXdI1c4YTUpT&qiz-EzM_nvu;#UcVtpv1n_EpXYF^ZY>H&rmyUxQ!$)u2|}$_Pjlg_ zYe3cI%4G6ilqoKopYa1}xk2algA*@=MD*}mknBN?#sJQ_ZO1WD<$@H_;C5JR99Q9k z&TLE1;!YJmt71(km?K*x#Eysq z2VZ!|aesuq)}ZZ}dSVN8j26_(FS^v(zH3U4%Cb+9JTg zs3FFKlUJ6>l&MxPSes9{4S&djEwW^wS%5*U2wrfQs}E_gLc=mu!))-j(_D8z1wEvn zFgHLmV(zLB%_eJD_?3r~6I|mW5@AxG8BhAJC_kJ3WGL+9ay#?MS4f#Glhwp`3w4QZ z4sS9Io6qSdl(&paL}qV2t1vjriQ#wSF?bwLBzXd7syvB%mWTTI zx)v8;sl2|XgTtm||tqX|lI@rALq@b1CSNAZ{8$$rCIx-LfbH zE>@o%1k4iSeRKqgujouCE|)ry8p5LeIJ(O4i03l%^z)-OW8;b;bxK-FYBf%0eQ!(C znt3MfDekmaOrlg6Iz#&H@rV=d(?NQi93J(191!v&401_j1?7PAj$PHR##jV$FdL)iDqxnkYbr~wU%6FW)ui*yjD z(*yVkizir^TgIfFUNz1HoVgY0RPJ`g*^Y=9r<|c^)n~d$+)binnJq`CPj9z|7h*9V zY@+Y1Mo~cDqm@M3E6iG!cD>}b>EWR%XSsHoo|cd6$}bACk$_2-S}I_2xpUZMx^jJz ztYAG`eIuSq(J>~fkC#Jno=mb#1t*K58cD5)JVcVTv6n{^v7n{}%Y6azIc8i$vP#!# zUh`s$UyWU@TMn+Yjvkq~dQq!2`wNw|yYSh@F*9FRuq5Y~^Dn2P5cXPi%cs>LW(=!+ zWlzMU(xVpYdz$mQA_JO)L;L@qZYln)f zsAbN%f?%*iq)_)BnJ>}Rw+Fcscmwe=R`>JJ1bsp3{ylSVuSQF0t~m6J02#I zM#^Qdg_t+`qzNaE6;(E>uI*HtBgv~|J$q$VHmWY5xq&aMu8eG&WL(}F8)9+7x^sN) z#Hax>a*Y2GLYS`P6JQb^KtmW(_Hb7bU^W>VO+!8Nn1=D%QOL)wdMvehZMl*FU6PBT zWRSu zZiO=FZ^_B*EWH_L8&$W8lPq4?C3H3Z0$-Lg*|C(mMOeY=usA2=#V97L%vhpdtH3Dx?~o1S|e*5-9Z7kU#t zvzmfiN%BHjSL6^_Bt>upA?w@FSc4XxWh4BQU!1^iaRBl-G%gRv1<5@&k%&?T-4q$@ zfYy(Ge?WfUC!Q<6>MpwEKRQl4RreZr-jBKv0{!YazkN@wPpEy(i1iFK(h%xJ2CuM6 zcK;~~J6I)~J7)J&Rc|xNfmEw$i>yO5jlOt$&sClhT3530Bq;(lBb%>Wvk?EZh4lgi zM@UlNVL1(-vZxC4#;QFs!MM2Fo``CSUq-no%1Ab7eC&O`gSj;6-#2=86zTId2 z?(BRk38mB%&c$ST!BFosB{<087X;Vh+Ds-DQ&~6COvR=d3bXzkdg|QZurapC>owe4 zTlv6-Q<-)_$zT`vT(a8XvfNlatTHP^w|0x??lx;3lXG-?PQ%sL25Ry%K3^ zsVmcaYO#8`-e5MiEo`899C|1}uiws-3iEJ}M(?Lm5N#KLH$>m4p!h+v zGFf-Jo49HpX%PIGCL#nAwrk5A=zb|((DH*q@OGTHdT{J0ZF8&~|3B^UhL$}czdN3D z6G1P?JBXbEvq7kgkaap+Fj>Lp2){P~Vc??D=qbM)B?Eu~{!S|sr)aUJ`L|jMf$YfU znU-J5v6ZU?JXG%a?dYMIT$sBFzbHu^?%xzEC-H4p{@_gsrGCxp`8zm3m10BS=%i7g zh%s*(Zwi{K zm3g0`df9WG!Q?!AWjwYsu%lCTV4;dgksWLA8#z&3#n1p%$JNb_wyg4603Om4at6%X$Q#h3)Z;HY-$%V;TL?3Bt-NszjKfWWcbA3oSvGduSVHPqyfF+cT889Q zkMMIVJM9i4G%FwlhQqRphE~aX00V)R1*uy`!M(J*$TSeH>%P2rS8&z6H-o>xN=RAr z31zU;X~)7bLkU9jtY?yto!;i4>F64PuyxKmo zu!)G16IEbe+mQKIHcK>&NoHG3T45xE1JLX_cpq0yV*ES_sHc?v`i9GHhx1Ua!ep9Q zfo%DTp-1540q}KGxMJ(Diky$&l|6wLh=FeU{VU%f#m};v5wU$?6&RMl{7Q;dc zaz2b#q!5%U`7kGxX17hig)EPS|H$S3gk*G5=(n?Khg^3o>DCCmeJ9U3b43zzOa|e~ zbwRIux_uv5n)-hngT-rUJ^8zKTp9=X6m(RZ&ui_vChBNH?`Sl6&vr_!p$*NF#1*lI zaNKSQMOTXunr7T;0t*SvKj^ADg5pxB0c_J)ql1NCwzAq7?+0y-x>C>ZQJghQbFFdZ zFd+8GmNa-kTn2y|NyY8_{AU9rwx*!5s(jWc#MiKaGLC6+m7E3aT(P^HcLbB`xI+<-^i^`Jg;Zhz=TI_bUinR5lGpPCL zx=^435dycC!uh_?!O_`oJyJ@WPf(qOvysEMAl-WN%~Z)o9Y$G~2j|F(j>KT7MSvww z-6bc=nhpCxscbrGQ6zB`)@VAH3cB3XMG5{rTe9h(C8DeAi8F_-K~jPS*a#w2^Mx(d z{R0fTkk=?j!V*7NE`T0sOpEb$ZT8gGuB)xSH_xcE9D%YFHru%8L3AZkt&gFB}3hTgV zl9ZS6>@(BTcAt-@T(jYHrRYcj2o^I_l>qOw3bor15cYrtv@>sKPb(BxiHHyw;!S}} z5sMZT0U7wSUSi9tVC8iIp8}aWyw!I2lj-zXrD0X2Q(%%o`Xr*&qyg3)pF38p06_f~ zKoFe6*$HEWoydotlH{B$Vb|haTb*wTS4y>uyT>|QUC}=H0<_0Fc&NK0pLQvnVEp7s zon;>22c*=rUfI-LpD)G?h|ItQIS06u-IVeE%5&0dp7s)KW!$Isdm+j=XqP+NVLKOU zKlG5&7RwZpZj-?=J!GBJ>?oo#QQN-Kq1QWNxlGKelu|g9{McJ0D~d<3uon9i*u`mI zwQgH*C}g^MO(nSm45rIeL3p@ZjZ((rI_c4=U0l4AuNRiqr0tn$d-`0~pDrwQvR=0@ zTI?*Yt{Aw2-VD$l+A{{%z@gru4`~Jx zlUAs?7tn9}&<~HN9oPu{d@aHjAFI2WR}F!YNa9FrVPB}!E5BMAqn zUhwgps@@iX*fuu>!Sr`dJ*aqzFk~p}wZ>)(3=t5aQK}1T(DiPvXh1A?=k~Z{zzn=8 zu=!)hV!CI+*n>`xw4nAr+=j32Jyjs6a6OQgvlmdt*XDX`20foZJ7CZ}l6m8fQ36Jo z?)FV06H9`2p4#Bes2PvL<%@ZMLGjhG)GGViC`?e;1AvC{$O|TdLALD;a0Fu^Zl7TB zVOdyvgU9Dut_4xZ=$T_l)6ymtyeJ}&xi?(+<^;&Wh^&mV2WCg5IVe_7BQ}pyYQCaU zN9*Kpdfh4tQxxYdzU`@~@tAthHJz4U#GT_dISOG40}whf#nmlFF1gLyZb|Zb&*21G zT3Q9jLZYEcj~QS5I;;p*V4T>L`7Lc26{H;Pz^dwIz`*M^7{yk%xljUEvgP4p^@+1z z&<(uyc6Mo*C3e3+8XpgH8y1lAImt0q2L=52}N@1H&@W%YNi?ptY*N1o})@I z^Sx?vFbz>ZysW@wJyR4Lq@|5hlparH1FN0V#6CSCvpwf00*M4U%5drzf_9^5B{w?K zdPY1-Ra=N5Rm>CH*e+0bZgHnA`SL0wH4YSiC!*mvydwCzYYn52nPr}!O4IK>Wr8fB zHlae4dpVG4&y92mLerAZ1sD-xEHP~xhbAmf^a?Gx^4b&GQFNc2Mf3+5aSW^wxtpGF zp=$bsS`-U2P*QBct$vJN)?zo5azFIMsBv6-Z5^gi1GR8A)F^VwwHmNQ03s^-&45oHoIY*jQ2I1qwZ zu;+dlCj7BbV0~ItFLR>Zv(d`3lU7#OH!6J^Z14?Kov;PUJvGL@_`q#Ixact|7d=q| z&JD?64|EgF$?Lnj=)ARh76AJ(9E#jGoEuQkQeuMSV{C5D>#zZPlHhZM zXoy)D68~?*a?zo)NwFnY>c-Nugs0 zt%sV3k+8v*e*EW0G8Z_2XKCm`ki+L-kT}?$&|J%X59f2$ip!LGtZ$!+k?nSI(!N@D z`8;?Y-73I#OnD<5xvc5HRo54%J1U}6M})cksU~;z?rg>w0S~P9D(2aX;rfhjFKJAK z!J-3PejE;Pu$dcAt2;7|immy#YOVxBP#iXzY9xsqpNhox;RWw%u@xssjT&#=!)l19hj4OJZ)|viF*0x0vpL4n)ThAD z^ISNAx7K7SF^7rg9J7h*0~dAK?$dam1IIK%FTHw`$zdzl8cp$8HKmV4G6Fb10r$tEF`mLrC&!kU zU5>zv<$R9Y$P%mM%=^GVEd||pN{W=JpvCva`uNkXKunMd9FDfj%j|sRfqB* z$2p7VnMpQ>K#XA+H#;r-rpOaj8waHt=bmTArco-#M~yiw{|1a*0<3&bBL><|ZMfJ+ zqcf=n`%>6!@x|lWK8_jZ!CiNNPGkm1_{*E6+#U*)JSPV#REnu2%e!fUzFvwkTo@l8iI#hRz_d@N&q>z^#6Ll?l2$5IW~waccq$`b}9?v&~MlRlIO%h#oGz zs0we!a{!HqI>$bj>A>0bE{95iLj)s~$nK#M0Js(lZi9}QTS0eoVXm2PY@f|j=OX3y zU>nC(k+a$X5+yI!kAr_eyX8833pcm3_PB3vboKE(9T>xk8S~-UIZcEsRtyS)q?8Fa z-$F0#%DRqlT{>#j9M-uSet5EHBs)5mH60*NTJ->8OFT{{qzPRUaZV zeG(lFiRQR|Iok@L64L<8nL^&D`5(OQ+xGQ`nYSWf5|A^3f>W4p=O2|o#0imu68hji zFb0qua6Zit#>Y+X$5Usg=SKgezrA1E%0836^^MstiEBpymkfdc3-0Hi_kcc#2t-)(6PeHk?FjsbL6=m~XPp6DAqUl8 zxh~L)ZDn|h!i`#JsluC?yE3&;nyyR}8yhIs^nUYWaa{}2Mx&SVfEcs&81YecI$uQY#rt$i~02=IA9 zAyr;|F8Wg-w9Ak4snW<>H)_zLc~>4J{x8Wy&AlPx|5X)E$#0~c-IOsx_SrJs_sPxc zm)5@g+F>zQo&f?3!3Qq|&@yoA2NOelr7t{%fV#N)tDQIBdE;%MSfX#kOJCh2fpp&m z3?In))}P_5T&d~2UG$1_C>Z=YK6m6a;FQ4*XuV;n>|X1s#}!GIPXdxBn!Pb7JMp{T z+9u|{6;g>>*J`t+P+VLT4udd|X5P&K2LPXpphyfA?qUCqOwRpG9s^gl*VGVZnE>l% zK*3g*HNDt5W`%B5D?w?oWhGJc8y|`P|3%X{&sIu#upj-M>#`OYg4wyo^0@&;eEbt@ zv={}f;C`V^tISmizZN8^AU`^8eY_6hQW|}&bxY=&8A$)3Ao2@rz_`mgSZioA0z){M z+6_X56cAdx^)1nEotqV3dfPtq^_j*J*OQh<2|#3K-v-x{~zdn+}YZ{ai;A7Zxtqf>*!m zLwxUN{c>yt`=;*O`LccY?5$?^{0=P8gSRIxP-c#d3Kp@wq#w^OLS-oQ=6y3Uno5AH;oXGc(%Nft}iT0wUr# z?4PR6+Km;n8i5bKs;>7ndsk_ueI9d##v0@CrCPtFDJq+Cdsf=b={(~G50C?KokkD^ z=9jxb`+V4fH|8QL@xPzD`RVmgpuA*>7p^BRlZY zU>m;ux?}Ymd<=F^lnsS6%K42pLTMs|$qfzgV&5b>5t}lo;Tvc}L6Z%|;_lU%OYvAJ zt3Dz|+{#*AabvK$4!+fJ{8Zn(*%awPqY%AMYbhbU`EsyT7-OwJJ3oOFPy6RLbO;wj2 z2>t)-a$x;&LEC~4(#^bbj%3mU;qut(XH5Oj)FJZ4sySNjR<8AITbQxrZgmS#RF`mtIev-l&u4<~3{$=606Sd5DD& zGYyM}g0@ir)NiF}sq`gz z7euppr`Bd!r+BkAqb%^(xq|V^i^<~yDOU-!RqjlLq*I5J zv3=QHhQm5C|JmGdfJADHWTi2%mlsC0`2K1`fiwY=9S=d^`jU22h9c&Sbg3o=@|U8v zqnP>R<{e50b7|`&Gg_|dpxtM=r@fB?C!d2mNY99^N!KtE(#@l|3VVC6oIMZr^cln`W(ZX%A?+MmtCyZ8lxC zgs!Iy5JoM*q;~3PtR&_WqI`K{SY?$v$oHRfLzCpnC3Qe-*}bxHEJw-pNNGFgpm{!> zAK&<84%Yv}_d7anGKLsQ@~NmxI+>v_nQjbKjVs~Ac$o^+2m_0st_+8_9)MB4EY8%B zff_ZK#ldh2V~Kg$?;cwr)=+#)m{Z>EDrN<1j zD&2GoZ0)wGHH|=8t8Gz~_yTi~r;dN0DzV=WU6U%7lf4-AIN)Js6*EXo@o@-{VjLTw zM<#2(cgF^#3vCO?hW5atSJfU!Ee1HfJNS5yLi=am=;F3H#1l3e*Y{|sPG!evf^tGA zBMj6CTK7$OB4UB9(N<-3g0Jig)DKwEHPwS{n@J(Xki;79WDX-YDUdvu-WC4*QiN%O z6w^~}5B9PA!SR?s_QvCP=0GC*ZnIq0?XIviK7hkIBATpwO}HK{|Vq5^nuE6W|oPD5pBx=JxIEc8r}%$L(yVJS5WWzx_~m zuHmeBC)c%ArSjI51{|6@P`_D!Sr1}u)Y*BA zX$aB|Hd~Vl%tA!83)Ccf+!UTN8q+(>VnpmZwI$8iFXpNu~Z6pP}XI-+O`Ws+19u?!LA*o)%DSj&w<_S zD=FM5wS|tN%L?zFp|C~85M+OovCP^h`|X+`3fW^g9=Q7w6J8tb0xcCDg*RFP{owmK z+1CUvUct(3sya|1?bVKS(pV(;$g|WQ=2)BMY4a8zCE&pvuKMJCyZNnwUlU*J;juxk z+iI6W#1Tkk>P1v}BF(Co6>9*GNjpjSn!1?0<_^R2WkAa*K@>(8KB7*{1UZUO4IC_w zk`uDS1PqQ~3Vi)WjywJsUvClQ3Ubz@WPQq3pt2k%?!j;}$PkfQUPZ93lt1wCcwlmg zM7nw$FlP?%KF*uZYf?one83J>EBZAB@korkcQ>8P=(+ac0!OjIl|bwvvXI3RKkV8J zd|SnH`-*KnPj|jibJM5#W<*gQ@KRV}&KNFy)QNT;9k{(A5Kb3;3wf}@%}BnJ9eUBV z!%yF9U`B-(6;h0}pVZ5}pwPd#w`buodpgy`eN?f$PS7IJnGYdmSbS=rC^Ho=Qhypz z5^4h5|6@JL8|EH&1xUZwoz&LE`&P3(2idjIOe;#_R&W-^###wvOMiM2;Xxpn`Lc{BXdt zV09x3)!0jIZ`p}hHoK1Y`USMjyh!dTehsU`BKpX~up-j)Bmi?xB;0hEbX3K7#b{Nn z9eR|lW@6?H%xHL?q1jWMiZe4QBA%P1NG_W?_~u&y53Kt83zc z#*(?;@PW@>*~w{~SdXAu|?;L3$ctBq5nF~v% z)m<*s?i%FvqSds_DS)arh#RUo2E9R3Nns6xr;3)xEZkL~IGfRV%ZXhP>1Qq+pnC(% zIbrS_oz;3C2m?LB+OWyot+QZ_KW>AhAib~(#`>8u5o&bsn2CWCgBOWh3vMkt2&b2r zAdmH748l7?Qvg2V!GU_3GaaW60SK5;Y_KUJ0I{N6u)}bk$Z_AZ*4Bavk;i>~oG-^h zsXpTa?9w}#I|d4JsvLN5~$Du`UL2$hKU9qjBsBhB9u6FjX24D^y$zWEg^mk?6~FH_>62*kBE7Kz4veOjdk z%T`+#l)qrIw41m&78PqYLdsCXCnd{?Wez3J6P=4}t-}eHyMUa;LMAM4_rj1a_<_+2lL=m`PN3;J)C6zfI^E9bJPVlp z9AEc72_a?@q(co}(0wN{}5s! zvnOX&HBSU`g9=G9P%T_d^Js$z{ZUa|=$o*ZTz z#S|XwX951KdNa7B+XHXFUfpVz`x$IQ3DLW?ZMSPA2mT4p(cD!8meyrg@1 zS@-$Em%j3~Z~UKE^cQJX^QbAlw!}V5^}gp-{l`X|Z1#g6`Jh!^)1$V*>(-=Mi!tk$RIHVFZIdk45thhUKY3@&N=gY?s*^0!DKh0`<@lg^1@kP|1tn$1 zQ&cUm#?(G>x02Sl$IjMORZVp@)a0&y!s?%N8T_Y1LhE1Az_jUuuT&}+bBjRU?2sgd z7j=(KdccniaXtWd-ZFS5=9Vx{GnhirP;lChEm7VOLa@|`B!;>0WNYAo4Q6Z&R)Se( z&k$xBZaY@RYFLn)KTLr8g(nymj$ne15Z30`esUY4qGNb$yCKcS#U~^taY&o}$teX= zdB}4v+O~pRYkFb+-@tYvat9Z;yn>(Ju42VG%IQSOQuLWKPd+2h|MM!#59oHXJpJ=w zV7`?YoL`lywN!)W_K^yrX2ykZ+(Vb^QrM%E`-m$BEv)chMHGpiR|PM+m||HwYx1!~ zn>z%B=4o=@FNZ9?1ccPrU#-ymq(+J78JK6!eE(U6gEAGEsPm-V`wXgVr12|^_!W$E z-Vzg^14mVG#17A%-HON>clO0niCY?P8QorbWLD^b_P!`lqm>z*VM^FTMgyH^vV1;N z`t@;K{PV_dDxBP}E1+15zm%xL#Po8#1^ZTDFDm{2D=MmJ`maGl0!xY% z-Dy4LjXoi2nLR73>~hNehfuNYEUaiByEUbzUgP<#w$xf%rp#HwvS!PkBd5&sXpy2* z$JQm9OOz=axp!6d zPq>_Ka&dWeeRInTq9iM-HlA$hR=d;f`9IfL;d&@P7*Ajr#mO{9m{6AGMQH*}ZTgNB zOi6saXizMX%H%`CXSdO@@dF%nm|KKN6)~>gef!T^UZ!8Yc_1zvFE^%6K5`5xpDs|nMkJ6nQSg!D3;2V zYD=wtd~$kresOtqeRInTq9iM-rW=iBtKI4L`h(%fv}^~s-UPJeHGyFiC({&RLRpp< z<*cgbccg$4iU!3JsZ2gJJTf{q&h0!`sZvkg>|(Q4r{9bgt2%qQOnbaOgl7dq49|+j zAf7LhOreedA+daY!a)G<= zw&L7`j-i1j)PLg@XCoH1CuGwvcClT#(HV3z7@HOugCK%>+O zTXRju!`KS5>Wh-6FYoEBeW^ra+z3I^St+~8!bBI*1~k026^PLYN~K@pF?sbt1-rXl zd4H}-Rn@6$Wn)8%E=~u(W-j5zyvy18DaYydcEd4Cd8BBZj7zD^K4 z{Yy|^w@HBn6*Blnj2OsL$m>>a=$vV*wOt@qBPgYh4TX}DfpWMe>bc6kU$WOwG8mz3 zbMSCCBn}Wb6i?E@{+^~r>vok}wC(;ic~0Al|8h#oN?^0ouDl+QK64 zBy-xaFVT~1ta8Kd64j-88X^Wj(%nU1(8eRxnF^X#)HgLtf2h(m(uSoLnk$YQuRKA^ z);x3A)|%1|_UR4T2{}lotc3DCHue`q(z27pCxwdmE}Iw^VQV#xH_T9QfN+Er_U6 zvu@PLDC$b%C~S)-J}M^C3X{&)w8CX4Ge;-suvzG(0hYwoz92D!ehs#84p@ zi(8EWCq`4(0^$=sF#y~k;NR5o4Qw`OV6g6^93g$NgPCg?<7TR<{N z7jHu+fZ69xBx<@}_%btrZ^P&AIDRg{&-3q1O}kIyk+B{8ESpKI3{0^xOLHg=MT;Z7 zG_T^+wF9kK3*G%A2#Xy^E ztU=UA?FIs-gmsYF)4wy9aPl^--C?8}%y`eiDoKkOJMvfu;hw0{|GnBM_)}1=nsSURQg!PM9O_JAWg-g+=*s9w2_4FWk@PfmVzW zFFQWB?lxSr4Uq*1+Wce{j9JiGHlTz0SvgMI<9zAF4&X#&`ajZR*#Q*A@ffDF{gF)@ zZ2cy_1SltfgW1(^w@m__{CE)*6nf%jt0M~)o~s77UKSuqv!KU*L!k`2E7=1j&qH95 zRp)$vQBtPSw1~Fp5Md4gU;vMRH3OGD3lMiipz+Bw6IU#5o0`Yz@e4*aDZ z1OUu|(^3s|o1@@)!!J0*0BXoEteA}z!rgr>lyr)pCHUx0u#=W*hTL@l0Ki;;RNThg z^7Ek+I?uN`W;rd4P#T6|#Z*9sEg@MlMqK9*XRsZ#4R4c9u8e{@faTY3)LutPCEr6` zRiG;mlB;OG#S?-PZ+T33TAS7`8XXbGs*Jggc`k@o`3(U;LWMMO69Ez`q>8?nsK!!h|v|q{@5R2c@BX{~!PF|9|=M>sm6#Z*d2P|@EQoOW93YhXcC2p1+rXi-*-7Z)XD$yq`hH{Th?eu~D> zPSfg9ZP~KdyBriGGUv3khSun8#Cr}rswEk+(djgn9<@a+T67vB^R%R|zOO`*&$eah zVOztB&0v;%RYU9LYuxi(a8!#rWTUeI3l=OmMaf>WQl)C?(xpqAGG)rRv2R;%G=|pb z-1D~Urnb;hW~)l{{D-@<_?Vre!Jwz-zPj2?*f zWgqvZwv4~si;EKSD!*`}#u%zoYjnmTb8^zu7Pasj{)7(%YT`}`LyG~3Fymfq3Sq`$ zQiZDMG{PosdKlM>&4|cM3eE!9QL6)~w27M&Qe~h1;jC#r;p_2YA8(V|xL#~NfCv-H zxR6R4*Ne>sNGRjtDSso74n&wx#zp4u^OJ?XI!i=fP+ybM#`R(^E|=rh%lkvhdr~dcsFgj5K?L5dbxk~ze=Cmrqw{=U;h>sJ15S%EC^*>NTrPz zn~$)F%pEu1ryI}~sC3PP=iQIocdc9ZdY>;pVsq)$eDfS2!h~@ll{T&yn*k7ELKzoQ zY2$janUMJDUAqM?^nKAs?BSIrLnuo>ZHIod;)rd{OjP#SBFqtGdNZYbtR^ACgfcFq z(#G{-vjHMZDC0sZZCo!l2Oz?PGA^Xj#`R+J0z{Zl#)VYcxL#~NfGGJi1L~3#nJO3; zQt57@<$0cG?c+9*KmE|#0+lLXi>N|L>au z>;HpG#RmT9NCNE`KQvC0z{-wN(7Ku%^zG6t8x&?YCBgIj;O}pTJjV;f4d(J=8~_a9 Q5x9B`DgL-UO8@`>0Dz@xb^rhX literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..072a57e --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + frontend + + +

+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9930ffe --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4310 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "@radix-ui/react-slot": "^1.2.4", + "@tailwindcss/vite": "^4.2.1", + "axios": "^1.13.6", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.577.0", + "react": "^19.2.0", + "react-date-object": "^2.1.9", + "react-dom": "^19.2.0", + "react-multi-date-picker": "^4.5.2", + "react-router-dom": "^7.13.1", + "sonner": "^2.0.7", + "tailwind-merge": "^3.5.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "autoprefixer": "^10.4.27", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "postcss": "^8.5.8", + "tailwindcss": "^4.2.1", + "typescript": "~5.9.3", + "typescript-eslint": "^8.48.0", + "vite": "^7.3.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://package-mirror.liara.ir/repository/npm/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://package-mirror.liara.ir/repository/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://package-mirror.liara.ir/repository/npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.31.1", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide/-/oxide-4.2.1.tgz", + "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-x64": "4.2.1", + "@tailwindcss/oxide-freebsd-x64": "4.2.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-x64-musl": "4.2.1", + "@tailwindcss/oxide-wasm32-wasi": "4.2.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/@tailwindcss/vite/-/vite-4.2.1.tgz", + "integrity": "sha512-TBf2sJjYeb28jD2U/OhwdW0bbOsxkWPwQ7SrqGf9sVcoYwZj7rkXljroBO9wKBut9XnmQLXanuDUeqQK0lGg/w==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", + "tailwindcss": "4.2.1" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.12.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.0.tgz", + "integrity": "sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/type-utils": "8.57.0", + "@typescript-eslint/utils": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.57.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/parser/-/parser-8.57.0.tgz", + "integrity": "sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/project-service/-/project-service-8.57.0.tgz", + "integrity": "sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.57.0", + "@typescript-eslint/types": "^8.57.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/scope-manager/-/scope-manager-8.57.0.tgz", + "integrity": "sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.0.tgz", + "integrity": "sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/type-utils/-/type-utils-8.57.0.tgz", + "integrity": "sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/utils": "8.57.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/types/-/types-8.57.0.tgz", + "integrity": "sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.0.tgz", + "integrity": "sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.57.0", + "@typescript-eslint/tsconfig-utils": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/visitor-keys": "8.57.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/utils/-/utils-8.57.0.tgz", + "integrity": "sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.0", + "@typescript-eslint/types": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.0.tgz", + "integrity": "sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://package-mirror.liara.ir/repository/npm/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://package-mirror.liara.ir/repository/npm/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001777", + "resolved": "https://package-mirror.liara.ir/repository/npm/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz", + "integrity": "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://package-mirror.liara.ir/repository/npm/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.307", + "resolved": "https://package-mirror.liara.ir/repository/npm/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", + "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.20.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", + "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.26", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://package-mirror.liara.ir/repository/npm/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://package-mirror.liara.ir/repository/npm/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.31.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.577.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/lucide-react/-/lucide-react-0.577.0.tgz", + "integrity": "sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://package-mirror.liara.ir/repository/npm/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://package-mirror.liara.ir/repository/npm/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://package-mirror.liara.ir/repository/npm/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://package-mirror.liara.ir/repository/npm/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://package-mirror.liara.ir/repository/npm/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-date-object": { + "version": "2.1.9", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-date-object/-/react-date-object-2.1.9.tgz", + "integrity": "sha512-BHxD/quWOTo9fLKV/cfL/M31ePoj4a1JaJ/CnOf8Ndg3mrkh4x9wEMMkCfTrzduxDOgU8ZgR8uarhqI5G71sTg==", + "license": "MIT" + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-element-popper": { + "version": "2.1.7", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-element-popper/-/react-element-popper-2.1.7.tgz", + "integrity": "sha512-tuM2OxKlW32h+6uFSK6EENHPeZ2OGgOipHfOAl+VLWEv9/j3QkSGbD+ADX3A9uJlmq24i37n28RjJmAbGTfpEg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-multi-date-picker": { + "version": "4.5.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-multi-date-picker/-/react-multi-date-picker-4.5.2.tgz", + "integrity": "sha512-FgWjZB3Z6IA6XpcWiLPk85PwcRUhOiYhKK42o5k672gD/n2I6rzPfQ8bUrldOIiF/Z7FfOCdH7a6FeubzqteLg==", + "license": "MIT", + "dependencies": { + "react-date-object": "^2.1.8", + "react-element-popper": "^2.1.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.13.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-router/-/react-router-7.13.1.tgz", + "integrity": "sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.13.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/react-router-dom/-/react-router-dom-7.13.1.tgz", + "integrity": "sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==", + "license": "MIT", + "dependencies": { + "react-router": "7.13.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sonner": { + "version": "2.0.7", + "resolved": "https://package-mirror.liara.ir/repository/npm/sonner/-/sonner-2.0.7.tgz", + "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/tailwindcss/-/tailwindcss-4.2.1.tgz", + "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://package-mirror.liara.ir/repository/npm/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.57.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/typescript-eslint/-/typescript-eslint-8.57.0.tgz", + "integrity": "sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.57.0", + "@typescript-eslint/parser": "8.57.0", + "@typescript-eslint/typescript-estree": "8.57.0", + "@typescript-eslint/utils": "8.57.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://package-mirror.liara.ir/repository/npm/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://package-mirror.liara.ir/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://package-mirror.liara.ir/repository/npm/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://package-mirror.liara.ir/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://package-mirror.liara.ir/repository/npm/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://package-mirror.liara.ir/repository/npm/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a7864c1 --- /dev/null +++ b/package.json @@ -0,0 +1,44 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@radix-ui/react-slot": "^1.2.4", + "@tailwindcss/vite": "^4.2.1", + "axios": "^1.13.6", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.577.0", + "react": "^19.2.0", + "react-date-object": "^2.1.9", + "react-dom": "^19.2.0", + "react-multi-date-picker": "^4.5.2", + "react-router-dom": "^7.13.1", + "sonner": "^2.0.7", + "tailwind-merge": "^3.5.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "autoprefixer": "^10.4.27", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "postcss": "^8.5.8", + "tailwindcss": "^4.2.1", + "typescript": "~5.9.3", + "typescript-eslint": "^8.48.0", + "vite": "^7.3.1" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..b9d355d --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..cc1ab80 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,42 @@ +import { BrowserRouter as Router, Routes, Route, Navigate, Outlet } from "react-router-dom" +import { ThemeProvider } from "./components/ThemeProvider" +import { LanguageProvider } from "./components/LanguageProvider" +import { Toaster } from "./components/ui/toaster" +import { Navbar } from "./components/Navbar" +import Auth from "./pages/Auth" +import Profile from "./pages/Profile" +import Terms from "./pages/Terms" + +const MainLayout = () => { + return ( +
+ +
+ +
+
+ ) +} + +function App() { + return ( + + + + + } /> + } /> + } /> + + }> + } /> + + + + + + + ) +} + +export default App diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 0000000..a1ab251 --- /dev/null +++ b/src/api.ts @@ -0,0 +1,13 @@ +import axios from 'axios'; + +export const api = axios.create({ + baseURL: 'http://localhost:8000', +}); + +api.interceptors.request.use((config) => { + const token = localStorage.getItem('accessToken'); + if (token && config.headers) { + config.headers.Authorization = `Bearer ${token}`; + } + return config; +}); diff --git a/src/api/client.ts b/src/api/client.ts new file mode 100644 index 0000000..42c951e --- /dev/null +++ b/src/api/client.ts @@ -0,0 +1,26 @@ +import { API_BASE_URL } from "../config/constants"; + +export const authFetch = async (endpoint: string, options: RequestInit = {}) => { + const token = localStorage.getItem("accessToken"); + + const isFormData = options.body instanceof FormData; + + const headers: HeadersInit = { + ...(!isFormData && { "Content-Type": "application/json" }), + ...(token ? { Authorization: `Bearer ${token}` } : {}), + ...options.headers, + }; + + const response = await fetch(`${API_BASE_URL}${endpoint}`, { + ...options, + headers, + }); + + if (response.status === 401) { + localStorage.removeItem("accessToken"); + localStorage.removeItem("refreshToken"); + window.location.href = "/login"; + } + + return response; +}; diff --git a/src/api/users.ts b/src/api/users.ts new file mode 100644 index 0000000..54b41b4 --- /dev/null +++ b/src/api/users.ts @@ -0,0 +1,80 @@ +import { authFetch } from './client'; + +// --- Auth Endpoints --- + +export const loginWithPassword = async (mobile: string, password: string) => { + const response = await authFetch('/api/users/login/', { + method: 'POST', + body: JSON.stringify({ mobile, password }) + }); + if (!response.ok) throw new Error('Failed to login with password'); + return response.json(); +}; + +export const sendOtp = async (mobile: string, mode: string) => { + const response = await authFetch('/api/users/otp/send/', { + method: 'POST', + body: JSON.stringify({ mobile, mode }) + }); + if (!response.ok) throw new Error('Failed to send OTP'); + return response.json(); +}; + +export const loginWithOtp = async (mobile: string, otp: string) => { + const response = await authFetch('/api/users/otp/login/', { + method: 'POST', + body: JSON.stringify({ mobile, otp }) + }); + if (!response.ok) throw new Error('Failed to login with OTP'); + return response.json(); +}; + +export const logoutUser = async (refreshToken: string) => { + const response = await authFetch('/api/users/logout/', { + method: 'POST', + body: JSON.stringify({ refresh: refreshToken }) + }); + if (!response.ok) throw new Error("Logout failed"); + return response.json(); +}; + +// --- Profile Endpoints --- + +export const getUserProfile = async () => { + const response = await authFetch('/api/users/me/', { + method: 'GET' + }); + if (!response.ok) throw new Error('Failed to fetch profile'); + return response.json(); +}; + +export const updateUserProfile = async (data: Record) => { + const response = await authFetch('/api/users/me/', { + method: 'PATCH', + body: JSON.stringify(data) + }); + if (!response.ok) throw new Error('Failed to update profile'); + return response.json(); +}; + +export const updateProfilePicture = async (file: File) => { + const formData = new FormData(); + formData.append('profile_picture', file); + + const response = await authFetch('/api/users/profile/picture/', { + method: 'POST', + body: formData + }); + if (!response.ok) throw new Error('Failed to update profile picture'); + return response.json(); +}; + +export const removeProfilePicture = async () => { + const formData = new FormData(); + formData.append('profile_picture', ''); + + return authFetch(`/api/users/profile/picture/`, { + method: 'POST', + body: formData, + }); +}; diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/AppLayout.tsx b/src/components/AppLayout.tsx new file mode 100644 index 0000000..e7d2bde --- /dev/null +++ b/src/components/AppLayout.tsx @@ -0,0 +1,9 @@ +import React from "react" + +export function AppLayout({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ) +} diff --git a/src/components/LanguageProvider.tsx b/src/components/LanguageProvider.tsx new file mode 100644 index 0000000..91057b8 --- /dev/null +++ b/src/components/LanguageProvider.tsx @@ -0,0 +1,36 @@ +import React, { createContext, useContext, useState, useEffect } from "react" + +type Language = "en" | "fa" + +interface LanguageContextType { + language: Language + setLanguage: (lang: Language) => void +} + +const LanguageContext = createContext(undefined) + +export function LanguageProvider({ children }: { children: React.ReactNode }) { + const [language, setLanguage] = useState( + (localStorage.getItem("language") as Language) || "fa" + ) + + useEffect(() => { + localStorage.setItem("language", language) + document.documentElement.lang = language + document.documentElement.dir = language === "fa" ? "rtl" : "ltr" + }, [language]) + + return ( + + {children} + + ) +} + +export function useLanguage() { + const context = useContext(LanguageContext) + if (context === undefined) { + throw new Error("useLanguage must be used within a LanguageProvider") + } + return context +} \ No newline at end of file diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx new file mode 100644 index 0000000..fa38b21 --- /dev/null +++ b/src/components/Navbar.tsx @@ -0,0 +1,86 @@ +import { useState } from "react" +import { useNavigate } from "react-router-dom" +import { useTranslation } from "../hooks/useTranslation" +import { Button } from "./ui/button" +import { SettingsMenu } from "./SettingsMenu" +import { LogOut } from "lucide-react" +import { logoutUser } from "../api/users" +import { toast } from "sonner" + +export function Navbar() { + const { t } = useTranslation() + const navigate = useNavigate() + const [showLogoutModal, setShowLogoutModal] = useState(false) + + const handleLogout = async () => { + try { + const refreshToken = localStorage.getItem("refreshToken") + if (refreshToken) { + await logoutUser(refreshToken) + } + } catch (error) { + console.error("Logout API failed:", error) + } finally { + localStorage.removeItem("accessToken") + localStorage.removeItem("refreshToken") + setShowLogoutModal(false) + toast.success(t.logoutToast || "Successfully logged out!") + navigate("/login") + } + } + + return ( + <> +
+
+
+ Q +
+ Qlockify +
+ +
+ + +
+
+ + {showLogoutModal && ( +
setShowLogoutModal(false)}> +
e.stopPropagation()}> +

+ {t.confirmLogoutTitle || "Confirm Logout"} +

+

+ {t.confirmLogoutMessage || "Are you sure you want to log out of your account?"} +

+
+ + +
+
+
+ )} + + ) +} diff --git a/src/components/SettingsMenu.tsx b/src/components/SettingsMenu.tsx new file mode 100644 index 0000000..2b5d1c6 --- /dev/null +++ b/src/components/SettingsMenu.tsx @@ -0,0 +1,31 @@ +import { Moon, Sun, Languages } from "lucide-react" +import { Button } from "./ui/button" +import { useTheme } from "./ThemeProvider" +import { useTranslation } from "../hooks/useTranslation" + +export function SettingsMenu() { + const { theme, setTheme } = useTheme() + const { lang, setLanguage } = useTranslation() + + return ( +
+ + + +
+ ) +} diff --git a/src/components/ThemeProvider.tsx b/src/components/ThemeProvider.tsx new file mode 100644 index 0000000..fc72b25 --- /dev/null +++ b/src/components/ThemeProvider.tsx @@ -0,0 +1,59 @@ +import React, { createContext, useContext, useEffect, useState } from "react" + +type Theme = "dark" | "light" | "system" + +type ThemeProviderProps = { + children: React.ReactNode + defaultTheme?: Theme + storageKey?: string +} + +type ThemeProviderState = { + theme: Theme + setTheme: (theme: Theme) => void +} + +const ThemeProviderContext = createContext({ + theme: "system", + setTheme: () => null, +}) + +export function ThemeProvider({ + children, + defaultTheme = "system", + storageKey = "vite-ui-theme", + ...props +}: ThemeProviderProps) { + const [theme, setTheme] = useState( + () => (localStorage.getItem(storageKey) as Theme) || defaultTheme + ) + + useEffect(() => { + const root = window.document.documentElement + root.classList.remove("light", "dark") + + if (theme === "system") { + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" + root.classList.add(systemTheme) + return + } + + root.classList.add(theme) + }, [theme]) + + const value = { + theme, + setTheme: (theme: Theme) => { + localStorage.setItem(storageKey, theme) + setTheme(theme) + }, + } + + return ( + + {children} + + ) +} + +export const useTheme = () => useContext(ThemeProviderContext) diff --git a/src/components/ThemeToggle.tsx b/src/components/ThemeToggle.tsx new file mode 100644 index 0000000..55d029e --- /dev/null +++ b/src/components/ThemeToggle.tsx @@ -0,0 +1,17 @@ +import { Moon, Sun } from "lucide-react" +import { useTheme } from "./ThemeProvider" + +export function ThemeToggle() { + const { theme, setTheme } = useTheme() + + return ( + + ) +} diff --git a/src/components/ui/JalaliDatePicker.tsx b/src/components/ui/JalaliDatePicker.tsx new file mode 100644 index 0000000..342286b --- /dev/null +++ b/src/components/ui/JalaliDatePicker.tsx @@ -0,0 +1,59 @@ +import React, { useEffect, useState } from "react" +import DatePicker, { DateObject } from "react-multi-date-picker" +import persian from "react-date-object/calendars/persian" +import persian_fa from "react-date-object/locales/persian_fa" +import gregorian from "react-date-object/calendars/gregorian" +import gregorian_en from "react-date-object/locales/gregorian_en" +import "react-multi-date-picker/styles/backgrounds/bg-dark.css" + +interface JalaliDatePickerProps { + value: string | null | undefined; + onChange: (date: string) => void; + label?: string; + disabled?: boolean; +} + +export default function JalaliDatePicker({ value, onChange, label, disabled }: JalaliDatePickerProps) { + const isFa = document.documentElement.dir === 'rtl' + const [isDark, setIsDark] = useState(document.documentElement.classList.contains('dark')) + + // Listen for dark mode changes dynamically (optional but good for UX) + useEffect(() => { + const observer = new MutationObserver(() => { + setIsDark(document.documentElement.classList.contains('dark')) + }) + observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] }) + return () => observer.disconnect() + }, []) + + const handleChange = (date: DateObject | null) => { + if (!date) { + onChange("") + } else { + // Always output standard Gregorian "YYYY-MM-DD" for backend + onChange(date.convert(gregorian, gregorian_en).format("YYYY-MM-DD")) + } + } + + return ( +
+ {label && ( + + )} + +
+ ) +} diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 0000000..3dc4cb5 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,52 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" +import { cn } from "../../lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-quera-blue text-white hover:bg-quera-hover dark:bg-quera-blue dark:text-white dark:hover:bg-quera-hover", + destructive: "bg-red-500 text-slate-50 hover:bg-red-500/90 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/90", + outline: "border border-slate-200 bg-white text-slate-900 hover:bg-slate-100 hover:text-slate-900 dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50 dark:hover:bg-slate-800 dark:hover:text-slate-50", + secondary: "bg-slate-100 text-slate-900 hover:bg-slate-100/80 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-800/80", + ghost: "text-slate-900 hover:bg-slate-100 hover:text-slate-900 dark:text-slate-50 dark:hover:bg-slate-800 dark:hover:text-slate-50", + link: "text-quera-blue underline-offset-4 hover:underline dark:text-blue-400", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx new file mode 100644 index 0000000..c396c3c --- /dev/null +++ b/src/components/ui/card.tsx @@ -0,0 +1,25 @@ +// src/components/ui/card.tsx +import * as React from "react" +import { cn } from "../../lib/utils" + +const Card = React.forwardRef>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef>(({ className, ...props }, ref) => ( +

+)) +CardTitle.displayName = "CardTitle" + +const CardContent = React.forwardRef>(({ className, ...props }, ref) => ( +
+)) +CardContent.displayName = "CardContent" + +export { Card, CardHeader, CardTitle, CardContent } diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx new file mode 100644 index 0000000..f7da423 --- /dev/null +++ b/src/components/ui/input.tsx @@ -0,0 +1,25 @@ +// src/components/ui/input.tsx +import * as React from "react" +import { cn } from "../../lib/utils" + +export interface InputProps + extends React.InputHTMLAttributes {} + +const Input = React.forwardRef( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/src/components/ui/toaster.tsx b/src/components/ui/toaster.tsx new file mode 100644 index 0000000..3676256 --- /dev/null +++ b/src/components/ui/toaster.tsx @@ -0,0 +1,21 @@ +import { Toaster as Sonner } from "sonner" +import { useTheme } from "../ThemeProvider" +import { useTranslation } from "../../hooks/useTranslation" + +export function Toaster() { + const { theme } = useTheme() + const { lang } = useTranslation() + + const isFa = lang === "fa" + + return ( + + ) +} diff --git a/src/config/constants.ts b/src/config/constants.ts new file mode 100644 index 0000000..9a97cd7 --- /dev/null +++ b/src/config/constants.ts @@ -0,0 +1 @@ +export const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || "http://localhost:8000"; diff --git a/src/context/AppContext.tsx b/src/context/AppContext.tsx new file mode 100644 index 0000000..e6e7eff --- /dev/null +++ b/src/context/AppContext.tsx @@ -0,0 +1,71 @@ +// src/context/AppContext.tsx +import { createContext, useContext, useState, useEffect, ReactNode } from 'react'; +import { api } from '../api'; + +interface User { + id: string; + phone_number: string; + first_name: string; + last_name: string; +} + +interface Workspace { + id: string; + name: string; +} + +interface AppContextType { + user: User | null; + workspaces: Workspace[]; + activeWorkspace: Workspace | null; + setActiveWorkspace: (ws: Workspace) => void; + fetchInitialData: () => Promise; +} + +const AppContext = createContext(null); + +export const AppProvider = ({ children }: { children: ReactNode }) => { + const [user, setUser] = useState(null); + const [workspaces, setWorkspaces] = useState([]); + const [activeWorkspace, setActiveWorkspace] = useState(null); + + const fetchInitialData = async () => { + try { + const [userRes, wsRes] = await Promise.all([ + api.get('/api/users/me/'), + api.get('/api/workspaces/') + ]); + + setUser(userRes.data); + setWorkspaces(wsRes.data.results || wsRes.data); + + const savedWsId = localStorage.getItem('active_workspace'); + const targetWs = wsRes.data.find((w: Workspace) => w.id === savedWsId) || wsRes.data[0]; + + if (targetWs) { + setActiveWorkspace(targetWs); + localStorage.setItem('active_workspace', targetWs.id); + } + } catch (error) { + console.error(error); + } + }; + + useEffect(() => { + if (localStorage.getItem('accessToken')) { + fetchInitialData(); + } + }, []); + + return ( + + {children} + + ); +}; + +export const useAppContext = () => { + const context = useContext(AppContext); + if (!context) throw new Error('useAppContext must be used within AppProvider'); + return context; +}; diff --git a/src/hooks/useTranslation.ts b/src/hooks/useTranslation.ts new file mode 100644 index 0000000..fcb08a4 --- /dev/null +++ b/src/hooks/useTranslation.ts @@ -0,0 +1,15 @@ +import { useLanguage } from "../components/LanguageProvider" +import { en } from "../locales/en" +import { fa } from "../locales/fa" + +const dictionaries = { en, fa } + +export function useTranslation() { + const { language, setLanguage } = useLanguage() + + return { + t: dictionaries[language], + lang: language, + setLanguage + } +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..133f4f1 --- /dev/null +++ b/src/index.css @@ -0,0 +1,35 @@ +@import "tailwindcss"; + +@font-face { + font-family: "Vazirmatn"; + src: url("/fonts/Vazirmatn[wght].woff2") format("woff2"); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +@custom-variant dark (&:is(.dark *)); + +@theme { + --color-quera-blue: #2563eb; + --font-sans: "Vazirmatn", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; +} + +/* Automatically apply Vazirmatn font when language is Persian */ +:lang(fa) { + font-family: "Vazirmatn", system-ui, Avenir, Helvetica, Arial, sans-serif; +} + +@layer base { + * { + border-color: var(--color-border); + } + body { + background-color: var(--color-background); + color: var(--color-foreground); + } +} diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 0000000..2f00a25 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/src/locales/en.ts b/src/locales/en.ts new file mode 100644 index 0000000..8d8bece --- /dev/null +++ b/src/locales/en.ts @@ -0,0 +1,103 @@ +export const en = { + login: { + welcome: "Welcome to Qlockify", + enterPassword: "Enter your password", + verifyNumber: "Verify your number", + enterMobileDesc: "Enter your mobile number to continue", + signInDesc: "Sign in using your account password", + sentCodeDesc: (mobile: string) => `We sent a 6-digit code to ${mobile}`, + mobilePlaceholder: "Mobile Number (e.g. 09123456789)", + continueWithPassword: "Continue with Password", + orContinueWith: "Or continue with", + otpLogin: "OTP Login", + register: "Register", + passwordPlaceholder: "Password", + signIn: "Sign In", + back: "Back", + otpPlaceholder: "6-digit code", + verifyAndContinue: "Verify & Continue", + terms: "By clicking continue, you agree to our Terms of Service and Privacy Policy.", + brandingQuote: "Manage your time and workspaces efficiently with our minimal, fast, and secure platform.", + toasts: { + enterMobile: "Please enter your mobile number", + verifySent: "Verification code sent!", + failedOtp: "Failed to send OTP", + fillAll: "Please fill all fields", + successLogin: "Successfully logged in!", + invalidCreds: "Invalid credentials", + enterOtp: "Please enter the OTP code", + invalidOtp: "Invalid OTP code" + } + }, + loginTerms: { + prefix: "By logging in, you agree to our ", + link: "Terms of Service and Privacy Policy", + suffix: "" + }, + terms: { + back: "Back", + title: "Terms of Service and Privacy Policy", + lastUpdated: "Last Updated: March 12, 2026", + sections: { + acceptance: { + title: "1. Acceptance of Terms", + content: "By accessing and using Qlockify, you agree to be bound by these Terms of Service and all applicable laws and regulations. If you do not agree with any of these terms, you are prohibited from using or accessing this site." + }, + license: { + title: "2. User License and Responsibilities", + items: [ + "You must provide accurate, current, and complete information during the registration process.", + "You are responsible for maintaining the security of your account and password.", + "You may not use the service for any illegal or unauthorized purpose.", + "Your use of the service must not violate any laws in your jurisdiction." + ] + }, + privacy: { + title: "3. Privacy Policy & Data Collection", + p1: "We take your privacy seriously. We collect information to provide better services to our users. The types of personal data we collect include:", + personalLabel: "Personal Information", + personalText: "Name, email address, phone number, and birth date provided during registration or profile updates.", + usageLabel: "Usage Data", + usageText: "Information on how the service is accessed and used, including timestamps and device metrics.", + p2: "We do not sell, trade, or rent your personal identification information to others. We employ industry-standard security measures to protect against unauthorized access, alteration, disclosure, or destruction of your personal data." + }, + liability: { + title: "4. Limitation of Liability", + content: "In no event shall Qlockify or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on the platform." + }, + modifications: { + title: "5. Modifications", + content: "We may revise these terms of service at any time without notice. By using this website, you are agreeing to be bound by the then-current version of these terms of service." + }, + }, + }, + profile: { + "title": "User Profile", + "firstName": "First Name", + "lastName": "Last Name", + "email": "Email", + "description": "Description", + "mobileNumber": "Mobile Number", + "birthDate": "Birth Date", + "yearsOld": "Years Old", + "dateJoined": "Date Joined", + "editInfo": "Edit Info", + "changePicture": "Change Picture", + "save": "Save", + "cancel": "Cancel", + "upload": "Upload", + "remove": "Remove", + "imageInput": "Click to select or drag & drop", + toasts: { + successEdit: "Profile updated successfully!", + successImage: "Profile picture updated!", + successRemoveImage: "Profile picture removed!", + error: "Something went wrong!" + } + }, + logout: "Logout", + logoutToast: "Successfully logged out!", + confirmLogoutTitle: "Confirm Logout", + confirmLogoutMessage: "Are you sure you want to log out of your account?", + cancel: "Cancel", +} diff --git a/src/locales/fa.ts b/src/locales/fa.ts new file mode 100644 index 0000000..0e3a54a --- /dev/null +++ b/src/locales/fa.ts @@ -0,0 +1,104 @@ +export const fa = { + login: { + welcome: "به Qlockify خوش آمدید", + enterPassword: "رمز عبور خود را وارد کنید", + verifyNumber: "تایید شماره موبایل", + enterMobileDesc: "برای ادامه، شماره موبایل خود را وارد کنید", + signInDesc: "با استفاده از رمز عبور خود وارد شوید", + sentCodeDesc: (mobile: string) => `کد ۶ رقمی به ${mobile} ارسال شد`, + mobilePlaceholder: "شماره موبایل (مثلا ۰۹۱۲۳۴۵۶۷۸۹)", + continueWithPassword: "ادامه با رمز عبور", + orContinueWith: "یا ادامه با", + otpLogin: "ورود با کد یکبار مصرف", + register: "ثبت نام", + passwordPlaceholder: "رمز عبور", + signIn: "ورود", + back: "بازگشت", + otpPlaceholder: "کد ۶ رقمی", + verifyAndContinue: "تایید و ادامه", + terms: "با کلیک روی ادامه، شما با قوانین و مقررات و حریم خصوصی ما موافقت می‌کنید.", + brandingQuote: "زمان و فضاهای کاری خود را با پلتفرم مینیمال، سریع و امن ما بهینه مدیریت کنید.", + toasts: { + enterMobile: "لطفا شماره موبایل خود را وارد کنید", + verifySent: "کد تایید ارسال شد!", + failedOtp: "ارسال کد تایید با خطا مواجه شد", + fillAll: "لطفا تمام فیلدها را پر کنید", + successLogin: "با موفقیت وارد شدید!", + invalidCreds: "اطلاعات ورود نامعتبر است", + enterOtp: "لطفا کد تایید را وارد کنید", + invalidOtp: "کد تایید نامعتبر است" + } + }, + loginTerms: { + prefix: "با ورود به سیستم، شما با ", + link: "شرایط خدمات و حریم خصوصی", + suffix: " ما موافقت می‌کنید." + }, + terms: { + back: "بازگشت", + title: "شرایط خدمات و حریم خصوصی", + lastUpdated: "آخرین بروزرسانی: ۲۱ اسفند ۱۴۰۴", + sections: { + acceptance: { + title: "۱. پذیرش شرایط", + content: "با دسترسی و استفاده از Qlockify، شما موافقت می‌کنید که به این شرایط خدمات و تمامی قوانین و مقررات مربوطه پایبند باشید. اگر با هر یک از این شرایط موافق نیستید، استفاده یا دسترسی شما به این سایت ممنوع است." + }, + license: { + title: "۲. مجوز کاربر و مسئولیت‌ها", + items: [ + "شما باید اطلاعات دقیق، به‌روز و کامل را در طول فرآیند ثبت‌نام ارائه دهید.", + "شما مسئول حفظ امنیت حساب و رمز عبور خود هستید.", + "شما مجاز به استفاده از خدمات برای اهداف غیرقانونی یا غیرمجاز نیستید.", + "استفاده شما از خدمات نباید قوانین حوزه قضایی شما را نقض کند." + ] + }, + privacy: { + title: "۳. حریم خصوصی و جمع‌آوری داده‌ها", + p1: "ما حریم خصوصی شما را جدی می‌گیریم. ما اطلاعاتی را برای ارائه خدمات بهتر به کاربران خود جمع‌آوری می‌کنیم. انواع داده‌های شخصی که جمع‌آوری می‌کنیم شامل موارد زیر است:", + personalLabel: "اطلاعات شخصی", + personalText: "نام، آدرس ایمیل، شماره تلفن و تاریخ تولد ارائه‌شده در طول ثبت‌نام یا به‌روزرسانی پروفایل.", + usageLabel: "داده‌های استفاده", + usageText: "اطلاعات مربوط به نحوه دسترسی و استفاده از خدمات، از جمله زمان‌سنجی‌ها و معیارهای دستگاه.", + p2: "ما اطلاعات شناسایی شخصی شما را به دیگران نمی‌فروشیم، مبادله نمی‌کنیم یا اجاره نمی‌دهیم. ما از اقدامات امنیتی استاندارد صنعت برای محافظت در برابر دسترسی غیرمجاز، تغییر، افشا یا تخریب داده‌های شخصی شما استفاده می‌کنیم." + }, + liability: { + title: "۴. محدودیت مسئولیت", + content: "در هیچ شرایطی Qlockify یا تأمین‌کنندگان آن مسئولیتی در قبال هرگونه خسارت (از جمله، بدون محدودیت، خسارت ناشی از دست دادن داده‌ها یا سود، یا به دلیل وقفه در کسب‌وکار) ناشی از استفاده یا عدم توانایی استفاده از مواد روی پلتفرم نخواهند داشت." + }, + modifications: { + title: "۵. اصلاحات", + content: "ما ممکن است این شرایط خدمات را در هر زمان بدون اطلاع قبلی بازبینی کنیم. با استفاده از این وب‌سایت، شما موافقت می‌کنید که به نسخه فعلی این شرایط خدمات پایبند باشید." + }, + }, + }, + profile: { + "title": "پروفایل کاربر", + "firstName": "نام", + "lastName": "نام خانوادگی", + "email": "ایمیل", + "description": "توضیحات", + "mobileNumber": "شماره موبایل", + "birthDate": "تاریخ تولد", + "yearsOld": "سال", + "dateJoined": "تاریخ عضویت", + "editInfo": "ویرایش اطلاعات", + "changePicture": "تغییر تصویر", + "save": "ذخیره", + "cancel": "لغو", + "upload": "آپلود", + "remove": "حذف", + "imageInput": "برای انتخاب کلیک کنید یا فایل را بکشید", + "noEmail": "ایمیلی ثبت نشده", + toasts: { + successEdit: "پروفایل با موفقیت بروزرسانی شد!", + successImage: "عکس پروفایل بروزرسانی شد!", + successRemoveImage: "عکس پروفایل حذف شد!", + error: "خطایی رخ داد!" + } + }, + logout: "خروج", + logoutToast: "با موفقیت خارج شدید!", + confirmLogoutTitle: "تایید خروج", + confirmLogoutMessage: "آیا مطمئن هستید که می‌خواهید از حساب خود خارج شوید؟", + cancel: "لغو", +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..58b110f --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import React from "react" +import ReactDOM from "react-dom/client" +import App from "./App.tsx" +import "./index.css" + +ReactDOM.createRoot(document.getElementById("root")!).render( + + + +) diff --git a/src/pages/Auth.tsx b/src/pages/Auth.tsx new file mode 100644 index 0000000..b8abc6d --- /dev/null +++ b/src/pages/Auth.tsx @@ -0,0 +1,233 @@ +import React, { useState } from "react" +import { useNavigate, Link } from "react-router-dom" +import { Button } from "../components/ui/button" +import { Input } from "../components/ui/input" +import { SettingsMenu } from "../components/SettingsMenu" +import { ArrowLeft, ArrowRight, Command, Loader2, Eye, EyeOff } from "lucide-react" +import { toast } from "sonner" +import { useTranslation } from "../hooks/useTranslation" +import { loginWithPassword, sendOtp, loginWithOtp } from "../api/users" + +type AuthStep = "mobile" | "password" | "otp" +type AuthMode = "login" | "register" + +export default function Auth() { + const navigate = useNavigate() + const { t, lang } = useTranslation() + const isRtl = lang === "fa" + + const [step, setStep] = useState("mobile") + const [mode, setMode] = useState("login") + const [mobile, setMobile] = useState("") + const [password, setPassword] = useState("") + const [otpCode, setOtpCode] = useState("") + const [loading, setLoading] = useState(false) + const [showPassword, setShowPassword] = useState(false) // Added state for password visibility + + const handleTokenResponse = (access: string, refresh: string) => { + localStorage.setItem("accessToken", access) + localStorage.setItem("refreshToken", refresh) + toast.success(t.login.toasts.successLogin) + navigate("/profile") + } + + const handleSendOtp = async (selectedMode: AuthMode) => { + if (!mobile) return toast.error(t.login.toasts.enterMobile) + setLoading(true) + + try { + await sendOtp(mobile, selectedMode) + setMode(selectedMode) + setStep("otp") + toast.success(t.login.toasts.verifySent) + } catch (err: any) { + toast.error(t.login.toasts.failedOtp) + } finally { + setLoading(false) + } + } + + const handlePasswordLogin = async (e: React.FormEvent) => { + e.preventDefault() + if (!mobile || !password) return toast.error(t.login.toasts.fillAll) + setLoading(true) + + try { + const data = await loginWithPassword(mobile, password) + handleTokenResponse(data.access, data.refresh) + } catch (err: any) { + toast.error(t.login.toasts.invalidCreds) + } finally { + setLoading(false) + } + } + + const handleOtpVerify = async (e: React.FormEvent) => { + e.preventDefault() + if (!mobile || !otpCode) return toast.error(t.login.toasts.enterOtp) + setLoading(true) + + try { + const data = await loginWithOtp(mobile, otpCode) + handleTokenResponse(data.access, data.refresh) + } catch (err: any) { + toast.error(t.login.toasts.invalidOtp) + } finally { + setLoading(false) + } + } + + const BackIcon = isRtl ? ArrowRight : ArrowLeft + + return ( +
+ +
+ +
+ +
+
+ + Qlockify +
+
+
+

"{t.login.brandingQuote}"

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

+ {step === "mobile" && t.login.welcome} + {step === "password" && t.login.enterPassword} + {step === "otp" && t.login.verifyNumber} +

+

+ {step === "mobile" && t.login.enterMobileDesc} + {step === "password" && t.login.signInDesc} + {step === "otp" && t.login.sentCodeDesc(mobile)} +

+
+ +
+ {step === "mobile" && ( +
+ setMobile(e.target.value)} + maxLength={11} + disabled={loading} + className={`h-11 ${isRtl ? "text-end" : "text-start"}`} + /> + + +
+
+ +
+
+ + {t.login.orContinueWith} + +
+
+ +
+ + +
+
+ )} + + {step === "password" && ( +
+
+ setPassword(e.target.value)} + disabled={loading} + className={`h-11 pr-10 ${isRtl ? "text-end" : "text-start"}`} + /> + +
+ + +
+ )} + + {step === "otp" && ( +
+ setOtpCode(e.target.value)} + maxLength={6} + disabled={loading} + className="h-11 text-center tracking-widest text-lg" + /> + + +
+ )} +
+ +
+ {t.loginTerms?.prefix} + + {t.loginTerms?.link} + + {t.loginTerms?.suffix} +
+ +
+
+
+ ) +} diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx new file mode 100644 index 0000000..f68c6d7 --- /dev/null +++ b/src/pages/Profile.tsx @@ -0,0 +1,423 @@ +import { useEffect, useState, useRef } from "react" +import { useNavigate } from "react-router-dom" +import { useTranslation } from "../hooks/useTranslation" +import { + getUserProfile, + updateUserProfile, + updateProfilePicture, + removeProfilePicture +} from "../api/users" +import { Button } from "../components/ui/button" +import { Camera, Edit2, Trash2, User as UserIcon, UploadCloud } from "lucide-react" +import JalaliDatePicker from "../components/ui/JalaliDatePicker" +import { toast } from "sonner" + +export interface UserProfile { + id?: string; + email?: string; + mobile?: string; + first_name?: string; + last_name?: string; + full_name?: string; + description?: string; + birth_date?: string; + age?: number; + profile_picture?: string; + created_at?: string; +} + +export default function Profile() { + const navigate = useNavigate() + const [user, setUser] = useState(null) + const [isLoading, setIsLoading] = useState(true) + + const { t, lang } = useTranslation() + const isFa = lang === 'fa' + + const toPersianNum = (num: string | number | undefined | null) => { + if (num === null || num === undefined) return num + if (!isFa) return num + return num.toString().replace(/\d/g, d => '۰۱۲۳۴۵۶۷۸۹'[d as any]) + } + + const formatDate = (dateStr: string | undefined) => { + if (!dateStr) return "-" + try { + const date = new Date(dateStr) + return new Intl.DateTimeFormat(isFa ? 'fa-IR' : 'en-US', { + dateStyle: 'long', + timeZone: 'Asia/Tehran' + }).format(date) + } catch (e) { + return dateStr + } + } + + // Modals state + const [isEditModalOpen, setIsEditModalOpen] = useState(false) + const [isPicModalOpen, setIsPicModalOpen] = useState(false) + const [isSaving, setIsSaving] = useState(false) + + // Form states + const [formData, setFormData] = useState>({}) + const [selectedFile, setSelectedFile] = useState(null) + const [dragActive, setDragActive] = useState(false) + const fileInputRef = useRef(null) + + const fetchProfile = async () => { + try { + const data = await getUserProfile() + setUser(data) + } catch (error) { + navigate("/login") + } finally { + setIsLoading(false) + } + } + + useEffect(() => { + fetchProfile() + }, []) + + const handleEditClick = () => { + if (user) { + setFormData({ + first_name: user.first_name || "", + last_name: user.last_name || "", + email: user.email || "", + description: user.description || "", + birth_date: user.birth_date || "", + }) + setIsEditModalOpen(true) + } + } + + const handleSaveProfile = async () => { + setIsSaving(true) + try { + const payload: Record = {} + + Object.entries(formData).forEach(([key, value]) => { + if (key === "birth_date" && value === "") { + payload[key] = null + } else if (value !== undefined && value !== null) { + payload[key] = value + } + }) + + const updatedUser = await updateUserProfile(payload) + setUser(prev => prev ? { ...prev, ...updatedUser } : updatedUser) + setIsEditModalOpen(false) + toast.success(t.profile.toasts.successEdit) + } catch (error) { + toast.error(t.profile.toasts.error) + console.error("Failed to update profile", error) + } finally { + setIsSaving(false) + } + } + + const handlePictureUpload = async () => { + if (!selectedFile) return + setIsSaving(true) + try { + const response = await updateProfilePicture(selectedFile) + setUser(prev => prev ? { ...prev, profile_picture: response.profile_picture } : response) + setIsPicModalOpen(false) + setSelectedFile(null) + toast.success(t.profile.toasts.successImage) + } catch (error) { + toast.error(t.profile.toasts.error) + console.error("Failed to upload picture", error) + } finally { + setIsSaving(false) + } + } + + const handleDeletePicture = async () => { + setIsSaving(true) + try { + const response = await removeProfilePicture() + setUser(prev => prev ? { ...prev, profile_picture: response.profile_picture || null } : response) + setIsPicModalOpen(false) + toast.success(t.profile.toasts.successRemoveImage) + } catch (error) { + toast.error(t.profile.toasts.error) + console.error("Failed to delete picture", error) + } finally { + setIsSaving(false) + } + } + + // Drag & Drop Handlers + const handleDrag = (e: React.DragEvent) => { + e.preventDefault() + e.stopPropagation() + if (e.type === "dragenter" || e.type === "dragover") { + setDragActive(true) + } else if (e.type === "dragleave") { + setDragActive(false) + } + } + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault() + e.stopPropagation() + setDragActive(false) + if (e.dataTransfer.files && e.dataTransfer.files[0]) { + setSelectedFile(e.dataTransfer.files[0]) + } + } + + if (isLoading) { + return ( + <> +
+
Loading...
+
+ + ) + } + + if (!user) return null + + return ( + <> +
+
+ + {/* Header Card */} +
+ +
setIsPicModalOpen(true)}> +
+ {user.profile_picture ? ( + Profile + ) : ( + + )} +
+
+ +
+
+ +
+

+ {user.full_name || "-"} +

+

{user.email || "-"}

+
+ + +
+ + {/* Details Card */} +
+

+ {t.profile?.title || 'Personal Information'} +

+ +
+
+ {t.profile?.firstName || 'First Name'} +

{user.first_name || "-"}

+
+
+ {t.profile?.lastName || 'Last Name'} +

{user.last_name || "-"}

+
+
+ {t.profile?.mobileNumber || 'Mobile'} +

+ {toPersianNum(user.mobile)} +

+
+
+ {t.profile?.birthDate || 'Birth Date'} +

+ {formatDate(user.birth_date)} {user.age ? `(${toPersianNum(user.age)} ${t.profile?.yearsOld})` : ""} +

+
+
+ {t.profile?.description || 'Description'} +

{user.description || "-"}

+
+ {user.created_at && ( +
+ {t.profile?.dateJoined || 'Date Joined'} +

+ {formatDate(user.created_at)} +

+
+ )} +
+
+ +
+ + {/* Edit Profile Modal */} + {isEditModalOpen && ( +
!isSaving && setIsEditModalOpen(false)} + > +
e.stopPropagation()} + > +

+ {t.profile?.editInfo || 'Edit Profile'} +

+ +
+
+
+ + setFormData({ ...formData, first_name: e.target.value })} + className="mt-1 w-full rounded-md border border-slate-300 bg-transparent px-3 py-2 text-sm dark:border-slate-700 dark:text-white" + /> +
+
+ + setFormData({ ...formData, last_name: e.target.value })} + className="mt-1 w-full rounded-md border border-slate-300 bg-transparent px-3 py-2 text-sm dark:border-slate-700 dark:text-white" + /> +
+
+ +
+ + setFormData({ ...formData, email: e.target.value })} + className="mt-1 w-full rounded-md border border-slate-300 bg-transparent px-3 py-2 text-sm dark:border-slate-700 dark:text-white flex-row-reverse" + dir="ltr" + /> +
+ + setFormData({ ...formData, birth_date: date })} + disabled={isSaving} + /> + +
+ +