From ee42bfcefa964a9690d33c5acdd7673c1a9cfa0d Mon Sep 17 00:00:00 2001 From: locphamtran Date: Sat, 27 Jun 2026 10:39:22 +0700 Subject: [PATCH] =?UTF-8?q?fix:=20build=20=E1=BB=A9ng=20d=E1=BB=A5ng=20tr?= =?UTF-8?q?=C3=AAn=20android=20v=C3=A0=20c=C3=B3=20th=E1=BB=83=20=C4=91?= =?UTF-8?q?=C4=83ng=20nh=E1=BA=ADp=20b=E1=BA=B1ng=20Google=20Oauth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 14 + .gitignore | 1 - ANDROID_BUILD_GUIDE..md | 201 + ...ut1s3q47l4.apps.googleusercontent.com.json | 1 + docker_compose_plan.md | 87 + frontend/.env | 2 + frontend/.env.production | 2 + frontend/android/app/capacitor.build.gradle | 2 + .../android/app/src/main/AndroidManifest.xml | 26 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2786 -> 8295 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4341 -> 10839 bytes .../src/main/res/mipmap-ldpi/ic_launcher.png | Bin 0 -> 1499 bytes .../res/mipmap-ldpi/ic_launcher_round.png | Bin 0 -> 3549 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1869 -> 3207 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2725 -> 5668 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3981 -> 14998 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6593 -> 17445 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6644 -> 32619 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10455 -> 33926 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9441 -> 55141 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15916 -> 55861 bytes .../app/src/main/res/values/strings.xml | 1 + frontend/android/build.gradle | 9 + frontend/android/capacitor.settings.gradle | 6 + frontend/android/variables.gradle | 2 +- frontend/assets/icon-only.png | Bin 0 -> 68044 bytes frontend/capacitor.config.ts | 12 +- frontend/dist/index.html | 58 +- frontend/package.json | 3 + frontend/src/components/CommentModal.tsx | 5 +- .../src/components/JoinTourLoginModal.tsx | 111 +- frontend/src/components/LoginModal.tsx | 84 +- frontend/src/components/PhotoTaker.tsx | 73 + frontend/src/components/PublicPhotoModal.tsx | 5 +- frontend/src/components/TourChat.tsx | 13 +- frontend/src/index.tsx | 1 + frontend/src/pages/MemberDashboard.tsx | 5 +- frontend/src/pages/SignupPage.tsx | 81 +- frontend/src/pages/TourDetailPage.tsx | 5 +- frontend/src/utils/nativePatch.ts | 74 + google_oauth_plan.md | 184 + implementation_plan.md | 78 + implementation_plan_11features.md | 166 + package-lock.json | 3559 ++++++++++++++++- task.md | 46 + ui_implementation_plan.md | 185 + yotrip_system_fix_plan.md | 171 + 47 files changed, 5149 insertions(+), 124 deletions(-) create mode 100644 .env create mode 100644 ANDROID_BUILD_GUIDE..md create mode 100644 client_secret_639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com.json create mode 100644 docker_compose_plan.md create mode 100644 frontend/.env create mode 100644 frontend/.env.production create mode 100644 frontend/android/app/src/main/res/mipmap-ldpi/ic_launcher.png create mode 100644 frontend/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png create mode 100644 frontend/assets/icon-only.png create mode 100644 frontend/src/components/PhotoTaker.tsx create mode 100644 frontend/src/utils/nativePatch.ts create mode 100644 google_oauth_plan.md create mode 100644 implementation_plan.md create mode 100644 implementation_plan_11features.md create mode 100644 task.md create mode 100644 ui_implementation_plan.md create mode 100644 yotrip_system_fix_plan.md diff --git a/.env b/.env new file mode 100644 index 0000000..c955405 --- /dev/null +++ b/.env @@ -0,0 +1,14 @@ +DATABASE_URL="postgresql://postgres:password@localhost:5432/travel_db?schema=public" +PORT=3001 +REDIS_URL=redis://localhost:6379 +SMTP_HOST=smtp.gmail.com +SMTP_PORT=587 +SMTP_SECURE=false +SMTP_USER=yotripadmin@gmail.com +SMTP_PASS="ahhh suif kfcp waie" +GOOGLE_CLIENT_ID=639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com +FRONTEND_URL=https://yotrip.labz.io.vn +ADMIN_SECRET_KEY=Yotrip@Bitabub1 +# Development: Backend URL for vite dev server proxy (only used with npm run dev) +# For production: Nginx handles proxying, this is not used +VITE_BACKEND_URL=http://localhost:3001 diff --git a/.gitignore b/.gitignore index b89e93d..8f80c7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -.env node_modules server/dist dist diff --git a/ANDROID_BUILD_GUIDE..md b/ANDROID_BUILD_GUIDE..md new file mode 100644 index 0000000..1b8dcdc --- /dev/null +++ b/ANDROID_BUILD_GUIDE..md @@ -0,0 +1,201 @@ +# 🗺️ Hướng Dẫn Đóng Gói & Kiểm Thử Ứng Dụng Android (YoTrip) + +Tài liệu này hướng dẫn chi tiết quy trình thiết lập môi trường máy tính Windows Local để biên dịch, kiểm thử dự án Frontend (React + Vite) qua Capacitor, kết nối tới hệ thống Docker Production (`https://yotrip.labz.io.vn`) và chuẩn bị phát hành lên Google Play Store. + +--- + +## 📋 1. Điều Kiện Tiên Quyết (Môi Trường Windows) + +Trước khi chạy lệnh, đảm bảo máy tính local đã cài đặt và cấu hình đầy đủ các công cụ sau: + +* **Node.js:** Phiên bản v18 hoặc v20+. +* **Java JDK:** Phiên bản 17 hoặc 21 (Temurin hoặc Microsoft OpenJDK). + * Biến môi trường hệ thống: `JAVA_HOME` trỏ tới thư mục cài đặt JDK. + * Biến `Path` hệ thống: Bổ sung `%JAVA_HOME%\bin`. +* **Android Studio:** * Đã cài đặt **Android SDK**, **Android SDK Command-line Tools**. + * Biến môi trường hệ thống: `ANDROID_HOME` trỏ tới `AppData\Local\Android\Sdk`. + * Đã khởi tạo 1 thiết bị ảo (Android Simulator) qua *Virtual Device Manager*. + +--- + +## ⚙️ 2. Cấu Hình Mã Nguồn Frontend (Local) + +### 2.1 Cấu hình file `.env.production` +Tạo hoặc cập nhật file `.env.production` nằm tại thư mục gốc của `frontend/`: + +```text +VITE_BACKEND_URL=[https://yotrip.labz.io.vn](https://yotrip.labz.io.vn) + +### 2.2 Cấu hình Axios / API Instance (src/api/axios.ts) +Cập nhật logic baseURL để tự động phân tách môi trường chạy Web Dev (sử dụng Proxy của Vite) và môi trường chạy App Native (gọi trực tiếp URL tuyệt đối): + +import axios from 'axios'; +import { Capacitor } from '@capacitor/core'; + +const API = axios.create({ + baseURL: Capacitor.isNativePlatform() + ? import.meta.env.VITE_BACKEND_URL + : '', + timeout: 15000, + headers: { + 'Content-Type': 'application/json', + }, +}); + +export default API; + +## 3. Cấu Hình Nền Tảng Android Native + +### 3.1 Thiết lập Biểu tượng Ứng dụng (App Icon) + +Để sử dụng frontend/public/favicon.ico làm icon của app trên Android, chúng ta cần chuyển đổi nó sang định dạng .png độ phân giải cao và sử dụng công cụ của Capacitor để tự động tạo các kích thước cần thiết cho Android. + +Chuẩn bị ảnh: Chuyển đổi file favicon.ico của bạn thành file .png (khuyên dùng độ phân giải ít nhất 1024x1024 pixel để có chất lượng tốt nhất trên các thiết bị đời mới) và lưu tên là icon-only.png. + +Cài đặt công cụ: Chạy lệnh sau tại thư mục frontend/ để cài đặt công cụ quản lý tài nguyên của Capacitor: + +Bash +npm install @capacitor/assets --save-dev +Khởi tạo thư mục: Tạo thư mục assets ở thư mục gốc của frontend/ (cùng cấp với src) và đặt file icon-only.png vào đó. + +Bash +mkdir assets +# Sau đó di chuyển file icon-only.png của bạn vào thư mục assets/ +Tạo Icon: Chạy lệnh sau để tự động tạo và đặt các icon vào đúng vị trí trong dự án Android: + +Bash +npx capacitor-assets generate --android + +### 3.2 File capacitor.config.json + +Định danh chính xác gói ứng dụng (App ID) dùng để đăng ký trên Google Play Console: + +{ + "appId": "com.yotrip.app", + "appName": "YoTrip", + "webDir": "dist", + "plugins": { + "SplashScreen": { + "launchShowDuration": 2000 + } + } +} + +### 3.3 File capacitor.config.json +Định danh chính xác gói ứng dụng (App ID) dùng để đăng ký trên Google Play Console: + +JSON +{ + "appId": "com.yotrip.app", + "appName": "YoTrip", + "webDir": "dist", + "plugins": { + "SplashScreen": { + "launchShowDuration": 2000 + } + } +} +### 3.4 Cấu hình quyền trong AndroidManifest.xml +Mở đường dẫn android/app/src/main/AndroidManifest.xml, thêm các quyền truy cập Internet, định vị GPS, và các quyền cần thiết cho tính năng chụp ảnh và lưu ảnh vào bộ nhớ máy: + +XML + + + + + + + + + + + + + + + + + + ... + + + +## 4. Tích Hợp Tính Năng Chụp Ảnh và Lưu Ảnh (React Code) +Sử dụng Plugin của Capacitor để tích hợp trực tiếp vào code React của bạn. + +Cài đặt Plugin Camera: Chạy lệnh sau tại thư mục frontend/: + +Bash +npm install @capacitor/camera +npx cap update +Ví dụ code: Dưới đây là cách implement tính năng chụp ảnh và tự động lưu ảnh gốc vào thư viện ảnh của điện thoại trong một React component (ví dụ src/components/PhotoTaker.tsx): + +JavaScript +import React, { useState } from 'react'; +import { IonButton, IonIcon, IonContent, IonPage } from '@ionic/react'; +import { camera } from 'ionicons/icons'; +import { Camera, CameraResultType, CameraSource } from '@capacitor/camera'; + +const PhotoTaker: React.FC = () => { + const [photoUri, setPhotoUri] = useState(); + + const takeAndSavePhoto = async () => { + try { + const image = await Camera.getPhoto({ + quality: 90, + allowEditing: false, // Giữ nguyên ảnh gốc, không qua chỉnh sửa + resultType: CameraResultType.Uri, + source: CameraSource.Camera, // Mở camera trực tiếp + saveToGallery: true, // YÊU CẦU MỚI: Tự động lưu ảnh gốc vào thư viện điện thoại + }); + + // Bạn có thể sử dụng image.webPath để hiển thị xem trước + setPhotoUri(image.webPath); + console.log('Ảnh đã được chụp và lưu tại:', image.path); + + } catch (error) { + console.error('Lỗi khi chụp hoặc lưu ảnh:', error); + } + }; + + return ( + + +
+

Tính năng Chụp ảnh

