From 262222267be0cfe5fc97c61ea4c8e381329f92e0 Mon Sep 17 00:00:00 2001 From: dohun1214 Date: Wed, 15 Apr 2026 21:43:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=205=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20=EC=A0=9C=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- root/week05/api_week5.md | 116 +++++++++++++++++++++++++++++++++++++++ root/week05/image1.png | Bin 0 -> 73006 bytes root/week05/image2.png | Bin 0 -> 13309 bytes 3 files changed, 116 insertions(+) create mode 100644 root/week05/api_week5.md create mode 100644 root/week05/image1.png create mode 100644 root/week05/image2.png diff --git a/root/week05/api_week5.md b/root/week05/api_week5.md new file mode 100644 index 0000000..b34bc61 --- /dev/null +++ b/root/week05/api_week5.md @@ -0,0 +1,116 @@ +## 1-1. 특정 지역에 가게 추가하기 API + +`POST /api/regions/{regionId}/stores` +`Content-Type: application/json` + +**Request Body** +```json +{ + "name": "식당", + "address": "서울시 강남구 ", + "category": "한식", + "description": "설명", + "image_url": "https://..." +} +``` + +**Response** +```json +{ + "store_id": 1, + "name": "식당", + "region_id": 3, + "created_at": "2026-04-15T10:00:00" +} +``` + +--- + +## 1-2. 가게에 리뷰 추가하기 API + + +`POST /api/stores/{storeId}/reviews` +`Authorization: Bearer {token}` +`Content-Type: application/json` + +**Request Body** +```json +{ + "user_mission_id": 101, + "rating": 5, + "content": "맛있어요", + "image_url": "https://..." +} +``` + +**Response** +```json +{ + "review_id": 42, + "store_id": 5, + "rating": 5, + "created_at": "2026-04-15T10:00:00" +} +``` + +--- + +## 1-3. 가게에 미션 추가하기 API + +`POST /api/stores/{storeId}/missions` +`Content-Type: application/json` + +**Request Body** +```json +{ + "region_id": 3, + "title": "미션 제목", + "description": "미션 설명" +} +``` + +**Response** +```json +{ + "mission_id": 10, + "store_id": 5, + "name": "미션 제목", + "reward_points": 500 +} +``` + +--- + +## 1-4. 가게의 미션을 도전 중인 미션에 추가(미션 도전하기) API + +`POST /api/missions/{missionId}/challenge` +`Authorization: Bearer {token}` + +**Response** +```json +{ + "user_mission_id": 55, + "mission_id": 10, + "user_id": 1, + "status": "IN_PROGRESS", + "started_at": "2026-04-15T10:00:00" +} +``` + +--- + +## 2. Controller → Service → Repository → DB 요청 흐름 + +1. 사용자가 `POST /api/v1/users/signup` 요청을 보냄 +2. request body를 받아서 service 함수 호출 +3. 값이 유효한지 db 조회 +4. 테이블에 삽입 +5. 저장된 정보를 반환 + +--- + +## 3. 회원가입 API 비밀번호 해싱 과정 + +1. 사용자가 password 평문을 Request Body로 전송 +2. Service 레이어에서 bcrypt로 해싱 +3. 해시된 값을 DB에 저장 \ No newline at end of file diff --git a/root/week05/image1.png b/root/week05/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d83411e961ce9c98e7e9fb0260f86bb88577a26 GIT binary patch literal 73006 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�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 Date: Sat, 9 May 2026 22:44:30 +0900 Subject: [PATCH 2/2] =?UTF-8?q?6=EC=A3=BC=EC=B0=A8=20=EB=AF=B8=EC=85=98=20?= =?UTF-8?q?=EC=A0=9C=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 6 + root/week05/api_week5.md | 116 - root/week05/image1.png | Bin 73006 -> 0 bytes root/week05/image2.png | Bin 13309 -> 0 bytes root/week06/server/.gitignore | 5 + root/week06/server/package-lock.json | 3052 +++++++++++++++++ root/week06/server/package.json | 28 + root/week06/server/prisma.config.ts | 14 + .../20260509132658_init/migration.sql | 111 + .../prisma/migrations/migration_lock.toml | 3 + root/week06/server/prisma/schema.prisma | 119 + root/week06/server/src/index.ts | 33 + root/week06/server/src/prisma.ts | 8 + root/week06/server/src/repository.ts | 31 + root/week06/server/tsconfig.json | 44 + 15 files changed, 3454 insertions(+), 116 deletions(-) create mode 100644 package-lock.json delete mode 100644 root/week05/api_week5.md delete mode 100644 root/week05/image1.png delete mode 100644 root/week05/image2.png create mode 100644 root/week06/server/.gitignore create mode 100644 root/week06/server/package-lock.json create mode 100644 root/week06/server/package.json create mode 100644 root/week06/server/prisma.config.ts create mode 100644 root/week06/server/prisma/migrations/20260509132658_init/migration.sql create mode 100644 root/week06/server/prisma/migrations/migration_lock.toml create mode 100644 root/week06/server/prisma/schema.prisma create mode 100644 root/week06/server/src/index.ts create mode 100644 root/week06/server/src/prisma.ts create mode 100644 root/week06/server/src/repository.ts create mode 100644 root/week06/server/tsconfig.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b4a4312 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "umc", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/root/week05/api_week5.md b/root/week05/api_week5.md deleted file mode 100644 index b34bc61..0000000 --- a/root/week05/api_week5.md +++ /dev/null @@ -1,116 +0,0 @@ -## 1-1. 특정 지역에 가게 추가하기 API - -`POST /api/regions/{regionId}/stores` -`Content-Type: application/json` - -**Request Body** -```json -{ - "name": "식당", - "address": "서울시 강남구 ", - "category": "한식", - "description": "설명", - "image_url": "https://..." -} -``` - -**Response** -```json -{ - "store_id": 1, - "name": "식당", - "region_id": 3, - "created_at": "2026-04-15T10:00:00" -} -``` - ---- - -## 1-2. 가게에 리뷰 추가하기 API - - -`POST /api/stores/{storeId}/reviews` -`Authorization: Bearer {token}` -`Content-Type: application/json` - -**Request Body** -```json -{ - "user_mission_id": 101, - "rating": 5, - "content": "맛있어요", - "image_url": "https://..." -} -``` - -**Response** -```json -{ - "review_id": 42, - "store_id": 5, - "rating": 5, - "created_at": "2026-04-15T10:00:00" -} -``` - ---- - -## 1-3. 가게에 미션 추가하기 API - -`POST /api/stores/{storeId}/missions` -`Content-Type: application/json` - -**Request Body** -```json -{ - "region_id": 3, - "title": "미션 제목", - "description": "미션 설명" -} -``` - -**Response** -```json -{ - "mission_id": 10, - "store_id": 5, - "name": "미션 제목", - "reward_points": 500 -} -``` - ---- - -## 1-4. 가게의 미션을 도전 중인 미션에 추가(미션 도전하기) API - -`POST /api/missions/{missionId}/challenge` -`Authorization: Bearer {token}` - -**Response** -```json -{ - "user_mission_id": 55, - "mission_id": 10, - "user_id": 1, - "status": "IN_PROGRESS", - "started_at": "2026-04-15T10:00:00" -} -``` - ---- - -## 2. Controller → Service → Repository → DB 요청 흐름 - -1. 사용자가 `POST /api/v1/users/signup` 요청을 보냄 -2. request body를 받아서 service 함수 호출 -3. 값이 유효한지 db 조회 -4. 테이블에 삽입 -5. 저장된 정보를 반환 - ---- - -## 3. 회원가입 API 비밀번호 해싱 과정 - -1. 사용자가 password 평문을 Request Body로 전송 -2. Service 레이어에서 bcrypt로 해싱 -3. 해시된 값을 DB에 저장 \ No newline at end of file diff --git a/root/week05/image1.png b/root/week05/image1.png deleted file mode 100644 index 9d83411e961ce9c98e7e9fb0260f86bb88577a26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73006 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�v@tFPZNaRp&ntg=dU(LH!>y3dI+P=Qjp%5C_dBm|Tv>J- zd@tlxOV5dm%hLIi9u;r6+0YcZ#_g?3U+heBj{Zo{#_;nBe$C=IlkxwmkUBIJq|K@S z@RGf7OZHaY{o(O?yEYk`|HIl_Kvngw@1jdl3_!#{6ahs91tq0R5kvt|K}8xwM7pHQ zqC`PJxO~<#`5%7jBqmqsQE+p#EDITLMgr zOiBW=*S0;q7Tg6$1}lO{zP)ge#Y7mSt_UBW-tqAcnUqkLtmDr+7sFGZ7WDghOf(+a zaEO1(x9l?bp^?<})cMMCzATQ-0giwkI^|{JGG^($li?P}gm`tk?mK^w({Jf=QWLT6 zOmnZbxD?a#Qfxj zYt1j(T$+e!Bw_KOqgK9GxioKYc>S68dZ+K{O6Qd$a6a$2|Gy%|Z%h0M?snQJ#!&r>%akk~FC)!0YOeCLaRv)OD>n>P3L zg;!`lK+Kh4)VKLt0(I}y&{>dd63+e41g2Xz#biO!a^kO{CI-g;DJcGX-ts@U0RMCG z!BwuIug|6VQ_%1?Ujo&vbK)@P&$z|(;{Lmi&mD9&(=J7JN$wgIO_>mCup6=MYTdLT zUFmL3%`xr!T^>+yBVym3&FtB#&pI9jd*KFyzPeIAtycY5nr?Htl50lRIYH9T>UHVl zZTr@1@cp^uOUc0r-GQ>?~IM&VKwi8Ak8c znGTP*vH#I}1%Q5-TLWJ^%tP1jNfb76HDpdi$?JbOoiQ(cY*Dkg^|kmPp|L2Y)ECu* zP*7s)6uLh9cUx`zspNl>J)tW_-#cF76IKCjaz4I`k|YG!jvx*-3C~Ea3mRM1I7F8rRUF(xu+1f2J){dY;!Q41)CYlqNf)% z4j!|8uPSH^4h<;s<28||K$!~RpA|j6?-XSK2+9IXOwbQJSY3#P5lw3=zpm~uOvE$o zcpsMfux;p3M?f%x1r5l}h;c)Hek809X_SobYr@~p^1Gi>2s{PDj zn%{Dhx<(r}GWO>MSaA1O&S}bLF%I$6Rb+paiuv~SZ1vu*yG$`}t}*~HZEF)`Wc>8* zUH7&4lm8TgKVDMNn^{^KX&;KLS$NI6^5@T=->t1pO=Xbjs@}WT5c~wpWAN62C*B3$ z5KL6iZprCH-j??Vo3+tSva1+5{)r@>e@)}yEZlWV=jesCBQze%nvb6ck0g>R9!ZOd z7zw@JFC|obzI=7|<{eA1 z=fUB=cL!BE6~hA73Pm2%F5FVod&_rLZoQ!*Dl10%VzKjiQg7|m4SOA@+MrxcZgeh? zQ}mkfad2>GYsX(I{s%$mR)1DKsBruC1$9Y=16YVJok%$O{`2R1?&7`OCyt8;Bmt-zIs7LD5C48Elx%z{A&de9+S zT2@LA_ebk1bRn5q^x(oezPvO(P^lbzTQ-0-3`&uPYcE?`_^7G%&CR(g(|rJ?U4Qx1 z4W9O=C_UIzYLdok(9)Sbf7Hu1RO?W=FX^ev42mQ-j=zqH8 zVh_v}w)hYaA6g=GV6fxwOiY7DFqgwSEKEzErKYy_B)z`AH2s&)pC6p&%(~5d2duGs z_o%!|NdBdhS-10^Im@~43ngj&=L$D2-L_i+#@EG(d8!OAQ+_V*Xm1x26LTAC&oGBZ z=0+OP^>p(=ql-^+y}cn_bMP8AyZq#5c5<8(6OLbL!^jq{#t^P&@l|5-`H-*bpRWjUaI zf*z{hCj`-buBUuUp>qt15p7BE#hPI1M%RS4X`^qazm{#7UiGdXJ6zYZ9H(cc=Pd zCw7JEs{zKR&z8MCH25IA>qA_-<&dlG!_EAkYqMW%Fmrz8#;daNetXC+x#}_5rcs z=jGxILkp=NZ;1LyosDO%6v|apI}bf|T4Ex|ySHL)k7fV*XR*ukq^v5>Q}TbR%7zY~ z3~Yfvu-F@EQ~T%3gb{sB|EFPsjNKN<#RXs2`OsfT;yY*=7sYR@sMzC959s&{6S`21*2i$M3H`LYLZ;o4s zwa2#|#!}F!K^{_GUS64P8)EbLV3=Bo)VWa#hQvV*yIg#U`6+eXOS7)|0 zeNti~Enk9Y)>&da-jIrnjO50zL0y4yl#LC)hq7*7M~5&IlO(;jQ111=AH|w)g0J>f zX*=lp8oY?MuYo(3c);K7g;*rEY>X~|`mDo$Xlu8vln>AG9{pTR_U(7WOOm=9j`44= zxm~R>{19ZP;3uc3ARm4>CstN2-^9jn`=-`|NeSkU-x+xO*1VV{Xefd*tjw*=gT)vr zn7V2T0iSL0s>;f2m!=|BSatNh{vOUoOu9I1xI4?vY*|7Xo~M{zW>n20R>^#P-S@He zL+DUI(c|Rc$Z%Lqy~-fR>=!I?d>_+^6DOFNrPdqr%Dg9gBW#yKetza!OQo5s*l~y7 z9T4Pe=WyMUT$b0l6+OehcaWZ!&L}lWmr}ewks@5Q_;Xp7=JBfvy}h)ikLNnztj+&@ zZn`pRMk?{$>aUVC&##AO&{e_!LL>qnY*sFsAg?Ru%Kts!_*25d!t>5fT!6*zWoe03 zcI9f>uNABueX8>hCRwYo`+2a3hx8VsTHjIkny2k;F^K^ptzB&NoU=nlXH2G#r@^1D z;EsYk^B)MbzY)3kNaT)N`p?|~TiD3))RrK${ zI&GRf^7jT5JshG)jH9u#Y8JNJmv~?tJZNlO;K{;c&sXZ>{E>{TEcI;LJEKaZF;p%m z>0LDUPK2Iw&sA}XaaJ%s6)8EAc$n1N(94R7bE38^~yaSvk8 zGW@zuxD=d!$zMJ7*w2E~#m$W)b@7{H=oN9F-gClSPs5!Z40Yq;VxB}9fAG|RLU?jg z9orQwxhl48k)QEvN*u$sbQReW&m2jwa6r((R~f*`giZT}3m3rgW}wHtirR)L?#%xW zsr<(JeQIP_*f3j;@qDILZBF%zFYSM%ZW&x@q4eUA9@YC=?qjSs5tsm9a?`#m5)wPJ z?EbPPrfwAN_r@uf8(opc{;`vo7^B1uZQj3M?p8dzuYrQF=ypt@;jY>X*Cx{qzXrfyf8hz6gE{^m*X2eonWPgAsdCvF_DVtxCP zj$~El1pTG7v_tTCZ+rOZ__9m%W;36g&r`?$q`m) z(Oq7=;N#=_p49)p4(h>CGxJ$E4TB%aX*;+3>BSSirAne~m*Fso{sWyS7OwS~krG{T zab|7ZpB7rKmiW=fPRQn5Vm?jbe(=7l*W#q;52wwO6cGCg@+{;?ebm#= z+Y*9~G{DmxMhvpdemu$nx;8D(vUIW;9TdVX1EQi7d;{K}9W>#?xE(J6N%nr?lA`k8 zf$`L2(F~g+1W53*02e4lC~lC|QugTgd=I+Vjk*l)*+iHln__KvLG4)FE>k4As*|GS2cH5U5kBhAa* zAK=!KdFh>gGXec>LV|~x4GqgScNinW&=9g38G3K9V!0NLFxUh44lv>`=9gxt7JTI} zs?$7UVrgyu#iHZ{{hg}*FlKGl>z6V!tms@f?X%P^@Rno7+k&KfG-; zN!B-?kiab;wiiNSC8x}S-p z=c+fL+4O%GGMm6~J0n&GO*iuXYb_4W$15!+QL`=1jnlHq2HY!-MqQyhV6x zfI90@5uraZBj1fDleJ3N47fFF-aRc3U^C2-)zH|y^VL61ME1D=sKBOSXXP2If@Uwx znkvct1Lk%+_hgR|=Sj2cH&sBu{pEI9wjDYAymC#QpY1vb?cZIcB5AU=OK_1{@mZ1lgg z?IzmKcHQ4x-V*cxE z+VzD$r3V2csjxyaRFYw?`8o}uEO|ej>1LK05#iFEe+oO1(M`CE{8^eVfWlb!Q$Fe> zXq!H(&)jDFr~JYecq^(H61&q353b?^Ew(T)+}UNHe1C3e8a{iuumDAq zTiypHIPos8Kw&#aDXEdkTy@*It8+cB5j%Ey-HfJkdsOakxW2jzny9s3-dgzE`gBQu z@gqsYanygR+`Y#}zxb6Rf;b`;#vP6|aImv4 zZLHqGK?^bbiQRLslZNxbO=LF*>nd{@g35m*68v}s(&EviRQU$EM3eQ~%wBU$V+ zIjTQ{wWY+$W|bU!U6Uz|ChB*7@JI<47WAYQo@z60GcfoT5~Hin!soQn;GygHd!Uk< zXuCl6uk%g3xTUysJR?MCY-j$|;^t~n|NgKNK_LFZmn(QXhq4@2t4B&ySQqo32kIDg zCTQlX+b5<^<6~I-`G`@8;_HesDnU5Z6X;9+0^`&5zR6B zq?E&jC6ZfjGTqxsBj`x6*ZBrD^NDx910Qvt#P*rArB=qpv2Nuh|2)d|=_?6B1LJ5P z^Jte9rl&*6DouZkkDZ-^L$*VD{I?CA$Pc!2V~-yVMXF`n^0>u({c49pAE+L=@i8b& z+e*2%R_Q=K^!5OnGEI8sVA7WLc+brv`)H3JI%*>^>l~>i*+s0M9X-xxAY3^*Zx9+W zcLmy2=z3Qn#T|Kfi73K`MK755XZg<+)0Ve7B8wum(vt;)@WGt&KBXAWp2IzO8Augd zu7QZn%+PRsWH6f;lmXHKj;13GiOD)Q>{rJXgw)J8dm%~`c3d-gJa^s7iuZbCT-<~U znP_|FVGh$?>+6xPU(W;W(rarPc8{&&NYvZhrhm$b8(TTAk&4})U&z)We>^ePW#2zF z#Wmu)Ny2WT(Onz03lgp*`{lZUu4J~EtTPlaBue7jvD&!Upmh{R3!IN1{kkD)2xXsh zu$V}MsNwG{mb>;$lpbjMM3=hPAzTk{v`q5)_ayqe$f1ZW$tfgqk8XyCgz(xgeQqkz zX@0S%FK5G6(Z*&c1>7Ye&}aqKMpq>^^{$e<{AKaI5*_kIbOINwTN1iUynr^WU1KPl znwbd|arpB5`Ff7SE>@MLRolGw_HXasC&io~BHjU&&-Y6`nHJQ?-d_DE2doS}P&{YU zvsYZ*+sYHW ziqzNA64okyjLBq>%qKOBJmX0V9;up+|8D&BX$@`*qRj&cfykb|lIta^*8VP3GcfY< zb1)xQRMIwj(;DAG&!$Iw5kun7qVmO_4m$m1#)!ErZMu7pe;>{9gwsZ<)c4; zUJA3iV%V`V+L9Orc9pxEW}wAr&gMYKVW4b@X-AAYR_a?46A!qHCrg=3b$cAygt=d= zaikKLVEIbwF_@8qFeKWUZd#w8uems}nKR!c2puc{9F$=j<7ui&3O2GOn$l|VcURVC zU^ql8!*tO3-`O_!7g}Yc} zSd*ZWy8jJPRX&T6SMBXTAUH%(d}J!s5N<-g0Ua-njKn09LUc7h!cDf3(U4)Dmu+Wy zKQXYp|B7S@+%c-!+f~j{CO6CSaFF&*Oic9m`}z31XPpj9$?l#|G_MZNWTbTF(A=5k zbYB7P9p{6Zjw}vofBVFTmCTZol4#mtfdkDy|M7iXk80TI zx7>xOjpt6k|MTZ9p3O`2-jBzBYxn%zx&7(&M?>zG<3F;02tfdwcG=Z)e=VGvMb;np zxKT_#(9z+o2bpNKq2a=O-!Ae4p`qcSI~ z%qnXWE8)D9vu;^b&yzlXjBa+T+EX#ej$5? z%EZVB92!=qOFSU!Z1jM2dcB6SR`Dwsk-S)ux8K}&euQn~l6X&#&cdYV1&xdEE^0U| zO(mj6(6?PJ^YfsfXwKbOiQkljkk)a!2zDy^E}BrqH*%v&7{PtkTekpA95ULI?}zJk zc>Jzrn)UZi^+YkVu(%IZh5hQx?s{AL07eBcY2oJNl#6-G&kqA0qx~M`ZjaC>VA=%D zGBOv0>4RjO_U_PMI;2HN!scV z?f!0QVPJ~>EKiD25>e$3x9dToPE|?TEYtyu<86Wh0-qcu9oD8@0l2}#3wLUaNXGnR zm+?TwrU~Dxdn&2-i$R2Eo#(Jox_SY}b zkjcw%hzE9FtP@?}>a`{3K9PXu>9L8)(pa*Diwm&|E3}#gV9|>=G$cmiDDHk+N=;9< z#sKm{10ZK~bwf{x)95&H zc&SP-N@Q(HYrfCl>8_rGZurutdIJ{r1SiCqG{tXD=RFl}j+ewbJL-LE6-zjCKsj}8 zt{YtFCb)EDndm>tA=mfH{I0v%;YS5EE^aQ*ic;=2uomjX&1xg0CM#Pt-gXO@PS{~3 zH0EsX21&!k=Y0v&!=Gc=h_PA3=d?NL=>MAwu+m<;C0{Q!&K-wj-C90g!Fnl(MFBR~ zT`gIQdG9V=0tJ)K;rms6I=O?!J7Nbve_Fub^@J0pTXl}?mAuOa8vUcEV5PP4y8H~*Q< zNC~dV%6xMd@{AQ|suCsUyN1Y_^z%^vjkEJw40MZxb!wRHkX}3 zU^0a3ykq+%nToE0J>#p_c`U}EOsdRWl6D@VRjB@@wPqF<{`B_RJ*80XiH>OI(MYgS z_qiTCZ~z|VZ~Xn6ZcD}#6&CI!hUyNMrnfgQ3Tv=$)GDlMi(T`vICnbQiK~W*G5gui zHzq;Q?@8l;-7hgR@@Z@=Ea@D?A8*(PHia~8UJDl}H!Bd4dX=%UNb(>f|QJb#&ap9&}x}z-Oi9TZ9Lk&v3 zCPb9ZW{>B3)7IzNPNCOd8Tk3ZA%X*f$=P`=+fMyfZP#ffc>J&i zeBF3kS6gfIJ96)h4>^x+>DLd$bH%8z#&@+*QVyU5aCD^MJ`MYKUJi~NCs8$dPMet* zd3hVkscZKQ48Cg?1miK2y>{*N`)X13wOUCMM%hpS>#00=?eH|dg1UuwiTK+sh3LhKOsx>Rz7`1$)s<8#9>zZZ*Cb=>HKSEo|gO-!v}I#xHf zv^rTG#yz@@HUxr*IQ2~}nTl*;3ng7F#8HyD>+mnppSY&`&acEC12L$xoy9cK;_M|M zfqRYm=IOZVsw#iYK(ytoYHQ9RA){aJl*8oKVWdHkUh3MljwJ1nn`e-csbRe|Ir4Qk z4NX`O7m%J%ZvDHjX#_FcCPLwcwjqRFb1wxyAK#RRR^___mUyxjgd`wb)%c_Sb0=;t+`MB|UyF zpd38@wv^dAaWKfkIkg2MszvRsyIxbL!NCN=1-bFo?Z%OUJ7QCz}?;Xz7N-TV$fk$)qFmb%D!HHkEXZrf)V23qQ$4 zLwR-UzT>`zAvtbCkfpAPzm3>jf_Yztz1~3MFFL^^1?Y}lT*4bN??Rn^^O3^M zo9VXmFX1H)6BlI#g~h2J2Y2^tKwOl($he_*c}?wMr4N$uxAue{R~V_S%vK*c=$)PIus&x0+;gNRavcj&V-)R>t_VxY zgxIWc=1QB?4W|o_AF;a@oIQVje#%5a;Z1qJQkVMnr?7XQtPbRmX7)q2!emS0^{~~O z$ZhjP)kZE7$P`cxGfeE<=+^1!St~>NqhV`QRpsfnWSo^Pqjr)%t!R?KU%BA*&;hODuXSM=E*-%SjL81GkTK0-y zKzT~a;R_R&V~t-#zfU1gnFzSTWxV6{-Ei^{<9~LhUb76;DTOd&LAz`<84e2g$d5qm zG;S0HFT{FqeP9w$5j5G_a!=GzWlC>BQ=XD_&7|lhV#d5+$d$~*L{c)|8BQvJfHS)KG1kWNIjxSUYv_2Bp@JHr+Q;`k?xVy zh1QFaHSoPS&9gvDarV&Od9~4@A=peA7r5lsA1BKxzEH)s{}zNL*nNUWIujD6BAhxu zlyd%u`2Ykw3r5^ZpS2#SQJIS@{#GM;>ai-QUSu2=^Ep|{hSToOqOAs=fvrgV_ zeg&?!tn9-4Je&~`FIE4ciaI&%$nW2KQD_1#@<&UE<}3kuzp3!PnI25abnNpYk1ZkA zU3L82+8P+hWUr1TlVgjFG*wXKk^8H>T+l(_0_Tj&%Au9e91k85QUrvQctyOwd4`zO z+8muaia2=hiW;?l!2WaOTp)r4S2s&KgGw5|XOpe*SI)kBDm5!q`qoC)CyxKZQ8v|% z{bx@zmwn5ZC}xrSRWnX`O#A@zh26C(@1yEYM3=^xSFM&GstE2EzHi^oP4`L0iKgVR5EF`{ z{RfhcU%S({kXilp*EtPtp{xQ=#wgw^2JifHRDq&)<$A7M;N?YXCiEz{OSuFDjuF0m zjhP+nqx-NmtFMo)PT#J0uBpqZB-u$ekbPre{I&uAiL+-j)IYnwCUT>7NATfByVV!eEtzi*wkCmkZ;ZUNEkRxxHoE zg5os9-`^!9Aa^qrsEMcNja}pu82wAj%I5o1bw{{k{);x6lqaDrw)vo5Xne*q1n%vph2i-u7 z0RUjKG^IJl%gS2%p?-K_!2{Ob+b&|p+kJ7Tk8ai=91(17jUX3=hOVOA?&bJX<$E&R z>@_8xU9+?se;TNf#R|hr5X59;UQwP`>K@6oEPB}}?&%D93=#3K?N1=90RgftGAxaZ z!>`C?-S_iB)7qMwI>xU|-hcUm5;(83pXdoWT`=P7ww+*NnoR3zB0R}h{uLUkV&KKf z#s>Y#wk+n|ZDa3iAHgvTR+P6C6o?2U9%pTB1>hI7jbLiJM~2gM_87fbg&TiMMaR#r0lWOHH~AV<{FE^}aG<0z8zQ zT_aZJVu+OQpLq5`O`OwMODhbvY5sI^Mcb<)YHJnX`0qZvV3e4a);B*rQL1uH&N=+g zJZNC2PoJit8AmP#5{kDGJxJu0X`ki>ed_ebOJgjKRHUDN{7`XlAW9vQjOhEF}oUF@7_Q$MMVr{ zc~{!x2?8#%>3M?b{1F01>~)VW7&zg+xDM)78ky-XvG_d0%RaUig8SKXZqfPho(nkc zsHH|q+*cKrg-npw9$E1AaTq_gLCsc-=LUdGA_a0if+8}=+<`2%Cl#%4th;WFM0NHa z=pZ4W*BM)X)yZ=tzQT8~@jL^WbW|;X>{$^`lXt!D2PKKNTRJV(RP4hlLb|Ur!f!sX z-Y?$uli;2U$F9pxcoaRt=l=dZs`)(b5UW%ki@IZkciE|-wYALWzBb%acV3T)O3X}I zQJ+wFEU-m|xqG*%tc;nT|EN{ly{lJ;(A>=qv^lp379h;qqgI9$t9nkp9fS6WRn%HsLaeGwU=lZ ziMl;(#3OI&(QS529hWSVK&EF!1-@mXvnXTW2}!#`6JT*!`By5e?hC$I{e|xJf|g6f z#1n`2?{CR$tS``FF+zTDLEs$*lmp$Du8}-~&ioM^yJr09;Gczf24_EJifNG7$hArK;gH;`^ z$%cCRqb)9+OmGg?l4khR+^CXaMwZq4v=aRe#M1niEhpwy`@BvqFRKf2qaYN0SaHUn z@i__l$6)5t&cAGKYIosMv;O-6Y3g)u+H{14ne_Pv%x2O z+O%o4K(2$2eN_GMjc}opwp9pz9=+RDT>Rg#CZN<1A#x%ollTwbn5iD7TQ27}a&nwq@%W2A(0lq8GKZt$?&{l>vw)7;b) z%nu3U=e{pv^xX>zI@>wtQy}&ct5)MOOrFm-oAYt_*XI52C&&lN#VW`PTH0{ zn1^xFwlgrG7@MbIwVuDCsAz-VD($aP$#G%{`=qRfH+33op>x`>0qCsN9Oq!Lc$;U8 z$3R~nEokv}w4O>zQ`I-$TxMXfwDe$A{b^OE%^7rWn=OBoJdW8UjPdHsNNT9c&Vu)e z_b#$NR59bTnJF9_Q=unAtl`y8xAT`N)K%VgWET!I49tZ1+)p> z*p#xdk?(TVzJ8tV>SMMks?x4b6$YF67iz5pphI>GJ9ZFH^v|*Td3$g4d36I4t+?~S zxTnDtun7pEAamOcT!_ceO{gB0R>2`5@DTJo&Tlz#JJ7{tCBiAZ zUv@ddCTREe)+I(**uqvACZcdb{4>_-8xzB4bYfl4qpZB#up?7@VQeSJYk{*rn{W4t z<~Q4GJqrL*29rrV!UT<>o4~G%Bh3At7Tx!I`xdUDdw1`K?&guclg;5nbRUQaYd;Uv z{XX@`cu#!E>dhJP&I+HOY`Y0FmtzmPRBtD2+x8Szv$B`~e)`17&mXj==MwJg?ag8M z`;Y-uMWANw_}84LPjj-es3%;haDy%ZJDH#4>(CmYB(1V^B8#@ z#E*p)%6l9EN$|)KG4&JR4Pa7?=Ug_rKBmD6Q4FvXEPidX@_1=|m0VRNG~irfM~XgO zG}8ecH5LWdNt@P|^bDKbd-lMXEGH_ep#Gpv*vB6~>hd+0MbB$oG8^xGdAJ&uQ84aAlMVMU4YUgo4+fg}J$U>X?H5 zD8KpOZ&u~hk*OZ`&R6M$-EG=xVq*7U$$jd|E7ZPOPMadN`E~>p90mLQ@S$>1sT%NV z(PL~zc;e*+*z#!0t#7ERgF?J2N=rT5-G!}KU#?f~!&&d#Y4gnzvd9)aM#3v<-i7}1 z=-}XE3|k(gsC;l5)AL)y;`(= ze2fxk1a6KiSJY&rrAsZ#-_qm4wucB9 zB5!dilb_(OPMo~Hd+%OMQJ)HTO_!Z?7x<|kgsVY9=pGzgoN8e>w`Q~Km6mIgZ+N-= zDPf1e-XrZiIF-qZL*x!u`a)tyBDk`T;OV*0LR(zj z>O!S*#qG_Tnqcm)SYjsIGwjA%N{fpb$5#2oGZ#ZbNF)cY%>;93t<-(or{ZoBv)ji7 zYef4Go2XBphy@?~{(g32qpdl%tuUkTU1TKYZi&83)l;k-b2X2dEi33qoN??l2$e!lB5 zYU=6;FLUWhmbY_6xrt}&3}If;n1Sozq&m0vTHE1_b{$jNb?9Fr+X-5 ze>L@Cen!MK#~yWKO?ImCfX%Xv(&6O_+;gDMn2C0{%0$)jc|~+z(cs;_{PWBA@3$Wf z(T!27yX_`zFR-C&L9&JmDaWv>4K@gG75~ybaa8sm73HO+0Ag>&bPUq&PXJmU1|H7g z!+r}3Z}GVc23YlI3M{uCFtFgMIKb|48ZoW{n8w7h;niNv>5qf7FhdY6WA z?t{7ydoZWV$x)x!#>vBDKh=G5dA$ycZfS-6Av&knj~}_ujTNFL-L-Gb)Y9_w%jysX z1j3@LP-#!`_rHt%0rH5XQ~HlSBYRD+=0p*T!u^)@@{$rAjdz$s2avmfhm!-@M~1l$ zlDt)aP>oOKIAa!olkT|IZ>NSN&8*x1}` zo4X=&XJ}XXnZ+)~ z)2AD2Ybg%Q>|*Q*^x|!HJ!~tY;B)(_RZY(TQX@oks@S->Q!opgnQk?kXty~*rG9%v z&}lQTrsf1egEJ^pi%zSYGNL>n3hOJ3q+2QtXLB5~u-H?P!jXi|lD4NQwyiDI#;}XE z?|_lpn5O{nIym)4nOhKI{) zymQjmSJoR*U6{VyIq=eruK>1U(b37~(drQKo0x0?I&l>ThiwQ6Nl6ztIUflA(Zc$B zfchfhHiqR~eS8k2(j+;o-X)G2U7D`mm{nBtf|qcvWo$A~nzY5i@sD^m#wtXO&7r6s z>&m4jU;*(wz9+I?(CawAzmFLc&%$0&(cEXxgu*&A9=LCz<1MT!81ROwn-n}UG{pEA z{)jpb@j#zj2++YQpYYvWDI?=lO_cxBQ zYdlGwjc+lHuB+qRwhc*#$%poyK6{p*`DIPiRPMH&g!F|bM`GmtQ6E`c&rvcSFTPaj#{c^F z=g;QIX{Di2KTZOcG(r~KXMUnn2jJ)Pr^=bOcv*c{R`ZcXE&9mFUGb_Or`0(}MSXnZ z1qI@|JIEVqYxj}1YZ~XyxxW1pk^cB>T|ohf@`&86TRA2t@0T4a4;PiKa~BT`q(cAt zYF66+2&*^@aILbowK3UO|1g=JdyI9sV7+3Be22mS9u&|H%W`Ow;sZIg>j2U%O!PZy zO_Jy6sAazw{gV)}@-9pEa?&o}D6DA7(Wu<;czl0_Q{2B;1etEYOMXvet5x@e={zpsP& zuY#hM>r1QgpZvwuI~79Xe|fz4^XHHc3oWg%?JJsh{lQ-x9ISlUDDy;lPcHh0+xHBJ zZXP~vwlGOfuRgnS@`r=+c<+q5pi4lwqf>Qw9%$vn&rhB?GgU(OLb=`n6Rw@Z!;9J3 z!sN$yKjaL$>=KAI(kY^OV>0LnD~d!wk`J9;3^D2S{9IOvxH@)lY>ZMXE!|-kPG2}W z;$NpPx^$HIXZ2ZX;X$28m&HXR-<`5p3fT7FFBR{4Vt@4C zKkQ#W^KtcLt}%mG-u=WkY()S4R&F`lVmbfw##^r)qOM{7-@L?8NI>BC^fU*41H)BR z9B$bJhbG_iO>i(aHkBE1qyaX6Q*4}-sSf2g-E?Gj78_nZwKy3K>iPD($jg^dW!>Y) z*G{srHIFAxS5U0}n+t$p0k2Wvf)JZ5Dd}86!HpT0(cxhc$F+;9s^gKdExl6ByCR=3F_Vw@%t$$LG^j*=~-6oM9;$VoO-a(Jqn@9>#9B?`3(&W z41Wl#gS@Glva%1=4~b+eaZ*xC-bdir}D|+$G{(w+>Vfx-`R89Pwe+E(~mS>Nf z&w4ZHR)zBS_h?v2N%~)!lg_3c^5Z_>!U4{87^J3@lD~g?QT;{t2)idD8M=q zoV|WvCa|=$+3x+s$_{C1kFN@B#l>oSNaqFz2btXYbv!FQY1(pc#IUFD=!-rrB68*W z^^_Yvbqx(}ud}xk;Ff~y&6Uyka(uuYB1jySkg3|HQ9#_BQ&$1Jv48>2^;PxtsyA=G zS&xQGerKjdA4^>*p10Es@v-7OkiRYn~9-SY7< zFE8IgumPrqdnFXRMdGwRfJ7b4FQ-_!FDe)D_%V zhr#7hQw!lWnnRjQpVcqVfN%vwoBNbLSg^7|&I&O59fUMvrrs+E+Dv%!MgypqQ^1EC z32EwP!*$vV)syuuqUW*8;Sn@5Z?j*SGqrpd+WrLd0U+eiNdd_i@6LB9_jgch!jV!7 zT2_Ed_{$f4kB}WtZ$*%K=u^P^8yinSwgfq~!um}@z(~ALNzO3`IBJ(uE&|HCtssvezH*3kHP{^=yNjGUckbMorOjr`vPuU% zoxu-?q3kX6rjrA@KP_yx9VolZM>%+gsHisMEwdd}o!959!Ww4G>|?X^8qK83hk;Xo z*4`GsbuVQ!805|f&yHN%=D1p!@@3>TmhKq&l5eqt-(ksdjTL}!SNLvcF@()1dU~>4 z?fv1To(obl&hxzD{nZTzValPNL|}N<>nqo>crx9fMHsdXaHLglk+f}B2l^*9j1fE% zF7?sY&iEh&#U66eJ4#9$L$z9G&&Dv_NOD>=q^Xr(Kj|tw9B=&Rr}GfWk@tg@A)sQ; zy}pKg=~=1;z}XG?dHb1sbWKZ)@< z%;FE6C#duR&xH#Uo!Rj*!$hK@n@zFd=q|&;wg{0ZxFsZt2np7S<7><2!;b|BD(NP} zI6U!>n35PjdW6#Jro6nv%3MZ7m#jcoj#)n^%h#j7e+NU!Z}s@QJea?h8yMuZ6cyQ& zy}d@bdHePctI10h4;!1C+cF#Fachc2?$|NrxH5N?Knl&>=-nF}9Jd@DpF&>)A{x;X zpv;hdqvP->vR_RVICJLhhrQ|I5@A43Ynqx60%547b&wLBZvW^g+HPi0gOL!X-@MUl zFRrFG@yq*iPtTy7+{FGZC;mU*zDdGL-`~GJ@eZ+~Vi1-Ev%V`om!`E8&-tezYj|XggG%G4O+4n;%``Gvq zNlEphjV_kMDEZSly_DnQZ&Gk_)(HqGwOl-*ciDWF0%0}<3#8<9`v8qGlzK!__{&6y zSQNNaiu0U~HaMp`!l&P)a_lwI?*?BBBhMCs;taro~9Y_3-qZTO@b$%5`@}1r3tFUm}!cZK?oP&Ox%|2aZA{^-l_=Xf9P&=$En zH%*1pv$H!eq65|S-Mc3$NFVqb6YIdn$km6Ja_RKv{xa}cGJxNJ*fSIpL zWjZUfowz$37pFg1wcg*6^?Pn^l_7)hl<$;pIY zod)mhxL{Th7EVapm6Hch6jSrY(Qy`vU%h%y)(G!Og4_67VMxHAKclF_%}a&$sFZ+Wpm!-PS8_&ak!17N$sS%geh6 z6s|tBue{0fDR_(UL?CFia!O)q^yZD|ueLX7NmO{gLA`~YZ;t7yNQK!W)C-}oRf+@? z=;OykEmvcGeQLrtrT+G&CKqKkm8^iUfe+UX!Xdlu_wTEj^DFZqAZmeOhfWKh*LH%l z81hz+@fz(VU^CS1m(rp1n4f&_n7GZ&z<}P@o#o9VwSh`$Ik}m+;XX@CS)4a77nf>A zU2A!HUuX6z`c9K*iS~>5(1Vs&Rt!4F?%cYi3k8DRg1v}H4(dD*g4bs}<}r}^_<;cg z2KQsHrAe(1bKX_jvu7GqPGr~uFxAGe-Ol)wEmQA!eBMPT#5}61hP{0&2(ubJy)TxQ z(#lFowniQYTB*~!d5$cvHUmF_o>9i9nRldMXo%&{f>88vN2eO*%U$n~WD7cQRh8_n zU0JcpK=-@mmZlF13PzJrt4O})T%4Nv^3~3(2s7Ks{*+kkb9sc;*}(#ZZ}(KyyV$KJ z48W{8EggFAoIkot+_*p{C@JMJhk*=@j9@;{Vr^rCgQXU>#XaovynvIiRcydgg8+0s zR(bHgCI`gl@-i|NzkWUW@g3#|xSv301cIfQRLH|Q)7zRnh_;gMutim2;jdENe$Xul z;D-gF2nK`}C^G;=7MnfsPG@96?bD@NiKaIFM=2 z4|2%Qva;rV`z&!e=;_}RGz#4`AKNk!y6-;S%@lo@u%E)zg{!8#oQq{N(bY9=EAKc( zA2}k*8Gy}PU1-}eG4y3>Ww23HlJ)Y)QoDEWIK}i}xbSM?#iK`upgn^_308}* zk>y)-8=AbnOjVtf)KsM(E#6$%`l@P8C3JKE@@@K@PVMQTU}i4E&1q$(bSIpa8C$apFFIxYFk#ch|yMN(cfT4aTD3jMGbG>5JgGe`1bXyg50qe%iLf- zAa}?7@N+2#tBtjtRk4r@odvf{bW@1+)G1$oe_Be*XR+z*LvQ&0qTkB|{Qf3ZzAXhn?@14s-Z zub4`i%nNmw3Q>j!EMB0e-)kq$fP(*~lG5)Ehf}E!_S4bLc3&!fN|b-k3Cx`Y*G9Rbh}CF1Y3wvzX0M~e#6xRt#+kVJ=Hdrl zlm4kPzd%e1X+(|_Zw)v)JKI`6_RC3%%d=B}NvEmF^w!TWUN!42Xf5{>O-eY8)X>1C zBm@dLZTO%V;x{+=HR_>H)LmTINS$8b|I1TKM&_lvdyduQ2H*uic&XpN6Y{|6+FZB# zk+FQW;z9{KFCB;d5_`q?BYX;q$=`Z=jR^VQukHX}M0_BOg@dp0+^uca#;9ia_+Av7mko; zk8ZAy_6p-O75IN@`wpP0vUbY@Hi}A8Bq$<^iispDph%D;2!e`uQIRO1O_U@V3@8S` z1V~1a21IhsNpcdAq+}%LoMG0r|G%gEy*KsVOx1K*rH#lv_nx!&{=W6CaG>v5zQkod zjZB{vH*~FvsV^kL>&DuhS$Ei(Ay1QogO5O$i5N^RL!+4e>v`FT#y0+Mum@De)cH>(7eZRAWvvwT5xx-!GpzpZ#@LTk5ATXa2o@Zd* zJ{RZ~k&9Z_2Gb;5zjCk%`?jPS2-T3FCYmZ^PiJEBl8pqA2K`oCpr+Y^wWFL)&D8hz z?c0;ezX+j6)OrLkaHDzx>c}EyDu7o={xtIa7#}}S^vq|kEDgwt2$}#tT;PunN`Z^Z zvc}p+>+>WyMD}p)9#0R4DGGLLxV$SUQ~)n#X7M3#l=JcNwWrt3Elk}$pPMhXf3^}mAI{ZIJJP3!h|iK34OCV>`ZwKdhx>X0RR&JG zgaiScxM{|>w2#UtD;q!rM(pP0t^M+)RLQs0_~GUjyH3ehEX&ui~Af%4tkp#|~` zNH#d!GkE;n-L1^cH-*QHy?dHxT=>Ty^l1tAuE(~0q~7GJqpLgeGwD^9EQ(Q-$(`NZ zp%)IqJ4S7Hty*#0HO$z#d5q-*zseW0@U@HO$lc8Ou_FKJ5@EKsT8IM~b`5b7cn74$ zY0mx5^bvoIsp`sG?@f2%a1YQ72Dfx5f zy1s82F)|+faDtGqH$E8}s;YJ+GITXD)aI8#g1 zmdnG*nGo7tm;b;XE-+AqV3i|Zn!%lKIJz6NWqiCl5oW2ay(K1SgN`q-4Xz2z!vBhq z^z45A1J$_6@m`sIQ=r_wt;mZaxq>rx{ydYRMcZnD*FuoguN`f$K37MF z7waGDsJQfWUq|alB=%0F{C!$TExv@XH^g9r>b379i>U@y1@z-$4ex4#8FP#&<7xAf zQ(RZDmq`~gFO@~^qtHS(h1;vIFZGC)ZEzs{c5_0#k@9xle#?xsG*;^_S@f#1hWQ1y zMQo`NtXTre-{{gT_IE^HZKLe?{uoE~4mNRuaF<;Iy&`t-?y5oylr+o+3C z^&Woz<0Mt0mA#nr8PC3Luk291qj$J}pAw9^CgrV1-8^yxe*Y%dMy022V@%K}*{{2s zaUg-hE{LR}^7`S!-#9ol^?D3(>O!-Skuf*bTh+_1x$l7qG(Y$=MD{#=L!t!ol+(jp zVd3Sr;xN^F-ej~6Lw5nz=jZ(e=jUx~?VPSqs_RIs22C!`7*^L`YPriv6SGR`^5_xQ z4);fg)QnuF%b7<`N>|BT;w;+ZWlZSyPbB_<{&?B`;7hXi^) zY*>-;W(lvfD2Va#@(PQL+-Uus>W5-~id;&{W^#JG`>ZlWj)u&5LsaTvoynh1nwwjN zpHb#v8DwXt<~l5F66WpVELV__=qP(V?C19#^>2&{A$qT7O zU%h%2OHoe59`}>d7b3qU2o&5!5^;wmGp-f`YN z+9PL?`6$=xC$!!sLq*k5eGJXyJsWnTO>5x6#l4ga5gLEYvp)RQ=ZGl#U<}Xp_jts` zz3{4^Ms{+y*xTT>(>y$)hX>WAq@+wtG=Bem2kEzzZFiWG!@^8?>GF18OdO`1wx-;l zAY}LctNkmMOf5yO*Pfo-VvTb9_@JCyx0W9Ik!6ZR-}go%WeU#yBoEA5E&h_>6 z->Up`Td3w&9f31Z|DbTMi)3~)b}=y?j*XxsX<%_-cl#LgM~e6<&FF`n%}QbEEY?*hlGYc zXlBS=78n{(De!_(OgWAMD=PwL&-ZWNSf^-eN=p;s<{e7XLPN7XJOqiBOrIRB{L=_@ zAmWm5xU`0!a#|J!dJm6B0Da(-`@Use=K>YTg9kStz^?Ltg1#NIW9>c!gr}pMK7XFJ zT8DK9f{Zvg+ADpJ$({567vC(c`mOdv$C>rSt8*n{-*2l&*{QZ!%`)6(JqI;(Dp65L(EW`F&mQYRkA zp77WNR|IJm3KR?yDYQx%UPEt(qgC4Yt+%zOnIQ9E(MYOJju%3Fu(0L{2q z_qV>Z6LamwIqw2Va~WyE{{ArF!{p`(;{h`s6JU%l9McayD?(Qxuc)|Myv+Xkn!siN>*+Bm-aR<4GjC)#} zMw#}_baC>H4ZwZ|dkNv9ZoIV_k7X>^c|U>xHUI?%|KlC%*=LUPOaj|x+L@(!?b;>+ zXAcOyPdxMq7o4IgDc;#DUmiSKk5 zo5hH}bfX~5+Sowa*vj}Car0E(bbWWXn;8=tX5sdnYy|Z;I#Y5EF^)SM_~4z%uRy-) z6;kfH`x7z({W`kckoc@E4vnoW-PPR#@;uyiiQU}XMuwT=y;b{&x2J76e_X>XXH(yY z;{EIQ$x`#BjY+#SYNp{xE=m@nepPgv_mv%wy71cfWM{`~bV9MF-yZL?I7i40`KlmM3UFzwsyN~qz3|BaI5>2O7XAqcdWHPtddfV`I(m9jj$j^WJBc`h8j9gG zrT@s%NU!CB);!{%W)^GyO@a2@*tt1+!sVX?r6ypH#5Z^nS5y=g-7vg;yQi-YuFrg# zS{Upo_?$wQV%DZnt;MetxJiXXvIoF#eW-M@M+xBj%(Nxtx)p>1Tv8c(^!TiLZcqr8 z3_ClNbog=cSzvvWX)#k%Td*XyZY`kOOyr>}baD~{lO6@r#fv`tLxT%bEEE(@z}DH> zgK@**t9{@jCCXoe`Gp0%0toH6Dq1=^xFWV^&bh?KdPa{>V*U|D(oMTEV{SgltL{d( z>3gbv)mWD8#$RN@pb-cEz`!HOcZ-cBkw_)}_He|O$Qwl&`{h;=TsJ1|)I@E@%>YFq z1b*XYk$XU4E<}zkudIW-gFFNn{V}(2Ok8^AFb@wV6wjZZR(N*-AXw;oUbtc`E*P&P zuUrrxh;iswJ7-yVEl-h|!JJ*nMqlmb`4fMPY3_s2Cn+gUEb5H3mDNmbXbC3FWj6&- z&LUS^{yYD^pK+cw-k|b=d8Dr|)-`=5`ClBE<6T$0Kd=JhLVN;-&BBDRWxtuVHLr%wmXU?q7PlTfHprFV+N)l4%NZ<95 zx<&9e%I3UiQtai2SYs$)V%@8MJhGqLb=vZvo2+3O+%c4tHqwfw-F|J5s%!ff0jbl( zgt4sn?@TJ)IU|aDV$0J5Di^-I13R?7A;-YEi{h@s%hJ=Xl6NeVl$CRx$J+X$YC(KX zvy8+bDi>_)+4P)tCkw~97%qOZnsf{2$%%`=Xi|-uHxXo}UQ9Ix#dy99I2ya^v%%qP zOQ|wkvOdZD%nL#ZHntL{D=I30fl9*4@koJxgzmi3S{Y5wrJW1Uo|7^D&T{|9SD!06 zY2Rtxzq(w|CHcyHeFYsMQRYR+o_z+o8)jk3In<2*HH&Yeu<^?UxOCQsoOw!$`K-0! z%$;9w&ZE7F?{*QyPA_@sGneDzJJFGriL+Ubs{d@uz6W9e`q<&_?o6kZF+4^m?{po% z=+Ktsb`#p{{5GdD;L*}DGLDY9>Xd-*&W6@@b>|w4ab}#J{@`P}2qpWB(^RC7CD+1-H^Gx|+tmb+f(qO~=53LCv`?yd4i8?k}@ z%9E$3(2>SnbTM2PAj)>9BM+H%{)$}3_U~sB5%-J|GJDJu^NRb(5$9#$r2<##^$+q( zO72eSbIvv(8H?{3b2A7KG?;Cnpp%htjUB6o_c(|)2e^vs2BtAXeN2C>pg^hP$}HB+ zyLXR~pMudd2s`=B(de5f$JFIN=%?o;)5AX7jm@{Tt)pslD&rHQi|SyzsH>@2PU*w+ zqkdTRB&XY9`^lSXSc=#zirs_x){QPK7j0||FkiAB^ycvw5y>R-niuB4cX@9&@jZLo zQ~YFKJoVP29hhbv=QlfhuKfI|>|?y6c227n+yRa2^OA-B+^ffX^;)vZD~{km^?@{W=sMpoB$e+nuT!cx29*9+%j2pTT*(64dT!38zgl7D!)Sqgd_lb=jD-) zP`HeB39{5mKVWC=Tx3{};xU3;JO%|c_M09gLLwsT#>ha$&l&IMY(`XZ(vf&>A1Qu7H4eHq~Hw?eXrH3tzrGXpAX( zHP$r8*d)Y-ORrcufPn!>CFwEx^FeM;o?zb(6t&;8)Ik3^6<$1GXdteHfsygqbDENd zLv}%u=95-uOPEC4>3;?u$qn~g={&shn1x{B%$&nhB_uSL(>h#~OtJW6%$F3~f8c1p z=jz~rKNNj|m$434aEm`&^`-?>YLa>sbqkr~Q|n2yT_-{B*#`0;!P?$?*x(P;p6xjy zAhEEEP>MV3UN+l8#+cQEudLkO!pyu&#QONsl|CoEqNia2IsHUOXQz80&6=}^i;GKe zu(Eo~%-Ywj>rO7sZMf5VaP}B{C7NpU9p~3F!QX&W^+cpf=dCC2Ov@_lGk&k%gvoYO z4V-LWh}1fWs9W^RT~2I278{&MWb2^f#Kt7%thW**m{)V#bow>xw2Jc#Bk=urwoK=3 z;!lkJD@N3M%cZ^lPt>KqGok(u?56+zTb8+5S^FP94qnbM08F)moqeWJ)2F*zx9J{O z4ItX$7pO91SzN^1wSr&7BMIjZ%j~74X>;{8qs@#A_$TAqeqLVtMd10)d+O9+Lo^#m zIdd`;x#K(u6a=WftBXVCN=l$P(}`S=lRJ2PTI2H?$4Mg>>>B7!7=wO^g594v;s z2K>r))?BL!D=fhl3b(|iLlaIiYHDg1E_6h3%uP%rCR#wQE@sf-y15pEx)P7T#on)X zrg#!C8njrPo_Mf9Dk>^6U}KP&?%0JuY`eaLbDXw)QENiwD^S!F-<}%ehqO~s;WiXO|-Nws4u76m~*LwC7(@j+5bmGef^mz zH~K$>8fkZmI=ggAZ?UZh!+`1RGUvWSq@5#;8l*j8CoR7;$q)p0ga5bj+3)6`a?t34 z_6>K|{li;9W&D#aS!)`i`bZ39LgSI|CzOa=Db_c?}j_)vT z;!g|-am3@Uw*1S0hY`LSjWIXQDJhlJIGY&s-PG3~>`gJL|JdGChWcoAxOwX0#Xjh@ z0|Ksqle3Y)z8@JKt!JA1yzFMo)x`38D`ODSV$WsX>0ZQEIKQ-kQUW8!0@o?fm!Pv2 zGWqoPnQvZhiW}TOI2fmdY&HIzzs9kwZrS^&b|8?@(mtw+x3Dl-PvB&8_wfl&ofB-K zWa#Ya@%5T%DlELNsAz;Y2qU8+9pkoP@8Gq{ANKwjLUtDJ0Rd-VfS!OJ{XY&m)z1F> zc{2fa;Jd_~bPW2Ev>yybTNybyI3bATefY3n8W{Alir z8d(fw#r?IRZW&xhkDe3~@?2rO8}>*xv^D#gv)02Roj`F8)k~8-OrktI>_i$}D`*@} z5bWXUWn$_{NO&3&!eE`q&-y$o%K?B5%J8@s6!1xf)g_cEqN3ShVXnv6VT*?rF(6>4 zwcCp%om$suZdso$H_dO{feNuBA04+{Upm;J)l6|`e_%l=&nMnf1ogS{L+9i8a(~vZgzA6xBpKFvpt$6#sH% zFePmVhr54ZpfXr|1M#_Nf0}t;Wfa6PH*Qqb)nz9oVawEm)?Q=>_!9B))|fH}k^aNb z2j)EFTaG!@+Vp@fv3qwO&%FSu-B1NiEX}h2<^szD;J0ykcyW%C<}?IK_R*Gfk=tK? zGxB-|c4T5ABk|`@=0!LS0gH&?MyEeVU!QUz1JTH`IjQq`91eUYjM`EfSF5w^sN@@4 zasn5bHkxnUwX4>6CnIAwfT zzI^@q@zbZ9@oK{_X6L-PWg)1~l2Zxl&)c3pp?50fGeKP1A?5mEo27B8w)j=6!L6_@!#rv!Cbh2C*CN z(V*KMP<}MhYyo4@65MRXq(feV$*V|?wqsQuFZrnS4H)39OW ze0uUfgP@6PHw{wfyNYgAmjVOEma;An6$DPV=32m%fLiwM<-?W3JCA^er`l$C8Z(h3mp$hizBDt~HmSL zr(d3~##;hkEAOXS`I{%o!Mzr%FfC7p@xjUzazjuvSXo(t#-CS4a90~Xh`|?EfW-y#@GW9QBg3!6!857(-4qY*5$=% z>*Mu-!t6Y)w*TM5rJ3Q}1~ z=3){q{`l^9sj1-@5bua~ExV~@OF@S8TnJ~3yQ(KQP`N@E4(+Rwf`UP=kl6o7a^@02 zsB!)!_G`oy#=U^u_Wa@^RP~tGXW5-tKSeEU!~d=E?hvSEs0zT^K5scj_@l+%%UL}> zHAPZYg=hr|WJ`73nDX3woUkGimNB)QJZcc~yKx5WF<){POY=4%n_WEYuCp$gm7S+&Vh_P@_U-i52Y23Y z+Tkb2#yUMqUv%}vRp(mq9Opo@%l7$K2(9?Hs)vHbNA~dWz#`@O$*X@A@NQ%DRK)QU zC!8&hrumB8HGx9Wlb4DT33zj`f+c&}_TS&_Bn#EW&|n+F*j}AwWM)o@i<6U^Zwx=) zqxi?Uh#lEVG($C%oPTXMv1ecb4w&KR9rTD_o@|sJgL(pOpJi$grQ2FCj%a2UmNDxm z6a=O&3g^ycxIg;qm|RW8D*0>8kay_}iiLkFN9JQfRR1YtaV%8MD0lHt`0HKa2TX{U zkiYoX560DXInyQm^DFO7C8GZMYK!at)3?m~sXoeo;6;kDG`H5s-+pkX%R)&pjV!Wrd;wA?7u3X^#t2V^jSPlLHzchDD+-bS#uHMppY&hUl8@T;BSGKUQaK8B%jSxIdzB>=>{rAU9es3I7 zA*uBE@Bq$VJh*l(DCENKLj%^1j#BMR!{i_x>|4$-3Lqo--Whg0*U%(p;$3=vOgYOcZ*! z_=%R|$fTb}E8@4Y9e(;{282n=@YKgW|G2i$#wZ#lrdSFIY3YZ@;&O80YtBv6qvm22 zbFjfa1>FHg@qNKKtiW!9>a1yx1A>d2M2R zcH}z3JdxUAYEey}*(&Yo3FR7^bAJtv&b&luAks;gr|9CUv zKl^Uz+02dJfVc%D)UdFgFYlz_jvsFZW(b}uWQSCjzTY&sO^kwgam@GYrIk&D-w|`Y z>0&KIT7mW5eiar(NY9AE?ZB4~_c@8(F&_$jB}ZP{j8KUsl^Z-)4!&^!+FP7ZkvJn^ z>EPq@I7a{PYwLc1Mtg;pk&&=v#39&jA&D`xTZeFaroh0&6m+zZk^p1@Yavz|*((jN zQJ0(YX`%rhYK)zkS&PkHdKQ_O)lIAh?47fj)Ia=E4jV0m12P&5-&L)I zS|*~UYSuvK#J9zLL8t0CTr&=CS3@Grl%f6sfy!$m50pP|-ej-2qVm%VnHpLXYFdfp z_@2CQ(?^Lkq|pI#>Q`O?=dX;7_j~^P-!7VMZ@jFkDk#*hs-_mFSJ5y~^uq)!>?L*T zJw9wErp|kPDrD+8$rrS{($0I2S4MjL1YCnPMV#;Sl$To#HRQ~9Rlu3C3yx`QY-4UQ zQutmic&L~2qh~k1KGf0iW#JhJM!Dk!vnYfZ3J@UKc!R`z^#S=(DUS}l+4Fh;MC%sU zA(bss)OdycuLlARHOYS~$v83KNlTlmdfCCcCMfki&t`m8eSx=cy5!l@A{}@4yIflp z5N8#;uq=I94MM;FS+$H!xCuyc|#L(~HFMJr&Q>bJOPHDPo5rJPZl zgC_O6r%KOP~C+j;L`ze4)tImr0I;=_rT7TToco zW@^@81!L#<6|- zNWV=t{03gm%x}TcYIB&XG7`KVwEES+Yw*39Mij5VwoxG{3*}gC|V40DbX}?%=|NSff+=axj z3e!{ei`hY>ptqHtVI0d=)SZ3>?@zQlAAZPhH)x|@^19xCSNb3P@k#F&ElCDt?y39A zO;5+o99T$P%j}OnD=Q1XkEO-M*|BzUK|$tvM%NP9&PUkJDaCGk^M+%&LihE;M7^ftO_{>t zyKCtyc@1Z!sA)a3kI!gdn;mcKUbBgrUDeE4S$b@kGf~&Yc1bFGE&bLy*aZ%ajVXs+ zLX6HZtjI@4gJ8J6Wbx~o2FCcmb*Fy;*Gb}(Rm*gHH0|> zV9h-baa?J%CE}*!=`gH_a3P%NV@%HNQ7gb=LxY12v6{}EEr{+uW!e8lCibaonHsm? zT&D8%MJ~H_hqRy5n?;o<4f?$Vl)9$e@Kk$ZuXpaOjOT@S&NR zA=p@RzHG``$YGF#Z-8>mOIo&^`7cuKWqk*#1IkiTb9bpaBkdtIH5DksKlWmMn}vax z>hBwNc@}kthA(<9kEF7+G9FR8WWN?GN$tA7C(?9H$6P0Cu3p?@c}|WDts3-ogs@yk z_E+BX&yv(-H_dZ?yp5FRtOZ@Sp+T_So%~^OUV`yYym%p+_5K>YdFdNn(&XJj%SmRz zqaB}oX`o9yf)D|_!z$j*G)<9B+! zKi@xpk4u*>TzEd*ANTt?w{tt!^9WN?l)}R%!$uGUPe%HQ3W8iwgs=Iq(Bc0mybX2) zp+aPyh^e`M+DvxSBW|DiW`1~Zqj(@@VdXQHal1j_crytOwk#)^*R$WxGTNj!+7j{Q zIIWDE$CU!#jN=Q0q7P!ksm`zHUHKbTH**-><5i=#z$-@l=k(W2*Mo!v^VA9RKNAxZ zd`KcOhFGEo8WzSNp%^~G$xn&#?JpMkD^4kVM0886r8BVCRw%!qM_6m7s!D^yOn$t2 z>xsI0r02<3hZby{a7q#1i)PM&>w)*ZQqHq2UHY%Lr;Qw5>NYygNFt#=byYz-QM{BswnzPJ3PqtegbDo$Z;url?(f?c>=FMRHyE&^{cuFj^xOIq zH49(m%=gj=()X#wDR#|fmI8@C@tzu&O7e+GT%#BCrX`efHal}a+MeaNAKf3bcQ56! zA4@pO8_KQXvSAz9%-ORE#HIXlm;7zp-v{|!$Bc}OTFH*A{0di*if4Q`khh82w`vdG zCu%2jwnkkIi^x}LRIPRtNcDSiJ>6&R`T`dN>+Q4sq5G=NmssD5^l$l?t8QHetL>_V z?at$^u~#&WaY~LnZGEs8UxI;XebJ6o_FWiwEqR)mXExbnC)CYx$e)q_Bu<(?8+%aV ze(-$@mZu>D;~6yhyw6sJunOsi;efGSJy13#wn;nk+a_ugJBj?R*;FZ2 zXDQWnDrth8@>k-LlY-b~J{U+S(kRzCQ1Zxj5&6A>Srr1IDmz z1cxPrwz@5LQ{C*&*|Owm!ZR|?Ke9>K*cO$S8!{8WNl!16icXoBnu@x2cV)%GP(_7+ z$f@r0=g`hfR&Dl$KRwsZPu--HIk^w)WM%347oz#gS@lnrT0%N~PMn2&&x{QWF0Pe^ ztTG6BsbZ^CEbpmNQ4421zU8+5)Wbt{Vc1`|;d_p}%I}|Yn#Juu+VZB~)*ludH1Ro( z&)e4dCa~GQiL4xniWK=I?6xyHgMo<783;9gWDi4LuVG%$K28fCa+OC!t)Cs1G=BW) zvPdf|*BmFSq9UN&5WX|3GKwDmjm2qxW&Pe%&Z)FkkVFj*I6n4&~F5Ty-fT zxhHG^Q)qH^nTu7|-utzfX4Vqs71I`ex-NI)!TB4{8xi8iuB!p3(f9iFzOWqpNxpoj zYhh=11Nl5)K`1lw`&NOfp-G{3>BiA&IZmTN5Yf?mA0~pZjBgM~T=5g~b{+m^|Tw&7yg5dHe+u1eFC#j#_xSM?Eo@|CPYU0P22dIgr zX3Lj#1XxTJj!S<;NOWq57@o!{#>!bZ%HXwV$X5R$rp+@?Q|f0_mCVU9wVx4uL zAw|i~#$w}aWi^_uaC%R~SJ-8Zl!Jo|`PLm_W+pjPv$q|DQ<@=(m#)H=e38p45Gkq7 zv{R&ebKCtY9eEFew^3hIKM+9NLM<(Z-Mcd&{Y1G!^;%QVoNu+m>EAx7$c^#F8xm)Jhx+U79784I=?PDFRL>&qTJ8syF?V@Z_?dc_yDQw1)0KvS&yAqdulRe8EqPcb)87OAER}@qd1a5MS*g)H z2!b}Rtip~^331fbrhC_<9ZYmYl>p>Jr=l)a`XGEz8+v?^2hl!q73jwdDyM}xVtu)D=X zof_vhA{r*qP8bq}AQY`{zFr(WST$ph@g(8lF{fzXn)Az7``wp%xu9fc*UQB<_~VBf zMZ2mBdysfoT^$GG<>+)B+!$hhxq6?*T3W{(H-MY-v{~S@KALySTQN?pHHS zjh>zLix&ZtF1u{*1&ZzaJ9et7G!0~Ka%pOGg6==O;!9WwauWvH>nf|NfAdDAhZd9* zy-Amfk`hvs9aUu8G{)Ow8`r45v%WSYPcHmifGo_ChAe<;IsLNDp}xM1{jWxSKK;PT z1MkVI`&hpRyTBS-)hF?Op+>+c_z>vEqN(2>t7c|#Hs{4U!C#8^Sp1Xqg;EiMf3F+S{6 z2mJi8S>J(CK^^_h_qw-e1{(5`LQ~-nGch)9%l`if#xF~Yy6c5PjI!F=%p%y2ZjZa` zVDG*k7nxJM<-~s_;0v?NSckDubAIm8SQrx%h6#22`u2?5W&Kw+jtn+ZXK-u_>{g?w>=0I&^`M`Nij1#fq;8JUdPLD;^Y6tPT>$gQkhZZeTXjLB zo+i_UetJ&i6BSci+dTe?($YUW*y{x!jquUk9=d;A=KqptClRkv`)5w-`t*;oZY}qM zQ43`fqovo<555N8eEh;_)$a;|g%dT{aQk4NSm`Gh`*n=;vw-jRW0JY_qcxAK+-~}5 zn&+4nG?o+>lim+wBc@CQe-v+9BMS2B`AVV2wjmX~em zzc#YJbw99?s(RcMY!t|tX^dlj)$FggwvYrmY%xb+k+O z_QHSs&VToAx1&R3)>s;vQ zW10(4joeDSL-3<_G&{2b7y0&!m-DC6ehO!0^_sK%E2YKfms=);?P=~FQ0tY_9c4qp;#7M!D30V z7i`1#GzMHViH-4yXwl00&)L*7KY_2S7q{fh4M;aTEee(+U zKuG5SPYh;RQvYP2w))1;y7hPQ^NDWp2KtXG4yc~p;zea@#wU%b{j_A^+Z5@;6*NFg zwwo0bYcy;_Clcb9{qdkFGcmA-;kj)s6f^le}J$E2jXTHc#DXB)p_X+KjY$p7hZ_^iZ$ zX+jp1eV}36-tC$2!pw|B&>JgA{7!#PJWacpVLCs5L)?1DMCs}^UGgNIAn`}>%nn(u zZ#v^`UMnXKR`EZ~E_tTfbpD@mj_P-NMOegMG|}J5Z=&z)@C`G1uS^rH!tlQL?v&f# z@eAeOsy^?)d$rkB?WPY6gJBP+s6!C;b2@YcAN^2HXd<8C!Cd9dC?(R7tX_M{QSC%U zE9+bI&kQIy%%q<`PmPF}uBfmX`k6;0&*;)O#+IYQ`ZB(EW&K*dL?+cOHHBT-zrHa1$o~_`{mIZIZd^(;T7gZpBT9>=Ja#rxI+=yL@jWRil<5LY?6ccu0-SR zlON3TZ#=x}fj%{AB8xY41KA#QWATvnDZf=yf3Vou1=fg+yU+ma0`XVL6Z942 z=XLM@EavmWSjPK|C@fQFx#E+eAE&Sv%>Y$zc%z5f>4dSKTJH9pe1YEb#otkzc{^U5 zgG-JcKg0KvlYGB1j33Ksstj@9^4dFhk9ZjRIvh5)tTdH0=6pwGuhy&Qy!g3PDYAL) zau8v8KQ-E8cYh+VJ?w;VWMH)jJ#FQ0gA_r5rc&N`*YsFO)ZH;fk3O7|!0hrO#qibj zA+_qc&Zgd^$Nx+w^MSE&ac8pMGO*q?$Ct;9ysf*iU;dX!63#qvGaa$9Ix-ymt zzMZupRoT1w=LItCN*bucpMEtj z^eZVM`sFTGj-ssHHI_|doUlDA{CDaiHfkb;`Neij3RHMOl1b=8jo*SqsVF&kqvjgV zUvAGg646KH7Jo2k@{R6e%@fcKM_bBKW!`;RZSeD;+20ZeLDZKlWVknb?WjT)C^Ajc zPAVt{ZTjt0N!P@vdfra!8Q2y7adpPO6T!Jhd4`=*EF->3ikhEw->?zMkE2lim|D(&9?ep$Nw|L2z-psV+`|IH4iXQ;YrwfwTrRMm`eCm%aHJJSX%CKQU=a)R_8g}_Z}^ipDDhlX`H zDJLr|W6!Ct&V~fPnw@kPo#MWkC?=qir}lZr`i@$Ddf5A8()&|i^D2*i_)Bu&)#yQ9 z?Cn`wJx#o_y1Ke8%!z4{)pljF%A?D|GgEoA^TUuFpSHRWA)6)}bn(F%C*DqRy4|S_p z^uB&kF3>79ZatjyvlnffnDF@hBdpGK(@Ky_m@lFTS=f=jy zp`2&&(zGHMM;T~rww&y18_#f^v9JO*CM&}wGgjA4{MpiGcbB?URa9L6POmO3lpD9c z$&!oLP*WqdjWv7f;IQL1=QB3nYD_v>Z9iA6U#Fw1OM|7Np>eSNtA+kq3a9&11@vS^ z!#dZZwJ-JcXTy1_zkdB{I@=Ae9p9KJpP89a4>>+QZn`*Gzoxpo@LDnFSt4iW*q9~@ zNve?72WR)>2ns&Jrvpuw7pD^WWAzDK*04dNzgj|sgoModQqC8mMX)gf-oC}hZ5b`n zZU6Q1Pj>>WcK2XY*XKJoH}~n`R$q5Fr(R4W`)yW(Pbn$B8{=%|=F5Cef9gHWUyF;Xw=TE-qY%f8R2tpu3W;d&k@Rq`~?P zp6aJ+a1PlDNmVZEqu;-a(-hbp^jlQ;o}bLry5O8$(oFp6N#Zj3)0av~PJX&J!mKU} zXAUQTI^Ak2P>j&yFD@t3d%yEJpH;kV=8zyBoYQTFvKsTlt4 z+wt@B&nYP>XtmKMr7jRq* z6{Vu8d=nLQ0~fb2KcC-qWBjYb!u0g??%tl?=_XH}nk@DwAurd(ju@do%J4RPF1Z5y@z9Yl@t4+<@I%< z*I<~qtUrDFWY(9`;B)HwO7yd88SFghEu~h28E&xAg9i^ZOAO*VP4e>cva+(GqM}Ad zMrP{V49m?TwOB~PTiv#1H>aw%rmF2-uw&B16MGdN9`2f(!zzG$o0vG>UmYS0d)?i;5@Gw{f{BXCi;kG&3TvQ+Z;e>`Sk zW|q@Os+3jJ`c~oDK0MUb)6?q+?eT{gh=CZOCJftm!Ls4@g1wW9zIRu|w;ru>U8^8R ziNSSq^69Ju1UJPEshr}6c(^SPX@`rQu_a9x{KCS%zrF{VnVBI7S!A{ngGQlNOj1&T z!x20})Lj7;24cj&u1?@h`l7_tN46L4g0o>n^q6>L6|k2)U(7j`lTTZP?>=R}!lX=&-s&JL``eyXad3O9i2{{8zhGBS7W+##Y@9Og|*O>J`9GHBtz zdx%dL8)oFvBro8;J?~~kA>^s1i&>={`?+s*w%#M7v8?O=oi=1Vsfe#P#Gj>Qo>Ap` z`8*ftVg%UQHf*!BnA1JofL%%@Jhy zCJr|CYwNvkM9ohHaU57eO*^g z4FiFye1G{;<`uJM@jNf&lgHuT8M~R<2Cu{3Z*kdKS$VyL7!KzrE{Le4WbmscI!H+b zk&~12QT-lH@{rn8+6R^!W;>+!rLywj!-wiZ6HPv+A6kA<@HxKrUdUMZ^dZXq*mje1dg2S>^~hbG>dW&bM*rmQqgxfK!b!9u`rP5>tj)CQP8{*8L++zk^e1KA`$7BcuqkgUPeF-7Qk*o1t4;dLj5qI|X zXqN3A9UVKA3cq~m9~~VP)px8BWM(da{LX)Bug2sum?`7y>kDp>g`^<6AMPbo{foC) zR?SCN9{)8{1rsZ)rXfd8iR*|qD&#s!KsQh^ng8Eex3|+je*Cu8SY1QI3QJ2%Yh%3h zN@I{(ni|sxy%;0$o2I6wkdTmC`ME})D_5>SU8pYmcd=szmUtkM(o}3jB50Jk9SRX)tsH3LvGyFskTc_NojOgkYtac zSjCG6C9i>R9>oiI?3%<#@BePap(%$jcp6U9`r`*J9o^*AR9_-jK}E&>M7epJUgZ;N zKIfIUC*>N-$^*@T*H)ctnS!@bsAP6iS$X+xD9D{?8(@2q`CW7Xt%EG8sH&=a{PMj@ z<_x7%K%fp54H5`tN?^YH%a_oosL_NmK#3Hn|97ILySt8ftfOI)e&Xo^_f1SpT&GYu#4Injl;PS$&rwI##J|VPZKeM{BctVyPy&$9Ysk^*sZ-4~2>8h8=*jVMS|4(EZQ=(gtlxdBQM&cfWdQE@jF?;20ZIAM?ISw~&>U_4MR_lkQk^20lz7&!_x3 z_*r>64tDl;-lD(vj^P$I+)1B^cXoH7e)Q9Ko0WrrrV9JWrW6$wfuy!L=)G`NFiddf zpMmKnJ-yVw_97tUCZ+58=tC~9k&X@UH((f={3sD6C8cfHx87s{a-y{~hFYT*%#r&O zxAW4kA>Y6dyrl5k`_lsnBW=Dl*Cc|>pP<$uwGt8%UcTu-U?nLjDc5e^1Cz50T0n{$ z+_nL=Z>{S+R04pETWX!x_{Jp_LVx*w2KuTfN>6qk)_X%NPp!&o#Om*KO(udoZ;!fb zJz5Akq+BB2UShgp0*SIYSvmF9fhJD&K~6FrE2rJ{#l^*s2?(DW>cUMimUI)lha1Nau1-QjT(2Lc&D6p|8jKXc0)+#>PgC)AGLp zGu%8oo6=*Jl$2CHVFOEnYq!Cv>q(jtEiJA0PAd$5^}%AocKkDNAUh+J^BoLt!K^2+ z2Tf~8pJkiC6LX<^C}!vxachgx6eVaa`|BGATc&NkHb&Zz90vNAKj zU{4V8+?SS?_!WpC;_Pt7>-L=b3Fiw}Qk8pxBd<@mmcu#7H|!YzDL=2+`Mn?*c6S zycHv@wp@4*nO_~sfgDp;DBeBxz7ZmkF#y}c;d8RDki@;Tye#$fsSj#IlRY6~+V+XL z{#}0Omu_w%zGq+c9z{n*rEuF$f+c+S?j0NyH8u4U>VfmqL$I2bi%avoDKRmnb~F6g zL5`?3bw{sIh_Id{o)Wzpl{#1Ar|0MA$KJxJeV3>)LkS6qz`($+pFeNh<io zVjiiSAqnjfDv}g@IM{<~*G(N>JbN-5ZUF`cEaZ#j5FPsie*P24!JKEQH}LTEn|yuL z)khLI%sXm4e7?i_6S!@4q@|^yacuNCbyjr0f;fL*Bndy??(Y)*<=E(`s<_)xVhmm*m{K*E&%0|zx5~CwWzr(W@(E{&ts3d(5 z_4KTj+&{P=$2mPYQT+H=?A*t~-QE44bJXq&$uV-1`yfs05?rtMD1KV=rd?X0ICTu{ z&+`2>!>^ZVw;M#rYwtmaJgEf_(akr=+^ z4+{&sj*WeCFl7%}=0Ksz6jxJILnfdmL4|iUYN1WUr#aPz4Je>ZrtiHff+tsa3vzBp zY71Sv7V<#u19WYp6<1B1`F%iMSq&Qnpw3Byjlprx6aqm7>UN6}Eey?^Mw66iugAlEq4i1NEtSGW^K`Il7u!! z|DnSChjDm#sWE4kNU>x=z z?D`)JOC@A@!=BKcJ&F!Xqe{hvE-GBgde{Gj`T5@&0le$nNkX7DAafvgIbh!I*l!lR z0s~}FMT(EFq@$x#Vu;3lzw26Xr->bqJxHxB!}p3At3TS>%)m3|8y+k=)^KrgEpA~6 z@bLjZBEa~yxX20jyjj)yoG5+B?(%dF$T3GJWvzPil4HyF@3>R1J57r9YIdOm!z)># z57;?O;|6HKVb+ax{rW0Irm`|YO(|cbBo177c$-5x(ON7Tn`j1e&bIq9Yicb=8*Tej zTQ44j8bwq;1WHqG){`vYMy5>@%D7@9<)gR^z{h5y3<~FLom-#(M{cq^E+>s>(USNk zrw9LP%?akt@87>`d2|za>wjhF&pfe3C= zS5rff#>t-u;QsX((GkJniN8*Vjpd z&yN{mUsOsP|R5?JOr;4{w-t??V$h?xO?*R7QYo*1_sf$k|;Ey4V`9uBpB!G7|re&%wc=#IQ*t z>*(aDLMYoBL#sB#W|k&0oVyie5kOb{WVca zH=ho)!(O;=f3B)JSn7%g?g0P>2#;>1Ra{oq5EG(d+G=2y902`o1FRiNjv*QjueuxqSG}WUcQ8|fL=P!FrznIMTDG?5TZlHz~CQ|C@f@& z{Bes}!-6yte8VSR2WX+<;^Jr|BR+!bwz08Us8sIy(bcu?<6Cw!9lhnt;Nal;SV@;j z8F0JzA3iwpeo9Ov^Ygnzt&hpkz5~Vtp#&jv3WSG~tjJ(>a%44jI4}4gvpMxTn1Y5E zK^~Jvn09@T$r|kFkoFOHY4jh?E!Cp9eOn6u^+_H9jikGmS9q&24YTciV0ZT=f=Ms5 zb>W4Q1P&lOYxpf+Ha2Wr(7+%D3Fi=nJ%N7H&DE8ThI>H(Ei!`N$B>0&ea`}N-}`7A zx`t>l-u{y=g(EEvg2KWn-p4EO{PXkQ7Ix&T26B3#Vg`x-f`Eq5iZc4gKV#p$(DIT{j4C66YiwDWMrNz{b`lfW3se_z~WFWh(A!dd(pRV-Qt2`7)j0pR+vXn@C<~8 zg+y+od$N^;ghbeL-(r7d0C3Uvd^6NuOauxApy?D|2jh`^^{ZE}=9{%Wh6?WqtuVAp zaPARNQ5OIPt_Q3P<=kWx%~H|V*B^sMABZGK{PEFI?jt4h%{BAo?u1xqwj7s!uB@zp zxN#)NqkaJVuqN+mYs)SyEG#P{M7DpohC?@~0Od2sBmSW-3BkY1$l7{}YI8&nAOZzI z8Y@cSXV0F&q;F$GK1<~kwSF5o4BR(+WP1owpF+S@o-P&*VR`s)b93|9yD=jp0|Ytj zNoF@7j!((SXb4JSOfof7kt?F_;^Mq2K7K6yX*g^#At50NtHH+RX3@hyst$mKKt5nM zMJ~^rBFo{~|Ka8K`j=TU(628Fn+Nm3aUEKn9WSR&{!3E~AI13ic&XkZGLj)ln*XII zIJX9XIRDX@$dgK3a`Ghm#^d1T=V#!mUhew;7#b?CtxfbUPx<)qXu>?T(sBrnmj^50 zWzF=PH*WxHTA4IIE`%6`eSkgB7+M9_?d0Z`D&i-M%pYt{y?XTuton%dM)+;kVuOZS z*a!e*AQZ8YOeEou*ilrWpjcWg2mAZ9)?)aJ$9v0&Kk%@VqocR4E(5&>yU>P*h=L~H6gi`clZ6IMJ&Z}lMOID@tOA(IBX8d( z-*X`L&~p`y6lhw@fuj!heg$59^3Wo|>}pa^_J9R+Xp@tZ@D6Hg>k`BrCs|K(^Q(G1 zI1Hd1-t*tk+}sW!CMZE5p`Td{Ps<)XAHr<;0-y;M7*psMgGC@4DgZSgR)0J5Cyufn@CmX`m6EG{R7 zM*o8>wOg@_llLINHh=$iTpMP*cI}$FWU@Nxtu??Gc2iY70|O4w&QixnFNe+!ekm(+ zba0rcbz$~^7vp-3OF{l_Pzr+^>W2%09}YU7>^d^PvZAG;0+e6~b`)?JENFUKkDYj7 z@7RPPyIczq1+EOW84w6qU8$6Gl|0akLlo*3c93zY){MUT)<$OuC>Dko6;}F*Ar=1H zONhz3+FG(k22}al70lyCQ5t1(;2^+*K@dp7K|H~HN#!%ecR4va4nJ7#O_pmc|56rk zDgZAiN4Jx+n}ovKF0xsGr@;6fZq4PW|6 z$y}BBqBAgk1vo1_YDX(3dxCre4_x&27bn@8YHGQk!YNi!;2ts>CluDJ3!ofO@TJc> zz*;DUy+11E6c}SsQl`qp(!q>`i;XQtui_pN(GWCfFm5occPF@kj|l?T0tzx!Vaf4w zUKED-@m*XPEG#UK3>ypg@WPnHl*|DU5tnzpCGD)T+} z97#(^xFd$Y_N$}TWgRP^qpNGG^u@K~Uuv)P?Loopb-n(}XnywU1 z%R$zrGx3}uF0(lTj07RCs>D6IO-+}v^v@#Lq@148#R8v? z|L_4Ol0Uncf94P@uS z&h*TTt&I(AGK5TreU1wWGhvu8(3T%Ren5M;)p+`dk1qlD-DBL00SjDA8Y-&K2ATxK z#KgC5nL z!IT-?1N05gK0Z#Xtv!LSc*rAKF|sH z5%3DhEEU5hUxnVr+%h-}K#yRm>fE*zleiyJQ>TCa{Es@o06R;bj;1LWMp2WkRrYhU zJw2O1;Q=QOX33?crHP#Ht2#QC<>V|wmjpxYmXMop54*(&_!uz>2{oQ5E9@Xba&kG} z@i=gVU?I$U$TlaHi8tZnKsNyCg7JY#iewapHh9nd73EzA)i^C>nGrNTdO**3sRqc9)-zFOpKkK%a_%AvZTy+J^=c;4(xX zm``i(m)G)$NW!_ma)0J_a0EO`&SMAtGB+))Nlzjd3>^W=Y8HhR+t+gQKS1RfnH;qJ zt?slHmhQl77*Xxu!NkV{e&Q~8?~W4)qQm$Xqx`2_k!UsJy^QmI?kUYth21w71#DkZvIXxFKpyO)abEITa*L?U<_=pvNam2l3SiNxkTxU<65m-b zY0AF=c+d+po#d-|5}Vs+E5nA%^DRGU83L>P8}HQdo5HM{xF>@i#u996<+#!k4$uz( zW9VPq2SXi;_BA>AZlvVUaamIWo6&cS$Vk7J6k{v%8bvx;F><=uSp=k{xswdn{=E;u zY0#rr=W2Vj{R@yw*3haf3{%w_LGS?4QR=Bmhx=1uq3H2i&YZA=e=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@prisma/adapter-mariadb": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.8.0.tgz", + "integrity": "sha512-mWsgcfbUjxB3qSzRlLs8E03vsKrqXzYK2zpx3e8u6wIgeHJM/sE46cuOGcYvHiZGmeQLCd3xL6YSSGM9QOLI6w==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/driver-adapter-utils": "7.8.0", + "mariadb": "3.4.5" + } + }, + "node_modules/@prisma/client": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.8.0.tgz", + "integrity": "sha512-HFp3Dawv/3sU3JtlPha90IB+48lS7zHiH4LKZPjmcE8YH5P9DOXGPvo8dqOtO7MqLDd1p2hOWMcFlRT1DMblHw==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/client-runtime-utils": "7.8.0" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@prisma/client-runtime-utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.8.0.tgz", + "integrity": "sha512-5NQZztQ0oY/ADFkmd9gPuweH5A1/CCY8YQPorLLO0Mu6a87mY5gsnDkzmFmIHs9NFaLnZojzgddFVN4RpKYrdw==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/config": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.8.0.tgz", + "integrity": "sha512-HFESzd9rx2ZQxlK+TL7tu1HPvCqrHiL6LCxYykI2c34mvaUuIVVl3lYuicJD/MNnzgPnyeBEMlK4WTomJCV5jw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "c12": "3.3.4", + "deepmerge-ts": "7.1.5", + "effect": "3.20.0", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/debug": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.8.0.tgz", + "integrity": "sha512-p+QZReysDUqXC+mk17q9a+Y/qzh4c2KYliDK30buYUyfrGeTGSyfmc0AIrJRhZJrLHhRiJa9Au/J72h3C+szvA==", + "license": "Apache-2.0" + }, + "node_modules/@prisma/dev": { + "version": "0.24.3", + "resolved": "https://registry.npmjs.org/@prisma/dev/-/dev-0.24.3.tgz", + "integrity": "sha512-ffHlQuKXZiaDt9Go0OnCTdJZrHxK0k7omJKNV86/VjpsXu5EIHZLK0T7JSWgvNlJwh56kW9JFu9v0qJciFzepg==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "@electric-sql/pglite": "0.4.1", + "@electric-sql/pglite-socket": "0.1.1", + "@electric-sql/pglite-tools": "0.3.1", + "@hono/node-server": "1.19.11", + "@prisma/get-platform": "7.2.0", + "@prisma/query-plan-executor": "7.2.0", + "@prisma/streams-local": "0.1.2", + "foreground-child": "3.3.1", + "get-port-please": "3.2.0", + "hono": "^4.12.8", + "http-status-codes": "2.3.0", + "pathe": "2.0.3", + "proper-lockfile": "4.1.2", + "remeda": "2.33.4", + "std-env": "3.10.0", + "valibot": "1.2.0", + "zeptomatch": "2.1.0" + } + }, + "node_modules/@prisma/driver-adapter-utils": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.8.0.tgz", + "integrity": "sha512-/Q13o0ZT0rjc1Xk0Q9KhZYwuq2EW/vSbWUBKfgEKkaCuB/Sg6bqnjmTZqC5cD4d6y1vfFAEwBRzfzoSMIVJ55A==", + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.8.0" + } + }, + "node_modules/@prisma/engines": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.8.0.tgz", + "integrity": "sha512-jx3rCnNNrt5uzbkKlegtQ2GZHxSlihMCzutgT/BP6UIDF1r9tDI39hV/0T/cHZgzJ3ELbuQPXlVZy+Y1n0pcgw==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.8.0", + "@prisma/engines-version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a", + "@prisma/fetch-engine": "7.8.0", + "@prisma/get-platform": "7.8.0" + } + }, + "node_modules/@prisma/engines-version": { + "version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a.tgz", + "integrity": "sha512-fJPQxCkLgA5EayWaW8eArgCvjJ+N+Kz3VyeNKMEeYiQC4alNkxRKFVAGxv/ZUzuJISKqdw+zGeDbS6mn6RCPOA==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.8.0.tgz", + "integrity": "sha512-WlxgRGnolL8VH2EmkH1R/DkKNr/mVdS3G2h42IZFFZ3eUrH9OT6t73kIOSlkkrv50wG123Iq8d96ufv5LlZktw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.8.0" + } + }, + "node_modules/@prisma/fetch-engine": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.8.0.tgz", + "integrity": "sha512-gwB0Euiz/DDRyxFRpLXYlK3RfaZUj1c5dAYMuhZYfApg7arknJlcb9bIsOHDppJmbqYaVA+yBIiFMDBfprsNPQ==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.8.0", + "@prisma/engines-version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a", + "@prisma/get-platform": "7.8.0" + } + }, + "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.8.0.tgz", + "integrity": "sha512-WlxgRGnolL8VH2EmkH1R/DkKNr/mVdS3G2h42IZFFZ3eUrH9OT6t73kIOSlkkrv50wG123Iq8d96ufv5LlZktw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.8.0" + } + }, + "node_modules/@prisma/get-platform": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.2.0.tgz", + "integrity": "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "7.2.0" + } + }, + "node_modules/@prisma/get-platform/node_modules/@prisma/debug": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.2.0.tgz", + "integrity": "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/query-plan-executor": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@prisma/query-plan-executor/-/query-plan-executor-7.2.0.tgz", + "integrity": "sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/streams-local": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@prisma/streams-local/-/streams-local-0.1.2.tgz", + "integrity": "sha512-l49yTxKKF2odFxaAXTmwmkBKL3+bVQ1tFOooGifu4xkdb9NMNLxHj27XAhTylWZod8I+ISGM5erU1xcl/oBCtg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "better-result": "^2.7.0", + "env-paths": "^3.0.0", + "proper-lockfile": "^4.1.2" + }, + "engines": { + "bun": ">=1.3.6", + "node": ">=22.0.0" + } + }, + "node_modules/@prisma/studio-core": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.27.3.tgz", + "integrity": "sha512-AADjNFPdsrglxHQVTmHFqv6DuKQZ5WY4p5/gVFY017twvNrSwpLJ9lqUbYYxEu2W7nbvVxTZA8deJ8LseNALsw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@radix-ui/react-toggle": "1.1.10", + "chart.js": "4.5.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0", + "pnpm": "8" + }, + "peerDependencies": { + "@types/react": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "devOptional": true, + "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-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "devOptional": true, + "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/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "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-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "devOptional": true, + "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/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.2.tgz", + "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/better-result": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/better-result/-/better-result-2.9.2.tgz", + "integrity": "sha512-WIFoBPCdnTOdk9inkE1ZRvCZ4P0CpSkAiLlchC65N7n9DcjZ3NhqkBOlafzpOVnO8ixyi37kicmSJ3ENhPZl7Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/c12": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz", + "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "confbox": "^0.2.4", + "defu": "^6.1.6", + "dotenv": "^17.3.1", + "exsolve": "^1.0.8", + "giget": "^3.2.0", + "jiti": "^2.6.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "rc9": "^3.0.1" + }, + "peerDependencies": { + "magicast": "*" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/c12/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/c12/node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chart.js": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz", + "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "devOptional": 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://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "devOptional": true, + "license": "MIT", + "peer": true + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/effect": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.20.0.tgz", + "integrity": "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/fast-check": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", + "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT", + "dependencies": { + "pure-rand": "^6.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "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://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port-please": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.2.0.tgz", + "integrity": "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-tsconfig": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/giget": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz", + "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==", + "devOptional": true, + "license": "MIT", + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/grammex": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/grammex/-/grammex-3.1.12.tgz", + "integrity": "sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/graphmatch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/graphmatch/-/graphmatch-1.1.1.tgz", + "integrity": "sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.12.18", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz", + "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-status-codes": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz", + "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/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/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lru.min": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", + "devOptional": true, + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/mariadb": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.4.5.tgz", + "integrity": "sha512-gThTYkhIS5rRqkVr+Y0cIdzr+GRqJ9sA2Q34e0yzmyhMCwyApf3OKAC1jnF23aSlIOqJuyaUFUcj7O1qZslmmQ==", + "license": "LGPL-2.1-or-later", + "dependencies": { + "@types/geojson": "^7946.0.16", + "@types/node": "^24.0.13", + "denque": "^2.1.0", + "iconv-lite": "^0.6.3", + "lru-cache": "^10.4.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/mariadb/node_modules/@types/node": { + "version": "24.12.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.3.tgz", + "integrity": "sha512-8oljBDGun9cIsZRJR6fkihn0TSXJI0UDOOhncYaERq6M0JMDoPLxyscwruJcb4GKS6dvK/d8xebYBg27h/duaQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/mariadb/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mariadb/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mysql2": { + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.15.3.tgz", + "integrity": "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.0", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", + "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^10.2.1", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz", + "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.4", + "exsolve": "^1.0.8", + "pathe": "^2.0.3" + } + }, + "node_modules/postgres": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/postgres/-/postgres-3.4.7.tgz", + "integrity": "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==", + "devOptional": true, + "license": "Unlicense", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/porsager" + } + }, + "node_modules/prisma": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.8.0.tgz", + "integrity": "sha512-yfN4yrw7HV9kEJhoy1+jgah0jafEIQsf7uWouSsM8MvJtlubsk+kM7AIBWZ8+GJl74Yj3c+nbYqBkMOxtsZ3Lw==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/config": "7.8.0", + "@prisma/dev": "0.24.3", + "@prisma/engines": "7.8.0", + "@prisma/studio-core": "0.27.3", + "mysql2": "3.15.3", + "postgres": "3.4.7" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24.0" + }, + "peerDependencies": { + "better-sqlite3": ">=9.0.0", + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rc9": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.0.1.tgz", + "integrity": "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.6", + "destr": "^2.0.5" + } + }, + "node_modules/react": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", + "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "devOptional": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", + "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", + "devOptional": true, + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/remeda": { + "version": "2.33.4", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.33.4.tgz", + "integrity": "sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ==", + "devOptional": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/remeda" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "devOptional": true, + "license": "MIT", + "peer": true + }, + "node_modules/semver": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", + "devOptional": true + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/valibot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.2.0.tgz", + "integrity": "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/zeptomatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/zeptomatch/-/zeptomatch-2.1.0.tgz", + "integrity": "sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "grammex": "^3.1.11", + "graphmatch": "^1.1.0" + } + } + } +} diff --git a/root/week06/server/package.json b/root/week06/server/package.json new file mode 100644 index 0000000..cd90cf0 --- /dev/null +++ b/root/week06/server/package.json @@ -0,0 +1,28 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "nodemon --exec tsx src/index.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "dependencies": { + "@prisma/adapter-mariadb": "^7.8.0", + "@prisma/client": "^7.8.0", + "dotenv": "^17.4.2", + "express": "^5.2.1" + }, + "devDependencies": { + "@types/express": "^5.0.6", + "@types/node": "^25.6.2", + "nodemon": "^3.1.14", + "prisma": "^7.8.0", + "tsx": "^4.21.0", + "typescript": "^6.0.3" + } +} diff --git a/root/week06/server/prisma.config.ts b/root/week06/server/prisma.config.ts new file mode 100644 index 0000000..831a20f --- /dev/null +++ b/root/week06/server/prisma.config.ts @@ -0,0 +1,14 @@ +// This file was generated by Prisma, and assumes you have installed the following: +// npm install --save-dev prisma dotenv +import "dotenv/config"; +import { defineConfig } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + migrations: { + path: "prisma/migrations", + }, + datasource: { + url: process.env["DATABASE_URL"], + }, +}); diff --git a/root/week06/server/prisma/migrations/20260509132658_init/migration.sql b/root/week06/server/prisma/migrations/20260509132658_init/migration.sql new file mode 100644 index 0000000..ba50e7e --- /dev/null +++ b/root/week06/server/prisma/migrations/20260509132658_init/migration.sql @@ -0,0 +1,111 @@ +-- CreateTable +CREATE TABLE `users` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `email` VARCHAR(191) NOT NULL, + `password` VARCHAR(191) NOT NULL, + `nickname` VARCHAR(191) NOT NULL, + `is_deleted` BOOLEAN NOT NULL DEFAULT false, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updated_at` DATETIME(3) NOT NULL, + + UNIQUE INDEX `users_email_key`(`email`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `user_preferences` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `user_id` INTEGER NOT NULL, + `category` VARCHAR(191) NOT NULL, + + UNIQUE INDEX `user_preferences_user_id_key`(`user_id`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `regions` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `name` VARCHAR(191) NOT NULL, + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `stores` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `region_id` INTEGER NOT NULL, + `name` VARCHAR(191) NOT NULL, + `address` VARCHAR(191) NOT NULL, + `category` VARCHAR(191) NOT NULL, + `description` VARCHAR(191) NULL, + `image_url` VARCHAR(191) NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `missions` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `store_id` INTEGER NOT NULL, + `region_id` INTEGER NOT NULL, + `title` VARCHAR(191) NOT NULL, + `description` VARCHAR(191) NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `user_missions` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `user_id` INTEGER NOT NULL, + `mission_id` INTEGER NOT NULL, + `status` ENUM('IN_PROGRESS', 'COMPLETED') NOT NULL DEFAULT 'IN_PROGRESS', + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + `updated_at` DATETIME(3) NOT NULL, + + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `reviews` ( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `store_id` INTEGER NOT NULL, + `user_id` INTEGER NOT NULL, + `user_mission_id` INTEGER NOT NULL, + `rating` INTEGER NOT NULL, + `content` VARCHAR(191) NULL, + `image_url` VARCHAR(191) NULL, + `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + + UNIQUE INDEX `reviews_user_mission_id_key`(`user_mission_id`), + PRIMARY KEY (`id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- AddForeignKey +ALTER TABLE `user_preferences` ADD CONSTRAINT `user_preferences_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `stores` ADD CONSTRAINT `stores_region_id_fkey` FOREIGN KEY (`region_id`) REFERENCES `regions`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `missions` ADD CONSTRAINT `missions_store_id_fkey` FOREIGN KEY (`store_id`) REFERENCES `stores`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `missions` ADD CONSTRAINT `missions_region_id_fkey` FOREIGN KEY (`region_id`) REFERENCES `regions`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `user_missions` ADD CONSTRAINT `user_missions_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `user_missions` ADD CONSTRAINT `user_missions_mission_id_fkey` FOREIGN KEY (`mission_id`) REFERENCES `missions`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `reviews` ADD CONSTRAINT `reviews_store_id_fkey` FOREIGN KEY (`store_id`) REFERENCES `stores`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `reviews` ADD CONSTRAINT `reviews_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `reviews` ADD CONSTRAINT `reviews_user_mission_id_fkey` FOREIGN KEY (`user_mission_id`) REFERENCES `user_missions`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/root/week06/server/prisma/migrations/migration_lock.toml b/root/week06/server/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..592fc0b --- /dev/null +++ b/root/week06/server/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (e.g., Git) +provider = "mysql" diff --git a/root/week06/server/prisma/schema.prisma b/root/week06/server/prisma/schema.prisma new file mode 100644 index 0000000..4d86829 --- /dev/null +++ b/root/week06/server/prisma/schema.prisma @@ -0,0 +1,119 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +// Get a free hosted Postgres database in seconds: `npx create-db` + +generator client { + provider = "prisma-client" + output = "../generated/prisma" +} + +datasource db { + provider = "mysql" +} + + +model User { + id Int @id @default(autoincrement()) + email String @unique + password String + nickname String + isDeleted Boolean @default(false) @map("is_deleted") + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + preferences UserPreference? + reviews Review[] + userMissions UserMission[] + + @@map("users") +} + +model UserPreference { + id Int @id @default(autoincrement()) + userId Int @unique @map("user_id") + category String + + user User @relation(fields: [userId], references: [id]) + + @@map("user_preferences") +} + +model Region { + id Int @id @default(autoincrement()) + name String + + stores Store[] + missions Mission[] + + @@map("regions") +} + +model Store { + id Int @id @default(autoincrement()) + regionId Int @map("region_id") + name String + address String + category String + description String? + imageUrl String? @map("image_url") + createdAt DateTime @default(now()) @map("created_at") + + region Region @relation(fields: [regionId], references: [id]) + reviews Review[] + missions Mission[] + + @@map("stores") +} + +model Mission { + id Int @id @default(autoincrement()) + storeId Int @map("store_id") + regionId Int @map("region_id") + title String + description String? + createdAt DateTime @default(now()) @map("created_at") + + store Store @relation(fields: [storeId], references: [id]) + region Region @relation(fields: [regionId], references: [id]) + userMissions UserMission[] + + @@map("missions") +} + +model UserMission { + id Int @id @default(autoincrement()) + userId Int @map("user_id") + missionId Int @map("mission_id") + status MissionStatus @default(IN_PROGRESS) + createdAt DateTime @default(now()) @map("created_at") + updatedAt DateTime @updatedAt @map("updated_at") + + user User @relation(fields: [userId], references: [id]) + mission Mission @relation(fields: [missionId], references: [id]) + review Review? + + @@map("user_missions") +} + +enum MissionStatus { + IN_PROGRESS + COMPLETED +} + +model Review { + id Int @id @default(autoincrement()) + storeId Int @map("store_id") + userId Int @map("user_id") + userMissionId Int @unique @map("user_mission_id") + rating Int + content String? + imageUrl String? @map("image_url") + createdAt DateTime @default(now()) @map("created_at") + + store Store @relation(fields: [storeId], references: [id]) + user User @relation(fields: [userId], references: [id]) + userMission UserMission @relation(fields: [userMissionId], references: [id]) + + @@map("reviews") +} \ No newline at end of file diff --git a/root/week06/server/src/index.ts b/root/week06/server/src/index.ts new file mode 100644 index 0000000..6e6cb36 --- /dev/null +++ b/root/week06/server/src/index.ts @@ -0,0 +1,33 @@ +import "dotenv/config"; +import express from "express"; +import * as repo from "./repository"; + +const app = express(); +app.use(express.json()); + +// 내가 작성한 리뷰 목록 +app.get("/api/users/:userId/reviews", async (req, res) => { + const reviews = await repo.getMyReviews(Number(req.params.userId)); + res.json({ isSuccess: true, result: reviews }); +}); + +// 특정 가게의 미션 목록 +app.get("/api/stores/:storeId/missions", async (req, res) => { + const missions = await repo.getStoreMissions(Number(req.params.storeId)); + res.json({ isSuccess: true, result: missions }); +}); + +// 내가 진행 중인 미션 목록 +app.get("/api/users/:userId/missions", async (req, res) => { + const status = (req.query.status as string) ?? "IN_PROGRESS"; + const missions = await repo.getMyMissions(Number(req.params.userId), status); + res.json({ isSuccess: true, result: missions }); +}); + +// 미션 완료 처리 +app.patch("/api/user-missions/:userMissionId/complete", async (req, res) => { + const updated = await repo.completeMission(Number(req.params.userMissionId)); + res.json({ isSuccess: true, result: updated }); +}); + +app.listen(3000, () => console.log("Server is running at http://localhost:3000")); \ No newline at end of file diff --git a/root/week06/server/src/prisma.ts b/root/week06/server/src/prisma.ts new file mode 100644 index 0000000..e6a60da --- /dev/null +++ b/root/week06/server/src/prisma.ts @@ -0,0 +1,8 @@ +import "dotenv/config"; +import { PrismaClient } from "../generated/prisma/client"; +import { PrismaMariaDb } from "@prisma/adapter-mariadb"; + +const adapter = new PrismaMariaDb(process.env.DATABASE_URL!); +const prisma = new PrismaClient({ adapter }); + +export default prisma; \ No newline at end of file diff --git a/root/week06/server/src/repository.ts b/root/week06/server/src/repository.ts new file mode 100644 index 0000000..5192d6f --- /dev/null +++ b/root/week06/server/src/repository.ts @@ -0,0 +1,31 @@ +import prisma from "./prisma"; + +// 내가 작성한 리뷰 목록 +export const getMyReviews = (userId: number) => + prisma.review.findMany({ + where: { userId }, + include: { store: true }, + orderBy: { createdAt: "desc" }, + }); + +// 특정 가게의 미션 목록 +export const getStoreMissions = (storeId: number) => + prisma.mission.findMany({ + where: { storeId }, + orderBy: { createdAt: "desc" }, + }); + +// 내가 진행 중인 미션 목록 +export const getMyMissions = (userId: number, status: string) => + prisma.userMission.findMany({ + where: { userId, status: status as any }, + include: { mission: { include: { store: true } } }, + orderBy: { createdAt: "desc" }, + }); + +// 미션 완료 처리 +export const completeMission = (userMissionId: number) => + prisma.userMission.update({ + where: { id: userMissionId }, + data: { status: "COMPLETED" }, + }); \ No newline at end of file diff --git a/root/week06/server/tsconfig.json b/root/week06/server/tsconfig.json new file mode 100644 index 0000000..cec4a3a --- /dev/null +++ b/root/week06/server/tsconfig.json @@ -0,0 +1,44 @@ +{ + // Visit https://aka.ms/tsconfig to read more about this file + "compilerOptions": { + // File Layout + // "rootDir": "./src", + // "outDir": "./dist", + + // Environment Settings + // See also https://aka.ms/tsconfig/module + "module": "nodenext", + "target": "esnext", + "types": [], + // For nodejs: + // "lib": ["esnext"], + // "types": ["node"], + // and npm install -D @types/node + + // Other Outputs + "sourceMap": true, + "declaration": true, + "declarationMap": true, + + // Stricter Typechecking Options + "noUncheckedIndexedAccess": true, + "exactOptionalPropertyTypes": true, + + // Style Options + // "noImplicitReturns": true, + // "noImplicitOverride": true, + // "noUnusedLocals": true, + // "noUnusedParameters": true, + // "noFallthroughCasesInSwitch": true, + // "noPropertyAccessFromIndexSignature": true, + + // Recommended Options + "strict": true, + "jsx": "react-jsx", + "verbatimModuleSyntax": true, + "isolatedModules": true, + "noUncheckedSideEffectImports": true, + "moduleDetection": "force", + "skipLibCheck": true, + } +}