From 24f070d14e0209e5cec72c66ac5a2a33d7fccc57 Mon Sep 17 00:00:00 2001 From: virtus Date: Tue, 24 Mar 2026 13:55:10 +0700 Subject: [PATCH] Initial reader-api backend extracted from reader --- .gitattributes | 2 + .github/workflows/docker-publish.yml | 43 + .gitignore | 12 + Dockerfile | 36 + README.md | 180 +- app/api/auth/[...nextauth]/route.ts | 6 + app/api/auth/mobile-login/route.ts | 95 + app/api/chapters/[chapterId]/route.ts | 50 + app/api/dev/make-mod/route.ts | 30 + app/api/genres/route.ts | 32 + .../mod/ai-tools/novel-enrich-batch/route.ts | 174 + app/api/mod/ai-tools/novel-enrich/route.ts | 689 +++ app/api/mod/ai-tools/novel-search/route.ts | 79 + app/api/mod/ai-tools/test-connection/route.ts | 59 + app/api/mod/chuong/[id]/route.ts | 53 + app/api/mod/chuong/bulk-delete/route.ts | 63 + app/api/mod/chuong/global-replace/route.ts | 121 + app/api/mod/chuong/optimize/route.ts | 77 + app/api/mod/chuong/route.ts | 189 + app/api/mod/de-cu/route.ts | 262 + app/api/mod/epub/route.ts | 1317 ++++ app/api/mod/series/route.ts | 200 + app/api/mod/the-loai/route.ts | 71 + app/api/mod/truyen/[id]/route.ts | 45 + app/api/mod/truyen/[id]/trash-words/route.ts | 72 + app/api/mod/truyen/bulk/route.ts | 70 + app/api/mod/truyen/missing/route.ts | 289 + app/api/mod/truyen/route.ts | 320 + app/api/mod/upload-cover/route.ts | 39 + app/api/novels/[id]/route.ts | 67 + app/api/novels/browse/route.ts | 115 + app/api/truyen/[id]/chapters/route.ts | 52 + app/api/truyen/[id]/comments/route.ts | 95 + app/api/truyen/[id]/rate/route.ts | 41 + app/api/truyen/suggest/route.ts | 42 + app/api/user/bookmarks/route.ts | 181 + app/api/user/recommendations/route.ts | 170 + app/api/user/settings/route.ts | 59 + components.json | 21 + docker-compose.yml | 20 + lib/auth-context.tsx | 38 + lib/auth.ts | 35 + lib/bookmark-context.tsx | 121 + lib/mod-ai-tools.ts | 25 + lib/models/chapter.ts | 30 + lib/models/editor-recommendation.ts | 25 + lib/models/user-recommendation.ts | 25 + lib/mongoose.ts | 39 + lib/novel-status.ts | 17 + lib/prisma.ts | 11 + lib/r2.ts | 140 + lib/recommendation-context.tsx | 125 + lib/types.ts | 72 + lib/utils.ts | 27 + next-env.d.ts | 6 + next.config.mjs | 12 + package.json | 84 + pnpm-lock.yaml | 5314 +++++++++++++++++ pnpm-workspace.yaml | 5 + postcss.config.mjs | 8 + prisma/schema.prisma | 188 + scripts/setup-db.js | 49 + scripts/wipe_db.js | 60 + test-ai.js | 68 + test-db.js | 17 + test-missing.ts | 30 + tsconfig.json | 41 + tsconfig.tsbuildinfo | 1 + types/next-auth.d.ts | 17 + 69 files changed, 12167 insertions(+), 1 deletion(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/docker-publish.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 app/api/auth/[...nextauth]/route.ts create mode 100644 app/api/auth/mobile-login/route.ts create mode 100644 app/api/chapters/[chapterId]/route.ts create mode 100644 app/api/dev/make-mod/route.ts create mode 100644 app/api/genres/route.ts create mode 100644 app/api/mod/ai-tools/novel-enrich-batch/route.ts create mode 100644 app/api/mod/ai-tools/novel-enrich/route.ts create mode 100644 app/api/mod/ai-tools/novel-search/route.ts create mode 100644 app/api/mod/ai-tools/test-connection/route.ts create mode 100644 app/api/mod/chuong/[id]/route.ts create mode 100644 app/api/mod/chuong/bulk-delete/route.ts create mode 100644 app/api/mod/chuong/global-replace/route.ts create mode 100644 app/api/mod/chuong/optimize/route.ts create mode 100644 app/api/mod/chuong/route.ts create mode 100644 app/api/mod/de-cu/route.ts create mode 100644 app/api/mod/epub/route.ts create mode 100644 app/api/mod/series/route.ts create mode 100644 app/api/mod/the-loai/route.ts create mode 100644 app/api/mod/truyen/[id]/route.ts create mode 100644 app/api/mod/truyen/[id]/trash-words/route.ts create mode 100644 app/api/mod/truyen/bulk/route.ts create mode 100644 app/api/mod/truyen/missing/route.ts create mode 100644 app/api/mod/truyen/route.ts create mode 100644 app/api/mod/upload-cover/route.ts create mode 100644 app/api/novels/[id]/route.ts create mode 100644 app/api/novels/browse/route.ts create mode 100644 app/api/truyen/[id]/chapters/route.ts create mode 100644 app/api/truyen/[id]/comments/route.ts create mode 100644 app/api/truyen/[id]/rate/route.ts create mode 100644 app/api/truyen/suggest/route.ts create mode 100644 app/api/user/bookmarks/route.ts create mode 100644 app/api/user/recommendations/route.ts create mode 100644 app/api/user/settings/route.ts create mode 100644 components.json create mode 100644 docker-compose.yml create mode 100644 lib/auth-context.tsx create mode 100644 lib/auth.ts create mode 100644 lib/bookmark-context.tsx create mode 100644 lib/mod-ai-tools.ts create mode 100644 lib/models/chapter.ts create mode 100644 lib/models/editor-recommendation.ts create mode 100644 lib/models/user-recommendation.ts create mode 100644 lib/mongoose.ts create mode 100644 lib/novel-status.ts create mode 100644 lib/prisma.ts create mode 100644 lib/r2.ts create mode 100644 lib/recommendation-context.tsx create mode 100644 lib/types.ts create mode 100644 lib/utils.ts create mode 100644 next-env.d.ts create mode 100644 next.config.mjs create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 postcss.config.mjs create mode 100644 prisma/schema.prisma create mode 100644 scripts/setup-db.js create mode 100644 scripts/wipe_db.js create mode 100644 test-ai.js create mode 100644 test-db.js create mode 100644 test-missing.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.tsbuildinfo create mode 100644 types/next-auth.d.ts diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..fcc8aaa --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,43 @@ +name: Build and Push Docker Image + +on: + push: + +jobs: + docker: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push image + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + push: true + tags: | + fevirtus/reader:latest + ghcr.io/fevirtus/reader:latest + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6168c54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# v0 runtime files +__v0_runtime_loader.js +__v0_devtools.tsx +__v0_jsx-dev-runtime.ts + +# Common ignores +node_modules/ +.next/ +.env*.local +.DS_Store +.env +test-ebook/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..27edd8d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# Stage 1: Dependencies +FROM node:22-alpine AS deps +WORKDIR /app +COPY package.json pnpm-lock.yaml ./ +RUN corepack enable pnpm && pnpm install --frozen-lockfile + +# Stage 2: Builder +FROM node:22-alpine AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +# Update Alpine and install ssl for Prisma +RUN apk add --no-cache openssl +# Tạo prisma client +RUN npx prisma generate +# Chạy build +RUN corepack enable pnpm && pnpm run build + +# Stage 3: Runner +FROM node:22-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production +ENV PORT=3000 + +# Install openssl for Prisma runtime +RUN apk add --no-cache openssl + +COPY --from=builder /app/public ./public +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +EXPOSE 3000 + +CMD ["node", "server.js"] diff --git a/README.md b/README.md index 5cc9c98..646af62 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,180 @@ # reader-api -Shared backend API for reader web and reader-app mobile clients + +Đây là backend API dùng chung cho cả web app `reader` và mobile app `reader-app`. + +## 🚀 Tính năng nổi bật + +- **Xác thực & Phân quyền**: Đăng nhập bằng Google Authentication (NextAuth). Hỗ trợ phân quyền người dùng (USER, MOD, ADMIN). +- **Quản lý nội dung (Dành cho MOD/ADMIN)**: Dashboard quản lý truyện, tải lên chương mới, quản lý trạng thái truyện (Đang ra, Hoàn thành, Tạm ngưng). +- **Trải nghiệm đọc**: Khám phá truyện theo thể loại, tìm kiếm truyện, đọc chương truyện với hiệu suất cao (nội dung lưu ở MongoDB). +- **Tương tác người dùng**: Tính năng tủ sách (bookmark) giúp lưu lại tiến độ đọc, hỗ trợ bình luận ở truyện và từng chương. + +## 🛠 Tech Stack + +- **Framework**: [Next.js](https://nextjs.org/) (App Router), React 19 +- **Styling**: [TailwindCSS v4](https://tailwindcss.com/) & [Radix UI](https://www.radix-ui.com/) (shadcn/ui) +- **Database Hybrid**: + - **PostgreSQL**: Lưu trữ dữ liệu cấu trúc (Tài khoản, Truyện, Thể loại, Bình luận, Tủ sách) thông qua **Prisma ORM**. + - **MongoDB**: Lưu trữ nội dung lớn (Chương truyện) thông qua **Mongoose**. +- **Auth**: [NextAuth.js](https://next-auth.js.org/) + +--- + +## 💻 Hướng dẫn chạy Local (Phát triển) + +### 1. Yêu cầu cài đặt +- [Node.js](https://nodejs.org/) (Khuyến nghị bản LTS) +- [pnpm](https://pnpm.io/) (Tool quản lý package) +- Database: PostgreSQL và MongoDB đang chạy cục bộ hoặc trên máy chủ. + +### 2. Cấu hình môi trường +Tạo file `.env` ở thư mục gốc dựa trên `.env.example` (nếu có) hoặc điền các thông tin sau: + +```env +# URL kết nối PostgreSQL +DATABASE_URL="postgresql://user:password@localhost:5432/reader?schema=public" + +# URL kết nối MongoDB +MONGODB_URI="mongodb://user:password@localhost:27017/reader?authSource=admin" + +# Cấu hình NextAuth +NEXTAUTH_SECRET="your-super-secret-key" +NEXTAUTH_URL="http://localhost:3000" + +# Cấu hình Google Login +GOOGLE_CLIENT_ID="your_google_client_id" +GOOGLE_CLIENT_SECRET="your_google_client_secret" + +# AI Tool cho MOD (LLM + web search) +OPENAI_API_KEY="your_openai_api_key" +# Tùy chọn, mặc định: gpt-4o-mini-search-preview +OPENAI_WEB_MODEL="gpt-4o-mini-search-preview" + +# Cloudflare R2 (lưu ảnh bìa) +R2_ACCOUNT_ID="your_cloudflare_account_id" +R2_ACCESS_KEY_ID="your_r2_access_key_id" +R2_SECRET_ACCESS_KEY="your_r2_secret_access_key" +R2_BUCKET_NAME="your_r2_bucket_name" +R2_PUBLIC_BASE_URL="https://your-public-r2-domain" +``` + +### 3. Cài đặt dependencies và khởi tạo DB + +```bash +# Cài đặt các gói thư viện +pnpm install + +# Đồng bộ schema xuống PostgreSQL và generate Prisma client +npx prisma db push +# hoặc (nếu muốn dùng migrate) +# npx prisma migrate dev + +# Generate thư viện Prisma +npx prisma generate +``` + +### 4. Chạy môi trường phát triển + +```bash +pnpm dev +``` +API chạy mặc định ở [http://localhost:3001](http://localhost:3001). +Ví dụ endpoint: [http://localhost:3001/api/novels/browse](http://localhost:3001/api/novels/browse). + +--- + +## 🏗 Hướng dẫn Build + +Để build project cho môi trường production: + +```bash +# Đảm bảo Prisma Client đã được generate +npx prisma generate + +# Chạy lệnh build của Next.js +pnpm build +``` + +Sau khi build xong, bạn có thể khởi chạy server production bằng: +```bash +pnpm start +``` + +--- + +## 🐳 Triển khai dưới dạng Docker + +Bạn có thể dễ dàng triển khai ứng dụng bằng nền tảng Docker. Dưới đây là cách đóng gói và chạy thông qua `docker-compose`. + +### 1. Tạo file `Dockerfile` +Tạo file `Dockerfile` ở thư mục gốc của dự án với cấu hình multi-stage build để tối ưu dung lượng: + +```dockerfile +# Stage 1: Dependencies +FROM node:22-alpine AS deps +WORKDIR /app +COPY package.json pnpm-lock.yaml ./ +RUN corepack enable pnpm && pnpm install --frozen-lockfile + +# Stage 2: Builder +FROM node:22-alpine AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +# Tạo prisma client +RUN npx prisma generate +# Chạy build +RUN corepack enable pnpm && pnpm build + +# Stage 3: Runner +FROM node:22-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production + +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +EXPOSE 3000 +ENV PORT=3000 + +CMD ["node", "server.js"] +``` +*(Lưu ý: Để build mục `standalone` hoạt động, bạn cần bổ sung `output: 'standalone'` trong file `next.config.mjs`)* + +### 2. Tạo file `docker-compose.yml` +Sử dụng Docker Compose để chạy ứng dụng (giả sử Database của bạn được host riêng hoặc bạn có thể thêm service DB vào file này): + +```yaml +version: '3.8' + +services: + web: + build: + context: . + dockerfile: Dockerfile + image: reader-web:latest + container_name: reader-app + ports: + - "3000:3000" + env_file: + - .env + restart: unless-stopped +``` + +### 3. Khởi chạy bằng Docker +Chạy lệnh sau để build image và start container: + +```bash +# Build và chạy ngầm (detached mode) +docker-compose up -d --build +``` + +Để xem log của container: +```bash +docker-compose logs -f web +``` +Dừng và xóa container: +```bash +docker-compose down +``` diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..b6149fb --- /dev/null +++ b/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,6 @@ +import NextAuth from "next-auth" +import { authOptions } from "@/lib/auth" + +const handler = NextAuth(authOptions) + +export { handler as GET, handler as POST } diff --git a/app/api/auth/mobile-login/route.ts b/app/api/auth/mobile-login/route.ts new file mode 100644 index 0000000..825dbff --- /dev/null +++ b/app/api/auth/mobile-login/route.ts @@ -0,0 +1,95 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" +import { OAuth2Client } from "google-auth-library" +import { SignJWT, importPKCS8, generateKeyPair } from "jose" +import * as crypto from "crypto" + +const googleClient = new OAuth2Client(process.env.GOOGLE_CLIENT_ID) + +function generateTokens(userId: string) { + const secret = process.env.MOBILE_JWT_SECRET || process.env.NEXTAUTH_SECRET || "" + const key = crypto.createHmac("sha256", secret) + const payload = Buffer.from(JSON.stringify({ sub: userId, iat: Math.floor(Date.now() / 1000) })).toString("base64url") + const header = Buffer.from(JSON.stringify({ alg: "HS256", typ: "JWT" })).toString("base64url") + const sig = key.update(`${header}.${payload}`).digest("base64url") + const accessToken = `${header}.${payload}.${sig}` + + // refresh token: random 40-byte hex, stored hashed in DB if needed; for now return raw + const refreshToken = crypto.randomBytes(40).toString("hex") + return { accessToken, refreshToken } +} + +export async function POST(req: Request) { + try { + const body = await req.json() + const { googleIdToken } = body + + if (!googleIdToken || typeof googleIdToken !== "string") { + return NextResponse.json({ error: "googleIdToken is required" }, { status: 400 }) + } + + // Verify the Google ID token + let ticket + try { + ticket = await googleClient.verifyIdToken({ + idToken: googleIdToken, + audience: process.env.GOOGLE_CLIENT_ID, + }) + } catch { + return NextResponse.json({ error: "Invalid Google token" }, { status: 401 }) + } + + const payload = ticket.getPayload() + if (!payload?.email) { + return NextResponse.json({ error: "Unable to extract email from token" }, { status: 401 }) + } + + const { email, name, picture, sub: googleSub } = payload + + // Upsert user — match NextAuth behaviour + let user = await prisma.user.findUnique({ where: { email } }) + if (!user) { + user = await prisma.user.create({ + data: { + email, + name: name ?? null, + image: picture ?? null, + emailVerified: new Date(), + }, + }) + } + + // Upsert Google Account link + const existingAccount = await prisma.account.findUnique({ + where: { provider_providerAccountId: { provider: "google", providerAccountId: googleSub } }, + }) + if (!existingAccount) { + await prisma.account.create({ + data: { + userId: user.id, + type: "oauth", + provider: "google", + providerAccountId: googleSub, + }, + }) + } + + const { accessToken, refreshToken } = generateTokens(user.id) + + return NextResponse.json({ + accessToken, + refreshToken, + expiresIn: 3600, + user: { + id: user.id, + email: user.email, + name: user.name, + image: user.image, + role: user.role, + }, + }) + } catch (error) { + console.error("Mobile login error:", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/chapters/[chapterId]/route.ts b/app/api/chapters/[chapterId]/route.ts new file mode 100644 index 0000000..d093f08 --- /dev/null +++ b/app/api/chapters/[chapterId]/route.ts @@ -0,0 +1,50 @@ +import { NextResponse } from "next/server" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" + +export async function GET( + _req: Request, + { params }: { params: Promise<{ chapterId: string }> } +) { + try { + const { chapterId } = await params + + await connectToMongoDB() + + const chapter = await Chapter.findById(chapterId).lean() + + if (!chapter) { + return NextResponse.json({ error: "Chapter not found" }, { status: 404 }) + } + + // Fetch prev/next chapter numbers for navigation + const [prevChapter, nextChapter] = await Promise.all([ + Chapter.findOne({ novelId: (chapter as any).novelId, number: (chapter as any).number - 1 }) + .select("_id number") + .lean(), + Chapter.findOne({ novelId: (chapter as any).novelId, number: (chapter as any).number + 1 }) + .select("_id number") + .lean(), + ]) + + return NextResponse.json({ + id: (chapter as any)._id.toString(), + novelId: (chapter as any).novelId, + number: (chapter as any).number, + title: (chapter as any).title, + content: (chapter as any).content, + views: (chapter as any).views, + volumeNumber: (chapter as any).volumeNumber ?? null, + volumeTitle: (chapter as any).volumeTitle ?? null, + volumeChapterNumber: (chapter as any).volumeChapterNumber ?? null, + createdAt: ((chapter as any).createdAt as Date).toISOString(), + prevChapterId: prevChapter ? (prevChapter as any)._id.toString() : null, + prevChapterNumber: prevChapter ? (prevChapter as any).number : null, + nextChapterId: nextChapter ? (nextChapter as any)._id.toString() : null, + nextChapterNumber: nextChapter ? (nextChapter as any).number : null, + }) + } catch (error) { + console.error("Chapter content error:", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/dev/make-mod/route.ts b/app/api/dev/make-mod/route.ts new file mode 100644 index 0000000..30b58b9 --- /dev/null +++ b/app/api/dev/make-mod/route.ts @@ -0,0 +1,30 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET() { + if (process.env.NODE_ENV === "production") { + return NextResponse.json({ error: "Not found" }, { status: 404 }) + } + + const session = await getServerSession(authOptions) + + if (!session || !session.user || !session.user.email) { + return NextResponse.json({ error: "Bạn phải đăng nhập trước" }, { status: 401 }) + } + + try { + const updatedUser = await prisma.user.update({ + where: { email: session.user.email }, + data: { role: "MOD" }, + }) + + return NextResponse.json({ + message: `Tài khoản ${updatedUser.email} đã được cấp quyền MOD. Xin hãy Đăng xuất và Đăng nhập lại để cập nhật phiên.`, + user: updatedUser + }) + } catch (error) { + return NextResponse.json({ error: "Lỗi hệ thống" }, { status: 500 }) + } +} diff --git a/app/api/genres/route.ts b/app/api/genres/route.ts new file mode 100644 index 0000000..f8d2404 --- /dev/null +++ b/app/api/genres/route.ts @@ -0,0 +1,32 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" + +export async function GET() { + try { + const genres = await prisma.genre.findMany({ + orderBy: { name: "asc" }, + select: { + id: true, + name: true, + slug: true, + description: true, + icon: true, + _count: { select: { novels: true } }, + }, + }) + + return NextResponse.json( + genres.map((g) => ({ + id: g.id, + name: g.name, + slug: g.slug, + description: g.description, + icon: g.icon, + novelCount: g._count.novels, + })) + ) + } catch (error) { + console.error("Genres list error:", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/mod/ai-tools/novel-enrich-batch/route.ts b/app/api/mod/ai-tools/novel-enrich-batch/route.ts new file mode 100644 index 0000000..f5057c3 --- /dev/null +++ b/app/api/mod/ai-tools/novel-enrich-batch/route.ts @@ -0,0 +1,174 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +type EnrichedItem = { + id: string + title: string + originalTitle: string + authorName: string + originalAuthorName: string + description: string + coverUrl?: string + status: "Đang ra" | "Hoàn thành" | "Tạm ngưng" + genresSuggested: string[] + firstPublishYear?: number + confidence: number + source: string + sourceUrl?: string +} + +function normalizeText(value: string): string { + return value + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .toLowerCase() + .replace(/[^a-z0-9\s]/g, " ") + .replace(/\s+/g, " ") + .trim() +} + +function trimText(value: string, maxLength: number): string { + if (value.length <= maxLength) return value + return `${value.slice(0, maxLength - 1).trimEnd()}...` +} + +function buildBatchPrompt(novels: any[]) { + const itemsText = novels.map(n => { + const shortDesc = trimText(n.description || "", 1500) + return `[ID: ${n.id}]\nTên: ${n.title}\nTên gốc: ${n.originalTitle || ""}\nTác giả: ${n.authorName}\nTác giả gốc: ${n.originalAuthorName || ""}\nThể loại: ${(n.genres || []).map((g: any) => g.genre.name).join(", ")}\nMô tả: ${shortDesc}` + }).join("\n\n---\n\n") + + return [ + "Bạn là biên tập viên truyện dịch tiếng Trung.", + "Nhiệm vụ: bổ sung thông tin bị thiếu (Tên gốc, Tác giả gốc, Mô tả, Thể loại) cho danh sách tác phẩm sau bằng cách tìm kiếm trên Qidian, JJWXC, v.v...", + "Trường 'description': Nếu mô tả gốc đã chi tiết, chỉ cần sửa chính tả. Nếu trống/ngắn, hãy viết mới 1 đoạn giới thiệu dài chi tiết bám sát nội dung gốc (KHÔNG tóm tắt kiểu chung chung).", + "Trạng thái (status) phải luôn là: Đang ra, Hoàn thành, hoặc Tạm ngưng.", + "Kết quả BẮT BUỘC là 1 JSON Object chứa mảng 'results'. Mỗi item trong mảng phải có key 'id' khớp với báo cáo.", + `Schema: {"results":[{"id":"","title":"","originalTitle":"","authorName":"","originalAuthorName":"","description":"","coverUrl":"","status":"Đang ra|Hoàn thành|Tạm ngưng","genresSuggested":[],"firstPublishYear":2020,"confidence":80,"source":"","sourceUrl":""}]}`, + "Dưới đây là danh sách truyện cần xử lý:\n", + itemsText + ].join("\n") +} + +function extractJsonCandidate(text: string): string { + const trimmed = text.trim() + if (!trimmed) return "" + const fenced = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i) + if (fenced?.[1]) return fenced[1].trim() + const firstBrace = trimmed.indexOf("{") + const lastBrace = trimmed.lastIndexOf("}") + if (firstBrace >= 0 && lastBrace > firstBrace) { + return trimmed.slice(firstBrace, lastBrace + 1) + } + return trimmed +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Không có quyền truy cập" }, { status: 401 }) + } + + const { novelIds } = await req.json() + if (!Array.isArray(novelIds) || novelIds.length === 0 || novelIds.length > 20) { + return NextResponse.json({ error: "novelIds không hợp lệ hoặc quá lớn (tối đa 20)" }, { status: 400 }) + } + + const accessWhere = session.user.role === "ADMIN" + ? { id: { in: novelIds } } + : { + id: { in: novelIds }, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + } + + const novels = await prisma.novel.findMany({ + where: accessWhere, + select: { + id: true, + title: true, + originalTitle: true, + authorName: true, + originalAuthorName: true, + description: true, + coverUrl: true, + status: true, + genres: { select: { genre: { select: { name: true } } } }, + } + }) + + if (novels.length === 0) { + return NextResponse.json({ error: "Không tìm thấy truyện nào hợp lệ" }, { status: 404 }) + } + + const apiKey = process.env.DEEKSEEK_KEY?.trim() || process.env.DEEPSEEK_KEY?.trim() + const model = process.env.DEEPSEEK_MODEL?.trim() || "deepseek-chat" + + if (!apiKey) { + return NextResponse.json({ error: "Thiếu DEEPSEEK_KEY" }, { status: 400 }) + } + + const prompt = buildBatchPrompt(novels) + + const controller = new AbortController() + const timeout = setTimeout(() => controller.abort(), 90000) // 90 seconds for batch + const startedAt = Date.now() + + try { + const res = await fetch("https://api.deepseek.com/v1/chat/completions", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + }, + body: JSON.stringify({ + model, + temperature: 0.2, + max_tokens: 2500, + response_format: { type: "json_object" }, + messages: [ + { role: "system", content: "You are a helpful assistant. You must output only valid standard JSON object following the prompt schema, without markdown formatting." }, + { role: "user", content: prompt }, + ], + }), + signal: controller.signal, + }) + + clearTimeout(timeout) + + if (!res.ok) { + const errorText = await res.text().catch(() => "") + throw new Error(`HTTP ${res.status}: ${errorText.slice(0, 200)}`) + } + + const data = await res.json() + const text = data.choices?.[0]?.message?.content?.trim() || "" + const jsonText = extractJsonCandidate(text) + + let parsed: any = null + try { + parsed = JSON.parse(jsonText) + } catch { + throw new Error("Phản hồi JSON bị hỏng") + } + + const results = Array.isArray(parsed?.results) ? parsed.results : [] + + return NextResponse.json({ + success: true, + latencyMs: Date.now() - startedAt, + model, + count: results.length, + results, + sourceNovels: novels, + }) + + } catch (error: any) { + clearTimeout(timeout) + return NextResponse.json({ error: `DeepSeek Error: ${error.message}` }, { status: 500 }) + } +} diff --git a/app/api/mod/ai-tools/novel-enrich/route.ts b/app/api/mod/ai-tools/novel-enrich/route.ts new file mode 100644 index 0000000..8fe0160 --- /dev/null +++ b/app/api/mod/ai-tools/novel-enrich/route.ts @@ -0,0 +1,689 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +type EnrichedItem = { + title: string + originalTitle: string + authorName: string + originalAuthorName: string + description: string + coverUrl?: string + status: "Đang ra" | "Hoàn thành" | "Tạm ngưng" + genresSuggested: string[] + firstPublishYear?: number + confidence: number + source: string + sourceUrl?: string +} + +type AttemptStatus = { + provider: "google" | "openrouter" | "deepseek" + model: string + status: "success" | "failed" | "skipped" + message?: string + latencyMs?: number +} + +type ProviderResult = { + provider: "google" | "openrouter" | "deepseek" + model: string + results: EnrichedItem[] +} + +type GeminiResponse = { + candidates?: Array<{ + content?: { + parts?: Array<{ text?: string }> + } + }> +} + +type ChatResponse = { + choices?: Array<{ + message?: { + content?: string + } + }> +} + +type OpenRouterModelsResponse = { + data?: Array<{ + id?: string + }> +} + +const OPENROUTER_PAUSED = (process.env.OPENROUTER_PAUSED ?? "true").toLowerCase() !== "false" + +function hasMeaningfulDescription(value: string): boolean { + const normalized = normalizeText(value) + if (!normalized || normalized.length < 40) return false + + const placeholders = [ + "chua co gioi thieu", + "khong co gioi thieu", + "dang cap nhat", + "dang update", + "updating", + "no description", + "khong ro", + "chua ro", + ] + + return !placeholders.some((item) => normalized.includes(item)) +} + +function buildGeneratedDescription( + title: string, + authorName: string, + genres: string[], + status: "Đang ra" | "Hoàn thành" | "Tạm ngưng" +): string { + const genreText = genres.length > 0 ? genres.slice(0, 3).join(", ") : "tiểu thuyết mạng" + const statusText = status === "Đang ra" ? "đang ra" : status === "Hoàn thành" ? "đã hoàn thành" : "tạm ngưng" + + return trimText( + `${title} là một tác phẩm ${genreText} của ${authorName}. Câu chuyện được hệ thống tóm lược lại từ những thông tin đã tìm thấy trên web và hiện ở trạng thái ${statusText}. Đây là đoạn mô tả thay thế được tạo tự động khi mô hình chưa trả về phần giới thiệu đủ chi tiết, giúp biên tập viên có sẵn nội dung để rà soát và chỉnh sửa tiếp.`, + 1200 + ) +} + +function normalizeText(value: string): string { + return value + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .toLowerCase() + .replace(/[^a-z0-9\s]/g, " ") + .replace(/\s+/g, " ") + .trim() +} + +function trimText(value: string, maxLength: number): string { + if (value.length <= maxLength) return value + return `${value.slice(0, maxLength - 1).trimEnd()}...` +} + +function inferStatus(subjects: string[], description: string): "Đang ra" | "Hoàn thành" | "Tạm ngưng" { + const haystack = normalizeText(`${subjects.join(" ")} ${description}`) + + if (haystack.includes("completed") || haystack.includes("finished") || haystack.includes("full text")) { + return "Hoàn thành" + } + + if (haystack.includes("hiatus") || haystack.includes("on hold") || haystack.includes("paused")) { + return "Tạm ngưng" + } + + return "Đang ra" +} + +function clampNumber(value: unknown, min: number, max: number, fallback: number): number { + const num = typeof value === "number" ? value : Number(value) + if (!Number.isFinite(num)) return fallback + return Math.max(min, Math.min(max, num)) +} + +function toOptionalUrl(value: unknown): string | undefined { + if (typeof value !== "string") return undefined + const trimmed = value.trim() + if (!trimmed) return undefined + if (!/^https?:\/\//i.test(trimmed)) return undefined + return trimmed +} + +function coerceStatus(value: unknown, genres: string[], description: string): "Đang ra" | "Hoàn thành" | "Tạm ngưng" { + if (typeof value === "string") { + const normalized = normalizeText(value) + if (normalized.includes("hoan thanh") || normalized.includes("completed") || normalized.includes("finished")) { + return "Hoàn thành" + } + if (normalized.includes("tam") || normalized.includes("ngung") || normalized.includes("hiatus") || normalized.includes("paused")) { + return "Tạm ngưng" + } + if (normalized.includes("dang") || normalized.includes("ongoing")) { + return "Đang ra" + } + } + + return inferStatus(genres, description) +} + +function extractJsonCandidate(text: string): string { + const trimmed = text.trim() + if (!trimmed) return "" + + const fenced = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i) + if (fenced?.[1]) return fenced[1].trim() + + const firstBrace = trimmed.indexOf("{") + const lastBrace = trimmed.lastIndexOf("}") + if (firstBrace >= 0 && lastBrace > firstBrace) { + return trimmed.slice(firstBrace, lastBrace + 1) + } + + return trimmed +} + +function toItem(raw: any, novelTitle: string): EnrichedItem | null { + const title = typeof raw?.title === "string" ? raw.title.trim() : "" + if (!title) return null + + const originalTitle = typeof raw?.originalTitle === "string" && raw.originalTitle.trim() + ? raw.originalTitle.trim() + : title + + const authorName = typeof raw?.authorName === "string" && raw.authorName.trim() + ? raw.authorName.trim() + : "Chưa rõ" + + const originalAuthorName = typeof raw?.originalAuthorName === "string" && raw.originalAuthorName.trim() + ? raw.originalAuthorName.trim() + : authorName + + const genres = Array.isArray(raw?.genresSuggested) + ? raw.genresSuggested + .map((g: unknown) => (typeof g === "string" ? g.trim() : "")) + .filter(Boolean) + .slice(0, 10) + : [] + + const status = coerceStatus(raw?.status, genres, typeof raw?.description === "string" ? raw.description.trim() : "") + + const descriptionInput = typeof raw?.description === "string" ? raw.description.trim() : "" + const description = trimText( + hasMeaningfulDescription(descriptionInput) + ? descriptionInput + : buildGeneratedDescription(title || novelTitle, authorName, genres, status), + 1200 + ) + + const year = Number(raw?.firstPublishYear) + const firstPublishYear = Number.isFinite(year) && year >= 1000 && year <= 2100 ? year : undefined + + return { + title, + originalTitle, + authorName, + originalAuthorName, + description, + coverUrl: toOptionalUrl(raw?.coverUrl), + status, + genresSuggested: genres, + firstPublishYear, + confidence: clampNumber(raw?.confidence, 1, 99, 65), + source: typeof raw?.source === "string" && raw.source.trim() ? raw.source.trim() : "LLM Web Search", + sourceUrl: toOptionalUrl(raw?.sourceUrl), + } +} + +function parseResultsFromText(text: string, novelTitle: string): EnrichedItem[] { + const jsonText = extractJsonCandidate(text) + if (!jsonText) return [] + + let parsed: any = null + try { + parsed = JSON.parse(jsonText) + } catch { + return [] + } + + const rows = Array.isArray(parsed?.results) ? parsed.results : [] + return rows + .map((row: any) => toItem(row, novelTitle)) + .filter((row: EnrichedItem | null): row is EnrichedItem => Boolean(row)) + .slice(0, 6) +} + +function buildFallbackResult(novelTitle: string): EnrichedItem { + return { + title: novelTitle, + originalTitle: novelTitle, + authorName: "Chưa rõ", + originalAuthorName: "Chưa rõ", + description: buildGeneratedDescription(novelTitle, "Chưa rõ", [], "Đang ra"), + coverUrl: undefined, + status: "Đang ra", + genresSuggested: [], + firstPublishYear: undefined, + confidence: 30, + source: "Fallback", + sourceUrl: undefined, + } +} + +function buildPrompt(novel: { + title: string + originalTitle?: string | null + authorName: string + originalAuthorName?: string | null + description: string + genres: string[] +}) { + const shortDescription = trimText(novel.description || "", 1500) + + return [ + "Bạn là trợ lý biên tập truyện dịch từ truyện mạng Trung Quốc.", + "Hãy tìm thông tin trên web, ưu tiên các nguồn như Qidian, JJWXC, NovelUpdates, wiki fan và nhà xuất bản.", + "Trả về JSON thuần, không markdown, không giải thích thêm.", + "Bắt buộc viết các trường title, authorName, description, genresSuggested bằng tiếng Việt có dấu nếu đó là tên hoặc khái niệm đã có bản Việt hóa phổ biến.", + "Riêng originalTitle và originalAuthorName hãy giữ theo nguyên tác nếu tìm được.", + "Trường description là bắt buộc. Nếu 'Mô tả hiện tại' (dưới đây) đã dài và chi tiết, hãy giữ nguyên ý chính gốc và chỉ chỉnh sửa văn phong, bố cục cho mượt mà hoặc hấp dẫn hơn. TUYỆT ĐỐI KHÔNG tóm tắt ngắn đi nếu bản gốc đang đầy đủ.", + "Nếu 'Mô tả hiện tại' chống không hoặc quá sơ sài, hãy tìm kiếm nội dung về cốt truyện gốc trên mạng và viết một bài giới thiệu dài, chi tiết, bám sát các sự kiện thực tế trong truyện. KHÔNG viết chung chung kiểu 'đầy chông gai và thử thách'.", + "Trạng thái (status) phải luôn là 1 trong 3 giá trị: Đang ra, Hoàn thành, Tạm ngưng. Mảng genresSuggested chứa tối đa 10 thể loại phù hợp.", + `Schema: {"results":[{"title":"","originalTitle":"","authorName":"","originalAuthorName":"","description":"","coverUrl":"","status":"Đang ra|Hoàn thành|Tạm ngưng","genresSuggested":[],"firstPublishYear":2020,"confidence":80,"source":"","sourceUrl":""}]}`, + "Tối đa 3 kết quả, ưu tiên kết quả gần nhất với truyện hiện tại.", + `Tên hiện tại: ${novel.title}`, + `Tên gốc hiện tại: ${novel.originalTitle || ""}`, + `Tác giả hiện tại: ${novel.authorName}`, + `Tác giả gốc hiện tại: ${novel.originalAuthorName || ""}`, + `Thể loại hiện tại: ${novel.genres.join(", ")}`, + `Mô tả hiện tại: ${shortDescription}`, + ].join(" ") +} + +async function fetchJsonWithTimeout(url: string, init: RequestInit, timeoutMs = 25000): Promise { + const controller = new AbortController() + const timeout = setTimeout(() => controller.abort(), timeoutMs) + + try { + const res = await fetch(url, { ...init, signal: controller.signal, cache: "no-store" }) + if (!res.ok) { + const text = await res.text().catch(() => "") + throw new Error(`HTTP ${res.status}: ${text.slice(0, 220)}`) + } + return (await res.json()) as T + } finally { + clearTimeout(timeout) + } +} + +function summarizeError(error: unknown): string { + if (!(error instanceof Error)) return "Lỗi không xác định" + return error.message.slice(0, 220) +} + +async function tryGoogle(prompt: string, novelTitle: string, attempts: AttemptStatus[]): Promise { + const apiKey = process.env.GOOGLE_AI_KEY?.trim() + const model = process.env.GOOGLE_AI_MODEL?.trim() || "gemini-2.0-flash" + + if (!apiKey) { + attempts.push({ provider: "google", model, status: "skipped", message: "Thiếu GOOGLE_AI_KEY" }) + return null + } + + const startedAt = Date.now() + try { + const data = await fetchJsonWithTimeout( + `https://generativelanguage.googleapis.com/v1beta/models/${encodeURIComponent(model)}:generateContent?key=${encodeURIComponent(apiKey)}`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + contents: [{ role: "user", parts: [{ text: prompt }] }], + tools: [{ googleSearch: {} }], + generationConfig: { + temperature: 0.2, + maxOutputTokens: 1400, + }, + }), + }, + 22000 + ) + + const text = (data.candidates || []) + .flatMap((candidate) => candidate.content?.parts || []) + .map((part) => part.text || "") + .join("\n") + .trim() + + const results = parseResultsFromText(text, novelTitle) + if (results.length === 0) { + console.log("Google parsing failed. Raw text:", text) + throw new Error("Không có kết quả JSON hợp lệ") + } + + attempts.push({ + provider: "google", + model, + status: "success", + message: `${results.length} kết quả`, + latencyMs: Date.now() - startedAt, + }) + + return { provider: "google", model, results } + } catch (error) { + console.log("Google fetch error:", error) + attempts.push({ + provider: "google", + model, + status: "failed", + message: summarizeError(error), + latencyMs: Date.now() - startedAt, + }) + return null + } +} + +async function resolveOpenRouterFreeModels(apiKey: string): Promise { + const envModels = (process.env.OPENROUTER_FREE_MODELS || "") + .split(",") + .map((s) => s.trim()) + .filter((s) => s.endsWith(":free")) + + const dynamicModels: string[] = [] + + try { + const data = await fetchJsonWithTimeout( + "https://openrouter.ai/api/v1/models", + { + method: "GET", + headers: { + Authorization: `Bearer ${apiKey}`, + }, + }, + 12000 + ) + + for (const row of data.data || []) { + const id = (row.id || "").trim() + if (!id || !id.endsWith(":free")) continue + dynamicModels.push(id) + } + } catch { + // Ignore model-list errors and keep env list fallback. + } + + const merged = Array.from(new Set([...envModels, ...dynamicModels])) + + const preferredOrder = [ + "google/gemma-2-9b-it:free", + "meta-llama/llama-3.1-8b-instruct:free", + "qwen/qwen2.5-7b-instruct:free", + ] + + merged.sort((a, b) => { + const ai = preferredOrder.findIndex((item) => item === a) + const bi = preferredOrder.findIndex((item) => item === b) + const ar = ai === -1 ? 999 : ai + const br = bi === -1 ? 999 : bi + if (ar !== br) return ar - br + return a.localeCompare(b) + }) + + return merged.slice(0, 10) +} + +async function tryOpenRouter(prompt: string, novelTitle: string, attempts: AttemptStatus[]): Promise { + const apiKey = process.env.OPENROUTER_KEY?.trim() + if (!apiKey) { + attempts.push({ provider: "openrouter", model: "free-chain", status: "skipped", message: "Thiếu OPENROUTER_KEY" }) + return null + } + + const freeModels = await resolveOpenRouterFreeModels(apiKey) + if (freeModels.length === 0) { + attempts.push({ provider: "openrouter", model: "free-chain", status: "skipped", message: "Không có model free khả dụng" }) + return null + } + + for (const model of freeModels) { + const startedAt = Date.now() + try { + const data = await fetchJsonWithTimeout( + "https://openrouter.ai/api/v1/chat/completions", + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + "HTTP-Referer": "http://localhost:3000", + "X-Title": "reader-mod-ai-tool", + }, + body: JSON.stringify({ + model, + temperature: 0.2, + max_tokens: 1400, + messages: [ + { role: "system", content: "Return only valid JSON." }, + { role: "user", content: prompt }, + ], + }), + }, + 22000 + ) + + const text = data.choices?.[0]?.message?.content?.trim() || "" + const results = parseResultsFromText(text, novelTitle) + if (results.length === 0) { + console.log("OpenRouter parsing failed. Raw text:", text) + throw new Error("Không có kết quả JSON hợp lệ") + } + + attempts.push({ + provider: "openrouter", + model, + status: "success", + message: `${results.length} kết quả`, + latencyMs: Date.now() - startedAt, + }) + + return { provider: "openrouter", model, results } + } catch (error) { + console.log("OpenRouter fetch error:", error) + attempts.push({ + provider: "openrouter", + model, + status: "failed", + message: summarizeError(error), + latencyMs: Date.now() - startedAt, + }) + } + } + + return null +} + +async function tryDeepSeek(prompt: string, novelTitle: string, attempts: AttemptStatus[]): Promise { + const apiKey = process.env.DEEKSEEK_KEY?.trim() || process.env.DEEPSEEK_KEY?.trim() + const model = process.env.DEEPSEEK_MODEL?.trim() || "deepseek-chat" + + if (!apiKey) { + attempts.push({ provider: "deepseek", model, status: "skipped", message: "Thiếu DEEKSEEK_KEY/DEEPSEEK_KEY" }) + return null + } + + const profiles = [ + { maxTokens: 1300, timeoutMs: 60000 }, + { maxTokens: 900, timeoutMs: 45000 }, + ] + + for (const profile of profiles) { + const startedAt = Date.now() + try { + const data = await fetchJsonWithTimeout( + "https://api.deepseek.com/v1/chat/completions", + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + }, + body: JSON.stringify({ + model, + temperature: 0.2, + max_tokens: profile.maxTokens, + response_format: { type: "json_object" }, + messages: [ + { role: "system", content: "You are a helpful assistant. You must output only valid standard JSON object following the prompt schema, without markdown formatting." }, + { role: "user", content: prompt }, + ], + }), + }, + profile.timeoutMs + ) + + const text = data.choices?.[0]?.message?.content?.trim() || "" + const results = parseResultsFromText(text, novelTitle) + if (results.length === 0) { + console.log("DeepSeek parsing failed. Raw text:", text) + throw new Error("Không có kết quả JSON hợp lệ") + } + + attempts.push({ + provider: "deepseek", + model, + status: "success", + message: `${results.length} kết quả`, + latencyMs: Date.now() - startedAt, + }) + + return { provider: "deepseek", model, results } + } catch (error) { + console.log("DeepSeek fetch error:", error) + attempts.push({ + provider: "deepseek", + model, + status: "failed", + message: summarizeError(error), + latencyMs: Date.now() - startedAt, + }) + } + } + + return null +} + +export async function GET(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Không có quyền truy cập" }, { status: 401 }) + } + + const { searchParams } = new URL(req.url) + const novelId = searchParams.get("novelId")?.trim() || "" + + if (!novelId) { + return NextResponse.json({ error: "Thiếu novelId" }, { status: 400 }) + } + + const accessWhere = session.user.role === "ADMIN" + ? { id: novelId } + : { + id: novelId, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + } + + const novel = await prisma.novel.findFirst({ + where: accessWhere, + select: { + id: true, + title: true, + originalTitle: true, + slug: true, + authorName: true, + originalAuthorName: true, + description: true, + coverUrl: true, + status: true, + updatedAt: true, + genres: { + select: { + genre: { + select: { + name: true, + }, + }, + }, + }, + }, + }) + + if (!novel) { + return NextResponse.json({ error: "Không tìm thấy truyện hoặc bạn không có quyền truy cập" }, { status: 404 }) + } + + const attempts: AttemptStatus[] = [] + const currentNovel = { + id: novel.id, + title: novel.title, + originalTitle: novel.originalTitle, + slug: novel.slug, + authorName: novel.authorName, + originalAuthorName: novel.originalAuthorName, + description: novel.description, + coverUrl: novel.coverUrl, + status: novel.status, + updatedAt: novel.updatedAt, + genres: (novel.genres || []).map((row) => row.genre.name), + } + + const prompt = buildPrompt(currentNovel) + + // Tạm thời bỏ qua Google Gemini theo yêu cầu của user + attempts.push({ + provider: "google", + model: "gemini-2.0-flash", + status: "skipped", + message: "Tạm bỏ qua theo yêu cầu người dùng.", + }) + /* + const google = await tryGoogle(prompt, currentNovel.title, attempts) + if (google) { + return NextResponse.json({ + novel: currentNovel, + provider: google.provider, + model: google.model, + attempts, + count: google.results.length, + results: google.results, + }) + } + */ + + const deepseek = await tryDeepSeek(prompt, currentNovel.title, attempts) + if (deepseek) { + return NextResponse.json({ + novel: currentNovel, + provider: deepseek.provider, + model: deepseek.model, + attempts, + count: deepseek.results.length, + results: deepseek.results, + }) + } + + if (OPENROUTER_PAUSED) { + attempts.push({ + provider: "openrouter", + model: "free-chain", + status: "skipped", + message: "Tạm dừng OpenRouter theo cấu hình", + }) + } else { + const openrouter = await tryOpenRouter(prompt, currentNovel.title, attempts) + if (openrouter) { + return NextResponse.json({ + novel: currentNovel, + provider: openrouter.provider, + model: openrouter.model, + attempts, + count: openrouter.results.length, + results: openrouter.results, + }) + } + } + + return NextResponse.json({ + novel: currentNovel, + provider: "fallback", + model: "none", + attempts, + count: 1, + results: [buildFallbackResult(currentNovel.title)], + warning: "Google AI và DeepSeek đều thất bại", + }) +} diff --git a/app/api/mod/ai-tools/novel-search/route.ts b/app/api/mod/ai-tools/novel-search/route.ts new file mode 100644 index 0000000..d4bc304 --- /dev/null +++ b/app/api/mod/ai-tools/novel-search/route.ts @@ -0,0 +1,79 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Không có quyền truy cập" }, { status: 401 }) + } + + const { searchParams } = new URL(req.url) + const q = (searchParams.get("q") || "").trim() + const page = parseInt(searchParams.get("page") || "1", 10) + const take = 24 + const skip = (Math.max(1, page) - 1) * take + + const whereScope = session.user.role === "ADMIN" + ? {} + : { + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + } + + const isMissingFilter = searchParams.get("missing") === "true" + const baseWhereOptions: any[] = [whereScope] + + if (q.length > 0) { + baseWhereOptions.push({ + OR: [ + { title: { contains: q, mode: "insensitive" } }, + { originalTitle: { contains: q, mode: "insensitive" } }, + { authorName: { contains: q, mode: "insensitive" } }, + { originalAuthorName: { contains: q, mode: "insensitive" } }, + { slug: { contains: q, mode: "insensitive" } }, + ], + }) + } else if (!isMissingFilter) { + return NextResponse.json({ novels: [], hasMore: false }) + } + + if (isMissingFilter) { + baseWhereOptions.push({ + OR: [ + { authorName: { in: ["", "Chưa rõ"] } }, + { description: "" }, + { description: { in: ["Chưa có giới thiệu", "Không có giới thiệu", "chưa có giới thiệu", "không có", "chưa rõ", "đang cập nhật"] } } + ], + }) + } + + const rows = await prisma.novel.findMany({ + where: { + AND: baseWhereOptions, + }, + select: { + id: true, + title: true, + originalTitle: true, + slug: true, + authorName: true, + originalAuthorName: true, + description: true, + coverUrl: true, + status: true, + updatedAt: true, + }, + orderBy: [{ updatedAt: "desc" }], + take: take + 1, // Fetch one extra to know if there's a next page + skip, + }) + + const hasMore = rows.length > take + const returnRows = hasMore ? rows.slice(0, take) : rows + + return NextResponse.json({ novels: returnRows, hasMore }) +} diff --git a/app/api/mod/ai-tools/test-connection/route.ts b/app/api/mod/ai-tools/test-connection/route.ts new file mode 100644 index 0000000..c704d9e --- /dev/null +++ b/app/api/mod/ai-tools/test-connection/route.ts @@ -0,0 +1,59 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" + +export async function GET() { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Không có quyền truy cập" }, { status: 401 }) + } + + const apiKey = process.env.DEEKSEEK_KEY?.trim() || process.env.DEEPSEEK_KEY?.trim() + const model = process.env.DEEPSEEK_MODEL?.trim() || "deepseek-chat" + + if (!apiKey) { + return NextResponse.json({ error: "Chưa cấu hình API Key cho DeepSeek (DEEKSEEK_KEY / DEEPSEEK_KEY)" }, { status: 400 }) + } + + const startedAt = Date.now() + try { + const controller = new AbortController() + const timeout = setTimeout(() => controller.abort(), 15000) + + const res = await fetch("https://api.deepseek.com/v1/chat/completions", { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + }, + body: JSON.stringify({ + model, + temperature: 0.1, + max_tokens: 10, + messages: [{ role: "user", content: "Ping! Please reply with 'pong'." }], + }), + signal: controller.signal, + }) + + clearTimeout(timeout) + + if (!res.ok) { + const text = await res.text().catch(() => "") + throw new Error(`HTTP ${res.status}: ${text.slice(0, 100)}`) + } + + const data = await res.json() + const text = data.choices?.[0]?.message?.content?.trim() || "" + + return NextResponse.json({ + success: true, + message: `DeepSeek phản hồi thành công: "${text}"`, + latencyMs: Date.now() - startedAt, + model + }) + } catch (error: any) { + return NextResponse.json({ + error: `Kết nối DeepSeek thất bại: ${error.message}` + }, { status: 500 }) + } +} diff --git a/app/api/mod/chuong/[id]/route.ts b/app/api/mod/chuong/[id]/route.ts new file mode 100644 index 0000000..9cf2ca9 --- /dev/null +++ b/app/api/mod/chuong/[id]/route.ts @@ -0,0 +1,53 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { prisma } from "@/lib/prisma" + +export async function GET( + req: Request, + context: { params: Promise<{ id: string }> } +) { + const { id } = await context.params + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + await connectToMongoDB() + // console.log("Fetching chapter with ID:", id) + + const chapter = await Chapter.findById(id) + + if (!chapter) { + // console.log("Chapter not found in DB") + return NextResponse.json({ error: "Chapter not found" }, { status: 404 }) + } + + // Verify the moderator owns the related novel (or is an ADMIN) + let novelQuery: any = { id: chapter.novelId } + if (session.user.role !== "ADMIN") { + novelQuery.uploaderId = session.user.id + } + + const novel = await prisma.novel.findFirst({ + where: novelQuery + }) + + if (!novel) { + console.log("Novel not found or unauthorized:", { + chapterNovelId: chapter.novelId, + userId: session.user.id, + role: session.user.role + }) + return NextResponse.json({ error: "Unauthorized access to this chapter" }, { status: 403 }) + } + + return NextResponse.json(chapter) + } catch (error) { + console.error("GET Chapter error:", error) + return NextResponse.json({ error: "Failed to fetch chapter details" }, { status: 500 }) + } +} diff --git a/app/api/mod/chuong/bulk-delete/route.ts b/app/api/mod/chuong/bulk-delete/route.ts new file mode 100644 index 0000000..ea027c3 --- /dev/null +++ b/app/api/mod/chuong/bulk-delete/route.ts @@ -0,0 +1,63 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { novelId, fromNumber, toNumber } = data + + if (!novelId || typeof fromNumber !== "number" || typeof toNumber !== "number") { + return NextResponse.json({ error: "Dữ liệu không hợp lệ" }, { status: 400 }) + } + + if (fromNumber > toNumber) { + return NextResponse.json({ error: "Chương bắt đầu không được lớn hơn chương kết thúc" }, { status: 400 }) + } + + // Xác minh truyện thuộc về Mod này (hoặc Admin) + const novel = await prisma.novel.findUnique({ + where: { id: novelId } + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại" }, { status: 404 }) + } + + if (session.user.role !== "ADMIN" && novel.uploaderId !== session.user.id) { + return NextResponse.json({ error: "Bạn không có quyền thao tác trên truyện này" }, { status: 403 }) + } + + await connectToMongoDB() + + // Xóa các chương trong khoảng + const deleteResult = await Chapter.deleteMany({ + novelId, + number: { $gte: fromNumber, $lte: toNumber } + }) + + // Cập nhật lại số lượng chương + const totalChapters = await Chapter.countDocuments({ novelId }) + await prisma.novel.update({ + where: { id: novelId }, + data: { totalChapters }, + }) + + return NextResponse.json({ + success: true, + deletedCount: deleteResult.deletedCount, + totalChapters + }) + } catch (error: any) { + console.error("Bulk Delete Chapters Error:", error) + return NextResponse.json({ error: "Lỗi hệ thống khi xóa chương: " + error.message }, { status: 500 }) + } +} diff --git a/app/api/mod/chuong/global-replace/route.ts b/app/api/mod/chuong/global-replace/route.ts new file mode 100644 index 0000000..d7ae839 --- /dev/null +++ b/app/api/mod/chuong/global-replace/route.ts @@ -0,0 +1,121 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { prisma } from "@/lib/prisma" + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const { novelId, action = "replace", findText, replaceText, matchCase = false, trashWords = "", preview = false } = body + + if (!novelId) { + return NextResponse.json({ error: "novelId is required" }, { status: 400 }) + } + + // Verify that the novel belongs to the uploader + let novelQuery: any = { id: novelId } + if (session.user.role !== "ADMIN") { + novelQuery.uploaderId = session.user.id + } + + const novel = await prisma.novel.findFirst({ + where: novelQuery, + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 403 }) + } + + await connectToMongoDB() + + let patterns: { regex: RegExp, replaceWith: string }[] = [] + + if (action === "replace") { + if (!findText) return NextResponse.json({ error: "findText is required for replace action" }, { status: 400 }) + const flags = matchCase ? "g" : "gi" + const safeFindText = findText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + patterns.push({ regex: new RegExp(safeFindText, flags), replaceWith: replaceText || "" }) + } else if (action === "trash") { + let words: string[] = [] + if (Array.isArray(trashWords)) { + words = trashWords + } else if (typeof trashWords === "string") { + words = trashWords.split(',').map((w: string) => w.trim()).filter((w: string) => w.length > 0) + } + + if (words.length === 0) return NextResponse.json({ error: "No valid words provided" }, { status: 400 }) + + words.forEach((word: string) => { + const safeWord = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + patterns.push({ regex: new RegExp(safeWord, 'gi'), replaceWith: "" }) + }) + } else { + return NextResponse.json({ error: "Invalid action" }, { status: 400 }) + } + + // Find all chapters for the novel + const chapters = await Chapter.find({ novelId }).sort({ number: 1 }) + let updatedCount = 0 + let previewResults: any[] = [] + + for (const chap of chapters) { + let originalContent = chap.content || "" + let newContent = originalContent + let modified = false + + patterns.forEach(({ regex, replaceWith }) => { + if (regex.test(newContent)) { + modified = true + newContent = newContent.replace(regex, replaceWith) + } + }) + + if (modified) { + if (preview && previewResults.length < 5) { // Limit previews to 5 chapters to save payload size + // Capture a small text snippet from the first pattern match + let snippet = "" + if (patterns.length > 0) { + const match = patterns[0].regex.exec(originalContent) + if (match) { + const matchIndex = match.index + const start = Math.max(0, matchIndex - 30) + const end = Math.min(originalContent.length, matchIndex + match[0].length + 30) + snippet = "..." + originalContent.substring(start, end).replace(/\n/g, ' ') + "..." + } + } + + previewResults.push({ + chapterId: chap._id, + number: chap.number, + title: chap.title, + snippet + }) + } + + if (!preview) { + chap.content = newContent + await chap.save() + } + + updatedCount++ + } + } + + return NextResponse.json({ + message: preview ? "Preview generated" : "Success", + updatedChapters: updatedCount, + previews: previewResults + }, { status: 200 }) + + } catch (error) { + console.error("Global Replace Error:", error) + return NextResponse.json({ error: "Failed to perform global replacement" }, { status: 500 }) + } +} diff --git a/app/api/mod/chuong/optimize/route.ts b/app/api/mod/chuong/optimize/route.ts new file mode 100644 index 0000000..09b36bd --- /dev/null +++ b/app/api/mod/chuong/optimize/route.ts @@ -0,0 +1,77 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { prisma } from "@/lib/prisma" + +export async function PUT(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const { novelId, updates } = body + + if (!novelId || !updates || !Array.isArray(updates)) { + return NextResponse.json({ error: "Tham số không hợp lệ" }, { status: 400 }) + } + + const novel = await prisma.novel.findUnique({ + where: { id: novelId }, + select: { id: true, uploaderId: true } + }) + + if (!novel) { + return NextResponse.json({ error: "Không tìm thấy truyện" }, { status: 404 }) + } + + if (session.user.role !== "ADMIN" && novel.uploaderId !== session.user.id) { + return NextResponse.json({ error: "Forbidden" }, { status: 403 }) + } + + const validUpdates = updates.filter((update: any) => + update && + typeof update.id === "string" && + typeof update.number === "number" && + typeof update.title === "string" + ) + + if (validUpdates.length === 0) { + return NextResponse.json({ message: "Không có thay đổi nào" }, { status: 200 }) + } + + await connectToMongoDB() + + // Prepare bulk operations for mongoose + const bulkOps = validUpdates.map((update: any) => ({ + updateOne: { + filter: { _id: update.id, novelId: novelId }, + update: { + $set: { + number: update.number, + title: update.title + } + } + } + })) + + if (bulkOps.length === 0) { + return NextResponse.json({ message: "Không có thay đổi nào" }, { status: 200 }) + } + + const result = await Chapter.bulkWrite(bulkOps) + + return NextResponse.json({ + message: "Cập nhật thành công", + matchedCount: result.matchedCount, + modifiedCount: result.modifiedCount + }, { status: 200 }) + + } catch (error: any) { + console.error("Bulk optimize error:", error) + return NextResponse.json({ error: "Lỗi cập nhật hàng loạt", details: error.message }, { status: 500 }) + } +} diff --git a/app/api/mod/chuong/route.ts b/app/api/mod/chuong/route.ts new file mode 100644 index 0000000..d7abff5 --- /dev/null +++ b/app/api/mod/chuong/route.ts @@ -0,0 +1,189 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { prisma } from "@/lib/prisma" + +function toNullableNumber(value: any): number | null { + if (value === null || value === undefined || value === "") return null + const parsed = Number(value) + return Number.isFinite(parsed) ? parsed : null +} + +export async function GET(req: Request) { + const { searchParams } = new URL(req.url) + const novelId = searchParams.get("novelId") + const page = parseInt(searchParams.get("page") || "1") + const limit = parseInt(searchParams.get("limit") || "20") + + if (!novelId) { + return NextResponse.json({ error: "novelId is required" }, { status: 400 }) + } + + try { + await connectToMongoDB() + const skip = (page - 1) * limit + + const [chapters, totalChapters] = await Promise.all([ + Chapter.find({ novelId }) + .sort({ number: 1 }) + .skip(skip) + .limit(limit) + .select("-content"), + Chapter.countDocuments({ novelId }) + ]) + + return NextResponse.json({ + chapters, + totalChapters, + totalPages: Math.ceil(totalChapters / limit), + currentPage: page + }) + } catch (error) { + console.error("GET Chapter Error:", error) + return NextResponse.json({ error: "Failed to fetch chapters" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { novelId, number, title, content, volumeNumber, volumeTitle, volumeChapterNumber } = data + + // Xác minh truyện thuộc về Mod này + const novel = await prisma.novel.findFirst({ + where: { id: novelId, uploaderId: session.user.id }, + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 403 }) + } + + await connectToMongoDB() + + // Kiểm tra chương đã tồn tại + const existingChapter = await Chapter.findOne({ novelId, number }) + if (existingChapter) { + return NextResponse.json({ error: "Chương này đã tồn tại" }, { status: 400 }) + } + + const newChapter = await Chapter.create({ + novelId, + number, + volumeNumber: toNullableNumber(volumeNumber), + volumeTitle: typeof volumeTitle === "string" && volumeTitle.trim().length > 0 ? volumeTitle.trim() : null, + volumeChapterNumber: toNullableNumber(volumeChapterNumber), + title, + content, + }) + + // Cập nhật số chương trong table PostgreSQL, tự động đếm lại + const totalChapters = await Chapter.countDocuments({ novelId }) + await prisma.novel.update({ + where: { id: novelId }, + data: { totalChapters }, + }) + + return NextResponse.json(newChapter, { status: 201 }) + } catch (error) { + console.error("POST Chapter Error:", error) + return NextResponse.json({ error: "Failed to create chapter" }, { status: 500 }) + } +} + +export async function PUT(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { id, novelId, number, title, content, volumeNumber, volumeTitle, volumeChapterNumber } = data + + // Xác minh truyện thuộc về Mod này + const novel = await prisma.novel.findFirst({ + where: { id: novelId, uploaderId: session.user.id }, + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 403 }) + } + + await connectToMongoDB() + + const updatedChapter = await Chapter.findOneAndUpdate( + { _id: id, novelId }, + { + number, + title, + content, + volumeNumber: toNullableNumber(volumeNumber), + volumeTitle: typeof volumeTitle === "string" && volumeTitle.trim().length > 0 ? volumeTitle.trim() : null, + volumeChapterNumber: toNullableNumber(volumeChapterNumber), + }, + { new: true } + ) + + if (!updatedChapter) { + return NextResponse.json({ error: "Không tìm thấy chương" }, { status: 404 }) + } + + return NextResponse.json(updatedChapter) + } catch (error) { + console.error("PUT Chapter Error:", error) + return NextResponse.json({ error: "Failed to update chapter" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const id = url.searchParams.get("id") + const novelId = url.searchParams.get("novelId") + + if (!id || !novelId) { + return NextResponse.json({ error: "Thiếu ID chương hoặc ID truyện" }, { status: 400 }) + } + + // Xác minh truyện thuộc về Mod này + const novel = await prisma.novel.findFirst({ + where: { id: novelId, uploaderId: session.user.id }, + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 403 }) + } + + await connectToMongoDB() + + const deletedChapter = await Chapter.findOneAndDelete({ _id: id, novelId }) + + if (!deletedChapter) { + return NextResponse.json({ error: "Không tìm thấy chương" }, { status: 404 }) + } + + // Cập nhật lại số lượng chương trong Postgres + const totalChapters = await Chapter.countDocuments({ novelId }) + await prisma.novel.update({ + where: { id: novelId }, + data: { totalChapters }, + }) + + return NextResponse.json({ message: "Đã xóa chương thành công" }) + } catch (error) { + console.error("DELETE Chapter Error:", error) + return NextResponse.json({ error: "Failed to delete chapter" }, { status: 500 }) + } +} diff --git a/app/api/mod/de-cu/route.ts b/app/api/mod/de-cu/route.ts new file mode 100644 index 0000000..f939941 --- /dev/null +++ b/app/api/mod/de-cu/route.ts @@ -0,0 +1,262 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { EditorRecommendation } from "@/lib/models/editor-recommendation" + +const MAX_RECOMMENDATIONS_PER_EDITOR = 5 + +function normalizeText(value: any): string { + return typeof value === "string" ? value.trim() : "" +} + +function isAllowedModerator(role: string) { + return role === "MOD" || role === "ADMIN" +} + +export async function GET(req: Request) { + const session = await getServerSession(authOptions) + if (!session || !isAllowedModerator(session.user.role)) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const q = normalizeText(url.searchParams.get("q")) + + await connectToMongoDB() + + const docs = (await EditorRecommendation.find({}) + .sort({ createdAt: -1 }) + .limit(1000) + .lean()) as Array<{ + _id: any + novelId: string + editorId: string + createdAt?: Date + }> + + const novelIds = Array.from(new Set(docs.map((doc) => doc.novelId).filter(Boolean))) + const editorIds = Array.from(new Set(docs.map((doc) => doc.editorId).filter(Boolean))) + + const [novels, editors] = await Promise.all([ + novelIds.length > 0 + ? prisma.novel.findMany({ + where: { id: { in: novelIds } }, + select: { + id: true, + title: true, + slug: true, + authorName: true, + coverUrl: true, + status: true, + totalChapters: true, + }, + }) + : Promise.resolve([]), + editorIds.length > 0 + ? prisma.user.findMany({ + where: { id: { in: editorIds } }, + select: { id: true, name: true }, + }) + : Promise.resolve([]), + ]) + + const novelMap = new Map(novels.map((novel) => [novel.id, novel])) + const editorMap = new Map(editors.map((editor) => [editor.id, editor])) + + const recommendationCountMap = new Map() + for (const doc of docs) { + recommendationCountMap.set(doc.novelId, (recommendationCountMap.get(doc.novelId) || 0) + 1) + } + + const items = docs + .map((doc) => { + const novel = novelMap.get(doc.novelId) + if (!novel) return null + + const editor = editorMap.get(doc.editorId) + return { + id: String(doc._id), + createdAt: doc.createdAt || null, + recommendCount: recommendationCountMap.get(doc.novelId) || 0, + novel, + editor: { + id: doc.editorId, + name: editor?.name || "Biên tập viên", + }, + } + }) + .filter((item): item is NonNullable => Boolean(item)) + + const summary = Array.from(recommendationCountMap.entries()) + .map(([novelId, recommendCount]) => { + const novel = novelMap.get(novelId) + if (!novel) return null + return { novel, recommendCount } + }) + .filter((item): item is NonNullable => Boolean(item)) + .sort((a, b) => b.recommendCount - a.recommendCount) + + const myNovelIdSet = new Set( + docs.filter((doc) => doc.editorId === session.user.id).map((doc) => doc.novelId) + ) + const myRecommendationCount = myNovelIdSet.size + + const candidates = q + ? await prisma.novel.findMany({ + where: { + OR: [ + { title: { contains: q, mode: "insensitive" } }, + { slug: { contains: q, mode: "insensitive" } }, + { authorName: { contains: q, mode: "insensitive" } }, + ], + }, + select: { + id: true, + title: true, + slug: true, + authorName: true, + coverUrl: true, + status: true, + totalChapters: true, + }, + take: 20, + orderBy: [{ updatedAt: "desc" }], + }) + : [] + + const candidateRows = candidates.map((novel) => ({ + ...novel, + alreadyRecommended: myNovelIdSet.has(novel.id), + recommendCount: recommendationCountMap.get(novel.id) || 0, + })) + + return NextResponse.json({ + items, + summary, + candidates: candidateRows, + myNovelIds: Array.from(myNovelIdSet), + currentUser: { + id: session.user.id, + role: session.user.role, + recommendationCount: myRecommendationCount, + maxRecommendationCount: MAX_RECOMMENDATIONS_PER_EDITOR, + }, + }) + } catch (error) { + console.error("Failed to fetch editor recommendations", error) + return NextResponse.json({ error: "Failed to fetch recommendations" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || !isAllowedModerator(session.user.role)) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const novelId = normalizeText(body?.novelId) + + if (!novelId) { + return NextResponse.json({ error: "Thiếu ID truyện" }, { status: 400 }) + } + + const existedNovel = await prisma.novel.findUnique({ + where: { id: novelId }, + select: { id: true }, + }) + + if (!existedNovel) { + return NextResponse.json({ error: "Truyện không tồn tại" }, { status: 404 }) + } + + await connectToMongoDB() + + const existing = (await EditorRecommendation.findOne({ + novelId, + editorId: session.user.id, + }) + .select({ _id: 1 }) + .lean()) as { _id: any } | null + + if (existing) { + return NextResponse.json({ error: "Bạn đã đề cử truyện này rồi" }, { status: 409 }) + } + + const myRecommendationCount = await EditorRecommendation.countDocuments({ + editorId: session.user.id, + }) + + if (myRecommendationCount >= MAX_RECOMMENDATIONS_PER_EDITOR) { + return NextResponse.json( + { error: `Mỗi biên tập viên chỉ được đề cử tối đa ${MAX_RECOMMENDATIONS_PER_EDITOR} truyện` }, + { status: 400 } + ) + } + + try { + const created = await EditorRecommendation.create({ + novelId, + editorId: session.user.id, + }) + + return NextResponse.json( + { + id: String(created._id), + novelId, + editorId: session.user.id, + }, + { status: 201 } + ) + } catch (error: any) { + if (error?.code === 11000) { + return NextResponse.json({ error: "Bạn đã đề cử truyện này rồi" }, { status: 409 }) + } + throw error + } + } catch (error) { + console.error("Failed to create editor recommendation", error) + return NextResponse.json({ error: "Failed to create recommendation" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + const session = await getServerSession(authOptions) + if (!session || !isAllowedModerator(session.user.role)) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const id = normalizeText(url.searchParams.get("id")) + + if (!id) { + return NextResponse.json({ error: "Thiếu ID đề cử" }, { status: 400 }) + } + + await connectToMongoDB() + + const existed = (await EditorRecommendation.findById(id).lean()) as { + _id: any + editorId: string + } | null + + if (!existed) { + return NextResponse.json({ error: "Đề cử không tồn tại" }, { status: 404 }) + } + + if (session.user.role !== "ADMIN" && existed.editorId !== session.user.id) { + return NextResponse.json({ error: "Bạn không thể xóa đề cử của người khác" }, { status: 403 }) + } + + await EditorRecommendation.deleteOne({ _id: id }) + return NextResponse.json({ success: true }) + } catch (error) { + console.error("Failed to delete editor recommendation", error) + return NextResponse.json({ error: "Failed to delete recommendation" }, { status: 500 }) + } +} diff --git a/app/api/mod/epub/route.ts b/app/api/mod/epub/route.ts new file mode 100644 index 0000000..e837b6a --- /dev/null +++ b/app/api/mod/epub/route.ts @@ -0,0 +1,1317 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import path from "path" +import os from "os" +import { promises as fs } from "fs" +import { convert } from "html-to-text" +import { slugify } from "@/lib/utils" +import { deleteR2ObjectByUrl, uploadBufferToR2 } from "@/lib/r2" + +export const maxDuration = 900 + +type SplitMode = "toc" | "regex" +type SeriesMode = "none" | "existing" | "new" + +type UserRole = "USER" | "MOD" | "ADMIN" + +interface EpubSection { + sourceTitle: string + content: string +} + +interface ParsedChapter { + title: string + content: string + detectedChapterNumber: number | null + finalNumber?: number + volumeNumber: number | null + volumeTitle: string | null + volumeChapterNumber: number | null + isPlaceholder?: boolean +} + +interface EpubCoverAsset { + buffer: Buffer | null + mimeType: string | null + sourceId: string | null +} + +type EpubCtor = new (epubfile: string, imagewebroot: string, chapterwebroot: string) => any + +function sanitizeEpubNavMapBranch(branch: any): any { + if (Array.isArray(branch)) { + branch.forEach((item) => sanitizeEpubNavMapBranch(item)) + return branch + } + + if (!branch || typeof branch !== "object") { + return branch + } + + if ("navLabel" in branch) { + const navLabel = (branch as any).navLabel + + if (typeof navLabel === "string") { + ;(branch as any).navLabel = navLabel + } else if (navLabel && typeof navLabel === "object") { + if (typeof navLabel.text === "string") { + ;(branch as any).navLabel = navLabel.text + } else if (navLabel.text !== undefined && navLabel.text !== null) { + ;(branch as any).navLabel = String(navLabel.text) + } else { + ;(branch as any).navLabel = "" + } + } else if (navLabel === null || navLabel === undefined) { + ;(branch as any).navLabel = "" + } else { + ;(branch as any).navLabel = String(navLabel) + } + } + + if ((branch as any).navPoint) { + sanitizeEpubNavMapBranch((branch as any).navPoint) + } + + return branch +} + +function getPatchedEpubCtor(): EpubCtor { + const loaded = require("epub2") + const EPub = (loaded?.EPub || loaded) as EpubCtor + const proto = (EPub as any)?.prototype + + if (proto && !proto.__readerSafeNavLabelPatchApplied && typeof proto.walkNavMap === "function") { + const originalWalkNavMap = proto.walkNavMap + + proto.walkNavMap = function patchedWalkNavMap(branch: any, ...args: any[]) { + const safeBranch = sanitizeEpubNavMapBranch(branch) + return originalWalkNavMap.call(this, safeBranch, ...args) + } + + proto.__readerSafeNavLabelPatchApplied = true + } + + return EPub +} + +function isRequestAbortedError(error: unknown): boolean { + if (!error) return false + + const candidate = error as { code?: unknown; message?: unknown; name?: unknown } + const code = typeof candidate.code === "string" ? candidate.code.toUpperCase() : "" + const message = typeof candidate.message === "string" ? candidate.message.toLowerCase() : "" + const name = typeof candidate.name === "string" ? candidate.name.toLowerCase() : "" + + return ( + code === "ECONNRESET" || + code === "ABORT_ERR" || + message.includes("aborted") || + message.includes("connection reset") || + name.includes("abort") + ) +} + +const CHAPTER_REGEX_PRESETS: Record = { + vi_chuong_hoi: "^(?:Chương|Hồi|Tiết|Phần|Thứ|Quyển|Ch\\.)\\s*\\d+(?:\\.\\d+)?[^\\n]*$", + mix_chapter: "^(?:Chương|Hồi|Tiết|Phần|Thứ|Quyển|Chapter|Ch\\.)\\s*\\d+(?:\\.\\d+)?[^\\n]*$", + numeric_only: "^\\d+(?:\\.\\d+)?\\s*[\\.\\:\\-\\]\\)]?(?:\\s+|$)[^\\n]*$", +} + +const LEGACY_CHAPTER_REGEX_PRESET_ALIASES: Record = { + vi_chuong: "vi_chuong_hoi", + en_chapter: "mix_chapter", + bracket_chapter: "mix_chapter", +} + +const NOISE_TITLE_REGEX = /^(?:mục lục|table of contents|toc|cover|bìa|copyright)$/i + +const SIMPLE_CHAPTER_TITLE_REGEX = /^(?:ch(?:ương|apter)?|ch\.|hồi|tiết|phần|thứ|quyển)\s*\d+(?:\.\d+)?\s*:?$/i +const GENERIC_SECTION_TITLE_REGEX = /^(?:m[uụ]c|section|sec\.?|part|ph[aầ]n)\s*[0-9ivxlcdm]+$/i +const WEAK_CHAPTER_TOC_TITLE_REGEX = /^(?:ch(?:ương|apter)?|ch\.|hồi|tiết|phần|thứ|quyển)\s*\d+(?:\.\d+)?\s*[:\-–—]\s*(?:m[uụ]c|section|sec\.?|part)\s*[0-9ivxlcdm]+$/i +const CHAPTER_HEADING_LINE_REGEX = /^(?:\[?\s*)?(?:ch(?:ương|apter)?|ch\.|hồi|tiết|phần|thứ|quyển)?\s*([0-9]+)(?:\.[0-9]+)?(?:\s*\]?)*(?:(?:\s*[:\-–—\.]\s*|\s+)(.+))?$/i +const GENERIC_GENRE_TOKENS = new Set([ + "book", + "books", + "ebook", + "fiction", + "literature", + "novel", + "story", + "truyen", + "tiểu thuyết", +]) + +function isWeakTOCTitle(title: string): boolean { + const normalized = title.trim() + return ( + SIMPLE_CHAPTER_TITLE_REGEX.test(normalized) || + GENERIC_SECTION_TITLE_REGEX.test(normalized) || + WEAK_CHAPTER_TOC_TITLE_REGEX.test(normalized) + ) +} + +function pickChapterHeadingFromContent(content: string): { + heading: string + chapterNumber: number | null + consumedLineIndexes: number[] +} | null { + const lines = content.split(/\r?\n/) + const nonEmptyIndexes = lines + .map((line, index) => ({ line: line.trim(), index })) + .filter((item) => item.line.length > 0) + + for (let i = 0; i < nonEmptyIndexes.length && i < 12; i++) { + const current = nonEmptyIndexes[i] + const headingLine = current.line.replace(/\s+/g, " ").trim() + + if (!headingLine || headingLine.length > 180) continue + if (NOISE_TITLE_REGEX.test(headingLine) || isVolumeHeading(headingLine)) continue + + const matched = headingLine.match(CHAPTER_HEADING_LINE_REGEX) + if (!matched) continue + + const parsed = Number(matched[1]) + const chapterNumber = Number.isInteger(parsed) && parsed > 0 && parsed <= 50000 ? parsed : null + const consumedLineIndexes = [current.index] + + let heading = headingLine + const trailingTitle = (matched[2] || "").trim() + if (!trailingTitle) { + const next = nonEmptyIndexes[i + 1] + if (next) { + const subtitle = next.line.replace(/\s+/g, " ").trim() + if ( + subtitle.length > 0 && + subtitle.length <= 120 && + !NOISE_TITLE_REGEX.test(subtitle) && + !isVolumeHeading(subtitle) && + !CHAPTER_HEADING_LINE_REGEX.test(subtitle) + ) { + heading = `${headingLine.replace(/[:\-–—\.\s]+$/g, "")}: ${subtitle}` + consumedLineIndexes.push(next.index) + } + } + } + + return { heading, chapterNumber, consumedLineIndexes } + } + + return null +} + +function normalizeMetaText(value: any, fallback: string) { + if (typeof value === "string" && value.trim().length > 0) return value.trim() + if (Array.isArray(value)) { + const first = value.find((v) => typeof v === "string" && v.trim().length > 0) + if (first) return first.trim() + } + return fallback +} + +function canReplaceNovelByRole(userRole: UserRole, userId: string, novel: { uploaderId: string | null }): boolean { + if (userRole === "ADMIN") return true + return novel.uploaderId === userId || novel.uploaderId === null +} + +function collectTextValues(input: any, bucket: string[]) { + if (input === null || input === undefined) return + + if (typeof input === "string") { + bucket.push(input) + return + } + + if (typeof input === "number" || typeof input === "boolean") { + bucket.push(String(input)) + return + } + + if (Array.isArray(input)) { + input.forEach((item) => collectTextValues(item, bucket)) + return + } + + if (typeof input === "object") { + Object.values(input).forEach((value) => collectTextValues(value, bucket)) + } +} + +function normalizeGenreCandidate(name: string): string { + return name + .replace(/\s+/g, " ") + .replace(/^[\s\-–—:;,.\/|]+|[\s\-–—:;,.\/|]+$/g, "") + .trim() +} + +function extractGenreCandidatesFromMetadata(metadata: any): string[] { + if (!metadata || typeof metadata !== "object") return [] + + const rawValues: string[] = [] + const keys = Object.keys(metadata) + const candidateKeys = keys.filter((key) => /subject|genre|tag|category/i.test(key)) + + for (const key of candidateKeys) { + collectTextValues((metadata as Record)[key], rawValues) + } + + const uniqueNames: string[] = [] + const seen = new Set() + + for (const raw of rawValues) { + const chunks = raw + .split(/[,;|/\n]+/) + .map((chunk) => normalizeGenreCandidate(chunk)) + .filter(Boolean) + + for (const name of chunks) { + const normalized = name.toLowerCase() + if (name.length < 2 || name.length > 80) continue + if (GENERIC_GENRE_TOKENS.has(normalized)) continue + if (seen.has(normalized)) continue + + seen.add(normalized) + uniqueNames.push(name) + + if (uniqueNames.length >= 12) { + return uniqueNames + } + } + } + + return uniqueNames +} + +async function resolveGenreIdsFromNames(genreNames: string[], createIfMissing: boolean): Promise { + const ids: string[] = [] + + for (const genreName of genreNames) { + const existing = await prisma.genre.findFirst({ + where: { name: { equals: genreName, mode: "insensitive" } }, + select: { id: true }, + }) + + if (existing) { + ids.push(existing.id) + continue + } + + if (!createIfMissing) continue + + const baseSlug = slugify(genreName) || `genre-${Date.now()}` + let slug = baseSlug + let counter = 1 + + while (await prisma.genre.findUnique({ where: { slug } })) { + slug = `${baseSlug}-${counter}` + counter += 1 + } + + try { + const created = await prisma.genre.create({ + data: { + name: genreName, + slug, + }, + select: { id: true }, + }) + ids.push(created.id) + } catch (error: any) { + if (error?.code === "P2002") { + const fallback = await prisma.genre.findFirst({ + where: { name: { equals: genreName, mode: "insensitive" } }, + select: { id: true }, + }) + if (fallback) { + ids.push(fallback.id) + continue + } + } + + throw error + } + } + + return Array.from(new Set(ids)) +} + +async function findNovelByTitleInsensitive(title: string) { + return prisma.novel.findFirst({ + where: { title: { equals: title, mode: "insensitive" } }, + orderBy: { updatedAt: "desc" }, + select: { + id: true, + title: true, + slug: true, + coverUrl: true, + uploaderId: true, + }, + }) +} + +function extractVolumeNumber(title: string): number | null { + const matched = title.match(/(?:quy[eê]n|vol(?:ume)?|t[aạ]p|book|arc|hồi)\s*([0-9]+)/i) + if (!matched) return null + const parsed = Number(matched[1]) + return Number.isFinite(parsed) ? parsed : null +} + +function extractChapterNumber(title: string): number | null { + const matched = title.match(/(?:ch(?:ương|apter)?|ch\.)\s*([0-9]+(?:\.[0-9]+)?)/i) + if (!matched) return null + const parsed = Number(matched[1]) + return Number.isFinite(parsed) ? parsed : null +} + +function extractStrictChapterNumber(title: string): number | null { + const number = extractChapterNumber(title) + if (number === null) return null + if (!Number.isInteger(number)) return null + if (number <= 0) return null + if (number > 50000) return null + return number +} + +function enhanceChapterTitleFromContent(title: string, content: string): { title: string; content: string; detectedChapterNumber: number | null } { + const lines = content.split(/\r?\n/) + const firstNonEmptyLineIndex = lines.findIndex((line) => line.trim().length > 0) + const baseTitle = title.trim() + const baseDetectedChapterNumber = extractStrictChapterNumber(baseTitle) + if (firstNonEmptyLineIndex < 0) { + return { + title, + content, + detectedChapterNumber: baseDetectedChapterNumber, + } + } + + const firstLineRaw = lines[firstNonEmptyLineIndex] + const firstLine = firstLineRaw.trim() + if (!firstLine) { + return { + title, + content, + detectedChapterNumber: baseDetectedChapterNumber, + } + } + + const detectedHeading = pickChapterHeadingFromContent(content) + if (detectedHeading) { + const shouldUseDetectedHeading = + isWeakTOCTitle(baseTitle) || + baseDetectedChapterNumber === null || + detectedHeading.chapterNumber === baseDetectedChapterNumber + + if (shouldUseDetectedHeading) { + const nextLines = [...lines] + detectedHeading.consumedLineIndexes + .sort((a, b) => b - a) + .forEach((index) => { + nextLines.splice(index, 1) + }) + + const nextContent = nextLines.join("\n").trim() + return { + title: detectedHeading.heading, + content: nextContent.length > 0 ? nextContent : content, + detectedChapterNumber: detectedHeading.chapterNumber, + } + } + } + + if (firstLine.length > 140) { + return { + title, + content, + detectedChapterNumber: baseDetectedChapterNumber, + } + } + + const isSimpleBaseTitle = SIMPLE_CHAPTER_TITLE_REGEX.test(baseTitle) + + if (!isSimpleBaseTitle) { + return { + title, + content, + detectedChapterNumber: baseDetectedChapterNumber, + } + } + + let nextTitle = baseTitle + + // Case 1: The first line already contains full chapter heading, use it directly. + if (/^(?:ch(?:ương|apter)?|ch\.)\s*\d+/i.test(firstLine) && firstLine.length > baseTitle.length + 2) { + nextTitle = firstLine + } else if (!SIMPLE_CHAPTER_TITLE_REGEX.test(firstLine) && !isVolumeHeading(firstLine) && !NOISE_TITLE_REGEX.test(firstLine)) { + // Case 2: TOC title is only "Chương N", subtitle is on next line. + nextTitle = `${baseTitle.replace(/[:\s]+$/g, "")}: ${firstLine}` + } else { + return { + title, + content, + detectedChapterNumber: baseDetectedChapterNumber, + } + } + + const newLines = [...lines] + newLines.splice(firstNonEmptyLineIndex, 1) + const nextContent = newLines.join("\n").trim() + + return { + title: nextTitle, + content: nextContent.length > 0 ? nextContent : content, + detectedChapterNumber: extractStrictChapterNumber(nextTitle) ?? baseDetectedChapterNumber, + } +} + +function isVolumeHeading(title: string): boolean { + return /^(?:quy[eê]n|vol(?:ume)?|t[aạ]p|book|arc|hồi)\s*[0-9]+(?:\s*[:-].*)?$/i.test(title.trim()) +} + +function normalizeSplitMode(value: FormDataEntryValue | null): SplitMode { + return value === "regex" ? "regex" : "toc" +} + +function normalizeSeriesMode(value: FormDataEntryValue | null): SeriesMode { + if (value === "existing") return "existing" + if (value === "new") return "new" + return "none" +} + +function readFormText(formData: FormData, key: string): string { + const value = formData.get(key) + return typeof value === "string" ? value.trim() : "" +} + +async function resolveSeriesIdForEpubImport(options: { + mode: SeriesMode + seriesId: string + seriesName: string + userRole: "USER" | "MOD" | "ADMIN" + userId: string +}) { + if (options.mode === "none") return null + + if (options.mode === "existing") { + if (!options.seriesId) { + throw new Error("Thiếu series để thêm vào") + } + + const targetSeries = await prisma.series.findFirst({ + where: options.userRole === "ADMIN" + ? { id: options.seriesId } + : { + id: options.seriesId, + OR: [ + { novels: { some: { uploaderId: options.userId } } }, + { novels: { some: { uploaderId: null } } }, + { novels: { none: {} } }, + ], + }, + select: { id: true }, + }) + + if (!targetSeries) { + throw new Error("Series không tồn tại hoặc không đủ quyền") + } + + return targetSeries.id + } + + if (!options.seriesName) { + throw new Error("Thiếu tên series mới") + } + + const existed = await prisma.series.findFirst({ + where: { name: { equals: options.seriesName, mode: "insensitive" } }, + select: { id: true }, + }) + + if (existed) return existed.id + + const baseSlug = slugify(options.seriesName) + let slug = baseSlug + let counter = 1 + + while (await prisma.series.findUnique({ where: { slug } })) { + slug = `${baseSlug}-${counter}` + counter += 1 + } + + const created = await prisma.series.create({ + data: { + name: options.seriesName, + slug, + }, + select: { id: true }, + }) + + return created.id +} + +function resolveRegexPattern(formData: FormData): { regexInput: string; regexPreset: string | null } { + const preset = readFormText(formData, "chapterRegexPreset") + const custom = readFormText(formData, "chapterRegex") + + if (custom) { + return { regexInput: custom, regexPreset: preset || "custom" } + } + + if (preset) { + const normalizedPreset = (CHAPTER_REGEX_PRESETS[preset] ? preset : LEGACY_CHAPTER_REGEX_PRESET_ALIASES[preset]) || null + if (normalizedPreset && CHAPTER_REGEX_PRESETS[normalizedPreset]) { + return { regexInput: CHAPTER_REGEX_PRESETS[normalizedPreset], regexPreset: normalizedPreset } + } + } + + return { regexInput: CHAPTER_REGEX_PRESETS.vi_chuong_hoi, regexPreset: "vi_chuong_hoi" } +} + +function buildRegexFromInput(regexInput: string): { regex: RegExp; normalized: string } { + if (!regexInput || regexInput.length > 300) { + throw new Error("Regex không hợp lệ") + } + + let pattern = regexInput + let flags = "" + + const slashWrapped = regexInput.match(/^\/(.+)\/([gimsuy]*)$/) + if (slashWrapped) { + pattern = slashWrapped[1] + flags = slashWrapped[2] + } + + const flagSet = new Set(flags.split("")) + flagSet.add("g") + flagSet.add("m") + flagSet.add("i") + const normalizedFlags = Array.from(flagSet).join("") + const regex = new RegExp(pattern, normalizedFlags) + + return { regex, normalized: `/${pattern}/${normalizedFlags}` } +} + +function enrichVolumeMetadata(chapters: Array<{ title: string; content: string }>): ParsedChapter[] { + let currentVolumeNumber: number | null = null + let currentVolumeTitle: string | null = null + let volumeChapterCounter = 0 + + return chapters.map((chapter) => { + const title = chapter.title.trim() + + const explicitVolumeNumber = extractVolumeNumber(title) + if (explicitVolumeNumber !== null) { + if (currentVolumeNumber !== explicitVolumeNumber) { + volumeChapterCounter = 0 + } + + currentVolumeNumber = explicitVolumeNumber + currentVolumeTitle = isVolumeHeading(title) + ? title + : (currentVolumeTitle || `Quyển ${explicitVolumeNumber}`) + } + + const explicitChapterNumber = extractChapterNumber(title) + let volumeChapterNumber: number | null = null + + if (currentVolumeNumber !== null) { + if (explicitChapterNumber !== null) { + volumeChapterCounter = explicitChapterNumber + } else { + volumeChapterCounter += 1 + } + volumeChapterNumber = volumeChapterCounter + } + + return { + title, + content: chapter.content, + detectedChapterNumber: extractStrictChapterNumber(title), + volumeNumber: currentVolumeNumber, + volumeTitle: currentVolumeTitle, + volumeChapterNumber, + } + }) +} + +function buildChaptersFromTOCSections(sections: EpubSection[]): ParsedChapter[] { + const chapters: ParsedChapter[] = [] + + let currentVolumeNumber: number | null = null + let currentVolumeTitle: string | null = null + let currentVolumeChapterCounter = 0 + let fallbackVolumeCounter = 0 + + for (let i = 0; i < sections.length; i++) { + const section = sections[i] + const rawTitle = section.sourceTitle || `Chương ${i + 1}` + const cleanTitle = rawTitle.replace(/\s+/g, " ").trim() + const cleanContent = section.content.trim() + + if (!cleanContent) continue + + if (isVolumeHeading(cleanTitle)) { + const extracted = extractVolumeNumber(cleanTitle) + if (extracted !== null) { + currentVolumeNumber = extracted + } else { + fallbackVolumeCounter += 1 + currentVolumeNumber = fallbackVolumeCounter + } + + currentVolumeTitle = cleanTitle + currentVolumeChapterCounter = 0 + + if (cleanContent.length <= 240) { + continue + } + } + + if (NOISE_TITLE_REGEX.test(cleanTitle) && cleanContent.length <= 240) { + continue + } + + const explicitVolumeFromTitle = extractVolumeNumber(cleanTitle) + if (explicitVolumeFromTitle !== null) { + if (currentVolumeNumber !== explicitVolumeFromTitle) { + currentVolumeChapterCounter = 0 + } + currentVolumeNumber = explicitVolumeFromTitle + if (!currentVolumeTitle || isVolumeHeading(cleanTitle)) { + currentVolumeTitle = `Quyển ${explicitVolumeFromTitle}` + } + } + + const enhanced = enhanceChapterTitleFromContent(cleanTitle, cleanContent) + let volumeChapterNumber: number | null = null + const detectedChapterNumber = enhanced.detectedChapterNumber + if (currentVolumeNumber !== null) { + const explicitChapter = extractChapterNumber(enhanced.title) + if (explicitChapter !== null) { + currentVolumeChapterCounter = explicitChapter + } else { + currentVolumeChapterCounter += 1 + } + volumeChapterNumber = currentVolumeChapterCounter + } + + chapters.push({ + title: enhanced.title, + content: enhanced.content, + detectedChapterNumber, + volumeNumber: currentVolumeNumber, + volumeTitle: currentVolumeTitle, + volumeChapterNumber, + }) + } + + return chapters +} + +function buildChaptersFromRegexSections(sections: EpubSection[], regex: RegExp): ParsedChapter[] { + const combinedText = sections + .map((section) => section.content.trim()) + .filter(Boolean) + .join("\n\n") + + const matches = Array.from(combinedText.matchAll(regex)) + if (matches.length === 0) { + return [] + } + + const parsed: Array<{ title: string; content: string }> = [] + + for (let i = 0; i < matches.length; i++) { + const match = matches[i] + if (match.index === undefined) continue + + const nextMatch = matches[i + 1] + const headingRaw = (match[1] || match[0] || "").replace(/\s+/g, " ").trim() + const sectionStart = match.index + match[0].length + const sectionEnd = nextMatch?.index ?? combinedText.length + const body = combinedText.slice(sectionStart, sectionEnd).trim() + + if (!headingRaw || body.length === 0) { + continue + } + + const enhanced = enhanceChapterTitleFromContent(headingRaw, body) + + parsed.push({ + title: enhanced.title, + content: enhanced.content, + }) + } + + return enrichVolumeMetadata(parsed) +} + +function trimLeadingBeforeChapterOne(chapters: ParsedChapter[]): { + chapters: ParsedChapter[] + trimmedCount: number +} { + if (chapters.length === 0) { + return { chapters, trimmedCount: 0 } + } + + const firstChapterOneIndex = chapters.findIndex((chapter) => { + const detected = + chapter.detectedChapterNumber ?? + extractStrictChapterNumber(chapter.title) ?? + extractChapterNumber(chapter.title) + + return detected === 1 + }) + + if (firstChapterOneIndex <= 0) { + return { chapters, trimmedCount: 0 } + } + + return { + chapters: chapters.slice(firstChapterOneIndex), + trimmedCount: firstChapterOneIndex, + } +} + +function withMissingChapterPlaceholders(chapters: ParsedChapter[]): { + chapters: ParsedChapter[] + insertedCount: number + detectedMax: number + detectedNumberAssignments: number +} { + const detectedNumbers = chapters + .map((chapter) => chapter.detectedChapterNumber) + .filter((n): n is number => typeof n === "number" && Number.isInteger(n) && n > 0) + + let insertedCount = 0 + let detectedNumberAssignments = 0 + let currentNumber = 0 + const maxDetected = detectedNumbers.length > 0 ? Math.max(...detectedNumbers) : chapters.length + const normalized: ParsedChapter[] = [] + const MAX_ALLOWED_GAP = 40 + + for (const chapter of chapters) { + const detected = chapter.detectedChapterNumber + const detectedNumber = typeof detected === "number" ? detected : null + let canUseDetected = + detectedNumber !== null && + detectedNumber > currentNumber && + (currentNumber === 0 || detectedNumber - currentNumber <= MAX_ALLOWED_GAP) + + // Recover from noisy leading TOC entries such as "Mục 1" that shift numbering. + if (!canUseDetected && detectedNumber !== null && detectedNumber > 0 && detectedNumber <= currentNumber) { + while ( + normalized.length > 0 && + detectedNumber <= currentNumber && + normalized[normalized.length - 1].detectedChapterNumber === null && + !normalized[normalized.length - 1].isPlaceholder && + isWeakTOCTitle(normalized[normalized.length - 1].title) + ) { + normalized.pop() + currentNumber = Math.max(0, currentNumber - 1) + } + + canUseDetected = detectedNumber > currentNumber && (currentNumber === 0 || detectedNumber - currentNumber <= MAX_ALLOWED_GAP) + } + + if (canUseDetected && detectedNumber !== null) { + if (currentNumber > 0) { + for (let missing = currentNumber + 1; missing < detectedNumber; missing++) { + insertedCount += 1 + normalized.push({ + title: `Chương ${missing} (Thiếu)`, + content: `[THIEU CHUONG ${missing}]\n\nNoi dung chuong nay dang thieu tu EPUB goc. Vui long bo sung sau.`, + detectedChapterNumber: missing, + finalNumber: missing, + volumeNumber: null, + volumeTitle: null, + volumeChapterNumber: null, + isPlaceholder: true, + }) + } + } + + detectedNumberAssignments += 1 + currentNumber = detectedNumber + normalized.push({ + ...chapter, + finalNumber: currentNumber, + volumeChapterNumber: chapter.volumeChapterNumber, + }) + continue + } + + currentNumber += 1 + normalized.push({ + ...chapter, + finalNumber: currentNumber, + volumeChapterNumber: chapter.volumeChapterNumber, + }) + } + + return { + chapters: normalized, + insertedCount, + detectedMax: maxDetected, + detectedNumberAssignments, + } +} + +async function extractCoverFromEpub(epub: any): Promise { + const manifest = epub.manifest || {} + const metadataCover = epub.metadata?.cover ? String(epub.metadata.cover) : null + + const candidateIds: string[] = [] + if (metadataCover) candidateIds.push(metadataCover) + + for (const [key, value] of Object.entries(manifest)) { + const item = value as any + const id = String(item?.id || key) + const href = String(item?.href || "") + const mediaType = String(item?.mediaType || item?.["media-type"] || "") + const properties = String(item?.properties || "") + + if ( + /cover-image/i.test(properties) || + /cover/i.test(id) || + /cover/i.test(href) + ) { + candidateIds.push(id) + continue + } + + if (/image\//i.test(mediaType) && /cover/i.test(href)) { + candidateIds.push(id) + } + } + + const uniqueCandidateIds = Array.from(new Set(candidateIds.filter(Boolean))) + if (uniqueCandidateIds.length === 0) { + return { buffer: null, mimeType: null, sourceId: null } + } + + for (const id of uniqueCandidateIds) { + const fromImage = await new Promise((resolve) => { + if (typeof epub.getImage !== "function") { + resolve({ buffer: null, mimeType: null, sourceId: null }) + return + } + + epub.getImage(id, (err: any, data: any, mimeType?: string) => { + if (err || !data) { + resolve({ buffer: null, mimeType: null, sourceId: null }) + return + } + + const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data) + resolve({ buffer, mimeType: typeof mimeType === "string" ? mimeType : null, sourceId: id }) + }) + }) + + if (fromImage.buffer) { + return fromImage + } + + const fromFile = await new Promise((resolve) => { + if (typeof epub.getFile !== "function") { + resolve({ buffer: null, mimeType: null, sourceId: null }) + return + } + + epub.getFile(id, (err: any, data: any, mimeType?: string) => { + if (err || !data) { + resolve({ buffer: null, mimeType: null, sourceId: null }) + return + } + + const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data) + resolve({ buffer, mimeType: typeof mimeType === "string" ? mimeType : null, sourceId: id }) + }) + }) + + if (fromFile.buffer) { + return fromFile + } + } + + return { buffer: null, mimeType: null, sourceId: null } +} + +async function saveCoverBufferToR2(cover: EpubCoverAsset): Promise { + if (!cover.buffer) return null + + return uploadBufferToR2({ + buffer: cover.buffer, + contentType: cover.mimeType, + keyPrefix: "covers/epub", + fileNameHint: cover.sourceId || undefined, + }) +} + +async function parseEpubSections(tempFilePath: string): Promise<{ metadata: any; sections: EpubSection[]; cover: EpubCoverAsset }> { + return new Promise((resolve, reject) => { + const EPub = getPatchedEpubCtor() + const epub = new EPub(tempFilePath, "", "") + + epub.on("error", (err: any) => reject(err)) + epub.on("end", async () => { + try { + const metadata = epub.metadata + const flow = epub.flow + const sections: EpubSection[] = [] + const cover = await extractCoverFromEpub(epub) + + for (let i = 0; i < flow.length; i++) { + const item = flow[i] + const text = await new Promise((res) => { + epub.getChapter(item.id, (err: any, data: string) => { + if (err) res("") + else res(data) + }) + }) + + if (!text || text.trim().length === 0) continue + + const plainText = convert(text, { wordwrap: false }).trim() + if (!plainText) continue + + sections.push({ + sourceTitle: item.title || `Mục ${i + 1}`, + content: plainText, + }) + } + + resolve({ metadata, sections, cover }) + } catch (err) { + reject(err) + } + }) + + epub.parse() + }) +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const formData = await req.formData() + const epubFile = formData.get("file") as File + const previewOnly = String(formData.get("preview") || "").toLowerCase() === "true" + const splitMode = normalizeSplitMode(formData.get("splitMode")) + const seriesMode = normalizeSeriesMode(formData.get("seriesMode")) + const seriesIdInput = readFormText(formData, "seriesId") + const seriesNameInput = readFormText(formData, "seriesName") + const replaceExisting = String(formData.get("replaceExisting") || "").toLowerCase() === "true" + const appendTargetNovelId = String(formData.get("appendTargetNovelId") || "").trim() + + if (!epubFile) { + return NextResponse.json({ error: "Thiếu file EPUB" }, { status: 400 }) + } + + const buffer = Buffer.from(await epubFile.arrayBuffer()) + const tempFilePath = path.join(os.tmpdir(), `upload-${Date.now()}.epub`) + await fs.writeFile(tempFilePath, buffer) + + let parsedData: any = null + try { + const { metadata, sections, cover } = await parseEpubSections(tempFilePath) + + let regexNormalized: string | null = null + let regexPreset: string | null = null + let chapters: ParsedChapter[] = [] + + if (splitMode === "regex") { + const regexResolved = resolveRegexPattern(formData) + const compiled = buildRegexFromInput(regexResolved.regexInput) + chapters = buildChaptersFromRegexSections(sections, compiled.regex) + regexNormalized = compiled.normalized + regexPreset = regexResolved.regexPreset + + if (chapters.length === 0) { + return NextResponse.json( + { + error: "Regex không tách được chương nào. Hãy thử regex khác hoặc chuyển về TOC.", + parserInfo: { + splitMode, + chapterRegexUsed: regexNormalized, + regexPreset, + sourceSections: sections.length, + chaptersDetected: 0, + } + }, + { status: 400 } + ) + } + } else { + chapters = buildChaptersFromTOCSections(sections) + if (chapters.length === 0) { + return NextResponse.json( + { error: "Không tìm thấy chương hợp lệ từ TOC. Bạn có thể thử chế độ Regex." }, + { status: 400 } + ) + } + } + + const leadingTrimmed = trimLeadingBeforeChapterOne(chapters) + const gapFilled = withMissingChapterPlaceholders(leadingTrimmed.chapters) + + parsedData = { + metadata, + sections, + chapters: gapFilled.chapters, + cover, + parserInfo: { + splitMode, + chapterRegexUsed: regexNormalized, + regexPreset, + sourceSections: sections.length, + chaptersDetected: chapters.length, + trimmedBeforeChapterOne: leadingTrimmed.trimmedCount, + chaptersFinal: gapFilled.chapters.length, + insertedMissingChapters: gapFilled.insertedCount, + detectedMaxChapterNumber: gapFilled.detectedMax, + detectedNumberAssignments: gapFilled.detectedNumberAssignments, + } + } + } finally { + // Xóa file tạm + await fs.unlink(tempFilePath).catch(() => { }) + } + + const { metadata, chapters, parserInfo, cover } = parsedData + + const metadataTitle = normalizeMetaText(metadata?.title, "Truyện chưa đặt tên") + const metadataAuthor = normalizeMetaText(metadata?.creator, "Khuyết danh") + const metadataDescRaw = normalizeMetaText(metadata?.description, "Chưa có giới thiệu") + const metadataDesc = convert(metadataDescRaw, { wordwrap: false }) + const detectedGenreNames = extractGenreCandidatesFromMetadata(metadata) + + const novelTitle = normalizeMetaText(readFormText(formData, "title"), metadataTitle) + const novelAuthor = normalizeMetaText(readFormText(formData, "authorName"), metadataAuthor) + const novelDesc = normalizeMetaText(readFormText(formData, "description"), metadataDesc) + const importDefaultStatus = "Hoàn thành" + + const hasDetectedVolumes = chapters.some((ch: any) => ch.volumeNumber !== null) + + if (previewOnly) { + return NextResponse.json({ + preview: true, + fileName: epubFile.name, + splitMode, + detectedStructureType: hasDetectedVolumes ? "light_novel" : "standard", + parserInfo, + hasCoverFromEpub: !!cover?.buffer, + novel: { + title: novelTitle, + authorName: novelAuthor, + description: novelDesc, + detectedGenres: detectedGenreNames, + totalChapters: chapters.length, + }, + chaptersPreview: chapters.slice(0, 20).map((ch: any, i: number) => ({ + number: ch.finalNumber || i + 1, + title: ch.title, + isPlaceholder: !!ch.isPlaceholder, + volumeNumber: ch.volumeNumber, + volumeTitle: ch.volumeTitle, + volumeChapterNumber: ch.volumeChapterNumber, + excerpt: (ch.content || "").slice(0, 180), + })), + }) + } + + let targetNovelId = "" + let responseStatus = 201 + let replaced = false + let isAppending = !!appendTargetNovelId + let finalCoverUrl: string | null = null + + if (isAppending) { + const targetNovel = await prisma.novel.findUnique({ where: { id: appendTargetNovelId } }) + if (!targetNovel || !canReplaceNovelByRole(session.user.role as UserRole, session.user.id, targetNovel)) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền thao tác báo cáo bổ sung." }, { status: 403 }) + } + targetNovelId = targetNovel.id + responseStatus = 200 + finalCoverUrl = targetNovel.coverUrl + } else { + const duplicatedNovel = await findNovelByTitleInsensitive(novelTitle) + const canReplaceDuplicated = duplicatedNovel ? canReplaceNovelByRole(session.user.role as UserRole, session.user.id, duplicatedNovel) : false + + if (duplicatedNovel && !replaceExisting) { + return NextResponse.json({ + code: "DUPLICATE_TITLE", + error: `Truyện "${duplicatedNovel.title}" đã tồn tại`, + canReplace: canReplaceDuplicated, + existingNovel: { id: duplicatedNovel.id, title: duplicatedNovel.title, slug: duplicatedNovel.slug }, + }, { status: 409 }) + } + + if (duplicatedNovel && replaceExisting && !canReplaceDuplicated) { + return NextResponse.json({ + code: "DUPLICATE_TITLE", + error: "Bạn không có quyền replace truyện đã tồn tại", + canReplace: false, + existingNovel: { id: duplicatedNovel.id, title: duplicatedNovel.title, slug: duplicatedNovel.slug }, + }, { status: 403 }) + } + + const resolvedGenreIds = await resolveGenreIdsFromNames(detectedGenreNames, true) + const selectedSeriesId = await resolveSeriesIdForEpubImport({ + mode: seriesMode, + seriesId: seriesIdInput, + seriesName: seriesNameInput, + userRole: session.user.role, + userId: session.user.id, + }) + + const coverUrl = await saveCoverBufferToR2(cover) + finalCoverUrl = coverUrl + targetNovelId = duplicatedNovel?.id || "" + + if (duplicatedNovel && replaceExisting) { + const updatedNovel = await prisma.$transaction(async (tx) => { + await tx.novel.update({ + where: { id: duplicatedNovel.id }, + data: { + title: novelTitle, + authorName: novelAuthor, + description: novelDesc, + status: importDefaultStatus, + coverUrl, + seriesId: selectedSeriesId, + totalChapters: chapters.length, + ...(session.user.role === "MOD" ? { uploaderId: session.user.id } : {}), + }, + }) + await tx.novelGenre.deleteMany({ where: { novelId: duplicatedNovel.id } }) + if (resolvedGenreIds.length > 0) { + await tx.novelGenre.createMany({ + data: resolvedGenreIds.map((genreId) => ({ novelId: duplicatedNovel.id, genreId })), + skipDuplicates: true, + }) + } + return tx.novel.findUnique({ where: { id: duplicatedNovel.id } }) + }) + + if (!updatedNovel) throw new Error("Không thể replace truyện đã tồn tại") + + targetNovelId = updatedNovel.id + responseStatus = 200 + replaced = true + + if (duplicatedNovel.coverUrl && duplicatedNovel.coverUrl !== coverUrl) { + await deleteR2ObjectByUrl(duplicatedNovel.coverUrl).catch(() => { }) + } + } else { + const baseSlug = slugify(novelTitle) + let slug = baseSlug + let slugCounter = 1 + while (await prisma.novel.findUnique({ where: { slug } })) { + slug = `${baseSlug}-${slugCounter}` + slugCounter++ + } + + const createData: any = { + title: novelTitle, + slug, + authorName: novelAuthor, + description: novelDesc, + status: importDefaultStatus, + coverUrl, + seriesId: selectedSeriesId, + uploaderId: session.user.id, + totalChapters: chapters.length, + } + if (resolvedGenreIds.length > 0) { + createData.genres = { create: resolvedGenreIds.map((genreId) => ({ genre: { connect: { id: genreId } } })) } + } + + const createdNovel = await prisma.novel.create({ data: createData }) + targetNovelId = createdNovel.id + } + } + + await connectToMongoDB() + + let insertedCount = 0 + let updatedCount = 0 + + if (!isAppending) { + await Chapter.deleteMany({ novelId: targetNovelId }) + const finalChapterDocs = chapters.map((ch: any, i: number) => ({ + novelId: targetNovelId, + number: ch.finalNumber || (i + 1), + volumeNumber: ch.volumeNumber ?? null, + volumeTitle: ch.volumeTitle ?? null, + volumeChapterNumber: ch.volumeChapterNumber ?? null, + title: ch.title, + content: ch.content, + views: 0, + })) + if (finalChapterDocs.length > 0) { + await Chapter.insertMany(finalChapterDocs) + insertedCount = finalChapterDocs.length + } + } else { + const bulkOps = chapters.map((ch: any) => { + const candidateNumber = ch.detectedChapterNumber || ch.finalNumber + return { + updateOne: { + filter: { novelId: targetNovelId, number: candidateNumber }, + update: { + $set: { + volumeNumber: ch.volumeNumber ?? null, + volumeTitle: ch.volumeTitle ?? null, + volumeChapterNumber: ch.volumeChapterNumber ?? null, + title: ch.title, + content: ch.content, + }, + }, + upsert: true, + } + } + }) + + if (bulkOps.length > 0) { + const writeResult = await Chapter.bulkWrite(bulkOps) + insertedCount = writeResult.upsertedCount || 0 + updatedCount = writeResult.modifiedCount || 0 + } + + const totalAfterMerge = await Chapter.countDocuments({ novelId: targetNovelId }) + await prisma.novel.update({ + where: { id: targetNovelId }, + data: { totalChapters: totalAfterMerge }, + }) + } + + const novelAfterWrite = await prisma.novel.findUnique({ where: { id: targetNovelId } }) + if (!novelAfterWrite) { + throw new Error("Không thể tải lại thông tin truyện sau khi import") + } + + return NextResponse.json({ + ...novelAfterWrite, + parserInfo, + hasCoverFromEpub: !!finalCoverUrl, + detectedGenres: detectedGenreNames, + replaced, + }, { status: responseStatus }) + } catch (error: any) { + if (isRequestAbortedError(error)) { + console.warn("EPUB upload aborted by client or network interruption") + return NextResponse.json({ error: "Kết nối upload bị ngắt trong lúc xử lý" }, { status: 499 }) + } + + console.error("EPUB upload error:", error) + return NextResponse.json({ error: "Lỗi xử lý file EPUB", details: error.message }, { status: 500 }) + } +} diff --git a/app/api/mod/series/route.ts b/app/api/mod/series/route.ts new file mode 100644 index 0000000..7ec2eb4 --- /dev/null +++ b/app/api/mod/series/route.ts @@ -0,0 +1,200 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import { slugify } from "@/lib/utils" + +function normalizeText(value: any): string { + return typeof value === "string" ? value.trim() : "" +} + +async function resolveEditableSeries( + id: string, + session: { user: { role: "USER" | "MOD" | "ADMIN"; id: string } } +) { + return prisma.series.findFirst({ + where: session.user.role === "ADMIN" + ? { id } + : { + id, + OR: [ + { novels: { some: { uploaderId: session.user.id } } }, + { novels: { some: { uploaderId: null } } }, + { novels: { none: {} } }, + ], + }, + select: { id: true }, + }) +} + +export async function GET() { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const series = await prisma.series.findMany({ + where: session.user.role === "ADMIN" + ? undefined + : { + OR: [ + { novels: { some: { uploaderId: session.user.id } } }, + { novels: { some: { uploaderId: null } } }, + { novels: { none: {} } }, + ], + }, + orderBy: { updatedAt: "desc" }, + select: { + id: true, + name: true, + slug: true, + description: true, + _count: { select: { novels: true } }, + }, + }) + + return NextResponse.json(series) + } catch { + return NextResponse.json({ error: "Failed to fetch series" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const name = normalizeText(body?.name) + const description = normalizeText(body?.description) + + if (!name) { + return NextResponse.json({ error: "Tên series không được để trống" }, { status: 400 }) + } + + const existing = await prisma.series.findFirst({ + where: { name: { equals: name, mode: "insensitive" } }, + select: { id: true, name: true, slug: true, description: true }, + }) + + if (existing) { + return NextResponse.json(existing) + } + + const baseSlug = slugify(name) + let slug = baseSlug + let counter = 1 + + while (await prisma.series.findUnique({ where: { slug } })) { + slug = `${baseSlug}-${counter}` + counter += 1 + } + + const created = await prisma.series.create({ + data: { name, slug, description: description || null }, + select: { id: true, name: true, slug: true, description: true }, + }) + + return NextResponse.json(created, { status: 201 }) + } catch { + return NextResponse.json({ error: "Failed to create series" }, { status: 500 }) + } +} + +export async function PUT(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const id = normalizeText(body?.id) + const name = normalizeText(body?.name) + const description = normalizeText(body?.description) + + if (!id || !name) { + return NextResponse.json({ error: "Thiếu thông tin series" }, { status: 400 }) + } + + const target = await resolveEditableSeries(id, session as any) + if (!target) { + return NextResponse.json({ error: "Không tìm thấy series hoặc không đủ quyền" }, { status: 404 }) + } + + const duplicated = await prisma.series.findFirst({ + where: { + id: { not: id }, + name: { equals: name, mode: "insensitive" }, + }, + select: { id: true }, + }) + + if (duplicated) { + return NextResponse.json({ error: "Tên series đã tồn tại" }, { status: 409 }) + } + + const baseSlug = slugify(name) + let slug = baseSlug + let counter = 1 + + while (await prisma.series.findFirst({ where: { slug, id: { not: id } }, select: { id: true } })) { + slug = `${baseSlug}-${counter}` + counter += 1 + } + + const updated = await prisma.series.update({ + where: { id }, + data: { + name, + slug, + description: description || null, + }, + select: { + id: true, + name: true, + slug: true, + description: true, + _count: { select: { novels: true } }, + }, + }) + + return NextResponse.json(updated) + } catch { + return NextResponse.json({ error: "Failed to update series" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const id = normalizeText(url.searchParams.get("id")) + + if (!id) { + return NextResponse.json({ error: "Thiếu id series" }, { status: 400 }) + } + + const target = await resolveEditableSeries(id, session as any) + if (!target) { + return NextResponse.json({ error: "Không tìm thấy series hoặc không đủ quyền" }, { status: 404 }) + } + + const usedCount = await prisma.novel.count({ where: { seriesId: id } }) + if (usedCount > 0) { + return NextResponse.json({ error: "Series đang chứa truyện, không thể xóa" }, { status: 409 }) + } + + await prisma.series.delete({ where: { id } }) + return NextResponse.json({ success: true }) + } catch { + return NextResponse.json({ error: "Failed to delete series" }, { status: 500 }) + } +} diff --git a/app/api/mod/the-loai/route.ts b/app/api/mod/the-loai/route.ts new file mode 100644 index 0000000..9c04dee --- /dev/null +++ b/app/api/mod/the-loai/route.ts @@ -0,0 +1,71 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import { slugify } from "@/lib/utils" + +// Get all genres +export async function GET() { + try { + const genres = await prisma.genre.findMany({ + orderBy: { name: "asc" } + }) + return NextResponse.json(genres) + } catch (error) { + return NextResponse.json({ error: "Failed to fetch genres" }, { status: 500 }) + } +} + +// Admins/Mods can add new genres +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { name, description } = data + + if (!name) { + return NextResponse.json({ error: "Genre name is required" }, { status: 400 }) + } + + const slug = slugify(name) + + const newGenre = await prisma.genre.create({ + data: { name, slug, description } + }) + + return NextResponse.json(newGenre, { status: 201 }) + } catch (error: any) { + if (error.code === 'P2002') { + return NextResponse.json({ error: "Thể loại này đã tồn tại" }, { status: 400 }) + } + return NextResponse.json({ error: "Failed to create genre" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const id = url.searchParams.get("id") + + if (!id) { + return NextResponse.json({ error: "Thiếu ID thể loại" }, { status: 400 }) + } + + await prisma.genre.delete({ + where: { id } + }) + + return NextResponse.json({ message: "Đã xóa thể loại thành công" }) + } catch (error) { + return NextResponse.json({ error: "Lỗi khi xóa thể loại" }, { status: 500 }) + } +} diff --git a/app/api/mod/truyen/[id]/route.ts b/app/api/mod/truyen/[id]/route.ts new file mode 100644 index 0000000..409400e --- /dev/null +++ b/app/api/mod/truyen/[id]/route.ts @@ -0,0 +1,45 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET( + req: Request, + context: { params: Promise<{ id: string }> } +) { + const { id } = await context.params + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const novel = await prisma.novel.findFirst({ + where: session.user.role === "ADMIN" + ? { id } + : { + id, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + }, + include: { + series: true, + genres: { + include: { + genre: true + } + } + } + }) + + if (!novel) { + return NextResponse.json({ error: "Novel not found" }, { status: 404 }) + } + + return NextResponse.json(novel) + } catch (error) { + return NextResponse.json({ error: "Failed to fetch novel details" }, { status: 500 }) + } +} diff --git a/app/api/mod/truyen/[id]/trash-words/route.ts b/app/api/mod/truyen/[id]/trash-words/route.ts new file mode 100644 index 0000000..e16ad91 --- /dev/null +++ b/app/api/mod/truyen/[id]/trash-words/route.ts @@ -0,0 +1,72 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET(req: Request, { params }: { params: Promise<{ id: string }> }) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const { id: novelId } = await params + + try { + const novel = await prisma.novel.findUnique({ + where: { id: novelId }, + select: { trashWords: true, uploaderId: true } + }) + + if (!novel) { + return NextResponse.json({ error: "Not found" }, { status: 404 }) + } + + if (session.user.role !== "ADMIN" && novel.uploaderId !== session.user.id) { + return NextResponse.json({ error: "Forbidden" }, { status: 403 }) + } + + return NextResponse.json({ trashWords: novel.trashWords }) + } catch (error) { + console.error("GET Trash Words Error:", error) + return NextResponse.json({ error: "Lỗi Server" }, { status: 500 }) + } +} + +export async function PUT(req: Request, { params }: { params: Promise<{ id: string }> }) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const { id: novelId } = await params + + try { + const novel = await prisma.novel.findUnique({ + where: { id: novelId }, + select: { id: true, uploaderId: true } + }) + + if (!novel) return NextResponse.json({ error: "Not found" }, { status: 404 }) + + if (session.user.role !== "ADMIN" && novel.uploaderId !== session.user.id) { + return NextResponse.json({ error: "Forbidden" }, { status: 403 }) + } + + const body = await req.json() + const { trashWords } = body + + if (!Array.isArray(trashWords)) { + return NextResponse.json({ error: "Mảng từ rác không hợp lệ" }, { status: 400 }) + } + + const updated = await prisma.novel.update({ + where: { id: novelId }, + data: { trashWords } + }) + + return NextResponse.json({ success: true, trashWords: updated.trashWords }) + } catch (error) { + console.error("PUT Trash Words Error:", error) + return NextResponse.json({ error: "Lỗi Server" }, { status: 500 }) + } +} diff --git a/app/api/mod/truyen/bulk/route.ts b/app/api/mod/truyen/bulk/route.ts new file mode 100644 index 0000000..861f350 --- /dev/null +++ b/app/api/mod/truyen/bulk/route.ts @@ -0,0 +1,70 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { deleteR2ObjectByUrl } from "@/lib/r2" + +function normalizeIds(value: any): string[] { + if (!Array.isArray(value)) return [] + return value.filter((item) => typeof item === "string" && item.trim()).map((item) => item.trim()) +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const action = typeof body?.action === "string" ? body.action : "" + const ids = normalizeIds(body?.ids) + + if (ids.length === 0) { + return NextResponse.json({ error: "Danh sách truyện trống" }, { status: 400 }) + } + + const accessibleNovels = await prisma.novel.findMany({ + where: session.user.role === "ADMIN" + ? { id: { in: ids } } + : { + id: { in: ids }, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + }, + select: { + id: true, + coverUrl: true, + }, + }) + + if (accessibleNovels.length === 0) { + return NextResponse.json({ error: "Không có truyện hợp lệ để thao tác" }, { status: 404 }) + } + + const accessibleIds = accessibleNovels.map((novel) => novel.id) + + if (action === "delete") { + await connectToMongoDB() + await Chapter.deleteMany({ novelId: { $in: accessibleIds } }) + + await prisma.novel.deleteMany({ + where: { id: { in: accessibleIds } }, + }) + + await Promise.all( + accessibleNovels.map((novel) => deleteR2ObjectByUrl(novel.coverUrl).catch(() => {})) + ) + + return NextResponse.json({ success: true, deletedCount: accessibleIds.length }) + } + + return NextResponse.json({ error: "Chỉ hỗ trợ xóa hàng loạt" }, { status: 400 }) + } catch { + return NextResponse.json({ error: "Bulk operation failed" }, { status: 500 }) + } +} diff --git a/app/api/mod/truyen/missing/route.ts b/app/api/mod/truyen/missing/route.ts new file mode 100644 index 0000000..84da5a7 --- /dev/null +++ b/app/api/mod/truyen/missing/route.ts @@ -0,0 +1,289 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +type MissingKey = "author" | "cover" | "description" | "genres" + +const ALL_MISSING_KEYS: MissingKey[] = ["author", "cover", "description", "genres"] + +function getScopeWhere(session: { user: { role: string; id: string } }) { + if (session.user.role === "ADMIN") { + return {} + } + + return { + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + } +} + +function parseMissingKeys(raw: string | null): MissingKey[] { + if (!raw || !raw.trim()) return ALL_MISSING_KEYS + + const parsed = raw + .split(",") + .map((item) => item.trim().toLowerCase()) + .filter((item): item is MissingKey => ALL_MISSING_KEYS.includes(item as MissingKey)) + + if (parsed.length === 0) return ALL_MISSING_KEYS + return Array.from(new Set(parsed)) +} + +function buildMissingWhereForKey(key: MissingKey) { + switch (key) { + case "author": + return { authorName: { equals: "" } } + case "cover": + return { + OR: [ + { coverUrl: null }, + { coverUrl: { equals: "" } }, + ], + } + case "description": + return { description: { equals: "" } } + case "genres": + return { genres: { none: {} } } + default: + return {} + } +} + +function computeMissingStatus(novel: { + authorName: string + coverUrl: string | null + description: string + genres: Array<{ genre: { id: string; name: string } }> +}) { + const authorMissing = novel.authorName.trim().length === 0 + const coverMissing = !novel.coverUrl || novel.coverUrl.trim().length === 0 + const descriptionMissing = novel.description.trim().length === 0 + const genresMissing = novel.genres.length === 0 + + return { + author: authorMissing, + cover: coverMissing, + description: descriptionMissing, + genres: genresMissing, + } +} + +function hasSelectedMissing(missingStatus: Record, selected: MissingKey[]) { + return selected.some((key) => missingStatus[key]) +} + +export async function GET(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const q = (url.searchParams.get("q") || "").trim() + const selectedMissing = parseMissingKeys(url.searchParams.get("missing")) + + const andWhere: any[] = [getScopeWhere(session)] + + if (q) { + andWhere.push({ + OR: [ + { title: { contains: q, mode: "insensitive" } }, + { slug: { contains: q, mode: "insensitive" } }, + { authorName: { contains: q, mode: "insensitive" } }, + { series: { name: { contains: q, mode: "insensitive" } } }, + ], + }) + } + + if (selectedMissing.length > 0) { + andWhere.push({ + OR: selectedMissing.map((key) => buildMissingWhereForKey(key)), + }) + } + + const novels = await (prisma as any).novel.findMany({ + where: { AND: andWhere }, + orderBy: [{ updatedAt: "desc" }], + take: 600, + select: { + id: true, + title: true, + slug: true, + authorName: true, + coverUrl: true, + description: true, + totalChapters: true, + updatedAt: true, + series: { + select: { + id: true, + name: true, + slug: true, + }, + }, + genres: { + select: { + genre: { + select: { + id: true, + name: true, + }, + }, + }, + }, + }, + }) + + const items = novels + .map((novel: any) => { + const missing = computeMissingStatus(novel) + + return { + id: novel.id, + title: novel.title, + slug: novel.slug, + authorName: novel.authorName, + coverUrl: novel.coverUrl, + description: novel.description, + totalChapters: novel.totalChapters, + updatedAt: novel.updatedAt, + series: novel.series, + genres: novel.genres.map((item: any) => item.genre), + missing, + } + }) + .filter((item: any) => hasSelectedMissing(item.missing, selectedMissing)) + + return NextResponse.json({ + items, + total: items.length, + }) + } catch (error) { + console.error("Failed to fetch novels with missing fields", error) + return NextResponse.json({ error: "Failed to fetch missing-field novels" }, { status: 500 }) + } +} + +export async function PATCH(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const updates = Array.isArray(body?.updates) ? body.updates : [] + + if (updates.length === 0) { + return NextResponse.json({ error: "Thiếu danh sách cập nhật" }, { status: 400 }) + } + + if (updates.length > 200) { + return NextResponse.json({ error: "Chỉ hỗ trợ tối đa 200 bản ghi mỗi lần" }, { status: 400 }) + } + + const ids = updates + .map((item: any) => (typeof item?.id === "string" ? item.id : "")) + .filter(Boolean) + + if (ids.length === 0) { + return NextResponse.json({ error: "Danh sách ID không hợp lệ" }, { status: 400 }) + } + + const allowedRows = await (prisma as any).novel.findMany({ + where: { + AND: [ + getScopeWhere(session), + { id: { in: ids } }, + ], + }, + select: { id: true }, + }) + + const allowedSet = new Set(allowedRows.map((row: any) => row.id)) + + let updatedCount = 0 + let skippedCount = 0 + const failures: Array<{ id: string; error: string }> = [] + + for (const raw of updates) { + const id = typeof raw?.id === "string" ? raw.id : "" + if (!id) { + skippedCount += 1 + continue + } + + if (!allowedSet.has(id)) { + failures.push({ id, error: "Không có quyền cập nhật truyện này" }) + continue + } + + const data: Record = {} + + if (typeof raw.authorName === "string") { + data.authorName = raw.authorName.trim() + } + + if (typeof raw.coverUrl === "string") { + const normalizedCover = raw.coverUrl.trim() + data.coverUrl = normalizedCover.length > 0 ? normalizedCover : null + } else if (raw.coverUrl === null) { + data.coverUrl = null + } + + if (typeof raw.description === "string") { + data.description = raw.description.trim() + } + + const hasGenreUpdate = Array.isArray(raw.genreIds) + const genreIds: string[] = hasGenreUpdate + ? Array.from(new Set((raw.genreIds as unknown[]).filter((item): item is string => typeof item === "string" && item.trim().length > 0))) + : [] + + if (Object.keys(data).length === 0 && !hasGenreUpdate) { + skippedCount += 1 + continue + } + + try { + await prisma.$transaction(async (tx) => { + if (Object.keys(data).length > 0) { + await (tx as any).novel.update({ + where: { id }, + data, + }) + } + + if (hasGenreUpdate) { + await (tx as any).novelGenre.deleteMany({ where: { novelId: id } }) + + if (genreIds.length > 0) { + await (tx as any).novelGenre.createMany({ + data: genreIds.map((genreId) => ({ novelId: id, genreId })), + skipDuplicates: true, + }) + } + } + }) + + updatedCount += 1 + } catch (error: any) { + failures.push({ id, error: error?.message || "Cập nhật thất bại" }) + } + } + + return NextResponse.json({ + updatedCount, + skippedCount, + failureCount: failures.length, + failures, + }) + } catch (error) { + console.error("Failed to patch missing-field novels", error) + return NextResponse.json({ error: "Failed to update novels" }, { status: 500 }) + } +} diff --git a/app/api/mod/truyen/route.ts b/app/api/mod/truyen/route.ts new file mode 100644 index 0000000..d8cdbd3 --- /dev/null +++ b/app/api/mod/truyen/route.ts @@ -0,0 +1,320 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import { slugify } from "@/lib/utils" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" +import { deleteR2ObjectByUrl } from "@/lib/r2" + +function normalizeOptionalText(value: any): string { + return typeof value === "string" ? value.trim() : "" +} + +async function resolveSeriesIdForWrite( + seriesIdInput: any, + seriesNameInput: any, + userRole: "USER" | "MOD" | "ADMIN", + userId: string +): Promise { + const seriesId = normalizeOptionalText(seriesIdInput) + const seriesName = normalizeOptionalText(seriesNameInput) + + if (seriesId) { + const series = await prisma.series.findFirst({ + where: userRole === "ADMIN" + ? { id: seriesId } + : { + id: seriesId, + OR: [ + { novels: { some: { uploaderId: userId } } }, + { novels: { some: { uploaderId: null } } }, + { novels: { none: {} } }, + ], + }, + select: { id: true }, + }) + + if (!series) { + throw new Error("Series không tồn tại hoặc bạn không có quyền sử dụng") + } + + return series.id + } + + if (!seriesName) return null + + const existingSeries = await prisma.series.findFirst({ + where: { name: { equals: seriesName, mode: "insensitive" } }, + select: { id: true }, + }) + + if (existingSeries) { + return existingSeries.id + } + + const baseSlug = slugify(seriesName) + let slug = baseSlug + let counter = 1 + + while (await prisma.series.findUnique({ where: { slug } })) { + slug = `${baseSlug}-${counter}` + counter += 1 + } + + const createdSeries = await prisma.series.create({ + data: { + name: seriesName, + slug, + }, + select: { id: true }, + }) + + return createdSeries.id +} + +export async function GET() { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const novels = await prisma.novel.findMany({ + where: session.user.role === "ADMIN" + ? undefined + : { + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + }, + include: { + series: { + select: { id: true, name: true, slug: true } + } + }, + orderBy: { updatedAt: "desc" }, + }) + return NextResponse.json(novels) + } catch (error) { + return NextResponse.json({ error: "Failed to fetch novels" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { title, originalTitle, authorName, originalAuthorName, description, coverUrl, genreIds = [] } = data + const seriesId = await resolveSeriesIdForWrite(data?.seriesId, data?.seriesName, session.user.role, session.user.id) + // Tạo slug từ title + const slug = slugify(title) + + const newNovel = await prisma.novel.create({ + data: { + title, + originalTitle, + slug: slug, + authorName, + originalAuthorName, + description, + coverUrl, + seriesId, + uploaderId: session.user.id, + genres: { + create: genreIds.map((id: string) => ({ + genre: { connect: { id } } + })) + } + }, + }) + return NextResponse.json(newNovel, { status: 201 }) + } catch (error) { + return NextResponse.json({ error: "Failed to create novel" }, { status: 500 }) + } +} + +export async function PUT(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const data = await req.json() + const { id, title, originalTitle, authorName, originalAuthorName, description, coverUrl, status, genreIds } = data + + if (!id) { + return NextResponse.json({ error: "Thiếu ID truyện" }, { status: 400 }) + } + + const hasField = (field: string) => Object.prototype.hasOwnProperty.call(data, field) + + const targetNovel = await prisma.novel.findFirst({ + where: session.user.role === "ADMIN" + ? { id } + : { + id, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + }, + select: { id: true, seriesId: true }, + }) + + if (!targetNovel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 404 }) + } + + // Disable editing series relation from novel edit form: keep current seriesId. + const fixedSeriesId = targetNovel.seriesId + + if (fixedSeriesId) { + const sharedData: Record = {} + if (hasField("originalTitle")) sharedData.originalTitle = originalTitle + if (hasField("authorName")) sharedData.authorName = authorName + if (hasField("originalAuthorName")) sharedData.originalAuthorName = originalAuthorName + if (hasField("description")) sharedData.description = description + if (hasField("status")) sharedData.status = status + + const ownData: Record = {} + if (hasField("title")) ownData.title = title + if (hasField("coverUrl")) ownData.coverUrl = coverUrl + if (session.user.role === "MOD") ownData.uploaderId = session.user.id + + const seriesNovels = await prisma.novel.findMany({ + where: { seriesId: fixedSeriesId }, + select: { id: true }, + }) + const seriesNovelIds = seriesNovels.map((novel) => novel.id) + + const updatedNovel = await prisma.$transaction(async (tx) => { + // Sync shared metadata for all novels in the same series. + if (Object.keys(sharedData).length > 0) { + await tx.novel.updateMany({ + where: { id: { in: seriesNovelIds } }, + data: sharedData, + }) + } + + if (genreIds !== undefined) { + await tx.novelGenre.deleteMany({ + where: { novelId: { in: seriesNovelIds } }, + }) + + if (genreIds.length > 0) { + await tx.novelGenre.createMany({ + data: seriesNovelIds.flatMap((novelId) => + genreIds.map((genreId: string) => ({ novelId, genreId })) + ), + }) + } + } + + // Only current novel keeps its own title and cover. + if (Object.keys(ownData).length === 0) { + return tx.novel.findUnique({ where: { id } }) + } + + return tx.novel.update({ + where: { id }, + data: ownData, + }) + }) + + return NextResponse.json(updatedNovel) + } + + const updateData: Record = { + seriesId: fixedSeriesId, + ...(session.user.role === "MOD" && { uploaderId: session.user.id }), + } + + if (hasField("title")) updateData.title = title + if (hasField("originalTitle")) updateData.originalTitle = originalTitle + if (hasField("authorName")) updateData.authorName = authorName + if (hasField("originalAuthorName")) updateData.originalAuthorName = originalAuthorName + if (hasField("description")) updateData.description = description + if (hasField("coverUrl")) updateData.coverUrl = coverUrl + if (hasField("status")) updateData.status = status + + const updatedNovel = await prisma.novel.update({ + where: { id }, + data: { + ...updateData, + ...(genreIds !== undefined && { + genres: { + deleteMany: {}, + create: genreIds.map((gId: string) => ({ + genre: { connect: { id: gId } } + })) + } + }) + }, + }) + + return NextResponse.json(updatedNovel) + } catch (error) { + return NextResponse.json({ error: "Failed to update novel" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const url = new URL(req.url) + const id = url.searchParams.get("id") + + if (!id) return NextResponse.json({ error: "Thiếu ID truyện" }, { status: 400 }) + + const novel = await prisma.novel.findFirst({ + where: session.user.role === "ADMIN" + ? { id } + : { + id, + OR: [ + { uploaderId: session.user.id }, + { uploaderId: null }, + ], + }, + select: { id: true, coverUrl: true, seriesId: true } + }) + + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại hoặc không đủ quyền" }, { status: 404 }) + } + + await connectToMongoDB() + const chapterDeleteResult = await Chapter.deleteMany({ novelId: id }) + + await prisma.novel.delete({ + where: { id }, + }) + + await deleteR2ObjectByUrl(novel.coverUrl).catch(() => { }) + + if (novel.seriesId) { + const remainingSeriesNovels = await prisma.novel.count({ where: { seriesId: novel.seriesId } }) + if (remainingSeriesNovels === 0) { + await prisma.series.delete({ where: { id: novel.seriesId } }).catch(() => { }) + } + } + + return NextResponse.json({ + message: "Đã xóa truyện và toàn bộ chương thành công", + deletedChapters: chapterDeleteResult.deletedCount || 0 + }) + } catch (error) { + return NextResponse.json({ error: "Failed to delete novel" }, { status: 500 }) + } +} diff --git a/app/api/mod/upload-cover/route.ts b/app/api/mod/upload-cover/route.ts new file mode 100644 index 0000000..99e5723 --- /dev/null +++ b/app/api/mod/upload-cover/route.ts @@ -0,0 +1,39 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { uploadBufferToR2 } from "@/lib/r2" + +export async function POST(req: Request) { + try { + const session = await getServerSession(authOptions) + if (!session || (session.user.role !== "MOD" && session.user.role !== "ADMIN")) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const formData = await req.formData() + const file = formData.get("file") as File | null + + if (!file) { + return NextResponse.json({ error: "No file uploaded" }, { status: 400 }) + } + + if (!file.type.startsWith("image/")) { + return NextResponse.json({ error: "Only image files are allowed" }, { status: 400 }) + } + + const bytes = await file.arrayBuffer() + const buffer = Buffer.from(bytes) + + const url = await uploadBufferToR2({ + buffer, + contentType: file.type, + keyPrefix: "covers/manual", + fileNameHint: file.name, + }) + + return NextResponse.json({ url }) + } catch (error: any) { + console.error("Cover upload error:", error) + return NextResponse.json({ error: error.message || "Failed to upload cover" }, { status: 500 }) + } +} diff --git a/app/api/novels/[id]/route.ts b/app/api/novels/[id]/route.ts new file mode 100644 index 0000000..41ec379 --- /dev/null +++ b/app/api/novels/[id]/route.ts @@ -0,0 +1,67 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" + +export async function GET( + _req: Request, + { params }: { params: Promise<{ id: string }> } +) { + try { + const { id } = await params + + // Support both id and slug + const novel = await prisma.novel.findFirst({ + where: { OR: [{ id }, { slug: id }] }, + select: { + id: true, + title: true, + slug: true, + originalTitle: true, + authorName: true, + originalAuthorName: true, + description: true, + coverUrl: true, + coverColor: true, + status: true, + totalChapters: true, + views: true, + rating: true, + ratingCount: true, + bookmarkCount: true, + seriesId: true, + series: { + select: { + id: true, + name: true, + slug: true, + novels: { + select: { + id: true, + title: true, + slug: true, + totalChapters: true, + status: true, + coverUrl: true, + }, + orderBy: { title: "asc" }, + }, + }, + }, + genres: { select: { genre: { select: { id: true, name: true, slug: true } } } }, + createdAt: true, + updatedAt: true, + }, + }) + + if (!novel) { + return NextResponse.json({ error: "Novel not found" }, { status: 404 }) + } + + return NextResponse.json({ + ...novel, + genres: novel.genres.map((g) => g.genre), + }) + } catch (error) { + console.error("Novel detail error:", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/novels/browse/route.ts b/app/api/novels/browse/route.ts new file mode 100644 index 0000000..d74fdcf --- /dev/null +++ b/app/api/novels/browse/route.ts @@ -0,0 +1,115 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" + +type SortKey = "latest" | "popular" | "rating" | "name" + +export async function GET(req: Request) { + try { + const { searchParams } = new URL(req.url) + const q = searchParams.get("q")?.trim() || "" + const genre = searchParams.get("genre") || "" + const status = searchParams.get("status") || "" + const sort: SortKey = (searchParams.get("sort") as SortKey) || "latest" + const page = Math.max(1, parseInt(searchParams.get("page") || "1", 10)) + const limit = Math.min(100, Math.max(1, parseInt(searchParams.get("limit") || "20", 10))) + const skip = (page - 1) * limit + + // Build where clause + const where: Record = {} + if (status) where.status = status + if (genre) { + where.genres = { some: { genre: { slug: genre } } } + } + if (q) { + where.OR = [ + { title: { contains: q, mode: "insensitive" } }, + { originalTitle: { contains: q, mode: "insensitive" } }, + { authorName: { contains: q, mode: "insensitive" } }, + { originalAuthorName: { contains: q, mode: "insensitive" } }, + { series: { name: { contains: q, mode: "insensitive" } } }, + ] + } + + // Build orderBy + const orderBy: Record = + sort === "popular" + ? { views: "desc" } + : sort === "rating" + ? { rating: "desc" } + : sort === "name" + ? { title: "asc" } + : { updatedAt: "desc" } + + const [novels, totalCount] = await Promise.all([ + prisma.novel.findMany({ + where, + orderBy, + skip, + take: limit, + select: { + id: true, + title: true, + slug: true, + originalTitle: true, + authorName: true, + coverUrl: true, + coverColor: true, + status: true, + totalChapters: true, + views: true, + rating: true, + ratingCount: true, + bookmarkCount: true, + seriesId: true, + series: { select: { id: true, name: true, slug: true } }, + genres: { select: { genre: { select: { id: true, name: true, slug: true } } } }, + updatedAt: true, + }, + }), + prisma.novel.count({ where }), + ]) + + // Attach latest chapter info + await connectToMongoDB() + const novelIds = novels.map((n) => n.id) + const latestChapters = await Chapter.aggregate([ + { $match: { novelId: { $in: novelIds } } }, + { $sort: { novelId: 1, number: -1 } }, + { + $group: { + _id: "$novelId", + latestChapterNumber: { $first: "$number" }, + latestChapterTitle: { $first: "$title" }, + latestChapterAt: { $first: "$createdAt" }, + }, + }, + ]) + const chapterMap = Object.fromEntries( + latestChapters.map((c) => [c._id, c]) + ) + + const items = novels.map((n) => ({ + ...n, + genres: n.genres.map((g) => g.genre), + latestChapter: chapterMap[n.id] + ? { + number: chapterMap[n.id].latestChapterNumber, + title: chapterMap[n.id].latestChapterTitle, + createdAt: chapterMap[n.id].latestChapterAt, + } + : null, + })) + + return NextResponse.json({ + items, + totalCount, + totalPages: Math.ceil(totalCount / limit), + currentPage: page, + }) + } catch (error) { + console.error("Browse novels error:", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/truyen/[id]/chapters/route.ts b/app/api/truyen/[id]/chapters/route.ts new file mode 100644 index 0000000..d7901f3 --- /dev/null +++ b/app/api/truyen/[id]/chapters/route.ts @@ -0,0 +1,52 @@ +import { NextResponse } from "next/server" +import connectToMongoDB from "@/lib/mongoose" +import { Chapter } from "@/lib/models/chapter" + +export async function GET( + req: Request, + { params }: { params: Promise<{ id: string }> } // `id` is the `novel.id` +) { + try { + const { id: novelId } = await params + + const { searchParams } = new URL(req.url) + const page = parseInt(searchParams.get("page") || "1", 10) + const limit = parseInt(searchParams.get("limit") || "100", 10) + + await connectToMongoDB() + + const skip = (page - 1) * limit + + const [chapters, totalChapters] = await Promise.all([ + Chapter.find({ novelId }) + .sort({ number: 1 }) + .skip(skip) + .limit(limit) + .select("number title createdAt volumeNumber volumeTitle volumeChapterNumber") // don't return content + .lean(), + Chapter.countDocuments({ novelId }) + ]) + + return NextResponse.json({ + chapters: chapters.map(c => ({ + id: c._id.toString(), + number: c.number, + title: c.title, + volumeNumber: (c as any).volumeNumber ?? null, + volumeTitle: (c as any).volumeTitle ?? null, + volumeChapterNumber: (c as any).volumeChapterNumber ?? null, + createdAt: (c.createdAt as Date).toISOString() + })), + totalChapters, + totalPages: Math.ceil(totalChapters / limit), + currentPage: page + }) + + } catch (error: any) { + console.error("Fetch novel chapters error:", error) + return NextResponse.json( + { error: "Không thể lấy danh sách chương" }, + { status: 500 } + ) + } +} diff --git a/app/api/truyen/[id]/comments/route.ts b/app/api/truyen/[id]/comments/route.ts new file mode 100644 index 0000000..d5ee09b --- /dev/null +++ b/app/api/truyen/[id]/comments/route.ts @@ -0,0 +1,95 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET(req: Request, { params }: { params: Promise<{ id: string }> }) { + try { + const { id: novelId } = await params + const { searchParams } = new URL(req.url) + const chapterId = searchParams.get("chapterId") || undefined + const page = Math.max(1, parseInt(searchParams.get("page") || "1", 10)) + const limit = Math.min(50, Math.max(1, parseInt(searchParams.get("limit") || "20", 10))) + const skip = (page - 1) * limit + + const where: Record = { novelId } + if (chapterId) { + where.chapterId = chapterId + } else { + where.chapterId = null + } + + const [comments, totalCount] = await Promise.all([ + prisma.comment.findMany({ + where, + orderBy: { createdAt: "desc" }, + skip, + take: limit, + include: { user: { select: { id: true, name: true, image: true } } }, + }), + prisma.comment.count({ where }), + ]) + + return NextResponse.json({ + comments: comments.map((c) => ({ + id: c.id, + userId: c.userId, + username: c.user.name || "User", + avatarUrl: c.user.image || null, + novelId: c.novelId, + chapterId: c.chapterId, + content: c.content, + createdAt: c.createdAt.toISOString(), + })), + totalCount, + totalPages: Math.ceil(totalCount / limit), + currentPage: page, + }) + } catch (error) { + console.error("GET Comments Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} + +export async function POST(req: Request, { params }: { params: Promise<{ id: string }> }) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const { id: novelId } = await params + const body = await req.json() + const { content, chapterId } = body + + if (!content || typeof content !== "string") { + return NextResponse.json({ error: "Content is required" }, { status: 400 }) + } + + const newComment = await prisma.comment.create({ + data: { + content: content.trim(), + userId: session.user.id, + novelId, + chapterId: chapterId || null + }, + include: { + user: true + } + }) + + return NextResponse.json({ + id: newComment.id, + userId: newComment.user.id, + username: newComment.user.name || "User", + avatarColor: newComment.user.image || "bg-primary", + novelId: newComment.novelId, + chapterId: newComment.chapterId, + content: newComment.content, + createdAt: newComment.createdAt.toISOString().split("T")[0] + }) + } catch (error) { + console.error("POST Comment Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/truyen/[id]/rate/route.ts b/app/api/truyen/[id]/rate/route.ts new file mode 100644 index 0000000..a06ece6 --- /dev/null +++ b/app/api/truyen/[id]/rate/route.ts @@ -0,0 +1,41 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" + +export async function POST(req: Request, { params }: { params: Promise<{ id: string }> }) { + try { + const { id } = await params + const body = await req.json() + const { score } = body + + if (typeof score !== 'number' || score < 1 || score > 5) { + return NextResponse.json({ error: "Invalid score" }, { status: 400 }) + } + + // Fetch current rating + const novel = await prisma.novel.findUnique({ + where: { id }, + select: { rating: true, ratingCount: true } + }) + + if (!novel) { + return NextResponse.json({ error: "Novel not found" }, { status: 404 }) + } + + // Atomic increment using raw SQL to avoid race conditions + const updatedNovel = await prisma.$queryRaw<{ rating: number; ratingCount: number }[]>` + UPDATE "Novel" + SET "ratingCount" = "ratingCount" + 1, + "rating" = (("rating" * "ratingCount") + ${score}) / ("ratingCount" + 1) + WHERE id = ${id} + RETURNING rating, "ratingCount" + `.then((rows) => rows[0]) + + return NextResponse.json({ + rating: updatedNovel.rating, + ratingCount: updatedNovel.ratingCount + }) + } catch (error) { + console.error("Rating Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/truyen/suggest/route.ts b/app/api/truyen/suggest/route.ts new file mode 100644 index 0000000..6dfbbfb --- /dev/null +++ b/app/api/truyen/suggest/route.ts @@ -0,0 +1,42 @@ +import { NextResponse } from "next/server" +import { prisma } from "@/lib/prisma" + +export async function GET(req: Request) { + try { + const url = new URL(req.url) + const q = url.searchParams.get("q")?.trim() || "" + + if (q.length < 2) { + return NextResponse.json([]) + } + + const novels = await prisma.novel.findMany({ + where: { + OR: [ + { title: { contains: q, mode: "insensitive" } }, + { authorName: { contains: q, mode: "insensitive" } }, + { series: { name: { contains: q, mode: "insensitive" } } }, + ], + }, + select: { + id: true, + title: true, + slug: true, + authorName: true, + coverUrl: true, + series: { + select: { + id: true, + name: true, + }, + }, + }, + orderBy: [{ views: "desc" }, { updatedAt: "desc" }], + take: 8, + }) + + return NextResponse.json(novels) + } catch { + return NextResponse.json({ error: "Failed to fetch suggestions" }, { status: 500 }) + } +} diff --git a/app/api/user/bookmarks/route.ts b/app/api/user/bookmarks/route.ts new file mode 100644 index 0000000..b809670 --- /dev/null +++ b/app/api/user/bookmarks/route.ts @@ -0,0 +1,181 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +function toUTCDateOnly(value: Date): Date { + return new Date(Date.UTC(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate())) +} + +async function upsertDailyNovelView(novelId: string, day: Date) { + const delegate = (prisma as any).novelViewDaily + if (!delegate || typeof delegate.upsert !== "function") return + + await delegate.upsert({ + where: { + novelId_day: { + novelId, + day, + }, + }, + update: { + views: { increment: 1 }, + }, + create: { + novelId, + day, + views: 1, + }, + }) +} + +// Lấy danh sách bookmark +export async function GET(req: Request) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const bookmarks = await prisma.bookmark.findMany({ + where: { userId: session.user.id }, + include: { novel: true }, + orderBy: { createdAt: "desc" } + }) + + return NextResponse.json(bookmarks) + } catch (error) { + console.error("GET Bookmarks Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} + +// Thêm, cập nhật hoặc xóa bookmark +export async function POST(req: Request) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const body = await req.json() + const { action, novelId, lastChapterId, lastChapterNumber } = body + + if (!novelId || !action) { + return NextResponse.json({ error: "Bad Request" }, { status: 400 }) + } + + if (action === "toggle") { + const existing = await prisma.bookmark.findUnique({ + where: { + userId_novelId: { + userId: session.user.id, + novelId, + } + } + }) + + if (existing) { + // Xoá + await prisma.$transaction([ + prisma.bookmark.delete({ where: { id: existing.id } }), + prisma.novel.update({ where: { id: novelId }, data: { bookmarkCount: { decrement: 1 } } }) + ]) + return NextResponse.json({ status: "removed" }) + } else { + // Thêm mới + const newBookmark = await prisma.$transaction(async (tx) => { + const b = await tx.bookmark.create({ + data: { + userId: session.user.id, + novelId, + lastChapterId, + lastChapterNumber + } + }) + await tx.novel.update({ where: { id: novelId }, data: { bookmarkCount: { increment: 1 } } }) + return b + }) + return NextResponse.json({ status: "added", bookmark: newBookmark }) + } + } else if (action === "updateProgress") { + // Cập nhật tiến độ lưu trang + if (!lastChapterId || !lastChapterNumber) { + return NextResponse.json({ error: "Missing chapter info" }, { status: 400 }) + } + + // Lấy bookmark cũ (nếu có) + const existingBookmark = await prisma.bookmark.findUnique({ + where: { + userId_novelId: { + userId: session.user.id, + novelId, + } + } + }) + + let newReadChapters: number[] = [] + let newHasCountedView = false + let shouldIncrementNovelView = false + + if (existingBookmark) { + newReadChapters = existingBookmark.readChapters || [] + newHasCountedView = existingBookmark.hasCountedView + + // Nếu chương này chưa đọc, thêm vào mảng + if (!newReadChapters.includes(lastChapterNumber)) { + newReadChapters.push(lastChapterNumber) + } + + // Nếu đọc đủ 5 chương và chưa từng đếm view + if (newReadChapters.length >= 5 && !newHasCountedView) { + newHasCountedView = true + shouldIncrementNovelView = true + } + } else { + newReadChapters = [lastChapterNumber] + // Chưa đủ 5 chương ngay từ lần đầu tạo + } + + const bookmark = await prisma.bookmark.upsert({ + where: { + userId_novelId: { + userId: session.user.id, + novelId, + } + }, + update: { + lastChapterId, + lastChapterNumber, + readChapters: newReadChapters, + hasCountedView: newHasCountedView + }, + create: { + userId: session.user.id, + novelId, + lastChapterId, + lastChapterNumber, + readChapters: newReadChapters, + hasCountedView: newHasCountedView + } + }) + + if (shouldIncrementNovelView) { + const day = toUTCDateOnly(new Date()) + await prisma.novel.update({ + where: { id: novelId }, + data: { views: { increment: 1 } } + }) + await upsertDailyNovelView(novelId, day) + } + + return NextResponse.json({ status: "updated", bookmark }) + } + + return NextResponse.json({ error: "Invalid action" }, { status: 400 }) + + } catch (error) { + console.error("POST Bookmarks Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/app/api/user/recommendations/route.ts b/app/api/user/recommendations/route.ts new file mode 100644 index 0000000..a02912a --- /dev/null +++ b/app/api/user/recommendations/route.ts @@ -0,0 +1,170 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" +import connectToMongoDB from "@/lib/mongoose" +import { UserRecommendation } from "@/lib/models/user-recommendation" + +function normalizeText(value: unknown): string { + return typeof value === "string" ? value.trim() : "" +} + +export async function GET() { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + await connectToMongoDB() + + const docs = (await UserRecommendation.find({ userId: session.user.id }) + .sort({ createdAt: -1 }) + .limit(1000) + .lean()) as Array<{ + _id: any + novelId: string + createdAt?: Date + }> + + const novelIds = Array.from(new Set(docs.map((doc) => doc.novelId).filter(Boolean))) + const novels = novelIds.length + ? await prisma.novel.findMany({ + where: { id: { in: novelIds } }, + select: { + id: true, + title: true, + slug: true, + authorName: true, + coverUrl: true, + status: true, + totalChapters: true, + }, + }) + : [] + + const novelMap = new Map(novels.map((novel) => [novel.id, novel])) + + const items = docs + .map((doc) => { + const novel = novelMap.get(doc.novelId) + if (!novel) return null + + return { + id: String(doc._id), + novelId: doc.novelId, + createdAt: doc.createdAt || null, + novel, + } + }) + .filter((item): item is NonNullable => Boolean(item)) + + return NextResponse.json(items) + } catch (error) { + console.error("Failed to fetch user recommendations", error) + return NextResponse.json({ error: "Failed to fetch recommendations" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const body = await req.json() + const novelId = normalizeText(body?.novelId) + + if (!novelId) { + return NextResponse.json({ error: "Thiếu ID truyện" }, { status: 400 }) + } + + const novel = await prisma.novel.findUnique({ where: { id: novelId }, select: { id: true } }) + if (!novel) { + return NextResponse.json({ error: "Truyện không tồn tại" }, { status: 404 }) + } + + await connectToMongoDB() + + try { + const existing = (await UserRecommendation.findOne({ + userId: session.user.id, + novelId, + }) + .select({ _id: 1 }) + .lean()) as { _id: any } | null + + if (existing) { + return NextResponse.json({ error: "Bạn đã đề cử truyện này rồi" }, { status: 409 }) + } + + const created = await UserRecommendation.create({ + userId: session.user.id, + novelId, + }) + + await prisma.novel.update({ + where: { id: novelId }, + data: { bookmarkCount: { increment: 1 } }, + }) + + return NextResponse.json( + { + id: String(created._id), + novelId, + }, + { status: 201 } + ) + } catch (error: any) { + if (error?.code === 11000) { + return NextResponse.json({ error: "Bạn đã đề cử truyện này rồi" }, { status: 409 }) + } + throw error + } + } catch (error) { + console.error("Failed to create user recommendation", error) + return NextResponse.json({ error: "Failed to create recommendation" }, { status: 500 }) + } +} + +export async function DELETE(req: Request) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const url = new URL(req.url) + const novelId = normalizeText(url.searchParams.get("novelId")) + + if (!novelId) { + return NextResponse.json({ error: "Thiếu ID truyện" }, { status: 400 }) + } + + await connectToMongoDB() + + const existing = (await UserRecommendation.findOne({ + userId: session.user.id, + novelId, + }) + .select({ _id: 1 }) + .lean()) as { _id: any } | null + + if (!existing) { + return NextResponse.json({ error: "Bạn chưa đề cử truyện này" }, { status: 404 }) + } + + await UserRecommendation.deleteOne({ _id: existing._id }) + + await prisma.novel.update({ + where: { id: novelId }, + data: { bookmarkCount: { decrement: 1 } }, + }) + + return NextResponse.json({ success: true }) + } catch (error) { + console.error("Failed to delete user recommendation", error) + return NextResponse.json({ error: "Failed to delete recommendation" }, { status: 500 }) + } +} diff --git a/app/api/user/settings/route.ts b/app/api/user/settings/route.ts new file mode 100644 index 0000000..2222b57 --- /dev/null +++ b/app/api/user/settings/route.ts @@ -0,0 +1,59 @@ +import { NextResponse } from "next/server" +import { getServerSession } from "next-auth/next" +import { authOptions } from "@/lib/auth" +import { prisma } from "@/lib/prisma" + +export async function GET() { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const settings = await prisma.userSetting.findUnique({ + where: { userId: session.user.id } + }) + + return NextResponse.json(settings || {}) + } catch (error) { + console.error("GET User Settings Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} + +export async function POST(req: Request) { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + try { + const body = await req.json() + const { fontSize, lineHeight, letterSpacing, fontFamily } = body + + const updateData: any = {} + if (fontSize !== undefined) updateData.fontSize = Number(fontSize) + if (lineHeight !== undefined) updateData.lineHeight = Number(lineHeight) + if (letterSpacing !== undefined) updateData.letterSpacing = Number(letterSpacing) + if (fontFamily !== undefined) updateData.fontFamily = String(fontFamily) + + const createData = { + userId: session.user.id, + fontSize: fontSize !== undefined ? Number(fontSize) : 18, + lineHeight: lineHeight !== undefined ? Number(lineHeight) : 1.8, + letterSpacing: letterSpacing !== undefined ? Number(letterSpacing) : 0, + fontFamily: fontFamily !== undefined ? String(fontFamily) : "font-serif", + } + + const settings = await prisma.userSetting.upsert({ + where: { userId: session.user.id }, + update: updateData, + create: createData + }) + + return NextResponse.json(settings) + } catch (error) { + console.error("POST User Settings Error", error) + return NextResponse.json({ error: "Internal Server Error" }, { status: 500 }) + } +} diff --git a/components.json b/components.json new file mode 100644 index 0000000..4ee62ee --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd6bf3e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +version: '3.8' + +services: + web: + image: fevirtus/reader:v0.0.1 + container_name: reader-web + ports: + - "3003:3000" + environment: + # KHÔNG SỬ DỤNG DẤU NGOẶC KÉP "" TRONG DOCKER COMPOSE + - DATABASE_URL=postgresql://reader:reader%40123@master-02:5432/reader?schema=public + - MONGODB_URI=mongodb://root:virtus%40123@master-02:27017/reader?authSource=admin + - NEXTAUTH_SECRET=your-super-secret-key + # Sửa thành domain name thực tế bạn đang truy cập + - NEXTAUTH_URL=http://master-02:3003 + - GOOGLE_CLIENT_ID=752734667309-khhufui27coorhmk8gh15epbpbeerg25.apps.googleusercontent.com + - GOOGLE_CLIENT_SECRET=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 + volumes: + - ./uploads:/app/public/uploads + restart: unless-stopped diff --git a/lib/auth-context.tsx b/lib/auth-context.tsx new file mode 100644 index 0000000..851ea39 --- /dev/null +++ b/lib/auth-context.tsx @@ -0,0 +1,38 @@ +"use client" + +import { SessionProvider, useSession, signIn, signOut } from "next-auth/react" +import { useMemo, type ReactNode } from "react" +import type { User } from "./types" + +export function AuthProvider({ children }: { children: ReactNode }) { + return {children} +} + +// Giữ nguyên custom hook `useAuth` để tương thích ngược với UI components hiện tại +export function useAuth() { + const { data: session, status } = useSession() + + const isLoading = status === "loading" + + // Chuyển đổi session user thành format User của project + const sessionUser = session?.user + + const user: User | null = useMemo(() => { + if (!sessionUser) return null + return { + id: (sessionUser as any).id || "", + username: (sessionUser as any).name || "Người dùng", + email: (sessionUser as any).email || "", + avatarUrl: (sessionUser as any).image || "", + avatarColor: "bg-blue-500", // Mặc định + role: (sessionUser as any).role || "USER", + createdAt: new Date().toISOString().split("T")[0], + } + }, [sessionUser]) + + const loginWithGoogle = () => signIn("google", { callbackUrl: "/" }) + const logout = () => signOut({ callbackUrl: "/" }) + + return { user, isLoading, loginWithGoogle, logout } +} + diff --git a/lib/auth.ts b/lib/auth.ts new file mode 100644 index 0000000..38c8c5b --- /dev/null +++ b/lib/auth.ts @@ -0,0 +1,35 @@ +import { NextAuthOptions } from "next-auth" +import GoogleProvider from "next-auth/providers/google" +import { PrismaAdapter } from "@auth/prisma-adapter" +import { prisma } from "./prisma" + +export const authOptions: NextAuthOptions = { + adapter: PrismaAdapter(prisma) as any, // ép kiểu vì type mismatch nhỏ + providers: [ + GoogleProvider({ + clientId: process.env.GOOGLE_CLIENT_ID || "demo-id", + clientSecret: process.env.GOOGLE_CLIENT_SECRET || "demo-secret", + }), + ], + session: { + // Để giữ NextAuth dùng JWT thay vì lưu phiên vào DB nếu thích, nhưng khi dùng PrismaAdapter, mặc định nó dùng DB strategy. + // strategy: "jwt", + }, + callbacks: { + async session({ session, user }) { + if (session.user) { + // Lấy role từ DB gán vào session + const dbUser = await prisma.user.findUnique({ + where: { email: session.user.email as string }, + select: { role: true, id: true }, + }) + + session.user.id = dbUser?.id || user.id + session.user.role = dbUser?.role || "USER" + } + return session + }, + }, + // Tuân thủ bảo mật NextAuth + secret: process.env.NEXTAUTH_SECRET, +} diff --git a/lib/bookmark-context.tsx b/lib/bookmark-context.tsx new file mode 100644 index 0000000..6c0920b --- /dev/null +++ b/lib/bookmark-context.tsx @@ -0,0 +1,121 @@ +"use client" + +import { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from "react" +import type { Bookmark } from "./types" +import { useAuth } from "./auth-context" + +interface BookmarkContextType { + bookmarks: Bookmark[] + isBookmarked: (novelId: string) => boolean + toggleBookmark: (novelId: string) => Promise + updateProgress: (novelId: string, chapterId: string, chapterNumber: number) => Promise + getProgress: (novelId: string) => Bookmark | undefined +} + +const BookmarkContext = createContext(undefined) + +export function BookmarkProvider({ children }: { children: ReactNode }) { + const { user } = useAuth() + const [bookmarks, setBookmarks] = useState([]) + + const fetchBookmarks = useCallback(async () => { + if (!user) { + setBookmarks([]) + return + } + + try { + const res = await fetch("/api/user/bookmarks") + if (!res.ok) return + + const data = await res.json() + setBookmarks(Array.isArray(data) ? data : []) + } catch (e) { + console.error("Failed to fetch bookmarks", e) + } + }, [user]) + + useEffect(() => { + fetchBookmarks() + }, [fetchBookmarks]) + + const toggleBookmark = useCallback(async (novelId: string) => { + if (!user) return + + // Optimistic update + setBookmarks((prev) => { + const exists = prev.find((b) => b.novelId === novelId) + if (exists) { + return prev.filter((b) => b.novelId !== novelId) + } + return [...prev, { novelId, addedAt: new Date().toISOString() } as any] + }) + + try { + const res = await fetch("/api/user/bookmarks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ action: "toggle", novelId }) + }) + + if (!res.ok) { + throw new Error("Không thể cập nhật đánh dấu") + } + + await fetchBookmarks() + } catch (e) { + console.error(e) + await fetchBookmarks() + } + }, [fetchBookmarks, user]) + + const updateProgress = useCallback(async (novelId: string, chapterId: string, chapterNumber: number) => { + if (!user) return + + // Optimistic update + setBookmarks((prev) => { + const exists = prev.find((b) => b.novelId === novelId) + if (exists) { + return prev.map(b => b.novelId === novelId ? { ...b, lastChapterId: chapterId, lastChapterNumber: chapterNumber } : b) + } + return [...prev, { novelId, lastChapterId: chapterId, lastChapterNumber: chapterNumber, addedAt: new Date().toISOString() } as any] + }) + + try { + const res = await fetch("/api/user/bookmarks", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ action: "updateProgress", novelId, lastChapterId: chapterId, lastChapterNumber: chapterNumber }) + }) + + if (!res.ok) { + throw new Error("Không thể cập nhật tiến độ") + } + + await fetchBookmarks() + } catch (e) { + console.error(e) + await fetchBookmarks() + } + }, [fetchBookmarks, user]) + + const getProgress = useCallback((novelId: string) => { + return bookmarks.find((b) => b.novelId === novelId) + }, [bookmarks]) + + const isBookmarked = useCallback((novelId: string) => { + return bookmarks.some((b) => b.novelId === novelId) + }, [bookmarks]) + + return ( + + {children} + + ) +} + +export function useBookmarks() { + const context = useContext(BookmarkContext) + if (!context) throw new Error("useBookmarks must be used within BookmarkProvider") + return context +} diff --git a/lib/mod-ai-tools.ts b/lib/mod-ai-tools.ts new file mode 100644 index 0000000..6a9d8b5 --- /dev/null +++ b/lib/mod-ai-tools.ts @@ -0,0 +1,25 @@ +export const MOD_AI_PREFILL_STORAGE_KEY = "mod:ai-tool:novel-prefill" +export const MOD_AI_MODEL_STORAGE_KEY = "mod:ai-tool:model" +export const MOD_AI_WEB_DEFAULT_MODEL = "gpt-4o-mini-search-preview" + +export const MOD_AI_WEB_MODEL_OPTIONS = [ + { + value: "gpt-4o-mini-search-preview", + label: "gpt-4o-mini-search-preview (nhanh)", + }, + { + value: "gpt-4o-search-preview", + label: "gpt-4o-search-preview (chat luong cao)", + }, +] as const + +export type AINovelPrefillPayload = { + title?: string + originalTitle?: string + authorName?: string + originalAuthorName?: string + description?: string + coverUrl?: string + status?: "Đang ra" | "Hoàn thành" | "Tạm ngưng" + genresSuggested?: string[] +} diff --git a/lib/models/chapter.ts b/lib/models/chapter.ts new file mode 100644 index 0000000..e35b112 --- /dev/null +++ b/lib/models/chapter.ts @@ -0,0 +1,30 @@ +import mongoose, { Schema, Document } from "mongoose" + +export interface IChapter extends Document { + novelId: string // Trỏ tới ID trong PostgreSQL + number: number + volumeNumber?: number + volumeTitle?: string + volumeChapterNumber?: number + title: string + content: string + views: number + createdAt: Date +} + +const ChapterSchema: Schema = new Schema({ + novelId: { type: String, required: true, index: true }, + number: { type: Number, required: true }, + volumeNumber: { type: Number, default: null }, + volumeTitle: { type: String, default: null }, + volumeChapterNumber: { type: Number, default: null }, + title: { type: String, required: true }, + content: { type: String, required: true }, + views: { type: Number, default: 0 }, + createdAt: { type: Date, default: Date.now }, +}) + +ChapterSchema.index({ novelId: 1, number: 1 }, { unique: true }) +ChapterSchema.index({ createdAt: -1, novelId: 1 }) + +export const Chapter = mongoose.models.Chapter || mongoose.model("Chapter", ChapterSchema) diff --git a/lib/models/editor-recommendation.ts b/lib/models/editor-recommendation.ts new file mode 100644 index 0000000..f2fe559 --- /dev/null +++ b/lib/models/editor-recommendation.ts @@ -0,0 +1,25 @@ +import mongoose, { Schema, Document } from "mongoose" + +export interface IEditorRecommendation extends Document { + novelId: string + editorId: string + createdAt: Date + updatedAt: Date +} + +const EditorRecommendationSchema: Schema = new Schema( + { + novelId: { type: String, required: true, index: true }, + editorId: { type: String, required: true, index: true }, + }, + { + timestamps: true, + } +) + +EditorRecommendationSchema.index({ novelId: 1, editorId: 1 }, { unique: true }) +EditorRecommendationSchema.index({ createdAt: -1 }) + +export const EditorRecommendation = + mongoose.models.EditorRecommendation || + mongoose.model("EditorRecommendation", EditorRecommendationSchema) diff --git a/lib/models/user-recommendation.ts b/lib/models/user-recommendation.ts new file mode 100644 index 0000000..9a64e1f --- /dev/null +++ b/lib/models/user-recommendation.ts @@ -0,0 +1,25 @@ +import mongoose, { Document, Schema } from "mongoose" + +export interface IUserRecommendation extends Document { + userId: string + novelId: string + createdAt: Date + updatedAt: Date +} + +const UserRecommendationSchema: Schema = new Schema( + { + userId: { type: String, required: true, index: true }, + novelId: { type: String, required: true, index: true }, + }, + { + timestamps: true, + } +) + +UserRecommendationSchema.index({ userId: 1, novelId: 1 }, { unique: true }) +UserRecommendationSchema.index({ createdAt: -1 }) + +export const UserRecommendation = + mongoose.models.UserRecommendation || + mongoose.model("UserRecommendation", UserRecommendationSchema) diff --git a/lib/mongoose.ts b/lib/mongoose.ts new file mode 100644 index 0000000..8f57e3d --- /dev/null +++ b/lib/mongoose.ts @@ -0,0 +1,39 @@ +import mongoose from "mongoose" + +let cached = (global as any).mongoose + +if (!cached) { + cached = (global as any).mongoose = { conn: null, promise: null } +} + +async function connectToMongoDB() { + const mongodbUri = process.env.MONGODB_URI + if (!mongodbUri) { + throw new Error("Please define the MONGODB_URI environment variable") + } + + if (cached.conn) { + return cached.conn + } + + if (!cached.promise) { + const opts = { + bufferCommands: false, + } + + cached.promise = mongoose.connect(mongodbUri, opts).then((mongoose) => { + return mongoose + }) + } + + try { + cached.conn = await cached.promise + } catch (e) { + cached.promise = null + throw e + } + + return cached.conn +} + +export default connectToMongoDB diff --git a/lib/novel-status.ts b/lib/novel-status.ts new file mode 100644 index 0000000..262c2a4 --- /dev/null +++ b/lib/novel-status.ts @@ -0,0 +1,17 @@ +export function getNovelStatusBadgeClass(status: string): string { + const normalized = status.trim().toLowerCase() + + if (normalized.includes("hoàn")) { + return "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300" + } + + if (normalized.includes("tạm")) { + return "bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-300" + } + + if (normalized.includes("drop") || normalized.includes("hủy") || normalized.includes("cancel")) { + return "bg-rose-100 text-rose-700 dark:bg-rose-900/30 dark:text-rose-300" + } + + return "bg-sky-100 text-sky-700 dark:bg-sky-900/30 dark:text-sky-300" +} diff --git a/lib/prisma.ts b/lib/prisma.ts new file mode 100644 index 0000000..66040cd --- /dev/null +++ b/lib/prisma.ts @@ -0,0 +1,11 @@ +import { PrismaClient } from "@prisma/client" + +const globalForPrisma = globalThis as unknown as { prisma: PrismaClient } + +export const prisma = + globalForPrisma.prisma || + new PrismaClient({ + // log: ["query"], // uncomment during debug + }) + +if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma diff --git a/lib/r2.ts b/lib/r2.ts new file mode 100644 index 0000000..0c2e69a --- /dev/null +++ b/lib/r2.ts @@ -0,0 +1,140 @@ +import { DeleteObjectCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3" +import path from "path" + +type UploadToR2Options = { + buffer: Buffer + contentType?: string | null + keyPrefix?: string + fileNameHint?: string +} + +let cachedClient: S3Client | null = null + +function requiredEnv(name: string): string { + const value = process.env[name] + if (!value) { + throw new Error(`Missing required environment variable: ${name}`) + } + return value +} + +function optionalEnv(name: string): string | null { + const value = process.env[name] + return value ? value : null +} + +function getR2Config() { + const accountId = requiredEnv("R2_ACCOUNT_ID") + const accessKeyId = requiredEnv("R2_ACCESS_KEY_ID") + const secretAccessKey = requiredEnv("R2_SECRET_ACCESS_KEY") + const bucket = requiredEnv("R2_BUCKET_NAME") + const publicBaseUrl = requiredEnv("R2_PUBLIC_BASE_URL") + + return { + accountId, + accessKeyId, + secretAccessKey, + bucket, + publicBaseUrl: publicBaseUrl.replace(/\/+$/, ""), + } +} + +function getR2Client(): S3Client { + if (cachedClient) return cachedClient + + const { accountId, accessKeyId, secretAccessKey } = getR2Config() + + cachedClient = new S3Client({ + region: "auto", + endpoint: `https://${accountId}.r2.cloudflarestorage.com`, + credentials: { + accessKeyId, + secretAccessKey, + }, + }) + + return cachedClient +} + +function extensionFromMimeType(mimeType: string | null | undefined): string { + if (!mimeType) return ".jpg" + const normalized = mimeType.toLowerCase() + if (normalized.includes("png")) return ".png" + if (normalized.includes("webp")) return ".webp" + if (normalized.includes("gif")) return ".gif" + if (normalized.includes("avif")) return ".avif" + if (normalized.includes("jpeg") || normalized.includes("jpg")) return ".jpg" + return ".jpg" +} + +function extensionFromHint(fileNameHint?: string): string { + if (!fileNameHint) return "" + const ext = path.extname(fileNameHint).toLowerCase() + if (!ext) return "" + if (!/^\.[a-z0-9]{1,8}$/.test(ext)) return "" + return ext +} + +export async function uploadBufferToR2(options: UploadToR2Options): Promise { + const client = getR2Client() + const { bucket, publicBaseUrl } = getR2Config() + + const keyPrefix = (options.keyPrefix || "covers").replace(/^\/+|\/+$/g, "") + const ext = extensionFromHint(options.fileNameHint) || extensionFromMimeType(options.contentType) + const key = `${keyPrefix}/${Date.now()}-${Math.round(Math.random() * 1e9)}${ext}` + + await client.send( + new PutObjectCommand({ + Bucket: bucket, + Key: key, + Body: options.buffer, + ContentType: options.contentType || "application/octet-stream", + }) + ) + + return `${publicBaseUrl}/${key}` +} + +export function getR2ObjectKeyFromUrl(url: string | null | undefined): string | null { + if (!url) return null + + const publicBaseUrl = optionalEnv("R2_PUBLIC_BASE_URL")?.replace(/\/+$/, "") + if (!publicBaseUrl) return null + + let baseUrl: URL + let fileUrl: URL + + try { + baseUrl = new URL(publicBaseUrl) + fileUrl = new URL(url) + } catch { + return null + } + + if (baseUrl.origin !== fileUrl.origin) return null + + const basePath = baseUrl.pathname.replace(/\/+$/, "") + if (!fileUrl.pathname.startsWith(basePath)) return null + + const relativePath = fileUrl.pathname.slice(basePath.length).replace(/^\/+/, "") + if (!relativePath) return null + + return decodeURIComponent(relativePath) +} + +export async function deleteR2ObjectByUrl(url: string | null | undefined): Promise { + const key = getR2ObjectKeyFromUrl(url) + if (!key) return false + + const client = getR2Client() + const { bucket } = getR2Config() + + await client.send( + new DeleteObjectCommand({ + Bucket: bucket, + Key: key, + }) + ) + + return true +} diff --git a/lib/recommendation-context.tsx b/lib/recommendation-context.tsx new file mode 100644 index 0000000..6630562 --- /dev/null +++ b/lib/recommendation-context.tsx @@ -0,0 +1,125 @@ +"use client" + +import { createContext, ReactNode, useCallback, useContext, useEffect, useState } from "react" +import { useAuth } from "@/lib/auth-context" + +type UserRecommendedNovel = { + id: string + title: string + slug: string + authorName: string + coverUrl: string | null + status: string + totalChapters: number +} + +type UserRecommendationItem = { + id: string + novelId: string + createdAt: string | null + novel: UserRecommendedNovel +} + +type RecommendationContextType = { + recommendations: UserRecommendationItem[] + isRecommended: (novelId: string) => boolean + toggleRecommendation: (novelId: string) => Promise<{ status: "added" | "removed" | "exists" }> +} + +const RecommendationContext = createContext(undefined) + +export function RecommendationProvider({ children }: { children: ReactNode }) { + const { user } = useAuth() + const [recommendations, setRecommendations] = useState([]) + + const fetchRecommendations = useCallback(async () => { + if (!user) { + setRecommendations([]) + return + } + + try { + const res = await fetch("/api/user/recommendations") + if (!res.ok) { + setRecommendations([]) + return + } + + const data = await res.json() + setRecommendations(Array.isArray(data) ? data : []) + } catch (error) { + console.error("Failed to fetch recommendations", error) + } + }, [user]) + + useEffect(() => { + fetchRecommendations() + }, [fetchRecommendations]) + + const isRecommended = useCallback( + (novelId: string) => recommendations.some((item) => item.novelId === novelId), + [recommendations] + ) + + const toggleRecommendation = useCallback( + async (novelId: string) => { + if (!user) throw new Error("Unauthorized") + if (!novelId) throw new Error("Missing novel id") + + const existed = recommendations.some((item) => item.novelId === novelId) + + if (existed) { + const res = await fetch(`/api/user/recommendations?novelId=${encodeURIComponent(novelId)}`, { + method: "DELETE", + }) + const data = (await res.json()) as { error?: string } + + if (!res.ok) { + throw new Error(data.error || "Không thể bỏ đề cử") + } + + await fetchRecommendations() + return { status: "removed" as const } + } + + const res = await fetch("/api/user/recommendations", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ novelId }), + }) + + const data = (await res.json()) as { error?: string } + + if (!res.ok) { + if (res.status === 409) { + await fetchRecommendations() + return { status: "exists" as const } + } + + throw new Error(data.error || "Không thể đề cử truyện") + } + + await fetchRecommendations() + return { status: "added" as const } + }, + [fetchRecommendations, recommendations, user] + ) + + return ( + + {children} + + ) +} + +export function useRecommendations() { + const context = useContext(RecommendationContext) + if (!context) throw new Error("useRecommendations must be used within RecommendationProvider") + return context +} diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 0000000..7f62f6c --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,72 @@ +export interface Genre { + id: string + name: string + slug: string + description: string + icon: string +} + +export interface Novel { + id: string + title: string + slug: string + authorName: string + series?: { + id: string + name: string + slug: string + } | null + coverColor: string + description: string + genres: string[] + status: "Đang ra" | "Hoàn thành" | "Tạm ngưng" + totalChapters: number + views: number + rating: number + ratingCount: number + bookmarkCount: number + lastUpdated: string + createdAt: string +} + +export interface Chapter { + id: string + novelId: string + number: number + volumeNumber?: number + volumeTitle?: string + volumeChapterNumber?: number + title: string + content: string + views: number + createdAt: string +} + +export interface User { + id: string + username: string + email: string + avatarColor: string + avatarUrl?: string + role?: "USER" | "MOD" | "ADMIN" + createdAt: string +} + +export interface Comment { + id: string + userId: string + username: string + avatarColor: string + novelId: string + chapterId?: string + content: string + createdAt: string +} + +export interface Bookmark { + novelId: string + lastChapterId?: string + lastChapterNumber?: number + addedAt: string + novel?: any +} diff --git a/lib/utils.ts b/lib/utils.ts new file mode 100644 index 0000000..50c0577 --- /dev/null +++ b/lib/utils.ts @@ -0,0 +1,27 @@ +import { clsx, type ClassValue } from 'clsx' +import { twMerge } from 'tailwind-merge' + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} + +export function slugify(str: string) { + if (!str) return "" + return str + .toLowerCase() + .replace(/a|á|à|ả|ã|ạ|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, 'a') + .replace(/e|é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, 'e') + .replace(/i|í|ì|ỉ|ĩ|ị/gi, 'i') + .replace(/o|ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, 'o') + .replace(/u|ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, 'u') + .replace(/y|ý|ỳ|ỷ|ỹ|ỵ/gi, 'y') + .replace(/đ/gi, 'd') + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-+|-+$/g, ''); +} + +export function formatViews(views: number): string { + if (views >= 1000000) return (views / 1000000).toFixed(1) + "M" + if (views >= 1000) return (views / 1000).toFixed(1) + "K" + return views.toString() +} diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..c4b7818 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +import "./.next/dev/types/routes.d.ts"; + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..0013134 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,12 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: "standalone", + typescript: { + ignoreBuildErrors: true, + }, + images: { + unoptimized: true, + }, +} + +export default nextConfig diff --git a/package.json b/package.json new file mode 100644 index 0000000..5926486 --- /dev/null +++ b/package.json @@ -0,0 +1,84 @@ +{ + "name": "reader-api", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev -p 3001", + "build": "next build", + "start": "next start -p 3001", + "lint": "eslint ." + }, + "dependencies": { + "@auth/prisma-adapter": "^2.11.1", + "@aws-sdk/client-s3": "^3.1006.0", + "@hookform/resolvers": "^3.9.1", + "@prisma/client": "^5.22.0", + "@radix-ui/react-accordion": "1.2.12", + "@radix-ui/react-alert-dialog": "1.1.15", + "@radix-ui/react-aspect-ratio": "1.1.8", + "@radix-ui/react-avatar": "1.1.11", + "@radix-ui/react-checkbox": "1.3.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-context-menu": "2.2.16", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-dropdown-menu": "2.1.16", + "@radix-ui/react-hover-card": "1.1.15", + "@radix-ui/react-label": "2.1.8", + "@radix-ui/react-menubar": "1.1.16", + "@radix-ui/react-navigation-menu": "1.2.14", + "@radix-ui/react-popover": "1.1.15", + "@radix-ui/react-progress": "1.1.8", + "@radix-ui/react-radio-group": "1.3.8", + "@radix-ui/react-scroll-area": "1.2.10", + "@radix-ui/react-select": "2.2.6", + "@radix-ui/react-separator": "1.1.8", + "@radix-ui/react-slider": "1.3.6", + "@radix-ui/react-slot": "1.2.4", + "@radix-ui/react-switch": "1.2.6", + "@radix-ui/react-tabs": "1.1.13", + "@radix-ui/react-toast": "1.2.15", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-toggle-group": "1.1.11", + "@radix-ui/react-tooltip": "1.2.8", + "@vercel/analytics": "1.6.1", + "autoprefixer": "^10.4.20", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "1.1.1", + "date-fns": "4.1.0", + "embla-carousel-react": "8.6.0", + "epub2": "^3.0.2", + "html-to-text": "^9.0.5", + "input-otp": "1.4.2", + "lucide-react": "^0.564.0", + "mammoth": "^1.11.0", + "mongoose": "^9.2.4", + "next": "16.1.6", + "next-auth": "^4.24.13", + "next-themes": "^0.4.6", + "prisma": "^5.22.0", + "react": "19.2.4", + "react-day-picker": "9.13.2", + "react-dom": "19.2.4", + "react-hook-form": "^7.54.1", + "react-resizable-panels": "^2.1.7", + "recharts": "2.15.0", + "sonner": "^1.7.1", + "tailwind-merge": "^3.3.1", + "vaul": "^1.1.2", + "zod": "^3.24.1" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4.2.0", + "@types/html-to-text": "^9.0.4", + "@types/node": "^22", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", + "dotenv": "^17.3.1", + "pg": "^8.20.0", + "postcss": "^8.5", + "tailwindcss": "^4.2.0", + "tw-animate-css": "1.3.3", + "typescript": "5.7.3" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..591570a --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,5314 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@auth/prisma-adapter': + specifier: ^2.11.1 + version: 2.11.1(@prisma/client@5.22.0(prisma@5.22.0)) + '@aws-sdk/client-s3': + specifier: ^3.1006.0 + version: 3.1006.0 + '@hookform/resolvers': + specifier: ^3.9.1 + version: 3.10.0(react-hook-form@7.71.1(react@19.2.4)) + '@prisma/client': + specifier: ^5.22.0 + version: 5.22.0(prisma@5.22.0) + '@radix-ui/react-accordion': + specifier: 1.2.12 + version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-alert-dialog': + specifier: 1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-aspect-ratio': + specifier: 1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-avatar': + specifier: 1.1.11 + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-checkbox': + specifier: 1.3.3 + version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collapsible': + specifier: 1.1.12 + version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-context-menu': + specifier: 2.2.16 + version: 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dialog': + specifier: 1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dropdown-menu': + specifier: 2.1.16 + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-hover-card': + specifier: 1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-label': + specifier: 2.1.8 + version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-menubar': + specifier: 1.1.16 + version: 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-navigation-menu': + specifier: 1.2.14 + version: 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popover': + specifier: 1.1.15 + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-progress': + specifier: 1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-radio-group': + specifier: 1.3.8 + version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-scroll-area': + specifier: 1.2.10 + version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-select': + specifier: 2.2.6 + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-separator': + specifier: 1.1.8 + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slider': + specifier: 1.3.6 + version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': + specifier: 1.2.4 + version: 1.2.4(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-switch': + specifier: 1.2.6 + version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-tabs': + specifier: 1.1.13 + version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toast': + specifier: 1.2.15 + version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle': + specifier: 1.1.10 + version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle-group': + specifier: 1.1.11 + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-tooltip': + specifier: 1.2.8 + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@vercel/analytics': + specifier: 1.6.1 + version: 1.6.1(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.24(postcss@8.5.6) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + cmdk: + specifier: 1.1.1 + version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + date-fns: + specifier: 4.1.0 + version: 4.1.0 + embla-carousel-react: + specifier: 8.6.0 + version: 8.6.0(react@19.2.4) + epub2: + specifier: ^3.0.2 + version: 3.0.2(ts-toolbelt@9.6.0) + html-to-text: + specifier: ^9.0.5 + version: 9.0.5 + input-otp: + specifier: 1.4.2 + version: 1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + lucide-react: + specifier: ^0.564.0 + version: 0.564.0(react@19.2.4) + mammoth: + specifier: ^1.11.0 + version: 1.11.0 + mongoose: + specifier: ^9.2.4 + version: 9.2.4 + next: + specifier: 16.1.6 + version: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next-auth: + specifier: ^4.24.13 + version: 4.24.13(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + prisma: + specifier: ^5.22.0 + version: 5.22.0 + react: + specifier: 19.2.4 + version: 19.2.4 + react-day-picker: + specifier: 9.13.2 + version: 9.13.2(react@19.2.4) + react-dom: + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) + react-hook-form: + specifier: ^7.54.1 + version: 7.71.1(react@19.2.4) + react-resizable-panels: + specifier: ^2.1.7 + version: 2.1.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + recharts: + specifier: 2.15.0 + version: 2.15.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + sonner: + specifier: ^1.7.1 + version: 1.7.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + tailwind-merge: + specifier: ^3.3.1 + version: 3.4.0 + vaul: + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + zod: + specifier: ^3.24.1 + version: 3.25.76 + devDependencies: + '@tailwindcss/postcss': + specifier: ^4.2.0 + version: 4.2.0 + '@types/html-to-text': + specifier: ^9.0.4 + version: 9.0.4 + '@types/node': + specifier: ^22 + version: 22.19.11 + '@types/react': + specifier: 19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.14) + dotenv: + specifier: ^17.3.1 + version: 17.3.1 + pg: + specifier: ^8.20.0 + version: 8.20.0 + postcss: + specifier: ^8.5 + version: 8.5.6 + tailwindcss: + specifier: ^4.2.0 + version: 4.2.0 + tw-animate-css: + specifier: 1.3.3 + version: 1.3.3 + typescript: + specifier: 5.7.3 + version: 5.7.3 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@auth/core@0.41.1': + resolution: {integrity: sha512-t9cJ2zNYAdWMacGRMT6+r4xr1uybIdmYa49calBPeTqwgAFPV/88ac9TEvCR85pvATiSPt8VaNf+Gt24JIT/uw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^7.0.7 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + + '@auth/prisma-adapter@2.11.1': + resolution: {integrity: sha512-Ke7DXP0Fy0Mlmjz/ZJLXwQash2UkA4621xCM0rMtEczr1kppLc/njCbUkHkIQ/PnmILjqSPEKeTjDPsYruvkug==} + peerDependencies: + '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5 || >=6' + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-s3@3.1006.0': + resolution: {integrity: sha512-tm8R/LgWDC3zWPMCdD990owvBrmuIM2A39+OWKW/HyAomWi6ancPz/H1K/hmxf0bqdXAaRUHBQMAmzwb1aR33Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.973.19': + resolution: {integrity: sha512-56KePyOcZnKTWCd89oJS1G6j3HZ9Kc+bh/8+EbvtaCCXdP6T7O7NzCiPuHRhFLWnzXIaXX3CxAz0nI5My9spHQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/crc64-nvme@3.972.4': + resolution: {integrity: sha512-HKZIZLbRyvzo/bXZU7Zmk6XqU+1C9DjI56xd02vwuDIxedxBEqP17t9ExhbP9QFeNq/a3l9GOcyirFXxmbDhmw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.17': + resolution: {integrity: sha512-MBAMW6YELzE1SdkOniqr51mrjapQUv8JXSGxtwRjQV0mwVDutVsn22OPAUt4RcLRvdiHQmNBDEFP9iTeSVCOlA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.19': + resolution: {integrity: sha512-9EJROO8LXll5a7eUFqu48k6BChrtokbmgeMWmsH7lBb6lVbtjslUYz/ShLi+SHkYzTomiGBhmzTW7y+H4BxsnA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.972.18': + resolution: {integrity: sha512-vthIAXJISZnj2576HeyLBj4WTeX+I7PwWeRkbOa0mVX39K13SCGxCgOFuKj2ytm9qTlLOmXe4cdEnroteFtJfw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.18': + resolution: {integrity: sha512-kINzc5BBxdYBkPZ0/i1AMPMOk5b5QaFNbYMElVw5QTX13AKj6jcxnv/YNl9oW9mg+Y08ti19hh01HhyEAxsSJQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.19': + resolution: {integrity: sha512-yDWQ9dFTr+IMxwanFe7+tbN5++q8psZBjlUwOiCXn1EzANoBgtqBwcpYcHaMGtn0Wlfj4NuXdf2JaEx1lz5RaQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.17': + resolution: {integrity: sha512-c8G8wT1axpJDgaP3xzcy+q8Y1fTi9A2eIQJvyhQ9xuXrUZhlCfXbC0vM9bM1CUXiZppFQ1p7g0tuUMvil/gCPg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.972.18': + resolution: {integrity: sha512-YHYEfj5S2aqInRt5ub8nDOX8vAxgMvd84wm2Y3WVNfFa/53vOv9T7WOAqXI25qjj3uEcV46xxfqdDQk04h5XQA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.18': + resolution: {integrity: sha512-OqlEQpJ+J3T5B96qtC1zLLwkBloechP+fezKbCH0sbd2cCc0Ra55XpxWpk/hRj69xAOYtHvoC4orx6eTa4zU7g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-bucket-endpoint@3.972.7': + resolution: {integrity: sha512-goX+axlJ6PQlRnzE2bQisZ8wVrlm6dXJfBzMJhd8LhAIBan/w1Kl73fJnalM/S+18VnpzIHumyV6DtgmvqG5IA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-expect-continue@3.972.7': + resolution: {integrity: sha512-mvWqvm61bmZUKmmrtl2uWbokqpenY3Mc3Jf4nXB/Hse6gWxLPaCQThmhPBDzsPSV8/Odn8V6ovWt3pZ7vy4BFQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.973.5': + resolution: {integrity: sha512-Dp3hqE5W6hG8HQ3Uh+AINx9wjjqYmFHbxede54sGj3akx/haIQrkp85lNdTdC+ouNUcSYNiuGkzmyDREfHX1Gg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-host-header@3.972.7': + resolution: {integrity: sha512-aHQZgztBFEpDU1BB00VWCIIm85JjGjQW1OG9+98BdmaOpguJvzmXBGbnAiYcciCd+IS4e9BEq664lhzGnWJHgQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-location-constraint@3.972.7': + resolution: {integrity: sha512-vdK1LJfffBp87Lj0Bw3WdK1rJk9OLDYdQpqoKgmpIZPe+4+HawZ6THTbvjhJt4C4MNnRrHTKHQjkwBiIpDBoig==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-logger@3.972.7': + resolution: {integrity: sha512-LXhiWlWb26txCU1vcI9PneESSeRp/RYY/McuM4SpdrimQR5NgwaPb4VJCadVeuGWgh6QmqZ6rAKSoL1ob16W6w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.972.7': + resolution: {integrity: sha512-l2VQdcBcYLzIzykCHtXlbpiVCZ94/xniLIkAj0jpnpjY4xlgZx7f56Ypn+uV1y3gG0tNVytJqo3K9bfMFee7SQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.19': + resolution: {integrity: sha512-/CtOHHVFg4ZuN6CnLnYkrqWgVEnbOBC4kNiKa+4fldJ9cioDt3dD/f5vpq0cWLOXwmGL2zgVrVxNhjxWpxNMkg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-ssec@3.972.7': + resolution: {integrity: sha512-G9clGVuAml7d8DYzY6DnRi7TIIDRvZ3YpqJPz/8wnWS5fYx/FNWNmkO6iJVlVkQg9BfeMzd+bVPtPJOvC4B+nQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-user-agent@3.972.20': + resolution: {integrity: sha512-3kNTLtpUdeahxtnJRnj/oIdLAUdzTfr9N40KtxNhtdrq+Q1RPMdCJINRXq37m4t5+r3H70wgC3opW46OzFcZYA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.996.8': + resolution: {integrity: sha512-6HlLm8ciMW8VzfB80kfIx16PBA9lOa9Dl+dmCBi78JDhvGlx3I7Rorwi5PpVRkL31RprXnYna3yBf6UKkD/PqA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/region-config-resolver@3.972.7': + resolution: {integrity: sha512-/Ev/6AI8bvt4HAAptzSjThGUMjcWaX3GX8oERkB0F0F9x2dLSBdgFDiyrRz3i0u0ZFZFQ1b28is4QhyqXTUsVA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.7': + resolution: {integrity: sha512-mYhh7FY+7OOqjkYkd6+6GgJOsXK1xBWmuR+c5mxJPj2kr5TBNeZq+nUvE9kANWAux5UxDVrNOSiEM/wlHzC3Lg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1005.0': + resolution: {integrity: sha512-vMxd+ivKqSxU9bHx5vmAlFKDAkjGotFU56IOkDa5DaTu1WWwbcse0yFHEm9I537oVvodaiwMl3VBwgHfzQ2rvw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.5': + resolution: {integrity: sha512-hl7BGwDCWsjH8NkZfx+HgS7H2LyM2lTMAI7ba9c8O0KqdBLTdNJivsHpqjg9rNlAlPyREb6DeDRXUl0s8uFdmQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-arn-parser@3.972.3': + resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-endpoints@3.996.4': + resolution: {integrity: sha512-Hek90FBmd4joCFj+Vc98KLJh73Zqj3s2W56gjAcTkrNLMDI5nIFkG9YpfcJiVI1YlE2Ne1uOQNe+IgQ/Vz2XRA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-locate-window@3.965.5': + resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-user-agent-browser@3.972.7': + resolution: {integrity: sha512-7SJVuvhKhMF/BkNS1n0QAJYgvEwYbK2QLKBrzDiwQGiTRU6Yf1f3nehTzm/l21xdAOtWSfp2uWSddPnP2ZtsVw==} + + '@aws-sdk/util-user-agent-node@3.973.5': + resolution: {integrity: sha512-Dyy38O4GeMk7UQ48RupfHif//gqnOPbq/zlvRssc11E2mClT+aUfc3VS2yD8oLtzqO3RsqQ9I3gOBB4/+HjPOw==} + engines: {node: '>=20.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.972.10': + resolution: {integrity: sha512-OnejAIVD+CxzyAUrVic7lG+3QRltyja9LoNqCE/1YVs8ichoTbJlVSaZ9iSMcnHLyzrSNtvaOGjSDRP+d/ouFA==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.2.3': + resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + engines: {node: '>=18.0.0'} + + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + + '@date-fns/tz@1.4.1': + resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} + + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} + + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} + + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@hookform/resolvers@3.10.0': + resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==} + peerDependencies: + react-hook-form: ^7.0.0 + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mongodb-js/saslprep@1.4.6': + resolution: {integrity: sha512-y+x3H1xBZd38n10NZF/rEBlvDOOMQ6LKUTHqr8R9VkJ+mmQOYtJFxIlkkK8fZrtOiL6VixbOBWMbZGBdal3Z1g==} + + '@next/env@16.1.6': + resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} + + '@next/swc-darwin-arm64@16.1.6': + resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.1.6': + resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.1.6': + resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.1.6': + resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.1.6': + resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.1.6': + resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.1.6': + resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.1.6': + resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@panva/hkdf@1.2.1': + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + + '@prisma/client@5.22.0': + resolution: {integrity: sha512-M0SVXfyHnQREBKxCgyo7sffrKttwE6R8PMq330MIUF0pTwjUhLbW84pFDlf06B27XyCR++VtjugEnIHdr07SVA==} + engines: {node: '>=16.13'} + peerDependencies: + prisma: '*' + peerDependenciesMeta: + prisma: + optional: true + + '@prisma/debug@5.22.0': + resolution: {integrity: sha512-AUt44v3YJeggO2ZU5BkXI7M4hu9BF2zzH2iF2V5pyXT/lRTyWiElZ7It+bRH1EshoMRxHgpYg4VB6rCM+mG5jQ==} + + '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': + resolution: {integrity: sha512-2PTmxFR2yHW/eB3uqWtcgRcgAbG1rwG9ZriSvQw+nnb7c4uCr3RAcGMb6/zfE88SKlC1Nj2ziUvc96Z379mHgQ==} + + '@prisma/engines@5.22.0': + resolution: {integrity: sha512-UNjfslWhAt06kVL3CjkuYpHAWSO6L4kDCVPegV6itt7nD1kSJavd3vhgAEhjglLJJKEdJ7oIqDJ+yHk6qO8gPA==} + + '@prisma/fetch-engine@5.22.0': + resolution: {integrity: sha512-bkrD/Mc2fSvkQBV5EpoFcZ87AvOgDxbG99488a5cexp5Ccny+UM6MAe/UFkUC0wLYD9+9befNOqGiIJhhq+HbA==} + + '@prisma/get-platform@5.22.0': + resolution: {integrity: sha512-pHhpQdr1UPFpt+zFfnPazhulaZYCUqeIcPpJViYoq9R+D/yw4fjE+CtnsnKzPYm0ddUbeXUzjGVGIRVgPDCk4Q==} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-alert-dialog@1.1.15': + resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-aspect-ratio@1.1.8': + resolution: {integrity: sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-avatar@1.1.11': + resolution: {integrity: sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-checkbox@1.3.3': + resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context-menu@2.2.16': + resolution: {integrity: sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.3': + resolution: {integrity: sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-hover-card@1.1.15': + resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.8': + resolution: {integrity: sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menubar@1.1.16': + resolution: {integrity: sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-navigation-menu@1.2.14': + resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.4': + resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.8': + resolution: {integrity: sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-radio-group@1.3.8': + resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.8': + resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slider@1.3.6': + resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.2.6': + resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toast@1.2.15': + resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle-group@1.1.11': + resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-toggle@1.1.10': + resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-is-hydrated@0.1.0': + resolution: {integrity: sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@selderee/plugin-htmlparser2@0.11.0': + resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} + + '@smithy/abort-controller@4.2.11': + resolution: {integrity: sha512-Hj4WoYWMJnSpM6/kchsm4bUNTL9XiSyhvoMb2KIq4VJzyDt7JpGHUZHkVNPZVC7YE1tf8tPeVauxpFBKGW4/KQ==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader-native@4.2.3': + resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==} + engines: {node: '>=18.0.0'} + + '@smithy/chunked-blob-reader@5.2.2': + resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.4.10': + resolution: {integrity: sha512-IRTkd6ps0ru+lTWnfnsbXzW80A8Od8p3pYiZnW98K2Hb20rqfsX7VTlfUwhrcOeSSy68Gn9WBofwPuw3e5CCsg==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.23.9': + resolution: {integrity: sha512-1Vcut4LEL9HZsdpI0vFiRYIsaoPwZLjAxnVQDUMQK8beMS+EYPLDQCXtbzfxmM5GzSgjfe2Q9M7WaXwIMQllyQ==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.2.11': + resolution: {integrity: sha512-lBXrS6ku0kTj3xLmsJW0WwqWbGQ6ueooYyp/1L9lkyT0M02C+DWwYwc5aTyXFbRaK38ojALxNixg+LxKSHZc0g==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.2.11': + resolution: {integrity: sha512-Sf39Ml0iVX+ba/bgMPxaXWAAFmHqYLTmbjAPfLPLY8CrYkRDEqZdUsKC1OwVMCdJXfAt0v4j49GIJ8DoSYAe6w==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.2.11': + resolution: {integrity: sha512-3rEpo3G6f/nRS7fQDsZmxw/ius6rnlIpz4UX6FlALEzz8JoSxFmdBt0SZnthis+km7sQo6q5/3e+UJcuQivoXA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.3.11': + resolution: {integrity: sha512-XeNIA8tcP/GDWnnKkO7qEm/bg0B/bP9lvIXZBXcGZwZ+VYM8h8k9wuDvUODtdQ2Wcp2RcBkPTCSMmaniVHrMlA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.2.11': + resolution: {integrity: sha512-fzbCh18rscBDTQSCrsp1fGcclLNF//nJyhjldsEl/5wCYmgpHblv5JSppQAyQI24lClsFT0wV06N1Porn0IsEw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.2.11': + resolution: {integrity: sha512-MJ7HcI+jEkqoWT5vp+uoVaAjBrmxBtKhZTeynDRG/seEjJfqyg3SiqMMqyPnAMzmIfLaeJ/uiuSDP/l9AnMy/Q==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.3.13': + resolution: {integrity: sha512-U2Hcfl2s3XaYjikN9cT4mPu8ybDbImV3baXR0PkVlC0TTx808bRP3FaPGAzPtB8OByI+JqJ1kyS+7GEgae7+qQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.2.12': + resolution: {integrity: sha512-1wQE33DsxkM/waftAhCH9VtJbUGyt1PJ9YRDpOu+q9FUi73LLFUZ2fD8A61g2mT1UY9k7b99+V1xZ41Rz4SHRQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.2.11': + resolution: {integrity: sha512-T+p1pNynRkydpdL015ruIoyPSRw9e/SQOWmSAMmmprfswMrd5Ow5igOWNVlvyVFZlxXqGmyH3NQwfwy8r5Jx0A==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.2.11': + resolution: {integrity: sha512-hQsTjwPCRY8w9GK07w1RqJi3e+myh0UaOWBBhZ1UMSDgofH/Q1fEYzU1teaX6HkpX/eWDdm7tAGR0jBPlz9QEQ==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.2.11': + resolution: {integrity: sha512-cGNMrgykRmddrNhYy1yBdrp5GwIgEkniS7k9O1VLB38yxQtlvrxpZtUVvo6T4cKpeZsriukBuuxfJcdZQc/f/g==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.2.2': + resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.2.11': + resolution: {integrity: sha512-350X4kGIrty0Snx2OWv7rPM6p6vM7RzryvFs6B/56Cux3w3sChOb3bymo5oidXJlPcP9fIRxGUCk7GqpiSOtng==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.2.11': + resolution: {integrity: sha512-UvIfKYAKhCzr4p6jFevPlKhQwyQwlJ6IeKLDhmV1PlYfcW3RL4ROjNEDtSik4NYMi9kDkH7eSwyTP3vNJ/u/Dw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.4.23': + resolution: {integrity: sha512-UEFIejZy54T1EJn2aWJ45voB7RP2T+IRzUqocIdM6GFFa5ClZncakYJfcYnoXt3UsQrZZ9ZRauGm77l9UCbBLw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.40': + resolution: {integrity: sha512-YhEMakG1Ae57FajERdHNZ4ShOPIY7DsgV+ZoAxo/5BT0KIe+f6DDU2rtIymNNFIj22NJfeeI6LWIifrwM0f+rA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.2.12': + resolution: {integrity: sha512-W9g1bOLui7Xn5FABRVS0o3rXL0gfN37d/8I/W7i0N7oxjx9QecUmXEMSUMADTODwdtka9cN43t5BI2CodLJpng==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.2.11': + resolution: {integrity: sha512-s+eenEPW6RgliDk2IhjD2hWOxIx1NKrOHxEwNUaUXxYBxIyCcDfNULZ2Mu15E3kwcJWBedTET/kEASPV1A1Akg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.3.11': + resolution: {integrity: sha512-xD17eE7kaLgBBGf5CZQ58hh2YmwK1Z0O8YhffwB/De2jsL0U3JklmhVYJ9Uf37OtUDLF2gsW40Xwwag9U869Gg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.4.14': + resolution: {integrity: sha512-DamSqaU8nuk0xTJDrYnRzZndHwwRnyj/n/+RqGGCcBKB4qrQem0mSDiWdupaNWdwxzyMU91qxDmHOCazfhtO3A==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.2.11': + resolution: {integrity: sha512-14T1V64o6/ndyrnl1ze1ZhyLzIeYNN47oF/QU6P5m82AEtyOkMJTb0gO1dPubYjyyKuPD6OSVMPDKe+zioOnCg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.3.11': + resolution: {integrity: sha512-hI+barOVDJBkNt4y0L2mu3Ugc0w7+BpJ2CZuLwXtSltGAAwCb3IvnalGlbDV/UCS6a9ZuT3+exd1WxNdLb5IlQ==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.2.11': + resolution: {integrity: sha512-7spdikrYiljpket6u0up2Ck2mxhy7dZ0+TDd+S53Dg2DHd6wg+YNJrTCHiLdgZmEXZKI7LJZcwL3721ZRDFiqA==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.2.11': + resolution: {integrity: sha512-nE3IRNjDltvGcoThD2abTozI1dkSy8aX+a2N1Rs55en5UsdyyIXgGEmevUL3okZFoJC77JgRGe99xYohhsjivQ==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.2.11': + resolution: {integrity: sha512-HkMFJZJUhzU3HvND1+Yw/kYWXp4RPDLBWLcK1n+Vqw8xn4y2YiBhdww8IxhkQjP/QlZun5bwm3vcHc8AqIU3zw==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.4.6': + resolution: {integrity: sha512-IB/M5I8G0EeXZTHsAxpx51tMQ5R719F3aq+fjEB6VtNcCHDc0ajFDIGDZw+FW9GxtEkgTduiPpjveJdA/CX7sw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.3.11': + resolution: {integrity: sha512-V1L6N9aKOBAN4wEHLyqjLBnAz13mtILU0SeDrjOaIZEeN6IFa6DxwRt1NNpOdmSpQUfkBj0qeD3m6P77uzMhgQ==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.12.3': + resolution: {integrity: sha512-7k4UxjSpHmPN2AxVhvIazRSzFQjWnud3sOsXcFStzagww17j1cFQYqTSiQ8xuYK3vKLR1Ni8FzuT3VlKr3xCNw==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.13.0': + resolution: {integrity: sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.2.11': + resolution: {integrity: sha512-oTAGGHo8ZYc5VZsBREzuf5lf2pAurJQsccMusVZ85wDkX66ojEc/XauiGjzCj50A61ObFTPe6d7Pyt6UBYaing==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.3.2': + resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.2.2': + resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.2.3': + resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.2.2': + resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.2.2': + resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.3.39': + resolution: {integrity: sha512-ui7/Ho/+VHqS7Km2wBw4/Ab4RktoiSshgcgpJzC4keFPs6tLJS4IQwbeahxQS3E/w98uq6E1mirCH/id9xIXeQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.2.42': + resolution: {integrity: sha512-QDA84CWNe8Akpj15ofLO+1N3Rfg8qa2K5uX0y6HnOp4AnRYRgWrKx/xzbYNbVF9ZsyJUYOfcoaN3y93wA/QJ2A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.3.2': + resolution: {integrity: sha512-+4HFLpE5u29AbFlTdlKIT7jfOzZ8PDYZKTb3e+AgLz986OYwqTourQ5H+jg79/66DB69Un1+qKecLnkZdAsYcA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.2.2': + resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.2.11': + resolution: {integrity: sha512-r3dtF9F+TpSZUxpOVVtPfk09Rlo4lT6ORBqEvX3IBT6SkQAdDSVKR5GcfmZbtl7WKhKnmb3wbDTQ6ibR2XHClw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.2.11': + resolution: {integrity: sha512-XSZULmL5x6aCTTii59wJqKsY1l3eMIAomRAccW7Tzh9r8s7T/7rdo03oektuH5jeYRlJMPcNP92EuRDvk9aXbw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.17': + resolution: {integrity: sha512-793BYZ4h2JAQkNHcEnyFxDTcZbm9bVybD0UV/LEWmZ5bkTms7JqjfrLMi2Qy0E5WFcCzLwCAPgcvcvxoeALbAQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.2.2': + resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.2.2': + resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.2.12': + resolution: {integrity: sha512-ek5hyDrzS6mBFsNCEX8LpM+EWSLq6b9FdmPRlkpXXhiJE6aIZehKT9clC6+nFpZAA+i/Yg0xlaPeWGNbf5rzQA==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.1.2': + resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} + engines: {node: '>=18.0.0'} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.2.0': + resolution: {integrity: sha512-Yv+fn/o2OmL5fh/Ir62VXItdShnUxfpkMA4Y7jdeC8O81WPB8Kf6TT6GSHvnqgSwDzlB5iT7kDpeXxLsUS0T6Q==} + + '@tailwindcss/oxide-android-arm64@4.2.0': + resolution: {integrity: sha512-F0QkHAVaW/JNBWl4CEKWdZ9PMb0khw5DCELAOnu+RtjAfx5Zgw+gqCHFvqg3AirU1IAd181fwOtJQ5I8Yx5wtw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.2.0': + resolution: {integrity: sha512-I0QylkXsBsJMZ4nkUNSR04p6+UptjcwhcVo3Zu828ikiEqHjVmQL9RuQ6uT/cVIiKpvtVA25msu/eRV97JeNSA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.2.0': + resolution: {integrity: sha512-6TmQIn4p09PBrmnkvbYQ0wbZhLtbaksCDx7Y7R3FYYx0yxNA7xg5KP7dowmQ3d2JVdabIHvs3Hx4K3d5uCf8xg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.2.0': + resolution: {integrity: sha512-qBudxDvAa2QwGlq9y7VIzhTvp2mLJ6nD/G8/tI70DCDoneaUeLWBJaPcbfzqRIWraj+o969aDQKvKW9dvkUizw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': + resolution: {integrity: sha512-7XKkitpy5NIjFZNUQPeUyNJNJn1CJeV7rmMR+exHfTuOsg8rxIO9eNV5TSEnqRcaOK77zQpsyUkBWmPy8FgdSg==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': + resolution: {integrity: sha512-Mff5a5Q3WoQR01pGU1gr29hHM1N93xYrKkGXfPw/aRtK4bOc331Ho4Tgfsm5WDGvpevqMpdlkCojT3qlCQbCpA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': + resolution: {integrity: sha512-XKcSStleEVnbH6W/9DHzZv1YhjE4eSS6zOu2eRtYAIh7aV4o3vIBs+t/B15xlqoxt6ef/0uiqJVB6hkHjWD/0A==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': + resolution: {integrity: sha512-/hlXCBqn9K6fi7eAM0RsobHwJYa5V/xzWspVTzxnX+Ft9v6n+30Pz8+RxCn7sQL/vRHHLS30iQPrHQunu6/vJA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.2.0': + resolution: {integrity: sha512-lKUaygq4G7sWkhQbfdRRBkaq4LY39IriqBQ+Gk6l5nKq6Ay2M2ZZb1tlIyRNgZKS8cbErTwuYSor0IIULC0SHw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.2.0': + resolution: {integrity: sha512-xuDjhAsFdUuFP5W9Ze4k/o4AskUtI8bcAGU4puTYprr89QaYFmhYOPfP+d1pH+k9ets6RoE23BXZM1X1jJqoyw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': + resolution: {integrity: sha512-2UU/15y1sWDEDNJXxEIrfWKC2Yb4YgIW5Xz2fKFqGzFWfoMHWFlfa1EJlGO2Xzjkq/tvSarh9ZTjvbxqWvLLXA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': + resolution: {integrity: sha512-CrFadmFoc+z76EV6LPG1jx6XceDsaCG3lFhyLNo/bV9ByPrE+FnBPckXQVP4XRkN76h3Fjt/a+5Er/oA/nCBvQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.2.0': + resolution: {integrity: sha512-AZqQzADaj742oqn2xjl5JbIOzZB/DGCYF/7bpvhA8KvjUj9HJkag6bBuwZvH1ps6dfgxNHyuJVlzSr2VpMgdTQ==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.2.0': + resolution: {integrity: sha512-u6YBacGpOm/ixPfKqfgrJEjMfrYmPD7gEFRoygS/hnQaRtV0VCBdpkx5Ouw9pnaLRwwlgGCuJw8xLpaR0hOrQg==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/html-to-text@9.0.4': + resolution: {integrity: sha512-pUY3cKH/Nm2yYrEmDlPR1mR7yszjGx4DrwPjQ702C4/D5CwHuZTgZdIdwPkRbcuhs7BAh2L5rg3CL5cbRiGTCQ==} + + '@types/node@22.19.11': + resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@13.0.0': + resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} + + '@vercel/analytics@1.6.1': + resolution: {integrity: sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==} + peerDependencies: + '@remix-run/react': ^2 + '@sveltejs/kit': ^1 || ^2 + next: '>= 13' + react: ^18 || ^19 || ^19.0.0-rc + svelte: '>= 4' + vue: ^3 + vue-router: ^4 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@sveltejs/kit': + optional: true + next: + optional: true + react: + optional: true + svelte: + optional: true + vue: + optional: true + vue-router: + optional: true + + '@xmldom/xmldom@0.8.11': + resolution: {integrity: sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==} + engines: {node: '>=10.0.0'} + + adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + array-hyper-unique@2.1.6: + resolution: {integrity: sha512-BdlHRqjKSYs88WFaVNVEc6Kv8ln/FdzCKPbcDPuWs4/EXkQFhnjc8TyR7hnPxRjcjo5LKOhUMGUWpAqRgeJvpA==} + + autoprefixer@10.4.24: + resolution: {integrity: sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + + bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bson@7.2.0: + resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} + engines: {node: '>=20.19.0'} + + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmdk@1.1.1: + resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==} + peerDependencies: + react: ^18 || ^19 || ^19.0.0-rc + react-dom: ^18 || ^19 || ^19.0.0-rc + + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + crlf-normalize@1.0.20: + resolution: {integrity: sha512-h/rBerTd3YHQGfv7tNT25mfhWvRq2BBLCZZ80GFarFxf6HQGbpW6iqDL3N+HBLpjLfAdcBXfWAzVlLfHkRUQBQ==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + date-fns-jalali@4.1.0-0: + resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==} + + date-fns@4.1.0: + resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} + + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + + deep-eql@4.0.0: + resolution: {integrity: sha512-GxJC5MOg2KyQlv6WiUF/VAnMj4MWnYiXo4oLgeptOELVoknyErb4Z8+5F/IM/K4g9/80YzzatxmWcyRwUseH0A==} + engines: {node: '>=6'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + dingbat-to-unicode@1.0.1: + resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + + duck@0.1.12: + resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==} + + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} + + embla-carousel-react@8.6.0: + resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==} + peerDependencies: + react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + embla-carousel-reactive-utils@8.6.0: + resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + peerDependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: + resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + epub2@3.0.2: + resolution: {integrity: sha512-rhvpt27CV5MZfRetfNtdNwi3XcNg1Am0TwfveJkK8YWeHItHepQ8Js9J06v8XRIjuTrCW/NSGYMTy55Of7BfNQ==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} + engines: {node: '>=6.0.0'} + + fast-xml-builder@1.1.0: + resolution: {integrity: sha512-7mtITW/we2/wTUZqMyBOR2F8xP4CRxMiSEcQxPIqdRWdO2L/HZSOlzoNyghmyDwNB8BDxePooV1ZTJpkOUhdRg==} + + fast-xml-parser@5.4.1: + resolution: {integrity: sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==} + hasBin: true + + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + html-to-text@9.0.5: + resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} + engines: {node: '>=14'} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + input-otp@1.4.2: + resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} + + jose@6.1.3: + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + kareem@3.2.0: + resolution: {integrity: sha512-VS8MWZz/cT+SqBCpVfNN4zoVz5VskR3N4+sTmUXme55e9avQHntpwpNq0yjnosISXqwJ3AQVjlbI4Dyzv//JtA==} + engines: {node: '>=18.0.0'} + + leac@0.6.0: + resolution: {integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + engines: {node: '>= 12.0.0'} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lop@0.4.2: + resolution: {integrity: sha512-RefILVDQ4DKoRZsJ4Pj22TxE3omDO47yFpkIBoDKzkqPRISs5U1cnAdg/5583YPkWPaLIYHOKRMQSvjFsO26cw==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lucide-react@0.564.0: + resolution: {integrity: sha512-JJ8GVTQqFwuliifD48U6+h7DXEHdkhJ/E87kksGByII3qHxtPciVb8T8woQONHBQgHVOl7rSMrrip3SeVNy7Fg==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + mammoth@1.11.0: + resolution: {integrity: sha512-BcEqqY/BOwIcI1iR5tqyVlqc3KIaMRa4egSoK83YAVrBf6+yqdAAbtUcFDCWX8Zef8/fgNZ6rl4VUv+vVX8ddQ==} + engines: {node: '>=12.0.0'} + hasBin: true + + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + mongodb-connection-string-url@7.0.1: + resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} + engines: {node: '>=20.19.0'} + + mongodb@7.0.0: + resolution: {integrity: sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.806.0 + '@mongodb-js/zstd': ^7.0.0 + gcp-metadata: ^7.0.1 + kerberos: ^7.0.0 + mongodb-client-encryption: '>=7.0.0 <7.1.0' + snappy: ^7.3.2 + socks: ^2.8.6 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + + mongoose@9.2.4: + resolution: {integrity: sha512-XNh+jiztVMddDFDCv8TWxVxi/rGx+0FfsK3Ftj6hcYzEmhTcos2uC144OJRmUFPHSu3hJr6Pgip++Ab2+Da35Q==} + engines: {node: '>=20.19.0'} + + mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} + engines: {node: '>=4.0.0'} + + mquery@6.0.0: + resolution: {integrity: sha512-b2KQNsmgtkscfeDgkYMcWGn9vZI9YoXh802VDEwE6qc50zxBFQ0Oo8ROkawbPAsXCY1/Z1yp0MagqsZStPWJjw==} + engines: {node: '>=20.19.0'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + next-auth@4.24.13: + resolution: {integrity: sha512-sgObCfcfL7BzIK76SS5TnQtc3yo2Oifp/yIpfv6fMfeBOiBJkDWF3A2y9+yqnmJ4JKc2C+nMjSjmgDeTwgN1rQ==} + peerDependencies: + '@auth/core': 0.34.3 + next: ^12.2.5 || ^13 || ^14 || ^15 || ^16 + nodemailer: ^7.0.7 + react: ^17.0.2 || ^18 || ^19 + react-dom: ^17.0.2 || ^18 || ^19 + peerDependenciesMeta: + '@auth/core': + optional: true + nodemailer: + optional: true + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.1.6: + resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + + oauth4webapi@3.8.5: + resolution: {integrity: sha512-A8jmyUckVhRJj5lspguklcl90Ydqk61H3dcU0oLhH3Yv13KpAliKTt5hknpGGPZSSfOwGyraNEFmofDYH+1kSg==} + + oauth@0.9.15: + resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@2.2.0: + resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} + engines: {node: '>= 6'} + + oidc-token-hash@5.2.0: + resolution: {integrity: sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw==} + engines: {node: ^10.13.0 || >=12.0.0} + + openid-client@5.7.1: + resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==} + + option@0.2.4: + resolution: {integrity: sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parseley@0.12.1: + resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} + + path-expression-matcher@1.1.2: + resolution: {integrity: sha512-LXWqJmcpp2BKOEmgt4CyuESFmBfPuhJlAHKJsFzuJU6CxErWk75BrO+Ni77M9OxHN6dCYKM4vj+21Z6cOL96YQ==} + engines: {node: '>=14.0.0'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + peberminta@0.9.0: + resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} + + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} + + pg-connection-string@2.12.0: + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.13.0: + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.13.0: + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.20.0: + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + + preact-render-to-string@5.2.6: + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + + preact-render-to-string@6.5.11: + resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} + peerDependencies: + preact: '>=10' + + preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} + + preact@10.28.4: + resolution: {integrity: sha512-uKFfOHWuSNpRFVTnljsCluEFq57OKT+0QdOiQo8XWnQ/pSvg7OpX5eNOejELXJMWy+BwM2nobz0FkvzmnpCNsQ==} + + pretty-format@3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + + prisma@5.22.0: + resolution: {integrity: sha512-vtpjW3XuYCSnMsNVBjLMNkTj6OZbudcPPTPYHqX0CJfpcdWciI1dM8uHETwmDxxiqEwCIE6WvXucWUetJgfu/A==} + engines: {node: '>=16.13'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + react-day-picker@9.13.2: + resolution: {integrity: sha512-IMPiXfXVIAuR5Yk58DDPBC8QKClrhdXV+Tr/alBrwrHUw0qDDYB1m5zPNuTnnPIr/gmJ4ChMxmtqPdxm8+R4Eg==} + engines: {node: '>=18'} + peerDependencies: + react: '>=16.8.0' + + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-hook-form@7.71.1: + resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-resizable-panels@2.1.9: + resolution: {integrity: sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.0: + resolution: {integrity: sha512-cIvMxDfpAmqAmVgc4yb7pgm/O1tmmkl/CjrvXuW+62/+7jj/iF9Ykm+hb/UJt42TREHMyd3gb+pkgoa2MxgDIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + sax@1.5.0: + resolution: {integrity: sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==} + engines: {node: '>=11.0.0'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + selderee@0.11.0: + resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==} + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + sift@17.1.3: + resolution: {integrity: sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==} + + sonner@1.7.4: + resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strnum@2.2.0: + resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + tailwind-merge@3.4.0: + resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} + + tailwindcss@4.2.0: + resolution: {integrity: sha512-yYzTZ4++b7fNYxFfpnberEEKu43w44aqDMNM9MHMmcKuCH7lL8jJ4yJ7LGHv7rSwiqM0nkiobF9I6cLlpS2P7Q==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + + ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + + ts-type@3.0.1: + resolution: {integrity: sha512-cleRydCkBGBFQ4KAvLH0ARIkciduS745prkGVVxPGvcRGhMMoSJUB7gNR1ByKhFTEYrYRg2CsMRGYnqp+6op+g==} + peerDependencies: + ts-toolbelt: ^9.6.0 + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tw-animate-css@1.3.3: + resolution: {integrity: sha512-tXE2TRWrskc4TU3RDd7T8n8Np/wCfoeH9gz22c7PzYqNPQ9FBGFbWWzwL0JyHcFp+jHozmF76tbHfPAx22ua2Q==} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + typedarray-dts@1.0.0: + resolution: {integrity: sha512-Ka0DBegjuV9IPYFT1h0Qqk5U4pccebNIJCGl8C5uU7xtOs+jpJvKGAY4fHGK25hTmXZOEUl9Cnsg5cS6K/b5DA==} + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + underscore@1.13.8: + resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + vaul@1.1.2: + resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc + + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@10.1.1: + resolution: {integrity: sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==} + engines: {node: '>=4.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@auth/core@0.41.1': + dependencies: + '@panva/hkdf': 1.2.1 + jose: 6.1.3 + oauth4webapi: 3.8.5 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) + + '@auth/prisma-adapter@2.11.1(@prisma/client@5.22.0(prisma@5.22.0))': + dependencies: + '@auth/core': 0.41.1 + '@prisma/client': 5.22.0(prisma@5.22.0) + transitivePeerDependencies: + - '@simplewebauthn/browser' + - '@simplewebauthn/server' + - nodemailer + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.5 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.5 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.5 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-s3@3.1006.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.19 + '@aws-sdk/credential-provider-node': 3.972.19 + '@aws-sdk/middleware-bucket-endpoint': 3.972.7 + '@aws-sdk/middleware-expect-continue': 3.972.7 + '@aws-sdk/middleware-flexible-checksums': 3.973.5 + '@aws-sdk/middleware-host-header': 3.972.7 + '@aws-sdk/middleware-location-constraint': 3.972.7 + '@aws-sdk/middleware-logger': 3.972.7 + '@aws-sdk/middleware-recursion-detection': 3.972.7 + '@aws-sdk/middleware-sdk-s3': 3.972.19 + '@aws-sdk/middleware-ssec': 3.972.7 + '@aws-sdk/middleware-user-agent': 3.972.20 + '@aws-sdk/region-config-resolver': 3.972.7 + '@aws-sdk/signature-v4-multi-region': 3.996.7 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-endpoints': 3.996.4 + '@aws-sdk/util-user-agent-browser': 3.972.7 + '@aws-sdk/util-user-agent-node': 3.973.5 + '@smithy/config-resolver': 4.4.10 + '@smithy/core': 3.23.9 + '@smithy/eventstream-serde-browser': 4.2.11 + '@smithy/eventstream-serde-config-resolver': 4.3.11 + '@smithy/eventstream-serde-node': 4.2.11 + '@smithy/fetch-http-handler': 5.3.13 + '@smithy/hash-blob-browser': 4.2.12 + '@smithy/hash-node': 4.2.11 + '@smithy/hash-stream-node': 4.2.11 + '@smithy/invalid-dependency': 4.2.11 + '@smithy/md5-js': 4.2.11 + '@smithy/middleware-content-length': 4.2.11 + '@smithy/middleware-endpoint': 4.4.23 + '@smithy/middleware-retry': 4.4.40 + '@smithy/middleware-serde': 4.2.12 + '@smithy/middleware-stack': 4.2.11 + '@smithy/node-config-provider': 4.3.11 + '@smithy/node-http-handler': 4.4.14 + '@smithy/protocol-http': 5.3.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/url-parser': 4.2.11 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.39 + '@smithy/util-defaults-mode-node': 4.2.42 + '@smithy/util-endpoints': 3.3.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-retry': 4.2.11 + '@smithy/util-stream': 4.5.17 + '@smithy/util-utf8': 4.2.2 + '@smithy/util-waiter': 4.2.12 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.973.19': + dependencies: + '@aws-sdk/types': 3.973.5 + '@aws-sdk/xml-builder': 3.972.10 + '@smithy/core': 3.23.9 + '@smithy/node-config-provider': 4.3.11 + '@smithy/property-provider': 4.2.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/signature-v4': 5.3.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/util-base64': 4.3.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@aws-sdk/crc64-nvme@3.972.4': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.17': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.19': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/types': 3.973.5 + '@smithy/fetch-http-handler': 5.3.13 + '@smithy/node-http-handler': 4.4.14 + '@smithy/property-provider': 4.2.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/util-stream': 4.5.17 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.972.18': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/credential-provider-env': 3.972.17 + '@aws-sdk/credential-provider-http': 3.972.19 + '@aws-sdk/credential-provider-login': 3.972.18 + '@aws-sdk/credential-provider-process': 3.972.17 + '@aws-sdk/credential-provider-sso': 3.972.18 + '@aws-sdk/credential-provider-web-identity': 3.972.18 + '@aws-sdk/nested-clients': 3.996.8 + '@aws-sdk/types': 3.973.5 + '@smithy/credential-provider-imds': 4.2.11 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-login@3.972.18': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/nested-clients': 3.996.8 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.972.19': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.17 + '@aws-sdk/credential-provider-http': 3.972.19 + '@aws-sdk/credential-provider-ini': 3.972.18 + '@aws-sdk/credential-provider-process': 3.972.17 + '@aws-sdk/credential-provider-sso': 3.972.18 + '@aws-sdk/credential-provider-web-identity': 3.972.18 + '@aws-sdk/types': 3.973.5 + '@smithy/credential-provider-imds': 4.2.11 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.972.17': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.972.18': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/nested-clients': 3.996.8 + '@aws-sdk/token-providers': 3.1005.0 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.972.18': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/nested-clients': 3.996.8 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-bucket-endpoint@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-arn-parser': 3.972.3 + '@smithy/node-config-provider': 4.3.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-config-provider': 4.2.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.973.5': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.973.19 + '@aws-sdk/crc64-nvme': 3.972.4 + '@aws-sdk/types': 3.973.5 + '@smithy/is-array-buffer': 4.2.2 + '@smithy/node-config-provider': 4.3.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-stream': 4.5.17 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@aws/lambda-invoke-store': 0.2.3 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.19': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-arn-parser': 3.972.3 + '@smithy/core': 3.23.9 + '@smithy/node-config-provider': 4.3.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/signature-v4': 5.3.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/util-config-provider': 4.2.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-stream': 4.5.17 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.972.20': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-endpoints': 3.996.4 + '@smithy/core': 3.23.9 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-retry': 4.2.11 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.996.8': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.19 + '@aws-sdk/middleware-host-header': 3.972.7 + '@aws-sdk/middleware-logger': 3.972.7 + '@aws-sdk/middleware-recursion-detection': 3.972.7 + '@aws-sdk/middleware-user-agent': 3.972.20 + '@aws-sdk/region-config-resolver': 3.972.7 + '@aws-sdk/types': 3.973.5 + '@aws-sdk/util-endpoints': 3.996.4 + '@aws-sdk/util-user-agent-browser': 3.972.7 + '@aws-sdk/util-user-agent-node': 3.973.5 + '@smithy/config-resolver': 4.4.10 + '@smithy/core': 3.23.9 + '@smithy/fetch-http-handler': 5.3.13 + '@smithy/hash-node': 4.2.11 + '@smithy/invalid-dependency': 4.2.11 + '@smithy/middleware-content-length': 4.2.11 + '@smithy/middleware-endpoint': 4.4.23 + '@smithy/middleware-retry': 4.4.40 + '@smithy/middleware-serde': 4.2.12 + '@smithy/middleware-stack': 4.2.11 + '@smithy/node-config-provider': 4.3.11 + '@smithy/node-http-handler': 4.4.14 + '@smithy/protocol-http': 5.3.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/url-parser': 4.2.11 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.39 + '@smithy/util-defaults-mode-node': 4.2.42 + '@smithy/util-endpoints': 3.3.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-retry': 4.2.11 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/config-resolver': 4.4.10 + '@smithy/node-config-provider': 4.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.7': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.972.19 + '@aws-sdk/types': 3.973.5 + '@smithy/protocol-http': 5.3.11 + '@smithy/signature-v4': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1005.0': + dependencies: + '@aws-sdk/core': 3.973.19 + '@aws-sdk/nested-clients': 3.996.8 + '@aws-sdk/types': 3.973.5 + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.973.5': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.972.3': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.996.4': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/types': 4.13.0 + '@smithy/url-parser': 4.2.11 + '@smithy/util-endpoints': 3.3.2 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.5': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.972.7': + dependencies: + '@aws-sdk/types': 3.973.5 + '@smithy/types': 4.13.0 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.973.5': + dependencies: + '@aws-sdk/middleware-user-agent': 3.972.20 + '@aws-sdk/types': 3.973.5 + '@smithy/node-config-provider': 4.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.10': + dependencies: + '@smithy/types': 4.13.0 + fast-xml-parser: 5.4.1 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.2.3': {} + + '@babel/runtime@7.28.6': {} + + '@date-fns/tz@1.4.1': {} + + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@floating-ui/core@1.7.4': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.5': + dependencies: + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@floating-ui/utils@0.2.10': {} + + '@hookform/resolvers@3.10.0(react-hook-form@7.71.1(react@19.2.4))': + dependencies: + react-hook-form: 7.71.1(react@19.2.4) + + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mongodb-js/saslprep@1.4.6': + dependencies: + sparse-bitfield: 3.0.3 + + '@next/env@16.1.6': {} + + '@next/swc-darwin-arm64@16.1.6': + optional: true + + '@next/swc-darwin-x64@16.1.6': + optional: true + + '@next/swc-linux-arm64-gnu@16.1.6': + optional: true + + '@next/swc-linux-arm64-musl@16.1.6': + optional: true + + '@next/swc-linux-x64-gnu@16.1.6': + optional: true + + '@next/swc-linux-x64-musl@16.1.6': + optional: true + + '@next/swc-win32-arm64-msvc@16.1.6': + optional: true + + '@next/swc-win32-x64-msvc@16.1.6': + optional: true + + '@panva/hkdf@1.2.1': {} + + '@prisma/client@5.22.0(prisma@5.22.0)': + optionalDependencies: + prisma: 5.22.0 + + '@prisma/debug@5.22.0': {} + + '@prisma/engines-version@5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2': {} + + '@prisma/engines@5.22.0': + dependencies: + '@prisma/debug': 5.22.0 + '@prisma/engines-version': 5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2 + '@prisma/fetch-engine': 5.22.0 + '@prisma/get-platform': 5.22.0 + + '@prisma/fetch-engine@5.22.0': + dependencies: + '@prisma/debug': 5.22.0 + '@prisma/engines-version': 5.22.0-44.605197351a3c8bdd595af2d2a9bc3025bca48ea2 + '@prisma/get-platform': 5.22.0 + + '@prisma/get-platform@5.22.0': + dependencies: + '@prisma/debug': 5.22.0 + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-aspect-ratio@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/rect': 1.1.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/rect@1.1.1': {} + + '@selderee/plugin-htmlparser2@0.11.0': + dependencies: + domhandler: 5.0.3 + selderee: 0.11.0 + + '@smithy/abort-controller@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader-native@4.2.3': + dependencies: + '@smithy/util-base64': 4.3.2 + tslib: 2.8.1 + + '@smithy/chunked-blob-reader@5.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/config-resolver@4.4.10': + dependencies: + '@smithy/node-config-provider': 4.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-config-provider': 4.2.2 + '@smithy/util-endpoints': 3.3.2 + '@smithy/util-middleware': 4.2.11 + tslib: 2.8.1 + + '@smithy/core@3.23.9': + dependencies: + '@smithy/middleware-serde': 4.2.12 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-stream': 4.5.17 + '@smithy/util-utf8': 4.2.2 + '@smithy/uuid': 1.1.2 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.2.11': + dependencies: + '@smithy/node-config-provider': 4.3.11 + '@smithy/property-provider': 4.2.11 + '@smithy/types': 4.13.0 + '@smithy/url-parser': 4.2.11 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.2.11': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.13.0 + '@smithy/util-hex-encoding': 4.2.2 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.2.11': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.3.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.2.11': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.2.11': + dependencies: + '@smithy/eventstream-codec': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.3.13': + dependencies: + '@smithy/protocol-http': 5.3.11 + '@smithy/querystring-builder': 4.2.11 + '@smithy/types': 4.13.0 + '@smithy/util-base64': 4.3.2 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.2.12': + dependencies: + '@smithy/chunked-blob-reader': 5.2.2 + '@smithy/chunked-blob-reader-native': 4.2.3 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/md5-js@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.2.11': + dependencies: + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.4.23': + dependencies: + '@smithy/core': 3.23.9 + '@smithy/middleware-serde': 4.2.12 + '@smithy/node-config-provider': 4.3.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + '@smithy/url-parser': 4.2.11 + '@smithy/util-middleware': 4.2.11 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.4.40': + dependencies: + '@smithy/node-config-provider': 4.3.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/service-error-classification': 4.2.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-retry': 4.2.11 + '@smithy/uuid': 1.1.2 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.2.12': + dependencies: + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.3.11': + dependencies: + '@smithy/property-provider': 4.2.11 + '@smithy/shared-ini-file-loader': 4.4.6 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.4.14': + dependencies: + '@smithy/abort-controller': 4.2.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/querystring-builder': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.3.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + '@smithy/util-uri-escape': 4.2.2 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + + '@smithy/shared-ini-file-loader@4.4.6': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.3.11': + dependencies: + '@smithy/is-array-buffer': 4.2.2 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-hex-encoding': 4.2.2 + '@smithy/util-middleware': 4.2.11 + '@smithy/util-uri-escape': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/smithy-client@4.12.3': + dependencies: + '@smithy/core': 3.23.9 + '@smithy/middleware-endpoint': 4.4.23 + '@smithy/middleware-stack': 4.2.11 + '@smithy/protocol-http': 5.3.11 + '@smithy/types': 4.13.0 + '@smithy/util-stream': 4.5.17 + tslib: 2.8.1 + + '@smithy/types@4.13.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.2.11': + dependencies: + '@smithy/querystring-parser': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.3.2': + dependencies: + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.2.3': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.2.2': + dependencies: + '@smithy/is-array-buffer': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.3.39': + dependencies: + '@smithy/property-provider': 4.2.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.2.42': + dependencies: + '@smithy/config-resolver': 4.4.10 + '@smithy/credential-provider-imds': 4.2.11 + '@smithy/node-config-provider': 4.3.11 + '@smithy/property-provider': 4.2.11 + '@smithy/smithy-client': 4.12.3 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.3.2': + dependencies: + '@smithy/node-config-provider': 4.3.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.2.11': + dependencies: + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.2.11': + dependencies: + '@smithy/service-error-classification': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.5.17': + dependencies: + '@smithy/fetch-http-handler': 5.3.13 + '@smithy/node-http-handler': 4.4.14 + '@smithy/types': 4.13.0 + '@smithy/util-base64': 4.3.2 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-hex-encoding': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.2.2': + dependencies: + '@smithy/util-buffer-from': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-waiter@4.2.12': + dependencies: + '@smithy/abort-controller': 4.2.11 + '@smithy/types': 4.13.0 + tslib: 2.8.1 + + '@smithy/uuid@1.1.2': + dependencies: + tslib: 2.8.1 + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.2.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.19.0 + jiti: 2.6.1 + lightningcss: 1.31.1 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.2.0 + + '@tailwindcss/oxide-android-arm64@4.2.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.2.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.2.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.2.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.2.0': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.2.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': + optional: true + + '@tailwindcss/oxide@4.2.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-x64': 4.2.0 + '@tailwindcss/oxide-freebsd-x64': 4.2.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-x64-musl': 4.2.0 + '@tailwindcss/oxide-wasm32-wasi': 4.2.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.0 + + '@tailwindcss/postcss@4.2.0': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.2.0 + '@tailwindcss/oxide': 4.2.0 + postcss: 8.5.6 + tailwindcss: 4.2.0 + + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/html-to-text@9.0.4': {} + + '@types/node@22.19.11': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@13.0.0': + dependencies: + '@types/webidl-conversions': 7.0.3 + + '@vercel/analytics@1.6.1(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + optionalDependencies: + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + + '@xmldom/xmldom@0.8.11': {} + + adm-zip@0.5.16: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + array-hyper-unique@2.1.6: + dependencies: + deep-eql: 4.0.0 + lodash: 4.17.23 + + autoprefixer@10.4.24(postcss@8.5.6): + dependencies: + browserslist: 4.28.1 + caniuse-lite: 1.0.30001769 + fraction.js: 5.3.4 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.9.19: {} + + bluebird@3.4.7: {} + + bluebird@3.7.2: {} + + bowser@2.14.1: {} + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 + node-releases: 2.0.27 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + bson@7.2.0: {} + + caniuse-lite@1.0.30001769: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + client-only@0.0.1: {} + + clsx@2.1.1: {} + + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + cookie@0.7.2: {} + + core-util-is@1.0.3: {} + + crlf-normalize@1.0.20(ts-toolbelt@9.6.0): + dependencies: + ts-type: 3.0.1(ts-toolbelt@9.6.0) + transitivePeerDependencies: + - ts-toolbelt + + csstype@3.2.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + date-fns-jalali@4.1.0-0: {} + + date-fns@4.1.0: {} + + decimal.js-light@2.5.1: {} + + deep-eql@4.0.0: + dependencies: + type-detect: 4.1.0 + + deepmerge@4.3.1: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + dingbat-to-unicode@1.0.1: {} + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.6 + csstype: 3.2.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv@17.3.1: {} + + duck@0.1.12: + dependencies: + underscore: 1.13.8 + + electron-to-chromium@1.5.286: {} + + embla-carousel-react@8.6.0(react@19.2.4): + dependencies: + embla-carousel: 8.6.0 + embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) + react: 19.2.4 + + embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): + dependencies: + embla-carousel: 8.6.0 + + embla-carousel@8.6.0: {} + + enhanced-resolve@5.19.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + entities@4.5.0: {} + + epub2@3.0.2(ts-toolbelt@9.6.0): + dependencies: + adm-zip: 0.5.16 + array-hyper-unique: 2.1.6 + bluebird: 3.7.2 + crlf-normalize: 1.0.20(ts-toolbelt@9.6.0) + tslib: 2.8.1 + xml2js: 0.6.2 + transitivePeerDependencies: + - ts-toolbelt + + escalade@3.2.0: {} + + eventemitter3@4.0.7: {} + + fast-equals@5.4.0: {} + + fast-xml-builder@1.1.0: + dependencies: + path-expression-matcher: 1.1.2 + + fast-xml-parser@5.4.1: + dependencies: + fast-xml-builder: 1.1.0 + strnum: 2.2.0 + + fraction.js@5.3.4: {} + + fsevents@2.3.3: + optional: true + + get-nonce@1.0.1: {} + + graceful-fs@4.2.11: {} + + html-to-text@9.0.5: + dependencies: + '@selderee/plugin-htmlparser2': 0.11.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.11.0 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + immediate@3.0.6: {} + + inherits@2.0.4: {} + + input-otp@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + internmap@2.0.3: {} + + isarray@1.0.0: {} + + jiti@2.6.1: {} + + jose@4.15.9: {} + + jose@6.1.3: {} + + js-tokens@4.0.0: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + kareem@3.2.0: {} + + leac@0.6.0: {} + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lightningcss-android-arm64@1.31.1: + optional: true + + lightningcss-darwin-arm64@1.31.1: + optional: true + + lightningcss-darwin-x64@1.31.1: + optional: true + + lightningcss-freebsd-x64@1.31.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.31.1: + optional: true + + lightningcss-linux-arm64-gnu@1.31.1: + optional: true + + lightningcss-linux-arm64-musl@1.31.1: + optional: true + + lightningcss-linux-x64-gnu@1.31.1: + optional: true + + lightningcss-linux-x64-musl@1.31.1: + optional: true + + lightningcss-win32-arm64-msvc@1.31.1: + optional: true + + lightningcss-win32-x64-msvc@1.31.1: + optional: true + + lightningcss@1.31.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 + + lodash@4.17.23: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lop@0.4.2: + dependencies: + duck: 0.1.12 + option: 0.2.4 + underscore: 1.13.8 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lucide-react@0.564.0(react@19.2.4): + dependencies: + react: 19.2.4 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + mammoth@1.11.0: + dependencies: + '@xmldom/xmldom': 0.8.11 + argparse: 1.0.10 + base64-js: 1.5.1 + bluebird: 3.4.7 + dingbat-to-unicode: 1.0.1 + jszip: 3.10.1 + lop: 0.4.2 + path-is-absolute: 1.0.1 + underscore: 1.13.8 + xmlbuilder: 10.1.1 + + memory-pager@1.5.0: {} + + mongodb-connection-string-url@7.0.1: + dependencies: + '@types/whatwg-url': 13.0.0 + whatwg-url: 14.2.0 + + mongodb@7.0.0: + dependencies: + '@mongodb-js/saslprep': 1.4.6 + bson: 7.2.0 + mongodb-connection-string-url: 7.0.1 + + mongoose@9.2.4: + dependencies: + kareem: 3.2.0 + mongodb: 7.0.0 + mpath: 0.9.0 + mquery: 6.0.0 + ms: 2.1.3 + sift: 17.1.3 + transitivePeerDependencies: + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' + - gcp-metadata + - kerberos + - mongodb-client-encryption + - snappy + - socks + + mpath@0.9.0: {} + + mquery@6.0.0: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + next-auth@4.24.13(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@babel/runtime': 7.28.6 + '@panva/hkdf': 1.2.1 + cookie: 0.7.2 + jose: 4.15.9 + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + oauth: 0.9.15 + openid-client: 5.7.1 + preact: 10.28.4 + preact-render-to-string: 5.2.6(preact@10.28.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + uuid: 8.3.2 + + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@next/env': 16.1.6 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001769 + postcss: 8.4.31 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(react@19.2.4) + optionalDependencies: + '@next/swc-darwin-arm64': 16.1.6 + '@next/swc-darwin-x64': 16.1.6 + '@next/swc-linux-arm64-gnu': 16.1.6 + '@next/swc-linux-arm64-musl': 16.1.6 + '@next/swc-linux-x64-gnu': 16.1.6 + '@next/swc-linux-x64-musl': 16.1.6 + '@next/swc-win32-arm64-msvc': 16.1.6 + '@next/swc-win32-x64-msvc': 16.1.6 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-releases@2.0.27: {} + + oauth4webapi@3.8.5: {} + + oauth@0.9.15: {} + + object-assign@4.1.1: {} + + object-hash@2.2.0: {} + + oidc-token-hash@5.2.0: {} + + openid-client@5.7.1: + dependencies: + jose: 4.15.9 + lru-cache: 6.0.0 + object-hash: 2.2.0 + oidc-token-hash: 5.2.0 + + option@0.2.4: {} + + pako@1.0.11: {} + + parseley@0.12.1: + dependencies: + leac: 0.6.0 + peberminta: 0.9.0 + + path-expression-matcher@1.1.2: {} + + path-is-absolute@1.0.1: {} + + peberminta@0.9.0: {} + + pg-cloudflare@1.3.0: + optional: true + + pg-connection-string@2.12.0: {} + + pg-int8@1.0.1: {} + + pg-pool@3.13.0(pg@8.20.0): + dependencies: + pg: 8.20.0 + + pg-protocol@1.13.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.20.0: + dependencies: + pg-connection-string: 2.12.0 + pg-pool: 3.13.0(pg@8.20.0) + pg-protocol: 1.13.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.3.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + + picocolors@1.1.1: {} + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + + preact-render-to-string@5.2.6(preact@10.28.4): + dependencies: + preact: 10.28.4 + pretty-format: 3.8.0 + + preact-render-to-string@6.5.11(preact@10.24.3): + dependencies: + preact: 10.24.3 + + preact@10.24.3: {} + + preact@10.28.4: {} + + pretty-format@3.8.0: {} + + prisma@5.22.0: + dependencies: + '@prisma/engines': 5.22.0 + optionalDependencies: + fsevents: 2.3.3 + + process-nextick-args@2.0.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + punycode@2.3.1: {} + + react-day-picker@9.13.2(react@19.2.4): + dependencies: + '@date-fns/tz': 1.4.1 + date-fns: 4.1.0 + date-fns-jalali: 4.1.0-0 + react: 19.2.4 + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-hook-form@7.71.1(react@19.2.4): + dependencies: + react: 19.2.4 + + react-is@16.13.1: {} + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + + react-resizable-panels@2.1.9(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react-smooth@4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + fast-equals: 5.4.0 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + get-nonce: 1.0.1 + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@babel/runtime': 7.28.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react@19.2.4: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.17.23 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + + safe-buffer@5.1.2: {} + + sax@1.5.0: {} + + scheduler@0.27.0: {} + + selderee@0.11.0: + dependencies: + parseley: 0.12.1 + + semver@7.7.4: + optional: true + + setimmediate@1.0.5: {} + + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + sift@17.1.3: {} + + sonner@1.7.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + source-map-js@1.2.1: {} + + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + split2@4.2.0: {} + + sprintf-js@1.0.3: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strnum@2.2.0: {} + + styled-jsx@5.1.6(react@19.2.4): + dependencies: + client-only: 0.0.1 + react: 19.2.4 + + tailwind-merge@3.4.0: {} + + tailwindcss@4.2.0: {} + + tapable@2.3.0: {} + + tiny-invariant@1.3.3: {} + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + + ts-toolbelt@9.6.0: {} + + ts-type@3.0.1(ts-toolbelt@9.6.0): + dependencies: + '@types/node': 22.19.11 + ts-toolbelt: 9.6.0 + tslib: 2.8.1 + typedarray-dts: 1.0.0 + + tslib@2.8.1: {} + + tw-animate-css@1.3.3: {} + + type-detect@4.1.0: {} + + typedarray-dts@1.0.0: {} + + typescript@5.7.3: {} + + underscore@1.13.8: {} + + undici-types@6.21.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sync-external-store@1.6.0(react@19.2.4): + dependencies: + react: 19.2.4 + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + + webidl-conversions@7.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + + xml2js@0.6.2: + dependencies: + sax: 1.5.0 + xmlbuilder: 11.0.1 + + xmlbuilder@10.1.1: {} + + xmlbuilder@11.0.1: {} + + xtend@4.0.2: {} + + yallist@4.0.0: {} + + zod@3.25.76: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..4edf605 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + '@prisma/client': false + '@prisma/engines': false + prisma: false + sharp: false diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 0000000..a869506 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +} + +export default config diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..3b7e903 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,188 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +// NextAuth schema +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? @db.Text + access_token String? @db.Text + expires_at Int? + token_type String? + scope String? + id_token String? @db.Text + session_state String? + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + image String? + role Role @default(USER) // Bổ sung phân quyền, mặc định là USER + + accounts Account[] + sessions Session[] + comments Comment[] + bookmarks Bookmark[] + novels Novel[] @relation("AuthorNovels") // Truyện do người này (MOD/ADMIN) đăng + settings UserSetting? +} + +model VerificationToken { + identifier String + token String @unique + expires DateTime + + @@unique([identifier, token]) +} + +model UserSetting { + id String @id @default(cuid()) + userId String @unique + fontSize Float @default(18) + lineHeight Float @default(1.8) + letterSpacing Float @default(0) + fontFamily String @default("font-serif") + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +// Custom App Schema +enum Role { + USER + MOD + ADMIN +} + +model Novel { + id String @id @default(cuid()) + title String + originalTitle String? + slug String @unique + seriesId String? + series Series? @relation(fields: [seriesId], references: [id], onDelete: SetNull) + authorName String // Tên tác giả nguyên bản của truyện + originalAuthorName String? + uploaderId String? // Tham chiếu đến User (Mod/Admin) đã upload + uploader User? @relation("AuthorNovels", fields: [uploaderId], references: [id], onDelete: SetNull) + description String @db.Text + coverColor String? + coverUrl String? + status String @default("Đang ra") // "Đang ra", "Hoàn thành", "Tạm ngưng" + totalChapters Int @default(0) + views Int @default(0) + rating Float @default(0.0) + ratingCount Int @default(0) + bookmarkCount Int @default(0) + trashWords String[] @default([]) + + genres NovelGenre[] + comments Comment[] + bookmarks Bookmark[] + dailyViews NovelViewDaily[] + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model NovelViewDaily { + id String @id @default(cuid()) + novelId String + day DateTime @db.Date + views Int @default(0) + + novel Novel @relation(fields: [novelId], references: [id], onDelete: Cascade) + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@unique([novelId, day]) + @@index([day]) +} + +model Series { + id String @id @default(cuid()) + name String + slug String @unique + description String? @db.Text + + novels Novel[] + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Genre { + id String @id @default(cuid()) + name String @unique + slug String @unique + description String? @db.Text + icon String? + + novels NovelGenre[] +} + +// Cầu nối nhiều-nhiều giữa Novel và Genre +model NovelGenre { + novelId String + genreId String + + novel Novel @relation(fields: [novelId], references: [id], onDelete: Cascade) + genre Genre @relation(fields: [genreId], references: [id], onDelete: Cascade) + + @@id([novelId, genreId]) +} + +model Comment { + id String @id @default(cuid()) + content String @db.Text + userId String + novelId String + chapterId String? // Có thể bình luận riêng tư cho từng chương (Lưu chapterId từ MongoDB) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + novel Novel @relation(fields: [novelId], references: [id], onDelete: Cascade) + + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} + +model Bookmark { + id String @id @default(cuid()) + userId String + novelId String + lastChapterId String? + lastChapterNumber Int? + readChapters Int[] @default([]) + hasCountedView Boolean @default(false) + + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + novel Novel @relation(fields: [novelId], references: [id], onDelete: Cascade) + + createdAt DateTime @default(now()) + + @@unique([userId, novelId]) +} diff --git a/scripts/setup-db.js b/scripts/setup-db.js new file mode 100644 index 0000000..94b8bf9 --- /dev/null +++ b/scripts/setup-db.js @@ -0,0 +1,49 @@ +const { Client } = require('pg'); +require('dotenv').config({ path: '.env.local' }); + +async function checkAndCreateDatabase() { + const dbUrl = process.env.DATABASE_URL; + if (!dbUrl) { + console.error('DATABASE_URL is not set in .env.local'); + process.exit(1); + } + + // Phân tích DATABASE_URL + const match = dbUrl.match(/postgresql:\/\/([^:]+):([^@]+)@([^:]+):(\d+)\/([^?]+)/); + if (!match) { + console.error('Invalid DATABASE_URL format'); + process.exit(1); + } + + const [_, user, password, host, port, database] = match; + + // Kết nối đến database mặc định 'postgres' + const client = new Client({ + user, + password: decodeURIComponent(password), + host, + port: parseInt(port), + database: 'postgres', + }); + + try { + await client.connect(); + + const res = await client.query(`SELECT 1 FROM pg_database WHERE datname = $1`, [database]); + + if (res.rowCount === 0) { + console.log(`Bắt đầu tạo database "${database}"...`); + await client.query(`CREATE DATABASE "${database}"`); + console.log(`Đã tạo thành công database "${database}".`); + } else { + console.log(`Database "${database}" đã tồn tại, bỏ qua tạo mới.`); + } + } catch (error) { + console.error('Lỗi khi kiểm tra/tạo database:', error); + process.exit(1); + } finally { + await client.end(); + } +} + +checkAndCreateDatabase(); diff --git a/scripts/wipe_db.js b/scripts/wipe_db.js new file mode 100644 index 0000000..adb201c --- /dev/null +++ b/scripts/wipe_db.js @@ -0,0 +1,60 @@ +const { PrismaClient } = require('@prisma/client') +const mongoose = require('mongoose') +require('dotenv').config({ path: '.env.local' }) +require('dotenv').config() + +const prisma = new PrismaClient() + +async function main() { + console.log('Connecting to MongoDB...') + // Connect to MongoDB using MONGODB_URI + const mongoUri = process.env.MONGODB_URI + if (!mongoUri) { + throw new Error('MONGODB_URI is not defined in env') + } + await mongoose.connect(mongoUri) + + // Wipe MongoDB Chapters + console.log('Wiping chapters from MongoDB...') + try { + const chapterSchema = new mongoose.Schema({}, { strict: false }) + const Chapter = mongoose.models.Chapter || mongoose.model('Chapter', chapterSchema, 'chapters') + const res = await Chapter.deleteMany({}) + console.log(`Deleted ${res.deletedCount} chapters.`) + } catch (e) { + console.error('Error wiping mongo chapters', e) + } + + // Wipe PostgreSQL Content + console.log('Wiping Novels, Genres, Comments, Bookmarks from PostgreSQL...') + try { + // Delete in order to respect foreign keys if Cascade isn't perfect, but Cascade is set on most. + await prisma.comment.deleteMany({}) + console.log('Deleted all comments.') + + await prisma.bookmark.deleteMany({}) + console.log('Deleted all bookmarks.') + + await prisma.novelGenre.deleteMany({}) + console.log('Deleted all novel_genres.') + + await prisma.genre.deleteMany({}) + console.log('Deleted all genres.') + + await prisma.novel.deleteMany({}) + console.log('Deleted all novels.') + + } catch (error) { + console.error('Error wiping postgres', error) + } + + console.log('Cleanup complete.') +} + +main() + .catch(console.error) + .finally(async () => { + await prisma.$disconnect() + await mongoose.disconnect() + process.exit(0) + }) diff --git a/test-ai.js b/test-ai.js new file mode 100644 index 0000000..f6fa40a --- /dev/null +++ b/test-ai.js @@ -0,0 +1,68 @@ +require('dotenv').config({ path: '.env' }); + +async function fetchJsonWithTimeout(url, init, timeoutMs = 25000) { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), timeoutMs); + try { + const res = await fetch(url, { ...init, signal: controller.signal, cache: "no-store" }); + if (!res.ok) { + const text = await res.text().catch(() => ""); + throw new Error(`HTTP ${res.status}: ${text.slice(0, 500)}`); + } + return await res.json(); + } finally { + clearTimeout(timeout); + } +} + +const prompt = "Please reply with { \"ready\": true } in JSON"; + +async function tryGoogle() { + const apiKey = process.env.GOOGLE_AI_KEY; + if (!apiKey) return console.log("Google: No key"); + try { + const data = await fetchJsonWithTimeout( + `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey}`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + contents: [{ role: "user", parts: [{ text: prompt }] }], + tools: [{ googleSearch: {} }], + generationConfig: { temperature: 0.2, maxOutputTokens: 1400 }, + }), + } + ); + console.log("Google Success:", JSON.stringify(data).slice(0, 100)); + } catch(e) { console.log("Google Error:", e.stack || e.message); } +} + +async function tryDeepSeek() { + const apiKey = process.env.DEEKSEEK_KEY || process.env.DEEPSEEK_KEY; + if (!apiKey) return console.log("DeepSeek: No key"); + try { + const data = await fetchJsonWithTimeout( + "https://api.deepseek.com/v1/chat/completions", + { + method: "POST", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${apiKey}`, + }, + body: JSON.stringify({ + model: "deepseek-chat", + temperature: 0.2, + max_tokens: 500, + messages: [{ role: "user", content: prompt }], + }), + } + ); + console.log("DeepSeek Success:", JSON.stringify(data).slice(0,100)); + } catch(e) { console.log("DeepSeek Error:", e.stack || e.message); } +} + +async function run() { + await tryGoogle(); + await tryDeepSeek(); +} +run(); diff --git a/test-db.js b/test-db.js new file mode 100644 index 0000000..e350878 --- /dev/null +++ b/test-db.js @@ -0,0 +1,17 @@ +const { MongoClient } = require('mongodb'); + +async function check() { + const uri = process.env.MONGODB_URI || "mongodb://localhost:27017/reader"; + const client = new MongoClient(uri); + try { + await client.connect(); + const db = client.db(); + // Just find the latest 5 chapters inserted + const docs = await db.collection('Chapter').find({}).sort({ _id: -1 }).limit(10).toArray(); + console.log("Recent chapters:"); + docs.forEach(d => console.log(d.novelId, d.number, d.title)); + } finally { + await client.close(); + } +} +check(); diff --git a/test-missing.ts b/test-missing.ts new file mode 100644 index 0000000..626474f --- /dev/null +++ b/test-missing.ts @@ -0,0 +1,30 @@ +import { PrismaClient } from '@prisma/client' +const prisma = new PrismaClient() + +async function main() { + const isMissingFilter = true + const baseWhereOptions: any[] = [{}] + + if (isMissingFilter) { + baseWhereOptions.push({ + OR: [ + { authorName: { in: ["", "Chưa rõ"] } }, + { description: "" }, + { description: { in: ["Chưa có giới thiệu", "Không có giới thiệu", "chưa có giới thiệu", "không có", "chưa rõ", "đang cập nhật"] } } + ], + }) + } + + const rows = await prisma.novel.findMany({ + where: { + AND: baseWhereOptions, + }, + select: { id: true }, + orderBy: [{ updatedAt: "desc" }], + take: 25, + skip: 0, + }) + + console.log("Returned rows length:", rows.length) +} +main().finally(() => prisma.$disconnect()) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..48d6d82 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "target": "ES6", + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo new file mode 100644 index 0000000..891a0a3 --- /dev/null +++ b/tsconfig.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@5.7.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/global.d.ts","./node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/get-page-files.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/compatibility/index.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@22.19.11/node_modules/@types/node/index.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/canary.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/experimental.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/index.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/canary.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/experimental.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/fallback.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/entry-constants.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/body-streams.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/worker.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/constants.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/bundler.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/page-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/require-hook.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/node-environment.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-kind.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/render-result.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/trace/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/trace/trace.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/trace/shared.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/trace/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/.pnpm/@next+env@16.1.6/node_modules/@next/env/dist/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/telemetry/storage.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/build-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack-config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/swc/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/jsx-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/debug-channel.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/next-url.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/render.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/with-router.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/router.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/route-loader.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/page-loader.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/readonly-url-search-params.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/app-router-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/router-reducer/ppr-navigations.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/segment-cache/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/segment-cache/navigation.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/templates/pages.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/pages/builtin/_error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/load-default-error-components.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/base-http/node.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/base-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/.pnpm/sharp@0.34.5/node_modules/sharp/lib/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/next-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/next.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/load-components.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/adapter.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/staged-rendering.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-page.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/search-params.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/compiler-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/client.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/static.d.ts","./node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/http.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/utils.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/export/routes/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/export/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/export/worker.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/worker.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/after/after.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/after/after-context.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/create-error-handler.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/action-revalidation-kind.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/params.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request-meta.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/cli/next-test.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/size-limit.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/config-shared.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/base-http/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/build/adapter/build-complete.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/pages/_app.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/app.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/cache.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/pages/_document.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/document.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dynamic.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/pages/_error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/head.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/head.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/cookies.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/headers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/headers.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/image-component.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/image.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/link.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/link.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/redirect.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/not-found.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/components/navigation.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/navigation.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/router.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/client/script.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/script.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/after/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/server/request/connection.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/server.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/types/global.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/types/compiled.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/image-types/global.d.ts","./.next/dev/types/routes.d.ts","./next-env.d.ts","./node_modules/.pnpm/@prisma+client@5.22.0_prisma@5.22.0/node_modules/@prisma/client/runtime/library.d.ts","./node_modules/.pnpm/@prisma+client@5.22.0_prisma@5.22.0/node_modules/.prisma/client/index.d.ts","./node_modules/.pnpm/@prisma+client@5.22.0_prisma@5.22.0/node_modules/.prisma/client/default.d.ts","./node_modules/.pnpm/@prisma+client@5.22.0_prisma@5.22.0/node_modules/@prisma/client/default.d.ts","./test-missing.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/vendored/cookie.d.ts","./node_modules/.pnpm/oauth4webapi@3.8.5/node_modules/oauth4webapi/build/index.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/utils/cookie.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/warnings.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/symbols.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/index.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/utils/env.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/jwt.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/utils/actions.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/index.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/utils/logger.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/webauthn.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/lib/utils/webauthn-utils.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/types.d.ts","./node_modules/.pnpm/preact@10.24.3/node_modules/preact/src/jsx.d.ts","./node_modules/.pnpm/preact@10.24.3/node_modules/preact/src/index.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/credentials.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/provider-types.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/nodemailer.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/email.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/oauth.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/providers/index.d.ts","./node_modules/.pnpm/@auth+core@0.41.1/node_modules/@auth/core/adapters.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/adapters.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/types.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/general/decrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/general/encrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/compact/verify.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/flattened/verify.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/general/verify.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/verify.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/decrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/produce.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/compact/sign.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/flattened/sign.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jws/general/sign.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/sign.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/encrypt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwk/thumbprint.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwk/embedded.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwks/local.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwks/remote.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/jwt/unsecured.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/key/export.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/key/import.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/util/decode_protected_header.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/util/decode_jwt.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/util/errors.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/key/generate_key_pair.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/key/generate_secret.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/util/base64url.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/util/runtime.d.ts","./node_modules/.pnpm/jose@4.15.9/node_modules/jose/dist/types/index.d.ts","./node_modules/.pnpm/openid-client@5.7.1/node_modules/openid-client/types/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/oauth-types.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/oauth.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/email.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/core/lib/cookie.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/core/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/credentials.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/jwt/types.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/jwt/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/utils/logger.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/core/types.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/next/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/index.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/providers/google.d.ts","./node_modules/.pnpm/@auth+prisma-adapter@2.11.1_@prisma+client@5.22.0_prisma@5.22.0_/node_modules/@auth/prisma-adapter/index.d.ts","./lib/prisma.ts","./lib/auth.ts","./app/api/auth/[...nextauth]/route.ts","./app/api/dev/make-mod/route.ts","./app/api/mod/ai-tools/novel-enrich/route.ts","./app/api/mod/ai-tools/novel-enrich-batch/route.ts","./app/api/mod/ai-tools/novel-search/route.ts","./app/api/mod/ai-tools/test-connection/route.ts","./node_modules/.pnpm/bson@7.2.0/node_modules/bson/bson.d.ts","./node_modules/.pnpm/mongodb@7.0.0/node_modules/mongodb/mongodb.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/aggregate.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/callback.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/collection.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/connection.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/cursor.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/document.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/error.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/expressions.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/helpers.d.ts","./node_modules/.pnpm/kareem@3.2.0/node_modules/kareem/index.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/middlewares.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/indexes.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/models.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/mongooseoptions.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/pipelinestage.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/populate.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/query.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/schemaoptions.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/schematypes.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/session.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/types.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/utility.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/validation.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/inferschematype.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/inferhydrateddoctype.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/inferrawdoctype.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/virtuals.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/augmentations.d.ts","./node_modules/.pnpm/mongoose@9.2.4/node_modules/mongoose/types/index.d.ts","./lib/mongoose.ts","./lib/models/chapter.ts","./app/api/mod/chuong/route.ts","./app/api/mod/chuong/[id]/route.ts","./app/api/mod/chuong/bulk-delete/route.ts","./app/api/mod/chuong/global-replace/route.ts","./app/api/mod/chuong/optimize/route.ts","./lib/models/editor-recommendation.ts","./app/api/mod/de-cu/route.ts","./node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/lib/block-text-builder.d.ts","./node_modules/.pnpm/@types+html-to-text@9.0.4/node_modules/@types/html-to-text/index.d.ts","./node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts","./node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/types.d.ts","./lib/utils.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/abort-handler.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/abort.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/auth.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/httpapikeyauth.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/identity/identity.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/response.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/command.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoint.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/feature-ids.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/logger.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/uri.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/http.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/util.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/middleware.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/httpsigner.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/identityproviderconfig.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/httpauthscheme.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/auth/index.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/exact.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/crypto.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/checksum.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/client.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/connection/config.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transfer.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/connection/manager.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/connection/pool.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/connection/index.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/eventstream.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/encode.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/endpointruleobject.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/errorruleobject.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/treeruleobject.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/rulesetobject.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/endpoints/index.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/extensions/defaultclientconfiguration.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/shapes.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/retry.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/extensions/retry.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/extensions/index.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/http/httphandlerinitialization.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/identity/apikeyidentity.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/identity/tokenidentity.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/identity/index.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/pagination.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/profile.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/serde.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/schema/traits.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/schema/schema.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/signature.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/stream.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/mutable.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/waiter.d.ts","./node_modules/.pnpm/@smithy+types@4.13.0/node_modules/@smithy/types/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+node-config-provider@4.3.11/node_modules/@smithy/node-config-provider/dist-types/fromenv.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/gethomedir.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/getprofilename.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfilepath.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/getssotokenfromfile.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/loadsharedconfigfiles.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/loadssosessiondata.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/parseknownfiles.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/externaldatainterceptor.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/readfile.d.ts","./node_modules/.pnpm/@smithy+shared-ini-file-loader@4.4.6/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+node-config-provider@4.3.11/node_modules/@smithy/node-config-provider/dist-types/fromsharedconfigfiles.d.ts","./node_modules/.pnpm/@smithy+node-config-provider@4.3.11/node_modules/@smithy/node-config-provider/dist-types/fromstatic.d.ts","./node_modules/.pnpm/@smithy+node-config-provider@4.3.11/node_modules/@smithy/node-config-provider/dist-types/configloader.d.ts","./node_modules/.pnpm/@smithy+node-config-provider@4.3.11/node_modules/@smithy/node-config-provider/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/constants.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/node_request_checksum_calculation_config_options.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/node_response_checksum_validation_config_options.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/resolveflexiblechecksumsconfig.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/configuration.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexiblechecksumsmiddleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexiblechecksumsinputmiddleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexiblechecksumsresponsemiddleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getflexiblechecksumsplugin.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-flexible-checksums@3.973.5/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-host-header@3.972.7/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/check-content-length-header.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-middleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-endpoint-middleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-expires-middleware.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/abort.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/auth.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/checksum.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/client.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/command.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/connection.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/identity.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/anonymousidentity.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/awscredentialidentity.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/loginidentity.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/tokenidentity.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/util.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/credentials.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/crypto.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/dns.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/encode.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/eventstream.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/function.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/http.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/logger.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/middleware.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/pagination.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/profile.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/request.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/response.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/retry.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/serde.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/shapes.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/signature.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/stream.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/token.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/transfer.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/uri.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/waiter.d.ts","./node_modules/.pnpm/@aws-sdk+types@3.973.5/node_modules/@aws-sdk/types/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/s3expressidentity.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/s3expressidentitycacheentry.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/s3expressidentitycache.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/s3expressidentityprovider.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/s3expressidentityproviderimpl.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/signaturev4base.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/signaturev4.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/constants.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/getcanonicalheaders.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/getcanonicalquery.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/getpayloadhash.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/moveheaderstoquery.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/preparerequest.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/credentialderivation.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/headerutil.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts","./node_modules/.pnpm/@smithy+signature-v4@5.3.11/node_modules/@smithy/signature-v4/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/signaturev4s3express.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/constants.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3expressmiddleware.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/httprequest.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/httpresponse.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/httphandler.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/extensions/httpextensionconfiguration.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/field.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/fields.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/isvalidhostname.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/types.d.ts","./node_modules/.pnpm/@smithy+protocol-http@5.3.11/node_modules/@smithy/protocol-http/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3expresshttpsigningmiddleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3configuration.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/throw-200-exceptions.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/validate-bucket-name.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.19/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-user-agent@3.972.20/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-user-agent@3.972.20/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts","./node_modules/.pnpm/@aws-sdk+middleware-user-agent@3.972.20/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusedualstackendpointconfigoptions.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/endpointsconfig/nodeusefipsendpointconfigoptions.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolveendpointsconfig.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/endpointsconfig/resolvecustomendpointsconfig.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/endpointsconfig/index.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regionconfig/config.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regionconfig/resolveregionconfig.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regionconfig/index.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvarianttag.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/endpointvariant.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/partitionhash.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/regionhash.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/getregioninfo.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/regioninfo/index.d.ts","./node_modules/.pnpm/@smithy+config-resolver@4.4.10/node_modules/@smithy/config-resolver/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+eventstream-serde-config-resolver@4.3.11/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/eventstreamserdeconfig.d.ts","./node_modules/.pnpm/@smithy+eventstream-serde-config-resolver@4.3.11/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointconfig.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getendpointfrominstructions.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toendpointv1.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/endpointmiddleware.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/getendpointplugin.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/resolveendpointrequiredconfig.d.ts","./node_modules/.pnpm/@smithy+middleware-endpoint@4.4.23/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/types.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/adaptiveretrystrategy.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/standardretrystrategy.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/configuredretrystrategy.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/defaultratelimiter.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/config.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/constants.d.ts","./node_modules/.pnpm/@smithy+util-retry@4.2.11/node_modules/@smithy/util-retry/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/types.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/standardretrystrategy.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/adaptiveretrystrategy.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/delaydecider.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/omitretryheadersmiddleware.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/retrydecider.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/retrymiddleware.d.ts","./node_modules/.pnpm/@smithy+middleware-retry@4.4.40/node_modules/@smithy/middleware-retry/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/client.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/blob/uint8arrayblobadapter.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/checksum/checksumstream.browser.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.browser.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/checksum/createchecksumstream.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/createbufferedreadable.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/getawschunkedencodingstream.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/headstream.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/splitstream.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts","./node_modules/.pnpm/@smithy+util-stream@4.5.17/node_modules/@smithy/util-stream/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getschemaserdeplugin.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/schema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/listschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/mapschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operationschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/structureschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/errorschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/normalizedschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/simpleschema.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translatetraits.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/typeregistry.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/event-streams/eventstreamserde.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serdecontext.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/httpprotocol.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/httpbindingprotocol.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/rpcprotocol.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/requestbuilder.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serde/fromstringshapedeserializer.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapedeserializer.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serde/tostringshapeserializer.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serde/httpinterceptingshapeserializer.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determinetimestampformat.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/command.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/constants.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/emitwarningifunsupportedversion.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/extensions/defaultextensionconfiguration.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/nooplogger.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/copydocumentwithtransform.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts","./node_modules/.pnpm/@smithy+uuid@1.1.2/node_modules/@smithy/uuid/dist-types/v4.d.ts","./node_modules/.pnpm/@smithy+uuid@1.1.2/node_modules/@smithy/uuid/dist-types/index.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/generateidempotencytoken.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/value/numericvalue.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts","./node_modules/.pnpm/@smithy+smithy-client@4.12.3/node_modules/@smithy/smithy-client/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/client/emitwarningifunsupportedversion.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/client/setcredentialfeature.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/client/setfeature.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/client/settokenfeature.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4aconfig.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4signer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/awssdksigv4asigner.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/node_auth_scheme_preference_options.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/resolveawssdksigv4config.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/aws_sdk/index.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/utils/getbearertokenenvkey.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/httpauthschemes/index.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/parsecborbody.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/cborcodec.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/smithyrpcv2cborprotocol.d.ts","./node_modules/.pnpm/@smithy+core@3.23.9/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/awssmithyrpcv2cborprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/configurableserdecontext.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonshapedeserializer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonshapeserializer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsoncodec.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsjsonrpcprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsjson1_0protocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsjson1_1protocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsrestjsonprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsexpectunion.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parsejsonbody.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/xmlshapeserializer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/xmlcodec.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/xmlshapedeserializer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/queryserializersettings.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/queryshapeserializer.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/awsqueryprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/awsec2queryprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/awsrestxmlprotocol.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parsexmlbody.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts","./node_modules/.pnpm/@aws-sdk+core@3.973.19/node_modules/@aws-sdk/core/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/endpoint/endpointparameters.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/auth/httpauthschemeprovider.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/abortmultipartuploadcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/completemultipartuploadcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/copyobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/createbucketcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/createbucketmetadataconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/createbucketmetadatatableconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/createmultipartuploadcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/createsessioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketanalyticsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketcorscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketencryptioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketintelligenttieringconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketinventoryconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketlifecyclecommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketmetadataconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketmetadatatableconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketmetricsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketownershipcontrolscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketpolicycommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketreplicationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebuckettaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletebucketwebsitecommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deleteobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deleteobjectscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deleteobjecttaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/deletepublicaccessblockcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketabaccommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketaccelerateconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketaclcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketanalyticsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketcorscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketencryptioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketintelligenttieringconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketinventoryconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketlifecycleconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketlocationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketloggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketmetadataconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketmetadatatableconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketmetricsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketnotificationconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketownershipcontrolscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketpolicycommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketpolicystatuscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketreplicationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketrequestpaymentcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbuckettaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketversioningcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getbucketwebsitecommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectaclcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectattributescommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectlegalholdcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectlockconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjectretentioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjecttaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getobjecttorrentcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/getpublicaccessblockcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/headbucketcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/headobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listbucketanalyticsconfigurationscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listbucketintelligenttieringconfigurationscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listbucketinventoryconfigurationscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listbucketmetricsconfigurationscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listbucketscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listdirectorybucketscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listmultipartuploadscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listobjectscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listobjectsv2command.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listobjectversionscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/listpartscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketabaccommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketaccelerateconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketaclcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketanalyticsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketcorscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketencryptioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketintelligenttieringconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketinventoryconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketlifecycleconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketloggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketmetricsconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketnotificationconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketownershipcontrolscommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketpolicycommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketreplicationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketrequestpaymentcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbuckettaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketversioningcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putbucketwebsitecommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjectaclcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjectlegalholdcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjectlockconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjectretentioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putobjecttaggingcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/putpublicaccessblockcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/renameobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/restoreobjectcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/selectobjectcontentcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/updatebucketmetadatainventorytableconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/updatebucketmetadatajournaltableconfigurationcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/updateobjectencryptioncommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/uploadpartcommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/uploadpartcopycommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/writegetobjectresponsecommand.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/auth/httpauthextensionconfiguration.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/extensionconfiguration.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/runtimeextensions.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/s3client.d.ts","./node_modules/.pnpm/@smithy+util-waiter@4.2.12/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts","./node_modules/.pnpm/@smithy+util-waiter@4.2.12/node_modules/@smithy/util-waiter/dist-types/createwaiter.d.ts","./node_modules/.pnpm/@smithy+util-waiter@4.2.12/node_modules/@smithy/util-waiter/dist-types/index.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/s3.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/commands/index.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/interfaces.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/listbucketspaginator.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/listdirectorybucketspaginator.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/listobjectsv2paginator.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/listpartspaginator.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/pagination/index.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitforbucketexists.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitforbucketnotexists.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitforobjectexists.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitforobjectnotexists.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/waiters/index.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/models/s3serviceexception.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts","./node_modules/.pnpm/@aws-sdk+client-s3@3.1006.0/node_modules/@aws-sdk/client-s3/dist-types/index.d.ts","./lib/r2.ts","./app/api/mod/epub/route.ts","./app/api/mod/series/route.ts","./app/api/mod/the-loai/route.ts","./app/api/mod/truyen/route.ts","./app/api/mod/truyen/[id]/route.ts","./app/api/mod/truyen/[id]/trash-words/route.ts","./app/api/mod/truyen/bulk/route.ts","./app/api/mod/truyen/missing/route.ts","./app/api/mod/upload-cover/route.ts","./app/api/truyen/[id]/chapters/route.ts","./app/api/truyen/[id]/comments/route.ts","./app/api/truyen/[id]/rate/route.ts","./app/api/truyen/suggest/route.ts","./app/api/user/bookmarks/route.ts","./lib/models/user-recommendation.ts","./app/api/user/recommendations/route.ts","./app/api/user/settings/route.ts","./app/uploads/covers/[filename]/route.ts","./node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.2.14_react@19.2.4/node_modules/@radix-ui/react-context/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_1181ea5061ec9212248424669240e4ec/node_modules/@radix-ui/react-primitive/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14___3d3960154a4c07d09bb90cb341135fc5/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-toast@1.2.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_4581e89c6ba13e4159ce65546c8b2a16/node_modules/@radix-ui/react-toast/dist/index.d.mts","./node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/types.d.ts","./node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.d.ts","./node_modules/.pnpm/lucide-react@0.564.0_react@19.2.4/node_modules/lucide-react/dist/lucide-react.d.ts","./components/ui/toast.tsx","./components/ui/use-toast.ts","./hooks/use-mobile.ts","./hooks/use-toast.ts","./lib/mod-ai-tools.ts","./lib/novel-status.ts","./lib/types.ts","./types/next-auth.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@next/font/dist/types.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","./node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/font/google/index.d.ts","./node_modules/.pnpm/next-themes@0.4.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-themes/dist/index.d.ts","./components/theme-provider.tsx","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/client/_utils.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/react/types.d.ts","./node_modules/.pnpm/next-auth@4.24.13_next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4__react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next-auth/react/index.d.ts","./lib/auth-context.tsx","./lib/bookmark-context.tsx","./lib/recommendation-context.tsx","./node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.14_react@19.2.4/node_modules/@radix-ui/react-slot/dist/index.d.mts","./components/ui/button.tsx","./components/ui/input.tsx","./node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_f62f3af4ca2ba305a7aecf04c8534604/node_modules/@radix-ui/react-focus-scope/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_7668895bec2444446faa4e0f4eb5244b/node_modules/@radix-ui/react-portal/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_779045218dc2799d336e7197abef9d38/node_modules/@radix-ui/react-dialog/dist/index.d.mts","./components/ui/sheet.tsx","./node_modules/.pnpm/@radix-ui+react-arrow@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_e05f2c19a58a99fddf374207b5e3778c/node_modules/@radix-ui/react-arrow/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+rect@1.1.1/node_modules/@radix-ui/rect/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-popper@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_13e0521d8aea7ebfbfb8bee1fb615c05/node_modules/@radix-ui/react-popper/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_4eeb29c998b846c35358e2f929e7490e/node_modules/@radix-ui/react-roving-focus/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-menu@2.1.16_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_73ff7391b7be14d4dbff03af4dbac090/node_modules/@radix-ui/react-menu/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-dropdown-menu@2.1.16_@types+react-dom@19.2.3_@types+react@19.2.14__@typ_73af8346b6b2e99f5d79f55f5dac0b34/node_modules/@radix-ui/react-dropdown-menu/dist/index.d.mts","./components/ui/dropdown-menu.tsx","./components/theme-toggle.tsx","./components/header.tsx","./components/footer.tsx","./node_modules/.pnpm/sonner@1.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/sonner/dist/index.d.ts","./app/layout.tsx","./components/home-hot-carousel.tsx","./components/home-recommendation-boards.tsx","./app/page.tsx","./app/dang-nhap/page.tsx","./app/mod/collapsible-sidebar.tsx","./app/mod/layout.tsx","./app/mod/page.tsx","./app/mod/ai-tool/page.tsx","./components/ui/textarea.tsx","./components/ui/dialog.tsx","./node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_2ad0945e3cb98dc5bbfaaf29c105e977/node_modules/@radix-ui/react-tabs/dist/index.d.mts","./components/ui/tabs.tsx","./node_modules/.pnpm/@radix-ui+react-select@2.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_53894a32562cb9eeb6aef8b357a4f4e3/node_modules/@radix-ui/react-select/dist/index.d.mts","./components/ui/select.tsx","./node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_cc2a70da647cefa06e7f90fd9b481f08/node_modules/@radix-ui/react-radio-group/dist/index.d.mts","./components/ui/radio-group.tsx","./node_modules/.pnpm/@radix-ui+react-primitive@2.1.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_0243fb2db8a1fb85ca77b8d9e5c2d650/node_modules/@radix-ui/react-primitive/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-label@2.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_55fa612a976b7bdfbf4dcdd93d861aab/node_modules/@radix-ui/react-label/dist/index.d.mts","./components/ui/label.tsx","./node_modules/.pnpm/@radix-ui+react-context@1.1.3_@types+react@19.2.14_react@19.2.4/node_modules/@radix-ui/react-context/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-progress@1.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_7258c0b550570cef5cd6f2d2227aa6b9/node_modules/@radix-ui/react-progress/dist/index.d.mts","./components/ui/progress.tsx","./node_modules/.pnpm/mammoth@1.11.0/node_modules/mammoth/lib/index.d.ts","./app/mod/chuong/chapter-client.tsx","./app/mod/chuong/page.tsx","./app/mod/chuong/[id]/editor-client.tsx","./app/mod/chuong/[id]/page.tsx","./app/mod/de-cu/recommendation-client.tsx","./app/mod/de-cu/page.tsx","./app/mod/series/series-client.tsx","./app/mod/series/page.tsx","./app/mod/thieu-thong-tin/missing-fields-client.tsx","./app/mod/thieu-thong-tin/page.tsx","./app/mod/truyen/novel-client.tsx","./app/mod/truyen/page.tsx","./app/the-loai/page.tsx","./components/novel-card.tsx","./app/the-loai/[slug]/page.tsx","./app/tim-kiem/page.tsx","./app/truyen/[slug]/novel-detail-actions.tsx","./components/ui/badge.tsx","./components/genre-badge.tsx","./components/star-rating.tsx","./components/chapter-list.tsx","./components/comment-section.tsx","./app/truyen/[slug]/page.tsx","./app/truyen/[slug]/[chapterid]/chapter-reader-progress.tsx","./node_modules/.pnpm/@radix-ui+react-popover@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_8b5332f8e883134e9d9ab2856fc4395d/node_modules/@radix-ui/react-popover/dist/index.d.mts","./components/ui/popover.tsx","./components/reading-settings.tsx","./node_modules/.pnpm/@radix-ui+react-slider@1.3.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_c6a3fae91eb6750caf661d179680cb4a/node_modules/@radix-ui/react-slider/dist/index.d.mts","./components/ui/slider.tsx","./components/tts-player.tsx","./components/reader-toc.tsx","./components/reader-fab.tsx","./app/truyen/[slug]/[chapterid]/page.tsx","./app/tu-sach/page.tsx","./node_modules/.pnpm/@radix-ui+react-collapsible@1.1.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types_10a2c6d0ac3bcc7422bd3020fe61e076/node_modules/@radix-ui/react-collapsible/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-accordion@1.2.12_@types+react-dom@19.2.3_@types+react@19.2.14__@types+r_8b3df72274e0fa0cff1629993ef7cc33/node_modules/@radix-ui/react-accordion/dist/index.d.mts","./components/ui/accordion.tsx","./node_modules/.pnpm/@radix-ui+react-alert-dialog@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@type_d492cfbed6c88f7a3980b921a627d48d/node_modules/@radix-ui/react-alert-dialog/dist/index.d.mts","./components/ui/alert-dialog.tsx","./components/ui/alert.tsx","./node_modules/.pnpm/@radix-ui+react-aspect-ratio@1.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types_93c53edbfaac53d9d2b10dc74f6122b5/node_modules/@radix-ui/react-aspect-ratio/dist/index.d.mts","./components/ui/aspect-ratio.tsx","./node_modules/.pnpm/@radix-ui+react-avatar@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_5e99ccf265cbb36ef8e7150da8f5489e/node_modules/@radix-ui/react-avatar/dist/index.d.mts","./components/ui/avatar.tsx","./components/ui/breadcrumb.tsx","./node_modules/.pnpm/@radix-ui+react-separator@1.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_aa2d5d85a81bb702303f0548763b9797/node_modules/@radix-ui/react-separator/dist/index.d.mts","./components/ui/separator.tsx","./components/ui/button-group.tsx","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/constants/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/date/mini.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tz/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzoffset/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzscan/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/tzname/index.d.ts","./node_modules/.pnpm/@date-fns+tz@1.4.1/node_modules/@date-fns/tz/index.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constants.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/types.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/fp/types.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/types.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/add.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addbusinessdays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/adddays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addhours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addisoweekyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addmilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addmonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/addyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/areintervalsoverlapping.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/clamp.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/closestindexto.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/closestto.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/compareasc.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/comparedesc.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructfrom.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/constructnow.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/daystoweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinbusinessdays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendardays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendarisoweekyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendarisoweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendarmonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendarquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendarweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceincalendaryears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceindays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinhours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinisoweekyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinmilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinmonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/differenceinyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachdayofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachhourofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachminuteofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachmonthofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachquarterofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachweekofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachweekendofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachweekendofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachweekendofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/eachyearofinterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofdecade.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofhour.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofminute.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofsecond.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endoftoday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endoftomorrow.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/endofyesterday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/formatters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/longformatters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/format.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatdistance.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatdistancestrict.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatdistancetonow.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatdistancetonowstrict.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatduration.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatiso.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatiso9075.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatisoduration.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatrfc3339.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatrfc7231.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/formatrelative.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/fromunixtime.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdate.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdayofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdaysinmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdaysinyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdecade.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/defaultoptions.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getdefaultoptions.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/gethours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getisoday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getisoweeksinyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getmilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getoverlappingdaysinintervals.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/gettime.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getunixtime.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getweekofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getweeksinmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/getyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/hourstomilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/hourstominutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/hourstoseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/interval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/intervaltoduration.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/intlformat.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/intlformatdistance.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isafter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isbefore.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isdate.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isequal.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isexists.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isfirstdayofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isfriday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isfuture.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/islastdayofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isleapyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/ismatch.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/ismonday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/ispast.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issamehour.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameminute.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issamemonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issamequarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issamesecond.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issameyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issaturday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/issunday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthishour.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthisisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthisminute.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthismonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthisquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthissecond.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthisweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthisyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isthursday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/istoday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/istomorrow.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/istuesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isvalid.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/iswednesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isweekend.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/iswithininterval.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/isyesterday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofdecade.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lastdayofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/_lib/format/lightformatters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/lightformat.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/max.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/milliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/millisecondstohours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/millisecondstominutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/millisecondstoseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/min.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/minutestohours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/minutestomilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/minutestoseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/monthstoquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/monthstoyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextfriday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextmonday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextsaturday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextsunday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextthursday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nexttuesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/nextwednesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parse/_lib/types.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parse/_lib/setter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parse/_lib/parser.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parse/_lib/parsers.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parse.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parseiso.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/parsejson.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previousday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previousfriday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previousmonday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previoussaturday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previoussunday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previousthursday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previoustuesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/previouswednesday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/quarterstomonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/quarterstoyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/roundtonearesthours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/roundtonearestminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/secondstohours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/secondstomilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/secondstominutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/set.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setdate.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setdayofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setdefaultoptions.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/sethours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setisoday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setmilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/setyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofdecade.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofhour.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofisoweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofisoweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofminute.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofmonth.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofquarter.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofsecond.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startoftoday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startoftomorrow.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofweek.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofweekyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofyear.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/startofyesterday.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/sub.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subbusinessdays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subdays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subhours.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subisoweekyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/submilliseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subminutes.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/submonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subseconds.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subweeks.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/subyears.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/todate.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/transpose.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/weekstodays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/yearstodays.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/yearstomonths.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/yearstoquarters.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/index.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/af.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar-dz.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar-eg.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar-ma.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar-sa.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ar-tn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/az.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/be.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/be-tarask.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/bg.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/bn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/bs.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ca.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ckb.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/cs.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/cy.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/da.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/de.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/de-at.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/el.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-au.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-ca.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-gb.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-ie.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-in.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-nz.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-us.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/en-za.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/eo.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/es.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/et.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/eu.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fa-ir.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fi.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fr.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fr-ca.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fr-ch.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/fy.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/gd.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/gl.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/gu.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/he.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/hi.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/hr.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ht.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/hu.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/hy.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/id.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/is.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/it.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/it-ch.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ja.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ja-hira.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ka.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/kk.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/km.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/kn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ko.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/lb.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/lt.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/lv.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/mk.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/mn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ms.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/mt.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/nb.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/nl.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/nl-be.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/nn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/oc.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pl.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/pt-br.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ro.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ru.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/se.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sk.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sl.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sq.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sr.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sr-latn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/sv.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ta.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/te.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/th.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/tr.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/ug.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/uk.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/uz.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/uz-cyrl.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/vi.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/zh-cn.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/zh-hk.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale/zh-tw.d.ts","./node_modules/.pnpm/date-fns@4.1.0/node_modules/date-fns/locale.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/button.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/captionlabel.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/chevron.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/monthcaption.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/week.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labeldaybutton.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelgrid.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelgridcell.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelmonthdropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelnav.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelnext.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelprevious.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelweekday.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelweeknumber.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelweeknumberheader.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/labelyeardropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/labels/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/ui.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/calendarweek.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/calendarmonth.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/types/props.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/types/selection.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/usedaypicker.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/types/deprecated.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/types/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/day.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/daybutton.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/dropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/dropdownnav.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/footer.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/month.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/monthgrid.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/months.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/monthsdropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/nav.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/nextmonthbutton.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/option.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/previousmonthbutton.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/root.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/select.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/weekday.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/weekdays.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/weeknumber.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/weeknumberheader.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/weeks.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/yearsdropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/components/custom-components.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatcaption.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatday.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatmonthdropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatweekdayname.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatweeknumber.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatweeknumberheader.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/formatyeardropdown.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/formatters/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/types/shared.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/locale/en-us.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/datelib.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/calendarday.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/classes/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/daypicker.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/getdefaultclassnames.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/helpers/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/addtorange.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/datematchmodifiers.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangecontainsdayofweek.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangecontainsmodifiers.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeincludesdate.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/rangeoverlaps.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/typeguards.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/utils/index.d.ts","./node_modules/.pnpm/react-day-picker@9.13.2_react@19.2.4/node_modules/react-day-picker/dist/esm/index.d.ts","./components/ui/calendar.tsx","./components/ui/card.tsx","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/alignment.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/noderects.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/axis.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slidestoscroll.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/limit.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrollcontain.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/dragtracker.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/utils.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/animations.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/counter.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/eventhandler.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/eventstore.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/percentofview.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/resizehandler.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/vector1d.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrollbody.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrollbounds.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrolllooper.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrollprogress.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slideregistry.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrolltarget.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/scrollto.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slidefocus.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/translate.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slidelooper.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slideshandler.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/slidesinview.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/engine.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/optionshandler.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/plugins.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/emblacarousel.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/draghandler.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/components/options.d.ts","./node_modules/.pnpm/embla-carousel@8.6.0/node_modules/embla-carousel/esm/index.d.ts","./node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.4/node_modules/embla-carousel-react/esm/components/useemblacarousel.d.ts","./node_modules/.pnpm/embla-carousel-react@8.6.0_react@19.2.4/node_modules/embla-carousel-react/esm/index.d.ts","./components/ui/carousel.tsx","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/container/surface.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/container/layer.d.ts","./node_modules/.pnpm/@types+d3-time@3.0.4/node_modules/@types/d3-time/index.d.ts","./node_modules/.pnpm/@types+d3-scale@4.0.9/node_modules/@types/d3-scale/index.d.ts","./node_modules/.pnpm/victory-vendor@36.9.2/node_modules/victory-vendor/d3-scale.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/xaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/yaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/types.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/defaultlegendcontent.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/payload/getuniqpayload.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/legend.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/defaulttooltipcontent.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/tooltip.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/responsivecontainer.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/cell.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/text.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/label.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/labellist.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/component/customized.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/sector.d.ts","./node_modules/.pnpm/@types+d3-path@3.1.1/node_modules/@types/d3-path/index.d.ts","./node_modules/.pnpm/@types+d3-shape@3.1.8/node_modules/@types/d3-shape/index.d.ts","./node_modules/.pnpm/victory-vendor@36.9.2/node_modules/victory-vendor/d3-shape.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/curve.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/rectangle.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/polygon.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/dot.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/cross.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/symbols.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/polargrid.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/polarradiusaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/polarangleaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/pie.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/radar.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/polar/radialbar.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/brush.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/ifoverflowmatches.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/referenceline.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/referencedot.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/referencearea.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/cartesianaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/cartesiangrid.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/line.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/area.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/barutils.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/bar.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/zaxis.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/errorbar.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/cartesian/scatter.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/getlegendprops.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/chartutils.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/accessibilitymanager.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/types.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/generatecategoricalchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/linechart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/barchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/piechart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/treemap.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/sankey.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/radarchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/scatterchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/areachart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/radialbarchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/composedchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/sunburstchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/shape/trapezoid.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/numberaxis/funnel.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/chart/funnelchart.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/util/global.d.ts","./node_modules/.pnpm/recharts@2.15.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/recharts/types/index.d.ts","./components/ui/chart.tsx","./node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_a9bfe74df417688e01ae6068318bf0dd/node_modules/@radix-ui/react-checkbox/dist/index.d.mts","./components/ui/checkbox.tsx","./components/ui/collapsible.tsx","./node_modules/.pnpm/cmdk@1.1.1_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@19.2.14_react-dom_774a6dff9510bebce6a2343405a1ca59/node_modules/cmdk/dist/index.d.ts","./components/ui/command.tsx","./node_modules/.pnpm/@radix-ui+react-context-menu@2.2.16_@types+react-dom@19.2.3_@types+react@19.2.14__@type_7ddebea395c65d3c4d3683b445765102/node_modules/@radix-ui/react-context-menu/dist/index.d.mts","./components/ui/context-menu.tsx","./node_modules/.pnpm/vaul@1.1.2_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@19.2.14_react-dom_724ef6c3f0fbc86fbf11d8898c60a0ec/node_modules/vaul/dist/index.d.mts","./components/ui/drawer.tsx","./components/ui/empty.tsx","./components/ui/field.tsx","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/constants.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/utils/createsubject.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/events.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/path/common.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/path/eager.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/path/index.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/fieldarray.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/resolvers.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/form.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/utils.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/fields.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/errors.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/validator.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/controller.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/watch.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/types/index.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/controller.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/form.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/formstatesubscribe.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/logic/appenderrors.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/logic/createformcontrol.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/logic/index.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/usecontroller.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/usefieldarray.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/useform.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/useformcontext.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/useformstate.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/usewatch.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/utils/get.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/utils/set.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/utils/index.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/watch.d.ts","./node_modules/.pnpm/react-hook-form@7.71.1_react@19.2.4/node_modules/react-hook-form/dist/index.d.ts","./components/ui/form.tsx","./node_modules/.pnpm/@radix-ui+react-hover-card@1.1.15_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_7ad81962fbdf173de4beb0078b2863c0/node_modules/@radix-ui/react-hover-card/dist/index.d.mts","./components/ui/hover-card.tsx","./components/ui/input-group.tsx","./node_modules/.pnpm/input-otp@1.4.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/input-otp/dist/index.d.ts","./components/ui/input-otp.tsx","./components/ui/item.tsx","./components/ui/kbd.tsx","./node_modules/.pnpm/@radix-ui+react-menubar@1.1.16_@types+react-dom@19.2.3_@types+react@19.2.14__@types+rea_2538d85c615acf13b2f2294bd07156f9/node_modules/@radix-ui/react-menubar/dist/index.d.mts","./components/ui/menubar.tsx","./node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.14__@ty_fa89646d7248b32d1762bf88948f6339/node_modules/@radix-ui/react-visually-hidden/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-navigation-menu@1.2.14_@types+react-dom@19.2.3_@types+react@19.2.14__@t_7563284ec2dc0b07b96e6ca399b56630/node_modules/@radix-ui/react-navigation-menu/dist/index.d.mts","./components/ui/navigation-menu.tsx","./components/ui/pagination.tsx","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/panel.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/types.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/panelgroup.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/panelresizehandleregistry.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/panelresizehandle.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/constants.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/assert.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/csp.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/cursor.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getpanelelement.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getpanelelementsforgroup.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getpanelgroupelement.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getresizehandleelement.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getresizehandleelementindex.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getresizehandleelementsforgroup.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/dom/getresizehandlepanelids.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/rects/types.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/rects/getintersectingrectangle.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/utils/rects/intersects.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/declarations/src/index.d.ts","./node_modules/.pnpm/react-resizable-panels@2.1.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/react-resizable-panels.cjs.d.mts","./components/ui/resizable.tsx","./node_modules/.pnpm/@radix-ui+react-scroll-area@1.2.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types_155614c2fe5222bb9b221068b09efefc/node_modules/@radix-ui/react-scroll-area/dist/index.d.mts","./components/ui/scroll-area.tsx","./components/ui/skeleton.tsx","./node_modules/.pnpm/@radix-ui+react-tooltip@1.2.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_9074d9fb06315b089b2bee17c4c65951/node_modules/@radix-ui/react-tooltip/dist/index.d.mts","./components/ui/tooltip.tsx","./components/ui/sidebar.tsx","./components/ui/sonner.tsx","./components/ui/spinner.tsx","./node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react_e3738c514c10df2ef7e24af5ee461853/node_modules/@radix-ui/react-switch/dist/index.d.mts","./components/ui/switch.tsx","./components/ui/table.tsx","./components/ui/toaster.tsx","./node_modules/.pnpm/@radix-ui+react-toggle@1.1.10_@types+react-dom@19.2.3_@types+react@19.2.14__@types+reac_63d136f11f5f79b42c1373b9162ffc86/node_modules/@radix-ui/react-toggle/dist/index.d.mts","./node_modules/.pnpm/@radix-ui+react-toggle-group@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_0c124bdbaa351e80a671757a596f81ce/node_modules/@radix-ui/react-toggle-group/dist/index.d.mts","./components/ui/toggle.tsx","./components/ui/toggle-group.tsx","./components/ui/use-mobile.tsx","./.next/types/routes.d.ts","./.next/types/validator.ts","./.next/dev/types/cache-life.d.ts","./.next/dev/types/validator.ts"],"fileIdsList":[[93,141,158,159,460,461,462,463,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,504,507,510,592,593,594,595,596,597,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,631,632,633,634,635,637,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1141,1142,1143,1188,1191,1192,1194,1195,1196,1213,1215,1217,1219,1221,1223,1224,1226,1227,1234,1244,1245],[93,141,158,159,269,504,507,592,593,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,631,632,634,635,637,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1143,1188,1191,1192,1194,1195,1213,1215,1217,1219,1221,1223,1224,1226,1227,1234,1244,1245,1901],[93,141,158,159,269,587,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,504,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,636],[93,141,153,158,159,162,163,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,639,642,1125],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,1125],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,642,1125],[93,141,158,159,269,504,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1125],[93,141,158,159,269,504,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630],[93,141,158,159,269,504,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,504,586,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,1140],[81,93,141,158,159,269,482,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1167,1171],[93,141,158,159,269,508,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1161,1163,1167,1168,1169,1185,1186,1187],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187],[81,93,141,158,159,269,482,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187,1197,1198],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1214],[81,93,141,158,159,269,482,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187,1197,1198,1200,1202,1204,1207,1210,1211],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1212],[81,93,141,158,159,269,482,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1216],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1193],[93,141,158,159,269,482,587,590,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1158],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1218],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187,1197],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1172,1187,1197],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1220],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1155,1156,1171,1172,1187,1197,1198,1210],[93,141,158,159,269,492,586,591,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1222],[93,141,158,159,269,482,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,636,642,1140,1150,1189,1190],[93,141,158,159,269,482,492,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1225],[93,141,158,159,269,482,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150],[93,141,158,159,269,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1172,1225],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1167,1168],[93,141,158,159,269,482,492,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,1150,1171,1233,1235,1243],[93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1167,1168,1169,1171,1187],[93,141,158,159,269,482,492,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,629,630,642,1150,1156,1228,1230,1231,1232,1233],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1156,1167,1168,1169,1171],[93,141,153,158,159,163,269,504,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1157],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1157,1167,1171,1197,1200],[93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150],[93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1229],[81,93,141,158,159,269,482,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1167,1171,1172,1176,1183,1184],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1156],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171],[93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1156],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1171,1237,1238,1241,1242],[81,93,141,158,159,269,482,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1176],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1171,1237],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1162],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1150,1162,1171],[81,93,141,158,159,269,492,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1171,1202,1240],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1247],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1171,1249],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1252],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1254],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1170],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1170],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1170,1258],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1171,1693],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1171,1731],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1802],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1804],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1246],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1198,1807],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1809],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1175],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1811],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1182],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1207,1258],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1170,1206,1207,1847],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1849],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1171,1172,1197],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1852],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1170,1258],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1206],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1856],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1150,1859],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1171],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1236],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1209],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1203],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1882],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1884],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150,1201],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1257],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1150,1153,1170,1171,1172,1176,1258,1886,1888],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1239],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1162,1187],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1150],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1892],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1199],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1147,1149,1150],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1151,1154],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1897,1898],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1149,1896],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,642,1887],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1151],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1157,1166],[93,141,158,159,269,587,588,589,590,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1157,1167],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,515,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,163,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1124],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1167],[93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,640,641],[93,141,158,159,508,509,510,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,538,540,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,521,522,523,524,525,527,530,538,539,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,527,530,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,521,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,526,530,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,520,526,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,519,528,530,539,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,532,538,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,534,535,538,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,528,530,533,536,537,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,536,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,518,521,526,530,534,538,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,530,538,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,517,518,519,520,526,527,529,538,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,515,539,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,990],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,988,989,1104],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,849,946,992,1104],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1093,1094,1095,1096,1097,1098,1099,1100],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,849,946,992,1092,1104],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,849,946,1092,1104],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,784,804,814,1101],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,989,991,992,1092,1102,1103,1104,1108,1109,1110,1116,1121,1122,1123],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,946,991,1122],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,991],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,991,992],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,946],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1111,1112,1113,1114,1115],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,1104],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,1058,1111],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,1059,1111],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,1062,1111],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,1064,1111],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1102],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1093,1094,1095,1096,1097,1098,1099,1100,1104,1107],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,739,740,784,804,814,820,823,838,840,849,866,946,989,990,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1093,1094,1095,1096,1097,1098,1099,1100,1103],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,897],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1117,1118,1119,1120],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1052,1104,1107],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1053,1104,1107],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,951,959,987],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,947,948,949,950],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,784],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,953],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,952],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,952,953,954,955,956],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,729],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,729,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,784,801,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,957,958],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,965],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,966,967,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,971,972],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,911,971],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,968,969,970],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,968,971],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,897,968,971],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,983],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,911,980,982],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,968,981],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,911,979],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,968,978,980],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,968,979],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,730,733,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,734,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,734,735,736,737,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,730,731,732,733,735,738],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,729,730],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,730,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,741,742,743,744,816,817,818,819],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,742,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,786],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,785],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,784,785,787,788],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,814],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,784,785,788,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,785,786,787,788,789,802,803,804,815],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,784,785],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,816],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,817],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,821,822],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,784,804,821],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,758,759,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,752],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,754,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,752,753,755,756,757],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,745,746,747,748,749,750,751,754,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,758,759],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1260],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1261],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1260,1261,1262,1263,1264,1265,1266],[93,141,158,159,513,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,512,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,514,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1246],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1175],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1145],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1205],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1205,1208],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1181],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146,1173,1174],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146,1174,1179],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146,1173,1174,1179,1180],[81,93,141,158,159,269,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1180,1181],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146,1858],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146,1173,1174,1179],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1177,1178],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1180],[81,85,93,141,158,159,192,193,194,195,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1146],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1144,1145,1180,1896],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,824,825,826,827],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,826],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,828,831,837],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,829,830],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,832],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,834,835],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,834,835,836],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,833],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,911],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,960,961,962,963,964],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,814,961],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,897,911,963],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,898],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,879],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,814,897,901],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,897,899,900],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,880,881,900,901,902,903,904,905,906,907,908,909,910],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,897,901],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,900],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,908],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,882,884,885,886,887,888,889,890,891,892,893,894,895,896],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,883],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,890],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,885],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,891],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,936],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,933,934,937,938,939,940,941,942,943,944],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,839],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,841,842],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,843,844],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,841,842,845,846,847,848],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,857,859],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,859,860,861,862,863,864,865],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,861],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,858],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,713,726,727,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,725,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,713,726,727,728],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,807],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,808],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,810],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,805,806],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,805,806,807,809,810,811,812,813],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,714,715,716,717,719,720,721,722,723,724],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,718,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,719,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,790,791,792,793,794,795,796,797,798,799,800],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,790,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,911],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,849],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,867],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,921,922],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,923],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,867,912,913,914,915,916,917,918,919,920,924,925,926,927,928,929,930,931,932,945],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,644],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,643],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,647,656,657,658],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,656,659],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,647,654],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,647,659],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,645,646,657,658,659,660],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,663],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,665],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,649,655,656],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,656],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,668,670,671],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,668,669],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,673],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,645],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,650,675],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,675],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,675,676,677,678,679],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,678],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,652],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,675,676,677],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,654,656],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,665,666],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,681],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,681,685],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,681,682,685,686],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,655,684],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,662],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,644,653],[93,141,155,157,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,652,654],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,647],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,647,689,690,691],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,644,648,649,650,651,652,653,654,655,656,661,664,665,666,667,669,672,673,674,680,683,684,687,688,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,708,709,710,711],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,645,649,650,651,652,655,659],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,649,667],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,683],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,650,656,695,697,699],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,650,656,695,696,697,698],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,699],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,654,655,669,699],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,654],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,654,673],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,655,665,666],[93,141,155,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,663,695],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,648,649,705,706],[93,141,155,156,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,649,654,667,695,704,705,706,707],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,649,667,683],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,654],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,850],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804,852],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,850],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,850,851,852,853,854,855,856],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,712,804],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,870],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,869,871],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,868,869,872,873,874,875,876,877,878],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1105],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1105,1106],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,935],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1735],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1753],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,638],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,639],[93,138,139,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,158,159,176,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,142,147,152,158,159,161,173,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,142,143,152,158,159,161,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[88,89,90,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,144,158,159,185,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,145,146,153,158,159,162,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,158,159,173,181,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,147,149,152,158,159,161,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,148,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,149,150,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,151,152,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,152,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,153,154,158,159,173,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,153,154,158,159,168,173,176,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,134,141,149,152,155,158,159,161,173,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,153,155,156,158,159,161,173,181,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,157,158,159,173,181,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[91,92,93,94,95,96,97,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,160,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,149,152,158,159,161,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,162,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,163,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,164,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,166,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,167,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,168,169,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,168,170,185,187,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,153,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,173,174,176,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,175,176,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,173,174,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,176,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,177,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,138,141,158,159,173,178,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,179,180,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,179,180,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,158,159,161,173,181,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,182,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,161,183,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,158,159,185,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,173,186,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,160,187,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,188,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,134,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,134,141,152,154,158,159,164,173,176,184,186,187,189,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,173,190,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,85,93,141,158,159,192,193,194,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[81,85,93,141,158,159,192,193,194,195,412,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[81,85,93,141,158,159,192,193,195,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[81,93,141,158,159,196,412,413,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,196,412,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,85,93,141,158,159,193,194,195,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[81,85,93,141,158,159,192,194,195,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[79,80,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,640,1148],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,640],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1175],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1269,1271],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1269],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1335,1336],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1338],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1339],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1356],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1433,1434,1435,1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451,1452,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1523,1524],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1432],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1269,1526,1527,1528,1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1336,1456],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1269,1453,1454],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1455],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1271,1453],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1268,1269,1270],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1729],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1730],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1703,1723],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1697],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1698,1702,1703,1704,1705,1706,1708,1710,1711,1716,1717,1726],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1698,1703],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1706,1723,1725,1728],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1697,1698,1699,1700,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1727,1728],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1726],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1696,1698,1699,1701,1709,1718,1721,1722,1727],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1703,1728],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1724,1726,1728],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1697,1698,1703,1706,1726],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1710],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1700,1708,1710,1711],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1700],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1700,1710],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1704,1705,1706,1710,1711,1716],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1706,1707,1711,1715,1717,1726],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1698,1710,1719],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1699,1700,1701],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1706,1726],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1706],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1697,1698],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1698],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1702],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1706,1711,1723,1724,1725,1726,1728],[93,141,158,159,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,541,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,541,551,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,149,152,158,159,161,173,181,598,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628],[93,141,158,159,599,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,598,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628],[93,141,158,159,600,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,599,600,601,602,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,173,600,601,602,603,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,152,158,159,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,609,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,598,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,619,620,621,622,623,624,625,626,627,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,620,621,622,623,624,625,626,628],[93,141,158,159,599,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,628],[93,141,158,159,539,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,155,158,159,191,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,578,585,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,504,508,585,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,539,540,574,581,583,584,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,579,585,586,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,504,508,582,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,191,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,579,581,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,581,585,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,581,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,576,577,580,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,573,574,575,581,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[81,93,141,158,159,581,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158,1164,1165],[81,93,141,158,159,581,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158],[93,141,158,159,458,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,201,203,207,218,408,438,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,213,214,215,217,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,250,252,254,255,258,451,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,207,209,210,211,241,336,408,428,429,437,451,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,214,306,417,426,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,197,306,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,260,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,259,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,406,417,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,374,386,426,445,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,317,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,431,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,430,431,432,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,430,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[87,93,141,155,158,159,197,203,207,210,212,214,218,219,232,233,260,336,347,427,438,451,455,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,201,203,216,250,251,256,257,451,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,216,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,201,233,361,451,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,216,217,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,253,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,219,428,436,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,167,269,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,269,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,378,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,304,314,315,446,483,490,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,303,423,484,485,486,487,489,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,422,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,422,423,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,241,306,307,311,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,306,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,306,310,312,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,306,307,308,309,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,488,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,204,477,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,216,296,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,216,438,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,294,298,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,295,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1159],[81,85,93,141,155,158,159,191,192,193,194,195,196,455,499,500,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[93,141,155,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,207,240,292,337,358,360,433,434,438,451,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,232,435,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,455,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,202,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,363,376,385,395,397,445,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,167,363,376,394,395,396,445,505,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,388,389,390,391,392,393,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,390,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,394,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,267,268,269,271,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,261,262,263,264,270,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,267,270,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,265,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,266,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,269,295,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,269,456,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,269,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,337,440,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,440,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,452,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,382,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,381,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,242,306,323,360,369,372,374,375,416,445,448,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,288,306,403,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,374,445,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,374,379,380,382,383,384,385,386,387,398,399,400,401,402,404,405,445,446,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,368,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,204,240,243,264,289,290,337,347,358,359,416,439,451,452,453,455,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,445,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,214,290,347,371,439,441,442,443,444,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,374,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,240,277,323,364,365,366,367,368,369,370,372,373,445,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,277,278,364,452,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,214,337,347,360,439,445,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,451,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,173,448,452,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,184,197,207,216,242,243,245,274,279,284,288,289,290,292,321,323,325,328,330,333,334,335,336,358,360,438,439,446,448,451,452,453,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,173,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,204,205,212,448,449,450,455,457,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,201,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,273,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,173,184,235,258,260,261,262,263,264,271,272,506,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,167,184,197,235,250,283,284,285,321,322,323,328,336,337,343,346,348,358,360,439,446,448,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,212,219,232,336,347,439,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,184,204,207,323,341,448,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,362,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,273,344,345,355,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,448,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,369,371,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,290,323,438,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,246,250,322,328,343,346,350,448,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,219,232,250,351,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,203,245,353,438,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,184,264,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,216,244,245,246,255,273,352,354,438,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[87,93,141,155,158,159,290,357,455,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,320,358,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,184,207,218,219,232,242,243,279,283,284,285,289,321,322,323,325,337,338,340,342,358,360,438,439,446,447,448,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,173,219,343,349,355,448,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,222,223,224,225,226,227,228,229,230,231,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,274,329,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,331,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,329,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,331,332,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,207,210,240,241,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,202,204,242,288,289,290,291,319,358,448,453,455,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,167,184,206,241,291,323,369,439,447,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,364,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,365,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,306,336,416,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,366,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,234,238,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,207,234,242,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,237,238,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,239,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,234,235,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,234,286,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,234,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,274,327,447,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,326,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,235,446,447,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,324,447,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,235,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,416,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,207,236,242,290,306,323,357,360,363,369,376,377,407,408,411,415,438,448,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,299,302,304,305,314,315,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,194,196,269,409,410,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,194,196,269,409,410,414,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,425,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,214,278,290,357,360,374,382,386,418,419,420,421,423,424,427,438,445,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,314,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,319,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,319,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,242,287,292,316,318,357,448,455,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,299,300,301,302,304,305,314,315,456,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[87,93,141,155,158,159,167,184,234,235,243,289,290,323,355,356,358,438,439,448,451,452,455,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,278,280,283,439,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,274,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,277,374,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,276,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,278,279,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,275,277,451,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,155,158,159,206,278,280,281,282,451,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,306,313,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,199,200,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,204,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,303,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,87,93,141,158,159,289,290,455,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,204,477,478,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,298,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,167,184,202,257,293,295,297,457,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,216,446,452,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,339,446,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,153,155,158,159,167,201,202,252,298,455,456,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,93,141,158,159,192,193,194,195,196,455,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[81,82,83,84,85,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,247,248,249,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,247,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[81,85,93,141,155,157,158,159,167,191,192,193,194,195,196,197,202,243,350,394,453,454,457,501,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1170],[93,141,158,159,465,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,467,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,469,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1160],[93,141,158,159,471,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,473,474,475,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,479,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[86,93,141,158,159,459,464,466,468,470,472,476,480,482,492,493,495,504,505,506,507,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,481,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,491,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,295,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,494,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,140,141,158,159,278,280,281,283,496,497,498,501,502,503,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,146,155,156,157,158,159,184,185,191,573,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,531,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,532,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1679],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1640],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1680],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1525,1621,1677,1678],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1640,1641,1679,1680],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1622,1623,1624,1625,1626,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1646,1681],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1646],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1641],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1681],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1649],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1669,1670,1671,1672,1673,1674,1675],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1646],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1683],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1267,1638,1639,1644,1646,1668,1676,1681,1682,1684,1692],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1646,1679],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1625,1626,1638,1639,1642,1644,1677],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1642,1643,1645,1677],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1639,1677,1679],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1642,1677],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1638,1639,1668,1676],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1641,1642,1643,1677,1680],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1685,1686,1687,1688,1689,1690,1691],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1830],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1830,1831,1832,1833,1836,1837,1838,1839,1840,1841,1842,1845,1846],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1830],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1834,1835],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1827,1830],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1824,1825,1827],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1820,1823,1825,1827],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1824,1827],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1815,1816,1817,1820,1821,1822,1824,1825,1826,1827],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1817,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1824],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1818,1824,1825],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1818,1819],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1823,1825,1826],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1823],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1815,1820,1825,1826],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1820,1823,1824,1825],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1843,1844],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1862,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1879,1880],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1863],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1865],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1863],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1862],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1878],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1881],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1756,1759],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1749,1757,1777],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1737,1740],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1775,1778,1781],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1749,1756,1759],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1749,1757,1769],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1749,1759,1769],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1749,1769],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1738,1739,1740,1744,1750,1756,1761,1779,1780],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1784,1785,1786],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1783,1784,1785],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1757],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1783],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1749],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1741,1742],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1742,1744],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1733,1734,1738,1739,1740,1741,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1770,1771,1772,1773,1774,1775,1776,1778,1779,1780,1781,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1798],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1752],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1759,1763,1764],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1750,1752],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1755],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1778],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1740,1755,1782],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1743,1783],[81,93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1737,1738,1739],[93,141,158,159,173,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,110,141,158,159,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,141,158,159,173,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,101,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,103,106,141,158,159,181,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,161,181,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,101,141,158,159,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,103,106,141,158,159,161,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,98,99,102,105,141,152,158,159,173,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,113,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,98,104,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,127,128,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,102,106,141,158,159,176,184,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,127,141,158,159,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,100,101,141,158,159,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,128,129,130,131,132,133,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,121,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,113,114,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,104,106,114,115,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,105,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,98,101,106,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,106,110,114,115,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,110,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,104,106,109,141,158,159,184,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,98,103,106,113,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,101,106,127,141,158,159,189,191,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1736],[93,141,158,159,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1754],[93,141,158,159,587,600,601,602,603,604,605,606,607,608,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,628,1158]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c906fb15bd2aabc9ed1e3f44eb6a8661199d6c320b3aa196b826121552cb3695","impliedFormat":1},{"version":"22295e8103f1d6d8ea4b5d6211e43421fe4564e34d0dd8e09e520e452d89e659","impliedFormat":1},{"version":"f949f7f6c7802a338039cfc2156d1fe285cdd1e092c64437ebe15ae8edc854e0","impliedFormat":1},{"version":"6b4e081d55ac24fc8a4631d5dd77fe249fa25900abd7d046abb87d90e3b45645","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"83e63d6ccf8ec004a3bb6d58b9bb0104f60e002754b1e968024b320730cc5311","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2bc7425ef40526650d6db7e072c1ff4a51101c3ac2cc4b666623b19496a6e27","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"a3fc63c0d7b031693f665f5494412ba4b551fe644ededccc0ab5922401079c95","impliedFormat":1},{"version":"f27524f4bef4b6519c604bdb23bf4465bddcccbf3f003abb901acbd0d7404d99","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b039f55681caaf111d5eb84d292b9bee9e0131d0db1ad0871eef0964f533c73","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"c8d3e5a18ba35629954e48c4cc8f11dc88224650067a172685c736b27a34a4dc","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"0dba70b3fb0dcd713fda33c2df64fa6751fff6460e536971cee917260fb17882","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"47613031a5a31510831304405af561b0ffaedb734437c595256bb61a90f9311b","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"8a1a0d0a4a06a8d278947fcb66bf684f117bf147f89b06e50662d79a53be3e9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f663c2f91127ef7024e8ca4b3b4383ff2770e5f826696005de382282794b127","impliedFormat":1},{"version":"9f55299850d4f0921e79b6bf344b47c420ce0f507b9dcf593e532b09ea7eeea1","impliedFormat":1},{"version":"2beff543f6e9a9701df88daeee3cdd70a34b4a1c11cb4c734472195a5cb2af54","impliedFormat":1},{"version":"2e07abf27aa06353d46f4448c0bbac73431f6065eef7113128a5cd804d0c384d","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1},{"version":"42bc0e1a903408137c3df2b06dfd7e402cdab5bbfa5fcfb871b22ebfdb30bd0b","impliedFormat":1},{"version":"9894dafe342b976d251aac58e616ac6df8db91fb9d98934ff9dd103e9e82578f","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","impliedFormat":1},{"version":"182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","impliedFormat":1},{"version":"5c9b31919ea1cb350a7ae5e71c9ced8f11723e4fa258a8cc8d16ae46edd623c7","impliedFormat":1},{"version":"4aa42ce8383b45823b3a1d3811c0fdd5f939f90254bc4874124393febbaf89f6","impliedFormat":1},{"version":"96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","impliedFormat":1},{"version":"3677988e03b749874eb9c1aa8dc88cd77b6005e5c4c39d821cda7b80d5388619","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"02436d7e9ead85e09a2f8e27d5f47d9464bced31738dec138ca735390815c9f0","impliedFormat":1},{"version":"f4625edcb57b37b84506e8b276eb59ca30d31f88c6656d29d4e90e3bc58e69df","impliedFormat":1},{"version":"78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","impliedFormat":1},{"version":"f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","impliedFormat":1},{"version":"540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","impliedFormat":1},{"version":"121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","impliedFormat":1},{"version":"4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","impliedFormat":1},{"version":"678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","impliedFormat":1},{"version":"493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","impliedFormat":1},{"version":"aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"e2a37ac938c4bede5bb284b9d2d042da299528f1e61f6f57538f1bd37d760869","impliedFormat":1},{"version":"76def37aff8e3a051cf406e10340ffba0f28b6991c5d987474cc11137796e1eb","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","impliedFormat":1},{"version":"bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","impliedFormat":1},{"version":"6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","impliedFormat":1},{"version":"594fe24fc54645ab6ccb9dba15d3a35963a73a395b2ef0375ea34bf181ccfd63","impliedFormat":1},{"version":"7cb0ee103671d1e201cd53dda12bc1cd0a35f1c63d6102720c6eeb322cb8e17e","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","impliedFormat":1},{"version":"ad37fb4be61c1035b68f532b7220f4e8236cf245381ce3b90ac15449ecfe7305","impliedFormat":1},{"version":"93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","impliedFormat":1},{"version":"8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","impliedFormat":1},{"version":"304b44b1e97dd4c94697c3313df89a578dca4930a104454c99863f1784a54357","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"a365c4d3bed3be4e4e20793c999c51f5cd7e6792322f14650949d827fbcd170f","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"97e5ccc7bb88419005cbdf812243a5b3186cdef81b608540acabe1be163fc3e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","impliedFormat":1},{"version":"5c32bdfbd2d65e8fffbb9fbda04d7165e9181b08dad61154961852366deb7540","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"6b3453eebd474cc8acf6d759f1668e6ce7425a565e2996a20b644c72916ecf75","impliedFormat":1},{"version":"0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","impliedFormat":1},{"version":"89cd3444e389e42c56fd0d072afef31387e7f4107651afd2c03950f22dc36f77","impliedFormat":1},{"version":"7f2aa4d4989a82530aaac3f72b3dceca90e9c25bee0b1a327e8a08a1262435ad","impliedFormat":1},{"version":"e39a304f882598138a8022106cb8de332abbbb87f3fee71c5ca6b525c11c51fc","impliedFormat":1},{"version":"faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","impliedFormat":1},{"version":"fcdf3e40e4a01b9a4b70931b8b51476b210c511924fcfe3f0dae19c4d52f1a54","impliedFormat":1},{"version":"345c4327b637d34a15aba4b7091eb068d6ab40a3dedaab9f00986253c9704e53","impliedFormat":1},{"version":"3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"2b5b70d7782fe028487a80a1c214e67bd610532b9f978b78fa60f5b4a359f77e","impliedFormat":1},{"version":"7ee86fbb3754388e004de0ef9e6505485ddfb3be7640783d6d015711c03d302d","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"7580e62139cb2b44a0270c8d01abcbfcba2819a02514a527342447fa69b34ef1","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"7e6ac205dcb9714f708354fd863bffa45cee90740706cc64b3b39b23ebb84744","impliedFormat":1},{"version":"61dc6e3ac78d64aa864eedd0a208b97b5887cc99c5ba65c03287bf57d83b1eb9","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"f730b468deecf26188ad62ee8950dc29aa2aea9543bb08ed714c3db019359fd9","impliedFormat":1},{"version":"933aee906d42ea2c53b6892192a8127745f2ec81a90695df4024308ba35a8ff4","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"144bc326e90b894d1ec78a2af3ffb2eb3733f4d96761db0ca0b6239a8285f972","impliedFormat":1},{"version":"a3e3f0efcae272ab8ee3298e4e819f7d9dd9ff411101f45444877e77cfeca9a4","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","impliedFormat":1},{"version":"71d9eb4c4e99456b78ae182fb20a5dfc20eb1667f091dbb9335b3c017dd1c783","impliedFormat":1},{"version":"cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","impliedFormat":1},{"version":"30e6520444df1a004f46fdc8096f3fe06f7bbd93d09c53ada9dcdde59919ccca","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"a58beefce74db00dbb60eb5a4bb0c6726fb94c7797c721f629142c0ae9c94306","impliedFormat":1},{"version":"41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","impliedFormat":1},{"version":"502fa5863df08b806dbf33c54bee8c19f7e2ad466785c0fc35465d7c5ff80995","impliedFormat":1},{"version":"c91a2d08601a1547ffef326201be26db94356f38693bb18db622ae5e9b3d7c92","impliedFormat":1},{"version":"888cda0fa66d7f74e985a3f7b1af1f64b8ff03eb3d5e80d051c3cbdeb7f32ab7","impliedFormat":1},{"version":"60681e13f3545be5e9477acb752b741eae6eaf4cc01658a25ec05bff8b82a2ef","impliedFormat":1},{"version":"9586918b63f24124a5ca1d0cc2979821a8a57f514781f09fc5aa9cae6d7c0138","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","impliedFormat":1},{"version":"55095860901097726220b6923e35a812afdd49242a1246d7b0942ee7eb34c6e4","impliedFormat":1},{"version":"96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"bb8f2dbc03533abca2066ce4655c119bff353dd4514375beb93c08590c03e023","impliedFormat":1},{"version":"d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","impliedFormat":1},{"version":"1a6e6ba8a07b74e3ad237717c0299d453f9ceb795dbc2f697d1f2dd07cb782d2","impliedFormat":1},{"version":"58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"190da5eac6478d61ab9731ab2146fbc0164af2117a363013249b7e7992f1cccb","impliedFormat":1},{"version":"01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","impliedFormat":1},{"version":"f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","impliedFormat":1},{"version":"8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","impliedFormat":1},{"version":"8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","impliedFormat":1},{"version":"7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","impliedFormat":1},{"version":"2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true,"impliedFormat":1},{"version":"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"20fa37b636fdcc1746ea0738f733d0aed17890d1cd7cb1b2f37010222c23f13e","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"bc03c3c352f689e38c0ddd50c39b1e65d59273991bfc8858a9e3c0ebb79c023b","impliedFormat":1},{"version":"19df3488557c2fc9b4d8f0bac0fd20fb59aa19dec67c81f93813951a81a867f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b25350193e103ae90423c5418ddb0ad1168dc9c393c9295ef34980b990030617","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"a46dba563f70f32f9e45ae015f3de979225f668075d7a427f874e0f6db584991","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"622694a8522b46f6310c2a9b5d2530dde1e2854cb5829354e6d1ff8f371cf469","impliedFormat":1},{"version":"d24ff95760ea2dfcc7c57d0e269356984e7046b7e0b745c80fea71559f15bdd8","impliedFormat":1},{"version":"a9e6c0ff3f8186fccd05752cf75fc94e147c02645087ac6de5cc16403323d870","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"13c1b657932e827a7ed510395d94fc8b743b9d053ab95b7cd829b2bc46fb06db","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"078131f3a722a8ad3fc0b724cd3497176513cdcb41c80f96a3acbda2a143b58e","impliedFormat":1},{"version":"8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"9e155d2255348d950b1f65643fb26c0f14f5109daf8bd9ee24a866ad0a743648","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b103e9abfe82d14c0ad06a55d9f91d6747154ef7cacc73cf27ecad2bfb3afcf","impliedFormat":1},{"version":"7a883e9c84e720810f86ef4388f54938a65caa0f4d181a64e9255e847a7c9f51","impliedFormat":1},{"version":"a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d408d6f32de8d1aba2ff4a20f1aa6a6edd7d92c997f63b90f8ad3f9017cf5e46","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"b1f1d57fde8247599731b24a733395c880a6561ec0c882efaaf20d7df968c5af","impliedFormat":1},{"version":"9d622ea608d43eb463c0c4538fd5baa794bc18ea0bb8e96cd2ab6fd483d55fe2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264","impliedFormat":1},{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","impliedFormat":1},{"version":"af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","impliedFormat":1},{"version":"94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","impliedFormat":1},{"version":"1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","impliedFormat":1},{"version":"e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","impliedFormat":1},{"version":"5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","impliedFormat":1},{"version":"e7765aa8bcb74a38b3230d212b4547686eb9796621ffb4367a104451c3f9614f","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},{"version":"3a105ffb7503edbf24df5cdd337fdbafebf8adfdd57a03aa1c9f1cbf320234af","affectsGlobalScope":true},"7ad303e40d4fddf44f156129e397511953a71481c5cfd86b1862649aaaf240cc",{"version":"21247c958d397091ec30e63b27294baa1d1434c333da4fda697743190311dc62","impliedFormat":1},{"version":"1415e2844d09309bab86dc7c80b86a18a57cd295a655d5d653afbab16445c806","impliedFormat":1},{"version":"d5eb5865d4cbaa9985cc3cfb920b230cdcf3363f1e70903a08dc4baab80b0ce1","impliedFormat":1},{"version":"51ebca098538b252953b1ef83c165f25b52271bfb6049cd09d197dddd4cd43c5","impliedFormat":1},{"version":"033c830c6a4349056fb83297b51fe511bb0169e38e2dfb1f5e9c3d5876c8b992","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fa2c48fd724dd8f0e11dfb04f20d727a2595890bfa95419c83b21ed575ed77d1","impliedFormat":99},{"version":"6d23ffe7f1b73f16b08f5baeca430e6655b46fdc5862fd7bff1483b71fc6b28d","impliedFormat":99},{"version":"20be44c04e883d5fe7840d630a8d0656e95b00c2d6eebab9ab253275e7170534","impliedFormat":99},{"version":"3b674288fbdc0ff0ed2b7fc2839014c2ff209c84999fd06b6339347d0f976a85","impliedFormat":99},{"version":"cc2958d8abd86edcdf05542bb1b40ba659db5bc5a2560720cde08e8950e63bc1","impliedFormat":99},{"version":"e44e0ea195d68c0aea951809bda325322085008c0622fc4ee44db5359f37b747","impliedFormat":99},{"version":"21053659ad72fe51b9dfbde4fa14dbbac0912359fa37c9a5aa75f188782b2ee8","impliedFormat":99},{"version":"e297bdcb7db008d8d7d0481f2c935a9f7f0a338f41b7e5d1cec6a7744140a4ff","impliedFormat":99},{"version":"ef816ad6735a271c4c8035a1914c3a9beaaa90b3c174da312d26bce8736e56ec","impliedFormat":99},{"version":"7202026e24c5e5b7b6e5fe6b99455a91058ef82e74a5cdf6a3a4136b7ae9c080","impliedFormat":99},{"version":"87561cc8a2d7444adf4eed4b3f15bef8c6098cceb0e7617fba1cc45d187ac8c8","impliedFormat":99},{"version":"b52f7568bb9b00bcee6c4929938226541c09d86b849b8ba8db2fe2a8bba46f49","impliedFormat":99},{"version":"d42e1872d53ebb213e7bbe15e5fecdcaa9a490d2f2a2b035ee9cf4a6d3f1e44e","impliedFormat":99},{"version":"2262d96c02073dcb17a31ae8c738651ebff75f102522eae686f5462658b687a8","impliedFormat":99},{"version":"fd40c454d56e1d14e60ce13f3bc60c7fdb9bc70c6ef9c7bfafec1f0eb5d8075b","impliedFormat":1},{"version":"155ced96d70533d95c481061e2691802fae7cfb96869d7c85ac8622f53b51cb7","impliedFormat":1},{"version":"3689b6f599705380d2ceaccb4e58eec5c9439a7a5635d6e37c1ba66ed7c34b35","impliedFormat":99},{"version":"6cf0d3cc668cdbb01358ef7c2e41bbcc14d8d8e4ca424a1b6d2838d9a1cae8ce","impliedFormat":99},{"version":"b7bd70307671536c735389e0a1748555c438c392dfceb6f2ac3aa0a50ca82530","impliedFormat":99},{"version":"661c403f4c5bbf259e03f4fdc3a9e3f51ad562684f702e1b842e6c5336de0752","impliedFormat":99},{"version":"415dd92247ca21db682f75ba7e6289ab2d093cd34c6f471c6c789afd047ad4f3","impliedFormat":99},{"version":"4fc633107330ab389f07f86af80192ac697a68a586ad76dcf43304410e7cfb6a","impliedFormat":99},{"version":"828f8b38dff4e5c47b0112cb437da379c720f0360d40d392457c9775f30c8ae8","impliedFormat":99},{"version":"b7ca2f47522d4ea41e65ff92c4c6dd9c4c8260da7c456a7631a9c88dc056b4d0","impliedFormat":1},{"version":"4f01e4d0959f9125b89e5737eb1ca2bfa69fd6b7d6126eba22feb8b505b00cde","impliedFormat":1},{"version":"4363a1adb9c77f2ed1ca383a41fbab1afadd35d485c018b2f84e834edde6a2c7","impliedFormat":1},{"version":"1d6458533adb99938d041a93e73c51d6c00e65f84724e9585e3cc8940b25523f","impliedFormat":1},{"version":"b0878fbd194bdc4d49fc9c42bfeeb25650842fe1412c88e283dc80854b019768","impliedFormat":1},{"version":"a892ea0b88d9d19281e99d61baba3155200acced679b8af290f86f695b589b16","impliedFormat":1},{"version":"03b42e83b3bcdf5973d28641d72b81979e3ce200318e4b46feb8347a1828cd5d","impliedFormat":1},{"version":"8a3d57426cd8fb0d59f6ca86f62e05dde8bfd769de3ba45a1a4b2265d84bac5a","impliedFormat":1},{"version":"afc6e1f323b476fdf274e61dab70f26550a1be2353e061ab34e6eed180d349b6","impliedFormat":1},{"version":"7c14483430d839976481fe42e26207f5092f797e1a4190823086f02cd09c113c","impliedFormat":1},{"version":"828a3bea78921789cbd015e968b5b09b671f19b1c14c4bbf3490b58fbf7d6841","impliedFormat":1},{"version":"69759c42e48938a714ee2f002fe5679a7ab56f0b5f29d571e4c31a5398d038fe","impliedFormat":1},{"version":"6e5e666fa6adeb60774b576084eeff65181a40443166f0a46ae9ba0829300fcb","impliedFormat":1},{"version":"1a4d43bdc0f2e240395fd204e597349411c1141dd08f5114c37d6268c3c9d577","impliedFormat":1},{"version":"874e58f8d945c7ac25599128a40ec9615aa67546e91ca12cbf12f97f6baf54ff","impliedFormat":1},{"version":"da2627da8d01662eb137ccd84af7ffa8c94cf2b2547d4970f17802324e54defc","impliedFormat":1},{"version":"07af06b740c01ed0473ebdd3f2911c8e4f5ebf4094291d31db7c1ab24ff559aa","impliedFormat":1},{"version":"ba1450574b1962fcf595fc53362b4d684c76603da5f45b44bc4c7eeed5de045b","impliedFormat":1},{"version":"b7903668ee9558d758c64c15d66a89ed328fee5ac629b2077415f0b6ca2f41bc","impliedFormat":1},{"version":"c7628425ee3076c4530b4074f7d48f012577a59f5ddade39cea236d6405c36ba","impliedFormat":1},{"version":"28c8aff998cc623ab0864a26e2eb1a31da8eb04e59f31fa80f02ec78eb225bcd","impliedFormat":1},{"version":"78d542989bdf7b6ba5410d5a884c0ab5ec54aa9ce46916d34267f885fcf65270","impliedFormat":1},{"version":"4d95060af2775a3a86db5ab47ca7a0ed146d1f6f13e71d96f7ac3b321718a832","impliedFormat":1},{"version":"6708cd298541a89c2abf66cceffc6c661f8ee31c013f98ddb58d2ec4407d0876","impliedFormat":1},{"version":"2e90928c29c445563409d89a834662c2ba6a660204fb3d4dc181914e77f8e29d","impliedFormat":1},{"version":"84be1b8b8011c2aab613901b83309d017d57f6e1c2450dfda11f7b107953286a","impliedFormat":1},{"version":"d7af890ef486b4734d206a66b215ebc09f6743b7fb2f3c79f2fb8716d1912d27","impliedFormat":1},{"version":"7e82c1d070c866eaf448ac7f820403d4e1b86112de582901178906317efc35ad","impliedFormat":1},{"version":"c5c4f547338457f4e8e2bec09f661af14ee6e157c7dc711ccca321ab476dbc6d","impliedFormat":1},{"version":"223e233cb645b44fa058320425293e68c5c00744920fc31f55f7df37b32f11ad","impliedFormat":1},{"version":"1394fe4da1ab8ab3ea2f2b0fcbfd7ccbb8f65f5581f98d10b037c91194141b03","impliedFormat":1},{"version":"086d9e59a579981bdf4f3bfa6e8e893570e5005f7219292bf7d90c153066cdfc","impliedFormat":1},{"version":"1ea59d0d71022de8ea1c98a3f88d452ad5701c7f85e74ddaa0b3b9a34ed0e81c","impliedFormat":1},{"version":"cd66a32437a555f7eb63490509a038d1122467f77fe7a114986186d156363215","impliedFormat":1},{"version":"f53d243499acfacc46e882bbf0bf1ae93ecea350e6c22066a062520b94055e47","impliedFormat":1},{"version":"65522e30a02d2720811b11b658c976bff99b553436d99bafd80944acba5b33b4","impliedFormat":1},{"version":"76b3244ec0b2f5b09b4ebf0c7419260813820f128d2b592b07ea59622038e45c","impliedFormat":1},{"version":"66eb7e876b49beff61e33f746f87b6e586382b49f3de21d54d41313aadb27ee6","impliedFormat":1},{"version":"69e8dc4b276b4d431f5517cd6507f209669691c9fb2f97933e7dbd5619fd07b7","impliedFormat":1},{"version":"361a647c06cec2e7437fa5d7cdf07a0dcce3247d93fbf3b6de1dc75139ff5700","impliedFormat":1},{"version":"fe5726291be816d0c89213057cd0c411bb9e39e315ed7e1987adc873f0e26856","impliedFormat":1},{"version":"1b76990de23762eb038e8d80b3f9c810974a7ed2335caa97262c5b752760f11a","impliedFormat":1},{"version":"5e050e05fe99cd06f2d4ad70e73aa4a72961d0df99525e9cad4a78fa588f387b","impliedFormat":1},{"version":"4ff327e8b16da9d54347b548f85675e35a1dc1076f2c22b2858e276771010dd2","impliedFormat":1},{"version":"f767787945b5c51c0c488f50b3b3aeb2804dfd2ddafcb61125d8d8857c339f5a","impliedFormat":1},{"version":"14ab21a9aeff5710d1d1262459a6d49fb42bed835aa0f4cfc36b75aa36faddcd","impliedFormat":1},{"version":"ba3c4682491b477c63716864a035b2cfdd727e64ec3a61f2ca0c9af3c0116cfd","affectsGlobalScope":true,"impliedFormat":1},{"version":"b222d32836d745e1e021bb10f6a0f4a562dd42206203060a8539a6b9f16523f0","impliedFormat":1},{"version":"651df11341eff0b769fb83af75b1872e6cedf406674c5eaa2650551aceb5a816","impliedFormat":1},{"version":"1261fdeec101a8ff642979d46e53a48403dfb5c1a4ac18bc52fa2ca1274666ce","impliedFormat":99},{"version":"ec133635e02e62a23f5794ef7d52048456578a2e2ad33bd6f345fb2a7b17d91a","signature":"142bd2b0d072e07e87cb7f1f7a66a5beb6ee8bcf895f1488e92dc8db1f736d69"},{"version":"5276a27809d2ec2a0bfb3142db47eaebe8fe7549df7f86f44682da090d1edf84","signature":"bd623fdfef6061399f4d0a589d3c8ab8461fe8c19239c3bd33fc4b6f5f6dd002"},{"version":"8f2d197b4effb585cdc608d11e29c62b4347f44a8555017b5313b8f06ac7244e","signature":"fee59a3b73bb54f17e7fef371369e21a48488d789acf062c1f49a2ba9e54131f"},{"version":"dc44303978f9a5f6ee3f580166517d346fcc1a2489e9bd611030b114e69122db","signature":"a56cd6055ebebfbd43fe651905d1d3cc5b66fda0541e3faba36066b131e0b449"},{"version":"eab39fa596172cfdc8054d521be2a2ac8b0d73457b285b96df965ff6ed6a7e17","signature":"9ad5be9f5fec5bb6b3a56e62080470af37287478006a04af1ad55b57aeb4afe8"},{"version":"8ac3f465fd340554497279c59fdd3dca7cddddea2acbd1e278c11f5d15dc3c63","signature":"9cb92513d5fae8ae3fb3f2fdbf788a46478d55d5134e5cc0ac1db81278b6f419"},{"version":"c8380840f6c4747692eeb6ac03ad12da869c53c3dfda81b06677f61e4fe821e6","signature":"13adf66f0b79758e6a9cdec883d248a363e3d6b68d1e001ed258a29f495bfc6d"},{"version":"440cff8d2ae3eef5cdbf0e80c0f641ad8b144317dec2624e87244f2619c9de14","signature":"7b565e771a991f12bf9d77cb531f51c4546b5581027ed3ba50bafab5de770e42"},{"version":"69c0e8ae715920f65666256de555c3bc7d8049d125cad0c9a60de4978560d241","impliedFormat":1},{"version":"683ab7efcc7cf6e47280404f2bf848a542e306a0ba42cabcd254b22e26de8366","impliedFormat":1},{"version":"287a6f2c7218f26f60aa6659ee812bdc3561a888c803513275794260484a0eda","impliedFormat":1},{"version":"0339d33fe49fbc1c70842c886195e01eafd37f7431dd7f32209dd0544c289474","impliedFormat":1},{"version":"cf70b9a6eab897a0168ef9d31ca13a9b8b69fe7f9da2c251528c076eea9c2db1","impliedFormat":1},{"version":"183168c02ff8364c0dce4513240c627c57d6e23005da142f73975dd4d81c41e1","impliedFormat":1},{"version":"13a4d931c625360ab1cbf68961b13a60969a17cf3247bd60e18a49fb498b68e5","impliedFormat":1},{"version":"ee6044e69028771dc603ef4679ebaa6b6d781bee7c016e31fc5a2c7768540b35","impliedFormat":1},{"version":"1201dba1a374e877db58ee8f5a208c68852ec2e152a0e8940950933d22cc5399","affectsGlobalScope":true,"impliedFormat":1},{"version":"89cbb41c032a8602412a55d89c9fbee8af199ffb3e89e52a0306d42518f491c3","impliedFormat":1},{"version":"3b251e4edc903f60ab560be43d72840f58a5bb6f6b297a78147436b6dba0bf51","impliedFormat":1},{"version":"d71abd4aabbd945767abad885d6305a36fb741400a625fb7ae89fdd974646a9a","impliedFormat":1},{"version":"84adb6ae308092304c48a438184d2e7a00f21abfe0862b9b2c0747118bf9b540","impliedFormat":1},{"version":"8443bbb1e167b4cca6d192eab6f9ab94442054f9b1c945f05070c23896396365","impliedFormat":1},{"version":"cee64c9e3e89b36efdf90784f28278e070858d0526f9d4b4bdfd742305586f26","impliedFormat":1},{"version":"bbaf45bbee9575aeebc607f7cd6b82321ce244effa96091d4194e4f5a4ed1157","impliedFormat":1},{"version":"eb9010dcd427a9b6af45f4cee3d37e5bacd7cb935a02f3b3a8b95796b3fa4094","impliedFormat":1},{"version":"3016511eadb560b6874050f8ff2ca671c64a663a48c60a24e3e7ddef92c3b095","impliedFormat":1},{"version":"2bc8068c16a8849d1cf39b41437515a0c5392d3eda1fb1746c01c48bf0650dac","impliedFormat":1},{"version":"e9a60109964227d2ca15eb36f4c341802acba2cfc7f95aa4af40c00965013401","impliedFormat":1},{"version":"5e263dfa07c7b3d6a5f69aa23356dbd839028799b62df412c2a1367ac41dafc9","impliedFormat":1},{"version":"861b3b1cea0c4dbfd58cd3cb7a630ea8270b4ce92091941c263f4b4c6c21119b","impliedFormat":1},{"version":"c114d4db3c899b3d3389e4ce1214cda3ab8c27aefa4ef8c2275b8673f2432c28","impliedFormat":1},{"version":"ff04c51c7ebf02cf5abeecc69c54ecc8081e9717ae878983aae39d3ebf1015fb","impliedFormat":1},{"version":"36b2c10d01972e5aeea40e1ef3f3e1c19682c3c25d51611b66b3c1f8fe5600bd","impliedFormat":1},{"version":"a8287ff4ddeeccf7caf31fd328f5a72ad00f8561af408d0ae4184fa4151f7ad5","impliedFormat":1},{"version":"2bf9b7761d7129750adeeb0cad4481ba59e2f025d7e7c232cbee32b5472e75bb","impliedFormat":1},{"version":"635decf42713d6daf5ffc0ca792222d4d7487f9066c0ef91ffc38ff2b75e0413","impliedFormat":1},{"version":"e6e2832dfcec6ac23ed75d2dc362e1d31099aa7742887930cd3cc4d3ea76d9d3","impliedFormat":1},{"version":"448ae408883377930fb80d69635f949f3425c0f32c49c5656c73f8a6ae90d702","impliedFormat":1},{"version":"a93193ae74e76ecf4721edbdda2615163c869e4ee4d2fae1727c685abf082fcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"8bc123b01858d8b3d0c133b8b712287fd72cf3800be337d0942ae3e11ff889aa","signature":"bf4d2ba7ced6dd83f5141902d7d2c11ca822b62d8f88b60520ba9211c640eef3"},{"version":"cbcad75561699959aa4b3128f2b1aa30a573967116468b71844efa211c28ad7f","signature":"982184aa821a0e43f1e637e3afec99bca96c41a2f331db8fea70a88a64455785"},{"version":"3e73f161a21d000f5521f15725f59ce20d3bc64cc43939a7bb5f5663f073fc86","signature":"280f29fa93a62177136330002ff184e0767fafcdea09073b90a61dd639241bcd"},{"version":"78f31855070efd0ce18a0f3365adb99e6d85bd9103af8cc3e71eabfb99667c70","signature":"97a2a6b60beaf26864f1182526d044b355841a565558d06eab956f372f53ea65"},{"version":"1b3a659825f5d0d071a045ff532d8ab5463fb55dcc96aeb18c3e8d2990eeb9c2","signature":"eeffdab364178b6f014a066b04b79a7eaafe9e24e61f5d39d8bdeb39790ed3a8"},{"version":"8eaa074c47674e70990e2e27c1147a6635b7c176e96a692829d316e19a6aa6b3","signature":"a00f0e5b7c2c87edb1e008bf96faccb49cc7eda1508093d280317236ebbcf05d"},{"version":"b2ccc4c38b1566bbe455d9be79655342a03df29610e7942e338ebb42b17f303e","signature":"a36acb4bb67cb5fe914cbf22ae019aaa2d6f686ca474652600dc3da5ae4426a8"},{"version":"00664668dbd59d8b35cfb0dfb774dc7f0cd990f4180e8983a6b0400ce8bb4efa","signature":"c08024a4647a77d7f08b0722952c236f29123cdde01826397c9fc39098074895"},{"version":"7f75fd572e674d5ba97c18e29e584514e099341713b56916c5346f95ee3fdd87","signature":"328128b37e6c6dd4b7067c7ba812ae8079328349e695802bcec4e4695625634a"},{"version":"52842ede098f0b8a89c12c7513eedf5e6eb562574192956d342b70821799cbaa","impliedFormat":1},{"version":"0cbdcca7c3520ca6ec3f9a75acbf3830e8cfaac71059dfbdd770db8f1764f95d","impliedFormat":1},{"version":"c57b441e0c0a9cbdfa7d850dae1f8a387d6f81cbffbc3cd0465d530084c2417d","impliedFormat":99},{"version":"51954e948be6a5b728fcfaf561f12331b4f54f068934c77adfc8f70eea17d285","impliedFormat":1},{"version":"6db3cf01cae211112cfe3919b02fe4968ed8c4463b4c0cc27bfe7e45cea2b6c1","signature":"8de6e0b35373ab1ffeb0643c6fe97be35013e3e436fa6f8e52abc19b1d9c4157"},{"version":"b40885a4e39fb67eb251fb009bf990f3571ccf7279dccad26c2261b4e5c8ebcd","impliedFormat":1},{"version":"2d0e63718a9ab15554cca1ef458a269ff938aea2ad379990a018a49e27aadf40","impliedFormat":1},{"version":"530e5c7e4f74267b7800f1702cf0c576282296a960acbdb2960389b2b1d0875b","impliedFormat":1},{"version":"1c483cc60a58a0d4c9a068bdaa8d95933263e6017fbea33c9f99790cf870f0a8","impliedFormat":1},{"version":"07863eea4f350458f803714350e43947f7f73d1d67a9ddf747017065d36b073a","impliedFormat":1},{"version":"396c2c14fa408707235d761a965bd84ce3d4fc3117c3b9f1404d6987d98a30d6","impliedFormat":1},{"version":"0c46e15efeb2ff6db7c6830c801204e1048ccf0c8cc9ab1556b0b95832c9d1c9","impliedFormat":1},{"version":"c475aa6e8f0a20c76b5684658e0adaf7e1ba275a088ee6a5641e1f7fe9130b8a","impliedFormat":1},{"version":"a42db31dacd0fa00d7b13608396ca4c9a5494ae794ad142e9fb4aa6597e5ca54","impliedFormat":1},{"version":"4d2b263907b8c03c5b2df90e6c1f166e9da85bd87bf439683f150afc91fce7e7","impliedFormat":1},{"version":"db6eec0bf471520d5de8037e42a77349c920061fb0eb82d7dc8917262cbf0f17","impliedFormat":1},{"version":"4bd6bce02977ca4e4e4e83359f51327e04e796d1053ab5aca8a38d239796fd22","impliedFormat":1},{"version":"ca70001e8ea975754a3994379faca469a99f81d00e1ff5b95cabac5e993359aa","impliedFormat":1},{"version":"b70bd59e0e52447f0c0afe7935145ef53de813368f9dd02832fa01bb872c1846","impliedFormat":1},{"version":"3bdc578841f58bfd1087e14f81394ece5efd56b953362ef100bdd5bd179cd625","impliedFormat":1},{"version":"2bc15addade46dc6480df2817c6761d84794c67819b81e9880ab5ce82afb1289","impliedFormat":1},{"version":"247d6e003639b4106281694e58aa359613b4a102b02906c277e650269eaecede","impliedFormat":1},{"version":"fe37c7dc4acc6be457da7c271485fcd531f619d1e0bfb7df6a47d00fca76f19c","impliedFormat":1},{"version":"159af954f2633a12fdee68605009e7e5b150dbeb6d70c46672fd41059c154d53","impliedFormat":1},{"version":"a1b36a1f91a54daf2e89e12b834fa41fb7338bc044d1f08a80817efc93c99ee5","impliedFormat":1},{"version":"8bb4a5b632dd5a868f3271750895cb61b0e20cff82032d87e89288faee8dd6e2","impliedFormat":1},{"version":"2a3e6dfb299953d5c8ba2aca69d61021bd6da24acea3d301c5fa1d6492fcb0ec","impliedFormat":1},{"version":"017de6fdabea79015d493bf71e56cbbff092525253c1d76003b3d58280cd82a0","impliedFormat":1},{"version":"cf94e5027dd533d4ee448b6076be91bc4186d70f9dc27fac3f3db58f1285d0be","impliedFormat":1},{"version":"74293f7ca4a5ddf3dab767560f1ac03f500d43352b62953964bf73ee8e235d3d","impliedFormat":1},{"version":"6745b52ab638aaf33756400375208300271d69a4db9d811007016e60a084830f","impliedFormat":1},{"version":"90ee466f5028251945ee737787ee5e920ee447122792ad3c68243f15efa08414","impliedFormat":1},{"version":"34c17533b08bd962570d7bdb838fcaf5bcf7b913c903bc9241b0696a635b8115","impliedFormat":1},{"version":"1d567a058fe33c75604d2f973f5f10010131ab2b46cf5dddd2f7f5ee64928f07","impliedFormat":1},{"version":"5af5ebe8c9b84f667cd047cfcf1942d53e3b369dbd63fbea2a189bbf381146c6","impliedFormat":1},{"version":"5e126f7796301203e1d1048c1e5709ff9251f872a19f5ac0ee1f375d8128ef9b","impliedFormat":1},{"version":"147734cfd0973548fb6ef75d1e7d2c0b56bb59aad72b280784e811d914dc47d6","impliedFormat":1},{"version":"d2594d95d465026ebbee361f4819dc7b3146f4a8b42091ffb5dd90f9ceb345ab","impliedFormat":1},{"version":"e399d54c1b272a400ed446ca35d5e43d6b820723c2e5727b188ebea261e7cc2e","impliedFormat":1},{"version":"123568587c36c9f2a75091d8cdf8f287193855ba5aa10797b4fc320c80920b7f","impliedFormat":1},{"version":"6deffa531bdb8817b363505e88d957653d0c454f42c69e31588d00102cd1a076","impliedFormat":1},{"version":"973551068756351486afe706b240eb4dc83678ab2d829a1c6b1a19871394fd5f","impliedFormat":1},{"version":"e647d13de80e1b6b4e1d94363ea6f5f8f77dfb95d562748b488a7248af25aabf","impliedFormat":1},{"version":"9b7b0209a8841f5ffa60ccdfae26f7dc70ea4e7e446a603ef4732e84f1bb1b4f","impliedFormat":1},{"version":"5edc4b81a61ea5e0319b32d8f581d9643cb747cf44477b16af048f62d358c433","impliedFormat":1},{"version":"d47c9f84b00def208cbfdd820f8d10425ead9dbf36350d77fb55d5ef6857dabc","impliedFormat":1},{"version":"7629bedb475a5f5d04cdf8c69f29f2cf52a1d92dd13c39661c3e865ad997bd7e","impliedFormat":1},{"version":"20cf19c8028a7b958e9c2000281d0f4c4cd12502fef7d63b088d44647cdd607b","impliedFormat":1},{"version":"799780c3726407eaa2e09e709c376ec459582f6f9c41d9643f863580cecf7ff8","impliedFormat":1},{"version":"37280465f8f9b2ea21d490979952b18b7f4d1f0d8fab2d627618fb2cfa1828e3","impliedFormat":1},{"version":"52e29afa525973fc7cff28c4b6b359d91ad030d4aa198f060f813d4abcadb099","affectsGlobalScope":true,"impliedFormat":1},{"version":"a890cccdc380629c6cd9e9d92fff4ca69b9adddde84cc503296ada99429b5a3b","impliedFormat":1},{"version":"168b6da36cf7b832173d7832e017bc6c6c7b4023bf6b2de293efb991b96bca44","impliedFormat":1},{"version":"05b39d7219bb2f55f865bca39a3772e1c0a396ea562967929d6b666560c85617","impliedFormat":1},{"version":"bcae62618c23047e36d373f0feac5b13f09689e4cd08e788af13271dbe73a139","impliedFormat":1},{"version":"2c49c6d7da43f6d21e2ca035721c31b642ebf12a1e5e64cbf25f9e2d54723c36","impliedFormat":1},{"version":"5ae003688265a1547bbcb344bf0e26cb994149ac2c032756718e9039302dfac8","impliedFormat":1},{"version":"e1744dbace6ba2051a32da3c6b40e0fc690810a87b9ad4a1925b59f8f7157a34","impliedFormat":1},{"version":"ba8a615335e3dfdf0773558357f15edfff0461db9aa0aef99c6b60ebd7c40344","impliedFormat":1},{"version":"6921769648e4b83bb10e8fcf7011ea2d8f7de5d056daacf661648935a407376e","impliedFormat":1},{"version":"dd21167f276d648aa8a6d0aacd796e205d822406a51420b7d7f5aa18a6d9d6d9","impliedFormat":1},{"version":"3dea56c1745af2c31af0c84ecc6082044dc14cfa4d7366251e5bf91693eecd8b","impliedFormat":1},{"version":"eb6360635bc14b96a243bd5134e471f3ad26b0ecaf52d9d28621e443edb56e5c","impliedFormat":1},{"version":"e6f25eb7de8d9854badecb42caec553fb50c7ec37926473e3fb7f6df45bc945f","impliedFormat":1},{"version":"62a64260ea1dada7d643377c1a0ef3495363f4cca36adf7345e8566e7d7f419b","impliedFormat":1},{"version":"8b15e8af2fc862870418d0a082a9da2c2511b962844874cf3c2bad6b2763ca10","impliedFormat":1},{"version":"3d399835c3b3626e8e00fefc37868efe23dbb660cce8742486347ad29d334edd","impliedFormat":1},{"version":"b262699ba3cc0cae81dae0d9ff1262accf9832b2b7ee6548c626d74076bff8fe","impliedFormat":1},{"version":"057cac07c7bc5abdcfba44325fcea4906dff7919a3d7d82d4ec40f8b4c90cf2f","impliedFormat":1},{"version":"d94034601782f828aa556791279c86c37f09f7034a2ab873eefe136f77a6046b","impliedFormat":1},{"version":"fd25b101370ee175be080544387c4f29c137d4e23cad4de6c40c044bed6ecf99","impliedFormat":1},{"version":"8175f51ec284200f7bd403cb353d578e49a719e80416c18e9a12ebf2c4021b2b","impliedFormat":1},{"version":"e3acb4eb63b7fc659d7c2ac476140f7c85842a516b98d0e8698ba81650a1abd4","impliedFormat":1},{"version":"04d4c47854061cc5cefc3089f38e006375ae283c559ab2ce00763bca2e49516b","impliedFormat":1},{"version":"6a2146116c2fa9ca4fefa5c1d3de821462fc22e5330cda1196be15d439728c51","impliedFormat":1},{"version":"3b10140aae26eca9f0619c299921e202351c891b34e7245762e0641469864ffd","impliedFormat":1},{"version":"c0c0b22cefd1896b92d805556fcabda18720d24981b8cb74e08ffea1f73f96c2","impliedFormat":1},{"version":"ceec94a0cd2b3a121166b6bfe968a069f33974b48d9c3b45f6158e342396e6b2","impliedFormat":1},{"version":"49e35a90f8bd2aa4533286d7013d9c9ff4f1d9f2547188752c4a88c040e42885","impliedFormat":1},{"version":"3261b6d56270a3d8535f34c2fdad217cfba860d0f74f154f0a6a2031d0c8daf9","impliedFormat":1},{"version":"7eca5b6e1cd1c28637103d2b6c44e8b89035a53e515ff31ae3babc82e6c8e1f9","impliedFormat":1},{"version":"49c9c8316d59f6175e6e0439b1d5ef1218f02ce622d1a599449de30645559eed","impliedFormat":1},{"version":"e4c48be0ffac936fb60b19394739847145674582cbc7e24000d9fd35ab037365","impliedFormat":1},{"version":"215de2c70639abaf351b8ff69041e44a767ecffc5e8d2ac13ca3f201853fa1fb","impliedFormat":1},{"version":"d228c7773484140fac7286c9ca4f0e04db4a62acb792a606a2dda24bef70dc21","impliedFormat":1},{"version":"8e464886b1ff36711539ffa15ec2482472220271100768c1d98acfdf355a23ba","impliedFormat":1},{"version":"fb0135c4906ff44d3064feebd84bae323ebb7b59b8ce7053d34e7283d27c9076","impliedFormat":1},{"version":"178c8707a575baddc8f529a6dbd5d574a090e3498b2d525753db7938c74227c3","impliedFormat":1},{"version":"ae81e464a7db70637d07b93582b051487c7d119ac7e1bab1b1582a96e631b3f7","impliedFormat":1},{"version":"148634fcee440c7bd8c1339b97455aaadc196b0229ffc8dc8b85965a7d65b380","impliedFormat":1},{"version":"d3c60c4cf88594f84f7f5ca5f87d59090787bfcf032e86d4f03d58394b826910","impliedFormat":1},{"version":"f3c3f17825c6a78681186da04c2f3a0f1c60cfa95f3d4b82bbbd6ebd57214a6a","impliedFormat":1},{"version":"eb45a1782ef50423c1ffac4d2a89c60004f4e2d25ed8e7dcb9e24e6cf984ccdb","impliedFormat":1},{"version":"e4c94ea55cac34117f423db62a62df7121006b0e69ab77d27f98cef27973f876","impliedFormat":1},{"version":"97e4a153ac1feffdc4cbdf8f2b8ecfe8a2c651c3ba949fd5fbcc1e29d8e7d283","impliedFormat":1},{"version":"0b801e25d3e163d246c70e059cd529e5edd280692c6b384c20314825b23511bb","impliedFormat":1},{"version":"97f2a8c88656c95104fe635a2c254b0ec431591d26838e1fbc2a6db6b822a1df","impliedFormat":1},{"version":"d120b9af0cd364387d676de7c662643006ea2d942f7d5af18ca3024fee73c149","impliedFormat":1},{"version":"274097c2dff5959c9a6242b87aa858e772f0d269dd2847e44e4f6c5c0922937f","impliedFormat":1},{"version":"9a5ce34f28948d1b84dea73942e10b8a36fa10dc958356589c8f03aea866c96d","impliedFormat":1},{"version":"75897ed38868fdd8ce289475d2812e4d3e5cb64bcf812e44ebbf3f5e21ae486d","impliedFormat":1},{"version":"d994fb6705faaae18b9d71ba2d89b4a7e5e77c2b801a3dae51c0821da4a90acb","impliedFormat":1},{"version":"b30cc18b84468d3fa20ac04ca5ba9bed5a03431fc8a22bcf2c266c132baa1d3f","impliedFormat":1},{"version":"fda3e93361b17be4f24a12ac951b3c87cbae8e81b351d849caec342c94f932fa","impliedFormat":1},{"version":"f0ce99f229795d96ffbcee89e1de6c6d9dc52b4c31bfe6fe002893e243c305b4","impliedFormat":1},{"version":"680bd67092c080fefa2045bba990378e0c0f2ad5ed56b7fe928b4287413d7842","impliedFormat":1},{"version":"0840cd0220ad530dbc6e8549161e9304dac9d520c3b78caeeeb6af194a9f0588","impliedFormat":1},{"version":"a54f60678f44415d01a810ca27244e04b4dde3d9b6d9492874262f1a95e56c7d","impliedFormat":1},{"version":"84058607d19ac1fdef225a04832d7480478808c094cbaedbceda150fa87c7e25","impliedFormat":1},{"version":"27abd2f2ed5aaac951b12b8332aac7970c9cf0cfd88c458f0f016228180b4293","impliedFormat":1},{"version":"901c640dced9243875645e850705362cb0a9a7f2eea1a82bb95ed53d162f38dd","impliedFormat":1},{"version":"ebb0d92294fe20f62a07925ce590a93012d6323a6c77ddce92b7743fa1e9dd20","impliedFormat":1},{"version":"b499f398b4405b9f073b99ad853e47a6394ae6e1b7397c5d2f19c23a4081f213","impliedFormat":1},{"version":"ef2cbb05dee40c0167de4e459b9da523844707ab4b3b32e40090c649ad5616e9","impliedFormat":1},{"version":"068a22b89ecc0bed7182e79724a3d4d3d05daacfe3b6e6d3fd2fa3d063d94f44","impliedFormat":1},{"version":"e70d18d1352550a028f48d74e126a919c830267b38c76ddae4dc1571476a462a","impliedFormat":1},{"version":"5624b09ca38ea604954f0422a9354e79ada3100305362a0da79555b3dd86f578","impliedFormat":1},{"version":"24830e279f5773a4108e0cbde02bdcb6c20b1d347ff1509f63eed031bf8b3190","impliedFormat":1},{"version":"8899fd9f8ab5ce2b3af7ba0e1a47eede6a2a30a269283cc4a934ab755d0aadaa","impliedFormat":1},{"version":"f10759ece76e17645f840c7136b99cf9a2159b3eabf58e3eac9904cadc22eee5","impliedFormat":1},{"version":"363dd28f6a218239fbd45bbcc37202ad6a9a40b533b3e208e030137fa8037b03","impliedFormat":1},{"version":"c6986e90cf95cf639f7f55d8ca49c7aaf0d561d47e6d70ab6879e40f73518c8d","impliedFormat":1},{"version":"224d293a02b7d22edb77b4ab89c0d4f63b95ecd7c0698776719f33863a77ffdc","impliedFormat":1},{"version":"1518707348d7bd6154e30d49487ba92d47b6bd9a32d320cd8e602b59700b5317","impliedFormat":1},{"version":"ede55f9bac348427d5b32a45ad7a24cc6297354289076d50c68f1692add61bce","impliedFormat":1},{"version":"d53a7e00791305f0bd04ea6e4d7ea9850ccc3538877f070f55308b3222f0a793","impliedFormat":1},{"version":"4ea5b45c6693288bb66b2007041a950a9d2fe765e376738377ba445950e927f6","impliedFormat":1},{"version":"7f25e826bfabe77a159a5fec52af069c13378d0a09d2712c6373ff904ba55d4b","impliedFormat":1},{"version":"7ffef1ed1c2bc7d9cf2fc134a7e8c68b10416cdbe8e70da8a4bd7ad5c8698d9c","impliedFormat":1},{"version":"63c0926fcd1c3d6d9456f73ab17a6affcdfc41f7a0fa5971428a57e9ea5cf9e0","impliedFormat":1},{"version":"eb524eabfa1809d54dd289374c0ce0ed4f145abb878687e4fd5e67f91d7d08a6","impliedFormat":1},{"version":"4ef0a17c5bcae3d68227136b562a4d54a4db18cfa058354e52a9ac167d275bbb","impliedFormat":1},{"version":"b748dd4ccc072a2b7194b898dc8996a2cb56bfa15ccdb60ac0d2f9eaa8e28e9d","impliedFormat":1},{"version":"64269ed536e2647e12239481e8287509f9ee029cbb11169793796519cc37ecd4","impliedFormat":1},{"version":"c06fd8688dd064796b41170733bba3dcacfaf7e711045859364f4f778263fc7b","impliedFormat":1},{"version":"b0a8bf71fea54a788588c181c0bffbdd2c49904075a7c9cb8c98a3106ad6aa6d","impliedFormat":1},{"version":"434c5a40f2d5defeede46ae03fb07ed8b8c1d65e10412abd700291b24953c578","impliedFormat":1},{"version":"c5a6184688526f9cf53e3c9f216beb2123165bfa1ffcbfc7b1c3a925d031abf7","impliedFormat":1},{"version":"cd548f9fcd3cebe99b5ba91ae0ec61c3eae50bed9bc3cfd29d42dcfc201b68b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"14a8ec10f9faf6e0baff58391578250a51e19d2e14abcc6fc239edb0fb4df7c5","impliedFormat":1},{"version":"81b0cf8cd66ae6736fd5496c5bbb9e19759713e29c9ed414b00350bd13d89d70","impliedFormat":1},{"version":"4992afbc8b2cb81e0053d989514a87d1e6c68cc7dedfe71f4b6e1ba35e29b77a","impliedFormat":1},{"version":"1810b0b14614e53075d4d1b3e6be512bde19b1ed3a287925c0d24bae8585fa1b","impliedFormat":1},{"version":"1c390420d6e444195fd814cb9dc2d9ca65e86eb2df9c1e14ff328098e1dc48ae","impliedFormat":1},{"version":"ec8b45e83323be47c740f3b573760a6f444964d19bbe20d34e3bca4b0304b3ad","impliedFormat":1},{"version":"ab8b86168ceb965a16e6fc39989b601c0857e1fd3fd63ff8289230163b114171","impliedFormat":1},{"version":"62d2f0134c9b53d00823c0731128d446defe4f2434fb84557f4697de70a62789","impliedFormat":1},{"version":"12056fec06740770f1d14d47dad75ba54a9a8e0f40e766b38172a44b42112886","impliedFormat":1},{"version":"ec8db3ff5638196d3debc149d61fb4d604e73e12ffd28ea02a326ad40d2240bf","impliedFormat":1},{"version":"e8c0a909df5d29c77c9b5037b9a25ec6be0b70e0d3f5ce95ae0923f2582d6c1c","impliedFormat":1},{"version":"9fad83dff123fb56c6d11f8973ebc6cffec784f5d5c0cc2572344df246bfa0dc","impliedFormat":1},{"version":"c7865dbee3c1955c9c91b107ac95e51c27ee67dc2b85893ee91d4ce46f37ea99","impliedFormat":1},{"version":"5776c61de0f11da1c3cf8aafc3df524e8445201c96a7c5065a36dc74c2dc0ef6","impliedFormat":1},{"version":"c110c6e2b6a8494ff722db0c32ff143bcf0ed04ecdb993a58b8d4c1ef5d8e1d3","impliedFormat":1},{"version":"7f0f90d0ffdd54875c464b940afaa0f711396f65392f20e9ffafc0af12ccbf14","impliedFormat":1},{"version":"483255952a9b6240575a67f7beb4768bd850999a32d44d2c6d0ae6dfcdafe35c","impliedFormat":1},{"version":"a1957cc53ce2402d4dc5c51b7ccc76b30581ab67bea12a030a76300be67c51d8","impliedFormat":1},{"version":"8149e534c91fc2bcb3bf59f7c1fab7584382abfc5348055e7f84d2552c3de987","impliedFormat":1},{"version":"c280ec77789efcf60ea1f6fd7159774422f588104dae9dfa438c9c921f5ab168","impliedFormat":1},{"version":"2826b3526af4f0e2c8f303e7a9a9a6bb8632e4a96fece2c787f2df286a696cea","impliedFormat":1},{"version":"77ced89806322a43991a88a9bd267d6dc9e03fd207a65e879804fa760292a03b","impliedFormat":1},{"version":"c8ff3a75cd1c990cbe56080b1d254695c989136c9521cb1252c739788fe55c83","impliedFormat":1},{"version":"485f7d76af9e2b5af78aac874b0ac5563c2ae8c0a7833f62b24d837df8561fb9","impliedFormat":1},{"version":"8bdf41d41ff195838a5f9e92e5cb3dfcdc4665bcca9882b8d2f82a370a52384e","impliedFormat":1},{"version":"4f42e9c177a3c68913560c086a889285cd51c20b4d54a44bae77c17dee7cfa46","impliedFormat":1},{"version":"fe8a3e5492c807cc5cfc8dda4e6464aff0f991dc54db09be5d620fb4968ba101","impliedFormat":1},{"version":"31f931c21c7a121317c5b4d0223e6c13f616312ddb481409e54393340bd61ed9","impliedFormat":1},{"version":"654bcc87bc095d6a2248a5889ec057b38cae6052744b48f4d2922a7efac4554f","impliedFormat":1},{"version":"cad0f26943006174f5e7508c0542873c87ef77fa71d265968e5aa1239ad4459c","impliedFormat":1},{"version":"0be66c79867b62eabb489870ba9661c60c32a5b7295cce269e07e88e7bee5bf3","impliedFormat":1},{"version":"eed82e8db4b66b1ea1746a64cd8699a7779138b8e45d495306016ce918b28440","impliedFormat":1},{"version":"3a19286bcc9303c9352c03d68bb4b63cecbf5c9b7848465847bb6c9ceafa1484","impliedFormat":1},{"version":"6cdf8f9ca64918a2f3c2679bc146d55f07490f7f5e91310b642bc1a587f2e17e","impliedFormat":1},{"version":"3b55c93b5d7a44834d9d0060ca8bad7166cf83e13ef0ed0e736da4c3dbe490a2","impliedFormat":1},{"version":"d1f8a829c5e90734bb47a1d1941b8819aeee6e81a2a772c3c0f70b30e3693fa9","impliedFormat":1},{"version":"3517c54fba6f0623919137ab4bdb3b3c16e64b8578f025b0372b99be48227ad7","impliedFormat":1},{"version":"19b3d0c212d241c237f79009b4cd0051e54971747fd89dc70a74f874d1192534","impliedFormat":1},{"version":"0d0202235a9c54a36e08502ddee21ad24013eff328831630b438ca927ff15b11","impliedFormat":1},{"version":"f17963b9935dd2142c08b006da53afeeaca2c9a600485f6eb9c018b96687275b","impliedFormat":1},{"version":"1afd33ee26eb73a31cca8870ef7da768d1f13827957847d68d0270ce4568b4c2","impliedFormat":1},{"version":"6efcc75514c15981e76e399a93eb7d86a779299c618968a099b755cc8d2b7334","impliedFormat":1},{"version":"a24adc6e8aa778f0b66578f842a3c4fb7bdca5f8bb183c5e90c9746676a33454","impliedFormat":1},{"version":"a797a41988e5ba36b6707939953b0c0395ed92b91c1189359d384ca66e8fa0ab","impliedFormat":1},{"version":"a9452e81c28c642c2f095844c3473d979eba5ae89726ad52b15ea86b3e112ee2","impliedFormat":1},{"version":"dc4a2cf12254395c8ae3fb4c61e6fd9f7c16110be66483599f9641941416988f","impliedFormat":1},{"version":"82b4045609dc0918319f835de4f6cb6a931fd729602292921c443a732a6bb811","impliedFormat":1},{"version":"ce0a7ad957db8370d5a33da5f9e10d3d05a58a626e1d1166a2b92fcacc0d82e4","impliedFormat":1},{"version":"aa81389bf581bb4c15c0ed2136640d3998d0984d8bf6e0b59194ba92d98c6a72","impliedFormat":1},{"version":"e5eb4863b7fc8515078dc09cd2f98fd179ff1a55216ecdc57d2dec7ce13e36c1","impliedFormat":1},{"version":"81785a3ea03d6db981ddfcf8fb1bd1377f985564def845c55e49e16f171deec4","impliedFormat":1},{"version":"537a2b61594512c5e75fad7e29d25c23922e27e5a1506eb4fce74fe858472a6e","impliedFormat":1},{"version":"8f9a2a6ddbd11ecbbc430ae8ce25528e696206f799ef1f22528569caf6ce580c","impliedFormat":1},{"version":"e05e03e1687d7f80f1569fdae117bb7b97feef1e839a61e1b3c61ffca8cc67c9","impliedFormat":1},{"version":"b311d973a0028d6bc19dfbaae891ad3f7c5057684eb105cfbeec992ab71fbc13","impliedFormat":1},{"version":"8a49e533b98d5c18a8d515cd3ae3bab9d02b6d4a9ac916e1dba9092ca0ebff15","impliedFormat":1},{"version":"fcb26ad5a6c39ce71dfac5dc16b3ed0e1a06a6dc8b9ac69112c935ad95fcad69","impliedFormat":1},{"version":"6acdef608420511aa0c9e3290b37d671bab4f719ffc2a2992c2e63a24605a657","impliedFormat":1},{"version":"291df5da0d84d1452cd68abfbcca08a3f96af610bf0e748528ba8d25784ce2b1","impliedFormat":1},{"version":"176cda558a7f76813f463a46af4607a81f10de5330c0f7a43d55982163aa0493","impliedFormat":1},{"version":"6621af294bd4af8f3f9dd9bd99bd83ed8d2facd16faa6690a5b02d305abd98ab","impliedFormat":1},{"version":"5eada4495ab95470990b51f467c78d47aecfccc42365df4b1e7e88a2952af1a3","impliedFormat":1},{"version":"6b08ada439e3c7fba3e6d18c19f934e7bbea3f34979f2490074f0623b849e8e4","impliedFormat":1},{"version":"40e9c2028b34c6c1e3281818d062f7008705254ee992d9857d051c603391e0f4","impliedFormat":1},{"version":"bf1e1d7d28afe2f0e6936aaf30e34efc70cc0714d79721c88e3fc2253d5da40b","impliedFormat":1},{"version":"4a34de405e3017bf9e153850386aacdf6d26bbcd623073d13ab3c42c2ae7314c","impliedFormat":1},{"version":"993bcd7e2dd9479781f33daab41ec297b8d6e6ccc4c8f9b629a60cc41e07e5c8","impliedFormat":1},{"version":"273b6c8dad70cb34aaeb6af95e9326e7e3670f10a0277c6832a42b5b7728a2c0","impliedFormat":1},{"version":"dfa99386b9a1c1803eb20df3f6d3adc9e44effc84fa7c2ab6537ed1cb5cc8cfb","impliedFormat":1},{"version":"4cb85ba4cf75f1b950bd228949ae508f229296de60cf999593e4dd776f7e84e8","impliedFormat":1},{"version":"e39730c031200579280cae4ea331ec4e0aa42f8f7ad19c3ec4b0b90414e40113","impliedFormat":1},{"version":"e90bd7922cb6d591efd7330d0ba8247ec3edf4c511b81346fd49fff5184e6935","impliedFormat":1},{"version":"1b581d7fcfacd6bbdabb2ceae32af31e59bf7ef61a2c78de1a69ca879b104168","impliedFormat":1},{"version":"4720efe0341867600b139bca9a8fa7858b56b3a13a4a665bd98c77052ca64ea4","impliedFormat":1},{"version":"a0f62f1335e4c627a04eed453d4fa709f19ef60fd11c65e1fdfc96de9df374a5","impliedFormat":1},{"version":"37446d15751f05bb3ecde3ad5346b2ccfa7f4578411e9e699b38a867327ffbf9","impliedFormat":1},{"version":"11792ab82e35e82f93690040fd634689cad71e98ab56e0e31c3758662fc85736","impliedFormat":1},{"version":"8551ca11a261b2384e0db64bbd09ee78a2043a908251746db3a522b6a646e960","impliedFormat":1},{"version":"6c53c05df974ece61aca769df915345dc6d5b7649a01dc715b7da1809ce00a77","impliedFormat":1},{"version":"18c505381728b8cc6ea6986728403c1969f0d81216ed04163a867780af89f839","impliedFormat":1},{"version":"d121a48de03095d7dd5cd09d39e1a1c4892b520dad4c1d9c339c5d5008cfb536","impliedFormat":1},{"version":"3a6ce66cd39bc030697a52508cfda7c248167467848964cc40bd992bd9ce71e0","impliedFormat":1},{"version":"b4ec75c8a71c180e886ffccb4b5391a5217d7e7077038de966e2b79553850412","impliedFormat":1},{"version":"f8117362c4a91da9e2a29466d682334fe522d4e5d6cc652d95c38797b41f4546","impliedFormat":1},{"version":"ecf85664c5bbbb0db1190cd1a57ebdedf7ecbc0dbbbfd548106f069e0c38666c","impliedFormat":1},{"version":"b43a0693d7162abf3a5b3b9e78acfafd0d4713af4d54d1778900e30c11bc4f83","impliedFormat":1},{"version":"efb3cb71ed3e03cee59cd95bffa5c7eb365b0c637dd4d8efc358d8a34b396052","impliedFormat":1},{"version":"aed88228359e87a1b1a4d3d45f5b6555724c01ac81ecd34aa56d4a0a01ba6910","impliedFormat":1},{"version":"6365e9d7645838ef3e98c0a9f52c03ce6b00962a67f1e3e945f155a6b12e0578","impliedFormat":1},{"version":"f4dc28fbbba727722cb1fd82f51a7b9540fbe410ed04ddf35cab191d6aa2ba10","impliedFormat":1},{"version":"4adc1491e1338de6745d009222786747f50d67ac34d901420fbaefbf1b51b58c","impliedFormat":1},{"version":"4cfbd2a7a4afee212bfb0c9c3cb6e4c7d48366e0565bf5b43a4cd96c91cf14bf","impliedFormat":1},{"version":"37c175e28375e157933b40ca98eeb608e05f2583821a0fae564dc04614d2d95e","impliedFormat":1},{"version":"3f20a041a051abfb2b47a66611cf4bcbf263605f5469ed7e8b51b3977892d83f","impliedFormat":1},{"version":"7de33f94f482eee2f6d1d8f24427b737e2c4006792ec4c2b87da0a426e741c4d","impliedFormat":1},{"version":"79134a050ccec1692c31f1dacccd05ce4fcdacdf98f0fa56546b98eb8bdefead","impliedFormat":1},{"version":"24f1b6865be734484de2baf99146122137654c5f5f28086c5cee97b998bfcd5c","impliedFormat":1},{"version":"398feb1537ae0409646b0489bac99a9f0d757a2048f0009255f8e35e9c0f9828","impliedFormat":1},{"version":"3da4432a9c24123f98f6f1ddc5cda9c9eedf0a8853d06321803dbc5a116e5270","impliedFormat":1},{"version":"afc60e07200c5eae65b702f95d83096de54d99fa6eb2e0154e83b5e11c520bda","impliedFormat":1},{"version":"f4651affee2900f19746d1bf0fb1c45e77f57576197561ddc90b7272835c3f37","impliedFormat":1},{"version":"19527fc5a08c68414a234b02ae9b9619cdb4b811435d12c0af528e5640236f6b","impliedFormat":1},{"version":"20a629bc3f82d238f596230637365b8aec8284c963d13dafdd4c8e2746be5e64","impliedFormat":1},{"version":"01c48e5bf524d3fc2a3fa5c08a2e18d113ad1985bc3caea0503a4ea3a9eee64a","impliedFormat":1},{"version":"68969a0efd9030866f60c027aedbd600f66ea09e1c9290853cc24c2dcc92000f","impliedFormat":1},{"version":"4dbfad496657abd078dc75749cd7853cdc0d58f5be6dfb39f3e28be4fe7e7af5","impliedFormat":1},{"version":"348d2fe7d7b187f09ea6488ead5eae9bfbdb86742a2bad53b03dff593a7d40d1","impliedFormat":1},{"version":"becdfb07610e16293af2937e5f315a760f90a40fec4ffd76eb46ebcb0b3d6e16","impliedFormat":1},{"version":"710926665f4ada6c854b47da86b727005cc0e0831097d43f8c30727a7499788c","impliedFormat":1},{"version":"3888f0e43cd987a0dfa4fc16dd2096459deea150be49a2d30d6cf29d47801c92","impliedFormat":1},{"version":"f4300c38f9809cf811d5a9196893e91639a9e2bb6edf9a4f7e640c3c4ce765ec","impliedFormat":1},{"version":"676c3327721e3410b7387b13af857f4be96f2be91b3813a724eedc06b9ce52d7","impliedFormat":1},{"version":"10716e50bcd2a25cecf2dd993f0aadf76f12a390d2f7e91dc2cac794831e865e","impliedFormat":1},{"version":"81a8f1f6218d0acc8cd2cf8b5089d21b45cf812bb5820affe3bab058b46cba7b","impliedFormat":1},{"version":"fa69921924cf112fa523a18215a3bfb352ac3f498b46e66b879e50ca46cc9203","impliedFormat":1},{"version":"8063a2c518e5c3b33a895cb891984acaabc0a248f8ad40748adedbe8d2580fb6","impliedFormat":1},{"version":"ccfb77fcac04c34442ffca82ae90c8dd2a0ec1689ace547fab9a0ae337dd4752","impliedFormat":1},{"version":"7b464488950d74ca5037da375308fc0c94a539378fd0e9554556df45483aad02","impliedFormat":1},{"version":"970fd4f27197b7495991371a8898067f7490f17da6883d5284c737182409bfdf","impliedFormat":1},{"version":"2d97de1377bad99c7b9df395330201195ef1d7f861a07087f2d42aa0d4daccbd","impliedFormat":1},{"version":"c790db6044ce1bbafc46f13bde46b9f0065de155b26a199f442fe064f6b05d63","impliedFormat":1},{"version":"f405e934163ed30905b4682eb542bb2d446e59c477871be9d29f92ab474d522a","impliedFormat":1},{"version":"8294ddd1c6ea4ed9ec190a2d41500539c1623e274d5a67786d6b09849cb98d45","impliedFormat":1},{"version":"666d6d6d9f2298f8d8d17ac7a34ac9ca9a59e09fc97b1ae505df6ab4934e2dbe","impliedFormat":1},{"version":"f3941ac359b8377c0ccce596a2bd3cde8986279f42d75290b0272f3ab1aa604d","impliedFormat":1},{"version":"de3d39262355af808ff74b3df62aaad0ad3cbde76c13fb4fa6fb6e4cc817e78e","impliedFormat":1},{"version":"a5042497dfcd9aa8864af2db95b386bd345559edac65c3d8910684ce68e551fc","impliedFormat":1},{"version":"757f7967151a9b1f043aba090f09c1bdb0abe54f229efd3b7a656eb6da616bf4","impliedFormat":1},{"version":"786691c952fe3feac79aca8f0e7e580d95c19afc8a4c6f8765e99fb756d8d9d7","impliedFormat":1},{"version":"734614c9c05d178ceb1acf2808e1ca7c092cf39d435efc47417d8f744f3e4c0b","impliedFormat":1},{"version":"d65a7ea85e27f032d99e183e664a92f5be67c7bc7b31940957af6beaaf696844","impliedFormat":1},{"version":"5c26ad04f6048b6433f87556619fd2e50ba6601dcdf3276c826c65681197f79d","impliedFormat":1},{"version":"9c752e91fe237ce4857fbbef141bee357821e1e50c2f33a72c6df845703c87d5","impliedFormat":1},{"version":"f926160895757a498af7715653e2aedb952c2579a7cb5cc79d7b13538f9090bd","impliedFormat":1},{"version":"255be579a134ab321af2fefb52ace369a11ffb4df09d1fbfc1ed1a43c1e5eec5","impliedFormat":1},{"version":"ab0926fedbd1f97ec02ed906cf4b1cf74093ab7458a835c3617dba60f1950ba3","impliedFormat":1},{"version":"f1a661906cd0e7fa5b049b15bdef4b20a99abca08faac457eeb2b6407f30d12f","impliedFormat":1},{"version":"7f5a6eac3d3d334e2f2eba41f659e9618c06361958762869055e22219f341554","impliedFormat":1},{"version":"626291e7b45a4b6871649c908fbbc5ac98009a5182e2594fbfe80b860f513c77","impliedFormat":1},{"version":"4093c47f69ea7acf0931095d5e01bfe1a0fa78586dbf13f4ae1142f190d82cc4","impliedFormat":1},{"version":"4fc9939c86a7d80ab6a361264e5666336d37e080a00d831d9358ad83575267da","impliedFormat":1},{"version":"f4ba385eedea4d7be1feeeac05aaa05d6741d931251a85ab48e0610271d001ce","impliedFormat":1},{"version":"348d5347f700d1e6000cbdd1198730979e65bfb7d6c12cc1adedf19f0c7f7fca","impliedFormat":1},{"version":"6fa6ceb04be38c932343d6435eb6a4054c3170829993934b013b110273fe40af","impliedFormat":1},{"version":"396e7b817fc4f5461b92f9a03325c2ebb09711aebcee5c41c5fd3e738eb78526","impliedFormat":1},{"version":"4116c4d61baab4676b52f2558f26fe9c9b5ca02c2792f9c36a577e7813029551","impliedFormat":1},{"version":"a294d0b1a9b16f85768553fdbf1d47f360dbff03649a84015c83fd3a582ba527","impliedFormat":1},{"version":"8f2644578a3273f43fd700803b89b842d2cd09c1fba2421db45737357e50f5b1","impliedFormat":1},{"version":"639f94fe145a72ce520d3d7b9b3b6c9049624d90cbf85cff46fb47fb28d1d8fe","impliedFormat":1},{"version":"8327a51d574987a2b0f61ea40df4adddf959f67bc48c303d4b33d47ba3be114a","impliedFormat":1},{"version":"00e1da5fce4ae9975f7b3ca994dcb188cf4c21aee48643e1d6d4b44e72df21ee","impliedFormat":1},{"version":"b991d92a0c3a48764edd073a5d28b6b4591ec9b7d4b2381067a57f36293637d0","impliedFormat":1},{"version":"51b4ab145645785c8ced29238192f870dbb98f1968a7c7ef2580cd40663b2940","impliedFormat":1},{"version":"100802c3378b835a3ce31f5d108de149bd152b45b555f22f50c2cafb3a962ead","impliedFormat":1},{"version":"fd4fef81d1930b60c464872e311f4f2da3586a2a398a1bdf346ffc7b8863150f","impliedFormat":1},{"version":"354f47aa8d895d523ebc47aea561b5fedb44590ac2f0eae94b56839a0f08056a","impliedFormat":1},{"version":"b152c7b474d7e084e78fa5eb610261a0bfe0810e4fd7290e848fdc88812f4504","impliedFormat":1},{"version":"67f2cd6e208e68fdfa366967d1949575df6ccf90c104fc9747b3f1bdb69ad55a","impliedFormat":1},{"version":"603395070ec53375882d53b585430e8f2dc6f77f4b381b22680d26c0a9595edc","impliedFormat":1},{"version":"cef16d87ff9aed3c5b96b47e0ac4277916c1c530f10eedfce4acaeacefddd3bb","impliedFormat":1},{"version":"fab33f402019d670257c8c833ffd78a7c9a99b4f7c23271e656cdbea1e89571f","impliedFormat":1},{"version":"976d20bb5533077a2135f456a2b48b7adb7149e78832b182066930bad94f053a","impliedFormat":1},{"version":"589713fefe7282fd008a2672c5fbacc4a94f31138bae6a03db2c7b5453dc8788","impliedFormat":1},{"version":"26f7f55345682291a8280c99bb672e386722961063c890c77120aaca462ac2f9","impliedFormat":1},{"version":"bdc2312da906d4129217238545d7e01e1d00b191beea1a9529b660de8b78834f","impliedFormat":1},{"version":"62b753ed351fba7e0f6b57103529ce90f2e11b949b8fc69c39464fe958535c25","impliedFormat":1},{"version":"514321f6616d04f0c879ac9f06374ed9cb8eac63e57147ac954e8c0e7440ce00","impliedFormat":1},{"version":"3c583256798adf31ef79fd5e51cd28a6fc764db87c105b0270214642cf1988aa","impliedFormat":1},{"version":"abdb70e24d3b39bf89aa07e769b33667c2d6f4ddcb4724735d72a941de6d4631","impliedFormat":1},{"version":"151aa7caace0a8e58772bff6e3505d06191508692d8638cd93e7ca5ecfa8cd1b","impliedFormat":1},{"version":"3d59b606bca764ce06d7dd69130c48322d4a93a3acb26bb2968d4e79e1461c3c","impliedFormat":1},{"version":"0231f8c8413370642c1c061e66b5a03f075084edebf22af88e30f5ce8dbf69f4","impliedFormat":1},{"version":"474d9ca594140dffc0585ce4d4acdcfba9d691f30ae2cafacc86c97981101f5c","impliedFormat":1},{"version":"8e1884a47d3cfddccf98bc921d13042988da5ebfd94664127fa02384d5267fc3","impliedFormat":1},{"version":"ea7d883df1c6b48eb839eb9b17c39d9cecf2e967a5214a410920a328e0edd14e","impliedFormat":1},{"version":"82f75b2de1456b0be46945c6c68547f032f11238d07db45bbc9c93fca6abfe41","impliedFormat":1},{"version":"812e55580eb591f3c04245345be8c9dce378b26238fb59d704e54a61e6e37c83","impliedFormat":1},{"version":"1de7ee494c7ac185e6abf94428afe270e98a59f1bb4768e4bea7804645a0d57d","impliedFormat":1},{"version":"2c12f912bab4b1eb797b2fded3f295fee98736f8053a08d0032becbecb4b34b1","impliedFormat":1},{"version":"2b234fce994b272403881b675d6ae2e2afb2a8be8bdec71002ff8ff2d5b59bd0","impliedFormat":1},{"version":"97ba9ccb439e5269a46562c6201063fbf6310922012fd58172304670958c21f6","impliedFormat":1},{"version":"50edac457bdc21b0c2f56e539b62b768f81b36c6199a87fbb63a89865b2348f0","impliedFormat":1},{"version":"d090654a3a57a76b5988f15b7bb7edc2cdc9c056a00985c7edd1c47a13881680","impliedFormat":1},{"version":"12a6a37d9676938a3a443a6bd9e8321d7221b6ad67b4485753322dc82a91e2a1","impliedFormat":1},{"version":"6c4833182ba7a753200bf30986d254653c1ac58855d784edd8dfe82f5db98954","impliedFormat":1},{"version":"69eeee4818209fdb59544d6f74bd6ff024944bdd4050a33577f62376d5cada8e","impliedFormat":1},{"version":"fa05a4a765755e92c1dcab306ef3648fa4aa108494b6e10d2329db8b89e89908","impliedFormat":1},{"version":"ea385ec05b32ad43bbd1002a7c553bbc6935754504d60dc38ee64cc8b3c21768","impliedFormat":1},{"version":"d61821435a95c7a660d5850ce6fe9c4400787595009853d982343b8089724319","impliedFormat":1},{"version":"b88051ee09b2f0ff102fe72162c5ed85e82c5dc30e6db074cc631daa93f8e0f1","impliedFormat":1},{"version":"25091d25f74760301f1e094456e2e6af52ceb6ef1ece48910463528e499992d8","impliedFormat":1},{"version":"ed79978235b685e7e9d2ac149c6ddaf602ce7e3a30725c20023e57f011760593","impliedFormat":1},{"version":"3345fc785abb65f2263f91ba092bb77470d949eddb41fc208256b964c2ccd5cb","impliedFormat":1},{"version":"dacdfa1d138a592734377df139ae70f203669bc3f9ac45e931aa0e6f2e567c8a","impliedFormat":1},{"version":"8a49075f007383f24df5b52376e41198e341a7b715da34a90b2c54b8fc8d4bcc","impliedFormat":1},{"version":"0fee2c30562deb6c5e38f79586610c0bcaea41e2d366565e292fff7e00a52f4a","impliedFormat":1},{"version":"38ad4b4ce64de9b9947c535a21c98a4e59011742594c2ab5e1ab47171acec5fd","impliedFormat":1},{"version":"849cc0c9a354475fcf8b7a485aadc26a5f1cc60b3fccdb4fa8723adeffdbdb25","impliedFormat":1},{"version":"a931f855f3a485577e65a2e7a3d41e6df929806af57ecbad99a161162b50cc15","impliedFormat":1},{"version":"853d02f4f46ca9700fefd0d45062f5b82c9335ba2224ca4d7bd34d6ae4fc4a7f","impliedFormat":1},{"version":"5f9ab7ba179f92fa3c5dddafec778a621fe9f64e2ba8c264ddf76fe5cf9eaf93","impliedFormat":1},{"version":"a0bce0fb40b88d17305f113ed02c4014329be52e8168b01fe825c049e9a37028","impliedFormat":1},{"version":"364e53fe15122e9d37aa8ee2c8eb037cde59bf5890b46a8205f4516b529501c0","impliedFormat":1},{"version":"1a577fdc45901cf461d4edc7697860c63a60526f60b7b2ba8ff7c89a9e7a1932","impliedFormat":1},{"version":"a6da29e6495bf303eb5f0b65dca3f92711b9cd6729eb1bed3e29dbc8b0fc2604","impliedFormat":1},{"version":"c35bd33a53356146889d87a05b34fc5a130ba93bc1bb36d021c0a7c817c4cc8d","impliedFormat":1},{"version":"129e22e3a18299b28b3c4b1831609d8caff450eae041a82639acc8635bbd2b15","impliedFormat":1},{"version":"5476434514e057c7d8eb7b9dcc02cf2fdb46d6409032ebdc897e5b462a5f8334","impliedFormat":1},{"version":"e8fd94fd60c3464978e320d46dd600b57b5f4cc0c12452406c888db9f202c50c","impliedFormat":1},{"version":"b3cc1bb7311f35569b531e781d4a42d2b91f8dfd8bc194cc310c8b61011d6e43","impliedFormat":1},{"version":"33cff836b608822d3b4a52f523d964472c5437d08d81dbd1171ccf743276a223","impliedFormat":1},{"version":"8ca2d01f5f3d4d4067aadea230570afa4c91e24e485fbe2e9d53ead3b33f80d0","impliedFormat":1},{"version":"e0f69e399a1c3b367058918f3a6f9e5f29a0db26330c28208173556a8c48a0a3","impliedFormat":1},{"version":"e3c7c91b478879b40968129e9319cca8c7bfa7bc838f80329f7a150c03651d3c","impliedFormat":1},{"version":"26e50bcb0b06b83867f30b69ea99f926076c292cfed812e52db9e91d12ce1083","impliedFormat":1},{"version":"546592d6570239f12eaae6e68396db0e137efde4600765189ee277f6995bfe10","impliedFormat":1},{"version":"73bf1badc6969cf5eba2018b20dce1cc0dc00b056e66870abdca1f7b1275a648","impliedFormat":1},{"version":"a26c0a065b5de2cf0e826df7fedc3cf3df1d2bbab7ab395933234ef8adcf11df","impliedFormat":1},{"version":"23ec18c2cfd1219e227c34a2c286332708606c1d7dab8e32206e0028cbad60d6","impliedFormat":1},{"version":"ee689c67c5fa83d00452540077ee0862def738d4c86322b6f86411cfa06d7c6f","impliedFormat":1},{"version":"da27512313d85ef30b2dbc916b227ade032b09171f1e9b3af4c2897540e7f464","impliedFormat":1},{"version":"65ae87773d95fc56bce2c756dfcbcc73d8d05ac15a9ae73e7d81322850879fc8","impliedFormat":1},{"version":"fbce5d54e8610bc041463fc4e034f40e6f0b7889d9de27e7cda2135f254ddcb4","impliedFormat":1},{"version":"6b567540de9240ef5b14e86239dd821be6e90274df164ef61a11921344019410","impliedFormat":1},{"version":"c2f426df0b5346a824013c507c611656884f4681e23782ae5bc396cd6ad6fe00","impliedFormat":1},{"version":"f737d4c256faf88b0b84255da24ac95de364db1c5564d67856fc2be2571e477d","impliedFormat":1},{"version":"082be20017cd0774d12bf0a928d0834bcc83454e706dfb3ebf2c314b8065cdc8","impliedFormat":1},{"version":"7e0b933925fa33fca25738c4daabc959f315f1ca3b2431a724069db01ab4e53f","impliedFormat":1},{"version":"34dce1ce616534c11ce825f1acf55cbe45bf7f38b48ddf451fe0ebdb8b04924d","impliedFormat":1},{"version":"42aacda77a8ad883d423c7b39342cd036a35bba6c058b0b067f75af5ec0eaf6b","impliedFormat":1},{"version":"677b3a027ec7df033eb7df33eecfe77e066debd14d983a22916bcc67214b222c","impliedFormat":1},{"version":"547fbf3353abf40a827b1b48b832f9139e41cc600dac954cd4dd1c8faf1df517","impliedFormat":1},{"version":"dc0a609a8ab9995e439c887be9327c272400a3aadd76dae41f6c4eae9af723b8","impliedFormat":1},{"version":"0e792560a03e247d4f6ee7dcc6f9a7dbf07e55caa6faad2219875ba02480e769","impliedFormat":1},{"version":"c0c5ebf4cc5ef8ed64733c3dea8de54fbb45bb0a40306d26d840e50a954327cd","impliedFormat":1},{"version":"408c753ef793f71dffa590cfc3a95e5246ab67238f71083b7a96056b986e8964","impliedFormat":1},{"version":"6650fd077aa1900d99c2a52af9dd79971322e2991e70e463331d0cd60fe9f914","impliedFormat":1},{"version":"dd293cb09436d09cdd150565d54a3cd72674850eb842a11487cc3799357b9cf8","impliedFormat":1},{"version":"e32ceea1db1cf16192a7fd97fdc689dc625ad1c57555a2dc18e7b5c019216482","impliedFormat":1},{"version":"0359c9ffe72d124c521a64dcb4f37a6391e9234e0496a38f62ba9b18be1f1d89","impliedFormat":1},{"version":"7d65b692913489b7a0179ef6266bb52985d7545fa5baacac4a803149b27b98f2","impliedFormat":1},{"version":"b1cdc896fa6216d1ff898423395f5ca6bf3b1118411b7f5ccc732c8acbd37e19","impliedFormat":1},{"version":"8d986fc98555e4b017177816f51b86236a357ff9c468f4c86e5b4096775f1639","impliedFormat":1},{"version":"37441514e58c1412999e02a2931b179a4e9330a5b67dd8f75b3dbee19e1b33db","impliedFormat":1},{"version":"a1c9f45912f4ad052795e0ef5743d8e1a8400efb0393a13c47c2b6320bdd9406","impliedFormat":1},{"version":"6402c4b62a62f59d78ad558c0abaa7a8059e966f083c99b89fd4b24302353413","impliedFormat":1},{"version":"a8378c2611bbac166238618fb9bc0af95b77ac59447d9046af1c4188ad758c1b","impliedFormat":1},{"version":"c745295efc9d176836701a358fcab80c77ca7a63f4c8e7bfaf0da3a0910607be","impliedFormat":1},{"version":"9074405ae056ee3066a3cdba3ad29eed41ce32c74838b6ca09e14ba8ed9e3123","impliedFormat":1},{"version":"d486cfb79e7cb30710b2f3cc8c02909fe71b34e26938ba536100ff207e38749f","impliedFormat":1},{"version":"c1cd76a69f98ae809c871a3c9825a79bf51252a95f8d039d13dbb60c97d2f33a","impliedFormat":1},{"version":"d668cba43ed8e4364f2625bfc373f51ca7a0ef4333aadee0b953c6a8ce0ad953","impliedFormat":1},{"version":"5c93658c69d22c1e0281a1672bf9a0f3efed19e46ec0456c1fd269a15354bc2e","impliedFormat":1},{"version":"b80ab976d1968b44e78d7c6312fa7895989e30604712001e504ec74c95d50c0f","impliedFormat":1},{"version":"7cdbc72e654c4cc3a95cf44a0f050a5affa822d626501731ea688deb0662b027","impliedFormat":1},{"version":"af12968b48a6d0d45a4737c6a02cdadae2ace6738b65a1c3425928677154db38","impliedFormat":1},{"version":"198e2304a766d645a7940a2c6ee7687030c07a8c3bb2e84184e4acaa0a87f325","impliedFormat":1},{"version":"ab9ea3afaee16b10a6d7d2fdde5c3c66a154e1f93266832a439ea4ae8f92ed3c","impliedFormat":1},{"version":"94ef22b94d7cafa97366308aba95caee00b8c740567c518dae3dcfd09c58a4d1","impliedFormat":1},{"version":"66332888aba679ae44ff8405d814a794a8328730d008ab5ca2c3b0629a1acc38","impliedFormat":1},{"version":"de9d02955efdcff476bd95184b75e321d962b8fc22f51b2033da443ffa33c029","impliedFormat":1},{"version":"8134618a47361a523fc5daea803db42a8f0751944e8a314128cdb4d51a4d0359","impliedFormat":1},{"version":"3cac1d701152a399417ca60ec47f9ca83fe96a4c519bfc4b9ceb79578a894bc3","impliedFormat":1},{"version":"ed74d99ed075aa260bb80cdc4286fd04d5ca8fff5ba7611c22c0d4891418d08b","impliedFormat":1},{"version":"dba5745334b583e1b8f7ef055939cc750c546c250a74b95e0ede1ad5b863400a","impliedFormat":1},{"version":"801f5c06b1bdb1f520fa9d12ad1cb1f0f5a60233ede2d6313a1894f4c48208af","impliedFormat":1},{"version":"afe7e63907fb014390c8b2fc1bea86232a17431faccfbd8248e9ecf848c698e4","impliedFormat":1},{"version":"82035374d5288745dd1225e6a0bcbfc5c7dbd53b2823f432c56de707a2a3847b","impliedFormat":1},{"version":"dea06d130aa40f953867c2b6d5bad2376091c55b64a4a2d2781acb009541e100","impliedFormat":1},{"version":"c92258027ef4f99109f802bd82af908afa731ccc379373b5ee69cf420b40f060","impliedFormat":1},{"version":"ba19ddf03bdbd63a4a44ebb761439016507911f153b1b618b7aaca18801b1e1d","impliedFormat":1},{"version":"73f6fd0ee5da5198efd378a07383da0337b8e73a30a53420a46a4a098ea34f26","impliedFormat":1},{"version":"1b5962b26e6698523cbd71a11281f59f6c4f57099fdebb11cf68fe77abac8c1c","impliedFormat":1},{"version":"f2a46afafc384ab188f6ce5cf2cdb4859236e111958f8d49a1a3941088c8983d","impliedFormat":1},{"version":"afda2e399d17b76e199f56029d053308fa3d93a90b9565b06a81be01fb86865c","impliedFormat":1},{"version":"5080b4699f7e121f9edc746e4b6cbb10c61ac0ed707425ca572ac0d67b593563","impliedFormat":1},{"version":"26090d8875766d8cbccdc70d81573a0a0cd2af336c2ab991021706ae24e3920b","impliedFormat":1},{"version":"6141b4f6daf9d8770f32c174fb185714e97851a345b5734256b2f615f6bfcbb5","impliedFormat":1},{"version":"cd454337b92454283ac6fa6a271d8688a9a875b32386a33c747fd0cb67407843","impliedFormat":1},{"version":"6981a0c4763b53c9852eabe40e5f6abcf1c39b26844142bb32033f6a4c82b057","impliedFormat":1},{"version":"849bd9fa53e4829fda3a678780e1f227a729adc357f521c8be47a9aaa053b82e","impliedFormat":1},{"version":"1749042b52c8e5fe166dd24318d18ab56db865cca56829a69ac42e6bb55b001f","impliedFormat":1},{"version":"5f8eaa67e3d8b40ab42257d96a714fafc809ab526142230a09f58635c192cd22","impliedFormat":1},{"version":"eb99fa95f75e0f7b38661b5dec9f23ac9543393b120a1434530d95e69d4e79b1","impliedFormat":1},{"version":"b62db23755af69ece75a6533bfdf73dfec00fd362f60aa84c1a779868cfecbfe","impliedFormat":1},{"version":"1f686b1909ddaced1a28e5d0b68b91f43a3ec11e048e504a5672946235ccc4a6","impliedFormat":1},{"version":"3831835fb9a201fedcd846eafe14e6571894bdbca4a546d74172064ee6a8bb8d","impliedFormat":1},{"version":"c4ad21dfe866d96f982607c7b12cc8439b692a84859afc6474b46b07ae912db7","impliedFormat":1},{"version":"be0914604acbe35e8de9ff368fc7bd8fa75ae8f30be048a5d7bad09f28b40d1e","impliedFormat":1},{"version":"2b9d55a7e074cd9858332bc24dede0ac521b21a9ee586394c4c4895efe9cda95","impliedFormat":1},{"version":"1369e4f275724ddf731bc351f6c8e580ed7eae969317b6d3060fe348304fb6fe","impliedFormat":1},{"version":"f43678d8b19945df13814b6838120b7c7b8dfdce7569296b1b1976eaf085c705","impliedFormat":1},{"version":"e13307ee0b3a31b312f610895bf0e322cdb69f786568a256a9d547b2c03d6203","impliedFormat":1},{"version":"7e206779ef1fd0a3d07f2206196f2d73ac66d9451822c0b38a168faad5ea8106","impliedFormat":1},{"version":"13baee3bc1768b9923c49f08193495c4e6781262a64d59a2e63c141b771a9fcb","impliedFormat":1},{"version":"5bfe6ebae188356b862d8466e5449a78f78f1ec44651d1e00ffdb71fa194aae6","impliedFormat":1},{"version":"771dc53932d5d89ba9324d52e961157cc726084d122a8a0310c34ad397660a62","impliedFormat":1},{"version":"274bea8a69abcb66240bf52e156eac557019a956f50b0db70387863b57115eb9","impliedFormat":1},{"version":"f390fa9fba362e116cd59e005bec3c9a40dd6c0d47f02ba50b5e6c3e62700198","impliedFormat":1},{"version":"b6914c5199969e2aa490bd347dfc5e289813b260dba1331d06c55b3cbcab9b6f","impliedFormat":1},{"version":"40dffdf672c4e9c313d0b2537907b4a7b749c995c2c0c475807877eb2e499f48","impliedFormat":1},{"version":"fc24fbef61c285e202f2484229976dfc67b0e7b7a27fef7a95ffdf8d63057593","impliedFormat":1},{"version":"45ead3296fc43b8929db6cf82e2b55f909428ca150ab55b7cbf64a4504a5b5f1","impliedFormat":1},{"version":"93979165f85cc256e159ba859693bde5f4b4ebceb2da65ea4695662e21fb52e1","impliedFormat":1},{"version":"ef700e2d818d6ccd0439eb84bb4db7aa4b05ea406e32d67c33238d7ad27de42f","impliedFormat":1},{"version":"ad05d2d60f1bccc4fffc28e239cd9df3290ff079f3ab8d0e8cb52739a2827a10","impliedFormat":1},{"version":"b0c47ecc1d22d613ff438a1cbcf55a15092a25a08264dc30af1f4948495c125f","impliedFormat":1},{"version":"fdc64b163f42e37dbe762f9b64dc2d6914549f3400f7fb18d77b58f569a64914","impliedFormat":1},{"version":"440195a83a763349c6c007ed7e0d738fd1b7eb7e1773c764ba4a53a47b590700","impliedFormat":1},{"version":"4cb733b1156a4c30cd662b72b3c79fd23763036b0e552f63c24e791983f493ca","impliedFormat":1},{"version":"761a9b0b1d366d94da1884decf722053122a5808c713dafe7fcaf22d8f9643d3","impliedFormat":1},{"version":"10d960eb8b8e27876c99d38fa27665927a7c122c38773121f8f1ada4738d0320","impliedFormat":1},{"version":"266aeb59e78be75a52cd41e3ce6f05eb0763c47d383cd081711010513217a05b","impliedFormat":1},{"version":"d4936aaa2e2fd93908a9e96e7e48bf05caa4973a0f25938cf02938403461b4d4","impliedFormat":1},{"version":"be93596d4f187f67d7845f895d10073ccbac95214f7ebf8671a438249b6e9787","impliedFormat":1},{"version":"24da93576c3e6b7f3f1c31b67fa59bec695594f3d780ef175c06ecd2f7f326b7","impliedFormat":1},{"version":"8ec695c9c1352c4be7c0a69befdd73ee700e92941d6306f5cbdd56688f564647","impliedFormat":1},{"version":"9d74f18aad3b7c8a0336eacd427c659bd8bf57444426f6f0e41f8fca1ceee97a","impliedFormat":1},{"version":"a4e6bafb319f30c835ef3fd3afe64de01d84e82850a98c5d07db7ee901d34f4f","impliedFormat":1},{"version":"50d28622be744b35a9cd858facdf1f0717f889f938eff8a0c35135613d324677","impliedFormat":1},{"version":"75b1c7f76848840325e9bda20ba8ba8328a4fd8dce56831b55b68cdd955a4c01","impliedFormat":1},{"version":"f93026b391c4f31b8e6f11e49b2dcaa40953788d25010dc190a751acdd7b442a","impliedFormat":1},{"version":"666f484aea575137508bdf1156d7d91e929a54abaee307a4bdfeddf59c5d383b","impliedFormat":1},{"version":"1eefe69c9db42deb567764f73d45d6a468993428bf147d1e3244585b42313c05","impliedFormat":1},{"version":"5f375f1e6566d3f9a8da008710738e9826ae2dc229d5e49faea13731ace6d506","impliedFormat":1},{"version":"980f3c0431cc8689000e35012e23a248dd781e3e5282057126624a7137a3bf42","impliedFormat":1},{"version":"9b8202cbccd1249e8640ea844c0dabbb99a604a6ba52feee963e557680ed285c","impliedFormat":1},{"version":"27ecce15e099f4934bf92a9ab29be90c03a9a4d443b4ed5446ebf6e953f69ce5","impliedFormat":1},{"version":"473f53747832bc2588d9e9e0347d3fbcc8aa8e61124b4b4ed54185f930e4f80e","impliedFormat":1},{"version":"bf96e903108160a97d684bb1d0991faad9a0c9a209759a7338ea22fbd4510f75","impliedFormat":1},{"version":"ea99aa2e537966df22f8192e99929ee81719c1cf0b9d9d83d0c6fed53325ccc6","impliedFormat":1},{"version":"f236fcba859b43f1738611471ff3824bfb7b8dee5b76b5385e717968c9137568","impliedFormat":1},{"version":"ee0ff5abedfc526345058f7d0bdb94f038db1d2b85e527a72f8b1d50fd8585d1","impliedFormat":1},{"version":"61029abbe36480fb1b2ab39f2ae333b909e9e25ccf3e192b50909cf26140bcbe","impliedFormat":1},{"version":"d0060157c0e676a2da04b924645eba5892a702e9640c27b9d0aa84e8aa036421","impliedFormat":1},{"version":"92806a9f12a08152730a0d4ccd78c086b20bba8a0fa0cb5eca9e5f8152124f4d","impliedFormat":1},{"version":"b5e6f565409b4ed7e2aecf4e66f2a10574297814e882e68395e8149677d52a5e","impliedFormat":1},{"version":"e27fdbe93134e041e958d04c558e5e8a546367e32f1ed8ad99e57d10018ffeeb","impliedFormat":1},{"version":"b6c59ec90dec5c2db22d3effeabb68023cea59e5351ff94146d139757d36b8d6","impliedFormat":1},{"version":"74a907fa14655328575b29e4dbdf58440dd07c081d9d245f785c4143d10510c8","impliedFormat":1},{"version":"c624b65789f71d3fe13d03b599adbaaf8b17644382f519510097537736df461b","impliedFormat":1},{"version":"3fbeaff576ce5b8035224fbcb98ec13b7cdd16cdbbf8ee7b4052d3d6330683fb","impliedFormat":1},{"version":"cc8eac1829ee2ec61323b3af1967790ceb9d0815ef8c40c340bc8090c17a9064","impliedFormat":1},{"version":"5947f213795a08df7324841661f27341937a5603edcd63fa2d2d66fb11864ec9","impliedFormat":1},{"version":"2d9f4d58554a246616eeaa090a2fb0dddccf412e88617975138389fb15770ca9","impliedFormat":1},{"version":"500561aaec426c1d47bcb10a78c275b7b59cb489c19eb72e1daf4d7d241e4f4a","impliedFormat":1},{"version":"c40c187aa66f4567b5a6b1c82d2dbb4678323a2d4e45f9cd12ba56014df9a930","impliedFormat":1},{"version":"e61b139483dcba16956ba1d374a0216d9f6d20976e1b1d89f1eca7bc766616e8","impliedFormat":1},{"version":"aa4f4974d728416962a6c690fb9eeb69d6e7866f5489af51fe8fb083fb1f7f0f","signature":"1f010e810c51a0c6f14ba593f16033b39973b27e41742750dd4e99decadf13bf"},{"version":"1db40b280c30998ae1abf24bf924ec0baac6c38bbf6114c7b384c694f27ae098","signature":"fc9b3e36134c9665b9db3827dd1b098b08c58df5d12651cf4a13ab406ce8ae39"},{"version":"20153a3155df97038d31575fdef19eaa95e5c236151f9bb960dd355ba35275e2","signature":"41ac57d355dd271019e24f06783f0aca9e0ad270d6f38b7d49ea5ce8fb860e2d"},{"version":"486a8812f079892cb9dfc7fa10139a8c9d752d65da2b7f081814a87c896a7e8e","signature":"b7a0ed567e54448694eb590edb0fc7995c89d059d8be841e842553a874e7993c"},{"version":"4cc0a2845b33559ac55e66fa796aa9c8da863704f7c05b8d225b0c800a80c1b3","signature":"37743f9876be6e535965e887624e9697d2a443d7ec956310a62d292d8acb54f7"},{"version":"40101837465c91991e67b7ff753c0e3d5d486849f7620795c2150fd59fac171b","signature":"6bca4d44413757a599e9d4f114956edc6486d4540a6740fddb1d5e7d8fe3fd14"},{"version":"b14e44a037a7d825a3685dc71889ace994ba2cbb5adbabcb4ebc00c64aeb16f6","signature":"d00dd082032453f3b3a466168badccef28065921c70f72ac302fb6240b02d9da"},{"version":"4ddb1c9ecf68032922488ccc010864008d276c16a488dee834570a010e55f70a","signature":"e0465a78d57469e4955cc82138ee8b1f381cd3e1acce1da7a6ed1eaf059878e8"},{"version":"a620241929fdd024f52556f0964fde6b0a2c073755b3360f2a084f02cb360c0e","signature":"cea3fca18694a60b2387c744d1a53ab28fffe44d294511b6728be540781e2dee"},{"version":"5835e643d9245d00f781053300852bff8d747a46c9ff67f79af3c430a5c45fcd","signature":"9648a6f806a9ddd1d660264fda1929799b753f8304f6edf34b90c815a83e91fc"},{"version":"04fd5882c4850c2c5d9b55fe1d82e7aeaa36131c4b4eb9ead0b9d1813a9fcc47","signature":"8d596cbc3b72553e7d35dc71a5f4ffcfd09f6e36e5b8ad630c352615edd12e65"},{"version":"495ae1c0b4d103633c04ee8f8888ac610003196db7e5a0498384f1ee307f25b2","signature":"377cee38a5e5d55ed8dd90e468a75c354d8b339a9d8d59c33dd8bd5737ecf9e8"},{"version":"0c7923b699f5a75185bd3d107ade6261ef4b10b99431db04dad39d357a30099f","signature":"2481d14a256e3819ccaed4879961db326a7e64ed97bf2a453b9afcb70d105a9b"},{"version":"805a34dc0d9880ed41dd7a8783ab6f70d75a8e421dd5f5187201c611403d43b2","signature":"af96b499e87f8d3f1848054ef23aa590d0e72570daa7af588ae0d99c12c6d730"},{"version":"b92f52e63ce4d609a368691051f6556edac8323296138b5b0af478b89d5c917a","signature":"c1687dfe229b7322b118fd607515b03d605aa088070aad7616fee50bdf2cde02"},{"version":"54e3e5cfbd7533f681d7fc4d063dd2c47a2faace507055a59159c27f1e009c99","signature":"f0d364924fbf421124ab2fe67ac5074b35869051743db5302c08d12fea086782"},{"version":"1484029194980960b99da46757e516c982bff30431ddf2a6188b92e93306fd60","signature":"f955412d8793265db63d8c5c3f7222acbce1e6fdaceea9fb4916646d8701271c"},{"version":"880ab48e2f79d646533a0ad0ff30c2d9576a17e869ccb61260681d6c1a183ced","signature":"3914f43a4a0e5462b4d70fe7413656653e4f1ac816236edd95e76a22293a9b89"},{"version":"e7cfc0d59d858002ade400e05f0d4f9b8e6fabc73b3d26601fe3372f395b7827","signature":"aebedac76c29fc53603bcdb30e5cf0677903760b326d2d7212e44cc6aa290456"},{"version":"a9373d52584b48809ffd61d74f5b3dfd127da846e3c4ee3c415560386df3994b","impliedFormat":99},{"version":"caf4af98bf464ad3e10c46cf7d340556f89197aab0f87f032c7b84eb8ddb24d9","impliedFormat":99},{"version":"7ec047b73f621c526468517fea779fec2007dd05baa880989def59126c98ef79","impliedFormat":99},{"version":"c5013d60cbff572255ccc87c314c39e198c8cc6c5aa7855db7a21b79e06a510f","impliedFormat":99},{"version":"2fbe402f0ee5aa8ab55367f88030f79d46211c0a0f342becaa9f648bf8534e9d","impliedFormat":1},{"version":"b94258ef37e67474ac5522e9c519489a55dcb3d4a8f645e335fc68ea2215fe88","impliedFormat":1},{"version":"4c54300bb2670678e16cb98079486f3f2bfa061dd1b954e7e4a8999959420507","impliedFormat":1},{"version":"37ee2f94a1c5df7a0194cd1740414722e58de5a94fd46e82329b4c217f5fbf36","signature":"710a00acd5f919a99bdd9b40824b024b39e9d546b5e611558fbc0ce155f422d6"},{"version":"3b5f8c9c5257f1cf36a94eeffed2588037e9cc7931d90b752604c2baed30cf81","signature":"f238db8bd54a02c277895ef9300e2d809ef738cfda6e91dd295e48d7196a7f0b"},{"version":"1b43441b273aa21c1e74fefa774d5a7cb50068e5d4c192a8f63b9c95c5580431","signature":"32f7c168ee545e9b432d2a861f4fb0bc645e21e88c774cedf54e72d1e3ccc049"},{"version":"3b5f8c9c5257f1cf36a94eeffed2588037e9cc7931d90b752604c2baed30cf81","signature":"f238db8bd54a02c277895ef9300e2d809ef738cfda6e91dd295e48d7196a7f0b"},{"version":"cca7ad065c151c5e7a249cf58f8197c624ed59599f7de26bd12616d5db871ce1","signature":"2422cbf16ad393951cc6ac41accd971a159390c550a104edaa401f2a7287ffc8"},{"version":"cc17f1215c0f763b8191b8c9a8c96a44c0214b4e4e3ae557c226260fd3f9fde0","signature":"253ecc4cacdb0159371108e2e399e767079b0b2313ceb097cbac6d23679d894d"},{"version":"fbc71068db53fcfa830ecb927690c8affe9ca6bfad63a15a743771091b3757f4","signature":"165dd19c73e86a658b498725832cc948ff516fa248195b7fc7712fe4691b39c5"},"4641f9906e52b76dbb9ea43d376b284564031680beaac4d7234514194356f284",{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"f5705d196b442afbdbd971b6e44bad96f4e32afb53cebfa2e5afe3140017bfc6","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},{"version":"6c05d0fcee91437571513c404e62396ee798ff37a2d8bef2104accdc79deb9c0","impliedFormat":1},{"version":"7c1edcfa7a0614bfc279aeb8ce3e60e0642b1c24a6ff3d4d03d3e256efc95b20","signature":"8ced3e19a179346437c1ac65e063a793f4559fd0281c8b4c6ab4e34e51892085"},{"version":"c3d577953f04c0188d8b9c63b2748b814efda6440336fa49557f0079f5cf748a","impliedFormat":1},{"version":"787fe950e18951b7970ec98cb05b3d0b11fcdfeb2091a7ea481ac9e52bf6c086","impliedFormat":1},{"version":"13ceda04874f09091da1994ba5f58bf1e9439af93336616257691863560b3f13","impliedFormat":1},{"version":"8e09eaf33b48c548ccb01aee34bf73c5224438b83b6b952a2bcdb3158765fea3","signature":"c2b5b1a245f8b91b6d96b8c8a265d7ab28261c35ea9f32f88049bc9925afebd6"},{"version":"b8cac4b95e1f8982976ef88b55dc38b9b6c65dfcfc1748fea61c1fd67b3f007e","signature":"20acfbd3025fdf803a409b722815a46320d70641b055c569f9fa15bbeab7f780"},{"version":"8ea1db12675c8f20931a02ef0f94713b03434558c60eb789cf8a82399e066e01","signature":"8017acef9a0b4c09626428a9231b042ba85102cc92ca1237a376906b1c3af7f9"},{"version":"a346701ad6dcdaa58e388fe0995fc5304c09c395b8cba68ed872780f8c102004","impliedFormat":99},{"version":"7cb96ee534dedef7eb138952dc02fda0cb2caf2e02f2d3c08afab7f978d58dc3","signature":"59c51f40965f62d780db1bbbc54a22df9c66d88e6a86e96082f97e9cb9f600c1"},{"version":"b67dea8a8d35c004c6d94c22aacbbf2340b0e536c614e4c87a69d8814a7b4502","signature":"3309423a2837bf899df1568eaa9c41430753bf2957451b4b0494c7e4f829ada1"},{"version":"8dd450de6d756cee0761f277c6dc58b0b5a66b8c274b980949318b8cad26d712","impliedFormat":99},{"version":"904d6ad970b6bd825449480488a73d9b98432357ab38cf8d31ffd651ae376ff5","impliedFormat":99},{"version":"dfcf16e716338e9fe8cf790ac7756f61c85b83b699861df970661e97bf482692","impliedFormat":99},{"version":"647b61de5cb1f53e7265022c6f60bf25a43b75ff71bde690adf9ec5f74a22688","signature":"d76d7a53b855e40233ee94d7991f041ef08798ce237f572fa1fe5120792e0f3a"},{"version":"6b5f886fe41e2e767168e491fe6048398ed6439d44e006d9f51cc31265f08978","impliedFormat":99},{"version":"56a87e37f91f5625eb7d5f8394904f3f1e2a90fb08f347161dc94f1ae586bdd0","impliedFormat":99},{"version":"6b863463764ae572b9ada405bf77aac37b5e5089a3ab420d0862e4471051393b","impliedFormat":99},{"version":"68b6a7501a56babd7bcd840e0d638ee7ec582f1e70b3c36ebf32e5e5836913c8","impliedFormat":99},{"version":"89783bd45ab35df55203b522f8271500189c3526976af533a599a86caaf31362","impliedFormat":99},{"version":"26e6c521a290630ea31f0205a46a87cab35faac96e2b30606f37bae7bcda4f9d","impliedFormat":99},{"version":"3124a8b0edfe90400cf4d14d438dfe6ac3af9ec9a6181feee10f48390aeb1815","signature":"4be287c460622f9f8329a3ac0eac7c67852ac6ce7a2afc20dbbcbce631ac0077"},{"version":"4baf188c35b156e296c698996ad856ed36a6c99e9516efbc34f0d6d5cf8c90b0","signature":"d37676a4a785fdfca846f0072e1a73ed12a65474687006de46dde9f3e8955151"},{"version":"0af9fbd0654cffe8b1b2ab54c402c9d9808eda35bf2bb10f6cf60d6d6581f87e","signature":"0a5a9f14c5cf8c76f560e44248244813b1ebbea85f58b3bfacc20e61aabd1327"},{"version":"5a6a79cccd7e8dc78d8ccd821e6eceafe0c250664fd54d2a21a27ab97565a74a","signature":"1043c497f77ed2451a49a4fde80a171b375ea0bc554ac33d929ae2858abba968"},{"version":"e6b8f3cd057e49a50b57a52acc38cff7c224def2249464d489295e0e1d200af6","impliedFormat":1},{"version":"28fb378c477a8d75a6f3a93712b4c73117a899b43b9e91d4cbc90f8564da837f","signature":"4ef8b0b2f91fee53ff8b0ee7f69fd93b8a294bd7da4c44e40057bf1e14aa0763"},{"version":"af7c75f8dff95bb6d0219d849ab3f8b180b56bda4164970660cbb7aa6a611650","signature":"633827909be7b5b7c58917c328d25f92db977f250f3746eab009a1ec6867c7bd"},{"version":"cb1302554ed2569a800133ae614d0e5e893458ffb1dba095c95f40cb06d90de4","signature":"c814541b728f72774f73285b305d554c7d2c926169d288ba0e7dcf43841eb6d8"},{"version":"6b94ac2b149e957fdf16b83633c33ae4951da15e71fa9ba116f3e88630d9d172","signature":"d023ac5ad8185cae8a8889ea6b28af65ea9de8f03449ca6b7c724741fc77035a"},{"version":"a85da2f006778aa98cb1267a3a8cb9bcd9e0b7c85ee5f12093c9586aa63c1bf0","signature":"26ba71f79eb1ccc526399c703ceb9595712a793b7d939584ca92df4a3ce4fea8"},{"version":"ca72261194801b734d598311d5f99fc4a14e7bdbf4284740e126ad5a9d0f90b7","signature":"31ac1d9acbdcece4cf25903665e75d8b97a4b13c96c22759da2b7ae1ad6fdf79"},{"version":"7b35e1703f34da0bcb5c0b403705c35af68b1a44b2b25d335833627a0dc35358","signature":"def7a1cb834e525f214b851b6ac2da7432ebcaa0da0c31d3022fb16a19d3cade"},{"version":"f8f13452fdad4e1b616bd5d38014368a825b7c9e9149116034bd0dbd13fa7623","signature":"03fa63db60080fca0ab4de3c9b9c292215c420102ce9826abd6f9e22afc49364"},{"version":"ffb4b3c5933ecd56f5d78d8b235893fe8919e3ab3c06f212c9f19cb987a0c17c","signature":"c67ee0837de6d6ee2b458fd500364c23b8d41052b6390cad63da838f3daec64e"},{"version":"cf31ce99f03ac69f9821b4463a366c66698ae8e7eba5c06d2ede63d5cf7309bd","signature":"233bf868506e6fb7576da957ddead506efb374fe8b70a1b56e0114f231fdadbb"},{"version":"2341f5d3379758c9659806e518299f9a3dc394128571e379ed83941deae83403","signature":"7cc49a13d6dc95645c5e5d5fd44f7b3f5c69dfe80b50bbfb48ee0598195798ea"},{"version":"7a14bf21ae8a29d64c42173c08f026928daf418bed1b97b37ac4bb2aa197b89b","impliedFormat":99},{"version":"23cc67b5360458decab2e93b3827aebbe142fd2d9f76ec418f96cb3269f1820a","signature":"a0e3d7ec764206d4047f5be0152f038bc3498b3fa0751247d00e02267906fbcd"},{"version":"1179ef8174e0e4a09d35576199df04803b1db17c0fb35b9326442884bc0b0cce","impliedFormat":99},{"version":"e2b4198bbf3968eae76d71fd04074b43f802357d997dbd01a1721a96e5895383","signature":"89c4c894c2e107e6acd529ccc90f5d3ac56e9e26eec7acc69db5bc74c67f66b8"},{"version":"9f7a3c434912fd3feb87af4aabdf0d1b614152ecb5e7b2aa1fff3429879cdd51","impliedFormat":99},{"version":"9a91313aaed0e8358c69fad89d12a1f5d148bd7fa5ffbed925e6f8b368617ba9","signature":"a0d654569736836260ac4805fe575fbafd16a3fd838f8b503a59a98b236073f1"},{"version":"caf4af98bf464ad3e10c46cf7d340556f89197aab0f87f032c7b84eb8ddb24d9","impliedFormat":99},{"version":"71acd198e19fa38447a3cbc5c33f2f5a719d933fccf314aaff0e8b0593271324","impliedFormat":99},{"version":"dfd466a53a86f0bd002050d33e96b5385ac4e102e93485ff8d9943fdc2fbeb12","signature":"bb0dfbd93a35b232bb2b36042266c565e235afd18be59f6568c76ce998c22234"},{"version":"a9373d52584b48809ffd61d74f5b3dfd127da846e3c4ee3c415560386df3994b","impliedFormat":99},{"version":"cbfd5ef0c8fdb4983202252b5f5758a579f4500edc3b9ad413da60cffb5c3564","impliedFormat":99},{"version":"d48446fe6380e0fb272988c37992a4633b7002dd7e8faa639993f38e010953aa","signature":"dc27b41119d6806693f9e4f0d68431d33532f737a84ade77e34b76bb8c9873eb"},{"version":"e00dd69f218382063242c4289d6d06afeb6f6d78cb08347e2616b9ecde3ee2fe","impliedFormat":1},{"version":"8867eb50bd0e1ad48c62ab59dfc75e72bd84927db577f01fdbe35eb993bd20c5","signature":"92039992eab91530ce8881f225a288387c72b9b083cb317e8651fe3e76091210"},{"version":"e8b63374b9ba26711a8662d990ba7c68ac8c6939b310118a70d3b14fcf35c3da","signature":"3b9bc9cffe2614c98dd6cd5f26175542caeb27c741bb172dcad0e38c1b5eb628"},{"version":"387577b85c9e687c9beced24a6f51cb891662f6475eed057399d5e803582a2cf","signature":"a6b3abb4b536c70d2fd9ea293765ec226a9c1c1f0a498a032cef5d62da527884"},{"version":"e4e0f4db271a2acdc3d3e0348d82f774321c3b6510cfb3a71f4148f72f81b3a1","signature":"16942a38126b78867aec78e42f67f692045d2623a0fb6e2863dee76c7b43f639"},{"version":"b1f07adcac3fdb6fd0eea202fad01a2b19fa0f6fb496851a6369a38226c91718","signature":"7e1a434815e304a5c563a38d640ca7e446a739bde5dcaf308d596ea3d3247df4"},{"version":"ffd95067dd1e72eaa7365e4ff2ec31757f666a65fde32c880ec3fe6991188d6a","signature":"8f3fd0bc0fe285bd80c1d85c6ec3ad97d158e297ea8e38e94046d71bfc5d4b48"},{"version":"67f6629fe8e0d07d7997b9804a56d12d9365d050995e26a897964ff2b4365a58","signature":"4178d89dcce99b41ff2e6b432ff5d7d9d6a7aca14e907623f67d998cb5d978ab"},{"version":"3a259f9169edeb7c2da520635c1771b2f4559268b5179fe7a57f0d8569263b43","signature":"295c799fe2e232720b1a0784bff1bab5e8caa4113dfc28bd21d406823b1273a7"},{"version":"a2a54ae35ffd5225504208d5b39e3f16f6f38a8a9034f8b03846e3fad1351772","signature":"8c70c3268343107abde7f47070f90914926e66a8d8bd56950106661ee731c806"},{"version":"2246da7a296cfb0b863fcdf0eb1eeec10d4a0e8b7d2ac382ca68a8b0ab7ea2a7","signature":"977905264fd286a76c6bde3f7bc9ac3f15b3b8f81d884a1f076655c91ba9fd7f"},{"version":"202d479886b3bac02a38a213f8b608c134defb3ce08a6989b385ad84d9e992ac","signature":"beb5791e44bb560baca30a615750db705b8af0348718172918f9a9390e524571"},{"version":"7f2c7b0bc3d0c8c09ee59d4f364419447900f3c80a492c2cac2e9b175f7f0db5","signature":"02026df659185f43bea8519672a1dc294f52629290dc21ef4c694e13b568f649"},{"version":"a5b065bcf783d259d4a376f45ad4400b07d09d4df0fb63b373d8d4dbdf5b853e","signature":"cba4d5ec8da567f913ad1b02b8e4641e54baf49e6703f0315480a1e209976a87"},{"version":"97568d6947b7898dc9ca558f75aaac1095efbd6f6a2254da433abfa19cc708c2","signature":"c44a4b41e5dc87e38fa03c16bbe87998ea6ba8a8d5f3fa763cb4edc216bede77"},{"version":"9fb7482125866099c55a10ddf9e2239898864e04bf6d39fe617c2585c1070fcd","signature":"286ce2de4b0a7b338be55d0d7de80217ad21c6989830028cc9438421a5a004a9"},{"version":"7eb17eb7744abbee254a6c1d9276cfc06ea05cd070e6225411b9ad0d80a254e2","signature":"6505161428ad011102d27bee396ec61cbb1c236ec10a8686cf6bfdacc1c365fe"},{"version":"36878ff564f79a37797f325d7a254867d8afb5bf07c79ffd00fc323a28cf957e","signature":"21e889fc6e61eff2c799c11bf502622d008576a61eb16e2e860b8129d2e27c17"},{"version":"92dfe1cb7278ffac5c23656e33d0827da93b067724f377923f618c248204fa67","signature":"9191d8e8bb86235ad2d438c1f0f4d7b910be16c0775704533382fdbb342e316d"},{"version":"7bd1f267eb7227e96ad19d601f26b909b1ffc178084e692b1b949a018c3f450b","signature":"986c2688de08617c42087a47e352ef157b4c3899d68017dd91380b089998c1e9"},{"version":"47d9ee6dc5cdba06819a59ec5992f4d300ab5f79267977af0eb5528457932bf0","signature":"6dbb865472ec5553c75612fd1e05c59bb4335b393c1d1214049f3861a31e83a1"},{"version":"795c8f027d0d480481f70b0d37232310623524995631f8d09530416892bf7bce","signature":"9b2e2f7f4b479bd95fb8d220ec5f655f27e17cf93a9d15e06a2ea0cdb3d93273"},{"version":"dfaca9805bf4fa3eb2da3d58a029146ae99261f6581be0864eb3f5822a0cfe0e","signature":"1ad944759cf33db18e2e2eafe936b5f31b1c123c93d25a297d5b772aae34a560"},{"version":"119bd216f800fba30fa0b29c1ff4bebb0854b55c8c17ab0230e25f7ac97ac35c","signature":"3283de1e16c31ef3f82d512ec6936b34cf75982ffe058f1731906b5973d58d71"},{"version":"6f8fbcc667e3c4ea69d6fa595f7e9b8bbe0c6ead52040783f3efd66795b88a02","signature":"5752bd711ae4e644f5ea4e5759d1a9ed071f3fdd2a50d31c4d57104c56e30751"},{"version":"2535fc1a5fe64892783ff8f61321b181c24f824e688a4a05ae738da33466605b","impliedFormat":99},{"version":"50b93b8af040517d766f9ee6d0dffeacf40b5082469bba7e5d49a7f9eb5aaa37","signature":"adeb329d41b4133066a9911fdc1f39c4956fe3dfa83611a70434f542b6adb268"},{"version":"2b37f8bc35d80436f91c8c9565254c2530fdd207332464912197e69ed7704d52","signature":"98c9f42c368d952b1220531c76a20a308ac017c89a3f314f5f897d725e5b39a6"},{"version":"cc3738ba01d9af5ba1206a313896837ff8779791afcd9869e582783550f17f38","impliedFormat":99},{"version":"0d000a7ec98386e515f6e484e4545cc4d34bcf201fd52ce5a53a5fea0bfdd9b5","signature":"5c6d966b719f71bfc1053b6613fc4062e9697d4ffe3d4cc328ae34651ec3adf4"},{"version":"7613883521e95eaaa58c169938b769444f59cc7ddabaccb595dbd1883fed26dc","signature":"db07a14ab6531c8bd84dcf4c4f8591286d4ddab184afba569939c3d17918c8f6"},{"version":"721845b90b63b6c94f16befb27a8ab65ec70cb270499a9ecb0b39f00b8629b8d","signature":"08e028ca9c7257accbf330245f3685972ba4c46f34c45d15533f33d32e76c9f3"},{"version":"e067fbd19fbc499a8772a3c1ee7d1cf1614a68442b9d077b883c1b87aa5bbf82","signature":"20243a105bcc6c4ae0363e1aa59952950222f67d9fa6f615528aa2337a4ee101"},{"version":"101e8d1bda4f5e94050647c28e21e8b6400d0b16d7c5125388ba91b95c41e282","signature":"1ff19db68de8ab31a40d334ee494344cc06c419fb4573393b49393ac34004bbb"},{"version":"d1ad3e180b7c5c973bad84a6679e687b731cf50f8eb2061dec703a850bffb27a","signature":"ef3aa844e941ca0ca59c6b521d23e9f0667aa14309f154a55c86a09280ac6ccb"},{"version":"0943a6e4e026d0de8a4969ee975a7283e0627bf41aa4635d8502f6f24365ac9b","impliedFormat":99},{"version":"1461efc4aefd3e999244f238f59c9b9753a7e3dfede923ebe2b4a11d6e13a0d0","impliedFormat":99},{"version":"789b258bfc80b22f9634539e5b7b8d06acb68eb2842347326fdfb5b9eed79d93","signature":"0bb7dc51869cf43a818dd6d08599897543f5375fc02213c86c980cd8a56eb396"},{"version":"31c30cc54e8c3da37c8e2e40e5658471f65915df22d348990d1601901e8c9ff3","impliedFormat":99},{"version":"8181c7be76533bb5e1d721274cf16bcc07dbe25c521aa6f15e01fe8a302eb481","signature":"506de066b3c5993482ff65065ba1d1fa69180a24eb20b6c5fb15141fc9d42400"},{"version":"dce4f80f612a79389688cc8f765cccde46d5af4881ea899cc694187ac386757a","signature":"6730bbdfd0ecd7e5e023e8609313bb5a25a7f1594a133669f4febf373eb5c6f1"},{"version":"36d8011f1437aecf0e6e88677d933e4fb3403557f086f4ac00c5a4cb6d028ac2","impliedFormat":99},{"version":"09035a9c5b8211fffd34f06a6ec44e053b0d753390e40aea970cb59773176714","signature":"fca9bc9ef189961ee8b8ae7a29d2ee2ddbab2e15d1fefa8f3fb4d6005ef35bd8"},{"version":"8085954ba165e611c6230596078063627f3656fed3fb68ad1e36a414c4d7599a","impliedFormat":99},{"version":"9effa6f9decfeb6230e20958c815cdfef8bd84f6ec6aafc8e2e87c5e4c64b4b2","signature":"a548630f941a3440739c0de45a1e20495f57ea8abebe98425a124bfc6ebb8d75"},{"version":"801c5fac01248e8e4692b58a6ee5c6a50a3cddb9b095e0bb2e04aff201313b6c","signature":"5759cb11825992823d4a1b694974bf261d262a376225b14bb295845851160aa2"},{"version":"9c580c6eae94f8c9a38373566e59d5c3282dc194aa266b23a50686fe10560159","impliedFormat":99},{"version":"96ef29b5aa9a169fd23a813ebbd4a721ba693c9ba73b9bdd9b4ece6788e9279c","signature":"dbb75a08150c6031b2a036d35c99fe58bd58afb83ea378200726f7686979b649"},{"version":"07203100cedafa78bd03b8ffe71559d29c35bfe7ea034449ed21d1008907cc0e","signature":"7f1a63df38832b63ac8fd0d109e01b04dca1a8911debb304a6e6a6b129dda6f5"},{"version":"57ae71d27ee71b7d1f2c6d867ddafbbfbaa629ad75565e63a508dbaa3ef9f859","impliedFormat":99},{"version":"60924ca0c60f0674f208bfa1eaaa54e6973ced7650df7c7a81ae069730ef665a","impliedFormat":99},{"version":"e3181c7595a89dd03ba9a20eb5065fa37e0b0a514261bed774f6ae2241634470","impliedFormat":99},{"version":"c42d5cbf94816659c01f7c2298d0370247f1a981f8ca6370301b7a03b3ced950","impliedFormat":99},{"version":"18c18ab0341fd5fdfefb5d992c365be1696bfe000c7081c964582b315e33f8f2","impliedFormat":99},{"version":"dafbd4199902d904e3d4a233b5faf5dc4c98847fcd8c0ddd7617b2aed50e90d8","impliedFormat":99},{"version":"9fc866f9783d12d0412ed8d68af5e4c9e44f0072d442b0c33c3bda0a5c8cae15","impliedFormat":99},{"version":"5fc13d24a2d0328eac00c4e73cc052a987fbced2151bc0d3b7eb8f3ba4d0f4e2","impliedFormat":99},{"version":"2cef84bf00cbdb452fdc5d8ecfe7b8c0aa3fa788bdc4ad8961e2e636530dbb60","impliedFormat":99},{"version":"24104650185414f379d5cc35c0e2c19f06684a73de5b472bae79e0d855771ecf","impliedFormat":99},{"version":"799003c0ab928582fca04977f47b8d85b43a8de610f4eef0ad2d069fbb9f9399","impliedFormat":99},{"version":"b13dd41c344a23e085f81b2f5cd96792e6b35ae814f32b25e39d9841844ad240","impliedFormat":99},{"version":"17d8b4e6416e48b6e23b73d05fd2fde407e2af8fddbe9da2a98ede14949c3489","impliedFormat":99},{"version":"6d17b2b41f874ab4369b8e04bdbe660163ea5c8239785c850f767370604959e3","impliedFormat":99},{"version":"04b4c044c8fe6af77b6c196a16c41e0f7d76b285d036d79dcaa6d92e24b4982b","impliedFormat":99},{"version":"30bdeead5293c1ddfaea4097d3e9dd5a6b0bc59a1e07ff4714ea1bbe7c5b2318","impliedFormat":99},{"version":"e7df226dcc1b0ce76b32f160556f3d1550124c894aae2d5f73cefaaf28df7779","impliedFormat":99},{"version":"f2b7eef5c46c61e6e72fba9afd7cc612a08c0c48ed44c3c5518559d8508146a2","impliedFormat":99},{"version":"00f0ba57e829398d10168b7db1e16217f87933e61bd8612b53a894bd7d6371da","impliedFormat":99},{"version":"126b20947d9fa74a88bb4e9281462bda05e529f90e22d08ee9f116a224291e84","impliedFormat":99},{"version":"40d9e43acee39702745eb5c641993978ac40f227475eacc99a83ba893ad995db","impliedFormat":99},{"version":"8a66b69b21c8de9cb88b4b6d12f655d5b7636e692a014c5aa1bd81745c8c51d5","impliedFormat":99},{"version":"ebbb846bdd5a78fdacff59ae04cea7a097912aeb1a2b34f8d88f4ebb84643069","impliedFormat":99},{"version":"7321adb29ffd637acb33ee67ea035f1a97d0aa0b14173291cc2fd58e93296e04","impliedFormat":99},{"version":"320816f1a4211188f07a782bdb6c1a44555b3e716ce13018f528ad7387108d5f","impliedFormat":99},{"version":"b2cc8a474b7657f4a03c67baf6bff75e26635fd4b5850675e8cad524a09ddd0c","impliedFormat":99},{"version":"0d081e9dc251063cc69611041c17d25847e8bdbe18164baaa89b7f1f1633c0ab","impliedFormat":99},{"version":"a64c25d8f4ec16339db49867ea2324e77060782993432a875d6e5e8608b0de1e","impliedFormat":99},{"version":"0739310b6b777f3e2baaf908c0fbc622c71160e6310eb93e0d820d86a52e2e23","impliedFormat":99},{"version":"37b32e4eadd8cd3c263e7ac1681c58b2ac54f3f77bb34c5e4326cc78516d55a9","impliedFormat":99},{"version":"9b7a8974e028c4ed6f7f9abb969e3eb224c069fd7f226e26fcc3a5b0e2a1eba8","impliedFormat":99},{"version":"e8100b569926a5592146ed68a0418109d625a045a94ed878a8c5152b1379237c","impliedFormat":99},{"version":"594201c616c318b7f3149a912abd8d6bdf338d765b7bcbde86bca2e66b144606","impliedFormat":99},{"version":"03e380975e047c5c6ded532cf8589e6cc85abb7be3629e1e4b0c9e703f2fd36f","impliedFormat":99},{"version":"fae14b53b7f52a8eb3274c67c11f261a58530969885599efe3df0277b48909e1","impliedFormat":99},{"version":"c41206757c428186f2e0d1fd373915c823504c249336bdc9a9c9bbdf9da95fef","impliedFormat":99},{"version":"e961f853b7b0111c42b763a6aa46fc70d06a697db3d8ed69b38f7ba0ae42a62b","impliedFormat":99},{"version":"3db90f79e36bcb60b3f8de1bc60321026800979c150e5615047d598c787a64b7","impliedFormat":99},{"version":"639b6fb3afbb8f6067c1564af2bd284c3e883f0f1556d59bd5eb87cdbbdd8486","impliedFormat":99},{"version":"49795f5478cb607fd5965aa337135a8e7fd1c58bc40c0b6db726adf186dd403f","impliedFormat":99},{"version":"7d8890e6e2e4e215959e71d5b5bd49482cf7a23be68d48ea446601a4c99bd511","impliedFormat":99},{"version":"d56f72c4bb518de5702b8b6ae3d3c3045c99e0fd48b3d3b54c653693a8378017","impliedFormat":99},{"version":"4c9ac40163e4265b5750510d6d2933fb7b39023eed69f7b7c68b540ad960826e","impliedFormat":99},{"version":"8dfab17cf48e7be6e023c438a9cdf6d15a9b4d2fa976c26e223ba40c53eb8da8","impliedFormat":99},{"version":"38bdf7ccacfd8e418de3a7b1e3cecc29b5625f90abc2fa4ac7843a290f3bf555","impliedFormat":99},{"version":"9819e46a914735211fbc04b8dc6ba65152c62e3a329ca0601a46ba6e05b2c897","impliedFormat":99},{"version":"50f0dc9a42931fb5d65cdd64ba0f7b378aedd36e0cfca988aa4109aad5e714cb","impliedFormat":99},{"version":"894f23066f9fafccc6e2dd006ed5bd85f3b913de90f17cf1fe15a2eb677fd603","impliedFormat":99},{"version":"abdf39173867e6c2d6045f120a316de451bbb6351a6929546b8470ddf2e4b3b9","impliedFormat":99},{"version":"aa2cb4053f948fbd606228195bbe44d78733861b6f7204558bbee603202ee440","impliedFormat":99},{"version":"6911b41bfe9942ac59c2da1bbcbe5c3c1f4e510bf65cae89ed00f434cc588860","impliedFormat":99},{"version":"7b81bc4d4e2c764e85d869a8dd9fe3652b34b45c065482ac94ffaacc642b2507","impliedFormat":99},{"version":"895df4edb46ccdcbce2ec982f5eed292cf7ea3f7168f1efea738ee346feab273","impliedFormat":99},{"version":"8692bb1a4799eda7b2e3288a6646519d4cebb9a0bddf800085fc1bd8076997a0","impliedFormat":99},{"version":"239c9e98547fe99711b01a0293f8a1a776fc10330094aa261f3970aaba957c82","impliedFormat":99},{"version":"34833ec50360a32efdc12780ae624e9a710dd1fd7013b58c540abf856b54285a","impliedFormat":99},{"version":"647538e4007dcc351a8882067310a0835b5bb8559d1cfa5f378e929bceb2e64d","impliedFormat":99},{"version":"992d6b1abcc9b6092e5a574d51d441238566b6461ade5de53cb9718e4f27da46","impliedFormat":99},{"version":"938702305649bf1050bd79f3803cf5cc2904596fc1edd4e3b91033184eae5c54","impliedFormat":99},{"version":"1e931d3c367d4b96fe043e792196d9c2cf74f672ff9c0b894be54e000280a79d","impliedFormat":99},{"version":"05bec322ea9f6eb9efcd6458bb47087e55bd688afdd232b78379eb5d526816ed","impliedFormat":99},{"version":"4c449a874c2d2e5e5bc508e6aa98f3140218e78c585597a21a508a647acd780a","impliedFormat":99},{"version":"dae15e326140a633d7693e92b1af63274f7295ea94fb7c322d5cbe3f5e48be88","impliedFormat":99},{"version":"c2b0a869713bca307e58d81d1d1f4b99ebfc7ec8b8f17e80dde40739aa8a2bc6","impliedFormat":99},{"version":"6e4b4ff6c7c54fa9c6022e88f2f3e675eac3c6923143eb8b9139150f09074049","impliedFormat":99},{"version":"69559172a9a97bbe34a32bff8c24ef1d8c8063feb5f16a6d3407833b7ee504cf","impliedFormat":99},{"version":"86b94a2a3edcb78d9bfcdb3b382547d47cb017e71abe770c9ee8721e9c84857f","impliedFormat":99},{"version":"e3fafafda82853c45c0afc075fea1eaf0df373a06daf6e6c7f382f9f61b2deb3","impliedFormat":99},{"version":"a4ba4b31de9e9140bc49c0addddbfaf96b943a7956a46d45f894822e12bf5560","impliedFormat":99},{"version":"d8a7926fc75f2ed887f17bae732ee31a4064b8a95a406c87e430c58578ee1f67","impliedFormat":99},{"version":"9886ffbb134b0a0059fd82219eba2a75f8af341d98bc6331b6ef8a921e10ec68","impliedFormat":99},{"version":"c2ead057b70d0ae7b87a771461a6222ebdb187ba6f300c974768b0ae5966d10e","impliedFormat":99},{"version":"46687d985aed8485ab2c71085f82fafb11e69e82e8552cf5d3849c00e64a00a5","impliedFormat":99},{"version":"999ca66d4b5e2790b656e0a7ce42267737577fc7a52b891e97644ec418eff7ec","impliedFormat":99},{"version":"ec948ee7e92d0888f92d4a490fdd0afb27fbf6d7aabebe2347a3e8ac82c36db9","impliedFormat":99},{"version":"03ef2386c683707ce741a1c30cb126e8c51a908aa0acc01c3471fafb9baaacd5","impliedFormat":99},{"version":"66a372e03c41d2d5e920df5282dadcec2acae4c629cb51cab850825d2a144cea","impliedFormat":99},{"version":"ddf9b157bd4c06c2e4646c9f034f36267a0fbd028bd4738214709de7ea7c548b","impliedFormat":99},{"version":"3e795aac9be23d4ad9781c00b153e7603be580602e40e5228e2dafe8a8e3aba1","impliedFormat":99},{"version":"98c461ec5953dfb1b5d5bca5fee0833c8a932383b9e651ca6548e55f1e2c71c3","impliedFormat":99},{"version":"5c42107b46cb1d36b6f1dee268df125e930b81f9b47b5fa0b7a5f2a42d556c10","impliedFormat":99},{"version":"7e32f1251d1e986e9dd98b6ff25f62c06445301b94aeebdf1f4296dbd2b8652f","impliedFormat":99},{"version":"2f7e328dda700dcb2b72db0f58c652ae926913de27391bd11505fc5e9aae6c33","impliedFormat":99},{"version":"3de7190e4d37da0c316db53a8a60096dbcd06d1a50677ccf11d182fa26882080","impliedFormat":99},{"version":"a9d6f87e59b32b02c861aade3f4477d7277c30d43939462b93f48644fa548c58","impliedFormat":99},{"version":"2bce8fd2d16a9432110bbe0ba1e663fd02f7d8b8968cd10178ea7bc306c4a5df","impliedFormat":99},{"version":"798bedbf45a8f1e55594e6879cd46023e8767757ecce1d3feaa78d16ad728703","impliedFormat":99},{"version":"62723d5ac66f7ed6885a3931dd5cfa017797e73000d590492988a944832e8bc2","impliedFormat":99},{"version":"03db8e7df7514bf17fc729c87fff56ca99567b9aa50821f544587a666537c233","impliedFormat":99},{"version":"9b1f311ba4409968b68bf20b5d892dbd3c5b1d65c673d5841c7dbde351bc0d0b","impliedFormat":99},{"version":"2d1e8b5431502739fe335ceec0aaded030b0f918e758a5d76f61effa0965b189","impliedFormat":99},{"version":"e725839b8f884dab141b42e9d7ff5659212f6e1d7b4054caa23bc719a4629071","impliedFormat":99},{"version":"4fa38a0b8ae02507f966675d0a7d230ed67c92ab8b5736d99a16c5fbe2b42036","impliedFormat":99},{"version":"50ec1e8c23bad160ddedf8debeebc722becbddda127b8fdce06c23eacd3fe689","impliedFormat":99},{"version":"9a0aea3a113064fd607f41375ade308c035911d3c8af5ae9db89593b5ca9f1f9","impliedFormat":99},{"version":"8d643903b58a0bf739ce4e6a8b0e5fb3fbdfaacbae50581b90803934b27d5b89","impliedFormat":99},{"version":"19de2915ccebc0a1482c2337b34cb178d446def2493bf775c4018a4ea355adb8","impliedFormat":99},{"version":"9be8fc03c8b5392cd17d40fd61063d73f08d0ee3457ecf075dcb3768ae1427bd","impliedFormat":99},{"version":"a2d89a8dc5a993514ca79585039eea083a56822b1d9b9d9d85b14232e4782cbe","impliedFormat":99},{"version":"f526f20cae73f17e8f38905de4c3765287575c9c4d9ecacee41cfda8c887da5b","impliedFormat":99},{"version":"d9ec0978b7023612b9b83a71fee8972e290d02f8ff894e95cdd732cd0213b070","impliedFormat":99},{"version":"7ab10c473a058ec8ac4790b05cae6f3a86c56be9b0c0a897771d428a2a48a9f9","impliedFormat":99},{"version":"451d7a93f8249d2e1453b495b13805e58f47784ef2131061821b0e456a9fd0e1","impliedFormat":99},{"version":"21c56fe515d227ed4943f275a8b242d884046001722a4ba81f342a08dbe74ae2","impliedFormat":99},{"version":"d8311f0c39381aa1825081c921efde36e618c5cf46258c351633342a11601208","impliedFormat":99},{"version":"6b50c3bcc92dc417047740810596fcb2df2502aa3f280c9e7827e87896da168a","impliedFormat":99},{"version":"18a6b318d1e7b31e5749a52be0cf9bbce1b275f63190ef32e2c79db0579328ca","impliedFormat":99},{"version":"6a2d0af2c27b993aa85414f3759898502aa198301bc58b0d410948fe908b07b0","impliedFormat":99},{"version":"2da11b6f5c374300e5e66a6b01c3c78ec21b5d3fec0748a28cc28e00be73e006","impliedFormat":99},{"version":"0729691b39c24d222f0b854776b00530877217bfc30aac1dc7fa2f4b1795c536","impliedFormat":99},{"version":"ca45bb5c98c474d669f0e47615e4a5ae65d90a2e78531fda7862ee43e687a059","impliedFormat":99},{"version":"c1c058b91d5b9a24c95a51aea814b0ad4185f411c38ac1d5eef0bf3cebec17dc","impliedFormat":99},{"version":"3ab0ed4060b8e5b5e594138aab3e7f0262d68ad671d6678bcda51568d4fc4ccc","impliedFormat":99},{"version":"e2bf1faba4ff10a6020c41df276411f641d3fdce5c6bae1db0ec84a0bf042106","impliedFormat":99},{"version":"80b0a8fe14d47a71e23d7c3d4dcee9584d4282ef1d843b70cab1a42a4ea1588c","impliedFormat":99},{"version":"a0f02a73f6e3de48168d14abe33bf5970fdacdb52d7c574e908e75ad571e78f7","impliedFormat":99},{"version":"c728002a759d8ec6bccb10eed56184e86aeff0a762c1555b62b5d0fa9d1f7d64","impliedFormat":99},{"version":"586f94e07a295f3d02f847f9e0e47dbf14c16e04ccc172b011b3f4774a28aaea","impliedFormat":99},{"version":"cfe1a0f4ed2df36a2c65ea6bc235dbb8cf6e6c25feb6629989f1fa51210b32e7","impliedFormat":99},{"version":"8ba69c9bf6de79c177329451ffde48ddab7ec495410b86972ded226552f664df","impliedFormat":99},{"version":"15111cbe020f8802ad1d150524f974a5251f53d2fe10eb55675f9df1e82dbb62","impliedFormat":99},{"version":"782dc153c56a99c9ed07b2f6f497d8ad2747764966876dbfef32f3e27ce11421","impliedFormat":99},{"version":"cc2db30c3d8bb7feb53a9c9ff9b0b859dd5e04c83d678680930b5594b2bf99cb","impliedFormat":99},{"version":"46909b8c85a6fd52e0807d18045da0991e3bdc7373435794a6ba425bc23cc6be","impliedFormat":99},{"version":"e4e511ff63bb6bd69a2a51e472c6044298bca2c27835a34a20827bc3ef9b7d13","impliedFormat":99},{"version":"2c86f279d7db3c024de0f21cd9c8c2c972972f842357016bfbbd86955723b223","impliedFormat":99},{"version":"112c895cff9554cf754f928477c7d58a21191c8089bffbf6905c87fe2dc6054f","impliedFormat":99},{"version":"8cfc293b33082003cacbf7856b8b5e2d6dd3bde46abbd575b0c935dc83af4844","impliedFormat":99},{"version":"d2c5c53f85ce0474b3a876d76c4fc44ff7bb766b14ed1bf495f9abac181d7f5f","impliedFormat":99},{"version":"3c523f27926905fcbe20b8301a0cc2da317f3f9aea2273f8fc8d9ae88b524819","impliedFormat":99},{"version":"9ca0d706f6b039cc52552323aeccb4db72e600b67ddc7a54cebc095fc6f35539","impliedFormat":99},{"version":"a64909a9f75081342ddd061f8c6b49decf0d28051bc78e698d347bdcb9746577","impliedFormat":99},{"version":"7d8d55ae58766d0d52033eae73084c4db6a93c4630a3e17f419dd8a0b2a4dcd8","impliedFormat":99},{"version":"b8b5c8ba972d9ffff313b3c8a3321e7c14523fc58173862187e8d1cb814168ac","impliedFormat":99},{"version":"9c42c0fa76ee36cf9cc7cc34b1389fbb4bd49033ec124b93674ec635fabf7ffe","impliedFormat":99},{"version":"6184c8da9d8107e3e67c0b99dedb5d2dfe5ccf6dfea55c2a71d4037caf8ca196","impliedFormat":99},{"version":"4030ceea7bf41449c1b86478b786e3b7eadd13dfe5a4f8f5fe2eb359260e08b3","impliedFormat":99},{"version":"7bf516ec5dfc60e97a5bde32a6b73d772bd9de24a2e0ec91d83138d39ac83d04","impliedFormat":99},{"version":"e6a6fb3e6525f84edf42ba92e261240d4efead3093aca3d6eb1799d5942ba393","impliedFormat":99},{"version":"45df74648934f97d26800262e9b2af2f77ef7191d4a5c2eb1df0062f55e77891","impliedFormat":99},{"version":"3fe361e4e567f32a53af1f2c67ad62d958e3d264e974b0a8763d174102fe3b29","impliedFormat":99},{"version":"28b520acee4bc6911bfe458d1ad3ebc455fa23678463f59946ad97a327c9ab2b","impliedFormat":99},{"version":"121b39b1a9ad5d23ed1076b0db2fe326025150ef476dccb8bf87778fcc4f6dd7","impliedFormat":99},{"version":"f791f92a060b52aa043dde44eb60307938f18d4c7ac13df1b52c82a1e658953f","impliedFormat":99},{"version":"df09443e7743fd6adc7eb108e760084bacdf5914403b7aac5fbd4dc4e24e0c2c","impliedFormat":99},{"version":"eeb4ff4aa06956083eaa2aad59070361c20254b865d986bc997ee345dbd44cbb","impliedFormat":99},{"version":"ed84d5043444d51e1e5908f664addc4472c227b9da8401f13daa565f23624b6e","impliedFormat":99},{"version":"146bf888b703d8baa825f3f2fb1b7b31bda5dff803e15973d9636cdda33f4af3","impliedFormat":99},{"version":"b4ec8b7a8d23bdf7e1c31e43e5beac3209deb7571d2ccf2a9572865bf242da7c","impliedFormat":99},{"version":"3fba0d61d172091638e56fba651aa1f8a8500aac02147d29bd5a9cc0bc8f9ec2","impliedFormat":99},{"version":"a5a57deb0351b03041e0a1448d3a0cc5558c48e0ed9b79b69c99163cdca64ad8","impliedFormat":99},{"version":"9bcecf0cbc2bfc17e33199864c19549905309a0f9ecc37871146107aac6e05ae","impliedFormat":99},{"version":"d6a211db4b4a821e93c978add57e484f2a003142a6aef9dbfa1fe990c66f337b","impliedFormat":99},{"version":"bd4d10bd44ce3f630dd9ce44f102422cb2814ead5711955aa537a52c8d2cae14","impliedFormat":99},{"version":"08e4c39ab1e52eea1e528ee597170480405716bae92ebe7a7c529f490afff1e0","impliedFormat":99},{"version":"625bb2bc3867557ea7912bd4581288a9fca4f3423b8dffa1d9ed57fafc8610e3","impliedFormat":99},{"version":"d1992164ecc334257e0bef56b1fd7e3e1cea649c70c64ffc39999bb480c0ecdf","impliedFormat":99},{"version":"a53ff2c4037481eb357e33b85e0d78e8236e285b6428b93aa286ceea1db2f5dc","impliedFormat":99},{"version":"4fe608d524954b6857d78857efce623852fcb0c155f010710656f9db86e973a5","impliedFormat":99},{"version":"b53b62a9838d3f57b70cc456093662302abb9962e5555f5def046172a4fe0d4e","impliedFormat":99},{"version":"9866369eb72b6e77be2a92589c9df9be1232a1a66e96736170819e8a1297b61f","impliedFormat":99},{"version":"43abfbdf4e297868d780b8f4cfdd8b781b90ecd9f588b05e845192146a86df34","impliedFormat":99},{"version":"582419791241fb851403ae4a08d0712a63d4c94787524a7419c2bc8e0eb1b031","impliedFormat":99},{"version":"18437eeb932fe48590b15f404090db0ab3b32d58f831d5ffc157f63b04885ee5","impliedFormat":99},{"version":"0c5eaedf622d7a8150f5c2ec1f79ac3d51eea1966b0b3e61bfdea35e8ca213a7","impliedFormat":99},{"version":"fac39fc7a9367c0246de3543a6ee866a0cf2e4c3a8f64641461c9f2dac0d8aae","impliedFormat":99},{"version":"3b9f559d0200134f3c196168630997caedeadc6733523c8b6076a09615d5dec8","impliedFormat":99},{"version":"932af64286d9723da5ef7b77a0c4229829ce8e085e6bcc5f874cb0b83e8310d4","impliedFormat":99},{"version":"adeb9278f11f5561157feee565171c72fd48f5fe34ed06f71abf24e561fcaa1e","impliedFormat":99},{"version":"2269fef79b4900fc6b08c840260622ca33524771ff24fda5b9101ad98ea551f3","impliedFormat":99},{"version":"73d47498a1b73d5392d40fb42a3e7b009ae900c8423f4088c4faa663cc508886","impliedFormat":99},{"version":"7efc34cdc4da0968c3ba687bc780d5cacde561915577d8d1c1e46c7ac931d023","impliedFormat":99},{"version":"3c20a3bb0c50c819419f44aa55acc58476dad4754a16884cef06012d02b0722f","impliedFormat":99},{"version":"4569abf6bc7d51a455503670f3f1c0e9b4f8632a3b030e0794c61bfbba2d13be","impliedFormat":99},{"version":"98b2297b4dc1404078a54b61758d8643e4c1d7830af724f3ed2445d77a7a2d57","impliedFormat":99},{"version":"952ba89d75f1b589e07070fea2d8174332e3028752e76fd46e1c16cc51e6e2af","impliedFormat":99},{"version":"b6c9a2deefb6a57ff68d2a38d33c34407b9939487fc9ee9f32ba3ecf2987a88a","impliedFormat":99},{"version":"f6b371377bab3018dac2bca63e27502ecbd5d06f708ad7e312658d3b5315d948","impliedFormat":99},{"version":"31947dd8f1c8eeb7841e1f139a493a73bd520f90e59a6415375d0d8e6a031f01","impliedFormat":99},{"version":"95cd83b807e10b1af408e62caf5fea98562221e8ddca9d7ccc053d482283ddda","impliedFormat":99},{"version":"19287d6b76288c2814f1633bdd68d2b76748757ffd355e73e41151644e4773d6","impliedFormat":99},{"version":"fc4e6ec7dade5f9d422b153c5d8f6ad074bd9cc4e280415b7dc58fb5c52b5df1","impliedFormat":99},{"version":"3aea973106e1184db82d8880f0ca134388b6cbc420f7309d1c8947b842886349","impliedFormat":99},{"version":"765e278c464923da94dda7c2b281ece92f58981642421ae097862effe2bd30fa","impliedFormat":99},{"version":"de260bed7f7d25593f59e859bd7c7f8c6e6bb87e8686a0fcafa3774cb5ca02d8","impliedFormat":99},{"version":"b5c341ce978f5777fbe05bc86f65e9906a492fa6b327bda3c6aae900c22e76c6","impliedFormat":99},{"version":"686ddbfaf88f06b02c6324005042f85317187866ca0f8f4c9584dd9479653344","impliedFormat":99},{"version":"7f789c0c1db29dd3aab6e159d1ba82894a046bf8df595ac48385931ae6ad83e0","impliedFormat":99},{"version":"8eb3057d4fe9b59b2492921b73a795a2455ebe94ccb3d01027a7866612ead137","impliedFormat":99},{"version":"1e43c5d7aee1c5ec20611e28b5417f5840c75d048de9d7f1800d6808499236f8","impliedFormat":99},{"version":"d42610a5a2bee4b71769968a24878885c9910cd049569daa2d2ee94208b3a7a5","impliedFormat":99},{"version":"f6ed95506a6ed2d40ed5425747529befaa4c35fcbbc1e0d793813f6d725690fa","impliedFormat":99},{"version":"a6fcc1cd6583939506c906dff1276e7ebdc38fbe12d3e108ba38ad231bd18d97","impliedFormat":99},{"version":"ed13354f0d96fb6d5878655b1fead51722b54875e91d5e53ef16de5b71a0e278","impliedFormat":99},{"version":"1193b4872c1fb65769d8b164ca48124c7ebacc33eae03abf52087c2b29e8c46c","impliedFormat":99},{"version":"af682dfabe85688289b420d939020a10eb61f0120e393d53c127f1968b3e9f66","impliedFormat":99},{"version":"0dca04006bf13f72240c6a6a502df9c0b49c41c3cab2be75e81e9b592dcd4ea8","impliedFormat":99},{"version":"79d6ac4a2a229047259116688f9cd62fda25422dee3ad304f77d7e9af53a41ef","impliedFormat":99},{"version":"64534c17173990dc4c3d9388d16675a059aac407031cfce8f7fdffa4ee2de988","impliedFormat":99},{"version":"ba46d160a192639f3ca9e5b640b870b1263f24ac77b6895ab42960937b42dcbb","impliedFormat":99},{"version":"5e5ddd6fc5b590190dde881974ab969455e7fad61012e32423415ae3d085b037","impliedFormat":99},{"version":"1c16fd00c42b60b96fe0fa62113a953af58ddf0d93b0a49cb4919cf5644616f0","impliedFormat":99},{"version":"eb240c0e6b412c57f7d9a9f1c6cd933642a929837c807b179a818f6e8d3a4e44","impliedFormat":99},{"version":"4a7bde5a1155107fc7d9483b8830099f1a6072b6afda5b78d91eb5d6549b3956","impliedFormat":99},{"version":"3c1baaffa9a24cc7ef9eea6b64742394498e0616b127ca630aca0e11e3298006","impliedFormat":99},{"version":"87ca1c31a326c898fa3feb99ec10750d775e1c84dbb7c4b37252bcf3742c7b21","impliedFormat":99},{"version":"d7bd26af1f5457f037225602035c2d7e876b80d02663ab4ca644099ad3a55888","impliedFormat":99},{"version":"2ad0a6b93e84a56b64f92f36a07de7ebcb910822f9a72ad22df5f5d642aff6f3","impliedFormat":99},{"version":"523d1775135260f53f672264937ee0f3dc42a92a39de8bee6c48c7ea60b50b5a","impliedFormat":99},{"version":"e441b9eebbc1284e5d995d99b53ed520b76a87cab512286651c4612d86cd408e","impliedFormat":99},{"version":"76f853ee21425c339a79d28e0859d74f2e53dee2e4919edafff6883dd7b7a80f","impliedFormat":99},{"version":"00cf042cd6ba1915648c8d6d2aa00e63bbbc300ea54d28ed087185f0f662e080","impliedFormat":99},{"version":"f57e6707d035ab89a03797d34faef37deefd3dd90aa17d90de2f33dce46a2c56","impliedFormat":99},{"version":"cc8b559b2cf9380ca72922c64576a43f000275c72042b2af2415ce0fb88d7077","impliedFormat":99},{"version":"1a337ca294c428ba8f2eb01e887b28d080ee4a4307ae87e02e468b1d26af4a74","impliedFormat":99},{"version":"5a15362fc2e72765a908c0d4dd89e3ab3b763e8bc8c23f19234a709ecfd202fe","impliedFormat":99},{"version":"2dffdfe62ac8af0943853234519616db6fd8958fc7ff631149fd8364e663f361","impliedFormat":99},{"version":"5dbdb2b2229b5547d8177c34705272da5a10b8d0033c49efbc9f6efba5e617f2","impliedFormat":99},{"version":"6fc0498cd8823d139004baff830343c9a0d210c687b2402c1384fb40f0aa461c","impliedFormat":99},{"version":"8492306a4864a1dc6fc7e0cc0de0ae9279cbd37f3aae3e9dc1065afcdc83dddc","impliedFormat":99},{"version":"c011b378127497d6337a93f020a05f726db2c30d55dc56d20e6a5090f05919a6","impliedFormat":99},{"version":"f4556979e95a274687ae206bbab2bb9a71c3ad923b92df241d9ab88c184b3f40","impliedFormat":99},{"version":"50e82bb6e238db008b5beba16d733b77e8b2a933c9152d1019cf8096845171a4","impliedFormat":99},{"version":"d6011f8b8bbf5163ef1e73588e64a53e8bf1f13533c375ec53e631aad95f1375","impliedFormat":99},{"version":"693cd7936ac7acfa026d4bcb5801fce71cec49835ba45c67af1ef90dbfd30af7","impliedFormat":99},{"version":"195e2cf684ecddfc1f6420564535d7c469f9611ce7a380d6e191811f84556cd2","impliedFormat":99},{"version":"1dc6b6e7b2a7f2962f31c77f4713f3a5a132bbe14c00db75d557568fe82e4311","impliedFormat":99},{"version":"add93b1180e9aaac2dae4ef3b16f7655893e2ecbe62bd9e48366c305f0063d89","impliedFormat":99},{"version":"594bd896fe37c970aafb7a376ebeec4c0d636b62a5f611e2e27d30fb839ad8a5","impliedFormat":99},{"version":"b1c6a6faf60542ba4b4271db045d7faea56e143b326ef507d2797815250f3afc","impliedFormat":99},{"version":"8c8b165beb794260f462679329b131419e9f5f35212de11c4d53e6d4d9cbedf6","impliedFormat":99},{"version":"ee5a4cf57d49fcf977249ab73c690a59995997c4672bb73fcaaf2eed65dbd1b2","impliedFormat":99},{"version":"f9f36051f138ab1c40b76b230c2a12b3ce6e1271179f4508da06a959f8bee4c1","impliedFormat":99},{"version":"9dc2011a3573d271a45c12656326530c0930f92539accbec3531d65131a14a14","impliedFormat":99},{"version":"091521ce3ede6747f784ae6f68ad2ea86bbda76b59d2bf678bcad2f9d141f629","impliedFormat":99},{"version":"202c2be951f53bafe943fb2c8d1245e35ed0e4dfed89f48c9a948e4d186dd6d4","impliedFormat":99},{"version":"c618aead1d799dbf4f5b28df5a6b9ce13d72722000a0ec3fe90a8115b1ea9226","impliedFormat":99},{"version":"9b0bf59708549c3e77fddd36530b95b55419414f88bbe5893f7bc8b534617973","impliedFormat":99},{"version":"7e216f67c4886f1bde564fb4eebdd6b185f262fe85ad1d6128cad9b229b10354","impliedFormat":99},{"version":"cd51e60b96b4d43698df74a665aa7a16604488193de86aa60ec0c44d9f114951","impliedFormat":99},{"version":"b63341fb6c7ba6f2aeabd9fc46b43e6cc2d2b9eec06534cfd583d9709f310ec2","impliedFormat":99},{"version":"be2af50c81b15bcfe54ad60f53eb1c72dae681c72d0a9dce1967825e1b5830a3","impliedFormat":99},{"version":"be5366845dfb9726f05005331b9b9645f237f1ddc594c0def851208e8b7d297b","impliedFormat":99},{"version":"5ddd536aaeadd4bf0f020492b3788ed209a7050ce27abec4e01c7563ff65da81","impliedFormat":99},{"version":"e243b24da119c1ef0d79af2a45217e50682b139cb48e7607efd66cc01bd9dcda","impliedFormat":99},{"version":"5b1398c8257fd180d0bf62e999fe0a89751c641e87089a83b24392efda720476","impliedFormat":99},{"version":"1588b1359f8507a16dbef67cd2759965fc2e8d305e5b3eb71be5aa9506277dff","impliedFormat":99},{"version":"4c99f2524eee1ec81356e2b4f67047a4b7efaf145f1c4eb530cd358c36784423","impliedFormat":99},{"version":"b30c6b9f6f30c35d6ef84daed1c3781e367f4360171b90598c02468b0db2fc3d","impliedFormat":99},{"version":"79c0d32274ccfd45fae74ac61d17a2be27aea74c70806d22c43fc625b7e9f12a","impliedFormat":99},{"version":"1b7e3958f668063c9d24ac75279f3e610755b0f49b1c02bb3b1c232deb958f54","impliedFormat":99},{"version":"779d4022c3d0a4df070f94858a33d9ebf54af3664754536c4ce9fd37c6f4a8db","impliedFormat":99},{"version":"e662f063d46aa8c088edffdf1d96cb13d9a2cbf06bc38dc6fc62b4d125fb7b49","impliedFormat":99},{"version":"d1d612df1e41c90d9678b07740d13d4f8e6acec2f17390d4ff4be5c889a6d37d","impliedFormat":99},{"version":"c95933fe140918892d569186f17b70ef6b1162f851a0f13f6a89e8f4d599c5a1","impliedFormat":99},{"version":"1d8d30677f87c13c2786980a80750ac1e281bdb65aa013ea193766fe9f0edd74","impliedFormat":99},{"version":"4661673cbc984b8a6ee5e14875a71ed529b64e7f8e347e12c0db4cecc25ad67d","impliedFormat":99},{"version":"7f980a414274f0f23658baa9a16e21d828535f9eac538e2eab2bb965325841db","impliedFormat":99},{"version":"20fb747a339d3c1d4a032a31881d0c65695f8167575e01f222df98791a65da9b","impliedFormat":99},{"version":"dd4e7ebd3f205a11becf1157422f98db675a626243d2fbd123b8b93efe5fb505","impliedFormat":99},{"version":"43ec6b74c8d31e88bb6947bb256ad78e5c6c435cbbbad991c3ff39315b1a3dba","impliedFormat":99},{"version":"b27242dd3af2a5548d0c7231db7da63d6373636d6c4e72d9b616adaa2acef7e1","impliedFormat":99},{"version":"e0ee7ba0571b83c53a3d6ec761cf391e7128d8f8f590f8832c28661b73c21b68","impliedFormat":99},{"version":"072bfd97fc61c894ef260723f43a416d49ebd8b703696f647c8322671c598873","impliedFormat":99},{"version":"e70875232f5d5528f1650dd6f5c94a5bed344ecf04bdbb998f7f78a3c1317d02","impliedFormat":99},{"version":"8e495129cb6cd8008de6f4ff8ce34fe1302a9e0dcff8d13714bd5593be3f7898","impliedFormat":99},{"version":"0345bc0b1067588c4ea4c48e34425d3284498c629bc6788ebc481c59949c9037","impliedFormat":99},{"version":"e30f5b5d77c891bc16bd65a2e46cd5384ea57ab3d216c377f482f535db48fc8f","impliedFormat":99},{"version":"f113afe92ee919df8fc29bca91cab6b2ffbdd12e4ac441d2bb56121eb5e7dbe3","impliedFormat":99},{"version":"49d567cc002efb337f437675717c04f207033f7067825b42bb59c9c269313d83","impliedFormat":99},{"version":"1d248f707d02dc76555298a934fba0f337f5028bb1163ce59cd7afb831c9070f","impliedFormat":99},{"version":"5d8debffc9e7b842dc0f17b111673fe0fc0cca65e67655a2b543db2150743385","impliedFormat":99},{"version":"5fccbedc3eb3b23bc6a3a1e44ceb110a1f1a70fa8e76941dce3ae25752caa7a9","impliedFormat":99},{"version":"f4031b95f3bab2b40e1616bd973880fb2f1a97c730bac5491d28d6484fac9560","impliedFormat":99},{"version":"dbe75b3c5ed547812656e7945628f023c4cd0bc1879db0db3f43a57fb8ec0e2b","impliedFormat":99},{"version":"b754718a546a1939399a6d2a99f9022d8a515f2db646bab09f7d2b5bff3cbb82","impliedFormat":99},{"version":"2eef10fb18ed0b4be450accf7a6d5bcce7b7f98e02cac4e6e793b7ad04fc0d79","impliedFormat":99},{"version":"c46f471e172c3be12c0d85d24876fedcc0c334b0dab48060cdb1f0f605f09fed","impliedFormat":99},{"version":"7d6ddeead1d208588586c58c26e4a23f0a826b7a143fb93de62ed094d0056a33","impliedFormat":99},{"version":"7c5782291ff6e7f2a3593295681b9a411c126e3736b83b37848032834832e6b9","impliedFormat":99},{"version":"3a3f09df6258a657dd909d06d4067ee360cd2dccc5f5d41533ae397944a11828","impliedFormat":99},{"version":"ea54615be964503fec7bce04336111a6fa455d3e8d93d44da37b02c863b93eb8","impliedFormat":99},{"version":"2a83694bc3541791b64b0e57766228ea23d92834df5bf0b0fcb93c5bb418069c","impliedFormat":99},{"version":"b5913641d6830e7de0c02366c08b1d26063b5758132d8464c938e78a45355979","impliedFormat":99},{"version":"46c095d39c1887979d9494a824eda7857ec13fb5c20a6d4f7d02c2975309bf45","impliedFormat":99},{"version":"f6e02ca076dc8e624aa38038e3488ebd0091e2faea419082ed764187ba8a6500","impliedFormat":99},{"version":"4d49e8a78aba1d4e0ad32289bf8727ae53bc2def9285dff56151a91e7d770c3e","impliedFormat":99},{"version":"63315cf08117cc728eab8f3eec8801a91d2cd86f91d0ae895d7fd928ab54596d","impliedFormat":99},{"version":"a14a6f3a5636bcaebfe9ec2ccfa9b07dc94deb1f6c30358e9d8ea800a1190d5e","impliedFormat":99},{"version":"21206e7e81876dabf2a7af7aa403f343af1c205bdcf7eff24d9d7f4eee6214c4","impliedFormat":99},{"version":"cd0a9f0ffec2486cad86b7ef1e4da42953ffeb0eb9f79f536e16ff933ec28698","impliedFormat":99},{"version":"f609a6ec6f1ab04dba769e14d6b55411262fd4627a099e333aa8876ea125b822","impliedFormat":99},{"version":"6d8052bb814be030c64cb22ca0e041fe036ad3fc8d66208170f4e90d0167d354","impliedFormat":99},{"version":"851f72a5d3e8a2bf7eeb84a3544da82628f74515c92bdf23c4a40af26dcc1d16","impliedFormat":99},{"version":"59692a7938aab65ea812a8339bbc63c160d64097fe5a457906ea734d6f36bcd4","impliedFormat":99},{"version":"8cb3b95e610c44a9986a7eab94d7b8f8462e5de457d5d10a0b9c6dd16bde563b","impliedFormat":99},{"version":"f571713abd9a676da6237fe1e624d2c6b88c0ca271c9f1acc1b4d8efeea60b66","impliedFormat":99},{"version":"16c5d3637d1517a3d17ed5ebcfbb0524f8a9997a7b60f6100f7c5309b3bb5ac8","impliedFormat":99},{"version":"ca1ec669726352c8e9d897f24899abf27ad15018a6b6bcf9168d5cd1242058ab","impliedFormat":99},{"version":"bffb1b39484facf6d0c5d5feefe6c0736d06b73540b9ce0cf0f12da2edfd8e1d","impliedFormat":99},{"version":"f1663c030754f6171b8bb429096c7d2743282de7733bccd6f67f84a4c588d96e","impliedFormat":99},{"version":"dd09693285e58504057413c3adc84943f52b07d2d2fd455917f50fa2a63c9d69","impliedFormat":99},{"version":"d94c94593d03d44a03810a85186ae6d61ebeb3a17a9b210a995d85f4b584f23d","impliedFormat":99},{"version":"c7c3bf625a8cb5a04b1c0a2fbe8066ecdbb1f383d574ca3ffdabe7571589a935","impliedFormat":99},{"version":"7a2f39a4467b819e873cd672c184f45f548511b18f6a408fe4e826136d0193bb","impliedFormat":99},{"version":"f8a0ae0d3d4993616196619da15da60a6ec5a7dfaf294fe877d274385eb07433","impliedFormat":99},{"version":"2cca80de38c80ef6c26deb4e403ca1ff4efbe3cf12451e26adae5e165421b58d","impliedFormat":99},{"version":"0070d3e17aa5ad697538bf865faaff94c41f064db9304b2b949eb8bcccb62d34","impliedFormat":99},{"version":"53df93f2db5b7eb8415e98242c1c60f6afcac2db44bce4a8830c8f21eee6b1dd","impliedFormat":99},{"version":"d67bf28dc9e6691d165357424c8729c5443290367344263146d99b2f02a72584","impliedFormat":99},{"version":"932557e93fbdf0c36cc29b9e35950f6875425b3ac917fa0d3c7c2a6b4f550078","impliedFormat":99},{"version":"e3dc7ec1597fb61de7959335fb7f8340c17bebf2feb1852ed8167a552d9a4a25","impliedFormat":99},{"version":"b64e15030511c5049542c2e0300f1fe096f926cf612662884f40227267f5cd9f","impliedFormat":99},{"version":"1932796f09c193783801972a05d8fb1bfef941bb46ac76fbe1abb0b3bfb674fa","impliedFormat":99},{"version":"d9575d5787311ee7d61ad503f5061ebcfaf76b531cfecce3dc12afb72bb2d105","impliedFormat":99},{"version":"5b41d96c9a4c2c2d83f1200949f795c3b6a4d2be432b357ad1ab687e0f0de07c","impliedFormat":99},{"version":"38ec829a548e869de4c5e51671245a909644c8fb8e7953259ebb028d36b4dd06","impliedFormat":99},{"version":"20c2c5e44d37dac953b516620b5dba60c9abd062235cdf2c3bfbf722d877a96b","impliedFormat":99},{"version":"875fe6f7103cf87c1b741a0895fda9240fed6353d5e7941c8c8cbfb686f072b4","impliedFormat":99},{"version":"c0ccccf8fbcf5d95f88ed151d0d8ce3015aa88cf98d4fd5e8f75e5f1534ee7ae","impliedFormat":99},{"version":"1b1f4aba21fd956269ced249b00b0e5bfdbd5ebd9e628a2877ab1a2cf493c919","impliedFormat":99},{"version":"939e3299952dff0869330e3324ba16efe42d2cf25456d7721d7f01a43c1b0b34","impliedFormat":99},{"version":"f0a9b52faec508ba22053dedfa4013a61c0425c8b96598cef3dea9e4a22637c6","impliedFormat":99},{"version":"d5b302f50db61181adc6e209af46ae1f27d7ef3d822de5ea808c9f44d7d219fd","impliedFormat":99},{"version":"19131632ba492c83e8eeadf91a481def0e0b39ffc3f155bc20a7f640e0570335","impliedFormat":99},{"version":"4581c03abea21396c3e1bb119e2fd785a4d91408756209cbeed0de7070f0ab5b","impliedFormat":99},{"version":"ebcd3b99e17329e9d542ef2ccdd64fddab7f39bc958ee99bbdb09056c02d6e64","impliedFormat":99},{"version":"4b148999deb1d95b8aedd1a810473a41d9794655af52b40e4894b51a8a4e6a6d","impliedFormat":99},{"version":"1781cc99a0f3b4f11668bb37cca7b8d71f136911e87269e032f15cf5baa339bf","impliedFormat":99},{"version":"33f1b7fa96117d690035a235b60ecd3cd979fb670f5f77b08206e4d8eb2eb521","impliedFormat":99},{"version":"01429b306b94ff0f1f5548ce5331344e4e0f5872b97a4776bd38fd2035ad4764","impliedFormat":99},{"version":"c1bc4f2136de7044943d784e7a18cb8411c558dbb7be4e4b4876d273cbd952af","impliedFormat":99},{"version":"5470f84a69b94643697f0d7ec2c8a54a4bea78838aaa9170189b9e0a6e75d2cf","impliedFormat":99},{"version":"36aaa44ee26b2508e9a6e93cd567e20ec700940b62595caf962249035e95b5e3","impliedFormat":99},{"version":"f8343562f283b7f701f86ad3732d0c7fd000c20fe5dc47fa4ed0073614202b4d","impliedFormat":99},{"version":"a53c572630a78cd99a25b529069c1e1370f8a5d8586d98e798875f9052ad7ad1","impliedFormat":99},{"version":"4ad3451d066711dde1430c544e30e123f39e23c744341b2dfd3859431c186c53","impliedFormat":99},{"version":"8069cbef9efa7445b2f09957ffbc27b5f8946fdbade4358fb68019e23df4c462","impliedFormat":99},{"version":"cd8b4e7ad04ba9d54eb5b28ac088315c07335b837ee6908765436a78d382b4c3","impliedFormat":99},{"version":"d533d8f8e5c80a30c51f0cbfe067b60b89b620f2321d3a581b5ba9ac8ffd7c3a","impliedFormat":99},{"version":"33f49f22fdda67e1ddbacdcba39e62924793937ea7f71f4948ed36e237555de3","impliedFormat":99},{"version":"710c31d7c30437e2b8795854d1aca43b540cb37cefd5900f09cfcd9e5b8540c4","impliedFormat":99},{"version":"b2c03a0e9628273bc26a1a58112c311ffbc7a0d39938f3878837ab14acf3bc41","impliedFormat":99},{"version":"a93beb0aa992c9b6408e355ea3f850c6f41e20328186a8e064173106375876c2","impliedFormat":99},{"version":"efdcba88fcd5421867898b5c0e8ea6331752492bd3547942dea96c7ebcb65194","impliedFormat":99},{"version":"a98e777e7a6c2c32336a017b011ba1419e327320c3556b9139413e48a8460b9a","impliedFormat":99},{"version":"ea44f7f8e1fe490516803c06636c1b33a6b82314366be1bd6ffa4ba89bc09f86","impliedFormat":99},{"version":"c25f22d78cc7f46226179c33bef0e4b29c54912bde47b62e5fdaf9312f22ffcb","impliedFormat":99},{"version":"d57579cfedc5a60fda79be303080e47dfe0c721185a5d95276523612228fcefc","impliedFormat":99},{"version":"a41630012afe0d4a9ff14707f96a7e26e1154266c008ddbd229e3f614e4d1cf7","impliedFormat":99},{"version":"298a858633dfa361bb8306bbd4cfd74f25ab7cc20631997dd9f57164bc2116d1","impliedFormat":99},{"version":"921782c45e09940feb232d8626a0b8edb881be2956520c42c44141d9b1ddb779","impliedFormat":99},{"version":"06117e4cc7399ce1c2b512aa070043464e0561f956bda39ef8971a2fcbcdbf2e","impliedFormat":99},{"version":"daccf332594b304566c7677c2732fed6e8d356da5faac8c5f09e38c2f607a4ab","impliedFormat":99},{"version":"4386051a0b6b072f35a2fc0695fecbe4a7a8a469a1d28c73be514548e95cd558","impliedFormat":99},{"version":"78e41de491fe25947a7fd8eeef7ebc8f1c28c1849a90705d6e33f34b1a083b90","impliedFormat":99},{"version":"3ccd198e0a693dd293ed22e527c8537c76b8fe188e1ebf20923589c7cfb2c270","impliedFormat":99},{"version":"2ebf2ee015d5c8008428493d4987e2af9815a76e4598025dd8c2f138edc1dcae","impliedFormat":99},{"version":"0dcc8f61382c9fcdafd48acc54b6ffda69ca4bb7e872f8ad12fb011672e8b20c","impliedFormat":99},{"version":"9db563287eb527ead0bcb9eb26fbec32f662f225869101af3cabcb6aee9259cf","impliedFormat":99},{"version":"068489bec523be43f12d8e4c5c337be4ff6a7efb4fe8658283673ae5aae14b85","impliedFormat":99},{"version":"838212d0dc5b97f7c5b5e29a89953de3906f72fce13c5ae3c5ade346f561d226","impliedFormat":99},{"version":"ddc78d29af824ad7587152ea523ed5d60f2bc0148d8741c5dacf9b5b44587b1b","impliedFormat":99},{"version":"019b522e3783e5519966927ceeb570eefcc64aba3f9545828a5fb4ae1fde53c6","impliedFormat":99},{"version":"b34623cc86497a5123de522afba770390009a56eebddba38d2aa5798b70b0a87","impliedFormat":99},{"version":"d2a8cbeb0c0caaf531342062b4b5c227118862879f6a25033e31fad00797b7eb","impliedFormat":99},{"version":"14891c20f15be1d0d42ecbbd63de1c56a4d745e3ea2b4c56775a4d5d36855630","impliedFormat":99},{"version":"e55a1f6b198a39e38a3cea3ffe916aab6fde7965c827db3b8a1cacf144a67cd9","impliedFormat":99},{"version":"f7910ccfe56131e99d52099d24f3585570dc9df9c85dd599a387b4499596dd4d","impliedFormat":99},{"version":"9409ac347c5779f339112000d7627f17ede6e39b0b6900679ce5454d3ad2e3c9","impliedFormat":99},{"version":"22dfe27b0aa1c669ce2891f5c89ece9be18074a867fe5dd8b8eb7c46be295ca1","impliedFormat":99},{"version":"684a5c26ce2bb7956ef6b21e7f2d1c584172cd120709e5764bc8b89bac1a10eb","impliedFormat":99},{"version":"93761e39ce9d3f8dd58c4327e615483f0713428fa1a230883eb812292d47bbe8","impliedFormat":99},{"version":"c66be51e3d121c163a4e140b6b520a92e1a6a8a8862d44337be682e6f5ec290a","impliedFormat":99},{"version":"66e486a9c9a86154dc9780f04325e61741f677713b7e78e515938bf54364fee2","impliedFormat":99},{"version":"d211bc80b6b6e98445df46fe9dd3091944825dd924986a1c15f9c66d7659c495","impliedFormat":99},{"version":"8dd2b72f5e9bf88939d066d965144d07518e180efec3e2b6d06ae5e725d84c7d","impliedFormat":99},{"version":"949cb88e315ab1a098c3aa4a8b02496a32b79c7ef6d189eee381b96471a7f609","impliedFormat":99},{"version":"bc43af2a5fa30a36be4a3ed195ff29ffb8067bf4925aa350ace9d9f18f380cc2","impliedFormat":99},{"version":"f280b47f4ad3a3a8d6c53dc31aee21a40da6977ec43ea890b7c86d672933335b","impliedFormat":99},{"version":"8428e71f6d1b63acf55ceb56244aad9cf07678cf9626166e4aded15e3d252f8a","impliedFormat":99},{"version":"11505212ab24aa0f06d719a09add4be866e26f0fc15e96a1a2a8522c0c6a73a8","impliedFormat":99},{"version":"8228186214a5d7da60bd1dd91387a725e19c6c31a7ed4e114cf68d5ce6629c52","impliedFormat":99},{"version":"c44bb0071cededc08236d57d1131c44339c1add98b029a95584dfe1462533575","impliedFormat":99},{"version":"7a4935af71877da3bbc53938af00e5d4f6d445ef850e1573a240447dcb137b5c","impliedFormat":99},{"version":"4e313033202712168ecc70a6d830964ad05c9c93f81d806d7a25d344f6352565","impliedFormat":99},{"version":"8a1fc69eaf8fc8d447e6f776fbfa0c1b12245d7f35f1dbfb18fbc2d941f5edd8","impliedFormat":99},{"version":"afb9b4c8bd38fb43d38a674de56e6f940698f91114fded0aa119de99c6cd049a","impliedFormat":99},{"version":"1d277860f19b8825d027947fca9928ee1f3bfaa0095e85a97dd7a681b0698dfc","impliedFormat":99},{"version":"6d32122bb1e7c0b38b6f126d166dff1f74c8020f8ba050248d182dcafc835d08","impliedFormat":99},{"version":"cfac5627d337b82d2fbeff5f0f638b48a370a8d72d653327529868a70c5bc0f8","impliedFormat":99},{"version":"8a826bc18afa4c5ed096ceb5d923e2791a5bae802219e588a999f535b1c80492","impliedFormat":99},{"version":"73e94021c55ab908a1b8c53792e03bf7e0d195fee223bdc5567791b2ccbfcdec","impliedFormat":99},{"version":"5f73eb47b37f3a957fe2ac6fe654648d60185908cab930fc01c31832a5cb4b10","impliedFormat":99},{"version":"cb6372a2460010a342ba39e06e1dcfd722e696c9d63b4a71577f9a3c72d09e0a","impliedFormat":99},{"version":"1e289698069f553f36bbf12ee0084c492245004a69409066faceb173d2304ec4","impliedFormat":99},{"version":"f1ca71145e5c3bba4d7f731db295d593c3353e9a618b40c4af0a4e9a814bb290","impliedFormat":99},{"version":"ac12a6010ff501e641f5a8334b8eaf521d0e0739a7e254451b6eea924c3035c7","impliedFormat":99},{"version":"97395d1e03af4928f3496cc3b118c0468b560765ab896ce811acb86f6b902b5c","impliedFormat":99},{"version":"7dcfbd6a9f1ce1ddf3050bd469aa680e5259973b4522694dc6291afe20a2ae28","impliedFormat":99},{"version":"6e545419ad200ae4614f8e14d32b7e67e039c26a872c0f93437b0713f54cde53","impliedFormat":99},{"version":"efc225581aae9bb47d421a1b9f278db0238bc617b257ce6447943e59a2d1621e","impliedFormat":99},{"version":"8833b88e26156b685bc6f3d6a014c2014a878ffbd240a01a8aee8a9091014e9c","impliedFormat":99},{"version":"7a2a42a1ac642a9c28646731bd77d9849cb1a05aa1b7a8e648f19ab7d72dd7dc","impliedFormat":99},{"version":"4d371c53067a3cc1a882ff16432b03291a016f4834875b77169a2d10bb1b023e","impliedFormat":99},{"version":"99b38f72e30976fd1946d7b4efe91aa227ecf0c9180e1dd6502c1d39f37445b4","impliedFormat":99},{"version":"df1bcf0b1c413e2945ce63a67a1c5a7b21dbbec156a97d55e9ea0eed90d2c604","impliedFormat":99},{"version":"6e2011a859fa435b1196da1720be944ed59c668bb42d2f2711b49a506b3e4e90","impliedFormat":99},{"version":"b4bfa90fac90c6e0d0185d2fe22f059fec67587cc34281f62294f9c4615a8082","impliedFormat":99},{"version":"036d363e409ebe316a6366aff5207380846f8f82e100c2e3db4af5fe0ad0c378","impliedFormat":99},{"version":"5ae6642588e4a72e5a62f6111cb750820034a7fbe56b5d8ec2bcb29df806ce52","impliedFormat":99},{"version":"6fca09e1abc83168caf36b751dec4ddda308b5714ec841c3ff0f3dc07b93c1b8","impliedFormat":99},{"version":"2f7268e6ac610c7122b6b416e34415ce42b51c56d080bef41786d2365f06772d","impliedFormat":99},{"version":"9a07957f75128ed0be5fc8a692a14da900878d5d5c21880f7c08f89688354aa4","impliedFormat":99},{"version":"8b6f3ae84eab35c50cf0f1b608c143fe95f1f765df6f753cd5855ae61b3efbe2","impliedFormat":99},{"version":"992491d83ff2d1e7f64a8b9117daee73724af13161f1b03171f0fa3ffe9b4e3e","impliedFormat":99},{"version":"12bcf6af851be8dd5f3e66c152bb77a83829a6a8ba8c5acc267e7b15e11aa9ab","impliedFormat":99},{"version":"e2704efc7423b077d7d9a21ddb42f640af1565e668d5ec85f0c08550eff8b833","impliedFormat":99},{"version":"e0513c71fd562f859a98940633830a7e5bcd7316b990310e8bb68b1d41d676a3","impliedFormat":99},{"version":"712071b9066a2d8f4e11c3b8b3d5ada6253f211a90f06c6e131cff413312e26d","impliedFormat":99},{"version":"5a187a7bc1e7514ef1c3d6eaafa470fc45541674d8fca0f9898238728d62666a","impliedFormat":99},{"version":"0c06897f7ab3830cef0701e0e083b2c684ed783ae820b306aedd501f32e9562d","impliedFormat":99},{"version":"56cc6eae48fd08fa709cf9163d01649f8d24d3fea5806f488d2b1b53d25e1d6c","impliedFormat":99},{"version":"57a925b13947b38c34277d93fb1e85d6f03f47be18ca5293b14082a1bd4a48f5","impliedFormat":99},{"version":"9d9d64c1fa76211dd529b6a24061b8d724e2110ee55d3829131bca47f3fe4838","impliedFormat":99},{"version":"c13042e244bb8cf65586e4131ef7aed9ca33bf1e029a43ed0ebab338b4465553","impliedFormat":99},{"version":"54be9b9c71a17cb2519b841fad294fa9dc6e0796ed86c8ac8dd9d8c0d1c3a631","impliedFormat":99},{"version":"10881be85efd595bef1d74dfa7b9a76a5ab1bfed9fb4a4ca7f73396b72d25b90","impliedFormat":99},{"version":"925e71eaa87021d9a1215b5cf5c5933f85fe2371ddc81c32d1191d7842565302","impliedFormat":99},{"version":"faed0b3f8979bfbfb54babcff9d91bd51fda90931c7716effa686b4f30a09575","impliedFormat":99},{"version":"53c72d68328780f711dbd39de7af674287d57e387ddc5a7d94f0ffd53d8d3564","impliedFormat":99},{"version":"51129924d359cdebdccbf20dbabc98c381b58bfebe2457a7defed57002a61316","impliedFormat":99},{"version":"7270a757071e3bc7b5e7a6175f1ac9a4ddf4de09f3664d80cb8805138f7d365b","impliedFormat":99},{"version":"ea7b5c6a79a6511cdeeedc47610370be1b0e932e93297404ef75c90f05fc1b61","impliedFormat":99},{"version":"11b817aaa791d8ebd39a882f80827a7d4a99c6d451c8b836a81b186fcb2de87a","signature":"e7828ab708d23dd98370a8de5d7ad81d44fc5817dffa5a53c4adce749cf30d58"},{"version":"541ffffc9e6533063116770ae651e359b41de8546c52a29a3b560074878a37db","signature":"93cbe28740c0a714593faad25b594962c03c44e6d9fc85b3c467ae4c2f39f005"},{"version":"e516240bc1e5e9faef055432b900bc0d3c9ca7edce177fdabbc6c53d728cced8","impliedFormat":99},{"version":"5402765feacf44e052068ccb4535a346716fa1318713e3dae1af46e1e85f29a9","impliedFormat":99},{"version":"e16ec5d4796e7a765810efee80373675cedc4aa4814cf7272025a88addf5f0be","impliedFormat":99},{"version":"1f57157fcd45f9300c6efcfc53e2071fbe43396b0a7ed2701fbd1efb5599f07f","impliedFormat":99},{"version":"9f1886f3efddfac35babcada2d454acd4e23164345d11c979966c594af63468b","impliedFormat":99},{"version":"a3541c308f223863526df064933e408eba640c0208c7345769d7dc330ad90407","impliedFormat":99},{"version":"59af208befeb7b3c9ab0cb6c511e4fec54ede11922f2ffb7b497351deaf8aa2e","impliedFormat":99},{"version":"928b16f344f6cddaba565da8238f4cf2ddf12fe03eb426ab46a7560e9b3078fa","impliedFormat":99},{"version":"120bdf62bccef4ea96562a3d30dd60c9d55481662f5cf31c19725f56c0056b34","impliedFormat":99},{"version":"39e0da933908de42ba76ea1a92e4657305ae195804cfaa8760664e80baac2d6a","impliedFormat":99},{"version":"55ce6ca8df9d774d60cef58dd5d716807d5cc8410b8b065c06d3edac13f2e726","impliedFormat":99},{"version":"788a0faf3f28d43ce3793b4147b7539418a887b4a15a00ffb037214ed8f0b7f6","impliedFormat":99},{"version":"a3e66e7b8ccdab967cd4ada0f178151f1c42746eabb589a06958482fd4ed354e","impliedFormat":99},{"version":"bf45a2964a872c9966d06b971d0823daecbd707f97e927f2368ba54bb1b13a90","impliedFormat":99},{"version":"39973a12c57e06face646fb79462aabe8002e5523eec4e86e399228eb34b32c9","impliedFormat":99},{"version":"f01091e9b5028acfb38208113ae051fad8a0b4b8ec1f7137a2a5cf903c47eefc","impliedFormat":99},{"version":"b3e87824c9e7e3a3be7f76246e45c8d603ce83d116733047200b3aa95875445b","impliedFormat":99},{"version":"7e1f7f9ae14e362d41167dc861be6a8d76eca30dde3a9893c42946dc5a5fc686","impliedFormat":99},{"version":"9308ef3b9433063ac753a55c3f36d6d89fa38a8e6c51e05d9d8329c7f1174f24","impliedFormat":99},{"version":"cd3bb1aa24726a0abd67558fde5759fe968c3c6aa3ec7bad272e718851502894","impliedFormat":99},{"version":"1ae0f22c3b8420b5c2fec118f07b7ebd5ae9716339ab3477f63c603fe7a151c8","impliedFormat":99},{"version":"919ff537fff349930acc8ad8b875fd985a17582fb1beb43e2f558c541fd6ecd9","impliedFormat":99},{"version":"4e67811e45bae6c44bd6f13a160e4188d72fd643665f40c2ac3e8a27552d3fd9","impliedFormat":99},{"version":"3d1450fd1576c1073f6f4db9ebae5104e52e2c4599afb68d7d6c3d283bdbaf4f","impliedFormat":99},{"version":"c072af873c33ff11af126c56a846dfada32461b393983a72b6da7bff373e0002","impliedFormat":99},{"version":"de66e997ea5376d4aeb16d77b86f01c7b7d6d72fbb738241966459d42a4089e0","impliedFormat":99},{"version":"d77ea3b91e4bc44d710b7c9487c2c6158e8e5a3439d25fc578befeb27b03efd7","impliedFormat":99},{"version":"a3d5c695c3d1ebc9b0bd55804afaf2ac7c97328667cbeedf2c0861b933c45d3e","impliedFormat":99},{"version":"270724545d446036f42ddea422ee4d06963db1563ccc5e18b01c76f6e67968ae","impliedFormat":99},{"version":"85441c4f6883f7cfd1c5a211c26e702d33695acbabec8044e7fa6831ed501b45","impliedFormat":99},{"version":"0f268017a6b1891fdeea69c2a11d576646d7fd9cdfc8aac74d003cd7e87e9c5a","impliedFormat":99},{"version":"9ece188c336c80358742a5a0279f2f550175f5a07264349d8e0ce64db9701c0b","impliedFormat":99},{"version":"cf41b0fc7d57643d1a8d21af07b0247db2f2d7e2391c2e55929e9c00fbe6ab9a","impliedFormat":99},{"version":"11e7ddddd9eddaac56a6f23d8699ae7a94c2a55ae8c986fdabc719d3c3e875a1","impliedFormat":99},{"version":"dd129c2d348be7dbf9f15d34661defdfc11ee00628ca6f7161bead46095c6bc3","impliedFormat":99},{"version":"c38d8e7cfc64bbfc14a63346388249c1cfa2cc02166c5f37e5a57da4790ce27f","impliedFormat":99},{"version":"67237a35be1473c2436d9438a17330e183bf720e84391dd8d0a00a73f289a371","signature":"0d2ec35e98301af187839a1a6110c5f2dd8202b514755c1b6450394eac8cb5bc"},{"version":"7e3373dde2bba74076250204bd2af3aa44225717435e46396ef076b1954d2729","impliedFormat":1},{"version":"1c3dfad66ff0ba98b41c98c6f41af096fc56e959150bc3f44b2141fb278082fd","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"eb9271b3c585ea9dc7b19b906a921bf93f30f22330408ffec6df6a22057f3296","impliedFormat":1},{"version":"82b7bf38f1bc606dc662c35b8c80905e40956e4c2212d523402ae925bd75de63","impliedFormat":1},{"version":"81be14ad77be99cea7343fdc92a0f4058bcdebaa789d944e04ce4f86f0ca5fbb","impliedFormat":1},{"version":"9f1e00eab512de990ba27afa8634ca07362192063315be1f8166bc3dcc7f0e0f","impliedFormat":1},{"version":"1cdbf5cc31860b39bd1881f19809357ee3600331ff1317f9d700c21665649aa8","impliedFormat":1},{"version":"86dac6ce3fcd0a069b67a1ac9abdbce28588ea547fd2b42d73c1a2b7841cf182","impliedFormat":1},{"version":"4d34fbeadba0009ed3a1a5e77c99a1feedec65d88c4d9640910ff905e4e679f7","impliedFormat":1},{"version":"2f3ec8a345eefed1af66b5975da98ccf3178d13ba9308359d34d2f7f87dd4c9c","impliedFormat":1},{"version":"8fcc5571404796a8fe56e5c4d05049acdeac9c7a72205ac15b35cb463916d614","impliedFormat":1},{"version":"a3b3a1712610260c7ab96e270aad82bd7b28a53e5776f25a9a538831057ff44c","impliedFormat":1},{"version":"33a2af54111b3888415e1d81a7a803d37fada1ed2f419c427413742de3948ff5","impliedFormat":1},{"version":"d5a4fca3b69f2f740e447efb9565eecdbbe4e13f170b74dd4a829c5c9a5b8ebf","impliedFormat":1},{"version":"56f1e1a0c56efce87b94501a354729d0a0898508197cb50ab3e18322eb822199","impliedFormat":1},{"version":"8960e8c1730aa7efb87fcf1c02886865229fdbf3a8120dd08bb2305d2241bd7e","impliedFormat":1},{"version":"27bf82d1d38ea76a590cbe56873846103958cae2b6f4023dc59dd8282b66a38a","impliedFormat":1},{"version":"0daaab2afb95d5e1b75f87f59ee26f85a5f8d3005a799ac48b38976b9b521e69","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"9b048390bcffe88c023a4cd742a720b41d4cd7df83bc9270e6f2339bf38de278","affectsGlobalScope":true,"impliedFormat":1},{"version":"c60b14c297cc569c648ddaea70bc1540903b7f4da416edd46687e88a543515a1","impliedFormat":1},{"version":"d03cf6cd011da250c9a67c35a3378de326f6136c4192a90dd11f3a84627b4ef6","impliedFormat":1},{"version":"9c0217750253e3bf9c7e3821e51cff04551c00e63258d5e190cf8bd3181d5d4a","impliedFormat":1},{"version":"5c2e7f800b757863f3ddf1a98d7521b8da892a95c1b2eafb48d652a782891677","impliedFormat":1},{"version":"73ed3ff18ca862b9d7272de3b0d137d284a0c40e1c94cbf37acd5270ce9b7cd6","impliedFormat":1},{"version":"c61d8275c35a76cb12c271b5fa8707bb46b1e5778a370fd6037c244c4df6a725","impliedFormat":1},{"version":"c7793cb5cd2bef461059ca340fbcd19d7ddac7ab3dcc6cd1c90432fca260a6ae","impliedFormat":1},{"version":"fd3bf6d545e796ebd31acc33c3b20255a5bc61d963787fc8473035ea1c09d870","impliedFormat":1},{"version":"c7af51101b509721c540c86bb5fc952094404d22e8a18ced30c38a79619916fa","impliedFormat":1},{"version":"59c8f7d68f79c6e3015f8aee218282d47d3f15b85e5defc2d9d1961b6ffed7a0","impliedFormat":1},{"version":"93a2049cbc80c66aa33582ec2648e1df2df59d2b353d6b4a97c9afcbb111ccab","impliedFormat":1},{"version":"d04d359e40db3ae8a8c23d0f096ad3f9f73a9ef980f7cb252a1fdc1e7b3a2fb9","impliedFormat":1},{"version":"84aa4f0c33c729557185805aae6e0df3bd084e311da67a10972bbcf400321ff0","impliedFormat":1},{"version":"cf6cbe50e3f87b2f4fd1f39c0dc746b452d7ce41b48aadfdb724f44da5b6f6ed","impliedFormat":1},{"version":"3cf494506a50b60bf506175dead23f43716a088c031d3aa00f7220b3fbcd56c9","impliedFormat":1},{"version":"f2d47126f1544c40f2b16fc82a66f97a97beac2085053cf89b49730a0e34d231","impliedFormat":1},{"version":"724ac138ba41e752ae562072920ddee03ba69fe4de5dafb812e0a35ef7fb2c7e","impliedFormat":1},{"version":"e4eb3f8a4e2728c3f2c3cb8e6b60cadeb9a189605ee53184d02d265e2820865c","impliedFormat":1},{"version":"f16cb1b503f1a64b371d80a0018949135fbe06fb4c5f78d4f637b17921a49ee8","impliedFormat":1},{"version":"f4808c828723e236a4b35a1415f8f550ff5dec621f81deea79bf3a051a84ffd0","impliedFormat":1},{"version":"3b810aa3410a680b1850ab478d479c2f03ed4318d1e5bf7972b49c4d82bacd8d","impliedFormat":1},{"version":"0ce7166bff5669fcb826bc6b54b246b1cf559837ea9cc87c3414cc70858e6097","impliedFormat":1},{"version":"90ae889ba2396d54fe9c517fcb0d5a8923d3023c3e6cbd44676748045853d433","impliedFormat":1},{"version":"3549400d56ee2625bb5cc51074d3237702f1f9ffa984d61d9a2db2a116786c22","impliedFormat":1},{"version":"5ffe02488a8ffd06804b75084ecc66b512f85186508e7c9b57b5335283b1f487","impliedFormat":1},{"version":"b60f6734309d20efb9b0e0c7e6e68282ee451592b9c079dd1a988bb7a5eeb5e7","impliedFormat":1},{"version":"f4187a4e2973251fd9655598aa7e6e8bba879939a73188ee3290bb090cc46b15","impliedFormat":1},{"version":"44c1a26f578277f8ccef3215a4bd642a0a4fbbaf187cf9ae3053591c891fdc9c","impliedFormat":1},{"version":"a5989cd5e1e4ca9b327d2f93f43e7c981f25ee12a81c2ebde85ec7eb30f34213","impliedFormat":1},{"version":"f65b8fa1532dfe0ef2c261d63e72c46fe5f089b28edcd35b3526328d42b412b8","impliedFormat":1},{"version":"1060083aacfc46e7b7b766557bff5dafb99de3128e7bab772240877e5bfe849d","impliedFormat":1},{"version":"1b32f14ef9e26be36776d6115d3661747508a3437f5bb2528a39ce60f622b5aa","impliedFormat":1},{"version":"9ee50ea4e24ac33273880940358802dd98baddf27173f19ea061752eb192c44d","impliedFormat":1},{"version":"111e1ef247e53abc607bd921154a477a4b19b3e876abb79c672012f06f69b368","impliedFormat":1},{"version":"7ec569bb000dbd2ae79f6e5888fa16765a7c579936054a4f50b021eaf31b0998","impliedFormat":1},{"version":"dd0b9b00a39436c1d9f7358be8b1f32571b327c05b5ed0e88cc91f9d6b6bc3c9","impliedFormat":1},{"version":"a951a7b2224a4e48963762f155f5ad44ca1145f23655dde623ae312d8faeb2f2","impliedFormat":1},{"version":"f7eb7fc7e7c956605835e5bbbdfc4b6d1c36f1d41a162bfffba4540eae5d4257","impliedFormat":1},{"version":"cf7698e227b8f0e3373106ef29db72fc52661c0fdaa823205fbfc357985ec219","impliedFormat":1},{"version":"9f20de1b5776e653764e55f059d02ef460d7e2c064c304bfda1d7ba2dda43886","impliedFormat":1},{"version":"890ed5cccf66fdced5795066488cd006379dfc84b1670e459f03d40c625341ca","impliedFormat":1},{"version":"d8e8ab0dbaee5220b21dfbbb33fefc684ef4d87b07743a998f39e9d88ffe9776","impliedFormat":1},{"version":"977aeb024f773799d20985c6817a4c0db8fed3f601982a52d4093e0c60aba85f","impliedFormat":1},{"version":"d59cf5116848e162c7d3d954694f215b276ad10047c2854ed2ee6d14a481411f","impliedFormat":1},{"version":"50098be78e7cbfc324dfc04983571c80539e55e11a0428f83a090c13c41824a2","impliedFormat":1},{"version":"40894bcf307f326ec4d371cd2ff304dac0fa303d1c6c71ad7dc65742239114da","impliedFormat":1},{"version":"dd6051c7b02af0d521857069c49897adb8595d1f0e94487d53ebc157294ef864","impliedFormat":1},{"version":"79c6a11f75a62151848da39f6098549af0dd13b22206244961048326f451b2a8","impliedFormat":1},{"version":"0d1015da32cad5bcf8b19ecb4464bfada1faf005ead1db5107410f33a4b1ac77","signature":"e382d9aa86ae57a0634861cd952e44d2676f508b963e4243c35546caa86c7d86"},{"version":"2c57db2bf2dbd9e8ef4853be7257d62a1cb72845f7b976bb4ee827d362675f96","impliedFormat":99},{"version":"f4629326151cdb4fefbb8d49ff20bcc3ffab3f791fb31b795937650877eae212","signature":"f0be1892cb7f2a9d3ad1905cb890ba8ce14f31fdd29160043ea88830717b284b"},{"version":"89d052508dd671fdc6c823cc299a53537edd00c7067ae9508a2af0a8eeb4348b","signature":"160fbcda3ae5291ff8861d7328a3bc0b086a02cf45e521cbef69bc50817bbdba"},{"version":"bb703864a1bc9ca5ac3589ffd83785f6dc86f7f6c485c97d7ffd53438777cb9e","impliedFormat":1},{"version":"803aa420db4170238043ca1b9f1fd88f285f1b83f3ff2c0c5abff217df316896","signature":"143126980202f9d9cf7ba155552d23da27f196afa8812c1155ee28780e8fcbc5"},{"version":"6da2e0928bdab05861abc4e4abebea0c7cf0b67e25374ba35a94df2269563dd8","impliedFormat":99},{"version":"ef3f8b668e7abee8ea18ea66317d067a5f3590a3bdfb7be937df5838e69602e8","signature":"704c09fbf8cab1b4da84a0fb0b9229185746bb65f8c2db5ebb52ecc121389aa4"},{"version":"e7441be68f390975c6155c805cea8f54cc1b7f3656b6b9440ecbbbd7753499e6","impliedFormat":99},{"version":"e62592bd1cea50ad95ebeba32a165f9cfdf5a5c6431067ec74e024b83a866f01","signature":"0c744d06c45e1d7281cbb0ed29c102a48716bb845436ad02ec4b2b2b101b8318"},{"version":"c9828acce9044690059524bee2e67dec68710baed7bfa1f6c787ca86413112d6","signature":"c91f4024710e2864c14d93717af2a6cd78f21de069b0032bd7469437ff0a925e"},{"version":"c80fb0dc554855fd84ac91ad30f724127a066ad2156b1846dc46ee5811ee9135","signature":"367466b8edaa628bdf47c48c768e0dbad54a8a128eaa6af92041c72be0381843"},{"version":"91b4ce96f6ad631a0a6920eb0ab928159ff01a439ae0e266ecdc9ea83126a195","impliedFormat":1},{"version":"88efe27bebddb62da9655a9f093e0c27719647e96747f16650489dc9671075d6","impliedFormat":1},{"version":"e348f128032c4807ad9359a1fff29fcbc5f551c81be807bfa86db5a45649b7ba","impliedFormat":1},{"version":"8ee6b07974528da39b7835556e12dd3198c0a13e4a9de321217cd2044f3de22e","impliedFormat":1},{"version":"deefd8c43b40f9797c3921d78d3f9243959621a17b817be7f5d95c149f23a9dd","impliedFormat":1},{"version":"5f12132800d430adbe59b49c2c0354d85a71ada7d756e34250a655baa8ad4ae5","impliedFormat":1},{"version":"1996d1cd7d585a8359a35878f67abdd73cc35b1f675c9c6b147b202fdd8dfc3f","impliedFormat":1},{"version":"b16e757e4c35434065120a2b3bf13a518fc9e621dc9c2ed668f91635a9dc4e75","impliedFormat":1},{"version":"7c18088ccbca1cfe297c22f4cf598a3a36e798efe63f572e39442e9b6af7ccf9","impliedFormat":1},{"version":"d02ced7accb512e6198b796b8d284e7979abde0f089b0a77969747a5f27bfb23","impliedFormat":1},{"version":"4374cefdde5c6e9bad52b0436e887b8325b8f407c12035194ad02c28f1553a3a","impliedFormat":1},{"version":"9b70cad270593f676aecfe4d1611dc766464f0b8138527b0ebbf1ff773578d69","impliedFormat":1},{"version":"b4f85bfb7e831703ac81737361842f1ae4d924b42c5d1af2bff93cca521de4d1","impliedFormat":1},{"version":"ee933420aacba1f60aa70fb8ba47c5e69001b005073b71973114587089a13c7f","impliedFormat":1},{"version":"0a0714999d0a5bdfacd15c7b34cffbcc6f263f6cb0ccb42076cdc541c6987797","impliedFormat":1},{"version":"56584bfc655f9df64afc0f22f7d1122c29e5b74b342c203b891e19de9fa37de8","impliedFormat":1},{"version":"40ec58f0fadd0b3981b3d383e1c12fa0680115ae9f018387fc2cfc0bbcf23204","impliedFormat":1},{"version":"849b9e7283b7309a4556c9b90bb8e2dfc27751f157798065bbc513dcddb09a8c","impliedFormat":1},{"version":"76bba0c97594248c1be19af32d5799f7eff51cec2926d8e4dd59267d7636a0b4","impliedFormat":1},{"version":"10e109212c7be8a9f66e988e5d6c2a8900c9d14bf6beadf5fa70d32ada3425cf","impliedFormat":1},{"version":"2b821aeb31e690092f8eae671dd961a9d0fd598ff4883ce0a600c90e9e8fa716","impliedFormat":1},{"version":"26602933b613e4df3868a6c82e14fffa2393a08531cb333ed27b151923462981","impliedFormat":1},{"version":"f57a588d8f6b3ce5c8b494f2dc759a8885eaee18e80a4952df47de45403fedbe","impliedFormat":1},{"version":"34735727b3fe7a0ed0651a0f88d06449163d1989a2b2de7f047473adc7c1c383","impliedFormat":1},{"version":"a5b13abc88ab3186e713c445e59e2f6eee20c6167943517bc2f56985d89b8c55","impliedFormat":1},{"version":"c8a206a6ba4e32710ebb4a389187772423de0f4f6180b95a7ef1a5a1934c1be6","impliedFormat":1},{"version":"7ae65fe95b18205e241e6695cb2c61c0828d660aca7d08f68781b439a800e6b8","impliedFormat":1},{"version":"c2c8c166199d3a7bd093152437d1f6399d05e458a9ca9364456feecba920cda4","impliedFormat":1},{"version":"369b7270eeeb37982203b2cb18c7302947b89bf5818c1d3d2e95a0418f02b74e","impliedFormat":1},{"version":"94f95d223e2783b0aef4d15d7f6990a6a550fe17d099c501395f690337f7105e","impliedFormat":1},{"version":"039bd8d1e0d151570b66e75ee152877fb0e2f42eca43718632ac195e6884be34","impliedFormat":1},{"version":"d565d66b38d54de037c9d46dede1f12630010d9b45fd9c6b432c7a40b2e30502","impliedFormat":1},{"version":"d7386a1ebe9a3eae227a5561c898c10cacb61a49f941c5a18cdf593f979c693c","impliedFormat":1},{"version":"e308b9b592b4c89895a14077bd3254811cab67bb580286b1bd7428cb476b6df3","signature":"59d4d3e50459d3dcb53cc0ca9d1211d299167c2283ac63428b90a53824dd248c"},{"version":"89ad9a4e8044299f356f38879a1c2176bc60c997519b442c92cc5a70b731a360","impliedFormat":99},{"version":"3a05918eaf7436596e09562f4d5371384e15f2f27c9ef0788354035282d96064","signature":"fd469ee23a7074342357545f0d37b487066bab6fc00e079695cc02f79598bf8d"},{"version":"9214c077d8d253331da82bffdb36edb778abc73d27b34dff0eb544e6d7b9d386","signature":"fefbe143dffcdc8d5ff7f05ce2d8ed71a5bc8d73afb6726ae2e1838e1bb4d020"},{"version":"b843496b17a2bbd79c83809c73fd9c59fab53d3e361e04e52e2d489524eea764","impliedFormat":1},{"version":"6a046b50c82c554699c148a9f4922c785b200fb87f067772f166e80c59e813ca","signature":"6be90cc3810d5b2a29f304c6f7ff64a7f4d0f26e44d944d1dfa68b7d7a2fbf65"},{"version":"c4f50ecab61ee02224a432f2e5e7cafc1941913640134abade00e3db82512baf","signature":"1e5397982923535c863813ef7f7b4bf8f63f87389021525fa7530f9e65d8d18d"},{"version":"3e346d9b84a0e2cbafb6311589d4dfcf0df6c1c8f94fca26ff4c34dfa4170823","signature":"eb1f0c48fcae785ca971602b876b59df15d9213a439d3ec82aacd5fc8415350e"},{"version":"fd4f58cd6b5fc8ce8af0d04bfef5142f15c4bafaac9a9899c6daa056f10bb517","impliedFormat":99},{"version":"da0313c01c8aedd722c4bb1cbd4723acef6187cda4de0ea230cff90d6aebcf2e","signature":"da6a1d498947d59b453f7bdca298ee4b77f0e34ab6e2aaaf782aaac054b571f4"},{"version":"2a00cea77767cb26393ee6f972fd32941249a0d65b246bfcb20a780a2b919a21","impliedFormat":99},{"version":"440cb5b34e06fabe3dcb13a3f77b98d771bf696857c8e97ce170b4f345f8a26b","impliedFormat":99},{"version":"c0f759689e24aaa36d62d2de868ddab35b12c5e4a8c8c035582c46a963e4b56f","signature":"aa4c6a3e34c3d0d6e795066286aa3e062b085c1b2a8967f5782d14394d7cae16"},{"version":"c0306e3325a10c7377794b1b75fffb57179be1f19a3b3b3b0e0d79dde53b4ecf","signature":"c9001d3c77c7b306af3e8b7d4407e4a7f9ca133d1302fdd67238211f6e1c2b6f"},{"version":"a81a0eea036dd60a2c2edc52466bb2853bef379c3b9de327fe9fff6e3c38e6c5","impliedFormat":1},{"version":"348c13a1c9160681e41bc5cd3cc519dd8170d38a36a30480b41849f60f5bf8a0","impliedFormat":1},{"version":"c772a37a02356897d6f9872e30fcc2108f43ad943cc112bd1acc5415a876e9f8","impliedFormat":1},{"version":"279248c34ecd223fc46224f86384ebf49c775eb69329ad644d3d99f1205f3e7d","impliedFormat":1},{"version":"74dedffc2d09627f5a4de02bbd7eedf634938c13c2cc4e92f0b4135573432783","impliedFormat":1},{"version":"1f2bbbe38d5e536607b385f04c3d2cbf1e678c5ded7e8c5871ad8ae91ef33c3d","impliedFormat":1},{"version":"3aa3513d5e13d028202e788d763f021d2d113bd673087b42a2606ab50345492d","impliedFormat":1},{"version":"f012173d64d0579875aa60405de21ad379af7971b93bf46bee23acc5fa2b76a4","impliedFormat":1},{"version":"dcf5dc3ce399d472929c170de58422b549130dd540531623c830aaaaf3dd5f93","impliedFormat":1},{"version":"ec35f1490510239b89c745c948007c5dd00a8dca0861a836dcf0db5360679a2d","impliedFormat":1},{"version":"32868e4ec9b6bd4b1d96d24611343404b3a0a37064a7ac514b1d66b48325a911","impliedFormat":1},{"version":"4bbea07f21ff84bf3ceeb218b5a8c367c6e0f08014d3fd09e457d2ffb2826b9c","impliedFormat":1},{"version":"873a07dbeb0f8a3018791d245c0cf10c3289c8f7162cdbbb4a5b9cf723136185","impliedFormat":1},{"version":"43839af7f24edbd4b4e42e861eb7c0d85d80ec497095bb5002c93b451e9fcf88","impliedFormat":1},{"version":"54a7ee56aadecbe8126744f7787f54f79d1e110adab8fe7026ad83a9681f136a","impliedFormat":1},{"version":"6333c727ee2b79cdab55e9e10971e59cbfee26c73dfb350972cfd97712fc2162","impliedFormat":1},{"version":"8743b4356e522c26dc37f20cde4bcdb5ebd0a71a3afe156e81c099db7f34621d","impliedFormat":1},{"version":"af3d97c3a0da9491841efc4e25585247aa76772b840dd279dbff714c69d3a1ec","impliedFormat":1},{"version":"d9ac50fe802967929467413a79631698b8d8f4f2dc692b207e509b6bb3a92524","impliedFormat":1},{"version":"34d017b29ca5107bf2832b992e4cee51ed497f074724a4b4a7b6386b7f8297c9","impliedFormat":1},{"version":"b75d56703daaffcb31a7cdebf190856e07739a9481f01c2919f95bde99be9424","impliedFormat":99},{"version":"8f96f309d60fb87c09afbfba79c43326324379859e2bc27e1d26594a886ec908","signature":"1b2b4612cbfad4c97462a177552f8ad4d3014c58b6f40318318e8049e701e13f"},{"version":"99d1a601593495371e798da1850b52877bf63d0678f15722d5f048e404f002e4","impliedFormat":99},{"version":"4d19b093a16635687d128e2157c8f5bac50b2391cbe031e07ec1e2d53f4d73a3","signature":"351f7cb5f3ce63374db1c4a065fa52fb1395e525c7a7a9dcaade8db57dae36a7"},{"version":"c3005a6a39bd1aaecf3c0c9c61860db480ec5cbd16381556e381bdc3a59b6ac6","signature":"6ff334f1e3348c2e00624e004c3f55ab2e5a80c688642db171633a735efb9374"},{"version":"233267a4a036c64aee95f66a0d31e3e0ef048cccc57dd66f9cf87582b38691e4","impliedFormat":99},{"version":"b620f27ccc82ec7748e2039143cd3c36c029e48b083025f88e621e6dda91222a","signature":"6d248991a8cfaece02458f68fed4d3e7ebbdb17833b9fd127fdaa69cf8436c69"},{"version":"1bdf187549f043a81a5b1a97da1422c4bf2bc5b2cce0415f074e017dcf1e8f71","signature":"0bcbba038569698e4536177738d43aed5cc5e81a958ef84c512c683ac9414354"},{"version":"5f2418e3437ab5fcf922fefa408f3b0257431ac9353a10c5c3d18fd3e68b30f7","signature":"6758bdb7bc5b66438c03317d3c2a15ac771cb1382d8229f65fbb6a05b225f1da"},{"version":"006b673fb9c6922aae885173748176c0daec31d8b396a04335143808a5ec89c4","signature":"4bee0726981e0857928e286c1778d6935dbdcd9fa66d256174860c5d951a8721"},{"version":"4a5aa16151dbec524bb043a5cbce2c3fec75957d175475c115a953aca53999a9","impliedFormat":99},{"version":"6d89650a8b9474244627b2ead855995f9923b9ad8576db96c1841b084f44c76a","signature":"5035c4b9bc34ab886efe227aab0d1057f08efd33c317ac18adbb0c5137544e5e"},{"version":"7e4ec95a993de8b29a144facf8c5e99271239ee40ca158a93cbc8b6853e7ca54","signature":"6a837d288765564d548dd6ca64acfcd5d51b53898414355060b1ebf38d45d74d"},{"version":"2dfd19d81413d2eda50679dd8caa1cad25ebb34194b37fa1ddfb7dd647939f6d","signature":"5fe0be66db3dd2c391800533fc65d83aff705a2accd5a59c1804b462d5d1c15c"},{"version":"69ec8d900cfec3d40e50490fedbbea5c1b49d32c38adbc236e73a3b8978c0b11","impliedFormat":99},{"version":"7fd629484ba6772b686885b443914655089246f75a13dd685845d0abae337671","impliedFormat":99},{"version":"80a93a384850d9fd7b4d5c2d1f8409874d198467648e000c310695caedaf807b","signature":"ea61fe226066ef7b04c31bb4cb69f280569982683945c2dcaf65d59a537b6217"},{"version":"4e725b44cc99b17211ca80c9306271c7dd1a9c9af0d0aba3faddad63d33992e2","signature":"44c4203ac811b5d4d8953be3b07ace5b3b5396d892cde969912d40d058d43086"},{"version":"1b43441b273aa21c1e74fefa774d5a7cb50068e5d4c192a8f63b9c95c5580431","signature":"32f7c168ee545e9b432d2a861f4fb0bc645e21e88c774cedf54e72d1e3ccc049"},{"version":"14026c3fde4b3368aed1bd8595849bf41faebf3e21b068c29e24ac4e196c4a0e","affectsGlobalScope":true},{"version":"c345d4dcff1e35c91f2e5aac22bb9428ad6a7a05f32aaa95bdf81616bdc63f18","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"d1986184a09a52db8228cb2bb2a61a8c05c9354e5b93cec8e2628d8579c892d7",{"version":"f6aec495b0db5668274799aa5198a9245e5eb6f54af9611f59018f14a1adfe1f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"}],"root":[510,511,516,[590,597],[629,637],642,[1125,1143],[1151,1158],1163,[1167,1169],1171,1172,1176,[1183,1186],[1188,1198],1200,1202,1204,1207,1210,[1212,1235],1237,1238,[1240,1245],1248,1250,1251,1253,1255,1256,1258,1259,1694,1695,1732,1803,1805,1806,1808,1810,[1812,1814],1848,1850,1851,[1853,1855],1857,1860,1861,1883,1885,1886,[1888,1891],[1893,1895],[1898,1904]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":2},"referencedMap":[[1903,1],[510,2],[1904,3],[1901,2],[1902,4],[592,5],[593,6],[595,6],[594,6],[596,6],[597,7],[632,8],[633,8],[634,8],[635,8],[631,8],[637,9],[1126,10],[1127,11],[1128,11],[1130,6],[1131,6],[1132,12],[1133,6],[1129,13],[1134,14],[1135,15],[1136,6],[1137,16],[1138,16],[1139,6],[1141,17],[1142,6],[1192,18],[1188,19],[1196,20],[1214,21],[1215,22],[1212,23],[1213,24],[1193,25],[1217,26],[1216,27],[1194,28],[1195,29],[1219,30],[1218,31],[1220,32],[1221,33],[1222,34],[1223,35],[1191,36],[1226,37],[1224,38],[1227,39],[1235,40],[1244,41],[1228,42],[1234,43],[1245,44],[1143,45],[1232,46],[1233,47],[1186,48],[1230,49],[1185,50],[1189,51],[1190,52],[1225,53],[1243,54],[1242,55],[1238,56],[1231,57],[1163,58],[1184,59],[1241,60],[1248,61],[1250,62],[1251,63],[1253,64],[1255,65],[1229,66],[1256,67],[1259,68],[1171,66],[1694,69],[1695,70],[1732,71],[1803,72],[1805,73],[1806,74],[1808,75],[1810,76],[1198,77],[1812,78],[1183,79],[1813,80],[1814,81],[1848,82],[1850,83],[1851,84],[1853,85],[1172,70],[1854,86],[1855,87],[1207,88],[1857,89],[1860,90],[1861,91],[1237,92],[1210,93],[1204,94],[1883,95],[1885,96],[1202,97],[1258,98],[1176,77],[1889,99],[1886,87],[1240,100],[1890,101],[1891,102],[1893,103],[1894,70],[1200,104],[1197,70],[1151,105],[1895,106],[1899,107],[1898,108],[1888,109],[1900,110],[1152,111],[1153,110],[1154,111],[1167,112],[591,113],[1168,114],[1155,115],[630,115],[636,115],[1140,115],[629,115],[1156,115],[590,116],[1125,117],[1169,118],[1157,115],[642,119],[511,120],[539,121],[526,122],[524,123],[522,124],[521,2],[525,125],[519,125],[523,126],[527,127],[529,128],[517,2],[533,129],[536,130],[538,131],[535,132],[537,133],[534,2],[528,134],[530,135],[520,2],[589,136],[1101,137],[990,138],[993,139],[994,139],[995,139],[996,139],[997,139],[998,139],[999,139],[1000,139],[1001,139],[1002,139],[1003,139],[1004,139],[1005,139],[1006,139],[1007,139],[1008,139],[1009,139],[1010,139],[1011,139],[1012,139],[1013,139],[1014,139],[1015,139],[1016,139],[1017,139],[1018,139],[1019,139],[1020,139],[1021,139],[1022,139],[1023,139],[1024,139],[1025,139],[1026,139],[1027,139],[1028,139],[1029,139],[1030,139],[1031,139],[1032,139],[1033,139],[1034,139],[1035,139],[1036,139],[1037,139],[1038,139],[1039,139],[1040,139],[1041,139],[1042,139],[1043,139],[1044,139],[1045,139],[1046,139],[1047,139],[1048,139],[1049,139],[1050,139],[1051,139],[1052,139],[1053,139],[1109,140],[1054,139],[1055,139],[1056,139],[1057,139],[1058,139],[1059,139],[1060,139],[1061,139],[1062,139],[1063,139],[1064,139],[1065,139],[1066,139],[1067,139],[1068,139],[1069,139],[1070,139],[1071,139],[1072,139],[1073,139],[1074,139],[1075,139],[1076,139],[1077,139],[1078,139],[1079,139],[1080,139],[1081,139],[1082,139],[1083,139],[1084,139],[1085,139],[1086,139],[1087,139],[1088,139],[1089,139],[1090,139],[1091,139],[1093,141],[1094,142],[1095,142],[1096,142],[1097,142],[1098,142],[1099,142],[1100,142],[989,143],[1102,144],[1124,145],[991,2],[1123,146],[992,147],[1092,148],[1122,149],[1116,150],[1111,151],[1112,152],[1113,153],[1114,154],[1115,155],[1103,156],[1108,157],[1104,158],[1110,159],[1121,160],[1117,161],[1118,161],[1119,162],[1120,162],[988,163],[947,2],[951,164],[948,165],[949,165],[950,165],[954,166],[953,167],[957,168],[955,169],[952,170],[956,171],[959,172],[958,2],[966,173],[967,2],[968,143],[987,174],[976,2],[973,175],[974,175],[972,176],[975,176],[971,177],[969,178],[970,179],[977,143],[984,180],[983,181],[981,143],[982,182],[985,183],[986,143],[979,184],[980,185],[978,185],[734,186],[730,2],[736,187],[735,187],[737,187],[738,188],[739,189],[731,190],[732,190],[733,191],[740,143],[741,143],[820,192],[743,193],[742,143],[744,143],[787,194],[786,195],[789,196],[802,171],[803,169],[815,197],[804,198],[816,199],[785,165],[788,200],[817,201],[818,143],[819,202],[821,143],[823,203],[822,204],[745,143],[746,143],[747,143],[748,143],[749,143],[750,143],[751,143],[760,205],[761,143],[762,2],[763,143],[764,143],[765,143],[766,143],[754,2],[767,2],[768,143],[753,206],[755,207],[752,143],[758,208],[756,206],[757,207],[784,209],[769,143],[770,207],[771,143],[772,143],[773,2],[774,143],[775,143],[776,143],[777,143],[778,143],[779,143],[780,210],[781,143],[782,143],[759,143],[783,143],[1260,2],[1261,211],[1262,212],[1267,213],[1263,212],[1266,2],[1264,2],[1265,2],[252,2],[514,214],[513,215],[515,216],[512,2],[1247,217],[1249,218],[1177,219],[1252,220],[1254,221],[1804,222],[1246,223],[1809,224],[1144,225],[1208,225],[1175,226],[1146,219],[1182,224],[1173,219],[1849,227],[1206,220],[1181,228],[1856,229],[1859,230],[1236,231],[1179,232],[1174,219],[1145,225],[1205,225],[1209,221],[1203,233],[1180,223],[1884,223],[1201,231],[1257,220],[1239,223],[1170,234],[1892,223],[1199,233],[1147,235],[1897,236],[1896,219],[1887,227],[1858,219],[1178,2],[828,237],[824,169],[825,169],[827,238],[826,143],[838,239],[829,169],[831,240],[830,143],[833,241],[832,2],[836,242],[837,243],[834,244],[835,244],[961,2],[960,2],[963,245],[965,246],[962,247],[964,248],[898,159],[899,249],[880,250],[881,2],[902,251],[901,252],[911,253],[904,197],[905,2],[903,254],[910,159],[906,255],[907,255],[909,256],[908,255],[900,143],[882,143],[897,257],[884,258],[883,143],[891,259],[886,260],[887,260],[892,143],[889,143],[888,260],[885,143],[894,143],[893,260],[890,260],[895,143],[896,261],[933,143],[934,2],[937,262],[945,263],[938,2],[939,2],[940,2],[941,2],[942,2],[943,2],[944,2],[839,143],[840,264],[843,265],[845,266],[844,143],[846,265],[847,265],[849,267],[841,143],[848,143],[842,2],[860,268],[861,170],[862,2],[866,269],[863,143],[864,143],[865,270],[859,271],[858,143],[728,272],[713,143],[726,273],[727,143],[729,274],[808,275],[809,276],[810,143],[811,277],[807,278],[805,143],[806,143],[814,279],[812,2],[813,143],[718,2],[722,2],[714,2],[715,2],[716,2],[717,2],[725,280],[719,281],[720,143],[721,282],[724,2],[723,143],[792,2],[798,143],[793,143],[794,143],[795,143],[799,143],[801,283],[796,143],[797,143],[800,143],[791,284],[790,143],[867,143],[912,285],[913,286],[914,2],[915,287],[916,2],[917,2],[918,2],[919,143],[920,285],[921,143],[923,288],[924,289],[922,143],[925,2],[926,2],[946,290],[927,2],[928,143],[929,2],[930,285],[931,2],[932,2],[643,291],[644,292],[645,2],[646,2],[659,293],[660,294],[657,295],[658,296],[661,297],[664,298],[666,299],[667,300],[649,301],[668,2],[672,302],[670,303],[671,2],[665,2],[674,304],[650,305],[676,306],[677,307],[680,308],[679,309],[675,310],[678,311],[673,312],[681,313],[682,314],[686,315],[687,316],[685,317],[663,318],[651,2],[654,319],[688,320],[689,321],[690,321],[647,2],[692,322],[691,321],[712,323],[652,2],[656,324],[693,325],[694,2],[648,2],[684,326],[700,327],[699,328],[696,2],[697,329],[698,2],[695,330],[683,331],[701,332],[702,333],[703,298],[704,298],[705,334],[669,2],[707,335],[708,336],[662,2],[709,2],[710,337],[706,2],[653,338],[655,312],[711,291],[851,339],[855,2],[853,340],[856,2],[854,341],[857,342],[852,143],[850,2],[868,2],[870,143],[869,343],[871,344],[872,345],[873,343],[874,343],[875,346],[879,347],[876,343],[877,346],[878,2],[1106,348],[1107,349],[1105,143],[936,350],[935,2],[1753,2],[1736,351],[1754,352],[1735,2],[639,353],[638,354],[138,355],[139,355],[140,356],[93,357],[141,358],[142,359],[143,360],[88,2],[91,361],[89,2],[90,2],[144,362],[145,363],[146,364],[147,365],[148,366],[149,367],[150,367],[151,368],[152,369],[153,370],[154,371],[94,2],[92,2],[155,372],[156,373],[157,374],[191,375],[158,376],[159,2],[160,377],[161,378],[162,379],[163,380],[164,381],[165,382],[166,383],[167,384],[168,385],[169,385],[170,386],[171,2],[172,387],[173,388],[175,389],[174,390],[176,391],[177,392],[178,393],[179,394],[180,395],[181,396],[182,397],[183,398],[184,399],[185,400],[186,401],[187,402],[188,403],[95,2],[96,2],[97,2],[135,404],[136,2],[137,2],[189,405],[190,406],[195,407],[412,225],[196,408],[194,409],[414,410],[413,411],[192,412],[410,2],[193,413],[79,2],[81,414],[409,225],[269,225],[598,2],[1149,415],[1148,416],[640,2],[1807,417],[80,2],[1356,418],[1335,419],[1432,2],[1336,420],[1272,418],[1273,418],[1274,418],[1275,418],[1276,418],[1277,418],[1278,418],[1279,418],[1280,418],[1281,418],[1282,418],[1283,418],[1284,418],[1285,418],[1286,418],[1287,418],[1288,418],[1289,418],[1268,2],[1290,418],[1291,418],[1292,2],[1293,418],[1294,418],[1296,418],[1295,418],[1297,418],[1298,418],[1299,418],[1300,418],[1301,418],[1302,418],[1303,418],[1304,418],[1305,418],[1306,418],[1307,418],[1308,418],[1309,418],[1310,418],[1311,418],[1312,418],[1313,418],[1314,418],[1315,418],[1317,418],[1318,418],[1319,418],[1316,418],[1320,418],[1321,418],[1322,418],[1323,418],[1324,418],[1325,418],[1326,418],[1327,418],[1328,418],[1329,418],[1330,418],[1331,418],[1332,418],[1333,418],[1334,418],[1337,421],[1338,418],[1339,418],[1340,422],[1341,423],[1342,418],[1343,418],[1344,418],[1345,418],[1348,418],[1346,418],[1347,418],[1270,2],[1349,418],[1350,418],[1351,418],[1352,418],[1353,418],[1354,418],[1355,418],[1357,424],[1358,418],[1359,418],[1360,418],[1362,418],[1361,418],[1363,418],[1364,418],[1365,418],[1366,418],[1367,418],[1368,418],[1369,418],[1370,418],[1371,418],[1372,418],[1374,418],[1373,418],[1375,418],[1376,2],[1377,2],[1378,2],[1525,425],[1379,418],[1380,418],[1381,418],[1382,418],[1383,418],[1384,418],[1385,2],[1386,418],[1387,2],[1388,418],[1389,418],[1390,418],[1391,418],[1392,418],[1393,418],[1394,418],[1395,418],[1396,418],[1397,418],[1398,418],[1399,418],[1400,418],[1401,418],[1402,418],[1403,418],[1404,418],[1405,418],[1406,418],[1407,418],[1408,418],[1409,418],[1410,418],[1411,418],[1412,418],[1413,418],[1414,418],[1415,418],[1416,418],[1417,418],[1418,418],[1419,418],[1420,2],[1421,418],[1422,418],[1423,418],[1424,418],[1425,418],[1426,418],[1427,418],[1428,418],[1429,418],[1430,418],[1431,418],[1433,426],[1621,427],[1526,420],[1528,420],[1529,420],[1530,420],[1531,420],[1532,420],[1527,420],[1533,420],[1535,420],[1534,420],[1536,420],[1537,420],[1538,420],[1539,420],[1540,420],[1541,420],[1542,420],[1543,420],[1545,420],[1544,420],[1546,420],[1547,420],[1548,420],[1549,420],[1550,420],[1551,420],[1552,420],[1553,420],[1554,420],[1555,420],[1556,420],[1557,420],[1558,420],[1559,420],[1560,420],[1562,420],[1563,420],[1561,420],[1564,420],[1565,420],[1566,420],[1567,420],[1568,420],[1569,420],[1570,420],[1571,420],[1572,420],[1573,420],[1574,420],[1575,420],[1577,420],[1576,420],[1579,420],[1578,420],[1580,420],[1581,420],[1582,420],[1583,420],[1584,420],[1585,420],[1586,420],[1587,420],[1588,420],[1589,420],[1590,420],[1591,420],[1592,420],[1594,420],[1593,420],[1595,420],[1596,420],[1597,420],[1599,420],[1598,420],[1600,420],[1601,420],[1602,420],[1603,420],[1604,420],[1605,420],[1607,420],[1606,420],[1608,420],[1609,420],[1610,420],[1611,420],[1612,420],[1269,418],[1613,420],[1614,420],[1616,420],[1615,420],[1617,420],[1618,420],[1619,420],[1620,420],[1434,418],[1435,418],[1436,2],[1437,2],[1438,2],[1439,418],[1440,2],[1441,2],[1442,2],[1443,2],[1444,2],[1445,418],[1446,418],[1447,418],[1448,418],[1449,418],[1450,418],[1451,418],[1452,418],[1457,428],[1455,429],[1456,430],[1454,431],[1453,418],[1458,418],[1459,418],[1460,418],[1461,418],[1462,418],[1463,418],[1464,418],[1465,418],[1466,418],[1467,418],[1468,2],[1469,2],[1470,418],[1471,418],[1472,2],[1473,2],[1474,2],[1475,418],[1476,418],[1477,418],[1478,418],[1479,424],[1480,418],[1481,418],[1482,418],[1483,418],[1484,418],[1485,418],[1486,418],[1487,418],[1488,418],[1489,418],[1490,418],[1491,418],[1492,418],[1493,418],[1494,418],[1495,418],[1496,418],[1497,418],[1498,418],[1499,418],[1500,418],[1501,418],[1502,418],[1503,418],[1504,418],[1505,418],[1506,418],[1507,418],[1508,418],[1509,418],[1510,418],[1511,418],[1512,418],[1513,418],[1514,418],[1515,418],[1516,418],[1517,418],[1518,418],[1519,418],[1520,418],[1271,432],[1521,2],[1522,2],[1523,2],[1524,2],[1730,433],[1731,434],[1696,2],[1704,435],[1698,436],[1705,2],[1727,437],[1702,438],[1726,439],[1723,440],[1706,441],[1707,2],[1700,2],[1697,2],[1728,442],[1724,443],[1708,2],[1725,444],[1709,445],[1711,446],[1712,447],[1701,448],[1713,449],[1714,448],[1716,449],[1717,450],[1718,451],[1720,452],[1715,453],[1721,454],[1722,455],[1699,456],[1719,457],[1703,458],[1710,2],[1729,459],[1852,225],[573,460],[542,461],[552,461],[543,461],[553,461],[544,461],[545,461],[560,461],[559,461],[561,461],[562,461],[554,461],[546,461],[555,461],[547,461],[556,461],[548,461],[550,461],[558,462],[551,461],[557,462],[563,462],[549,461],[564,461],[569,461],[570,461],[565,461],[541,2],[571,2],[567,461],[566,461],[568,461],[572,461],[609,2],[1150,225],[1211,2],[599,463],[600,464],[627,465],[601,466],[602,467],[603,468],[604,469],[605,470],[606,471],[607,472],[608,473],[628,474],[611,475],[624,476],[625,477],[623,2],[610,478],[612,479],[613,480],[614,481],[615,482],[616,483],[617,484],[618,485],[619,486],[620,487],[621,488],[622,489],[626,490],[540,491],[1164,492],[579,493],[578,494],[585,495],[587,496],[583,497],[582,498],[586,494],[580,499],[577,500],[588,501],[581,502],[575,2],[576,503],[1166,504],[1165,505],[584,2],[1162,225],[459,506],[464,1],[454,507],[216,508],[256,509],[438,510],[251,511],[233,2],[408,2],[214,2],[427,512],[282,513],[215,2],[336,514],[259,515],[260,516],[407,517],[424,518],[318,519],[432,520],[433,521],[431,522],[430,2],[428,523],[258,524],[217,525],[361,2],[362,526],[288,527],[218,528],[289,527],[284,527],[205,527],[254,529],[253,2],[437,530],[449,2],[241,2],[383,531],[384,532],[378,225],[486,2],[386,2],[387,110],[379,533],[491,534],[490,535],[485,2],[303,2],[423,536],[422,2],[484,537],[380,225],[312,538],[308,539],[313,540],[311,2],[310,541],[309,2],[487,2],[483,2],[489,542],[488,2],[307,539],[478,543],[481,544],[297,545],[296,546],[295,547],[494,225],[294,548],[276,2],[497,2],[1160,549],[1159,2],[500,2],[499,225],[501,550],[198,2],[434,551],[435,552],[436,553],[211,2],[244,2],[210,554],[197,2],[399,225],[203,555],[398,556],[397,557],[388,2],[389,2],[396,2],[391,2],[394,558],[390,2],[392,559],[395,560],[393,559],[213,2],[208,2],[209,527],[264,2],[270,561],[271,562],[268,563],[266,564],[267,565],[262,2],[405,110],[291,110],[458,566],[465,567],[469,568],[441,569],[440,2],[279,2],[502,570],[453,571],[381,572],[382,573],[376,574],[367,2],[404,575],[443,225],[368,576],[406,577],[401,578],[400,2],[402,2],[373,2],[360,579],[442,580],[445,581],[370,582],[374,583],[365,584],[419,585],[452,586],[322,587],[337,588],[206,589],[451,590],[202,591],[272,592],[263,2],[273,593],[349,594],[261,2],[348,595],[87,2],[342,596],[243,2],[363,597],[338,2],[207,2],[237,2],[346,598],[212,2],[274,599],[372,600],[439,601],[371,2],[345,2],[265,2],[351,602],[352,603],[429,2],[354,604],[356,605],[355,606],[246,2],[344,589],[358,607],[321,608],[343,609],[350,610],[221,2],[225,2],[224,2],[223,2],[228,2],[222,2],[231,2],[230,2],[227,2],[226,2],[229,2],[232,611],[220,2],[330,612],[329,2],[334,613],[331,614],[333,615],[335,613],[332,614],[242,616],[292,617],[448,618],[503,2],[473,619],[475,620],[369,621],[474,622],[446,580],[385,580],[219,2],[323,623],[238,624],[239,625],[240,626],[236,627],[418,627],[286,627],[324,628],[287,628],[235,629],[234,2],[328,630],[327,631],[326,632],[325,633],[447,634],[417,635],[416,636],[377,637],[411,638],[415,639],[426,640],[425,641],[421,642],[320,643],[317,644],[319,645],[316,646],[357,647],[347,2],[463,2],[359,648],[420,2],[275,649],[366,551],[364,650],[277,651],[280,652],[498,2],[278,653],[281,653],[461,2],[460,2],[462,2],[496,2],[283,654],[444,2],[314,655],[306,225],[257,2],[201,656],[290,2],[467,225],[200,2],[477,657],[305,225],[471,110],[304,658],[456,659],[302,657],[204,2],[479,660],[300,225],[301,225],[293,2],[199,2],[299,661],[298,662],[245,663],[375,384],[285,384],[353,2],[340,664],[339,2],[403,539],[315,225],[450,554],[457,665],[82,225],[85,666],[86,667],[83,225],[84,2],[255,668],[250,669],[249,2],[248,670],[247,2],[455,671],[466,672],[468,673],[470,674],[1161,675],[472,676],[476,677],[509,678],[480,678],[508,679],[482,680],[492,681],[493,682],[495,683],[504,684],[507,554],[506,2],[505,685],[518,2],[574,686],[532,687],[531,688],[1680,689],[1641,690],[1640,691],[1679,692],[1681,693],[1622,225],[1623,225],[1624,225],[1668,694],[1647,695],[1648,695],[1649,696],[1650,225],[1651,225],[1652,697],[1625,698],[1653,225],[1654,225],[1655,699],[1656,225],[1657,225],[1658,225],[1659,225],[1660,225],[1661,225],[1626,698],[1662,225],[1663,225],[1664,698],[1665,225],[1666,225],[1667,699],[1682,696],[1669,689],[1670,689],[1671,689],[1672,689],[1673,689],[1674,2],[1675,689],[1676,700],[1683,701],[1684,702],[1693,703],[1638,704],[1627,705],[1628,689],[1629,705],[1630,689],[1631,2],[1632,689],[1633,2],[1634,689],[1635,689],[1636,689],[1637,689],[1678,689],[1645,706],[1646,707],[1642,708],[1643,709],[1677,710],[1639,225],[1644,711],[1685,705],[1686,705],[1692,712],[1687,689],[1688,705],[1689,705],[1690,689],[1691,705],[1815,2],[1831,713],[1832,713],[1833,713],[1847,714],[1834,715],[1835,715],[1836,716],[1828,717],[1826,718],[1817,2],[1821,719],[1825,720],[1823,721],[1830,722],[1818,723],[1819,724],[1820,725],[1822,726],[1824,727],[1827,728],[1829,729],[1837,715],[1838,715],[1839,715],[1840,713],[1841,715],[1842,715],[1816,715],[1843,2],[1845,730],[1844,715],[1846,713],[1867,2],[1881,731],[1862,225],[1864,732],[1866,733],[1865,734],[1863,2],[1868,2],[1869,2],[1870,2],[1871,2],[1872,2],[1873,2],[1874,2],[1875,2],[1876,2],[1877,735],[1879,736],[1880,736],[1878,2],[1882,737],[1776,738],[1778,739],[1768,740],[1773,741],[1774,742],[1780,743],[1775,744],[1772,745],[1771,746],[1770,747],[1781,748],[1738,741],[1739,741],[1779,741],[1784,749],[1794,750],[1788,750],[1796,750],[1800,750],[1786,751],[1787,750],[1789,750],[1792,750],[1795,750],[1791,752],[1793,750],[1797,225],[1790,741],[1785,753],[1747,225],[1751,225],[1741,741],[1744,225],[1749,741],[1750,754],[1743,755],[1746,225],[1748,225],[1745,756],[1734,225],[1733,225],[1802,757],[1799,758],[1765,759],[1764,741],[1762,225],[1763,741],[1766,760],[1767,761],[1760,225],[1756,762],[1759,741],[1758,741],[1757,741],[1752,741],[1761,762],[1798,741],[1777,763],[1783,764],[1782,765],[1801,2],[1769,2],[1742,2],[1740,766],[341,767],[1187,225],[641,2],[77,2],[78,2],[13,2],[14,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[57,2],[58,2],[60,2],[59,2],[61,2],[62,2],[10,2],[63,2],[64,2],[65,2],[11,2],[66,2],[67,2],[68,2],[69,2],[70,2],[1,2],[71,2],[72,2],[12,2],[75,2],[74,2],[73,2],[76,2],[113,768],[123,769],[112,768],[133,770],[104,771],[103,772],[132,685],[126,773],[131,774],[106,775],[120,776],[105,777],[129,778],[101,779],[100,685],[130,780],[102,781],[107,782],[108,2],[111,782],[98,2],[134,783],[124,784],[115,785],[116,786],[118,787],[114,788],[117,789],[127,685],[109,790],[110,791],[119,792],[99,346],[122,784],[121,782],[125,2],[128,793],[1811,417],[1737,794],[1755,795],[516,116],[1158,796]],"affectedFilesPendingEmit":[1904,1902,592,593,595,594,596,597,632,633,634,635,631,637,1126,1127,1128,1130,1131,1132,1133,1129,1134,1135,1136,1137,1138,1139,1141,1142,1192,1188,1196,1214,1215,1212,1213,1193,1217,1216,1194,1195,1219,1218,1220,1221,1222,1223,1191,1226,1224,1227,1235,1244,1228,1234,1245,1143,1232,1233,1186,1230,1185,1189,1190,1225,1243,1242,1238,1231,1163,1184,1241,1248,1250,1251,1253,1255,1229,1256,1259,1171,1694,1695,1732,1803,1805,1806,1808,1810,1198,1812,1183,1813,1814,1848,1850,1851,1853,1172,1854,1855,1207,1857,1860,1861,1237,1210,1204,1883,1885,1202,1258,1176,1889,1886,1240,1890,1891,1893,1894,1200,1197,1151,1895,1899,1898,1888,1900,1152,1153,1154,1167,591,1168,1155,630,636,1140,629,1156,590,1125,1169,1157,642,516],"version":"5.7.3"} \ No newline at end of file diff --git a/types/next-auth.d.ts b/types/next-auth.d.ts new file mode 100644 index 0000000..5254655 --- /dev/null +++ b/types/next-auth.d.ts @@ -0,0 +1,17 @@ +import NextAuth from "next-auth" + +declare module "next-auth" { + interface Session { + user: { + id: string + name?: string | null + email?: string | null + image?: string | null + role: string + } + } + + interface User { + role: string + } +}