+ + + + Chụp và Lưu Ảnh Gốc + + + {photoUri && ( +
+

Xem trước ảnh vừa chụp:

+ Xem trước ảnh chụp +
+ )} +
+
+
+ ); +}; + +export default PhotoTaker; + +## 5. Quy Trình Biên Dịch & Kiểm Thử (Simulator) +Mỗi lần cập nhật code giao diện ở máy local, chạy chuỗi lệnh sau tại Terminal của VS Code để đẩy app lên máy ảo: + +# Bước 1: Cài đặt các thư viện phụ thuộc tại local +npm install + +# Bước 2: Build code React + Vite thành file tĩnh +npm run build + +# Bước 3: Đồng bộ mã nguồn tĩnh vào thư mục Android mã nguồn mở +npx cap sync + +# Bước 4: Khởi chạy máy ảo và nạp ứng dụng tự động +npx cap run android \ No newline at end of file diff --git a/client_secret_639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com.json b/client_secret_639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com.json new file mode 100644 index 0000000..1a682d1 --- /dev/null +++ b/client_secret_639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com.json @@ -0,0 +1 @@ +{"web":{"client_id":"639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com","project_id":"yotrip-web","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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"}} \ No newline at end of file diff --git a/docker_compose_plan.md b/docker_compose_plan.md new file mode 100644 index 0000000..596952e --- /dev/null +++ b/docker_compose_plan.md @@ -0,0 +1,87 @@ +# Kế hoạch triển khai: Cấu hình Docker để Chạy Server & Phát triển (Hot-reload) + +Kế hoạch này phác thảo cách cấu hình Docker và Docker Compose cho dự án YoTrip. Cấu hình này sẽ đáp ứng đồng thời hai nhu cầu: +1. **Môi trường Phát triển (Development)**: Đồng bộ mã nguồn trực tiếp (bind mounts) từ máy local vào container, hỗ trợ hot-reload cho cả backend (NestJS watch) và frontend (Vite HMR). +2. **Môi trường Triển khai (Production)**: Đóng gói tối ưu thành các image độc lập, sử dụng Nginx để phục vụ frontend tĩnh và tối ưu hóa hiệu năng NestJS backend. + +--- + +## User Review Required + +> [!IMPORTANT] +> - **Biến môi trường trong Docker**: Khi chạy trong Docker Compose, địa chỉ kết nối cơ sở dữ liệu (`DATABASE_URL`) và Redis (`REDIS_URL`) phải trỏ đến tên các service của container (ví dụ: `postgres` thay vì `localhost`). Chúng tôi sẽ cấu hình Docker Compose ghi đè (override) các biến này một cách tự động để tránh làm hỏng cấu hình chạy trực tiếp bằng `npm run start:dev` trên máy local của bạn. +> - **Cổng mạng (Ports)**: +> - Backend: Cổng `3001` được mở ra ngoài. +> - Frontend: Cổng `5173` (cho Dev) và cổng `3002` (cho Production thông qua Nginx). +> - Database: Cổng `5432` (mở để truy cập quản trị nếu cần). +> - Redis: Cổng `6379`. + +--- + +## Proposed Changes + +### 1. Dockerfile cho Backend + +#### [NEW] [Dockerfile](file:///home/locpham/travelplanning/backend/Dockerfile) +- Thiết lập môi trường chạy Node.js (phiên bản `20-alpine`). +- Cài đặt các gói phụ thuộc hệ thống cần thiết (như openssl cho Prisma). +- Cấu hình chạy chế độ phát triển (sử dụng volume mounts để hot-reload) và chế độ production (build code JS). +- Chạy Prisma client generation lúc build. + +--- + +### 2. Dockerfile cho Frontend + +#### [NEW] [Dockerfile](file:///home/locpham/travelplanning/frontend/Dockerfile) +- Sử dụng chiến lược Multi-stage build để tối ưu hóa dung lượng: + - **Stage 1 (Build)**: Cài đặt dependencies và build mã nguồn React/Vite thành thư mục tĩnh `dist`. + - **Stage 2 (Nginx)**: Copy thư mục `dist` vào container chạy Nginx để phục vụ các file tĩnh ở cổng `80` (phục vụ môi trường production). +- Hỗ trợ chạy Node.js trực tiếp cho môi trường phát triển để dùng Vite dev server và HMR. + +--- + +### 3. Docker Compose cho Phát triển & Sửa Code (Hot-reload) + +#### [NEW] [docker-compose.yml](file:///home/locpham/travelplanning/docker-compose.yml) +- Khởi tạo 4 services chính: + 1. `postgres`: Cơ sở dữ liệu PostgreSQL 15, lưu trữ dữ liệu bền vững qua volume `pg_data`. + 2. `redis`: Caching và WebSockets. + 3. `backend`: Mount thư mục `backend/` vào container, chạy lệnh `npm run start:dev` để tự động reload khi sửa code trên máy host. + 4. `frontend`: Mount thư mục `frontend/` vào container, chạy lệnh `npm run dev -- --host` để phục vụ Vite dev server hỗ trợ HMR (Hot Module Replacement). +- Đồng bộ hóa các volume ẩn `node_modules` để tránh xung đột hệ điều hành giữa máy host và container. + +--- + +### 4. Docker Compose cho Triển khai lên Server (Production) + +#### [NEW] [docker-compose.prod.yml](file:///home/locpham/travelplanning/docker-compose.prod.yml) +- Cấu hình tối ưu để triển khai lên server cloud: + - Builds production image cho `backend` và chạy trực tiếp file JS đã build (`dist/src/main.js`). + - Builds production image cho `frontend` sử dụng Nginx để phục vụ client, tối ưu hóa tốc độ tải trang và bảo mật. + - Tự động restart dịch vụ nếu gặp sự cố (`restart: always`). + +--- + +## Verification Plan + +### Automated Tests +- Kiểm tra tính hợp lệ của cấu hình docker-compose: + ```bash + docker compose config + ``` + +### Manual Verification +1. **Kiểm tra Môi trường Phát triển (Sửa code trực tiếp)**: + - Chạy lệnh khởi động môi trường dev: + ```bash + docker compose up --build + ``` + - Truy cập giao diện tại `http://localhost:5173`. + - Sửa đổi một dòng văn bản trong frontend (ví dụ: nhãn nút ở `LandingPage.tsx`) hoặc backend và kiểm tra xem container có tự động tải lại (hot-reload) tức thì hay không. +2. **Kiểm tra Môi trường Production (Triển khai server)**: + - Chạy lệnh khởi động môi trường prod: + ```bash + docker compose -f docker-compose.prod.yml up --build -d + ``` + - Xác nhận mọi service khởi chạy ngầm thành công. + - Truy cập ứng dụng qua cổng `80` (http://localhost) và xác nhận hoạt động bình thường. diff --git a/frontend/.env b/frontend/.env new file mode 100644 index 0000000..5426a2f --- /dev/null +++ b/frontend/.env @@ -0,0 +1,2 @@ +VITE_BACKEND_URL=https://yotrip.labz.io.vn +VITE_GOOGLE_CLIENT_ID=639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com \ No newline at end of file diff --git a/frontend/.env.production b/frontend/.env.production new file mode 100644 index 0000000..19fab17 --- /dev/null +++ b/frontend/.env.production @@ -0,0 +1,2 @@ +VITE_BACKEND_URL=https://yotrip.labz.io.vn +VITE_GOOGLE_CLIENT_ID=639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com diff --git a/frontend/android/app/capacitor.build.gradle b/frontend/android/app/capacitor.build.gradle index c78c0f4..bf15962 100644 --- a/frontend/android/app/capacitor.build.gradle +++ b/frontend/android/app/capacitor.build.gradle @@ -9,7 +9,9 @@ android { apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { + implementation project(':capacitor-camera') implementation project(':capacitor-geolocation') + implementation project(':codetrix-studio-capacitor-google-auth') } diff --git a/frontend/android/app/src/main/AndroidManifest.xml b/frontend/android/app/src/main/AndroidManifest.xml index 340e7df..30e0b1c 100644 --- a/frontend/android/app/src/main/AndroidManifest.xml +++ b/frontend/android/app/src/main/AndroidManifest.xml @@ -1,14 +1,13 @@ - + - - + android:theme="@style/AppTheme" + android:usesCleartextTraffic="true"> - - - + + + + + + + + + + + + + + diff --git a/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index c023e50595074292c7361183a64de08cf9686c9c..7c2f9112b6c21af7ca49911321c6b2ad5317476e 100644 GIT binary patch literal 8295 zcmV-tAei5YP)=b7f^IEf`$mu1Nmfxa7boN31!TTm9 zSqCLiMDyADx?yLgYHN3@R?PYjy;Tn+5dwk!_47X8(dcE%9@pb~T#xHaFuhl^Ev8SV_iA=35_eAR)9ju) zsM$YpNV9MJu;$R{;pY#H%71E(3?F{}*yv%+iNV8~lY@taq`^bN>Hb4PO8+5EYUH4J zHgbSH8`;O6?cFD&g%i1SqMk%Pqk9*V(fy{F-S&ew{r<0g@mYzh{-pI6@|!=Qc`dw# zeRJ;j?C);*`L`e35Vp+U7vH_VsCn-mH1FSo=EFH?w%^6`pUfd)#~c!N-bKQ$J4o1l z2hZ=ljf8!-k#OJ^5)R#h=I~8uj@^Lf_;qNG&m!T}b!bk{K$AQTP0AF+b5qbR(0pacWMgFau5Pm7tNgR)g`$nVUfzhaVXe25g9*&AfhoZvqK}DwqqC)aOR7f3& z@@M*^{P{jf*2S>IT?$EDdXL0i?v~h$PKnOykm#!&po{tznd&j9OM3jO0`FfbA012F za*4`W*!1h^pV4nUxXr&C1^4DmlzVe#k^9392wQGIc=tNQt=A!bFbi?}EHp$P&p@+d z2AWT&q1iPJ&F(3Pd!~?(I0140IK+b!&>R|rcz6ur(NT!UMx4JNk>^tBF9xvh)TwU#KQjX+h=H5Z@n`K5de zZ(jOi>pjwXMR88tuP0ulwk%9=?>qqe*7O4Z_6=}bu7iJP7W{j&;J3~~cz+h+wpj?< zXCQt&4e^sHh@VbDvwIT4o=Ir-PC&D79O8j7hzG|Y9vX#scogE%5eUaepgB1VF-d_V zoE`w58i8;w0{(mi{KY=-m-@h`_ktyGuJkByu6BdT=>&7F19W~H=)xeVqE@I1ybDxK z7u5BAv#M+M@5;wgtQ^ZDFX}%#SE%2fH?UiyVBVU3$Zoj_cFT3JGMpLk@6Uk$U>5wg z8Hn3wz<)dq;gcx{JEtJ*nuKQ01VrK*8O}I_gJTd5jY4x|6v8nAXBfhXA&94jA)X!t zPvE3PAeg^;Ge;ja)lAut);V6wWwWOsteZ3mOr2D%^!rmz)saRBPl7Q`31 z7bsH*DnoZu+{v7$m&`rFALf2VzcUZ!4^s>5mRT_G&Vqe+2Hbly;AA+{5VlW4_=tc} zB<`GoxJz-53~1j31i7tFuH3Xh0X%Ip(fzuEEOh1IP5pWm!z^C;= zNDqU%90H#i0+-bTCaVh!$sFPw0w+HRx`?P1RB;QavSv^f%}`f(9;!@Tp!9*){_Qb6 zqJkW5%-gr>*{u)2Y?+F(@6O6#*sarG-=7Be!8G`7)8Idv0{=-&J11k#nS_`)4l!{| zb`EJR;ovBQSX+t2IVXo8Bn>F8N$!V`8UcSc0$y${0;d<;B?S(b5dxbt52s~u+o!-0I3G`e-!TPl=Op-DBy%Pp?j47aI1XVS0i?7Qfg{M7GYsK4aZN05 zPWOXP?T^7BZPf?vLJUrNNNy`Gvj^*NB}YKO>SmCytlw?ost;RQp7deroa<8A5VfKV0KJ^-$~$%gWEk0j=)JA zgAg071On#p2>2r-5RMH&I5DWeNg{9}av*c5ec;dbf;-;}{$f~m4xiowj*M0r-Qccv zDsXbz!R57qEeL`w41yzYiWN9)xdMl+@`2G3_jthQT%dIhiD_(+m|EK#^08fd6hr z6tkVcnE?Co1UT6_<1!rL9G+y(zHxB-M#1eL1$%G=2}ei3A00;Ap#f|-*bnuwek8=& zic2AI`oN#*19!F;{Q0olR_vu7u<704u5=>dY8Mi6yP(PKfba#JHW|*^Yd);b^FUSV z2V1FxGF|BfQ?0;Z>xf*S>+BNKyMk_Yu1m)J^id(TV+k@XVg>k-n3@=nQ zBfiWhw-#IF1*`Rd)w#gdy1?pVfNaeYWoY`Jk1m4}V;Qu4d^5e{_5!_qLSjCd0JCEP z%qQbucaDSIH3oK1tflsjg55U)ZvQa2gToMy3}fx?KD?YYg8H7@h|JDo^wvDuC+3ji zmZ%9jV2Zq5CI7f%@%-#sLRZU`kK?1OdMe;}=U0sH#Cd; zwbELw)-4A!tN$F19gLw#;v7DSGBhlKgFYI5jo$Uy0`>8j#K>^Q!0sl_83mg-BD;p& zKO*N1duUkBob~$#@Utt!xI0ha0HMh_?9vV5cg4NP@l0Ya_Ve1%4Lq9^1e?|^!(lIX zfz9Xyo7Dl1%#yQ$Sb5Hg9~U)4+dGN7^9%Cpq!{Qu?jC$S!vwa%1E$I&yN4ygT=zL3 z2N6$Z%oVDLwMqmDk;mN{C7leo*DYvqg4r)n3rVIW;ahdzd;07`+2*y$!sn z39PA6VqI>DYFGk5{Lb;sbmGk@{pqMgz{uJ=3^s8X%;$g(4S_i{0RHG8;tvf#IM$1f ziTm=woNO4wS3V8kg$oh9aG@9R$z9-1w_^A+<@rNRBUqIjfRI7l(+)PP9n94>@VRZE zasqfd(}yQ6JFwZ%iTevtEJP*TxHm7q_FwHCSW{#JU*iE&?F6fH%GpBz5jdQ&32cKE zT!Teo-7bl0Ff0Y2kr5sBF|3~KK%Xc^8RnEgXw4h(`lGzjJ}0W*NOLlHcG zB8`g zb`Nf*58POw_Y6yP3=W+*2zvhjn1h304i3ofVUF~JJKhiact18C=z??Lj(iY}ky}`G zs1<8YbwYiv8_Ny{@JeYf=A%juy;T#&>N9=_SxV+G*+FpETA|Jj;F|@_*yo90{LVeh zN2AzW>%$XiwRpb3f}vY;s2-Zcn!*MMHBK-(Cz%j}t+UJSVF?_g6`Z*dwAm!F9;ZZE zmcT*ri36|Fhi4b4J%fwXzCln2hCuBf1WmvkR-D5g=?8l(0`^1%n$!JQp4f?lrm@&~ zwTRM=S^RZoH@yyW8~HYC7*80;allG#HF=B$R@ed3iet6OnwVAMXgww|ULc$GOayP!_&U!)HVf`~de2wHZ{0N7&#vUAuIeV|YDflcbgrV~AQF{K0J zw;o_|aS@WVh|lgXVDip99z+-AVVl%h&oG`&c0$N*1DhQLo7)ODFMw|px8kcAPW+3d z8_`Cpw!d84G!-+SW!my3aLQ`bNa|Jd$ zlV?GEi49z}8=Te+RizDa1di++hXSX*39O+JTtg#Rb0e5WGuTEGm_~!d`E3%_v=o32 z47^GmpI%TOh%BlP_RFrJkM@H()(_@*L;-WM7woBCu&2XdQo>+UL)etu2|l?M1K01# zV4_kKSR@m^sQmB!jeS_2?0}dX1e4PWv7i-k*P5|B!-3<0Vc5rJ!RI&O*?b!kD!kw; z-C(O-V5;3u-{%Cf(8iqEAjQ zPzU=KNf6V=lpvPj94B!4z$C@sq$+T@b0H+8g|Omy03X#4#O6FvEJ#Xg4c(jrf58ED zCUH*y@j1=-`V|+xS?Gshcox->32e%?U_-tQT)A6rD^-OPoYna`s=$V|g;od^cEpuhv9id5wdGc*YwXbIoe=eQF#0Ai^^IT*mRR-> zK#F@d2(C#l@h#RRa?r8JtMuuq1?ouOB6U0h>O@2iV*-Xc6$YIY2A!g~XYHvj zEI-}`?pz1{rJ^6Tk=saY9K;q~kDNQCT*Ei;(*i%LBeU3QjbO9B9hcgNkkk^vw+kIu zmS)7NYfTW!9C*XtftrzN^xd9=XXYl3v`6qaCJ#1Nnz6jxi05<`2!V4 zw%}aXFoy0Z6U{sK=P~zi0kd=WAW0G)L?txexQU~kVSLYIL%iNB=ME#ovB;wq*Vq8I z$q2T|0M1?y)=?*ML5oB=mH-fQJp3A!GQL2a2ut*-u-#Icg=o)x1Q2PIbRVrH(GBPlY7)sW8+@A*fIHfF?@m0e?1x z6(`z|8JLzo^e=MSuxx)5R-ABS)5QR|EA3EUZUvR@0hjK?a~U46xh+s<`>^t26PBMf z;fF;|XnV)y*XMQ(TC}-qy*78cni1hJ%sAC2b(Sg!Cz?yeWe{@b~~Or@5LV15RUqWu{_NM zF+Tw6njc&tkq^t#%=o$1hk=`SvEgzZR%98#l-a>nIuKuOMenV<_*ZujtILh}c7qdN zE7jq3hgSx)BiM$O+8SsY8^BnMa_(@pdhm8VIENm*OApRjBk^q}iFGZ7gOYkSQ|Ct) z)TetSD!B(#N)Obj-Js5NgFe@dxHFv))7sE~<33!&xA4qqFX;3(Q0YN=@k!QKn=<|Q z@0CHknCnA)whwGxGw1?8r~)6jVjtG!yYO3E7s5C0fG)Ixsc?d?B6A));wmf{xqA=q z`P#9(tX>B6tgZn+ZgSv3G>Y88K|EbuEd!z(KhGT{dpLWY;viRz#I+eD%2l}pfKmvc zkp*>1k3?FEiosEz?E-V58_%S+BoFv2ZJ@3M;Y6JlWibbd3a!e&s#K5(U8JblfM-`cy-F>?#goc42Qh5+Z zJpFj;q75rE-JlDb!Im_GFZDqz^Wo_{8@76S&@%HG))!jvRBa?M#>P(lUKGy~H`A%8Xg$^)j9awp~1&16XGN8Z9Z^N2%KCoGBa%-t` zTEXYFVttke-zo6IJaPlSG50{7=f>(>2fmimgpEZmtjur1PxU?=@O5KdVFONf4PfBz zJ^Zu189y?+aH2DWpEf%14ZR7j>1mXYj9^)LDN06$aerX}FIgL~!K6cioxrIF@2Cgw zs)OjM1Lv&)>#dgfF0x=8%@=QTsf^J1^77gc?eNGNdPV&@1N$FAcSrdIs7dOuu~ z*HIQ3#kZ=P@Rqv`zp{A2R++G=+JtpgdTi1eK-C!$r`6&ms}(D>mDu0iq0FuPZmcy{ z<9P?k9z6sX3Fle}?pp9Z9e7`rBy`nFY;)Pt0HUr8EvPSaO6rRW94f5?RC*iY)7!Br ztp%a$_Yj!4jra?0P+0+a0jkapU~Q%s>#{sx^ZnS6?ZmRPCOmc747SjTR}2B{_l5DJ zS}%k$8xHuou-)5*jin~6C^q1kG7~tR1siKESf?{!olcJpdIM;a32cKAYwLCRXP;9B zbfmi-tLw`ZK#n?a&RTG89eA$}g0BX=ze?h}^-BckLi_9LjQ%K<)*-1cb%46m0d=}E zgg=`e#CNjE_U9tXx~H(=q8qC009K}Z5tr%3uj;yREi{SF8*`{1n#CWiJ>UymSdnAJ z*K;g*DyIReQX8JUX2g+TFB-d3@05T#2__@o8_4-<@ zH`F1{REHnh&B{!CbO>wpWe{V*EIY@egW#=!;MaolRY_d8UZR!+(53d*RayN})unbx zmEI2OGMV_b$(!q|(^~NJ%5M2XCR+Qj?1Tk>me+!h>;ve!uFQ7H#jv@1^Ray(VDR>R z9Bhf;dsS|%E3)F*GAouBnUE0~g>Ga5%ks5YS!KX?jZMfM9L7RyABj9li;Hm1&f+&M zUc?!+Sgk9?^n-hF%}!yHp$x1;2hm*@b59KfpB6&17JPG+B!=oGVJQG{m)c)fXDfiz zm)k*Qv_X~82JUJ*mS6N?r+qNC`QDF9t)q})i_*FIhp6Zo#ov~?@!SPHep>24Wq1_# zA1W*Q1!)n5k#W3iX~x&D)gmo4h>HFZu%&ur4-6w31JgV;gTFU5;^)Q&G>na5A-111 z{@@q;x|OhpyeloaD9Mgy*d zLzum%EM`eve{df^u+`x?TNOl4Ed&p7kJ4UZOC|W0a!Cy9B)+xe(SLb?$?Ez$RbJnH zbw=x=I;$1xtBUAcWsdV-N?KtWm_dHW2!2)Ohw7pkD=wJu>{T1sA~(2VFX$3C_%b)x zGAEwNYru+39iGqA<86x%uCWU!aPV2YttLS zk6L7=OeTUa*iCrBUJt6F3hQf&K*F zH&;RklrM^H6%cx=Z~l2_)r*hzdy0w5FN(|Qw8a;O5r4HMs>*JGDu<{U>fC0~`7NOG z{h$kdV2gZUihZDpJzs#K%iOY<3YWabqAML>svY38c5pQ|(A8$FE~>@X^D42junH<| zJp{6SVKjjuGMm6!jLHhVsh;c(%5xpjQ4i5k3*KG>(OCoDU8A&??4D``P785QsU(E8 z;5y5_@|{VK^d_8Fl&{Rj7j(X{sW^;HSN#v;a|4LK){OXTeyH;NP#5^2F7!iHNWds? zDB_$L9ID&}y21szipT+`$_`p<2cxsa)C5l71is!1uHFK=-VD}6L;xAVnu&YJ_Jtm7 zQyo})E!hB*mlB+-7OYbT&ZPtI(Sr9>L-19B_Y*J`5QF9514R${!5Z*Am0OnL2A3zu zgK(^PZCp{vrz#60KF7D9%5R1$->;~^2X&DTRFM}HaZQN_RH+*jaZUx13+hTI=xQPd zsA@at8awD(JDA!guys~2^;XdJ7BEILSR>i|B5lfl~#ZI44*E-d`LQ`)k1TSGKRwC#_cw=~3UtRjjy3mE--ZP1Sw3 zRV6{h=enZt#eT#W`k*TEK~+pd01>&NjyZ>_aDl2+oI`7!vU6x{6KGu%=vpG{7aQ)3 z(E^5C32iWgX&`N-?C+2jIsru7^93Adtqg{DYrzpPo@(&EYViI_2+hPfa%)A!?utcj zv~G@Z=lqSrW~pwEvM68ZjLUKTk4@Fx^Qy{DsPbGF$5L90t!q*))zmkFCUD4gEV5-vz>v%#&as%3?Tgsv7f<$f9CZ+g zbL4ea4S13_WHK0o!?#pIY$=D(ToNU@!w=~e*yjA-D{vmg+~@yPPy%~nzUQZ#%7guC zLod{ofkjn`dr@8LmQ)q)D3Q97$RSHrWsg!?B3qQIX^K*{)+kM+Z;VoUOO&d&L>YrQ z%9t9Ww8cvvM20A9)kis7U6ixeMOjB}lylZZc~?!8b7`ZzyE@8wtD?NG zD$4sSqFi%DRA?z*6uYVyHKRswy;UQ0u;ArC-Hmm?6U(v&mXp7(&$Upha__OYGS6td zE-<|Jrh`}cCK`Zz+3xp0cgibSrt_FzRCI~%7h#@1ya6N>cS_mQC zJl9@6CUlmcW&;Hr`K&A~%m1{uXcpti&xgwIXM3Kd%51+>mD>|lRn8Pul|7Zx64_EI zoh_BB{an^mN^eP}3`7m7wCQu1&ae#)skGT}hPE0~X{$b!w$`1YZTeK!u21Fd`c&4T zJ3|xMwW+MD`V8yUrpoeHrLx}gGh%Z^D&Ja}%r}?p=Y7Th@Vviz!xtxX$uj5vUQc|f zZ|ardd>QV32A+`nn=DH#|Iu5x6aT#|k3!`A6O~)Tzsx7@aXqfb^|&6_Kjp! z+9qv7laMNo)ID%Hq+YU77~Jh(~?E(9~x?tdMxTer5YZEM@wwzl2h z8|S=(+J*{R8~NuP^KZ^!d?->;Hi1H^GF`LP#aoYT-=lklI)*!p)S8y-G%Iu0kG-;Q9n0l{~(yl6NI}=tO|dk&5e+I;R1&0ei=B zz8S-5wT5(-v}`#{`^(xa$!0k%^7LKVl48q|ze9TY^?!PuPfScaF6*2HP{$`XZv7E% zl>{Udr-x|h9~_VX(dJe*cgYGTDUbVmYI(9$hXB3zXXu&-(E1xUZv3S#9?)0E6+I-J zyS?P_x*;Z*8Z0i9Ck6A!qmf%vbHn)6`U8?H()p>WslP$jJb*SVEG+yLZnPBov`&!- zl4K>}F@HxKb1i|>7En!r+bj>u@r68HD`;}T@R<-s`Q+r}-=S+>K(9s@^x-Z#SHbZ( zCaHjBg_MjLSs}%6n&cx$0#0a^F`$3s1~flE-yH!!_zxA=LlVIlCantIVN6J&q$;3h zfh6R8r97T3f^!!T1?hhl0tkD=8Xcq<5Sp%ci+_JflXA8^#{@|SCw42uB*~JC2NXj} zx|^H?hMyfTGbEkmq=jUI6I+gyOtuebc6P1>PzWiAA*nOuG>~k0O4d9n4V*-t)IOl= zv$Nd@u(~`bb}609HBvxoH_u51>;J>HaC;+>JrC@$q7UG<-gCw-$xdK@zu*V4mz{R4t?g7I%3W&B(JX@7>49EaHe721oTi%0tJ2Z1)Dw&h8uNs&DS zit+Cei0>Y6h6FgrA~GJ3 zJtVl>d5TG=$gOtK-%pTheg8x=B!9p;dAS)*21sGY(^fY>bA7g33?J0>pb!#zH`iD8 zHUl$^ANf$Yl~R_DAO1iO=^5HTP5YhXT2J&hLxQ^@CV7D+d8?etZqy`~M4U(`@THCQ!4!hgef5uE)O z82=f;`DsN!I((TG0tprcI9}EocLYhwlkP2`I3}IF7VsA?5)`tYeZ$L;_EGD*BHT(@ zs-WY&1nF5Fq*DS8Vv--QTw^!H!xb-g*osxv`GCJX%J?tNw?e}H*i`{TS?G^?x7~)A zguor-7`wr8?nyl;O|fhAzkkdQ$+JMpkxbgAfr4gtTe*5rnqpU#AicCgmb51WB-Pj~ zf>b~~h`M=CQx8g0?5Zs={@b_pkd9u_2kscsvld9kfvsWSidouvA@v|6gNk}k+8NJ@ zPYBXGdPt_;&9&r7a5vomH^r#lcbuZ?L1JD!R}C3{KWTu36rk4t34d;AN&!#>NR~=c zmOMl~s8&=x$Psx?o*HrxTawD%&e7k)W=OU?X)hhG%-G#(0jjMMcxF}r`sI0Z;BFYkZn^<3%D1R-uNolPtz>sg zm4^_V3iUWIQXG1Y0Dt}Jf*De(JV}Ct@@;=KaP`tpa~B5)i;t4MRa!`R=;1kvKa>+a zPci8Eiy0spdbggbAcTbSZGU2HmZculc94!rtlD~z2@>3DWS$bnF~)yQ*0cYeW=Q)l z>SIz2$uYRwYXk{3ZZBs&2onj_TCL4Q(YMrtG>{OKD`Yt@*MG>h$a-EFZH5GQLre;j zNkg90r%5I~KS;F}K<94w(d&&i6UEuI^`HbK3<1tk%=z6o8(>_SX>NnuGS-wu3aUNLK$ymVK)U>4^|u!K=k@|E|NA;I0wW~kv*6ZIsN zZ%Z=*t{+Wfn`dxamjK3=BhA~dUOnh8B(fy9+u4i-u79xTHZLHdd|RGrwmjPmt_(@F z`oFk(kYRn0ZB#GDUIE1w|1?0?XuLo*J@k?B`ozjsnt3)Puy>N3~$V zx4^MMO1meR6Vg;^xhpWUh{w7Yl=HYs2|)!MLwJ4@(pC zYU=YSfjS0xk!CpB^L4}h5s;C?;Tdk-x_`w-M@J{OZ{Pk6=y>qp!42#3Y}>YN`!wyo zMD1&b4s{(kaiYIxaPUmuz`(%ap`oE8avK~R4EN=7`ADf$zWaB44y{xw9T`j zzFZz`Iu;%;l|%XD_mkJacarka{xI$Pj*|{uU0nyD6Lj0Ub?ax^`R5BATefWZEL82k zNbM`s9-;Qt`@B68>GFlmn>T+BI=1~kE(p>_vZjYsDavctG0P hwzjQpYukOX{U2%fua}8<@#p{m002ovPDHLkV1m(eMwI{n diff --git a/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/frontend/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index b441f37d6a2a58cfdda841fbc8148a474a4ece3f..95d49abd65cb988e4d26d0b94a89ae572a1a9f74 100644 GIT binary patch literal 10839 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 literal 4341 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 KMNUMnLSTYUYrr=E delta 2718 zcmV;P3Ssr6ETt8YBYz5PNkl)t8Ew zzVwAQbwirEZA8s_M@YLiZSk@gX5(MAu13 zQMEXH#umbB_#5=y1MOKE?)l7#py^$!T%#MtaYfZrI-n=61|+DWXjId6$8}YOYnq+{ zLdS6oX!ncen14^;WnAC*SyjneO(Q`7KxNqkgTM?O5WAZO9c5WH-|@Sms00WYF0w%w zcP;k`W{tA>0>9Aq`FjAm7gt+WR4SRkbd6Xq>esj>WN5hh>^c&1+za1(aSqYk^8tPX zfYEnXE~`Ik_JR)djv733D8@l;s~LiBu}}PaBD{QV5i@ zm0zz|lYg5pSQi%gGPCn*<++gSYh|uz0X&3XMjio9x(%#(7m$zl+X9J7&q?Hz(!fBnh3~DqXd3}ck4%4v{iNra8c7K-}t4BJSjQl*yswf+SMIHv$3jnWk zE%%2B-FS-7nq!0>3KA-*g~89H2>k=}|H(Uq)^`z_l!cCOpp-xr6s)jLC?(Da-tU7O zg9r-ayylRN&Sc}Y1WMpqRHtup?$z)V(HfRCH#q6*PKuOry{JhtOZ2$dkYp7=_?`lat_< z;O180`+L^`M2C~aZ{WSfCa39Jgl+>%{eS#0p+5rxPrhrBK=9XN5D0uiEcb;_D0I^1 z3uUcMO41pIX!F4hYvmou3%*MXKdov}!`Ey3lq=6|G9PMidSzZ4=RCp+{t3@&E)otfzY%=u7y>eQ*l zk|d23BEX}~hac;7(?5q4B!6S8TD}Cw zogMmVGMNlDHa0HJ5$NmdTb9YnF*KKmfT}u^i_A!%C0?|V*vRDMz8^`TCERkt5Q}-j zFWK?hD*s)BjI1Mp_@P6G9?cQx?Cg95QgzI7RE>yg5|2fIY{xXAzwdQgqPEMDlOzBo za%{h{Lv?}AtHYqtcp~1^)PGc!BhcR7{&iWFLmD?zi6t?vT!6{RZ3$COn%J@3A=X`X z@co5g>uLHxES3oG-o1NSj=+{JTOQ12vm@M0rq}zFxE{xbNl#3P<%E_H^+!4VR*)x- z068eZJS*=e0NHr7rl#hL_IhqnJRa}non*EF_u0F8+H{)GKVJYx?tk&h>4?Cw{mPD7 z_H%igoZ*(uO?*h1nZJU;*%jjUQPgL~>GmmVUQQG{b%?}R`51W#6c@nQ)g!n${%@clQ2WtL$RE33eZBJeE;_72D7mdblH8eDQpC#aOdpW%r zD$)*n>FPJw9IX7CP+e|;lHw(3b&SMc`UxG1TaJp+2}7*i5`XTpLvto6?;hJWFJi*} z1A{}Ifc5i^tpN9f)2C0@vOx@QRcZ|ulXUtzto&AR+CTm`Pom*6p*L1t#D4%l2wvunpR;*a@HHb#Tw&OleEz~is(LY^e1Q?0GUWLs( z)cU$0*@?=It$$#dv6u*~__PDIxH=vzOiWCSEMLBSsc>V@7~Rv+(Xkb5W!BzyD{ynC z6+)Z9@i>Xs0DLe}I8WHij?LiUT{qD})p^JMMQJ^r)#zlh^wVhxqYcPLRs|Xt9ZSNZrP2~gA4-Rq zvSY`NYQzSGXGJMTi(d!?0;p
5y1E)o^yTjEp11HQ175kqR(FA?6(Ql4pL=`iCZRI$I4348i1p2g1u>QU z)Q0&3n(E>6=g%L;f$$~EiY_Yf{7Cp$m0}V&Hp<3&bS2ZCo}Tvs!#5C%ukMRH;8+B0 zSyxxr+o@DKmr(GaOi-sdNNAdWRVg}kz~^SB!++ul9LNTuA+G#45rdg=Kh2BXh$NP_ zw6rupj*!{$j3FYzEn(JFN@=Iln4~~58iqx@T}MobwaQrjTR9U`PT_ z0)HMmaNxkp!@^hoF6X^?&NsKi=EexDATIW{^QI?3hMi+cyJxo|~Bs z&CSk+W~Qd5MnHbO*r%~^-!{Al?tPSvaW9TpUtfPm{xgAO9$-Mw@gA$Jto+W(l`DU^ zYSpSAVZ+aO4S!>O9%A=YeCB`l5LpBx#lXP8-ONw8b@2ZWpJVNQcCCWxy8`c-4;P*P Y55J6*na|8bXs9U>6VMT0U|= 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

+m(MjV`KD1rt6H9=`khT#b!bA_QRyp0Q7 zAcJwJ_s zNYta!P3?HkIJfy*x79g( zRPNHhdZTnA_}>Ugkov)7&{(2+JZ2#uV=ey|T_%o@g`b~y&S`kZffHEww1n61+~tjw z4auRFPIjVN@-CPtYf|WsWgtFTj(Vv{Jpf?{iuXo9i3@bH1>~NHb8=>6Zk$EcbZ$6D`MBtz|@NJ(5k!b#Q zz&#R+@XX6qAZ%|DM5ziiVjPwh4*> zX$V60{1CF2F#I$7qr#d$2%7nR=eoYCOn83yoU`79kJ$U{tETkqowbxoV7Gd@7TurY zw|+PvtY7P@dN*j91f)$!sGm4X;ZFBphOIEmN_ZU0JQ1c^q+NIMyzEeWC+_XoLC#qO z2KD(@X`mz{bFRYZ_F~WPBdA>0uE7-XpRMbj7n?-B#GhcS%kDrMn>dcepIU`l@I?|v z_R<_jCDqoK*k(?=+zNsD;O0_O;6N&AVHz24X%>}{_9x_0G_hKgOVyW)p~+C88cX`=C##}=TkQD(P!oj zu;H+8BkOT;X2VL+7G>csH$GSPX=E z%$W$rp-d0>{pHp&PPYrM?;qm;B1bg%Dvkr9BE@3oA~s*1Y3f%UxOc$$jIgCyrb`bv zYBS){>AkrJbuL`VT7?H5hfZ7wt8qBGWQxQ1rY zS)mPF!%=tOW!*?}QVEt~%iHbI_i%j+O`KMT7{z!l145lrxCW&Q4%~iJPw^{^OZ-eH zb>d9SL+5u=zRGM1TsxscrC|}iH3#*ygZ~iK(y=f6n?l%9r<`Qy0iG*NvvD2FuD#Aq zyG^Q=p+OM_7nvgSzdPuL*tVFiX6!_+r5LP`Yf>~fv~-J>ai7V%o&|IN4&pzBabE^; zUj_=b^(3|QB)9D+*!37Vg0*L4OA4HXy`6;nxu_M=$@5llejkS*++^KfgLVHxTAe{< zE+8j3cupVES`jBnkrdaVJG`pG(Mg~zO~{f>`(uqr+&s+KjG(kL(PTS}Z1_9d@Ow6n zaW)#mcN&I~;D)V9l_Q*{{?=$yNZe1fugMvy89pIj?J(v8(#-0zC&lYFf+UbFFCv2hHq@o-HTp?ITPWneEIACE%3u(5znh(}LOcBrO@n4aN8Wzda< z^7f7!EH9|{qJ@Kiy1dBkmo0&wv*J2|38Uirk9-beH;NF#m<+d`cxt{Dg5JV31}XxR z6+;e+tPD3R@U_-r`e)h7_g_!M^)}SaJk3ZAuDZr@NGl$oMm3LbaXX6n(N_D(?oU>B zBN2bReNmV~F(?!o`xyQKbr&i0ShX1%HZ#Q0xfxTy?{rsn-jVWuM>YTd{O0IGfb@fF ZoM0VkguA-n)1WEFTSYa6N~n3z{{zQp?YaN} literal 3981 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 nm0GElTB(&OnKI&V600000NkvXXu0mjff+~0a diff --git a/frontend/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/frontend/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index 853db043d8a21a3f2429bb521e373e8b1d39cacd..f74d63883e20a28ea2a8bdfc2eb7a0c2d4cd52bd 100644 GIT binary patch literal 17445 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 diff --git a/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 6cdf97c1196d48e9833487ff6de7c4cfc4e1232d..db4e5a9a5f48bfe465c062bdccd18737f197abd1 100644 GIT binary patch literal 32619 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 diff --git a/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/frontend/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index 8e3093a86fffb4d02383785a46189822142d5607..5ead8cd9655d8eae4eec9571e12660117bb7c01d 100644 GIT binary patch literal 33926 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

j=ov3sa^y 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

=^!&WGUDP0i!={8$I^6>quee; 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

6G|nFp*l7m$iO&Bi=ODddL3JjmT=RdJS-|{ zGhs-*K0^EW(MI5uy==bPs$R6!ylAWYV6RIJRQJF(>3YpR>H0v+58_dd&UG_9WTx0u z%?Wcw0I{z#BLSk)!z`4B%)mm^5?xbhIZ(ho6|)CO+VGbb@s1;T>^f4wo{l2c+@Hgi z2Xgp@;YqaDAIGJp5oMlRf9*ByA8PCXlK<|ZE7uV?^%!1~1zP&&4A^Vm~%NVCP`c!EkCG7JvM7mkIh|Qc9bPRq<#1xttfo5vrOQ0l8818@@cg0DQq~9 z$M`8>3SM0le_0o<+`!hmQ&{!wDBgCWguh6hNBPOCEB-RYH-Q#CiJw^W-%wWAefCLw z!7%~Lp&-`L{8m>S_mPU>1A{*T)@WzC2a1GW5YlUt*#90 z-aKp`GHpq0AC92%^mC2h>l2|oc8&zl=8j>@cnF&v0emV|K>XrU4M<4y32>LeprmBy znREDzKa7L(r}4~7!WT3v^aMonuV<~f_$o#pdl;WAXR+NkikALkICBcMHbMv<`dpFyJG)NQvHN%hk6n{32~q?37B1qWNAu{Oc@odd!M(;jIA12D zZ#sR$o3>>L+wmr+o1qf-Q_^*K`*`%s-b@I+2yq< z@>UpqzFZDi{+%;VKFtx<-jNtq4}`IOGzP<)!L36$gk`5)o` z*r%MZPdWag-60=IUAvFd;mTkdn=QzKbK9=!NZ7C*5zGc{6^b$Q~27xAshGkB*vjhnhW zSljKv>=n^&asAcT@V4Wl_^>CA{L{}hdV9p(dHLs-UmN{9-y@IW=bS#=bfOR221a3Z zxM8?`u)5s1Wq1UuyL+%>U=Y8TOrm({QbU8WRx)9iD~rwF^UBLFH@2^te@CA$C$S|o zgnd~bjJ!|eej0fnp?&NnKWiNuXP%qN7Bvsr$ZQcjlWy21ol~|+=h~JZ#-nu1zE3$Z zyGYTM2@Tb(loO)(Nhh&M6zs6Xi=TJ-g`3VVYX-TvpxL>m=h3S- z@DG{Oc=xdcR(;2Zwcib3_mL<=qeyVno-EW}k_;@gMXWc2)}AEv-UKY25v)Jt!J2!W zcz<^U_gBvF@~Gu+l5ob&tsu>gI;~dmKJ*wq9n9mDT(n8O$mL7VG)ge9HG#v+qvU@Z zee`jB%p1h2&OU7E8-d~QLU($gxqZ-merR4FRG$}y&kGAhUV{Tz-`9(e1^nncdloM) zE-!W92-EyCN{wS~;y1O_SE>bU3JhR>#sh1fdYVb|_*f`uxUyNyESw7ehfG)7q$%#j zwn^s)e<<)YAUZL9hhl0R251@<`EGzC#Uk%cY&%xMPYq15Uts=Z(O<@*^li*d^Zbo_ z^)>j;T*Q|>b+q0e!rHt1*#1BS`iT_uPSP@IC|wyS-5DM~<`M-hyOg31(mMmCFA1eD z0c(E(dS49NJN#IC(1Cp?1Nh72Bx)B$S-=EA9Hv`&q|VeYG2ipvYl>xb1JfHfF|H57(59D)|`L-TuK1iY~N+}Jug zgiQmzc%RpUZ_iBQ;cIe3Y}22S{-44`Qh*?|_wN_e*b?YxfQ$w}BwpF)EI}$!pO18+ zIdorkn)k7|zS;7_e$;RsBSgY1QC5c38kxs%?HznT@e0)=_fSX z_{Xlk$Q#2xbTWf=cX+Yxy8-Mu5`*<*8XEQS5IEfgMh=!ff@A^;l_v(NOi_SBWr{|& zIS0#d7RpctmcbM+JyEA|_haK3_?!a%m(}-Spva#T*`OhX+SEaj4=R z4nPh0pa#9L2HY_G4(uEs#_EA?sH21UvqBE#%a@n8mdWiPrlx-U#tYaNb)Ypij<$>k zwgLe};0Uutz7IphVLSEv$i5%0c?t8iZ_>KaBcL%g zk0?K=JyHYFo0`D7YuJ7ykG7LV6rQ*$7fzCy_#ToEUB;JPHQahn5G~*KW7ECl+oYkL zOhfG?O+)4>FQmV~+fk{mr4ALL4vP^SeYgmfMsaweVuG*Zs3c=_uObI!ghr54unZ-j z4#uDlMX{$hfOYNTSbhHxex^T!2c}Nr@{Q${a}8Le&t__%<|yv`)#veF(*%y@I&YD+$+l~`5u1Z8a|rzVVi#d`_pdNa|DnuU1rY5-Y{PRAl5vr zeZ0*f`wMM#=WQ)N%ExkY>Pr-&lbKr9JfiSP?WQWVoc0h<^lPZTRmLsH^4NM`5+CiG zz-Pv)c;E3f*54JtP2UM%S9=25@if#E87L<+P`h$adkRqdi$Yl26rl|fG$p9RMSkmJ zWoRs-mszKlREM}zLEGXWtmN}YyIzW~P1fdER=1Iz(|H+O@?4ikOW|j`=LiY&?8P5p>b&bQEVCS#rolsxZOXB-%N+_$!r*V zeFNC;>qlF{30vBYw!By5eyGw;)1{@RgkhQTK2+=SaLcMeAv-(HE&}NHex&d;AnKfa zz``bqq%N!Gvh||3&OOTtRn&VX(Mmgdx@g5*4qFeWu>QU{Zax%;(vgO>Gt1D>k|)~F zqxKe{^-nN33bkeom7o$h!$s&kHCl#B?-4P-#SQV)2+x;sN_-WE4!Y5e3cgoCqsKf! zDr;TiDX3!!D5G&$XiL~|1jcX}yZXFXeRLSxjt=8fo;b$OJ=_>5r04mUU&j9_O`)}W z6l;zTpmoFzgP?JdV;qF;3qkjXp$8+}C}x$tKHTpkHID#@wxr6nyEKNJ3`0)^86qP^ z?WqA+6Mk3|Ug$A5gJh4o&=z)JkADa^d;74%KL9m4hJ6VatSJ|4S+CGOvQ2}_6a){K zE6h$qkJ;^v*n#&MYk5w1S!3oXc(=7K5Xb5!`hBvymQct zKhIR~l~fV?2VA)6#1M85x?zm_p*sAqxP#DqVPUF*)EE}yk!0>TjKzf3G2tPzMJ*bs zh-iRkp?P+iCJn(#?HJS$pQaAOAZ%1!Px)Y_I#N*Bu|3;vh@s{T`eSZa>!4=rT>mp-jslRI0x>*p*zby!H-^qL~HkcG5R9|>&+ ztHMItz-VH$w*;lH2uoj)-z3z-LqgD~!$K5(3$xV>k4nH0I1(NZFfJ z#91Z21n8zY_AFmRCehq!D6SM#XPiYDk3t;_Lmv%69SvYxpA)M)N3g1M7`G0&U^s)& z9i(-F(7YjNtZ|~yLorxGQ3i*XKJnrw0?6#|ArUKBXojnCUNRN_zC{Sjt*J(an#4%_ zuw{I(rMFes19Xd5=ws^3iT{Eqyh`Ipbk`^l9m}LK_eM7p(#TdDMOVL zqdc=dO0bC8EunFQ)=?crc_GI<>{ejS!@?Jl2_TwV7pIkY{MeHfC$v2o(HQ1QLGvV` zdJ<4+^_(LD)e(l~2*c_OL3f3rxkFH0A?V%+tiA~JfY3NJO{x(*VFGB`WU&TfXhe^X zXwRVK2jQj>ekFa@1jHK^Z*dYe6TO-G34jq>_AjixICF{q)q>}@8A zK_j0>?kp7M%LIu09C4$I{2d+wWPpUmv6~u)8sd5Vin#5qPLkAAXozl=s_VgU7^xDlHe^G zdNdAeR5ZwI()SVOOY}82R_w}X%UrW7wx-Hum(&O*o56Tr7 zArkOVm7UEMXPgNfg2)4V$qjo09tlv*^@>qKiAq@U2N^I!W4_tIs}a} zRE1@jKoam+Nb`&ch{)GrAz%m`Q`k`!eh(k7Z8BS`L%^f*Dai?F9+Co7hGuzV7;g=e z+cO9l-r?h?+gwtD8SX071N6?w)>P4=N?nFx97inoX01b?M})Rvf5)7zkWKM=JR+Ln zS@SGMTQosxV-rTc4@nSuHX!!)$WB6`ZA34#xxbLX;To6Rq{{goktF1B-OMx-IHY;X zCO|IJ=UKGXou6&_NqAcOs-J4@ufEhuri(NW!z0X=IwZDZEQ^F^#57st>y#uo0v?6o zA=5=Uo?=4?9?tbhfK<{x5+L5y(^xl`Wz$9QsJ`WcZhVWK;Nja`^cMHI_%10eej z3R(vRL=A98Bs?TCucJ2mIWk07$IA>4M_mk!1W5WkinGAyBS{z_8EpxzBYYk1Q<2%QkWvo z3P^|9h{s`=BRP%hfaYOaxwDWy&YC-$$!QkjH>McP@X))lvzgum4y~RO(1=A)qQ+%o zhgn2hq|*lMmHPlx$m`m_#J_O%XI&$JGe+265@RM9$IW>H2f4IwQ=evdLz zgfcS0010peJamIpHO-cj9OPxQrFsY+0g&c3KVQ~5ni*{|K%{vxEOe7p4T`&@dIKIB z1T@b{lBSV9k9iq~PAZuLfpKx%jiN1rM(k%Mq2yp}MZ!>Q4-?A|Out8%EfT+Y%Sg*~ znoV$QW|+>J#zUJ^VJ(us<6Q=*VlG8+vDj*^2kkZI?JfTn9?M8&w`I7JvyjFaA&3Z| z(h7hS)8}E+B_k}SaFz)kg%8;Z4MYI3>7rS>&Rs44mL7GqvPK;(-(dnn5V7VNtFV(y zqK#KXgf%WBEP4HywU6m2(?(R*KzSAsWl6K;Gezzx^yQ_`W5Sb#H6VPP6();j*TYGu zk!66`WHB@*I0TFdP=b$|=b()fdoEU7Zn-e<=X@0AX z$`BLFk(Rl3*Nn2-q?61mc*~@1NSaMnBicG@tNn=DGTw|w87=?5Wwi8yfQB68GE_$i z3MB?P$|`e`P%*=E7GbhPZim1T+u+$unM=J{>rjF)57h)HkY_(fNEX&0iM)Qy)1&4I z?d8P>dCSvbye#V$L|%ZWnXkjfARVI#k%vG7ui z;+R68Q%|!<5{euTYa9Zo(kv39s_VMF=KNyIzlX;%R<G=eCNj*6wwn9J z|Cx*c00an0L_t&^ZB^HsTTy>AAH`XEuVuVcVR#rCS=(|=u#?OgW|`k1a1<^{NUg&) ztvob8iOlWzGEn`dlT3qu@)8b%BbOgE?d;(sp?Sd8%=4JwH12T8V%@354-W3N)!R1acHqOpOkD$5*GZh6EtQ~lp`*YSvCu!qt+rffCW zPrupUzaNXo;w-LFT*a?jT&3$4R|%@S$eKs>2q7QG49x{VW`re*q5>W>IVi$%jkS(| zhrkgUXW8E&r~^-t6z&kKJQ&6sh36M6_l4 zJnZXmT}vFUrOU@AEPTX-uK?1=@*YJ>mL;0|c>$UNW&PxyLT<^B&NA1wDA&X1wB^V# zj~y@X>@lM)-V!gPEYnHm{7%)qWUIJ)jH>$wJ2Coi@lib!AJp81fab|Bs-FBJy){p6 zQS)RM6`v5zms?c**+tc#Ths#dab{5qWES;6dQl6e7xhqjQ4gjTt^9FfQ4gmUt&!BC z9-(()Q74I}7WEjt{v}Qw#wp?h@$cGn=YEkMmpK+PAS<|m*QND9y<@+@kx0JWHhQp~|p%t9$; zp_av4DQ8&JavEwS4YitvUd=$SrJ>g{(CZ{=7AwhQ5<1CL0@`F;N)*~u4BAv2)|nWK zHXDUD8{xM;7lk$#g+3pNTj#<*|7L$5e&Qc{u(012D*RPjC>z-q%EjA4+4#OlF1|0C zi|>zS<86^_ye%fg7EQ(5Vww29SSH>UOUBz`^m!`Y78kNVo{H~_C*y6&WV|hvitkG$ zS@x%r@!K-V`2I{XzKj-&YF6_Z0&1edR!WUnLm7jig56i|;3?`=YnkeBZpS?tRCb{rCRX z^Vaj$^Z$I3Ns?79$>i#mMB=8FWOB_DvA`%WBQTS{00000NkvXXu0mjfsWMT1 literal 10455 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 z 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 literal 9441 zcmbW7_d8tAANJ3##jd)sR*AN&%gRUZb+w2d5~35GDA7e*ix5Oa4T6m{U65$eqRVO# zy|*BVvLbqWe4oGIxt<@+oS)7$*UXu@-}k)kd1_>EieCzHDrL)0!XDtSdd`n5O^#-%xwSq_}C)t@WLB>Tca{I&q74)0g)Bl1f^e5ah?aW7!5 zDEa4&&;aY5n$NrBD(9c(eAkXHYCcu+RJ<3I??aZv%tL%*Zt%EO3SH0cH5=}B$fJs4 zOt@!!1Eamd%1gg;k8$*mWY2pJzlYD}b*Z94ysIkjjrs3|eBJSp8vf?e{Ao0B`2+oz znf)dIlcj(YzZ$cW1m%3ppPcs-k(qDJJZ}6B_GeVGE!yZZrgduSu5ZjIn*B3o^|m_U zQlgx&=x#R6xPjajnzbwwL&~qQaG2bYj6SFF|E`F=kvL5U&g$DM+S?nZ4~96a1bu+R zA4kKGH+N4$=MA{hmGU!P*-P%Ibr}{N-Kp^SdqnXXKAb`Ba>j1uVc!4Q7}^`$@^F6U zt%Hy#Q@FBJm!EJ7?B%U-o$Miz*Ty+(R)#2O`E^%Xv+U2G^r-wV2X2a=Q2tA@W0N=_sEjJbM%~8DL zoeYI``|@q?jxak&BX6;fL&Jt2ph}&>i~vbLSAg zMt;2T6fU4~ggC>^TO-cRR2?j9A7*FE0psPClmPp?lHWtY`dlhdt!wD`YKBk7XNvF* zEsw4tGSFG>i`~KoaOb%afloA=f|9ZT@@&e2`0AK!a7R!72gT-;Z4Z2FLqiDZCrG{Q z?dwj)EpJ!&&S~#fRND|cI1Y{IwevM00y6ald5$N$d3!dCTx! z&r8iXy|}Cjs)R!OW1p0G9`BZh(t}QfVHoG9gI=EJ{ev_B#dQ>jXm|1`*aW^4lPtaLfDF!zV{bI!XO#!ugS(0k%+R@9je_~bD#U-UN z&9HmA3jU2Yri&yv8+r{67b9?#Tw$aFtcNu4LxNtlL#{opjd3gZlcRb1q?}@rsXCmm zBNqwn*O(0U`4lJMK$HF8sLpFodJmXnUZGZ<1CQvKl?~p zQ9w5<>tV}|0TA&wt>BE>)pL8cp~s0F=SG7=VobvZ>4811jq#*A9X2pVZ$Iri9>FGa zliDC{eOB5!BWMy=!flbor>E?eD()kb(%<}~{2P|FIaNPzf2 z4eqEjnt~ywuEIv(Dol{c5H`%+tu5WLJ&5v9gbo0gk!S2m7u8fq&YCR|Sdi@@e&D_6 zLyufP^b_5a(mp*#ev#!DoJK&tri0qD1>(V==N!-IKKPee`=SIVC zRvUSn^wZVD%^3<@etv!@pb>@gx+6A9U$>#aPD-`WaMaet>7FIrL-b4h z3g#nDQ{X=2N1XWmQx~AXVMW*E*m$YA9%%WU1&Ta=+B%kDHMp02Ceh^Nn5#0MK=jo} z`QfI3h_|Vys&z01Ue$mSkq%vhRcV$|1-sSU7ovXJntHxtT?H7v##U!XQE%+9DWJ;H zAKZdBMQpyJZBolKk8R6N>s@t21o~?u8P|JA=(3d`#J5((pR*8UJQI)(b^I2sD32YL z4g|t8nk4&5S7sW)j8|{S327dqNobW*v=MJBa4i)~DJ&6``r5wQ-0xEc8uI@P#^^xR$U+RC8($Uenj@uZHEzjT>-taAW?3pU-B?yZ|J+O7Pg5WD!A zMorX0y7zE`b(Lr+BOk5$VL7Dj_9e06;+cyuv_8#hWf`+B&yDEknHGF)kjLX7 zOa+EtR@Vvd+BPI4L}ti9=sm?OS{P`4WM3M{??wI$GQF&(gxFpxohy3(jcMF2O^ZQvr2#Ei7aNjXcF~{>g-F38yBUfmf;ML(j0Vs>Oq_k1TpsSjS{u3 zWG|oBE+v)}8d*SSIaePurkM$Rp#PCaepL~A!{F6Io;-850Pc^af#*fVI<2piRCtBW z7S8S-Nhd`bg1QKmHrh48M(!VSVsP|8K!Kf^pTD+ak>9s*$b>{wm!tU)NtDsA{qk9L zmxvn|9^;e1aKu;+E~AYMFWHZl7+m-RZzaPQp%TYPq6Mny4q?MgmlOF_Kz%0}zzNOV8tqSdgy~$U0zUFG z2R<=_KzuF_pWo|kKEK|ONp(5B-h{4y9N=F7v_$&!qBO}>`U2M=s_|kAwe5sl#82aL3##CN;L`T$E zx)G{j=r;cXKke~RQXCM?en`Uk;nnCa+n10$vBboh-R))j@(rk68+ z@OHF4I*XK1sfvA4JDN8xICakkx2dshIsg!MN$#QP_ERj0gHqL~$V6RP(_$jcDe2rj z7=-`wINA)HzmbwHHqQ{r#}W`OuA?ASMzc7T2F{zXZMy-pyvzT3214#T0ovQG;@5vVZ zVCApv7k1EKwYO$IYcNzt=#G}|nR5`?a0eye-^)UuRmi2r4}yZ)^n5c)X5U5adm^;I zvlodaFSG2e@dlbex2G645izmatw=I_^xd;LfAW)V@lpkJJQ+C5np8-RbbfuFPC>YR z#@b7I@{CyqeK;ON2^s1NO6m~rPFZbyUZJ>PH4n7Wf-2=8tPU(P+ut`I>j1Nnk-4K} zMpdl0J4G1qu!&&jB8jEf_xK_9Yw#YOHk8jPM079uNF;Qe0v8|yxfYJEoLXM6jW6J_ zM;lwCfV;+yr^L!yO2Fsyv07K#4Ju|Z_PjGn>y^r{`Y+jrADIL+zKM4W%R|=sxaBW? zq9WJ;8HlYd)0_Y)Y zY(F}vcG5u#mjM(S%%Luj@MhZMIxj?Egpx* zxt*$Z+Z+~b*YNkgCRefHiP0$1eR6_&_oPT)?CC+SBV1O!%;dMfYl|YNK<@3-a%>8asGau0!o9|jK2GceD+V6!a4_cv;3OrZ&`R7(=YXR{|uoZf$#au2PQRf372cnXn}TAeI#{WgC-U(X6SQI58C2(NGv*H-d~E9 zPvaWc&J(M>n2-FD1VK5+-v#Y*iS}CEXv{s`+=ieacrF;u?l9(%qOtUieD{^6I3RI5 zHK>TnLxg0m%n}wq$s@J7#$1@(f^x9b8}+5$WR}-y`5^ zL2l}3c$N>BT{-I-Rv+dCtVDv}z{}=JQx%Gjytll8#h68BdLS$u+}p{W2owKO)-*CC z0F{ipS{&QT97=t$`2rtfxtypIAhzD}AR zL)^490Ze(UHowRg6Bm%`73%P61`X*r*GrI8+yVL&653R2EHJ6yubDW=O^av^C4Nc* z!x$quz+LUL8g4sgei zIzLs>KK9@H+L=E|X-mr9`l1*z^}Ko>F@6t z%D?ZC9KM_(1^zP{mLSzUcI5nq02RO=@lnV@q>mFm`^|%{Aq>w&MS|56F>jt|XFN<; zpvKoqL;(Ql-_l(uTDnyzBF3Gkt4A!ko*``LC%r0V4~v5Qs<}-A|I|FXpDg6Ov*2F} z$i>Ng<`@6~M)5z~owj9!XJ((!^%-RNkDdq>c)D=z7tl^G(vNR4AyP7Qa;owXhB*D6 zfASZkL$jmHA&(|XtTcGP`gfW@JoVLNGeNa8w?u-u1_lw_0qUe-__nURXx9$a>)N4W z_@H14>pLOdI24!IC~IAAUv=KDMEAnplynsrD|k| zvl$T@3q5F*>#hR&$SKBgiaptp^&w#fLum4~Z%1r=l;}Rj@iMRV`S^&M&agkbufi?^ zg2bkG?i|3{*;nM)zi4Zwn{BTtCEi_}!DuEfu#!(t8Ms6@KEJgd+ot1t&lnMTe)vFu zXv1h_^VENPI72MeX`iN2kwbo(TKsn*9rYW&q&3p5+YL8|zT6lO>{Jo45Kg_BHrv#3HTUs%h}48;)e1kC?1;YQ_byqP)0 zIo6%-XX)cra3Bm=_Zt4b%OIy{AxZtN#;P}*;Fxk8U7z7Z4aqPY{L@h`7GbB#*CBWO zJ{XI^A$2->SrUJDAfpxkCOA>d)%K}4gy|+Jf;KrAOl??qg+~a8jf!`XbzxarTKwNM z?n%J_CV=+V{Yr&4^O!}SDb(df4%Umy6w22j&?7l zDyJ|fE?MX%&hDFLR5chB9|=QVa*#0rX(;VwmP3PNy3gF^YwHNvuAy!+XtxD`y*du2 zUvr+}uLi!_yB`RL%%S{bWXRxD*vNibf02Yzv9%kOR&(&y-@7y{5Vsulyce)FZQrVt zqItF4*8d{LDcMmE-JhVoyCEtzQsS?#%w3Zn7K2uNAPCQRHXDBRZptal77;U(vIfK5 zM2wPn%}Niz&rFL4yc1htz@g5^zDT}$sfWyN-Xv4^`!HjnN`H=l2(tLga=WW_$s&cm z5>b1gbAUwQnG63e;7$<|Gkq3BXA!r%Phz%WY+ z^WU9#UO)-$)@>hnT^nYiNQQEIB6FqI?lIW2AX+Ja6k~^C0k6BK{3G3zjiOU9{3!Dw zO+i{x9ay$)$u&GnLtT|LQNYGMOQvfA)1D&UME*5-S2pjM>vNYk7)}9-lS}_Mi@xUa z0t^Y7!eE(^mnBMCg`uTa?siy*kUbVF_4hBPQhzST?#_4g$K%L@$LePR&~|_%8pi^q zejRM98g**>trKz9Z9}B-7qrjjpg_X!lF!>W5$vLn9T5 zPm@|7)EJ3UNIfR~AHzfB?RuHmB0nMIuQ|)>07=y+?p8cws&hw1%HMA>ao+Z$2-%_E zF%!4-SBdd(S3y>Xmx@#7uPqevXl`vqR0(vT%OI$c%UQRS5K95FMcCIAYG6VKu>G2J zy#kePc90Mr>J-k_xZ=VOX%OGmNlDy6$QmY&|C}P!!|zM9dOa=Jzxf~h3HK3%4yt+< zhw1x<2{FixH?d(2e88qEn%`j!TbAwi+9m#YO%@JT_H#{7__tnrL7GU2^wAk|8DUbHt1 z9tj8TpjoQ_QaHR?-(Y0mZ25V5@D05EB6ZB-1pd+N!#9~ulmO8#v?G-x^T@nl9fW7Y zq0*q81&JZ=onQU^CZ}v!Jaq~?OSacD?taM+!7gV3yuFB|d*!m1_^ccdG`3AZ9s*Z9 zY5ZJBc%|7WR9`JzZD{9`ln1vPCFQIcRm7~Z)Fg>fzZkboAl>YOo!-wv0G))#jn>_NhxE#Az3Y1h~G1horrQ z;DUmbH1mVIV>N0iupH75FPG&H9C|Oi}-bKhji>p(T zPl2k{M_ma|Xz)Da4kdO582<4i?Kd5Nz{*(Y(nr2 zj0wyKdl_O0F@Pycogu+5VIfZ}(7@f3tj)ymFs#D(UMv}*Xn<9-;$8ERH znR3W~&^5aI%g;@^1!?dl0r#1r+kTPwAGg#RPMGo!YqS&^Lt{X8^RHgjb+9$}PUCSu zVVT>befOnuKbVj~p5KAC3Do~!YAqCyVC#ulg_YH)+iMzdU);`c`sZ=wk3?)@d2bb4 zNpxNrX%)qnSQ*ZdJ_m)n;#PwP-#0Zi1upkXbn+KINac;Os`wCcC2Hg0LPXN4Yl8!na2q`x8g(v~aZ<~Q`9GyJ}+$~k#k{;_+<=#E6>z}G>9XpM`aZLKM|vsryq zKva?{!csHp?&Gdec5W6pA#p*kdDv{|pr1i9k95^?ZDx@?Qb4n6i>(Dq={r3FqF}~Ihv+!xuJ$(-9#!##IpAZ`%5^lPg1ma(>}boLVyAY1MY*EZZ@`ZEHGB)_IQz0+j3VE z(#1IGpK~I`NfCI#^W7)ay5J}Ys?k6U4uRi|hl}nyaMZXY%P=W< z4}Z&Ot3EFMzH$-|CnaUA2b+Z5T+$g9vqUfY#b623zkEJr+dd153BsV_O}g(JdZDw` zQ6mJ$>_MT6k4d}fn0Odo6*f7R?V9DP_i`kO4#|)%R#*vXRLZ9=dHhM>_UrH@xLc3s zlfAz%#=H{&+E1!3_d;Igq@G-XjovxJ;8o4$ z&H5rsK?$~wKdPF?zv1@w6GamauU%EV=SD7JP{#kD@_`DHP%7v1r7G?m+CA=|H#EX?=KU;*e_`#*XXZpwHTa+eSC}Knx{?eb z*c5AYxjQ8hpQ4OjNOTvX;`h4yO|grLw%TL<_V5_ZIC(mtGW^$L4!lJfFSE0;_G+%X z#^9OFno%lE<*5>QGPzd5@X9&=5d`q!P0t+7pAqj!^q7o<`h{3QM;I^P(s=7@_T6&r zW!>P1b~mFpSb)2JYxMK;c5AQ=9is#wO3UTqg;>)T1NQ*BOvd^BizQm!?y)qdNletT ziOm!YC}O`|A-I-OqNPBq7QE#Jfr_f+F4V-@9YY4bzpkakZMCnOOD{>B zVux8OKQDXZQ9HC)&@RD(2HG7a-t;KdsxS;3R9#jM(q_o{X93fQlTTA8xVWz!GJ005 z<}Hn_B%3i&VQ0Vu6r;E3)eh_}Ici4P?W}%#kTG>NiuON_=n)}pY16!E+j1uH@3mQZZVAi% zWfwaCR7dj?`|s}`gO$>jU2gxU&HX@)@U)MG4X!lXyTJnvy!>I?>qRFP{6(lwg;2S zip@RKb@-|y&QB(ayXUDb6b@(oT%r%eLBN)T@_w;l9u#0#3?{XHg-Mq&&1AB}gc2QD zS4`F0+=KU-#t?S#wk(jxzEBo`l8znKdcNfys_IZX?(9f~OB882;;pa0g8dkzCi>up z53d)i!%gFE*^^qB{ql1bwTDQE@F1652b;r=5eo$NS{{t}eXupt_dN1!MUGIF_+R73 zsxSx$oJ^7!Qbgzxez>Z*4CO0Xx=Wd)-xwk@bLc!a@0Rt1E_WXPc!Kgu)s2ypbY9~a zm91%&S5(y7=sdYTHeL|bZJ=`g@Baomr`umxKLuPIuNS~9YNWD+fMn%g zZ_^Ay4!we4m4!Cuz)TEBGz<8srd;qH=c z!~Yh=4276zLC$<;!xW8g`(*o-wB4|a!{n1^H;!JQE^N<#n|Y|}5{j?FP$ajiz_dkf zz7*g*{d)LEkqQ8u$!#%ToJ_P{6kNs6FQO^wbNH{N49Fu}L2ldb_rx~uaX*#f z(&dZv)Z4gwmttRP<0#l+WUTXLZ^nQ}_jL)|A{IvD(Latu#rS`(CWA*ErSAJ};MwK< zi=4mcY=FcqQTk<0c3lNu{rw@_vLx)Wa^(DKN#?D6t!q5%&Cfy7k-Q}o0{yS6v;puzqM|28p%F} zTA!C_+zA-nb(f;;cQh7c>}?4@?HwM59}jp()HuvHg#<+fs;bv!4px88klX9=K+0wu zsK_nFAe6&qAN5!RTrmf&R`othO#%gBzWRnk)z(Tx(`R0s?8dd;3l**ZMs%+Seke_@ zt%|IX7L`qReWg#PZee?g;-J60{-@Q!@9)BQ715%7@9T_#&o=YDChN`F*ryYu@>}fH zTTjlY|7e9iejKQ@+ld$&C{T$6jeWC?a#mF!T-_chFV-8p*uDpd`wOTxF*O}b)wo1% zBuNYcsUUnS;e18Hx&P=NbL&x;ZewF(MeA-iTPshsZIJauP{p6$373~P6Z;(BCtNQo zDvnw)1Ak&7Zk}6PTlYnBdCK4^lp}Y$vT*#WY=mpWRIU`C$gWp^_Q#i(Uv;T32MW!W ze}Pp!ZK!b`kl*?D!|;-23;5c@LQ_rj^7uMR;eYi>H~IqMsXx$LeZ&ga%ZBdET38{j-SDufm~13WNNo8VY3r)o%*8 zPt!LBT_RG;V^=&q**!g+v=pcpXrufzU)sl2J5Ld39-gWbmG|XCFKQm@_xlVSd5T1+ zz~3w2Qmg|%@XH$<-65oey9fP0-~36fyQDnqc3C|Oar$@6F5dKl+iKAjh*oz{cde|*@0e7P>=y={(fA-z8ygsy1W@F9 zGT;^pEEc&BET)2lW27(5_rpDqZ_vm1FKLv&;YvN7PU{t<{?M;nz4*gvH{>pKacLIu z|9>6D2lZvKkFnYE{pVsT!8ojM{qQdg zCq`Q$)p4)6oe+Q*+-(5DuXtd~j-`2rrzZb@C8hvP`7H9q`oOghQo6 z{PFe1W4_}O_9Fx>@gIdbi0WNADmeBs!yywieceV7c!b*?a${ZeP=WKXlR1b+zb4F% zsxl9Q=v@ee1&&4{ktB|dIO&~7Kn$kDjp0XKr=k(nZVW2lJ2M&{jgP^oj9%M5-0{%a z@gV3-s4}U16m!~FP5l_XQ9@8G-OcAeIS^XDaV$>*9BW4e2?wfD`Q_wOxUQXS7%3Sa6zlNZ@j(;<8 z3p8S8vne66FkiM4F>RY;eCW3N|6MKp@2X(?n6aPGi6AHXYJ^a9B@zA3_-}k{uo2Ge zwrhU6+nqDFU3$g*pOUZ$6Gfut78`g0AEm(zp$R?m z6sHA_)H%G{LLOmwYpY>S5*#Pqmk7U`FEteNcYm#bZu-Gyq3qq28aG{-_h=|VA-!%s zM$XIM<*`lq7W*l!_4`)%5HSM8RDGo^iAT zicY>~mJ1x$yI&t=j?kF*-GA!I>(oF}aalK#x{)JD6N|MtMYSfC)V!JOZsZWFjb)ga zZT1zGP+XlqkENPekh&Lf1A+g!!v4LV)X8K_&SnN{23%rbTtN$tjc3l$*IX z(|@1Y+TVL}S4&l;*8|sj6{C|1!N{b#Dy{rkR9X2`C{q7?ht-@P&144r_d04UCE-3Z zrQv>7eT7mgrb21==T5`@Ktl)lwpO)NdwfbabTTF2zvrg%ZDn$)7*=zh%rQZ^_b;Me zb}yplCO>sUr$3oA*^hrRLBakOj%hqkS{9XTG)j zPk^Owu>!9&VhAvlN>9dR%_Qy>>J|okFW!^VspLCQp-xZ6jnwHDmQba13iwJ_+l+B5 zhRj~)LN|(}PA%u^V^+u3ZFgS{%QwwQc~6&T%nSedO6p*QN(01EF^cBR**zSHS8u?Zag8a;#rk-az7B2XN8i z!Y8Z0Sfq{^ke-w`l(=Utm=6s_=8Y-3>E5;g-6t6`PYLE5aV0_Gie!!Z-h6|O4BNhPtfWuJ?xWjfC|TM$kuA{dix#(itIeQXm$AqZcEq1u+Dtl?6%L@ddG2@(v$`VnFJf&aDG7~KzL$axuS z4X9WRlw>qW*4MGW!~^aCY>xKIY#%ZTtrdqnrjne8V^80Pts(8l!wZ2B6KT&M@gp25 z`P{2!X2xFbcj}tB2h;D$Y7oBe$TU%ezgF@@H;nXT&e$d{j?v3r1ReQpr4msmXfgzZ zyxLAbe&ml<{#uC<&x>;_sZSrdBe>`zrgeHpeAakSc2d%N;8CDjzU69G6H2?!KIsZ>IX_)z;e!S%ies zF_Id3T0^F{k}!2_2d2F{{0vivO8X@HyPy|xF9Tj6Z0n5$7_zrx&6MNvMaV)lB@lBY zFdTEKK^Kh9aS1p@vyA`Blo~}gVjDONri~*54Ybw-HY*^4Ti=4{x&ll=XlZi9@ijH~ zYKZ0c?;lb;*=cbk@an3OeAj&(EJ z)Q>f+*T9kVkkS*I9K@h-h)ybaMP2Z%lujHR`IjK4q37-`lJZ8Y=mO1ZcPcpxS+IXn zD=DSc3HMv}1NieX=7VR+hWE z>hULtJt5Lq4~4Y@ecLqou1>fkI~pDR7xTWv_D7`vupLtgY~SaIoL(2$dNw-C?KgJR z_{wgUjT-Zc4?2kCOE7M`NmI6gVj*k1FG5ECos!n^<-e33mdAq%MYNvDcC>;6kNvHJ zro=B}*xIaBhO7dUVc>j%Mcj_nX3+1oB(Mn^##UoUwI%ucS92{zu-_G*8n5F*~ zOi9SXqZ*EzX$3UTw@-06A7X}UBl}>AtE|~kYLER0b@)W(i)2gU?hP`^Tacgvel#Bb z!bw$nD)$iurU+E8$*Ndwd;jXG%-49HX!XIZYOY`_=BBJ3+np(-7!Q}`-WIVudE>xDX~V$%S~**{Aupp&+kWpT`O{^ztZt7(2Q_X@bz6#T*C>5` zT7M}~c3TQ)pENTN{^t|)G+{E=OcTscK#0y2-@R0Z_*}r~_KN2+0hFP`AQOWCgqu!y zE*LHrKKqXBH!eL9vU}8lpCaKE+K+K|K8v}iV&~Rc`M~WES)-wyi{zq;_UEma!1*|d z4E7)&?U;eYksr*P^VS5yF*~`uOJu;IK#}rYP%jOG8_I(h8iOwD7MOSDsJ?t%cVl%h zQb9B05}%14*-u6Xb8_`y7DTTTkbDl7qz!|Z=Cbbr*1?=iULb~c^xW&bpR&fGKGAez zQvPM)MM%2}Rsonb%B=9J@lSOVvIH|NWU&9_6^nHn`R{3h9&E23@GxwF+|{+Z@}U@0 z#fcE1_PlH|btba0(HDh5?bjR{(2l{(c4)#~eABr$e@>IJKer7Ewj{rQw&K#mAyc<& zU6zn~Aadbo&F56onZh_(5v)~3pG2a{1FSL6Vd3B_7q%t5e; z|HPti%v#AZWu+}uN110px@BW zi;+vOm#2iS;AR1qU`QI`$V&!LiSvrPHMyZKRsY*kqUTV*M%x{+*yaznm$VnBFu{oG z7IED)XzX8=H5DS2ijTyggqh5>^Dso8%Kug?&Tel$mk@WC7tY^yGkWDWke&HL@Cl%M zkS&G$g2(-@s=Cq9<|ol7cQB`)_T3yWA!ra4it4)4KB#y7iyqCy$35HF4*F0EPig3~ zhFZhTOXRit*G)T2ib!|eZ#R~PhzwZ=jc@o=%fT^hrE(QHK#_KIt61q7Foe)3)%Mlt zHVm8SVRQ0pnyg-GM@|!)@=ITh&y6Jn!Yc=~xp%YN8E%@>)KgoxIMcw2i52hiC<|iT z(!=S6P4`et%WW?Httz44cB3f6>P8MG{=EO8JO2hs9+-6V!9lWL{u*S4HAUhX^iA4> zy?NsNi$&~%8#}zxWlZC6JQw!-Q`uK&!lcCZ5u5QX>Cbcp1y}C;H4;NNW?;ueY?6`TC zBb*@Lc0btGottJiYYVElM(hbKH#yP;VsuRbUcuaOIla2~+=<27*B4_8%}8tAnre$J02Zej3<9zQ%+YoB!o)xUua`kc}&$hapz3tqdryYi)2X6;-hSWN2mn7vu0j_$gRLN0OhwG+OWk$x%{3J;PR zmoFk(XdzYVg)5Zb^qUw$Y~87bDZ_(d#c4G{#<$vY-Dzg_<#iJqA3#iblRz+e-Fox! zm(zBl-x%@5%(ZQ~x!1B2oj&PZp1j#kaktpm;MKLfb6fPBV!IFw0D&CEyX#QLv5-fG z9W?8gt}82V>O{!y3FzDRIDKtMZ^Pg^AZLhEgWMfO4kuL*wyq5=e6D+>FOl1?g- z=Zzh=Fh8qzqZ1Y9TRZvIS!1QYa-mZaHCmRN##!Sflw|uaX)r~e$**e~ zGD}!YGq(VD^}mJR7Aji>{1)ta{wa$)S1HK6PMrVedr*W3eNmST^E>wgXu?~@lA75v*9Fu7dX5p_E zbDHu zFxJ^gdLbCKAGQgA=3dtz9nEwFAELraKovT^u;S(n69n{@YMM*Gh_QX@i~T*Dr!@IF z^_S91AEmXuD1lHSCgw?(ndXx4liil-S%BIvuKd4H9vC7m6zUzSp8&9D&Yb{9DcTF7 ztQonjn0ORxW{9(`H*e~Z4+}W>Kdu?wY$jM^BnC~dur-GwLnZWXR7ni}0Lrz~bj<=! z?OCSM1<}8##r#BSOs2)&pLmyt4D1QC@zx5_bn+Jv{*H-frrfMxw~$W=0D0Vn^xhudcu$zjfMq(gp_!TCLz^8^Li=nFIj zs*E)7Gx`3OzQGc5D6X(pYxqM1l90;rXiTK8gZ}E(oTq7)uh_AOqmMNj`bCo=^(Yoz4mebhBMB~ zU>z2-8DkvE!!v)>L`d~n=gA>^kLKnTTDJiS#VxOEw$-L<<4W!a7R^z0y26Ud()tl4LAFg0B%wOD9)%7mb(n3ACi13^e!M)H%`>k_gWuCcZ#8H)L&LacQo* zjO&xnr-t80k9CC+&f{O?2@8prvU~q9B>KgUn#68CTwnME4TYsTRo%F_^6smsNxjs0 z;WumU5#Nq4+ap~gT|@kDf&M5x>E^Q&tvgTydA{gX$7I)v=9(01J2VX!m?_6d5(%Z? z=(mjuT61b3e#RanXFo8=J?Y6}6NW=viI4kL{yiZHLF@s1n~_H5wKL`hI(G|VwJba7 z6A=4-)DBY~6Fzu!eCzD&@g*D9;CuJMPdWIxXoujvzu$$TVKrljxLZ-0xRas$Tx5* z@A3s>*v?qGgm5wKF0<3b*Z(cn+LnU4XfXJ z{?~L#1GFfsYaNpQh~>BU7>ze}K1DtDUNuj=(Hxv_IEr}GiOEG{bZrq2nNF0ufHFvJ zhy!fmw`(H@zUn;9g@wOh1dkvG{H4FzZWPQ6_Ol`}^w^l4ArlNu0I!dJ{|t^Ps2Gw^ zNJwYc;t7RzR|ClstSzeh73b#+xlSA=2{FDh?u5d@yn73^L=lQeeWNr`o*KJ0ykD5J zlsSd^Yr!%#J#zM1moq`ye0u)A)#mTR+Ru9{ce2BgJXL~vc9|{wlXpv$Yag%4V3&m) z(p zvmGK&-P^VGV_UiWX7M!CH}E_^7x^(y)~+eqqFw{^fZ}K4F|WTa10E%k_E|Xqj zF#?g~=AzZK0t1T}87~kcplx}sE>WQTo^X4xq$yLK=eMZdC`1YmwURJF z7#sx*ZGBriG&)0L4qm5q{UwU2=+B=m2g@X+oeD&yF@uc?+rKfFS^HV(E8{6wFy*j+ z4Xh$S3*qYAUmKSV4@Gh(jz+>G7t*-q4C2-GYwoO3M?p>5p=RE!u+BB)Yes#Fir+df zq6#NM_Uq2f87-A1R-203`=vU^X~Y8r2tCpc3epZQ-k2ns2W-w!iZ+e^N{ixbA3sl+ zDTvGY7dx+U{5}}Mp=~8*>R;${B~dUm6vx{nyPUD4p7-&VD1UXsS?*H|%kSe)UnT-D zw|x(|;p#0ZJAYiVll4NOaZe`Kw!ISG{rzlz>|ODVni2_An`+6@KgmTgZwZlOnFl4^W2keD?kJ|!j><_{OtyT>gl zOFWzzF-o7zp?k1h5m=TD$8YpMvkG__{0_^4Cm>YZ@%3{}%nZO0#tMV589otJnio7* zWA$5qk**|8iZynZ%C02&=vRF@^~1CBzs$|;nMKEoQ>~e zi_eaDX|^nIPT9M0g7$pic?)Bn+B7a>@Xbh%3@abzw9lauRzDHu%~t%-m=b$@EfG% z)iWPA5En1ZQa?=CFNNS|88x2+P7i()}43z3#MNU?S0s;cn+^t zdA_?vBE-QV+meb^AV!3Ya=i$6 zHX9b_t-h*Lp|9c=&_Ocow^%~)*INwiUr;i9f~6)*^1Nz2#q@Yic9!Ax#v&>siBVMg zJ6Ur_gwE@)wDwkHhTYXNzZeS?q*+4ysOJ0|%O!T&!gpD&PRdV-aRs-lUqt32owpC? z4ARvxK*BKHxF2N(yHR9;&8u{d9Hwt@tk_Je&R)VO*O$`W+EK!PvSufH8KcxV_LOf{ zwa7*9;Y z1b(J;n+McBMv&dvwO{%_es0`q?>=S}ff5S8u_D=tEe0I`{ zm-au<_h-BEPQNOBj!oI&b+oPe^CQfa2DPrn&Xlu#&k1;bh%HCrR)~WRb$OligPz)! z`vEuRKicwdr0-O`7~>rGYF50qeAx+>ztbh4Fp7-D^s8&l2L8HhpLZ9CriH-UOtPJ+ zTm=_(xvTpQnDmXn-Gp0_S~H~j1ipZ+C7uT!v8XsNVB@XXy7Bax@Q5@^=3JTQ zf+7n8>sG(^+nFZ$*Bh8`)4T5V9+xkRU@_)`pCsD@H*d8HX%LgauLT|y`hwFXa^@EJet`Vm$S|a7`uvG3$(93ENbjA9-fv#b+W}%6Eov`E!0gpO2meQbh+~5$+tj zMu>Rgqw%wQHdI5v*8$3*_M=Oxo1fK+oNT&-(3WDBtYJ}eR72}@gMga-I znCXp=FW&ilf+T3Z2Y5|dG2mnSKg1+1v9*Td$1~8LZm8_|er@CTBA2)m^O=Rjv74c#U4eJT~p0 ze|@{0cEh9zD;&RnU;+Xje^ob#E8QPk8KOF@{rZzy&eJ?uiiTQ>2SpoV(ea&ve{yk6_pgyoU~FtD&Y-hfid^ks|gTTN(}APav^uh%lC zh|$sj=0{rmecm`AWE8S|t+S~q@v41+DS4Q+ntH~^m};?PIbAwHi+V7+vlxz)u=)JG z*zP=(j(F+gRe#$z$j3Iz3!~up=A?j!m(169w${vd984ab=trKu8q-m>=eP|H8gEkU zdW1exUN=M$slFr96Ax46u;MMi4r=!17xpQ;_<<~^^hOLwcU@2Jr+yk2pPdvx!Gf&1 zv*?Y;%u%NL@t`KeOGRtec7-31ES4};hM+$@NehRBw;F(U)Y5ivITv%1BUx6a{&ttcwN5ez87ZO$WjXpV7CeT9uNAAlmXq4;6$;7L)6N=O# zz$+tJgE81xqFb#gD7q`7r13{jYAx=mZ&W$YiC|NIF8`OoCgJKmj9Fz&nx{{5;zc{M zLWV~9krde^{4=1rpZJLo0I%0=tQ&LX)?2b8iqcA%qUZU&D~x`W>Y{;nG>G5XHSBX| zq=8&;L{!jc!z0}ux7JHU4bY!_(^PRIK;ukj8~kq0+<%qCGXYkc~CElA(jqh_S`liHNslpM zkffI?UJpvg1_f;pK#ZVduo*Yew3B5fTdiS4gKKxBLQO-wKT|QT8li%c{threVk1_| zQ1&MkAy1@s?dvXKMhIP>x}MJelFEqF%-ncXu?6K9RXS%{km$&!LMc&(1jybI+U-V#TvG zG|$|fpy0tG9aE>F0z;g{dEktFZAYGVe~y)YznhSInb?ub zW9&WVGSVGPSdPrVL$NS$Qg@XWOge?r{`3BXZON%0H)n=iH3VByoxBEeFxTZnVd)CN zMfWNbb@~j6QK%#U7~T{PDcPo+3phc0`R?BHKTDXq7+6CW7gjZ?70T)SdhwF*x3l={ z-^Q&{c@pC7$Ng&lu-zjY8p-iJ)%+obYCZ@(DzQ9Np@_NEtxj^3xH8mduCrLH_){r+ zdsw&3ajFU6v4`!t(0w`X8$iEgsHsJc0k>Xjd~Bmf%NE#LgY zN-$2*+Ox-h@AEV84&%xB)RLnZZpptmT>!JikW5gT*|j^#tZ6&8RQTZ@(y{f?3R}LT zNDLYC4|ir|^n~nzN~_r%|5RIr&ogqw5(;hUX&c=FQ~I-@Cq$@n1$D zeEX=XWB&zR#?<>xq=QRXN_oK0ZuU+beY#LX9?(tH#@I{PAdY%2jZl}L9VLK^={wfr z{q|C~>smMl^Xv`kbS#y3Dg<#Bf(C~s;g=)R_aeRjyfYTX6VvWRqO8lPjm37Xs1lh3 zuKtti_UcoFa#_er^Qna_ybI+R1r?bV%2}+-c*oN&DjTlW3QGq3{&!>oV9CCSFOTwx zPPS6ve#*zA+EyEwk=<%Y73Oc{HJXs;H$$RD@8vd)8WB9$Cb&k!{OC8wJDHpbFLh%U z^)^6{Oxb!dvf8Rk4FJ=Iwcc}qSfbhXf$N(N(z>q2#lJXG^6C4bxA^;4^=>BKBgDLd zmz1?##FS!`YPnaqeGkt1^igJ&5k4kypQ_X~WMo-E_sb9iio@I5VR83CiYxV^Oc-j+ zXauPf$}j0QFY0zgzX1EZaKN^Fcn)SiQu>llM|Z)@CZt~H<1HJC{>#8}9>yNi{2-T7 zn&L8Y?gW{oP43+f!7K;pPm8?AK{;ncTJrL>JF3%9shK8S|>{v+J-(j zbOiB}zwYTgW+@87(+gc_s1WjrrQLl1ZniK zT)xQw+n`!BL~yiZ=^9ZK`11m&8pxZotbwv%q0Cg!!^7*BigmsJYIzn|89zwT2jKx% zsdj>uxIra#KrYp#|pQ-diN#1<-UY15eloAs={X%|8Osh)fLA+lD zSyPHWuaIr8D&B}ukCt8efYXK~+_E{4+x$XG5+vCcEuVT4>1#9C48G_vLi4V(QOPQIzj0Zjv)bzNLf5GL;(JX2S<{@nsQ zaQX5!drMEOVWEm?Gmqm6MSUl;*v47PyA7A0oz#>=0XTn|Q1X&*Ga)ojHVL==8r#@) z_V+%SW8ij%y*M6J#O17X4FfAp+}K;MO03Xe!S}{~^jbOPb)0vM&^R%-^|A?z0*x=v zq7AHlCM_%Rx4t>kerZa~?<7C%J(-K?#|?*vyu9j9ormHH&gaZm9wqyi_GCHBgoZ&H zG`7dx-@QNtE1q*V`>&Lgk%JtRrv`Zbk$dfyL;mrO!~Crh$!)=-<0dusrV~p{6D&+fmkFpi zJy;_e{dp()=nD=vB~h>a_^^OD{-52v!L?SQ@s7ijK>X#qL=GqAwP1%3w0esnm$_3t z>I?&nR(N*~Uuw#FYrm5LVj3N{9yh&kS?-E?J?nz-8HHv!J$^1pV_BL)=1wZuCG69w z$K>_v+2PQV=6e8kxT9vOQ#e$bIr zx012)7$)VS<4oj}ZLdhvZ2lTB&5Y~uHClGXWc?>2EW$KI7xy0#C#P31M*nbuyc?1m ziX1cI(j)ieC01%Zpfo;yc+mLp$b;V#m43p{x@(Q4TsL1rU1^!DUJsoGBmnLQ%kGX# zWwIM@a43>VJ_NrC@!d$|Cwa9mMKOSyCAuIM~j5B`rvdo6gw#q z2p4^O0K3c`-iVTZR;$Q^!h^sNQD_tU2;Ddtzzhkb?D1SqF-ZX^~JfL zNK$>UxVK#;OEveQ3+8NS3j1UQGD6u3o`UsE^!D*-_K2ul&E@hj=KoADCoKn!FE(^J zL*|7`k|lGd(`#|0P~3;cGfajp7{nAVee&PQ@ZWu`I;s@c!VLUf=J#oz;&lAoz;if< z==9k;b*%znBTA8q-ct4fTJm};BhXfKN~jQC&o}tIK!ulq-T=x=ue$2?c-A>T?-!w% z8X(XM7ie|dM{x=Gu`V=OmH3PaW{zb?gK2w58*D%RJ%|f6BlWXTbgy~ol5F)4Rr6rp znWJA=16I?7hk-%DnRA}IFsN7fy*WC1l;8HPZZfTR?*xs!qK!!k$i_>kI z_#r@WZvMerv_D0M{g{wFdsu12tT-Ni6}4#9FjtM-IuPn*l=X@yVP-vN{zFwZnS!F zE!RuiV=a#*uDmd;&S#&yW2>4H$3+tc$9X^P2%q+Mb!HRKei)}>R@u&$S}&ew8`0%D zI-ki-A*bJvZu%;4Q0^_|7;v)v9;-O3p?j3_;V!tC+1|{$ts7Zv+*r=X{&dlGfdRT_ znNf-%MkUUh@{9XPpGrwv7Nv#aS`U#0#Ni19r%F5`(ZT1b&Es8%7_uHaXzaF<-0dcF zxFIVPxQw_2-+m;Qr~Tj~%3Cwh%tnkx+r=fH`x}aqfbVOf5nqI%x(}kGV^t1yJi`N; zPk(!KnFAxBXD2qnc9vFjpp-JN#E*80PKr!&zz#|5vz3e-3$bJ#s~Xpof$M%I`}{)hL|7*kw7DF!0ah!j$W-ZP!pZ zQbLIt@BS&5J`kSz(a&I?Ucf@Exbp={46|#w=;}bY-fxk0eXJr`28hUBJPf13@qkJn zwj@A12!uH|_f0KG|EFU3g-h=oj<~-=y8Ue)4JyGVyBT?qzpe>_&PMxtEPx1FQ zKZDk;zrcra3{wyuG08(Z4~IUniAa)6`li}4{p;>Hbo!!PEUDqv@BPn9*Oo*;o@K*- zQqhQAGcSLoosV9LVbCF@ST93uYw@cn41ferI7RHC&li5CZ5zQA&_ViEh z0uQ9QvMN-jx2(w-bMFhD)9Cm++BLh^&DE(VS5)<}1N`LFmV4oUwICf&Ih7YO3�> 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 BkNE%q literal 15916 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 com.yotrip.app com.yotrip.app + 639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com diff --git a/frontend/android/build.gradle b/frontend/android/build.gradle index f1b3b0e..78e3f9a 100644 --- a/frontend/android/build.gradle +++ b/frontend/android/build.gradle @@ -24,6 +24,15 @@ allprojects { } } +subprojects { + configurations.all { + resolutionStrategy { + force "androidx.core:core-ktx:${rootProject.ext.androidxCoreVersion}" + force "androidx.core:core:${rootProject.ext.androidxCoreVersion}" + } + } +} + task clean(type: Delete) { delete rootProject.buildDir } diff --git a/frontend/android/capacitor.settings.gradle b/frontend/android/capacitor.settings.gradle index e365d3d..5c71550 100644 --- a/frontend/android/capacitor.settings.gradle +++ b/frontend/android/capacitor.settings.gradle @@ -2,5 +2,11 @@ include ':capacitor-android' project(':capacitor-android').projectDir = new File('../../node_modules/@capacitor/android/capacitor') +include ':capacitor-camera' +project(':capacitor-camera').projectDir = new File('../../node_modules/@capacitor/camera/android') + include ':capacitor-geolocation' project(':capacitor-geolocation').projectDir = new File('../../node_modules/@capacitor/geolocation/android') + +include ':codetrix-studio-capacitor-google-auth' +project(':codetrix-studio-capacitor-google-auth').projectDir = new File('../../node_modules/@codetrix-studio/capacitor-google-auth/android') diff --git a/frontend/android/variables.gradle b/frontend/android/variables.gradle index 2c8e408..1bb4164 100644 --- a/frontend/android/variables.gradle +++ b/frontend/android/variables.gradle @@ -1,5 +1,5 @@ ext { - minSdkVersion = 23 + minSdkVersion = 24 compileSdkVersion = 35 targetSdkVersion = 35 androidxActivityVersion = '1.9.2' diff --git a/frontend/assets/icon-only.png b/frontend/assets/icon-only.png new file mode 100644 index 0000000000000000000000000000000000000000..d92c5243f3bc3ee16278aa90b84099fcaf98f96f GIT binary patch literal 68044 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 z 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 - - - - - - - Travel Planner - - - - - - - - - - - - - - - - - - - -

- + + + + + + + + Travel Planner + + + + + + + + + + + + + + + + + + + +
+ \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index c47b672..6f7eb83 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,9 +11,11 @@ }, "dependencies": { "@capacitor/android": "^8.4.1", + "@capacitor/camera": "^8.2.0", "@capacitor/cli": "^7.6.7", "@capacitor/core": "^8.4.1", "@capacitor/geolocation": "^8.2.0", + "@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.4", "date-fns": "^4.4.0", "jspdf": "^4.2.1", "jspdf-autotable": "^5.0.8", @@ -29,6 +31,7 @@ "zustand": "^5.0.1" }, "devDependencies": { + "@capacitor/assets": "^3.0.5", "@tailwindcss/postcss": "^4.3.1", "@types/leaflet": "^1.9.12", "@types/react": "^18.3.12", diff --git a/frontend/src/components/CommentModal.tsx b/frontend/src/components/CommentModal.tsx index 06c3d28..e4e6ac0 100644 --- a/frontend/src/components/CommentModal.tsx +++ b/frontend/src/components/CommentModal.tsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from 'react'; import { X, Send, MessageSquare, User, Loader2, Trash2 } from 'lucide-react'; import { io } from 'socket.io-client'; +import { Capacitor } from '@capacitor/core'; import { useTourStore } from '@/store/useTourStore'; import { ConfirmModal } from './ConfirmModal'; @@ -69,7 +70,9 @@ export const CommentModal: React.FC = ({ isOpen, onClose, loc fetchComments(); // Lắng nghe bình luận mới qua Proxy (không cần hardcode URL) - const socket = io(); + const socket = Capacitor.isNativePlatform() + ? io(import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn') + : io(); socket.emit('joinTour', 'global'); // Hoặc logic join cụ thể socket.on('commentAdded', (newCommentData: any) => { diff --git a/frontend/src/components/JoinTourLoginModal.tsx b/frontend/src/components/JoinTourLoginModal.tsx index 6cef8b3..db8742c 100644 --- a/frontend/src/components/JoinTourLoginModal.tsx +++ b/frontend/src/components/JoinTourLoginModal.tsx @@ -1,6 +1,8 @@ import React, { useState, useEffect, useRef } from 'react'; import { X, Mail, Lock, ArrowRight, Loader2, LogIn } from 'lucide-react'; import { useNotification } from '@/hooks/useNotification'; +import { Capacitor } from '@capacitor/core'; +import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'; interface JoinTourLoginModalProps { isOpen: boolean; @@ -119,6 +121,88 @@ export const JoinTourLoginModal: React.FC = ({ } }; + const handleNativeGoogleLogin = async () => { + setError(''); + setIsLoading(true); + try { + const user = await GoogleAuth.signIn(); + console.log('[JoinTourLogin] Native Google user received:', user); + + const idToken = user.authentication.idToken; + if (!idToken) { + throw new Error('Không nhận được token từ Google.'); + } + + const response = await fetch(`/api/v1/auth/google`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ credential: idToken }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.message || 'Đăng nhập Google thất bại'); + } + + localStorage.setItem('token', data.access_token); + localStorage.setItem('user', JSON.stringify(data.user)); + + let currentToken = inviteTokenRef.current || localStorage.getItem('pendingInviteToken'); + if (!currentToken) { + const params = new URLSearchParams(window.location.search); + const urlToken = params.get('token'); + if (urlToken) { + currentToken = urlToken; + localStorage.setItem('pendingInviteToken', urlToken); + } + } + + if (!currentToken) { + throw new Error('Không có mã lời mời để tham gia tour'); + } + + try { + const joinRes = await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: currentToken }), + }); + + const joinData = await joinRes.json().catch(() => ({})); + + if (joinRes.ok) { + notify({ + title: 'Thành công', + message: joinData.message || 'Bạn đã gia nhập tour!', + type: 'success' + }); + localStorage.removeItem('pendingInviteToken'); + if (onJoinSuccess) { + onJoinSuccess(data.user, joinData); + } + onClose(); + } else { + localStorage.removeItem('pendingInviteToken'); + const errorMessage = joinData.message || `Không thể gia nhập tour (HTTP ${joinRes.status})`; + setError(`Lỗi gia nhập tour: ${errorMessage}`); + setIsLoading(false); + } + } catch (e: any) { + setError(`Lỗi khi gia nhập: ${e.message}`); + setIsLoading(false); + } + } catch (err: any) { + console.error('[JoinTourLogin] Native Google login error:', err); + if (err?.message !== 'Sign in window was closed' && err?.message !== '12501') { + setError(err.message || 'Đăng nhập Google thất bại'); + } + setIsLoading(false); + } + }; + const handleEmailPasswordJoin = async (e: React.FormEvent) => { e.preventDefault(); setError(''); @@ -182,7 +266,7 @@ export const JoinTourLoginModal: React.FC = ({ }; useEffect(() => { - if (!isOpen) return; + if (!isOpen || Capacitor.isNativePlatform()) return; const timer = setTimeout(() => { if (typeof window !== 'undefined' && (window as any).google) { @@ -241,10 +325,27 @@ export const JoinTourLoginModal: React.FC = ({ )} - {/* Google OAuth Button */} -
-
-
+ {Capacitor.isNativePlatform() ? ( +
+ +
+ ) : ( +
+
+
+ )}
diff --git a/frontend/src/components/LoginModal.tsx b/frontend/src/components/LoginModal.tsx index 4974729..9c9cce3 100644 --- a/frontend/src/components/LoginModal.tsx +++ b/frontend/src/components/LoginModal.tsx @@ -1,5 +1,7 @@ import React, { useState, useEffect } from 'react'; import { X, Mail, Lock, ArrowRight, Loader2 } from 'lucide-react'; +import { Capacitor } from '@capacitor/core'; +import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'; interface LoginModalProps { isOpen: boolean; @@ -101,8 +103,70 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onSwitc } }; + const handleNativeGoogleLogin = async () => { + setError(''); + setIsLoading(true); + try { + const user = await GoogleAuth.signIn(); + console.log('[Native OAuth] Google user received:', user); + + const idToken = user.authentication.idToken; + if (!idToken) { + throw new Error('Không nhận được token từ Google.'); + } + + const response = await fetch(`/api/v1/auth/google`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ credential: idToken }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.message || 'Đăng nhập Google thất bại'); + } + + localStorage.setItem('token', data.access_token); + localStorage.setItem('user', JSON.stringify(data.user)); + localStorage.removeItem('guest_token'); + localStorage.removeItem('guest_user'); + console.log('[Native OAuth] Google login successful'); + + let pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + try { + const joinRes = await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: pendingInviteToken }), + }); + if (joinRes.ok) { + localStorage.removeItem('pendingInviteToken'); + } + } catch (joinErr) { + console.error('[Native OAuth] Join tour after login failed:', joinErr); + } + } + + if (onLoginSuccess) { + onLoginSuccess(data.user); + } + onClose(); + } catch (err: any) { + console.error('[Native OAuth] Error:', err); + if (err?.message !== 'Sign in window was closed' && err?.message !== '12501') { + setError(err.message || 'Đăng nhập Google thất bại'); + } + } finally { + setIsLoading(false); + } + }; + useEffect(() => { - if (!isOpen) return; + if (!isOpen || Capacitor.isNativePlatform()) return; const timer = setTimeout(() => { if (typeof window !== 'undefined' && (window as any).google) { @@ -244,7 +308,23 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onSwitc Hoặc
-
+ {Capacitor.isNativePlatform() ? ( + + ) : ( +
+ )}

diff --git a/frontend/src/components/PhotoTaker.tsx b/frontend/src/components/PhotoTaker.tsx new file mode 100644 index 0000000..fa8049c --- /dev/null +++ b/frontend/src/components/PhotoTaker.tsx @@ -0,0 +1,73 @@ +import React, { useState } from 'react'; +import { Camera as CameraIcon, X } from 'lucide-react'; +import { Camera, CameraResultType, CameraSource } from '@capacitor/camera'; +import { useNotification } from '@/hooks/useNotification'; + +interface PhotoTakerProps { + onPhotoTaken?: (webPath: string) => void; + onClose?: () => void; +} + +export const PhotoTaker: React.FC = ({ onPhotoTaken, onClose }) => { + const [photoUri, setPhotoUri] = useState(); + const notify = useNotification(); + + const takeAndSavePhoto = async () => { + try { + const image = await Camera.getPhoto({ + quality: 90, + allowEditing: false, // Giữ nguyên ảnh gốc, không qua chỉnh sửa + resultType: CameraResultType.Uri, + source: CameraSource.Camera, // Mở camera trực tiếp + saveToGallery: true, // Tự động lưu ảnh gốc vào thư viện điện thoại + }); + + setPhotoUri(image.webPath); + notify({ + title: 'Thành công', + message: 'Ảnh đã được chụp và tự động lưu vào thư viện điện thoại.', + type: 'success' + }); + if (onPhotoTaken && image.webPath) { + onPhotoTaken(image.webPath); + } + } catch (error: any) { + console.error('Lỗi khi chụp hoặc lưu ảnh:', error); + if (error?.message !== 'User cancelled photos app') { + notify({ + title: 'Lỗi chụp ảnh', + message: 'Không thể truy cập camera hoặc lưu ảnh.', + type: 'error' + }); + } + } + }; + + return ( +

+
+

Chụp ảnh hành trình

+ {onClose && ( + + )} +
+ + + + {photoUri && ( +
+

Xem trước ảnh vừa chụp:

+ Xem trước ảnh chụp +
+ )} +
+ ); +}; diff --git a/frontend/src/components/PublicPhotoModal.tsx b/frontend/src/components/PublicPhotoModal.tsx index 130e158..da0ffa3 100644 --- a/frontend/src/components/PublicPhotoModal.tsx +++ b/frontend/src/components/PublicPhotoModal.tsx @@ -1,6 +1,7 @@ import React, { useState, useEffect, useRef } from 'react'; import { X, Send, MessageSquare, User, Loader2, Calendar, MapPin, Download, Edit, Heart, Trash2 } from 'lucide-react'; import { io } from 'socket.io-client'; +import { Capacitor } from '@capacitor/core'; import { CoordinateSelectModal } from './CoordinateSelectModal'; import { useTranslation } from '../hooks/useTranslation'; import { useConfirm } from '../hooks/useConfirm'; @@ -246,7 +247,9 @@ export const PublicPhotoModal: React.FC = ({ fetchComments(); - const socket = io(); + const socket = Capacitor.isNativePlatform() + ? io(import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn') + : io(); socket.emit('joinPhoto', photo.id); socket.on('photoCommentAdded', (newCommentData: any) => { diff --git a/frontend/src/components/TourChat.tsx b/frontend/src/components/TourChat.tsx index 5cc084c..892888c 100644 --- a/frontend/src/components/TourChat.tsx +++ b/frontend/src/components/TourChat.tsx @@ -1,5 +1,6 @@ import React, { useState, useEffect, useRef } from 'react'; import { io, Socket } from 'socket.io-client'; +import { Capacitor } from '@capacitor/core'; import { Send, MessageSquare, Loader2, Image as ImageIcon, MapPin, Download, X } from 'lucide-react'; import { useNotification } from '@/hooks/useNotification'; @@ -32,13 +33,13 @@ export const TourChat: React.FC = ({ tourId, embedded = false }) const mentionRef = useRef(null); const getHeaders = () => ({ - 'Authorization': `Bearer ${localStorage.getItem('token')}`, + 'Authorization': `Bearer ${localStorage.getItem('token') || localStorage.getItem('guest_token')}`, 'Content-Type': 'application/json' }); const currentUserId = (() => { try { - const token = localStorage.getItem('token'); + const token = localStorage.getItem('token') || localStorage.getItem('guest_token'); if (!token) return null; const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); @@ -87,7 +88,7 @@ export const TourChat: React.FC = ({ tourId, embedded = false }) }, []); const filteredParticipants = participants.filter(p => - p.name.toLowerCase().includes(mentionSearch.toLowerCase()) + p && p.name && p.name.toLowerCase().includes(mentionSearch.toLowerCase()) ); const handleInputChange = (e: React.ChangeEvent) => { @@ -179,7 +180,9 @@ export const TourChat: React.FC = ({ tourId, embedded = false }) // Connect to socket and listen for tour messages useEffect(() => { - const socket = io(); + const socket = Capacitor.isNativePlatform() + ? io(import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn') + : io(); socketRef.current = socket; socket.on('connect', () => { @@ -311,7 +314,7 @@ export const TourChat: React.FC = ({ tourId, embedded = false }) const res = await fetch('/api/v1/upload', { method: 'POST', headers: { - 'Authorization': `Bearer ${localStorage.getItem('token')}` + 'Authorization': `Bearer ${localStorage.getItem('token') || localStorage.getItem('guest_token')}` }, body: formData }); diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx index 7d506ed..4334fba 100644 --- a/frontend/src/index.tsx +++ b/frontend/src/index.tsx @@ -1,6 +1,7 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; +import './utils/nativePatch'; import App from './App.js'; ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/frontend/src/pages/MemberDashboard.tsx b/frontend/src/pages/MemberDashboard.tsx index a37b5d0..3612ee3 100644 --- a/frontend/src/pages/MemberDashboard.tsx +++ b/frontend/src/pages/MemberDashboard.tsx @@ -1,5 +1,6 @@ import React, { useEffect, useState, useRef } from 'react'; import { io, Socket } from 'socket.io-client'; +import { Capacitor } from '@capacitor/core'; import { Compass, Users, @@ -540,7 +541,9 @@ export const MemberDashboard: React.FC = ({ if (!user?.id) return; // Connect to WebSocket using same origin/proxy - const socket = io(); + const socket = Capacitor.isNativePlatform() + ? io(import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn') + : io(); socketRef.current = socket; socket.on('connect', () => { diff --git a/frontend/src/pages/SignupPage.tsx b/frontend/src/pages/SignupPage.tsx index f1d2e08..3b6ca8a 100644 --- a/frontend/src/pages/SignupPage.tsx +++ b/frontend/src/pages/SignupPage.tsx @@ -1,5 +1,7 @@ import React, { useState, useEffect } from 'react'; import { User, Mail, Lock, ArrowRight, ChevronLeft, Phone, MapPin, ShieldCheck } from 'lucide-react'; +import { Capacitor } from '@capacitor/core'; +import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'; interface SignupPageProps { onBack: () => void; @@ -69,8 +71,67 @@ const SignupPage: React.FC = ({ onBack, onSuccess }) => { } }; + const handleNativeGoogleLogin = async () => { + setError(''); + setIsLoading(true); + try { + const user = await GoogleAuth.signIn(); + console.log('[SignupPage] Native Google user received:', user); + + const idToken = user.authentication.idToken; + if (!idToken) { + throw new Error('Không nhận được token từ Google.'); + } + + const response = await fetch(`/api/v1/auth/google`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ credential: idToken }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.message || 'Đăng ký bằng Google thất bại'); + } + + localStorage.removeItem('guest_token'); + localStorage.removeItem('guest_user'); + localStorage.setItem('token', data.access_token); + localStorage.setItem('user', JSON.stringify(data.user)); + + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + console.log('[SignupPage] Auto-joining tour with pending token after Google signup'); + await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: pendingInviteToken }), + }).then(res => { + if (res.ok) { + localStorage.removeItem('pendingInviteToken'); + console.log('[SignupPage] Successfully joined tour after Google signup'); + } else { + console.warn('[SignupPage] Failed to join tour after Google signup:', res.status); + } + }).catch((e) => console.error('Lỗi tự động gia nhập:', e)); + } + + onSuccess(); + } catch (err: any) { + console.error('[SignupPage] Native Google signup error:', err); + if (err?.message !== 'Sign in window was closed' && err?.message !== '12501') { + setError(err.message || 'Đăng ký bằng Google thất bại'); + } + } finally { + setIsLoading(false); + } + }; + useEffect(() => { - if (step !== 'form') return; + if (step !== 'form' || Capacitor.isNativePlatform()) return; const timer = setTimeout(() => { if (typeof window !== 'undefined' && (window as any).google) { @@ -313,7 +374,23 @@ const SignupPage: React.FC = ({ onBack, onSuccess }) => { Hoặc
-
+ {Capacitor.isNativePlatform() ? ( + + ) : ( +
+ )} )}
diff --git a/frontend/src/pages/TourDetailPage.tsx b/frontend/src/pages/TourDetailPage.tsx index c7f3b25..045d313 100644 --- a/frontend/src/pages/TourDetailPage.tsx +++ b/frontend/src/pages/TourDetailPage.tsx @@ -1,5 +1,6 @@ import React, { useState, useEffect, useMemo, useRef } from 'react'; import { io } from 'socket.io-client'; +import { Capacitor } from '@capacitor/core'; import { jsPDF } from 'jspdf'; import autoTable from 'jspdf-autotable'; import { robotoBase64, robotoBoldBase64 } from '../utils/pdfFont'; @@ -1564,7 +1565,9 @@ export const TourDetailPage = ({ useEffect(() => { if (!currentTour) return; - const socket = io(); // Kết nối qua Proxy của Vite (cùng origin) + const socket = Capacitor.isNativePlatform() + ? io(import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn') + : io(); // Kết nối qua Proxy của Vite (cùng origin) socket.on('connect', () => { socket.emit('joinTour', currentTour.id); diff --git a/frontend/src/utils/nativePatch.ts b/frontend/src/utils/nativePatch.ts new file mode 100644 index 0000000..9520d5e --- /dev/null +++ b/frontend/src/utils/nativePatch.ts @@ -0,0 +1,74 @@ +import { Capacitor } from '@capacitor/core'; +import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'; + +function rewriteUrls(obj: any, backendUrl: string): any { + if (obj === null || obj === undefined) return obj; + if (typeof obj === 'string') { + if (obj.startsWith('/uploads/')) { + return `${backendUrl}${obj}`; + } + return obj; + } + if (Array.isArray(obj)) { + return obj.map(item => rewriteUrls(item, backendUrl)); + } + if (typeof obj === 'object') { + const newObj: any = {}; + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + newObj[key] = rewriteUrls(obj[key], backendUrl); + } + } + return newObj; + } + return obj; +} + +if (Capacitor.isNativePlatform()) { + // Initialize native Google Login client to prevent NullPointerException crashes + try { + GoogleAuth.initialize({ + clientId: import.meta.env.VITE_GOOGLE_CLIENT_ID || '639044397050-7hair384u6lle941h033trut1s3q47l4.apps.googleusercontent.com', + scopes: ['profile', 'email'], + grantOfflineAccess: true, + }); + console.log('[Native OAuth] GoogleAuth initialized successfully.'); + } catch (e) { + console.error('[Native OAuth] Failed to initialize GoogleAuth client:', e); + } + + const backendUrl = import.meta.env.VITE_BACKEND_URL || 'https://yotrip.labz.io.vn'; + + const originalFetch = window.fetch; + window.fetch = async (input: RequestInfo | URL, init?: RequestInit): Promise => { + let url = input; + if (typeof url === 'string') { + if (url.startsWith('/api/') || url.startsWith('/uploads/')) { + url = `${backendUrl}${url}`; + } + } else if (url instanceof URL) { + if (url.pathname.startsWith('/api/') || url.pathname.startsWith('/uploads/')) { + url = new URL(`${backendUrl}${url.pathname}${url.search}`); + } + } else if (url && typeof url === 'object' && 'url' in url) { + // If it is a Request object + const req = url as Request; + const reqUrl = req.url; + if (reqUrl.startsWith('/') || new URL(reqUrl).pathname.startsWith('/api/') || new URL(reqUrl).pathname.startsWith('/uploads/')) { + const targetUrl = reqUrl.startsWith('/') ? `${backendUrl}${reqUrl}` : reqUrl.replace(new URL(reqUrl).origin, backendUrl); + url = new Request(targetUrl, req); + } + } + + const response = await originalFetch(url, init); + + // Override the json method of this specific response instance + const originalJson = response.json; + response.json = async () => { + const data = await originalJson.call(response); + return rewriteUrls(data, backendUrl); + }; + + return response; + }; +} diff --git a/google_oauth_plan.md b/google_oauth_plan.md new file mode 100644 index 0000000..9491c2b --- /dev/null +++ b/google_oauth_plan.md @@ -0,0 +1,184 @@ +# Plan: Đăng nhập / Đăng ký bằng Tài khoản Google (Google OAuth) + +Cho phép người dùng tạo tài khoản hoặc đăng nhập nhanh chóng bằng tài khoản Google đang được sử dụng trên thiết bị, không cần nhập email/mật khẩu thủ công. + +--- + +## Luồng hoạt động + +``` +1. Người dùng nhấn nút "Đăng nhập bằng Google" +2. Frontend redirect → Backend endpoint /api/v1/auth/google +3. Backend redirect → Google OAuth Consent Screen +4. Google xác thực xong → callback về /api/v1/auth/google/callback +5. Backend tìm user theo googleId (hoặc email): + - Nếu đã tồn tại → đăng nhập, cấp JWT + - Nếu chưa có → tạo tài khoản mới, cấp JWT +6. Backend redirect về Frontend kèm JWT trong query param +7. Frontend đọc JWT → lưu localStorage → điều hướng vào app +``` + +--- + +## Open Questions + +> [!IMPORTANT] +> Trước khi thực hiện, bạn cần: +> 1. Tạo **Google OAuth 2.0 Client** tại [Google Cloud Console](https://console.cloud.google.com/apis/credentials) +> 2. Điền **Authorized redirect URI**: `http://localhost:3001/api/v1/auth/google/callback` +> 3. Cung cấp `GOOGLE_CLIENT_ID` và `GOOGLE_CLIENT_SECRET` để thêm vào `.env` + +--- + +## Proposed Changes + +### Backend + +--- + +#### [MODIFY] [schema.prisma](file:///home/locpham/travelplanning/backend/prisma/schema.prisma) +- Thêm trường `googleId String? @unique` vào model `User` để lưu Google Account ID (unique identifier của từng tài khoản Google). + +```diff + model User { + id String @id @default(uuid()) + email String? @unique ++ googleId String? @unique + passwordHash String? + ... +``` + +- Chạy migration: `npm run db:migrate` + +--- + +#### [MODIFY] [main.ts](file:///home/locpham/travelplanning/backend/src/main.ts) +**1. Cài đặt thêm dependencies:** +```bash +npm install passport-google-oauth20 @types/passport-google-oauth20 -w backend +``` + +**2. Import & cấu hình Google Strategy (thêm vào đầu file):** +```typescript +import { Strategy as GoogleStrategy } from 'passport-google-oauth20'; +import * as passport from 'passport'; +``` + +**3. Thêm 2 endpoint mới vào `AuthController`:** + +- `GET /auth/google` — Khởi động OAuth flow, redirect sang Google +- `GET /auth/google/callback` — Google callback; tìm/tạo user, cấp JWT rồi redirect về frontend với token + +```typescript +@Get('google') +async googleAuth(@Req() req: any, @Res() res: any) { + // Redirect đến Google login + const params = new URLSearchParams({ + client_id: process.env.GOOGLE_CLIENT_ID!, + redirect_uri: `${process.env.BACKEND_URL}/api/v1/auth/google/callback`, + response_type: 'code', + scope: 'email profile', + access_type: 'offline', + }); + res.redirect(`https://accounts.google.com/o/oauth2/v2/auth?${params}`); +} + +@Get('google/callback') +async googleCallback(@Query('code') code: string, @Res() res: any) { + // 1. Exchange code for tokens với Google + // 2. Lấy profile (googleId, email, name, picture) + // 3. Upsert user theo googleId hoặc email + // 4. Tạo JWT + // 5. Redirect về frontend: http://localhost:5173/auth/callback?token=...&user=... +} +``` + +> [!NOTE] +> Không dùng `passport.authenticate()` middleware để đơn giản hóa, thay vào đó dùng `fetch` trực tiếp tới Google Token endpoint để trao đổi `code` lấy `access_token`, sau đó gọi Google People API để lấy profile. + +**4. Thêm biến môi trường mới vào `.env`:** +```env +GOOGLE_CLIENT_ID=your_client_id +GOOGLE_CLIENT_SECRET=your_client_secret +BACKEND_URL=http://localhost:3001 +FRONTEND_URL=http://localhost:5173 +``` + +--- + +### Frontend + +--- + +#### [MODIFY] [App.tsx](file:///home/locpham/travelplanning/frontend/src/App.tsx) +- Thêm xử lý route `/auth/callback` (hoặc dùng `useEffect` kiểm tra query params khi app mount): đọc `?token=` và `?user=` từ URL, lưu vào `localStorage`, sau đó điều hướng vào trang explore. + +--- + +#### [MODIFY] [LoginModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/LoginModal.tsx) +- Thêm nút **"Đăng nhập bằng Google"** ở phía dưới form, tách biệt bằng divider `— hoặc —`. +- Khi nhấn: `window.location.href = '/api/v1/auth/google'` + +```tsx +{/* Divider */} +
+
+ hoặc +
+
+ +{/* Google Button */} + +``` + +--- + +#### [MODIFY] [SignupPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/SignupPage.tsx) +- Thêm nút "Đăng ký nhanh bằng Google" tương tự ở phần `step === 'form'`. +- Cùng hành động: redirect sang `/api/v1/auth/google`. + +--- + +## Sơ đồ kiến trúc + +```mermaid +sequenceDiagram + participant U as Người dùng + participant FE as Frontend + participant BE as Backend + participant G as Google OAuth + + U->>FE: Nhấn "Đăng nhập bằng Google" + FE->>BE: GET /api/v1/auth/google + BE->>G: Redirect → Google Consent Screen + G->>U: Hiển thị chọn tài khoản + U->>G: Chọn tài khoản + G->>BE: Callback với authorization code + BE->>G: Exchange code → access_token + BE->>G: GET profile (googleId, email, name, avatar) + BE->>BE: Upsert User (tìm theo googleId hoặc email) + BE->>BE: Tạo JWT + BE->>FE: Redirect về /auth/callback?token=...&user=... + FE->>FE: Lưu token/user vào localStorage + FE->>U: Điều hướng vào Explore Map +``` + +--- + +## Verification Plan + +### Automated Tests +- `npm run build -w frontend` để kiểm tra TypeScript. + +### Manual Verification +1. Nhấn "Đăng nhập bằng Google" → chọn tài khoản Google → kiểm tra được điều hướng vào app. +2. Đăng xuất → đăng nhập lại bằng cùng tài khoản Google → kiểm tra không bị tạo user mới. +3. Người dùng đã có tài khoản email trùng → kiểm tra được hợp nhất (merge) với tài khoản hiện có. +4. Kiểm tra `googleId` được lưu vào DB. diff --git a/implementation_plan.md b/implementation_plan.md new file mode 100644 index 0000000..813f0b0 --- /dev/null +++ b/implementation_plan.md @@ -0,0 +1,78 @@ +# Plan to Implement Like-Based Photo Selection, Displays, and Mobile UI Enhancements + +Highlight photos with more likes across different displays and optimize the public photo modal's mobile UI layout. + +--- + +## Proposed Changes + +### 1. Public Photo Modal Mobile UI Layout & Fixes + +#### [MODIFY] [PublicPhotoModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/PublicPhotoModal.tsx) +- **Fixed Photo and Scrollable Comments**: + - Remove parent modal container vertical scrolling on mobile (`overflow-y-auto` -> `overflow-hidden`). + - Set the parent container layout to `flex flex-col h-[90vh] md:h-[85vh] overflow-hidden`. + - The photo container (`h-[45vh]`) and mobile uploader details container will remain static/fixed at the top. + - Set the comments panel container to `flex-1 min-h-0 flex flex-col` and the comments list to `flex-1 overflow-y-auto` so only the comments scroll on mobile. +- **Remove Comments Header on Mobile**: + - Add responsive classes to the comment header (`hidden md:block`) to hide the "Bình luận cộng đồng" / "bình luận từ cộng đồng" title banner on mobile, maximizing space. +- **Style Uploader Details**: + - Reduce font size and remove bold style for the "Người đăng" (Uploader name) elements. + - Desktop uploader text: change from `font-semibold` to `text-xs`. + - Mobile uploader text: change from `text-sm font-semibold text-white` to `text-xs text-slate-200`. +- **Safe Area Like Button**: + - Shift the absolute top position of the Like button to account for safe area insets: `top-[calc(1rem+env(safe-area-inset-top,0px))]`. This prevents browser address bars or notches from clipping it. + +--- + +### 2. Landing Page Like-Based Sorting + +#### [MODIFY] [LandingPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/LandingPage.tsx) +- In `fetchPublicPhotos`, sort the fetched `publicPhotos` array based on the number of likes (`likedUserIds.length`) in descending order. +- This ensures: + 1. The cycling background images naturally present the most-liked public photos first. + 2. The gallery previews at the bottom display the top 8 most-liked photos from the community. + +--- + +### 3. Tour Banner Image Selection + +#### [MODIFY] [TourDetailPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/TourDetailPage.tsx) +- Replace the simple first-photo check for `coverImage` with a function that retrieves the photo with the most likes in the tour. +- If there are no photos in the tour, fall back to the default Unsplash placeholder cover image. + +--- + +### 4. Auto-Select Most Liked Photo for Display + +#### [MODIFY] [ExploreMap.tsx](file:///home/locpham/travelplanning/frontend/src/pages/ExploreMap.tsx) +- In `groupedPhotos` memo, sort each location's photo array so that photos with the most likes appear first. +- This ensures the map pin thumbnail bubble displays the most-liked photo at that coordinate, and clicking it displays that photo as the default. + +#### [MODIFY] [MyPhotosPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/MyPhotosPage.tsx) +- Define a helper function `getMostLikedPhoto(photos)` that returns the photo with the most likes. +- In the `useEffect` that updates `selectedPhotoForDisplay`, use this helper to default-select the most liked photo from the filtered list. + +#### [MODIFY] [TourDetailPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/TourDetailPage.tsx) +- Define the same helper function `getMostLikedPhoto(photos)`. +- Update the default photo selection inside both `useEffect` hooks (the one listening to `filteredPhotos` and the one listening to `currentTour`/`legs` changes) to select the photo with the most likes using this helper. + +--- + +## Verification Plan + +### Automated Tests +- Run `npm run build -w frontend` to verify that there are no compilation or syntax errors. + +### Manual Verification +- **Mobile Public Photo Modal**: + 1. View a photo on mobile browser/emulator. + 2. Verify only the comments scroll, and the header label is hidden. + 3. Verify the Like button position is adjusted. + 4. Verify the Uploader text size is reduced and normal. +- **Landing Page background & gallery**: + 1. Open the landing page. Verify that the previews show the most liked photos first. +- **Tour Banner**: + 1. Verify the tour banner updates to show the photo with the most likes. +- **Map Marker / Photo Timeline default**: + 1. Click map marker and verify most liked photo is active by default. diff --git a/implementation_plan_11features.md b/implementation_plan_11features.md new file mode 100644 index 0000000..a158eff --- /dev/null +++ b/implementation_plan_11features.md @@ -0,0 +1,166 @@ +# Kế hoạch triển khai: 11 Tính năng mới (Bổ sung Đa ngôn ngữ & Giao diện Sáng/Tối) + +Kế hoạch này phác thảo các thay đổi về cơ sở dữ liệu (Prisma Schema), các API Endpoint ở Backend (NestJS), các Component và trang ở Frontend (React) để hiện thực hóa 11 tính năng mới theo yêu cầu của bạn. + +--- + +## User Review Required + +> [!IMPORTANT] +> - **Hệ thống đa ngôn ngữ (Tiếng Việt, Tiếng Anh, Tiếng Trung)**: Chúng tôi sẽ triển khai một hook dịch thuật tinh gọn `useTranslation` dạng từ điển lưu trữ cục bộ ở Frontend. Toàn bộ các tiêu đề, nhãn (labels), nút bấm, thông báo toast và văn bản tĩnh trong dự án sẽ được ánh xạ qua hook này dựa trên ngôn ngữ được lựa chọn. Lựa chọn ngôn ngữ sẽ được lưu trữ vào `localStorage` để giữ trạng thái sau khi tải lại trang. +> - **Cơ chế Giao diện Sáng / Tối (Light / Dark Theme)**: Hệ thống sẽ hỗ trợ 3 tùy chọn: Sáng (Light), Tối (Dark), và theo Hệ thống (System default, sử dụng `prefers-color-scheme` để tự động đổi màu theo hệ điều hành). Chúng tôi sẽ tích hợp các class tiện ích Tailwind CSS v4 (như `dark:bg-slate-900`, `dark:text-slate-100`, `dark:border-slate-800`) vào tất cả các component chính để giao diện đồng bộ hoàn hảo. +> - **Cơ chế lọc ảnh khiêu dâm & Làm mờ khuôn mặt**: Xử lý trực tiếp trên trình duyệt (Client-side) qua TensorFlow.js trước khi tải lên để đảm bảo tối ưu hiệu năng backend. +> - **Tài khoản Admin quản trị hệ thống bằng Secret Key**: Đọc `ADMIN_SECRET_KEY` từ `.env`. Ở Frontend, người dùng có thể kích hoạt quyền Admin tức thời bằng cách nhập chuỗi khóa này để được promote lên `isAdmin: true` trong Database. + +--- + +## Open Questions + +> [!WARNING] +> - Bạn có muốn lưu tùy chọn ngôn ngữ trực tiếp vào tài khoản User ở Database (để khi đăng nhập trên thiết bị khác thì tự động áp dụng ngôn ngữ đó) hay chỉ cần lưu ở `localStorage` trình duyệt là đủ? +> - Ngoài các ngôn ngữ Tiếng Việt, Tiếng Anh, Tiếng Trung, bạn có dự định mở rộng thêm ngôn ngữ nào khác trong tương lai không? + +--- + +## Proposed Changes + +### 1. Thay đổi Cơ sở dữ liệu (`backend/prisma/schema.prisma`) + +Chúng ta sẽ bổ sung các Model mới để lưu trữ: Bộ lọc từ khóa, Cấu hình bộ lọc hình ảnh, Đánh giá Owner, và Mã chia sẻ hành trình. + +#### [MODIFY] [schema.prisma](file:///home/locpham/travelplanning/backend/prisma/schema.prisma) +- Thêm model `WordFilter` để cấu hình bộ lọc từ khóa cấm. +- Thêm model `ModerationSetting` để lưu trạng thái cấu hình lọc của hệ thống. +- Thêm model `TourRating` để lưu đánh giá 5 sao cho Owner/Manager từ các thành viên. +- Thêm model `TourShare` để quản lý liên kết chia sẻ hành trình khẩn cấp. + +```prisma +model WordFilter { + id String @id @default(uuid()) + word String @unique + replacement String + createdAt DateTime @default(now()) +} + +model ModerationSetting { + id String @id @default(uuid()) + blockNsfw Boolean @default(false) + blurFaces Boolean @default(false) +} + +model TourRating { + id String @id @default(uuid()) + tourId String + targetUserId String // Owner/Manager được đánh giá + raterUserId String // Người dùng thực hiện đánh giá + honesty Int @default(5) + transparency Int @default(5) + enthusiasm Int @default(5) + cheerfulness Int @default(5) + seriousness Int @default(5) + planning Int @default(5) + survival Int @default(5) + averageScore Float @default(5.0) + comment String? @db.Text + createdAt DateTime @default(now()) + + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) + targetUser User @relation("RatedUser", fields: [targetUserId], references: [id], onDelete: Cascade) + raterUser User @relation("RatingUser", fields: [raterUserId], references: [id], onDelete: Cascade) + + @@unique([tourId, targetUserId, raterUserId]) +} + +model TourShare { + id String @id @default(uuid()) + tourId String @unique + token String @unique @default(uuid()) + isEnabled Boolean @default(true) + createdAt DateTime @default(now()) + + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) +} +``` + +--- + +### 2. Backend API (`backend/src/main.ts`) + +#### [MODIFY] [main.ts](file:///home/locpham/travelplanning/backend/src/main.ts) +- Triển khai đầy đủ các endpoint như trong kế hoạch trước đó: + - `DELETE /api/v1/public-photos/comments/:id` + - Tích hợp bộ lọc từ khóa cấm ở các API tạo bài đăng/tin nhắn/bình luận. + - API cài đặt bộ lọc ảnh và text của Admin (`/api/v1/admin/moderation`, `/api/v1/admin/word-filters`). + - API Đánh giá Owner/Manager (`/api/v1/tours/:tourId/ratings`) và Leaderboard uy tín (`/api/v1/users/trusted`). + - API kích hoạt Admin bằng secret key (`/api/v1/auth/promote-admin`). + - API chia sẻ hành trình khẩn cấp (`/api/v1/tours/:tourId/share`, `/api/v1/tours/share/:token`). + +--- + +### 3. Giao diện Frontend (`frontend/src/...`) + +#### [NEW] [useTranslation.ts](file:///home/locpham/travelplanning/frontend/src/hooks/useTranslation.ts) +- Tạo hook `useTranslation` để quản lý đa ngôn ngữ: + - Khai báo từ điển ngôn ngữ `translations` chứa các bản dịch Tiếng Việt (VI), Tiếng Anh (EN), Tiếng Trung (ZH). + - Hỗ trợ hàm dịch `t(key: string)` và các hàm chuyển đổi ngôn ngữ, tự động đồng bộ giá trị với `localStorage.getItem('language')`. + - Dịch các tiêu đề, thông báo, nhãn, nút bấm trong toàn bộ ứng dụng sang 3 ngôn ngữ tương ứng. + +#### [NEW] [useTheme.ts](file:///home/locpham/travelplanning/frontend/src/hooks/useTheme.ts) +- Tạo hook `useTheme` để quản lý giao diện Sáng/Tối: + - Quản lý trạng thái theme (`light`, `dark`, `system`). + - Nếu chọn `system`, sử dụng `window.matchMedia('(prefers-color-scheme: dark)')` để lắng nghe thiết lập hệ điều hành của người dùng. + - Thêm hoặc xóa class `dark` khỏi thẻ `` hoặc `` của ứng dụng. + +#### [MODIFY] [index.css](file:///home/locpham/travelplanning/frontend/src/index.css) +- Bổ sung cấu hình màu sắc cơ bản cho dark mode: định nghĩa các màu nền và chữ chính cho chế độ tối để đảm bảo độ tương phản tốt nhất và đồng bộ thiết kế. + +#### [MODIFY] [ExploreMap.tsx](file:///home/locpham/travelplanning/frontend/src/pages/ExploreMap.tsx), [MemberDashboard.tsx](file:///home/locpham/travelplanning/frontend/src/pages/MemberDashboard.tsx), [LandingPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/LandingPage.tsx) +- **Tích hợp Dark Mode**: Thêm các lớp CSS Tailwind như `dark:bg-slate-900`, `dark:text-slate-100`, `dark:border-slate-800` vào tất cả các card, danh sách và thanh điều hướng chính. +- **Thanh công cụ**: Thêm dropdown lựa chọn ngôn ngữ (Tiếng Việt, Tiếng Anh, Tiếng Trung) và nút chuyển đổi giao diện (Sáng/Tối/Hệ thống) ở Sidebar/Header cạnh nút Đăng xuất hoặc trong Menu Cài đặt của Admin. +- **Áp dụng Đa ngôn ngữ**: Thay thế toàn bộ text hiển thị tĩnh bằng hàm dịch `t('key')` (ví dụ: `t('explore')`, `t('logout')`, `t('trusted_members')`,...). + +#### [MODIFY] [ItineraryTimeline.tsx](file:///home/locpham/travelplanning/frontend/src/components/ItineraryTimeline.tsx) +- Bổ sung click vào địa điểm để xem trên bản đồ (gọi `onNavigate`). +- Áp dụng các lớp Tailwind chế độ tối (`dark:bg-slate-900`, `dark:border-slate-800`, `dark:text-gray-100`) để các thẻ chặng và chi tiết điểm dừng hiển thị hoàn hảo ở Dark Mode. +- Thay các đoạn text tĩnh bằng đa ngôn ngữ. + +#### [MODIFY] [TourDetailPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/TourDetailPage.tsx) +- Thêm nút "Xuất PDF" (không kèm chi phí) sử dụng `html2pdf.js` từ CDN. +- Tích hợp Đánh giá ban tổ chức 5 sao. +- Tích hợp Đa ngôn ngữ và Dark Mode vào toàn bộ trang chi tiết hành trình. + +#### [MODIFY] [PublicPhotoModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/PublicPhotoModal.tsx) +- Cho phép xóa bình luận nếu thỏa mãn điều kiện quyền hạn. +- Tích hợp Đa ngôn ngữ và Dark Mode. + +#### [MODIFY] [CoordinateSelectModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/CoordinateSelectModal.tsx) +- Ẩn liên kết Leaflet bằng `attributionControl={false}`. +- Bổ sung ô tìm kiếm địa điểm tích hợp Nominatim API. +- Tích hợp Dark Mode (bảng kết quả tìm kiếm và các khung modal chuyển sang màu tối phù hợp). + +#### [NEW] [ShareJourneyPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/ShareJourneyPage.tsx) +- Giao diện chia sẻ khẩn cấp, tích hợp Đa ngôn ngữ và hỗ trợ cả 2 chế độ Sáng / Tối. + +#### [MODIFY] [App.tsx](file:///home/locpham/travelplanning/frontend/src/App.tsx) +- Cập nhật logic route `/journey/:token`. +- Bao bọc ứng dụng để khởi chạy ngôn ngữ và theme mặc định dựa trên cấu hình hệ thống / localStorage khi ứng dụng khởi chạy. + +--- + +## Verification Plan + +### Automated Tests +- Chạy biên dịch toàn bộ hệ thống để phát hiện lỗi TypeScript: + - Backend: `npm run build -w backend` + - Frontend: `npm run build -w frontend` hoặc chạy bộ kiểm tra TypeScript: `npx tsc --noEmit` ở thư mục frontend. + +### Manual Verification +1. **Kiểm tra Đa ngôn ngữ**: + - Chuyển đổi ngôn ngữ sang Tiếng Anh / Tiếng Trung. + - Xác nhận tất cả tiêu đề, nhãn, nút bấm, thông báo toast cập nhật sang ngôn ngữ mới. +2. **Kiểm tra Dark Mode**: + - Thay đổi cài đặt sang "Tối". Xác nhận toàn bộ giao diện (kể cả các card trắng ở dashboard, timeline, map modal) chuyển thành màu tối. + - Thay đổi cài đặt sang "Hệ thống". Đổi cấu hình hệ điều hành từ Light sang Dark và ngược lại để xác nhận trang web đổi giao diện tương ứng theo thời gian thực. +3. **Kiểm tra click địa điểm xem bản đồ**: Xác nhận click vào địa điểm timeline tự động nhảy sang tab bản đồ và hiển thị lộ trình. +4. **Kiểm tra xuất PDF**: Xác nhận xuất lịch trình ra file PDF không chứa thông tin chi phí. +5. **Kiểm tra xóa bình luận công khai, lọc ảnh & text, chia sẻ khẩn cấp, admin secret key**. diff --git a/package-lock.json b/package-lock.json index 5905daa..40321a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -190,12 +190,6 @@ "fsevents": "2.3.3" } }, - "backend/node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, "backend/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -207,9 +201,11 @@ "version": "1.0.0", "dependencies": { "@capacitor/android": "^8.4.1", + "@capacitor/camera": "^8.2.0", "@capacitor/cli": "^7.6.7", "@capacitor/core": "^8.4.1", "@capacitor/geolocation": "^8.2.0", + "@codetrix-studio/capacitor-google-auth": "^3.4.0-rc.4", "date-fns": "^4.4.0", "jspdf": "^4.2.1", "jspdf-autotable": "^5.0.8", @@ -225,6 +221,7 @@ "zustand": "^5.0.1" }, "devDependencies": { + "@capacitor/assets": "^3.0.5", "@tailwindcss/postcss": "^4.3.1", "@types/leaflet": "^1.9.12", "@types/react": "^18.3.12", @@ -509,6 +506,437 @@ "@capacitor/core": "^8.4.0" } }, + "node_modules/@capacitor/assets": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@capacitor/assets/-/assets-3.0.5.tgz", + "integrity": "sha512-ohz/OUq61Y1Fc6aVSt0uDrUdeOA7oTH4pkWDbv/8I3UrPjH7oPkzYhShuDRUjekNp9RBi198VSFdt0CetpEOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@capacitor/cli": "^5.3.0", + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@trapezedev/project": "^7.0.10", + "commander": "8.3.0", + "debug": "4.3.4", + "fs-extra": "10.1.0", + "node-fetch": "2.7.0", + "node-html-parser": "5.4.2", + "sharp": "0.32.6", + "tslib": "2.6.2", + "yargs": "17.7.2" + }, + "bin": { + "capacitor-assets": "bin/capacitor-assets" + }, + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@capacitor/assets/node_modules/@capacitor/cli": { + "version": "5.7.8", + "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-5.7.8.tgz", + "integrity": "sha512-qN8LDlREMhrYhOvVXahoJVNkP8LP55/YPRJrzTAFrMqlNJC18L3CzgWYIblFPnuwfbH/RxbfoZT/ydkwgVpMrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ionic/cli-framework-output": "^2.2.5", + "@ionic/utils-fs": "^3.1.6", + "@ionic/utils-subprocess": "^2.1.11", + "@ionic/utils-terminal": "^2.3.3", + "commander": "^9.3.0", + "debug": "^4.3.4", + "env-paths": "^2.2.0", + "kleur": "^4.1.4", + "native-run": "^2.0.0", + "open": "^8.4.0", + "plist": "^3.0.5", + "prompts": "^2.4.2", + "rimraf": "^4.4.1", + "semver": "^7.3.7", + "tar": "^6.1.11", + "tslib": "^2.4.0", + "xml2js": "^0.5.0" + }, + "bin": { + "cap": "bin/capacitor", + "capacitor": "bin/capacitor" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/@capacitor/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@capacitor/assets/node_modules/@ionic/utils-process": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.11.tgz", + "integrity": "sha512-Uavxn+x8j3rDlZEk1X7YnaN6wCgbCwYQOeIjv/m94i1dzslqWhqIHEqxEyeE8HsT5Negboagg7GtQiABy+BLbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.4", + "debug": "^4.0.0", + "signal-exit": "^3.0.3", + "tree-kill": "^1.2.2", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/@ionic/utils-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.6.tgz", + "integrity": "sha512-4+Kitey1lTA1yGtnigeYNhV/0tggI3lWBMjC7tBs1K9GXa/q7q4CtOISppdh8QgtOhrhAXS2Igp8rbko/Cj+lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/@ionic/utils-subprocess": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.14.tgz", + "integrity": "sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-process": "2.1.11", + "@ionic/utils-stream": "3.1.6", + "@ionic/utils-terminal": "2.3.4", + "cross-spawn": "^7.0.3", + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/@ionic/utils-terminal": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.4.tgz", + "integrity": "sha512-cEiMFl3jklE0sW60r8JHH3ijFTwh/jkdEKWbylSyExQwZ8pPuwoXz7gpkWoJRLuoRHHSvg+wzNYyPJazIHfoJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/slice-ansi": "^4.0.0", + "debug": "^4.0.0", + "signal-exit": "^3.0.3", + "slice-ansi": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "tslib": "^2.0.1", + "untildify": "^4.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/brace-expansion": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@capacitor/assets/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@capacitor/assets/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@capacitor/assets/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@capacitor/assets/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==", + "dev": true, + "license": "ISC" + }, + "node_modules/@capacitor/assets/node_modules/minimatch": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", + "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@capacitor/assets/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/@capacitor/assets/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@capacitor/assets/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@capacitor/assets/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@capacitor/assets/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@capacitor/assets/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@capacitor/assets/node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@capacitor/assets/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@capacitor/assets/node_modules/sharp": { + "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@capacitor/assets/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==", + "dev": true, + "license": "ISC" + }, + "node_modules/@capacitor/assets/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@capacitor/assets/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/@capacitor/assets/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@capacitor/assets/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@capacitor/assets/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@capacitor/camera": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@capacitor/camera/-/camera-8.2.0.tgz", + "integrity": "sha512-hYfrT6xpL936qoEkIpJzSnb0fQCaTkOux1cXzGBfH8QLOGqr6gSLiWZlZz/fqMPmMKJMNRBqlTQkj5fuMhVZog==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": ">=8.0.0" + } + }, "node_modules/@capacitor/cli": { "version": "7.6.7", "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-7.6.7.tgz", @@ -591,6 +1019,15 @@ "integrity": "sha512-/C1FUo8/OkKuAT4nCIu/34ny9siNHr9qtFezu4kxm6GY1wNFxrCFWjfYx5C1tUhVGz3fxBABegupkpjXvjCHrw==", "license": "ISC" }, + "node_modules/@codetrix-studio/capacitor-google-auth": { + "version": "3.4.0-rc.4", + "resolved": "https://registry.npmjs.org/@codetrix-studio/capacitor-google-auth/-/capacitor-google-auth-3.4.0-rc.4.tgz", + "integrity": "sha512-d548/xKrbMHHbzMYSWnlgZCLZYo2zzY7Onrh3x8ujojrb7atkNK68I6su5WgmaBt4E+R4gxBsWams4554aOFjA==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": "^6.0.0" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -673,7 +1110,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } @@ -691,7 +1127,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -709,7 +1144,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -727,7 +1161,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -745,7 +1178,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -763,7 +1195,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -781,7 +1212,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -799,7 +1229,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -817,7 +1246,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -835,7 +1263,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -853,7 +1280,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -871,7 +1297,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -889,7 +1314,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -907,7 +1331,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -925,7 +1348,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -943,7 +1365,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -961,7 +1382,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -979,7 +1399,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -997,7 +1416,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1015,7 +1433,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1033,7 +1450,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1051,7 +1467,6 @@ "os": [ "openharmony" ], - "peer": true, "engines": { "node": ">=18" } @@ -1069,7 +1484,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -1087,7 +1501,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -1105,7 +1518,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -1123,11 +1535,20 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", @@ -2629,6 +3050,17 @@ "url": "https://github.com/sponsors/Boshen" } }, + "node_modules/@prettier/plugin-xml": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-2.2.0.tgz", + "integrity": "sha512-UWRmygBsyj4bVXvDiqSccwT1kmsorcwQwaIy30yVh8T+Gspx4OlC0shX1y+ZuwXZvgnafmpRYKks0bAu9urJew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xml-tools/parser": "^1.0.11", + "prettier": ">=2.4.0" + } + }, "node_modules/@react-leaflet/core": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@react-leaflet/core/-/core-2.1.0.tgz", @@ -3263,6 +3695,175 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, + "node_modules/@trapezedev/gradle-parse": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@trapezedev/gradle-parse/-/gradle-parse-7.1.3.tgz", + "integrity": "sha512-WQVF5pEJ5o/mUyvfGTG9nBKx9Te/ilKM3r2IT69GlbaooItT5ao7RyF1MUTBNjHLPk/xpGUY3c6PyVnjDlz0Vw==", + "dev": true, + "license": "SEE LICENSE" + }, + "node_modules/@trapezedev/project": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@trapezedev/project/-/project-7.1.4.tgz", + "integrity": "sha512-b5rszBgT5XiRp/m4V2S2Ara2fdFXhPiduxhvCIVTSHq51PgLBjiTEStL6NbUz3V0K5bebF971O+SLRtyBxfCNA==", + "dev": true, + "license": "SEE LICENSE", + "dependencies": { + "@ionic/utils-fs": "^3.1.5", + "@ionic/utils-subprocess": "^2.1.8", + "@prettier/plugin-xml": "^2.2.0", + "@trapezedev/gradle-parse": "7.1.3", + "@xmldom/xmldom": "^0.9.9", + "conventional-changelog": "^3.1.4", + "cross-spawn": "^7.0.3", + "diff": "^5.1.0", + "env-paths": "^3.0.0", + "gradle-to-js": "^2.0.0", + "ini": "^2.0.0", + "kleur": "^4.1.5", + "lodash": "^4.17.21", + "plist": "^3.0.4", + "prettier": "^2.7.1", + "prompts": "^2.4.2", + "replace": "^1.1.0", + "tempy": "^3.1.0", + "tmp": "^0.2.1", + "ts-node": "^10.2.1", + "xcode": "^3.0.1", + "xml-js": "^1.6.11", + "xpath": "^0.0.32", + "yargs": "^17.2.1" + } + }, + "node_modules/@trapezedev/project/node_modules/@ionic/utils-process": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@ionic/utils-process/-/utils-process-2.1.11.tgz", + "integrity": "sha512-Uavxn+x8j3rDlZEk1X7YnaN6wCgbCwYQOeIjv/m94i1dzslqWhqIHEqxEyeE8HsT5Negboagg7GtQiABy+BLbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ionic/utils-object": "2.1.6", + "@ionic/utils-terminal": "2.3.4", + "debug": "^4.0.0", + "signal-exit": "^3.0.3", + "tree-kill": "^1.2.2", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@trapezedev/project/node_modules/@ionic/utils-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@ionic/utils-stream/-/utils-stream-3.1.6.tgz", + "integrity": "sha512-4+Kitey1lTA1yGtnigeYNhV/0tggI3lWBMjC7tBs1K9GXa/q7q4CtOISppdh8QgtOhrhAXS2Igp8rbko/Cj+lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@trapezedev/project/node_modules/@ionic/utils-subprocess": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/@ionic/utils-subprocess/-/utils-subprocess-2.1.14.tgz", + "integrity": "sha512-nGYvyGVjU0kjPUcSRFr4ROTraT3w/7r502f5QJEsMRKTqa4eEzCshtwRk+/mpASm0kgBN5rrjYA5A/OZg8ahqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ionic/utils-array": "2.1.6", + "@ionic/utils-fs": "3.1.7", + "@ionic/utils-process": "2.1.11", + "@ionic/utils-stream": "3.1.6", + "@ionic/utils-terminal": "2.3.4", + "cross-spawn": "^7.0.3", + "debug": "^4.0.0", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@trapezedev/project/node_modules/@ionic/utils-terminal": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@ionic/utils-terminal/-/utils-terminal-2.3.4.tgz", + "integrity": "sha512-cEiMFl3jklE0sW60r8JHH3ijFTwh/jkdEKWbylSyExQwZ8pPuwoXz7gpkWoJRLuoRHHSvg+wzNYyPJazIHfoJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/slice-ansi": "^4.0.0", + "debug": "^4.0.0", + "signal-exit": "^3.0.3", + "slice-ansi": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "tslib": "^2.0.1", + "untildify": "^4.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@trapezedev/project/node_modules/diff": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@trapezedev/project/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@trapezedev/project/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/@trapezedev/project/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@trapezedev/project/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==", + "dev": true, + "license": "ISC" + }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -3393,6 +3994,13 @@ "@types/geojson": "*" } }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -3408,6 +4016,13 @@ "undici-types": ">=7.24.0 <7.24.7" } }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/pako": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", @@ -3679,6 +4294,16 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@xml-tools/parser": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@xml-tools/parser/-/parser-1.0.11.tgz", + "integrity": "sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chevrotain": "7.1.1" + } + }, "node_modules/@xmldom/xmldom": { "version": "0.9.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", @@ -3754,6 +4379,13 @@ "node": ">=0.4.0" } }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/ajv": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", @@ -3866,6 +4498,13 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" + }, "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", @@ -3873,6 +4512,16 @@ "dev": true, "license": "MIT" }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3939,6 +4588,119 @@ "dev": true, "license": "MIT" }, + "node_modules/bare-events": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz", + "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.2.tgz", + "integrity": "sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.1.tgz", + "integrity": "sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.1.tgz", + "integrity": "sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.3.tgz", + "integrity": "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.8.1", + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-stream/node_modules/b4a": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz", + "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -4063,6 +4825,23 @@ "url": "https://opencollective.com/express" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, "node_modules/bplist-parser": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", @@ -4311,6 +5090,34 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001799", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", @@ -4389,6 +5196,16 @@ "dev": true, "license": "MIT" }, + "node_modules/chevrotain": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", + "integrity": "sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "regexp-to-ast": "0.5.0" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -4510,6 +5327,20 @@ "node": ">=0.10.0" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -4528,6 +5359,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -4552,6 +5394,17 @@ "node": ">= 6" } }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4624,6 +5477,273 @@ "node": ">= 0.6" } }, + "node_modules/conventional-changelog": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", + "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "deprecated": "Deprecated and no longer maintained. Please use conventional-changelog instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "deprecated": "This preset is deprecated. Please use conventional-changelog-conventionalcommits or conventional-changelog-angular instead.", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", @@ -4654,6 +5774,13 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, "node_modules/cors": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", @@ -4719,6 +5846,35 @@ "node": ">= 8" } }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/css-line-break": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", @@ -4729,6 +5885,36 @@ "utrie": "^1.0.2" } }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -4736,6 +5922,16 @@ "devOptional": true, "license": "MIT" }, + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -4753,6 +5949,16 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -4770,6 +5976,59 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-equal": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", @@ -4790,6 +6049,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", @@ -4884,6 +6153,50 @@ "node": ">=0.3.1" } }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, "node_modules/dompurify": { "version": "3.4.11", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.11.tgz", @@ -4894,6 +6207,34 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dotenv": { "version": "17.4.2", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", @@ -5008,10 +6349,20 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/engine.io": { - "version": "6.6.8", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.8.tgz", - "integrity": "sha512-2agL3ueZhqxoVrfmntO8yuVj+uNSlIOnhykYHk3Cq0ShYPdUjjUiSJrQvXjq01I9jAuI0Zl2YO8Evv5Mqytm5g==", + "version": "6.6.9", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.9.tgz", + "integrity": "sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==", "license": "MIT", "dependencies": { "@types/cors": "^2.8.12", @@ -5023,7 +6374,7 @@ "cors": "~2.8.5", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.20.1" + "ws": "~8.21.0" }, "engines": { "node": ">=10.2.0" @@ -5042,27 +6393,6 @@ "xmlhttprequest-ssl": "~2.1.1" } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/engine.io-parser": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", @@ -5086,6 +6416,16 @@ "node": ">=10.13.0" } }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -5200,6 +6540,16 @@ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -5286,12 +6636,32 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/exifr": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/exifr/-/exifr-7.1.3.tgz", "integrity": "sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==", "license": "MIT" }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, "node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", @@ -5392,6 +6762,13 @@ "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", "license": "Apache-2.0" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -5505,6 +6882,19 @@ "url": "https://opencollective.com/express" } }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", @@ -5569,6 +6959,13 @@ "resolved": "frontend", "link": true }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -5584,6 +6981,32 @@ "node": ">=12" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs-monkey": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", @@ -5591,11 +7014,17 @@ "dev": true, "license": "Unlicense" }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, "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, @@ -5667,6 +7096,110 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz", + "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -5680,6 +7213,103 @@ "node": ">= 0.4" } }, + "node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-raw-commits/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "deprecated": "Deprecated and no longer maintained. Use @conventional-changelog/git-client instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/git-semver-tags/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/gitconfiglocal/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true, + "license": "MIT" + }, "node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", @@ -5758,6 +7388,61 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/gradle-to-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gradle-to-js/-/gradle-to-js-2.0.1.tgz", + "integrity": "sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash.merge": "^4.6.2" + }, + "bin": { + "gradle-to-js": "cli.js" + } + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5831,6 +7516,16 @@ "node": ">= 0.4" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/heic-convert": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/heic-convert/-/heic-convert-2.1.0.tgz", @@ -5863,6 +7558,32 @@ "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", "license": "MIT" }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/html2canvas": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", @@ -5950,6 +7671,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -6003,6 +7734,22 @@ "dev": true, "license": "MIT" }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", @@ -6053,6 +7800,26 @@ "node": ">=8" } }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -6077,6 +7844,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -6102,6 +7895,13 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6177,6 +7977,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -6191,6 +7998,13 @@ "dev": true, "license": "MIT" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -6223,6 +8037,33 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/jsonwebtoken": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", @@ -6301,6 +8142,16 @@ "@keyv/serialize": "^1.1.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -6621,6 +8472,46 @@ "node": ">=13.2.0" } }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/loader-runner": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", @@ -6635,6 +8526,20 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/lodash": { "version": "4.18.1", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", @@ -6678,6 +8583,13 @@ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.isnumber": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", @@ -6696,6 +8608,13 @@ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -6766,6 +8685,19 @@ "dev": true, "license": "ISC" }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -6797,6 +8729,202 @@ "node": ">= 4.0.0" } }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/meow/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/merge-descriptors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", @@ -6856,6 +8984,29 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", @@ -6879,6 +9030,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", @@ -6900,6 +9066,36 @@ "node": ">= 18" } }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -6976,6 +9172,13 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "dev": true, + "license": "MIT" + }, "node_modules/native-run": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/native-run/-/native-run-2.0.3.tgz", @@ -7017,6 +9220,19 @@ "dev": true, "license": "MIT" }, + "node_modules/node-abi": { + "version": "3.92.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz", + "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -7043,6 +9259,27 @@ "lodash": "^4.17.21" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -7054,6 +9291,17 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-html-parser": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz", + "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^4.2.1", + "he": "1.2.0" + } + }, "node_modules/node-releases": { "version": "2.0.47", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz", @@ -7073,6 +9321,35 @@ "node": ">=6.0.0" } }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7206,6 +9483,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -7301,6 +9614,16 @@ "node": ">= 0.4.0" } }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -7310,6 +9633,13 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", @@ -7482,6 +9812,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/plist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", @@ -7581,6 +9921,94 @@ "node": ">=0.10.0" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/prettier": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.5.tgz", + "integrity": "sha512-zxcTTCedNGJM4R8sj/Cq/F0W/c4iE0afWBcBwMTRtw4WHYP9TWkYjdiH3npPRUYsXQCPR0hTU9yjovOu+E6EQA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, "node_modules/promise-coalesce": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/promise-coalesce/-/promise-coalesce-1.5.0.tgz", @@ -7625,6 +10053,17 @@ "node": ">= 0.10" } }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -7635,6 +10074,18 @@ "node": ">=6" } }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, "node_modules/qs": { "version": "6.15.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", @@ -7650,6 +10101,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/quill": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", @@ -7727,6 +10188,29 @@ "node": ">= 0.10" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -7796,6 +10280,88 @@ "react-dom": "^16 || ^17 || ^18" } }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -7824,6 +10390,20 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/redis": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/redis/-/redis-6.0.0.tgz", @@ -7912,6 +10492,12 @@ "@redis/client": "^6.0.0" } }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -7919,6 +10505,13 @@ "license": "MIT", "optional": true }, + "node_modules/regexp-to-ast": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", + "integrity": "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==", + "dev": true, + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", @@ -7939,6 +10532,289 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/replace": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/replace/-/replace-1.2.2.tgz", + "integrity": "sha512-C4EDifm22XZM2b2JOYe6Mhn+lBsLBAvLbK8drfUQLTfD1KYl/n3VaW/CDju0Ny4w3xTtegBpg8YNSpFJPUDSjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "2.4.2", + "minimatch": "3.0.5", + "yargs": "^15.3.1" + }, + "bin": { + "replace": "bin/replace.js", + "search": "bin/search.js" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/replace/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/replace/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/replace/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/replace/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/replace/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/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/replace/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/replace/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/replace/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/replace/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/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/replace/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/replace/node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/replace/node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/replace/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/replace/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/replace/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7959,6 +10835,35 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -8245,6 +11150,13 @@ "url": "https://opencollective.com/express" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -8446,6 +11358,95 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", + "dev": true, + "license": "MIT" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -8488,13 +11489,13 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.7.tgz", - "integrity": "sha512-e0LyK91f3cUxTmv95/KzoLg47+zF+s/sbxRGDNsyG4dmIP8ZSX8ax6byOxfJXeNNtS/8AZlfD+uP7gBeR7DLlg==", + "version": "2.5.8", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.8.tgz", + "integrity": "sha512-6Oy52pbg+kvdCVvjcN+FnY7BvxZ7cIHNScbvztT/It5d0vbwoJoVZmF2gjJmnV0/4WlXRfG15zc45ySk9Ah8bw==", "license": "MIT", "dependencies": { "debug": "~4.4.1", - "ws": "~8.20.1" + "ws": "~8.21.0" } }, "node_modules/socket.io-client": { @@ -8572,6 +11573,55 @@ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -8600,6 +11650,16 @@ "node": ">= 0.8" } }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "dev": true, + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -8608,6 +11668,18 @@ "node": ">=10.0.0" } }, + "node_modules/streamx": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz", + "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -8653,6 +11725,29 @@ "node": ">=4" } }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strtok3": { "version": "10.3.5", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", @@ -8685,6 +11780,19 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/svg-pathdata": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", @@ -8742,6 +11850,49 @@ "node": ">=18" } }, + "node_modules/tar-fs": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", + "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", + "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar-stream/node_modules/b4a": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, "node_modules/tar/node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", @@ -8751,6 +11902,58 @@ "node": ">=18" } }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.2.0.tgz", + "integrity": "sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser": { "version": "5.48.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", @@ -8876,6 +12079,41 @@ "dev": true, "license": "MIT" }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-decoder/node_modules/b4a": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, "node_modules/text-segmentation": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", @@ -8886,6 +12124,13 @@ "utrie": "^1.0.2" } }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, "node_modules/through2": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", @@ -8912,6 +12157,16 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tmp": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -8939,6 +12194,13 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -8948,6 +12210,16 @@ "tree-kill": "cli.js" } }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -9048,6 +12320,32 @@ "fsevents": "~2.3.3" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", @@ -9115,6 +12413,20 @@ "node": ">=14.17" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/uid": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", @@ -9145,6 +12457,22 @@ "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "license": "MIT" }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -9238,6 +12566,17 @@ "base64-arraybuffer": "^1.0.2" } }, + "node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -9245,6 +12584,17 @@ "dev": true, "license": "MIT" }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9355,6 +12705,13 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/webpack": { "version": "5.106.2", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", @@ -9461,6 +12818,17 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -9476,6 +12844,20 @@ "node": ">= 8" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -9500,9 +12882,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", - "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -9520,6 +12902,43 @@ } } }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml-js/node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", @@ -9559,6 +12978,16 @@ "node": ">=0.4.0" } }, + "node_modules/xpath": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", + "integrity": "sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/task.md b/task.md new file mode 100644 index 0000000..e820c74 --- /dev/null +++ b/task.md @@ -0,0 +1,46 @@ +# Nhiệm vụ: Sửa giao diện Bong bóng Tour & Kết nối Thành viên + +- [x] [Database] Thêm model `UserConnection` và `DirectMessage` vào schema.prisma và chạy db:migrate +- [x] [Backend] Tạo các API quản lý kết nối (`connections`) và tin nhắn (`messages`) cùng WebSocket Gateway +- [x] [Frontend] Sửa luồng redirect sau khi đăng nhập/đăng ký bằng Google trong App.tsx +- [x] [Frontend] Sửa vị trí tâm neo bong bóng Tour (iconSize & iconAnchor) trong ExploreMap.tsx +- [x] [Frontend] Thêm màu viền (xanh, đỏ, trắng) và tooltip phân loại Tour trên bản đồ khám phá +- [x] [Frontend] Chặn click trái đối với tour viền xanh; cài đặt touchstart/contextmenu để xin join bằng nhấn giữ/click phải +- [x] [Frontend] Xây dựng trang Dashboard thành viên (`MemberDashboard.tsx`) tích hợp chat box, quản lý kết nối bạn bè/gia đình, quản lý tour và ảnh cá nhân + +## Giai đoạn 2: Sửa đổi giao diện Dashboard Thành viên (Desktop & Mobile) +- [x] [Frontend] Cập nhật giao diện MyPhotosPage.tsx thành Dark Slate theme để đồng bộ với dashboard +- [x] [Frontend] Tích hợp trực tiếp MyPhotosPage vào tab Thư viện ảnh trong MemberDashboard.tsx +- [x] [Frontend] Sửa giao diện Desktop của MemberDashboard.tsx: căn giữa h-[90vh], chỉnh màu thẻ tour, và sửa đè viền Mạng lưới kết nối +- [x] [Frontend] Sửa giao diện Mobile của MemberDashboard.tsx: thiết lập hiển thị fullscreen menu các nút, và quay lại menu từ các trang chi tiết/chat +- [x] Xác minh toàn bộ tính năng và lỗi hiển thị trên cả desktop và điện thoại di động + +## Giai đoạn 3: Realtime Notification qua WebSockets +- [x] [Backend] Thêm notifyConnectionAccepted và notifyJoinRequestAccepted vào CommentGateway trong main.ts +- [x] [Backend] Inject CommentGateway và trigger notifyConnectionAccepted trong ConnectionController +- [x] [Backend] Inject CommentGateway và trigger notifyJoinRequestAccepted trong TourController +- [x] [Frontend] Thêm event listeners (connectionAccepted, joinRequestAccepted) vào socket hook trong MemberDashboard.tsx +- [x] Xác minh các sự kiện thông báo thời gian thực trên giao diện người dùng + +## Giai đoạn 4: Notification Badges & System Push Notifications (Mobile/Desktop) +- [x] [Frontend] Khởi tạo yêu cầu quyền Notification hệ thống khi mount và tạo helper showSystemNotification +- [x] [Frontend] Khai báo các state unreadChatSenders và unreadTourSenders cùng helper isMemberOfMyTours +- [x] [Frontend] Cập nhật event listener messageReceived để kích hoạt push notification và set các state chưa đọc +- [x] [Frontend] Hiển thị Badge thông báo trên các tab/menu button và danh sách chat liên hệ +- [x] [Frontend] Xử lý xóa trạng thái chưa đọc khi chọn chat user hoặc click tab Hành trình của tôi +- [x] Xác minh hiển thị Badge và thông báo đẩy hệ thống thành công trên cả desktop/mobile + +## Giai đoạn 5: Trò chuyện Nhóm Hành trình & Đính kèm (Ảnh nén 2K + Vị trí GPS) +- [x] [Database] Cập nhật schema.prisma (thêm TourMessage và các trường DirectMessage), chạy db migration +- [x] [Backend] Thêm UploadController, cập nhật DirectMessageController và tạo TourMessageController trong main.ts +- [x] [Frontend] Viết component TourChat.tsx (nén canvas 2K, tải ảnh, lấy vị trí GPS) +- [x] [Frontend] Tích hợp tab Trò chuyện và sự kiện socket vào TourDetailPage.tsx +- [x] [Frontend] Nâng cấp giao diện chat trong MemberDashboard.tsx (nén canvas 2K, tải ảnh, GPS, và badge tour chat) +- [x] Xác minh biên dịch TypeScript và chạy các kịch bản kiểm thử trò chuyện trực tiếp/nhóm thành công + +## Giai đoạn 6: Nhắc tên (@Mention) trong Chat & Tắt thông báo +- [x] [Frontend] Sửa lỗi hiển thị bong bóng tour trên bản đồ bằng cách quét tất cả chặng (ExploreMap.tsx) +- [x] [Backend] Cập nhật API gửi tin nhắn nhóm tour để nhận taggedUserIds và gửi socket notification riêng (main.ts) +- [x] [Frontend] Thêm chức năng tag @ thành viên trong component TourChat.tsx +- [x] [Frontend] Thêm nút Bật/Tắt thông báo đẩy & logic Mute trong MemberDashboard.tsx +- [x] Xác minh biên dịch TypeScript và chạy các kịch bản kiểm thử tag & mute thành công diff --git a/ui_implementation_plan.md b/ui_implementation_plan.md new file mode 100644 index 0000000..5a17822 --- /dev/null +++ b/ui_implementation_plan.md @@ -0,0 +1,185 @@ +# Kế hoạch: Tái thiết kế giao diện xem ảnh và bình luận trên Mobile (PublicPhotoModal) + +Thiết kế lại giao diện mobile của modal xem ảnh công khai để trải nghiệm cuộn trang tự nhiên hơn, tương tự như Instagram/Twitter — ảnh chiếm toàn bộ chiều rộng màn hình từ trên xuống, thông tin người đăng và các nút được bố cục rõ ràng, sau đó cuộn xuống xem bình luận một cách liền mạch. + +--- + +## Phân tích hiện trạng + +Cấu trúc hiện tại của modal trên mobile (`flex flex-col`): +1. **Container (90vh, overflow-hidden)** — toàn bộ nội dung bị "kẹt" trong 90vh +2. Phần ảnh (`h-[45vh]`) — cố định, không thể co giãn +3. Phần "Mobile Uploader" strip — cố định (`shrink-0`) +4. Phần comment panel (`flex-1 min-h-0`) — chỉ phần danh sách comment cuộn bên trong + +**Vấn đề**: Ảnh bị giới hạn ở `h-[45vh]`, có padding `p-4` từ container ngoài nên không chạm mép màn hình. Nút like nằm ở góc trên trái (gần nút X), người đăng nằm ở vùng riêng giữa ảnh và comment, không cuộn cùng content. + +--- + +## Thay đổi đề xuất + +### [MODIFY] [PublicPhotoModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/PublicPhotoModal.tsx) + +#### 1. Outer wrapper — Bỏ padding và căn giữa + +**Hiện tại** (line 358): +``` +
+``` + +**Thay thành** — trên mobile modal full screen, không padding, không căn giữa. Desktop giữ nguyên layout cũ: +``` +
+``` + +#### 2. Container modal — Mobile: full screen cuộn tự nhiên; Desktop: giữ nguyên + +**Hiện tại** (line 366): +``` +
+``` + +**Thay thành**: +- Mobile: `fixed inset-0 overflow-y-auto flex flex-col bg-slate-900` — toàn màn hình, cuộn tự nhiên theo trang +- Desktop: `relative w-full max-w-5xl h-[85vh] overflow-hidden flex flex-row rounded-[32px]` + +``` +
+``` + +#### 3. Nút X — Fixed ở góc trên phải (hiện tại đúng, cần giữ nguyên) + +Nút X hiện đang dùng `fixed` — **giữ nguyên**, chỉ điều chỉnh `top` để tính safe-area: +``` +className="fixed top-[calc(1rem+env(safe-area-inset-top,0px))] right-4 z-50 ..." +``` + +#### 4. Phần ảnh (Left Side Photo) — Mobile: full width, không giới hạn chiều cao, aspect ratio tự nhiên + +**Hiện tại** (line 377): +``` +
+``` + +**Thay thành** — Trên mobile: ảnh full width, chiều cao theo tỷ lệ ảnh (aspect-ratio), không giới hạn, chạm mép trên màn hình (không có padding trên): +``` +
+``` + +Với ảnh bên trong: +``` + +``` + +#### 5. Nút Like — Di chuyển từ góc trên trái sang góc dưới phải của vùng ảnh + +**Hiện tại**: `absolute top-[...] left-4` — góc trên bên trái. + +**Thay thành**: `absolute bottom-4 right-4` — góc dưới bên phải của ảnh, không bị che bởi thanh địa chỉ và không xung đột với nút X: +``` +className="absolute bottom-4 right-4 z-40 ..." +``` + +#### 6. Thông tin người đăng — Di chuyển thành overlay góc trên trái trên ảnh + +Hiện tại "Mobile Uploader strip" là một block riêng biệt giữa ảnh và comment (`block md:hidden p-6 ...`). + +**Thay thành**: Overlay trực tiếp trên ảnh ở góc **trên bên trái**, nằm trong vùng ảnh, có safe-area padding: +```html + +
+
+ +
+ {photo.uploader?.name || 'Ẩn danh'} +
+``` + +#### 7. "Mobile Uploader strip" block — Xóa block cũ + +Block `{/* Mobile Only: Uploader details & divider */}` ở lines 597–623 sẽ được **xóa** vì thông tin người đăng đã được hiển thị trực tiếp trên ảnh ở bước 6. + +Nếu `isAuthorized && photo.originalUrl` (nút Tải ảnh gốc): sẽ được giữ lại nhưng chuyển vào trong phần metadata/overlay của ảnh hoặc đặt trước phần comments. + +#### 8. Phần Comments — Cuộn cùng với nội dung (không bị kẹt trong flex) + +Trên mobile, toàn bộ trang cuộn — phần comment không cần `overflow-y-auto` riêng nữa (vì parent đã cuộn): + +**Hiện tại** (line 626): +``` +
+``` + +**Thay thành**: +``` +
+``` + +Danh sách bình luận (line 640): +``` +
+``` +→ Trên mobile không giới hạn `overflow-y-auto`: +``` +
+``` + +#### 9. Comment Input — Sticky ở cuối trang trên mobile + +Thay vì nằm cố định cuối flex column, ô nhập bình luận sẽ sticky ở bottom: +``` +
+``` + +--- + +## Tóm tắt layout cuối cùng trên mobile + +``` +┌─────────────────────────────────────────────┐ ← màn hình (fixed inset-0) +│ [X nút đóng] (góc trên phải, fixed/z-50) +│─────────────────────────────────────────────│ +│ │ +│ [Người đăng] (overlay TL) │ +│ │ ← Vùng ảnh (full width, +│ ẢNH │ height theo tỷ lệ) +│ │ +│ [❤ Like + số] │ +│─────────────────────────────────────────────│ +│ 📷 Timeline ảnh (nếu có nhiều ảnh) │ ← Cuộn cùng trang +│─────────────────────────────────────────────│ +│ Tiêu đề, mô tả, ngày chụp, địa điểm │ ← Info overlay panel +│─────────────────────────────────────────────│ +│ [Tải ảnh gốc] (nếu là chủ sở hữu) │ +│─────────────────────────────────────────────│ +│ 💬 Comment 1 │ ← Cuộn cùng trang +│ 💬 Comment 2 │ +│ 💬 Comment 3 │ +│ ... │ +│─────────────────────────────────────────────│ +│ [Viết bình luận...] [▶ Gửi] (sticky bottom)│ +└─────────────────────────────────────────────┘ +``` + +--- + +## Verification Plan + +### Automated Tests +- `npm run build -w frontend` — không có lỗi compilation. + +### Manual Verification +1. Mở app trên Chrome mobile (Android) → modal mở full screen, ảnh chạm top, không có padding. +2. Nút X hiển thị góc trên phải, luôn visible. +3. Tên người đăng hiển thị overlay góc trên trái, không nhầm với người bình luận. +4. Nút like hiển thị góc dưới phải của ảnh. +5. Vuốt lên → ảnh và bình luận cuộn cùng nhau một cách liền mạch. +6. Ô bình luận sticky ở dưới cùng. +7. Trên desktop (≥768px) layout 2 cột giữ nguyên hoàn toàn. +8. Safe area insets hoạt động đúng trên iPhone (notch/Dynamic Island) dùng Safari. diff --git a/yotrip_system_fix_plan.md b/yotrip_system_fix_plan.md new file mode 100644 index 0000000..50ce739 --- /dev/null +++ b/yotrip_system_fix_plan.md @@ -0,0 +1,171 @@ +# Kế hoạch triển khai: Tính năng nâng cấp & Sửa lỗi hệ thống YoTrip + +Bản kế hoạch này phác thảo chi tiết phương án kỹ thuật để thực hiện các tính năng mới và khắc phục các lỗi tồn tại trong dự án theo yêu cầu. + +--- + +## User Review Required + +> [!IMPORTANT] +> - **Cập nhật database schema (Prisma Migrations)**: Chúng ta cần thêm bảng mới `TourNote` và `RecommendedLocation`, đồng thời bổ sung các trường `isDeleted` và `deletedAt` cho bảng `Tour` và `Photo` để phục vụ tính năng Thùng rác (Trash Bin). Việc này yêu cầu chạy prisma migrations (`npx prisma migrate dev`). +> - **Thay đổi Nginx config**: Cấu hình Nginx trong Docker production cần bổ sung `client_max_body_size 50M;` để hỗ trợ tải ảnh lớn lên proxy trước khi nén trên client, tránh lỗi HTTP 413. +> - **Cơ chế Hybrid Lưu trữ Ghi chú (Notes)**: Ghi chú sẽ được lưu trữ song song (hybrid) cả ở `localStorage` (để hiển thị tức thời và hoạt động offline) lẫn đồng bộ lên server (để lưu trữ lâu dài và cho phép Admin kiểm duyệt/moderation). Khi mở trang ghi chú, ứng dụng sẽ tải dữ liệu từ cache `localStorage` trước, sau đó fetch dữ liệu mới nhất từ server để đồng bộ và cập nhật lại cache. + +--- + +## Proposed Changes + +### 1. Cơ sở dữ liệu (Database Schema) + +#### [MODIFY] [schema.prisma](file:///home/locpham/travelplanning/backend/prisma/schema.prisma) +- **Bảng `Photo` & `Tour`**: Bổ sung hai trường `isDeleted Boolean @default(false)` và `deletedAt DateTime?` để hỗ trợ cơ chế soft-delete (chuyển vào thùng rác). +- **Bảng `ModerationSetting`**: Thêm trường `trashRetentionDays Int @default(30)` để lưu trữ số ngày lưu trữ trong thùng rác do admin quy định. +- **Thêm bảng `TourNote`**: Lưu trữ ghi chú của Tour liên kết với `Tour` và `User` sở hữu: + ```prisma + model TourNote { + id String @id @default(uuid()) + tourId String + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) + userId String + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + title String + content String @db.Text + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + isDeleted Boolean @default(false) + deletedAt DateTime? + } + ``` +- **Thêm bảng `RecommendedLocation`**: Lưu trữ các địa điểm đề xuất: + ```prisma + model RecommendedLocation { + id String @id @default(uuid()) + type String // e.g. "RESTAURANT", "HOTEL", "HOMESTAY" + name String + phone String? + email String? + address String? + latitude Float? + longitude Float? + description String @db.Text + stars Int @default(5) // Số sao đánh giá từ 1 đến 5 + isApproved Boolean @default(false) + createdAt DateTime @default(now()) + } + ``` + +--- + +### 2. Backend API (`backend/src/main.ts`) + +- **Soft-Delete cho Tours, Photos, và Notes**: + - Cập nhật hàm `deleteTour`, `deletePhoto` để chỉ set `isDeleted: true` và `deletedAt: new Date()` thay vì xóa vĩnh viễn. + - Cập nhật tất cả các truy vấn tour, ảnh (public & private) để loại trừ các bản ghi có `isDeleted: true`. +- **TourNote API**: + - `GET /api/v1/tours/:tourId/notes`: Lấy danh sách ghi chú của một tour (phải là thành viên tour hoặc admin). + - `POST /api/v1/tours/:tourId/notes`: Tạo ghi chú cho tour. + - `PUT /api/v1/tours/:tourId/notes/:noteId`: Sửa ghi chú. + - `DELETE /api/v1/tours/:tourId/notes/:noteId`: Soft-delete ghi chú của tour. +- **RecommendedLocation API**: + - `GET /api/v1/recommendations`: Lấy danh sách địa điểm đề xuất đã duyệt (`isApproved: true`). + - `POST /api/v1/recommendations`: Người dùng gửi đề xuất địa điểm mới. + - `GET /api/v1/admin/recommendations`: Admin xem toàn bộ danh sách đề xuất. + - `PATCH /api/v1/admin/recommendations/:id/approve`: Admin phê duyệt địa điểm đề xuất. + - `DELETE /api/v1/admin/recommendations/:id`: Admin xóa đề xuất. +- **Admin Trash Bin API**: + - `GET /api/v1/admin/trash`: Lấy danh sách các đối tượng trong thùng rác (phân loại Tours, Photos, Notes) kèm thông tin ngày xóa. + - `POST /api/v1/admin/trash/restore`: Phục hồi các đối tượng được chọn (`isDeleted: false`). + - `POST /api/v1/admin/trash/delete-permanent`: Xóa vĩnh viễn các đối tượng được chọn khỏi ổ đĩa và DB. + - `PATCH /api/v1/admin/trash/retention-days`: Cập nhật cấu hình `trashRetentionDays`. +- **Cronjob dọn dẹp tự động (Background Service)**: + - Khởi tạo một task chạy định kỳ (24 giờ một lần) quét qua các bảng `Tour`, `Photo`, `TourNote` có `isDeleted: true` và `deletedAt` đã quá hạn so với cấu hình `trashRetentionDays` để tự động xóa vĩnh viễn bản ghi và tệp vật lý. + +--- + +### 3. Frontend & UI + +#### [MODIFY] [nginx.conf](file:///home/locpham/travelplanning/frontend/nginx.conf) +- Thêm dòng `client_max_body_size 50M;` vào cấu hình block `server` của Nginx để khắc phục triệt để lỗi `413 (Request Entity Too Large)`. + +#### [NEW] [image.ts](file:///home/locpham/travelplanning/frontend/src/utils/image.ts) +- Viết hàm tiện ích nén ảnh trên Client sử dụng Canvas API, giảm kích thước ảnh về chiều dài nhất tối đa **2048px (2K)**, chuyển định dạng sang `image/jpeg` chất lượng `0.85` trước khi tải lên. +- Áp dụng hàm nén này cho: + - Chụp ảnh/Tải ảnh ẩn danh ở [LandingPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/LandingPage.tsx) + - Tải ảnh lên trong Tour ở [AddPhotoModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/AddPhotoModal.tsx) + - Các vị trí upload ảnh khác. + +#### [MODIFY] [LoginModal.tsx](file:///home/locpham/travelplanning/frontend/src/components/LoginModal.tsx) +- Thêm class CSS `max-h-[90vh] overflow-y-auto` vào container chính của modal để tránh bị che mất nút đăng nhập trên các trình duyệt di động có chiều cao màn hình nhỏ hoặc khi bàn phím ảo hiển thị. + +#### [MODIFY] [TourDetailPage.tsx](file:///home/locpham/travelplanning/frontend/src/pages/TourDetailPage.tsx) +- **Khắc phục lỗi xuất PDF (`oklab` error)**: + - Thay vì clone trực tiếp DOM timeline chứa màu oklab phức tạp của Tailwind v4, chúng ta sẽ xây dựng trực tiếp một phần tử HTML `div` đơn giản, dùng cấu trúc bảng hoặc danh sách căn lề cơ bản, sử dụng màu HEX tiêu chuẩn (`#ffffff`, `#3b82f6`, v.v.). + - Trước khi gọi `html2pdf().from(element).save()`, tạm thời đặt `.disabled = true` cho tất cả các thẻ `