diff --git a/.claude/rules/global.md b/.claude/rules/global.md index 4c98edc16cb..cfcb4c7cc29 100644 --- a/.claude/rules/global.md +++ b/.claude/rules/global.md @@ -10,7 +10,7 @@ Use TSDoc for documentation. No `====` separators. No non-TSDoc comments. Never update global styles. Keep all styling local to components. ## ID Generation -Never use `crypto.randomUUID()`, `nanoid`, or the `uuid` package directly. Use the utilities from `@/lib/core/utils/uuid`: +Never use `crypto.randomUUID()`, `nanoid`, or the `uuid` package directly. Use the utilities from `@sim/utils/id`: - `generateId()` — UUID v4, use by default - `generateShortId(size?)` — short URL-safe ID (default 21 chars), for compact identifiers @@ -24,14 +24,14 @@ import { v4 as uuidv4 } from 'uuid' const id = crypto.randomUUID() // ✓ Good -import { generateId, generateShortId } from '@/lib/core/utils/uuid' +import { generateId, generateShortId } from '@sim/utils/id' const uuid = generateId() const shortId = generateShortId() const tiny = generateShortId(8) ``` ## Common Utilities -Use shared helpers from `@/lib/core/utils/helpers` instead of writing inline implementations: +Use shared helpers from `@sim/utils` instead of writing inline implementations: - `sleep(ms)` — async delay. Never write `new Promise(resolve => setTimeout(resolve, ms))` - `toError(value)` — normalize unknown caught values to `Error`. Never write `e instanceof Error ? e : new Error(String(e))` @@ -44,7 +44,8 @@ const msg = error instanceof Error ? error.message : String(error) const err = error instanceof Error ? error : new Error(String(error)) // ✓ Good -import { sleep, toError } from '@/lib/core/utils/helpers' +import { sleep } from '@sim/utils/helpers' +import { toError } from '@sim/utils/errors' await sleep(1000) const msg = toError(error).message const err = toError(error) diff --git a/.claude/rules/sim-testing.md b/.claude/rules/sim-testing.md index 85a7554637b..68a7b8203aa 100644 --- a/.claude/rules/sim-testing.md +++ b/.claude/rules/sim-testing.md @@ -102,10 +102,6 @@ vi.mock('@/lib/workspaces/utils', () => ({ })) ``` -### NEVER use `mockAuth()`, `mockConsoleLogger()`, or `setupCommonApiMocks()` from `@sim/testing` - -These helpers internally use `vi.doMock()` which is slow. Use direct `vi.hoisted()` + `vi.mock()` instead. - ### Mock heavy transitive dependencies If a module under test imports `@/blocks` (200+ files), `@/tools/registry`, or other heavy modules, mock them: @@ -135,38 +131,61 @@ await new Promise(r => setTimeout(r, 1)) vi.useFakeTimers() ``` -## Mock Pattern Reference +## Centralized Mocks (prefer over local declarations) + +`@sim/testing` exports ready-to-use mock modules for common dependencies. Import and pass directly to `vi.mock()` — no `vi.hoisted()` boilerplate needed. Each paired `*MockFns` object exposes the underlying `vi.fn()`s for per-test overrides. + +| Module mocked | Import | Factory form | +|---|---|---| +| `@/app/api/auth/oauth/utils` | `authOAuthUtilsMock`, `authOAuthUtilsMockFns` | `vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock)` | +| `@/app/api/knowledge/utils` | `knowledgeApiUtilsMock`, `knowledgeApiUtilsMockFns` | `vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock)` | +| `@/app/api/workflows/utils` | `workflowsApiUtilsMock`, `workflowsApiUtilsMockFns` | `vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock)` | +| `@/lib/audit/log` | `auditMock`, `auditMockFns` | `vi.mock('@/lib/audit/log', () => auditMock)` | +| `@/lib/auth` | `authMock`, `authMockFns` | `vi.mock('@/lib/auth', () => authMock)` | +| `@/lib/auth/hybrid` | `hybridAuthMock`, `hybridAuthMockFns` | `vi.mock('@/lib/auth/hybrid', () => hybridAuthMock)` | +| `@/lib/copilot/request/http` | `copilotHttpMock`, `copilotHttpMockFns` | `vi.mock('@/lib/copilot/request/http', () => copilotHttpMock)` | +| `@/lib/core/config/env` | `envMock`, `createEnvMock(overrides)` | `vi.mock('@/lib/core/config/env', () => envMock)` | +| `@/lib/core/config/feature-flags` | `featureFlagsMock` | `vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock)` | +| `@/lib/core/config/redis` | `redisConfigMock`, `redisConfigMockFns` | `vi.mock('@/lib/core/config/redis', () => redisConfigMock)` | +| `@/lib/core/security/encryption` | `encryptionMock`, `encryptionMockFns` | `vi.mock('@/lib/core/security/encryption', () => encryptionMock)` | +| `@/lib/core/security/input-validation.server` | `inputValidationMock`, `inputValidationMockFns` | `vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock)` | +| `@/lib/core/utils/request` | `requestUtilsMock`, `requestUtilsMockFns` | `vi.mock('@/lib/core/utils/request', () => requestUtilsMock)` | +| `@/lib/core/utils/urls` | `urlsMock`, `urlsMockFns` | `vi.mock('@/lib/core/utils/urls', () => urlsMock)` | +| `@/lib/execution/preprocessing` | `executionPreprocessingMock`, `executionPreprocessingMockFns` | `vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock)` | +| `@/lib/logs/execution/logging-session` | `loggingSessionMock`, `loggingSessionMockFns`, `LoggingSessionMock` | `vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock)` | +| `@/lib/workflows/orchestration` | `workflowsOrchestrationMock`, `workflowsOrchestrationMockFns` | `vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock)` | +| `@/lib/workflows/persistence/utils` | `workflowsPersistenceUtilsMock`, `workflowsPersistenceUtilsMockFns` | `vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock)` | +| `@/lib/workflows/utils` | `workflowsUtilsMock`, `workflowsUtilsMockFns` | `vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock)` | +| `@/lib/workspaces/permissions/utils` | `permissionsMock`, `permissionsMockFns` | `vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock)` | +| `@sim/db/schema` | `schemaMock` | `vi.mock('@sim/db/schema', () => schemaMock)` | ### Auth mocking (API routes) ```typescript -const { mockGetSession } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), -})) +import { authMock, authMockFns } from '@sim/testing' +import { beforeEach, describe, expect, it, vi } from 'vitest' -vi.mock('@/lib/auth', () => ({ - auth: { api: { getSession: vi.fn() } }, - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -// In tests: -mockGetSession.mockResolvedValue({ user: { id: 'user-1', email: 'test@example.com' } }) -mockGetSession.mockResolvedValue(null) // unauthenticated +import { GET } from '@/app/api/my-route/route' + +beforeEach(() => { + vi.clearAllMocks() + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) +}) ``` +Only define a local `vi.mock('@/lib/auth', ...)` if the module under test consumes exports outside the centralized shape (e.g., `auth.api.verifyOneTimeToken`, `auth.api.resetPassword`). + ### Hybrid auth mocking ```typescript -const { mockCheckSessionOrInternalAuth } = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), -})) +import { hybridAuthMock, hybridAuthMockFns } from '@sim/testing' -vi.mock('@/lib/auth/hybrid', () => ({ - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) // In tests: -mockCheckSessionOrInternalAuth.mockResolvedValue({ +hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', authType: 'session', }) ``` @@ -197,21 +216,23 @@ Always prefer over local test data. | Category | Utilities | |----------|-----------| -| **Mocks** | `loggerMock`, `databaseMock`, `drizzleOrmMock`, `setupGlobalFetchMock()` | +| **Module mocks** | See "Centralized Mocks" table above | +| **Logger helpers** | `loggerMock`, `createMockLogger()`, `getLoggerCalls()`, `clearLoggerMocks()` | +| **Database helpers** | `databaseMock`, `drizzleOrmMock`, `createMockDb()`, `createMockSql()`, `createMockSqlOperators()` | +| **Fetch helpers** | `setupGlobalFetchMock()`, `createMockFetch()`, `createMockResponse()`, `mockFetchError()` | | **Factories** | `createSession()`, `createWorkflowRecord()`, `createBlock()`, `createExecutionContext()` | | **Builders** | `WorkflowBuilder`, `ExecutionContextBuilder` | | **Assertions** | `expectWorkflowAccessGranted()`, `expectBlockExecuted()` | -| **Requests** | `createMockRequest()`, `createEnvMock()` | +| **Requests** | `createMockRequest()`, `createMockFormDataRequest()` | ## Rules Summary 1. `@vitest-environment node` unless DOM is required -2. `vi.hoisted()` + `vi.mock()` + static imports — never `vi.resetModules()` + `vi.doMock()` + dynamic imports -3. `vi.mock()` calls before importing mocked modules -4. `@sim/testing` utilities over local mocks +2. Prefer centralized mocks from `@sim/testing` (see table above) over local `vi.hoisted()` + `vi.mock()` boilerplate +3. `vi.hoisted()` + `vi.mock()` + static imports — never `vi.resetModules()` + `vi.doMock()` + dynamic imports +4. `vi.mock()` calls before importing mocked modules 5. `beforeEach(() => vi.clearAllMocks())` to reset state — no redundant `afterEach` 6. No `vi.importActual()` — mock everything explicitly -7. No `mockAuth()`, `mockConsoleLogger()`, `setupCommonApiMocks()` — use direct mocks -8. Mock heavy deps (`@/blocks`, `@/tools/registry`, `@/triggers`) in tests that don't need them -9. Use absolute imports in test files -10. Avoid real timers — use 1ms delays or `vi.useFakeTimers()` +7. Mock heavy deps (`@/blocks`, `@/tools/registry`, `@/triggers`) in tests that don't need them +8. Use absolute imports in test files +9. Avoid real timers — use 1ms delays or `vi.useFakeTimers()` diff --git a/.cursor/rules/global.mdc b/.cursor/rules/global.mdc index 991244503f3..78f0cb106b3 100644 --- a/.cursor/rules/global.mdc +++ b/.cursor/rules/global.mdc @@ -17,7 +17,7 @@ Use TSDoc for documentation. No `====` separators. No non-TSDoc comments. Never update global styles. Keep all styling local to components. ## ID Generation -Never use `crypto.randomUUID()`, `nanoid`, or the `uuid` package directly. Use the utilities from `@/lib/core/utils/uuid`: +Never use `crypto.randomUUID()`, `nanoid`, or the `uuid` package directly. Use the utilities from `@sim/utils/id`: - `generateId()` — UUID v4, use by default - `generateShortId(size?)` — short URL-safe ID (default 21 chars), for compact identifiers @@ -31,14 +31,14 @@ import { v4 as uuidv4 } from 'uuid' const id = crypto.randomUUID() // ✓ Good -import { generateId, generateShortId } from '@/lib/core/utils/uuid' +import { generateId, generateShortId } from '@sim/utils/id' const uuid = generateId() const shortId = generateShortId() const tiny = generateShortId(8) ``` ## Common Utilities -Use shared helpers from `@/lib/core/utils/helpers` instead of writing inline implementations: +Use shared helpers from `@sim/utils` instead of writing inline implementations: - `sleep(ms)` — async delay. Never write `new Promise(resolve => setTimeout(resolve, ms))` - `toError(value)` — normalize unknown caught values to `Error`. Never write `e instanceof Error ? e : new Error(String(e))` @@ -51,7 +51,8 @@ const msg = error instanceof Error ? error.message : String(error) const err = error instanceof Error ? error : new Error(String(error)) // ✓ Good -import { sleep, toError } from '@/lib/core/utils/helpers' +import { sleep } from '@sim/utils/helpers' +import { toError } from '@sim/utils/errors' await sleep(1000) const msg = toError(error).message const err = toError(error) diff --git a/.cursor/rules/sim-testing.mdc b/.cursor/rules/sim-testing.mdc index ec140388e84..41b66b3693c 100644 --- a/.cursor/rules/sim-testing.mdc +++ b/.cursor/rules/sim-testing.mdc @@ -3,6 +3,7 @@ description: Testing patterns with Vitest and @sim/testing globs: ["apps/sim/**/*.test.ts", "apps/sim/**/*.test.tsx"] --- + # Testing Patterns Use Vitest. Test files: `feature.ts` → `feature.test.ts` @@ -101,10 +102,6 @@ vi.mock('@/lib/workspaces/utils', () => ({ })) ``` -### NEVER use `mockAuth()`, `mockConsoleLogger()`, or `setupCommonApiMocks()` from `@sim/testing` - -These helpers internally use `vi.doMock()` which is slow. Use direct `vi.hoisted()` + `vi.mock()` instead. - ### Mock heavy transitive dependencies If a module under test imports `@/blocks` (200+ files), `@/tools/registry`, or other heavy modules, mock them: @@ -134,38 +131,61 @@ await new Promise(r => setTimeout(r, 1)) vi.useFakeTimers() ``` -## Mock Pattern Reference +## Centralized Mocks (prefer over local declarations) + +`@sim/testing` exports ready-to-use mock modules for common dependencies. Import and pass directly to `vi.mock()` — no `vi.hoisted()` boilerplate needed. Each paired `*MockFns` object exposes the underlying `vi.fn()`s for per-test overrides. + +| Module mocked | Import | Factory form | +|---|---|---| +| `@/app/api/auth/oauth/utils` | `authOAuthUtilsMock`, `authOAuthUtilsMockFns` | `vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock)` | +| `@/app/api/knowledge/utils` | `knowledgeApiUtilsMock`, `knowledgeApiUtilsMockFns` | `vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock)` | +| `@/app/api/workflows/utils` | `workflowsApiUtilsMock`, `workflowsApiUtilsMockFns` | `vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock)` | +| `@/lib/audit/log` | `auditMock`, `auditMockFns` | `vi.mock('@/lib/audit/log', () => auditMock)` | +| `@/lib/auth` | `authMock`, `authMockFns` | `vi.mock('@/lib/auth', () => authMock)` | +| `@/lib/auth/hybrid` | `hybridAuthMock`, `hybridAuthMockFns` | `vi.mock('@/lib/auth/hybrid', () => hybridAuthMock)` | +| `@/lib/copilot/request/http` | `copilotHttpMock`, `copilotHttpMockFns` | `vi.mock('@/lib/copilot/request/http', () => copilotHttpMock)` | +| `@/lib/core/config/env` | `envMock`, `createEnvMock(overrides)` | `vi.mock('@/lib/core/config/env', () => envMock)` | +| `@/lib/core/config/feature-flags` | `featureFlagsMock` | `vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock)` | +| `@/lib/core/config/redis` | `redisConfigMock`, `redisConfigMockFns` | `vi.mock('@/lib/core/config/redis', () => redisConfigMock)` | +| `@/lib/core/security/encryption` | `encryptionMock`, `encryptionMockFns` | `vi.mock('@/lib/core/security/encryption', () => encryptionMock)` | +| `@/lib/core/security/input-validation.server` | `inputValidationMock`, `inputValidationMockFns` | `vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock)` | +| `@/lib/core/utils/request` | `requestUtilsMock`, `requestUtilsMockFns` | `vi.mock('@/lib/core/utils/request', () => requestUtilsMock)` | +| `@/lib/core/utils/urls` | `urlsMock`, `urlsMockFns` | `vi.mock('@/lib/core/utils/urls', () => urlsMock)` | +| `@/lib/execution/preprocessing` | `executionPreprocessingMock`, `executionPreprocessingMockFns` | `vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock)` | +| `@/lib/logs/execution/logging-session` | `loggingSessionMock`, `loggingSessionMockFns`, `LoggingSessionMock` | `vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock)` | +| `@/lib/workflows/orchestration` | `workflowsOrchestrationMock`, `workflowsOrchestrationMockFns` | `vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock)` | +| `@/lib/workflows/persistence/utils` | `workflowsPersistenceUtilsMock`, `workflowsPersistenceUtilsMockFns` | `vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock)` | +| `@/lib/workflows/utils` | `workflowsUtilsMock`, `workflowsUtilsMockFns` | `vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock)` | +| `@/lib/workspaces/permissions/utils` | `permissionsMock`, `permissionsMockFns` | `vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock)` | +| `@sim/db/schema` | `schemaMock` | `vi.mock('@sim/db/schema', () => schemaMock)` | ### Auth mocking (API routes) ```typescript -const { mockGetSession } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), -})) +import { authMock, authMockFns } from '@sim/testing' +import { beforeEach, describe, expect, it, vi } from 'vitest' -vi.mock('@/lib/auth', () => ({ - auth: { api: { getSession: vi.fn() } }, - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -// In tests: -mockGetSession.mockResolvedValue({ user: { id: 'user-1', email: 'test@example.com' } }) -mockGetSession.mockResolvedValue(null) // unauthenticated +import { GET } from '@/app/api/my-route/route' + +beforeEach(() => { + vi.clearAllMocks() + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) +}) ``` +Only define a local `vi.mock('@/lib/auth', ...)` if the module under test consumes exports outside the centralized shape (e.g., `auth.api.verifyOneTimeToken`, `auth.api.resetPassword`). + ### Hybrid auth mocking ```typescript -const { mockCheckSessionOrInternalAuth } = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), -})) +import { hybridAuthMock, hybridAuthMockFns } from '@sim/testing' -vi.mock('@/lib/auth/hybrid', () => ({ - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) // In tests: -mockCheckSessionOrInternalAuth.mockResolvedValue({ +hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', authType: 'session', }) ``` @@ -196,21 +216,23 @@ Always prefer over local test data. | Category | Utilities | |----------|-----------| -| **Mocks** | `loggerMock`, `databaseMock`, `drizzleOrmMock`, `setupGlobalFetchMock()` | +| **Module mocks** | See "Centralized Mocks" table above | +| **Logger helpers** | `loggerMock`, `createMockLogger()`, `getLoggerCalls()`, `clearLoggerMocks()` | +| **Database helpers** | `databaseMock`, `drizzleOrmMock`, `createMockDb()`, `createMockSql()`, `createMockSqlOperators()` | +| **Fetch helpers** | `setupGlobalFetchMock()`, `createMockFetch()`, `createMockResponse()`, `mockFetchError()` | | **Factories** | `createSession()`, `createWorkflowRecord()`, `createBlock()`, `createExecutionContext()` | | **Builders** | `WorkflowBuilder`, `ExecutionContextBuilder` | | **Assertions** | `expectWorkflowAccessGranted()`, `expectBlockExecuted()` | -| **Requests** | `createMockRequest()`, `createEnvMock()` | +| **Requests** | `createMockRequest()`, `createMockFormDataRequest()` | ## Rules Summary 1. `@vitest-environment node` unless DOM is required -2. `vi.hoisted()` + `vi.mock()` + static imports — never `vi.resetModules()` + `vi.doMock()` + dynamic imports -3. `vi.mock()` calls before importing mocked modules -4. `@sim/testing` utilities over local mocks +2. Prefer centralized mocks from `@sim/testing` (see table above) over local `vi.hoisted()` + `vi.mock()` boilerplate +3. `vi.hoisted()` + `vi.mock()` + static imports — never `vi.resetModules()` + `vi.doMock()` + dynamic imports +4. `vi.mock()` calls before importing mocked modules 5. `beforeEach(() => vi.clearAllMocks())` to reset state — no redundant `afterEach` 6. No `vi.importActual()` — mock everything explicitly -7. No `mockAuth()`, `mockConsoleLogger()`, `setupCommonApiMocks()` — use direct mocks -8. Mock heavy deps (`@/blocks`, `@/tools/registry`, `@/triggers`) in tests that don't need them -9. Use absolute imports in test files -10. Avoid real timers — use 1ms delays or `vi.useFakeTimers()` +7. Mock heavy deps (`@/blocks`, `@/tools/registry`, `@/triggers`) in tests that don't need them +8. Use absolute imports in test files +9. Avoid real timers — use 1ms delays or `vi.useFakeTimers()` diff --git a/AGENTS.md b/AGENTS.md index bc54c6f912c..5e21c7e009c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7,7 +7,7 @@ You are a professional software engineer. All code must follow best practices: a - **Logging**: Import `createLogger` from `@sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log` - **Comments**: Use TSDoc for documentation. No `====` separators. No non-TSDoc comments - **Styling**: Never update global styles. Keep all styling local to components -- **ID Generation**: Never use `crypto.randomUUID()`, `nanoid`, or `uuid` package. Use `generateId()` (UUID v4) or `generateShortId()` (compact) from `@/lib/core/utils/uuid` +- **ID Generation**: Never use `crypto.randomUUID()`, `nanoid`, or `uuid` package. Use `generateId()` (UUID v4) or `generateShortId()` (compact) from `@sim/utils/id` - **Package Manager**: Use `bun` and `bunx`, not `npm` and `npx` ## Architecture diff --git a/CLAUDE.md b/CLAUDE.md index 965ae7fd7b3..1ca9bf41a25 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -7,8 +7,8 @@ You are a professional software engineer. All code must follow best practices: a - **Logging**: Import `createLogger` from `@sim/logger`. Use `logger.info`, `logger.warn`, `logger.error` instead of `console.log` - **Comments**: Use TSDoc for documentation. No `====` separators. No non-TSDoc comments - **Styling**: Never update global styles. Keep all styling local to components -- **ID Generation**: Never use `crypto.randomUUID()`, `nanoid`, or `uuid` package. Use `generateId()` (UUID v4) or `generateShortId()` (compact) from `@/lib/core/utils/uuid` -- **Common Utilities**: Use shared helpers from `@/lib/core/utils/helpers` instead of inline implementations. `sleep(ms)` for delays, `toError(e)` to normalize caught values. +- **ID Generation**: Never use `crypto.randomUUID()`, `nanoid`, or `uuid` package. Use `generateId()` (UUID v4) or `generateShortId()` (compact) from `@sim/utils/id` +- **Common Utilities**: Use shared helpers from `@sim/utils` instead of inline implementations. `sleep(ms)` from `@sim/utils/helpers` for delays, `toError(e)` from `@sim/utils/errors` to normalize caught values. - **Package Manager**: Use `bun` and `bunx`, not `npm` and `npx` ## Architecture diff --git a/apps/sim/app/academy/components/sandbox-canvas-provider.tsx b/apps/sim/app/academy/components/sandbox-canvas-provider.tsx index 893bb1eaf03..1a176e9ac9b 100644 --- a/apps/sim/app/academy/components/sandbox-canvas-provider.tsx +++ b/apps/sim/app/academy/components/sandbox-canvas-provider.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import type { Edge } from 'reactflow' import { buildMockExecutionPlan } from '@/lib/academy/mock-execution' import type { @@ -12,7 +13,6 @@ import type { } from '@/lib/academy/types' import { validateExercise } from '@/lib/academy/validation' import { cn } from '@/lib/core/utils/cn' -import { sleep } from '@/lib/core/utils/helpers' import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { getQueryClient } from '@/app/_shell/providers/get-query-client' import { GlobalCommandsProvider } from '@/app/workspace/[workspaceId]/providers/global-commands-provider' diff --git a/apps/sim/app/api/a2a/agents/route.ts b/apps/sim/app/api/a2a/agents/route.ts index e1f82e81047..0ff2d6e017d 100644 --- a/apps/sim/app/api/a2a/agents/route.ts +++ b/apps/sim/app/api/a2a/agents/route.ts @@ -7,13 +7,13 @@ import { db } from '@sim/db' import { a2aAgent, workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { generateSkillsFromWorkflow } from '@/lib/a2a/agent-card' import { A2A_DEFAULT_CAPABILITIES } from '@/lib/a2a/constants' import { sanitizeAgentName } from '@/lib/a2a/utils' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { loadWorkflowFromNormalizedTables } from '@/lib/workflows/persistence/utils' import { hasValidStartBlockInState } from '@/lib/workflows/triggers/trigger-utils' diff --git a/apps/sim/app/api/a2a/serve/[agentId]/route.ts b/apps/sim/app/api/a2a/serve/[agentId]/route.ts index 911884c1d12..768017e4f4b 100644 --- a/apps/sim/app/api/a2a/serve/[agentId]/route.ts +++ b/apps/sim/app/api/a2a/serve/[agentId]/route.ts @@ -2,6 +2,7 @@ import type { Artifact, Message, PushNotificationConfig, TaskState } from '@a2a- import { db } from '@sim/db' import { a2aAgent, a2aPushNotificationConfig, a2aTask, workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { A2A_DEFAULT_TIMEOUT, A2A_MAX_HISTORY_LENGTH } from '@/lib/a2a/constants' @@ -18,7 +19,6 @@ import { validateUrlWithDNS } from '@/lib/core/security/input-validation.server' import { getClientIp } from '@/lib/core/utils/request' import { SSE_HEADERS } from '@/lib/core/utils/sse' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { markExecutionCancelled } from '@/lib/execution/cancellation' import { checkWorkspaceAccess } from '@/lib/workspaces/permissions/utils' import { getWorkspaceBilledAccountUserId } from '@/lib/workspaces/utils' diff --git a/apps/sim/app/api/a2a/serve/[agentId]/utils.ts b/apps/sim/app/api/a2a/serve/[agentId]/utils.ts index e3fdd88f5ca..46425475d67 100644 --- a/apps/sim/app/api/a2a/serve/[agentId]/utils.ts +++ b/apps/sim/app/api/a2a/serve/[agentId]/utils.ts @@ -1,7 +1,7 @@ import type { Artifact, Message, PushNotificationConfig, Task, TaskState } from '@a2a-js/sdk' +import { generateId } from '@sim/utils/id' import { generateInternalToken } from '@/lib/auth/internal' import { getInternalApiBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' /** A2A v0.3 JSON-RPC method names */ export const A2A_METHODS = { diff --git a/apps/sim/app/api/academy/certificates/route.ts b/apps/sim/app/api/academy/certificates/route.ts index 0164e1424e3..aefca60a9ee 100644 --- a/apps/sim/app/api/academy/certificates/route.ts +++ b/apps/sim/app/api/academy/certificates/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { academyCertificate, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -9,7 +10,6 @@ import type { CertificateMetadata } from '@/lib/academy/types' import { getSession } from '@/lib/auth' import type { TokenBucketConfig } from '@/lib/core/rate-limiter' import { RateLimiter } from '@/lib/core/rate-limiter' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('AcademyCertificatesAPI') diff --git a/apps/sim/app/api/auth/oauth/connections/route.test.ts b/apps/sim/app/api/auth/oauth/connections/route.test.ts index dc6e165a261..b0417d8e9b0 100644 --- a/apps/sim/app/api/auth/oauth/connections/route.test.ts +++ b/apps/sim/app/api/auth/oauth/connections/route.test.ts @@ -3,40 +3,35 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { authMock, authMockFns, createMockRequest } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDb, mockLogger, mockParseProvider, mockJwtDecode, mockEq } = vi.hoisted( - () => { - const db = { - select: vi.fn().mockReturnThis(), - from: vi.fn().mockReturnThis(), - where: vi.fn().mockReturnThis(), - limit: vi.fn(), - } - const logger = { - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - trace: vi.fn(), - fatal: vi.fn(), - child: vi.fn(), - } - return { - mockGetSession: vi.fn(), - mockDb: db, - mockLogger: logger, - mockParseProvider: vi.fn(), - mockJwtDecode: vi.fn(), - mockEq: vi.fn((field: unknown, value: unknown) => ({ field, value, type: 'eq' })), - } +const { mockDb, mockLogger, mockParseProvider, mockJwtDecode, mockEq } = vi.hoisted(() => { + const db = { + select: vi.fn().mockReturnThis(), + from: vi.fn().mockReturnThis(), + where: vi.fn().mockReturnThis(), + limit: vi.fn(), } -) + const logger = { + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + debug: vi.fn(), + trace: vi.fn(), + fatal: vi.fn(), + child: vi.fn(), + } + return { + mockDb: db, + mockLogger: logger, + mockParseProvider: vi.fn(), + mockJwtDecode: vi.fn(), + mockEq: vi.fn((field: unknown, value: unknown) => ({ field, value, type: 'eq' })), + } +}) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDb, @@ -78,7 +73,7 @@ describe('OAuth Connections API Route', () => { }) it('should return connections successfully', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -134,7 +129,7 @@ describe('OAuth Connections API Route', () => { }) it('should handle unauthenticated user', async () => { - mockGetSession.mockResolvedValueOnce(null) + authMockFns.mockGetSession.mockResolvedValueOnce(null) const req = createMockRequest('GET') @@ -147,7 +142,7 @@ describe('OAuth Connections API Route', () => { }) it('should handle user with no connections', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -170,7 +165,7 @@ describe('OAuth Connections API Route', () => { }) it('should handle database error', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -189,7 +184,7 @@ describe('OAuth Connections API Route', () => { }) it('should decode ID token for display name', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) diff --git a/apps/sim/app/api/auth/oauth/credentials/route.test.ts b/apps/sim/app/api/auth/oauth/credentials/route.test.ts index bb303924f01..7c21745e544 100644 --- a/apps/sim/app/api/auth/oauth/credentials/route.test.ts +++ b/apps/sim/app/api/auth/oauth/credentials/route.test.ts @@ -4,10 +4,18 @@ * @vitest-environment node */ +import { + hybridAuthMock, + hybridAuthMockFns, + permissionsMock, + requestUtilsMock, + schemaMock, + workflowsUtilsMock, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckSessionOrInternalAuth, mockLogger } = vi.hoisted(() => { +const { mockLogger } = vi.hoisted(() => { const logger = { info: vi.fn(), warn: vi.fn(), @@ -18,56 +26,23 @@ const { mockCheckSessionOrInternalAuth, mockLogger } = vi.hoisted(() => { child: vi.fn(), } return { - mockCheckSessionOrInternalAuth: vi.fn(), mockLogger: logger, } }) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('mock-request-id'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) vi.mock('@/lib/credentials/oauth', () => ({ syncWorkspaceOAuthCredentialsForUser: vi.fn(), })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - checkWorkspaceAccess: vi.fn(), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) -vi.mock('@sim/db/schema', () => ({ - account: { - userId: 'userId', - providerId: 'providerId', - id: 'id', - scope: 'scope', - updatedAt: 'updatedAt', - }, - credential: { - id: 'id', - workspaceId: 'workspaceId', - type: 'type', - displayName: 'displayName', - providerId: 'providerId', - accountId: 'accountId', - }, - credentialMember: { - id: 'id', - credentialId: 'credentialId', - userId: 'userId', - status: 'status', - }, - user: { email: 'email', id: 'id' }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@sim/logger', () => ({ createLogger: vi.fn().mockReturnValue(mockLogger), @@ -86,7 +61,7 @@ describe('OAuth Credentials API Route', () => { }) it('should handle unauthenticated user', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Authentication required', }) @@ -102,7 +77,7 @@ describe('OAuth Credentials API Route', () => { }) it('should handle missing provider parameter', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', @@ -119,7 +94,7 @@ describe('OAuth Credentials API Route', () => { }) it('should handle no credentials found', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', @@ -135,7 +110,7 @@ describe('OAuth Credentials API Route', () => { }) it('should return empty credentials when no workspace context', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', diff --git a/apps/sim/app/api/auth/oauth/disconnect/route.test.ts b/apps/sim/app/api/auth/oauth/disconnect/route.test.ts index 35bec861936..0f0ad680e49 100644 --- a/apps/sim/app/api/auth/oauth/disconnect/route.test.ts +++ b/apps/sim/app/api/auth/oauth/disconnect/route.test.ts @@ -3,11 +3,18 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + requestUtilsMock, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDb, mockSelectChain, mockLogger, mockSyncAllWebhooksForCredentialSet } = - vi.hoisted(() => { +const { mockDb, mockSelectChain, mockLogger, mockSyncAllWebhooksForCredentialSet } = vi.hoisted( + () => { const selectChain = { from: vi.fn().mockReturnThis(), innerJoin: vi.fn().mockReturnThis(), @@ -28,32 +35,21 @@ const { mockGetSession, mockDb, mockSelectChain, mockLogger, mockSyncAllWebhooks child: vi.fn(), } return { - mockGetSession: vi.fn(), mockDb: db, mockSelectChain: selectChain, mockLogger: logger, mockSyncAllWebhooksForCredentialSet: vi.fn().mockResolvedValue({}), } - }) + } +) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDb, })) -vi.mock('@sim/db/schema', () => ({ - account: { userId: 'userId', providerId: 'providerId' }, - credentialSetMember: { - id: 'id', - credentialSetId: 'credentialSetId', - userId: 'userId', - status: 'status', - }, - credentialSet: { id: 'id', providerId: 'providerId' }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -66,28 +62,13 @@ vi.mock('@sim/logger', () => ({ createLogger: vi.fn().mockReturnValue(mockLogger), })) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('test-request-id'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) vi.mock('@/lib/webhooks/utils.server', () => ({ syncAllWebhooksForCredentialSet: mockSyncAllWebhooksForCredentialSet, })) -vi.mock('@/lib/audit/log', () => ({ - recordAudit: vi.fn(), - AuditAction: { - CREDENTIAL_SET_CREATED: 'credential_set.created', - CREDENTIAL_SET_UPDATED: 'credential_set.updated', - CREDENTIAL_SET_DELETED: 'credential_set.deleted', - OAUTH_CONNECTED: 'oauth.connected', - OAUTH_DISCONNECTED: 'oauth.disconnected', - }, - AuditResourceType: { - CREDENTIAL_SET: 'credential_set', - OAUTH_CONNECTION: 'oauth_connection', - }, -})) +vi.mock('@/lib/audit/log', () => auditMock) import { POST } from '@/app/api/auth/oauth/disconnect/route' @@ -102,7 +83,7 @@ describe('OAuth Disconnect API Route', () => { }) it('should disconnect provider successfully', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -122,7 +103,7 @@ describe('OAuth Disconnect API Route', () => { }) it('should disconnect specific provider ID successfully', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -143,7 +124,7 @@ describe('OAuth Disconnect API Route', () => { }) it('should handle unauthenticated user', async () => { - mockGetSession.mockResolvedValueOnce(null) + authMockFns.mockGetSession.mockResolvedValueOnce(null) const req = createMockRequest('POST', { provider: 'google', @@ -158,7 +139,7 @@ describe('OAuth Disconnect API Route', () => { }) it('should handle missing provider', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) @@ -173,7 +154,7 @@ describe('OAuth Disconnect API Route', () => { }) it('should handle database error', async () => { - mockGetSession.mockResolvedValueOnce({ + authMockFns.mockGetSession.mockResolvedValueOnce({ user: { id: 'user-123' }, }) diff --git a/apps/sim/app/api/auth/oauth/token/route.test.ts b/apps/sim/app/api/auth/oauth/token/route.test.ts index 7970a9b5180..e589a1fbe45 100644 --- a/apps/sim/app/api/auth/oauth/token/route.test.ts +++ b/apps/sim/app/api/auth/oauth/token/route.test.ts @@ -3,20 +3,17 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + authOAuthUtilsMock, + authOAuthUtilsMockFns, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + requestUtilsMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockGetUserId, - mockGetCredential, - mockRefreshTokenIfNeeded, - mockGetOAuthToken, - mockResolveOAuthAccountId, - mockGetServiceAccountToken, - mockAuthorizeCredentialUse, - mockCheckSessionOrInternalAuth, - mockLogger, -} = vi.hoisted(() => { +const { mockAuthorizeCredentialUse, mockLogger } = vi.hoisted(() => { const logger = { info: vi.fn(), warn: vi.fn(), @@ -27,26 +24,12 @@ const { child: vi.fn(), } return { - mockGetUserId: vi.fn(), - mockGetCredential: vi.fn(), - mockRefreshTokenIfNeeded: vi.fn(), - mockGetOAuthToken: vi.fn(), - mockResolveOAuthAccountId: vi.fn(), - mockGetServiceAccountToken: vi.fn(), mockAuthorizeCredentialUse: vi.fn(), - mockCheckSessionOrInternalAuth: vi.fn(), mockLogger: logger, } }) -vi.mock('@/app/api/auth/oauth/utils', () => ({ - getUserId: mockGetUserId, - getCredential: mockGetCredential, - refreshTokenIfNeeded: mockRefreshTokenIfNeeded, - getOAuthToken: mockGetOAuthToken, - resolveOAuthAccountId: mockResolveOAuthAccountId, - getServiceAccountToken: mockGetServiceAccountToken, -})) +vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) vi.mock('@sim/logger', () => ({ createLogger: vi.fn().mockReturnValue(mockLogger), @@ -56,23 +39,16 @@ vi.mock('@/lib/auth/credential-access', () => ({ authorizeCredentialUse: mockAuthorizeCredentialUse, })) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('test-request-id'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: vi.fn(), - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, - checkInternalAuth: vi.fn(), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) import { GET, POST } from '@/app/api/auth/oauth/token/route' describe('OAuth Token API Routes', () => { beforeEach(() => { vi.clearAllMocks() - mockResolveOAuthAccountId.mockResolvedValue(null) + authOAuthUtilsMockFns.mockResolveOAuthAccountId.mockResolvedValue(null) }) /** @@ -86,14 +62,14 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'owner-user-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: 'test-token', refreshToken: 'refresh-token', accessTokenExpiresAt: new Date(Date.now() + 3600 * 1000), providerId: 'google', }) - mockRefreshTokenIfNeeded.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValueOnce({ accessToken: 'fresh-token', refreshed: false, }) @@ -109,8 +85,8 @@ describe('OAuth Token API Routes', () => { expect(data).toHaveProperty('accessToken', 'fresh-token') expect(mockAuthorizeCredentialUse).toHaveBeenCalled() - expect(mockGetCredential).toHaveBeenCalled() - expect(mockRefreshTokenIfNeeded).toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetCredential).toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockRefreshTokenIfNeeded).toHaveBeenCalled() }) it('should handle workflowId for server-side authentication', async () => { @@ -120,14 +96,14 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'workflow-owner-id', credentialOwnerUserId: 'workflow-owner-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: 'test-token', refreshToken: 'refresh-token', accessTokenExpiresAt: new Date(Date.now() + 3600 * 1000), providerId: 'google', }) - mockRefreshTokenIfNeeded.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValueOnce({ accessToken: 'fresh-token', refreshed: false, }) @@ -144,7 +120,7 @@ describe('OAuth Token API Routes', () => { expect(data).toHaveProperty('accessToken', 'fresh-token') expect(mockAuthorizeCredentialUse).toHaveBeenCalled() - expect(mockGetCredential).toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetCredential).toHaveBeenCalled() }) it('should handle missing credentialId', async () => { @@ -199,7 +175,7 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'owner-user-id', }) - mockGetCredential.mockResolvedValueOnce(undefined) + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce(undefined) const req = createMockRequest('POST', { credentialId: 'nonexistent-credential-id', @@ -219,14 +195,16 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'owner-user-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: 'test-token', refreshToken: 'refresh-token', accessTokenExpiresAt: new Date(Date.now() - 3600 * 1000), // Expired providerId: 'google', }) - mockRefreshTokenIfNeeded.mockRejectedValueOnce(new Error('Refresh failure')) + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockRejectedValueOnce( + new Error('Refresh failure') + ) const req = createMockRequest('POST', { credentialId: 'credential-id', @@ -241,7 +219,7 @@ describe('OAuth Token API Routes', () => { describe('credentialAccountUserId + providerId path', () => { it('should reject unauthenticated requests', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Authentication required', }) @@ -256,11 +234,11 @@ describe('OAuth Token API Routes', () => { expect(response.status).toBe(401) expect(data).toHaveProperty('error', 'User not authenticated') - expect(mockGetOAuthToken).not.toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetOAuthToken).not.toHaveBeenCalled() }) it('should reject internal JWT authentication', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, authType: 'internal_jwt', userId: 'test-user-id', @@ -276,11 +254,11 @@ describe('OAuth Token API Routes', () => { expect(response.status).toBe(401) expect(data).toHaveProperty('error', 'User not authenticated') - expect(mockGetOAuthToken).not.toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetOAuthToken).not.toHaveBeenCalled() }) it('should reject requests for other users credentials', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, authType: 'session', userId: 'attacker-user-id', @@ -296,16 +274,16 @@ describe('OAuth Token API Routes', () => { expect(response.status).toBe(403) expect(data).toHaveProperty('error', 'Unauthorized') - expect(mockGetOAuthToken).not.toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetOAuthToken).not.toHaveBeenCalled() }) it('should allow session-authenticated users to access their own credentials', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, authType: 'session', userId: 'test-user-id', }) - mockGetOAuthToken.mockResolvedValueOnce('valid-access-token') + authOAuthUtilsMockFns.mockGetOAuthToken.mockResolvedValueOnce('valid-access-token') const req = createMockRequest('POST', { credentialAccountUserId: 'test-user-id', @@ -317,16 +295,19 @@ describe('OAuth Token API Routes', () => { expect(response.status).toBe(200) expect(data).toHaveProperty('accessToken', 'valid-access-token') - expect(mockGetOAuthToken).toHaveBeenCalledWith('test-user-id', 'google') + expect(authOAuthUtilsMockFns.mockGetOAuthToken).toHaveBeenCalledWith( + 'test-user-id', + 'google' + ) }) it('should return 404 when credential not found for user', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, authType: 'session', userId: 'test-user-id', }) - mockGetOAuthToken.mockResolvedValueOnce(null) + authOAuthUtilsMockFns.mockGetOAuthToken.mockResolvedValueOnce(null) const req = createMockRequest('POST', { credentialAccountUserId: 'test-user-id', @@ -353,14 +334,14 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'test-user-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: 'test-token', refreshToken: 'refresh-token', accessTokenExpiresAt: new Date(Date.now() + 3600 * 1000), providerId: 'google', }) - mockRefreshTokenIfNeeded.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValueOnce({ accessToken: 'fresh-token', refreshed: false, }) @@ -376,8 +357,8 @@ describe('OAuth Token API Routes', () => { expect(data).toHaveProperty('accessToken', 'fresh-token') expect(mockAuthorizeCredentialUse).toHaveBeenCalled() - expect(mockGetCredential).toHaveBeenCalled() - expect(mockRefreshTokenIfNeeded).toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockGetCredential).toHaveBeenCalled() + expect(authOAuthUtilsMockFns.mockRefreshTokenIfNeeded).toHaveBeenCalled() }) it('should handle missing credentialId', async () => { @@ -415,7 +396,7 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'test-user-id', }) - mockGetCredential.mockResolvedValueOnce(undefined) + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce(undefined) const req = new Request( 'http://localhost:3000/api/auth/oauth/token?credentialId=nonexistent-credential-id' @@ -435,7 +416,7 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'test-user-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: null, refreshToken: 'refresh-token', @@ -460,14 +441,16 @@ describe('OAuth Token API Routes', () => { requesterUserId: 'test-user-id', credentialOwnerUserId: 'test-user-id', }) - mockGetCredential.mockResolvedValueOnce({ + authOAuthUtilsMockFns.mockGetCredential.mockResolvedValueOnce({ id: 'credential-id', accessToken: 'test-token', refreshToken: 'refresh-token', accessTokenExpiresAt: new Date(Date.now() - 3600 * 1000), // Expired providerId: 'google', }) - mockRefreshTokenIfNeeded.mockRejectedValueOnce(new Error('Refresh failure')) + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockRejectedValueOnce( + new Error('Refresh failure') + ) const req = new Request( 'http://localhost:3000/api/auth/oauth/token?credentialId=credential-id' diff --git a/apps/sim/app/api/auth/oauth/utils.test.ts b/apps/sim/app/api/auth/oauth/utils.test.ts index 2e102c2f915..7f67d37673a 100644 --- a/apps/sim/app/api/auth/oauth/utils.test.ts +++ b/apps/sim/app/api/auth/oauth/utils.test.ts @@ -4,18 +4,13 @@ * @vitest-environment node */ -import { databaseMock, loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -vi.mock('@sim/db', () => databaseMock) - vi.mock('@/lib/oauth/oauth', () => ({ refreshOAuthToken: vi.fn(), OAUTH_PROVIDERS: {}, })) -vi.mock('@sim/logger', () => loggerMock) - import { db } from '@sim/db' import { refreshOAuthToken } from '@/lib/oauth' import { diff --git a/apps/sim/app/api/auth/oauth/utils.ts b/apps/sim/app/api/auth/oauth/utils.ts index 920c969b939..38b84a59777 100644 --- a/apps/sim/app/api/auth/oauth/utils.ts +++ b/apps/sim/app/api/auth/oauth/utils.ts @@ -2,9 +2,9 @@ import { createSign } from 'crypto' import { db } from '@sim/db' import { account, credential, credentialSetMember } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, desc, eq, inArray } from 'drizzle-orm' import { decryptSecret } from '@/lib/core/security/encryption' -import { toError } from '@/lib/core/utils/helpers' import { refreshOAuthToken } from '@/lib/oauth' import { getMicrosoftRefreshTokenExpiry, diff --git a/apps/sim/app/api/auth/shopify/authorize/route.ts b/apps/sim/app/api/auth/shopify/authorize/route.ts index 0fec2c90c00..518a99e1e12 100644 --- a/apps/sim/app/api/auth/shopify/authorize/route.ts +++ b/apps/sim/app/api/auth/shopify/authorize/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { env } from '@/lib/core/config/env' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { isSameOrigin } from '@/lib/core/utils/validation' import { getScopesForService } from '@/lib/oauth/utils' diff --git a/apps/sim/app/api/auth/socket-token/route.ts b/apps/sim/app/api/auth/socket-token/route.ts index 0228fe58c30..2eccea62193 100644 --- a/apps/sim/app/api/auth/socket-token/route.ts +++ b/apps/sim/app/api/auth/socket-token/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { headers } from 'next/headers' import { NextResponse } from 'next/server' import { auth } from '@/lib/auth' import { isAuthDisabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('SocketTokenAPI') diff --git a/apps/sim/app/api/billing/switch-plan/route.ts b/apps/sim/app/api/billing/switch-plan/route.ts index 4c763caa8c9..ba3f3c0df55 100644 --- a/apps/sim/app/api/billing/switch-plan/route.ts +++ b/apps/sim/app/api/billing/switch-plan/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { subscription as subscriptionTable } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -18,7 +19,6 @@ import { isOrgScopedSubscription, } from '@/lib/billing/subscriptions/utils' import { isBillingEnabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' import { captureServerEvent } from '@/lib/posthog/server' const logger = createLogger('SwitchPlan') diff --git a/apps/sim/app/api/billing/update-cost/route.ts b/apps/sim/app/api/billing/update-cost/route.ts index 733be3edd6a..cd3097bda4e 100644 --- a/apps/sim/app/api/billing/update-cost/route.ts +++ b/apps/sim/app/api/billing/update-cost/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -7,7 +8,6 @@ import { checkAndBillOverageThreshold } from '@/lib/billing/threshold-billing' import { checkInternalApiKey } from '@/lib/copilot/request/http' import { isBillingEnabled } from '@/lib/core/config/feature-flags' import { type AtomicClaimResult, billingIdempotency } from '@/lib/core/idempotency/service' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' const logger = createLogger('BillingUpdateCostAPI') diff --git a/apps/sim/app/api/chat/[identifier]/otp/route.test.ts b/apps/sim/app/api/chat/[identifier]/otp/route.test.ts index 7904dc1c3ab..b15147c5397 100644 --- a/apps/sim/app/api/chat/[identifier]/otp/route.test.ts +++ b/apps/sim/app/api/chat/[identifier]/otp/route.test.ts @@ -3,6 +3,13 @@ * * @vitest-environment node */ +import { + redisConfigMock, + redisConfigMockFns, + schemaMock, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -12,7 +19,6 @@ const { mockRedisDel, mockRedisTtl, mockRedisEval, - mockGetRedisClient, mockRedisClient, mockDbSelect, mockDbInsert, @@ -21,8 +27,6 @@ const { mockSendEmail, mockRenderOTPEmail, mockAddCorsHeaders, - mockCreateSuccessResponse, - mockCreateErrorResponse, mockSetChatAuthCookie, mockGenerateRequestId, mockGetStorageMethod, @@ -41,7 +45,6 @@ const { ttl: mockRedisTtl, eval: mockRedisEval, } - const mockGetRedisClient = vi.fn() const mockDbSelect = vi.fn() const mockDbInsert = vi.fn() const mockDbDelete = vi.fn() @@ -49,8 +52,6 @@ const { const mockSendEmail = vi.fn() const mockRenderOTPEmail = vi.fn() const mockAddCorsHeaders = vi.fn() - const mockCreateSuccessResponse = vi.fn() - const mockCreateErrorResponse = vi.fn() const mockSetChatAuthCookie = vi.fn() const mockGenerateRequestId = vi.fn() const mockGetStorageMethod = vi.fn() @@ -63,7 +64,6 @@ const { mockRedisDel, mockRedisTtl, mockRedisEval, - mockGetRedisClient, mockRedisClient, mockDbSelect, mockDbInsert, @@ -72,8 +72,6 @@ const { mockSendEmail, mockRenderOTPEmail, mockAddCorsHeaders, - mockCreateSuccessResponse, - mockCreateErrorResponse, mockSetChatAuthCookie, mockGenerateRequestId, mockGetStorageMethod, @@ -82,9 +80,11 @@ const { } }) -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: mockGetRedisClient, -})) +const mockGetRedisClient = redisConfigMockFns.mockGetRedisClient +const mockCreateSuccessResponse = workflowsApiUtilsMockFns.mockCreateSuccessResponse +const mockCreateErrorResponse = workflowsApiUtilsMockFns.mockCreateErrorResponse + +vi.mock('@/lib/core/config/redis', () => redisConfigMock) vi.mock('@sim/db', () => ({ db: { @@ -103,25 +103,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - chat: { - id: 'id', - identifier: 'identifier', - authType: 'authType', - allowedEmails: 'allowedEmails', - title: 'title', - isActive: 'isActive', - archivedAt: 'archivedAt', - }, - verification: { - id: 'id', - identifier: 'identifier', - value: 'value', - expiresAt: 'expiresAt', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn((field: string, value: string) => ({ field, value, type: 'eq' })), @@ -160,19 +142,7 @@ vi.mock('@/app/api/chat/utils', () => ({ setChatAuthCookie: mockSetChatAuthCookie, })) -vi.mock('@/app/api/workflows/utils', () => ({ - createSuccessResponse: mockCreateSuccessResponse, - createErrorResponse: mockCreateErrorResponse, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - error: vi.fn(), - warn: vi.fn(), - debug: vi.fn(), - }), -})) +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/lib/core/config/env', () => ({ env: { diff --git a/apps/sim/app/api/chat/[identifier]/otp/route.ts b/apps/sim/app/api/chat/[identifier]/otp/route.ts index 2c0ccde08ee..594949ba8d8 100644 --- a/apps/sim/app/api/chat/[identifier]/otp/route.ts +++ b/apps/sim/app/api/chat/[identifier]/otp/route.ts @@ -2,6 +2,7 @@ import { randomInt } from 'crypto' import { db } from '@sim/db' import { chat, verification } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, gt, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { z } from 'zod' @@ -10,7 +11,6 @@ import { getRedisClient } from '@/lib/core/config/redis' import { addCorsHeaders, isEmailAllowed } from '@/lib/core/security/deployment' import { getStorageMethod } from '@/lib/core/storage' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { setChatAuthCookie } from '@/app/api/chat/utils' import { createErrorResponse, createSuccessResponse } from '@/app/api/workflows/utils' diff --git a/apps/sim/app/api/chat/[identifier]/route.test.ts b/apps/sim/app/api/chat/[identifier]/route.test.ts index dac5048fc86..3e364253ae0 100644 --- a/apps/sim/app/api/chat/[identifier]/route.test.ts +++ b/apps/sim/app/api/chat/[identifier]/route.test.ts @@ -3,8 +3,16 @@ * * @vitest-environment node */ -import { loggerMock, requestUtilsMock } from '@sim/testing' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + encryptionMock, + executionPreprocessingMock, + executionPreprocessingMockFns, + loggingSessionMock, + requestUtilsMock, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, +} from '@sim/testing' +import { beforeEach, describe, expect, it, vi } from 'vitest' /** * Creates a mock NextRequest with cookies support for testing. @@ -57,30 +65,17 @@ const { mockValidateChatAuth, mockSetChatAuthCookie, mockValidateAuthToken, - mockCreateErrorResponse, - mockCreateSuccessResponse, } = vi.hoisted(() => ({ mockDbSelect: vi.fn(), mockAddCorsHeaders: vi.fn().mockImplementation((response: Response) => response), mockValidateChatAuth: vi.fn().mockResolvedValue({ authorized: true }), mockSetChatAuthCookie: vi.fn(), mockValidateAuthToken: vi.fn().mockReturnValue(false), - mockCreateErrorResponse: vi - .fn() - .mockImplementation((message: string, status: number, code?: string) => { - return new Response( - JSON.stringify({ - error: code || 'Error', - message, - }), - { status } - ) - }), - mockCreateSuccessResponse: vi.fn().mockImplementation((data: unknown) => { - return new Response(JSON.stringify(data), { status: 200 }) - }), })) +const mockCreateErrorResponse = workflowsApiUtilsMockFns.mockCreateErrorResponse +const mockCreateSuccessResponse = workflowsApiUtilsMockFns.mockCreateSuccessResponse + vi.mock('@sim/db', () => ({ db: { select: mockDbSelect }, chat: {}, @@ -99,42 +94,11 @@ vi.mock('@/app/api/chat/utils', () => ({ setChatAuthCookie: mockSetChatAuthCookie, })) -vi.mock('@sim/logger', () => loggerMock) +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) -vi.mock('@/app/api/workflows/utils', () => ({ - createErrorResponse: mockCreateErrorResponse, - createSuccessResponse: mockCreateSuccessResponse, -})) +vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) -vi.mock('@/lib/execution/preprocessing', () => ({ - preprocessExecution: vi.fn().mockResolvedValue({ - success: true, - actorUserId: 'test-user-id', - workflowRecord: { - id: 'test-workflow-id', - userId: 'test-user-id', - isDeployed: true, - workspaceId: 'test-workspace-id', - variables: {}, - }, - userSubscription: { - plan: 'pro', - status: 'active', - }, - rateLimitInfo: { - allowed: true, - remaining: 100, - resetAt: new Date(), - }, - }), -})) - -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn().mockImplementation(() => ({ - safeStart: vi.fn().mockResolvedValue(undefined), - safeCompleteWithError: vi.fn().mockResolvedValue(undefined), - })), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/lib/workflows/streaming/streaming', () => ({ createStreamingResponse: vi.fn().mockImplementation(async () => createMockStream()), @@ -155,9 +119,7 @@ vi.mock('@/lib/core/utils/sse', () => ({ vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@/lib/core/security/encryption', () => ({ - decryptSecret: vi.fn().mockResolvedValue({ decrypted: 'test-password' }), -})) +vi.mock('@/lib/core/security/encryption', () => encryptionMock) import { preprocessExecution } from '@/lib/execution/preprocessing' import { createStreamingResponse } from '@/lib/workflows/streaming/streaming' @@ -202,6 +164,27 @@ describe('Chat Identifier API Route', () => { beforeEach(() => { vi.clearAllMocks() + executionPreprocessingMockFns.mockPreprocessExecution.mockResolvedValue({ + success: true, + actorUserId: 'test-user-id', + workflowRecord: { + id: 'test-workflow-id', + userId: 'test-user-id', + isDeployed: true, + workspaceId: 'test-workspace-id', + variables: {}, + }, + userSubscription: { + plan: 'pro', + status: 'active', + }, + rateLimitInfo: { + allowed: true, + remaining: 100, + resetAt: new Date(), + }, + }) + mockAddCorsHeaders.mockImplementation((response: Response) => response) mockValidateChatAuth.mockResolvedValue({ authorized: true }) mockValidateAuthToken.mockReturnValue(false) @@ -238,10 +221,6 @@ describe('Chat Identifier API Route', () => { }) }) - afterEach(() => { - vi.clearAllMocks() - }) - describe('GET endpoint', () => { it('should return chat info for a valid identifier', async () => { const req = createMockNextRequest('GET') diff --git a/apps/sim/app/api/chat/[identifier]/route.ts b/apps/sim/app/api/chat/[identifier]/route.ts index de826d8c7e9..1a8d3b548d6 100644 --- a/apps/sim/app/api/chat/[identifier]/route.ts +++ b/apps/sim/app/api/chat/[identifier]/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { chat, workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { addCorsHeaders, validateAuthToken } from '@/lib/core/security/deployment' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { ChatFiles } from '@/lib/uploads' diff --git a/apps/sim/app/api/chat/manage/[id]/route.test.ts b/apps/sim/app/api/chat/manage/[id]/route.test.ts index 63fad11f3a6..cb80ea64a8c 100644 --- a/apps/sim/app/api/chat/manage/[id]/route.test.ts +++ b/apps/sim/app/api/chat/manage/[id]/route.test.ts @@ -3,52 +3,43 @@ * * @vitest-environment node */ -import { auditMock } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + encryptionMock, + encryptionMockFns, + schemaMock, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, + workflowsOrchestrationMock, + workflowsOrchestrationMockFns, + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -const { - mockGetSession, - mockSelect, - mockFrom, - mockWhere, - mockLimit, - mockUpdate, - mockSet, - mockCreateSuccessResponse, - mockCreateErrorResponse, - mockEncryptSecret, - mockCheckChatAccess, - mockDeployWorkflow, - mockPerformChatUndeploy, - mockLogger, -} = vi.hoisted(() => { - const logger = { - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - trace: vi.fn(), - fatal: vi.fn(), - child: vi.fn(), - } - return { - mockGetSession: vi.fn(), - mockSelect: vi.fn(), - mockFrom: vi.fn(), - mockWhere: vi.fn(), - mockLimit: vi.fn(), - mockUpdate: vi.fn(), - mockSet: vi.fn(), - mockCreateSuccessResponse: vi.fn(), - mockCreateErrorResponse: vi.fn(), - mockEncryptSecret: vi.fn(), - mockCheckChatAccess: vi.fn(), - mockDeployWorkflow: vi.fn(), - mockPerformChatUndeploy: vi.fn(), - mockLogger: logger, - } -}) +import { beforeEach, describe, expect, it, vi } from 'vitest' + +const { mockSelect, mockFrom, mockWhere, mockLimit, mockUpdate, mockSet, mockCheckChatAccess } = + vi.hoisted(() => { + return { + mockSelect: vi.fn(), + mockFrom: vi.fn(), + mockWhere: vi.fn(), + mockLimit: vi.fn(), + mockUpdate: vi.fn(), + mockSet: vi.fn(), + mockCheckChatAccess: vi.fn(), + } + }) + +const mockCreateSuccessResponse = workflowsApiUtilsMockFns.mockCreateSuccessResponse +const mockCreateErrorResponse = workflowsApiUtilsMockFns.mockCreateErrorResponse +const mockEncryptSecret = encryptionMockFns.mockEncryptSecret +const mockDeployWorkflow = workflowsPersistenceUtilsMockFns.mockDeployWorkflow +const mockPerformChatUndeploy = workflowsOrchestrationMockFns.mockPerformChatUndeploy +const mockNotifySocketDeploymentChanged = + workflowsOrchestrationMockFns.mockNotifySocketDeploymentChanged vi.mock('@/lib/audit/log', () => auditMock) vi.mock('@/lib/core/config/feature-flags', () => ({ @@ -56,41 +47,24 @@ vi.mock('@/lib/core/config/feature-flags', () => ({ isHosted: false, isProd: false, })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue(mockLogger), -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: { select: mockSelect, update: mockUpdate, }, })) -vi.mock('@sim/db/schema', () => ({ - chat: { id: 'id', identifier: 'identifier', userId: 'userId', archivedAt: 'archivedAt' }, -})) -vi.mock('@/app/api/workflows/utils', () => ({ - createSuccessResponse: mockCreateSuccessResponse, - createErrorResponse: mockCreateErrorResponse, -})) -vi.mock('@/lib/core/security/encryption', () => ({ - encryptSecret: mockEncryptSecret, -})) +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) +vi.mock('@/lib/core/security/encryption', () => encryptionMock) vi.mock('@/lib/core/utils/urls', () => ({ getEmailDomain: vi.fn().mockReturnValue('localhost:3000'), })) vi.mock('@/app/api/chat/utils', () => ({ checkChatAccess: mockCheckChatAccess, })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - deployWorkflow: mockDeployWorkflow, -})) -vi.mock('@/lib/workflows/orchestration', () => ({ - performChatUndeploy: mockPerformChatUndeploy, - notifySocketDeploymentChanged: vi.fn().mockResolvedValue(undefined), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) +vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ type: 'and', conditions })), eq: vi.fn((field: unknown, value: unknown) => ({ field, value, type: 'eq' })), @@ -126,15 +100,12 @@ describe('Chat Edit API Route', () => { mockEncryptSecret.mockResolvedValue({ encrypted: 'encrypted-password' }) mockDeployWorkflow.mockResolvedValue({ success: true, version: 1 }) - }) - - afterEach(() => { - vi.clearAllMocks() + mockNotifySocketDeploymentChanged.mockResolvedValue(undefined) }) describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/chat/manage/chat-123') const response = await GET(req, { params: Promise.resolve({ id: 'chat-123' }) }) @@ -145,7 +116,7 @@ describe('Chat Edit API Route', () => { }) it('should return 404 when chat not found or access denied', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -161,7 +132,7 @@ describe('Chat Edit API Route', () => { }) it('should return chat details when user has access', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -191,7 +162,7 @@ describe('Chat Edit API Route', () => { describe('PATCH', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/chat/manage/chat-123', { method: 'PATCH', @@ -205,7 +176,7 @@ describe('Chat Edit API Route', () => { }) it('should return 404 when chat not found or access denied', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -224,7 +195,7 @@ describe('Chat Edit API Route', () => { }) it('should update chat when user has access', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -257,7 +228,7 @@ describe('Chat Edit API Route', () => { }) it('should handle identifier conflicts', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -286,7 +257,7 @@ describe('Chat Edit API Route', () => { }) it('should validate password requirement for password auth', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -313,7 +284,7 @@ describe('Chat Edit API Route', () => { }) it('should keep the existing password when updating a password-protected chat', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -353,7 +324,7 @@ describe('Chat Edit API Route', () => { }) it('should allow access when user has workspace admin permission', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'admin-user-id' }, }) @@ -384,7 +355,7 @@ describe('Chat Edit API Route', () => { describe('DELETE', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/chat/manage/chat-123', { method: 'DELETE', @@ -397,7 +368,7 @@ describe('Chat Edit API Route', () => { }) it('should return 404 when chat not found or access denied', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -415,7 +386,7 @@ describe('Chat Edit API Route', () => { }) it('should delete chat when user has access', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -441,7 +412,7 @@ describe('Chat Edit API Route', () => { }) it('should allow deletion when user has workspace admin permission', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'admin-user-id' }, }) diff --git a/apps/sim/app/api/chat/route.test.ts b/apps/sim/app/api/chat/route.test.ts index 88fbe2d22e1..ecb1cb80b0c 100644 --- a/apps/sim/app/api/chat/route.test.ts +++ b/apps/sim/app/api/chat/route.test.ts @@ -3,31 +3,31 @@ * * @vitest-environment node */ -import { createEnvMock } from '@sim/testing' +import { + authMock, + authMockFns, + createEnvMock, + schemaMock, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, + workflowsOrchestrationMock, + workflowsOrchestrationMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -const { - mockSelect, - mockFrom, - mockWhere, - mockLimit, - mockCreateSuccessResponse, - mockCreateErrorResponse, - mockCheckWorkflowAccessForChatCreation, - mockPerformChatDeploy, - mockGetSession, -} = vi.hoisted(() => ({ - mockSelect: vi.fn(), - mockFrom: vi.fn(), - mockWhere: vi.fn(), - mockLimit: vi.fn(), - mockCreateSuccessResponse: vi.fn(), - mockCreateErrorResponse: vi.fn(), - mockCheckWorkflowAccessForChatCreation: vi.fn(), - mockPerformChatDeploy: vi.fn(), - mockGetSession: vi.fn(), -})) +import { beforeEach, describe, expect, it, vi } from 'vitest' + +const { mockSelect, mockFrom, mockWhere, mockLimit, mockCheckWorkflowAccessForChatCreation } = + vi.hoisted(() => ({ + mockSelect: vi.fn(), + mockFrom: vi.fn(), + mockWhere: vi.fn(), + mockLimit: vi.fn(), + mockCheckWorkflowAccessForChatCreation: vi.fn(), + })) + +const mockCreateSuccessResponse = workflowsApiUtilsMockFns.mockCreateSuccessResponse +const mockCreateErrorResponse = workflowsApiUtilsMockFns.mockCreateErrorResponse +const mockPerformChatDeploy = workflowsOrchestrationMockFns.mockPerformChatDeploy vi.mock('@sim/db', () => ({ db: { @@ -35,10 +35,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - chat: { userId: 'userId', identifier: 'identifier', archivedAt: 'archivedAt' }, - workflow: { id: 'id', userId: 'userId', isDeployed: 'isDeployed' }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ type: 'and', conditions })), @@ -46,22 +43,15 @@ vi.mock('drizzle-orm', () => ({ isNull: vi.fn((field: unknown) => ({ type: 'isNull', field })), })) -vi.mock('@/app/api/workflows/utils', () => ({ - createSuccessResponse: mockCreateSuccessResponse, - createErrorResponse: mockCreateErrorResponse, -})) +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/app/api/chat/utils', () => ({ checkWorkflowAccessForChatCreation: mockCheckWorkflowAccessForChatCreation, })) -vi.mock('@/lib/workflows/orchestration', () => ({ - performChatDeploy: mockPerformChatDeploy, -})) +vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@/lib/core/config/env', () => createEnvMock({ @@ -101,13 +91,9 @@ describe('Chat API Route', () => { }) }) - afterEach(() => { - vi.clearAllMocks() - }) - describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/chat') const response = await GET(req) @@ -117,7 +103,7 @@ describe('Chat API Route', () => { }) it('should return chat deployments for authenticated user', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -133,7 +119,7 @@ describe('Chat API Route', () => { }) it('should handle errors when fetching deployments', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -149,7 +135,7 @@ describe('Chat API Route', () => { describe('POST', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/chat', { method: 'POST', @@ -162,7 +148,7 @@ describe('Chat API Route', () => { }) it('should validate request data', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -178,7 +164,7 @@ describe('Chat API Route', () => { }) it('should reject if identifier already exists', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -206,7 +192,7 @@ describe('Chat API Route', () => { }) it('should reject if workflow not found', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -237,7 +223,7 @@ describe('Chat API Route', () => { }) it('should allow chat deployment when user owns workflow directly', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id', email: 'user@example.com' }, }) @@ -275,7 +261,7 @@ describe('Chat API Route', () => { }) it('passes chat customizations and outputConfigs through in the API request shape', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id', email: 'user@example.com' }, }) @@ -319,7 +305,7 @@ describe('Chat API Route', () => { }) it('should allow chat deployment when user has workspace admin permission', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id', email: 'user@example.com' }, }) @@ -356,7 +342,7 @@ describe('Chat API Route', () => { }) it('should reject when workflow is in workspace but user lacks admin permission', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -390,7 +376,7 @@ describe('Chat API Route', () => { }) it('should handle workspace permission check errors gracefully', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id' }, }) @@ -418,7 +404,7 @@ describe('Chat API Route', () => { }) it('should call performChatDeploy for undeployed workflow', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-id', email: 'user@example.com' }, }) diff --git a/apps/sim/app/api/chat/utils.test.ts b/apps/sim/app/api/chat/utils.test.ts index de604854f07..4f8dd64c0e6 100644 --- a/apps/sim/app/api/chat/utils.test.ts +++ b/apps/sim/app/api/chat/utils.test.ts @@ -3,12 +3,17 @@ * * @vitest-environment node */ -import { databaseMock, loggerMock, requestUtilsMock } from '@sim/testing' +import { + encryptionMock, + encryptionMockFns, + loggingSessionMock, + requestUtilsMock, + workflowsUtilsMock, +} from '@sim/testing' import type { NextResponse } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockDecryptSecret, mockMergeSubblockStateWithValues, mockMergeSubBlockValues, mockValidateAuthToken, @@ -16,7 +21,6 @@ const { mockAddCorsHeaders, mockIsEmailAllowed, } = vi.hoisted(() => ({ - mockDecryptSecret: vi.fn(), mockMergeSubblockStateWithValues: vi.fn().mockReturnValue({}), mockMergeSubBlockValues: vi.fn().mockReturnValue({}), mockValidateAuthToken: vi.fn().mockReturnValue(false), @@ -25,16 +29,9 @@ const { mockIsEmailAllowed: vi.fn(), })) -vi.mock('@sim/db', () => databaseMock) -vi.mock('@sim/logger', () => loggerMock) +const mockDecryptSecret = encryptionMockFns.mockDecryptSecret -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn().mockImplementation(() => ({ - safeStart: vi.fn().mockResolvedValue(undefined), - safeComplete: vi.fn().mockResolvedValue(undefined), - safeCompleteWithError: vi.fn().mockResolvedValue(undefined), - })), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/executor', () => ({ Executor: vi.fn(), @@ -49,9 +46,7 @@ vi.mock('@/lib/workflows/subblocks', () => ({ mergeSubBlockValues: mockMergeSubBlockValues, })) -vi.mock('@/lib/core/security/encryption', () => ({ - decryptSecret: mockDecryptSecret, -})) +vi.mock('@/lib/core/security/encryption', () => encryptionMock) vi.mock('@/lib/core/utils/request', () => requestUtilsMock) @@ -68,9 +63,7 @@ vi.mock('@/lib/core/config/feature-flags', () => ({ isProd: false, })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { decryptSecret } from '@/lib/core/security/encryption' import { setChatAuthCookie, validateChatAuth } from '@/app/api/chat/utils' diff --git a/apps/sim/app/api/copilot/api-keys/route.test.ts b/apps/sim/app/api/copilot/api-keys/route.test.ts index 81f3a64d57d..86d4a0cb77e 100644 --- a/apps/sim/app/api/copilot/api-keys/route.test.ts +++ b/apps/sim/app/api/copilot/api-keys/route.test.ts @@ -3,33 +3,22 @@ * * @vitest-environment node */ +import { authMock, authMockFns, createEnvMock } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockFetch } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), +const { mockFetch } = vi.hoisted(() => ({ mockFetch: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@/lib/copilot/constants', () => ({ SIM_AGENT_API_URL_DEFAULT: 'https://agent.sim.example.com', SIM_AGENT_API_URL: 'https://agent.sim.example.com', })) -vi.mock('@/lib/core/config/env', () => ({ - env: { - COPILOT_API_KEY: 'test-api-key', - }, - getEnv: vi.fn(), - isTruthy: (value: string | boolean | number | undefined) => - typeof value === 'string' ? value.toLowerCase() === 'true' || value === '1' : Boolean(value), - isFalsy: (value: string | boolean | number | undefined) => - typeof value === 'string' ? value.toLowerCase() === 'false' || value === '0' : value === false, -})) +vi.mock('@/lib/core/config/env', () => createEnvMock({ COPILOT_API_KEY: 'test-api-key' })) import { DELETE, GET } from '@/app/api/copilot/api-keys/route' @@ -41,7 +30,7 @@ describe('Copilot API Keys API Route', () => { describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest('http://localhost:3000/api/copilot/api-keys') const response = await GET(request) @@ -52,7 +41,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return list of API keys with masked values', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const mockApiKeys = [ { @@ -90,7 +81,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return empty array when user has no API keys', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -106,7 +99,9 @@ describe('Copilot API Keys API Route', () => { }) it('should forward userId to Sim Agent', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -130,7 +125,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return error when Sim Agent returns non-ok response', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: false, @@ -147,7 +144,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return 500 when Sim Agent returns invalid response', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -163,7 +162,9 @@ describe('Copilot API Keys API Route', () => { }) it('should handle network errors gracefully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockRejectedValueOnce(new Error('Network error')) @@ -176,7 +177,9 @@ describe('Copilot API Keys API Route', () => { }) it('should handle API keys with empty apiKey string', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const mockApiKeys = [ { @@ -202,7 +205,9 @@ describe('Copilot API Keys API Route', () => { }) it('should handle JSON parsing errors from Sim Agent', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -220,7 +225,7 @@ describe('Copilot API Keys API Route', () => { describe('DELETE', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest('http://localhost:3000/api/copilot/api-keys?id=key-123') const response = await DELETE(request) @@ -231,7 +236,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return 400 when id parameter is missing', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const request = new NextRequest('http://localhost:3000/api/copilot/api-keys') const response = await DELETE(request) @@ -242,7 +249,9 @@ describe('Copilot API Keys API Route', () => { }) it('should successfully delete an API key', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -270,7 +279,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return error when Sim Agent returns non-ok response', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: false, @@ -287,7 +298,9 @@ describe('Copilot API Keys API Route', () => { }) it('should return 500 when Sim Agent returns invalid response', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, @@ -303,7 +316,9 @@ describe('Copilot API Keys API Route', () => { }) it('should handle network errors gracefully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockRejectedValueOnce(new Error('Network error')) @@ -316,7 +331,9 @@ describe('Copilot API Keys API Route', () => { }) it('should handle JSON parsing errors from Sim Agent on delete', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockFetch.mockResolvedValueOnce({ ok: true, diff --git a/apps/sim/app/api/copilot/chat/abort/route.ts b/apps/sim/app/api/copilot/chat/abort/route.ts index f49168b8820..75e60f2078c 100644 --- a/apps/sim/app/api/copilot/chat/abort/route.ts +++ b/apps/sim/app/api/copilot/chat/abort/route.ts @@ -1,11 +1,11 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { getLatestRunForStream } from '@/lib/copilot/async-runs/repository' import { SIM_AGENT_API_URL } from '@/lib/copilot/constants' import { authenticateCopilotRequestSessionOnly } from '@/lib/copilot/request/http' import { abortActiveStream, waitForPendingChatStream } from '@/lib/copilot/request/session' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotChatAbortAPI') const GO_EXPLICIT_ABORT_TIMEOUT_MS = 3000 diff --git a/apps/sim/app/api/copilot/chat/delete/route.test.ts b/apps/sim/app/api/copilot/chat/delete/route.test.ts index 0493b3ffe89..4f887690210 100644 --- a/apps/sim/app/api/copilot/chat/delete/route.test.ts +++ b/apps/sim/app/api/copilot/chat/delete/route.test.ts @@ -3,19 +3,17 @@ * * @vitest-environment node */ +import { authMock, authMockFns, schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockDelete, mockWhere, mockGetSession, mockGetAccessibleCopilotChat } = vi.hoisted(() => ({ +const { mockDelete, mockWhere, mockGetAccessibleCopilotChat } = vi.hoisted(() => ({ mockDelete: vi.fn(), mockWhere: vi.fn(), - mockGetSession: vi.fn(), mockGetAccessibleCopilotChat: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: { @@ -23,13 +21,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { - id: 'id', - userId: 'userId', - workspaceId: 'workspaceId', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -58,7 +50,7 @@ describe('Copilot Chat Delete API Route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const mockReturning = vi.fn().mockResolvedValue([{ workspaceId: 'ws-1' }]) mockWhere.mockReturnValue({ returning: mockReturning }) @@ -72,7 +64,7 @@ describe('Copilot Chat Delete API Route', () => { describe('DELETE', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('DELETE', { chatId: 'chat-123', @@ -86,7 +78,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should successfully delete a chat', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('DELETE', { chatId: 'chat-123', @@ -103,7 +95,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should return 500 for invalid request body - missing chatId', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('DELETE', {}) @@ -115,7 +107,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should return 500 for invalid request body - chatId is not a string', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('DELETE', { chatId: 12345, @@ -129,7 +121,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should handle database errors gracefully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockWhere.mockRejectedValueOnce(new Error('Database connection failed')) @@ -145,7 +137,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should handle JSON parsing errors in request body', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = new NextRequest('http://localhost:3000/api/copilot/chat/delete', { method: 'DELETE', @@ -163,7 +155,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should delete chat even if it does not exist (idempotent)', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockGetAccessibleCopilotChat.mockResolvedValueOnce(null) @@ -179,7 +171,7 @@ describe('Copilot Chat Delete API Route', () => { }) it('should delete chat with empty string chatId (validation should fail)', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('DELETE', { chatId: '', diff --git a/apps/sim/app/api/copilot/chat/queries.ts b/apps/sim/app/api/copilot/chat/queries.ts index 25274224be8..8252c493413 100644 --- a/apps/sim/app/api/copilot/chat/queries.ts +++ b/apps/sim/app/api/copilot/chat/queries.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, desc, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getLatestRunForStream } from '@/lib/copilot/async-runs/repository' @@ -16,7 +17,6 @@ import { import { readFilePreviewSessions } from '@/lib/copilot/request/session' import { readEvents } from '@/lib/copilot/request/session/buffer' import { toStreamBatchEvent } from '@/lib/copilot/request/session/types' -import { toError } from '@/lib/core/utils/helpers' import { authorizeWorkflowByWorkspacePermission } from '@/lib/workflows/utils' import { assertActiveWorkspaceAccess } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/copilot/chat/stop/route.test.ts b/apps/sim/app/api/copilot/chat/stop/route.test.ts index 21c32e38a76..ed92e2481c5 100644 --- a/apps/sim/app/api/copilot/chat/stop/route.test.ts +++ b/apps/sim/app/api/copilot/chat/stop/route.test.ts @@ -1,11 +1,11 @@ /** * @vitest-environment node */ +import { authMock, authMockFns, schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockGetSession, mockSelect, mockFrom, mockWhereSelect, @@ -17,7 +17,6 @@ const { mockPublishStatusChanged, mockSql, } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), mockSelect: vi.fn(), mockFrom: vi.fn(), mockWhereSelect: vi.fn(), @@ -30,9 +29,7 @@ const { mockSql: vi.fn((strings: TemplateStringsArray, ...values: unknown[]) => ({ strings, values })), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: { @@ -41,15 +38,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { - id: 'id', - userId: 'userId', - workspaceId: 'workspaceId', - messages: 'messages', - conversationId: 'conversationId', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -77,7 +66,7 @@ describe('copilot chat stop route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) mockLimit.mockResolvedValue([ { @@ -96,7 +85,7 @@ describe('copilot chat stop route', () => { }) it('returns 401 when unauthenticated', async () => { - mockGetSession.mockResolvedValueOnce(null) + authMockFns.mockGetSession.mockResolvedValueOnce(null) const response = await POST( createRequest({ diff --git a/apps/sim/app/api/copilot/chat/stop/route.ts b/apps/sim/app/api/copilot/chat/stop/route.ts index 05e5935aa40..40070b64e0d 100644 --- a/apps/sim/app/api/copilot/chat/stop/route.ts +++ b/apps/sim/app/api/copilot/chat/stop/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { normalizeMessage, type PersistedMessage } from '@/lib/copilot/chat/persisted-message' import { taskPubSub } from '@/lib/copilot/tasks' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('CopilotChatStopAPI') diff --git a/apps/sim/app/api/copilot/chat/stream/route.test.ts b/apps/sim/app/api/copilot/chat/stream/route.test.ts index 3105f9216ce..5f24bc2e1e7 100644 --- a/apps/sim/app/api/copilot/chat/stream/route.test.ts +++ b/apps/sim/app/api/copilot/chat/stream/route.test.ts @@ -2,6 +2,7 @@ * @vitest-environment node */ +import { copilotHttpMock, copilotHttpMockFns } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' import { @@ -9,19 +10,13 @@ import { MothershipStreamV1EventType, } from '@/lib/copilot/generated/mothership-stream-v1' -const { - getLatestRunForStream, - readEvents, - readFilePreviewSessions, - checkForReplayGap, - authenticateCopilotRequestSessionOnly, -} = vi.hoisted(() => ({ - getLatestRunForStream: vi.fn(), - readEvents: vi.fn(), - readFilePreviewSessions: vi.fn(), - checkForReplayGap: vi.fn(), - authenticateCopilotRequestSessionOnly: vi.fn(), -})) +const { getLatestRunForStream, readEvents, readFilePreviewSessions, checkForReplayGap } = + vi.hoisted(() => ({ + getLatestRunForStream: vi.fn(), + readEvents: vi.fn(), + readFilePreviewSessions: vi.fn(), + checkForReplayGap: vi.fn(), + })) vi.mock('@/lib/copilot/async-runs/repository', () => ({ getLatestRunForStream, @@ -48,9 +43,7 @@ vi.mock('@/lib/copilot/request/session', () => ({ }, })) -vi.mock('@/lib/copilot/request/http', () => ({ - authenticateCopilotRequestSessionOnly, -})) +vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) import { GET } from './route' @@ -72,7 +65,7 @@ async function readAllChunks(response: Response): Promise { describe('copilot chat stream replay route', () => { beforeEach(() => { vi.clearAllMocks() - authenticateCopilotRequestSessionOnly.mockResolvedValue({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValue({ userId: 'user-1', isAuthenticated: true, }) diff --git a/apps/sim/app/api/copilot/chat/stream/route.ts b/apps/sim/app/api/copilot/chat/stream/route.ts index a0965b189e2..b88eec2915c 100644 --- a/apps/sim/app/api/copilot/chat/stream/route.ts +++ b/apps/sim/app/api/copilot/chat/stream/route.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { type NextRequest, NextResponse } from 'next/server' import { getLatestRunForStream } from '@/lib/copilot/async-runs/repository' import { @@ -15,7 +17,6 @@ import { SSE_RESPONSE_HEADERS, } from '@/lib/copilot/request/session' import { toStreamBatchEvent } from '@/lib/copilot/request/session/types' -import { sleep, toError } from '@/lib/core/utils/helpers' export const maxDuration = 3600 diff --git a/apps/sim/app/api/copilot/chat/update-messages/route.test.ts b/apps/sim/app/api/copilot/chat/update-messages/route.test.ts index 512a05cfd84..14d2fa199d1 100644 --- a/apps/sim/app/api/copilot/chat/update-messages/route.test.ts +++ b/apps/sim/app/api/copilot/chat/update-messages/route.test.ts @@ -3,32 +3,22 @@ * * @vitest-environment node */ +import { authMock, authMockFns, schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockSelect, - mockFrom, - mockWhere, - mockLimit, - mockUpdate, - mockSet, - mockUpdateWhere, - mockGetSession, -} = vi.hoisted(() => ({ - mockSelect: vi.fn(), - mockFrom: vi.fn(), - mockWhere: vi.fn(), - mockLimit: vi.fn(), - mockUpdate: vi.fn(), - mockSet: vi.fn(), - mockUpdateWhere: vi.fn(), - mockGetSession: vi.fn(), -})) +const { mockSelect, mockFrom, mockWhere, mockLimit, mockUpdate, mockSet, mockUpdateWhere } = + vi.hoisted(() => ({ + mockSelect: vi.fn(), + mockFrom: vi.fn(), + mockWhere: vi.fn(), + mockLimit: vi.fn(), + mockUpdate: vi.fn(), + mockSet: vi.fn(), + mockUpdateWhere: vi.fn(), + })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: { @@ -37,14 +27,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { - id: 'id', - userId: 'userId', - messages: 'messages', - updatedAt: 'updatedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -65,7 +48,7 @@ describe('Copilot Chat Update Messages API Route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) mockSelect.mockReturnValue({ from: mockFrom }) mockFrom.mockReturnValue({ where: mockWhere }) @@ -82,7 +65,7 @@ describe('Copilot Chat Update Messages API Route', () => { describe('POST', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('POST', { chatId: 'chat-123', @@ -104,7 +87,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 400 for invalid request body - missing chatId', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { messages: [ @@ -125,7 +108,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 400 for invalid request body - missing messages', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { chatId: 'chat-123', @@ -139,7 +122,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 400 for invalid message structure - missing required fields', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { chatId: 'chat-123', @@ -158,7 +141,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 400 for invalid message role', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { chatId: 'chat-123', @@ -180,7 +163,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 404 when chat is not found', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockLimit.mockResolvedValueOnce([]) @@ -204,7 +187,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should return 404 when chat belongs to different user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockLimit.mockResolvedValueOnce([]) @@ -228,7 +211,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should successfully update chat messages', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-123', @@ -275,7 +258,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should successfully update chat messages with optional fields', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-456', @@ -361,7 +344,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle empty messages array', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-789', @@ -391,7 +374,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle database errors during chat lookup', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockLimit.mockRejectedValueOnce(new Error('Database connection failed')) @@ -415,7 +398,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle database errors during update operation', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-123', @@ -448,7 +431,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle JSON parsing errors in request body', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = new NextRequest('http://localhost:3000/api/copilot/chat/update-messages', { method: 'POST', @@ -466,7 +449,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle large message arrays', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-large', @@ -503,7 +486,7 @@ describe('Copilot Chat Update Messages API Route', () => { }) it('should handle messages with both user and assistant roles', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const existingChat = { id: 'chat-mixed', diff --git a/apps/sim/app/api/copilot/chats/route.test.ts b/apps/sim/app/api/copilot/chats/route.test.ts index 3dbbf2791f8..4262b41e1d1 100644 --- a/apps/sim/app/api/copilot/chats/route.test.ts +++ b/apps/sim/app/api/copilot/chats/route.test.ts @@ -3,26 +3,15 @@ * * @vitest-environment node */ +import { copilotHttpMock, copilotHttpMockFns, schemaMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockSelectDistinctOn, - mockFrom, - mockLeftJoin, - mockWhere, - mockOrderBy, - mockAuthenticate, - mockCreateUnauthorizedResponse, - mockCreateInternalServerErrorResponse, -} = vi.hoisted(() => ({ +const { mockSelectDistinctOn, mockFrom, mockLeftJoin, mockWhere, mockOrderBy } = vi.hoisted(() => ({ mockSelectDistinctOn: vi.fn(), mockFrom: vi.fn(), mockLeftJoin: vi.fn(), mockWhere: vi.fn(), mockOrderBy: vi.fn(), - mockAuthenticate: vi.fn(), - mockCreateUnauthorizedResponse: vi.fn(), - mockCreateInternalServerErrorResponse: vi.fn(), })) vi.mock('@sim/db', () => ({ @@ -31,31 +20,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { - id: 'id', - title: 'title', - workflowId: 'workflowId', - workspaceId: 'workspaceId', - userId: 'userId', - updatedAt: 'updatedAt', - }, - workflow: { - id: 'id', - workspaceId: 'workspaceId', - archivedAt: 'archivedAt', - }, - workspace: { - id: 'id', - archivedAt: 'archivedAt', - }, - permissions: { - id: 'id', - entityType: 'entityType', - entityId: 'entityId', - userId: 'userId', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -66,11 +31,7 @@ vi.mock('drizzle-orm', () => ({ sql: vi.fn(), })) -vi.mock('@/lib/copilot/request/http', () => ({ - authenticateCopilotRequestSessionOnly: mockAuthenticate, - createUnauthorizedResponse: mockCreateUnauthorizedResponse, - createInternalServerErrorResponse: mockCreateInternalServerErrorResponse, -})) +vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) import { GET } from '@/app/api/copilot/chats/route' @@ -83,13 +44,6 @@ describe('Copilot Chats List API Route', () => { mockLeftJoin.mockReturnValue({ leftJoin: mockLeftJoin, where: mockWhere }) mockWhere.mockReturnValue({ orderBy: mockOrderBy }) mockOrderBy.mockResolvedValue([]) - - mockCreateUnauthorizedResponse.mockReturnValue( - new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 }) - ) - mockCreateInternalServerErrorResponse.mockImplementation( - (message: string) => new Response(JSON.stringify({ error: message }), { status: 500 }) - ) }) afterEach(() => { @@ -98,7 +52,7 @@ describe('Copilot Chats List API Route', () => { describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: null, isAuthenticated: false, }) @@ -112,7 +66,7 @@ describe('Copilot Chats List API Route', () => { }) it('should return empty chats array when user has no chats', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -131,7 +85,7 @@ describe('Copilot Chats List API Route', () => { }) it('should return list of chats for authenticated user', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -165,7 +119,7 @@ describe('Copilot Chats List API Route', () => { }) it('should return chats ordered by updatedAt descending', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -202,7 +156,7 @@ describe('Copilot Chats List API Route', () => { }) it('should handle chats with null workflowId', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -226,7 +180,7 @@ describe('Copilot Chats List API Route', () => { }) it('should handle database errors gracefully', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -242,7 +196,7 @@ describe('Copilot Chats List API Route', () => { }) it('should only return chats belonging to authenticated user', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -265,7 +219,7 @@ describe('Copilot Chats List API Route', () => { }) it('should return 401 when userId is null despite isAuthenticated being true', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: null, isAuthenticated: true, }) diff --git a/apps/sim/app/api/copilot/checkpoints/revert/route.test.ts b/apps/sim/app/api/copilot/checkpoints/revert/route.test.ts index fe4fb76f4d1..4526de0940a 100644 --- a/apps/sim/app/api/copilot/checkpoints/revert/route.test.ts +++ b/apps/sim/app/api/copilot/checkpoints/revert/route.test.ts @@ -3,6 +3,13 @@ * * @vitest-environment node */ +import { + authMock, + authMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -13,8 +20,6 @@ const { mockThen, mockDelete, mockDeleteWhere, - mockAuthorize, - mockGetSession, mockGetAccessibleCopilotChat, } = vi.hoisted(() => ({ mockSelect: vi.fn(), @@ -23,14 +28,10 @@ const { mockThen: vi.fn(), mockDelete: vi.fn(), mockDeleteWhere: vi.fn(), - mockAuthorize: vi.fn(), - mockGetSession: vi.fn(), mockGetAccessibleCopilotChat: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@/lib/core/utils/urls', () => ({ getBaseUrl: vi.fn(() => 'http://localhost:3000'), @@ -39,9 +40,7 @@ vi.mock('@/lib/core/utils/urls', () => ({ getEmailDomain: vi.fn(() => 'localhost:3000'), })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorize, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/lib/copilot/chat/lifecycle', () => ({ getAccessibleCopilotChat: mockGetAccessibleCopilotChat, @@ -54,18 +53,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - workflowCheckpoints: { - id: 'id', - userId: 'userId', - workflowId: 'workflowId', - workflowState: 'workflowState', - }, - workflow: { - id: 'id', - userId: 'userId', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -83,9 +71,9 @@ describe('Copilot Checkpoints Revert API Route', () => { thenResults = [] - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) - mockAuthorize.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true, status: 200, }) @@ -134,12 +122,12 @@ describe('Copilot Checkpoints Revert API Route', () => { /** Helper to set authenticated state */ function setAuthenticated(user = { id: 'user-123', email: 'test@example.com' }) { - mockGetSession.mockResolvedValue({ user }) + authMockFns.mockGetSession.mockResolvedValue({ user }) } /** Helper to set unauthenticated state */ function setUnauthenticated() { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) } describe('POST', () => { @@ -273,7 +261,7 @@ describe('Copilot Checkpoints Revert API Route', () => { thenResults.push(mockCheckpoint) // Checkpoint found thenResults.push(mockWorkflow) // Workflow found but different user - mockAuthorize.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 403, }) diff --git a/apps/sim/app/api/copilot/checkpoints/route.test.ts b/apps/sim/app/api/copilot/checkpoints/route.test.ts index e1b3a1f4e81..7521958259a 100644 --- a/apps/sim/app/api/copilot/checkpoints/route.test.ts +++ b/apps/sim/app/api/copilot/checkpoints/route.test.ts @@ -3,6 +3,13 @@ * * @vitest-environment node */ +import { + authMock, + authMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -15,9 +22,7 @@ const { mockInsert, mockValues, mockReturning, - mockGetSession, mockGetAccessibleCopilotChat, - mockAuthorizeWorkflowByWorkspacePermission, } = vi.hoisted(() => ({ mockSelect: vi.fn(), mockFrom: vi.fn(), @@ -27,14 +32,10 @@ const { mockInsert: vi.fn(), mockValues: vi.fn(), mockReturning: vi.fn(), - mockGetSession: vi.fn(), mockGetAccessibleCopilotChat: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: { @@ -43,18 +44,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { id: 'id', userId: 'userId' }, - workflowCheckpoints: { - id: 'id', - userId: 'userId', - workflowId: 'workflowId', - chatId: 'chatId', - messageId: 'messageId', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -66,9 +56,7 @@ vi.mock('@/lib/copilot/chat/lifecycle', () => ({ getAccessibleCopilotChat: mockGetAccessibleCopilotChat, })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { GET, POST } from './route' @@ -84,7 +72,7 @@ describe('Copilot Checkpoints API Route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) mockSelect.mockReturnValue({ from: mockFrom }) mockFrom.mockReturnValue({ where: mockWhere }) @@ -101,7 +89,9 @@ describe('Copilot Checkpoints API Route', () => { userId: 'user-123', workflowId: 'workflow-123', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true }) + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + allowed: true, + }) }) afterEach(() => { @@ -110,7 +100,7 @@ describe('Copilot Checkpoints API Route', () => { describe('POST', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('POST', { workflowId: 'workflow-123', @@ -126,7 +116,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return 500 for invalid request body', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { workflowId: 'workflow-123', @@ -140,7 +130,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return 400 when chat not found or unauthorized', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockGetAccessibleCopilotChat.mockResolvedValueOnce(null) const req = createMockRequest('POST', { @@ -157,7 +147,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return 400 for invalid workflow state JSON', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { workflowId: 'workflow-123', @@ -173,7 +163,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should successfully create a checkpoint', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const checkpoint = { id: 'checkpoint-123', @@ -222,7 +212,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should create checkpoint without messageId', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const checkpoint = { id: 'checkpoint-123', @@ -251,7 +241,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should handle database errors during checkpoint creation', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockReturning.mockRejectedValue(new Error('Database insert failed')) @@ -269,7 +259,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should handle database errors during chat lookup', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockGetAccessibleCopilotChat.mockRejectedValueOnce(new Error('Database query failed')) @@ -289,7 +279,7 @@ describe('Copilot Checkpoints API Route', () => { describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = new NextRequest('http://localhost:3000/api/copilot/checkpoints?chatId=chat-123') @@ -301,7 +291,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return 400 when chatId is missing', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = new NextRequest('http://localhost:3000/api/copilot/checkpoints') @@ -313,7 +303,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return checkpoints for authenticated user and chat', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const mockCheckpoints = [ { @@ -374,7 +364,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should handle database errors when fetching checkpoints', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockOrderBy.mockRejectedValue(new Error('Database query failed')) @@ -388,7 +378,7 @@ describe('Copilot Checkpoints API Route', () => { }) it('should return empty array when no checkpoints found', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockOrderBy.mockResolvedValue([]) diff --git a/apps/sim/app/api/copilot/confirm/route.test.ts b/apps/sim/app/api/copilot/confirm/route.test.ts index a81e39c2821..880d26b52d8 100644 --- a/apps/sim/app/api/copilot/confirm/route.test.ts +++ b/apps/sim/app/api/copilot/confirm/route.test.ts @@ -1,36 +1,17 @@ /** * @vitest-environment node */ +import { copilotHttpMock, copilotHttpMockFns } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - authenticateCopilotRequestSessionOnly, - createBadRequestResponse, - createInternalServerErrorResponse, - createNotFoundResponse, - createRequestTracker, - createUnauthorizedResponse, getAsyncToolCall, getRunSegment, upsertAsyncToolCall, completeAsyncToolCall, publishToolConfirmation, } = vi.hoisted(() => ({ - authenticateCopilotRequestSessionOnly: vi.fn(), - createBadRequestResponse: vi.fn((message: string) => - Response.json({ error: message }, { status: 400 }) - ), - createInternalServerErrorResponse: vi.fn((message: string) => - Response.json({ error: message }, { status: 500 }) - ), - createNotFoundResponse: vi.fn((message: string) => - Response.json({ error: message }, { status: 404 }) - ), - createRequestTracker: vi.fn(() => ({ requestId: 'req-1', getDuration: () => 1 })), - createUnauthorizedResponse: vi.fn(() => - Response.json({ error: 'Unauthorized' }, { status: 401 }) - ), getAsyncToolCall: vi.fn(), getRunSegment: vi.fn(), upsertAsyncToolCall: vi.fn(), @@ -38,14 +19,7 @@ const { publishToolConfirmation: vi.fn(), })) -vi.mock('@/lib/copilot/request/http', () => ({ - authenticateCopilotRequestSessionOnly, - createBadRequestResponse, - createInternalServerErrorResponse, - createNotFoundResponse, - createRequestTracker, - createUnauthorizedResponse, -})) +vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) vi.mock('@/lib/copilot/async-runs/repository', () => ({ getAsyncToolCall, @@ -71,7 +45,7 @@ describe('Copilot Confirm API Route', () => { beforeEach(() => { vi.clearAllMocks() - authenticateCopilotRequestSessionOnly.mockResolvedValue({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValue({ userId: 'user-1', isAuthenticated: true, }) @@ -90,7 +64,7 @@ describe('Copilot Confirm API Route', () => { } it('returns 401 when the session is unauthenticated', async () => { - authenticateCopilotRequestSessionOnly.mockResolvedValue({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValue({ userId: null, isAuthenticated: false, }) diff --git a/apps/sim/app/api/copilot/confirm/route.ts b/apps/sim/app/api/copilot/confirm/route.ts index ac1669d7c33..3e88151ffe5 100644 --- a/apps/sim/app/api/copilot/confirm/route.ts +++ b/apps/sim/app/api/copilot/confirm/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { @@ -22,7 +23,6 @@ import { createRequestTracker, createUnauthorizedResponse, } from '@/lib/copilot/request/http' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotConfirmAPI') diff --git a/apps/sim/app/api/copilot/feedback/route.test.ts b/apps/sim/app/api/copilot/feedback/route.test.ts index 3f3a28598a6..9fef1ea2046 100644 --- a/apps/sim/app/api/copilot/feedback/route.test.ts +++ b/apps/sim/app/api/copilot/feedback/route.test.ts @@ -3,34 +3,20 @@ * * @vitest-environment node */ +import { copilotHttpMock, copilotHttpMockFns, schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockInsert, - mockValues, - mockReturning, - mockSelect, - mockFrom, - mockWhere, - mockAuthenticate, - mockCreateUnauthorizedResponse, - mockCreateBadRequestResponse, - mockCreateInternalServerErrorResponse, - mockCreateRequestTracker, -} = vi.hoisted(() => ({ - mockInsert: vi.fn(), - mockValues: vi.fn(), - mockReturning: vi.fn(), - mockSelect: vi.fn(), - mockFrom: vi.fn(), - mockWhere: vi.fn(), - mockAuthenticate: vi.fn(), - mockCreateUnauthorizedResponse: vi.fn(), - mockCreateBadRequestResponse: vi.fn(), - mockCreateInternalServerErrorResponse: vi.fn(), - mockCreateRequestTracker: vi.fn(), -})) +const { mockInsert, mockValues, mockReturning, mockSelect, mockFrom, mockWhere } = vi.hoisted( + () => ({ + mockInsert: vi.fn(), + mockValues: vi.fn(), + mockReturning: vi.fn(), + mockSelect: vi.fn(), + mockFrom: vi.fn(), + mockWhere: vi.fn(), + }) +) vi.mock('@sim/db', () => ({ db: { @@ -39,31 +25,13 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotFeedback: { - feedbackId: 'feedbackId', - userId: 'userId', - chatId: 'chatId', - userQuery: 'userQuery', - agentResponse: 'agentResponse', - isPositive: 'isPositive', - feedback: 'feedback', - workflowYaml: 'workflowYaml', - createdAt: 'createdAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn((field: unknown, value: unknown) => ({ field, value, type: 'eq' })), })) -vi.mock('@/lib/copilot/request/http', () => ({ - authenticateCopilotRequestSessionOnly: mockAuthenticate, - createUnauthorizedResponse: mockCreateUnauthorizedResponse, - createBadRequestResponse: mockCreateBadRequestResponse, - createInternalServerErrorResponse: mockCreateInternalServerErrorResponse, - createRequestTracker: mockCreateRequestTracker, -})) +vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) import { GET, POST } from '@/app/api/copilot/feedback/route' @@ -85,20 +53,6 @@ describe('Copilot Feedback API Route', () => { mockSelect.mockReturnValue({ from: mockFrom }) mockFrom.mockReturnValue({ where: mockWhere }) mockWhere.mockResolvedValue([]) - - mockCreateRequestTracker.mockReturnValue({ - requestId: 'test-request-id', - getDuration: vi.fn().mockReturnValue(100), - }) - mockCreateUnauthorizedResponse.mockReturnValue( - new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 }) - ) - mockCreateBadRequestResponse.mockImplementation( - (message: string) => new Response(JSON.stringify({ error: message }), { status: 400 }) - ) - mockCreateInternalServerErrorResponse.mockImplementation( - (message: string) => new Response(JSON.stringify({ error: message }), { status: 500 }) - ) }) afterEach(() => { @@ -107,7 +61,7 @@ describe('Copilot Feedback API Route', () => { describe('POST', () => { it('should return 401 when user is not authenticated', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: null, isAuthenticated: false, }) @@ -127,7 +81,7 @@ describe('Copilot Feedback API Route', () => { }) it('should successfully submit positive feedback', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -162,7 +116,7 @@ describe('Copilot Feedback API Route', () => { }) it('should successfully submit negative feedback with text', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -197,7 +151,7 @@ describe('Copilot Feedback API Route', () => { }) it('should successfully submit feedback with workflow YAML', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -248,7 +202,7 @@ edges: }) it('should return 400 for invalid chatId format', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -268,7 +222,7 @@ edges: }) it('should return 400 for empty userQuery', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -288,7 +242,7 @@ edges: }) it('should return 400 for empty agentResponse', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -308,7 +262,7 @@ edges: }) it('should return 400 for missing isPositiveFeedback', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -327,7 +281,7 @@ edges: }) it('should handle database errors gracefully', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -349,7 +303,7 @@ edges: }) it('should handle JSON parsing errors in request body', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -370,7 +324,7 @@ edges: describe('GET', () => { it('should return 401 when user is not authenticated', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: null, isAuthenticated: false, }) @@ -384,7 +338,7 @@ edges: }) it('should return empty feedback array when no feedback exists', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -401,7 +355,7 @@ edges: }) it('should only return feedback records for the authenticated user', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -438,7 +392,7 @@ edges: }) it('should handle database errors gracefully', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -454,7 +408,7 @@ edges: }) it('should return metadata with response', async () => { - mockAuthenticate.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) diff --git a/apps/sim/app/api/copilot/models/route.ts b/apps/sim/app/api/copilot/models/route.ts index 5aaa7a44a75..73eaeee1979 100644 --- a/apps/sim/app/api/copilot/models/route.ts +++ b/apps/sim/app/api/copilot/models/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { SIM_AGENT_API_URL } from '@/lib/copilot/constants' import { authenticateCopilotRequestSessionOnly } from '@/lib/copilot/request/http' -import { toError } from '@/lib/core/utils/helpers' interface AvailableModel { id: string diff --git a/apps/sim/app/api/copilot/stats/route.test.ts b/apps/sim/app/api/copilot/stats/route.test.ts index ca6e97704f0..5f78d803472 100644 --- a/apps/sim/app/api/copilot/stats/route.test.ts +++ b/apps/sim/app/api/copilot/stats/route.test.ts @@ -3,54 +3,22 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { copilotHttpMock, copilotHttpMockFns, createEnvMock, createMockRequest } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockAuthenticateCopilotRequestSessionOnly, - mockCreateUnauthorizedResponse, - mockCreateBadRequestResponse, - mockCreateInternalServerErrorResponse, - mockCreateRequestTracker, - mockFetch, -} = vi.hoisted(() => ({ - mockAuthenticateCopilotRequestSessionOnly: vi.fn(), - mockCreateUnauthorizedResponse: vi.fn(), - mockCreateBadRequestResponse: vi.fn(), - mockCreateInternalServerErrorResponse: vi.fn(), - mockCreateRequestTracker: vi.fn(), +const { mockFetch } = vi.hoisted(() => ({ mockFetch: vi.fn(), })) -vi.mock('@/lib/copilot/request/http', () => ({ - authenticateCopilotRequestSessionOnly: mockAuthenticateCopilotRequestSessionOnly, - createUnauthorizedResponse: mockCreateUnauthorizedResponse, - createBadRequestResponse: mockCreateBadRequestResponse, - createInternalServerErrorResponse: mockCreateInternalServerErrorResponse, - createRequestTracker: mockCreateRequestTracker, -})) +vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) vi.mock('@/lib/copilot/constants', () => ({ SIM_AGENT_API_URL_DEFAULT: 'https://agent.sim.example.com', SIM_AGENT_API_URL: 'https://agent.sim.example.com', })) -vi.mock('@/lib/core/config/env', () => ({ - env: { - COPILOT_API_KEY: 'test-api-key', - }, - getEnv: vi.fn((key: string) => { - const vals: Record = { - COPILOT_API_KEY: 'test-api-key', - } - return vals[key] - }), - isTruthy: (value: string | boolean | number | undefined) => - typeof value === 'string' ? value.toLowerCase() === 'true' || value === '1' : Boolean(value), - isFalsy: (value: string | boolean | number | undefined) => - typeof value === 'string' ? value.toLowerCase() === 'false' || value === '0' : value === false, -})) +vi.mock('@/lib/core/config/env', () => createEnvMock({ COPILOT_API_KEY: 'test-api-key' })) import { POST } from '@/app/api/copilot/stats/route' @@ -58,20 +26,6 @@ describe('Copilot Stats API Route', () => { beforeEach(() => { vi.clearAllMocks() global.fetch = mockFetch - - mockCreateUnauthorizedResponse.mockReturnValue( - new Response(JSON.stringify({ error: 'Unauthorized' }), { status: 401 }) - ) - mockCreateBadRequestResponse.mockImplementation( - (message: string) => new Response(JSON.stringify({ error: message }), { status: 400 }) - ) - mockCreateInternalServerErrorResponse.mockImplementation( - (message: string) => new Response(JSON.stringify({ error: message }), { status: 500 }) - ) - mockCreateRequestTracker.mockReturnValue({ - requestId: 'test-request-id', - getDuration: vi.fn().mockReturnValue(100), - }) }) afterEach(() => { @@ -80,7 +34,7 @@ describe('Copilot Stats API Route', () => { describe('POST', () => { it('should return 401 when user is not authenticated', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: null, isAuthenticated: false, }) @@ -99,7 +53,7 @@ describe('Copilot Stats API Route', () => { }) it('should successfully forward stats to Sim Agent', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -139,7 +93,7 @@ describe('Copilot Stats API Route', () => { }) it('should return 400 for invalid request body - missing messageId', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -157,7 +111,7 @@ describe('Copilot Stats API Route', () => { }) it('should return 400 for invalid request body - missing diffCreated', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -175,7 +129,7 @@ describe('Copilot Stats API Route', () => { }) it('should return 400 for invalid request body - missing diffAccepted', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -193,7 +147,7 @@ describe('Copilot Stats API Route', () => { }) it('should return 400 when upstream Sim Agent returns error', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -217,7 +171,7 @@ describe('Copilot Stats API Route', () => { }) it('should handle upstream error with message field', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -241,7 +195,7 @@ describe('Copilot Stats API Route', () => { }) it('should handle upstream error with no JSON response', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -265,7 +219,7 @@ describe('Copilot Stats API Route', () => { }) it('should handle network errors gracefully', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -286,7 +240,7 @@ describe('Copilot Stats API Route', () => { }) it('should handle JSON parsing errors in request body', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) @@ -307,7 +261,7 @@ describe('Copilot Stats API Route', () => { }) it('should forward stats with diffCreated=false and diffAccepted=false', async () => { - mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValueOnce({ userId: 'user-123', isAuthenticated: true, }) diff --git a/apps/sim/app/api/creators/route.ts b/apps/sim/app/api/creators/route.ts index 6dedd133af1..07671d38ef6 100644 --- a/apps/sim/app/api/creators/route.ts +++ b/apps/sim/app/api/creators/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { member, templateCreators } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import type { CreatorProfileDetails } from '@/app/_types/creator-profile' const logger = createLogger('CreatorProfilesAPI') diff --git a/apps/sim/app/api/credential-sets/[id]/invite/route.ts b/apps/sim/app/api/credential-sets/[id]/invite/route.ts index b9b0ccc4a95..874b0b31550 100644 --- a/apps/sim/app/api/credential-sets/[id]/invite/route.ts +++ b/apps/sim/app/api/credential-sets/[id]/invite/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { credentialSet, credentialSetInvitation, member, organization, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -9,7 +10,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { hasCredentialSetsAccess } from '@/lib/billing' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' const logger = createLogger('CredentialSetInvite') diff --git a/apps/sim/app/api/credential-sets/[id]/members/route.ts b/apps/sim/app/api/credential-sets/[id]/members/route.ts index 8ec89923bbe..49959b85334 100644 --- a/apps/sim/app/api/credential-sets/[id]/members/route.ts +++ b/apps/sim/app/api/credential-sets/[id]/members/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { account, credentialSet, credentialSetMember, member, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { hasCredentialSetsAccess } from '@/lib/billing' -import { generateId } from '@/lib/core/utils/uuid' import { syncAllWebhooksForCredentialSet } from '@/lib/webhooks/utils.server' const logger = createLogger('CredentialSetMembers') diff --git a/apps/sim/app/api/credential-sets/invite/[token]/route.ts b/apps/sim/app/api/credential-sets/invite/[token]/route.ts index fc3759b0e27..a72b879128b 100644 --- a/apps/sim/app/api/credential-sets/invite/[token]/route.ts +++ b/apps/sim/app/api/credential-sets/invite/[token]/route.ts @@ -6,11 +6,11 @@ import { organization, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { syncAllWebhooksForCredentialSet } from '@/lib/webhooks/utils.server' const logger = createLogger('CredentialSetInviteToken') diff --git a/apps/sim/app/api/credential-sets/memberships/route.ts b/apps/sim/app/api/credential-sets/memberships/route.ts index 926714b98f9..ec6ba4b41d9 100644 --- a/apps/sim/app/api/credential-sets/memberships/route.ts +++ b/apps/sim/app/api/credential-sets/memberships/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { credentialSet, credentialSetMember, organization } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { syncAllWebhooksForCredentialSet } from '@/lib/webhooks/utils.server' const logger = createLogger('CredentialSetMemberships') diff --git a/apps/sim/app/api/credential-sets/route.ts b/apps/sim/app/api/credential-sets/route.ts index c120e84b421..bfd73c78f50 100644 --- a/apps/sim/app/api/credential-sets/route.ts +++ b/apps/sim/app/api/credential-sets/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { credentialSet, credentialSetMember, member, organization, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, count, desc, eq } from 'drizzle-orm' import { NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { hasCredentialSetsAccess } from '@/lib/billing' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('CredentialSets') diff --git a/apps/sim/app/api/credentials/[id]/members/route.ts b/apps/sim/app/api/credentials/[id]/members/route.ts index c89657fe89f..220f12b04b0 100644 --- a/apps/sim/app/api/credentials/[id]/members/route.ts +++ b/apps/sim/app/api/credentials/[id]/members/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { credential, credentialMember, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' const logger = createLogger('CredentialMembersAPI') diff --git a/apps/sim/app/api/credentials/[id]/route.ts b/apps/sim/app/api/credentials/[id]/route.ts index c3a61569051..f0429234488 100644 --- a/apps/sim/app/api/credentials/[id]/route.ts +++ b/apps/sim/app/api/credentials/[id]/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { credential, credentialMember, environment, workspaceEnvironment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { encryptSecret } from '@/lib/core/security/encryption' -import { generateId } from '@/lib/core/utils/uuid' import { getCredentialActorContext } from '@/lib/credentials/access' import { syncPersonalEnvCredentialsForUser, diff --git a/apps/sim/app/api/credentials/draft/route.ts b/apps/sim/app/api/credentials/draft/route.ts index e00be23b0d0..504a6f0d334 100644 --- a/apps/sim/app/api/credentials/draft/route.ts +++ b/apps/sim/app/api/credentials/draft/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { credential, credentialMember, pendingCredentialDraft } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, lt } from 'drizzle-orm' import { NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { checkWorkspaceAccess } from '@/lib/workspaces/permissions/utils' const logger = createLogger('CredentialDraftAPI') diff --git a/apps/sim/app/api/credentials/route.ts b/apps/sim/app/api/credentials/route.ts index 0b210325064..3ed44d4a863 100644 --- a/apps/sim/app/api/credentials/route.ts +++ b/apps/sim/app/api/credentials/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { account, credential, credentialMember, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -8,7 +9,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { encryptSecret } from '@/lib/core/security/encryption' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { getWorkspaceMemberUserIds } from '@/lib/credentials/environment' import { syncWorkspaceOAuthCredentialsForUser } from '@/lib/credentials/oauth' import { getServiceConfigByProviderId } from '@/lib/oauth' diff --git a/apps/sim/app/api/cron/cleanup-stale-executions/route.ts b/apps/sim/app/api/cron/cleanup-stale-executions/route.ts index 2b52a3ea43e..4983927241f 100644 --- a/apps/sim/app/api/cron/cleanup-stale-executions/route.ts +++ b/apps/sim/app/api/cron/cleanup-stale-executions/route.ts @@ -1,12 +1,12 @@ import { asyncJobs, db } from '@sim/db' import { workflowExecutionLogs } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, inArray, lt, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { verifyCronAuth } from '@/lib/auth/internal' import { JOB_RETENTION_HOURS, JOB_STATUS } from '@/lib/core/async-jobs' import { getMaxExecutionTimeout } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CleanupStaleExecutions') diff --git a/apps/sim/app/api/environment/route.ts b/apps/sim/app/api/environment/route.ts index f8167e92ac2..39659a6d3d8 100644 --- a/apps/sim/app/api/environment/route.ts +++ b/apps/sim/app/api/environment/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { environment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -8,7 +9,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { decryptSecret, encryptSecret } from '@/lib/core/security/encryption' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { syncPersonalEnvCredentialsForUser } from '@/lib/credentials/environment' import type { EnvironmentVariable } from '@/lib/environment/api' diff --git a/apps/sim/app/api/files/delete/route.test.ts b/apps/sim/app/api/files/delete/route.test.ts index 85ea1913565..063e489675a 100644 --- a/apps/sim/app/api/files/delete/route.test.ts +++ b/apps/sim/app/api/files/delete/route.test.ts @@ -1,13 +1,10 @@ /** * @vitest-environment node */ +import { authMock, authMockFns, hybridAuthMock, hybridAuthMockFns, schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const mocks = vi.hoisted(() => { - const mockGetSession = vi.fn() - const mockCheckHybridAuth = vi.fn() - const mockCheckSessionOrInternalAuth = vi.fn() - const mockCheckInternalAuth = vi.fn() const mockVerifyFileAccess = vi.fn() const mockVerifyWorkspaceFileAccess = vi.fn() const mockDeleteFile = vi.fn() @@ -18,10 +15,6 @@ const mocks = vi.hoisted(() => { const mockDownloadFile = vi.fn() return { - mockGetSession, - mockCheckHybridAuth, - mockCheckSessionOrInternalAuth, - mockCheckInternalAuth, mockVerifyFileAccess, mockVerifyWorkspaceFileAccess, mockDeleteFile, @@ -33,29 +26,7 @@ const mocks = vi.hoisted(() => { } }) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - -vi.mock('@sim/db/schema', () => ({ - workflowFolder: { - id: 'id', - userId: 'userId', - parentId: 'parentId', - updatedAt: 'updatedAt', - workspaceId: 'workspaceId', - sortOrder: 'sortOrder', - createdAt: 'createdAt', - }, - workflow: { id: 'id', folderId: 'folderId', userId: 'userId', updatedAt: 'updatedAt' }, - account: { userId: 'userId', providerId: 'providerId' }, - user: { email: 'email', id: 'id' }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -82,7 +53,7 @@ vi.mock('drizzle-orm', () => ({ sql: vi.fn((strings: unknown, ...values: unknown[]) => ({ type: 'sql', sql: strings, values })), })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'test-uuid'), generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -90,16 +61,9 @@ vi.mock('@/lib/core/utils/uuid', () => ({ ), })) -vi.mock('@/lib/auth', () => ({ - getSession: mocks.mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: mocks.mockCheckHybridAuth, - checkSessionOrInternalAuth: mocks.mockCheckSessionOrInternalAuth, - checkInternalAuth: mocks.mockCheckInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/app/api/files/authorization', () => ({ verifyFileAccess: mocks.mockVerifyFileAccess, @@ -151,8 +115,8 @@ describe('File Delete API Route', () => { randomUUID: vi.fn().mockReturnValue('mock-uuid-1234-5678'), }) - mocks.mockGetSession.mockResolvedValue({ user: { id: 'test-user-id' } }) - mocks.mockCheckSessionOrInternalAuth.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'test-user-id' } }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'test-user-id', error: undefined, diff --git a/apps/sim/app/api/files/parse/route.test.ts b/apps/sim/app/api/files/parse/route.test.ts index 02baaffb6c0..0414692a5fb 100644 --- a/apps/sim/app/api/files/parse/route.test.ts +++ b/apps/sim/app/api/files/parse/route.test.ts @@ -3,7 +3,12 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + inputValidationMock, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -23,9 +28,6 @@ const { mockFsWriteFile, mockJoin, mockGetSession, - mockCheckInternalAuth, - mockCheckHybridAuth, - mockCheckSessionOrInternalAuth, actualPath, } = vi.hoisted(() => { // eslint-disable-next-line @typescript-eslint/no-require-imports @@ -57,9 +59,6 @@ const { return actualPath.join(...args) }), mockGetSession: vi.fn(), - mockCheckInternalAuth: vi.fn(), - mockCheckHybridAuth: vi.fn(), - mockCheckSessionOrInternalAuth: vi.fn(), actualPath, } }) @@ -105,17 +104,9 @@ vi.mock('@/lib/auth', () => ({ signUp: vi.fn(), })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkInternalAuth: mockCheckInternalAuth, - checkHybridAuth: mockCheckHybridAuth, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/core/security/input-validation.server', () => ({ - secureFetchWithPinnedIP: vi.fn(), - validateUrlWithDNS: vi.fn(), -})) +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) vi.mock('@/lib/core/utils/logging', () => ({ sanitizeUrlForLog: vi.fn((url: string) => url), @@ -165,19 +156,19 @@ function setupFileApiMocks( mockGetSession.mockResolvedValue(null) } - mockCheckInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckInternalAuth.mockResolvedValue({ success: authenticated, userId: authenticated ? 'test-user-id' : undefined, error: authenticated ? undefined : 'Unauthorized', }) - mockCheckHybridAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ success: authenticated, userId: authenticated ? 'test-user-id' : undefined, error: authenticated ? undefined : 'Unauthorized', }) - mockCheckSessionOrInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: authenticated, userId: authenticated ? 'test-user-id' : undefined, error: authenticated ? undefined : 'Unauthorized', diff --git a/apps/sim/app/api/files/presigned/route.test.ts b/apps/sim/app/api/files/presigned/route.test.ts index a752403a059..9f6a6ca4c7c 100644 --- a/apps/sim/app/api/files/presigned/route.test.ts +++ b/apps/sim/app/api/files/presigned/route.test.ts @@ -4,11 +4,11 @@ * @vitest-environment node */ +import { authMock, authMockFns } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { - mockGetSession, mockVerifyFileAccess, mockVerifyWorkspaceFileAccess, mockUseBlobStorage, @@ -25,7 +25,6 @@ const { mockGetStorageProviderUploads, mockIsUsingCloudStorageUploads, } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), mockVerifyFileAccess: vi.fn().mockResolvedValue(true), mockVerifyWorkspaceFileAccess: vi.fn().mockResolvedValue(true), mockUseBlobStorage: { value: false }, @@ -46,9 +45,7 @@ const { mockIsUsingCloudStorageUploads: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@/app/api/files/authorization', () => ({ verifyFileAccess: mockVerifyFileAccess, @@ -108,9 +105,9 @@ function setupFileApiMocks( const { authenticated = true, storageProvider = 's3', cloudEnabled = true } = options if (authenticated) { - mockGetSession.mockResolvedValue({ user: defaultMockUser }) + authMockFns.mockGetSession.mockResolvedValue({ user: defaultMockUser }) } else { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) } const useBlobStorage = storageProvider === 'blob' && cloudEnabled diff --git a/apps/sim/app/api/files/serve/[...path]/route.test.ts b/apps/sim/app/api/files/serve/[...path]/route.test.ts index 6a102b60340..408470b70f8 100644 --- a/apps/sim/app/api/files/serve/[...path]/route.test.ts +++ b/apps/sim/app/api/files/serve/[...path]/route.test.ts @@ -3,11 +3,11 @@ * * @vitest-environment node */ +import { hybridAuthMock, hybridAuthMockFns } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockCheckSessionOrInternalAuth, mockVerifyFileAccess, mockReadFile, mockIsUsingCloudStorage, @@ -27,7 +27,6 @@ const { } } return { - mockCheckSessionOrInternalAuth: vi.fn(), mockVerifyFileAccess: vi.fn(), mockReadFile: vi.fn(), mockIsUsingCloudStorage: vi.fn(), @@ -48,10 +47,7 @@ vi.mock('fs/promises', () => ({ stat: vi.fn().mockResolvedValue({ isFile: () => true, size: 100 }), })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/app/api/files/authorization', () => ({ verifyFileAccess: mockVerifyFileAccess, @@ -103,7 +99,7 @@ describe('File Serve API Route', () => { beforeEach(() => { vi.clearAllMocks() - mockCheckSessionOrInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'test-user-id', }) diff --git a/apps/sim/app/api/files/upload/route.test.ts b/apps/sim/app/api/files/upload/route.test.ts index 5f3d9064c9f..f38c673332a 100644 --- a/apps/sim/app/api/files/upload/route.test.ts +++ b/apps/sim/app/api/files/upload/route.test.ts @@ -3,14 +3,11 @@ * * @vitest-environment node */ +import { authMock, authMockFns, hybridAuthMock, hybridAuthMockFns, schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const mocks = vi.hoisted(() => { - const mockGetSession = vi.fn() - const mockCheckHybridAuth = vi.fn() - const mockCheckSessionOrInternalAuth = vi.fn() - const mockCheckInternalAuth = vi.fn() const mockVerifyFileAccess = vi.fn() const mockVerifyWorkspaceFileAccess = vi.fn() const mockVerifyKBFileAccess = vi.fn() @@ -24,10 +21,6 @@ const mocks = vi.hoisted(() => { const mockStorageUploadFile = vi.fn() return { - mockGetSession, - mockCheckHybridAuth, - mockCheckSessionOrInternalAuth, - mockCheckInternalAuth, mockVerifyFileAccess, mockVerifyWorkspaceFileAccess, mockVerifyKBFileAccess, @@ -42,29 +35,7 @@ const mocks = vi.hoisted(() => { } }) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - -vi.mock('@sim/db/schema', () => ({ - workflowFolder: { - id: 'id', - userId: 'userId', - parentId: 'parentId', - updatedAt: 'updatedAt', - workspaceId: 'workspaceId', - sortOrder: 'sortOrder', - createdAt: 'createdAt', - }, - workflow: { id: 'id', folderId: 'folderId', userId: 'userId', updatedAt: 'updatedAt' }, - account: { userId: 'userId', providerId: 'providerId' }, - user: { email: 'email', id: 'id' }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ conditions, type: 'and' })), @@ -91,7 +62,7 @@ vi.mock('drizzle-orm', () => ({ sql: vi.fn((strings: unknown, ...values: unknown[]) => ({ type: 'sql', sql: strings, values })), })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'test-uuid'), generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -99,16 +70,9 @@ vi.mock('@/lib/core/utils/uuid', () => ({ ), })) -vi.mock('@/lib/auth', () => ({ - getSession: mocks.mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: mocks.mockCheckHybridAuth, - checkSessionOrInternalAuth: mocks.mockCheckSessionOrInternalAuth, - checkInternalAuth: mocks.mockCheckInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/app/api/files/authorization', () => ({ verifyFileAccess: mocks.mockVerifyFileAccess, @@ -160,12 +124,12 @@ function setupFileApiMocks( }) if (authenticated) { - mocks.mockGetSession.mockResolvedValue({ user: { id: 'test-user-id' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'test-user-id' } }) } else { - mocks.mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) } - mocks.mockCheckHybridAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ success: authenticated, userId: authenticated ? 'test-user-id' : undefined, error: authenticated ? undefined : 'Unauthorized', @@ -367,7 +331,7 @@ describe('File Upload Security Tests', () => { beforeEach(() => { vi.clearAllMocks() - mocks.mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'test-user-id' }, }) @@ -529,7 +493,7 @@ describe('File Upload Security Tests', () => { describe('Authentication Requirements', () => { it('should reject uploads without authentication', async () => { - mocks.mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const formData = new FormData() const file = new File(['test content'], 'test.pdf', { type: 'application/pdf' }) diff --git a/apps/sim/app/api/folders/[id]/duplicate/route.ts b/apps/sim/app/api/folders/[id]/duplicate/route.ts index be6cea9d429..9225390746d 100644 --- a/apps/sim/app/api/folders/[id]/duplicate/route.ts +++ b/apps/sim/app/api/folders/[id]/duplicate/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { workflow, workflowFolder } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, min } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { duplicateWorkflow } from '@/lib/workflows/persistence/duplicate' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/folders/[id]/route.test.ts b/apps/sim/app/api/folders/[id]/route.test.ts index ee13e3a6c3f..f920c7cb59b 100644 --- a/apps/sim/app/api/folders/[id]/route.test.ts +++ b/apps/sim/app/api/folders/[id]/route.test.ts @@ -3,17 +3,22 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest, type MockUser } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + type MockUser, + permissionsMock, + permissionsMockFns, + workflowsOrchestrationMock, + workflowsOrchestrationMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockGetSession, - mockGetUserEntityPermissions, - mockLogger, - mockDbRef, - mockPerformDeleteFolder, - mockCheckForCircularReference, -} = vi.hoisted(() => { +const { mockLogger, mockDbRef } = vi.hoisted(() => { const logger = { info: vi.fn(), warn: vi.fn(), @@ -24,36 +29,28 @@ const { child: vi.fn(), } return { - mockGetSession: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), mockLogger: logger, mockDbRef: { current: null as any }, - mockPerformDeleteFolder: vi.fn(), - mockCheckForCircularReference: vi.fn(), } }) +const mockPerformDeleteFolder = workflowsOrchestrationMockFns.mockPerformDeleteFolder + +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + vi.mock('@/lib/audit/log', () => auditMock) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/logger', () => ({ createLogger: vi.fn().mockReturnValue(mockLogger), })) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: mockGetUserEntityPermissions, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@sim/db', () => ({ get db() { return mockDbRef.current }, })) -vi.mock('@/lib/workflows/orchestration', () => ({ - performDeleteFolder: mockPerformDeleteFolder, -})) -vi.mock('@/lib/workflows/utils', () => ({ - checkForCircularReference: mockCheckForCircularReference, -})) +vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { DELETE, PUT } from '@/app/api/folders/[id]/route' @@ -146,11 +143,11 @@ function createFolderDbMock(options: FolderDbMockOptions = {}) { } function mockAuthenticatedUser(user?: MockUser) { - mockGetSession.mockResolvedValue({ user: user || TEST_USER }) + authMockFns.mockGetSession.mockResolvedValue({ user: user || TEST_USER }) } function mockUnauthenticated() { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) } describe('Individual Folder API Route', () => { @@ -163,7 +160,7 @@ describe('Individual Folder API Route', () => { success: true, deletedItems: { folders: 1, workflows: 0 }, }) - mockCheckForCircularReference.mockResolvedValue(false) + workflowsUtilsMockFns.mockCheckForCircularReference.mockResolvedValue(false) }) describe('PUT /api/folders/[id]', () => { @@ -398,7 +395,7 @@ describe('Individual Folder API Route', () => { }, }) - mockCheckForCircularReference.mockResolvedValue(true) + workflowsUtilsMockFns.mockCheckForCircularReference.mockResolvedValue(true) const req = createMockRequest('PUT', { name: 'Updated Folder 3', @@ -412,7 +409,10 @@ describe('Individual Folder API Route', () => { const data = await response.json() expect(data).toHaveProperty('error', 'Cannot create circular folder reference') - expect(mockCheckForCircularReference).toHaveBeenCalledWith('folder-3', 'folder-1') + expect(workflowsUtilsMockFns.mockCheckForCircularReference).toHaveBeenCalledWith( + 'folder-3', + 'folder-1' + ) }) }) diff --git a/apps/sim/app/api/folders/route.test.ts b/apps/sim/app/api/folders/route.test.ts index b31b527a745..1f5ba3272aa 100644 --- a/apps/sim/app/api/folders/route.test.ts +++ b/apps/sim/app/api/folders/route.test.ts @@ -3,11 +3,18 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + permissionsMock, + permissionsMockFns, +} from '@sim/testing' import { drizzleOrmMock } from '@sim/testing/mocks' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockGetUserEntityPermissions, mockLogger } = vi.hoisted(() => { +const { mockLogger } = vi.hoisted(() => { const logger = { info: vi.fn(), warn: vi.fn(), @@ -18,26 +25,22 @@ const { mockGetSession, mockGetUserEntityPermissions, mockLogger } = vi.hoisted( child: vi.fn(), } return { - mockGetSession: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), mockLogger: logger, } }) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + vi.mock('@/lib/audit/log', () => auditMock) vi.mock('drizzle-orm', () => ({ ...drizzleOrmMock, min: vi.fn((field) => ({ type: 'min', field })), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/logger', () => ({ createLogger: vi.fn().mockReturnValue(mockLogger), })) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: mockGetUserEntityPermissions, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) import { db } from '@sim/db' import { GET, POST } from '@/app/api/folders/route' @@ -131,11 +134,11 @@ describe('Folders API Route', () => { const mockTransaction = mockDb.transaction function mockAuthenticatedUser() { - mockGetSession.mockResolvedValue({ user: defaultMockUser }) + authMockFns.mockGetSession.mockResolvedValue({ user: defaultMockUser }) } function mockUnauthenticated() { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) } beforeEach(() => { diff --git a/apps/sim/app/api/folders/route.ts b/apps/sim/app/api/folders/route.ts index 37e0ae8d1d8..4b0612fcb98 100644 --- a/apps/sim/app/api/folders/route.ts +++ b/apps/sim/app/api/folders/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { workflow, workflowFolder } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, asc, eq, isNotNull, isNull, min } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/form/[identifier]/route.ts b/apps/sim/app/api/form/[identifier]/route.ts index 2ecc89fcfbb..8cb11dabc19 100644 --- a/apps/sim/app/api/form/[identifier]/route.ts +++ b/apps/sim/app/api/form/[identifier]/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { form, workflow, workflowBlocks } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { addCorsHeaders, validateAuthToken } from '@/lib/core/security/deployment' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { executeWorkflow } from '@/lib/workflows/executor/execute-workflow' diff --git a/apps/sim/app/api/form/route.ts b/apps/sim/app/api/form/route.ts index b42d804203e..500e5b4bb47 100644 --- a/apps/sim/app/api/form/route.ts +++ b/apps/sim/app/api/form/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { form } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { z } from 'zod' @@ -9,7 +10,6 @@ import { getSession } from '@/lib/auth' import { isDev } from '@/lib/core/config/feature-flags' import { encryptSecret } from '@/lib/core/security/encryption' import { getEmailDomain } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { notifySocketDeploymentChanged } from '@/lib/workflows/orchestration' import { deployWorkflow } from '@/lib/workflows/persistence/utils' import { diff --git a/apps/sim/app/api/form/utils.test.ts b/apps/sim/app/api/form/utils.test.ts index d88146cb69f..9c36ccc6e92 100644 --- a/apps/sim/app/api/form/utils.test.ts +++ b/apps/sim/app/api/form/utils.test.ts @@ -3,30 +3,25 @@ * * @vitest-environment node */ -import { databaseMock, loggerMock } from '@sim/testing' +import { encryptionMock, encryptionMockFns, workflowsUtilsMock } from '@sim/testing' import type { NextResponse } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockDecryptSecret, mockValidateAuthToken, mockSetDeploymentAuthCookie, mockAddCorsHeaders, mockIsEmailAllowed, } = vi.hoisted(() => ({ - mockDecryptSecret: vi.fn(), mockValidateAuthToken: vi.fn().mockReturnValue(false), mockSetDeploymentAuthCookie: vi.fn(), mockAddCorsHeaders: vi.fn((response: unknown) => response), mockIsEmailAllowed: vi.fn(), })) -vi.mock('@sim/db', () => databaseMock) -vi.mock('@sim/logger', () => loggerMock) +const mockDecryptSecret = encryptionMockFns.mockDecryptSecret -vi.mock('@/lib/core/security/encryption', () => ({ - decryptSecret: mockDecryptSecret, -})) +vi.mock('@/lib/core/security/encryption', () => encryptionMock) vi.mock('@/lib/core/security/deployment', () => ({ validateAuthToken: mockValidateAuthToken, @@ -41,9 +36,7 @@ vi.mock('@/lib/core/config/feature-flags', () => ({ isProd: false, })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { decryptSecret } from '@/lib/core/security/encryption' import { diff --git a/apps/sim/app/api/function/execute/route.test.ts b/apps/sim/app/api/function/execute/route.test.ts index 766bbb88fad..a11387064d8 100644 --- a/apps/sim/app/api/function/execute/route.test.ts +++ b/apps/sim/app/api/function/execute/route.test.ts @@ -3,12 +3,17 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + createMockRequest, + featureFlagsMock, + hybridAuthMock, + hybridAuthMockFns, + workflowsUtilsMock, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckInternalAuth, mockExecuteInE2B, mockExecuteInIsolatedVM } = vi.hoisted(() => ({ - mockCheckInternalAuth: vi.fn(), +const { mockExecuteInE2B, mockExecuteInIsolatedVM } = vi.hoisted(() => ({ mockExecuteInE2B: vi.fn(), mockExecuteInIsolatedVM: vi.fn(), })) @@ -17,10 +22,7 @@ vi.mock('@/lib/execution/isolated-vm', () => ({ executeInIsolatedVM: mockExecuteInIsolatedVM, })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkInternalAuth: mockCheckInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/execution/e2b', () => ({ executeInE2B: mockExecuteInE2B, @@ -43,18 +45,9 @@ vi.mock('@/lib/uploads/contexts/workspace/workspace-file-manager', () => ({ uploadWorkspaceFile: vi.fn(), })) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isHosted: false, - isE2bEnabled: false, - isProd: false, - isDev: false, - isTest: true, - isEmailVerificationEnabled: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) import { validateProxyUrl } from '@/lib/core/security/input-validation' import { POST } from '@/app/api/function/execute/route' @@ -147,7 +140,7 @@ describe('Function Execute API Route', () => { beforeEach(() => { vi.clearAllMocks() - mockCheckInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckInternalAuth.mockResolvedValue({ success: true, userId: 'user-123', authType: 'internal_jwt', @@ -164,7 +157,7 @@ describe('Function Execute API Route', () => { describe('Security Tests', () => { it('should reject unauthorized requests', async () => { - mockCheckInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckInternalAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized', }) diff --git a/apps/sim/app/api/jobs/[jobId]/route.test.ts b/apps/sim/app/api/jobs/[jobId]/route.test.ts index 6ebce09fa67..0643a494a11 100644 --- a/apps/sim/app/api/jobs/[jobId]/route.test.ts +++ b/apps/sim/app/api/jobs/[jobId]/route.test.ts @@ -1,51 +1,35 @@ /** * @vitest-environment node */ +import { + hybridAuthMock, + hybridAuthMockFns, + requestUtilsMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import type { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockCheckHybridAuth, - mockGetJobQueue, - mockVerifyWorkflowAccess, - mockGetWorkflowById, - mockGetJob, -} = vi.hoisted(() => ({ - mockCheckHybridAuth: vi.fn(), +const { mockGetJobQueue, mockVerifyWorkflowAccess, mockGetJob } = vi.hoisted(() => ({ mockGetJobQueue: vi.fn(), mockVerifyWorkflowAccess: vi.fn(), - mockGetWorkflowById: vi.fn(), mockGetJob: vi.fn(), })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - -vi.mock('@/lib/auth/hybrid', () => ({ - checkHybridAuth: mockCheckHybridAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/core/async-jobs', () => ({ getJobQueue: mockGetJobQueue, })) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('request-1'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) vi.mock('@/socket/middleware/permissions', () => ({ verifyWorkflowAccess: mockVerifyWorkflowAccess, })) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: mockGetWorkflowById, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { GET } from './route' @@ -61,7 +45,7 @@ describe('GET /api/jobs/[jobId]', () => { beforeEach(() => { vi.clearAllMocks() - mockCheckHybridAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ success: true, userId: 'user-1', apiKeyType: undefined, @@ -69,7 +53,7 @@ describe('GET /api/jobs/[jobId]', () => { }) mockVerifyWorkflowAccess.mockResolvedValue({ hasAccess: true }) - mockGetWorkflowById.mockResolvedValue({ + workflowsUtilsMockFns.mockGetWorkflowById.mockResolvedValue({ id: 'workflow-1', workspaceId: 'workspace-1', }) diff --git a/apps/sim/app/api/jobs/[jobId]/route.ts b/apps/sim/app/api/jobs/[jobId]/route.ts index 8dcfd8bafd2..65d9cba2dcf 100644 --- a/apps/sim/app/api/jobs/[jobId]/route.ts +++ b/apps/sim/app/api/jobs/[jobId]/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkHybridAuth } from '@/lib/auth/hybrid' import { getJobQueue } from '@/lib/core/async-jobs' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { createErrorResponse } from '@/app/api/workflows/utils' diff --git a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/documents/route.test.ts b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/documents/route.test.ts index 132ddfb1ba8..68ddcf270f9 100644 --- a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/documents/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/documents/route.test.ts @@ -1,10 +1,18 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + auditMock, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + knowledgeApiUtilsMock, + knowledgeApiUtilsMockFns, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckSession, mockCheckAccess, mockCheckWriteAccess, mockDbChain } = vi.hoisted(() => { +const { mockDbChain } = vi.hoisted(() => { const chain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -15,49 +23,20 @@ const { mockCheckSession, mockCheckAccess, mockCheckWriteAccess, mockDbChain } = set: vi.fn().mockReturnThis(), returning: vi.fn().mockResolvedValue([]), } - return { - mockCheckSession: vi.fn(), - mockCheckAccess: vi.fn(), - mockCheckWriteAccess: vi.fn(), - mockDbChain: chain, - } + return { mockDbChain: chain } }) +const mockCheckAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess +const mockCheckWriteAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseWriteAccess + vi.mock('@sim/db', () => ({ db: mockDbChain })) -vi.mock('@sim/db/schema', () => ({ - document: { - id: 'id', - connectorId: 'connectorId', - deletedAt: 'deletedAt', - filename: 'filename', - externalId: 'externalId', - sourceUrl: 'sourceUrl', - enabled: 'enabled', - userExcluded: 'userExcluded', - uploadedAt: 'uploadedAt', - processingStatus: 'processingStatus', - }, - knowledgeConnector: { - id: 'id', - knowledgeBaseId: 'knowledgeBaseId', - deletedAt: 'deletedAt', - }, -})) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: mockCheckAccess, - checkKnowledgeBaseWriteAccess: mockCheckWriteAccess, -})) -vi.mock('@/lib/auth/hybrid', () => ({ - checkSessionOrInternalAuth: mockCheckSession, -})) +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/core/utils/request', () => ({ generateRequestId: vi.fn().mockReturnValue('test-req-id'), })) -vi.mock('@/lib/audit/log', () => ({ - recordAudit: vi.fn(), - AuditAction: {}, - AuditResourceType: {}, -})) +vi.mock('@/lib/audit/log', () => auditMock) import { GET, PATCH } from '@/app/api/knowledge/[id]/connectors/[connectorId]/documents/route' @@ -78,7 +57,10 @@ describe('Connector Documents API Route', () => { describe('GET', () => { it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('GET') const response = await GET(req as never, { params: mockParams }) @@ -87,7 +69,10 @@ describe('Connector Documents API Route', () => { }) it('returns 404 when connector not found', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([]) @@ -98,7 +83,10 @@ describe('Connector Documents API Route', () => { }) it('returns documents list on success', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: true }) const doc = { id: 'doc-1', filename: 'test.txt', userExcluded: false } @@ -118,7 +106,10 @@ describe('Connector Documents API Route', () => { }) it('includes excluded documents when includeExcluded=true', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([{ id: 'conn-456' }]) @@ -142,7 +133,10 @@ describe('Connector Documents API Route', () => { describe('PATCH', () => { it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('PATCH', { operation: 'restore', documentIds: ['doc-1'] }) const response = await PATCH(req as never, { params: mockParams }) @@ -151,7 +145,10 @@ describe('Connector Documents API Route', () => { }) it('returns 400 for invalid body', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([{ id: 'conn-456' }]) @@ -162,7 +159,10 @@ describe('Connector Documents API Route', () => { }) it('returns 404 when connector not found', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([]) @@ -173,7 +173,7 @@ describe('Connector Documents API Route', () => { }) it('returns success for restore operation', async () => { - mockCheckSession.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', userName: 'Test', @@ -195,7 +195,7 @@ describe('Connector Documents API Route', () => { }) it('returns success for exclude operation', async () => { - mockCheckSession.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', userName: 'Test', diff --git a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/route.test.ts b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/route.test.ts index 0ed9a961600..83d6de59e26 100644 --- a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/route.test.ts @@ -1,69 +1,50 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + auditMock, + authOAuthUtilsMock, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + knowledgeApiUtilsMock, + knowledgeApiUtilsMockFns, + requestUtilsMock, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckSession, mockCheckAccess, mockCheckWriteAccess, mockDbChain, mockValidateConfig } = - vi.hoisted(() => { - const chain = { - select: vi.fn().mockReturnThis(), - from: vi.fn().mockReturnThis(), - where: vi.fn().mockReturnThis(), - orderBy: vi.fn().mockReturnThis(), - limit: vi.fn().mockResolvedValue([]), - execute: vi.fn().mockResolvedValue(undefined), - transaction: vi.fn(), - insert: vi.fn().mockReturnThis(), - values: vi.fn().mockResolvedValue(undefined), - update: vi.fn().mockReturnThis(), - delete: vi.fn().mockReturnThis(), - set: vi.fn().mockReturnThis(), - returning: vi.fn().mockResolvedValue([]), - } - return { - mockCheckSession: vi.fn(), - mockCheckAccess: vi.fn(), - mockCheckWriteAccess: vi.fn(), - mockDbChain: chain, - mockValidateConfig: vi.fn(), - } - }) +const { mockDbChain, mockValidateConfig } = vi.hoisted(() => { + const chain = { + select: vi.fn().mockReturnThis(), + from: vi.fn().mockReturnThis(), + where: vi.fn().mockReturnThis(), + orderBy: vi.fn().mockReturnThis(), + limit: vi.fn().mockResolvedValue([]), + execute: vi.fn().mockResolvedValue(undefined), + transaction: vi.fn(), + insert: vi.fn().mockReturnThis(), + values: vi.fn().mockResolvedValue(undefined), + update: vi.fn().mockReturnThis(), + delete: vi.fn().mockReturnThis(), + set: vi.fn().mockReturnThis(), + returning: vi.fn().mockResolvedValue([]), + } + return { + mockDbChain: chain, + mockValidateConfig: vi.fn(), + } +}) + +const mockCheckAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess +const mockCheckWriteAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseWriteAccess vi.mock('@sim/db', () => ({ db: mockDbChain })) -vi.mock('@sim/db/schema', () => ({ - document: { - id: 'id', - connectorId: 'connectorId', - fileUrl: 'fileUrl', - archivedAt: 'archivedAt', - deletedAt: 'deletedAt', - }, - embedding: { documentId: 'documentId' }, - knowledgeBase: { id: 'id', userId: 'userId' }, - knowledgeConnector: { - id: 'id', - knowledgeBaseId: 'knowledgeBaseId', - archivedAt: 'archivedAt', - deletedAt: 'deletedAt', - connectorType: 'connectorType', - credentialId: 'credentialId', - }, - knowledgeConnectorSyncLog: { connectorId: 'connectorId', startedAt: 'startedAt' }, -})) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: mockCheckAccess, - checkKnowledgeBaseWriteAccess: mockCheckWriteAccess, -})) -vi.mock('@/lib/auth/hybrid', () => ({ - checkSessionOrInternalAuth: mockCheckSession, -})) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('test-req-id'), -})) -vi.mock('@/app/api/auth/oauth/utils', () => ({ - refreshAccessTokenIfNeeded: vi.fn(), -})) +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) +vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) vi.mock('@/connectors/registry', () => ({ CONNECTOR_REGISTRY: { jira: { validateConfig: mockValidateConfig }, @@ -75,11 +56,7 @@ vi.mock('@/lib/knowledge/tags/service', () => ({ vi.mock('@/lib/knowledge/documents/service', () => ({ deleteDocumentStorageFiles: vi.fn().mockResolvedValue(undefined), })) -vi.mock('@/lib/audit/log', () => ({ - recordAudit: vi.fn(), - AuditAction: {}, - AuditResourceType: {}, -})) +vi.mock('@/lib/audit/log', () => auditMock) import { DELETE, GET, PATCH } from '@/app/api/knowledge/[id]/connectors/[connectorId]/route' @@ -105,7 +82,10 @@ describe('Knowledge Connector By ID API Route', () => { describe('GET', () => { it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('GET') const response = await GET(req, { params: mockParams }) @@ -114,7 +94,10 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 404 when KB not found', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: false, notFound: true }) const req = createMockRequest('GET') @@ -124,7 +107,10 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 404 when connector not found', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([]) @@ -135,7 +121,10 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns connector with sync logs on success', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckAccess.mockResolvedValue({ hasAccess: true }) const mockConnector = { id: 'conn-456', connectorType: 'jira', status: 'active' } @@ -156,7 +145,10 @@ describe('Knowledge Connector By ID API Route', () => { describe('PATCH', () => { it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('PATCH', { status: 'paused' }) const response = await PATCH(req, { params: mockParams }) @@ -165,7 +157,10 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 400 for invalid body', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) const req = createMockRequest('PATCH', { syncIntervalMinutes: 'not a number' }) @@ -177,7 +172,10 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 404 when connector not found during sourceConfig validation', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([]) @@ -188,7 +186,7 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 200 and updates status', async () => { - mockCheckSession.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', userName: 'Test', @@ -214,7 +212,10 @@ describe('Knowledge Connector By ID API Route', () => { describe('DELETE', () => { it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('DELETE') const response = await DELETE(req, { params: mockParams }) @@ -223,7 +224,7 @@ describe('Knowledge Connector By ID API Route', () => { }) it('returns 200 on successful hard-delete', async () => { - mockCheckSession.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', userName: 'Test', diff --git a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/sync/route.test.ts b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/sync/route.test.ts index af517a61bb4..cceda25a880 100644 --- a/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/sync/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/connectors/[connectorId]/sync/route.test.ts @@ -1,10 +1,18 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + auditMock, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + knowledgeApiUtilsMock, + knowledgeApiUtilsMockFns, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckSession, mockCheckWriteAccess, mockDispatchSync, mockDbChain } = vi.hoisted(() => { +const { mockDispatchSync, mockDbChain } = vi.hoisted(() => { const chain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -15,39 +23,24 @@ const { mockCheckSession, mockCheckWriteAccess, mockDispatchSync, mockDbChain } set: vi.fn().mockReturnThis(), } return { - mockCheckSession: vi.fn(), - mockCheckWriteAccess: vi.fn(), mockDispatchSync: vi.fn().mockResolvedValue(undefined), mockDbChain: chain, } }) +const mockCheckWriteAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseWriteAccess + vi.mock('@sim/db', () => ({ db: mockDbChain })) -vi.mock('@sim/db/schema', () => ({ - knowledgeConnector: { - id: 'id', - knowledgeBaseId: 'knowledgeBaseId', - deletedAt: 'deletedAt', - status: 'status', - }, -})) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseWriteAccess: mockCheckWriteAccess, -})) -vi.mock('@/lib/auth/hybrid', () => ({ - checkSessionOrInternalAuth: mockCheckSession, -})) +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/core/utils/request', () => ({ generateRequestId: vi.fn().mockReturnValue('test-req-id'), })) vi.mock('@/lib/knowledge/connectors/sync-engine', () => ({ dispatchSync: mockDispatchSync, })) -vi.mock('@/lib/audit/log', () => ({ - recordAudit: vi.fn(), - AuditAction: {}, - AuditResourceType: {}, -})) +vi.mock('@/lib/audit/log', () => auditMock) import { POST } from '@/app/api/knowledge/[id]/connectors/[connectorId]/sync/route' @@ -66,7 +59,10 @@ describe('Connector Manual Sync API Route', () => { }) it('returns 401 when unauthenticated', async () => { - mockCheckSession.mockResolvedValue({ success: false, userId: null }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: false, + userId: null, + }) const req = createMockRequest('POST') const response = await POST(req as never, { params: mockParams }) @@ -75,7 +71,10 @@ describe('Connector Manual Sync API Route', () => { }) it('returns 404 when connector not found', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([]) @@ -86,7 +85,10 @@ describe('Connector Manual Sync API Route', () => { }) it('returns 409 when connector is syncing', async () => { - mockCheckSession.mockResolvedValue({ success: true, userId: 'user-1' }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: 'user-1', + }) mockCheckWriteAccess.mockResolvedValue({ hasAccess: true }) mockDbChain.limit.mockResolvedValueOnce([{ id: 'conn-456', status: 'syncing' }]) @@ -97,7 +99,7 @@ describe('Connector Manual Sync API Route', () => { }) it('dispatches sync on valid request', async () => { - mockCheckSession.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', userName: 'Test', diff --git a/apps/sim/app/api/knowledge/[id]/connectors/route.ts b/apps/sim/app/api/knowledge/[id]/connectors/route.ts index 34da8e03276..41df290d871 100644 --- a/apps/sim/app/api/knowledge/[id]/connectors/route.ts +++ b/apps/sim/app/api/knowledge/[id]/connectors/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { knowledgeBase, knowledgeBaseTagDefinitions, knowledgeConnector } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, desc, eq, isNull, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -9,7 +10,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { hasLiveSyncAccess } from '@/lib/billing/core/subscription' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { dispatchSync } from '@/lib/knowledge/connectors/sync-engine' import { allocateTagSlots } from '@/lib/knowledge/constants' import { createTagDefinition } from '@/lib/knowledge/tags/service' diff --git a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/chunks/[chunkId]/route.ts b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/chunks/[chunkId]/route.ts index b992ca4b4fe..630db09774f 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/chunks/[chunkId]/route.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/chunks/[chunkId]/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { deleteChunk, updateChunk } from '@/lib/knowledge/chunks/service' import { checkChunkAccess } from '@/app/api/knowledge/utils' diff --git a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/route.test.ts b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/route.test.ts index d3612f1bc4d..92fa814ece1 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/route.test.ts @@ -3,11 +3,17 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + knowledgeApiUtilsMock, + schemaMock, +} from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDbChain } = vi.hoisted(() => { - const mockGetSession = vi.fn() +const { mockDbChain } = vi.hoisted(() => { const mockDbChain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -18,95 +24,18 @@ const { mockGetSession, mockDbChain } = vi.hoisted(() => { delete: vi.fn().mockReturnThis(), transaction: vi.fn(), } - return { mockGetSession, mockDbChain } + return { mockDbChain } }) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: vi.fn(), - checkKnowledgeBaseWriteAccess: vi.fn(), - checkDocumentAccess: vi.fn(), - checkDocumentWriteAccess: vi.fn(), - checkChunkAccess: vi.fn(), - generateEmbeddings: vi.fn(), - processDocumentAsync: vi.fn(), -})) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) vi.mock('@/lib/knowledge/documents/service', () => ({ updateDocument: vi.fn(), @@ -192,7 +121,9 @@ describe('Document By ID API Route', () => { const mockParams = Promise.resolve({ id: 'kb-123', documentId: 'doc-123' }) it('should retrieve document successfully for authenticated user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, @@ -211,7 +142,7 @@ describe('Document By ID API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('GET') const response = await GET(req, { params: mockParams }) @@ -222,7 +153,9 @@ describe('Document By ID API Route', () => { }) it('should return not found for non-existent document', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentAccess).mockResolvedValue({ hasAccess: false, notFound: true, @@ -238,7 +171,9 @@ describe('Document By ID API Route', () => { }) it('should return unauthorized for document without access', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentAccess).mockResolvedValue({ hasAccess: false, reason: 'Access denied', @@ -253,7 +188,9 @@ describe('Document By ID API Route', () => { }) it('should handle database errors', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentAccess).mockRejectedValue(new Error('Database error')) const req = createMockRequest('GET') @@ -275,7 +212,9 @@ describe('Document By ID API Route', () => { } it('should update document successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, @@ -305,7 +244,9 @@ describe('Document By ID API Route', () => { }) it('should validate update data', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, @@ -338,7 +279,9 @@ describe('Document By ID API Route', () => { processingStartedAt: new Date(Date.now() - 200000), // 200 seconds ago } - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: processingDocument, @@ -367,7 +310,9 @@ describe('Document By ID API Route', () => { }) it('should reject marking failed for non-processing document', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: { ...mockDocument, processingStatus: 'completed' }, @@ -389,7 +334,9 @@ describe('Document By ID API Route', () => { processingStartedAt: new Date(Date.now() - 60000), // 60 seconds ago } - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: recentProcessingDocument, @@ -419,7 +366,9 @@ describe('Document By ID API Route', () => { processingError: 'Previous processing failed', } - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: failedDocument, @@ -454,7 +403,9 @@ describe('Document By ID API Route', () => { }) it('should reject retry for non-failed document', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: { ...mockDocument, processingStatus: 'completed' }, @@ -475,7 +426,7 @@ describe('Document By ID API Route', () => { const validUpdateData = { filename: 'updated-document.pdf' } it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('PUT', validUpdateData) const response = await PUT(req, { params: mockParams }) @@ -486,7 +437,9 @@ describe('Document By ID API Route', () => { }) it('should return not found for non-existent document', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: false, notFound: true, @@ -502,7 +455,9 @@ describe('Document By ID API Route', () => { }) it('should handle database errors during update', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, @@ -524,7 +479,9 @@ describe('Document By ID API Route', () => { const mockParams = Promise.resolve({ id: 'kb-123', documentId: 'doc-123' }) it('should delete document successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, @@ -547,7 +504,7 @@ describe('Document By ID API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('DELETE') const response = await DELETE(req, { params: mockParams }) @@ -558,7 +515,9 @@ describe('Document By ID API Route', () => { }) it('should return not found for non-existent document', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: false, notFound: true, @@ -574,7 +533,9 @@ describe('Document By ID API Route', () => { }) it('should return unauthorized for document without access', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: false, reason: 'Access denied', @@ -589,7 +550,9 @@ describe('Document By ID API Route', () => { }) it('should handle database errors during deletion', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkDocumentWriteAccess).mockResolvedValue({ hasAccess: true, document: mockDocument, diff --git a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/tag-definitions/route.ts b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/tag-definitions/route.ts index b60638907b4..8f8cdaaf537 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/[documentId]/tag-definitions/route.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/[documentId]/tag-definitions/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { SUPPORTED_FIELD_TYPES } from '@/lib/knowledge/constants' import { cleanupUnusedTagDefinitions, diff --git a/apps/sim/app/api/knowledge/[id]/documents/route.test.ts b/apps/sim/app/api/knowledge/[id]/documents/route.test.ts index 2be0e79bc52..52b8519d6aa 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/route.test.ts @@ -3,11 +3,17 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + knowledgeApiUtilsMock, + schemaMock, +} from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDbChain } = vi.hoisted(() => { - const mockGetSession = vi.fn() +const { mockDbChain } = vi.hoisted(() => { const mockDbChain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -21,95 +27,18 @@ const { mockGetSession, mockDbChain } = vi.hoisted(() => { set: vi.fn().mockReturnThis(), transaction: vi.fn(), } - return { mockGetSession, mockDbChain } + return { mockDbChain } }) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: vi.fn(), - checkKnowledgeBaseWriteAccess: vi.fn(), - checkDocumentAccess: vi.fn(), - checkDocumentWriteAccess: vi.fn(), - checkChunkAccess: vi.fn(), - generateEmbeddings: vi.fn(), - processDocumentAsync: vi.fn(), -})) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) vi.mock('@/lib/knowledge/documents/service', () => ({ getDocuments: vi.fn(), @@ -201,7 +130,9 @@ describe('Knowledge Base Documents API Route', () => { const mockParams = Promise.resolve({ id: 'kb-123' }) it('should retrieve documents successfully for authenticated user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -239,7 +170,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return documents with default filter', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -272,7 +205,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should filter documents by enabled status when requested', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -307,7 +242,7 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('GET') const response = await GET(req, { params: mockParams }) @@ -318,7 +253,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return not found for non-existent knowledge base', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: false, notFound: true, @@ -333,7 +270,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return unauthorized for knowledge base without access', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: false }) const req = createMockRequest('GET') @@ -345,7 +284,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should handle database errors', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -371,7 +312,9 @@ describe('Knowledge Base Documents API Route', () => { } it('should create single document successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -415,7 +358,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should validate single document data', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -463,7 +408,9 @@ describe('Knowledge Base Documents API Route', () => { } it('should create bulk documents successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -513,7 +460,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should validate bulk document data', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -545,7 +494,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should handle processing errors gracefully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, @@ -589,7 +540,7 @@ describe('Knowledge Base Documents API Route', () => { } it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('POST', validDocumentData) const response = await POST(req, { params: mockParams }) @@ -600,7 +551,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return not found for non-existent knowledge base', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: false, notFound: true, @@ -615,7 +568,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should return unauthorized for knowledge base without access', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: false }) const req = createMockRequest('POST', validDocumentData) @@ -627,7 +582,9 @@ describe('Knowledge Base Documents API Route', () => { }) it('should handle database errors during creation', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValue({ hasAccess: true, knowledgeBase: { id: 'kb-123', userId: 'user-123' }, diff --git a/apps/sim/app/api/knowledge/[id]/documents/route.ts b/apps/sim/app/api/knowledge/[id]/documents/route.ts index b5614aec41d..02e5793a691 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/route.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { bulkDocumentOperation, bulkDocumentOperationByFilter, diff --git a/apps/sim/app/api/knowledge/[id]/documents/upsert/route.ts b/apps/sim/app/api/knowledge/[id]/documents/upsert/route.ts index 8d5ee153918..38b735dd090 100644 --- a/apps/sim/app/api/knowledge/[id]/documents/upsert/route.ts +++ b/apps/sim/app/api/knowledge/[id]/documents/upsert/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { document } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createDocumentRecords, deleteDocument, diff --git a/apps/sim/app/api/knowledge/[id]/next-available-slot/route.ts b/apps/sim/app/api/knowledge/[id]/next-available-slot/route.ts index a2e5572f8bc..77ddad14d4d 100644 --- a/apps/sim/app/api/knowledge/[id]/next-available-slot/route.ts +++ b/apps/sim/app/api/knowledge/[id]/next-available-slot/route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { getNextAvailableSlot, getTagDefinitions } from '@/lib/knowledge/tags/service' import { checkKnowledgeBaseAccess } from '@/app/api/knowledge/utils' diff --git a/apps/sim/app/api/knowledge/[id]/route.test.ts b/apps/sim/app/api/knowledge/[id]/route.test.ts index 7ae829211d5..879b649f68a 100644 --- a/apps/sim/app/api/knowledge/[id]/route.test.ts +++ b/apps/sim/app/api/knowledge/[id]/route.test.ts @@ -3,11 +3,17 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createMockRequest, + knowledgeApiUtilsMock, + schemaMock, +} from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDbChain } = vi.hoisted(() => { - const mockGetSession = vi.fn() +const { mockDbChain } = vi.hoisted(() => { const mockDbChain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -16,85 +22,16 @@ const { mockGetSession, mockDbChain } = vi.hoisted(() => { update: vi.fn().mockReturnThis(), set: vi.fn().mockReturnThis(), } - return { mockGetSession, mockDbChain } + return { mockDbChain } }) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@/lib/audit/log', () => auditMock) @@ -108,10 +45,7 @@ vi.mock('@/lib/knowledge/service', async (importOriginal) => { } }) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: vi.fn(), - checkKnowledgeBaseWriteAccess: vi.fn(), -})) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) import { deleteKnowledgeBase, @@ -162,7 +96,9 @@ describe('Knowledge Base By ID API Route', () => { const mockParams = Promise.resolve({ id: 'kb-123' }) it('should retrieve knowledge base successfully for authenticated user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValueOnce({ hasAccess: true, @@ -184,7 +120,7 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('GET') const response = await GET(req, { params: mockParams }) @@ -195,7 +131,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return not found for non-existent knowledge base', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValueOnce({ hasAccess: false, @@ -211,7 +149,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return unauthorized for knowledge base owned by different user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValueOnce({ hasAccess: false, @@ -227,7 +167,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return not found when service returns null', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockResolvedValueOnce({ hasAccess: true, @@ -245,7 +187,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should handle database errors', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseAccess).mockRejectedValueOnce(new Error('Database error')) @@ -266,7 +210,9 @@ describe('Knowledge Base By ID API Route', () => { } it('should update knowledge base successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -299,7 +245,7 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('PUT', validUpdateData) const response = await PUT(req, { params: mockParams }) @@ -310,7 +256,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return not found for non-existent knowledge base', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -328,7 +276,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should validate update data', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -351,7 +301,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should handle database errors during update', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValueOnce({ hasAccess: true, @@ -373,7 +325,9 @@ describe('Knowledge Base By ID API Route', () => { const mockParams = Promise.resolve({ id: 'kb-123' }) it('should delete knowledge base successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -396,7 +350,7 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('DELETE') const response = await DELETE(req, { params: mockParams }) @@ -407,7 +361,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return not found for non-existent knowledge base', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -425,7 +381,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should return unauthorized for knowledge base owned by different user', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) resetMocks() @@ -443,7 +401,9 @@ describe('Knowledge Base By ID API Route', () => { }) it('should handle database errors during delete', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) vi.mocked(checkKnowledgeBaseWriteAccess).mockResolvedValueOnce({ hasAccess: true, diff --git a/apps/sim/app/api/knowledge/[id]/tag-definitions/[tagId]/route.ts b/apps/sim/app/api/knowledge/[id]/tag-definitions/[tagId]/route.ts index bb6f8d9b46e..c78bc753513 100644 --- a/apps/sim/app/api/knowledge/[id]/tag-definitions/[tagId]/route.ts +++ b/apps/sim/app/api/knowledge/[id]/tag-definitions/[tagId]/route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { deleteTagDefinition } from '@/lib/knowledge/tags/service' import { checkKnowledgeBaseWriteAccess } from '@/app/api/knowledge/utils' diff --git a/apps/sim/app/api/knowledge/[id]/tag-definitions/route.ts b/apps/sim/app/api/knowledge/[id]/tag-definitions/route.ts index 57ad6c9fb2f..69ce37b7ad5 100644 --- a/apps/sim/app/api/knowledge/[id]/tag-definitions/route.ts +++ b/apps/sim/app/api/knowledge/[id]/tag-definitions/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuthType, checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { SUPPORTED_FIELD_TYPES } from '@/lib/knowledge/constants' import { createTagDefinition, getTagDefinitions } from '@/lib/knowledge/tags/service' import { checkKnowledgeBaseWriteAccess } from '@/app/api/knowledge/utils' diff --git a/apps/sim/app/api/knowledge/[id]/tag-usage/route.ts b/apps/sim/app/api/knowledge/[id]/tag-usage/route.ts index 3ba49402445..03517068dc9 100644 --- a/apps/sim/app/api/knowledge/[id]/tag-usage/route.ts +++ b/apps/sim/app/api/knowledge/[id]/tag-usage/route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { getTagUsage } from '@/lib/knowledge/tags/service' import { checkKnowledgeBaseAccess } from '@/app/api/knowledge/utils' diff --git a/apps/sim/app/api/knowledge/route.test.ts b/apps/sim/app/api/knowledge/route.test.ts index 362047b646b..47969406ac1 100644 --- a/apps/sim/app/api/knowledge/route.test.ts +++ b/apps/sim/app/api/knowledge/route.test.ts @@ -3,11 +3,10 @@ * * @vitest-environment node */ -import { auditMock, createMockRequest } from '@sim/testing' +import { auditMock, authMock, authMockFns, createMockRequest, schemaMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockDbChain } = vi.hoisted(() => { - const mockGetSession = vi.fn() +const { mockDbChain } = vi.hoisted(() => { const mockDbChain = { select: vi.fn().mockReturnThis(), from: vi.fn().mockReturnThis(), @@ -19,85 +18,16 @@ const { mockGetSession, mockDbChain } = vi.hoisted(() => { insert: vi.fn().mockReturnThis(), values: vi.fn().mockResolvedValue(undefined), } - return { mockGetSession, mockDbChain } + return { mockDbChain } }) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@/lib/audit/log', () => auditMock) @@ -131,7 +61,7 @@ describe('Knowledge Base API Route', () => { describe('GET /api/knowledge', () => { it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('GET') const response = await GET(req) @@ -142,7 +72,9 @@ describe('Knowledge Base API Route', () => { }) it('should handle database errors', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockDbChain.orderBy.mockRejectedValue(new Error('Database error')) const req = createMockRequest('GET') @@ -167,7 +99,9 @@ describe('Knowledge Base API Route', () => { } it('should create knowledge base successfully', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const req = createMockRequest('POST', validKnowledgeBaseData) const response = await POST(req) @@ -181,7 +115,7 @@ describe('Knowledge Base API Route', () => { }) it('should return unauthorized for unauthenticated user', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('POST', validKnowledgeBaseData) const response = await POST(req) @@ -192,7 +126,9 @@ describe('Knowledge Base API Route', () => { }) it('should validate required fields', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const req = createMockRequest('POST', { description: 'Missing name' }) const response = await POST(req) @@ -204,7 +140,9 @@ describe('Knowledge Base API Route', () => { }) it('should require workspaceId', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const req = createMockRequest('POST', { name: 'Test KB' }) const response = await POST(req) @@ -216,7 +154,9 @@ describe('Knowledge Base API Route', () => { }) it('should validate chunking config constraints', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const invalidData = { name: 'Test KB', @@ -237,7 +177,9 @@ describe('Knowledge Base API Route', () => { }) it('should use default values for optional fields', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) const minimalData = { name: 'Test KB', workspaceId: 'test-workspace-id' } const req = createMockRequest('POST', minimalData) @@ -255,7 +197,9 @@ describe('Knowledge Base API Route', () => { }) it('should handle database errors during creation', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123', email: 'test@example.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'user-123', email: 'test@example.com' }, + }) mockDbChain.values.mockRejectedValue(new Error('Database error')) const req = createMockRequest('POST', validKnowledgeBaseData) diff --git a/apps/sim/app/api/knowledge/search/route.test.ts b/apps/sim/app/api/knowledge/search/route.test.ts index 30027bca10b..313d57e1535 100644 --- a/apps/sim/app/api/knowledge/search/route.test.ts +++ b/apps/sim/app/api/knowledge/search/route.test.ts @@ -5,14 +5,22 @@ * * @vitest-environment node */ -import { createEnvMock, createMockRequest, requestUtilsMock } from '@sim/testing' +import { + createEnvMock, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + knowledgeApiUtilsMock, + knowledgeApiUtilsMockFns, + requestUtilsMock, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { mockDbChain, - mockCheckSessionOrInternalAuth, - mockAuthorizeWorkflowByWorkspacePermission, - mockCheckKnowledgeBaseAccess, mockGetDocumentTagDefinitions, mockHandleTagOnlySearch, mockHandleVectorOnlySearch, @@ -32,9 +40,6 @@ const { groupBy: vi.fn().mockReturnThis(), having: vi.fn().mockReturnThis(), }, - mockCheckSessionOrInternalAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), - mockCheckKnowledgeBaseAccess: vi.fn(), mockGetDocumentTagDefinitions: vi.fn(), mockHandleTagOnlySearch: vi.fn(), mockHandleVectorOnlySearch: vi.fn(), @@ -44,6 +49,8 @@ const { mockGetDocumentNamesByIds: vi.fn(), })) +const mockCheckKnowledgeBaseAccess = knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess + vi.mock('drizzle-orm', () => ({ and: vi.fn().mockImplementation((...args) => ({ and: args })), eq: vi.fn().mockImplementation((a, b) => ({ eq: [a, b] })), @@ -56,87 +63,15 @@ vi.mock('drizzle-orm', () => ({ })), })) -vi.mock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/lib/core/config/env', () => createEnvMock({ OPENAI_API_KEY: 'test-api-key' })) @@ -163,9 +98,7 @@ vi.mock('@/providers/utils', () => ({ }), })) -vi.mock('@/app/api/knowledge/utils', () => ({ - checkKnowledgeBaseAccess: mockCheckKnowledgeBaseAccess, -})) +vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) vi.mock('@/lib/knowledge/tags/service', () => ({ getDocumentTagDefinitions: mockGetDocumentTagDefinitions, @@ -240,12 +173,12 @@ describe('Knowledge Search API Route', () => { doc2: 'Document 2', }) mockGetDocumentTagDefinitions.mockClear() - mockCheckSessionOrInternalAuth.mockClear().mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockClear().mockResolvedValue({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockClear().mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockClear().mockResolvedValue({ allowed: true, status: 200, }) @@ -400,15 +333,17 @@ describe('Knowledge Search API Route', () => { expect(response.status).toBe(200) expect(data.success).toBe(true) - expect(mockAuthorizeWorkflowByWorkspacePermission).toHaveBeenCalledWith({ - workflowId: 'workflow-123', - userId: 'user-123', - action: 'read', - }) + expect(workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission).toHaveBeenCalledWith( + { + workflowId: 'workflow-123', + userId: 'user-123', + action: 'read', + } + ) }) it.concurrent('should return unauthorized for unauthenticated request', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized', }) @@ -427,7 +362,7 @@ describe('Knowledge Search API Route', () => { workflowId: 'nonexistent-workflow', } - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 404, message: 'Workflow not found', diff --git a/apps/sim/app/api/knowledge/search/utils.test.ts b/apps/sim/app/api/knowledge/search/utils.test.ts index ccbdfdb8dde..9fd4fa34538 100644 --- a/apps/sim/app/api/knowledge/search/utils.test.ts +++ b/apps/sim/app/api/knowledge/search/utils.test.ts @@ -4,13 +4,11 @@ * * @vitest-environment node */ -import { createEnvMock, databaseMock, loggerMock } from '@sim/testing' +import { createEnvMock } from '@sim/testing' import { mockNextFetchResponse } from '@sim/testing/mocks' import { beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('drizzle-orm') -vi.mock('@sim/logger', () => loggerMock) -vi.mock('@sim/db', () => databaseMock) vi.mock('@/lib/knowledge/documents/utils', () => ({ retryWithExponentialBackoff: (fn: any) => fn(), })) diff --git a/apps/sim/app/api/mcp/copilot/route.ts b/apps/sim/app/api/mcp/copilot/route.ts index 422bee8e780..77235c3ff55 100644 --- a/apps/sim/app/api/mcp/copilot/route.ts +++ b/apps/sim/app/api/mcp/copilot/route.ts @@ -13,6 +13,8 @@ import { import { db } from '@sim/db' import { userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { validateOAuthAccessToken } from '@/lib/auth/oauth-token' @@ -26,9 +28,7 @@ import { prepareExecutionContext } from '@/lib/copilot/tools/handlers/context' import { DIRECT_TOOL_DEFS, SUBAGENT_TOOL_DEFS } from '@/lib/copilot/tools/mcp/definitions' import { env } from '@/lib/core/config/env' import { RateLimiter } from '@/lib/core/rate-limiter' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { authorizeWorkflowByWorkspacePermission, resolveWorkflowIdForUser, diff --git a/apps/sim/app/api/mcp/events/route.test.ts b/apps/sim/app/api/mcp/events/route.test.ts index ca9be354ce7..4d1c0b2638d 100644 --- a/apps/sim/app/api/mcp/events/route.test.ts +++ b/apps/sim/app/api/mcp/events/route.test.ts @@ -3,26 +3,25 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + authMock, + authMockFns, + createMockRequest, + permissionsMock, + permissionsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockGetUserEntityPermissions } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), -})) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: mockGetUserEntityPermissions, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@/lib/events/sse-endpoint', () => ({ createWorkspaceSSE: (_config: any) => { return async (request: any) => { - const session = await mockGetSession() + const session = await authMockFns.mockGetSession() if (!session?.user?.id) { return new Response('Unauthorized', { status: 401 }) } @@ -72,7 +71,7 @@ describe('MCP Events SSE Endpoint', () => { }) it('returns 401 when session is missing', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = createMockRequest( 'GET', @@ -89,7 +88,7 @@ describe('MCP Events SSE Endpoint', () => { }) it('returns 400 when workspaceId is missing', async () => { - mockGetSession.mockResolvedValue({ user: defaultMockUser }) + authMockFns.mockGetSession.mockResolvedValue({ user: defaultMockUser }) const request = createMockRequest('GET', undefined, {}, 'http://localhost:3000/api/mcp/events') @@ -101,7 +100,7 @@ describe('MCP Events SSE Endpoint', () => { }) it('returns 403 when user lacks workspace access', async () => { - mockGetSession.mockResolvedValue({ user: defaultMockUser }) + authMockFns.mockGetSession.mockResolvedValue({ user: defaultMockUser }) mockGetUserEntityPermissions.mockResolvedValue(null) const request = createMockRequest( @@ -120,7 +119,7 @@ describe('MCP Events SSE Endpoint', () => { }) it('returns SSE stream when authorized', async () => { - mockGetSession.mockResolvedValue({ user: defaultMockUser }) + authMockFns.mockGetSession.mockResolvedValue({ user: defaultMockUser }) mockGetUserEntityPermissions.mockResolvedValue({ read: true }) const request = createMockRequest( diff --git a/apps/sim/app/api/mcp/serve/[serverId]/route.test.ts b/apps/sim/app/api/mcp/serve/[serverId]/route.test.ts index 6113799bda7..bc45762809c 100644 --- a/apps/sim/app/api/mcp/serve/[serverId]/route.test.ts +++ b/apps/sim/app/api/mcp/serve/[serverId]/route.test.ts @@ -3,12 +3,17 @@ * * @vitest-environment node */ +import { + hybridAuthMock, + hybridAuthMockFns, + permissionsMock, + permissionsMockFns, + schemaMock, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { - mockCheckHybridAuth, - mockGetUserEntityPermissions, mockGenerateInternalToken, mockDbSelect, mockDbFrom, @@ -17,8 +22,6 @@ const { mockDbLimit, fetchMock, } = vi.hoisted(() => ({ - mockCheckHybridAuth: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), mockGenerateInternalToken: vi.fn(), mockDbSelect: vi.fn(), mockDbFrom: vi.fn(), @@ -28,6 +31,8 @@ const { fetchMock: vi.fn(), })) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + vi.mock('drizzle-orm', () => ({ and: vi.fn(), eq: vi.fn(), @@ -40,44 +45,11 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - workflowMcpServer: { - id: 'id', - name: 'name', - workspaceId: 'workspaceId', - isPublic: 'isPublic', - createdBy: 'createdBy', - deletedAt: 'deletedAt', - }, - workflowMcpTool: { - serverId: 'serverId', - toolName: 'toolName', - toolDescription: 'toolDescription', - parameterSchema: 'parameterSchema', - workflowId: 'workflowId', - archivedAt: 'archivedAt', - }, - workflow: { - id: 'id', - isDeployed: 'isDeployed', - archivedAt: 'archivedAt', - }, - workspace: { - id: 'id', - archivedAt: 'archivedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: mockCheckHybridAuth, - checkSessionOrInternalAuth: vi.fn(), - checkInternalAuth: vi.fn(), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: mockGetUserEntityPermissions, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@/lib/auth/internal', () => ({ generateInternalToken: mockGenerateInternalToken, @@ -120,7 +92,10 @@ describe('MCP Serve Route', () => { createdBy: 'owner-1', }, ]) - mockCheckHybridAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized' }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValueOnce({ + success: false, + error: 'Unauthorized', + }) const req = new NextRequest('http://localhost:3000/api/mcp/serve/server-1', { method: 'POST', @@ -141,7 +116,10 @@ describe('MCP Serve Route', () => { createdBy: 'owner-1', }, ]) - mockCheckHybridAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized' }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValueOnce({ + success: false, + error: 'Unauthorized', + }) const req = new NextRequest('http://localhost:3000/api/mcp/serve/server-1') const response = await GET(req, { params: Promise.resolve({ serverId: 'server-1' }) }) @@ -163,7 +141,7 @@ describe('MCP Serve Route', () => { .mockResolvedValueOnce([{ toolName: 'tool_a', workflowId: 'wf-1' }]) .mockResolvedValueOnce([{ isDeployed: true }]) - mockCheckHybridAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'api_key', @@ -212,7 +190,7 @@ describe('MCP Serve Route', () => { .mockResolvedValueOnce([{ toolName: 'tool_a', workflowId: 'wf-1' }]) .mockResolvedValueOnce([{ isDeployed: true }]) - mockCheckHybridAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'session', diff --git a/apps/sim/app/api/mcp/servers/[id]/refresh/route.ts b/apps/sim/app/api/mcp/servers/[id]/refresh/route.ts index 7ddc8019d0e..002cd96764e 100644 --- a/apps/sim/app/api/mcp/servers/[id]/refresh/route.ts +++ b/apps/sim/app/api/mcp/servers/[id]/refresh/route.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { mcpServers, workflow, workflowBlocks } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' import { withMcpAuth } from '@/lib/mcp/middleware' import { mcpService } from '@/lib/mcp/service' import type { McpServerStatusConfig, McpTool, McpToolSchema } from '@/lib/mcp/types' diff --git a/apps/sim/app/api/mcp/servers/[id]/route.ts b/apps/sim/app/api/mcp/servers/[id]/route.ts index 93c4b3aca20..b13a1897855 100644 --- a/apps/sim/app/api/mcp/servers/[id]/route.ts +++ b/apps/sim/app/api/mcp/servers/[id]/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { mcpServers } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' import { McpDnsResolutionError, McpDomainNotAllowedError, diff --git a/apps/sim/app/api/mcp/servers/route.ts b/apps/sim/app/api/mcp/servers/route.ts index b6ea4988035..13fb23a6702 100644 --- a/apps/sim/app/api/mcp/servers/route.ts +++ b/apps/sim/app/api/mcp/servers/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { mcpServers } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { McpDnsResolutionError, McpDomainNotAllowedError, diff --git a/apps/sim/app/api/mcp/servers/test-connection/route.ts b/apps/sim/app/api/mcp/servers/test-connection/route.ts index 2b4297d37ff..648730f0f4f 100644 --- a/apps/sim/app/api/mcp/servers/test-connection/route.ts +++ b/apps/sim/app/api/mcp/servers/test-connection/route.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { NextRequest } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' import { McpClient } from '@/lib/mcp/client' import { McpDnsResolutionError, diff --git a/apps/sim/app/api/mcp/tools/stored/route.ts b/apps/sim/app/api/mcp/tools/stored/route.ts index 8cb84a1362a..12792c8d5ff 100644 --- a/apps/sim/app/api/mcp/tools/stored/route.ts +++ b/apps/sim/app/api/mcp/tools/stored/route.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { workflow, workflowBlocks } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import type { NextRequest } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' import { withMcpAuth } from '@/lib/mcp/middleware' import type { McpToolSchema, StoredMcpTool } from '@/lib/mcp/types' import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' diff --git a/apps/sim/app/api/mcp/workflow-servers/[id]/route.ts b/apps/sim/app/api/mcp/workflow-servers/[id]/route.ts index 57c1330a452..49699160995 100644 --- a/apps/sim/app/api/mcp/workflow-servers/[id]/route.ts +++ b/apps/sim/app/api/mcp/workflow-servers/[id]/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { workflowMcpServer, workflowMcpTool } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' import { getParsedBody, withMcpAuth } from '@/lib/mcp/middleware' import { mcpPubSub } from '@/lib/mcp/pubsub' import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' diff --git a/apps/sim/app/api/mcp/workflow-servers/[id]/tools/[toolId]/route.ts b/apps/sim/app/api/mcp/workflow-servers/[id]/tools/[toolId]/route.ts index 9d157b6a13c..e45ff5dc0dd 100644 --- a/apps/sim/app/api/mcp/workflow-servers/[id]/tools/[toolId]/route.ts +++ b/apps/sim/app/api/mcp/workflow-servers/[id]/tools/[toolId]/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { workflowMcpServer, workflowMcpTool } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' import { getParsedBody, withMcpAuth } from '@/lib/mcp/middleware' import { mcpPubSub } from '@/lib/mcp/pubsub' import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' diff --git a/apps/sim/app/api/mcp/workflow-servers/[id]/tools/route.ts b/apps/sim/app/api/mcp/workflow-servers/[id]/tools/route.ts index 0e4e9608fda..783e05655de 100644 --- a/apps/sim/app/api/mcp/workflow-servers/[id]/tools/route.ts +++ b/apps/sim/app/api/mcp/workflow-servers/[id]/tools/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { workflow, workflowMcpServer, workflowMcpTool } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getParsedBody, withMcpAuth } from '@/lib/mcp/middleware' import { mcpPubSub } from '@/lib/mcp/pubsub' import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' diff --git a/apps/sim/app/api/mcp/workflow-servers/route.ts b/apps/sim/app/api/mcp/workflow-servers/route.ts index 27a0032cd2f..089d2f9b713 100644 --- a/apps/sim/app/api/mcp/workflow-servers/route.ts +++ b/apps/sim/app/api/mcp/workflow-servers/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { workflow, workflowMcpServer, workflowMcpTool } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull, sql } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getParsedBody, withMcpAuth } from '@/lib/mcp/middleware' import { mcpPubSub } from '@/lib/mcp/pubsub' import { createMcpErrorResponse, createMcpSuccessResponse } from '@/lib/mcp/utils' diff --git a/apps/sim/app/api/memory/route.ts b/apps/sim/app/api/memory/route.ts index 82ffffe6963..64bceae92b2 100644 --- a/apps/sim/app/api/memory/route.ts +++ b/apps/sim/app/api/memory/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { memory } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, like } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { checkWorkspaceAccess } from '@/lib/workspaces/permissions/utils' const logger = createLogger('MemoryAPI') diff --git a/apps/sim/app/api/mothership/chats/[chatId]/route.ts b/apps/sim/app/api/mothership/chats/[chatId]/route.ts index 6be661ac09a..91704f28fed 100644 --- a/apps/sim/app/api/mothership/chats/[chatId]/route.ts +++ b/apps/sim/app/api/mothership/chats/[chatId]/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -19,7 +20,6 @@ import { readEvents } from '@/lib/copilot/request/session/buffer' import { readFilePreviewSessions } from '@/lib/copilot/request/session/file-preview-session' import { type StreamBatchEvent, toStreamBatchEvent } from '@/lib/copilot/request/session/types' import { taskPubSub } from '@/lib/copilot/tasks' -import { toError } from '@/lib/core/utils/helpers' import { captureServerEvent } from '@/lib/posthog/server' const logger = createLogger('MothershipChatAPI') diff --git a/apps/sim/app/api/mothership/execute/route.ts b/apps/sim/app/api/mothership/execute/route.ts index 3337838ce1e..25c4618dbf6 100644 --- a/apps/sim/app/api/mothership/execute/route.ts +++ b/apps/sim/app/api/mothership/execute/route.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' @@ -6,8 +8,6 @@ import { buildIntegrationToolSchemas } from '@/lib/copilot/chat/payload' import { generateWorkspaceContext } from '@/lib/copilot/chat/workspace-context' import { runHeadlessCopilotLifecycle } from '@/lib/copilot/request/lifecycle/headless' import { requestExplicitStreamAbort } from '@/lib/copilot/request/session/explicit-abort' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { assertActiveWorkspaceAccess, getUserEntityPermissions, diff --git a/apps/sim/app/api/notifications/poll/route.ts b/apps/sim/app/api/notifications/poll/route.ts index 010f9ccffcc..200b541ff69 100644 --- a/apps/sim/app/api/notifications/poll/route.ts +++ b/apps/sim/app/api/notifications/poll/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { verifyCronAuth } from '@/lib/auth/internal' import { acquireLock, releaseLock } from '@/lib/core/config/redis' -import { generateShortId } from '@/lib/core/utils/uuid' import { pollInactivityAlerts } from '@/lib/notifications/inactivity-polling' const logger = createLogger('InactivityAlertPoll') diff --git a/apps/sim/app/api/organizations/[id]/invitations/[invitationId]/route.ts b/apps/sim/app/api/organizations/[id]/invitations/[invitationId]/route.ts index 269efb6a32c..51ce6ac9099 100644 --- a/apps/sim/app/api/organizations/[id]/invitations/[invitationId]/route.ts +++ b/apps/sim/app/api/organizations/[id]/invitations/[invitationId]/route.ts @@ -14,6 +14,7 @@ import { workspaceInvitation, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -27,7 +28,6 @@ import { ENTITLED_SUBSCRIPTION_STATUSES } from '@/lib/billing/subscriptions/util import { OUTBOX_EVENT_TYPES } from '@/lib/billing/webhooks/outbox-handlers' import { enqueueOutboxEvent } from '@/lib/core/outbox/service' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { syncWorkspaceEnvCredentials } from '@/lib/credentials/environment' import { sendEmail } from '@/lib/messaging/email/mailer' diff --git a/apps/sim/app/api/organizations/[id]/invitations/route.ts b/apps/sim/app/api/organizations/[id]/invitations/route.ts index 5a85cfbb4f0..1ecb244d291 100644 --- a/apps/sim/app/api/organizations/[id]/invitations/route.ts +++ b/apps/sim/app/api/organizations/[id]/invitations/route.ts @@ -9,6 +9,7 @@ import { workspaceInvitation, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { @@ -23,7 +24,6 @@ import { validateSeatAvailability, } from '@/lib/billing/validation/seat-management' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { quickValidateEmail } from '@/lib/messaging/email/validation' import { hasWorkspaceAdminAccess } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/organizations/[id]/members/route.ts b/apps/sim/app/api/organizations/[id]/members/route.ts index ad4e4001c82..063699d12bc 100644 --- a/apps/sim/app/api/organizations/[id]/members/route.ts +++ b/apps/sim/app/api/organizations/[id]/members/route.ts @@ -8,6 +8,7 @@ import { userStats, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getEmailSubject, renderInvitationEmail } from '@/components/emails' @@ -16,7 +17,6 @@ import { getSession } from '@/lib/auth' import { ENTITLED_SUBSCRIPTION_STATUSES } from '@/lib/billing/subscriptions/utils' import { validateSeatAvailability } from '@/lib/billing/validation/seat-management' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { quickValidateEmail } from '@/lib/messaging/email/validation' diff --git a/apps/sim/app/api/permission-groups/[id]/members/bulk/route.ts b/apps/sim/app/api/permission-groups/[id]/members/bulk/route.ts index f0be70d26b3..8617746a553 100644 --- a/apps/sim/app/api/permission-groups/[id]/members/bulk/route.ts +++ b/apps/sim/app/api/permission-groups/[id]/members/bulk/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { member, permissionGroup, permissionGroupMember } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { hasAccessControlAccess } from '@/lib/billing' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('PermissionGroupBulkMembers') diff --git a/apps/sim/app/api/permission-groups/[id]/members/route.ts b/apps/sim/app/api/permission-groups/[id]/members/route.ts index 5b5fdc65df7..83cd4a0b17a 100644 --- a/apps/sim/app/api/permission-groups/[id]/members/route.ts +++ b/apps/sim/app/api/permission-groups/[id]/members/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { member, permissionGroup, permissionGroupMember, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { hasAccessControlAccess } from '@/lib/billing' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('PermissionGroupMembers') diff --git a/apps/sim/app/api/permission-groups/route.ts b/apps/sim/app/api/permission-groups/route.ts index dd5c09e5453..1d5e4d6a42c 100644 --- a/apps/sim/app/api/permission-groups/route.ts +++ b/apps/sim/app/api/permission-groups/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { member, organization, permissionGroup, permissionGroupMember, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, count, desc, eq } from 'drizzle-orm' import { NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { hasAccessControlAccess } from '@/lib/billing' -import { generateId } from '@/lib/core/utils/uuid' import { DEFAULT_PERMISSION_GROUP_CONFIG, type PermissionGroupConfig, diff --git a/apps/sim/app/api/providers/route.ts b/apps/sim/app/api/providers/route.ts index 417be50c89e..7e6522fee14 100644 --- a/apps/sim/app/api/providers/route.ts +++ b/apps/sim/app/api/providers/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { checkWorkspaceAccess } from '@/lib/workspaces/permissions/utils' import { diff --git a/apps/sim/app/api/resume/[workflowId]/[executionId]/[contextId]/route.ts b/apps/sim/app/api/resume/[workflowId]/[executionId]/[contextId]/route.ts index c97e5e5568b..4dc5af81f5f 100644 --- a/apps/sim/app/api/resume/[workflowId]/[executionId]/[contextId]/route.ts +++ b/apps/sim/app/api/resume/[workflowId]/[executionId]/[contextId]/route.ts @@ -1,12 +1,12 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { AuthType } from '@/lib/auth/hybrid' import { getJobQueue } from '@/lib/core/async-jobs' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { SSE_HEADERS } from '@/lib/core/utils/sse' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { setExecutionMeta } from '@/lib/execution/event-buffer' import { preprocessExecution } from '@/lib/execution/preprocessing' import { PauseResumeManager } from '@/lib/workflows/executor/human-in-the-loop-manager' diff --git a/apps/sim/app/api/schedules/[id]/route.test.ts b/apps/sim/app/api/schedules/[id]/route.test.ts index c970e41714e..68809d2e79d 100644 --- a/apps/sim/app/api/schedules/[id]/route.test.ts +++ b/apps/sim/app/api/schedules/[id]/route.test.ts @@ -3,38 +3,24 @@ * * @vitest-environment node */ -import { auditMock, databaseMock, loggerMock, requestUtilsMock } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + databaseMock, + requestUtilsMock, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockAuthorizeWorkflowByWorkspacePermission } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), -})) - -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@sim/db', () => databaseMock) - -vi.mock('@sim/db/schema', () => ({ - workflow: { id: 'id', userId: 'userId', workspaceId: 'workspaceId' }, - workflowSchedule: { - id: 'id', - workflowId: 'workflowId', - status: 'status', - cronExpression: 'cronExpression', - timezone: 'timezone', - sourceType: 'sourceType', - sourceWorkspaceId: 'sourceWorkspaceId', - archivedAt: 'archivedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn(), @@ -44,8 +30,6 @@ vi.mock('drizzle-orm', () => ({ vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/audit/log', () => auditMock) import { PUT } from './route' @@ -85,8 +69,8 @@ function mockDbChain(selectResults: unknown[][]) { describe('Schedule PUT API (Reactivate)', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true, status: 200, workflow: { id: 'wf-1', workspaceId: 'ws-1' }, @@ -100,7 +84,7 @@ describe('Schedule PUT API (Reactivate)', () => { describe('Authentication', () => { it('returns 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const res = await PUT(createRequest({ action: 'reactivate' }), createParams('sched-1')) @@ -150,7 +134,7 @@ describe('Schedule PUT API (Reactivate)', () => { }) it('returns 404 when workflow does not exist for schedule', async () => { - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, status: 404, workflow: null, @@ -169,7 +153,7 @@ describe('Schedule PUT API (Reactivate)', () => { describe('Authorization', () => { it('returns 403 when user is not workflow owner', async () => { - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, status: 403, workflow: { id: 'wf-1', workspaceId: null }, @@ -190,7 +174,7 @@ describe('Schedule PUT API (Reactivate)', () => { }) it('returns 403 for workspace member with only read permission', async () => { - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, status: 403, workflow: { id: 'wf-1', workspaceId: 'ws-1' }, diff --git a/apps/sim/app/api/schedules/execute/route.test.ts b/apps/sim/app/api/schedules/execute/route.test.ts index aa1fba6d7b6..d2531cf76b8 100644 --- a/apps/sim/app/api/schedules/execute/route.test.ts +++ b/apps/sim/app/api/schedules/execute/route.test.ts @@ -3,6 +3,7 @@ * * @vitest-environment node */ +import { workflowsUtilsMock, workflowsUtilsMockFns } from '@sim/testing' import type { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' @@ -72,12 +73,7 @@ vi.mock('@/lib/core/async-jobs', () => ({ shouldExecuteInline: vi.fn().mockReturnValue(false), })) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: vi.fn().mockResolvedValue({ - id: 'workflow-1', - workspaceId: 'workspace-1', - }), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...conditions: unknown[]) => ({ type: 'and', conditions })), @@ -120,7 +116,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'schedule-execution-1'), generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -184,6 +180,10 @@ function createMockRequest(): NextRequest { describe('Scheduled Workflow Execution API Route', () => { beforeEach(() => { vi.clearAllMocks() + workflowsUtilsMockFns.mockGetWorkflowById.mockResolvedValue({ + id: 'workflow-1', + workspaceId: 'workspace-1', + }) mockFeatureFlags.isTriggerDevEnabled = false mockFeatureFlags.isHosted = false mockFeatureFlags.isProd = false diff --git a/apps/sim/app/api/schedules/execute/route.ts b/apps/sim/app/api/schedules/execute/route.ts index 719f47df52e..d4c17f95a62 100644 --- a/apps/sim/app/api/schedules/execute/route.ts +++ b/apps/sim/app/api/schedules/execute/route.ts @@ -1,12 +1,12 @@ import { db, workflowDeploymentVersion, workflowSchedule } from '@sim/db' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, lt, lte, ne, not, or, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { verifyCronAuth } from '@/lib/auth/internal' import { getJobQueue, shouldExecuteInline } from '@/lib/core/async-jobs' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { executeJobInline, executeScheduleJob, diff --git a/apps/sim/app/api/schedules/route.test.ts b/apps/sim/app/api/schedules/route.test.ts index 434bc2fa8d0..046beb3205b 100644 --- a/apps/sim/app/api/schedules/route.test.ts +++ b/apps/sim/app/api/schedules/route.test.ts @@ -3,38 +3,23 @@ * * @vitest-environment node */ -import { databaseMock, loggerMock, requestUtilsMock } from '@sim/testing' +import { + authMock, + authMockFns, + databaseMock, + requestUtilsMock, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockAuthorizeWorkflowByWorkspacePermission } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), -})) - -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@sim/db', () => databaseMock) - -vi.mock('@sim/db/schema', () => ({ - workflow: { id: 'id', userId: 'userId', workspaceId: 'workspaceId' }, - workflowSchedule: { - workflowId: 'workflowId', - blockId: 'blockId', - deploymentVersionId: 'deploymentVersionId', - }, - workflowDeploymentVersion: { - id: 'id', - workflowId: 'workflowId', - isActive: 'isActive', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn(), @@ -45,8 +30,6 @@ vi.mock('drizzle-orm', () => ({ vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@sim/logger', () => loggerMock) - import { GET } from '@/app/api/schedules/route' function createRequest(url: string): NextRequest { @@ -74,8 +57,8 @@ function mockDbChain(results: any[]) { describe('Schedule GET API', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true, status: 200, workflow: { id: 'wf-1', workspaceId: 'ws-1' }, @@ -120,7 +103,7 @@ describe('Schedule GET API', () => { }) it('requires authentication', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const res = await GET(createRequest('http://test/api/schedules?workflowId=wf-1')) @@ -134,7 +117,7 @@ describe('Schedule GET API', () => { }) it('returns 404 for non-existent workflow', async () => { - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, status: 404, message: 'Workflow not found', @@ -149,7 +132,7 @@ describe('Schedule GET API', () => { }) it('denies access for unauthorized user', async () => { - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, status: 403, message: 'Unauthorized: Access denied to read this workflow', diff --git a/apps/sim/app/api/schedules/route.ts b/apps/sim/app/api/schedules/route.ts index a2f14f109a8..2f12c23863c 100644 --- a/apps/sim/app/api/schedules/route.ts +++ b/apps/sim/app/api/schedules/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { workflow, workflowDeploymentVersion, workflowSchedule } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { validateCronExpression } from '@/lib/workflows/schedules/utils' import { authorizeWorkflowByWorkspacePermission } from '@/lib/workflows/utils' diff --git a/apps/sim/app/api/stars/route.ts b/apps/sim/app/api/stars/route.ts index 97106b13842..9f10c5db9f6 100644 --- a/apps/sim/app/api/stars/route.ts +++ b/apps/sim/app/api/stars/route.ts @@ -1,6 +1,9 @@ +import { createLogger } from '@sim/logger' import { NextResponse } from 'next/server' import { env } from '@/lib/core/config/env' +const logger = createLogger('StarsRoute') + function formatStarCount(num: number): string { if (num < 1000) return String(num) const formatted = (Math.round(num / 100) / 10).toFixed(1) @@ -22,14 +25,14 @@ export async function GET() { }) if (!response.ok) { - console.warn('GitHub API request failed:', response.status) + logger.warn('GitHub API request failed:', response.status) return NextResponse.json({ stars: formatStarCount(19400) }) } const data = await response.json() return NextResponse.json({ stars: formatStarCount(Number(data?.stargazers_count ?? 19400)) }) } catch (error) { - console.warn('Error fetching GitHub stars:', error) + logger.warn('Error fetching GitHub stars:', error) return NextResponse.json({ stars: formatStarCount(19400) }) } } diff --git a/apps/sim/app/api/superuser/import-workflow/route.ts b/apps/sim/app/api/superuser/import-workflow/route.ts index 960723d31ed..cbdb7e7d2cd 100644 --- a/apps/sim/app/api/superuser/import-workflow/route.ts +++ b/apps/sim/app/api/superuser/import-workflow/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { copilotChats, workflow, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { verifyEffectiveSuperUser } from '@/lib/templates/permissions' import { parseWorkflowJson } from '@/lib/workflows/operations/import-export' import { diff --git a/apps/sim/app/api/table/[tableId]/import-csv/route.test.ts b/apps/sim/app/api/table/[tableId]/import-csv/route.test.ts index 9e2f31edc9a..522c508e4e6 100644 --- a/apps/sim/app/api/table/[tableId]/import-csv/route.test.ts +++ b/apps/sim/app/api/table/[tableId]/import-csv/route.test.ts @@ -1,32 +1,22 @@ /** * @vitest-environment node */ +import { hybridAuthMock, hybridAuthMockFns, requestUtilsMock } from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { TableDefinition } from '@/lib/table' -const { - mockCheckSessionOrInternalAuth, - mockCheckAccess, - mockBatchInsertRows, - mockReplaceTableRows, -} = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), +const { mockCheckAccess, mockBatchInsertRows, mockReplaceTableRows } = vi.hoisted(() => ({ mockCheckAccess: vi.fn(), mockBatchInsertRows: vi.fn(), mockReplaceTableRows: vi.fn(), })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('req-test-123'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn().mockReturnValue('deadbeefcafef00d'), generateShortId: vi.fn().mockReturnValue('short-id'), })) @@ -118,7 +108,7 @@ async function callPost(form: FormData, { tableId }: { tableId: string } = { tab describe('POST /api/table/[tableId]/import-csv', () => { beforeEach(() => { vi.clearAllMocks() - mockCheckSessionOrInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-1', authType: 'session', @@ -131,7 +121,7 @@ describe('POST /api/table/[tableId]/import-csv', () => { }) it('returns 401 when the user is not authenticated', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Authentication required', }) diff --git a/apps/sim/app/api/table/[tableId]/import-csv/route.ts b/apps/sim/app/api/table/[tableId]/import-csv/route.ts index 3ad21468fec..20ef2dac2c4 100644 --- a/apps/sim/app/api/table/[tableId]/import-csv/route.ts +++ b/apps/sim/app/api/table/[tableId]/import-csv/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { batchInsertRows, buildAutoMapping, diff --git a/apps/sim/app/api/table/[tableId]/rows/[rowId]/route.ts b/apps/sim/app/api/table/[tableId]/rows/[rowId]/route.ts index 66790f68af7..6ed71100944 100644 --- a/apps/sim/app/api/table/[tableId]/rows/[rowId]/route.ts +++ b/apps/sim/app/api/table/[tableId]/rows/[rowId]/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { RowData } from '@/lib/table' import { deleteRow, updateRow } from '@/lib/table' diff --git a/apps/sim/app/api/table/[tableId]/rows/route.ts b/apps/sim/app/api/table/[tableId]/rows/route.ts index 24def621927..762cc84ef7b 100644 --- a/apps/sim/app/api/table/[tableId]/rows/route.ts +++ b/apps/sim/app/api/table/[tableId]/rows/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { Filter, RowData, Sort, TableSchema } from '@/lib/table' import { diff --git a/apps/sim/app/api/table/[tableId]/rows/upsert/route.ts b/apps/sim/app/api/table/[tableId]/rows/upsert/route.ts index de510c7fdd9..174bb71cea7 100644 --- a/apps/sim/app/api/table/[tableId]/rows/upsert/route.ts +++ b/apps/sim/app/api/table/[tableId]/rows/upsert/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { RowData } from '@/lib/table' import { upsertRow } from '@/lib/table' diff --git a/apps/sim/app/api/table/import-csv/route.ts b/apps/sim/app/api/table/import-csv/route.ts index 0fe52910fbd..3539cdeafb9 100644 --- a/apps/sim/app/api/table/import-csv/route.ts +++ b/apps/sim/app/api/table/import-csv/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { batchInsertRows, CSV_MAX_BATCH_SIZE, diff --git a/apps/sim/app/api/templates/[id]/star/route.ts b/apps/sim/app/api/templates/[id]/star/route.ts index c57ba28eaf9..8cc52518da4 100644 --- a/apps/sim/app/api/templates/[id]/star/route.ts +++ b/apps/sim/app/api/templates/[id]/star/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { templateStars, templates } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('TemplateStarAPI') diff --git a/apps/sim/app/api/templates/[id]/use/route.ts b/apps/sim/app/api/templates/[id]/use/route.ts index a4c797381c1..d18187df7ee 100644 --- a/apps/sim/app/api/templates/[id]/use/route.ts +++ b/apps/sim/app/api/templates/[id]/use/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { templates, workflow, workflowDeploymentVersion } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' import { getInternalApiBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { canAccessTemplate, verifyTemplateOwnership } from '@/lib/templates/permissions' import { type RegenerateStateInput, diff --git a/apps/sim/app/api/templates/approved/sanitized/route.ts b/apps/sim/app/api/templates/approved/sanitized/route.ts index 6d481e8a704..67755e77c7f 100644 --- a/apps/sim/app/api/templates/approved/sanitized/route.ts +++ b/apps/sim/app/api/templates/approved/sanitized/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { templates } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalApiKey } from '@/lib/copilot/request/http' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { sanitizeForCopilot } from '@/lib/workflows/sanitization/json-sanitizer' diff --git a/apps/sim/app/api/templates/route.ts b/apps/sim/app/api/templates/route.ts index 0a9f9d02b72..a1b22b15de6 100644 --- a/apps/sim/app/api/templates/route.ts +++ b/apps/sim/app/api/templates/route.ts @@ -7,13 +7,13 @@ import { workflowDeploymentVersion, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, desc, eq, ilike, or, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { canAccessTemplate, verifyEffectiveSuperUser } from '@/lib/templates/permissions' import { extractRequiredCredentials, diff --git a/apps/sim/app/api/tools/a2a/send-message/route.ts b/apps/sim/app/api/tools/a2a/send-message/route.ts index 0f4fa0445e2..eb4bc5b056e 100644 --- a/apps/sim/app/api/tools/a2a/send-message/route.ts +++ b/apps/sim/app/api/tools/a2a/send-message/route.ts @@ -1,13 +1,13 @@ import type { DataPart, FilePart, Message, Part, Task, TextPart } from '@a2a-js/sdk' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { createA2AClient, extractTextContent, isTerminalState } from '@/lib/a2a/utils' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { validateUrlWithDNS } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/asana/create-task/route.ts b/apps/sim/app/api/tools/asana/create-task/route.ts index ddcdacdb5cc..4212cb2e547 100644 --- a/apps/sim/app/api/tools/asana/create-task/route.ts +++ b/apps/sim/app/api/tools/asana/create-task/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/asana/update-task/route.ts b/apps/sim/app/api/tools/asana/update-task/route.ts index 8831ed1d856..5d2b8a15b10 100644 --- a/apps/sim/app/api/tools/asana/update-task/route.ts +++ b/apps/sim/app/api/tools/asana/update-task/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/cloudwatch/utils.ts b/apps/sim/app/api/tools/cloudwatch/utils.ts index 4c074955298..5d4b4dd9a6a 100644 --- a/apps/sim/app/api/tools/cloudwatch/utils.ts +++ b/apps/sim/app/api/tools/cloudwatch/utils.ts @@ -5,8 +5,8 @@ import { GetQueryResultsCommand, type ResultField, } from '@aws-sdk/client-cloudwatch-logs' +import { sleep } from '@sim/utils/helpers' import { DEFAULT_EXECUTION_TIMEOUT_MS } from '@/lib/core/execution-limits' -import { sleep } from '@/lib/core/utils/helpers' interface AwsCredentials { region: string diff --git a/apps/sim/app/api/tools/crowdstrike/query/route.test.ts b/apps/sim/app/api/tools/crowdstrike/query/route.test.ts index 3e0b88d02de..a0d6269641b 100644 --- a/apps/sim/app/api/tools/crowdstrike/query/route.test.ts +++ b/apps/sim/app/api/tools/crowdstrike/query/route.test.ts @@ -1,18 +1,14 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { createMockRequest, hybridAuthMock, hybridAuthMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { fetchMock, mockCheckInternalAuth } = vi.hoisted(() => ({ +const { fetchMock } = vi.hoisted(() => ({ fetchMock: vi.fn(), - mockCheckInternalAuth: vi.fn(), })) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkInternalAuth: mockCheckInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) import { POST } from '@/app/api/tools/crowdstrike/query/route' @@ -72,7 +68,7 @@ describe('CrowdStrike query route', () => { vi.clearAllMocks() vi.stubGlobal('fetch', fetchMock) - mockCheckInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckInternalAuth.mockResolvedValue({ success: true, userId: 'user-123', authType: 'internal_jwt', diff --git a/apps/sim/app/api/tools/crowdstrike/query/route.ts b/apps/sim/app/api/tools/crowdstrike/query/route.ts index 63ad81e2899..19ee157f3b1 100644 --- a/apps/sim/app/api/tools/crowdstrike/query/route.ts +++ b/apps/sim/app/api/tools/crowdstrike/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import type { CrowdStrikeAggregateQuery, CrowdStrikeCloud, diff --git a/apps/sim/app/api/tools/custom/route.test.ts b/apps/sim/app/api/tools/custom/route.test.ts index 3781fc1c169..63769178a96 100644 --- a/apps/sim/app/api/tools/custom/route.test.ts +++ b/apps/sim/app/api/tools/custom/route.test.ts @@ -3,7 +3,19 @@ * * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + authMock, + authMockFns, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + permissionsMock, + permissionsMockFns, + requestUtilsMock, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' @@ -18,22 +30,8 @@ const { mockSet, mockDelete, mockLimit, - mockCheckSessionOrInternalAuth, - mockGetSession, - mockGetUserEntityPermissions, mockUpsertCustomTools, - mockAuthorizeWorkflowByWorkspacePermission, - mockLogger, } = vi.hoisted(() => { - const logger = { - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - trace: vi.fn(), - fatal: vi.fn(), - child: vi.fn(), - } return { mockSelect: vi.fn(), mockFrom: vi.fn(), @@ -45,15 +43,12 @@ const { mockSet: vi.fn(), mockDelete: vi.fn(), mockLimit: vi.fn(), - mockCheckSessionOrInternalAuth: vi.fn(), - mockGetSession: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), mockUpsertCustomTools: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), - mockLogger: logger, } }) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + const sampleTools = [ { id: 'tool-1', @@ -163,36 +158,13 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - customTools: { - id: 'id', - workspaceId: 'workspaceId', - userId: 'userId', - title: 'title', - }, - workflow: { - id: 'id', - workspaceId: 'workspaceId', - userId: 'userId', - }, -})) - -vi.mock('@/lib/auth', () => ({ - getSession: (...args: unknown[]) => mockGetSession(...args), -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: (...args: unknown[]) => mockCheckSessionOrInternalAuth(...args), -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: (...args: unknown[]) => mockGetUserEntityPermissions(...args), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue(mockLogger), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn().mockImplementation((field: unknown, value: unknown) => ({ @@ -217,18 +189,13 @@ vi.mock('drizzle-orm', () => ({ desc: vi.fn().mockImplementation((field: unknown) => ({ field, operator: 'desc' })), })) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('test-request-id'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) vi.mock('@/lib/workflows/custom-tools/operations', () => ({ upsertCustomTools: (...args: unknown[]) => mockUpsertCustomTools(...args), })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: (...args: unknown[]) => - mockAuthorizeWorkflowByWorkspacePermission(...args), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { DELETE, GET, POST } from '@/app/api/tools/custom/route' @@ -270,15 +237,15 @@ describe('Custom Tools API Routes', () => { mockSet.mockReturnValue({ where: mockWhere }) mockDelete.mockReturnValue({ where: mockWhere }) - mockGetSession.mockResolvedValue(mockSession) - mockCheckSessionOrInternalAuth.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue(mockSession) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-123', authType: 'session', }) mockGetUserEntityPermissions.mockResolvedValue('admin') mockUpsertCustomTools.mockResolvedValue(sampleTools) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true, status: 200, workflow: { workspaceId: 'workspace-123' }, @@ -316,7 +283,7 @@ describe('Custom Tools API Routes', () => { 'http://localhost:3000/api/tools/custom?workspaceId=workspace-123' ) - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized', }) @@ -346,7 +313,7 @@ describe('Custom Tools API Routes', () => { */ describe('POST /api/tools/custom', () => { it('should reject unauthorized requests', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized', }) @@ -421,7 +388,7 @@ describe('Custom Tools API Routes', () => { }) it('should prevent unauthorized deletion of user-scoped tool', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-456', authType: 'session', @@ -441,7 +408,7 @@ describe('Custom Tools API Routes', () => { }) it('should reject unauthorized requests', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Unauthorized', }) diff --git a/apps/sim/app/api/tools/dynamodb/introspect/route.ts b/apps/sim/app/api/tools/dynamodb/introspect/route.ts index bad2d517ca7..56fdea89898 100644 --- a/apps/sim/app/api/tools/dynamodb/introspect/route.ts +++ b/apps/sim/app/api/tools/dynamodb/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRawDynamoDBClient, describeTable, listTables } from '@/app/api/tools/dynamodb/utils' const logger = createLogger('DynamoDBIntrospectAPI') diff --git a/apps/sim/app/api/tools/iam/add-user-to-group/route.ts b/apps/sim/app/api/tools/iam/add-user-to-group/route.ts index 88dc2e67501..5f69ced16de 100644 --- a/apps/sim/app/api/tools/iam/add-user-to-group/route.ts +++ b/apps/sim/app/api/tools/iam/add-user-to-group/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { addUserToGroup, createIAMClient } from '../utils' const logger = createLogger('IAMAddUserToGroupAPI') diff --git a/apps/sim/app/api/tools/iam/attach-role-policy/route.ts b/apps/sim/app/api/tools/iam/attach-role-policy/route.ts index 0360769c098..010b64faf53 100644 --- a/apps/sim/app/api/tools/iam/attach-role-policy/route.ts +++ b/apps/sim/app/api/tools/iam/attach-role-policy/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { attachRolePolicy, createIAMClient } from '../utils' const logger = createLogger('IAMAttachRolePolicyAPI') diff --git a/apps/sim/app/api/tools/iam/attach-user-policy/route.ts b/apps/sim/app/api/tools/iam/attach-user-policy/route.ts index 6ae4037ceb6..636d5e613d5 100644 --- a/apps/sim/app/api/tools/iam/attach-user-policy/route.ts +++ b/apps/sim/app/api/tools/iam/attach-user-policy/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { attachUserPolicy, createIAMClient } from '../utils' const logger = createLogger('IAMAttachUserPolicyAPI') diff --git a/apps/sim/app/api/tools/iam/create-access-key/route.ts b/apps/sim/app/api/tools/iam/create-access-key/route.ts index f8a82d794b7..6b247a12d78 100644 --- a/apps/sim/app/api/tools/iam/create-access-key/route.ts +++ b/apps/sim/app/api/tools/iam/create-access-key/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createAccessKey, createIAMClient } from '../utils' const logger = createLogger('IAMCreateAccessKeyAPI') diff --git a/apps/sim/app/api/tools/iam/create-role/route.ts b/apps/sim/app/api/tools/iam/create-role/route.ts index 0cd765c2012..a58f136ede9 100644 --- a/apps/sim/app/api/tools/iam/create-role/route.ts +++ b/apps/sim/app/api/tools/iam/create-role/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, createRole } from '../utils' const logger = createLogger('IAMCreateRoleAPI') diff --git a/apps/sim/app/api/tools/iam/create-user/route.ts b/apps/sim/app/api/tools/iam/create-user/route.ts index 42db82145fe..941972be5c5 100644 --- a/apps/sim/app/api/tools/iam/create-user/route.ts +++ b/apps/sim/app/api/tools/iam/create-user/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, createUser } from '../utils' const logger = createLogger('IAMCreateUserAPI') diff --git a/apps/sim/app/api/tools/iam/delete-access-key/route.ts b/apps/sim/app/api/tools/iam/delete-access-key/route.ts index 65486f5e5fa..50801563691 100644 --- a/apps/sim/app/api/tools/iam/delete-access-key/route.ts +++ b/apps/sim/app/api/tools/iam/delete-access-key/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, deleteAccessKey } from '../utils' const logger = createLogger('IAMDeleteAccessKeyAPI') diff --git a/apps/sim/app/api/tools/iam/delete-role/route.ts b/apps/sim/app/api/tools/iam/delete-role/route.ts index 488bb300483..4c0361868a1 100644 --- a/apps/sim/app/api/tools/iam/delete-role/route.ts +++ b/apps/sim/app/api/tools/iam/delete-role/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, deleteRole } from '../utils' const logger = createLogger('IAMDeleteRoleAPI') diff --git a/apps/sim/app/api/tools/iam/delete-user/route.ts b/apps/sim/app/api/tools/iam/delete-user/route.ts index 5d6d9e980c9..a9e484ace56 100644 --- a/apps/sim/app/api/tools/iam/delete-user/route.ts +++ b/apps/sim/app/api/tools/iam/delete-user/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, deleteUser } from '../utils' const logger = createLogger('IAMDeleteUserAPI') diff --git a/apps/sim/app/api/tools/iam/detach-role-policy/route.ts b/apps/sim/app/api/tools/iam/detach-role-policy/route.ts index 3e4af87dc98..e7bd77c1811 100644 --- a/apps/sim/app/api/tools/iam/detach-role-policy/route.ts +++ b/apps/sim/app/api/tools/iam/detach-role-policy/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, detachRolePolicy } from '../utils' const logger = createLogger('IAMDetachRolePolicyAPI') diff --git a/apps/sim/app/api/tools/iam/detach-user-policy/route.ts b/apps/sim/app/api/tools/iam/detach-user-policy/route.ts index 9972a2b78bb..5bbf0f6956b 100644 --- a/apps/sim/app/api/tools/iam/detach-user-policy/route.ts +++ b/apps/sim/app/api/tools/iam/detach-user-policy/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, detachUserPolicy } from '../utils' const logger = createLogger('IAMDetachUserPolicyAPI') diff --git a/apps/sim/app/api/tools/iam/get-role/route.ts b/apps/sim/app/api/tools/iam/get-role/route.ts index a7a0f20273b..3086f3f00fd 100644 --- a/apps/sim/app/api/tools/iam/get-role/route.ts +++ b/apps/sim/app/api/tools/iam/get-role/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, getRole } from '../utils' const logger = createLogger('IAMGetRoleAPI') diff --git a/apps/sim/app/api/tools/iam/get-user/route.ts b/apps/sim/app/api/tools/iam/get-user/route.ts index 148baf28834..22964c75a26 100644 --- a/apps/sim/app/api/tools/iam/get-user/route.ts +++ b/apps/sim/app/api/tools/iam/get-user/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, getUser } from '../utils' const logger = createLogger('IAMGetUserAPI') diff --git a/apps/sim/app/api/tools/iam/list-groups/route.ts b/apps/sim/app/api/tools/iam/list-groups/route.ts index 6512f71f84a..0d37da698c9 100644 --- a/apps/sim/app/api/tools/iam/list-groups/route.ts +++ b/apps/sim/app/api/tools/iam/list-groups/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, listGroups } from '../utils' const logger = createLogger('IAMListGroupsAPI') diff --git a/apps/sim/app/api/tools/iam/list-policies/route.ts b/apps/sim/app/api/tools/iam/list-policies/route.ts index ecd2c892c94..5e361bd66b8 100644 --- a/apps/sim/app/api/tools/iam/list-policies/route.ts +++ b/apps/sim/app/api/tools/iam/list-policies/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, listPolicies } from '../utils' const logger = createLogger('IAMListPoliciesAPI') diff --git a/apps/sim/app/api/tools/iam/list-roles/route.ts b/apps/sim/app/api/tools/iam/list-roles/route.ts index fac48e83475..a1b9a5676f7 100644 --- a/apps/sim/app/api/tools/iam/list-roles/route.ts +++ b/apps/sim/app/api/tools/iam/list-roles/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, listRoles } from '../utils' const logger = createLogger('IAMListRolesAPI') diff --git a/apps/sim/app/api/tools/iam/list-users/route.ts b/apps/sim/app/api/tools/iam/list-users/route.ts index 17668a8737c..13b99298574 100644 --- a/apps/sim/app/api/tools/iam/list-users/route.ts +++ b/apps/sim/app/api/tools/iam/list-users/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, listUsers } from '../utils' const logger = createLogger('IAMListUsersAPI') diff --git a/apps/sim/app/api/tools/iam/remove-user-from-group/route.ts b/apps/sim/app/api/tools/iam/remove-user-from-group/route.ts index d50c699e92e..5f3a537d3d0 100644 --- a/apps/sim/app/api/tools/iam/remove-user-from-group/route.ts +++ b/apps/sim/app/api/tools/iam/remove-user-from-group/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createIAMClient, removeUserFromGroup } from '../utils' const logger = createLogger('IAMRemoveUserFromGroupAPI') diff --git a/apps/sim/app/api/tools/image/route.ts b/apps/sim/app/api/tools/image/route.ts index 9fba35ad721..c83ef413d09 100644 --- a/apps/sim/app/api/tools/image/route.ts +++ b/apps/sim/app/api/tools/image/route.ts @@ -1,11 +1,11 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { secureFetchWithPinnedIP, validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' const logger = createLogger('ImageProxyAPI') diff --git a/apps/sim/app/api/tools/jira/update/route.ts b/apps/sim/app/api/tools/jira/update/route.ts index 74ccc0f42a9..86986a7ccbc 100644 --- a/apps/sim/app/api/tools/jira/update/route.ts +++ b/apps/sim/app/api/tools/jira/update/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage, toAdf } from '@/tools/jira/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/jira/write/route.ts b/apps/sim/app/api/tools/jira/write/route.ts index b54d24993b2..5cbd748fec7 100644 --- a/apps/sim/app/api/tools/jira/write/route.ts +++ b/apps/sim/app/api/tools/jira/write/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage, toAdf } from '@/tools/jira/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/jsm/approvals/route.ts b/apps/sim/app/api/tools/jsm/approvals/route.ts index 387f1b6dc83..aab4fd51db4 100644 --- a/apps/sim/app/api/tools/jsm/approvals/route.ts +++ b/apps/sim/app/api/tools/jsm/approvals/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -7,7 +8,6 @@ import { validateJiraCloudId, validateJiraIssueKey, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/comment/route.ts b/apps/sim/app/api/tools/jsm/comment/route.ts index 7a1758c5125..3a651d36504 100644 --- a/apps/sim/app/api/tools/jsm/comment/route.ts +++ b/apps/sim/app/api/tools/jsm/comment/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/comments/route.ts b/apps/sim/app/api/tools/jsm/comments/route.ts index 43bbd8eefcf..7ecfce61857 100644 --- a/apps/sim/app/api/tools/jsm/comments/route.ts +++ b/apps/sim/app/api/tools/jsm/comments/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/customers/route.ts b/apps/sim/app/api/tools/jsm/customers/route.ts index 67cff52bd04..c60b2176ed5 100644 --- a/apps/sim/app/api/tools/jsm/customers/route.ts +++ b/apps/sim/app/api/tools/jsm/customers/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/answers/route.ts b/apps/sim/app/api/tools/jsm/forms/answers/route.ts index 5d529f0c076..dbcb90d39b4 100644 --- a/apps/sim/app/api/tools/jsm/forms/answers/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/answers/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/attach/route.ts b/apps/sim/app/api/tools/jsm/forms/attach/route.ts index 2e33cc7afe2..4cea4451ca8 100644 --- a/apps/sim/app/api/tools/jsm/forms/attach/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/attach/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/copy/route.ts b/apps/sim/app/api/tools/jsm/forms/copy/route.ts index 0f65f9de63a..534b6d2e78c 100644 --- a/apps/sim/app/api/tools/jsm/forms/copy/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/copy/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/delete/route.ts b/apps/sim/app/api/tools/jsm/forms/delete/route.ts index 28ff73a017d..6849cfbff11 100644 --- a/apps/sim/app/api/tools/jsm/forms/delete/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/externalise/route.ts b/apps/sim/app/api/tools/jsm/forms/externalise/route.ts index 5922bfc68b3..a9f9ee9cb77 100644 --- a/apps/sim/app/api/tools/jsm/forms/externalise/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/externalise/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/get/route.ts b/apps/sim/app/api/tools/jsm/forms/get/route.ts index 35ca42a6687..4582e626526 100644 --- a/apps/sim/app/api/tools/jsm/forms/get/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/get/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/internalise/route.ts b/apps/sim/app/api/tools/jsm/forms/internalise/route.ts index 8d8aae7201b..755686c36ea 100644 --- a/apps/sim/app/api/tools/jsm/forms/internalise/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/internalise/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/issue/route.ts b/apps/sim/app/api/tools/jsm/forms/issue/route.ts index 0d504359db0..754d209ea39 100644 --- a/apps/sim/app/api/tools/jsm/forms/issue/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/issue/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/reopen/route.ts b/apps/sim/app/api/tools/jsm/forms/reopen/route.ts index 333d9c347b4..7f734bc5f4e 100644 --- a/apps/sim/app/api/tools/jsm/forms/reopen/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/reopen/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/save/route.ts b/apps/sim/app/api/tools/jsm/forms/save/route.ts index 7869ac80246..82a3a94403d 100644 --- a/apps/sim/app/api/tools/jsm/forms/save/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/save/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/structure/route.ts b/apps/sim/app/api/tools/jsm/forms/structure/route.ts index 51fdb78e4f6..56497ef9511 100644 --- a/apps/sim/app/api/tools/jsm/forms/structure/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/structure/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/submit/route.ts b/apps/sim/app/api/tools/jsm/forms/submit/route.ts index d2c92b6e600..a54a8f0080b 100644 --- a/apps/sim/app/api/tools/jsm/forms/submit/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/submit/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/forms/templates/route.ts b/apps/sim/app/api/tools/jsm/forms/templates/route.ts index a79703b703e..1021f5d0f6e 100644 --- a/apps/sim/app/api/tools/jsm/forms/templates/route.ts +++ b/apps/sim/app/api/tools/jsm/forms/templates/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmFormsApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/organization/route.ts b/apps/sim/app/api/tools/jsm/organization/route.ts index a2bfd2ca40d..54e52091360 100644 --- a/apps/sim/app/api/tools/jsm/organization/route.ts +++ b/apps/sim/app/api/tools/jsm/organization/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -6,7 +7,6 @@ import { validateEnum, validateJiraCloudId, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/organizations/route.ts b/apps/sim/app/api/tools/jsm/organizations/route.ts index b963de9f55e..2677ecb840a 100644 --- a/apps/sim/app/api/tools/jsm/organizations/route.ts +++ b/apps/sim/app/api/tools/jsm/organizations/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/participants/route.ts b/apps/sim/app/api/tools/jsm/participants/route.ts index 6188181400e..004d3225e61 100644 --- a/apps/sim/app/api/tools/jsm/participants/route.ts +++ b/apps/sim/app/api/tools/jsm/participants/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -6,7 +7,6 @@ import { validateJiraCloudId, validateJiraIssueKey, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/queues/route.ts b/apps/sim/app/api/tools/jsm/queues/route.ts index b70f8924cd1..c700415a0c9 100644 --- a/apps/sim/app/api/tools/jsm/queues/route.ts +++ b/apps/sim/app/api/tools/jsm/queues/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/request/route.ts b/apps/sim/app/api/tools/jsm/request/route.ts index 924d9fa6cb3..bd28305b3ff 100644 --- a/apps/sim/app/api/tools/jsm/request/route.ts +++ b/apps/sim/app/api/tools/jsm/request/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -6,7 +7,6 @@ import { validateJiraCloudId, validateJiraIssueKey, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/requests/route.ts b/apps/sim/app/api/tools/jsm/requests/route.ts index 511e482490b..beff44d69ec 100644 --- a/apps/sim/app/api/tools/jsm/requests/route.ts +++ b/apps/sim/app/api/tools/jsm/requests/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -6,7 +7,6 @@ import { validateEnum, validateJiraCloudId, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/requesttypefields/route.ts b/apps/sim/app/api/tools/jsm/requesttypefields/route.ts index da14d3e3dc1..aba218ccfb0 100644 --- a/apps/sim/app/api/tools/jsm/requesttypefields/route.ts +++ b/apps/sim/app/api/tools/jsm/requesttypefields/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/requesttypes/route.ts b/apps/sim/app/api/tools/jsm/requesttypes/route.ts index 2f2513eabfe..3f90b906e59 100644 --- a/apps/sim/app/api/tools/jsm/requesttypes/route.ts +++ b/apps/sim/app/api/tools/jsm/requesttypes/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId, validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/servicedesks/route.ts b/apps/sim/app/api/tools/jsm/servicedesks/route.ts index 74d60f9623f..209f06e9e8c 100644 --- a/apps/sim/app/api/tools/jsm/servicedesks/route.ts +++ b/apps/sim/app/api/tools/jsm/servicedesks/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/sla/route.ts b/apps/sim/app/api/tools/jsm/sla/route.ts index 7484a9d8527..083034f5b14 100644 --- a/apps/sim/app/api/tools/jsm/sla/route.ts +++ b/apps/sim/app/api/tools/jsm/sla/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/transition/route.ts b/apps/sim/app/api/tools/jsm/transition/route.ts index 39ac559c8e7..75231994c71 100644 --- a/apps/sim/app/api/tools/jsm/transition/route.ts +++ b/apps/sim/app/api/tools/jsm/transition/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { @@ -6,7 +7,6 @@ import { validateJiraCloudId, validateJiraIssueKey, } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/jsm/transitions/route.ts b/apps/sim/app/api/tools/jsm/transitions/route.ts index ed017b0a5c4..c736eabc64d 100644 --- a/apps/sim/app/api/tools/jsm/transitions/route.ts +++ b/apps/sim/app/api/tools/jsm/transitions/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateJiraCloudId, validateJiraIssueKey } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getJiraCloudId, parseAtlassianErrorMessage } from '@/tools/jira/utils' import { getJsmApiBaseUrl, getJsmHeaders } from '@/tools/jsm/utils' diff --git a/apps/sim/app/api/tools/microsoft-teams/channels/route.ts b/apps/sim/app/api/tools/microsoft-teams/channels/route.ts index 5d2ca796499..f985ac00ea9 100644 --- a/apps/sim/app/api/tools/microsoft-teams/channels/route.ts +++ b/apps/sim/app/api/tools/microsoft-teams/channels/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { authorizeCredentialUse } from '@/lib/auth/credential-access' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/microsoft-teams/chats/route.ts b/apps/sim/app/api/tools/microsoft-teams/chats/route.ts index 26ad9f8b33c..718d55ca999 100644 --- a/apps/sim/app/api/tools/microsoft-teams/chats/route.ts +++ b/apps/sim/app/api/tools/microsoft-teams/chats/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { authorizeCredentialUse } from '@/lib/auth/credential-access' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/microsoft-teams/teams/route.ts b/apps/sim/app/api/tools/microsoft-teams/teams/route.ts index 7045af36358..787f3b9649f 100644 --- a/apps/sim/app/api/tools/microsoft-teams/teams/route.ts +++ b/apps/sim/app/api/tools/microsoft-teams/teams/route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { authorizeCredentialUse } from '@/lib/auth/credential-access' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { refreshAccessTokenIfNeeded } from '@/app/api/auth/oauth/utils' diff --git a/apps/sim/app/api/tools/mongodb/delete/route.ts b/apps/sim/app/api/tools/mongodb/delete/route.ts index 5325aa57446..6202e0e6e5c 100644 --- a/apps/sim/app/api/tools/mongodb/delete/route.ts +++ b/apps/sim/app/api/tools/mongodb/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, sanitizeCollectionName, validateFilter } from '../utils' const logger = createLogger('MongoDBDeleteAPI') diff --git a/apps/sim/app/api/tools/mongodb/execute/route.ts b/apps/sim/app/api/tools/mongodb/execute/route.ts index 9ae06a07871..54c1289af8f 100644 --- a/apps/sim/app/api/tools/mongodb/execute/route.ts +++ b/apps/sim/app/api/tools/mongodb/execute/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, sanitizeCollectionName, validatePipeline } from '../utils' const logger = createLogger('MongoDBExecuteAPI') diff --git a/apps/sim/app/api/tools/mongodb/insert/route.ts b/apps/sim/app/api/tools/mongodb/insert/route.ts index 94957ae5630..9461159d0ea 100644 --- a/apps/sim/app/api/tools/mongodb/insert/route.ts +++ b/apps/sim/app/api/tools/mongodb/insert/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, sanitizeCollectionName } from '../utils' const logger = createLogger('MongoDBInsertAPI') diff --git a/apps/sim/app/api/tools/mongodb/introspect/route.ts b/apps/sim/app/api/tools/mongodb/introspect/route.ts index d6c4b6e5f7f..c22ff8f0c8a 100644 --- a/apps/sim/app/api/tools/mongodb/introspect/route.ts +++ b/apps/sim/app/api/tools/mongodb/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, executeIntrospect } from '../utils' const logger = createLogger('MongoDBIntrospectAPI') diff --git a/apps/sim/app/api/tools/mongodb/query/route.ts b/apps/sim/app/api/tools/mongodb/query/route.ts index 24829c660b1..4ab2535fb73 100644 --- a/apps/sim/app/api/tools/mongodb/query/route.ts +++ b/apps/sim/app/api/tools/mongodb/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, sanitizeCollectionName, validateFilter } from '../utils' const logger = createLogger('MongoDBQueryAPI') diff --git a/apps/sim/app/api/tools/mongodb/update/route.ts b/apps/sim/app/api/tools/mongodb/update/route.ts index 47022203ee7..43eb7931b8f 100644 --- a/apps/sim/app/api/tools/mongodb/update/route.ts +++ b/apps/sim/app/api/tools/mongodb/update/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMongoDBConnection, sanitizeCollectionName, validateFilter } from '../utils' const logger = createLogger('MongoDBUpdateAPI') diff --git a/apps/sim/app/api/tools/mysql/delete/route.ts b/apps/sim/app/api/tools/mysql/delete/route.ts index b1871cff38a..b4125aa4334 100644 --- a/apps/sim/app/api/tools/mysql/delete/route.ts +++ b/apps/sim/app/api/tools/mysql/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { buildDeleteQuery, createMySQLConnection, executeQuery } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLDeleteAPI') diff --git a/apps/sim/app/api/tools/mysql/execute/route.ts b/apps/sim/app/api/tools/mysql/execute/route.ts index 1e8e1685ba3..4b235dd0700 100644 --- a/apps/sim/app/api/tools/mysql/execute/route.ts +++ b/apps/sim/app/api/tools/mysql/execute/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMySQLConnection, executeQuery, validateQuery } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLExecuteAPI') diff --git a/apps/sim/app/api/tools/mysql/insert/route.ts b/apps/sim/app/api/tools/mysql/insert/route.ts index 862a3332c25..bcb1b869806 100644 --- a/apps/sim/app/api/tools/mysql/insert/route.ts +++ b/apps/sim/app/api/tools/mysql/insert/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { buildInsertQuery, createMySQLConnection, executeQuery } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLInsertAPI') diff --git a/apps/sim/app/api/tools/mysql/introspect/route.ts b/apps/sim/app/api/tools/mysql/introspect/route.ts index 792b012d126..fda8dc82b68 100644 --- a/apps/sim/app/api/tools/mysql/introspect/route.ts +++ b/apps/sim/app/api/tools/mysql/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMySQLConnection, executeIntrospect } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLIntrospectAPI') diff --git a/apps/sim/app/api/tools/mysql/query/route.ts b/apps/sim/app/api/tools/mysql/query/route.ts index 5e1105053fc..e6084340ea4 100644 --- a/apps/sim/app/api/tools/mysql/query/route.ts +++ b/apps/sim/app/api/tools/mysql/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createMySQLConnection, executeQuery, validateQuery } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLQueryAPI') diff --git a/apps/sim/app/api/tools/mysql/update/route.ts b/apps/sim/app/api/tools/mysql/update/route.ts index 0eff371d83c..aa87d5c169b 100644 --- a/apps/sim/app/api/tools/mysql/update/route.ts +++ b/apps/sim/app/api/tools/mysql/update/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { buildUpdateQuery, createMySQLConnection, executeQuery } from '@/app/api/tools/mysql/utils' const logger = createLogger('MySQLUpdateAPI') diff --git a/apps/sim/app/api/tools/neo4j/create/route.ts b/apps/sim/app/api/tools/neo4j/create/route.ts index 83c1b16c6d4..6a4717fde47 100644 --- a/apps/sim/app/api/tools/neo4j/create/route.ts +++ b/apps/sim/app/api/tools/neo4j/create/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { convertNeo4jTypesToJSON, createNeo4jDriver, diff --git a/apps/sim/app/api/tools/neo4j/delete/route.ts b/apps/sim/app/api/tools/neo4j/delete/route.ts index 5b4c42d7da2..a36e9218124 100644 --- a/apps/sim/app/api/tools/neo4j/delete/route.ts +++ b/apps/sim/app/api/tools/neo4j/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createNeo4jDriver, validateCypherQuery } from '@/app/api/tools/neo4j/utils' const logger = createLogger('Neo4jDeleteAPI') diff --git a/apps/sim/app/api/tools/neo4j/execute/route.ts b/apps/sim/app/api/tools/neo4j/execute/route.ts index 70eb498b5b2..456da1f8b3f 100644 --- a/apps/sim/app/api/tools/neo4j/execute/route.ts +++ b/apps/sim/app/api/tools/neo4j/execute/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { convertNeo4jTypesToJSON, createNeo4jDriver, diff --git a/apps/sim/app/api/tools/neo4j/introspect/route.ts b/apps/sim/app/api/tools/neo4j/introspect/route.ts index 36604473fb6..beba37b8c7c 100644 --- a/apps/sim/app/api/tools/neo4j/introspect/route.ts +++ b/apps/sim/app/api/tools/neo4j/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createNeo4jDriver } from '@/app/api/tools/neo4j/utils' import type { Neo4jNodeSchema, Neo4jRelationshipSchema } from '@/tools/neo4j/types' diff --git a/apps/sim/app/api/tools/neo4j/merge/route.ts b/apps/sim/app/api/tools/neo4j/merge/route.ts index e4865aeabf4..20f3e64c936 100644 --- a/apps/sim/app/api/tools/neo4j/merge/route.ts +++ b/apps/sim/app/api/tools/neo4j/merge/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { convertNeo4jTypesToJSON, createNeo4jDriver, diff --git a/apps/sim/app/api/tools/neo4j/query/route.ts b/apps/sim/app/api/tools/neo4j/query/route.ts index 7c6d8983675..40f8e9d4c45 100644 --- a/apps/sim/app/api/tools/neo4j/query/route.ts +++ b/apps/sim/app/api/tools/neo4j/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { convertNeo4jTypesToJSON, createNeo4jDriver, diff --git a/apps/sim/app/api/tools/neo4j/update/route.ts b/apps/sim/app/api/tools/neo4j/update/route.ts index 5d90e17a568..6ce96713f8a 100644 --- a/apps/sim/app/api/tools/neo4j/update/route.ts +++ b/apps/sim/app/api/tools/neo4j/update/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { convertNeo4jTypesToJSON, createNeo4jDriver, diff --git a/apps/sim/app/api/tools/onedrive/files/route.ts b/apps/sim/app/api/tools/onedrive/files/route.ts index 16baea2e23d..d2613a334e3 100644 --- a/apps/sim/app/api/tools/onedrive/files/route.ts +++ b/apps/sim/app/api/tools/onedrive/files/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { generateId } from '@/lib/core/utils/uuid' import { refreshAccessTokenIfNeeded, resolveOAuthAccountId } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/onedrive/folder/route.ts b/apps/sim/app/api/tools/onedrive/folder/route.ts index 2ab90355b7c..fd373641ec0 100644 --- a/apps/sim/app/api/tools/onedrive/folder/route.ts +++ b/apps/sim/app/api/tools/onedrive/folder/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { generateId } from '@/lib/core/utils/uuid' import { refreshAccessTokenIfNeeded, resolveOAuthAccountId } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/onedrive/folders/route.ts b/apps/sim/app/api/tools/onedrive/folders/route.ts index 5cf6981f801..9a35dc108f6 100644 --- a/apps/sim/app/api/tools/onedrive/folders/route.ts +++ b/apps/sim/app/api/tools/onedrive/folders/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { generateId } from '@/lib/core/utils/uuid' import { refreshAccessTokenIfNeeded, resolveOAuthAccountId } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/onepassword/create-item/route.ts b/apps/sim/app/api/tools/onepassword/create-item/route.ts index 497e71b1991..21a17c5bb36 100644 --- a/apps/sim/app/api/tools/onepassword/create-item/route.ts +++ b/apps/sim/app/api/tools/onepassword/create-item/route.ts @@ -1,9 +1,9 @@ import type { ItemCreateParams } from '@1password/sdk' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/delete-item/route.ts b/apps/sim/app/api/tools/onepassword/delete-item/route.ts index c2be6e8f1eb..0507a6add39 100644 --- a/apps/sim/app/api/tools/onepassword/delete-item/route.ts +++ b/apps/sim/app/api/tools/onepassword/delete-item/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, resolveCredentials } from '../utils' const logger = createLogger('OnePasswordDeleteItemAPI') diff --git a/apps/sim/app/api/tools/onepassword/get-item/route.ts b/apps/sim/app/api/tools/onepassword/get-item/route.ts index 92065228e81..f0986e58937 100644 --- a/apps/sim/app/api/tools/onepassword/get-item/route.ts +++ b/apps/sim/app/api/tools/onepassword/get-item/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/get-vault/route.ts b/apps/sim/app/api/tools/onepassword/get-vault/route.ts index 09b2b227fe2..5b01c9aa674 100644 --- a/apps/sim/app/api/tools/onepassword/get-vault/route.ts +++ b/apps/sim/app/api/tools/onepassword/get-vault/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/list-items/route.ts b/apps/sim/app/api/tools/onepassword/list-items/route.ts index 6f4d4c6eb9d..1009be87435 100644 --- a/apps/sim/app/api/tools/onepassword/list-items/route.ts +++ b/apps/sim/app/api/tools/onepassword/list-items/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/list-vaults/route.ts b/apps/sim/app/api/tools/onepassword/list-vaults/route.ts index e24d8567abc..d99c48db48f 100644 --- a/apps/sim/app/api/tools/onepassword/list-vaults/route.ts +++ b/apps/sim/app/api/tools/onepassword/list-vaults/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/replace-item/route.ts b/apps/sim/app/api/tools/onepassword/replace-item/route.ts index 48b84918b5f..cac00a6f22a 100644 --- a/apps/sim/app/api/tools/onepassword/replace-item/route.ts +++ b/apps/sim/app/api/tools/onepassword/replace-item/route.ts @@ -1,9 +1,9 @@ import type { Item } from '@1password/sdk' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/resolve-secret/route.ts b/apps/sim/app/api/tools/onepassword/resolve-secret/route.ts index e327da13d68..ea696f1f874 100644 --- a/apps/sim/app/api/tools/onepassword/resolve-secret/route.ts +++ b/apps/sim/app/api/tools/onepassword/resolve-secret/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createOnePasswordClient, resolveCredentials } from '../utils' const logger = createLogger('OnePasswordResolveSecretAPI') diff --git a/apps/sim/app/api/tools/onepassword/update-item/route.ts b/apps/sim/app/api/tools/onepassword/update-item/route.ts index 1bfca62a68b..d85c3daefee 100644 --- a/apps/sim/app/api/tools/onepassword/update-item/route.ts +++ b/apps/sim/app/api/tools/onepassword/update-item/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { connectRequest, createOnePasswordClient, diff --git a/apps/sim/app/api/tools/onepassword/utils.ts b/apps/sim/app/api/tools/onepassword/utils.ts index 07f4a43d11e..8fb53d59d50 100644 --- a/apps/sim/app/api/tools/onepassword/utils.ts +++ b/apps/sim/app/api/tools/onepassword/utils.ts @@ -10,9 +10,9 @@ import type { Website, } from '@1password/sdk' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import * as ipaddr from 'ipaddr.js' import { secureFetchWithPinnedIP } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' /** Connect-format field type strings returned by normalization. */ type ConnectFieldType = diff --git a/apps/sim/app/api/tools/outlook/folders/route.ts b/apps/sim/app/api/tools/outlook/folders/route.ts index 26fa0e9da80..ffb2833fb80 100644 --- a/apps/sim/app/api/tools/outlook/folders/route.ts +++ b/apps/sim/app/api/tools/outlook/folders/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { validateAlphanumericId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { refreshAccessTokenIfNeeded, resolveOAuthAccountId } from '@/app/api/auth/oauth/utils' diff --git a/apps/sim/app/api/tools/postgresql/delete/route.ts b/apps/sim/app/api/tools/postgresql/delete/route.ts index 05309cda907..8099febb5fa 100644 --- a/apps/sim/app/api/tools/postgresql/delete/route.ts +++ b/apps/sim/app/api/tools/postgresql/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeDelete } from '@/app/api/tools/postgresql/utils' const logger = createLogger('PostgreSQLDeleteAPI') diff --git a/apps/sim/app/api/tools/postgresql/execute/route.ts b/apps/sim/app/api/tools/postgresql/execute/route.ts index 1dba7c11414..e898926280b 100644 --- a/apps/sim/app/api/tools/postgresql/execute/route.ts +++ b/apps/sim/app/api/tools/postgresql/execute/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeQuery, diff --git a/apps/sim/app/api/tools/postgresql/insert/route.ts b/apps/sim/app/api/tools/postgresql/insert/route.ts index 01073a96577..7030bd622a2 100644 --- a/apps/sim/app/api/tools/postgresql/insert/route.ts +++ b/apps/sim/app/api/tools/postgresql/insert/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeInsert } from '@/app/api/tools/postgresql/utils' const logger = createLogger('PostgreSQLInsertAPI') diff --git a/apps/sim/app/api/tools/postgresql/introspect/route.ts b/apps/sim/app/api/tools/postgresql/introspect/route.ts index cf376bef9de..e7e476cefa2 100644 --- a/apps/sim/app/api/tools/postgresql/introspect/route.ts +++ b/apps/sim/app/api/tools/postgresql/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeIntrospect } from '@/app/api/tools/postgresql/utils' const logger = createLogger('PostgreSQLIntrospectAPI') diff --git a/apps/sim/app/api/tools/postgresql/query/route.ts b/apps/sim/app/api/tools/postgresql/query/route.ts index 72e73489a5b..f41d2b8598c 100644 --- a/apps/sim/app/api/tools/postgresql/query/route.ts +++ b/apps/sim/app/api/tools/postgresql/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeQuery } from '@/app/api/tools/postgresql/utils' const logger = createLogger('PostgreSQLQueryAPI') diff --git a/apps/sim/app/api/tools/postgresql/update/route.ts b/apps/sim/app/api/tools/postgresql/update/route.ts index 4eb2cc9d4da..e7241f0f980 100644 --- a/apps/sim/app/api/tools/postgresql/update/route.ts +++ b/apps/sim/app/api/tools/postgresql/update/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createPostgresConnection, executeUpdate } from '@/app/api/tools/postgresql/utils' const logger = createLogger('PostgreSQLUpdateAPI') diff --git a/apps/sim/app/api/tools/rds/delete/route.ts b/apps/sim/app/api/tools/rds/delete/route.ts index 92b2c9d0b93..318a0f3c9e8 100644 --- a/apps/sim/app/api/tools/rds/delete/route.ts +++ b/apps/sim/app/api/tools/rds/delete/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeDelete } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSDeleteAPI') diff --git a/apps/sim/app/api/tools/rds/execute/route.ts b/apps/sim/app/api/tools/rds/execute/route.ts index af6304f98da..5dfdd9ebdc2 100644 --- a/apps/sim/app/api/tools/rds/execute/route.ts +++ b/apps/sim/app/api/tools/rds/execute/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeStatement } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSExecuteAPI') diff --git a/apps/sim/app/api/tools/rds/insert/route.ts b/apps/sim/app/api/tools/rds/insert/route.ts index 7fba5fcbb7c..f80680db656 100644 --- a/apps/sim/app/api/tools/rds/insert/route.ts +++ b/apps/sim/app/api/tools/rds/insert/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeInsert } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSInsertAPI') diff --git a/apps/sim/app/api/tools/rds/introspect/route.ts b/apps/sim/app/api/tools/rds/introspect/route.ts index 2e8aa42a8ef..e08ed73cf13 100644 --- a/apps/sim/app/api/tools/rds/introspect/route.ts +++ b/apps/sim/app/api/tools/rds/introspect/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeIntrospect, type RdsEngine } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSIntrospectAPI') diff --git a/apps/sim/app/api/tools/rds/query/route.ts b/apps/sim/app/api/tools/rds/query/route.ts index 21a73291073..0793083c903 100644 --- a/apps/sim/app/api/tools/rds/query/route.ts +++ b/apps/sim/app/api/tools/rds/query/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeStatement, validateQuery } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSQueryAPI') diff --git a/apps/sim/app/api/tools/rds/update/route.ts b/apps/sim/app/api/tools/rds/update/route.ts index 1e2826e4ac7..2dd8418ac7d 100644 --- a/apps/sim/app/api/tools/rds/update/route.ts +++ b/apps/sim/app/api/tools/rds/update/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createRdsClient, executeUpdate } from '@/app/api/tools/rds/utils' const logger = createLogger('RDSUpdateAPI') diff --git a/apps/sim/app/api/tools/search/route.ts b/apps/sim/app/api/tools/search/route.ts index b45213115d8..ca56c9045ef 100644 --- a/apps/sim/app/api/tools/search/route.ts +++ b/apps/sim/app/api/tools/search/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' import { SEARCH_TOOL_COST } from '@/lib/billing/constants' import { env } from '@/lib/core/config/env' -import { generateId } from '@/lib/core/utils/uuid' import { executeTool } from '@/tools' const logger = createLogger('search') diff --git a/apps/sim/app/api/tools/secrets_manager/create-secret/route.ts b/apps/sim/app/api/tools/secrets_manager/create-secret/route.ts index 7cb4a60160b..7f57a9c36b3 100644 --- a/apps/sim/app/api/tools/secrets_manager/create-secret/route.ts +++ b/apps/sim/app/api/tools/secrets_manager/create-secret/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSecret, createSecretsManagerClient } from '../utils' const logger = createLogger('SecretsManagerCreateSecretAPI') diff --git a/apps/sim/app/api/tools/secrets_manager/delete-secret/route.ts b/apps/sim/app/api/tools/secrets_manager/delete-secret/route.ts index 21a35e64af7..82a7229a0ec 100644 --- a/apps/sim/app/api/tools/secrets_manager/delete-secret/route.ts +++ b/apps/sim/app/api/tools/secrets_manager/delete-secret/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSecretsManagerClient, deleteSecret } from '../utils' const logger = createLogger('SecretsManagerDeleteSecretAPI') diff --git a/apps/sim/app/api/tools/secrets_manager/get-secret/route.ts b/apps/sim/app/api/tools/secrets_manager/get-secret/route.ts index 22df5b57072..b8ca8a4cecb 100644 --- a/apps/sim/app/api/tools/secrets_manager/get-secret/route.ts +++ b/apps/sim/app/api/tools/secrets_manager/get-secret/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSecretsManagerClient, getSecretValue } from '../utils' const logger = createLogger('SecretsManagerGetSecretAPI') diff --git a/apps/sim/app/api/tools/secrets_manager/list-secrets/route.ts b/apps/sim/app/api/tools/secrets_manager/list-secrets/route.ts index 58617b4864f..dfe225589d5 100644 --- a/apps/sim/app/api/tools/secrets_manager/list-secrets/route.ts +++ b/apps/sim/app/api/tools/secrets_manager/list-secrets/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSecretsManagerClient, listSecrets } from '../utils' const logger = createLogger('SecretsManagerListSecretsAPI') diff --git a/apps/sim/app/api/tools/secrets_manager/update-secret/route.ts b/apps/sim/app/api/tools/secrets_manager/update-secret/route.ts index 5becf7f0dc3..6be86a34552 100644 --- a/apps/sim/app/api/tools/secrets_manager/update-secret/route.ts +++ b/apps/sim/app/api/tools/secrets_manager/update-secret/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSecretsManagerClient, updateSecretValue } from '../utils' const logger = createLogger('SecretsManagerUpdateSecretAPI') diff --git a/apps/sim/app/api/tools/sftp/utils.ts b/apps/sim/app/api/tools/sftp/utils.ts index 094c784ac28..639672ae438 100644 --- a/apps/sim/app/api/tools/sftp/utils.ts +++ b/apps/sim/app/api/tools/sftp/utils.ts @@ -1,6 +1,6 @@ +import { toError } from '@sim/utils/errors' import { type Attributes, Client, type ConnectConfig, type SFTPWrapper } from 'ssh2' import { validateDatabaseHost } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' const S_IFMT = 0o170000 const S_IFDIR = 0o040000 diff --git a/apps/sim/app/api/tools/sharepoint/site/route.ts b/apps/sim/app/api/tools/sharepoint/site/route.ts index 7afc3954fa2..7984e96d7d6 100644 --- a/apps/sim/app/api/tools/sharepoint/site/route.ts +++ b/apps/sim/app/api/tools/sharepoint/site/route.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' import { validateMicrosoftGraphId } from '@/lib/core/security/input-validation' -import { generateId } from '@/lib/core/utils/uuid' import { refreshAccessTokenIfNeeded, resolveOAuthAccountId } from '@/app/api/auth/oauth/utils' export const dynamic = 'force-dynamic' diff --git a/apps/sim/app/api/tools/smtp/send/route.ts b/apps/sim/app/api/tools/smtp/send/route.ts index 796b7114b3c..40f915367fe 100644 --- a/apps/sim/app/api/tools/smtp/send/route.ts +++ b/apps/sim/app/api/tools/smtp/send/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import nodemailer from 'nodemailer' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateDatabaseHost } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { RawFileInputArraySchema } from '@/lib/uploads/utils/file-schemas' import { processFilesToUserFiles } from '@/lib/uploads/utils/file-utils' diff --git a/apps/sim/app/api/tools/sqs/send/route.ts b/apps/sim/app/api/tools/sqs/send/route.ts index c9078aecc4b..e0f12c38334 100644 --- a/apps/sim/app/api/tools/sqs/send/route.ts +++ b/apps/sim/app/api/tools/sqs/send/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSqsClient, sendMessage } from '../utils' const logger = createLogger('SQSSendMessageAPI') diff --git a/apps/sim/app/api/tools/ssh/check-command-exists/route.ts b/apps/sim/app/api/tools/ssh/check-command-exists/route.ts index 186b4c390aa..0e2d545f2df 100644 --- a/apps/sim/app/api/tools/ssh/check-command-exists/route.ts +++ b/apps/sim/app/api/tools/ssh/check-command-exists/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, executeSSHCommand } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHCheckCommandExistsAPI') diff --git a/apps/sim/app/api/tools/ssh/check-file-exists/route.ts b/apps/sim/app/api/tools/ssh/check-file-exists/route.ts index e7e65cc633b..2bcce214702 100644 --- a/apps/sim/app/api/tools/ssh/check-file-exists/route.ts +++ b/apps/sim/app/api/tools/ssh/check-file-exists/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, SFTPWrapper, Stats } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, getFileType, diff --git a/apps/sim/app/api/tools/ssh/create-directory/route.ts b/apps/sim/app/api/tools/ssh/create-directory/route.ts index 467c097d4e3..5bca7dcf229 100644 --- a/apps/sim/app/api/tools/ssh/create-directory/route.ts +++ b/apps/sim/app/api/tools/ssh/create-directory/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, diff --git a/apps/sim/app/api/tools/ssh/delete-file/route.ts b/apps/sim/app/api/tools/ssh/delete-file/route.ts index 44506996b07..b0cd4374300 100644 --- a/apps/sim/app/api/tools/ssh/delete-file/route.ts +++ b/apps/sim/app/api/tools/ssh/delete-file/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, diff --git a/apps/sim/app/api/tools/ssh/download-file/route.ts b/apps/sim/app/api/tools/ssh/download-file/route.ts index 6dbfdf3c5ee..6aa443d6338 100644 --- a/apps/sim/app/api/tools/ssh/download-file/route.ts +++ b/apps/sim/app/api/tools/ssh/download-file/route.ts @@ -1,10 +1,10 @@ import path from 'path' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, SFTPWrapper } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { getFileExtension, getMimeTypeFromExtension } from '@/lib/uploads/utils/file-utils' import { createSSHConnection, sanitizePath } from '@/app/api/tools/ssh/utils' diff --git a/apps/sim/app/api/tools/ssh/execute-command/route.ts b/apps/sim/app/api/tools/ssh/execute-command/route.ts index 66b5dfb1555..b888e298bee 100644 --- a/apps/sim/app/api/tools/ssh/execute-command/route.ts +++ b/apps/sim/app/api/tools/ssh/execute-command/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, diff --git a/apps/sim/app/api/tools/ssh/execute-script/route.ts b/apps/sim/app/api/tools/ssh/execute-script/route.ts index b0158e43fdd..4ba3e6f4f26 100644 --- a/apps/sim/app/api/tools/ssh/execute-script/route.ts +++ b/apps/sim/app/api/tools/ssh/execute-script/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, executeSSHCommand } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHExecuteScriptAPI') diff --git a/apps/sim/app/api/tools/ssh/get-system-info/route.ts b/apps/sim/app/api/tools/ssh/get-system-info/route.ts index 65a25e82e21..6594baa718b 100644 --- a/apps/sim/app/api/tools/ssh/get-system-info/route.ts +++ b/apps/sim/app/api/tools/ssh/get-system-info/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, executeSSHCommand } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHGetSystemInfoAPI') diff --git a/apps/sim/app/api/tools/ssh/list-directory/route.ts b/apps/sim/app/api/tools/ssh/list-directory/route.ts index 2971ef9202b..d3f6895c574 100644 --- a/apps/sim/app/api/tools/ssh/list-directory/route.ts +++ b/apps/sim/app/api/tools/ssh/list-directory/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, FileEntry, SFTPWrapper } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, getFileType, diff --git a/apps/sim/app/api/tools/ssh/move-rename/route.ts b/apps/sim/app/api/tools/ssh/move-rename/route.ts index 98285041707..1c2a7c96758 100644 --- a/apps/sim/app/api/tools/ssh/move-rename/route.ts +++ b/apps/sim/app/api/tools/ssh/move-rename/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, escapeShellArg, diff --git a/apps/sim/app/api/tools/ssh/read-file-content/route.ts b/apps/sim/app/api/tools/ssh/read-file-content/route.ts index 7493a6cb10c..5bd159e78a3 100644 --- a/apps/sim/app/api/tools/ssh/read-file-content/route.ts +++ b/apps/sim/app/api/tools/ssh/read-file-content/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, SFTPWrapper } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, sanitizePath } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHReadFileContentAPI') diff --git a/apps/sim/app/api/tools/ssh/upload-file/route.ts b/apps/sim/app/api/tools/ssh/upload-file/route.ts index 2020271465b..941c6db0874 100644 --- a/apps/sim/app/api/tools/ssh/upload-file/route.ts +++ b/apps/sim/app/api/tools/ssh/upload-file/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, SFTPWrapper } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, sanitizePath } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHUploadFileAPI') diff --git a/apps/sim/app/api/tools/ssh/utils.ts b/apps/sim/app/api/tools/ssh/utils.ts index a5506419cfa..ed3dae88328 100644 --- a/apps/sim/app/api/tools/ssh/utils.ts +++ b/apps/sim/app/api/tools/ssh/utils.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type Attributes, Client, type ConnectConfig } from 'ssh2' import { validateDatabaseHost } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('SSHUtils') diff --git a/apps/sim/app/api/tools/ssh/write-file-content/route.ts b/apps/sim/app/api/tools/ssh/write-file-content/route.ts index 77a180b9dae..e670f9093a3 100644 --- a/apps/sim/app/api/tools/ssh/write-file-content/route.ts +++ b/apps/sim/app/api/tools/ssh/write-file-content/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import type { Client, SFTPWrapper } from 'ssh2' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSSHConnection, sanitizePath } from '@/app/api/tools/ssh/utils' const logger = createLogger('SSHWriteFileContentAPI') diff --git a/apps/sim/app/api/tools/sts/assume-role/route.ts b/apps/sim/app/api/tools/sts/assume-role/route.ts index 4903eb8e8e2..ebec8b8de99 100644 --- a/apps/sim/app/api/tools/sts/assume-role/route.ts +++ b/apps/sim/app/api/tools/sts/assume-role/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { assumeRole, createSTSClient } from '../utils' const logger = createLogger('STSAssumeRoleAPI') diff --git a/apps/sim/app/api/tools/sts/get-access-key-info/route.ts b/apps/sim/app/api/tools/sts/get-access-key-info/route.ts index 2375aca7806..536a5d7eb02 100644 --- a/apps/sim/app/api/tools/sts/get-access-key-info/route.ts +++ b/apps/sim/app/api/tools/sts/get-access-key-info/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSTSClient, getAccessKeyInfo } from '../utils' const logger = createLogger('STSGetAccessKeyInfoAPI') diff --git a/apps/sim/app/api/tools/sts/get-caller-identity/route.ts b/apps/sim/app/api/tools/sts/get-caller-identity/route.ts index 1cb5d263c06..c625fb70615 100644 --- a/apps/sim/app/api/tools/sts/get-caller-identity/route.ts +++ b/apps/sim/app/api/tools/sts/get-caller-identity/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSTSClient, getCallerIdentity } from '../utils' const logger = createLogger('STSGetCallerIdentityAPI') diff --git a/apps/sim/app/api/tools/sts/get-session-token/route.ts b/apps/sim/app/api/tools/sts/get-session-token/route.ts index 05fb77bcb32..338c102572f 100644 --- a/apps/sim/app/api/tools/sts/get-session-token/route.ts +++ b/apps/sim/app/api/tools/sts/get-session-token/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' -import { generateId } from '@/lib/core/utils/uuid' import { createSTSClient, getSessionToken } from '../utils' const logger = createLogger('STSGetSessionTokenAPI') diff --git a/apps/sim/app/api/tools/stt/route.ts b/apps/sim/app/api/tools/stt/route.ts index fbbd8abdb93..213bcf112cd 100644 --- a/apps/sim/app/api/tools/stt/route.ts +++ b/apps/sim/app/api/tools/stt/route.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { extractAudioFromVideo, isVideoFile } from '@/lib/audio/extractor' import { checkInternalAuth } from '@/lib/auth/hybrid' @@ -7,8 +9,6 @@ import { secureFetchWithPinnedIP, validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' -import { sleep } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getMimeTypeFromExtension, isInternalFileUrl } from '@/lib/uploads/utils/file-utils' import { downloadFileFromStorage, diff --git a/apps/sim/app/api/tools/textract/parse/route.ts b/apps/sim/app/api/tools/textract/parse/route.ts index 3191e428860..f5ce04fce91 100644 --- a/apps/sim/app/api/tools/textract/parse/route.ts +++ b/apps/sim/app/api/tools/textract/parse/route.ts @@ -1,5 +1,6 @@ import crypto from 'crypto' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkInternalAuth } from '@/lib/auth/hybrid' @@ -9,7 +10,6 @@ import { secureFetchWithPinnedIP, validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' -import { sleep } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { RawFileInputSchema } from '@/lib/uploads/utils/file-schemas' import { isInternalFileUrl, processSingleFileToUserFile } from '@/lib/uploads/utils/file-utils' diff --git a/apps/sim/app/api/tools/tts/unified/route.ts b/apps/sim/app/api/tools/tts/unified/route.ts index 5b6ba35198a..7f9db6e26e6 100644 --- a/apps/sim/app/api/tools/tts/unified/route.ts +++ b/apps/sim/app/api/tools/tts/unified/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import type { NextRequest } from 'next/server' import { NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { validateAlphanumericId } from '@/lib/core/security/input-validation' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { StorageService } from '@/lib/uploads' import type { AzureTtsParams, diff --git a/apps/sim/app/api/tools/video/route.ts b/apps/sim/app/api/tools/video/route.ts index c8cad166824..48c9865be32 100644 --- a/apps/sim/app/api/tools/video/route.ts +++ b/apps/sim/app/api/tools/video/route.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { checkInternalAuth } from '@/lib/auth/hybrid' import { getMaxExecutionTimeout } from '@/lib/core/execution-limits' -import { sleep } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { downloadFileFromStorage } from '@/lib/uploads/utils/file-utils.server' import type { UserFile } from '@/executor/types' import type { VideoRequestBody } from '@/tools/video/types' diff --git a/apps/sim/app/api/users/me/api-keys/route.ts b/apps/sim/app/api/users/me/api-keys/route.ts index 173bc01be7a..ac09226946d 100644 --- a/apps/sim/app/api/users/me/api-keys/route.ts +++ b/apps/sim/app/api/users/me/api-keys/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { apiKey } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { createApiKey, getApiKeyDisplayFormat } from '@/lib/api-key/auth' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('ApiKeysAPI') diff --git a/apps/sim/app/api/users/me/settings/route.ts b/apps/sim/app/api/users/me/settings/route.ts index 2c45a0e3ccf..fd8aa9e3055 100644 --- a/apps/sim/app/api/users/me/settings/route.ts +++ b/apps/sim/app/api/users/me/settings/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { settings } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { generateRequestId } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('UserSettingsAPI') diff --git a/apps/sim/app/api/users/me/subscription/[id]/transfer/route.ts b/apps/sim/app/api/users/me/subscription/[id]/transfer/route.ts index 96af579f452..a9e977d9633 100644 --- a/apps/sim/app/api/users/me/subscription/[id]/transfer/route.ts +++ b/apps/sim/app/api/users/me/subscription/[id]/transfer/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { member, organization, subscription } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { hasPaidSubscription } from '@/lib/billing' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('SubscriptionTransferAPI') diff --git a/apps/sim/app/api/users/me/usage-logs/route.ts b/apps/sim/app/api/users/me/usage-logs/route.ts index 9de44c4d01e..05d0d7cb650 100644 --- a/apps/sim/app/api/users/me/usage-logs/route.ts +++ b/apps/sim/app/api/users/me/usage-logs/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { getUserUsageLogs, type UsageLogSource } from '@/lib/billing/core/usage-log' import { dollarsToCredits } from '@/lib/billing/credits/conversion' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('UsageLogsAPI') diff --git a/apps/sim/app/api/v1/admin/credits/route.ts b/apps/sim/app/api/v1/admin/credits/route.ts index 41bcdefd063..e4d393e8fb4 100644 --- a/apps/sim/app/api/v1/admin/credits/route.ts +++ b/apps/sim/app/api/v1/admin/credits/route.ts @@ -26,6 +26,7 @@ import { db } from '@sim/db' import { organization, subscription, user, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { getHighestPrioritySubscription } from '@/lib/billing/core/subscription' import { addCredits } from '@/lib/billing/credits/balance' @@ -36,7 +37,6 @@ import { getEffectiveSeats, isOrgScopedSubscription, } from '@/lib/billing/subscriptions/utils' -import { generateShortId } from '@/lib/core/utils/uuid' import { withAdminAuth } from '@/app/api/v1/admin/middleware' import { badRequestResponse, diff --git a/apps/sim/app/api/v1/admin/organizations/route.ts b/apps/sim/app/api/v1/admin/organizations/route.ts index f4da57737e6..0a87080fdf9 100644 --- a/apps/sim/app/api/v1/admin/organizations/route.ts +++ b/apps/sim/app/api/v1/admin/organizations/route.ts @@ -24,8 +24,8 @@ import { db } from '@sim/db' import { member, organization, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { count, eq } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { withAdminAuth } from '@/app/api/v1/admin/middleware' import { badRequestResponse, diff --git a/apps/sim/app/api/v1/admin/outbox/[id]/requeue/route.ts b/apps/sim/app/api/v1/admin/outbox/[id]/requeue/route.ts index 9de5c4696be..0b1693bcdf8 100644 --- a/apps/sim/app/api/v1/admin/outbox/[id]/requeue/route.ts +++ b/apps/sim/app/api/v1/admin/outbox/[id]/requeue/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { outboxEvent } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import { NextResponse } from 'next/server' import { withAdminAuthParams } from '@/app/api/v1/admin/middleware' @@ -56,16 +57,7 @@ export const POST = withAdminAuthParams<{ id: string }>(async (_request, { param requeued: result[0], }) } catch (error) { - logger.error('Failed to requeue outbox event', { - eventId: id, - error: error instanceof Error ? error.message : error, - }) - return NextResponse.json( - { - success: false, - error: error instanceof Error ? error.message : 'Unknown error', - }, - { status: 500 } - ) + logger.error('Failed to requeue outbox event', { eventId: id, error: toError(error).message }) + return NextResponse.json({ success: false, error: toError(error).message }, { status: 500 }) } }) diff --git a/apps/sim/app/api/v1/admin/outbox/route.ts b/apps/sim/app/api/v1/admin/outbox/route.ts index addcb5bbe67..87acb5d006a 100644 --- a/apps/sim/app/api/v1/admin/outbox/route.ts +++ b/apps/sim/app/api/v1/admin/outbox/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { outboxEvent } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, desc, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { withAdminAuth } from '@/app/api/v1/admin/middleware' @@ -77,15 +78,7 @@ export const GET = withAdminAuth(async (request: NextRequest) => { counts, }) } catch (error) { - logger.error('Failed to list outbox events', { - error: error instanceof Error ? error.message : error, - }) - return NextResponse.json( - { - success: false, - error: error instanceof Error ? error.message : 'Unknown error', - }, - { status: 500 } - ) + logger.error('Failed to list outbox events', { error: toError(error).message }) + return NextResponse.json({ success: false, error: toError(error).message }, { status: 500 }) } }) diff --git a/apps/sim/app/api/v1/admin/users/[id]/billing/route.ts b/apps/sim/app/api/v1/admin/users/[id]/billing/route.ts index ecc10aab242..537e5b70eab 100644 --- a/apps/sim/app/api/v1/admin/users/[id]/billing/route.ts +++ b/apps/sim/app/api/v1/admin/users/[id]/billing/route.ts @@ -21,10 +21,10 @@ import { db } from '@sim/db' import { member, organization, subscription, user, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { eq, or } from 'drizzle-orm' import { getHighestPrioritySubscription } from '@/lib/billing/core/subscription' import { isOrgScopedSubscription } from '@/lib/billing/subscriptions/utils' -import { generateShortId } from '@/lib/core/utils/uuid' import { withAdminAuthParams } from '@/app/api/v1/admin/middleware' import { badRequestResponse, diff --git a/apps/sim/app/api/v1/admin/workflows/import/route.ts b/apps/sim/app/api/v1/admin/workflows/import/route.ts index 1d384f0cf6b..5332b8a6afb 100644 --- a/apps/sim/app/api/v1/admin/workflows/import/route.ts +++ b/apps/sim/app/api/v1/admin/workflows/import/route.ts @@ -17,9 +17,9 @@ import { db } from '@sim/db' import { workflow, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { NextResponse } from 'next/server' -import { generateId } from '@/lib/core/utils/uuid' import { parseWorkflowJson } from '@/lib/workflows/operations/import-export' import { saveWorkflowToNormalizedTables } from '@/lib/workflows/persistence/utils' import { deduplicateWorkflowName } from '@/lib/workflows/utils' diff --git a/apps/sim/app/api/v1/admin/workspaces/[id]/import/route.ts b/apps/sim/app/api/v1/admin/workspaces/[id]/import/route.ts index adcc927785d..37e13941b72 100644 --- a/apps/sim/app/api/v1/admin/workspaces/[id]/import/route.ts +++ b/apps/sim/app/api/v1/admin/workspaces/[id]/import/route.ts @@ -26,9 +26,9 @@ import { db } from '@sim/db' import { workflow, workflowFolder } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { NextResponse } from 'next/server' -import { generateId } from '@/lib/core/utils/uuid' import { extractWorkflowName, extractWorkflowsFromZip, diff --git a/apps/sim/app/api/v1/admin/workspaces/[id]/members/route.ts b/apps/sim/app/api/v1/admin/workspaces/[id]/members/route.ts index d9a399268fd..c5af318a5cf 100644 --- a/apps/sim/app/api/v1/admin/workspaces/[id]/members/route.ts +++ b/apps/sim/app/api/v1/admin/workspaces/[id]/members/route.ts @@ -33,8 +33,8 @@ import { db } from '@sim/db' import { permissions, user, workspaceEnvironment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, count, eq } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { syncWorkspaceEnvCredentials } from '@/lib/credentials/environment' import { getWorkspaceById } from '@/lib/workspaces/permissions/utils' import { withAdminAuthParams } from '@/app/api/v1/admin/middleware' diff --git a/apps/sim/app/api/v1/audit-logs/[id]/route.ts b/apps/sim/app/api/v1/audit-logs/[id]/route.ts index 948a034afc0..5124c669a81 100644 --- a/apps/sim/app/api/v1/audit-logs/[id]/route.ts +++ b/apps/sim/app/api/v1/audit-logs/[id]/route.ts @@ -13,9 +13,9 @@ import { db } from '@sim/db' import { auditLog, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' -import { generateId } from '@/lib/core/utils/uuid' import { validateEnterpriseAuditAccess } from '@/app/api/v1/audit-logs/auth' import { formatAuditLogEntry } from '@/app/api/v1/audit-logs/format' import { createApiResponse, getUserLimits } from '@/app/api/v1/logs/meta' diff --git a/apps/sim/app/api/v1/audit-logs/route.ts b/apps/sim/app/api/v1/audit-logs/route.ts index 046680bde44..e21f6347f40 100644 --- a/apps/sim/app/api/v1/audit-logs/route.ts +++ b/apps/sim/app/api/v1/audit-logs/route.ts @@ -20,9 +20,9 @@ */ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { generateId } from '@/lib/core/utils/uuid' import { validateEnterpriseAuditAccess } from '@/app/api/v1/audit-logs/auth' import { formatAuditLogEntry } from '@/app/api/v1/audit-logs/format' import { diff --git a/apps/sim/app/api/v1/copilot/chat/route.ts b/apps/sim/app/api/v1/copilot/chat/route.ts index 3fed69a78bb..79b09f4e9d3 100644 --- a/apps/sim/app/api/v1/copilot/chat/route.ts +++ b/apps/sim/app/api/v1/copilot/chat/route.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { COPILOT_REQUEST_MODES } from '@/lib/copilot/constants' import { runHeadlessCopilotLifecycle } from '@/lib/copilot/request/lifecycle/headless' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getWorkflowById, resolveWorkflowIdForUser } from '@/lib/workflows/utils' import { authenticateV1Request } from '@/app/api/v1/auth' diff --git a/apps/sim/app/api/v1/logs/[id]/route.ts b/apps/sim/app/api/v1/logs/[id]/route.ts index e9b33de99ff..8af970e4be9 100644 --- a/apps/sim/app/api/v1/logs/[id]/route.ts +++ b/apps/sim/app/api/v1/logs/[id]/route.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { permissions, workflow, workflowExecutionLogs } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' -import { generateId } from '@/lib/core/utils/uuid' import { createApiResponse, getUserLimits } from '@/app/api/v1/logs/meta' import { checkRateLimit, createRateLimitResponse } from '@/app/api/v1/middleware' diff --git a/apps/sim/app/api/v1/logs/route.ts b/apps/sim/app/api/v1/logs/route.ts index cab370d8141..fc809c09c5e 100644 --- a/apps/sim/app/api/v1/logs/route.ts +++ b/apps/sim/app/api/v1/logs/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { permissions, workflow, workflowExecutionLogs } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { generateId } from '@/lib/core/utils/uuid' import { buildLogFilters, getOrderBy } from '@/app/api/v1/logs/filters' import { createApiResponse, getUserLimits } from '@/app/api/v1/logs/meta' import { checkRateLimit, createRateLimitResponse } from '@/app/api/v1/middleware' diff --git a/apps/sim/app/api/v1/tables/[tableId]/rows/[rowId]/route.ts b/apps/sim/app/api/v1/tables/[tableId]/rows/[rowId]/route.ts index af0d8525cc2..00b2420cbb8 100644 --- a/apps/sim/app/api/v1/tables/[tableId]/rows/[rowId]/route.ts +++ b/apps/sim/app/api/v1/tables/[tableId]/rows/[rowId]/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { RowData } from '@/lib/table' import { updateRow } from '@/lib/table' diff --git a/apps/sim/app/api/v1/tables/[tableId]/rows/route.ts b/apps/sim/app/api/v1/tables/[tableId]/rows/route.ts index ee5a91bf436..31d5c1b1608 100644 --- a/apps/sim/app/api/v1/tables/[tableId]/rows/route.ts +++ b/apps/sim/app/api/v1/tables/[tableId]/rows/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { Filter, RowData, Sort, TableSchema } from '@/lib/table' import { diff --git a/apps/sim/app/api/v1/tables/[tableId]/rows/upsert/route.ts b/apps/sim/app/api/v1/tables/[tableId]/rows/upsert/route.ts index 13045436233..8671b61a104 100644 --- a/apps/sim/app/api/v1/tables/[tableId]/rows/upsert/route.ts +++ b/apps/sim/app/api/v1/tables/[tableId]/rows/upsert/route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import type { RowData } from '@/lib/table' import { upsertRow } from '@/lib/table' diff --git a/apps/sim/app/api/v1/workflows/[id]/route.ts b/apps/sim/app/api/v1/workflows/[id]/route.ts index 15a97f9b9ad..5574d07b0bd 100644 --- a/apps/sim/app/api/v1/workflows/[id]/route.ts +++ b/apps/sim/app/api/v1/workflows/[id]/route.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { workflowBlocks } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' -import { generateId } from '@/lib/core/utils/uuid' import { getActiveWorkflowRecord } from '@/lib/workflows/active-context' import { extractInputFieldsFromBlocks } from '@/lib/workflows/input-format' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/v1/workflows/route.ts b/apps/sim/app/api/v1/workflows/route.ts index 718f0afb37f..2691c4b2378 100644 --- a/apps/sim/app/api/v1/workflows/route.ts +++ b/apps/sim/app/api/v1/workflows/route.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, asc, eq, gt, isNull, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' -import { generateId } from '@/lib/core/utils/uuid' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' import { createApiResponse, getUserLimits } from '@/app/api/v1/logs/meta' import { checkRateLimit, createRateLimitResponse } from '@/app/api/v1/middleware' diff --git a/apps/sim/app/api/webhooks/agentmail/route.ts b/apps/sim/app/api/webhooks/agentmail/route.ts index 25e87f1de35..997e0cc688f 100644 --- a/apps/sim/app/api/webhooks/agentmail/route.ts +++ b/apps/sim/app/api/webhooks/agentmail/route.ts @@ -8,12 +8,12 @@ import { workspace, } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { tasks } from '@trigger.dev/sdk' import { and, eq, gt, ne, sql } from 'drizzle-orm' import { NextResponse } from 'next/server' import { Webhook } from 'svix' import { isTriggerDevEnabled } from '@/lib/core/config/feature-flags' -import { generateId } from '@/lib/core/utils/uuid' import { executeInboxTask } from '@/lib/mothership/inbox/executor' import type { AgentMailWebhookPayload, RejectionReason } from '@/lib/mothership/inbox/types' diff --git a/apps/sim/app/api/webhooks/outbox/process/route.ts b/apps/sim/app/api/webhooks/outbox/process/route.ts index 99b3f02baf6..caf2065768b 100644 --- a/apps/sim/app/api/webhooks/outbox/process/route.ts +++ b/apps/sim/app/api/webhooks/outbox/process/route.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { verifyCronAuth } from '@/lib/auth/internal' import { billingOutboxHandlers } from '@/lib/billing/webhooks/outbox-handlers' @@ -33,16 +34,9 @@ export async function GET(request: NextRequest) { result, }) } catch (error) { - logger.error('Outbox processing failed', { - requestId, - error: error instanceof Error ? error.message : error, - }) + logger.error('Outbox processing failed', { requestId, error: toError(error).message }) return NextResponse.json( - { - success: false, - requestId, - error: error instanceof Error ? error.message : 'Unknown error', - }, + { success: false, requestId, error: toError(error).message }, { status: 500 } ) } diff --git a/apps/sim/app/api/webhooks/poll/[provider]/route.ts b/apps/sim/app/api/webhooks/poll/[provider]/route.ts index 053d328b0dd..3934555a978 100644 --- a/apps/sim/app/api/webhooks/poll/[provider]/route.ts +++ b/apps/sim/app/api/webhooks/poll/[provider]/route.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { verifyCronAuth } from '@/lib/auth/internal' import { acquireLock, releaseLock } from '@/lib/core/config/redis' -import { generateShortId } from '@/lib/core/utils/uuid' import { pollProvider, VALID_POLLING_PROVIDERS } from '@/lib/webhooks/polling' const logger = createLogger('PollingAPI') diff --git a/apps/sim/app/api/webhooks/route.ts b/apps/sim/app/api/webhooks/route.ts index 0c7174f4294..b9823e24082 100644 --- a/apps/sim/app/api/webhooks/route.ts +++ b/apps/sim/app/api/webhooks/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { permissions, webhook, workflow, workflowDeploymentVersion } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId, generateShortId } from '@sim/utils/id' import { and, desc, eq, inArray, isNull, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { PlatformEvents } from '@/lib/core/telemetry' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId, generateShortId } from '@/lib/core/utils/uuid' import { getProviderIdFromServiceId } from '@/lib/oauth' import { captureServerEvent } from '@/lib/posthog/server' import { resolveEnvVarsInObject } from '@/lib/webhooks/env-resolver' diff --git a/apps/sim/app/api/webhooks/trigger/[path]/route.test.ts b/apps/sim/app/api/webhooks/trigger/[path]/route.test.ts index 88073b11cba..3a32df330c2 100644 --- a/apps/sim/app/api/webhooks/trigger/[path]/route.test.ts +++ b/apps/sim/app/api/webhooks/trigger/[path]/route.test.ts @@ -3,22 +3,28 @@ * * @vitest-environment node */ -import { createMockRequest, loggerMock, requestUtilsMock } from '@sim/testing' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { + createMockRequest, + encryptionMock, + executionPreprocessingMock, + executionPreprocessingMockFns, + loggingSessionMock, + requestUtilsMock, + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, + workflowsUtilsMock, +} from '@sim/testing' +import { beforeEach, describe, expect, it, vi } from 'vitest' /** Mock execution dependencies for webhook tests */ function mockExecutionDependencies() { - vi.mock('@/lib/core/security/encryption', () => ({ - decryptSecret: vi.fn().mockResolvedValue({ decrypted: 'decrypted-value' }), - })) + vi.mock('@/lib/core/security/encryption', () => encryptionMock) vi.mock('@/lib/logs/execution/trace-spans/trace-spans', () => ({ buildTraceSpans: vi.fn().mockReturnValue({ traceSpans: [], totalDuration: 100 }), })) - vi.mock('@/lib/workflows/utils', () => ({ - updateWorkflowRunCounts: vi.fn().mockResolvedValue(undefined), - })) + vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/serializer', () => ({ Serializer: vi.fn().mockImplementation(() => ({ @@ -170,34 +176,9 @@ vi.mock('@/executor', () => ({ })), })) -vi.mock('@/lib/execution/preprocessing', () => ({ - preprocessExecution: vi.fn().mockResolvedValue({ - success: true, - actorUserId: 'test-user-id', - workflowRecord: { - id: 'test-workflow-id', - userId: 'test-user-id', - isDeployed: true, - workspaceId: 'test-workspace-id', - }, - userSubscription: { - plan: 'pro', - status: 'active', - }, - rateLimitInfo: { - allowed: true, - remaining: 100, - resetAt: new Date(), - }, - }), -})) +vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn().mockImplementation(() => ({ - safeStart: vi.fn().mockResolvedValue(undefined), - safeCompleteWithError: vi.fn().mockResolvedValue(undefined), - })), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/lib/workspaces/utils', () => ({ getWorkspaceBillingSettings: vi.fn().mockResolvedValue(null), @@ -223,16 +204,7 @@ vi.mock('@/lib/core/rate-limiter', () => ({ }, })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - loadWorkflowFromNormalizedTables: vi.fn().mockResolvedValue({ - blocks: {}, - edges: [], - loops: {}, - parallels: {}, - isFromNormalizedTables: true, - }), - blockExistsInDeployment: vi.fn().mockResolvedValue(true), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) vi.mock('@/lib/webhooks/processor', () => ({ findAllWebhooksForPath: vi.fn().mockImplementation(async (options: { path: string }) => { @@ -381,8 +353,6 @@ vi.mock('drizzle-orm/postgres-js', () => ({ vi.mock('postgres', () => vi.fn().mockReturnValue({})) -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/core/utils/request', () => requestUtilsMock) process.env.DATABASE_URL = 'postgresql://test:test@localhost:5432/test' @@ -397,6 +367,35 @@ describe('Webhook Trigger API Route', () => { testData.webhooks.length = 0 testData.workflows.length = 0 + executionPreprocessingMockFns.mockPreprocessExecution.mockResolvedValue({ + success: true, + actorUserId: 'test-user-id', + workflowRecord: { + id: 'test-workflow-id', + userId: 'test-user-id', + isDeployed: true, + workspaceId: 'test-workspace-id', + }, + userSubscription: { + plan: 'pro', + status: 'active', + }, + rateLimitInfo: { + allowed: true, + remaining: 100, + resetAt: new Date(), + }, + }) + + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables.mockResolvedValue({ + blocks: {}, + edges: [], + loops: {}, + parallels: {}, + isFromNormalizedTables: true, + }) + workflowsPersistenceUtilsMockFns.mockBlockExistsInDeployment.mockResolvedValue(true) + mockExecutionDependencies() mockTriggerDevSdk() @@ -412,10 +411,6 @@ describe('Webhook Trigger API Route', () => { processWebhookMock.mockResolvedValue(new Response('Webhook processed', { status: 200 })) }) - afterEach(() => { - vi.clearAllMocks() - }) - it('should handle 404 for non-existent webhooks', async () => { const req = createMockRequest('POST', { type: 'event.test' }) diff --git a/apps/sim/app/api/workflows/[id]/chat/status/route.test.ts b/apps/sim/app/api/workflows/[id]/chat/status/route.test.ts index 19917b7d8cb..58c2f0d76ed 100644 --- a/apps/sim/app/api/workflows/[id]/chat/status/route.test.ts +++ b/apps/sim/app/api/workflows/[id]/chat/status/route.test.ts @@ -3,19 +3,17 @@ * * @vitest-environment node */ +import { + hybridAuthMock, + hybridAuthMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockCheckSessionOrInternalAuth, - mockAuthorizeWorkflowByWorkspacePermission, - mockDbSelect, - mockDbFrom, - mockDbWhere, - mockDbLimit, -} = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), +const { mockDbSelect, mockDbFrom, mockDbWhere, mockDbLimit } = vi.hoisted(() => ({ mockDbSelect: vi.fn(), mockDbFrom: vi.fn(), mockDbWhere: vi.fn(), @@ -34,31 +32,11 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - chat: { - id: 'id', - identifier: 'identifier', - title: 'title', - description: 'description', - customizations: 'customizations', - authType: 'authType', - allowedEmails: 'allowedEmails', - outputConfigs: 'outputConfigs', - password: 'password', - isActive: 'isActive', - workflowId: 'workflowId', - archivedAt: 'archivedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { GET } from '@/app/api/workflows/[id]/chat/status/route' @@ -73,7 +51,7 @@ describe('Workflow Chat Status Route', () => { }) it('returns 401 when unauthenticated', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false }) const req = new NextRequest('http://localhost:3000/api/workflows/wf-1/chat/status') const response = await GET(req, { params: Promise.resolve({ id: 'wf-1' }) }) @@ -82,12 +60,12 @@ describe('Workflow Chat Status Route', () => { }) it('returns 403 when user lacks workspace access', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 403, message: 'Access denied', @@ -102,12 +80,12 @@ describe('Workflow Chat Status Route', () => { }) it('returns deployment details when authorized', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: { id: 'wf-1', workspaceId: 'ws-1' }, diff --git a/apps/sim/app/api/workflows/[id]/execute/route.async.test.ts b/apps/sim/app/api/workflows/[id]/execute/route.async.test.ts index 164344640a3..29ebb37e41b 100644 --- a/apps/sim/app/api/workflows/[id]/execute/route.async.test.ts +++ b/apps/sim/app/api/workflows/[id]/execute/route.async.test.ts @@ -2,21 +2,26 @@ * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + createMockRequest, + executionPreprocessingMock, + executionPreprocessingMockFns, + loggingSessionMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockCheckHybridAuth, - mockAuthorizeWorkflowByWorkspacePermission, - mockPreprocessExecution, - mockEnqueue, -} = vi.hoisted(() => ({ +const { mockCheckHybridAuth, mockEnqueue } = vi.hoisted(() => ({ mockCheckHybridAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), - mockPreprocessExecution: vi.fn(), mockEnqueue: vi.fn().mockResolvedValue('job-123'), })) +const mockPreprocessExecution = executionPreprocessingMockFns.mockPreprocessExecution + +const mockAuthorizeWorkflowByWorkspacePermission = + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission + vi.mock('@/lib/auth/hybrid', () => ({ checkHybridAuth: mockCheckHybridAuth, hasExternalApiCredentials: vi.fn().mockReturnValue(true), @@ -27,15 +32,9 @@ vi.mock('@/lib/auth/hybrid', () => ({ }, })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, - createHttpResponseFromBlock: vi.fn(), - workflowHasResponseBlock: vi.fn().mockReturnValue(false), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/execution/preprocessing', () => ({ - preprocessExecution: mockPreprocessExecution, -})) +vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) vi.mock('@/lib/core/async-jobs', () => ({ getJobQueue: vi.fn().mockResolvedValue({ @@ -63,26 +62,13 @@ vi.mock('@/lib/execution/call-chain', () => ({ buildNextCallChain: vi.fn().mockReturnValue(['workflow-1']), })) -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn().mockImplementation(() => ({})), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/background/workflow-execution', () => ({ executeWorkflowJob: vi.fn(), })) -vi.mock('@sim/logger', () => { - const createMockLogger = (): Record => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - withMetadata: vi.fn(() => createMockLogger()), - }) - return { createLogger: vi.fn(() => createMockLogger()) } -}) - -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'execution-123'), generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -96,6 +82,8 @@ describe('workflow execute async route', () => { beforeEach(() => { vi.clearAllMocks() + workflowsUtilsMockFns.mockWorkflowHasResponseBlock.mockReturnValue(false) + mockCheckHybridAuth.mockResolvedValue({ success: true, userId: 'session-user-1', diff --git a/apps/sim/app/api/workflows/[id]/execute/route.ts b/apps/sim/app/api/workflows/[id]/execute/route.ts index 307e79cc710..ccbccbc6a60 100644 --- a/apps/sim/app/api/workflows/[id]/execute/route.ts +++ b/apps/sim/app/api/workflows/[id]/execute/route.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId, isValidUuid } from '@sim/utils/id' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuthType, checkHybridAuth, hasExternalApiCredentials } from '@/lib/auth/hybrid' @@ -9,11 +11,9 @@ import { getTimeoutErrorMessage, isTimeoutError, } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { SSE_HEADERS } from '@/lib/core/utils/sse' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId, isValidUuid } from '@/lib/core/utils/uuid' import { buildNextCallChain, parseCallChain, diff --git a/apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.test.ts b/apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.test.ts index 295b17e4e7e..07b7dea3869 100644 --- a/apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.test.ts +++ b/apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.test.ts @@ -2,13 +2,17 @@ * @vitest-environment node */ -import { databaseMock } from '@sim/testing' +import { + databaseMock, + hybridAuthMock, + hybridAuthMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockCheckHybridAuth, - mockAuthorizeWorkflowByWorkspacePermission, mockMarkExecutionCancelled, mockAbortManualExecution, mockCancelPausedExecution, @@ -16,8 +20,6 @@ const { mockWriteEvent, mockCloseWriter, } = vi.hoisted(() => ({ - mockCheckHybridAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), mockMarkExecutionCancelled: vi.fn(), mockAbortManualExecution: vi.fn(), mockCancelPausedExecution: vi.fn(), @@ -26,9 +28,7 @@ const { mockCloseWriter: vi.fn(), })) -vi.mock('@/lib/auth/hybrid', () => ({ - checkHybridAuth: (...args: unknown[]) => mockCheckHybridAuth(...args), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/execution/cancellation', () => ({ markExecutionCancelled: (...args: unknown[]) => mockMarkExecutionCancelled(...args), @@ -44,10 +44,7 @@ vi.mock('@/lib/workflows/executor/human-in-the-loop-manager', () => ({ }, })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: (params: unknown) => - mockAuthorizeWorkflowByWorkspacePermission(params), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/lib/posthog/server', () => ({ captureServerEvent: vi.fn(), @@ -73,8 +70,10 @@ const makeParams = () => ({ params: Promise.resolve({ id: 'wf-1', executionId: ' describe('POST /api/workflows/[id]/executions/[executionId]/cancel', () => { beforeEach(() => { vi.clearAllMocks() - mockCheckHybridAuth.mockResolvedValue({ success: true, userId: 'user-1' }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ success: true, userId: 'user-1' }) + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + allowed: true, + }) mockAbortManualExecution.mockReturnValue(false) mockCancelPausedExecution.mockResolvedValue(false) mockSetExecutionMeta.mockResolvedValue(undefined) @@ -185,7 +184,10 @@ describe('POST /api/workflows/[id]/executions/[executionId]/cancel', () => { }) it('returns 401 when auth fails', async () => { - mockCheckHybridAuth.mockResolvedValue({ success: false, error: 'Unauthorized' }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ + success: false, + error: 'Unauthorized', + }) const response = await POST(makeRequest(), makeParams()) @@ -194,7 +196,7 @@ describe('POST /api/workflows/[id]/executions/[executionId]/cancel', () => { it('returns 403 when workflow access is denied', async () => { mockMarkExecutionCancelled.mockResolvedValue({ durablyRecorded: true, reason: 'recorded' }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: false, message: 'Access denied', status: 403, diff --git a/apps/sim/app/api/workflows/[id]/executions/[executionId]/stream/route.ts b/apps/sim/app/api/workflows/[id]/executions/[executionId]/stream/route.ts index f602e08bc57..5c1d7ee7659 100644 --- a/apps/sim/app/api/workflows/[id]/executions/[executionId]/stream/route.ts +++ b/apps/sim/app/api/workflows/[id]/executions/[executionId]/stream/route.ts @@ -1,7 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { sleep, toError } from '@/lib/core/utils/helpers' import { SSE_HEADERS } from '@/lib/core/utils/sse' import { type ExecutionStreamStatus, diff --git a/apps/sim/app/api/workflows/[id]/form/status/route.test.ts b/apps/sim/app/api/workflows/[id]/form/status/route.test.ts index 4e16e491fd0..6aba9e94142 100644 --- a/apps/sim/app/api/workflows/[id]/form/status/route.test.ts +++ b/apps/sim/app/api/workflows/[id]/form/status/route.test.ts @@ -3,19 +3,17 @@ * * @vitest-environment node */ +import { + hybridAuthMock, + hybridAuthMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockCheckSessionOrInternalAuth, - mockAuthorizeWorkflowByWorkspacePermission, - mockDbSelect, - mockDbFrom, - mockDbWhere, - mockDbLimit, -} = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), +const { mockDbSelect, mockDbFrom, mockDbWhere, mockDbLimit } = vi.hoisted(() => ({ mockDbSelect: vi.fn(), mockDbFrom: vi.fn(), mockDbWhere: vi.fn(), @@ -33,24 +31,11 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - form: { - id: 'id', - identifier: 'identifier', - title: 'title', - workflowId: 'workflowId', - isActive: 'isActive', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { GET } from '@/app/api/workflows/[id]/form/status/route' @@ -65,7 +50,7 @@ describe('Workflow Form Status Route', () => { }) it('returns 401 when unauthenticated', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false }) const req = new NextRequest('http://localhost:3000/api/workflows/wf-1/form/status') const response = await GET(req, { params: Promise.resolve({ id: 'wf-1' }) }) @@ -74,12 +59,12 @@ describe('Workflow Form Status Route', () => { }) it('returns 403 when user lacks workspace access', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 403, message: 'Access denied', @@ -94,12 +79,12 @@ describe('Workflow Form Status Route', () => { }) it('returns deployed form when authorized', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-1', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: { id: 'wf-1', workspaceId: 'ws-1' }, diff --git a/apps/sim/app/api/workflows/[id]/route.test.ts b/apps/sim/app/api/workflows/[id]/route.test.ts index 383594b5453..0cfe4076b52 100644 --- a/apps/sim/app/api/workflows/[id]/route.test.ts +++ b/apps/sim/app/api/workflows/[id]/route.test.ts @@ -5,16 +5,30 @@ * @vitest-environment node */ -import { auditMock, envMock, loggerMock, requestUtilsMock, telemetryMock } from '@sim/testing' +import { + auditMock, + authMock, + envMock, + hybridAuthMock, + hybridAuthMockFns, + requestUtilsMock, + telemetryMock, + workflowsOrchestrationMock, + workflowsOrchestrationMockFns, + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -const mockCheckHybridAuth = vi.fn() -const mockCheckSessionOrInternalAuth = vi.fn() -const mockLoadWorkflowFromNormalizedTables = vi.fn() -const mockGetWorkflowById = vi.fn() -const mockAuthorizeWorkflowByWorkspacePermission = vi.fn() -const mockPerformDeleteWorkflow = vi.fn() +import { beforeEach, describe, expect, it, vi } from 'vitest' + +const mockLoadWorkflowFromNormalizedTables = + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables +const mockGetWorkflowById = workflowsUtilsMockFns.mockGetWorkflowById +const mockAuthorizeWorkflowByWorkspacePermission = + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission +const mockPerformDeleteWorkflow = workflowsOrchestrationMockFns.mockPerformDeleteWorkflow const mockDbUpdate = vi.fn() const mockDbSelect = vi.fn() @@ -23,23 +37,23 @@ const mockDbSelect = vi.fn() */ function mockGetSession(session: { user: { id: string } } | null) { if (session) { - mockCheckHybridAuth.mockResolvedValue({ success: true, userId: session.user.id }) - mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: session.user.id }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ + success: true, + userId: session.user.id, + }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ + success: true, + userId: session.user.id, + }) } else { - mockCheckHybridAuth.mockResolvedValue({ success: false }) - mockCheckSessionOrInternalAuth.mockResolvedValue({ success: false }) + hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValue({ success: false }) + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: false }) } } -vi.mock('@/lib/auth', () => ({ - getSession: vi.fn(), -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: (...args: unknown[]) => mockCheckHybridAuth(...args), - checkSessionOrInternalAuth: (...args: unknown[]) => mockCheckSessionOrInternalAuth(...args), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) vi.mock('@/lib/core/config/env', () => envMock) @@ -47,27 +61,13 @@ vi.mock('@/lib/core/telemetry', () => telemetryMock) vi.mock('@/lib/core/utils/request', () => requestUtilsMock) -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/audit/log', () => auditMock) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - loadWorkflowFromNormalizedTables: (workflowId: string) => - mockLoadWorkflowFromNormalizedTables(workflowId), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: (workflowId: string) => mockGetWorkflowById(workflowId), - authorizeWorkflowByWorkspacePermission: (params: { - workflowId: string - userId: string - action?: 'read' | 'write' | 'admin' - }) => mockAuthorizeWorkflowByWorkspacePermission(params), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/workflows/orchestration', () => ({ - performDeleteWorkflow: (...args: unknown[]) => mockPerformDeleteWorkflow(...args), -})) +vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) vi.mock('@sim/db', () => ({ db: { @@ -90,10 +90,6 @@ describe('Workflow By ID API Route', () => { mockLoadWorkflowFromNormalizedTables.mockResolvedValue(null) }) - afterEach(() => { - vi.clearAllMocks() - }) - describe('GET /api/workflows/[id]', () => { it('should return 401 when user is not authenticated', async () => { mockGetSession(null) diff --git a/apps/sim/app/api/workflows/[id]/state/route.ts b/apps/sim/app/api/workflows/[id]/state/route.ts index 0260a1129d9..05eb9e90483 100644 --- a/apps/sim/app/api/workflows/[id]/state/route.ts +++ b/apps/sim/app/api/workflows/[id]/state/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { getSocketServerUrl } from '@/lib/core/utils/urls' import { extractAndPersistCustomTools } from '@/lib/workflows/persistence/custom-tools-persistence' diff --git a/apps/sim/app/api/workflows/[id]/variables/route.test.ts b/apps/sim/app/api/workflows/[id]/variables/route.test.ts index 99a07d6f12b..e21f717381d 100644 --- a/apps/sim/app/api/workflows/[id]/variables/route.test.ts +++ b/apps/sim/app/api/workflows/[id]/variables/route.test.ts @@ -4,31 +4,24 @@ * * @vitest-environment node */ -import { auditMock } from '@sim/testing' +import { + auditMock, + hybridAuthMock, + hybridAuthMockFns, + requestUtilsMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockCheckSessionOrInternalAuth, mockAuthorizeWorkflowByWorkspacePermission } = vi.hoisted( - () => ({ - mockCheckSessionOrInternalAuth: vi.fn(), - mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), - }) -) - vi.mock('@/lib/audit/log', () => auditMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: mockAuthorizeWorkflowByWorkspacePermission, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/core/utils/request', () => ({ - generateRequestId: vi.fn().mockReturnValue('mock-request-id-12345678'), -})) +vi.mock('@/lib/core/utils/request', () => requestUtilsMock) import { GET, POST } from '@/app/api/workflows/[id]/variables/route' @@ -39,7 +32,7 @@ describe('Workflow Variables API Route', () => { describe('GET /api/workflows/[id]/variables', () => { it('should return 401 when user is not authenticated', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: false, error: 'Authentication required', }) @@ -55,12 +48,12 @@ describe('Workflow Variables API Route', () => { }) it('should return 404 when workflow does not exist', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 404, message: 'Workflow not found', @@ -88,12 +81,12 @@ describe('Workflow Variables API Route', () => { }, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: mockWorkflow, @@ -120,12 +113,12 @@ describe('Workflow Variables API Route', () => { }, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: mockWorkflow, @@ -150,12 +143,12 @@ describe('Workflow Variables API Route', () => { variables: {}, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 403, message: 'Unauthorized: Access denied to read this workflow', @@ -183,12 +176,12 @@ describe('Workflow Variables API Route', () => { }, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: mockWorkflow, @@ -215,12 +208,12 @@ describe('Workflow Variables API Route', () => { variables: {}, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: mockWorkflow, @@ -258,12 +251,12 @@ describe('Workflow Variables API Route', () => { variables: {}, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: false, status: 403, message: 'Unauthorized: Access denied to write this workflow', @@ -302,12 +295,12 @@ describe('Workflow Variables API Route', () => { variables: {}, } - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValueOnce({ allowed: true, status: 200, workflow: mockWorkflow, @@ -332,12 +325,12 @@ describe('Workflow Variables API Route', () => { describe('Error handling', () => { it('should handle database errors gracefully', async () => { - mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValueOnce({ success: true, userId: 'user-123', authType: 'session', }) - mockAuthorizeWorkflowByWorkspacePermission.mockRejectedValueOnce( + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission.mockRejectedValueOnce( new Error('Database connection failed') ) diff --git a/apps/sim/app/api/workflows/route.test.ts b/apps/sim/app/api/workflows/route.test.ts index af669d691c5..ab64bd4742b 100644 --- a/apps/sim/app/api/workflows/route.test.ts +++ b/apps/sim/app/api/workflows/route.test.ts @@ -1,24 +1,29 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + auditMock, + createMockRequest, + hybridAuthMock, + hybridAuthMockFns, + permissionsMock, + permissionsMockFns, + schemaMock, + workflowsApiUtilsMock, + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, +} from '@sim/testing' import { drizzleOrmMock } from '@sim/testing/mocks' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockCheckSessionOrInternalAuth, - mockGetUserEntityPermissions, - mockWorkflowCreated, - mockDbSelect, - mockDbInsert, -} = vi.hoisted(() => ({ - mockCheckSessionOrInternalAuth: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), +const { mockWorkflowCreated, mockDbSelect, mockDbInsert } = vi.hoisted(() => ({ mockWorkflowCreated: vi.fn(), mockDbSelect: vi.fn(), mockDbInsert: vi.fn(), })) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + vi.mock('drizzle-orm', () => ({ ...drizzleOrmMock, min: vi.fn((field) => ({ type: 'min', field })), @@ -38,55 +43,15 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - workflowFolder: { - id: 'id', - userId: 'userId', - parentId: 'parentId', - updatedAt: 'updatedAt', - workspaceId: 'workspaceId', - sortOrder: 'sortOrder', - createdAt: 'createdAt', - }, - workflow: { - id: 'id', - folderId: 'folderId', - userId: 'userId', - name: 'name', - archivedAt: 'archivedAt', - updatedAt: 'updatedAt', - workspaceId: 'workspaceId', - sortOrder: 'sortOrder', - createdAt: 'createdAt', - }, - permissions: { - entityId: 'entityId', - userId: 'userId', - entityType: 'entityType', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/audit/log', () => ({ - recordAudit: vi.fn(), - AuditAction: { WORKFLOW_CREATED: 'workflow.created' }, - AuditResourceType: { WORKFLOW: 'workflow' }, -})) +vi.mock('@/lib/audit/log', () => auditMock) -vi.mock('@/lib/auth/hybrid', () => ({ - AuthType: { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt' }, - checkHybridAuth: vi.fn(), - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, - checkInternalAuth: vi.fn(), -})) +vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: (...args: unknown[]) => mockGetUserEntityPermissions(...args), - workspaceExists: vi.fn(), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) -vi.mock('@/app/api/workflows/utils', () => ({ - verifyWorkspaceMembership: vi.fn(), -})) +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/lib/core/telemetry', () => ({ PlatformEvents: { @@ -102,9 +67,7 @@ vi.mock('@/lib/workflows/defaults', () => ({ }), })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - saveWorkflowToNormalizedTables: vi.fn().mockResolvedValue({ success: true }), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) import { POST } from '@/app/api/workflows/route' @@ -116,13 +79,16 @@ describe('Workflows API Route - POST ordering', () => { randomUUID: vi.fn().mockReturnValue('workflow-new-id'), }) - mockCheckSessionOrInternalAuth.mockResolvedValue({ + hybridAuthMockFns.mockCheckSessionOrInternalAuth.mockResolvedValue({ success: true, userId: 'user-123', userName: 'Test User', userEmail: 'test@example.com', }) mockGetUserEntityPermissions.mockResolvedValue('write') + workflowsPersistenceUtilsMockFns.mockSaveWorkflowToNormalizedTables.mockResolvedValue({ + success: true, + }) }) it('uses top insertion against mixed siblings (folders + workflows)', async () => { diff --git a/apps/sim/app/api/workflows/route.ts b/apps/sim/app/api/workflows/route.ts index f96bd6d352f..2a61e33623a 100644 --- a/apps/sim/app/api/workflows/route.ts +++ b/apps/sim/app/api/workflows/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { permissions, workflow, workflowFolder } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, asc, eq, inArray, isNull, min, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { buildDefaultWorkflowArtifacts } from '@/lib/workflows/defaults' diff --git a/apps/sim/app/api/workspaces/[id]/_preview/create-preview-route.ts b/apps/sim/app/api/workspaces/[id]/_preview/create-preview-route.ts index 495dd9ead38..a369f9472a9 100644 --- a/apps/sim/app/api/workspaces/[id]/_preview/create-preview-route.ts +++ b/apps/sim/app/api/workspaces/[id]/_preview/create-preview-route.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { toError } from '@/lib/core/utils/helpers' import { MAX_DOCUMENT_PREVIEW_CODE_BYTES } from '@/lib/execution/constants' import { runSandboxTask } from '@/lib/execution/sandbox/run-task' import { verifyWorkspaceMembership } from '@/app/api/workflows/utils' diff --git a/apps/sim/app/api/workspaces/[id]/api-keys/route.ts b/apps/sim/app/api/workspaces/[id]/api-keys/route.ts index 4c156d06f94..261b60c6d2f 100644 --- a/apps/sim/app/api/workspaces/[id]/api-keys/route.ts +++ b/apps/sim/app/api/workspaces/[id]/api-keys/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { apiKey } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -9,7 +10,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { PlatformEvents } from '@/lib/core/telemetry' import { generateRequestId } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { getUserEntityPermissions, getWorkspaceById } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/workspaces/[id]/byok-keys/route.ts b/apps/sim/app/api/workspaces/[id]/byok-keys/route.ts index 5ccda1fae77..95abedccca6 100644 --- a/apps/sim/app/api/workspaces/[id]/byok-keys/route.ts +++ b/apps/sim/app/api/workspaces/[id]/byok-keys/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { workspaceBYOKKeys } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -8,7 +9,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { decryptSecret, encryptSecret } from '@/lib/core/security/encryption' import { generateRequestId } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { getUserEntityPermissions, getWorkspaceById } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/workspaces/[id]/docx/preview/route.test.ts b/apps/sim/app/api/workspaces/[id]/docx/preview/route.test.ts index 17075958685..3b536804dd0 100644 --- a/apps/sim/app/api/workspaces/[id]/docx/preview/route.test.ts +++ b/apps/sim/app/api/workspaces/[id]/docx/preview/route.test.ts @@ -1,23 +1,25 @@ /** * @vitest-environment node */ +import { + authMock, + authMockFns, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' import { MAX_DOCUMENT_PREVIEW_CODE_BYTES } from '@/lib/execution/constants' -const { mockGetSession, mockVerifyWorkspaceMembership, mockRunSandboxTask } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockVerifyWorkspaceMembership: vi.fn(), +const { mockRunSandboxTask } = vi.hoisted(() => ({ mockRunSandboxTask: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +const mockVerifyWorkspaceMembership = workflowsApiUtilsMockFns.mockVerifyWorkspaceMembership -vi.mock('@/app/api/workflows/utils', () => ({ - verifyWorkspaceMembership: mockVerifyWorkspaceMembership, -})) +vi.mock('@/lib/auth', () => authMock) + +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/lib/execution/sandbox/run-task', () => ({ runSandboxTask: mockRunSandboxTask, @@ -30,7 +32,7 @@ const DOCX_MIME = 'application/vnd.openxmlformats-officedocument.wordprocessingm describe('DOCX preview API route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) mockVerifyWorkspaceMembership.mockResolvedValue(true) mockRunSandboxTask.mockResolvedValue(Buffer.from('PK\x03\x04docx')) }) @@ -106,7 +108,7 @@ describe('DOCX preview API route', () => { }) it('returns 401 for unauthenticated requests', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest( 'http://localhost:3000/api/workspaces/workspace-1/docx/preview', diff --git a/apps/sim/app/api/workspaces/[id]/environment/route.ts b/apps/sim/app/api/workspaces/[id]/environment/route.ts index 67b1eddeb7a..14d17a4cb27 100644 --- a/apps/sim/app/api/workspaces/[id]/environment/route.ts +++ b/apps/sim/app/api/workspaces/[id]/environment/route.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { workspaceEnvironment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -8,7 +9,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { encryptSecret } from '@/lib/core/security/encryption' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { syncWorkspaceEnvCredentials } from '@/lib/credentials/environment' import { getPersonalAndWorkspaceEnv } from '@/lib/environment/utils' import { getUserEntityPermissions, getWorkspaceById } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/workspaces/[id]/inbox/senders/route.ts b/apps/sim/app/api/workspaces/[id]/inbox/senders/route.ts index 488f819a48f..21d20c688db 100644 --- a/apps/sim/app/api/workspaces/[id]/inbox/senders/route.ts +++ b/apps/sim/app/api/workspaces/[id]/inbox/senders/route.ts @@ -1,11 +1,11 @@ import { db, mothershipInboxAllowedSender, permissions, user } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { getSession } from '@/lib/auth' import { hasInboxAccess } from '@/lib/billing/core/subscription' -import { generateId } from '@/lib/core/utils/uuid' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' const logger = createLogger('InboxSendersAPI') diff --git a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts index a2cf4ad4848..050e21bfccb 100644 --- a/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts +++ b/apps/sim/app/api/workspaces/[id]/notifications/[notificationId]/test/route.ts @@ -2,6 +2,8 @@ import { createHmac } from 'crypto' import { db } from '@sim/db' import { account, workspaceNotificationSubscription } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { @@ -12,9 +14,7 @@ import { import { getSession } from '@/lib/auth' import { decryptSecret } from '@/lib/core/security/encryption' import { secureFetchWithValidation } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/app/api/workspaces/[id]/notifications/route.ts b/apps/sim/app/api/workspaces/[id]/notifications/route.ts index 3ad7532f8e8..14b9fe56f5d 100644 --- a/apps/sim/app/api/workspaces/[id]/notifications/route.ts +++ b/apps/sim/app/api/workspaces/[id]/notifications/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { workflow, workspaceNotificationSubscription } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { encryptSecret } from '@/lib/core/security/encryption' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' import { MAX_EMAIL_RECIPIENTS, MAX_NOTIFICATIONS_PER_TYPE, MAX_WORKFLOW_IDS } from './constants' diff --git a/apps/sim/app/api/workspaces/[id]/pdf/preview/route.test.ts b/apps/sim/app/api/workspaces/[id]/pdf/preview/route.test.ts index e9592f3ed76..095eda1662b 100644 --- a/apps/sim/app/api/workspaces/[id]/pdf/preview/route.test.ts +++ b/apps/sim/app/api/workspaces/[id]/pdf/preview/route.test.ts @@ -1,23 +1,25 @@ /** * @vitest-environment node */ +import { + authMock, + authMockFns, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' import { MAX_DOCUMENT_PREVIEW_CODE_BYTES } from '@/lib/execution/constants' -const { mockGetSession, mockVerifyWorkspaceMembership, mockRunSandboxTask } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockVerifyWorkspaceMembership: vi.fn(), +const { mockRunSandboxTask } = vi.hoisted(() => ({ mockRunSandboxTask: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +const mockVerifyWorkspaceMembership = workflowsApiUtilsMockFns.mockVerifyWorkspaceMembership -vi.mock('@/app/api/workflows/utils', () => ({ - verifyWorkspaceMembership: mockVerifyWorkspaceMembership, -})) +vi.mock('@/lib/auth', () => authMock) + +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/lib/execution/sandbox/run-task', () => ({ runSandboxTask: mockRunSandboxTask, @@ -28,7 +30,7 @@ import { POST } from '@/app/api/workspaces/[id]/pdf/preview/route' describe('PDF preview API route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) mockVerifyWorkspaceMembership.mockResolvedValue(true) mockRunSandboxTask.mockResolvedValue(Buffer.from('%PDF-test')) }) @@ -104,7 +106,7 @@ describe('PDF preview API route', () => { }) it('returns 401 for unauthenticated requests', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest( 'http://localhost:3000/api/workspaces/workspace-1/pdf/preview', diff --git a/apps/sim/app/api/workspaces/[id]/permissions/route.ts b/apps/sim/app/api/workspaces/[id]/permissions/route.ts index e7ee5385597..d5add813020 100644 --- a/apps/sim/app/api/workspaces/[id]/permissions/route.ts +++ b/apps/sim/app/api/workspaces/[id]/permissions/route.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { permissions, user, workspace, workspaceEnvironment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { syncWorkspaceEnvCredentials } from '@/lib/credentials/environment' import { captureServerEvent } from '@/lib/posthog/server' import { diff --git a/apps/sim/app/api/workspaces/[id]/pptx/preview/route.test.ts b/apps/sim/app/api/workspaces/[id]/pptx/preview/route.test.ts index 776ba4120e4..d46479841a3 100644 --- a/apps/sim/app/api/workspaces/[id]/pptx/preview/route.test.ts +++ b/apps/sim/app/api/workspaces/[id]/pptx/preview/route.test.ts @@ -1,23 +1,25 @@ /** * @vitest-environment node */ +import { + authMock, + authMockFns, + workflowsApiUtilsMock, + workflowsApiUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' import { MAX_DOCUMENT_PREVIEW_CODE_BYTES } from '@/lib/execution/constants' -const { mockGetSession, mockVerifyWorkspaceMembership, mockRunSandboxTask } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), - mockVerifyWorkspaceMembership: vi.fn(), +const { mockRunSandboxTask } = vi.hoisted(() => ({ mockRunSandboxTask: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +const mockVerifyWorkspaceMembership = workflowsApiUtilsMockFns.mockVerifyWorkspaceMembership -vi.mock('@/app/api/workflows/utils', () => ({ - verifyWorkspaceMembership: mockVerifyWorkspaceMembership, -})) +vi.mock('@/lib/auth', () => authMock) + +vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) vi.mock('@/lib/execution/sandbox/run-task', () => ({ runSandboxTask: mockRunSandboxTask, @@ -30,7 +32,7 @@ const PPTX_MIME = 'application/vnd.openxmlformats-officedocument.presentationml. describe('PPTX preview API route', () => { beforeEach(() => { vi.clearAllMocks() - mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-1' } }) mockVerifyWorkspaceMembership.mockResolvedValue(true) mockRunSandboxTask.mockResolvedValue(Buffer.from('PK\x03\x04pptx')) }) @@ -106,7 +108,7 @@ describe('PPTX preview API route', () => { }) it('returns 401 for unauthenticated requests', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest( 'http://localhost:3000/api/workspaces/workspace-1/pptx/preview', diff --git a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts index 5d1681f1052..8b213f3abf7 100644 --- a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts +++ b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.test.ts @@ -1,10 +1,18 @@ -import { auditMock, createSession, createWorkspaceRecord, loggerMock } from '@sim/testing' +import { + auditMock, + authMock, + authMockFns, + createSession, + createWorkspaceRecord, + permissionsMock, + permissionsMockFns, + schemaMock, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' -const mockGetSession = vi.fn() -const mockHasWorkspaceAdminAccess = vi.fn() -const mockGetWorkspaceById = vi.fn() +const mockHasWorkspaceAdminAccess = permissionsMockFns.mockHasWorkspaceAdminAccess +const mockGetWorkspaceById = permissionsMockFns.mockGetWorkspaceById let dbSelectResults: any[] = [] let dbSelectCallIndex = 0 @@ -57,22 +65,14 @@ const mockDbTransaction = vi.fn().mockImplementation(async (callback: any) => { }) }) -vi.mock('@/lib/auth', () => ({ - getSession: () => mockGetSession(), -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - hasWorkspaceAdminAccess: (userId: string, workspaceId: string) => - mockHasWorkspaceAdminAccess(userId, workspaceId), - getWorkspaceById: (id: string) => mockGetWorkspaceById(id), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@/lib/credentials/environment', () => ({ syncWorkspaceEnvCredentials: vi.fn().mockResolvedValue(undefined), })) -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/audit/log', () => auditMock) vi.mock('@/lib/core/utils/urls', () => ({ @@ -105,37 +105,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - workspaceInvitation: { - id: 'id', - workspaceId: 'workspaceId', - email: 'email', - inviterId: 'inviterId', - status: 'status', - token: 'token', - permissions: 'permissions', - expiresAt: 'expiresAt', - }, - workspace: { - id: 'id', - name: 'name', - }, - user: { - id: 'id', - email: 'email', - }, - permissions: { - id: 'id', - entityType: 'entityType', - entityId: 'entityId', - userId: 'userId', - permissionType: 'permissionType', - }, - workspaceEnvironment: { - workspaceId: 'workspaceId', - variables: 'variables', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn((a: unknown, b: unknown) => ({ type: 'eq', a, b })), @@ -143,7 +113,7 @@ vi.mock('drizzle-orm', () => ({ isNull: vi.fn((field: unknown) => ({ type: 'isNull', field })), })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn().mockReturnValue('mock-uuid-1234'), generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -193,7 +163,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { describe('GET /api/workspaces/invitations/[invitationId]', () => { it('should return invitation details when caller is the invitee', async () => { const session = createSession({ userId: mockUser.id, email: 'invited@example.com' }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(false) dbSelectResults = [[mockInvitation], [mockWorkspace]] @@ -214,7 +184,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return invitation details when caller is a workspace admin', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(true) dbSelectResults = [[mockInvitation], [mockWorkspace]] @@ -235,7 +205,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return 403 when caller is neither invitee nor workspace admin', async () => { const session = createSession({ userId: mockUser.id, email: 'unrelated@example.com' }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(false) dbSelectResults = [[mockInvitation], [mockWorkspace]] @@ -250,7 +220,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { }) it('should redirect to login when unauthenticated with token', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest( 'http://localhost/api/workspaces/invitations/token-abc123?token=token-abc123' @@ -266,7 +236,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { }) it('should return 401 when unauthenticated without token', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest('http://localhost/api/workspaces/invitations/invitation-789') const params = Promise.resolve({ invitationId: 'invitation-789' }) @@ -284,7 +254,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [ [mockInvitation], @@ -313,7 +283,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) const expiredInvitation = { ...mockInvitation, @@ -342,7 +312,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'wrong@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [ [mockInvitation], @@ -366,7 +336,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return 404 when invitation not found (without token)', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [[]] const request = new NextRequest('http://localhost/api/workspaces/invitations/non-existent') @@ -381,7 +351,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should redirect to error page with token preserved when invitation not found (with token)', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [[]] const request = new NextRequest( @@ -404,7 +374,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) const acceptedInvitation = { ...mockInvitation, @@ -433,7 +403,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [[mockInvitation], []] @@ -457,7 +427,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [[mockInvitation], [mockWorkspace], []] @@ -481,7 +451,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'wrong@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [ [mockInvitation], @@ -511,7 +481,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'wrong@example.com', name: 'Wrong User', }) - mockGetSession.mockResolvedValue(wrongSession) + authMockFns.mockGetSession.mockResolvedValue(wrongSession) dbSelectResults = [ [mockInvitation], @@ -540,7 +510,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { email: 'invited@example.com', name: mockUser.name, }) - mockGetSession.mockResolvedValue(correctSession) + authMockFns.mockGetSession.mockResolvedValue(correctSession) dbSelectResults = [ [mockInvitation], @@ -566,7 +536,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { describe('DELETE /api/workspaces/invitations/[invitationId]', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const request = new NextRequest( 'http://localhost/api/workspaces/invitations/invitation-789', @@ -583,7 +553,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return 404 when invitation does not exist', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) dbSelectResults = [[]] const request = new NextRequest('http://localhost/api/workspaces/invitations/non-existent', { @@ -600,7 +570,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return 403 when user lacks admin access', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(false) dbSelectResults = [[mockInvitation]] @@ -620,7 +590,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should return 400 when trying to delete non-pending invitation', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(true) const acceptedInvitation = { ...mockInvitation, status: 'accepted' } @@ -641,7 +611,7 @@ describe('Workspace Invitation [invitationId] API Route', () => { it('should successfully delete pending invitation when user has admin access', async () => { const session = createSession({ userId: mockUser.id, email: mockUser.email }) - mockGetSession.mockResolvedValue(session) + authMockFns.mockGetSession.mockResolvedValue(session) mockHasWorkspaceAdminAccess.mockResolvedValue(true) dbSelectResults = [[mockInvitation]] diff --git a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts index d76322d4e5f..2580c0df140 100644 --- a/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts +++ b/apps/sim/app/api/workspaces/invitations/[invitationId]/route.ts @@ -9,13 +9,13 @@ import { workspaceInvitation, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { WorkspaceInvitationEmail } from '@/components/emails' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { syncWorkspaceEnvCredentials } from '@/lib/credentials/environment' import { sendEmail } from '@/lib/messaging/email/mailer' import { getFromEmailAddress } from '@/lib/messaging/email/utils' diff --git a/apps/sim/app/api/workspaces/invitations/route.test.ts b/apps/sim/app/api/workspaces/invitations/route.test.ts index 20b697fd8e1..089fd5bd19a 100644 --- a/apps/sim/app/api/workspaces/invitations/route.test.ts +++ b/apps/sim/app/api/workspaces/invitations/route.test.ts @@ -1,11 +1,17 @@ /** * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + authMock, + authMockFns, + createMockRequest, + permissionsMock, + permissionsMockFns, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockGetSession, mockInsertValues, mockDbResults, mockResendSend, @@ -15,9 +21,7 @@ const { mockGetEmailDomain, mockValidateInvitationsAllowed, mockRandomUUID, - mockGetWorkspaceById, } = vi.hoisted(() => { - const mockGetSession = vi.fn() const mockInsertValues = vi.fn().mockResolvedValue(undefined) const mockResendSend = vi.fn().mockResolvedValue({ id: 'email-id' }) const mockRender = vi.fn().mockResolvedValue('email content') @@ -25,7 +29,6 @@ const { const mockGetEmailDomain = vi.fn().mockReturnValue('sim.ai') const mockValidateInvitationsAllowed = vi.fn().mockResolvedValue(undefined) const mockRandomUUID = vi.fn().mockReturnValue('mock-uuid-1234') - const mockGetWorkspaceById = vi.fn() const mockDbResults: { value: any[] } = { value: [] } @@ -44,7 +47,6 @@ const { } return { - mockGetSession, mockInsertValues, mockDbResults, mockResendSend, @@ -54,11 +56,12 @@ const { mockGetEmailDomain, mockValidateInvitationsAllowed, mockRandomUUID, - mockGetWorkspaceById, } }) -vi.mock('@/lib/core/utils/uuid', () => ({ +const mockGetWorkspaceById = permissionsMockFns.mockGetWorkspaceById + +vi.mock('@sim/utils/id', () => ({ generateId: mockRandomUUID, generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -66,38 +69,13 @@ vi.mock('@/lib/core/utils/uuid', () => ({ ), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@sim/db', () => ({ db: mockDbChain, })) -vi.mock('@sim/db/schema', () => ({ - user: { id: 'user_id', email: 'user_email', name: 'user_name', image: 'user_image' }, - workspace: { id: 'workspace_id', name: 'workspace_name', ownerId: 'owner_id' }, - permissions: { - userId: 'user_id', - entityId: 'entity_id', - entityType: 'entity_type', - permissionType: 'permission_type', - }, - workspaceInvitation: { - id: 'invitation_id', - workspaceId: 'workspace_id', - email: 'invitation_email', - status: 'invitation_status', - token: 'invitation_token', - inviterId: 'inviter_id', - role: 'invitation_role', - permissions: 'invitation_permissions', - expiresAt: 'expires_at', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, - permissionTypeEnum: { enumValues: ['admin', 'write', 'read'] as const }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('resend', () => ({ Resend: vi.fn().mockImplementation(() => ({ @@ -118,9 +96,7 @@ vi.mock('@/lib/core/config/env', async () => { return createEnvMock() }) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getWorkspaceById: mockGetWorkspaceById, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@/lib/core/utils/urls', () => ({ getEmailDomain: mockGetEmailDomain, @@ -131,15 +107,6 @@ vi.mock('@/lib/audit/log', async () => { return auditMock }) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - vi.mock('drizzle-orm', () => ({ and: vi.fn().mockImplementation((...args: any[]) => ({ type: 'and', conditions: args })), eq: vi.fn().mockImplementation((field: any, value: any) => ({ type: 'eq', field, value })), @@ -193,7 +160,7 @@ describe('Workspace Invitations API Route', () => { describe('GET /api/workspaces/invitations', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('GET') const response = await GET(req) @@ -204,7 +171,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return empty invitations when user has no workspaces', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockDbResults.value = [[], []] // No workspaces, no invitations const req = createMockRequest('GET') @@ -216,7 +183,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return invitations for user workspaces', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const mockWorkspaces = [{ id: 'workspace-1' }, { id: 'workspace-2' }] const mockInvitations = [ { id: 'invitation-1', workspaceId: 'workspace-1', email: 'test@example.com' }, @@ -235,7 +202,7 @@ describe('Workspace Invitations API Route', () => { describe('POST /api/workspaces/invitations', () => { it('should return 401 when user is not authenticated', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const req = createMockRequest('POST', { workspaceId: 'workspace-1', @@ -249,7 +216,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 400 when workspaceId is missing', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { email: 'test@example.com' }) const response = await POST(req) @@ -260,7 +227,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 400 when email is missing', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { workspaceId: 'workspace-1' }) const response = await POST(req) @@ -271,7 +238,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 400 when permission type is invalid', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) const req = createMockRequest('POST', { workspaceId: 'workspace-1', @@ -288,7 +255,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 403 when user does not have admin permissions', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockDbResults.value = [[]] // No admin permissions found const req = createMockRequest('POST', { @@ -303,7 +270,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 404 when workspace is not found', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockGetWorkspaceById.mockResolvedValueOnce(null) mockDbResults.value = [ [{ permissionType: 'admin' }], // User has admin permissions @@ -321,7 +288,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 400 when user already has workspace access', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockDbResults.value = [ [{ permissionType: 'admin' }], // User has admin permissions [mockWorkspace], // Workspace exists @@ -344,7 +311,7 @@ describe('Workspace Invitations API Route', () => { }) it('should return 400 when invitation already exists', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123' } }) mockDbResults.value = [ [{ permissionType: 'admin' }], // User has admin permissions [mockWorkspace], // Workspace exists @@ -367,7 +334,7 @@ describe('Workspace Invitations API Route', () => { }) it('should successfully create invitation and send email', async () => { - mockGetSession.mockResolvedValue({ + authMockFns.mockGetSession.mockResolvedValue({ user: { id: 'user-123', name: 'Test User', email: 'sender@example.com' }, }) mockDbResults.value = [ diff --git a/apps/sim/app/api/workspaces/invitations/route.ts b/apps/sim/app/api/workspaces/invitations/route.ts index 020e350dbb2..ff1edf8d55c 100644 --- a/apps/sim/app/api/workspaces/invitations/route.ts +++ b/apps/sim/app/api/workspaces/invitations/route.ts @@ -9,6 +9,7 @@ import { workspaceInvitation, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { WorkspaceInvitationEmail } from '@/components/emails' @@ -16,7 +17,6 @@ import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { PlatformEvents } from '@/lib/core/telemetry' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { getFromEmailAddress } from '@/lib/messaging/email/utils' import { captureServerEvent } from '@/lib/posthog/server' diff --git a/apps/sim/app/api/workspaces/route.ts b/apps/sim/app/api/workspaces/route.ts index f8350ec88bd..8bce8063fad 100644 --- a/apps/sim/app/api/workspaces/route.ts +++ b/apps/sim/app/api/workspaces/route.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { permissions, settings, workflow, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, desc, eq, isNull, sql } from 'drizzle-orm' import { NextResponse } from 'next/server' import { z } from 'zod' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { getSession } from '@/lib/auth' import { PlatformEvents } from '@/lib/core/telemetry' -import { generateId } from '@/lib/core/utils/uuid' import { captureServerEvent } from '@/lib/posthog/server' import { buildDefaultWorkflowArtifacts } from '@/lib/workflows/defaults' import { saveWorkflowToNormalizedTables } from '@/lib/workflows/persistence/utils' diff --git a/apps/sim/app/chat/[identifier]/chat.tsx b/apps/sim/app/chat/[identifier]/chat.tsx index d179385c59d..6a37aeb58f5 100644 --- a/apps/sim/app/chat/[identifier]/chat.tsx +++ b/apps/sim/app/chat/[identifier]/chat.tsx @@ -2,8 +2,8 @@ import { type RefObject, useCallback, useEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { noop } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' import { getFormattedGitHubStars } from '@/app/(landing)/actions/github' import { ChatErrorState, diff --git a/apps/sim/app/chat/components/input/input.tsx b/apps/sim/app/chat/components/input/input.tsx index 2c9d1131be9..c1d23aa4cab 100644 --- a/apps/sim/app/chat/components/input/input.tsx +++ b/apps/sim/app/chat/components/input/input.tsx @@ -3,10 +3,10 @@ import type React from 'react' import { useCallback, useLayoutEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { ArrowUp, Mic, Paperclip, X } from 'lucide-react' import { Badge, Tooltip } from '@/components/emcn' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { CHAT_ACCEPT_ATTRIBUTE } from '@/lib/uploads/utils/validation' import { VoiceInput } from '@/app/chat/components/input/voice-input' diff --git a/apps/sim/app/chat/components/message/components/file-download.tsx b/apps/sim/app/chat/components/message/components/file-download.tsx index fc148fc9da4..a54c5bf9978 100644 --- a/apps/sim/app/chat/components/message/components/file-download.tsx +++ b/apps/sim/app/chat/components/message/components/file-download.tsx @@ -2,10 +2,10 @@ import { useState } from 'react' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import { ArrowDown, Download, Loader2, Music } from 'lucide-react' import { Button } from '@/components/emcn' import { DefaultFileIcon, getDocumentIcon } from '@/components/icons/document-icons' -import { sleep } from '@/lib/core/utils/helpers' import type { ChatFile } from '@/app/chat/components/message/message' const logger = createLogger('ChatFileDownload') diff --git a/apps/sim/app/chat/hooks/use-chat-streaming.ts b/apps/sim/app/chat/hooks/use-chat-streaming.ts index 807cb0a1733..e673764e07f 100644 --- a/apps/sim/app/chat/hooks/use-chat-streaming.ts +++ b/apps/sim/app/chat/hooks/use-chat-streaming.ts @@ -2,8 +2,8 @@ import { useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { isUserFileWithMetadata } from '@/lib/core/utils/user-file' -import { generateId } from '@/lib/core/utils/uuid' import type { ChatFile, ChatMessage } from '@/app/chat/components/message/message' import { CHAT_ERROR_MESSAGES } from '@/app/chat/constants' diff --git a/apps/sim/app/credential-account/[token]/page.tsx b/apps/sim/app/credential-account/[token]/page.tsx index 4f782725b2f..5ecbae4081a 100644 --- a/apps/sim/app/credential-account/[token]/page.tsx +++ b/apps/sim/app/credential-account/[token]/page.tsx @@ -1,6 +1,7 @@ 'use client' import { useCallback, useEffect, useState } from 'react' +import { createLogger } from '@sim/logger' import { Mail } from 'lucide-react' import { useParams, useRouter } from 'next/navigation' import { GmailIcon, OutlookIcon } from '@/components/icons' @@ -8,6 +9,8 @@ import { client, useSession } from '@/lib/auth/auth-client' import { getProviderDisplayName, isPollingProvider } from '@/lib/credential-sets/providers' import { InviteLayout, InviteStatusCard } from '@/app/invite/components' +const logger = createLogger('CredentialAccount') + interface InvitationInfo { credentialSetName: string organizationName: string @@ -113,7 +116,7 @@ export default function CredentialAccountInvitePage() { }) } catch (oauthError) { // OAuth redirect will happen, this catch is for any pre-redirect errors - console.error('OAuth initiation error:', oauthError) + logger.error('OAuth initiation error:', oauthError) // If OAuth fails, redirect to workspace where they can connect manually router.push('/workspace') } diff --git a/apps/sim/app/ingest/[[...path]]/route.ts b/apps/sim/app/ingest/[[...path]]/route.ts index 9084c5c0f41..18570b3e8c5 100644 --- a/apps/sim/app/ingest/[[...path]]/route.ts +++ b/apps/sim/app/ingest/[[...path]]/route.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { type NextRequest, NextResponse } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('PostHogProxy') diff --git a/apps/sim/app/resume/[workflowId]/[executionId]/resume-page-client.tsx b/apps/sim/app/resume/[workflowId]/[executionId]/resume-page-client.tsx index f6d2ef0182c..f91b90ed9c2 100644 --- a/apps/sim/app/resume/[workflowId]/[executionId]/resume-page-client.tsx +++ b/apps/sim/app/resume/[workflowId]/[executionId]/resume-page-client.tsx @@ -1,8 +1,12 @@ 'use client' import { useCallback, useEffect, useMemo, useState } from 'react' +import { createLogger } from '@sim/logger' import { RefreshCw } from 'lucide-react' import { useRouter } from 'next/navigation' + +const logger = createLogger('ResumePage') + import { Badge, Button, @@ -592,7 +596,7 @@ export default function ResumeExecutionPage({ } } catch (err) { if ((err as any)?.name !== 'AbortError') { - console.error('Failed to load pause context detail', err) + logger.error('Failed to load pause context detail', err) } } finally { setLoadingDetail(false) @@ -626,7 +630,7 @@ export default function ResumeExecutionPage({ setSelectedContextId(first) } } catch (err) { - console.error('Failed to refresh execution detail', err) + logger.error('Failed to refresh execution detail', err) } finally { setRefreshingExecution(false) } @@ -691,7 +695,7 @@ export default function ResumeExecutionPage({ setFormErrors({}) } } catch (err) { - console.error('Failed to refresh pause context detail', err) + logger.error('Failed to refresh pause context detail', err) } finally { if (showLoader) setLoadingDetail(false) } diff --git a/apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/resource-content.tsx b/apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/resource-content.tsx index 35d8c2e115b..dd04962691d 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/resource-content.tsx +++ b/apps/sim/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-content/resource-content.tsx @@ -2,6 +2,7 @@ import { lazy, memo, Suspense, useCallback, useEffect, useMemo, useState } from 'react' import { createLogger } from '@sim/logger' +import { formatDuration } from '@sim/utils/formatting' import { Square } from 'lucide-react' import { useRouter } from 'next/navigation' import { Button, Eye, PlayOutline, Skeleton, Tooltip } from '@/components/emcn' @@ -21,7 +22,6 @@ import { reportManualRunToolStop, } from '@/lib/copilot/tools/client/run-tool-execution' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { filterHiddenOutputKeys } from '@/lib/logs/execution/trace-spans/trace-spans' import { downloadWorkspaceFile, diff --git a/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts b/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts index bcdad8292e7..170e55734fc 100644 --- a/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts +++ b/apps/sim/app/workspace/[workspaceId]/home/hooks/use-chat.ts @@ -1,5 +1,8 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' +import { generateId } from '@sim/utils/id' import { useQueryClient } from '@tanstack/react-query' import { usePathname, useRouter } from 'next/navigation' import { toDisplayMessage } from '@/lib/copilot/chat/display-message' @@ -86,8 +89,6 @@ import { reportManualRunToolStop, } from '@/lib/copilot/tools/client/run-tool-execution' import { isWorkflowToolName } from '@/lib/copilot/tools/workflow-tools' -import { sleep, toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { getQueryClient } from '@/app/_shell/providers/get-query-client' import { invalidateResourceQueries } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-registry' diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx index f365755a6d2..6665bd6c997 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/base.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { format } from 'date-fns' import { AlertCircle, Loader2, Pencil, Plus, Tag, X } from 'lucide-react' import { useParams, usePathname, useRouter, useSearchParams } from 'next/navigation' @@ -25,7 +26,6 @@ import { import { Database, DatabaseX } from '@/components/emcn/icons' import { SearchHighlight } from '@/components/ui/search-highlight' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { ADD_CONNECTOR_SEARCH_PARAM } from '@/lib/credentials/client-state' import { ALL_TAG_SLOTS, type AllTagSlot, getFieldTypeForSlot } from '@/lib/knowledge/constants' import type { DocumentSortField, SortOrder } from '@/lib/knowledge/documents/types' diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/base-card/base-card.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/base-card/base-card.tsx index 50933913e03..e14ae0aeee0 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/base-card/base-card.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/base-card/base-card.tsx @@ -1,9 +1,9 @@ 'use client' import { useCallback, useState } from 'react' +import { formatAbsoluteDate, formatRelativeTime } from '@sim/utils/formatting' import { useParams, useRouter } from 'next/navigation' import { Badge, DocumentAttachment, Tooltip } from '@/components/emcn' -import { formatAbsoluteDate, formatRelativeTime } from '@/lib/core/utils/formatting' import { BaseTagsModal } from '@/app/workspace/[workspaceId]/knowledge/[id]/components' import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider' import { useContextMenu } from '@/app/workspace/[workspaceId]/w/components/sidebar/hooks' diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/hooks/use-knowledge-upload.ts b/apps/sim/app/workspace/[workspaceId]/knowledge/hooks/use-knowledge-upload.ts index a38c476c46e..d224172f24c 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/hooks/use-knowledge-upload.ts +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/hooks/use-knowledge-upload.ts @@ -1,7 +1,7 @@ import { useCallback, useState } from 'react' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import { useQueryClient } from '@tanstack/react-query' -import { sleep } from '@/lib/core/utils/helpers' import { getFileExtension, getMimeTypeFromExtension } from '@/lib/uploads/utils/file-utils' import { knowledgeKeys } from '@/hooks/queries/kb/knowledge' diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/components/trace-spans/trace-spans.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/components/trace-spans/trace-spans.tsx index 509654c294b..a6c740a46fa 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/components/trace-spans/trace-spans.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/components/trace-spans/trace-spans.tsx @@ -2,6 +2,7 @@ import type React from 'react' import { memo, useCallback, useMemo, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import { ArrowDown, ArrowUp, Check, Clipboard, Search, X } from 'lucide-react' import { createPortal } from 'react-dom' import { @@ -19,7 +20,6 @@ import { import { Copy as CopyIcon, Search as SearchIcon } from '@/components/emcn/icons' import { AgentSkillsIcon, WorkflowIcon } from '@/components/icons' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { LoopTool } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/subflows/loop/loop-config' import { ParallelTool } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/subflows/parallel/parallel-config' import { getBlock, getBlockByToolName } from '@/blocks' diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/log-details.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/log-details.tsx index a48dc3e8a7f..42e09dd0385 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/log-details.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/log-details/log-details.tsx @@ -1,6 +1,7 @@ 'use client' import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import { ArrowDown, ArrowUp, Check, ChevronUp, Clipboard, Search, X } from 'lucide-react' import { createPortal } from 'react-dom' import { @@ -18,7 +19,6 @@ import { import { Copy as CopyIcon, Search as SearchIcon } from '@/components/emcn/icons' import { BASE_EXECUTION_CHARGE } from '@/lib/billing/constants' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { filterHiddenOutputKeys } from '@/lib/logs/execution/trace-spans/trace-spans' import { workflowBorderColor } from '@/lib/workspaces/colors' import { diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-list/logs-list.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-list/logs-list.tsx index dab1c288f79..2aad8a647b1 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/logs-list/logs-list.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/logs-list/logs-list.tsx @@ -1,13 +1,13 @@ 'use client' import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import { ArrowUpRight, Loader2 } from 'lucide-react' import Link from 'next/link' import { List, type RowComponentProps, useListRef } from 'react-window' import { Badge, buttonVariants } from '@/components/emcn' import { dollarsToCredits } from '@/lib/billing/credits/conversion' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { workflowBorderColor } from '@/lib/workspaces/colors' import { DELETED_WORKFLOW_COLOR, diff --git a/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx b/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx index fa0373e4444..dc2e188432c 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx @@ -1,6 +1,7 @@ 'use client' import { useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import { useQueryClient } from '@tanstack/react-query' import { useParams } from 'next/navigation' import { useShallow } from 'zustand/react/shallow' @@ -16,7 +17,6 @@ import { import { DatePicker } from '@/components/emcn/components/date-picker/date-picker' import { dollarsToCredits } from '@/lib/billing/credits/conversion' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { getEndDateFromTimeRange, getStartDateFromTimeRange, diff --git a/apps/sim/app/workspace/[workspaceId]/logs/utils.ts b/apps/sim/app/workspace/[workspaceId]/logs/utils.ts index 27cc823a195..535ab8000d9 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/utils.ts +++ b/apps/sim/app/workspace/[workspaceId]/logs/utils.ts @@ -1,7 +1,7 @@ import React from 'react' +import { formatDuration } from '@sim/utils/formatting' import { format } from 'date-fns' import { Badge } from '@/components/emcn' -import { formatDuration } from '@/lib/core/utils/formatting' import { getIntegrationMetadata } from '@/lib/logs/get-trigger-options' import { getBlock } from '@/blocks/registry' import { CORE_TRIGGER_TYPES } from '@/stores/logs/filters/types' diff --git a/apps/sim/app/workspace/[workspaceId]/providers/global-commands-provider.tsx b/apps/sim/app/workspace/[workspaceId]/providers/global-commands-provider.tsx index 75d4bafec1d..f58f4ace977 100644 --- a/apps/sim/app/workspace/[workspaceId]/providers/global-commands-provider.tsx +++ b/apps/sim/app/workspace/[workspaceId]/providers/global-commands-provider.tsx @@ -10,9 +10,9 @@ import { useRef, } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useRouter } from 'next/navigation' import { isMacPlatform } from '@/lib/core/utils/platform' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('GlobalCommands') diff --git a/apps/sim/app/workspace/[workspaceId]/scheduled-tasks/scheduled-tasks.tsx b/apps/sim/app/workspace/[workspaceId]/scheduled-tasks/scheduled-tasks.tsx index b6676920122..7bcf7169039 100644 --- a/apps/sim/app/workspace/[workspaceId]/scheduled-tasks/scheduled-tasks.tsx +++ b/apps/sim/app/workspace/[workspaceId]/scheduled-tasks/scheduled-tasks.tsx @@ -2,6 +2,7 @@ import { useCallback, useMemo, useState } from 'react' import { createLogger } from '@sim/logger' +import { formatAbsoluteDate } from '@sim/utils/formatting' import { useParams } from 'next/navigation' import { Button, @@ -13,7 +14,6 @@ import { ModalHeader, } from '@/components/emcn' import { Calendar } from '@/components/emcn/icons' -import { formatAbsoluteDate } from '@/lib/core/utils/formatting' import { parseCronToHumanReadable } from '@/lib/workflows/schedules/utils' import type { FilterTag, diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/api-keys/api-keys.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/api-keys/api-keys.tsx index 7438e59c68b..8b07b87de27 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/api-keys/api-keys.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/api-keys/api-keys.tsx @@ -2,6 +2,7 @@ import { useCallback, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { formatDate } from '@sim/utils/formatting' import { Info, Plus, Search } from 'lucide-react' import { useParams } from 'next/navigation' import { @@ -17,7 +18,6 @@ import { } from '@/components/emcn' import { Input } from '@/components/ui' import { useSession } from '@/lib/auth/auth-client' -import { formatDate } from '@/lib/core/utils/formatting' import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider' import { ApiKeySkeleton } from '@/app/workspace/[workspaceId]/settings/components/api-keys/api-key-skeleton' import { diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/copilot/copilot.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/copilot/copilot.tsx index cb14534f5e7..ac4eda18f41 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/copilot/copilot.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/copilot/copilot.tsx @@ -3,6 +3,7 @@ import { useMemo, useState } from 'react' // import { useParams } from 'next/navigation' import { createLogger } from '@sim/logger' +import { formatDate } from '@sim/utils/formatting' import { Check, Copy, Plus, Search } from 'lucide-react' import { Button, @@ -15,7 +16,6 @@ import { // Switch, } from '@/components/emcn' import { Input } from '@/components/ui' -import { formatDate } from '@/lib/core/utils/formatting' // import { useMcpServers, useUpdateMcpServer } from '@/hooks/queries/mcp' import { CopilotKeySkeleton } from '@/app/workspace/[workspaceId]/settings/components/copilot/copilot-skeleton' import { diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/inbox/inbox-task-list.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/inbox/inbox-task-list.tsx index 69276930a38..795f49e9104 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/inbox/inbox-task-list.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/inbox/inbox-task-list.tsx @@ -1,6 +1,7 @@ 'use client' import { useCallback, useMemo, useState } from 'react' +import { formatRelativeTime } from '@sim/utils/formatting' import { ChevronDown, Paperclip, Search } from 'lucide-react' import { useParams, useRouter } from 'next/navigation' import { @@ -13,7 +14,6 @@ import { DropdownMenuTrigger, } from '@/components/emcn' import { Input } from '@/components/ui' -import { formatRelativeTime } from '@/lib/core/utils/formatting' import { InboxTaskSkeleton } from '@/app/workspace/[workspaceId]/settings/components/inbox/inbox-skeleton' import type { InboxTaskItem } from '@/hooks/queries/inbox' import { useInboxConfig, useInboxTasks } from '@/hooks/queries/inbox' diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/recently-deleted/recently-deleted.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/recently-deleted/recently-deleted.tsx index 48c5dbbc5fd..c8b2e49f7b6 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/recently-deleted/recently-deleted.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/recently-deleted/recently-deleted.tsx @@ -1,11 +1,11 @@ 'use client' import { useMemo, useState } from 'react' +import { formatDate } from '@sim/utils/formatting' import { Folder, Search } from 'lucide-react' import { useParams, useRouter } from 'next/navigation' import { Button, Combobox, SModalTabs, SModalTabsList, SModalTabsTrigger } from '@/components/emcn' import { Input } from '@/components/ui' -import { formatDate } from '@/lib/core/utils/formatting' import { workflowBorderColor } from '@/lib/workspaces/colors' import { RESOURCE_REGISTRY } from '@/app/workspace/[workspaceId]/home/components/mothership-view/components/resource-registry' import type { MothershipResourceType } from '@/app/workspace/[workspaceId]/home/types' diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx index aa71081950a..617d5ff2594 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/subscription/components/credit-balance/credit-balance.tsx @@ -1,6 +1,7 @@ 'use client' import { useEffect, useRef, useState } from 'react' +import { generateId } from '@sim/utils/id' import { Button, Input, @@ -14,7 +15,6 @@ import { ModalTrigger, } from '@/components/emcn' import { dollarsToCredits, formatCredits } from '@/lib/billing/credits/conversion' -import { generateId } from '@/lib/core/utils/uuid' import { usePurchaseCredits } from '@/hooks/queries/subscription' interface CreditBalanceProps { diff --git a/apps/sim/app/workspace/[workspaceId]/settings/components/usage-limit/usage-limit.tsx b/apps/sim/app/workspace/[workspaceId]/settings/components/usage-limit/usage-limit.tsx index ba7ea7ca72b..43ab44f66b1 100644 --- a/apps/sim/app/workspace/[workspaceId]/settings/components/usage-limit/usage-limit.tsx +++ b/apps/sim/app/workspace/[workspaceId]/settings/components/usage-limit/usage-limit.tsx @@ -2,12 +2,12 @@ import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { Check, X } from 'lucide-react' import { Badge, Button } from '@/components/emcn' import { ON_DEMAND_UNLIMITED } from '@/lib/billing/constants' import { formatCredits } from '@/lib/billing/credits/conversion' import { cn } from '@/lib/core/utils/cn' -import { toError } from '@/lib/core/utils/helpers' import { useUpdateOrganizationUsageLimit } from '@/hooks/queries/organization' import { useUpdateUsageLimit } from '@/hooks/queries/subscription' diff --git a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.tsx b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.tsx index 2f9a6fcb9a6..a43cac4137b 100644 --- a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.tsx +++ b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-filter/table-filter.tsx @@ -1,6 +1,7 @@ 'use client' import { memo, useCallback, useMemo, useRef, useState } from 'react' +import { generateShortId } from '@sim/utils/id' import { X } from 'lucide-react' import { Button, @@ -10,7 +11,6 @@ import { DropdownMenuTrigger, } from '@/components/emcn' import { ChevronDown, Plus } from '@/components/emcn/icons' -import { generateShortId } from '@/lib/core/utils/uuid' import type { Filter, FilterRule } from '@/lib/table' import { COMPARISON_OPERATORS } from '@/lib/table/query-builder/constants' import { filterRulesToFilter, filterToRules } from '@/lib/table/query-builder/converters' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx index edd6f1ed408..3d3f79f3d49 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx @@ -2,6 +2,7 @@ import { type KeyboardEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { AlertCircle, ArrowDownToLine, @@ -31,7 +32,6 @@ import { extractPathFromOutputId, parseOutputContentSafely, } from '@/lib/core/utils/response-format' -import { generateId } from '@/lib/core/utils/uuid' import { CHAT_ACCEPT_ATTRIBUTE } from '@/lib/uploads/utils/validation' import { normalizeInputFormatValue } from '@/lib/workflows/input-format' import { StartBlockPath, TriggerUtils } from '@/lib/workflows/triggers/triggers' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/use-chat-file-upload.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/use-chat-file-upload.ts index d86a22312d6..d9c5c45a7ab 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/use-chat-file-upload.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/use-chat-file-upload.ts @@ -1,5 +1,5 @@ import { useCallback, useState } from 'react' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' export interface ChatFile { id: string diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/user-input/hooks/use-file-attachments.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/user-input/hooks/use-file-attachments.ts index a7ac6ff729e..af19b89aeb9 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/user-input/hooks/use-file-attachments.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/user-input/hooks/use-file-attachments.ts @@ -2,7 +2,7 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { resolveFileType } from '@/lib/uploads/utils/file-utils' const logger = createLogger('useFileAttachments') diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/a2a/a2a.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/a2a/a2a.tsx index a5864aea640..85aaee4e1ef 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/a2a/a2a.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/a2a/a2a.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { Check, Clipboard } from 'lucide-react' import { useParams } from 'next/navigation' import { @@ -19,7 +20,6 @@ import { } from '@/components/emcn' import type { AgentAuthentication, AgentCapabilities } from '@/lib/a2a/types' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { normalizeInputFormatValue } from '@/lib/workflows/input-format' import { StartBlockPath, TriggerUtils } from '@/lib/workflows/triggers/triggers' import { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx index 82c09c5817c..92be43d5408 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx @@ -1,6 +1,7 @@ 'use client' import { useEffect, useRef, useState } from 'react' +import { formatDateTime } from '@sim/utils/formatting' import clsx from 'clsx' import { FileText, MoreVertical, Pencil, RotateCcw, SendToBack } from 'lucide-react' import { @@ -12,7 +13,6 @@ import { Skeleton, Tooltip, } from '@/components/emcn' -import { formatDateTime } from '@/lib/core/utils/formatting' import type { WorkflowDeploymentVersionResponse } from '@/lib/workflows/persistence/utils' import { useUpdateDeploymentVersion } from '@/hooks/queries/deployments' import { VersionDescriptionModal } from './version-description-modal' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/document-tag-entry/document-tag-entry.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/document-tag-entry/document-tag-entry.tsx index c3827f33a56..99d02d207d7 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/document-tag-entry/document-tag-entry.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/document-tag-entry/document-tag-entry.tsx @@ -1,6 +1,7 @@ 'use client' import { useMemo, useRef } from 'react' +import { generateId } from '@sim/utils/id' import { Plus } from 'lucide-react' import { Badge, @@ -12,7 +13,6 @@ import { Trash, } from '@/components/emcn' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { FIELD_TYPE_LABELS, getPlaceholderForFieldType } from '@/lib/knowledge/constants' import { formatDisplayText } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/formatted-text' import { TagDropdown } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/dropdown/dropdown.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/dropdown/dropdown.tsx index 09e5399f336..0534816dc25 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/dropdown/dropdown.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/dropdown/dropdown.tsx @@ -1,9 +1,9 @@ import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { generateId } from '@sim/utils/id' import { isEqual } from 'es-toolkit' import { useStoreWithEqualityFn } from 'zustand/traditional' import { Badge } from '@/components/emcn' import { Combobox, type ComboboxOption } from '@/components/emcn/components' -import { generateId } from '@/lib/core/utils/uuid' import { buildCanonicalIndex, resolveDependencyValue } from '@/lib/workflows/subblocks/visibility' import { useSubBlockValue } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/hooks/use-sub-block-value' import { getBlock } from '@/blocks/registry' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/eval-input/eval-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/eval-input/eval-input.tsx index b115eda4327..97e22638656 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/eval-input/eval-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/eval-input/eval-input.tsx @@ -1,10 +1,10 @@ import { useMemo, useRef } from 'react' +import { generateId } from '@sim/utils/id' import { Plus } from 'lucide-react' import { Button, Input, Textarea, Tooltip } from '@/components/emcn' import { Trash } from '@/components/emcn/icons/trash' import { Label } from '@/components/ui/label' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { formatDisplayText } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/formatted-text' import { TagDropdown } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown' import { useSubBlockInput } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/hooks/use-sub-block-input' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/filter-builder/filter-builder.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/filter-builder/filter-builder.tsx index 02cb4b93dad..492f2f09844 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/filter-builder/filter-builder.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/filter-builder/filter-builder.tsx @@ -1,8 +1,8 @@ 'use client' import { useCallback, useMemo } from 'react' +import { generateId } from '@sim/utils/id' import type { ComboboxOption } from '@/components/emcn' -import { generateId } from '@/lib/core/utils/uuid' import { useTableColumns } from '@/lib/table/hooks' import type { FilterRule } from '@/lib/table/query-builder/constants' import { useFilterBuilder } from '@/lib/table/query-builder/use-query-builder' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/knowledge-tag-filters/knowledge-tag-filters.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/knowledge-tag-filters/knowledge-tag-filters.tsx index ec2b3b21254..f8f15fd780d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/knowledge-tag-filters/knowledge-tag-filters.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/knowledge-tag-filters/knowledge-tag-filters.tsx @@ -1,6 +1,7 @@ 'use client' import { useRef } from 'react' +import { generateId } from '@sim/utils/id' import { Plus } from 'lucide-react' import { Badge, @@ -12,7 +13,6 @@ import { Trash, } from '@/components/emcn' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { FIELD_TYPE_LABELS, getPlaceholderForFieldType } from '@/lib/knowledge/constants' import { type FilterFieldType, getOperatorsForFieldType } from '@/lib/knowledge/filters/types' import { formatDisplayText } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/formatted-text' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/sort-builder/sort-builder.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/sort-builder/sort-builder.tsx index c706b8e419c..12213e0b63a 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/sort-builder/sort-builder.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/sort-builder/sort-builder.tsx @@ -1,8 +1,8 @@ 'use client' import { useCallback, useMemo } from 'react' +import { generateId } from '@sim/utils/id' import type { ComboboxOption } from '@/components/emcn' -import { generateId } from '@/lib/core/utils/uuid' import { useTableColumns } from '@/lib/table/hooks' import { SORT_DIRECTIONS, type SortRule } from '@/lib/table/query-builder/constants' import { useSubBlockValue } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/hooks/use-sub-block-value' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/starter/input-format.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/starter/input-format.tsx index 80e1e215c97..4e33f85ed8f 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/starter/input-format.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/starter/input-format.tsx @@ -1,7 +1,7 @@ import { useCallback, useRef } from 'react' +import { generateId } from '@sim/utils/id' import { Plus } from 'lucide-react' import { Trash } from '@/components/emcn/icons/trash' -import { generateId } from '@/lib/core/utils/uuid' import 'prismjs/components/prism-json' import Editor from 'react-simple-code-editor' import { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/table/table.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/table/table.tsx index fc4d27748c0..843eaa42747 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/table/table.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/table/table.tsx @@ -1,11 +1,11 @@ import { useEffect, useMemo, useRef } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useParams } from 'next/navigation' import { Button } from '@/components/emcn' import { Trash } from '@/components/emcn/icons/trash' import { Input } from '@/components/ui/input' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { EnvVarDropdown } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/env-var-dropdown' import { formatDisplayText } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/formatted-text' import { TagDropdown } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input/variables-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input/variables-input.tsx index 5ecb73e01fd..66d6d90025a 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input/variables-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/variables-input/variables-input.tsx @@ -1,4 +1,5 @@ import { useEffect, useRef, useState } from 'react' +import { generateId } from '@sim/utils/id' import { Plus } from 'lucide-react' import { useParams } from 'next/navigation' import { @@ -12,7 +13,6 @@ import { } from '@/components/emcn' import { Trash } from '@/components/emcn/icons/trash' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' import { formatDisplayText } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/formatted-text' import { checkTagTrigger, diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx index ec140ce4759..58995808c79 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/panel.tsx @@ -2,6 +2,7 @@ import { memo, useCallback, useEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { History, Plus, Square } from 'lucide-react' import { useParams, useRouter } from 'next/navigation' import { usePostHog } from 'posthog-js/react' @@ -34,7 +35,6 @@ import { import { Lock, Unlock, Upload } from '@/components/emcn/icons' import { VariableIcon } from '@/components/icons' import { useSession } from '@/lib/auth/auth-client' -import { toError } from '@/lib/core/utils/helpers' import { captureEvent } from '@/lib/posthog/client' import { generateWorkflowJson } from '@/lib/workflows/operations/import-export' import { ConversationListItem } from '@/app/workspace/[workspaceId]/components' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/terminal.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/terminal.tsx index 5eef2d85acc..d87f6e156ca 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/terminal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/terminal.tsx @@ -2,6 +2,7 @@ import type React from 'react' import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import clsx from 'clsx' import { ArrowDown, @@ -25,7 +26,6 @@ import { Tooltip, } from '@/components/emcn' import { getEnv, isTruthy } from '@/lib/core/config/env' -import { formatDuration } from '@/lib/core/utils/formatting' import { useRegisterGlobalCommands } from '@/app/workspace/[workspaceId]/providers/global-commands-provider' import { createCommands } from '@/app/workspace/[workspaceId]/utils/commands-utils' import { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts index 4bbb03a420c..de3da34c7d6 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution.ts @@ -1,10 +1,11 @@ import { useCallback, useEffect, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' +import { generateId } from '@sim/utils/id' import { useQueryClient } from '@tanstack/react-query' import { useParams } from 'next/navigation' import { useShallow } from 'zustand/react/shallow' -import { sleep, toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' import { processStreamingBlockLogs } from '@/lib/tokenization' import { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/workflow-execution-utils.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/workflow-execution-utils.ts index e8e1fcea9aa..5d416cffec4 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/workflow-execution-utils.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/utils/workflow-execution-utils.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import type { BlockCompletedData, BlockErrorData, diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx index 90e5425966a..97ab1a0bc6d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/workflow.tsx @@ -16,10 +16,10 @@ import ReactFlow, { } from 'reactflow' import 'reactflow/dist/style.css' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useShallow } from 'zustand/react/shallow' import { useSession } from '@/lib/auth/auth-client' import type { OAuthConnectEventDetail } from '@/lib/copilot/tools/client/base-tool' -import { generateId } from '@/lib/core/utils/uuid' import { consumeOAuthReturnContext, writeOAuthReturnContext } from '@/lib/credentials/client-state' import type { OAuthProvider } from '@/lib/oauth' import { BLOCK_DIMENSIONS, CONTAINER_DIMENSIONS } from '@/lib/workflows/blocks/block-dimensions' diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/preview/components/preview-editor/preview-editor.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/preview/components/preview-editor/preview-editor.tsx index fabf2e975a6..f9387e12534 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/preview/components/preview-editor/preview-editor.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/preview/components/preview-editor/preview-editor.tsx @@ -1,6 +1,7 @@ 'use client' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { formatDuration } from '@sim/utils/formatting' import { ArrowDown, ArrowUp, @@ -28,7 +29,6 @@ import { Tooltip, } from '@/components/emcn' import { cn } from '@/lib/core/utils/cn' -import { formatDuration } from '@/lib/core/utils/formatting' import { extractReferencePrefixes } from '@/lib/workflows/sanitization/references' import { buildCanonicalIndex, diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx index d179568c316..963bed08eb9 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/folder-item/folder-item.tsx @@ -2,11 +2,11 @@ import { useCallback, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import clsx from 'clsx' import { ChevronRight, Folder, FolderOpen, MoreHorizontal } from 'lucide-react' import { useParams, useRouter } from 'next/navigation' import { SIM_RESOURCES_DRAG_TYPE } from '@/lib/copilot/resource-types' -import { generateId } from '@/lib/core/utils/uuid' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider' import { ContextMenu } from '@/app/workspace/[workspaceId]/w/components/sidebar/components/workflow-list/components/context-menu/context-menu' diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-folder-operations.ts b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-folder-operations.ts index 45b58376685..43a3bb88df0 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-folder-operations.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-folder-operations.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { generateFolderName } from '@/lib/workspaces/naming' import { useCreateFolder } from '@/hooks/queries/folders' diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-workflow-operations.ts b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-workflow-operations.ts index 2e49e8e9a04..4dbda7a9eda 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-workflow-operations.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/hooks/use-workflow-operations.ts @@ -1,6 +1,6 @@ import { useCallback, useMemo } from 'react' +import { generateId } from '@sim/utils/id' import { useRouter } from 'next/navigation' -import { generateId } from '@/lib/core/utils/uuid' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { useCreateWorkflow, useWorkflowMap } from '@/hooks/queries/workflows' import { useWorkflowDiffStore } from '@/stores/workflow-diff/store' diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-folder.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-folder.ts index 8703c34f017..b53bfe78f95 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-folder.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-folder.ts @@ -1,6 +1,6 @@ import { useCallback, useState } from 'react' import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { getChildFolders, getFolderById } from '@/lib/folders/tree' import { useDuplicateFolderMutation } from '@/hooks/queries/folders' import { getFolderMap } from '@/hooks/queries/utils/folder-cache' diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-selection.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-selection.ts index 5bf684a72ac..2923937f893 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-selection.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-selection.ts @@ -1,7 +1,7 @@ import { useCallback, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useRouter } from 'next/navigation' -import { generateId } from '@/lib/core/utils/uuid' import { getChildFolders, getFolderById } from '@/lib/folders/tree' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { useDuplicateFolderMutation } from '@/hooks/queries/folders' diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-workflow.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-workflow.ts index 32621febc96..1613cf1730c 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-workflow.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-duplicate-workflow.ts @@ -1,7 +1,7 @@ import { useCallback, useRef } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useRouter } from 'next/navigation' -import { generateId } from '@/lib/core/utils/uuid' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { getWorkflows } from '@/hooks/queries/utils/workflow-cache' import { useDuplicateWorkflowMutation } from '@/hooks/queries/workflows' diff --git a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts index ffa082ca994..fbdc4b3abc5 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/hooks/use-import-workspace.ts @@ -1,7 +1,7 @@ import { useCallback, useState } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useRouter } from 'next/navigation' -import { generateId } from '@/lib/core/utils/uuid' import { extractWorkflowName, extractWorkflowsFromZip, diff --git a/apps/sim/app/workspace/providers/socket-provider.tsx b/apps/sim/app/workspace/providers/socket-provider.tsx index 7af310952bd..9a63092f97a 100644 --- a/apps/sim/app/workspace/providers/socket-provider.tsx +++ b/apps/sim/app/workspace/providers/socket-provider.tsx @@ -11,10 +11,10 @@ import { useState, } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useParams } from 'next/navigation' import type { Socket } from 'socket.io-client' import { getSocketUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { type SocketJoinCommand, SocketJoinController, diff --git a/apps/sim/background/async-preprocessing-correlation.test.ts b/apps/sim/background/async-preprocessing-correlation.test.ts index 0489efb6eaa..e67acc798c6 100644 --- a/apps/sim/background/async-preprocessing-correlation.test.ts +++ b/apps/sim/background/async-preprocessing-correlation.test.ts @@ -2,21 +2,24 @@ * @vitest-environment node */ +import { + executionPreprocessingMock, + executionPreprocessingMockFns, + LoggingSessionMock, + loggingSessionMock, + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - mockPreprocessExecution, mockTask, mockDbUpdate, mockDbSelect, mockExecuteWorkflowCore, - mockLoggingSession, - mockBlockExistsInDeployment, - mockLoadDeployedWorkflowState, mockGetScheduleTimeValues, mockGetSubBlockValue, } = vi.hoisted(() => ({ - mockPreprocessExecution: vi.fn(), mockTask: vi.fn((config) => config), mockDbUpdate: vi.fn(() => ({ set: vi.fn(() => ({ @@ -25,13 +28,13 @@ const { })), mockDbSelect: vi.fn(), mockExecuteWorkflowCore: vi.fn(), - mockLoggingSession: vi.fn(), - mockBlockExistsInDeployment: vi.fn(), - mockLoadDeployedWorkflowState: vi.fn(), mockGetScheduleTimeValues: vi.fn(), mockGetSubBlockValue: vi.fn(), })) +const mockPreprocessExecution = executionPreprocessingMockFns.mockPreprocessExecution +const mockLoadDeployedWorkflowState = workflowsPersistenceUtilsMockFns.mockLoadDeployedWorkflowState + vi.mock('@trigger.dev/sdk', () => ({ task: mockTask })) vi.mock('@sim/db', () => ({ @@ -50,22 +53,9 @@ vi.mock('drizzle-orm', () => ({ sql: Object.assign(vi.fn(), { raw: vi.fn() }), })) -vi.mock('@/lib/execution/preprocessing', () => ({ - preprocessExecution: mockPreprocessExecution, -})) +vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn().mockImplementation(() => { - const instance = { - safeStart: vi.fn().mockResolvedValue(true), - safeCompleteWithError: vi.fn().mockResolvedValue(undefined), - markAsFailed: vi.fn().mockResolvedValue(undefined), - waitForPostExecution: vi.fn().mockResolvedValue(undefined), - } - mockLoggingSession(instance) - return instance - }), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/lib/core/execution-limits', () => ({ createTimeoutAbortController: vi.fn(() => ({ @@ -93,10 +83,7 @@ vi.mock('@/lib/workflows/executor/human-in-the-loop-manager', () => ({ }, })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - blockExistsInDeployment: mockBlockExistsInDeployment, - loadDeployedWorkflowState: mockLoadDeployedWorkflowState, -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) vi.mock('@/lib/workflows/schedules/utils', () => ({ calculateNextRunTime: vi.fn(), @@ -112,15 +99,6 @@ vi.mock('@/executor/utils/errors', () => ({ hasExecutionResult: vi.fn().mockReturnValue(false), })) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - import { executeScheduleJob } from './schedule-execution' import { executeWorkflowJob } from './workflow-execution' @@ -183,7 +161,7 @@ describe('async preprocessing correlation threading', () => { requestId: 'request-1', }) - const loggingSession = mockLoggingSession.mock.calls[0]?.[0] + const loggingSession = LoggingSessionMock.mock.results[0]?.value expect(loggingSession).toBeDefined() expect(loggingSession.safeStart).not.toHaveBeenCalled() expect(mockExecuteWorkflowCore).toHaveBeenCalledWith( @@ -221,7 +199,7 @@ describe('async preprocessing correlation threading', () => { scheduledFor: '2025-01-01T00:00:00.000Z', }) - const loggingSession = mockLoggingSession.mock.calls[0]?.[0] + const loggingSession = LoggingSessionMock.mock.results[0]?.value expect(loggingSession).toBeDefined() expect(loggingSession.safeStart).not.toHaveBeenCalled() expect(mockExecuteWorkflowCore).toHaveBeenCalledWith( diff --git a/apps/sim/background/resume-execution.ts b/apps/sim/background/resume-execution.ts index dfdd03a3c24..9b04463aa4f 100644 --- a/apps/sim/background/resume-execution.ts +++ b/apps/sim/background/resume-execution.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { task } from '@trigger.dev/sdk' -import { toError } from '@/lib/core/utils/helpers' import { PauseResumeManager } from '@/lib/workflows/executor/human-in-the-loop-manager' const logger = createLogger('TriggerResumeExecution') diff --git a/apps/sim/background/schedule-execution.ts b/apps/sim/background/schedule-execution.ts index 54c1f10a7f0..ca6728b42aa 100644 --- a/apps/sim/background/schedule-execution.ts +++ b/apps/sim/background/schedule-execution.ts @@ -1,12 +1,12 @@ import { db, jobExecutionLogs, workflow, workflowSchedule } from '@sim/db' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { task } from '@trigger.dev/sdk' import { Cron } from 'croner' import { and, eq, isNull } from 'drizzle-orm' import type { AsyncExecutionCorrelation } from '@/lib/core/async-jobs/types' import { createTimeoutAbortController, getTimeoutErrorMessage } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' diff --git a/apps/sim/background/webhook-execution.ts b/apps/sim/background/webhook-execution.ts index ff33c23d1ad..113e8153551 100644 --- a/apps/sim/background/webhook-execution.ts +++ b/apps/sim/background/webhook-execution.ts @@ -1,13 +1,13 @@ import { db } from '@sim/db' import { account, webhook } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { task } from '@trigger.dev/sdk' import { eq } from 'drizzle-orm' import type { AsyncExecutionCorrelation } from '@/lib/core/async-jobs/types' import { createTimeoutAbortController, getTimeoutErrorMessage } from '@/lib/core/execution-limits' import { IdempotencyService, webhookIdempotency } from '@/lib/core/idempotency' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' diff --git a/apps/sim/background/workflow-execution.ts b/apps/sim/background/workflow-execution.ts index 428fe3e7c8c..7718625f72e 100644 --- a/apps/sim/background/workflow-execution.ts +++ b/apps/sim/background/workflow-execution.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { task } from '@trigger.dev/sdk' import type { AsyncExecutionCorrelation } from '@/lib/core/async-jobs/types' import { createTimeoutAbortController, getTimeoutErrorMessage } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' diff --git a/apps/sim/background/workspace-notification-delivery.ts b/apps/sim/background/workspace-notification-delivery.ts index 17fcf73012b..a0e1eab3ac0 100644 --- a/apps/sim/background/workspace-notification-delivery.ts +++ b/apps/sim/background/workspace-notification-delivery.ts @@ -6,6 +6,9 @@ import { workspaceNotificationSubscription, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { formatDuration } from '@sim/utils/formatting' +import { generateId } from '@sim/utils/id' import { task } from '@trigger.dev/sdk' import { and, eq, isNull, lte, or, sql } from 'drizzle-orm' import { @@ -19,10 +22,7 @@ import { dollarsToCredits } from '@/lib/billing/credits/conversion' import { RateLimiter } from '@/lib/core/rate-limiter' import { decryptSecret } from '@/lib/core/security/encryption' import { secureFetchWithValidation } from '@/lib/core/security/input-validation.server' -import { formatDuration } from '@/lib/core/utils/formatting' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import type { TraceSpan, WorkflowExecutionLog } from '@/lib/logs/types' import { sendEmail } from '@/lib/messaging/email/mailer' import type { AlertConfig } from '@/lib/notifications/alert-rules' diff --git a/apps/sim/blocks/blocks/langsmith.ts b/apps/sim/blocks/blocks/langsmith.ts index 8e5ae00f2ee..378dfdfdca0 100644 --- a/apps/sim/blocks/blocks/langsmith.ts +++ b/apps/sim/blocks/blocks/langsmith.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { LangsmithIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { AuthMode, type BlockConfig, IntegrationType } from '@/blocks/types' import type { LangsmithResponse } from '@/tools/langsmith/types' diff --git a/apps/sim/blocks/blocks/mistral_parse.ts b/apps/sim/blocks/blocks/mistral_parse.ts index a6b40b2861f..e378a2d115b 100644 --- a/apps/sim/blocks/blocks/mistral_parse.ts +++ b/apps/sim/blocks/blocks/mistral_parse.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { MistralIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { MistralParserOutput } from '@/tools/mistral/types' diff --git a/apps/sim/blocks/blocks/notion.ts b/apps/sim/blocks/blocks/notion.ts index 7b015b03d9f..4528d950f83 100644 --- a/apps/sim/blocks/blocks/notion.ts +++ b/apps/sim/blocks/blocks/notion.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { NotionIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import type { BlockConfig } from '@/blocks/types' import { AuthMode, IntegrationType } from '@/blocks/types' import { createVersionedToolSelector } from '@/blocks/utils' diff --git a/apps/sim/blocks/blocks/reducto.ts b/apps/sim/blocks/blocks/reducto.ts index 83314b4d59f..1d996cec0de 100644 --- a/apps/sim/blocks/blocks/reducto.ts +++ b/apps/sim/blocks/blocks/reducto.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { ReductoIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { AuthMode, type BlockConfig, IntegrationType, type SubBlockType } from '@/blocks/types' import { createVersionedToolSelector, normalizeFileInput } from '@/blocks/utils' import type { ReductoParserOutput } from '@/tools/reducto/types' diff --git a/apps/sim/blocks/blocks/sharepoint.ts b/apps/sim/blocks/blocks/sharepoint.ts index 70ebf85dfd8..f7527e68315 100644 --- a/apps/sim/blocks/blocks/sharepoint.ts +++ b/apps/sim/blocks/blocks/sharepoint.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MicrosoftSharepointIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockConfig } from '@/blocks/types' import { AuthMode, IntegrationType } from '@/blocks/types' diff --git a/apps/sim/blocks/blocks/table.ts b/apps/sim/blocks/blocks/table.ts index 0d027eacc98..e75d1731675 100644 --- a/apps/sim/blocks/blocks/table.ts +++ b/apps/sim/blocks/blocks/table.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { TableIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { TABLE_LIMITS } from '@/lib/table/constants' import { filterRulesToFilter, sortRulesToSort } from '@/lib/table/query-builder/converters' import type { BlockConfig } from '@/blocks/types' diff --git a/apps/sim/blocks/utils.ts b/apps/sim/blocks/utils.ts index 148d2ad8eef..fd5c15bdc0a 100644 --- a/apps/sim/blocks/utils.ts +++ b/apps/sim/blocks/utils.ts @@ -1,5 +1,5 @@ +import { toError } from '@sim/utils/errors' import { isAzureConfigured, isHosted, isOllamaConfigured } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' import { getScopesForService } from '@/lib/oauth/utils' import type { BlockOutput, OutputFieldDefinition, SubBlockConfig } from '@/blocks/types' import { diff --git a/apps/sim/components/emcn/components/toast/toast.tsx b/apps/sim/components/emcn/components/toast/toast.tsx index 1c892c1857c..119ac2faf6c 100644 --- a/apps/sim/components/emcn/components/toast/toast.tsx +++ b/apps/sim/components/emcn/components/toast/toast.tsx @@ -10,10 +10,10 @@ import { useRef, useState, } from 'react' +import { generateId } from '@sim/utils/id' import { X } from 'lucide-react' import { createPortal } from 'react-dom' import { cn } from '@/lib/core/utils/cn' -import { generateId } from '@/lib/core/utils/uuid' const AUTO_DISMISS_MS = 5000 const EXIT_ANIMATION_MS = 200 diff --git a/apps/sim/connectors/airtable/airtable.ts b/apps/sim/connectors/airtable/airtable.ts index 6ef383c68ba..1ef21536155 100644 --- a/apps/sim/connectors/airtable/airtable.ts +++ b/apps/sim/connectors/airtable/airtable.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { AirtableIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { computeContentHash, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/asana/asana.ts b/apps/sim/connectors/asana/asana.ts index 1cb4c22d788..ed20942aebc 100644 --- a/apps/sim/connectors/asana/asana.ts +++ b/apps/sim/connectors/asana/asana.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { AsanaIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/confluence/confluence.ts b/apps/sim/connectors/confluence/confluence.ts index 583647ffe6b..7149c96272d 100644 --- a/apps/sim/connectors/confluence/confluence.ts +++ b/apps/sim/connectors/confluence/confluence.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ConfluenceIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/discord/discord.ts b/apps/sim/connectors/discord/discord.ts index 2da531584fd..bf589ff9c0f 100644 --- a/apps/sim/connectors/discord/discord.ts +++ b/apps/sim/connectors/discord/discord.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { DiscordIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { computeContentHash, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/dropbox/dropbox.ts b/apps/sim/connectors/dropbox/dropbox.ts index 3bcba681819..7584783a7b7 100644 --- a/apps/sim/connectors/dropbox/dropbox.ts +++ b/apps/sim/connectors/dropbox/dropbox.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { DropboxIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/evernote/evernote.ts b/apps/sim/connectors/evernote/evernote.ts index a6e23d15326..e5afefbcdaf 100644 --- a/apps/sim/connectors/evernote/evernote.ts +++ b/apps/sim/connectors/evernote/evernote.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { EvernoteIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import { ThriftReader, diff --git a/apps/sim/connectors/fireflies/fireflies.ts b/apps/sim/connectors/fireflies/fireflies.ts index 65341a324db..3334a347cad 100644 --- a/apps/sim/connectors/fireflies/fireflies.ts +++ b/apps/sim/connectors/fireflies/fireflies.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { FirefliesIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/github/github.ts b/apps/sim/connectors/github/github.ts index b11dba3cbb3..7952cd4943b 100644 --- a/apps/sim/connectors/github/github.ts +++ b/apps/sim/connectors/github/github.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GithubIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/gmail/gmail.ts b/apps/sim/connectors/gmail/gmail.ts index a671df4f9d1..a8590e38469 100644 --- a/apps/sim/connectors/gmail/gmail.ts +++ b/apps/sim/connectors/gmail/gmail.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GmailIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/google-docs/google-docs.ts b/apps/sim/connectors/google-docs/google-docs.ts index 244f4364159..570413516fa 100644 --- a/apps/sim/connectors/google-docs/google-docs.ts +++ b/apps/sim/connectors/google-docs/google-docs.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GoogleDocsIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/google-drive/google-drive.ts b/apps/sim/connectors/google-drive/google-drive.ts index dd3c2f26d28..f132edbc3cb 100644 --- a/apps/sim/connectors/google-drive/google-drive.ts +++ b/apps/sim/connectors/google-drive/google-drive.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GoogleDriveIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/google-sheets/google-sheets.ts b/apps/sim/connectors/google-sheets/google-sheets.ts index 2b81bc1485e..d69f91e0da8 100644 --- a/apps/sim/connectors/google-sheets/google-sheets.ts +++ b/apps/sim/connectors/google-sheets/google-sheets.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GoogleSheetsIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/intercom/intercom.ts b/apps/sim/connectors/intercom/intercom.ts index 3af1d4a43dd..112eb72b35d 100644 --- a/apps/sim/connectors/intercom/intercom.ts +++ b/apps/sim/connectors/intercom/intercom.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { IntercomIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/linear/linear.ts b/apps/sim/connectors/linear/linear.ts index e5f2727e7d6..f25aafe8154 100644 --- a/apps/sim/connectors/linear/linear.ts +++ b/apps/sim/connectors/linear/linear.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { LinearIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import type { RetryOptions } from '@/lib/knowledge/documents/utils' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' diff --git a/apps/sim/connectors/mapTags.test.ts b/apps/sim/connectors/mapTags.test.ts index 7fbeb531ca0..62701d04698 100644 --- a/apps/sim/connectors/mapTags.test.ts +++ b/apps/sim/connectors/mapTags.test.ts @@ -12,9 +12,6 @@ vi.mock('@/components/icons', () => ({ GoogleDriveIcon: () => null, AirtableIcon: () => null, })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn() }), -})) vi.mock('@/lib/knowledge/documents/utils', () => ({ fetchWithRetry: vi.fn(), VALIDATE_RETRY_OPTIONS: {}, diff --git a/apps/sim/connectors/microsoft-teams/microsoft-teams.ts b/apps/sim/connectors/microsoft-teams/microsoft-teams.ts index 65310ac438b..97729aca3ce 100644 --- a/apps/sim/connectors/microsoft-teams/microsoft-teams.ts +++ b/apps/sim/connectors/microsoft-teams/microsoft-teams.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MicrosoftTeamsIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { computeContentHash, htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/notion/notion.ts b/apps/sim/connectors/notion/notion.ts index c049c0fbcda..40efc9eadaa 100644 --- a/apps/sim/connectors/notion/notion.ts +++ b/apps/sim/connectors/notion/notion.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NotionIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/obsidian/obsidian.ts b/apps/sim/connectors/obsidian/obsidian.ts index 387ec66d1bf..f8c469dc86a 100644 --- a/apps/sim/connectors/obsidian/obsidian.ts +++ b/apps/sim/connectors/obsidian/obsidian.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ObsidianIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/onedrive/onedrive.ts b/apps/sim/connectors/onedrive/onedrive.ts index ac68c3fce51..b8ab17c9362 100644 --- a/apps/sim/connectors/onedrive/onedrive.ts +++ b/apps/sim/connectors/onedrive/onedrive.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MicrosoftOneDriveIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/outlook/outlook.ts b/apps/sim/connectors/outlook/outlook.ts index e219e10dd0a..b0081e5af4b 100644 --- a/apps/sim/connectors/outlook/outlook.ts +++ b/apps/sim/connectors/outlook/outlook.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { OutlookIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/reddit/reddit.ts b/apps/sim/connectors/reddit/reddit.ts index 894c1f8b272..b63015df860 100644 --- a/apps/sim/connectors/reddit/reddit.ts +++ b/apps/sim/connectors/reddit/reddit.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { RedditIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/servicenow/servicenow.ts b/apps/sim/connectors/servicenow/servicenow.ts index 35436a5e0e4..be55c08ae98 100644 --- a/apps/sim/connectors/servicenow/servicenow.ts +++ b/apps/sim/connectors/servicenow/servicenow.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ServiceNowIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/sharepoint/sharepoint.ts b/apps/sim/connectors/sharepoint/sharepoint.ts index 62b12a0a8b9..8ac32dc5752 100644 --- a/apps/sim/connectors/sharepoint/sharepoint.ts +++ b/apps/sim/connectors/sharepoint/sharepoint.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MicrosoftSharepointIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/slack/slack.ts b/apps/sim/connectors/slack/slack.ts index 5434acfe570..271c6f46527 100644 --- a/apps/sim/connectors/slack/slack.ts +++ b/apps/sim/connectors/slack/slack.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { SlackIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { computeContentHash, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/webflow/webflow.ts b/apps/sim/connectors/webflow/webflow.ts index 718e72f9827..bfa3936aedc 100644 --- a/apps/sim/connectors/webflow/webflow.ts +++ b/apps/sim/connectors/webflow/webflow.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { WebflowIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/wordpress/wordpress.ts b/apps/sim/connectors/wordpress/wordpress.ts index 4f59da0697d..272ff16a91c 100644 --- a/apps/sim/connectors/wordpress/wordpress.ts +++ b/apps/sim/connectors/wordpress/wordpress.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { WordpressIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/connectors/zendesk/zendesk.ts b/apps/sim/connectors/zendesk/zendesk.ts index c2e6c653b16..386f0353e15 100644 --- a/apps/sim/connectors/zendesk/zendesk.ts +++ b/apps/sim/connectors/zendesk/zendesk.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ZendeskIcon } from '@/components/icons' -import { toError } from '@/lib/core/utils/helpers' import { fetchWithRetry, VALIDATE_RETRY_OPTIONS } from '@/lib/knowledge/documents/utils' import type { ConnectorConfig, ExternalDocument, ExternalDocumentList } from '@/connectors/types' import { htmlToPlainText, joinTagArray, parseTagDate } from '@/connectors/utils' diff --git a/apps/sim/ee/access-control/utils/permission-check.test.ts b/apps/sim/ee/access-control/utils/permission-check.test.ts index 5d68ee149cf..22ec9e5590c 100644 --- a/apps/sim/ee/access-control/utils/permission-check.test.ts +++ b/apps/sim/ee/access-control/utils/permission-check.test.ts @@ -1,7 +1,7 @@ /** * @vitest-environment node */ -import { databaseMock, drizzleOrmMock, loggerMock } from '@sim/testing' +import { schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { @@ -40,10 +40,7 @@ const { mockGetProviderFromModel: vi.fn<(model: string) => string>(), })) -vi.mock('@sim/db', () => databaseMock) -vi.mock('@sim/db/schema', () => ({})) -vi.mock('@sim/logger', () => loggerMock) -vi.mock('drizzle-orm', () => drizzleOrmMock) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@/lib/billing', () => ({ isOrganizationOnEnterprisePlan: mockIsOrganizationOnEnterprisePlan, })) diff --git a/apps/sim/ee/audit-logs/components/audit-logs.tsx b/apps/sim/ee/audit-logs/components/audit-logs.tsx index 370d81e2289..05de261f47c 100644 --- a/apps/sim/ee/audit-logs/components/audit-logs.tsx +++ b/apps/sim/ee/audit-logs/components/audit-logs.tsx @@ -2,11 +2,11 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { createLogger } from '@sim/logger' +import { formatDateTime } from '@sim/utils/formatting' import { ChevronDown, RefreshCw, Search } from 'lucide-react' import { Badge, Button, Combobox, type ComboboxOption, Skeleton } from '@/components/emcn' import { Input } from '@/components/ui' import { cn } from '@/lib/core/utils/cn' -import { formatDateTime } from '@/lib/core/utils/formatting' import type { EnterpriseAuditLogEntry } from '@/app/api/v1/audit-logs/format' import { RESOURCE_TYPE_OPTIONS } from '@/ee/audit-logs/constants' import { type AuditLogFilters, useAuditLogs } from '@/ee/audit-logs/hooks/audit-logs' diff --git a/apps/sim/executor/dag/builder.test.ts b/apps/sim/executor/dag/builder.test.ts index 9be90e75f85..703d5165155 100644 --- a/apps/sim/executor/dag/builder.test.ts +++ b/apps/sim/executor/dag/builder.test.ts @@ -1,5 +1,4 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { BlockType } from '@/executor/constants' import { DAGBuilder } from '@/executor/dag/builder' import { @@ -9,8 +8,6 @@ import { } from '@/executor/utils/subflow-utils' import type { SerializedBlock, SerializedWorkflow } from '@/serializer/types' -vi.mock('@sim/logger', () => loggerMock) - function createBlock(id: string, metadataId: string): SerializedBlock { return { id, diff --git a/apps/sim/executor/dag/construction/edges.test.ts b/apps/sim/executor/dag/construction/edges.test.ts index e73446a62ea..857f98af27b 100644 --- a/apps/sim/executor/dag/construction/edges.test.ts +++ b/apps/sim/executor/dag/construction/edges.test.ts @@ -1,11 +1,8 @@ -import { loggerMock } from '@sim/testing' -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { beforeEach, describe, expect, it } from 'vitest' import type { DAG, DAGNode } from '@/executor/dag/builder' import type { SerializedBlock, SerializedLoop, SerializedWorkflow } from '@/serializer/types' import { EdgeConstructor } from './edges' -vi.mock('@sim/logger', () => loggerMock) - function createMockBlock(id: string, type = 'function', config: any = {}): SerializedBlock { return { id, diff --git a/apps/sim/executor/dag/construction/edges.ts b/apps/sim/executor/dag/construction/edges.ts index 0dd86c11f3a..9e9c4a567fc 100644 --- a/apps/sim/executor/dag/construction/edges.ts +++ b/apps/sim/executor/dag/construction/edges.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { EDGE, isConditionBlockType, diff --git a/apps/sim/executor/execution/block-executor.ts b/apps/sim/executor/execution/block-executor.ts index 55b5df5ac4c..c348aa401fb 100644 --- a/apps/sim/executor/execution/block-executor.ts +++ b/apps/sim/executor/execution/block-executor.ts @@ -1,6 +1,6 @@ import { createLogger, type Logger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { redactApiKeys } from '@/lib/core/security/redaction' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' import { containsUserFileWithMetadata, diff --git a/apps/sim/executor/execution/edge-manager.test.ts b/apps/sim/executor/execution/edge-manager.test.ts index 44fb3b10944..13c64b043aa 100644 --- a/apps/sim/executor/execution/edge-manager.test.ts +++ b/apps/sim/executor/execution/edge-manager.test.ts @@ -1,12 +1,9 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import type { DAG, DAGNode } from '@/executor/dag/builder' import type { DAGEdge } from '@/executor/dag/types' import type { SerializedBlock } from '@/serializer/types' import { EdgeManager } from './edge-manager' -vi.mock('@sim/logger', () => loggerMock) - function createMockBlock(id: string): SerializedBlock { return { id, diff --git a/apps/sim/executor/execution/engine.test.ts b/apps/sim/executor/execution/engine.test.ts index f9c0ab41209..6147762d496 100644 --- a/apps/sim/executor/execution/engine.test.ts +++ b/apps/sim/executor/execution/engine.test.ts @@ -1,11 +1,8 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/execution/cancellation', () => ({ isExecutionCancelled: vi.fn(), isRedisCancellationEnabled: vi.fn(), diff --git a/apps/sim/executor/execution/engine.ts b/apps/sim/executor/execution/engine.ts index bf110b7bdb6..d7dc8f44f11 100644 --- a/apps/sim/executor/execution/engine.ts +++ b/apps/sim/executor/execution/engine.ts @@ -1,5 +1,5 @@ import { createLogger, type Logger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isExecutionCancelled, isRedisCancellationEnabled } from '@/lib/execution/cancellation' import { BlockType } from '@/executor/constants' import type { DAG } from '@/executor/dag/builder' diff --git a/apps/sim/executor/handlers/agent/agent-handler.test.ts b/apps/sim/executor/handlers/agent/agent-handler.test.ts index 437dc69121d..ef94e7c5769 100644 --- a/apps/sim/executor/handlers/agent/agent-handler.test.ts +++ b/apps/sim/executor/handlers/agent/agent-handler.test.ts @@ -1,4 +1,4 @@ -import { setupGlobalFetchMock } from '@sim/testing' +import { schemaMock, setupGlobalFetchMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest' import { getAllBlocks } from '@/blocks' import { BlockType, isMcpTool } from '@/executor/constants' @@ -102,14 +102,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - mcpServers: { - id: 'id', - workspaceId: 'workspaceId', - connectionStatus: 'connectionStatus', - deletedAt: 'deletedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) const mockGetCustomToolById = vi.fn() diff --git a/apps/sim/executor/handlers/agent/agent-handler.ts b/apps/sim/executor/handlers/agent/agent-handler.ts index 09572c43e86..fcf43b6844b 100644 --- a/apps/sim/executor/handlers/agent/agent-handler.ts +++ b/apps/sim/executor/handlers/agent/agent-handler.ts @@ -1,8 +1,9 @@ import { db } from '@sim/db' import { mcpServers } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { and, eq, inArray, isNull } from 'drizzle-orm' -import { toError } from '@/lib/core/utils/helpers' import { createMcpToolId } from '@/lib/mcp/utils' import { getCustomToolById } from '@/lib/workflows/custom-tools/operations' import { getAllBlocks } from '@/blocks' @@ -456,7 +457,7 @@ export class AgentBlockHandler implements BlockHandler { logger.warn( `[AgentHandler] Session error discovering tools from ${serverId}, retrying (attempt ${attempt + 1})` ) - await new Promise((r) => setTimeout(r, 100)) + await sleep(100) continue } throw new Error(`Failed to discover tools: ${response.status} ${errorText}`) @@ -475,7 +476,7 @@ export class AgentBlockHandler implements BlockHandler { `[AgentHandler] Retryable error discovering tools from ${serverId} (attempt ${attempt + 1}):`, error ) - await new Promise((r) => setTimeout(r, 100)) + await sleep(100) continue } throw error diff --git a/apps/sim/executor/handlers/agent/memory.test.ts b/apps/sim/executor/handlers/agent/memory.test.ts index 1010cbd34de..316b2a0e731 100644 --- a/apps/sim/executor/handlers/agent/memory.test.ts +++ b/apps/sim/executor/handlers/agent/memory.test.ts @@ -1,11 +1,8 @@ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { MEMORY } from '@/executor/constants' import { Memory } from '@/executor/handlers/agent/memory' import type { Message } from '@/executor/handlers/agent/types' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/tokenization/estimators', () => ({ getAccurateTokenCount: vi.fn((text: string) => { return Math.ceil(text.length / 4) diff --git a/apps/sim/executor/handlers/agent/memory.ts b/apps/sim/executor/handlers/agent/memory.ts index 00252bfd812..6428f0b7607 100644 --- a/apps/sim/executor/handlers/agent/memory.ts +++ b/apps/sim/executor/handlers/agent/memory.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { memory } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { getAccurateTokenCount } from '@/lib/tokenization/estimators' import { MEMORY } from '@/executor/constants' import type { AgentInputs, Message } from '@/executor/handlers/agent/types' diff --git a/apps/sim/executor/handlers/api/api-handler.test.ts b/apps/sim/executor/handlers/api/api-handler.test.ts index 0f7f0186ae3..f073f996ad5 100644 --- a/apps/sim/executor/handlers/api/api-handler.test.ts +++ b/apps/sim/executor/handlers/api/api-handler.test.ts @@ -1,7 +1,7 @@ import '@sim/testing/mocks/executor' +import { inputValidationMock, inputValidationMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' -import { validateUrlWithDNS } from '@/lib/core/security/input-validation.server' import { BlockType } from '@/executor/constants' import { ApiBlockHandler } from '@/executor/handlers/api/api-handler' import type { ExecutionContext } from '@/executor/types' @@ -10,13 +10,11 @@ import { executeTool } from '@/tools' import type { ToolConfig } from '@/tools/types' import { getTool } from '@/tools/utils' -vi.mock('@/lib/core/security/input-validation.server', () => ({ - validateUrlWithDNS: vi.fn(), -})) +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) const mockGetTool = vi.mocked(getTool) const mockExecuteTool = executeTool as Mock -const mockValidateUrlWithDNS = vi.mocked(validateUrlWithDNS) +const mockValidateUrlWithDNS = inputValidationMockFns.mockValidateUrlWithDNS describe('ApiBlockHandler', () => { let handler: ApiBlockHandler diff --git a/apps/sim/executor/handlers/condition/condition-handler.test.ts b/apps/sim/executor/handlers/condition/condition-handler.test.ts index 356e15b755f..3d7d4c70604 100644 --- a/apps/sim/executor/handlers/condition/condition-handler.test.ts +++ b/apps/sim/executor/handlers/condition/condition-handler.test.ts @@ -1,12 +1,10 @@ -import { loggerMock, requestUtilsMock } from '@sim/testing' +import { requestUtilsMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { BlockType } from '@/executor/constants' import { ConditionBlockHandler } from '@/executor/handlers/condition/condition-handler' import type { BlockState, ExecutionContext } from '@/executor/types' import type { SerializedBlock, SerializedWorkflow } from '@/serializer/types' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/core/utils/request', () => requestUtilsMock) vi.mock('@/tools', () => ({ diff --git a/apps/sim/executor/handlers/evaluator/evaluator-handler.test.ts b/apps/sim/executor/handlers/evaluator/evaluator-handler.test.ts index e70015a68bc..c338b9c310a 100644 --- a/apps/sim/executor/handlers/evaluator/evaluator-handler.test.ts +++ b/apps/sim/executor/handlers/evaluator/evaluator-handler.test.ts @@ -1,15 +1,9 @@ import '@sim/testing/mocks/executor' +import { authOAuthUtilsMock, authOAuthUtilsMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' -vi.mock('@/app/api/auth/oauth/utils', () => ({ - resolveOAuthAccountId: vi - .fn() - .mockResolvedValue({ accountId: 'test-vertex-credential-id', usedCredentialTable: false }), - refreshTokenIfNeeded: vi - .fn() - .mockResolvedValue({ accessToken: 'mock-access-token', refreshed: false }), -})) +vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) import { BlockType } from '@/executor/constants' import { EvaluatorBlockHandler } from '@/executor/handlers/evaluator/evaluator-handler' @@ -60,6 +54,14 @@ describe('EvaluatorBlockHandler', () => { vi.clearAllMocks() // Default mock implementations + authOAuthUtilsMockFns.mockResolveOAuthAccountId.mockResolvedValue({ + accountId: 'test-vertex-credential-id', + usedCredentialTable: false, + }) + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValue({ + accessToken: 'mock-access-token', + refreshed: false, + }) mockGetProviderFromModel.mockReturnValue('openai') // Set up fetch mock to return a successful response diff --git a/apps/sim/executor/handlers/function/function-handler.test.ts b/apps/sim/executor/handlers/function/function-handler.test.ts index 5426610c701..0dcda1ce37d 100644 --- a/apps/sim/executor/handlers/function/function-handler.test.ts +++ b/apps/sim/executor/handlers/function/function-handler.test.ts @@ -1,4 +1,3 @@ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' import { DEFAULT_EXECUTION_TIMEOUT_MS } from '@/lib/execution/constants' import { BlockType } from '@/executor/constants' @@ -7,8 +6,6 @@ import type { ExecutionContext } from '@/executor/types' import type { SerializedBlock } from '@/serializer/types' import { executeTool } from '@/tools' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/tools', () => ({ executeTool: vi.fn(), })) diff --git a/apps/sim/executor/handlers/generic/generic-handler.ts b/apps/sim/executor/handlers/generic/generic-handler.ts index 64a915c16f8..b1d700a1f44 100644 --- a/apps/sim/executor/handlers/generic/generic-handler.ts +++ b/apps/sim/executor/handlers/generic/generic-handler.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { getBlock } from '@/blocks/index' import { isMcpTool } from '@/executor/constants' import type { BlockHandler, ExecutionContext } from '@/executor/types' diff --git a/apps/sim/executor/handlers/mothership/mothership-handler.test.ts b/apps/sim/executor/handlers/mothership/mothership-handler.test.ts index 524c1e3ad65..38a36c32f0e 100644 --- a/apps/sim/executor/handlers/mothership/mothership-handler.test.ts +++ b/apps/sim/executor/handlers/mothership/mothership-handler.test.ts @@ -28,7 +28,7 @@ vi.mock('@/executor/utils/http', () => ({ extractAPIErrorMessage: mockExtractAPIErrorMessage, })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: mockGenerateId, })) @@ -37,20 +37,6 @@ vi.mock('@/lib/execution/cancellation', () => ({ isRedisCancellationEnabled: mockIsRedisCancellationEnabled, })) -vi.mock('@sim/logger', () => { - const createMockLogger = (): Record => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - withMetadata: vi.fn(() => createMockLogger()), - }) - - return { - createLogger: vi.fn(() => createMockLogger()), - } -}) - function createAbortError(): Error { const error = new Error('The operation was aborted') error.name = 'AbortError' diff --git a/apps/sim/executor/handlers/mothership/mothership-handler.ts b/apps/sim/executor/handlers/mothership/mothership-handler.ts index 9b788f847b0..433bcc273e2 100644 --- a/apps/sim/executor/handlers/mothership/mothership-handler.ts +++ b/apps/sim/executor/handlers/mothership/mothership-handler.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { isExecutionCancelled, isRedisCancellationEnabled } from '@/lib/execution/cancellation' import type { BlockOutput } from '@/blocks/types' import { BlockType } from '@/executor/constants' diff --git a/apps/sim/executor/handlers/router/router-handler.test.ts b/apps/sim/executor/handlers/router/router-handler.test.ts index 5d4defa0a0b..90e326c2785 100644 --- a/apps/sim/executor/handlers/router/router-handler.test.ts +++ b/apps/sim/executor/handlers/router/router-handler.test.ts @@ -1,15 +1,9 @@ import '@sim/testing/mocks/executor' +import { authOAuthUtilsMock, authOAuthUtilsMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' -vi.mock('@/app/api/auth/oauth/utils', () => ({ - resolveOAuthAccountId: vi - .fn() - .mockResolvedValue({ accountId: 'test-vertex-credential-id', usedCredentialTable: false }), - refreshTokenIfNeeded: vi - .fn() - .mockResolvedValue({ accessToken: 'mock-access-token', refreshed: false }), -})) +vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) import { generateRouterPrompt, generateRouterV2Prompt } from '@/blocks/blocks/router' import { BlockType } from '@/executor/constants' @@ -85,6 +79,14 @@ describe('RouterBlockHandler', () => { vi.clearAllMocks() + authOAuthUtilsMockFns.mockResolveOAuthAccountId.mockResolvedValue({ + accountId: 'test-vertex-credential-id', + usedCredentialTable: false, + }) + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValue({ + accessToken: 'mock-access-token', + refreshed: false, + }) mockGetProviderFromModel.mockReturnValue('openai') mockGenerateRouterPrompt.mockReturnValue('Generated System Prompt') @@ -375,6 +377,14 @@ describe('RouterBlockHandler V2', () => { vi.clearAllMocks() + authOAuthUtilsMockFns.mockResolveOAuthAccountId.mockResolvedValue({ + accountId: 'test-vertex-credential-id', + usedCredentialTable: false, + }) + authOAuthUtilsMockFns.mockRefreshTokenIfNeeded.mockResolvedValue({ + accessToken: 'mock-access-token', + refreshed: false, + }) mockGetProviderFromModel.mockReturnValue('openai') mockGenerateRouterV2Prompt.mockReturnValue('Generated V2 System Prompt') }) diff --git a/apps/sim/executor/handlers/workflow/workflow-handler.ts b/apps/sim/executor/handlers/workflow/workflow-handler.ts index aaf10d9b9ee..26d3b3df330 100644 --- a/apps/sim/executor/handlers/workflow/workflow-handler.ts +++ b/apps/sim/executor/handlers/workflow/workflow-handler.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { buildNextCallChain, validateCallChain } from '@/lib/execution/call-chain' import { snapshotService } from '@/lib/logs/execution/snapshot/service' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' diff --git a/apps/sim/executor/orchestrators/loop.ts b/apps/sim/executor/orchestrators/loop.ts index d01daaa67a5..9816109a93d 100644 --- a/apps/sim/executor/orchestrators/loop.ts +++ b/apps/sim/executor/orchestrators/loop.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { generateRequestId } from '@/lib/core/utils/request' import { isExecutionCancelled, isRedisCancellationEnabled } from '@/lib/execution/cancellation' import { executeInIsolatedVM } from '@/lib/execution/isolated-vm' diff --git a/apps/sim/executor/orchestrators/parallel.test.ts b/apps/sim/executor/orchestrators/parallel.test.ts index aa54bed9b2b..f0262b92e9e 100644 --- a/apps/sim/executor/orchestrators/parallel.test.ts +++ b/apps/sim/executor/orchestrators/parallel.test.ts @@ -7,15 +7,6 @@ import type { BlockStateWriter, ContextExtensions } from '@/executor/execution/t import { ParallelOrchestrator } from '@/executor/orchestrators/parallel' import type { ExecutionContext } from '@/executor/types' -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - function createDag(): DAG { return { nodes: new Map(), diff --git a/apps/sim/executor/orchestrators/parallel.ts b/apps/sim/executor/orchestrators/parallel.ts index 1f98953bc5e..7cc10abbee7 100644 --- a/apps/sim/executor/orchestrators/parallel.ts +++ b/apps/sim/executor/orchestrators/parallel.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { DEFAULTS } from '@/executor/constants' import type { DAG } from '@/executor/dag/builder' import type { ParallelScope } from '@/executor/execution/state' diff --git a/apps/sim/executor/utils.test.ts b/apps/sim/executor/utils.test.ts index bcd2b78383c..5769b81ac8a 100644 --- a/apps/sim/executor/utils.test.ts +++ b/apps/sim/executor/utils.test.ts @@ -1,12 +1,9 @@ -import { loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { StreamingResponseFormatProcessor, streamingResponseFormatProcessor, } from '@/executor/utils' -vi.mock('@sim/logger', () => loggerMock) - describe('StreamingResponseFormatProcessor', () => { let processor: StreamingResponseFormatProcessor diff --git a/apps/sim/executor/utils/file-tool-processor.ts b/apps/sim/executor/utils/file-tool-processor.ts index 1b1e168415b..1fa86ffc731 100644 --- a/apps/sim/executor/utils/file-tool-processor.ts +++ b/apps/sim/executor/utils/file-tool-processor.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isUserFile } from '@/lib/core/utils/user-file' import { uploadExecutionFile, uploadFileFromRawData } from '@/lib/uploads/contexts/execution' import { downloadFileFromUrl } from '@/lib/uploads/utils/file-utils.server' diff --git a/apps/sim/executor/utils/parallel-expansion.test.ts b/apps/sim/executor/utils/parallel-expansion.test.ts index 16daa93e4eb..bcb2fbeb5c5 100644 --- a/apps/sim/executor/utils/parallel-expansion.test.ts +++ b/apps/sim/executor/utils/parallel-expansion.test.ts @@ -1,8 +1,7 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { BlockType } from '@/executor/constants' import { DAGBuilder } from '@/executor/dag/builder' import { EdgeManager } from '@/executor/execution/edge-manager' @@ -15,8 +14,6 @@ import { } from '@/executor/utils/subflow-utils' import type { SerializedBlock, SerializedWorkflow } from '@/serializer/types' -vi.mock('@sim/logger', () => loggerMock) - function createBlock(id: string, metadataId: string): SerializedBlock { return { id, diff --git a/apps/sim/executor/utils/subflow-utils.ts b/apps/sim/executor/utils/subflow-utils.ts index b7227bd4ad8..01765360787 100644 --- a/apps/sim/executor/utils/subflow-utils.ts +++ b/apps/sim/executor/utils/subflow-utils.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { DEFAULTS, LOOP, PARALLEL, REFERENCE } from '@/executor/constants' import type { ContextExtensions } from '@/executor/execution/types' import { type BlockLog, type ExecutionContext, getNextExecutionOrder } from '@/executor/types' diff --git a/apps/sim/executor/variables/resolver.ts b/apps/sim/executor/variables/resolver.ts index 88198fc360f..412dd549d39 100644 --- a/apps/sim/executor/variables/resolver.ts +++ b/apps/sim/executor/variables/resolver.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { BlockType } from '@/executor/constants' import type { ExecutionState, LoopScope } from '@/executor/execution/state' import type { ExecutionContext } from '@/executor/types' diff --git a/apps/sim/executor/variables/resolvers/block.test.ts b/apps/sim/executor/variables/resolvers/block.test.ts index 4c943f297ab..5b9ed37fc3b 100644 --- a/apps/sim/executor/variables/resolvers/block.test.ts +++ b/apps/sim/executor/variables/resolvers/block.test.ts @@ -1,4 +1,3 @@ -import { loggerMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' import { ExecutionState } from '@/executor/execution/state' import { BlockResolver } from './block' @@ -115,7 +114,6 @@ const MOCK_BLOCKS = vi.hoisted( }) as Record ) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/blocks/registry', () => ({ getBlock: (type: string) => MOCK_BLOCKS[type] ?? undefined, registry: MOCK_BLOCKS, diff --git a/apps/sim/executor/variables/resolvers/env.test.ts b/apps/sim/executor/variables/resolvers/env.test.ts index 7846b308f1f..b9fa9658343 100644 --- a/apps/sim/executor/variables/resolvers/env.test.ts +++ b/apps/sim/executor/variables/resolvers/env.test.ts @@ -1,10 +1,7 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { EnvResolver } from './env' import type { ResolutionContext } from './reference' -vi.mock('@sim/logger', () => loggerMock) - /** * Creates a minimal ResolutionContext for testing. * The EnvResolver only uses context.executionContext.environmentVariables. diff --git a/apps/sim/executor/variables/resolvers/loop.test.ts b/apps/sim/executor/variables/resolvers/loop.test.ts index 862072a516f..3d3b643b516 100644 --- a/apps/sim/executor/variables/resolvers/loop.test.ts +++ b/apps/sim/executor/variables/resolvers/loop.test.ts @@ -1,12 +1,9 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import type { LoopScope } from '@/executor/execution/state' import { InvalidFieldError } from '@/executor/utils/block-reference' import { LoopResolver } from './loop' import type { ResolutionContext } from './reference' -vi.mock('@sim/logger', () => loggerMock) - interface LoopDef { nodes: string[] id?: string diff --git a/apps/sim/executor/variables/resolvers/parallel.test.ts b/apps/sim/executor/variables/resolvers/parallel.test.ts index 14f0122ed0b..cec6294f391 100644 --- a/apps/sim/executor/variables/resolvers/parallel.test.ts +++ b/apps/sim/executor/variables/resolvers/parallel.test.ts @@ -1,11 +1,8 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { InvalidFieldError } from '@/executor/utils/block-reference' import { ParallelResolver } from './parallel' import type { ResolutionContext } from './reference' -vi.mock('@sim/logger', () => loggerMock) - interface BlockDef { id: string name: string diff --git a/apps/sim/executor/variables/resolvers/workflow.test.ts b/apps/sim/executor/variables/resolvers/workflow.test.ts index 29529d1f703..610066b17df 100644 --- a/apps/sim/executor/variables/resolvers/workflow.test.ts +++ b/apps/sim/executor/variables/resolvers/workflow.test.ts @@ -1,10 +1,7 @@ -import { loggerMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' import type { ResolutionContext } from './reference' import { WorkflowResolver } from './workflow' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/workflows/variables/variable-manager', () => ({ VariableManager: { resolveForExecution: vi.fn((value) => value), diff --git a/apps/sim/hooks/queries/a2a/tasks.ts b/apps/sim/hooks/queries/a2a/tasks.ts index d4650443a76..abb9bbb3acb 100644 --- a/apps/sim/hooks/queries/a2a/tasks.ts +++ b/apps/sim/hooks/queries/a2a/tasks.ts @@ -5,9 +5,9 @@ */ import type { Artifact, Message, TaskState } from '@a2a-js/sdk' +import { generateId } from '@sim/utils/id' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { isTerminalState } from '@/lib/a2a/utils' -import { generateId } from '@/lib/core/utils/uuid' /** A2A v0.3 JSON-RPC method names */ const A2A_METHODS = { diff --git a/apps/sim/hooks/queries/admin-users.ts b/apps/sim/hooks/queries/admin-users.ts index 7228aacf60d..2d593797b93 100644 --- a/apps/sim/hooks/queries/admin-users.ts +++ b/apps/sim/hooks/queries/admin-users.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { isValidUuid } from '@sim/utils/id' import { keepPreviousData, useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { client } from '@/lib/auth/auth-client' -import { isValidUuid } from '@/lib/core/utils/uuid' const logger = createLogger('AdminUsersQuery') diff --git a/apps/sim/hooks/queries/folders.test.ts b/apps/sim/hooks/queries/folders.test.ts index 355b3d899e3..2bb75d22466 100644 --- a/apps/sim/hooks/queries/folders.test.ts +++ b/apps/sim/hooks/queries/folders.test.ts @@ -1,12 +1,6 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockLogger, mockGetFolderMap, mockGetWorkflows, queryClient } = vi.hoisted(() => ({ - mockLogger: { - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }, +const { mockGetFolderMap, mockGetWorkflows, queryClient } = vi.hoisted(() => ({ mockGetFolderMap: vi.fn(() => ({})), mockGetWorkflows: vi.fn(() => []), queryClient: { @@ -28,10 +22,6 @@ let workflowList: Array<{ sortOrder: number }> -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn(() => mockLogger), -})) - vi.mock('@tanstack/react-query', () => ({ keepPreviousData: {}, useQuery: vi.fn(), diff --git a/apps/sim/hooks/queries/folders.ts b/apps/sim/hooks/queries/folders.ts index caff7436663..68a61093193 100644 --- a/apps/sim/hooks/queries/folders.ts +++ b/apps/sim/hooks/queries/folders.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { keepPreviousData, useMutation, useQuery, useQueryClient } from '@tanstack/react-query' -import { generateId } from '@/lib/core/utils/uuid' import { getFolderMap } from '@/hooks/queries/utils/folder-cache' import { type FolderQueryScope, folderKeys } from '@/hooks/queries/utils/folder-keys' import { invalidateWorkflowLists } from '@/hooks/queries/utils/invalidate-workflow-lists' diff --git a/apps/sim/hooks/queries/inbox.ts b/apps/sim/hooks/queries/inbox.ts index e372d639692..b11b3438e55 100644 --- a/apps/sim/hooks/queries/inbox.ts +++ b/apps/sim/hooks/queries/inbox.ts @@ -1,5 +1,5 @@ +import { generateId } from '@sim/utils/id' import { keepPreviousData, useMutation, useQuery, useQueryClient } from '@tanstack/react-query' -import { generateId } from '@/lib/core/utils/uuid' import type { InboxTaskStatus } from '@/lib/mothership/inbox/types' export const inboxKeys = { diff --git a/apps/sim/hooks/queries/workflows.ts b/apps/sim/hooks/queries/workflows.ts index ffa7cd26de5..b0a0c6ccc3b 100644 --- a/apps/sim/hooks/queries/workflows.ts +++ b/apps/sim/hooks/queries/workflows.ts @@ -3,6 +3,7 @@ */ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { keepPreviousData, skipToken, @@ -10,7 +11,6 @@ import { useQuery, useQueryClient, } from '@tanstack/react-query' -import { generateId } from '@/lib/core/utils/uuid' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { deploymentKeys } from '@/hooks/queries/deployments' import { fetchDeploymentVersionState } from '@/hooks/queries/utils/fetch-deployment-version-state' diff --git a/apps/sim/hooks/use-code-undo-redo.ts b/apps/sim/hooks/use-code-undo-redo.ts index 82c20da6192..c3bdc8e9552 100644 --- a/apps/sim/hooks/use-code-undo-redo.ts +++ b/apps/sim/hooks/use-code-undo-redo.ts @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useShallow } from 'zustand/react/shallow' -import { generateId } from '@/lib/core/utils/uuid' import { useCollaborativeWorkflow } from '@/hooks/use-collaborative-workflow' import { useCodeUndoRedoStore } from '@/stores/undo-redo' import { useWorkflowDiffStore } from '@/stores/workflow-diff/store' diff --git a/apps/sim/hooks/use-collaborative-workflow.ts b/apps/sim/hooks/use-collaborative-workflow.ts index ae1b2fe90f6..bbf54868a27 100644 --- a/apps/sim/hooks/use-collaborative-workflow.ts +++ b/apps/sim/hooks/use-collaborative-workflow.ts @@ -1,10 +1,10 @@ import { useCallback, useEffect, useRef } from 'react' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { useQueryClient } from '@tanstack/react-query' import type { Edge } from 'reactflow' import { useShallow } from 'zustand/react/shallow' import { useSession } from '@/lib/auth/auth-client' -import { generateId } from '@/lib/core/utils/uuid' import { useSocket } from '@/app/workspace/providers/socket-provider' import { getBlock } from '@/blocks' import { normalizeName, RESERVED_BLOCK_NAMES } from '@/executor/constants' diff --git a/apps/sim/hooks/use-stream-cleanup.ts b/apps/sim/hooks/use-stream-cleanup.ts index 060f8b3c0cd..8f406667a5e 100644 --- a/apps/sim/hooks/use-stream-cleanup.ts +++ b/apps/sim/hooks/use-stream-cleanup.ts @@ -1,6 +1,9 @@ 'use client' import { useCallback, useEffect } from 'react' +import { createLogger } from '@sim/logger' + +const logger = createLogger('UseStreamCleanup') /** * Generic hook to handle stream cleanup on page unload and component unmount @@ -15,7 +18,7 @@ export function useStreamCleanup(cleanup: () => void) { try { cleanup() } catch (error) { - console.warn('Error during stream cleanup:', error) + logger.warn('Error during stream cleanup:', error) } }, [cleanup]) diff --git a/apps/sim/hooks/use-undo-redo.ts b/apps/sim/hooks/use-undo-redo.ts index 5ba2f9d929b..023b2f1d8f8 100644 --- a/apps/sim/hooks/use-undo-redo.ts +++ b/apps/sim/hooks/use-undo-redo.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' declare global { interface Window { diff --git a/apps/sim/lib/a2a/utils.ts b/apps/sim/lib/a2a/utils.ts index f9b122eddbe..cc6cf64ae83 100644 --- a/apps/sim/lib/a2a/utils.ts +++ b/apps/sim/lib/a2a/utils.ts @@ -16,9 +16,9 @@ import { ClientFactoryOptions, } from '@a2a-js/sdk/client' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { validateUrlWithDNS } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { isInternalFileUrl } from '@/lib/uploads/utils/file-utils' import { A2A_TERMINAL_STATES } from './constants' diff --git a/apps/sim/lib/api-key/auth.ts b/apps/sim/lib/api-key/auth.ts index 8ecb7a4a441..ac194d3a5e5 100644 --- a/apps/sim/lib/api-key/auth.ts +++ b/apps/sim/lib/api-key/auth.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { apiKey } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq } from 'drizzle-orm' import { decryptApiKey, @@ -12,7 +13,6 @@ import { } from '@/lib/api-key/crypto' import { env } from '@/lib/core/config/env' import { safeCompare } from '@/lib/core/security/encryption' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('ApiKeyAuth') diff --git a/apps/sim/lib/audio/extractor.ts b/apps/sim/lib/audio/extractor.ts index 5c328722c19..f7e722bb578 100644 --- a/apps/sim/lib/audio/extractor.ts +++ b/apps/sim/lib/audio/extractor.ts @@ -3,6 +3,7 @@ import fsSync from 'node:fs' import fs from 'node:fs/promises' import os from 'node:os' import path from 'node:path' +import { createLogger } from '@sim/logger' import ffmpegStatic from 'ffmpeg-static' import ffmpeg from 'fluent-ffmpeg' import type { @@ -11,6 +12,8 @@ import type { AudioMetadata, } from '@/lib/audio/types' +const logger = createLogger('AudioExtractor') + let ffmpegInitialized = false let ffmpegPath: string | null = null @@ -35,7 +38,7 @@ function ensureFfmpeg(): void { fsSync.accessSync(ffmpegStatic, fsSync.constants.X_OK) ffmpegPath = ffmpegStatic ffmpeg.setFfmpegPath(ffmpegPath) - console.log('[FFmpeg] Using ffmpeg-static:', ffmpegPath) + logger.info('[FFmpeg] Using ffmpeg-static:', ffmpegPath) return } catch { // Binary doesn't exist or not executable @@ -49,7 +52,7 @@ function ensureFfmpeg(): void { // On Windows, 'where' returns multiple paths - take first ffmpegPath = result.split('\n')[0] ffmpeg.setFfmpegPath(ffmpegPath) - console.log('[FFmpeg] Using system ffmpeg:', ffmpegPath) + logger.info('[FFmpeg] Using system ffmpeg:', ffmpegPath) return } catch { // System ffmpeg not found @@ -57,7 +60,7 @@ function ensureFfmpeg(): void { // No FFmpeg found - set flag but don't throw yet // Error will be thrown when user tries to use video extraction - console.warn('[FFmpeg] No FFmpeg binary found at module load time') + logger.warn('[FFmpeg] No FFmpeg binary found at module load time') } /** @@ -134,7 +137,7 @@ async function convertAudioWithFFmpeg( duration = metadata.duration || 0 } catch (error) { // Metadata extraction failed, continue without duration - console.warn('Failed to extract metadata:', error) + logger.warn('Failed to extract metadata:', error) } // Convert using FFmpeg diff --git a/apps/sim/lib/audit/log.test.ts b/apps/sim/lib/audit/log.test.ts index 57381729a43..64856f943ed 100644 --- a/apps/sim/lib/audit/log.test.ts +++ b/apps/sim/lib/audit/log.test.ts @@ -1,19 +1,15 @@ /** * @vitest-environment node */ -import { auditMock, databaseMock, drizzleOrmMock, loggerMock } from '@sim/testing' +import { auditMock, databaseMock, schemaMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('@sim/db', () => ({ ...databaseMock, auditLog: { id: 'id', workspaceId: 'workspace_id' }, })) -vi.mock('@sim/db/schema', () => ({ - user: { id: 'id', name: 'name', email: 'email' }, -})) -vi.mock('drizzle-orm', () => drizzleOrmMock) -vi.mock('@sim/logger', () => loggerMock) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@sim/utils/id', () => ({ generateId: () => 'test-uuid-123', generateShortId: () => 'test-id-123', isValidUuid: (v: string) => diff --git a/apps/sim/lib/audit/log.ts b/apps/sim/lib/audit/log.ts index ea7783aba78..3176fcbee9a 100644 --- a/apps/sim/lib/audit/log.ts +++ b/apps/sim/lib/audit/log.ts @@ -1,10 +1,10 @@ import { auditLog, db } from '@sim/db' import { user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import type { AuditActionType, AuditResourceTypeValue } from '@/lib/audit/types' import { getClientIp } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' export type { AuditActionType, AuditResourceTypeValue } from '@/lib/audit/types' export { AuditAction, AuditResourceType } from '@/lib/audit/types' diff --git a/apps/sim/lib/auth/anonymous.ts b/apps/sim/lib/auth/anonymous.ts index 4df32329130..839e65487ec 100644 --- a/apps/sim/lib/auth/anonymous.ts +++ b/apps/sim/lib/auth/anonymous.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import * as schema from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { ANONYMOUS_USER, ANONYMOUS_USER_ID } from './constants' const logger = createLogger('AnonymousAuth') diff --git a/apps/sim/lib/auth/auth.ts b/apps/sim/lib/auth/auth.ts index 32237b4119a..fba33becdac 100644 --- a/apps/sim/lib/auth/auth.ts +++ b/apps/sim/lib/auth/auth.ts @@ -4,6 +4,8 @@ import { stripe } from '@better-auth/stripe' import { db } from '@sim/db' import * as schema from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { betterAuth } from 'better-auth' import { drizzleAdapter } from 'better-auth/adapters/drizzle' import { nextCookies } from 'better-auth/next-js' @@ -73,9 +75,7 @@ import { isSignupEmailValidationEnabled, } from '@/lib/core/config/feature-flags' import { PlatformEvents } from '@/lib/core/telemetry' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { processCredentialDraft } from '@/lib/credentials/draft-processor' import { sendEmail } from '@/lib/messaging/email/mailer' import { getFromEmailAddress, getPersonalEmailFrom } from '@/lib/messaging/email/utils' diff --git a/apps/sim/lib/auth/cimd.ts b/apps/sim/lib/auth/cimd.ts index 3ed57e50cc7..45e9628b75a 100644 --- a/apps/sim/lib/auth/cimd.ts +++ b/apps/sim/lib/auth/cimd.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { oauthApplication } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { secureFetchWithValidation } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('cimd') diff --git a/apps/sim/lib/billing/calculations/usage-monitor.ts b/apps/sim/lib/billing/calculations/usage-monitor.ts index c57fdcc7cd6..6e053067715 100644 --- a/apps/sim/lib/billing/calculations/usage-monitor.ts +++ b/apps/sim/lib/billing/calculations/usage-monitor.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { member, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import { getHighestPrioritySubscription, @@ -15,7 +16,6 @@ import { getPlanTierDollars, isPaid } from '@/lib/billing/plan-helpers' import { isOrgScopedSubscription } from '@/lib/billing/subscriptions/utils' import { toDecimal, toNumber } from '@/lib/billing/utils/decimal' import { isBillingEnabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('UsageMonitor') diff --git a/apps/sim/lib/billing/core/usage-log.ts b/apps/sim/lib/billing/core/usage-log.ts index 165c6e3e3f7..a2400d28a85 100644 --- a/apps/sim/lib/billing/core/usage-log.ts +++ b/apps/sim/lib/billing/core/usage-log.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { usageLog, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, desc, eq, gte, lte, type SQL, sql } from 'drizzle-orm' import { isBillingEnabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('UsageLog') diff --git a/apps/sim/lib/billing/core/usage.ts b/apps/sim/lib/billing/core/usage.ts index c560acc63a9..c9990673ac8 100644 --- a/apps/sim/lib/billing/core/usage.ts +++ b/apps/sim/lib/billing/core/usage.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { member, organization, settings, user, userStats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { getEmailSubject, @@ -31,7 +32,6 @@ import type { BillingData, UsageData, UsageLimitInfo } from '@/lib/billing/types import { Decimal, toDecimal, toNumber } from '@/lib/billing/utils/decimal' import { isBillingEnabled } from '@/lib/core/config/feature-flags' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { getEmailPreferences } from '@/lib/messaging/email/unsubscribe' diff --git a/apps/sim/lib/billing/credits/daily-refresh.test.ts b/apps/sim/lib/billing/credits/daily-refresh.test.ts index 8def419adec..9b1644fa99c 100644 --- a/apps/sim/lib/billing/credits/daily-refresh.test.ts +++ b/apps/sim/lib/billing/credits/daily-refresh.test.ts @@ -1,7 +1,7 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' +import { schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const mockDbSelect = vi.fn() @@ -18,13 +18,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - usageLog: { - userId: 'user_id', - createdAt: 'created_at', - cost: 'cost', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => { const sqlTag = () => { @@ -42,7 +36,6 @@ vi.mock('drizzle-orm', () => { } }) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/billing/constants', () => ({ DAILY_REFRESH_RATE: 0.01, })) diff --git a/apps/sim/lib/billing/organization.ts b/apps/sim/lib/billing/organization.ts index 248aef50ceb..dffcba108bc 100644 --- a/apps/sim/lib/billing/organization.ts +++ b/apps/sim/lib/billing/organization.ts @@ -8,13 +8,13 @@ import { userStats, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, sql } from 'drizzle-orm' import { hasPaidSubscription } from '@/lib/billing' import { getPlanPricing } from '@/lib/billing/core/billing' import { syncUsageLimitsFromSubscription } from '@/lib/billing/core/usage' import { isEnterprise, isPaid, isTeam } from '@/lib/billing/plan-helpers' import { toDecimal, toNumber } from '@/lib/billing/utils/decimal' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('BillingOrganization') diff --git a/apps/sim/lib/billing/organizations/membership.ts b/apps/sim/lib/billing/organizations/membership.ts index 35b08984a32..b39e79503d4 100644 --- a/apps/sim/lib/billing/organizations/membership.ts +++ b/apps/sim/lib/billing/organizations/membership.ts @@ -14,6 +14,7 @@ import { userStats, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull, ne, or, sql } from 'drizzle-orm' import { syncUsageLimitsFromSubscription } from '@/lib/billing/core/usage' import { isPaid, sqlIsPro } from '@/lib/billing/plan-helpers' @@ -22,7 +23,6 @@ import { toDecimal, toNumber } from '@/lib/billing/utils/decimal' import { validateSeatAvailability } from '@/lib/billing/validation/seat-management' import { OUTBOX_EVENT_TYPES } from '@/lib/billing/webhooks/outbox-handlers' import { enqueueOutboxEvent } from '@/lib/core/outbox/service' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('OrganizationMembership') diff --git a/apps/sim/lib/billing/webhooks/enterprise.ts b/apps/sim/lib/billing/webhooks/enterprise.ts index ed34d08a3c0..c717024001e 100644 --- a/apps/sim/lib/billing/webhooks/enterprise.ts +++ b/apps/sim/lib/billing/webhooks/enterprise.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { organization, subscription, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import type Stripe from 'stripe' import { getEmailSubject, renderEnterpriseSubscriptionEmail } from '@/components/emails' -import { generateId } from '@/lib/core/utils/uuid' import { sendEmail } from '@/lib/messaging/email/mailer' import { getFromEmailAddress } from '@/lib/messaging/email/utils' import { parseEnterpriseSubscriptionMetadata } from '../types' diff --git a/apps/sim/lib/billing/webhooks/invoices.test.ts b/apps/sim/lib/billing/webhooks/invoices.test.ts index f0a004059b2..f39906d5ab0 100644 --- a/apps/sim/lib/billing/webhooks/invoices.test.ts +++ b/apps/sim/lib/billing/webhooks/invoices.test.ts @@ -1,11 +1,12 @@ /** * @vitest-environment node */ +import { schemaMock, urlsMock, urlsMockFns } from '@sim/testing' import type Stripe from 'stripe' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockBlockOrgMembers, mockDbSelect, mockLogger, mockUnblockOrgMembers, selectResponses } = - vi.hoisted(() => { +const { mockBlockOrgMembers, mockDbSelect, mockUnblockOrgMembers, selectResponses } = vi.hoisted( + () => { const selectResponses: Array<{ limitResult?: unknown; whereResult?: unknown }> = [] const mockDbSelect = vi.fn(() => { const nextResponse = selectResponses.shift() @@ -31,16 +32,11 @@ const { mockBlockOrgMembers, mockDbSelect, mockLogger, mockUnblockOrgMembers, se return { mockBlockOrgMembers: vi.fn(), mockDbSelect, - mockLogger: { - debug: vi.fn(), - error: vi.fn(), - info: vi.fn(), - warn: vi.fn(), - }, mockUnblockOrgMembers: vi.fn(), selectResponses, } - }) + } +) vi.mock('@sim/db', () => ({ db: { @@ -48,32 +44,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - member: { - organizationId: 'member.organizationId', - role: 'member.role', - userId: 'member.userId', - }, - organization: {}, - subscription: { - referenceId: 'subscription.referenceId', - stripeSubscriptionId: 'subscription.stripeSubscriptionId', - }, - user: { - email: 'user.email', - id: 'user.id', - name: 'user.name', - }, - userStats: { - billingBlocked: 'userStats.billingBlocked', - billingBlockedReason: 'userStats.billingBlockedReason', - userId: 'userStats.userId', - }, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn(() => mockLogger), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn(() => 'and'), @@ -150,9 +121,7 @@ vi.mock('@/lib/billing/webhooks/idempotency', () => ({ }, })) -vi.mock('@/lib/core/utils/urls', () => ({ - getBaseUrl: vi.fn(() => 'https://sim.test'), -})) +vi.mock('@/lib/core/utils/urls', () => urlsMock) vi.mock('@/lib/messaging/email/mailer', () => ({ sendEmail: vi.fn(), @@ -196,6 +165,7 @@ describe('invoice billing recovery', () => { beforeEach(() => { vi.clearAllMocks() selectResponses.length = 0 + urlsMockFns.mockGetBaseUrl.mockReturnValue('https://sim.test') mockBlockOrgMembers.mockResolvedValue(2) mockUnblockOrgMembers.mockResolvedValue(2) }) diff --git a/apps/sim/lib/chunkers/json-yaml-chunker.test.ts b/apps/sim/lib/chunkers/json-yaml-chunker.test.ts index 251b50daeaa..8ac0eafada8 100644 --- a/apps/sim/lib/chunkers/json-yaml-chunker.test.ts +++ b/apps/sim/lib/chunkers/json-yaml-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' import { JsonYamlChunker } from './json-yaml-chunker' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/lib/tokenization', () => ({ getAccurateTokenCount: (text: string) => Math.ceil(text.length / 4), })) diff --git a/apps/sim/lib/chunkers/recursive-chunker.test.ts b/apps/sim/lib/chunkers/recursive-chunker.test.ts index 846267034cf..345da36aaf3 100644 --- a/apps/sim/lib/chunkers/recursive-chunker.test.ts +++ b/apps/sim/lib/chunkers/recursive-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { RecursiveChunker } from './recursive-chunker' -vi.mock('@sim/logger', () => loggerMock) - describe('RecursiveChunker', () => { describe('empty and whitespace input', () => { it.concurrent('should return empty array for empty string', async () => { diff --git a/apps/sim/lib/chunkers/regex-chunker.test.ts b/apps/sim/lib/chunkers/regex-chunker.test.ts index 5b64cf3f495..5716d45b28a 100644 --- a/apps/sim/lib/chunkers/regex-chunker.test.ts +++ b/apps/sim/lib/chunkers/regex-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { RegexChunker } from './regex-chunker' -vi.mock('@sim/logger', () => loggerMock) - describe('RegexChunker', () => { describe('empty and whitespace input', () => { it.concurrent('should return empty array for empty string', async () => { diff --git a/apps/sim/lib/chunkers/regex-chunker.ts b/apps/sim/lib/chunkers/regex-chunker.ts index 83b7dfdaee4..4276287c627 100644 --- a/apps/sim/lib/chunkers/regex-chunker.ts +++ b/apps/sim/lib/chunkers/regex-chunker.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { Chunk, RegexChunkerOptions } from '@/lib/chunkers/types' import { addOverlap, @@ -9,7 +10,6 @@ import { splitAtWordBoundaries, tokensToChars, } from '@/lib/chunkers/utils' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('RegexChunker') diff --git a/apps/sim/lib/chunkers/sentence-chunker.test.ts b/apps/sim/lib/chunkers/sentence-chunker.test.ts index 78708de29ad..4d5883f22ff 100644 --- a/apps/sim/lib/chunkers/sentence-chunker.test.ts +++ b/apps/sim/lib/chunkers/sentence-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { SentenceChunker } from './sentence-chunker' -vi.mock('@sim/logger', () => loggerMock) - describe('SentenceChunker', () => { describe('empty and whitespace input', () => { it.concurrent('should return empty array for empty string', async () => { diff --git a/apps/sim/lib/chunkers/structured-data-chunker.test.ts b/apps/sim/lib/chunkers/structured-data-chunker.test.ts index 3cd6b7ec27a..73c9106ae26 100644 --- a/apps/sim/lib/chunkers/structured-data-chunker.test.ts +++ b/apps/sim/lib/chunkers/structured-data-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { StructuredDataChunker } from './structured-data-chunker' -vi.mock('@sim/logger', () => loggerMock) - describe('StructuredDataChunker', () => { describe('isStructuredData', () => { it('should detect CSV content with many columns', () => { diff --git a/apps/sim/lib/chunkers/token-chunker.test.ts b/apps/sim/lib/chunkers/token-chunker.test.ts index 420224c4d6e..24666410b96 100644 --- a/apps/sim/lib/chunkers/token-chunker.test.ts +++ b/apps/sim/lib/chunkers/token-chunker.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { TokenChunker } from './token-chunker' -vi.mock('@sim/logger', () => loggerMock) - describe('TokenChunker', () => { describe('empty and whitespace input', () => { it.concurrent('should return empty array for empty string', async () => { diff --git a/apps/sim/lib/copilot/auth/permissions.test.ts b/apps/sim/lib/copilot/auth/permissions.test.ts index 46aaf84bf39..dbb7222380b 100644 --- a/apps/sim/lib/copilot/auth/permissions.test.ts +++ b/apps/sim/lib/copilot/auth/permissions.test.ts @@ -1,23 +1,20 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' +import { permissionsMock, permissionsMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetActiveWorkflowContext, mockGetUserEntityPermissions } = vi.hoisted(() => ({ +const { mockGetActiveWorkflowContext } = vi.hoisted(() => ({ mockGetActiveWorkflowContext: vi.fn(), - mockGetUserEntityPermissions: vi.fn(), })) -vi.mock('@sim/logger', () => loggerMock) +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions vi.mock('@/lib/workflows/active-context', () => ({ getActiveWorkflowContext: mockGetActiveWorkflowContext, })) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: mockGetUserEntityPermissions, -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) import { createPermissionError, verifyWorkflowAccess } from '@/lib/copilot/auth/permissions' diff --git a/apps/sim/lib/copilot/chat/payload.test.ts b/apps/sim/lib/copilot/chat/payload.test.ts index 4231ac64b36..ab94e1b4719 100644 --- a/apps/sim/lib/copilot/chat/payload.test.ts +++ b/apps/sim/lib/copilot/chat/payload.test.ts @@ -1,6 +1,7 @@ /** * @vitest-environment node */ +import { featureFlagsMock, workflowsUtilsMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { mockCreateUserToolSchema, mockGetHighestPrioritySubscription } = vi.hoisted(() => ({ @@ -18,17 +19,13 @@ vi.mock('@/lib/billing/plan-helpers', () => ({ ), })) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isHosted: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) vi.mock('@/lib/mcp/utils', () => ({ createMcpToolId: vi.fn(), })) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/tools/registry', () => ({ tools: { diff --git a/apps/sim/lib/copilot/chat/payload.ts b/apps/sim/lib/copilot/chat/payload.ts index b998cec31ae..6f6f297dda7 100644 --- a/apps/sim/lib/copilot/chat/payload.ts +++ b/apps/sim/lib/copilot/chat/payload.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { getHighestPrioritySubscription } from '@/lib/billing/core/subscription' import { isPaid } from '@/lib/billing/plan-helpers' import { getToolEntry } from '@/lib/copilot/tool-executor/router' import { getCopilotToolDescription } from '@/lib/copilot/tools/descriptions' import { isHosted } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' import { createMcpToolId } from '@/lib/mcp/utils' import { trackChatUpload } from '@/lib/uploads/contexts/workspace/workspace-file-manager' import { tools } from '@/tools/registry' diff --git a/apps/sim/lib/copilot/chat/post.test.ts b/apps/sim/lib/copilot/chat/post.test.ts index c2c884c96de..b71b531ceb2 100644 --- a/apps/sim/lib/copilot/chat/post.test.ts +++ b/apps/sim/lib/copilot/chat/post.test.ts @@ -2,14 +2,23 @@ * @vitest-environment node */ +import { + authMock, + authMockFns, + permissionsMock, + permissionsMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { NextRequest } from 'next/server' import { beforeEach, describe, expect, it, vi } from 'vitest' +const resolveWorkflowIdForUser = workflowsUtilsMockFns.mockResolveWorkflowIdForUser +const getWorkflowById = workflowsUtilsMockFns.mockGetWorkflowById +const getUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions + const { - getSession, - resolveWorkflowIdForUser, - getWorkflowById, - getUserEntityPermissions, getEffectiveDecryptedEnv, generateWorkspaceContext, processContextsServer, @@ -21,10 +30,6 @@ const { releasePendingChatStream, resolveOrCreateChat, } = vi.hoisted(() => ({ - getSession: vi.fn(), - resolveWorkflowIdForUser: vi.fn(), - getWorkflowById: vi.fn(), - getUserEntityPermissions: vi.fn(), getEffectiveDecryptedEnv: vi.fn(), generateWorkspaceContext: vi.fn(), processContextsServer: vi.fn(), @@ -37,18 +42,13 @@ const { resolveOrCreateChat: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession, -})) +const getSession = authMockFns.mockGetSession -vi.mock('@/lib/workflows/utils', () => ({ - resolveWorkflowIdForUser, - getWorkflowById, -})) +vi.mock('@/lib/auth', () => authMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) + +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) vi.mock('@/lib/environment/utils', () => ({ getEffectiveDecryptedEnv, @@ -100,14 +100,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - copilotChats: { - id: 'id', - messages: 'messages', - conversationId: 'conversationId', - updatedAt: 'updatedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn(() => ({})), diff --git a/apps/sim/lib/copilot/chat/post.ts b/apps/sim/lib/copilot/chat/post.ts index 468ed4f048c..1dc5d0079a5 100644 --- a/apps/sim/lib/copilot/chat/post.ts +++ b/apps/sim/lib/copilot/chat/post.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq, sql } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { z } from 'zod' @@ -33,7 +34,6 @@ import type { ExecutionContext, OrchestratorResult } from '@/lib/copilot/request import { persistChatResources } from '@/lib/copilot/resources/persistence' import { taskPubSub } from '@/lib/copilot/tasks' import { prepareExecutionContext } from '@/lib/copilot/tools/handlers/context' -import { toError } from '@/lib/core/utils/helpers' import { getEffectiveDecryptedEnv } from '@/lib/environment/utils' import { getWorkflowById, resolveWorkflowIdForUser } from '@/lib/workflows/utils' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/lib/copilot/chat/workspace-context.ts b/apps/sim/lib/copilot/chat/workspace-context.ts index b0af547ba66..bfea8ed5b8b 100644 --- a/apps/sim/lib/copilot/chat/workspace-context.ts +++ b/apps/sim/lib/copilot/chat/workspace-context.ts @@ -10,9 +10,9 @@ import { workflowSchedule, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, count, eq, inArray, isNull } from 'drizzle-orm' import { normalizeVfsSegment } from '@/lib/copilot/vfs/normalize-segment' -import { toError } from '@/lib/core/utils/helpers' import { getAccessibleOAuthCredentials } from '@/lib/credentials/environment' import { listWorkspaceFiles } from '@/lib/uploads/contexts/workspace' import { listCustomTools } from '@/lib/workflows/custom-tools/operations' diff --git a/apps/sim/lib/copilot/persistence/tool-confirm/index.ts b/apps/sim/lib/copilot/persistence/tool-confirm/index.ts index 136482be884..cd13ee31057 100644 --- a/apps/sim/lib/copilot/persistence/tool-confirm/index.ts +++ b/apps/sim/lib/copilot/persistence/tool-confirm/index.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ASYNC_TOOL_STATUS, type AsyncCompletionEnvelope, @@ -8,7 +9,6 @@ import { import { getAsyncToolCalls } from '@/lib/copilot/async-runs/repository' import { MothershipStreamV1ToolOutcome } from '@/lib/copilot/generated/mothership-stream-v1' import { getRedisClient } from '@/lib/core/config/redis' -import { toError } from '@/lib/core/utils/helpers' import { createPubSubChannel } from '@/lib/events/pubsub' const logger = createLogger('CopilotOrchestratorPersistence') diff --git a/apps/sim/lib/copilot/request/context/request-context.ts b/apps/sim/lib/copilot/request/context/request-context.ts index bed52c21a49..e6ad4807eee 100644 --- a/apps/sim/lib/copilot/request/context/request-context.ts +++ b/apps/sim/lib/copilot/request/context/request-context.ts @@ -1,6 +1,6 @@ +import { generateId } from '@sim/utils/id' import { TraceCollector } from '@/lib/copilot/request/trace' import type { StreamingContext } from '@/lib/copilot/request/types' -import { generateId } from '@/lib/core/utils/uuid' /** * Create a fresh StreamingContext. diff --git a/apps/sim/lib/copilot/request/go/file-preview-adapter.ts b/apps/sim/lib/copilot/request/go/file-preview-adapter.ts index bc2d17e76ff..53e698a6c11 100644 --- a/apps/sim/lib/copilot/request/go/file-preview-adapter.ts +++ b/apps/sim/lib/copilot/request/go/file-preview-adapter.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MothershipStreamV1EventType } from '@/lib/copilot/generated/mothership-stream-v1' import { createFilePreviewSession, @@ -25,7 +26,6 @@ import { buildFilePreviewText, loadWorkspaceFileTextForPreview, } from '@/lib/copilot/tools/server/files/file-preview' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotFilePreviewAdapter') diff --git a/apps/sim/lib/copilot/request/go/parser.ts b/apps/sim/lib/copilot/request/go/parser.ts index ddb18d0f096..79cdf7383ad 100644 --- a/apps/sim/lib/copilot/request/go/parser.ts +++ b/apps/sim/lib/copilot/request/go/parser.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' const logger = createLogger('CopilotSseParser') diff --git a/apps/sim/lib/copilot/request/go/stream.ts b/apps/sim/lib/copilot/request/go/stream.ts index d031162ba87..a1bb3928a76 100644 --- a/apps/sim/lib/copilot/request/go/stream.ts +++ b/apps/sim/lib/copilot/request/go/stream.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { ORCHESTRATION_TIMEOUT_MS } from '@/lib/copilot/constants' import { MothershipStreamV1SpanLifecycleEvent } from '@/lib/copilot/generated/mothership-stream-v1' import { @@ -26,7 +27,6 @@ import type { StreamEvent, StreamingContext, } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotGoStream') diff --git a/apps/sim/lib/copilot/request/handlers/handlers.test.ts b/apps/sim/lib/copilot/request/handlers/handlers.test.ts index fd0892ab930..e3d20014cd8 100644 --- a/apps/sim/lib/copilot/request/handlers/handlers.test.ts +++ b/apps/sim/lib/copilot/request/handlers/handlers.test.ts @@ -2,12 +2,9 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { TraceCollector } from '@/lib/copilot/request/trace' -vi.mock('@sim/logger', () => loggerMock) - const { isSimExecuted, executeTool, ensureHandlersRegistered } = vi.hoisted(() => ({ isSimExecuted: vi.fn().mockReturnValue(true), executeTool: vi.fn().mockResolvedValue({ success: true, output: { ok: true } }), diff --git a/apps/sim/lib/copilot/request/handlers/tool.ts b/apps/sim/lib/copilot/request/handlers/tool.ts index 0a6c0d7f8af..f58cc11c59b 100644 --- a/apps/sim/lib/copilot/request/handlers/tool.ts +++ b/apps/sim/lib/copilot/request/handlers/tool.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { upsertAsyncToolCall } from '@/lib/copilot/async-runs/repository' import { STREAM_TIMEOUT_MS } from '@/lib/copilot/constants' import { @@ -26,7 +27,6 @@ import type { import { getToolEntry, isSimExecuted } from '@/lib/copilot/tool-executor' import { isToolHiddenInUi } from '@/lib/copilot/tools/client/hidden-tools' import { isWorkflowToolName } from '@/lib/copilot/tools/workflow-tools' -import { toError } from '@/lib/core/utils/helpers' import type { ToolScope } from './types' import { abortPendingToolIfStreamDead, diff --git a/apps/sim/lib/copilot/request/handlers/types.ts b/apps/sim/lib/copilot/request/handlers/types.ts index 9ce64903425..9a1aa0d3967 100644 --- a/apps/sim/lib/copilot/request/handlers/types.ts +++ b/apps/sim/lib/copilot/request/handlers/types.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { AsyncCompletionSignal, AsyncTerminalCompletionSnapshot, @@ -24,7 +25,6 @@ import type { StreamingContext, ToolCallState, } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' export type StreamHandler = ( event: StreamEvent, diff --git a/apps/sim/lib/copilot/request/http.ts b/apps/sim/lib/copilot/request/http.ts index 34eb28cf76a..e873af67499 100644 --- a/apps/sim/lib/copilot/request/http.ts +++ b/apps/sim/lib/copilot/request/http.ts @@ -1,3 +1,4 @@ +import { generateId } from '@sim/utils/id' import type { NextRequest } from 'next/server' import { NextResponse } from 'next/server' import { getSession } from '@/lib/auth' @@ -5,7 +6,6 @@ import { ASYNC_TOOL_CONFIRMATION_STATUS } from '@/lib/copilot/async-runs/lifecyc import { env } from '@/lib/core/config/env' import { safeCompare } from '@/lib/core/security/encryption' import { generateRequestId } from '@/lib/core/utils/request' -import { generateId } from '@/lib/core/utils/uuid' export const NotificationStatus = { pending: 'pending', diff --git a/apps/sim/lib/copilot/request/lifecycle/finalize.ts b/apps/sim/lib/copilot/request/lifecycle/finalize.ts index 51464dc4c7a..657a9003f19 100644 --- a/apps/sim/lib/copilot/request/lifecycle/finalize.ts +++ b/apps/sim/lib/copilot/request/lifecycle/finalize.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { updateRunStatus } from '@/lib/copilot/async-runs/repository' import { MothershipStreamV1CompletionStatus, @@ -6,7 +7,6 @@ import { } from '@/lib/copilot/generated/mothership-stream-v1' import type { StreamWriter } from '@/lib/copilot/request/session' import type { OrchestratorResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotStreamFinalize') diff --git a/apps/sim/lib/copilot/request/lifecycle/headless.ts b/apps/sim/lib/copilot/request/lifecycle/headless.ts index 6627053f2fd..f2a7d9d2a1b 100644 --- a/apps/sim/lib/copilot/request/lifecycle/headless.ts +++ b/apps/sim/lib/copilot/request/lifecycle/headless.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { RequestTraceV1Outcome as RequestTraceOutcome } from '@/lib/copilot/generated/request-trace-v1' import { RequestTraceV1Outcome, @@ -8,8 +10,6 @@ import type { CopilotLifecycleOptions } from '@/lib/copilot/request/lifecycle/ru import { runCopilotLifecycle } from '@/lib/copilot/request/lifecycle/run' import { reportTrace, TraceCollector } from '@/lib/copilot/request/trace' import type { OrchestratorResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('CopilotHeadlessLifecycle') diff --git a/apps/sim/lib/copilot/request/lifecycle/run.ts b/apps/sim/lib/copilot/request/lifecycle/run.ts index e72d30e6834..254fb88dca3 100644 --- a/apps/sim/lib/copilot/request/lifecycle/run.ts +++ b/apps/sim/lib/copilot/request/lifecycle/run.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { createRunSegment, updateRunStatus } from '@/lib/copilot/async-runs/repository' import { SIM_AGENT_API_URL, SIM_AGENT_VERSION } from '@/lib/copilot/constants' import { @@ -31,8 +33,6 @@ import type { } from '@/lib/copilot/request/types' import { prepareExecutionContext } from '@/lib/copilot/tools/handlers/context' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getEffectiveDecryptedEnv } from '@/lib/environment/utils' const logger = createLogger('CopilotLifecycle') diff --git a/apps/sim/lib/copilot/request/lifecycle/start.ts b/apps/sim/lib/copilot/request/lifecycle/start.ts index bb9529c8d3c..2cff3f75d3d 100644 --- a/apps/sim/lib/copilot/request/lifecycle/start.ts +++ b/apps/sim/lib/copilot/request/lifecycle/start.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { createRunSegment } from '@/lib/copilot/async-runs/repository' import { SIM_AGENT_API_URL } from '@/lib/copilot/constants' @@ -28,7 +29,6 @@ import { SSE_RESPONSE_HEADERS } from '@/lib/copilot/request/session/sse' import { reportTrace, TraceCollector } from '@/lib/copilot/request/trace' import { taskPubSub } from '@/lib/copilot/tasks' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' export { SSE_RESPONSE_HEADERS } diff --git a/apps/sim/lib/copilot/request/session/abort.ts b/apps/sim/lib/copilot/request/session/abort.ts index 722f8886bb9..8686649a18b 100644 --- a/apps/sim/lib/copilot/request/session/abort.ts +++ b/apps/sim/lib/copilot/request/session/abort.ts @@ -1,6 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { acquireLock, getRedisClient, releaseLock } from '@/lib/core/config/redis' -import { sleep, toError } from '@/lib/core/utils/helpers' import { clearAbortMarker, hasAbortMarker, writeAbortMarker } from './buffer' const logger = createLogger('SessionAbort') diff --git a/apps/sim/lib/copilot/request/session/buffer.test.ts b/apps/sim/lib/copilot/request/session/buffer.test.ts index 4edd7412864..951cdbc648d 100644 --- a/apps/sim/lib/copilot/request/session/buffer.test.ts +++ b/apps/sim/lib/copilot/request/session/buffer.test.ts @@ -2,7 +2,7 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' +import { redisConfigMock, redisConfigMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { MothershipStreamV1EventType, @@ -10,8 +10,6 @@ import { } from '@/lib/copilot/generated/mothership-stream-v1' import { createEvent } from '@/lib/copilot/request/session/event' -vi.mock('@sim/logger', () => loggerMock) - type StoredEnvelope = { score: number value: string @@ -102,9 +100,7 @@ const createRedisStub = () => { let mockRedis: ReturnType -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: () => mockRedis, -})) +vi.mock('@/lib/core/config/redis', () => redisConfigMock) import { allocateCursor, @@ -118,6 +114,7 @@ describe('mothership-stream-outbox', () => { beforeEach(() => { mockRedis = createRedisStub() vi.clearAllMocks() + redisConfigMockFns.mockGetRedisClient.mockImplementation(() => mockRedis) }) it('replays envelopes after a given cursor', async () => { diff --git a/apps/sim/lib/copilot/request/session/buffer.ts b/apps/sim/lib/copilot/request/session/buffer.ts index 58a2f4f280c..352946b1a66 100644 --- a/apps/sim/lib/copilot/request/session/buffer.ts +++ b/apps/sim/lib/copilot/request/session/buffer.ts @@ -1,7 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { env } from '@/lib/core/config/env' import { getRedisClient } from '@/lib/core/config/redis' -import { sleep, toError } from '@/lib/core/utils/helpers' import { type PersistedStreamEventEnvelope, parsePersistedStreamEventEnvelopeJson, diff --git a/apps/sim/lib/copilot/request/session/file-preview-session.ts b/apps/sim/lib/copilot/request/session/file-preview-session.ts index e6dc9df4ae1..42a2cf7ebdc 100644 --- a/apps/sim/lib/copilot/request/session/file-preview-session.ts +++ b/apps/sim/lib/copilot/request/session/file-preview-session.ts @@ -1,6 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { getRedisClient } from '@/lib/core/config/redis' -import { sleep, toError } from '@/lib/core/utils/helpers' import { getStreamConfig } from './buffer' import { FILE_PREVIEW_SESSION_SCHEMA_VERSION, diff --git a/apps/sim/lib/copilot/request/session/writer.ts b/apps/sim/lib/copilot/request/session/writer.ts index 38cf75db28e..7ccabf83dd3 100644 --- a/apps/sim/lib/copilot/request/session/writer.ts +++ b/apps/sim/lib/copilot/request/session/writer.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MothershipStreamV1EventType } from '@/lib/copilot/generated/mothership-stream-v1' -import { toError } from '@/lib/core/utils/helpers' import { appendEvents } from './buffer' import type { PersistedStreamEventEnvelope } from './contract' import { createEvent } from './event' diff --git a/apps/sim/lib/copilot/request/subagent.ts b/apps/sim/lib/copilot/request/subagent.ts index 6e3c143f343..16e85373210 100644 --- a/apps/sim/lib/copilot/request/subagent.ts +++ b/apps/sim/lib/copilot/request/subagent.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { generateWorkspaceContext } from '@/lib/copilot/chat/workspace-context' import { SIM_AGENT_API_URL } from '@/lib/copilot/constants' import { @@ -18,8 +20,6 @@ import type { import { prepareExecutionContext } from '@/lib/copilot/tools/handlers/context' import { env } from '@/lib/core/config/env' import { isHosted } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getEffectiveDecryptedEnv } from '@/lib/environment/utils' import { getWorkflowById } from '@/lib/workflows/utils' diff --git a/apps/sim/lib/copilot/request/tools/executor.ts b/apps/sim/lib/copilot/request/tools/executor.ts index 640f013c986..4d1745c4945 100644 --- a/apps/sim/lib/copilot/request/tools/executor.ts +++ b/apps/sim/lib/copilot/request/tools/executor.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { AsyncCompletionEnvelope, AsyncCompletionSignal, @@ -40,7 +41,6 @@ import { type ToolCallState, } from '@/lib/copilot/request/types' import { ensureHandlersRegistered, executeTool } from '@/lib/copilot/tool-executor' -import { toError } from '@/lib/core/utils/helpers' export { waitForToolCompletion } from '@/lib/copilot/request/tools/client' diff --git a/apps/sim/lib/copilot/request/tools/files.ts b/apps/sim/lib/copilot/request/tools/files.ts index 077cd3b58dd..3106d2d9a48 100644 --- a/apps/sim/lib/copilot/request/tools/files.ts +++ b/apps/sim/lib/copilot/request/tools/files.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { FunctionExecute, UserTable } from '@/lib/copilot/generated/tool-catalog-v1' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { uploadWorkspaceFile } from '@/lib/uploads/contexts/workspace/workspace-file-manager' const logger = createLogger('CopilotToolResultFiles') diff --git a/apps/sim/lib/copilot/request/tools/resources.ts b/apps/sim/lib/copilot/request/tools/resources.ts index 92458d1628c..5212cd048c0 100644 --- a/apps/sim/lib/copilot/request/tools/resources.ts +++ b/apps/sim/lib/copilot/request/tools/resources.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { MothershipStreamV1EventType, MothershipStreamV1ResourceOp, @@ -12,7 +13,6 @@ import { persistChatResources, removeChatResources, } from '@/lib/copilot/resources/persistence' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('CopilotResourceEffects') diff --git a/apps/sim/lib/copilot/request/tools/tables.ts b/apps/sim/lib/copilot/request/tools/tables.ts index f6cc4c5ea4f..079714a4e88 100644 --- a/apps/sim/lib/copilot/request/tools/tables.ts +++ b/apps/sim/lib/copilot/request/tools/tables.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { parse as csvParse } from 'csv-parse/sync' import { eq } from 'drizzle-orm' import { FunctionExecute, Read as ReadTool } from '@/lib/copilot/generated/tool-catalog-v1' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { getTableById } from '@/lib/table/service' const logger = createLogger('CopilotToolResultTables') diff --git a/apps/sim/lib/copilot/resources/persistence.ts b/apps/sim/lib/copilot/resources/persistence.ts index f94b49c7749..0407e61dd38 100644 --- a/apps/sim/lib/copilot/resources/persistence.ts +++ b/apps/sim/lib/copilot/resources/persistence.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { copilotChats } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq, sql } from 'drizzle-orm' -import { toError } from '@/lib/core/utils/helpers' import type { MothershipResource } from './types' export { diff --git a/apps/sim/lib/copilot/tool-executor/executor.ts b/apps/sim/lib/copilot/tool-executor/executor.ts index cc904776335..07d2a3f87b1 100644 --- a/apps/sim/lib/copilot/tool-executor/executor.ts +++ b/apps/sim/lib/copilot/tool-executor/executor.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { executeTool as executeAppTool } from '@/tools' import { isKnownTool, isSimExecuted } from './router' import type { diff --git a/apps/sim/lib/copilot/tools/client/run-tool-execution.ts b/apps/sim/lib/copilot/tools/client/run-tool-execution.ts index ad93eb2c4dc..e2dc8473a1e 100644 --- a/apps/sim/lib/copilot/tools/client/run-tool-execution.ts +++ b/apps/sim/lib/copilot/tools/client/run-tool-execution.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { AsyncCompletionData } from '@/lib/copilot/async-runs/lifecycle' import { COPILOT_CONFIRM_API_PATH } from '@/lib/copilot/constants' import { MothershipStreamV1ToolOutcome } from '@/lib/copilot/generated/mothership-stream-v1' @@ -7,8 +9,6 @@ import { RunFromBlock, RunWorkflowUntilBlock, } from '@/lib/copilot/generated/tool-catalog-v1' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { executeWorkflowWithFullLogging } from '@/app/workspace/[workspaceId]/w/[workflowId]/utils/workflow-execution-utils' import { useExecutionStore } from '@/stores/execution/store' import { diff --git a/apps/sim/lib/copilot/tools/handlers/deployment/deploy.ts b/apps/sim/lib/copilot/tools/handlers/deployment/deploy.ts index a661e71941e..b57bf076f89 100644 --- a/apps/sim/lib/copilot/tools/handlers/deployment/deploy.ts +++ b/apps/sim/lib/copilot/tools/handlers/deployment/deploy.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { chat, workflowMcpServer, workflowMcpTool } from '@sim/db/schema' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { mcpPubSub } from '@/lib/mcp/pubsub' import { generateParameterSchemaForWorkflow } from '@/lib/mcp/workflow-mcp-sync' import { sanitizeToolName } from '@/lib/mcp/workflow-tool-schema' diff --git a/apps/sim/lib/copilot/tools/handlers/deployment/manage.test.ts b/apps/sim/lib/copilot/tools/handlers/deployment/manage.test.ts index eb72568f780..785fc7bca39 100644 --- a/apps/sim/lib/copilot/tools/handlers/deployment/manage.test.ts +++ b/apps/sim/lib/copilot/tools/handlers/deployment/manage.test.ts @@ -2,14 +2,16 @@ * @vitest-environment node */ +import { auditMock, workflowsOrchestrationMock, workflowsOrchestrationMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { ExecutionContext } from '@/lib/copilot/request/types' -const { ensureWorkflowAccessMock, performRevertToVersionMock } = vi.hoisted(() => ({ +const { ensureWorkflowAccessMock } = vi.hoisted(() => ({ ensureWorkflowAccessMock: vi.fn(), - performRevertToVersionMock: vi.fn(), })) +const performRevertToVersionMock = workflowsOrchestrationMockFns.mockPerformRevertToVersion + vi.mock('@sim/db', () => ({ db: { select: vi.fn(), @@ -24,11 +26,7 @@ vi.mock('@sim/db', () => ({ workflowMcpTool: {}, })) -vi.mock('@/lib/audit/log', () => ({ - AuditAction: {}, - AuditResourceType: {}, - recordAudit: vi.fn(), -})) +vi.mock('@/lib/audit/log', () => auditMock) vi.mock('@/lib/mcp/pubsub', () => ({ mcpPubSub: { @@ -53,9 +51,7 @@ vi.mock('../access', () => ({ ensureWorkspaceAccess: vi.fn(), })) -vi.mock('@/lib/workflows/orchestration', () => ({ - performRevertToVersion: performRevertToVersionMock, -})) +vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) import { executeRevertToVersion } from './manage' diff --git a/apps/sim/lib/copilot/tools/handlers/deployment/manage.ts b/apps/sim/lib/copilot/tools/handlers/deployment/manage.ts index b33afbbfa96..cde7a541780 100644 --- a/apps/sim/lib/copilot/tools/handlers/deployment/manage.ts +++ b/apps/sim/lib/copilot/tools/handlers/deployment/manage.ts @@ -6,11 +6,11 @@ import { workflowMcpServer, workflowMcpTool, } from '@sim/db/schema' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull } from 'drizzle-orm' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { mcpPubSub } from '@/lib/mcp/pubsub' import { generateParameterSchemaForWorkflow } from '@/lib/mcp/workflow-mcp-sync' import { sanitizeToolName } from '@/lib/mcp/workflow-tool-schema' diff --git a/apps/sim/lib/copilot/tools/handlers/jobs.ts b/apps/sim/lib/copilot/tools/handlers/jobs.ts index 30271f8e33d..eb797a771f4 100644 --- a/apps/sim/lib/copilot/tools/handlers/jobs.ts +++ b/apps/sim/lib/copilot/tools/handlers/jobs.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { copilotChats, workflowSchedule } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { parseCronToHumanReadable, validateCronExpression } from '@/lib/workflows/schedules/utils' const logger = createLogger('JobTools') diff --git a/apps/sim/lib/copilot/tools/handlers/management/manage-credential.ts b/apps/sim/lib/copilot/tools/handlers/management/manage-credential.ts index f2d3d75c4b8..03422859dcc 100644 --- a/apps/sim/lib/copilot/tools/handlers/management/manage-credential.ts +++ b/apps/sim/lib/copilot/tools/handlers/management/manage-credential.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { credential } from '@sim/db/schema' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' export function executeManageCredential( rawParams: Record, diff --git a/apps/sim/lib/copilot/tools/handlers/management/manage-custom-tool.ts b/apps/sim/lib/copilot/tools/handlers/management/manage-custom-tool.ts index 13c6f3fa757..e683403736a 100644 --- a/apps/sim/lib/copilot/tools/handlers/management/manage-custom-tool.ts +++ b/apps/sim/lib/copilot/tools/handlers/management/manage-custom-tool.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { deleteCustomTool, getCustomToolById, diff --git a/apps/sim/lib/copilot/tools/handlers/management/manage-mcp-tool.ts b/apps/sim/lib/copilot/tools/handlers/management/manage-mcp-tool.ts index 366ba5b511f..c9b81b3f96f 100644 --- a/apps/sim/lib/copilot/tools/handlers/management/manage-mcp-tool.ts +++ b/apps/sim/lib/copilot/tools/handlers/management/manage-mcp-tool.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { mcpServers } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { validateMcpDomain } from '@/lib/mcp/domain-check' import { mcpService } from '@/lib/mcp/service' import { generateMcpServerId } from '@/lib/mcp/utils' diff --git a/apps/sim/lib/copilot/tools/handlers/management/manage-skill.ts b/apps/sim/lib/copilot/tools/handlers/management/manage-skill.ts index 5b8b59acda6..74a91b73c53 100644 --- a/apps/sim/lib/copilot/tools/handlers/management/manage-skill.ts +++ b/apps/sim/lib/copilot/tools/handlers/management/manage-skill.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { deleteSkill, listSkills, upsertSkills } from '@/lib/workflows/skills/operations' const logger = createLogger('CopilotToolExecutor') diff --git a/apps/sim/lib/copilot/tools/handlers/materialize-file.ts b/apps/sim/lib/copilot/tools/handlers/materialize-file.ts index 6d1fcbeb392..7db12ce4b5d 100644 --- a/apps/sim/lib/copilot/tools/handlers/materialize-file.ts +++ b/apps/sim/lib/copilot/tools/handlers/materialize-file.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { workflow, workspaceFiles } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' import { findMothershipUploadRowByChatAndName } from '@/lib/copilot/tools/handlers/upload-file-reader' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getServePathPrefix } from '@/lib/uploads' import { downloadWorkspaceFile } from '@/lib/uploads/contexts/workspace/workspace-file-manager' import { parseWorkflowJson } from '@/lib/workflows/operations/import-export' diff --git a/apps/sim/lib/copilot/tools/handlers/oauth.ts b/apps/sim/lib/copilot/tools/handlers/oauth.ts index 4c7a7829116..2fb2e0eb6f8 100644 --- a/apps/sim/lib/copilot/tools/handlers/oauth.ts +++ b/apps/sim/lib/copilot/tools/handlers/oauth.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { pendingCredentialDraft, user } from '@sim/db/schema' +import { toError } from '@sim/utils/errors' import { and, eq, lt } from 'drizzle-orm' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' import { getAllOAuthServices } from '@/lib/oauth/utils' diff --git a/apps/sim/lib/copilot/tools/handlers/restore-resource.ts b/apps/sim/lib/copilot/tools/handlers/restore-resource.ts index 893a76662cf..bbe90f76cfc 100644 --- a/apps/sim/lib/copilot/tools/handlers/restore-resource.ts +++ b/apps/sim/lib/copilot/tools/handlers/restore-resource.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { restoreKnowledgeBase } from '@/lib/knowledge/service' import { getTableById, restoreTable } from '@/lib/table/service' import { diff --git a/apps/sim/lib/copilot/tools/handlers/upload-file-reader.ts b/apps/sim/lib/copilot/tools/handlers/upload-file-reader.ts index d0ae21ac07a..3a46326fac1 100644 --- a/apps/sim/lib/copilot/tools/handlers/upload-file-reader.ts +++ b/apps/sim/lib/copilot/tools/handlers/upload-file-reader.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { workspaceFiles } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, isNull } from 'drizzle-orm' import { type FileReadResult, readFileRecord } from '@/lib/copilot/vfs/file-reader' import { normalizeVfsSegment } from '@/lib/copilot/vfs/normalize-segment' -import { toError } from '@/lib/core/utils/helpers' import { getServePathPrefix } from '@/lib/uploads' import type { WorkspaceFileRecord } from '@/lib/uploads/contexts/workspace/workspace-file-manager' diff --git a/apps/sim/lib/copilot/tools/handlers/vfs.test.ts b/apps/sim/lib/copilot/tools/handlers/vfs.test.ts index 7ec15c7d087..267ea35d65a 100644 --- a/apps/sim/lib/copilot/tools/handlers/vfs.test.ts +++ b/apps/sim/lib/copilot/tools/handlers/vfs.test.ts @@ -2,7 +2,6 @@ * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { TOOL_RESULT_MAX_INLINE_CHARS } from '@/lib/copilot/constants' @@ -14,7 +13,6 @@ const { readChatUpload } = vi.hoisted(() => ({ readChatUpload: vi.fn(), })) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/copilot/vfs', () => ({ getOrMaterializeVFS, })) diff --git a/apps/sim/lib/copilot/tools/handlers/vfs.ts b/apps/sim/lib/copilot/tools/handlers/vfs.ts index 844a49986b1..8a30c78d3bb 100644 --- a/apps/sim/lib/copilot/tools/handlers/vfs.ts +++ b/apps/sim/lib/copilot/tools/handlers/vfs.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { TOOL_RESULT_MAX_INLINE_CHARS } from '@/lib/copilot/constants' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' import { getOrMaterializeVFS } from '@/lib/copilot/vfs' -import { toError } from '@/lib/core/utils/helpers' import { listChatUploads, readChatUpload } from './upload-file-reader' const logger = createLogger('VfsTools') diff --git a/apps/sim/lib/copilot/tools/handlers/workflow/mutations.ts b/apps/sim/lib/copilot/tools/handlers/workflow/mutations.ts index 0c0d5f6f741..ef3a652c38d 100644 --- a/apps/sim/lib/copilot/tools/handlers/workflow/mutations.ts +++ b/apps/sim/lib/copilot/tools/handlers/workflow/mutations.ts @@ -1,14 +1,14 @@ import { db, workflow as workflowTable } from '@sim/db' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { createWorkspaceApiKey } from '@/lib/api-key/auth' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { getSocketServerUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { executeWorkflow } from '@/lib/workflows/executor/execute-workflow' import { getExecutionState, diff --git a/apps/sim/lib/copilot/tools/handlers/workflow/queries.test.ts b/apps/sim/lib/copilot/tools/handlers/workflow/queries.test.ts index d238bf78878..86fe5c9e63a 100644 --- a/apps/sim/lib/copilot/tools/handlers/workflow/queries.test.ts +++ b/apps/sim/lib/copilot/tools/handlers/workflow/queries.test.ts @@ -1,31 +1,34 @@ +import { + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { ensureWorkflowAccessMock, - loadWorkflowFromNormalizedTablesMock, getEffectiveBlockOutputPathsMock, hasTriggerCapabilityMock, getBlockMock, - getWorkflowByIdMock, } = vi.hoisted(() => ({ ensureWorkflowAccessMock: vi.fn(), - loadWorkflowFromNormalizedTablesMock: vi.fn(), getEffectiveBlockOutputPathsMock: vi.fn(), hasTriggerCapabilityMock: vi.fn(), getBlockMock: vi.fn(), - getWorkflowByIdMock: vi.fn(), })) +const loadWorkflowFromNormalizedTablesMock = + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables +const getWorkflowByIdMock = workflowsUtilsMockFns.mockGetWorkflowById + vi.mock('../access', () => ({ ensureWorkflowAccess: ensureWorkflowAccessMock, ensureWorkspaceAccess: vi.fn(), getDefaultWorkspaceId: vi.fn(), })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - loadWorkflowFromNormalizedTables: loadWorkflowFromNormalizedTablesMock, - loadDeployedWorkflowState: vi.fn(), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) vi.mock('@/lib/workflows/blocks/block-outputs', () => ({ getEffectiveBlockOutputPaths: getEffectiveBlockOutputPathsMock, @@ -39,10 +42,7 @@ vi.mock('@/blocks/registry', () => ({ getBlock: getBlockMock, })) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: getWorkflowByIdMock, - listFolders: vi.fn(), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) import { executeGetBlockOutputs } from './queries' diff --git a/apps/sim/lib/copilot/tools/handlers/workflow/queries.ts b/apps/sim/lib/copilot/tools/handlers/workflow/queries.ts index 71d85576448..e5139b6457a 100644 --- a/apps/sim/lib/copilot/tools/handlers/workflow/queries.ts +++ b/apps/sim/lib/copilot/tools/handlers/workflow/queries.ts @@ -1,6 +1,6 @@ +import { toError } from '@sim/utils/errors' import type { ExecutionContext, ToolCallResult } from '@/lib/copilot/request/types' import { formatNormalizedWorkflowForCopilot } from '@/lib/copilot/tools/shared/workflow-utils' -import { toError } from '@/lib/core/utils/helpers' import { mcpService } from '@/lib/mcp/service' import { listWorkspaceFiles } from '@/lib/uploads/contexts/workspace' import { getEffectiveBlockOutputPaths } from '@/lib/workflows/blocks/block-outputs' diff --git a/apps/sim/lib/copilot/tools/registry/server-tool-adapter.ts b/apps/sim/lib/copilot/tools/registry/server-tool-adapter.ts index 98cc122bc0e..777c4649019 100644 --- a/apps/sim/lib/copilot/tools/registry/server-tool-adapter.ts +++ b/apps/sim/lib/copilot/tools/registry/server-tool-adapter.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { ToolExecutionResult, ToolHandler } from '@/lib/copilot/tool-executor/types' import { routeExecution } from '@/lib/copilot/tools/server/router' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('ServerToolAdapter') diff --git a/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts b/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts index 362d7728bac..5b94a4a8966 100644 --- a/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts +++ b/apps/sim/lib/copilot/tools/server/blocks/get-blocks-metadata-tool.ts @@ -1,11 +1,11 @@ import { existsSync, readFileSync } from 'fs' import { join } from 'path' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { z } from 'zod' import { getCopilotToolDescription } from '@/lib/copilot/tools/descriptions' import type { BaseServerTool } from '@/lib/copilot/tools/server/base-tool' import { getAllowedIntegrationsFromEnv, isHosted } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' import { getServiceAccountProviderForProviderId } from '@/lib/oauth/utils' import { registry as blockRegistry } from '@/blocks/registry' import { AuthMode, type BlockConfig, isHiddenFromDisplay } from '@/blocks/types' diff --git a/apps/sim/lib/copilot/tools/server/files/edit-content.ts b/apps/sim/lib/copilot/tools/server/files/edit-content.ts index de2554b385d..22d9539ba88 100644 --- a/apps/sim/lib/copilot/tools/server/files/edit-content.ts +++ b/apps/sim/lib/copilot/tools/server/files/edit-content.ts @@ -1,10 +1,10 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { assertServerToolNotAborted, type BaseServerTool, type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' -import { toError } from '@/lib/core/utils/helpers' import { runSandboxTask } from '@/lib/execution/sandbox/run-task' import { updateWorkspaceFileContent } from '@/lib/uploads/contexts/workspace/workspace-file-manager' import { consumeLatestFileIntent } from './file-intent-store' diff --git a/apps/sim/lib/copilot/tools/server/files/file-intent-store.ts b/apps/sim/lib/copilot/tools/server/files/file-intent-store.ts index 2cffe16bcaa..8022e23916f 100644 --- a/apps/sim/lib/copilot/tools/server/files/file-intent-store.ts +++ b/apps/sim/lib/copilot/tools/server/files/file-intent-store.ts @@ -1,6 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { getRedisClient } from '@/lib/core/config/redis' -import { sleep, toError } from '@/lib/core/utils/helpers' import type { WorkspaceFileRecord } from '@/lib/uploads/contexts/workspace/workspace-file-manager' export type PendingFileIntent = { diff --git a/apps/sim/lib/copilot/tools/server/files/file-preview.ts b/apps/sim/lib/copilot/tools/server/files/file-preview.ts index e70cdab8c5d..43409613fb6 100644 --- a/apps/sim/lib/copilot/tools/server/files/file-preview.ts +++ b/apps/sim/lib/copilot/tools/server/files/file-preview.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { downloadWorkspaceFile, getWorkspaceFile, diff --git a/apps/sim/lib/copilot/tools/server/files/workspace-file.ts b/apps/sim/lib/copilot/tools/server/files/workspace-file.ts index ee72efb4a43..23f7753cac5 100644 --- a/apps/sim/lib/copilot/tools/server/files/workspace-file.ts +++ b/apps/sim/lib/copilot/tools/server/files/workspace-file.ts @@ -1,11 +1,11 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { WorkspaceFile } from '@/lib/copilot/generated/tool-catalog-v1' import { assertServerToolNotAborted, type BaseServerTool, type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' -import { toError } from '@/lib/core/utils/helpers' import { runSandboxTask } from '@/lib/execution/sandbox/run-task' import { deleteWorkspaceFile, diff --git a/apps/sim/lib/copilot/tools/server/image/generate-image.ts b/apps/sim/lib/copilot/tools/server/image/generate-image.ts index 9d864e654f3..ec97898cc5c 100644 --- a/apps/sim/lib/copilot/tools/server/image/generate-image.ts +++ b/apps/sim/lib/copilot/tools/server/image/generate-image.ts @@ -1,5 +1,6 @@ import { GoogleGenAI, type Part } from '@google/genai' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { GenerateImage } from '@/lib/copilot/generated/tool-catalog-v1' import { assertServerToolNotAborted, @@ -7,7 +8,6 @@ import { type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' import { getRotatingApiKey } from '@/lib/core/config/api-keys' -import { toError } from '@/lib/core/utils/helpers' import { getServePathPrefix } from '@/lib/uploads' import { downloadWorkspaceFile, diff --git a/apps/sim/lib/copilot/tools/server/knowledge/knowledge-base.ts b/apps/sim/lib/copilot/tools/server/knowledge/knowledge-base.ts index f8732227056..64d6561273b 100644 --- a/apps/sim/lib/copilot/tools/server/knowledge/knowledge-base.ts +++ b/apps/sim/lib/copilot/tools/server/knowledge/knowledge-base.ts @@ -1,6 +1,8 @@ import { db } from '@sim/db' import { knowledgeConnector } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { generateInternalToken } from '@/lib/auth/internal' import { KnowledgeBase } from '@/lib/copilot/generated/tool-catalog-v1' @@ -9,9 +11,7 @@ import { type BaseServerTool, type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' -import { toError } from '@/lib/core/utils/helpers' import { getInternalApiBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { createSingleDocument, deleteDocument, diff --git a/apps/sim/lib/copilot/tools/server/other/search-online.ts b/apps/sim/lib/copilot/tools/server/other/search-online.ts index 8a7dfc337a2..6448089a2e4 100644 --- a/apps/sim/lib/copilot/tools/server/other/search-online.ts +++ b/apps/sim/lib/copilot/tools/server/other/search-online.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { SearchOnline } from '@/lib/copilot/generated/tool-catalog-v1' import type { BaseServerTool } from '@/lib/copilot/tools/server/base-tool' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import { executeTool } from '@/tools' interface OnlineSearchParams { diff --git a/apps/sim/lib/copilot/tools/server/table/user-table.test.ts b/apps/sim/lib/copilot/tools/server/table/user-table.test.ts index 2110a5e5e27..ecb8337380a 100644 --- a/apps/sim/lib/copilot/tools/server/table/user-table.test.ts +++ b/apps/sim/lib/copilot/tools/server/table/user-table.test.ts @@ -19,15 +19,7 @@ const { mockReplaceTableRows: vi.fn(), })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - }), -})) - -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn().mockReturnValue('deadbeefcafef00d'), generateShortId: vi.fn().mockReturnValue('short-id'), })) diff --git a/apps/sim/lib/copilot/tools/server/table/user-table.ts b/apps/sim/lib/copilot/tools/server/table/user-table.ts index b567a6bf36e..5ffa8630352 100644 --- a/apps/sim/lib/copilot/tools/server/table/user-table.ts +++ b/apps/sim/lib/copilot/tools/server/table/user-table.ts @@ -1,12 +1,12 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { UserTable } from '@/lib/copilot/generated/tool-catalog-v1' import { assertServerToolNotAborted, type BaseServerTool, type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { buildAutoMapping, COLUMN_TYPES, diff --git a/apps/sim/lib/copilot/tools/server/user/get-credentials.ts b/apps/sim/lib/copilot/tools/server/user/get-credentials.ts index b7c329efad1..f856bb62c2b 100644 --- a/apps/sim/lib/copilot/tools/server/user/get-credentials.ts +++ b/apps/sim/lib/copilot/tools/server/user/get-credentials.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { account, user } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { jwtDecode } from 'jwt-decode' import { createPermissionError, verifyWorkflowAccess } from '@/lib/copilot/auth/permissions' import type { BaseServerTool } from '@/lib/copilot/tools/server/base-tool' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { getPersonalAndWorkspaceEnv } from '@/lib/environment/utils' import { getAllOAuthServices } from '@/lib/oauth' diff --git a/apps/sim/lib/copilot/tools/server/user/set-environment-variables.test.ts b/apps/sim/lib/copilot/tools/server/user/set-environment-variables.test.ts index ffd6317e76d..38813e2383a 100644 --- a/apps/sim/lib/copilot/tools/server/user/set-environment-variables.test.ts +++ b/apps/sim/lib/copilot/tools/server/user/set-environment-variables.test.ts @@ -18,13 +18,6 @@ const { upsertWorkspaceEnvVarsMock: vi.fn(), })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - error: vi.fn(), - }), -})) - vi.mock('@/lib/copilot/tools/handlers/access', () => ({ ensureWorkflowAccess: ensureWorkflowAccessMock, ensureWorkspaceAccess: ensureWorkspaceAccessMock, diff --git a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/builders.ts b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/builders.ts index a13b1402dab..ef7d326a580 100644 --- a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/builders.ts +++ b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/builders.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateId, isValidUuid } from '@/lib/core/utils/uuid' +import { generateId, isValidUuid } from '@sim/utils/id' import type { PermissionGroupConfig } from '@/lib/permission-groups/types' import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { diff --git a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/index.ts b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/index.ts index 7c9e09328b6..77b0c886b1d 100644 --- a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/index.ts +++ b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/index.ts @@ -1,6 +1,7 @@ import { db } from '@sim/db' import { workflow as workflowTable } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { EditWorkflow } from '@/lib/copilot/generated/tool-catalog-v1' import { @@ -9,7 +10,6 @@ import { type ServerToolContext, } from '@/lib/copilot/tools/server/base-tool' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import { getSocketServerUrl } from '@/lib/core/utils/urls' import { applyTargetedLayout, diff --git a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/operations.test.ts b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/operations.test.ts index 8c184e0cf5b..a29271f08c8 100644 --- a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/operations.test.ts +++ b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/operations.test.ts @@ -4,15 +4,6 @@ import { describe, expect, it, vi } from 'vitest' import { applyOperationsToWorkflowState } from './engine' -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - vi.mock('@/blocks/registry', () => ({ getAllBlocks: () => [ { diff --git a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/validation.test.ts b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/validation.test.ts index aa76cff4e51..c447f190954 100644 --- a/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/validation.test.ts +++ b/apps/sim/lib/copilot/tools/server/workflow/edit-workflow/validation.test.ts @@ -1,6 +1,7 @@ /** * @vitest-environment node */ +import { featureFlagsMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import { normalizeConditionRouterIds } from './builders' @@ -70,9 +71,7 @@ vi.mock('@/lib/copilot/validation/selector-validator', () => ({ validateSelectorIds: mockValidateSelectorIds, })) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isHosted: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) vi.mock('@/providers/utils', () => ({ getHostedModels: () => [], diff --git a/apps/sim/lib/copilot/validation/selector-validator.test.ts b/apps/sim/lib/copilot/validation/selector-validator.test.ts index 8774104a7ae..17c7123dd55 100644 --- a/apps/sim/lib/copilot/validation/selector-validator.test.ts +++ b/apps/sim/lib/copilot/validation/selector-validator.test.ts @@ -1,6 +1,7 @@ /** * @vitest-environment node */ +import { schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { mockDbSelect } = vi.hoisted(() => ({ @@ -13,54 +14,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - account: { - id: 'account.id', - userId: 'account.userId', - providerId: 'account.providerId', - }, - credential: { - id: 'credential.id', - accountId: 'credential.accountId', - displayName: 'credential.displayName', - providerId: 'credential.providerId', - workspaceId: 'credential.workspaceId', - type: 'credential.type', - }, - credentialMember: { - credentialId: 'credentialMember.credentialId', - userId: 'credentialMember.userId', - status: 'credentialMember.status', - }, - document: { - id: 'document.id', - userExcluded: 'document.userExcluded', - archivedAt: 'document.archivedAt', - deletedAt: 'document.deletedAt', - }, - knowledgeBase: { - id: 'knowledgeBase.id', - deletedAt: 'knowledgeBase.deletedAt', - workspaceId: 'knowledgeBase.workspaceId', - }, - mcpServers: { - id: 'mcpServers.id', - enabled: 'mcpServers.enabled', - deletedAt: 'mcpServers.deletedAt', - workspaceId: 'mcpServers.workspaceId', - }, - workflow: { - id: 'workflow.id', - archivedAt: 'workflow.archivedAt', - }, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - warn: vi.fn(), - error: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn((...args: unknown[]) => ({ type: 'and', args })), diff --git a/apps/sim/lib/copilot/validation/selector-validator.ts b/apps/sim/lib/copilot/validation/selector-validator.ts index f4a174c3699..1f1218dc40f 100644 --- a/apps/sim/lib/copilot/validation/selector-validator.ts +++ b/apps/sim/lib/copilot/validation/selector-validator.ts @@ -9,8 +9,8 @@ import { workflow, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq, inArray, isNull, or } from 'drizzle-orm' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('SelectorValidator') diff --git a/apps/sim/lib/copilot/vfs/file-reader.ts b/apps/sim/lib/copilot/vfs/file-reader.ts index 76e4a86e3eb..777d6ecc95b 100644 --- a/apps/sim/lib/copilot/vfs/file-reader.ts +++ b/apps/sim/lib/copilot/vfs/file-reader.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { WorkspaceFileRecord } from '@/lib/uploads/contexts/workspace/workspace-file-manager' import { downloadWorkspaceFile } from '@/lib/uploads/contexts/workspace/workspace-file-manager' import { isImageFileType } from '@/lib/uploads/utils/file-utils' diff --git a/apps/sim/lib/copilot/vfs/workspace-vfs.ts b/apps/sim/lib/copilot/vfs/workspace-vfs.ts index 5fd84ed4dad..e529c836ea6 100644 --- a/apps/sim/lib/copilot/vfs/workspace-vfs.ts +++ b/apps/sim/lib/copilot/vfs/workspace-vfs.ts @@ -16,6 +16,7 @@ import { workflowSchedule, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, desc, eq, isNotNull, isNull, ne } from 'drizzle-orm' import { listApiKeys } from '@/lib/api-key/service' import { buildWorkspaceMd, type WorkspaceMdData } from '@/lib/copilot/chat/workspace-context' @@ -51,7 +52,6 @@ import { serializeVersions, serializeWorkflowMeta, } from '@/lib/copilot/vfs/serializers' -import { toError } from '@/lib/core/utils/helpers' import { getAccessibleEnvCredentials, getAccessibleOAuthCredentials, diff --git a/apps/sim/lib/core/async-jobs/backends/database.ts b/apps/sim/lib/core/async-jobs/backends/database.ts index f0066e5189f..3c8f27327cf 100644 --- a/apps/sim/lib/core/async-jobs/backends/database.ts +++ b/apps/sim/lib/core/async-jobs/backends/database.ts @@ -1,5 +1,6 @@ import { asyncJobs, db } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq, sql } from 'drizzle-orm' import { type EnqueueOptions, @@ -10,7 +11,6 @@ import { type JobStatus, type JobType, } from '@/lib/core/async-jobs/types' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('DatabaseJobQueue') diff --git a/apps/sim/lib/core/config/redis.test.ts b/apps/sim/lib/core/config/redis.test.ts index d56b82f972c..cad0051753b 100644 --- a/apps/sim/lib/core/config/redis.test.ts +++ b/apps/sim/lib/core/config/redis.test.ts @@ -1,4 +1,4 @@ -import { createEnvMock, createMockRedis, loggerMock } from '@sim/testing' +import { createEnvMock, createMockRedis } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { MockRedisConstructor } = vi.hoisted(() => ({ @@ -8,7 +8,6 @@ const { MockRedisConstructor } = vi.hoisted(() => ({ const mockRedisInstance = createMockRedis() MockRedisConstructor.mockImplementation(() => mockRedisInstance) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/core/config/env', () => createEnvMock({ REDIS_URL: 'redis://localhost:6379' })) vi.mock('ioredis', () => ({ default: MockRedisConstructor, diff --git a/apps/sim/lib/core/config/redis.ts b/apps/sim/lib/core/config/redis.ts index 41fa836997d..a603a2bad3b 100644 --- a/apps/sim/lib/core/config/redis.ts +++ b/apps/sim/lib/core/config/redis.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import Redis from 'ioredis' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('Redis') diff --git a/apps/sim/lib/core/idempotency/cleanup.ts b/apps/sim/lib/core/idempotency/cleanup.ts index de8929d1524..78eb3c08cb0 100644 --- a/apps/sim/lib/core/idempotency/cleanup.ts +++ b/apps/sim/lib/core/idempotency/cleanup.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { idempotencyKey } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import { and, count, inArray, like, lt, max, min, sql } from 'drizzle-orm' -import { sleep } from '@/lib/core/utils/helpers' const logger = createLogger('IdempotencyCleanup') diff --git a/apps/sim/lib/core/idempotency/service.ts b/apps/sim/lib/core/idempotency/service.ts index 14e4cb46cee..b5428075a07 100644 --- a/apps/sim/lib/core/idempotency/service.ts +++ b/apps/sim/lib/core/idempotency/service.ts @@ -1,12 +1,12 @@ import { db } from '@sim/db' import { idempotencyKey } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' +import { generateId } from '@sim/utils/id' import { eq, lt } from 'drizzle-orm' import { getRedisClient } from '@/lib/core/config/redis' import { getMaxExecutionTimeout } from '@/lib/core/execution-limits' import { getStorageMethod, type StorageMethod } from '@/lib/core/storage' -import { sleep } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { extractProviderIdentifierFromBody } from '@/lib/webhooks/providers' const logger = createLogger('IdempotencyService') diff --git a/apps/sim/lib/core/outbox/service.test.ts b/apps/sim/lib/core/outbox/service.test.ts index 5b282e7d12d..338c645ac36 100644 --- a/apps/sim/lib/core/outbox/service.test.ts +++ b/apps/sim/lib/core/outbox/service.test.ts @@ -126,7 +126,7 @@ vi.mock('drizzle-orm', () => ({ lte: vi.fn((col, val) => ({ _op: 'lte', col, val })), })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'test-event-id'), })) diff --git a/apps/sim/lib/core/outbox/service.ts b/apps/sim/lib/core/outbox/service.ts index e8b29570a30..eb087d02c8e 100644 --- a/apps/sim/lib/core/outbox/service.ts +++ b/apps/sim/lib/core/outbox/service.ts @@ -1,8 +1,9 @@ import { db } from '@sim/db' import { outboxEvent } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, asc, eq, inArray, lte } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('OutboxService') @@ -250,7 +251,7 @@ async function runHandler( } catch (error) { const nextAttempts = event.attempts + 1 const isDead = nextAttempts >= event.maxAttempts - const errMsg = error instanceof Error ? error.message : String(error) + const errMsg = toError(error).message if (isDead) { const updated = await updateIfLeaseHeld(event, { diff --git a/apps/sim/lib/core/rate-limiter/hosted-key/hosted-key-rate-limiter.test.ts b/apps/sim/lib/core/rate-limiter/hosted-key/hosted-key-rate-limiter.test.ts index be199a24cfa..50cf346222d 100644 --- a/apps/sim/lib/core/rate-limiter/hosted-key/hosted-key-rate-limiter.test.ts +++ b/apps/sim/lib/core/rate-limiter/hosted-key/hosted-key-rate-limiter.test.ts @@ -1,4 +1,3 @@ -import { loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, type Mock, vi } from 'vitest' import type { ConsumeResult, @@ -8,8 +7,6 @@ import type { import { HostedKeyRateLimiter } from './hosted-key-rate-limiter' import type { CustomRateLimit, PerRequestRateLimit } from './types' -vi.mock('@sim/logger', () => loggerMock) - interface MockAdapter { consumeTokens: Mock getTokenStatus: Mock diff --git a/apps/sim/lib/core/rate-limiter/rate-limiter.test.ts b/apps/sim/lib/core/rate-limiter/rate-limiter.test.ts index 658febd7d6c..23f0f90b892 100644 --- a/apps/sim/lib/core/rate-limiter/rate-limiter.test.ts +++ b/apps/sim/lib/core/rate-limiter/rate-limiter.test.ts @@ -1,10 +1,8 @@ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' import { RateLimiter } from './rate-limiter' import type { ConsumeResult, RateLimitStorageAdapter, TokenStatus } from './storage' import { MANUAL_EXECUTION_LIMIT, RATE_LIMITS, RateLimitError } from './types' -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/core/config/feature-flags', () => ({ isBillingEnabled: true })) interface MockAdapter { diff --git a/apps/sim/lib/core/rate-limiter/rate-limiter.ts b/apps/sim/lib/core/rate-limiter/rate-limiter.ts index 85366e80400..da5ce07d74e 100644 --- a/apps/sim/lib/core/rate-limiter/rate-limiter.ts +++ b/apps/sim/lib/core/rate-limiter/rate-limiter.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { isOrgScopedSubscription } from '@/lib/billing/subscriptions/utils' -import { toError } from '@/lib/core/utils/helpers' import { createStorageAdapter, type RateLimitStorageAdapter } from './storage' import { getRateLimit, diff --git a/apps/sim/lib/core/rate-limiter/storage/factory.test.ts b/apps/sim/lib/core/rate-limiter/storage/factory.test.ts index 17fd5958b63..bd797d4beb2 100644 --- a/apps/sim/lib/core/rate-limiter/storage/factory.test.ts +++ b/apps/sim/lib/core/rate-limiter/storage/factory.test.ts @@ -1,25 +1,18 @@ -import { loggerMock } from '@sim/testing' +import { redisConfigMock, redisConfigMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetRedisClient, mockOnRedisReconnect, mockGetStorageMethod, reconnectCallbacks } = - vi.hoisted(() => { - const callbacks: Array<() => void> = [] - return { - mockGetRedisClient: vi.fn(() => null), - mockOnRedisReconnect: vi.fn((cb: () => void) => { - callbacks.push(cb) - }), - mockGetStorageMethod: vi.fn(() => 'db'), - reconnectCallbacks: callbacks, - } - }) +const { mockGetStorageMethod, reconnectCallbacks } = vi.hoisted(() => { + const callbacks: Array<() => void> = [] + return { + mockGetStorageMethod: vi.fn(() => 'db'), + reconnectCallbacks: callbacks, + } +}) -vi.mock('@sim/logger', () => loggerMock) +const mockGetRedisClient = redisConfigMockFns.mockGetRedisClient +const mockOnRedisReconnect = redisConfigMockFns.mockOnRedisReconnect -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: mockGetRedisClient, - onRedisReconnect: mockOnRedisReconnect, -})) +vi.mock('@/lib/core/config/redis', () => redisConfigMock) vi.mock('@/lib/core/storage', () => ({ getStorageMethod: mockGetStorageMethod, @@ -39,6 +32,9 @@ describe('rate limit storage factory', () => { beforeEach(() => { mockGetRedisClient.mockReset().mockReturnValue(null) mockGetStorageMethod.mockReset().mockReturnValue('db') + mockOnRedisReconnect.mockImplementation((cb: () => void) => { + reconnectCallbacks.push(cb) + }) resetStorageAdapter() }) diff --git a/apps/sim/lib/core/security/csp.test.ts b/apps/sim/lib/core/security/csp.test.ts index ad1b4a9ad8b..44f2dcf5fc1 100644 --- a/apps/sim/lib/core/security/csp.test.ts +++ b/apps/sim/lib/core/security/csp.test.ts @@ -1,4 +1,4 @@ -import { createEnvMock } from '@sim/testing' +import { createEnvMock, featureFlagsMock } from '@sim/testing' import { afterEach, describe, expect, it, vi } from 'vitest' vi.mock('@/lib/core/config/env', () => @@ -17,11 +17,7 @@ vi.mock('@/lib/core/config/env', () => }) ) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isDev: false, - isHosted: false, - isReactGrabEnabled: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) import { addCSPSource, diff --git a/apps/sim/lib/core/security/encryption.test.ts b/apps/sim/lib/core/security/encryption.test.ts index 43a0391684a..fef678cf98f 100644 --- a/apps/sim/lib/core/security/encryption.test.ts +++ b/apps/sim/lib/core/security/encryption.test.ts @@ -1,4 +1,4 @@ -import { createEnvMock, loggerMock } from '@sim/testing' +import { createEnvMock } from '@sim/testing' import { afterEach, describe, expect, it, vi } from 'vitest' vi.mock('@/lib/core/config/env', () => @@ -7,8 +7,6 @@ vi.mock('@/lib/core/config/env', () => }) ) -vi.mock('@sim/logger', () => loggerMock) - import { env } from '@/lib/core/config/env' import { decryptSecret, encryptSecret, generatePassword } from './encryption' diff --git a/apps/sim/lib/core/security/input-validation.server.ts b/apps/sim/lib/core/security/input-validation.server.ts index 7dcb89093c5..041d44c654d 100644 --- a/apps/sim/lib/core/security/input-validation.server.ts +++ b/apps/sim/lib/core/security/input-validation.server.ts @@ -3,10 +3,10 @@ import http from 'http' import https from 'https' import type { LookupFunction } from 'net' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import * as ipaddr from 'ipaddr.js' import { isHosted } from '@/lib/core/config/feature-flags' import { type ValidationResult, validateExternalUrl } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('InputValidation') diff --git a/apps/sim/lib/core/security/input-validation.test.ts b/apps/sim/lib/core/security/input-validation.test.ts index f08578494da..4086ee5341f 100644 --- a/apps/sim/lib/core/security/input-validation.test.ts +++ b/apps/sim/lib/core/security/input-validation.test.ts @@ -1,4 +1,4 @@ -import { loggerMock } from '@sim/testing' +import { featureFlagsMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' import { validateAirtableId, @@ -26,10 +26,7 @@ import { import { validateUrlWithDNS } from '@/lib/core/security/input-validation.server' import { sanitizeForLogging } from '@/lib/core/security/redaction' -vi.mock('@sim/logger', () => loggerMock) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isHosted: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) describe('validatePathSegment', () => { describe('valid inputs', () => { diff --git a/apps/sim/lib/core/telemetry.ts b/apps/sim/lib/core/telemetry.ts index e9508f0e247..5adb530e00d 100644 --- a/apps/sim/lib/core/telemetry.ts +++ b/apps/sim/lib/core/telemetry.ts @@ -18,7 +18,7 @@ import { context, type Span, SpanStatusCode, trace } from '@opentelemetry/api' import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { TraceSpan } from '@/lib/logs/types' /** diff --git a/apps/sim/lib/core/utils.test.ts b/apps/sim/lib/core/utils.test.ts index 6540b5960d9..5aa5a91804f 100644 --- a/apps/sim/lib/core/utils.test.ts +++ b/apps/sim/lib/core/utils.test.ts @@ -1,15 +1,15 @@ import { createEnvMock } from '@sim/testing' -import { afterEach, describe, expect, it, vi } from 'vitest' -import { getRotatingApiKey } from '@/lib/core/config/api-keys' -import { decryptSecret, encryptSecret } from '@/lib/core/security/encryption' -import { cn } from '@/lib/core/utils/cn' import { formatDate, formatDateTime, formatDuration, formatTime, getTimezoneAbbreviation, -} from '@/lib/core/utils/formatting' +} from '@sim/utils/formatting' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { getRotatingApiKey } from '@/lib/core/config/api-keys' +import { decryptSecret, encryptSecret } from '@/lib/core/security/encryption' +import { cn } from '@/lib/core/utils/cn' import { convertScheduleOptionsToCron } from '@/lib/core/utils/scheduling' import { getInvalidCharacters, isValidName, validateName } from '@/lib/core/utils/validation' diff --git a/apps/sim/lib/core/utils/helpers.ts b/apps/sim/lib/core/utils/helpers.ts deleted file mode 100644 index 0b952ae5180..00000000000 --- a/apps/sim/lib/core/utils/helpers.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Returns a promise that resolves after the specified duration. - * Replaces the common `new Promise(resolve => setTimeout(resolve, ms))` pattern. - */ -export function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -/** - * Normalizes an unknown caught value into an Error instance. - * Replaces the common `e instanceof Error ? e : new Error(String(e))` pattern in catch clauses. - */ -export function toError(value: unknown): Error { - if (value instanceof Error) return value - if (typeof value === 'string') return new Error(value) - return new Error(String(value)) -} diff --git a/apps/sim/lib/core/utils/pg-error.test.ts b/apps/sim/lib/core/utils/pg-error.test.ts deleted file mode 100644 index b671b68c062..00000000000 --- a/apps/sim/lib/core/utils/pg-error.test.ts +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @vitest-environment node - */ -import { describe, expect, it } from 'vitest' -import { getPostgresErrorCode } from '@/lib/core/utils/pg-error' - -describe('getPostgresErrorCode', () => { - it('reads code from Error.code', () => { - const err = new Error('fail') as Error & { code: string } - err.code = '23505' - expect(getPostgresErrorCode(err)).toBe('23505') - }) - - it('reads code from Error.cause', () => { - const err = new Error('fail', { cause: { code: '23505' } }) - expect(getPostgresErrorCode(err)).toBe('23505') - }) - - it('walks nested Error causes', () => { - const pgErr = new Error('unique_violation') as Error & { code: string } - pgErr.code = '23505' - const err = new Error('outer', { cause: new Error('inner', { cause: pgErr }) }) - expect(getPostgresErrorCode(err)).toBe('23505') - }) - - it('returns undefined for non-errors', () => { - expect(getPostgresErrorCode(undefined)).toBeUndefined() - expect(getPostgresErrorCode('23505')).toBeUndefined() - }) -}) diff --git a/apps/sim/lib/core/utils/request.ts b/apps/sim/lib/core/utils/request.ts index 9d60cf9c51b..ec9d300c080 100644 --- a/apps/sim/lib/core/utils/request.ts +++ b/apps/sim/lib/core/utils/request.ts @@ -1,4 +1,4 @@ -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' /** * Generate a short request ID for correlation */ diff --git a/apps/sim/lib/credentials/access.ts b/apps/sim/lib/credentials/access.ts index f1a7341b5ce..490fb35c2c4 100644 --- a/apps/sim/lib/credentials/access.ts +++ b/apps/sim/lib/credentials/access.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { credential, credentialMember, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, ne } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { checkWorkspaceAccess } from '@/lib/workspaces/permissions/utils' const logger = createLogger('CredentialAccess') diff --git a/apps/sim/lib/credentials/draft-hooks.ts b/apps/sim/lib/credentials/draft-hooks.ts index 6c1840c1030..cacff50418e 100644 --- a/apps/sim/lib/credentials/draft-hooks.ts +++ b/apps/sim/lib/credentials/draft-hooks.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import * as schema from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' const logger = createLogger('CredentialDraftHooks') diff --git a/apps/sim/lib/credentials/environment.ts b/apps/sim/lib/credentials/environment.ts index c41ae9488e5..ad4bed88876 100644 --- a/apps/sim/lib/credentials/environment.ts +++ b/apps/sim/lib/credentials/environment.ts @@ -1,7 +1,7 @@ import { db } from '@sim/db' import { credential, credentialMember, permissions, workspace } from '@sim/db/schema' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull, notInArray } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' interface AccessibleEnvCredential { type: 'env_workspace' | 'env_personal' diff --git a/apps/sim/lib/credentials/oauth.ts b/apps/sim/lib/credentials/oauth.ts index 840b99030b7..0e4b10a10e9 100644 --- a/apps/sim/lib/credentials/oauth.ts +++ b/apps/sim/lib/credentials/oauth.ts @@ -1,7 +1,7 @@ import { db } from '@sim/db' import { account, credential, credentialMember } from '@sim/db/schema' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, notInArray } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { getServiceConfigByProviderId } from '@/lib/oauth' /** Provider IDs that are not real OAuth integrations (login-only social providers and password) */ diff --git a/apps/sim/lib/environment/utils.ts b/apps/sim/lib/environment/utils.ts index 1ab6f5da100..226e2cb33b7 100644 --- a/apps/sim/lib/environment/utils.ts +++ b/apps/sim/lib/environment/utils.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { environment, workspaceEnvironment } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq, inArray } from 'drizzle-orm' import { decryptSecret, encryptSecret } from '@/lib/core/security/encryption' -import { generateId } from '@/lib/core/utils/uuid' import { getAccessibleEnvCredentials, syncPersonalEnvCredentialsForUser, diff --git a/apps/sim/lib/execution/buffered-stream.ts b/apps/sim/lib/execution/buffered-stream.ts index a811faf1d28..a61cc1e4dca 100644 --- a/apps/sim/lib/execution/buffered-stream.ts +++ b/apps/sim/lib/execution/buffered-stream.ts @@ -1,5 +1,6 @@ import { createLogger } from '@sim/logger' -import { sleep, toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { type ExecutionStreamStatus, getExecutionMeta, diff --git a/apps/sim/lib/execution/cancellation.test.ts b/apps/sim/lib/execution/cancellation.test.ts index d68fe46a2bf..0f587800f99 100644 --- a/apps/sim/lib/execution/cancellation.test.ts +++ b/apps/sim/lib/execution/cancellation.test.ts @@ -1,16 +1,13 @@ -import { loggerMock } from '@sim/testing' +import { redisConfigMock, redisConfigMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetRedisClient, mockRedisSet } = vi.hoisted(() => ({ - mockGetRedisClient: vi.fn(), +const { mockRedisSet } = vi.hoisted(() => ({ mockRedisSet: vi.fn(), })) -vi.mock('@sim/logger', () => loggerMock) +const mockGetRedisClient = redisConfigMockFns.mockGetRedisClient -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: mockGetRedisClient, -})) +vi.mock('@/lib/core/config/redis', () => redisConfigMock) import { markExecutionCancelled } from './cancellation' import { diff --git a/apps/sim/lib/execution/event-buffer.ts b/apps/sim/lib/execution/event-buffer.ts index ccf7bab9d2b..04009b4868a 100644 --- a/apps/sim/lib/execution/event-buffer.ts +++ b/apps/sim/lib/execution/event-buffer.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { getRedisClient } from '@/lib/core/config/redis' -import { toError } from '@/lib/core/utils/helpers' import type { ExecutionEvent } from '@/lib/workflows/executor/execution-events' const logger = createLogger('ExecutionEventBuffer') diff --git a/apps/sim/lib/execution/isolated-vm.test.ts b/apps/sim/lib/execution/isolated-vm.test.ts index 5b4edc86d45..d5b4e775865 100644 --- a/apps/sim/lib/execution/isolated-vm.test.ts +++ b/apps/sim/lib/execution/isolated-vm.test.ts @@ -2,7 +2,12 @@ * @vitest-environment node */ import { EventEmitter } from 'node:events' -import { loggerMock } from '@sim/testing' +import { + inputValidationMock, + inputValidationMockFns, + redisConfigMock, + redisConfigMockFns, +} from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' type MockProc = EventEmitter & { @@ -117,54 +122,41 @@ function createReadyFetchProxyProc(fetchMessage: { url: string; optionsJson?: st return proc } -const { mockSpawn, mockExecSync, mockSecureFetch, mockSanitizeUrl, mockGetRedisClient, mockEnv } = - vi.hoisted(() => ({ - mockSpawn: vi.fn(), - mockExecSync: vi.fn(() => Buffer.from('v23.11.0')), - mockSecureFetch: vi.fn(async () => ({ - ok: true, - status: 200, - statusText: 'OK', - headers: new Map(), - text: async () => '', - json: async () => ({}), - arrayBuffer: async () => new ArrayBuffer(0), - })), - mockSanitizeUrl: vi.fn((url: string) => url), - mockGetRedisClient: vi.fn(() => null), - mockEnv: { - IVM_POOL_SIZE: '1', - IVM_MAX_CONCURRENT: '100', - IVM_MAX_PER_WORKER: '100', - IVM_WORKER_IDLE_TIMEOUT_MS: '60000', - IVM_MAX_QUEUE_SIZE: '10', - IVM_MAX_ACTIVE_PER_OWNER: '100', - IVM_MAX_QUEUED_PER_OWNER: '10', - IVM_MAX_OWNER_WEIGHT: '5', - IVM_DISTRIBUTED_MAX_INFLIGHT_PER_OWNER: '100', - IVM_DISTRIBUTED_LEASE_MIN_TTL_MS: '1000', - IVM_QUEUE_TIMEOUT_MS: '1000', - IVM_MAX_FETCH_RESPONSE_BYTES: '', - IVM_MAX_FETCH_RESPONSE_CHARS: '', - IVM_MAX_FETCH_URL_LENGTH: '', - IVM_MAX_FETCH_OPTIONS_JSON_CHARS: '', - REDIS_URL: '', - } as Record, - })) - -vi.mock('@sim/logger', () => loggerMock) -vi.mock('@/lib/core/security/input-validation.server', () => ({ - secureFetchWithValidation: mockSecureFetch, +const { mockSpawn, mockExecSync, mockSanitizeUrl, mockEnv } = vi.hoisted(() => ({ + mockSpawn: vi.fn(), + mockExecSync: vi.fn(() => Buffer.from('v23.11.0')), + mockSanitizeUrl: vi.fn((url: string) => url), + mockEnv: { + IVM_POOL_SIZE: '1', + IVM_MAX_CONCURRENT: '100', + IVM_MAX_PER_WORKER: '100', + IVM_WORKER_IDLE_TIMEOUT_MS: '60000', + IVM_MAX_QUEUE_SIZE: '10', + IVM_MAX_ACTIVE_PER_OWNER: '100', + IVM_MAX_QUEUED_PER_OWNER: '10', + IVM_MAX_OWNER_WEIGHT: '5', + IVM_DISTRIBUTED_MAX_INFLIGHT_PER_OWNER: '100', + IVM_DISTRIBUTED_LEASE_MIN_TTL_MS: '1000', + IVM_QUEUE_TIMEOUT_MS: '1000', + IVM_MAX_FETCH_RESPONSE_BYTES: '', + IVM_MAX_FETCH_RESPONSE_CHARS: '', + IVM_MAX_FETCH_URL_LENGTH: '', + IVM_MAX_FETCH_OPTIONS_JSON_CHARS: '', + REDIS_URL: '', + } as Record, })) + +const mockSecureFetch = inputValidationMockFns.mockSecureFetchWithValidation +const mockGetRedisClient = redisConfigMockFns.mockGetRedisClient + +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) vi.mock('@/lib/core/utils/logging', () => ({ sanitizeUrlForLog: mockSanitizeUrl, })) vi.mock('@/lib/core/config/env', () => ({ env: mockEnv, })) -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: mockGetRedisClient, -})) +vi.mock('@/lib/core/config/redis', () => redisConfigMock) vi.mock('node:child_process', () => ({ execSync: mockExecSync, spawn: mockSpawn, diff --git a/apps/sim/lib/execution/isolated-vm.ts b/apps/sim/lib/execution/isolated-vm.ts index c19349d443b..62221a1ea97 100644 --- a/apps/sim/lib/execution/isolated-vm.ts +++ b/apps/sim/lib/execution/isolated-vm.ts @@ -3,13 +3,13 @@ import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { env } from '@/lib/core/config/env' import { getRedisClient } from '@/lib/core/config/redis' import { type SecureFetchOptions, secureFetchWithValidation, } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { sanitizeUrlForLog } from '@/lib/core/utils/logging' const logger = createLogger('IsolatedVMExecution') diff --git a/apps/sim/lib/execution/preprocessing.test.ts b/apps/sim/lib/execution/preprocessing.test.ts index 90262a7c8cb..e76891d1476 100644 --- a/apps/sim/lib/execution/preprocessing.test.ts +++ b/apps/sim/lib/execution/preprocessing.test.ts @@ -2,6 +2,7 @@ * @vitest-environment node */ +import { loggingSessionMock, schemaMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' const { mockGetWorkspaceBilledAccountUserId } = vi.hoisted(() => ({ @@ -9,15 +10,7 @@ const { mockGetWorkspaceBilledAccountUserId } = vi.hoisted(() => ({ })) vi.mock('@sim/db', () => ({ db: {} })) -vi.mock('@sim/db/schema', () => ({ workflow: {} })) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn() })) vi.mock('@/lib/billing/calculations/usage-monitor', () => ({ checkServerSideUsageLimits: vi.fn(), @@ -31,9 +24,7 @@ vi.mock('@/lib/core/execution-limits', () => ({ vi.mock('@/lib/core/rate-limiter/rate-limiter', () => ({ RateLimiter: vi.fn(), })) -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn(), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/lib/workspaces/utils', () => ({ getWorkspaceBilledAccountUserId: mockGetWorkspaceBilledAccountUserId, })) diff --git a/apps/sim/lib/execution/preprocessing.webhook-correlation.test.ts b/apps/sim/lib/execution/preprocessing.webhook-correlation.test.ts index 51a22501e89..4f9af7ef28b 100644 --- a/apps/sim/lib/execution/preprocessing.webhook-correlation.test.ts +++ b/apps/sim/lib/execution/preprocessing.webhook-correlation.test.ts @@ -2,6 +2,7 @@ * @vitest-environment node */ +import { loggingSessionMock, schemaMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' const { mockGetWorkspaceBilledAccountUserId } = vi.hoisted(() => ({ @@ -9,15 +10,7 @@ const { mockGetWorkspaceBilledAccountUserId } = vi.hoisted(() => ({ })) vi.mock('@sim/db', () => ({ db: {} })) -vi.mock('@sim/db/schema', () => ({ workflow: {} })) -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn() })) vi.mock('@/lib/billing/calculations/usage-monitor', () => ({ checkServerSideUsageLimits: vi.fn(), @@ -31,9 +24,7 @@ vi.mock('@/lib/core/execution-limits', () => ({ vi.mock('@/lib/core/rate-limiter/rate-limiter', () => ({ RateLimiter: vi.fn(), })) -vi.mock('@/lib/logs/execution/logging-session', () => ({ - LoggingSession: vi.fn(), -})) +vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) vi.mock('@/lib/workspaces/utils', () => ({ getWorkspaceBilledAccountUserId: mockGetWorkspaceBilledAccountUserId, })) diff --git a/apps/sim/lib/execution/sandbox/bundles/build.ts b/apps/sim/lib/execution/sandbox/bundles/build.ts index 995bf3ce552..5e6ab81645d 100644 --- a/apps/sim/lib/execution/sandbox/bundles/build.ts +++ b/apps/sim/lib/execution/sandbox/bundles/build.ts @@ -13,6 +13,9 @@ import { mkdirSync, rmSync, writeFileSync } from 'node:fs' import { dirname, join } from 'node:path' import { fileURLToPath } from 'node:url' +import { createLogger } from '@sim/logger' + +const logger = createLogger('SandboxBundleBuild') interface BunBuildResult { success: boolean @@ -107,7 +110,7 @@ async function main(): Promise { if (!result.success) { for (const log of result.logs) { - console.error(log) + logger.error(String(log)) } throw new Error(`Failed to build sandbox bundle: ${spec.name}`) } @@ -119,13 +122,13 @@ async function main(): Promise { const code = await result.outputs[0].text() const banner = `// sandbox bundle: ${spec.name}\n// generated by apps/sim/lib/execution/sandbox/bundles/build.ts\n// do not edit by hand. run \`bun run build:sandbox-bundles\` to regenerate.\n` writeFileSync(join(BUNDLES_DIR, spec.outFile), banner + code, 'utf-8') - console.log(`built ${spec.outFile} (${code.length.toLocaleString()} chars)`) + logger.info(`built ${spec.outFile} (${code.length.toLocaleString()} chars)`) } rmSync(ENTRIES_DIR, { recursive: true, force: true }) } main().catch((err) => { - console.error(err) + logger.error('sandbox bundle build failed', err) process.exit(1) }) diff --git a/apps/sim/lib/execution/sandbox/bundles/docx.cjs b/apps/sim/lib/execution/sandbox/bundles/docx.cjs index 84ffc65fa2e..f94ae48b832 100644 --- a/apps/sim/lib/execution/sandbox/bundles/docx.cjs +++ b/apps/sim/lib/execution/sandbox/bundles/docx.cjs @@ -1,27 +1,27 @@ // sandbox bundle: docx // generated by apps/sim/lib/execution/sandbox/bundles/build.ts // do not edit by hand. run `bun run build:sandbox-bundles` to regenerate. -(()=>{var F7=Object.create;var{getPrototypeOf:N7,defineProperty:F6,getOwnPropertyNames:R7}=Object;var D7=Object.prototype.hasOwnProperty;var A7=(U,$,Y)=>{Y=U!=null?F7(N7(U)):{};let Z=$||!U||!U.__esModule?F6(Y,"default",{value:U,enumerable:!0}):Y;for(let J of R7(U))if(!D7.call(Z,J))F6(Z,J,{get:()=>U[J],enumerable:!0});return Z};var P7=(U,$)=>()=>($||U(($={exports:{}}).exports,$),$.exports);var T7=(U,$)=>{for(var Y in $)F6(U,Y,{get:$[Y],enumerable:!0,configurable:!0,set:(Z)=>$[Y]=()=>Z})};var i$=P7((vX,p$)=>{var A0=p$.exports={},i0,r0;function S6(){throw new Error("setTimeout has not been defined")}function v6(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")i0=setTimeout;else i0=S6}catch(U){i0=S6}try{if(typeof clearTimeout==="function")r0=clearTimeout;else r0=v6}catch(U){r0=v6}})();function m$(U){if(i0===setTimeout)return setTimeout(U,0);if((i0===S6||!i0)&&setTimeout)return i0=setTimeout,setTimeout(U,0);try{return i0(U,0)}catch($){try{return i0.call(null,U,0)}catch(Y){return i0.call(this,U,0)}}}function Zw(U){if(r0===clearTimeout)return clearTimeout(U);if((r0===v6||!r0)&&clearTimeout)return r0=clearTimeout,clearTimeout(U);try{return r0(U)}catch($){try{return r0.call(null,U)}catch(Y){return r0.call(this,U)}}}var B1=[],g1=!1,T1,O2=-1;function Qw(){if(!g1||!T1)return;if(g1=!1,T1.length)B1=T1.concat(B1);else O2=-1;if(B1.length)l$()}function l$(){if(g1)return;var U=m$(Qw);g1=!0;var $=B1.length;while($){T1=B1,B1=[];while(++O2<$)if(T1)T1[O2].run();O2=-1,$=B1.length}T1=null,g1=!1,Zw(U)}A0.nextTick=function(U){var $=new Array(arguments.length-1);if(arguments.length>1)for(var Y=1;Y0)throw new Error("Invalid string. Length must be a multiple of 4");var Y=U.indexOf("=");if(Y===-1)Y=$;var Z=Y===$?0:4-Y%4;return[Y,Z]}function O7(U,$){return(U+$)*3/4-$}function E7(U){var $,Y=C7(U),Z=Y[0],J=Y[1],G=new Uint8Array(O7(Z,J)),w=0,Q=J>0?Z-4:Z,q;for(q=0;q>16&255,G[w++]=$>>8&255,G[w++]=$&255;if(J===2)$=u0[U.charCodeAt(q)]<<2|u0[U.charCodeAt(q+1)]>>4,G[w++]=$&255;if(J===1)$=u0[U.charCodeAt(q)]<<10|u0[U.charCodeAt(q+1)]<<4|u0[U.charCodeAt(q+2)]>>2,G[w++]=$>>8&255,G[w++]=$&255;return G}function k7(U){return a0[U>>18&63]+a0[U>>12&63]+a0[U>>6&63]+a0[U&63]}function S7(U,$,Y){var Z,J=[];for(var G=$;GQ?Q:w+G));if(Z===1)$=U[Y-1],J.push(a0[$>>2]+a0[$<<4&63]+"==");else if(Z===2)$=(U[Y-2]<<8)+U[Y-1],J.push(a0[$>>10]+a0[$>>4&63]+a0[$<<2&63]+"=");return J.join("")}function T2(U,$,Y,Z,J){var G,w,Q=J*8-Z-1,q=(1<>1,R=-7,W=Y?J-1:0,E=Y?-1:1,D=U[$+W];W+=E,G=D&(1<<-R)-1,D>>=-R,R+=Q;for(;R>0;G=G*256+U[$+W],W+=E,R-=8);w=G&(1<<-R)-1,G>>=-R,R+=Z;for(;R>0;w=w*256+U[$+W],W+=E,R-=8);if(G===0)G=1-z;else if(G===q)return w?NaN:(D?-1:1)*(1/0);else w=w+Math.pow(2,Z),G=G-z;return(D?-1:1)*w*Math.pow(2,G-Z)}function k$(U,$,Y,Z,J,G){var w,Q,q,z=G*8-J-1,R=(1<>1,E=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=Z?0:G-1,C=Z?1:-1,H=$<0||$===0&&1/$<0?1:0;if($=Math.abs($),isNaN($)||$===1/0)Q=isNaN($)?1:0,w=R;else{if(w=Math.floor(Math.log($)/Math.LN2),$*(q=Math.pow(2,-w))<1)w--,q*=2;if(w+W>=1)$+=E/q;else $+=E*Math.pow(2,1-W);if($*q>=2)w++,q/=2;if(w+W>=R)Q=0,w=R;else if(w+W>=1)Q=($*q-1)*Math.pow(2,J),w=w+W;else Q=$*Math.pow(2,W-1)*Math.pow(2,J),w=0}for(;J>=8;U[Y+D]=Q&255,D+=C,Q/=256,J-=8);w=w<0;U[Y+D]=w&255,D+=C,w/=256,z-=8);U[Y+D-C]|=H*128}var T$=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null;var R6=2147483647;var{btoa:AX,atob:PX,File:TX,Blob:CX}=globalThis;function w1(U){if(U>R6)throw new RangeError('The value "'+U+'" is invalid for option "size"');let $=new Uint8Array(U);return Object.setPrototypeOf($,G0.prototype),$}function C6(U,$,Y){return class Z extends Y{constructor(){super();Object.defineProperty(this,"message",{value:$.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${U}]`,this.stack,delete this.name}get code(){return U}set code(J){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:J,writable:!0})}toString(){return`${this.name} [${U}]: ${this.message}`}}}var v7=C6("ERR_BUFFER_OUT_OF_BOUNDS",function(U){if(U)return`${U} is outside of buffer bounds`;return"Attempt to access memory outside buffer bounds"},RangeError),_7=C6("ERR_INVALID_ARG_TYPE",function(U,$){return`The "${U}" argument must be of type number. Received type ${typeof $}`},TypeError),D6=C6("ERR_OUT_OF_RANGE",function(U,$,Y){let Z=`The value of "${U}" is out of range.`,J=Y;if(Number.isInteger(Y)&&Math.abs(Y)>4294967296)J=E$(String(Y));else if(typeof Y==="bigint"){if(J=String(Y),Y>BigInt(2)**BigInt(32)||Y<-(BigInt(2)**BigInt(32)))J=E$(J);J+="n"}return Z+=` It must be ${$}. Received ${J}`,Z},RangeError);function G0(U,$,Y){if(typeof U==="number"){if(typeof $==="string")throw new TypeError('The "string" argument must be of type string. Received type number');return O6(U)}return S$(U,$,Y)}Object.defineProperty(G0.prototype,"parent",{enumerable:!0,get:function(){if(!G0.isBuffer(this))return;return this.buffer}});Object.defineProperty(G0.prototype,"offset",{enumerable:!0,get:function(){if(!G0.isBuffer(this))return;return this.byteOffset}});G0.poolSize=8192;function S$(U,$,Y){if(typeof U==="string")return b7(U,$);if(ArrayBuffer.isView(U))return g7(U);if(U==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof U);if(p0(U,ArrayBuffer)||U&&p0(U.buffer,ArrayBuffer))return P6(U,$,Y);if(typeof SharedArrayBuffer!=="undefined"&&(p0(U,SharedArrayBuffer)||U&&p0(U.buffer,SharedArrayBuffer)))return P6(U,$,Y);if(typeof U==="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let Z=U.valueOf&&U.valueOf();if(Z!=null&&Z!==U)return G0.from(Z,$,Y);let J=x7(U);if(J)return J;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof U[Symbol.toPrimitive]==="function")return G0.from(U[Symbol.toPrimitive]("string"),$,Y);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof U)}G0.from=function(U,$,Y){return S$(U,$,Y)};Object.setPrototypeOf(G0.prototype,Uint8Array.prototype);Object.setPrototypeOf(G0,Uint8Array);function v$(U){if(typeof U!=="number")throw new TypeError('"size" argument must be of type number');else if(U<0)throw new RangeError('The value "'+U+'" is invalid for option "size"')}function y7(U,$,Y){if(v$(U),U<=0)return w1(U);if($!==void 0)return typeof Y==="string"?w1(U).fill($,Y):w1(U).fill($);return w1(U)}G0.alloc=function(U,$,Y){return y7(U,$,Y)};function O6(U){return v$(U),w1(U<0?0:E6(U)|0)}G0.allocUnsafe=function(U){return O6(U)};G0.allocUnsafeSlow=function(U){return O6(U)};function b7(U,$){if(typeof $!=="string"||$==="")$="utf8";if(!G0.isEncoding($))throw new TypeError("Unknown encoding: "+$);let Y=_$(U,$)|0,Z=w1(Y),J=Z.write(U,$);if(J!==Y)Z=Z.slice(0,J);return Z}function A6(U){let $=U.length<0?0:E6(U.length)|0,Y=w1($);for(let Z=0;Z<$;Z+=1)Y[Z]=U[Z]&255;return Y}function g7(U){if(p0(U,Uint8Array)){let $=new Uint8Array(U);return P6($.buffer,$.byteOffset,$.byteLength)}return A6(U)}function P6(U,$,Y){if($<0||U.byteLength<$)throw new RangeError('"offset" is outside of buffer bounds');if(U.byteLength<$+(Y||0))throw new RangeError('"length" is outside of buffer bounds');let Z;if($===void 0&&Y===void 0)Z=new Uint8Array(U);else if(Y===void 0)Z=new Uint8Array(U,$);else Z=new Uint8Array(U,$,Y);return Object.setPrototypeOf(Z,G0.prototype),Z}function x7(U){if(G0.isBuffer(U)){let $=E6(U.length)|0,Y=w1($);if(Y.length===0)return Y;return U.copy(Y,0,0,$),Y}if(U.length!==void 0){if(typeof U.length!=="number"||numberIsNaN(U.length))return w1(0);return A6(U)}if(U.type==="Buffer"&&Array.isArray(U.data))return A6(U.data)}function E6(U){if(U>=R6)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+R6.toString(16)+" bytes");return U|0}G0.isBuffer=function U($){return $!=null&&$._isBuffer===!0&&$!==G0.prototype};G0.compare=function U($,Y){if(p0($,Uint8Array))$=G0.from($,$.offset,$.byteLength);if(p0(Y,Uint8Array))Y=G0.from(Y,Y.offset,Y.byteLength);if(!G0.isBuffer($)||!G0.isBuffer(Y))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if($===Y)return 0;let Z=$.length,J=Y.length;for(let G=0,w=Math.min(Z,J);GJ.length){if(!G0.isBuffer(w))w=G0.from(w);w.copy(J,G)}else Uint8Array.prototype.set.call(J,w,G);else if(!G0.isBuffer(w))throw new TypeError('"list" argument must be an Array of Buffers');else w.copy(J,G);G+=w.length}return J};function _$(U,$){if(G0.isBuffer(U))return U.length;if(ArrayBuffer.isView(U)||p0(U,ArrayBuffer))return U.byteLength;if(typeof U!=="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof U);let Y=U.length,Z=arguments.length>2&&arguments[2]===!0;if(!Z&&Y===0)return 0;let J=!1;for(;;)switch($){case"ascii":case"latin1":case"binary":return Y;case"utf8":case"utf-8":return T6(U).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Y*2;case"hex":return Y>>>1;case"base64":return c$(U).length;default:if(J)return Z?-1:T6(U).length;$=(""+$).toLowerCase(),J=!0}}G0.byteLength=_$;function f7(U,$,Y){let Z=!1;if($===void 0||$<0)$=0;if($>this.length)return"";if(Y===void 0||Y>this.length)Y=this.length;if(Y<=0)return"";if(Y>>>=0,$>>>=0,Y<=$)return"";if(!U)U="utf8";while(!0)switch(U){case"hex":return r7(this,$,Y);case"utf8":case"utf-8":return b$(this,$,Y);case"ascii":return p7(this,$,Y);case"latin1":case"binary":return i7(this,$,Y);case"base64":return l7(this,$,Y);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s7(this,$,Y);default:if(Z)throw new TypeError("Unknown encoding: "+U);U=(U+"").toLowerCase(),Z=!0}}G0.prototype._isBuffer=!0;function P1(U,$,Y){let Z=U[$];U[$]=U[Y],U[Y]=Z}G0.prototype.swap16=function U(){let $=this.length;if($%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let Y=0;Y<$;Y+=2)P1(this,Y,Y+1);return this};G0.prototype.swap32=function U(){let $=this.length;if($%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let Y=0;Y<$;Y+=4)P1(this,Y,Y+3),P1(this,Y+1,Y+2);return this};G0.prototype.swap64=function U(){let $=this.length;if($%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let Y=0;Y<$;Y+=8)P1(this,Y,Y+7),P1(this,Y+1,Y+6),P1(this,Y+2,Y+5),P1(this,Y+3,Y+4);return this};G0.prototype.toString=function U(){let $=this.length;if($===0)return"";if(arguments.length===0)return b$(this,0,$);return f7.apply(this,arguments)};G0.prototype.toLocaleString=G0.prototype.toString;G0.prototype.equals=function U($){if(!G0.isBuffer($))throw new TypeError("Argument must be a Buffer");if(this===$)return!0;return G0.compare(this,$)===0};G0.prototype.inspect=function U(){let $="",Y=exports_buffer.INSPECT_MAX_BYTES;if($=this.toString("hex",0,Y).replace(/(.{2})/g,"$1 ").trim(),this.length>Y)$+=" ... ";return""};if(T$)G0.prototype[T$]=G0.prototype.inspect;G0.prototype.compare=function U($,Y,Z,J,G){if(p0($,Uint8Array))$=G0.from($,$.offset,$.byteLength);if(!G0.isBuffer($))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof $);if(Y===void 0)Y=0;if(Z===void 0)Z=$?$.length:0;if(J===void 0)J=0;if(G===void 0)G=this.length;if(Y<0||Z>$.length||J<0||G>this.length)throw new RangeError("out of range index");if(J>=G&&Y>=Z)return 0;if(J>=G)return-1;if(Y>=Z)return 1;if(Y>>>=0,Z>>>=0,J>>>=0,G>>>=0,this===$)return 0;let w=G-J,Q=Z-Y,q=Math.min(w,Q),z=this.slice(J,G),R=$.slice(Y,Z);for(let W=0;W2147483647)Y=2147483647;else if(Y<-2147483648)Y=-2147483648;if(Y=+Y,Number.isNaN(Y))Y=J?0:U.length-1;if(Y<0)Y=U.length+Y;if(Y>=U.length)if(J)return-1;else Y=U.length-1;else if(Y<0)if(J)Y=0;else return-1;if(typeof $==="string")$=G0.from($,Z);if(G0.isBuffer($)){if($.length===0)return-1;return C$(U,$,Y,Z,J)}else if(typeof $==="number"){if($=$&255,typeof Uint8Array.prototype.indexOf==="function")if(J)return Uint8Array.prototype.indexOf.call(U,$,Y);else return Uint8Array.prototype.lastIndexOf.call(U,$,Y);return C$(U,[$],Y,Z,J)}throw new TypeError("val must be string, number or Buffer")}function C$(U,$,Y,Z,J){let G=1,w=U.length,Q=$.length;if(Z!==void 0){if(Z=String(Z).toLowerCase(),Z==="ucs2"||Z==="ucs-2"||Z==="utf16le"||Z==="utf-16le"){if(U.length<2||$.length<2)return-1;G=2,w/=2,Q/=2,Y/=2}}function q(R,W){if(G===1)return R[W];else return R.readUInt16BE(W*G)}let z;if(J){let R=-1;for(z=Y;zw)Y=w-Q;for(z=Y;z>=0;z--){let R=!0;for(let W=0;WJ)Z=J;let G=$.length;if(Z>G/2)Z=G/2;let w;for(w=0;w>>0,isFinite(Z)){if(Z=Z>>>0,J===void 0)J="utf8"}else J=Z,Z=void 0;else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let G=this.length-Y;if(Z===void 0||Z>G)Z=G;if($.length>0&&(Z<0||Y<0)||Y>this.length)throw new RangeError("Attempt to write outside buffer bounds");if(!J)J="utf8";let w=!1;for(;;)switch(J){case"hex":return h7(this,$,Y,Z);case"utf8":case"utf-8":return u7(this,$,Y,Z);case"ascii":case"latin1":case"binary":return d7(this,$,Y,Z);case"base64":return c7(this,$,Y,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return m7(this,$,Y,Z);default:if(w)throw new TypeError("Unknown encoding: "+J);J=(""+J).toLowerCase(),w=!0}};G0.prototype.toJSON=function U(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function l7(U,$,Y){if($===0&&Y===U.length)return P$(U);else return P$(U.slice($,Y))}function b$(U,$,Y){Y=Math.min(U.length,Y);let Z=[],J=$;while(J239?4:G>223?3:G>191?2:1;if(J+Q<=Y){let q,z,R,W;switch(Q){case 1:if(G<128)w=G;break;case 2:if(q=U[J+1],(q&192)===128){if(W=(G&31)<<6|q&63,W>127)w=W}break;case 3:if(q=U[J+1],z=U[J+2],(q&192)===128&&(z&192)===128){if(W=(G&15)<<12|(q&63)<<6|z&63,W>2047&&(W<55296||W>57343))w=W}break;case 4:if(q=U[J+1],z=U[J+2],R=U[J+3],(q&192)===128&&(z&192)===128&&(R&192)===128){if(W=(G&15)<<18|(q&63)<<12|(z&63)<<6|R&63,W>65535&&W<1114112)w=W}}}if(w===null)w=65533,Q=1;else if(w>65535)w-=65536,Z.push(w>>>10&1023|55296),w=56320|w&1023;Z.push(w),J+=Q}return a7(Z)}var O$=4096;function a7(U){let $=U.length;if($<=O$)return String.fromCharCode.apply(String,U);let Y="",Z=0;while(Z<$)Y+=String.fromCharCode.apply(String,U.slice(Z,Z+=O$));return Y}function p7(U,$,Y){let Z="";Y=Math.min(U.length,Y);for(let J=$;JZ)Y=Z;let J="";for(let G=$;GZ)$=Z;if(Y<0){if(Y+=Z,Y<0)Y=0}else if(Y>Z)Y=Z;if(Y<$)Y=$;let J=this.subarray($,Y);return Object.setPrototypeOf(J,G0.prototype),J};function k0(U,$,Y){if(U%1!==0||U<0)throw new RangeError("offset is not uint");if(U+$>Y)throw new RangeError("Trying to access beyond buffer length")}G0.prototype.readUintLE=G0.prototype.readUIntLE=function U($,Y,Z){if($=$>>>0,Y=Y>>>0,!Z)k0($,Y,this.length);let J=this[$],G=1,w=0;while(++w>>0,Y=Y>>>0,!Z)k0($,Y,this.length);let J=this[$+--Y],G=1;while(Y>0&&(G*=256))J+=this[$+--Y]*G;return J};G0.prototype.readUint8=G0.prototype.readUInt8=function U($,Y){if($=$>>>0,!Y)k0($,1,this.length);return this[$]};G0.prototype.readUint16LE=G0.prototype.readUInt16LE=function U($,Y){if($=$>>>0,!Y)k0($,2,this.length);return this[$]|this[$+1]<<8};G0.prototype.readUint16BE=G0.prototype.readUInt16BE=function U($,Y){if($=$>>>0,!Y)k0($,2,this.length);return this[$]<<8|this[$+1]};G0.prototype.readUint32LE=G0.prototype.readUInt32LE=function U($,Y){if($=$>>>0,!Y)k0($,4,this.length);return(this[$]|this[$+1]<<8|this[$+2]<<16)+this[$+3]*16777216};G0.prototype.readUint32BE=G0.prototype.readUInt32BE=function U($,Y){if($=$>>>0,!Y)k0($,4,this.length);return this[$]*16777216+(this[$+1]<<16|this[$+2]<<8|this[$+3])};G0.prototype.readBigUInt64LE=z1(function U($){$=$>>>0,b1($,"offset");let Y=this[$],Z=this[$+7];if(Y===void 0||Z===void 0)U2($,this.length-8);let J=Y+this[++$]*256+this[++$]*65536+this[++$]*16777216,G=this[++$]+this[++$]*256+this[++$]*65536+Z*16777216;return BigInt(J)+(BigInt(G)<>>0,b1($,"offset");let Y=this[$],Z=this[$+7];if(Y===void 0||Z===void 0)U2($,this.length-8);let J=Y*16777216+this[++$]*65536+this[++$]*256+this[++$],G=this[++$]*16777216+this[++$]*65536+this[++$]*256+Z;return(BigInt(J)<>>0,Y=Y>>>0,!Z)k0($,Y,this.length);let J=this[$],G=1,w=0;while(++w=G)J-=Math.pow(2,8*Y);return J};G0.prototype.readIntBE=function U($,Y,Z){if($=$>>>0,Y=Y>>>0,!Z)k0($,Y,this.length);let J=Y,G=1,w=this[$+--J];while(J>0&&(G*=256))w+=this[$+--J]*G;if(G*=128,w>=G)w-=Math.pow(2,8*Y);return w};G0.prototype.readInt8=function U($,Y){if($=$>>>0,!Y)k0($,1,this.length);if(!(this[$]&128))return this[$];return(255-this[$]+1)*-1};G0.prototype.readInt16LE=function U($,Y){if($=$>>>0,!Y)k0($,2,this.length);let Z=this[$]|this[$+1]<<8;return Z&32768?Z|4294901760:Z};G0.prototype.readInt16BE=function U($,Y){if($=$>>>0,!Y)k0($,2,this.length);let Z=this[$+1]|this[$]<<8;return Z&32768?Z|4294901760:Z};G0.prototype.readInt32LE=function U($,Y){if($=$>>>0,!Y)k0($,4,this.length);return this[$]|this[$+1]<<8|this[$+2]<<16|this[$+3]<<24};G0.prototype.readInt32BE=function U($,Y){if($=$>>>0,!Y)k0($,4,this.length);return this[$]<<24|this[$+1]<<16|this[$+2]<<8|this[$+3]};G0.prototype.readBigInt64LE=z1(function U($){$=$>>>0,b1($,"offset");let Y=this[$],Z=this[$+7];if(Y===void 0||Z===void 0)U2($,this.length-8);let J=this[$+4]+this[$+5]*256+this[$+6]*65536+(Z<<24);return(BigInt(J)<>>0,b1($,"offset");let Y=this[$],Z=this[$+7];if(Y===void 0||Z===void 0)U2($,this.length-8);let J=(Y<<24)+this[++$]*65536+this[++$]*256+this[++$];return(BigInt(J)<>>0,!Y)k0($,4,this.length);return T2(this,$,!0,23,4)};G0.prototype.readFloatBE=function U($,Y){if($=$>>>0,!Y)k0($,4,this.length);return T2(this,$,!1,23,4)};G0.prototype.readDoubleLE=function U($,Y){if($=$>>>0,!Y)k0($,8,this.length);return T2(this,$,!0,52,8)};G0.prototype.readDoubleBE=function U($,Y){if($=$>>>0,!Y)k0($,8,this.length);return T2(this,$,!1,52,8)};function b0(U,$,Y,Z,J,G){if(!G0.isBuffer(U))throw new TypeError('"buffer" argument must be a Buffer instance');if($>J||$U.length)throw new RangeError("Index out of range")}G0.prototype.writeUintLE=G0.prototype.writeUIntLE=function U($,Y,Z,J){if($=+$,Y=Y>>>0,Z=Z>>>0,!J){let Q=Math.pow(2,8*Z)-1;b0(this,$,Y,Z,Q,0)}let G=1,w=0;this[Y]=$&255;while(++w>>0,Z=Z>>>0,!J){let Q=Math.pow(2,8*Z)-1;b0(this,$,Y,Z,Q,0)}let G=Z-1,w=1;this[Y+G]=$&255;while(--G>=0&&(w*=256))this[Y+G]=$/w&255;return Y+Z};G0.prototype.writeUint8=G0.prototype.writeUInt8=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,1,255,0);return this[Y]=$&255,Y+1};G0.prototype.writeUint16LE=G0.prototype.writeUInt16LE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,2,65535,0);return this[Y]=$&255,this[Y+1]=$>>>8,Y+2};G0.prototype.writeUint16BE=G0.prototype.writeUInt16BE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,2,65535,0);return this[Y]=$>>>8,this[Y+1]=$&255,Y+2};G0.prototype.writeUint32LE=G0.prototype.writeUInt32LE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,4,4294967295,0);return this[Y+3]=$>>>24,this[Y+2]=$>>>16,this[Y+1]=$>>>8,this[Y]=$&255,Y+4};G0.prototype.writeUint32BE=G0.prototype.writeUInt32BE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,4,4294967295,0);return this[Y]=$>>>24,this[Y+1]=$>>>16,this[Y+2]=$>>>8,this[Y+3]=$&255,Y+4};function g$(U,$,Y,Z,J){d$($,Z,J,U,Y,7);let G=Number($&BigInt(4294967295));U[Y++]=G,G=G>>8,U[Y++]=G,G=G>>8,U[Y++]=G,G=G>>8,U[Y++]=G;let w=Number($>>BigInt(32)&BigInt(4294967295));return U[Y++]=w,w=w>>8,U[Y++]=w,w=w>>8,U[Y++]=w,w=w>>8,U[Y++]=w,Y}function x$(U,$,Y,Z,J){d$($,Z,J,U,Y,7);let G=Number($&BigInt(4294967295));U[Y+7]=G,G=G>>8,U[Y+6]=G,G=G>>8,U[Y+5]=G,G=G>>8,U[Y+4]=G;let w=Number($>>BigInt(32)&BigInt(4294967295));return U[Y+3]=w,w=w>>8,U[Y+2]=w,w=w>>8,U[Y+1]=w,w=w>>8,U[Y]=w,Y+8}G0.prototype.writeBigUInt64LE=z1(function U($,Y=0){return g$(this,$,Y,BigInt(0),BigInt("0xffffffffffffffff"))});G0.prototype.writeBigUInt64BE=z1(function U($,Y=0){return x$(this,$,Y,BigInt(0),BigInt("0xffffffffffffffff"))});G0.prototype.writeIntLE=function U($,Y,Z,J){if($=+$,Y=Y>>>0,!J){let q=Math.pow(2,8*Z-1);b0(this,$,Y,Z,q-1,-q)}let G=0,w=1,Q=0;this[Y]=$&255;while(++G>0)-Q&255}return Y+Z};G0.prototype.writeIntBE=function U($,Y,Z,J){if($=+$,Y=Y>>>0,!J){let q=Math.pow(2,8*Z-1);b0(this,$,Y,Z,q-1,-q)}let G=Z-1,w=1,Q=0;this[Y+G]=$&255;while(--G>=0&&(w*=256)){if($<0&&Q===0&&this[Y+G+1]!==0)Q=1;this[Y+G]=($/w>>0)-Q&255}return Y+Z};G0.prototype.writeInt8=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,1,127,-128);if($<0)$=255+$+1;return this[Y]=$&255,Y+1};G0.prototype.writeInt16LE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,2,32767,-32768);return this[Y]=$&255,this[Y+1]=$>>>8,Y+2};G0.prototype.writeInt16BE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,2,32767,-32768);return this[Y]=$>>>8,this[Y+1]=$&255,Y+2};G0.prototype.writeInt32LE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,4,2147483647,-2147483648);return this[Y]=$&255,this[Y+1]=$>>>8,this[Y+2]=$>>>16,this[Y+3]=$>>>24,Y+4};G0.prototype.writeInt32BE=function U($,Y,Z){if($=+$,Y=Y>>>0,!Z)b0(this,$,Y,4,2147483647,-2147483648);if($<0)$=4294967295+$+1;return this[Y]=$>>>24,this[Y+1]=$>>>16,this[Y+2]=$>>>8,this[Y+3]=$&255,Y+4};G0.prototype.writeBigInt64LE=z1(function U($,Y=0){return g$(this,$,Y,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});G0.prototype.writeBigInt64BE=z1(function U($,Y=0){return x$(this,$,Y,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function f$(U,$,Y,Z,J,G){if(Y+Z>U.length)throw new RangeError("Index out of range");if(Y<0)throw new RangeError("Index out of range")}function h$(U,$,Y,Z,J){if($=+$,Y=Y>>>0,!J)f$(U,$,Y,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return k$(U,$,Y,Z,23,4),Y+4}G0.prototype.writeFloatLE=function U($,Y,Z){return h$(this,$,Y,!0,Z)};G0.prototype.writeFloatBE=function U($,Y,Z){return h$(this,$,Y,!1,Z)};function u$(U,$,Y,Z,J){if($=+$,Y=Y>>>0,!J)f$(U,$,Y,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return k$(U,$,Y,Z,52,8),Y+8}G0.prototype.writeDoubleLE=function U($,Y,Z){return u$(this,$,Y,!0,Z)};G0.prototype.writeDoubleBE=function U($,Y,Z){return u$(this,$,Y,!1,Z)};G0.prototype.copy=function U($,Y,Z,J){if(!G0.isBuffer($))throw new TypeError("argument should be a Buffer");if(!Z)Z=0;if(!J&&J!==0)J=this.length;if(Y>=$.length)Y=$.length;if(!Y)Y=0;if(J>0&&J=this.length)throw new RangeError("Index out of range");if(J<0)throw new RangeError("sourceEnd out of bounds");if(J>this.length)J=this.length;if($.length-Y>>0,Z=Z===void 0?this.length:Z>>>0,!$)$=0;let G;if(typeof $==="number")for(G=Y;G=Z+4;Y-=3)$=`_${U.slice(Y-3,Y)}${$}`;return`${U.slice(0,Y)}${$}`}function n7(U,$,Y){if(b1($,"offset"),U[$]===void 0||U[$+Y]===void 0)U2($,U.length-(Y+1))}function d$(U,$,Y,Z,J,G){if(U>Y||U<$){let w=typeof $==="bigint"?"n":"",Q;if(G>3)if($===0||$===BigInt(0))Q=`>= 0${w} and < 2${w} ** ${(G+1)*8}${w}`;else Q=`>= -(2${w} ** ${(G+1)*8-1}${w}) and < 2 ** ${(G+1)*8-1}${w}`;else Q=`>= ${$}${w} and <= ${Y}${w}`;throw new D6("value",Q,U)}n7(Z,J,G)}function b1(U,$){if(typeof U!=="number")throw new _7($,"number",U)}function U2(U,$,Y){if(Math.floor(U)!==U)throw b1(U,Y),new D6(Y||"offset","an integer",U);if($<0)throw new v7;throw new D6(Y||"offset",`>= ${Y?1:0} and <= ${$}`,U)}var o7=/[^+/0-9A-Za-z-_]/g;function t7(U){if(U=U.split("=")[0],U=U.trim().replace(o7,""),U.length<2)return"";while(U.length%4!==0)U=U+"=";return U}function T6(U,$){$=$||1/0;let Y,Z=U.length,J=null,G=[];for(let w=0;w55295&&Y<57344){if(!J){if(Y>56319){if(($-=3)>-1)G.push(239,191,189);continue}else if(w+1===Z){if(($-=3)>-1)G.push(239,191,189);continue}J=Y;continue}if(Y<56320){if(($-=3)>-1)G.push(239,191,189);J=Y;continue}Y=(J-55296<<10|Y-56320)+65536}else if(J){if(($-=3)>-1)G.push(239,191,189)}if(J=null,Y<128){if(($-=1)<0)break;G.push(Y)}else if(Y<2048){if(($-=2)<0)break;G.push(Y>>6|192,Y&63|128)}else if(Y<65536){if(($-=3)<0)break;G.push(Y>>12|224,Y>>6&63|128,Y&63|128)}else if(Y<1114112){if(($-=4)<0)break;G.push(Y>>18|240,Y>>12&63|128,Y>>6&63|128,Y&63|128)}else throw new Error("Invalid code point")}return G}function e7(U){let $=[];for(let Y=0;Y>8,J=Y%256,G.push(J),G.push(Z)}return G}function c$(U){return E7(t7(U))}function C2(U,$,Y,Z){let J;for(J=0;J=$.length||J>=U.length)break;$[J+Y]=U[J]}return J}function p0(U,$){return U instanceof $||U!=null&&U.constructor!=null&&U.constructor.name!=null&&U.constructor.name===$.name}var $w=function(){let U=new Array(256);for(let $=0;$<16;++$){let Y=$*16;for(let Z=0;Z<16;++Z)U[Y+Z]="0123456789abcdef"[$]+"0123456789abcdef"[Z]}return U}();function z1(U){return typeof BigInt==="undefined"?Yw:U}function Yw(){throw new Error("BigInt not supported")}function k6(U){return()=>{throw new Error(U+" is not implemented for node:buffer browser polyfill")}}var OX=k6("resolveObjectURL"),EX=k6("isUtf8");var kX=k6("transcode");var RX=A7(i$());var F$={};T7(F$,{unsignedDecimalNumber:()=>W2,universalMeasureValue:()=>H2,uniqueUuid:()=>tQ,uniqueNumericIdCreator:()=>N2,uniqueId:()=>R2,uCharHexNumber:()=>D9,twipsMeasureValue:()=>T0,standardizeData:()=>mJ,signedTwipsMeasureValue:()=>e0,signedHpsMeasureValue:()=>GB,shortHexNumber:()=>DQ,sectionPageSizeDefaults:()=>h2,sectionMarginDefaults:()=>F1,positiveUniversalMeasureValue:()=>r9,pointMeasureValue:()=>CQ,percentageValue:()=>PQ,patchDocument:()=>jX,patchDetector:()=>FX,measurementOrPercentValue:()=>s9,longHexNumber:()=>JB,hpsMeasureValue:()=>AQ,hexColorValue:()=>S1,hashedId:()=>A9,encodeUtf8:()=>B2,eighthPointMeasureValue:()=>TQ,docPropertiesUniqueNumericIdGen:()=>nQ,decimalNumber:()=>S0,dateTimeValue:()=>OQ,createWrapTopAndBottom:()=>bJ,createWrapTight:()=>yJ,createWrapSquare:()=>_J,createWrapNone:()=>C9,createVerticalPosition:()=>JJ,createVerticalAlign:()=>fU,createUnderline:()=>mQ,createTransformation:()=>XU,createTableWidthElement:()=>L2,createTableRowHeight:()=>kK,createTableLook:()=>CK,createTableLayout:()=>PK,createTableFloatProperties:()=>AK,createTabStopItem:()=>PG,createTabStop:()=>TG,createStringElement:()=>u1,createSpacing:()=>AG,createSimplePos:()=>$J,createShading:()=>j2,createSectionType:()=>nK,createRunFonts:()=>g2,createParagraphStyle:()=>K2,createPageSize:()=>rK,createPageNumberType:()=>iK,createPageMargin:()=>pK,createOutlineLevel:()=>yG,createMathSuperScriptProperties:()=>iG,createMathSuperScriptElement:()=>n1,createMathSubSuperScriptProperties:()=>oG,createMathSubScriptProperties:()=>sG,createMathSubScriptElement:()=>s1,createMathPreSubSuperScriptProperties:()=>eG,createMathNAryProperties:()=>TU,createMathLimitLocation:()=>cG,createMathBase:()=>y0,createMathAccentCharacter:()=>dG,createLineNumberType:()=>aK,createIndent:()=>kQ,createHorizontalPosition:()=>QJ,createHeaderFooterReference:()=>f2,createFrameProperties:()=>xG,createEmphasisMark:()=>YU,createDotEmphasisMark:()=>XB,createDocumentGrid:()=>lK,createColumns:()=>mK,createBorderElement:()=>N0,createBodyProperties:()=>KJ,createAlignment:()=>n9,convertToXmlComponent:()=>$6,convertMillimetersToTwip:()=>EB,convertInchesToTwip:()=>d0,concreteNumUniqueNumericIdGen:()=>sQ,bookmarkUniqueNumericIdGen:()=>oQ,abstractNumUniqueNumericIdGen:()=>rQ,YearShort:()=>wG,YearLong:()=>XG,XmlComponent:()=>o,XmlAttributeComponent:()=>V0,WpsShapeRun:()=>aJ,WpgGroupRun:()=>pJ,WidthType:()=>l2,WORKAROUND4:()=>Xq,WORKAROUND3:()=>QB,WORKAROUND2:()=>fq,VerticalPositionRelativeFrom:()=>UJ,VerticalPositionAlign:()=>wB,VerticalMergeType:()=>dU,VerticalMergeRevisionType:()=>Mq,VerticalMerge:()=>a2,VerticalAnchor:()=>GJ,VerticalAlignTable:()=>HK,VerticalAlignSection:()=>jK,VerticalAlign:()=>Wq,UnderlineType:()=>ZU,ThematicBreak:()=>t9,Textbox:()=>G7,TextWrappingType:()=>G2,TextWrappingSide:()=>vJ,TextRun:()=>p1,TextEffect:()=>MB,TextDirection:()=>zq,TableRowPropertiesChange:()=>lU,TableRowProperties:()=>L6,TableRow:()=>SK,TableProperties:()=>I6,TableOfContents:()=>e5,TableLayoutType:()=>Pq,TableCellBorders:()=>hU,TableCell:()=>q6,TableBorders:()=>X6,TableAnchorType:()=>Fq,Table:()=>EK,TabStopType:()=>O9,TabStopPosition:()=>oB,Tab:()=>MU,TDirection:()=>cU,SymbolRun:()=>GU,Styles:()=>X2,StyleLevel:()=>U7,StyleForParagraph:()=>y1,StyleForCharacter:()=>D1,StringValueElement:()=>Y1,StringEnumValueElement:()=>EQ,StringContainer:()=>I1,SpaceType:()=>g0,SoftHyphen:()=>JG,SimpleMailMergeField:()=>nJ,SimpleField:()=>J6,ShadingType:()=>qB,SequentialIdentifier:()=>rJ,Separator:()=>VG,SectionType:()=>bq,SectionPropertiesChange:()=>iU,SectionProperties:()=>V6,RunPropertiesDefaults:()=>B$,RunPropertiesChange:()=>JU,RunProperties:()=>J1,Run:()=>C0,RelativeVerticalPosition:()=>Rq,RelativeHorizontalPosition:()=>Nq,PrettifyType:()=>B7,PositionalTabRelativeTo:()=>iB,PositionalTabLeader:()=>rB,PositionalTabAlignment:()=>pB,PositionalTab:()=>FG,PatchType:()=>y9,ParagraphRunProperties:()=>QU,ParagraphPropertiesDefaults:()=>w$,ParagraphPropertiesChange:()=>DU,ParagraphProperties:()=>Z1,Paragraph:()=>h0,PageTextDirectionType:()=>yq,PageTextDirection:()=>pU,PageReference:()=>gG,PageOrientation:()=>i2,PageNumberSeparator:()=>_q,PageNumberElement:()=>WG,PageNumber:()=>N1,PageBreakBefore:()=>HU,PageBreak:()=>RG,PageBorders:()=>aU,PageBorderZOrder:()=>vq,PageBorderOffsetFrom:()=>Sq,PageBorderDisplay:()=>kq,Packer:()=>YX,OverlapType:()=>Dq,OnOffElement:()=>B0,Numbering:()=>J$,NumberedItemReferenceFormat:()=>vG,NumberedItemReference:()=>_G,NumberValueElement:()=>E1,NumberProperties:()=>q2,NumberFormat:()=>BB,NoBreakHyphen:()=>QG,NextAttributeComponent:()=>n2,MonthShort:()=>KG,MonthLong:()=>qG,Media:()=>M6,MathSuperScript:()=>rG,MathSum:()=>mG,MathSubSuperScript:()=>tG,MathSubScript:()=>nG,MathSquareBrackets:()=>GK,MathRun:()=>hG,MathRoundBrackets:()=>JK,MathRadicalProperties:()=>OU,MathRadical:()=>ZK,MathPreSubSuperScript:()=>UK,MathNumerator:()=>PU,MathLimitUpper:()=>aG,MathLimitLower:()=>pG,MathLimit:()=>w6,MathIntegral:()=>lG,MathFunctionProperties:()=>kU,MathFunctionName:()=>EU,MathFunction:()=>QK,MathFraction:()=>uG,MathDenominator:()=>AU,MathDegree:()=>CU,MathCurlyBrackets:()=>KK,MathAngledBrackets:()=>wK,Math:()=>wq,LineRuleType:()=>v1,LineNumberRestartFormat:()=>Eq,LevelSuffix:()=>hq,LevelOverride:()=>Q$,LevelFormat:()=>n0,LevelForOverride:()=>F5,LevelBase:()=>W6,Level:()=>Z$,LeaderType:()=>nB,LastRenderedPageBreak:()=>jG,InternalHyperlink:()=>jU,InsertedTextRun:()=>XK,InsertedTableRow:()=>vU,InsertedTableCell:()=>yU,InitializableXmlComponent:()=>Y6,ImportedXmlComponent:()=>p9,ImportedRootElementAttributes:()=>i9,ImageRun:()=>lJ,IgnoreIfEmptyXmlComponent:()=>Q1,HyperlinkType:()=>tB,HpsMeasureElement:()=>w2,HorizontalPositionRelativeFrom:()=>eQ,HorizontalPositionAlign:()=>KB,HighlightColor:()=>WB,HeightRule:()=>Cq,HeadingLevel:()=>sB,HeaderWrapper:()=>Y$,HeaderFooterType:()=>S9,HeaderFooterReferenceType:()=>k1,Header:()=>$7,GridSpan:()=>uU,FrameWrap:()=>Kq,FrameAnchorType:()=>Gq,FootnoteReferenceRun:()=>Z7,FootnoteReferenceElement:()=>LG,FootnoteReference:()=>V$,FooterWrapper:()=>U$,Footer:()=>Y7,FootNotes:()=>$$,FootNoteReferenceRunAttributes:()=>L$,FileChild:()=>r1,File:()=>o5,ExternalHyperlink:()=>K6,Endnotes:()=>eU,EndnoteReferenceRunAttributes:()=>M$,EndnoteReferenceRun:()=>Q7,EndnoteReference:()=>VU,EndnoteIdReference:()=>W$,EmptyElement:()=>E0,EmphasisMarkType:()=>$U,EMPTY_OBJECT:()=>tZ,DropCapType:()=>Jq,Drawing:()=>D2,DocumentGridType:()=>Oq,DocumentDefaults:()=>q$,DocumentBackgroundAttributes:()=>sU,DocumentBackground:()=>nU,DocumentAttributes:()=>o1,DocumentAttributeNamespaces:()=>p2,Document:()=>o5,DeletedTextRun:()=>MK,DeletedTableRow:()=>_U,DeletedTableCell:()=>bU,DayShort:()=>GG,DayLong:()=>BG,ContinuationSeparator:()=>MG,ConcreteNumbering:()=>s2,ConcreteHyperlink:()=>_1,Comments:()=>LU,CommentReference:()=>ZG,CommentRangeStart:()=>$G,CommentRangeEnd:()=>YG,Comment:()=>IU,ColumnBreak:()=>DG,Column:()=>tK,CheckBoxUtil:()=>H$,CheckBoxSymbolElement:()=>I2,CheckBox:()=>J7,CharacterSet:()=>Uq,CellMergeAttributes:()=>gU,CellMerge:()=>xU,CarriageReturn:()=>HG,BuilderElement:()=>X0,BorderStyle:()=>Q6,Border:()=>o9,BookmarkStart:()=>FU,BookmarkEnd:()=>NU,Bookmark:()=>zU,Body:()=>rU,BaseXmlComponent:()=>m1,Attributes:()=>O0,AnnotationReference:()=>IG,AlignmentType:()=>m0,AbstractNumbering:()=>r2});var{defineProperty:Jw,defineProperties:Gw,getOwnPropertyDescriptors:Kw,getOwnPropertySymbols:m2}=Object,sZ=Object.prototype.hasOwnProperty,nZ=Object.prototype.propertyIsEnumerable,z9=(U,$,Y)=>($ in U)?Jw(U,$,{enumerable:!0,configurable:!0,writable:!0,value:Y}):U[$]=Y,W0=(U,$)=>{for(var Y in $||($={}))if(sZ.call($,Y))z9(U,Y,$[Y]);if(m2){for(var Y of m2($))if(nZ.call($,Y))z9(U,Y,$[Y])}return U},R0=(U,$)=>Gw(U,Kw($)),oZ=(U,$)=>{var Y={};for(var Z in U)if(sZ.call(U,Z)&&$.indexOf(Z)<0)Y[Z]=U[Z];if(U!=null&&m2){for(var Z of m2(U))if($.indexOf(Z)<0&&nZ.call(U,Z))Y[Z]=U[Z]}return Y},Y0=(U,$,Y)=>z9(U,typeof $!=="symbol"?$+"":$,Y),b9=(U,$,Y)=>{return new Promise((Z,J)=>{var G=(q)=>{try{Q(Y.next(q))}catch(z){J(z)}},w=(q)=>{try{Q(Y.throw(q))}catch(z){J(z)}},Q=(q)=>q.done?Z(q.value):Promise.resolve(q.value).then(G,w);Q((Y=Y.apply(U,$)).next())})};class m1{constructor(U){Y0(this,"rootKey"),this.rootKey=U}}var tZ=Object.seal({});class o extends m1{constructor(U){super(U);Y0(this,"root"),this.root=new Array}prepForXml(U){var $;U.stack.push(this);let Y=this.root.map((Z)=>{if(Z instanceof m1)return Z.prepForXml(U);return Z}).filter((Z)=>Z!==void 0);return U.stack.pop(),{[this.rootKey]:Y.length?Y.length===1&&(($=Y[0])==null?void 0:$._attr)?Y[0]:Y:tZ}}addChildElement(U){return this.root.push(U),this}}class Q1 extends o{constructor(U,$){super(U);Y0(this,"includeIfEmpty"),this.includeIfEmpty=$}prepForXml(U){let $=super.prepForXml(U);if(this.includeIfEmpty)return $;if($&&(typeof $[this.rootKey]!=="object"||Object.keys($[this.rootKey]).length))return $;return}}class V0 extends m1{constructor(U){super("_attr");Y0(this,"xmlKeys"),this.root=U}prepForXml(U){let $={};return Object.entries(this.root).forEach(([Y,Z])=>{if(Z!==void 0){let J=this.xmlKeys&&this.xmlKeys[Y]||Y;$[J]=Z}}),{_attr:$}}}class n2 extends m1{constructor(U){super("_attr");this.root=U}prepForXml(U){return{_attr:Object.values(this.root).filter(({value:Y})=>Y!==void 0).reduce((Y,{key:Z,value:J})=>R0(W0({},Y),{[Z]:J}),{})}}}class O0 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val",color:"w:color",fill:"w:fill",space:"w:space",sz:"w:sz",type:"w:type",rsidR:"w:rsidR",rsidRPr:"w:rsidRPr",rsidSect:"w:rsidSect",w:"w:w",h:"w:h",top:"w:top",right:"w:right",bottom:"w:bottom",left:"w:left",header:"w:header",footer:"w:footer",gutter:"w:gutter",linePitch:"w:linePitch",pos:"w:pos"})}}var c0=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function g9(U){return U&&U.__esModule&&Object.prototype.hasOwnProperty.call(U,"default")?U.default:U}var _6={},E2={exports:{}},r$;function x9(){if(r$)return E2.exports;r$=1;var U=typeof Reflect==="object"?Reflect:null,$=U&&typeof U.apply==="function"?U.apply:function I(A,y,g){return Function.prototype.apply.call(A,y,g)},Y;if(U&&typeof U.ownKeys==="function")Y=U.ownKeys;else if(Object.getOwnPropertySymbols)Y=function I(A){return Object.getOwnPropertyNames(A).concat(Object.getOwnPropertySymbols(A))};else Y=function I(A){return Object.getOwnPropertyNames(A)};function Z(I){if(console&&console.warn)console.warn(I)}var J=Number.isNaN||function I(A){return A!==A};function G(){G.init.call(this)}E2.exports=G,E2.exports.once=X,G.EventEmitter=G,G.prototype._events=void 0,G.prototype._eventsCount=0,G.prototype._maxListeners=void 0;var w=10;function Q(I){if(typeof I!=="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof I)}Object.defineProperty(G,"defaultMaxListeners",{enumerable:!0,get:function(){return w},set:function(I){if(typeof I!=="number"||I<0||J(I))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+I+".");w=I}}),G.init=function(){if(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)this._events=Object.create(null),this._eventsCount=0;this._maxListeners=this._maxListeners||void 0},G.prototype.setMaxListeners=function I(A){if(typeof A!=="number"||A<0||J(A))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+A+".");return this._maxListeners=A,this};function q(I){if(I._maxListeners===void 0)return G.defaultMaxListeners;return I._maxListeners}G.prototype.getMaxListeners=function I(){return q(this)},G.prototype.emit=function I(A){var y=[];for(var g=1;g0)s=y[0];if(s instanceof Error)throw s;var q0=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw q0.context=s,q0}var S=k[A];if(S===void 0)return!1;if(typeof S==="function")$(S,this,y);else{var h=S.length,F=C(S,h);for(var g=0;g0&&s.length>d&&!s.warned){s.warned=!0;var q0=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(A)+" listeners added. Use emitter.setMaxListeners() to increase limit");q0.name="MaxListenersExceededWarning",q0.emitter=I,q0.type=A,q0.count=s.length,Z(q0)}}return I}G.prototype.addListener=function I(A,y){return z(this,A,y,!1)},G.prototype.on=G.prototype.addListener,G.prototype.prependListener=function I(A,y){return z(this,A,y,!0)};function R(){if(!this.fired){if(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0)return this.listener.call(this.target);return this.listener.apply(this.target,arguments)}}function W(I,A,y){var g={fired:!1,wrapFn:void 0,target:I,type:A,listener:y},d=R.bind(g);return d.listener=y,g.wrapFn=d,d}G.prototype.once=function I(A,y){return Q(y),this.on(A,W(this,A,y)),this},G.prototype.prependOnceListener=function I(A,y){return Q(y),this.prependListener(A,W(this,A,y)),this},G.prototype.removeListener=function I(A,y){var g,d,k,s,q0;if(Q(y),d=this._events,d===void 0)return this;if(g=d[A],g===void 0)return this;if(g===y||g.listener===y){if(--this._eventsCount===0)this._events=Object.create(null);else if(delete d[A],d.removeListener)this.emit("removeListener",A,g.listener||y)}else if(typeof g!=="function"){k=-1;for(s=g.length-1;s>=0;s--)if(g[s]===y||g[s].listener===y){q0=g[s].listener,k=s;break}if(k<0)return this;if(k===0)g.shift();else H(g,k);if(g.length===1)d[A]=g[0];if(d.removeListener!==void 0)this.emit("removeListener",A,q0||y)}return this},G.prototype.off=G.prototype.removeListener,G.prototype.removeAllListeners=function I(A){var y,g,d;if(g=this._events,g===void 0)return this;if(g.removeListener===void 0){if(arguments.length===0)this._events=Object.create(null),this._eventsCount=0;else if(g[A]!==void 0)if(--this._eventsCount===0)this._events=Object.create(null);else delete g[A];return this}if(arguments.length===0){var k=Object.keys(g),s;for(d=0;d=0;d--)this.removeListener(A,y[d]);return this};function E(I,A,y){var g=I._events;if(g===void 0)return[];var d=g[A];if(d===void 0)return[];if(typeof d==="function")return y?[d.listener||d]:[d];return y?O(d):C(d,d.length)}G.prototype.listeners=function I(A){return E(this,A,!0)},G.prototype.rawListeners=function I(A){return E(this,A,!1)},G.listenerCount=function(I,A){if(typeof I.listenerCount==="function")return I.listenerCount(A);else return D.call(I,A)},G.prototype.listenerCount=D;function D(I){var A=this._events;if(A!==void 0){var y=A[I];if(typeof y==="function")return 1;else if(y!==void 0)return y.length}return 0}G.prototype.eventNames=function I(){return this._eventsCount>0?Y(this._events):[]};function C(I,A){var y=new Array(A);for(var g=0;g1)for(var Y=1;Y0)throw new Error("Invalid string. Length must be a multiple of 4");var H=D.indexOf("=");if(H===-1)H=C;var O=H===C?0:4-H%4;return[H,O]}function Q(D){var C=w(D),H=C[0],O=C[1];return(H+O)*3/4-O}function q(D,C,H){return(C+H)*3/4-H}function z(D){var C,H=w(D),O=H[0],X=H[1],j=new Y(q(D,O,X)),L=0,I=X>0?O-4:O,A;for(A=0;A>16&255,j[L++]=C>>8&255,j[L++]=C&255;if(X===2)C=$[D.charCodeAt(A)]<<2|$[D.charCodeAt(A+1)]>>4,j[L++]=C&255;if(X===1)C=$[D.charCodeAt(A)]<<10|$[D.charCodeAt(A+1)]<<4|$[D.charCodeAt(A+2)]>>2,j[L++]=C>>8&255,j[L++]=C&255;return j}function R(D){return U[D>>18&63]+U[D>>12&63]+U[D>>6&63]+U[D&63]}function W(D,C,H){var O,X=[];for(var j=C;jI?I:L+j));if(O===1)C=D[H-1],X.push(U[C>>2]+U[C<<4&63]+"==");else if(O===2)C=(D[H-2]<<8)+D[H-1],X.push(U[C>>10]+U[C>>4&63]+U[C<<2&63]+"=");return X.join("")}return $2}var S2={},t$;function Lw(){if(t$)return S2;return t$=1,S2.read=function(U,$,Y,Z,J){var G,w,Q=J*8-Z-1,q=(1<>1,R=-7,W=Y?J-1:0,E=Y?-1:1,D=U[$+W];W+=E,G=D&(1<<-R)-1,D>>=-R,R+=Q;for(;R>0;G=G*256+U[$+W],W+=E,R-=8);w=G&(1<<-R)-1,G>>=-R,R+=Z;for(;R>0;w=w*256+U[$+W],W+=E,R-=8);if(G===0)G=1-z;else if(G===q)return w?NaN:(D?-1:1)*(1/0);else w=w+Math.pow(2,Z),G=G-z;return(D?-1:1)*w*Math.pow(2,G-Z)},S2.write=function(U,$,Y,Z,J,G){var w,Q,q,z=G*8-J-1,R=(1<>1,E=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=Z?0:G-1,C=Z?1:-1,H=$<0||$===0&&1/$<0?1:0;if($=Math.abs($),isNaN($)||$===1/0)Q=isNaN($)?1:0,w=R;else{if(w=Math.floor(Math.log($)/Math.LN2),$*(q=Math.pow(2,-w))<1)w--,q*=2;if(w+W>=1)$+=E/q;else $+=E*Math.pow(2,1-W);if($*q>=2)w++,q/=2;if(w+W>=R)Q=0,w=R;else if(w+W>=1)Q=($*q-1)*Math.pow(2,J),w=w+W;else Q=$*Math.pow(2,W-1)*Math.pow(2,J),w=0}for(;J>=8;U[Y+D]=Q&255,D+=C,Q/=256,J-=8);w=w<0;U[Y+D]=w&255,D+=C,w/=256,z-=8);U[Y+D-C]|=H*128},S2}var e$;function o2(){if(e$)return b6;return e$=1,function(U){var $=Iw(),Y=Lw(),Z=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null;U.Buffer=Q,U.SlowBuffer=j,U.INSPECT_MAX_BYTES=50;var J=2147483647;if(U.kMaxLength=J,Q.TYPED_ARRAY_SUPPORT=G(),!Q.TYPED_ARRAY_SUPPORT&&typeof console!=="undefined"&&typeof console.error==="function")console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function G(){try{var T=new Uint8Array(1),K={foo:function(){return 42}};return Object.setPrototypeOf(K,Uint8Array.prototype),Object.setPrototypeOf(T,K),T.foo()===42}catch(B){return!1}}Object.defineProperty(Q.prototype,"parent",{enumerable:!0,get:function(){if(!Q.isBuffer(this))return;return this.buffer}}),Object.defineProperty(Q.prototype,"offset",{enumerable:!0,get:function(){if(!Q.isBuffer(this))return;return this.byteOffset}});function w(T){if(T>J)throw new RangeError('The value "'+T+'" is invalid for option "size"');var K=new Uint8Array(T);return Object.setPrototypeOf(K,Q.prototype),K}function Q(T,K,B){if(typeof T==="number"){if(typeof K==="string")throw new TypeError('The "string" argument must be of type string. Received type number');return W(T)}return q(T,K,B)}Q.poolSize=8192;function q(T,K,B){if(typeof T==="string")return E(T,K);if(ArrayBuffer.isView(T))return C(T);if(T==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T);if(e(T,ArrayBuffer)||T&&e(T.buffer,ArrayBuffer))return H(T,K,B);if(typeof SharedArrayBuffer!=="undefined"&&(e(T,SharedArrayBuffer)||T&&e(T.buffer,SharedArrayBuffer)))return H(T,K,B);if(typeof T==="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var M=T.valueOf&&T.valueOf();if(M!=null&&M!==T)return Q.from(M,K,B);var x=O(T);if(x)return x;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof T[Symbol.toPrimitive]==="function")return Q.from(T[Symbol.toPrimitive]("string"),K,B);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T)}Q.from=function(T,K,B){return q(T,K,B)},Object.setPrototypeOf(Q.prototype,Uint8Array.prototype),Object.setPrototypeOf(Q,Uint8Array);function z(T){if(typeof T!=="number")throw new TypeError('"size" argument must be of type number');else if(T<0)throw new RangeError('The value "'+T+'" is invalid for option "size"')}function R(T,K,B){if(z(T),T<=0)return w(T);if(K!==void 0)return typeof B==="string"?w(T).fill(K,B):w(T).fill(K);return w(T)}Q.alloc=function(T,K,B){return R(T,K,B)};function W(T){return z(T),w(T<0?0:X(T)|0)}Q.allocUnsafe=function(T){return W(T)},Q.allocUnsafeSlow=function(T){return W(T)};function E(T,K){if(typeof K!=="string"||K==="")K="utf8";if(!Q.isEncoding(K))throw new TypeError("Unknown encoding: "+K);var B=L(T,K)|0,M=w(B),x=M.write(T,K);if(x!==B)M=M.slice(0,x);return M}function D(T){var K=T.length<0?0:X(T.length)|0,B=w(K);for(var M=0;M=J)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+J.toString(16)+" bytes");return T|0}function j(T){if(+T!=T)T=0;return Q.alloc(+T)}Q.isBuffer=function T(K){return K!=null&&K._isBuffer===!0&&K!==Q.prototype},Q.compare=function T(K,B){if(e(K,Uint8Array))K=Q.from(K,K.offset,K.byteLength);if(e(B,Uint8Array))B=Q.from(B,B.offset,B.byteLength);if(!Q.isBuffer(K)||!Q.isBuffer(B))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(K===B)return 0;var M=K.length,x=B.length;for(var l=0,u=Math.min(M,x);lx.length)Q.from(u).copy(x,l);else Uint8Array.prototype.set.call(x,u,l);else if(!Q.isBuffer(u))throw new TypeError('"list" argument must be an Array of Buffers');else u.copy(x,l);l+=u.length}return x};function L(T,K){if(Q.isBuffer(T))return T.length;if(ArrayBuffer.isView(T)||e(T,ArrayBuffer))return T.byteLength;if(typeof T!=="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof T);var B=T.length,M=arguments.length>2&&arguments[2]===!0;if(!M&&B===0)return 0;var x=!1;for(;;)switch(K){case"ascii":case"latin1":case"binary":return B;case"utf8":case"utf-8":return N(T).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B*2;case"hex":return B>>>1;case"base64":return v(T).length;default:if(x)return M?-1:N(T).length;K=(""+K).toLowerCase(),x=!0}}Q.byteLength=L;function I(T,K,B){var M=!1;if(K===void 0||K<0)K=0;if(K>this.length)return"";if(B===void 0||B>this.length)B=this.length;if(B<=0)return"";if(B>>>=0,K>>>=0,B<=K)return"";if(!T)T="utf8";while(!0)switch(T){case"hex":return $0(this,K,B);case"utf8":case"utf-8":return F(this,K,B);case"ascii":return m(this,K,B);case"latin1":case"binary":return J0(this,K,B);case"base64":return h(this,K,B);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I0(this,K,B);default:if(M)throw new TypeError("Unknown encoding: "+T);T=(T+"").toLowerCase(),M=!0}}Q.prototype._isBuffer=!0;function A(T,K,B){var M=T[K];T[K]=T[B],T[B]=M}if(Q.prototype.swap16=function T(){var K=this.length;if(K%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var B=0;BB)K+=" ... ";return""},Z)Q.prototype[Z]=Q.prototype.inspect;Q.prototype.compare=function T(K,B,M,x,l){if(e(K,Uint8Array))K=Q.from(K,K.offset,K.byteLength);if(!Q.isBuffer(K))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof K);if(B===void 0)B=0;if(M===void 0)M=K?K.length:0;if(x===void 0)x=0;if(l===void 0)l=this.length;if(B<0||M>K.length||x<0||l>this.length)throw new RangeError("out of range index");if(x>=l&&B>=M)return 0;if(x>=l)return-1;if(B>=M)return 1;if(B>>>=0,M>>>=0,x>>>=0,l>>>=0,this===K)return 0;var u=l-x,Q0=M-B,w0=Math.min(u,Q0),K0=this.slice(x,l),L0=K.slice(B,M);for(var M0=0;M02147483647)B=2147483647;else if(B<-2147483648)B=-2147483648;if(B=+B,V(B))B=x?0:T.length-1;if(B<0)B=T.length+B;if(B>=T.length)if(x)return-1;else B=T.length-1;else if(B<0)if(x)B=0;else return-1;if(typeof K==="string")K=Q.from(K,M);if(Q.isBuffer(K)){if(K.length===0)return-1;return g(T,K,B,M,x)}else if(typeof K==="number"){if(K=K&255,typeof Uint8Array.prototype.indexOf==="function")if(x)return Uint8Array.prototype.indexOf.call(T,K,B);else return Uint8Array.prototype.lastIndexOf.call(T,K,B);return g(T,[K],B,M,x)}throw new TypeError("val must be string, number or Buffer")}function g(T,K,B,M,x){var l=1,u=T.length,Q0=K.length;if(M!==void 0){if(M=String(M).toLowerCase(),M==="ucs2"||M==="ucs-2"||M==="utf16le"||M==="utf-16le"){if(T.length<2||K.length<2)return-1;l=2,u/=2,Q0/=2,B/=2}}function w0(v0,j1){if(l===1)return v0[j1];else return v0.readUInt16BE(j1*l)}var K0;if(x){var L0=-1;for(K0=B;K0u)B=u-Q0;for(K0=B;K0>=0;K0--){var M0=!0;for(var H0=0;H0x)M=x;var l=K.length;if(M>l/2)M=l/2;for(var u=0;u>>0,isFinite(M)){if(M=M>>>0,x===void 0)x="utf8"}else x=M,M=void 0;else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var l=this.length-B;if(M===void 0||M>l)M=l;if(K.length>0&&(M<0||B<0)||B>this.length)throw new RangeError("Attempt to write outside buffer bounds");if(!x)x="utf8";var u=!1;for(;;)switch(x){case"hex":return d(this,K,B,M);case"utf8":case"utf-8":return k(this,K,B,M);case"ascii":case"latin1":case"binary":return s(this,K,B,M);case"base64":return q0(this,K,B,M);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,K,B,M);default:if(u)throw new TypeError("Unknown encoding: "+x);x=(""+x).toLowerCase(),u=!0}},Q.prototype.toJSON=function T(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function h(T,K,B){if(K===0&&B===T.length)return $.fromByteArray(T);else return $.fromByteArray(T.slice(K,B))}function F(T,K,B){B=Math.min(T.length,B);var M=[],x=K;while(x239?4:l>223?3:l>191?2:1;if(x+Q0<=B){var w0,K0,L0,M0;switch(Q0){case 1:if(l<128)u=l;break;case 2:if(w0=T[x+1],(w0&192)===128){if(M0=(l&31)<<6|w0&63,M0>127)u=M0}break;case 3:if(w0=T[x+1],K0=T[x+2],(w0&192)===128&&(K0&192)===128){if(M0=(l&15)<<12|(w0&63)<<6|K0&63,M0>2047&&(M0<55296||M0>57343))u=M0}break;case 4:if(w0=T[x+1],K0=T[x+2],L0=T[x+3],(w0&192)===128&&(K0&192)===128&&(L0&192)===128){if(M0=(l&15)<<18|(w0&63)<<12|(K0&63)<<6|L0&63,M0>65535&&M0<1114112)u=M0}}}if(u===null)u=65533,Q0=1;else if(u>65535)u-=65536,M.push(u>>>10&1023|55296),u=56320|u&1023;M.push(u),x+=Q0}return U0(M)}var a=4096;function U0(T){var K=T.length;if(K<=a)return String.fromCharCode.apply(String,T);var B="",M=0;while(MM)B=M;var x="";for(var l=K;lM)K=M;if(B<0){if(B+=M,B<0)B=0}else if(B>M)B=M;if(BB)throw new RangeError("Trying to access beyond buffer length")}Q.prototype.readUintLE=Q.prototype.readUIntLE=function T(K,B,M){if(K=K>>>0,B=B>>>0,!M)i(K,B,this.length);var x=this[K],l=1,u=0;while(++u>>0,B=B>>>0,!M)i(K,B,this.length);var x=this[K+--B],l=1;while(B>0&&(l*=256))x+=this[K+--B]*l;return x},Q.prototype.readUint8=Q.prototype.readUInt8=function T(K,B){if(K=K>>>0,!B)i(K,1,this.length);return this[K]},Q.prototype.readUint16LE=Q.prototype.readUInt16LE=function T(K,B){if(K=K>>>0,!B)i(K,2,this.length);return this[K]|this[K+1]<<8},Q.prototype.readUint16BE=Q.prototype.readUInt16BE=function T(K,B){if(K=K>>>0,!B)i(K,2,this.length);return this[K]<<8|this[K+1]},Q.prototype.readUint32LE=Q.prototype.readUInt32LE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return(this[K]|this[K+1]<<8|this[K+2]<<16)+this[K+3]*16777216},Q.prototype.readUint32BE=Q.prototype.readUInt32BE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return this[K]*16777216+(this[K+1]<<16|this[K+2]<<8|this[K+3])},Q.prototype.readIntLE=function T(K,B,M){if(K=K>>>0,B=B>>>0,!M)i(K,B,this.length);var x=this[K],l=1,u=0;while(++u=l)x-=Math.pow(2,8*B);return x},Q.prototype.readIntBE=function T(K,B,M){if(K=K>>>0,B=B>>>0,!M)i(K,B,this.length);var x=B,l=1,u=this[K+--x];while(x>0&&(l*=256))u+=this[K+--x]*l;if(l*=128,u>=l)u-=Math.pow(2,8*B);return u},Q.prototype.readInt8=function T(K,B){if(K=K>>>0,!B)i(K,1,this.length);if(!(this[K]&128))return this[K];return(255-this[K]+1)*-1},Q.prototype.readInt16LE=function T(K,B){if(K=K>>>0,!B)i(K,2,this.length);var M=this[K]|this[K+1]<<8;return M&32768?M|4294901760:M},Q.prototype.readInt16BE=function T(K,B){if(K=K>>>0,!B)i(K,2,this.length);var M=this[K+1]|this[K]<<8;return M&32768?M|4294901760:M},Q.prototype.readInt32LE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return this[K]|this[K+1]<<8|this[K+2]<<16|this[K+3]<<24},Q.prototype.readInt32BE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return this[K]<<24|this[K+1]<<16|this[K+2]<<8|this[K+3]},Q.prototype.readFloatLE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return Y.read(this,K,!0,23,4)},Q.prototype.readFloatBE=function T(K,B){if(K=K>>>0,!B)i(K,4,this.length);return Y.read(this,K,!1,23,4)},Q.prototype.readDoubleLE=function T(K,B){if(K=K>>>0,!B)i(K,8,this.length);return Y.read(this,K,!0,52,8)},Q.prototype.readDoubleBE=function T(K,B){if(K=K>>>0,!B)i(K,8,this.length);return Y.read(this,K,!1,52,8)};function _(T,K,B,M,x,l){if(!Q.isBuffer(T))throw new TypeError('"buffer" argument must be a Buffer instance');if(K>x||KT.length)throw new RangeError("Index out of range")}Q.prototype.writeUintLE=Q.prototype.writeUIntLE=function T(K,B,M,x){if(K=+K,B=B>>>0,M=M>>>0,!x){var l=Math.pow(2,8*M)-1;_(this,K,B,M,l,0)}var u=1,Q0=0;this[B]=K&255;while(++Q0>>0,M=M>>>0,!x){var l=Math.pow(2,8*M)-1;_(this,K,B,M,l,0)}var u=M-1,Q0=1;this[B+u]=K&255;while(--u>=0&&(Q0*=256))this[B+u]=K/Q0&255;return B+M},Q.prototype.writeUint8=Q.prototype.writeUInt8=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,1,255,0);return this[B]=K&255,B+1},Q.prototype.writeUint16LE=Q.prototype.writeUInt16LE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,2,65535,0);return this[B]=K&255,this[B+1]=K>>>8,B+2},Q.prototype.writeUint16BE=Q.prototype.writeUInt16BE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,2,65535,0);return this[B]=K>>>8,this[B+1]=K&255,B+2},Q.prototype.writeUint32LE=Q.prototype.writeUInt32LE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,4,4294967295,0);return this[B+3]=K>>>24,this[B+2]=K>>>16,this[B+1]=K>>>8,this[B]=K&255,B+4},Q.prototype.writeUint32BE=Q.prototype.writeUInt32BE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,4,4294967295,0);return this[B]=K>>>24,this[B+1]=K>>>16,this[B+2]=K>>>8,this[B+3]=K&255,B+4},Q.prototype.writeIntLE=function T(K,B,M,x){if(K=+K,B=B>>>0,!x){var l=Math.pow(2,8*M-1);_(this,K,B,M,l-1,-l)}var u=0,Q0=1,w0=0;this[B]=K&255;while(++u>0)-w0&255}return B+M},Q.prototype.writeIntBE=function T(K,B,M,x){if(K=+K,B=B>>>0,!x){var l=Math.pow(2,8*M-1);_(this,K,B,M,l-1,-l)}var u=M-1,Q0=1,w0=0;this[B+u]=K&255;while(--u>=0&&(Q0*=256)){if(K<0&&w0===0&&this[B+u+1]!==0)w0=1;this[B+u]=(K/Q0>>0)-w0&255}return B+M},Q.prototype.writeInt8=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,1,127,-128);if(K<0)K=255+K+1;return this[B]=K&255,B+1},Q.prototype.writeInt16LE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,2,32767,-32768);return this[B]=K&255,this[B+1]=K>>>8,B+2},Q.prototype.writeInt16BE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,2,32767,-32768);return this[B]=K>>>8,this[B+1]=K&255,B+2},Q.prototype.writeInt32LE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,4,2147483647,-2147483648);return this[B]=K&255,this[B+1]=K>>>8,this[B+2]=K>>>16,this[B+3]=K>>>24,B+4},Q.prototype.writeInt32BE=function T(K,B,M){if(K=+K,B=B>>>0,!M)_(this,K,B,4,2147483647,-2147483648);if(K<0)K=4294967295+K+1;return this[B]=K>>>24,this[B+1]=K>>>16,this[B+2]=K>>>8,this[B+3]=K&255,B+4};function r(T,K,B,M,x,l){if(B+M>T.length)throw new RangeError("Index out of range");if(B<0)throw new RangeError("Index out of range")}function n(T,K,B,M,x){if(K=+K,B=B>>>0,!x)r(T,K,B,4);return Y.write(T,K,B,M,23,4),B+4}Q.prototype.writeFloatLE=function T(K,B,M){return n(this,K,B,!0,M)},Q.prototype.writeFloatBE=function T(K,B,M){return n(this,K,B,!1,M)};function Z0(T,K,B,M,x){if(K=+K,B=B>>>0,!x)r(T,K,B,8);return Y.write(T,K,B,M,52,8),B+8}Q.prototype.writeDoubleLE=function T(K,B,M){return Z0(this,K,B,!0,M)},Q.prototype.writeDoubleBE=function T(K,B,M){return Z0(this,K,B,!1,M)},Q.prototype.copy=function T(K,B,M,x){if(!Q.isBuffer(K))throw new TypeError("argument should be a Buffer");if(!M)M=0;if(!x&&x!==0)x=this.length;if(B>=K.length)B=K.length;if(!B)B=0;if(x>0&&x=this.length)throw new RangeError("Index out of range");if(x<0)throw new RangeError("sourceEnd out of bounds");if(x>this.length)x=this.length;if(K.length-B>>0,M=M===void 0?this.length:M>>>0,!K)K=0;var u;if(typeof K==="number")for(u=B;u55295&&B<57344){if(!x){if(B>56319){if((K-=3)>-1)l.push(239,191,189);continue}else if(u+1===M){if((K-=3)>-1)l.push(239,191,189);continue}x=B;continue}if(B<56320){if((K-=3)>-1)l.push(239,191,189);x=B;continue}B=(x-55296<<10|B-56320)+65536}else if(x){if((K-=3)>-1)l.push(239,191,189)}if(x=null,B<128){if((K-=1)<0)break;l.push(B)}else if(B<2048){if((K-=2)<0)break;l.push(B>>6|192,B&63|128)}else if(B<65536){if((K-=3)<0)break;l.push(B>>12|224,B>>6&63|128,B&63|128)}else if(B<1114112){if((K-=4)<0)break;l.push(B>>18|240,B>>12&63|128,B>>6&63|128,B&63|128)}else throw new Error("Invalid code point")}return l}function c(T){var K=[];for(var B=0;B>8,x=B%256,l.push(x),l.push(M)}return l}function v(T){return $.toByteArray(P(T))}function b(T,K,B,M){for(var x=0;x=K.length||x>=T.length)break;K[x+B]=T[x]}return x}function e(T,K){return T instanceof K||T!=null&&T.constructor!=null&&T.constructor.name!=null&&T.constructor.name===K.name}function V(T){return T!==T}var t=function(){var T="0123456789abcdef",K=new Array(256);for(var B=0;B<16;++B){var M=B*16;for(var x=0;x<16;++x)K[M+x]=T[B]+T[x]}return K}()}(b6),b6}var g6={},x6={},f6,UY;function QQ(){if(UY)return f6;return UY=1,f6=function U(){if(typeof Symbol!=="function"||typeof Object.getOwnPropertySymbols!=="function")return!1;if(typeof Symbol.iterator==="symbol")return!0;var $={},Y=Symbol("test"),Z=Object(Y);if(typeof Y==="string")return!1;if(Object.prototype.toString.call(Y)!=="[object Symbol]")return!1;if(Object.prototype.toString.call(Z)!=="[object Symbol]")return!1;var J=42;$[Y]=J;for(var G in $)return!1;if(typeof Object.keys==="function"&&Object.keys($).length!==0)return!1;if(typeof Object.getOwnPropertyNames==="function"&&Object.getOwnPropertyNames($).length!==0)return!1;var w=Object.getOwnPropertySymbols($);if(w.length!==1||w[0]!==Y)return!1;if(!Object.prototype.propertyIsEnumerable.call($,Y))return!1;if(typeof Object.getOwnPropertyDescriptor==="function"){var Q=Object.getOwnPropertyDescriptor($,Y);if(Q.value!==J||Q.enumerable!==!0)return!1}return!0},f6}var h6,$Y;function f9(){if($Y)return h6;$Y=1;var U=QQ();return h6=function $(){return U()&&!!Symbol.toStringTag},h6}var u6,YY;function JQ(){if(YY)return u6;return YY=1,u6=Object,u6}var d6,ZY;function Vw(){if(ZY)return d6;return ZY=1,d6=Error,d6}var c6,QY;function Mw(){if(QY)return c6;return QY=1,c6=EvalError,c6}var m6,JY;function Ww(){if(JY)return m6;return JY=1,m6=RangeError,m6}var l6,GY;function Hw(){if(GY)return l6;return GY=1,l6=ReferenceError,l6}var a6,KY;function GQ(){if(KY)return a6;return KY=1,a6=SyntaxError,a6}var p6,wY;function t2(){if(wY)return p6;return wY=1,p6=TypeError,p6}var i6,BY;function jw(){if(BY)return i6;return BY=1,i6=URIError,i6}var r6,qY;function zw(){if(qY)return r6;return qY=1,r6=Math.abs,r6}var s6,XY;function Fw(){if(XY)return s6;return XY=1,s6=Math.floor,s6}var n6,IY;function Nw(){if(IY)return n6;return IY=1,n6=Math.max,n6}var o6,LY;function Rw(){if(LY)return o6;return LY=1,o6=Math.min,o6}var t6,VY;function Dw(){if(VY)return t6;return VY=1,t6=Math.pow,t6}var e6,MY;function Aw(){if(MY)return e6;return MY=1,e6=Math.round,e6}var U8,WY;function Pw(){if(WY)return U8;return WY=1,U8=Number.isNaN||function U($){return $!==$},U8}var $8,HY;function Tw(){if(HY)return $8;HY=1;var U=Pw();return $8=function $(Y){if(U(Y)||Y===0)return Y;return Y<0?-1:1},$8}var Y8,jY;function Cw(){if(jY)return Y8;return jY=1,Y8=Object.getOwnPropertyDescriptor,Y8}var Z8,zY;function V2(){if(zY)return Z8;zY=1;var U=Cw();if(U)try{U([],"length")}catch($){U=null}return Z8=U,Z8}var Q8,FY;function e2(){if(FY)return Q8;FY=1;var U=Object.defineProperty||!1;if(U)try{U({},"a",{value:1})}catch($){U=!1}return Q8=U,Q8}var J8,NY;function Ow(){if(NY)return J8;NY=1;var U=typeof Symbol!=="undefined"&&Symbol,$=QQ();return J8=function Y(){if(typeof U!=="function")return!1;if(typeof Symbol!=="function")return!1;if(typeof U("foo")!=="symbol")return!1;if(typeof Symbol("bar")!=="symbol")return!1;return $()},J8}var G8,RY;function KQ(){if(RY)return G8;return RY=1,G8=typeof Reflect!=="undefined"&&Reflect.getPrototypeOf||null,G8}var K8,DY;function wQ(){if(DY)return K8;DY=1;var U=JQ();return K8=U.getPrototypeOf||null,K8}var w8,AY;function Ew(){if(AY)return w8;AY=1;var U="Function.prototype.bind called on incompatible ",$=Object.prototype.toString,Y=Math.max,Z="[object Function]",J=function Q(q,z){var R=[];for(var W=0;W1&&typeof v!=="boolean")throw new Q('"allowMissing" argument must be a boolean');if(n(/^%?[^%]*%?$/,f)===null)throw new w("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var b=P(f),e=b.length>0?b[0]:"",V=N("%"+e+"%",v),t=V.name,T=V.value,K=!1,B=V.alias;if(B)e=B[0],i(b,I0([0,1],B));for(var M=1,x=!0;M=b.length){var w0=j(T,l);if(x=!!w0,x&&"get"in w0&&!("originalValue"in w0.get))T=w0.get;else T=T[l]}else x=$0(T,l),T=T[l];if(x&&!K)F[t]=T}}return T},j8}var z8,bY;function IQ(){if(bY)return z8;bY=1;var U=XQ(),$=d9(),Y=$([U("%String.prototype.indexOf%")]);return z8=function Z(J,G){var w=U(J,!!G);if(typeof w==="function"&&Y(J,".prototype.")>-1)return $([w]);return w},z8}var F8,gY;function _w(){if(gY)return F8;gY=1;var U=f9()(),$=IQ(),Y=$("Object.prototype.toString"),Z=function w(Q){if(U&&Q&&typeof Q==="object"&&Symbol.toStringTag in Q)return!1;return Y(Q)==="[object Arguments]"},J=function w(Q){if(Z(Q))return!0;return Q!==null&&typeof Q==="object"&&"length"in Q&&typeof Q.length==="number"&&Q.length>=0&&Y(Q)!=="[object Array]"&&"callee"in Q&&Y(Q.callee)==="[object Function]"},G=function(){return Z(arguments)}();return Z.isLegacyArguments=J,F8=G?Z:J,F8}var N8,xY;function yw(){if(xY)return N8;xY=1;var U=Object.prototype.toString,$=Function.prototype.toString,Y=/^\s*(?:function)?\*/,Z=f9()(),J=Object.getPrototypeOf,G=function(){if(!Z)return!1;try{return Function("return function*() {}")()}catch(Q){}},w;return N8=function Q(q){if(typeof q!=="function")return!1;if(Y.test($.call(q)))return!0;if(!Z){var z=U.call(q);return z==="[object GeneratorFunction]"}if(!J)return!1;if(typeof w==="undefined"){var R=G();w=R?J(R):!1}return J(q)===w},N8}var R8,fY;function bw(){if(fY)return R8;fY=1;var U=Function.prototype.toString,$=typeof Reflect==="object"&&Reflect!==null&&Reflect.apply,Y,Z;if(typeof $==="function"&&typeof Object.defineProperty==="function")try{Y=Object.defineProperty({},"length",{get:function(){throw Z}}),Z={},$(function(){throw 42},null,Y)}catch(j){if(j!==Z)$=null}else $=null;var J=/^\s*class\b/,G=function j(L){try{var I=U.call(L);return J.test(I)}catch(A){return!1}},w=function j(L){try{if(G(L))return!1;return U.call(L),!0}catch(I){return!1}},Q=Object.prototype.toString,q="[object Object]",z="[object Function]",R="[object GeneratorFunction]",W="[object HTMLAllCollection]",E="[object HTML document.all class]",D="[object HTMLCollection]",C=typeof Symbol==="function"&&!!Symbol.toStringTag,H=!(0 in[,]),O=function j(){return!1};if(typeof document==="object"){var X=document.all;if(Q.call(X)===Q.call(document.all))O=function j(L){if((H||!L)&&(typeof L==="undefined"||typeof L==="object"))try{var I=Q.call(L);return(I===W||I===E||I===D||I===q)&&L("")==null}catch(A){}return!1}}return R8=$?function j(L){if(O(L))return!0;if(!L)return!1;if(typeof L!=="function"&&typeof L!=="object")return!1;try{$(L,null,Y)}catch(I){if(I!==Z)return!1}return!G(L)&&w(L)}:function j(L){if(O(L))return!0;if(!L)return!1;if(typeof L!=="function"&&typeof L!=="object")return!1;if(C)return w(L);if(G(L))return!1;var I=Q.call(L);if(I!==z&&I!==R&&!/^\[object HTML/.test(I))return!1;return w(L)},R8}var D8,hY;function gw(){if(hY)return D8;hY=1;var U=bw(),$=Object.prototype.toString,Y=Object.prototype.hasOwnProperty,Z=function Q(q,z,R){for(var W=0,E=q.length;W=3)W=R;if(w(q))Z(q,z,W);else if(typeof q==="string")J(q,z,W);else G(q,z,W)},D8}var A8,uY;function xw(){if(uY)return A8;return uY=1,A8=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"],A8}var P8,dY;function fw(){if(dY)return P8;dY=1;var U=xw(),$=typeof globalThis==="undefined"?c0:globalThis;return P8=function Y(){var Z=[];for(var J=0;J3&&typeof arguments[3]!=="boolean"&&arguments[3]!==null)throw new Y("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!=="boolean"&&arguments[4]!==null)throw new Y("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!=="boolean"&&arguments[5]!==null)throw new Y("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!=="boolean")throw new Y("`loose`, if provided, must be a boolean");var q=arguments.length>3?arguments[3]:null,z=arguments.length>4?arguments[4]:null,R=arguments.length>5?arguments[5]:null,W=arguments.length>6?arguments[6]:!1,E=!!Z&&Z(G,w);if(U)U(G,w,{configurable:R===null&&E?E.configurable:!R,enumerable:q===null&&E?E.enumerable:!q,value:Q,writable:z===null&&E?E.writable:!z});else if(W||!q&&!z&&!R)G[w]=Q;else throw new $("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},C8}var O8,mY;function uw(){if(mY)return O8;mY=1;var U=e2(),$=function Y(){return!!U};return $.hasArrayLengthDefineBug=function Y(){if(!U)return null;try{return U([],"length",{value:1}).length!==1}catch(Z){return!0}},O8=$,O8}var E8,lY;function dw(){if(lY)return E8;lY=1;var U=XQ(),$=hw(),Y=uw()(),Z=V2(),J=t2(),G=U("%Math.floor%");return E8=function w(Q,q){if(typeof Q!=="function")throw new J("`fn` is not a function");if(typeof q!=="number"||q<0||q>4294967295||G(q)!==q)throw new J("`length` must be a positive 32-bit integer");var z=arguments.length>2&&!!arguments[2],R=!0,W=!0;if("length"in Q&&Z){var E=Z(Q,"length");if(E&&!E.configurable)R=!1;if(E&&!E.writable)W=!1}if(R||W||!z)if(Y)$(Q,"length",q,!0,!0);else $(Q,"length",q);return Q},E8}var k8,aY;function cw(){if(aY)return k8;aY=1;var U=M2(),$=u9(),Y=BQ();return k8=function Z(){return Y(U,$,arguments)},k8}var pY;function mw(){if(pY)return T8.exports;return pY=1,function(U){var $=dw(),Y=e2(),Z=d9(),J=cw();if(U.exports=function G(w){var Q=Z(arguments),q=w.length-(arguments.length-1);return $(Q,1+(q>0?q:0),!0)},Y)Y(U.exports,"apply",{value:J});else U.exports.apply=J}(T8),T8.exports}var S8,iY;function LQ(){if(iY)return S8;iY=1;var U=gw(),$=fw(),Y=mw(),Z=IQ(),J=V2(),G=qQ(),w=Z("Object.prototype.toString"),Q=f9()(),q=typeof globalThis==="undefined"?c0:globalThis,z=$(),R=Z("String.prototype.slice"),W=Z("Array.prototype.indexOf",!0)||function H(O,X){for(var j=0;j-1)return X;if(X!=="Object")return!1;return C(O)}if(!J)return null;return D(O)},S8}var v8,rY;function lw(){if(rY)return v8;rY=1;var U=LQ();return v8=function $(Y){return!!U(Y)},v8}var sY;function aw(){if(sY)return x6;return sY=1,function(U){var $=_w(),Y=yw(),Z=LQ(),J=lw();function G(M){return M.call.bind(M)}var w=typeof BigInt!=="undefined",Q=typeof Symbol!=="undefined",q=G(Object.prototype.toString),z=G(Number.prototype.valueOf),R=G(String.prototype.valueOf),W=G(Boolean.prototype.valueOf);if(w)var E=G(BigInt.prototype.valueOf);if(Q)var D=G(Symbol.prototype.valueOf);function C(M,x){if(typeof M!=="object")return!1;try{return x(M),!0}catch(l){return!1}}U.isArgumentsObject=$,U.isGeneratorFunction=Y,U.isTypedArray=J;function H(M){return typeof Promise!=="undefined"&&M instanceof Promise||M!==null&&typeof M==="object"&&typeof M.then==="function"&&typeof M.catch==="function"}U.isPromise=H;function O(M){if(typeof ArrayBuffer!=="undefined"&&ArrayBuffer.isView)return ArrayBuffer.isView(M);return J(M)||r(M)}U.isArrayBufferView=O;function X(M){return Z(M)==="Uint8Array"}U.isUint8Array=X;function j(M){return Z(M)==="Uint8ClampedArray"}U.isUint8ClampedArray=j;function L(M){return Z(M)==="Uint16Array"}U.isUint16Array=L;function I(M){return Z(M)==="Uint32Array"}U.isUint32Array=I;function A(M){return Z(M)==="Int8Array"}U.isInt8Array=A;function y(M){return Z(M)==="Int16Array"}U.isInt16Array=y;function g(M){return Z(M)==="Int32Array"}U.isInt32Array=g;function d(M){return Z(M)==="Float32Array"}U.isFloat32Array=d;function k(M){return Z(M)==="Float64Array"}U.isFloat64Array=k;function s(M){return Z(M)==="BigInt64Array"}U.isBigInt64Array=s;function q0(M){return Z(M)==="BigUint64Array"}U.isBigUint64Array=q0;function S(M){return q(M)==="[object Map]"}S.working=typeof Map!=="undefined"&&S(new Map);function h(M){if(typeof Map==="undefined")return!1;return S.working?S(M):M instanceof Map}U.isMap=h;function F(M){return q(M)==="[object Set]"}F.working=typeof Set!=="undefined"&&F(new Set);function a(M){if(typeof Set==="undefined")return!1;return F.working?F(M):M instanceof Set}U.isSet=a;function U0(M){return q(M)==="[object WeakMap]"}U0.working=typeof WeakMap!=="undefined"&&U0(new WeakMap);function m(M){if(typeof WeakMap==="undefined")return!1;return U0.working?U0(M):M instanceof WeakMap}U.isWeakMap=m;function J0(M){return q(M)==="[object WeakSet]"}J0.working=typeof WeakSet!=="undefined"&&J0(new WeakSet);function $0(M){return J0(M)}U.isWeakSet=$0;function I0(M){return q(M)==="[object ArrayBuffer]"}I0.working=typeof ArrayBuffer!=="undefined"&&I0(new ArrayBuffer);function i(M){if(typeof ArrayBuffer==="undefined")return!1;return I0.working?I0(M):M instanceof ArrayBuffer}U.isArrayBuffer=i;function _(M){return q(M)==="[object DataView]"}_.working=typeof ArrayBuffer!=="undefined"&&typeof DataView!=="undefined"&&_(new DataView(new ArrayBuffer(1),0,1));function r(M){if(typeof DataView==="undefined")return!1;return _.working?_(M):M instanceof DataView}U.isDataView=r;var n=typeof SharedArrayBuffer!=="undefined"?SharedArrayBuffer:void 0;function Z0(M){return q(M)==="[object SharedArrayBuffer]"}function p(M){if(typeof n==="undefined")return!1;if(typeof Z0.working==="undefined")Z0.working=Z0(new n);return Z0.working?Z0(M):M instanceof n}U.isSharedArrayBuffer=p;function P(M){return q(M)==="[object AsyncFunction]"}U.isAsyncFunction=P;function N(M){return q(M)==="[object Map Iterator]"}U.isMapIterator=N;function c(M){return q(M)==="[object Set Iterator]"}U.isSetIterator=c;function f(M){return q(M)==="[object Generator]"}U.isGeneratorObject=f;function v(M){return q(M)==="[object WebAssembly.Module]"}U.isWebAssemblyCompiledModule=v;function b(M){return C(M,z)}U.isNumberObject=b;function e(M){return C(M,R)}U.isStringObject=e;function V(M){return C(M,W)}U.isBooleanObject=V;function t(M){return w&&C(M,E)}U.isBigIntObject=t;function T(M){return Q&&C(M,D)}U.isSymbolObject=T;function K(M){return b(M)||e(M)||V(M)||t(M)||T(M)}U.isBoxedPrimitive=K;function B(M){return typeof Uint8Array!=="undefined"&&(i(M)||p(M))}U.isAnyArrayBuffer=B,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(M){Object.defineProperty(U,M,{enumerable:!1,value:function(){throw new Error(M+" is not supported in userland")}})})}(x6),x6}var _8,nY;function pw(){if(nY)return _8;return nY=1,_8=function U($){return $&&typeof $==="object"&&typeof $.copy==="function"&&typeof $.fill==="function"&&typeof $.readUInt8==="function"},_8}var oY;function VQ(){if(oY)return g6;return oY=1,function(U){var $=Object.getOwnPropertyDescriptors||function _(r){var n=Object.keys(r),Z0={};for(var p=0;p=p)return c;switch(c){case"%s":return String(Z0[n++]);case"%d":return Number(Z0[n++]);case"%j":try{return JSON.stringify(Z0[n++])}catch(f){return"[Circular]"}default:return c}});for(var N=Z0[n];n=3)n.depth=arguments[2];if(arguments.length>=4)n.colors=arguments[3];if(X(r))n.showHidden=r;else if(r)U._extend(n,r);if(g(n.showHidden))n.showHidden=!1;if(g(n.depth))n.depth=2;if(g(n.colors))n.colors=!1;if(g(n.customInspect))n.customInspect=!0;if(n.colors)n.stylize=Q;return R(n,_,n.depth)}U.inspect=w,w.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},w.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function Q(_,r){var n=w.styles[r];if(n)return"\x1B["+w.colors[n][0]+"m"+_+"\x1B["+w.colors[n][1]+"m";else return _}function q(_,r){return _}function z(_){var r={};return _.forEach(function(n,Z0){r[n]=!0}),r}function R(_,r,n){if(_.customInspect&&r&&S(r.inspect)&&r.inspect!==U.inspect&&!(r.constructor&&r.constructor.prototype===r)){var Z0=r.inspect(n,_);if(!A(Z0))Z0=R(_,Z0,n);return Z0}var p=W(_,r);if(p)return p;var P=Object.keys(r),N=z(P);if(_.showHidden)P=Object.getOwnPropertyNames(r);if(q0(r)&&(P.indexOf("message")>=0||P.indexOf("description")>=0))return E(r);if(P.length===0){if(S(r)){var c=r.name?": "+r.name:"";return _.stylize("[Function"+c+"]","special")}if(d(r))return _.stylize(RegExp.prototype.toString.call(r),"regexp");if(s(r))return _.stylize(Date.prototype.toString.call(r),"date");if(q0(r))return E(r)}var f="",v=!1,b=["{","}"];if(O(r))v=!0,b=["[","]"];if(S(r)){var e=r.name?": "+r.name:"";f=" [Function"+e+"]"}if(d(r))f=" "+RegExp.prototype.toString.call(r);if(s(r))f=" "+Date.prototype.toUTCString.call(r);if(q0(r))f=" "+E(r);if(P.length===0&&(!v||r.length==0))return b[0]+f+b[1];if(n<0)if(d(r))return _.stylize(RegExp.prototype.toString.call(r),"regexp");else return _.stylize("[Object]","special");_.seen.push(r);var V;if(v)V=D(_,r,n,N,P);else V=P.map(function(t){return C(_,r,n,N,t,v)});return _.seen.pop(),H(V,f,b)}function W(_,r){if(g(r))return _.stylize("undefined","undefined");if(A(r)){var n="'"+JSON.stringify(r).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return _.stylize(n,"string")}if(I(r))return _.stylize(""+r,"number");if(X(r))return _.stylize(""+r,"boolean");if(j(r))return _.stylize("null","null")}function E(_){return"["+Error.prototype.toString.call(_)+"]"}function D(_,r,n,Z0,p){var P=[];for(var N=0,c=r.length;N{var F7=Object.create;var{getPrototypeOf:N7,defineProperty:F8,getOwnPropertyNames:R7}=Object;var D7=Object.prototype.hasOwnProperty;function A7($){return this[$]}var P7,T7,C7=($,U,Y)=>{var Z=$!=null&&typeof $==="object";if(Z){var J=U?P7??=new WeakMap:T7??=new WeakMap,G=J.get($);if(G)return G}Y=$!=null?F7(N7($)):{};let X=U||!$||!$.__esModule?F8(Y,"default",{value:$,enumerable:!0}):Y;for(let Q of R7($))if(!D7.call(X,Q))F8(X,Q,{get:A7.bind($,Q),enumerable:!0});if(Z)J.set($,X);return X};var O7=($,U)=>()=>(U||$((U={exports:{}}).exports,U),U.exports);var k7=($)=>$;function E7($,U){this[$]=k7.bind(null,U)}var S7=($,U)=>{for(var Y in U)F8($,Y,{get:U[Y],enumerable:!0,configurable:!0,set:E7.bind(U,Y)})};var iU=O7((hB,pU)=>{var A0=pU.exports={},i0,r0;function S8(){throw Error("setTimeout has not been defined")}function v8(){throw Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")i0=setTimeout;else i0=S8}catch($){i0=S8}try{if(typeof clearTimeout==="function")r0=clearTimeout;else r0=v8}catch($){r0=v8}})();function mU($){if(i0===setTimeout)return setTimeout($,0);if((i0===S8||!i0)&&setTimeout)return i0=setTimeout,setTimeout($,0);try{return i0($,0)}catch(U){try{return i0.call(null,$,0)}catch(Y){return i0.call(this,$,0)}}}function Xq($){if(r0===clearTimeout)return clearTimeout($);if((r0===v8||!r0)&&clearTimeout)return r0=clearTimeout,clearTimeout($);try{return r0($)}catch(U){try{return r0.call(null,$)}catch(Y){return r0.call(this,$)}}}var X2=[],g2=!1,T2,O1=-1;function Vq(){if(!g2||!T2)return;if(g2=!1,T2.length)X2=T2.concat(X2);else O1=-1;if(X2.length)lU()}function lU(){if(g2)return;var $=mU(Vq);g2=!0;var U=X2.length;while(U){T2=X2,X2=[];while(++O11)for(var Y=1;Y"u")DU.global=globalThis;var a0=[],u0=[],N8="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(A2=0,AU=N8.length;A20)throw Error("Invalid string. Length must be a multiple of 4");var Y=$.indexOf("=");if(Y===-1)Y=U;var Z=Y===U?0:4-Y%4;return[Y,Z]}function _7($,U){return($+U)*3/4-U}function y7($){var U,Y=v7($),Z=Y[0],J=Y[1],G=new Uint8Array(_7(Z,J)),X=0,Q=J>0?Z-4:Z,B;for(B=0;B>16&255,G[X++]=U>>8&255,G[X++]=U&255;if(J===2)U=u0[$.charCodeAt(B)]<<2|u0[$.charCodeAt(B+1)]>>4,G[X++]=U&255;if(J===1)U=u0[$.charCodeAt(B)]<<10|u0[$.charCodeAt(B+1)]<<4|u0[$.charCodeAt(B+2)]>>2,G[X++]=U>>8&255,G[X++]=U&255;return G}function b7($){return a0[$>>18&63]+a0[$>>12&63]+a0[$>>6&63]+a0[$&63]}function g7($,U,Y){var Z,J=[];for(var G=U;GQ?Q:X+G));if(Z===1)U=$[Y-1],J.push(a0[U>>2]+a0[U<<4&63]+"==");else if(Z===2)U=($[Y-2]<<8)+$[Y-1],J.push(a0[U>>10]+a0[U>>4&63]+a0[U<<2&63]+"=");return J.join("")}function T1($,U,Y,Z,J){var G,X,Q=J*8-Z-1,B=(1<>1,z=-7,W=Y?J-1:0,k=Y?-1:1,D=$[U+W];W+=k,G=D&(1<<-z)-1,D>>=-z,z+=Q;for(;z>0;G=G*256+$[U+W],W+=k,z-=8);X=G&(1<<-z)-1,G>>=-z,z+=Z;for(;z>0;X=X*256+$[U+W],W+=k,z-=8);if(G===0)G=1-F;else if(G===B)return X?NaN:(D?-1:1)*(1/0);else X=X+Math.pow(2,Z),G=G-F;return(D?-1:1)*X*Math.pow(2,G-Z)}function EU($,U,Y,Z,J,G){var X,Q,B,F=G*8-J-1,z=(1<>1,k=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=Z?0:G-1,C=Z?1:-1,H=U<0||U===0&&1/U<0?1:0;if(U=Math.abs(U),isNaN(U)||U===1/0)Q=isNaN(U)?1:0,X=z;else{if(X=Math.floor(Math.log(U)/Math.LN2),U*(B=Math.pow(2,-X))<1)X--,B*=2;if(X+W>=1)U+=k/B;else U+=k*Math.pow(2,1-W);if(U*B>=2)X++,B/=2;if(X+W>=z)Q=0,X=z;else if(X+W>=1)Q=(U*B-1)*Math.pow(2,J),X=X+W;else Q=U*Math.pow(2,W-1)*Math.pow(2,J),X=0}for(;J>=8;$[Y+D]=Q&255,D+=C,Q/=256,J-=8);X=X<0;$[Y+D]=X&255,D+=C,X/=256,F-=8);$[Y+D-C]|=H*128}var TU=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null,x7=50,R8=2147483647;var{btoa:EB,atob:SB,File:vB,Blob:_B}=globalThis;function q2($){if($>R8)throw RangeError('The value "'+$+'" is invalid for option "size"');let U=new Uint8Array($);return Object.setPrototypeOf(U,G0.prototype),U}function C8($,U,Y){return class extends Y{constructor(){super();Object.defineProperty(this,"message",{value:U.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${$}]`,this.stack,delete this.name}get code(){return $}set code(Z){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:Z,writable:!0})}toString(){return`${this.name} [${$}]: ${this.message}`}}}var f7=C8("ERR_BUFFER_OUT_OF_BOUNDS",function($){if($)return`${$} is outside of buffer bounds`;return"Attempt to access memory outside buffer bounds"},RangeError),h7=C8("ERR_INVALID_ARG_TYPE",function($,U){return`The "${$}" argument must be of type number. Received type ${typeof U}`},TypeError),D8=C8("ERR_OUT_OF_RANGE",function($,U,Y){let Z=`The value of "${$}" is out of range.`,J=Y;if(Number.isInteger(Y)&&Math.abs(Y)>4294967296)J=kU(String(Y));else if(typeof Y==="bigint"){if(J=String(Y),Y>BigInt(2)**BigInt(32)||Y<-(BigInt(2)**BigInt(32)))J=kU(J);J+="n"}return Z+=` It must be ${U}. Received ${J}`,Z},RangeError);function G0($,U,Y){if(typeof $==="number"){if(typeof U==="string")throw TypeError('The "string" argument must be of type string. Received type number');return O8($)}return SU($,U,Y)}Object.defineProperty(G0.prototype,"parent",{enumerable:!0,get:function(){if(!G0.isBuffer(this))return;return this.buffer}});Object.defineProperty(G0.prototype,"offset",{enumerable:!0,get:function(){if(!G0.isBuffer(this))return;return this.byteOffset}});G0.poolSize=8192;function SU($,U,Y){if(typeof $==="string")return d7($,U);if(ArrayBuffer.isView($))return c7($);if($==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);if(p0($,ArrayBuffer)||$&&p0($.buffer,ArrayBuffer))return P8($,U,Y);if(typeof SharedArrayBuffer<"u"&&(p0($,SharedArrayBuffer)||$&&p0($.buffer,SharedArrayBuffer)))return P8($,U,Y);if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type number');let Z=$.valueOf&&$.valueOf();if(Z!=null&&Z!==$)return G0.from(Z,U,Y);let J=m7($);if(J)return J;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof $[Symbol.toPrimitive]==="function")return G0.from($[Symbol.toPrimitive]("string"),U,Y);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $)}G0.from=function($,U,Y){return SU($,U,Y)};Object.setPrototypeOf(G0.prototype,Uint8Array.prototype);Object.setPrototypeOf(G0,Uint8Array);function vU($){if(typeof $!=="number")throw TypeError('"size" argument must be of type number');else if($<0)throw RangeError('The value "'+$+'" is invalid for option "size"')}function u7($,U,Y){if(vU($),$<=0)return q2($);if(U!==void 0)return typeof Y==="string"?q2($).fill(U,Y):q2($).fill(U);return q2($)}G0.alloc=function($,U,Y){return u7($,U,Y)};function O8($){return vU($),q2($<0?0:k8($)|0)}G0.allocUnsafe=function($){return O8($)};G0.allocUnsafeSlow=function($){return O8($)};function d7($,U){if(typeof U!=="string"||U==="")U="utf8";if(!G0.isEncoding(U))throw TypeError("Unknown encoding: "+U);let Y=_U($,U)|0,Z=q2(Y),J=Z.write($,U);if(J!==Y)Z=Z.slice(0,J);return Z}function A8($){let U=$.length<0?0:k8($.length)|0,Y=q2(U);for(let Z=0;Z=R8)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+R8.toString(16)+" bytes");return $|0}G0.isBuffer=function($){return $!=null&&$._isBuffer===!0&&$!==G0.prototype};G0.compare=function($,U){if(p0($,Uint8Array))$=G0.from($,$.offset,$.byteLength);if(p0(U,Uint8Array))U=G0.from(U,U.offset,U.byteLength);if(!G0.isBuffer($)||!G0.isBuffer(U))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if($===U)return 0;let Y=$.length,Z=U.length;for(let J=0,G=Math.min(Y,Z);JZ.length){if(!G0.isBuffer(G))G=G0.from(G);G.copy(Z,J)}else Uint8Array.prototype.set.call(Z,G,J);else if(!G0.isBuffer(G))throw TypeError('"list" argument must be an Array of Buffers');else G.copy(Z,J);J+=G.length}return Z};function _U($,U){if(G0.isBuffer($))return $.length;if(ArrayBuffer.isView($)||p0($,ArrayBuffer))return $.byteLength;if(typeof $!=="string")throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof $);let Y=$.length,Z=arguments.length>2&&arguments[2]===!0;if(!Z&&Y===0)return 0;let J=!1;for(;;)switch(U){case"ascii":case"latin1":case"binary":return Y;case"utf8":case"utf-8":return T8($).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Y*2;case"hex":return Y>>>1;case"base64":return cU($).length;default:if(J)return Z?-1:T8($).length;U=(""+U).toLowerCase(),J=!0}}G0.byteLength=_U;function l7($,U,Y){let Z=!1;if(U===void 0||U<0)U=0;if(U>this.length)return"";if(Y===void 0||Y>this.length)Y=this.length;if(Y<=0)return"";if(Y>>>=0,U>>>=0,Y<=U)return"";if(!$)$="utf8";while(!0)switch($){case"hex":return $q(this,U,Y);case"utf8":case"utf-8":return bU(this,U,Y);case"ascii":return t7(this,U,Y);case"latin1":case"binary":return e7(this,U,Y);case"base64":return n7(this,U,Y);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Uq(this,U,Y);default:if(Z)throw TypeError("Unknown encoding: "+$);$=($+"").toLowerCase(),Z=!0}}G0.prototype._isBuffer=!0;function P2($,U,Y){let Z=$[U];$[U]=$[Y],$[Y]=Z}G0.prototype.swap16=function(){let $=this.length;if($%2!==0)throw RangeError("Buffer size must be a multiple of 16-bits");for(let U=0;U<$;U+=2)P2(this,U,U+1);return this};G0.prototype.swap32=function(){let $=this.length;if($%4!==0)throw RangeError("Buffer size must be a multiple of 32-bits");for(let U=0;U<$;U+=4)P2(this,U,U+3),P2(this,U+1,U+2);return this};G0.prototype.swap64=function(){let $=this.length;if($%8!==0)throw RangeError("Buffer size must be a multiple of 64-bits");for(let U=0;U<$;U+=8)P2(this,U,U+7),P2(this,U+1,U+6),P2(this,U+2,U+5),P2(this,U+3,U+4);return this};G0.prototype.toString=function(){let $=this.length;if($===0)return"";if(arguments.length===0)return bU(this,0,$);return l7.apply(this,arguments)};G0.prototype.toLocaleString=G0.prototype.toString;G0.prototype.equals=function($){if(!G0.isBuffer($))throw TypeError("Argument must be a Buffer");if(this===$)return!0;return G0.compare(this,$)===0};G0.prototype.inspect=function(){let $="",U=x7;if($=this.toString("hex",0,U).replace(/(.{2})/g,"$1 ").trim(),this.length>U)$+=" ... ";return""};if(TU)G0.prototype[TU]=G0.prototype.inspect;G0.prototype.compare=function($,U,Y,Z,J){if(p0($,Uint8Array))$=G0.from($,$.offset,$.byteLength);if(!G0.isBuffer($))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof $);if(U===void 0)U=0;if(Y===void 0)Y=$?$.length:0;if(Z===void 0)Z=0;if(J===void 0)J=this.length;if(U<0||Y>$.length||Z<0||J>this.length)throw RangeError("out of range index");if(Z>=J&&U>=Y)return 0;if(Z>=J)return-1;if(U>=Y)return 1;if(U>>>=0,Y>>>=0,Z>>>=0,J>>>=0,this===$)return 0;let G=J-Z,X=Y-U,Q=Math.min(G,X),B=this.slice(Z,J),F=$.slice(U,Y);for(let z=0;z2147483647)Y=2147483647;else if(Y<-2147483648)Y=-2147483648;if(Y=+Y,Number.isNaN(Y))Y=J?0:$.length-1;if(Y<0)Y=$.length+Y;if(Y>=$.length)if(J)return-1;else Y=$.length-1;else if(Y<0)if(J)Y=0;else return-1;if(typeof U==="string")U=G0.from(U,Z);if(G0.isBuffer(U)){if(U.length===0)return-1;return CU($,U,Y,Z,J)}else if(typeof U==="number"){if(U=U&255,typeof Uint8Array.prototype.indexOf==="function")if(J)return Uint8Array.prototype.indexOf.call($,U,Y);else return Uint8Array.prototype.lastIndexOf.call($,U,Y);return CU($,[U],Y,Z,J)}throw TypeError("val must be string, number or Buffer")}function CU($,U,Y,Z,J){let G=1,X=$.length,Q=U.length;if(Z!==void 0){if(Z=String(Z).toLowerCase(),Z==="ucs2"||Z==="ucs-2"||Z==="utf16le"||Z==="utf-16le"){if($.length<2||U.length<2)return-1;G=2,X/=2,Q/=2,Y/=2}}function B(z,W){if(G===1)return z[W];else return z.readUInt16BE(W*G)}let F;if(J){let z=-1;for(F=Y;FX)Y=X-Q;for(F=Y;F>=0;F--){let z=!0;for(let W=0;WJ)Z=J;let G=U.length;if(Z>G/2)Z=G/2;let X;for(X=0;X>>0,isFinite(Y)){if(Y=Y>>>0,Z===void 0)Z="utf8"}else Z=Y,Y=void 0;else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let J=this.length-U;if(Y===void 0||Y>J)Y=J;if($.length>0&&(Y<0||U<0)||U>this.length)throw RangeError("Attempt to write outside buffer bounds");if(!Z)Z="utf8";let G=!1;for(;;)switch(Z){case"hex":return a7(this,$,U,Y);case"utf8":case"utf-8":return p7(this,$,U,Y);case"ascii":case"latin1":case"binary":return i7(this,$,U,Y);case"base64":return r7(this,$,U,Y);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s7(this,$,U,Y);default:if(G)throw TypeError("Unknown encoding: "+Z);Z=(""+Z).toLowerCase(),G=!0}};G0.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function n7($,U,Y){if(U===0&&Y===$.length)return PU($);else return PU($.slice(U,Y))}function bU($,U,Y){Y=Math.min($.length,Y);let Z=[],J=U;while(J239?4:G>223?3:G>191?2:1;if(J+Q<=Y){let B,F,z,W;switch(Q){case 1:if(G<128)X=G;break;case 2:if(B=$[J+1],(B&192)===128){if(W=(G&31)<<6|B&63,W>127)X=W}break;case 3:if(B=$[J+1],F=$[J+2],(B&192)===128&&(F&192)===128){if(W=(G&15)<<12|(B&63)<<6|F&63,W>2047&&(W<55296||W>57343))X=W}break;case 4:if(B=$[J+1],F=$[J+2],z=$[J+3],(B&192)===128&&(F&192)===128&&(z&192)===128){if(W=(G&15)<<18|(B&63)<<12|(F&63)<<6|z&63,W>65535&&W<1114112)X=W}}}if(X===null)X=65533,Q=1;else if(X>65535)X-=65536,Z.push(X>>>10&1023|55296),X=56320|X&1023;Z.push(X),J+=Q}return o7(Z)}var OU=4096;function o7($){let U=$.length;if(U<=OU)return String.fromCharCode.apply(String,$);let Y="",Z=0;while(ZZ)Y=Z;let J="";for(let G=U;GY)$=Y;if(U<0){if(U+=Y,U<0)U=0}else if(U>Y)U=Y;if(U<$)U=$;let Z=this.subarray($,U);return Object.setPrototypeOf(Z,G0.prototype),Z};function E0($,U,Y){if($%1!==0||$<0)throw RangeError("offset is not uint");if($+U>Y)throw RangeError("Trying to access beyond buffer length")}G0.prototype.readUintLE=G0.prototype.readUIntLE=function($,U,Y){if($=$>>>0,U=U>>>0,!Y)E0($,U,this.length);let Z=this[$],J=1,G=0;while(++G>>0,U=U>>>0,!Y)E0($,U,this.length);let Z=this[$+--U],J=1;while(U>0&&(J*=256))Z+=this[$+--U]*J;return Z};G0.prototype.readUint8=G0.prototype.readUInt8=function($,U){if($=$>>>0,!U)E0($,1,this.length);return this[$]};G0.prototype.readUint16LE=G0.prototype.readUInt16LE=function($,U){if($=$>>>0,!U)E0($,2,this.length);return this[$]|this[$+1]<<8};G0.prototype.readUint16BE=G0.prototype.readUInt16BE=function($,U){if($=$>>>0,!U)E0($,2,this.length);return this[$]<<8|this[$+1]};G0.prototype.readUint32LE=G0.prototype.readUInt32LE=function($,U){if($=$>>>0,!U)E0($,4,this.length);return(this[$]|this[$+1]<<8|this[$+2]<<16)+this[$+3]*16777216};G0.prototype.readUint32BE=G0.prototype.readUInt32BE=function($,U){if($=$>>>0,!U)E0($,4,this.length);return this[$]*16777216+(this[$+1]<<16|this[$+2]<<8|this[$+3])};G0.prototype.readBigUInt64LE=z2(function($){$=$>>>0,b2($,"offset");let U=this[$],Y=this[$+7];if(U===void 0||Y===void 0)$1($,this.length-8);let Z=U+this[++$]*256+this[++$]*65536+this[++$]*16777216,J=this[++$]+this[++$]*256+this[++$]*65536+Y*16777216;return BigInt(Z)+(BigInt(J)<>>0,b2($,"offset");let U=this[$],Y=this[$+7];if(U===void 0||Y===void 0)$1($,this.length-8);let Z=U*16777216+this[++$]*65536+this[++$]*256+this[++$],J=this[++$]*16777216+this[++$]*65536+this[++$]*256+Y;return(BigInt(Z)<>>0,U=U>>>0,!Y)E0($,U,this.length);let Z=this[$],J=1,G=0;while(++G=J)Z-=Math.pow(2,8*U);return Z};G0.prototype.readIntBE=function($,U,Y){if($=$>>>0,U=U>>>0,!Y)E0($,U,this.length);let Z=U,J=1,G=this[$+--Z];while(Z>0&&(J*=256))G+=this[$+--Z]*J;if(J*=128,G>=J)G-=Math.pow(2,8*U);return G};G0.prototype.readInt8=function($,U){if($=$>>>0,!U)E0($,1,this.length);if(!(this[$]&128))return this[$];return(255-this[$]+1)*-1};G0.prototype.readInt16LE=function($,U){if($=$>>>0,!U)E0($,2,this.length);let Y=this[$]|this[$+1]<<8;return Y&32768?Y|4294901760:Y};G0.prototype.readInt16BE=function($,U){if($=$>>>0,!U)E0($,2,this.length);let Y=this[$+1]|this[$]<<8;return Y&32768?Y|4294901760:Y};G0.prototype.readInt32LE=function($,U){if($=$>>>0,!U)E0($,4,this.length);return this[$]|this[$+1]<<8|this[$+2]<<16|this[$+3]<<24};G0.prototype.readInt32BE=function($,U){if($=$>>>0,!U)E0($,4,this.length);return this[$]<<24|this[$+1]<<16|this[$+2]<<8|this[$+3]};G0.prototype.readBigInt64LE=z2(function($){$=$>>>0,b2($,"offset");let U=this[$],Y=this[$+7];if(U===void 0||Y===void 0)$1($,this.length-8);let Z=this[$+4]+this[$+5]*256+this[$+6]*65536+(Y<<24);return(BigInt(Z)<>>0,b2($,"offset");let U=this[$],Y=this[$+7];if(U===void 0||Y===void 0)$1($,this.length-8);let Z=(U<<24)+this[++$]*65536+this[++$]*256+this[++$];return(BigInt(Z)<>>0,!U)E0($,4,this.length);return T1(this,$,!0,23,4)};G0.prototype.readFloatBE=function($,U){if($=$>>>0,!U)E0($,4,this.length);return T1(this,$,!1,23,4)};G0.prototype.readDoubleLE=function($,U){if($=$>>>0,!U)E0($,8,this.length);return T1(this,$,!0,52,8)};G0.prototype.readDoubleBE=function($,U){if($=$>>>0,!U)E0($,8,this.length);return T1(this,$,!1,52,8)};function b0($,U,Y,Z,J,G){if(!G0.isBuffer($))throw TypeError('"buffer" argument must be a Buffer instance');if(U>J||U$.length)throw RangeError("Index out of range")}G0.prototype.writeUintLE=G0.prototype.writeUIntLE=function($,U,Y,Z){if($=+$,U=U>>>0,Y=Y>>>0,!Z){let X=Math.pow(2,8*Y)-1;b0(this,$,U,Y,X,0)}let J=1,G=0;this[U]=$&255;while(++G>>0,Y=Y>>>0,!Z){let X=Math.pow(2,8*Y)-1;b0(this,$,U,Y,X,0)}let J=Y-1,G=1;this[U+J]=$&255;while(--J>=0&&(G*=256))this[U+J]=$/G&255;return U+Y};G0.prototype.writeUint8=G0.prototype.writeUInt8=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,1,255,0);return this[U]=$&255,U+1};G0.prototype.writeUint16LE=G0.prototype.writeUInt16LE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,2,65535,0);return this[U]=$&255,this[U+1]=$>>>8,U+2};G0.prototype.writeUint16BE=G0.prototype.writeUInt16BE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,2,65535,0);return this[U]=$>>>8,this[U+1]=$&255,U+2};G0.prototype.writeUint32LE=G0.prototype.writeUInt32LE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,4,4294967295,0);return this[U+3]=$>>>24,this[U+2]=$>>>16,this[U+1]=$>>>8,this[U]=$&255,U+4};G0.prototype.writeUint32BE=G0.prototype.writeUInt32BE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,4,4294967295,0);return this[U]=$>>>24,this[U+1]=$>>>16,this[U+2]=$>>>8,this[U+3]=$&255,U+4};function gU($,U,Y,Z,J){dU(U,Z,J,$,Y,7);let G=Number(U&BigInt(4294967295));$[Y++]=G,G=G>>8,$[Y++]=G,G=G>>8,$[Y++]=G,G=G>>8,$[Y++]=G;let X=Number(U>>BigInt(32)&BigInt(4294967295));return $[Y++]=X,X=X>>8,$[Y++]=X,X=X>>8,$[Y++]=X,X=X>>8,$[Y++]=X,Y}function xU($,U,Y,Z,J){dU(U,Z,J,$,Y,7);let G=Number(U&BigInt(4294967295));$[Y+7]=G,G=G>>8,$[Y+6]=G,G=G>>8,$[Y+5]=G,G=G>>8,$[Y+4]=G;let X=Number(U>>BigInt(32)&BigInt(4294967295));return $[Y+3]=X,X=X>>8,$[Y+2]=X,X=X>>8,$[Y+1]=X,X=X>>8,$[Y]=X,Y+8}G0.prototype.writeBigUInt64LE=z2(function($,U=0){return gU(this,$,U,BigInt(0),BigInt("0xffffffffffffffff"))});G0.prototype.writeBigUInt64BE=z2(function($,U=0){return xU(this,$,U,BigInt(0),BigInt("0xffffffffffffffff"))});G0.prototype.writeIntLE=function($,U,Y,Z){if($=+$,U=U>>>0,!Z){let Q=Math.pow(2,8*Y-1);b0(this,$,U,Y,Q-1,-Q)}let J=0,G=1,X=0;this[U]=$&255;while(++J>0)-X&255}return U+Y};G0.prototype.writeIntBE=function($,U,Y,Z){if($=+$,U=U>>>0,!Z){let Q=Math.pow(2,8*Y-1);b0(this,$,U,Y,Q-1,-Q)}let J=Y-1,G=1,X=0;this[U+J]=$&255;while(--J>=0&&(G*=256)){if($<0&&X===0&&this[U+J+1]!==0)X=1;this[U+J]=($/G>>0)-X&255}return U+Y};G0.prototype.writeInt8=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,1,127,-128);if($<0)$=255+$+1;return this[U]=$&255,U+1};G0.prototype.writeInt16LE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,2,32767,-32768);return this[U]=$&255,this[U+1]=$>>>8,U+2};G0.prototype.writeInt16BE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,2,32767,-32768);return this[U]=$>>>8,this[U+1]=$&255,U+2};G0.prototype.writeInt32LE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,4,2147483647,-2147483648);return this[U]=$&255,this[U+1]=$>>>8,this[U+2]=$>>>16,this[U+3]=$>>>24,U+4};G0.prototype.writeInt32BE=function($,U,Y){if($=+$,U=U>>>0,!Y)b0(this,$,U,4,2147483647,-2147483648);if($<0)$=4294967295+$+1;return this[U]=$>>>24,this[U+1]=$>>>16,this[U+2]=$>>>8,this[U+3]=$&255,U+4};G0.prototype.writeBigInt64LE=z2(function($,U=0){return gU(this,$,U,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});G0.prototype.writeBigInt64BE=z2(function($,U=0){return xU(this,$,U,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function fU($,U,Y,Z,J,G){if(Y+Z>$.length)throw RangeError("Index out of range");if(Y<0)throw RangeError("Index out of range")}function hU($,U,Y,Z,J){if(U=+U,Y=Y>>>0,!J)fU($,U,Y,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return EU($,U,Y,Z,23,4),Y+4}G0.prototype.writeFloatLE=function($,U,Y){return hU(this,$,U,!0,Y)};G0.prototype.writeFloatBE=function($,U,Y){return hU(this,$,U,!1,Y)};function uU($,U,Y,Z,J){if(U=+U,Y=Y>>>0,!J)fU($,U,Y,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return EU($,U,Y,Z,52,8),Y+8}G0.prototype.writeDoubleLE=function($,U,Y){return uU(this,$,U,!0,Y)};G0.prototype.writeDoubleBE=function($,U,Y){return uU(this,$,U,!1,Y)};G0.prototype.copy=function($,U,Y,Z){if(!G0.isBuffer($))throw TypeError("argument should be a Buffer");if(!Y)Y=0;if(!Z&&Z!==0)Z=this.length;if(U>=$.length)U=$.length;if(!U)U=0;if(Z>0&&Z=this.length)throw RangeError("Index out of range");if(Z<0)throw RangeError("sourceEnd out of bounds");if(Z>this.length)Z=this.length;if($.length-U>>0,Y=Y===void 0?this.length:Y>>>0,!$)$=0;let J;if(typeof $==="number")for(J=U;J=Z+4;Y-=3)U=`_${$.slice(Y-3,Y)}${U}`;return`${$.slice(0,Y)}${U}`}function Yq($,U,Y){if(b2(U,"offset"),$[U]===void 0||$[U+Y]===void 0)$1(U,$.length-(Y+1))}function dU($,U,Y,Z,J,G){if($>Y||$3)if(U===0||U===BigInt(0))Q=`>= 0${X} and < 2${X} ** ${(G+1)*8}${X}`;else Q=`>= -(2${X} ** ${(G+1)*8-1}${X}) and < 2 ** ${(G+1)*8-1}${X}`;else Q=`>= ${U}${X} and <= ${Y}${X}`;throw new D8("value",Q,$)}Yq(Z,J,G)}function b2($,U){if(typeof $!=="number")throw new h7(U,"number",$)}function $1($,U,Y){if(Math.floor($)!==$)throw b2($,Y),new D8(Y||"offset","an integer",$);if(U<0)throw new f7;throw new D8(Y||"offset",`>= ${Y?1:0} and <= ${U}`,$)}var Zq=/[^+/0-9A-Za-z-_]/g;function Qq($){if($=$.split("=")[0],$=$.trim().replace(Zq,""),$.length<2)return"";while($.length%4!==0)$=$+"=";return $}function T8($,U){U=U||1/0;let Y,Z=$.length,J=null,G=[];for(let X=0;X55295&&Y<57344){if(!J){if(Y>56319){if((U-=3)>-1)G.push(239,191,189);continue}else if(X+1===Z){if((U-=3)>-1)G.push(239,191,189);continue}J=Y;continue}if(Y<56320){if((U-=3)>-1)G.push(239,191,189);J=Y;continue}Y=(J-55296<<10|Y-56320)+65536}else if(J){if((U-=3)>-1)G.push(239,191,189)}if(J=null,Y<128){if((U-=1)<0)break;G.push(Y)}else if(Y<2048){if((U-=2)<0)break;G.push(Y>>6|192,Y&63|128)}else if(Y<65536){if((U-=3)<0)break;G.push(Y>>12|224,Y>>6&63|128,Y&63|128)}else if(Y<1114112){if((U-=4)<0)break;G.push(Y>>18|240,Y>>12&63|128,Y>>6&63|128,Y&63|128)}else throw Error("Invalid code point")}return G}function Jq($){let U=[];for(let Y=0;Y<$.length;++Y)U.push($.charCodeAt(Y)&255);return U}function Gq($,U){let Y,Z,J,G=[];for(let X=0;X<$.length;++X){if((U-=2)<0)break;Y=$.charCodeAt(X),Z=Y>>8,J=Y%256,G.push(J),G.push(Z)}return G}function cU($){return y7(Qq($))}function C1($,U,Y,Z){let J;for(J=0;J=U.length||J>=$.length)break;U[J+Y]=$[J]}return J}function p0($,U){return $ instanceof U||$!=null&&$.constructor!=null&&$.constructor.name!=null&&$.constructor.name===U.name}var Kq=function(){let $=Array(256);for(let U=0;U<16;++U){let Y=U*16;for(let Z=0;Z<16;++Z)$[Y+Z]="0123456789abcdef"[U]+"0123456789abcdef"[Z]}return $}();function z2($){return typeof BigInt>"u"?qq:$}function qq(){throw Error("BigInt not supported")}function E8($){return()=>{throw Error($+" is not implemented for node:buffer browser polyfill")}}var yB=E8("resolveObjectURL"),bB=E8("isUtf8");var gB=E8("transcode");var OB=C7(iU(),1);var FU={};S7(FU,{unsignedDecimalNumber:()=>W1,universalMeasureValue:()=>H1,uniqueUuid:()=>tQ,uniqueNumericIdCreator:()=>N1,uniqueId:()=>R1,uCharHexNumber:()=>D9,twipsMeasureValue:()=>T0,standardizeData:()=>mJ,signedTwipsMeasureValue:()=>e0,signedHpsMeasureValue:()=>LX,shortHexNumber:()=>DQ,sectionPageSizeDefaults:()=>h1,sectionMarginDefaults:()=>F2,positiveUniversalMeasureValue:()=>r9,pointMeasureValue:()=>CQ,percentageValue:()=>PQ,patchDocument:()=>AB,patchDetector:()=>TB,measurementOrPercentValue:()=>s9,longHexNumber:()=>BX,hpsMeasureValue:()=>AQ,hexColorValue:()=>S2,hashedId:()=>A9,encodeUtf8:()=>X1,eighthPointMeasureValue:()=>TQ,docPropertiesUniqueNumericIdGen:()=>nQ,decimalNumber:()=>S0,dateTimeValue:()=>OQ,createWrapTopAndBottom:()=>bJ,createWrapTight:()=>yJ,createWrapSquare:()=>_J,createWrapNone:()=>C9,createVerticalPosition:()=>JJ,createVerticalAlign:()=>f$,createUnderline:()=>mQ,createTransformation:()=>B$,createTableWidthElement:()=>M1,createTableRowHeight:()=>EK,createTableLook:()=>CK,createTableLayout:()=>PK,createTableFloatProperties:()=>AK,createTabStopItem:()=>PG,createTabStop:()=>TG,createStringElement:()=>u2,createSpacing:()=>AG,createSimplePos:()=>UJ,createShading:()=>j1,createSectionType:()=>nK,createRunFonts:()=>g1,createParagraphStyle:()=>K1,createPageSize:()=>rK,createPageNumberType:()=>iK,createPageMargin:()=>pK,createOutlineLevel:()=>yG,createMathSuperScriptProperties:()=>iG,createMathSuperScriptElement:()=>n2,createMathSubSuperScriptProperties:()=>oG,createMathSubScriptProperties:()=>sG,createMathSubScriptElement:()=>s2,createMathPreSubSuperScriptProperties:()=>eG,createMathNAryProperties:()=>T$,createMathLimitLocation:()=>cG,createMathBase:()=>y0,createMathAccentCharacter:()=>dG,createLineNumberType:()=>aK,createIndent:()=>EQ,createHorizontalPosition:()=>QJ,createHeaderFooterReference:()=>f1,createFrameProperties:()=>xG,createEmphasisMark:()=>Y$,createDotEmphasisMark:()=>HX,createDocumentGrid:()=>lK,createColumns:()=>mK,createBorderElement:()=>N0,createBodyProperties:()=>KJ,createAlignment:()=>n9,convertToXmlComponent:()=>U8,convertMillimetersToTwip:()=>bX,convertInchesToTwip:()=>d0,concreteNumUniqueNumericIdGen:()=>sQ,bookmarkUniqueNumericIdGen:()=>oQ,abstractNumUniqueNumericIdGen:()=>rQ,YearShort:()=>qG,YearLong:()=>BG,XmlComponent:()=>o,XmlAttributeComponent:()=>I0,WpsShapeRun:()=>aJ,WpgGroupRun:()=>pJ,WidthType:()=>l1,WORKAROUND4:()=>HV,WORKAROUND3:()=>VX,WORKAROUND2:()=>lV,VerticalPositionRelativeFrom:()=>$J,VerticalPositionAlign:()=>IX,VerticalMergeType:()=>d$,VerticalMergeRevisionType:()=>NV,VerticalMerge:()=>a1,VerticalAnchor:()=>GJ,VerticalAlignTable:()=>HK,VerticalAlignSection:()=>jK,VerticalAlign:()=>RV,UnderlineType:()=>Z$,ThematicBreak:()=>t9,Textbox:()=>G7,TextWrappingType:()=>G1,TextWrappingSide:()=>vJ,TextRun:()=>p2,TextEffect:()=>NX,TextDirection:()=>PV,TableRowPropertiesChange:()=>l$,TableRowProperties:()=>M8,TableRow:()=>SK,TableProperties:()=>L8,TableOfContents:()=>e5,TableLayoutType:()=>SV,TableCellBorders:()=>h$,TableCell:()=>V8,TableBorders:()=>B8,TableAnchorType:()=>TV,Table:()=>kK,TabStopType:()=>O9,TabStopPosition:()=>ZV,Tab:()=>w$,TDirection:()=>c$,SymbolRun:()=>G$,Styles:()=>B1,StyleLevel:()=>$7,StyleForParagraph:()=>y2,StyleForCharacter:()=>D2,StringValueElement:()=>Y2,StringEnumValueElement:()=>kQ,StringContainer:()=>L2,SpaceType:()=>g0,SoftHyphen:()=>JG,SimpleMailMergeField:()=>nJ,SimpleField:()=>J8,ShadingType:()=>WX,SequentialIdentifier:()=>rJ,Separator:()=>IG,SectionType:()=>dV,SectionPropertiesChange:()=>i$,SectionProperties:()=>I8,RunPropertiesDefaults:()=>XU,RunPropertiesChange:()=>J$,RunProperties:()=>J2,Run:()=>C0,RelativeVerticalPosition:()=>OV,RelativeHorizontalPosition:()=>CV,PrettifyType:()=>X7,PositionalTabRelativeTo:()=>eX,PositionalTabLeader:()=>$V,PositionalTabAlignment:()=>tX,PositionalTab:()=>FG,PatchType:()=>y9,ParagraphRunProperties:()=>Q$,ParagraphPropertiesDefaults:()=>qU,ParagraphPropertiesChange:()=>D$,ParagraphProperties:()=>Z2,Paragraph:()=>h0,PageTextDirectionType:()=>uV,PageTextDirection:()=>p$,PageReference:()=>gG,PageOrientation:()=>i1,PageNumberSeparator:()=>hV,PageNumberElement:()=>WG,PageNumber:()=>N2,PageBreakBefore:()=>H$,PageBreak:()=>RG,PageBorders:()=>a$,PageBorderZOrder:()=>fV,PageBorderOffsetFrom:()=>xV,PageBorderDisplay:()=>gV,Packer:()=>qB,OverlapType:()=>kV,OnOffElement:()=>X0,Numbering:()=>JU,NumberedItemReferenceFormat:()=>vG,NumberedItemReference:()=>_G,NumberValueElement:()=>k2,NumberProperties:()=>V1,NumberFormat:()=>wX,NoBreakHyphen:()=>QG,NextAttributeComponent:()=>n1,MonthShort:()=>KG,MonthLong:()=>VG,Media:()=>w8,MathSuperScript:()=>rG,MathSum:()=>mG,MathSubSuperScript:()=>tG,MathSubScript:()=>nG,MathSquareBrackets:()=>GK,MathRun:()=>hG,MathRoundBrackets:()=>JK,MathRadicalProperties:()=>O$,MathRadical:()=>ZK,MathPreSubSuperScript:()=>$K,MathNumerator:()=>P$,MathLimitUpper:()=>aG,MathLimitLower:()=>pG,MathLimit:()=>q8,MathIntegral:()=>lG,MathFunctionProperties:()=>E$,MathFunctionName:()=>k$,MathFunction:()=>QK,MathFraction:()=>uG,MathDenominator:()=>A$,MathDegree:()=>C$,MathCurlyBrackets:()=>KK,MathAngledBrackets:()=>qK,Math:()=>IV,LineRuleType:()=>v2,LineNumberRestartFormat:()=>bV,LevelSuffix:()=>aV,LevelOverride:()=>QU,LevelFormat:()=>n0,LevelForOverride:()=>F5,LevelBase:()=>W8,Level:()=>ZU,LeaderType:()=>YV,LastRenderedPageBreak:()=>jG,InternalHyperlink:()=>j$,InsertedTextRun:()=>BK,InsertedTableRow:()=>v$,InsertedTableCell:()=>y$,InitializableXmlComponent:()=>Y8,ImportedXmlComponent:()=>p9,ImportedRootElementAttributes:()=>i9,ImageRun:()=>lJ,IgnoreIfEmptyXmlComponent:()=>Q2,HyperlinkType:()=>QV,HpsMeasureElement:()=>q1,HorizontalPositionRelativeFrom:()=>eQ,HorizontalPositionAlign:()=>MX,HighlightColor:()=>RX,HeightRule:()=>_V,HeadingLevel:()=>UV,HeaderWrapper:()=>YU,HeaderFooterType:()=>S9,HeaderFooterReferenceType:()=>E2,Header:()=>U7,GridSpan:()=>u$,FrameWrap:()=>MV,FrameAnchorType:()=>LV,FootnoteReferenceRun:()=>Z7,FootnoteReferenceElement:()=>MG,FootnoteReference:()=>IU,FooterWrapper:()=>$U,Footer:()=>Y7,FootNotes:()=>UU,FootNoteReferenceRunAttributes:()=>MU,FileChild:()=>r2,File:()=>o5,ExternalHyperlink:()=>K8,Endnotes:()=>e$,EndnoteReferenceRunAttributes:()=>wU,EndnoteReferenceRun:()=>Q7,EndnoteReference:()=>I$,EndnoteIdReference:()=>WU,EmptyElement:()=>k0,EmphasisMarkType:()=>U$,EMPTY_OBJECT:()=>tZ,DropCapType:()=>BV,Drawing:()=>D1,DocumentGridType:()=>yV,DocumentDefaults:()=>VU,DocumentBackgroundAttributes:()=>s$,DocumentBackground:()=>n$,DocumentAttributes:()=>o2,DocumentAttributeNamespaces:()=>p1,Document:()=>o5,DeletedTextRun:()=>wK,DeletedTableRow:()=>_$,DeletedTableCell:()=>b$,DayShort:()=>GG,DayLong:()=>XG,ContinuationSeparator:()=>wG,ConcreteNumbering:()=>s1,ConcreteHyperlink:()=>_2,Comments:()=>M$,CommentReference:()=>ZG,CommentRangeStart:()=>UG,CommentRangeEnd:()=>YG,Comment:()=>L$,ColumnBreak:()=>DG,Column:()=>tK,CheckBoxUtil:()=>HU,CheckBoxSymbolElement:()=>L1,CheckBox:()=>J7,CharacterSet:()=>GV,CellMergeAttributes:()=>g$,CellMerge:()=>x$,CarriageReturn:()=>HG,BuilderElement:()=>B0,BorderStyle:()=>Q8,Border:()=>o9,BookmarkStart:()=>F$,BookmarkEnd:()=>N$,Bookmark:()=>z$,Body:()=>r$,BaseXmlComponent:()=>m2,Attributes:()=>O0,AnnotationReference:()=>LG,AlignmentType:()=>m0,AbstractNumbering:()=>r1});var{defineProperty:Bq,defineProperties:Lq,getOwnPropertyDescriptors:Mq,getOwnPropertySymbols:m1}=Object,sZ=Object.prototype.hasOwnProperty,nZ=Object.prototype.propertyIsEnumerable,z9=($,U,Y)=>(U in $)?Bq($,U,{enumerable:!0,configurable:!0,writable:!0,value:Y}):$[U]=Y,W0=($,U)=>{for(var Y in U||(U={}))if(sZ.call(U,Y))z9($,Y,U[Y]);if(m1){for(var Y of m1(U))if(nZ.call(U,Y))z9($,Y,U[Y])}return $},R0=($,U)=>Lq($,Mq(U)),oZ=($,U)=>{var Y={};for(var Z in $)if(sZ.call($,Z)&&U.indexOf(Z)<0)Y[Z]=$[Z];if($!=null&&m1){for(var Z of m1($))if(U.indexOf(Z)<0&&nZ.call($,Z))Y[Z]=$[Z]}return Y},Y0=($,U,Y)=>z9($,typeof U!=="symbol"?U+"":U,Y),b9=($,U,Y)=>{return new Promise((Z,J)=>{var G=(B)=>{try{Q(Y.next(B))}catch(F){J(F)}},X=(B)=>{try{Q(Y.throw(B))}catch(F){J(F)}},Q=(B)=>B.done?Z(B.value):Promise.resolve(B.value).then(G,X);Q((Y=Y.apply($,U)).next())})};class m2{constructor($){Y0(this,"rootKey"),this.rootKey=$}}var tZ=Object.seal({});class o extends m2{constructor($){super($);Y0(this,"root"),this.root=[]}prepForXml($){var U;$.stack.push(this);let Y=this.root.map((Z)=>{if(Z instanceof m2)return Z.prepForXml($);return Z}).filter((Z)=>Z!==void 0);return $.stack.pop(),{[this.rootKey]:Y.length?Y.length===1&&((U=Y[0])==null?void 0:U._attr)?Y[0]:Y:tZ}}addChildElement($){return this.root.push($),this}}class Q2 extends o{constructor($,U){super($);Y0(this,"includeIfEmpty"),this.includeIfEmpty=U}prepForXml($){let U=super.prepForXml($);if(this.includeIfEmpty)return U;if(U&&(typeof U[this.rootKey]!=="object"||Object.keys(U[this.rootKey]).length))return U;return}}class I0 extends m2{constructor($){super("_attr");Y0(this,"xmlKeys"),this.root=$}prepForXml($){let U={};return Object.entries(this.root).forEach(([Y,Z])=>{if(Z!==void 0){let J=this.xmlKeys&&this.xmlKeys[Y]||Y;U[J]=Z}}),{_attr:U}}}class n1 extends m2{constructor($){super("_attr");this.root=$}prepForXml($){return{_attr:Object.values(this.root).filter(({value:Y})=>Y!==void 0).reduce((Y,{key:Z,value:J})=>R0(W0({},Y),{[Z]:J}),{})}}}class O0 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val",color:"w:color",fill:"w:fill",space:"w:space",sz:"w:sz",type:"w:type",rsidR:"w:rsidR",rsidRPr:"w:rsidRPr",rsidSect:"w:rsidSect",w:"w:w",h:"w:h",top:"w:top",right:"w:right",bottom:"w:bottom",left:"w:left",header:"w:header",footer:"w:footer",gutter:"w:gutter",linePitch:"w:linePitch",pos:"w:pos"})}}var c0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function g9($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var _8={},k1={exports:{}},rU;function x9(){if(rU)return k1.exports;rU=1;var $=typeof Reflect==="object"?Reflect:null,U=$&&typeof $.apply==="function"?$.apply:function(A,y,g){return Function.prototype.apply.call(A,y,g)},Y;if($&&typeof $.ownKeys==="function")Y=$.ownKeys;else if(Object.getOwnPropertySymbols)Y=function(A){return Object.getOwnPropertyNames(A).concat(Object.getOwnPropertySymbols(A))};else Y=function(A){return Object.getOwnPropertyNames(A)};function Z(L){if(console&&console.warn)console.warn(L)}var J=Number.isNaN||function(A){return A!==A};function G(){G.init.call(this)}k1.exports=G,k1.exports.once=V,G.EventEmitter=G,G.prototype._events=void 0,G.prototype._eventsCount=0,G.prototype._maxListeners=void 0;var X=10;function Q(L){if(typeof L!=="function")throw TypeError('The "listener" argument must be of type Function. Received type '+typeof L)}Object.defineProperty(G,"defaultMaxListeners",{enumerable:!0,get:function(){return X},set:function(L){if(typeof L!=="number"||L<0||J(L))throw RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+L+".");X=L}}),G.init=function(){if(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)this._events=Object.create(null),this._eventsCount=0;this._maxListeners=this._maxListeners||void 0},G.prototype.setMaxListeners=function(A){if(typeof A!=="number"||A<0||J(A))throw RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+A+".");return this._maxListeners=A,this};function B(L){if(L._maxListeners===void 0)return G.defaultMaxListeners;return L._maxListeners}G.prototype.getMaxListeners=function(){return B(this)},G.prototype.emit=function(A){var y=[];for(var g=1;g0)s=y[0];if(s instanceof Error)throw s;var V0=Error("Unhandled error."+(s?" ("+s.message+")":""));throw V0.context=s,V0}var S=E[A];if(S===void 0)return!1;if(typeof S==="function")U(S,this,y);else{var h=S.length,N=C(S,h);for(var g=0;g0&&s.length>d&&!s.warned){s.warned=!0;var V0=Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(A)+" listeners added. Use emitter.setMaxListeners() to increase limit");V0.name="MaxListenersExceededWarning",V0.emitter=L,V0.type=A,V0.count=s.length,Z(V0)}}return L}G.prototype.addListener=function(A,y){return F(this,A,y,!1)},G.prototype.on=G.prototype.addListener,G.prototype.prependListener=function(A,y){return F(this,A,y,!0)};function z(){if(!this.fired){if(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0)return this.listener.call(this.target);return this.listener.apply(this.target,arguments)}}function W(L,A,y){var g={fired:!1,wrapFn:void 0,target:L,type:A,listener:y},d=z.bind(g);return d.listener=y,g.wrapFn=d,d}G.prototype.once=function(A,y){return Q(y),this.on(A,W(this,A,y)),this},G.prototype.prependOnceListener=function(A,y){return Q(y),this.prependListener(A,W(this,A,y)),this},G.prototype.removeListener=function(A,y){var g,d,E,s,V0;if(Q(y),d=this._events,d===void 0)return this;if(g=d[A],g===void 0)return this;if(g===y||g.listener===y){if(--this._eventsCount===0)this._events=Object.create(null);else if(delete d[A],d.removeListener)this.emit("removeListener",A,g.listener||y)}else if(typeof g!=="function"){E=-1;for(s=g.length-1;s>=0;s--)if(g[s]===y||g[s].listener===y){V0=g[s].listener,E=s;break}if(E<0)return this;if(E===0)g.shift();else H(g,E);if(g.length===1)d[A]=g[0];if(d.removeListener!==void 0)this.emit("removeListener",A,V0||y)}return this},G.prototype.off=G.prototype.removeListener,G.prototype.removeAllListeners=function(A){var y,g,d;if(g=this._events,g===void 0)return this;if(g.removeListener===void 0){if(arguments.length===0)this._events=Object.create(null),this._eventsCount=0;else if(g[A]!==void 0)if(--this._eventsCount===0)this._events=Object.create(null);else delete g[A];return this}if(arguments.length===0){var E=Object.keys(g),s;for(d=0;d=0;d--)this.removeListener(A,y[d]);return this};function k(L,A,y){var g=L._events;if(g===void 0)return[];var d=g[A];if(d===void 0)return[];if(typeof d==="function")return y?[d.listener||d]:[d];return y?O(d):C(d,d.length)}G.prototype.listeners=function(A){return k(this,A,!0)},G.prototype.rawListeners=function(A){return k(this,A,!1)},G.listenerCount=function(L,A){if(typeof L.listenerCount==="function")return L.listenerCount(A);else return D.call(L,A)},G.prototype.listenerCount=D;function D(L){var A=this._events;if(A!==void 0){var y=A[L];if(typeof y==="function")return 1;else if(y!==void 0)return y.length}return 0}G.prototype.eventNames=function(){return this._eventsCount>0?Y(this._events):[]};function C(L,A){var y=Array(A);for(var g=0;g1)for(var Y=1;Y0)throw Error("Invalid string. Length must be a multiple of 4");var H=D.indexOf("=");if(H===-1)H=C;var O=H===C?0:4-H%4;return[H,O]}function Q(D){var C=X(D),H=C[0],O=C[1];return(H+O)*3/4-O}function B(D,C,H){return(C+H)*3/4-H}function F(D){var C,H=X(D),O=H[0],V=H[1],j=new Y(B(D,O,V)),M=0,L=V>0?O-4:O,A;for(A=0;A>16&255,j[M++]=C>>8&255,j[M++]=C&255;if(V===2)C=U[D.charCodeAt(A)]<<2|U[D.charCodeAt(A+1)]>>4,j[M++]=C&255;if(V===1)C=U[D.charCodeAt(A)]<<10|U[D.charCodeAt(A+1)]<<4|U[D.charCodeAt(A+2)]>>2,j[M++]=C>>8&255,j[M++]=C&255;return j}function z(D){return $[D>>18&63]+$[D>>12&63]+$[D>>6&63]+$[D&63]}function W(D,C,H){var O,V=[];for(var j=C;jL?L:M+j));if(O===1)C=D[H-1],V.push($[C>>2]+$[C<<4&63]+"==");else if(O===2)C=(D[H-2]<<8)+D[H-1],V.push($[C>>10]+$[C>>4&63]+$[C<<2&63]+"=");return V.join("")}return U1}var S1={},tU;function zq(){if(tU)return S1;return tU=1,S1.read=function($,U,Y,Z,J){var G,X,Q=J*8-Z-1,B=(1<>1,z=-7,W=Y?J-1:0,k=Y?-1:1,D=$[U+W];W+=k,G=D&(1<<-z)-1,D>>=-z,z+=Q;for(;z>0;G=G*256+$[U+W],W+=k,z-=8);X=G&(1<<-z)-1,G>>=-z,z+=Z;for(;z>0;X=X*256+$[U+W],W+=k,z-=8);if(G===0)G=1-F;else if(G===B)return X?NaN:(D?-1:1)*(1/0);else X=X+Math.pow(2,Z),G=G-F;return(D?-1:1)*X*Math.pow(2,G-Z)},S1.write=function($,U,Y,Z,J,G){var X,Q,B,F=G*8-J-1,z=(1<>1,k=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=Z?0:G-1,C=Z?1:-1,H=U<0||U===0&&1/U<0?1:0;if(U=Math.abs(U),isNaN(U)||U===1/0)Q=isNaN(U)?1:0,X=z;else{if(X=Math.floor(Math.log(U)/Math.LN2),U*(B=Math.pow(2,-X))<1)X--,B*=2;if(X+W>=1)U+=k/B;else U+=k*Math.pow(2,1-W);if(U*B>=2)X++,B/=2;if(X+W>=z)Q=0,X=z;else if(X+W>=1)Q=(U*B-1)*Math.pow(2,J),X=X+W;else Q=U*Math.pow(2,W-1)*Math.pow(2,J),X=0}for(;J>=8;$[Y+D]=Q&255,D+=C,Q/=256,J-=8);X=X<0;$[Y+D]=X&255,D+=C,X/=256,F-=8);$[Y+D-C]|=H*128},S1}var eU;function o1(){if(eU)return b8;return eU=1,function($){var U=jq(),Y=zq(),Z=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null;$.Buffer=Q,$.SlowBuffer=j,$.INSPECT_MAX_BYTES=50;var J=2147483647;if($.kMaxLength=J,Q.TYPED_ARRAY_SUPPORT=G(),!Q.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error==="function")console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function G(){try{var T=new Uint8Array(1),K={foo:function(){return 42}};return Object.setPrototypeOf(K,Uint8Array.prototype),Object.setPrototypeOf(T,K),T.foo()===42}catch(q){return!1}}Object.defineProperty(Q.prototype,"parent",{enumerable:!0,get:function(){if(!Q.isBuffer(this))return;return this.buffer}}),Object.defineProperty(Q.prototype,"offset",{enumerable:!0,get:function(){if(!Q.isBuffer(this))return;return this.byteOffset}});function X(T){if(T>J)throw RangeError('The value "'+T+'" is invalid for option "size"');var K=new Uint8Array(T);return Object.setPrototypeOf(K,Q.prototype),K}function Q(T,K,q){if(typeof T==="number"){if(typeof K==="string")throw TypeError('The "string" argument must be of type string. Received type number');return W(T)}return B(T,K,q)}Q.poolSize=8192;function B(T,K,q){if(typeof T==="string")return k(T,K);if(ArrayBuffer.isView(T))return C(T);if(T==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T);if(e(T,ArrayBuffer)||T&&e(T.buffer,ArrayBuffer))return H(T,K,q);if(typeof SharedArrayBuffer<"u"&&(e(T,SharedArrayBuffer)||T&&e(T.buffer,SharedArrayBuffer)))return H(T,K,q);if(typeof T==="number")throw TypeError('The "value" argument must not be of type number. Received type number');var w=T.valueOf&&T.valueOf();if(w!=null&&w!==T)return Q.from(w,K,q);var x=O(T);if(x)return x;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof T[Symbol.toPrimitive]==="function")return Q.from(T[Symbol.toPrimitive]("string"),K,q);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T)}Q.from=function(T,K,q){return B(T,K,q)},Object.setPrototypeOf(Q.prototype,Uint8Array.prototype),Object.setPrototypeOf(Q,Uint8Array);function F(T){if(typeof T!=="number")throw TypeError('"size" argument must be of type number');else if(T<0)throw RangeError('The value "'+T+'" is invalid for option "size"')}function z(T,K,q){if(F(T),T<=0)return X(T);if(K!==void 0)return typeof q==="string"?X(T).fill(K,q):X(T).fill(K);return X(T)}Q.alloc=function(T,K,q){return z(T,K,q)};function W(T){return F(T),X(T<0?0:V(T)|0)}Q.allocUnsafe=function(T){return W(T)},Q.allocUnsafeSlow=function(T){return W(T)};function k(T,K){if(typeof K!=="string"||K==="")K="utf8";if(!Q.isEncoding(K))throw TypeError("Unknown encoding: "+K);var q=M(T,K)|0,w=X(q),x=w.write(T,K);if(x!==q)w=w.slice(0,x);return w}function D(T){var K=T.length<0?0:V(T.length)|0,q=X(K);for(var w=0;w=J)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+J.toString(16)+" bytes");return T|0}function j(T){if(+T!=T)T=0;return Q.alloc(+T)}Q.isBuffer=function(K){return K!=null&&K._isBuffer===!0&&K!==Q.prototype},Q.compare=function(K,q){if(e(K,Uint8Array))K=Q.from(K,K.offset,K.byteLength);if(e(q,Uint8Array))q=Q.from(q,q.offset,q.byteLength);if(!Q.isBuffer(K)||!Q.isBuffer(q))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(K===q)return 0;var w=K.length,x=q.length;for(var l=0,u=Math.min(w,x);lx.length)Q.from(u).copy(x,l);else Uint8Array.prototype.set.call(x,u,l);else if(!Q.isBuffer(u))throw TypeError('"list" argument must be an Array of Buffers');else u.copy(x,l);l+=u.length}return x};function M(T,K){if(Q.isBuffer(T))return T.length;if(ArrayBuffer.isView(T)||e(T,ArrayBuffer))return T.byteLength;if(typeof T!=="string")throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof T);var q=T.length,w=arguments.length>2&&arguments[2]===!0;if(!w&&q===0)return 0;var x=!1;for(;;)switch(K){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return R(T).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return v(T).length;default:if(x)return w?-1:R(T).length;K=(""+K).toLowerCase(),x=!0}}Q.byteLength=M;function L(T,K,q){var w=!1;if(K===void 0||K<0)K=0;if(K>this.length)return"";if(q===void 0||q>this.length)q=this.length;if(q<=0)return"";if(q>>>=0,K>>>=0,q<=K)return"";if(!T)T="utf8";while(!0)switch(T){case"hex":return U0(this,K,q);case"utf8":case"utf-8":return N(this,K,q);case"ascii":return m(this,K,q);case"latin1":case"binary":return J0(this,K,q);case"base64":return h(this,K,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L0(this,K,q);default:if(w)throw TypeError("Unknown encoding: "+T);T=(T+"").toLowerCase(),w=!0}}Q.prototype._isBuffer=!0;function A(T,K,q){var w=T[K];T[K]=T[q],T[q]=w}if(Q.prototype.swap16=function(){var K=this.length;if(K%2!==0)throw RangeError("Buffer size must be a multiple of 16-bits");for(var q=0;qq)K+=" ... ";return""},Z)Q.prototype[Z]=Q.prototype.inspect;Q.prototype.compare=function(K,q,w,x,l){if(e(K,Uint8Array))K=Q.from(K,K.offset,K.byteLength);if(!Q.isBuffer(K))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof K);if(q===void 0)q=0;if(w===void 0)w=K?K.length:0;if(x===void 0)x=0;if(l===void 0)l=this.length;if(q<0||w>K.length||x<0||l>this.length)throw RangeError("out of range index");if(x>=l&&q>=w)return 0;if(x>=l)return-1;if(q>=w)return 1;if(q>>>=0,w>>>=0,x>>>=0,l>>>=0,this===K)return 0;var u=l-x,Q0=w-q,q0=Math.min(u,Q0),K0=this.slice(x,l),M0=K.slice(q,w);for(var w0=0;w02147483647)q=2147483647;else if(q<-2147483648)q=-2147483648;if(q=+q,I(q))q=x?0:T.length-1;if(q<0)q=T.length+q;if(q>=T.length)if(x)return-1;else q=T.length-1;else if(q<0)if(x)q=0;else return-1;if(typeof K==="string")K=Q.from(K,w);if(Q.isBuffer(K)){if(K.length===0)return-1;return g(T,K,q,w,x)}else if(typeof K==="number"){if(K=K&255,typeof Uint8Array.prototype.indexOf==="function")if(x)return Uint8Array.prototype.indexOf.call(T,K,q);else return Uint8Array.prototype.lastIndexOf.call(T,K,q);return g(T,[K],q,w,x)}throw TypeError("val must be string, number or Buffer")}function g(T,K,q,w,x){var l=1,u=T.length,Q0=K.length;if(w!==void 0){if(w=String(w).toLowerCase(),w==="ucs2"||w==="ucs-2"||w==="utf16le"||w==="utf-16le"){if(T.length<2||K.length<2)return-1;l=2,u/=2,Q0/=2,q/=2}}function q0(v0,j2){if(l===1)return v0[j2];else return v0.readUInt16BE(j2*l)}var K0;if(x){var M0=-1;for(K0=q;K0u)q=u-Q0;for(K0=q;K0>=0;K0--){var w0=!0;for(var H0=0;H0x)w=x;var l=K.length;if(w>l/2)w=l/2;for(var u=0;u>>0,isFinite(w)){if(w=w>>>0,x===void 0)x="utf8"}else x=w,w=void 0;else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var l=this.length-q;if(w===void 0||w>l)w=l;if(K.length>0&&(w<0||q<0)||q>this.length)throw RangeError("Attempt to write outside buffer bounds");if(!x)x="utf8";var u=!1;for(;;)switch(x){case"hex":return d(this,K,q,w);case"utf8":case"utf-8":return E(this,K,q,w);case"ascii":case"latin1":case"binary":return s(this,K,q,w);case"base64":return V0(this,K,q,w);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,K,q,w);default:if(u)throw TypeError("Unknown encoding: "+x);x=(""+x).toLowerCase(),u=!0}},Q.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function h(T,K,q){if(K===0&&q===T.length)return U.fromByteArray(T);else return U.fromByteArray(T.slice(K,q))}function N(T,K,q){q=Math.min(T.length,q);var w=[],x=K;while(x239?4:l>223?3:l>191?2:1;if(x+Q0<=q){var q0,K0,M0,w0;switch(Q0){case 1:if(l<128)u=l;break;case 2:if(q0=T[x+1],(q0&192)===128){if(w0=(l&31)<<6|q0&63,w0>127)u=w0}break;case 3:if(q0=T[x+1],K0=T[x+2],(q0&192)===128&&(K0&192)===128){if(w0=(l&15)<<12|(q0&63)<<6|K0&63,w0>2047&&(w0<55296||w0>57343))u=w0}break;case 4:if(q0=T[x+1],K0=T[x+2],M0=T[x+3],(q0&192)===128&&(K0&192)===128&&(M0&192)===128){if(w0=(l&15)<<18|(q0&63)<<12|(K0&63)<<6|M0&63,w0>65535&&w0<1114112)u=w0}}}if(u===null)u=65533,Q0=1;else if(u>65535)u-=65536,w.push(u>>>10&1023|55296),u=56320|u&1023;w.push(u),x+=Q0}return $0(w)}var a=4096;function $0(T){var K=T.length;if(K<=a)return String.fromCharCode.apply(String,T);var q="",w=0;while(ww)q=w;var x="";for(var l=K;lw)K=w;if(q<0){if(q+=w,q<0)q=0}else if(q>w)q=w;if(qq)throw RangeError("Trying to access beyond buffer length")}Q.prototype.readUintLE=Q.prototype.readUIntLE=function(K,q,w){if(K=K>>>0,q=q>>>0,!w)i(K,q,this.length);var x=this[K],l=1,u=0;while(++u>>0,q=q>>>0,!w)i(K,q,this.length);var x=this[K+--q],l=1;while(q>0&&(l*=256))x+=this[K+--q]*l;return x},Q.prototype.readUint8=Q.prototype.readUInt8=function(K,q){if(K=K>>>0,!q)i(K,1,this.length);return this[K]},Q.prototype.readUint16LE=Q.prototype.readUInt16LE=function(K,q){if(K=K>>>0,!q)i(K,2,this.length);return this[K]|this[K+1]<<8},Q.prototype.readUint16BE=Q.prototype.readUInt16BE=function(K,q){if(K=K>>>0,!q)i(K,2,this.length);return this[K]<<8|this[K+1]},Q.prototype.readUint32LE=Q.prototype.readUInt32LE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return(this[K]|this[K+1]<<8|this[K+2]<<16)+this[K+3]*16777216},Q.prototype.readUint32BE=Q.prototype.readUInt32BE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return this[K]*16777216+(this[K+1]<<16|this[K+2]<<8|this[K+3])},Q.prototype.readIntLE=function(K,q,w){if(K=K>>>0,q=q>>>0,!w)i(K,q,this.length);var x=this[K],l=1,u=0;while(++u=l)x-=Math.pow(2,8*q);return x},Q.prototype.readIntBE=function(K,q,w){if(K=K>>>0,q=q>>>0,!w)i(K,q,this.length);var x=q,l=1,u=this[K+--x];while(x>0&&(l*=256))u+=this[K+--x]*l;if(l*=128,u>=l)u-=Math.pow(2,8*q);return u},Q.prototype.readInt8=function(K,q){if(K=K>>>0,!q)i(K,1,this.length);if(!(this[K]&128))return this[K];return(255-this[K]+1)*-1},Q.prototype.readInt16LE=function(K,q){if(K=K>>>0,!q)i(K,2,this.length);var w=this[K]|this[K+1]<<8;return w&32768?w|4294901760:w},Q.prototype.readInt16BE=function(K,q){if(K=K>>>0,!q)i(K,2,this.length);var w=this[K+1]|this[K]<<8;return w&32768?w|4294901760:w},Q.prototype.readInt32LE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return this[K]|this[K+1]<<8|this[K+2]<<16|this[K+3]<<24},Q.prototype.readInt32BE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return this[K]<<24|this[K+1]<<16|this[K+2]<<8|this[K+3]},Q.prototype.readFloatLE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return Y.read(this,K,!0,23,4)},Q.prototype.readFloatBE=function(K,q){if(K=K>>>0,!q)i(K,4,this.length);return Y.read(this,K,!1,23,4)},Q.prototype.readDoubleLE=function(K,q){if(K=K>>>0,!q)i(K,8,this.length);return Y.read(this,K,!0,52,8)},Q.prototype.readDoubleBE=function(K,q){if(K=K>>>0,!q)i(K,8,this.length);return Y.read(this,K,!1,52,8)};function _(T,K,q,w,x,l){if(!Q.isBuffer(T))throw TypeError('"buffer" argument must be a Buffer instance');if(K>x||KT.length)throw RangeError("Index out of range")}Q.prototype.writeUintLE=Q.prototype.writeUIntLE=function(K,q,w,x){if(K=+K,q=q>>>0,w=w>>>0,!x){var l=Math.pow(2,8*w)-1;_(this,K,q,w,l,0)}var u=1,Q0=0;this[q]=K&255;while(++Q0>>0,w=w>>>0,!x){var l=Math.pow(2,8*w)-1;_(this,K,q,w,l,0)}var u=w-1,Q0=1;this[q+u]=K&255;while(--u>=0&&(Q0*=256))this[q+u]=K/Q0&255;return q+w},Q.prototype.writeUint8=Q.prototype.writeUInt8=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,1,255,0);return this[q]=K&255,q+1},Q.prototype.writeUint16LE=Q.prototype.writeUInt16LE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,2,65535,0);return this[q]=K&255,this[q+1]=K>>>8,q+2},Q.prototype.writeUint16BE=Q.prototype.writeUInt16BE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,2,65535,0);return this[q]=K>>>8,this[q+1]=K&255,q+2},Q.prototype.writeUint32LE=Q.prototype.writeUInt32LE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,4,4294967295,0);return this[q+3]=K>>>24,this[q+2]=K>>>16,this[q+1]=K>>>8,this[q]=K&255,q+4},Q.prototype.writeUint32BE=Q.prototype.writeUInt32BE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,4,4294967295,0);return this[q]=K>>>24,this[q+1]=K>>>16,this[q+2]=K>>>8,this[q+3]=K&255,q+4},Q.prototype.writeIntLE=function(K,q,w,x){if(K=+K,q=q>>>0,!x){var l=Math.pow(2,8*w-1);_(this,K,q,w,l-1,-l)}var u=0,Q0=1,q0=0;this[q]=K&255;while(++u>0)-q0&255}return q+w},Q.prototype.writeIntBE=function(K,q,w,x){if(K=+K,q=q>>>0,!x){var l=Math.pow(2,8*w-1);_(this,K,q,w,l-1,-l)}var u=w-1,Q0=1,q0=0;this[q+u]=K&255;while(--u>=0&&(Q0*=256)){if(K<0&&q0===0&&this[q+u+1]!==0)q0=1;this[q+u]=(K/Q0>>0)-q0&255}return q+w},Q.prototype.writeInt8=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,1,127,-128);if(K<0)K=255+K+1;return this[q]=K&255,q+1},Q.prototype.writeInt16LE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,2,32767,-32768);return this[q]=K&255,this[q+1]=K>>>8,q+2},Q.prototype.writeInt16BE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,2,32767,-32768);return this[q]=K>>>8,this[q+1]=K&255,q+2},Q.prototype.writeInt32LE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,4,2147483647,-2147483648);return this[q]=K&255,this[q+1]=K>>>8,this[q+2]=K>>>16,this[q+3]=K>>>24,q+4},Q.prototype.writeInt32BE=function(K,q,w){if(K=+K,q=q>>>0,!w)_(this,K,q,4,2147483647,-2147483648);if(K<0)K=4294967295+K+1;return this[q]=K>>>24,this[q+1]=K>>>16,this[q+2]=K>>>8,this[q+3]=K&255,q+4};function r(T,K,q,w,x,l){if(q+w>T.length)throw RangeError("Index out of range");if(q<0)throw RangeError("Index out of range")}function n(T,K,q,w,x){if(K=+K,q=q>>>0,!x)r(T,K,q,4);return Y.write(T,K,q,w,23,4),q+4}Q.prototype.writeFloatLE=function(K,q,w){return n(this,K,q,!0,w)},Q.prototype.writeFloatBE=function(K,q,w){return n(this,K,q,!1,w)};function Z0(T,K,q,w,x){if(K=+K,q=q>>>0,!x)r(T,K,q,8);return Y.write(T,K,q,w,52,8),q+8}Q.prototype.writeDoubleLE=function(K,q,w){return Z0(this,K,q,!0,w)},Q.prototype.writeDoubleBE=function(K,q,w){return Z0(this,K,q,!1,w)},Q.prototype.copy=function(K,q,w,x){if(!Q.isBuffer(K))throw TypeError("argument should be a Buffer");if(!w)w=0;if(!x&&x!==0)x=this.length;if(q>=K.length)q=K.length;if(!q)q=0;if(x>0&&x=this.length)throw RangeError("Index out of range");if(x<0)throw RangeError("sourceEnd out of bounds");if(x>this.length)x=this.length;if(K.length-q>>0,w=w===void 0?this.length:w>>>0,!K)K=0;var u;if(typeof K==="number")for(u=q;u55295&&q<57344){if(!x){if(q>56319){if((K-=3)>-1)l.push(239,191,189);continue}else if(u+1===w){if((K-=3)>-1)l.push(239,191,189);continue}x=q;continue}if(q<56320){if((K-=3)>-1)l.push(239,191,189);x=q;continue}q=(x-55296<<10|q-56320)+65536}else if(x){if((K-=3)>-1)l.push(239,191,189)}if(x=null,q<128){if((K-=1)<0)break;l.push(q)}else if(q<2048){if((K-=2)<0)break;l.push(q>>6|192,q&63|128)}else if(q<65536){if((K-=3)<0)break;l.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if((K-=4)<0)break;l.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw Error("Invalid code point")}return l}function c(T){var K=[];for(var q=0;q>8,x=q%256,l.push(x),l.push(w)}return l}function v(T){return U.toByteArray(P(T))}function b(T,K,q,w){for(var x=0;x=K.length||x>=T.length)break;K[x+q]=T[x]}return x}function e(T,K){return T instanceof K||T!=null&&T.constructor!=null&&T.constructor.name!=null&&T.constructor.name===K.name}function I(T){return T!==T}var t=function(){var T="0123456789abcdef",K=Array(256);for(var q=0;q<16;++q){var w=q*16;for(var x=0;x<16;++x)K[w+x]=T[q]+T[x]}return K}()}(b8),b8}var g8={},x8={},f8,$Y;function QQ(){if($Y)return f8;return $Y=1,f8=function(){if(typeof Symbol!=="function"||typeof Object.getOwnPropertySymbols!=="function")return!1;if(typeof Symbol.iterator==="symbol")return!0;var U={},Y=Symbol("test"),Z=Object(Y);if(typeof Y==="string")return!1;if(Object.prototype.toString.call(Y)!=="[object Symbol]")return!1;if(Object.prototype.toString.call(Z)!=="[object Symbol]")return!1;var J=42;U[Y]=J;for(var G in U)return!1;if(typeof Object.keys==="function"&&Object.keys(U).length!==0)return!1;if(typeof Object.getOwnPropertyNames==="function"&&Object.getOwnPropertyNames(U).length!==0)return!1;var X=Object.getOwnPropertySymbols(U);if(X.length!==1||X[0]!==Y)return!1;if(!Object.prototype.propertyIsEnumerable.call(U,Y))return!1;if(typeof Object.getOwnPropertyDescriptor==="function"){var Q=Object.getOwnPropertyDescriptor(U,Y);if(Q.value!==J||Q.enumerable!==!0)return!1}return!0},f8}var h8,UY;function f9(){if(UY)return h8;UY=1;var $=QQ();return h8=function(){return $()&&!!Symbol.toStringTag},h8}var u8,YY;function JQ(){if(YY)return u8;return YY=1,u8=Object,u8}var d8,ZY;function Fq(){if(ZY)return d8;return ZY=1,d8=Error,d8}var c8,QY;function Nq(){if(QY)return c8;return QY=1,c8=EvalError,c8}var m8,JY;function Rq(){if(JY)return m8;return JY=1,m8=RangeError,m8}var l8,GY;function Dq(){if(GY)return l8;return GY=1,l8=ReferenceError,l8}var a8,KY;function GQ(){if(KY)return a8;return KY=1,a8=SyntaxError,a8}var p8,qY;function t1(){if(qY)return p8;return qY=1,p8=TypeError,p8}var i8,XY;function Aq(){if(XY)return i8;return XY=1,i8=URIError,i8}var r8,VY;function Pq(){if(VY)return r8;return VY=1,r8=Math.abs,r8}var s8,BY;function Tq(){if(BY)return s8;return BY=1,s8=Math.floor,s8}var n8,LY;function Cq(){if(LY)return n8;return LY=1,n8=Math.max,n8}var o8,MY;function Oq(){if(MY)return o8;return MY=1,o8=Math.min,o8}var t8,IY;function kq(){if(IY)return t8;return IY=1,t8=Math.pow,t8}var e8,wY;function Eq(){if(wY)return e8;return wY=1,e8=Math.round,e8}var $6,WY;function Sq(){if(WY)return $6;return WY=1,$6=Number.isNaN||function(U){return U!==U},$6}var U6,HY;function vq(){if(HY)return U6;HY=1;var $=Sq();return U6=function(Y){if($(Y)||Y===0)return Y;return Y<0?-1:1},U6}var Y6,jY;function _q(){if(jY)return Y6;return jY=1,Y6=Object.getOwnPropertyDescriptor,Y6}var Z6,zY;function I1(){if(zY)return Z6;zY=1;var $=_q();if($)try{$([],"length")}catch(U){$=null}return Z6=$,Z6}var Q6,FY;function e1(){if(FY)return Q6;FY=1;var $=Object.defineProperty||!1;if($)try{$({},"a",{value:1})}catch(U){$=!1}return Q6=$,Q6}var J6,NY;function yq(){if(NY)return J6;NY=1;var $=typeof Symbol<"u"&&Symbol,U=QQ();return J6=function(){if(typeof $!=="function")return!1;if(typeof Symbol!=="function")return!1;if(typeof $("foo")!=="symbol")return!1;if(typeof Symbol("bar")!=="symbol")return!1;return U()},J6}var G6,RY;function KQ(){if(RY)return G6;return RY=1,G6=typeof Reflect<"u"&&Reflect.getPrototypeOf||null,G6}var K6,DY;function qQ(){if(DY)return K6;DY=1;var $=JQ();return K6=$.getPrototypeOf||null,K6}var q6,AY;function bq(){if(AY)return q6;AY=1;var $="Function.prototype.bind called on incompatible ",U=Object.prototype.toString,Y=Math.max,Z="[object Function]",J=function(B,F){var z=[];for(var W=0;W"u"||!g?$:g(Uint8Array),N={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?$:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?$:ArrayBuffer,"%ArrayIteratorPrototype%":y&&g?g([][Symbol.iterator]()):$,"%AsyncFromSyncIteratorPrototype%":$,"%AsyncFunction%":S,"%AsyncGenerator%":S,"%AsyncGeneratorFunction%":S,"%AsyncIteratorPrototype%":S,"%Atomics%":typeof Atomics>"u"?$:Atomics,"%BigInt%":typeof BigInt>"u"?$:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?$:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?$:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?$:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Y,"%eval%":eval,"%EvalError%":Z,"%Float16Array%":typeof Float16Array>"u"?$:Float16Array,"%Float32Array%":typeof Float32Array>"u"?$:Float32Array,"%Float64Array%":typeof Float64Array>"u"?$:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?$:FinalizationRegistry,"%Function%":O,"%GeneratorFunction%":S,"%Int8Array%":typeof Int8Array>"u"?$:Int8Array,"%Int16Array%":typeof Int16Array>"u"?$:Int16Array,"%Int32Array%":typeof Int32Array>"u"?$:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":y&&g?g(g([][Symbol.iterator]())):$,"%JSON%":typeof JSON==="object"?JSON:$,"%Map%":typeof Map>"u"?$:Map,"%MapIteratorPrototype%":typeof Map>"u"||!y||!g?$:g(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":U,"%Object.getOwnPropertyDescriptor%":j,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?$:Promise,"%Proxy%":typeof Proxy>"u"?$:Proxy,"%RangeError%":J,"%ReferenceError%":G,"%Reflect%":typeof Reflect>"u"?$:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?$:Set,"%SetIteratorPrototype%":typeof Set>"u"||!y||!g?$:g(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?$:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":y&&g?g(""[Symbol.iterator]()):$,"%Symbol%":y?Symbol:$,"%SyntaxError%":X,"%ThrowTypeError%":A,"%TypedArray%":h,"%TypeError%":Q,"%Uint8Array%":typeof Uint8Array>"u"?$:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?$:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?$:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?$:Uint32Array,"%URIError%":B,"%WeakMap%":typeof WeakMap>"u"?$:WeakMap,"%WeakRef%":typeof WeakRef>"u"?$:WeakRef,"%WeakSet%":typeof WeakSet>"u"?$:WeakSet,"%Function.prototype.call%":V0,"%Function.prototype.apply%":s,"%Object.defineProperty%":M,"%Object.getPrototypeOf%":d,"%Math.abs%":F,"%Math.floor%":z,"%Math.max%":W,"%Math.min%":k,"%Math.pow%":D,"%Math.round%":C,"%Math.sign%":H,"%Reflect.getPrototypeOf%":E};if(g)try{null.error}catch(c){var a=g(g(c));N["%Error.prototype%"]=a}var $0=function c(f){var v;if(f==="%AsyncFunction%")v=V("async function () {}");else if(f==="%GeneratorFunction%")v=V("function* () {}");else if(f==="%AsyncGeneratorFunction%")v=V("async function* () {}");else if(f==="%AsyncGenerator%"){var b=c("%AsyncGeneratorFunction%");if(b)v=b.prototype}else if(f==="%AsyncIteratorPrototype%"){var e=c("%AsyncGenerator%");if(e&&g)v=g(e.prototype)}return N[f]=v,v},m={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},J0=w1(),U0=fq(),L0=J0.call(V0,Array.prototype.concat),i=J0.call(s,Array.prototype.splice),_=J0.call(V0,String.prototype.replace),r=J0.call(V0,String.prototype.slice),n=J0.call(V0,RegExp.prototype.exec),Z0=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,p=/\\(\\)?/g,P=function(f){var v=r(f,0,1),b=r(f,-1);if(v==="%"&&b!=="%")throw new X("invalid intrinsic syntax, expected closing `%`");else if(b==="%"&&v!=="%")throw new X("invalid intrinsic syntax, expected opening `%`");var e=[];return _(f,Z0,function(I,t,T,K){e[e.length]=T?_(K,p,"$1"):t||I}),e},R=function(f,v){var b=f,e;if(U0(m,b))e=m[b],b="%"+e[0]+"%";if(U0(N,b)){var I=N[b];if(I===S)I=$0(b);if(typeof I>"u"&&!v)throw new Q("intrinsic "+f+" exists, but is not available. Please file an issue!");return{alias:e,name:b,value:I}}throw new X("intrinsic "+f+" does not exist!")};return j6=function(f,v){if(typeof f!=="string"||f.length===0)throw new Q("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof v!=="boolean")throw new Q('"allowMissing" argument must be a boolean');if(n(/^%?[^%]*%?$/,f)===null)throw new X("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var b=P(f),e=b.length>0?b[0]:"",I=R("%"+e+"%",v),t=I.name,T=I.value,K=!1,q=I.alias;if(q)e=q[0],i(b,L0([0,1],q));for(var w=1,x=!0;w=b.length){var q0=j(T,l);if(x=!!q0,x&&"get"in q0&&!("originalValue"in q0.get))T=q0.get;else T=T[l]}else x=U0(T,l),T=T[l];if(x&&!K)N[t]=T}}return T},j6}var z6,bY;function LQ(){if(bY)return z6;bY=1;var $=BQ(),U=d9(),Y=U([$("%String.prototype.indexOf%")]);return z6=function(J,G){var X=$(J,!!G);if(typeof X==="function"&&Y(J,".prototype.")>-1)return U([X]);return X},z6}var F6,gY;function hq(){if(gY)return F6;gY=1;var $=f9()(),U=LQ(),Y=U("Object.prototype.toString"),Z=function(Q){if($&&Q&&typeof Q==="object"&&Symbol.toStringTag in Q)return!1;return Y(Q)==="[object Arguments]"},J=function(Q){if(Z(Q))return!0;return Q!==null&&typeof Q==="object"&&"length"in Q&&typeof Q.length==="number"&&Q.length>=0&&Y(Q)!=="[object Array]"&&"callee"in Q&&Y(Q.callee)==="[object Function]"},G=function(){return Z(arguments)}();return Z.isLegacyArguments=J,F6=G?Z:J,F6}var N6,xY;function uq(){if(xY)return N6;xY=1;var $=Object.prototype.toString,U=Function.prototype.toString,Y=/^\s*(?:function)?\*/,Z=f9()(),J=Object.getPrototypeOf,G=function(){if(!Z)return!1;try{return Function("return function*() {}")()}catch(Q){}},X;return N6=function(B){if(typeof B!=="function")return!1;if(Y.test(U.call(B)))return!0;if(!Z){var F=$.call(B);return F==="[object GeneratorFunction]"}if(!J)return!1;if(typeof X>"u"){var z=G();X=z?J(z):!1}return J(B)===X},N6}var R6,fY;function dq(){if(fY)return R6;fY=1;var $=Function.prototype.toString,U=typeof Reflect==="object"&&Reflect!==null&&Reflect.apply,Y,Z;if(typeof U==="function"&&typeof Object.defineProperty==="function")try{Y=Object.defineProperty({},"length",{get:function(){throw Z}}),Z={},U(function(){throw 42},null,Y)}catch(j){if(j!==Z)U=null}else U=null;var J=/^\s*class\b/,G=function(M){try{var L=$.call(M);return J.test(L)}catch(A){return!1}},X=function(M){try{if(G(M))return!1;return $.call(M),!0}catch(L){return!1}},Q=Object.prototype.toString,B="[object Object]",F="[object Function]",z="[object GeneratorFunction]",W="[object HTMLAllCollection]",k="[object HTML document.all class]",D="[object HTMLCollection]",C=typeof Symbol==="function"&&!!Symbol.toStringTag,H=!(0 in[,]),O=function(){return!1};if(typeof document==="object"){var V=document.all;if(Q.call(V)===Q.call(document.all))O=function(M){if((H||!M)&&(typeof M>"u"||typeof M==="object"))try{var L=Q.call(M);return(L===W||L===k||L===D||L===B)&&M("")==null}catch(A){}return!1}}return R6=U?function(M){if(O(M))return!0;if(!M)return!1;if(typeof M!=="function"&&typeof M!=="object")return!1;try{U(M,null,Y)}catch(L){if(L!==Z)return!1}return!G(M)&&X(M)}:function(M){if(O(M))return!0;if(!M)return!1;if(typeof M!=="function"&&typeof M!=="object")return!1;if(C)return X(M);if(G(M))return!1;var L=Q.call(M);if(L!==F&&L!==z&&!/^\[object HTML/.test(L))return!1;return X(M)},R6}var D6,hY;function cq(){if(hY)return D6;hY=1;var $=dq(),U=Object.prototype.toString,Y=Object.prototype.hasOwnProperty,Z=function(B,F,z){for(var W=0,k=B.length;W=3)W=z;if(X(B))Z(B,F,W);else if(typeof B==="string")J(B,F,W);else G(B,F,W)},D6}var A6,uY;function mq(){if(uY)return A6;return uY=1,A6=["Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"],A6}var P6,dY;function lq(){if(dY)return P6;dY=1;var $=mq(),U=typeof globalThis>"u"?c0:globalThis;return P6=function(){var Z=[];for(var J=0;J<$.length;J++)if(typeof U[$[J]]==="function")Z[Z.length]=$[J];return Z},P6}var T6={exports:{}},C6,cY;function aq(){if(cY)return C6;cY=1;var $=e1(),U=GQ(),Y=t1(),Z=I1();return C6=function(G,X,Q){if(!G||typeof G!=="object"&&typeof G!=="function")throw new Y("`obj` must be an object or a function`");if(typeof X!=="string"&&typeof X!=="symbol")throw new Y("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!=="boolean"&&arguments[3]!==null)throw new Y("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!=="boolean"&&arguments[4]!==null)throw new Y("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!=="boolean"&&arguments[5]!==null)throw new Y("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!=="boolean")throw new Y("`loose`, if provided, must be a boolean");var B=arguments.length>3?arguments[3]:null,F=arguments.length>4?arguments[4]:null,z=arguments.length>5?arguments[5]:null,W=arguments.length>6?arguments[6]:!1,k=!!Z&&Z(G,X);if($)$(G,X,{configurable:z===null&&k?k.configurable:!z,enumerable:B===null&&k?k.enumerable:!B,value:Q,writable:F===null&&k?k.writable:!F});else if(W||!B&&!F&&!z)G[X]=Q;else throw new U("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},C6}var O6,mY;function pq(){if(mY)return O6;mY=1;var $=e1(),U=function(){return!!$};return U.hasArrayLengthDefineBug=function(){if(!$)return null;try{return $([],"length",{value:1}).length!==1}catch(Z){return!0}},O6=U,O6}var k6,lY;function iq(){if(lY)return k6;lY=1;var $=BQ(),U=aq(),Y=pq()(),Z=I1(),J=t1(),G=$("%Math.floor%");return k6=function(Q,B){if(typeof Q!=="function")throw new J("`fn` is not a function");if(typeof B!=="number"||B<0||B>4294967295||G(B)!==B)throw new J("`length` must be a positive 32-bit integer");var F=arguments.length>2&&!!arguments[2],z=!0,W=!0;if("length"in Q&&Z){var k=Z(Q,"length");if(k&&!k.configurable)z=!1;if(k&&!k.writable)W=!1}if(z||W||!F)if(Y)U(Q,"length",B,!0,!0);else U(Q,"length",B);return Q},k6}var E6,aY;function rq(){if(aY)return E6;aY=1;var $=w1(),U=u9(),Y=XQ();return E6=function(){return Y($,U,arguments)},E6}var pY;function sq(){if(pY)return T6.exports;return pY=1,function($){var U=iq(),Y=e1(),Z=d9(),J=rq();if($.exports=function(X){var Q=Z(arguments),B=X.length-(arguments.length-1);return U(Q,1+(B>0?B:0),!0)},Y)Y($.exports,"apply",{value:J});else $.exports.apply=J}(T6),T6.exports}var S6,iY;function MQ(){if(iY)return S6;iY=1;var $=cq(),U=lq(),Y=sq(),Z=LQ(),J=I1(),G=VQ(),X=Z("Object.prototype.toString"),Q=f9()(),B=typeof globalThis>"u"?c0:globalThis,F=U(),z=Z("String.prototype.slice"),W=Z("Array.prototype.indexOf",!0)||function(O,V){for(var j=0;j-1)return V;if(V!=="Object")return!1;return C(O)}if(!J)return null;return D(O)},S6}var v6,rY;function nq(){if(rY)return v6;rY=1;var $=MQ();return v6=function(Y){return!!$(Y)},v6}var sY;function oq(){if(sY)return x8;return sY=1,function($){var U=hq(),Y=uq(),Z=MQ(),J=nq();function G(w){return w.call.bind(w)}var X=typeof BigInt<"u",Q=typeof Symbol<"u",B=G(Object.prototype.toString),F=G(Number.prototype.valueOf),z=G(String.prototype.valueOf),W=G(Boolean.prototype.valueOf);if(X)var k=G(BigInt.prototype.valueOf);if(Q)var D=G(Symbol.prototype.valueOf);function C(w,x){if(typeof w!=="object")return!1;try{return x(w),!0}catch(l){return!1}}$.isArgumentsObject=U,$.isGeneratorFunction=Y,$.isTypedArray=J;function H(w){return typeof Promise<"u"&&w instanceof Promise||w!==null&&typeof w==="object"&&typeof w.then==="function"&&typeof w.catch==="function"}$.isPromise=H;function O(w){if(typeof ArrayBuffer<"u"&&ArrayBuffer.isView)return ArrayBuffer.isView(w);return J(w)||r(w)}$.isArrayBufferView=O;function V(w){return Z(w)==="Uint8Array"}$.isUint8Array=V;function j(w){return Z(w)==="Uint8ClampedArray"}$.isUint8ClampedArray=j;function M(w){return Z(w)==="Uint16Array"}$.isUint16Array=M;function L(w){return Z(w)==="Uint32Array"}$.isUint32Array=L;function A(w){return Z(w)==="Int8Array"}$.isInt8Array=A;function y(w){return Z(w)==="Int16Array"}$.isInt16Array=y;function g(w){return Z(w)==="Int32Array"}$.isInt32Array=g;function d(w){return Z(w)==="Float32Array"}$.isFloat32Array=d;function E(w){return Z(w)==="Float64Array"}$.isFloat64Array=E;function s(w){return Z(w)==="BigInt64Array"}$.isBigInt64Array=s;function V0(w){return Z(w)==="BigUint64Array"}$.isBigUint64Array=V0;function S(w){return B(w)==="[object Map]"}S.working=typeof Map<"u"&&S(new Map);function h(w){if(typeof Map>"u")return!1;return S.working?S(w):w instanceof Map}$.isMap=h;function N(w){return B(w)==="[object Set]"}N.working=typeof Set<"u"&&N(new Set);function a(w){if(typeof Set>"u")return!1;return N.working?N(w):w instanceof Set}$.isSet=a;function $0(w){return B(w)==="[object WeakMap]"}$0.working=typeof WeakMap<"u"&&$0(new WeakMap);function m(w){if(typeof WeakMap>"u")return!1;return $0.working?$0(w):w instanceof WeakMap}$.isWeakMap=m;function J0(w){return B(w)==="[object WeakSet]"}J0.working=typeof WeakSet<"u"&&J0(new WeakSet);function U0(w){return J0(w)}$.isWeakSet=U0;function L0(w){return B(w)==="[object ArrayBuffer]"}L0.working=typeof ArrayBuffer<"u"&&L0(new ArrayBuffer);function i(w){if(typeof ArrayBuffer>"u")return!1;return L0.working?L0(w):w instanceof ArrayBuffer}$.isArrayBuffer=i;function _(w){return B(w)==="[object DataView]"}_.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&_(new DataView(new ArrayBuffer(1),0,1));function r(w){if(typeof DataView>"u")return!1;return _.working?_(w):w instanceof DataView}$.isDataView=r;var n=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function Z0(w){return B(w)==="[object SharedArrayBuffer]"}function p(w){if(typeof n>"u")return!1;if(typeof Z0.working>"u")Z0.working=Z0(new n);return Z0.working?Z0(w):w instanceof n}$.isSharedArrayBuffer=p;function P(w){return B(w)==="[object AsyncFunction]"}$.isAsyncFunction=P;function R(w){return B(w)==="[object Map Iterator]"}$.isMapIterator=R;function c(w){return B(w)==="[object Set Iterator]"}$.isSetIterator=c;function f(w){return B(w)==="[object Generator]"}$.isGeneratorObject=f;function v(w){return B(w)==="[object WebAssembly.Module]"}$.isWebAssemblyCompiledModule=v;function b(w){return C(w,F)}$.isNumberObject=b;function e(w){return C(w,z)}$.isStringObject=e;function I(w){return C(w,W)}$.isBooleanObject=I;function t(w){return X&&C(w,k)}$.isBigIntObject=t;function T(w){return Q&&C(w,D)}$.isSymbolObject=T;function K(w){return b(w)||e(w)||I(w)||t(w)||T(w)}$.isBoxedPrimitive=K;function q(w){return typeof Uint8Array<"u"&&(i(w)||p(w))}$.isAnyArrayBuffer=q,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(w){Object.defineProperty($,w,{enumerable:!1,value:function(){throw Error(w+" is not supported in userland")}})})}(x8),x8}var _6,nY;function tq(){if(nY)return _6;return nY=1,_6=function(U){return U&&typeof U==="object"&&typeof U.copy==="function"&&typeof U.fill==="function"&&typeof U.readUInt8==="function"},_6}var oY;function IQ(){if(oY)return g8;return oY=1,function($){var U=Object.getOwnPropertyDescriptors||function(r){var n=Object.keys(r),Z0={};for(var p=0;p=p)return c;switch(c){case"%s":return String(Z0[n++]);case"%d":return Number(Z0[n++]);case"%j":try{return JSON.stringify(Z0[n++])}catch(f){return"[Circular]"}default:return c}});for(var R=Z0[n];n"u")return function(){return $.deprecate(_,r).apply(this,arguments)};var n=!1;function Z0(){if(!n){if(j0.throwDeprecation)throw Error(r);else if(j0.traceDeprecation)console.trace(r);else console.error(r);n=!0}return _.apply(this,arguments)}return Z0};var Z={},J=/^$/;if(j0.env.NODE_DEBUG){var G=j0.env.NODE_DEBUG;G=G.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),J=new RegExp("^"+G+"$","i")}$.debuglog=function(_){if(_=_.toUpperCase(),!Z[_])if(J.test(_)){var r=j0.pid;Z[_]=function(){var n=$.format.apply($,arguments);console.error("%s %d: %s",_,r,n)}}else Z[_]=function(){};return Z[_]};function X(_,r){var n={seen:[],stylize:B};if(arguments.length>=3)n.depth=arguments[2];if(arguments.length>=4)n.colors=arguments[3];if(V(r))n.showHidden=r;else if(r)$._extend(n,r);if(g(n.showHidden))n.showHidden=!1;if(g(n.depth))n.depth=2;if(g(n.colors))n.colors=!1;if(g(n.customInspect))n.customInspect=!0;if(n.colors)n.stylize=Q;return z(n,_,n.depth)}$.inspect=X,X.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},X.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function Q(_,r){var n=X.styles[r];if(n)return"\x1B["+X.colors[n][0]+"m"+_+"\x1B["+X.colors[n][1]+"m";else return _}function B(_,r){return _}function F(_){var r={};return _.forEach(function(n,Z0){r[n]=!0}),r}function z(_,r,n){if(_.customInspect&&r&&S(r.inspect)&&r.inspect!==$.inspect&&!(r.constructor&&r.constructor.prototype===r)){var Z0=r.inspect(n,_);if(!A(Z0))Z0=z(_,Z0,n);return Z0}var p=W(_,r);if(p)return p;var P=Object.keys(r),R=F(P);if(_.showHidden)P=Object.getOwnPropertyNames(r);if(V0(r)&&(P.indexOf("message")>=0||P.indexOf("description")>=0))return k(r);if(P.length===0){if(S(r)){var c=r.name?": "+r.name:"";return _.stylize("[Function"+c+"]","special")}if(d(r))return _.stylize(RegExp.prototype.toString.call(r),"regexp");if(s(r))return _.stylize(Date.prototype.toString.call(r),"date");if(V0(r))return k(r)}var f="",v=!1,b=["{","}"];if(O(r))v=!0,b=["[","]"];if(S(r)){var e=r.name?": "+r.name:"";f=" [Function"+e+"]"}if(d(r))f=" "+RegExp.prototype.toString.call(r);if(s(r))f=" "+Date.prototype.toUTCString.call(r);if(V0(r))f=" "+k(r);if(P.length===0&&(!v||r.length==0))return b[0]+f+b[1];if(n<0)if(d(r))return _.stylize(RegExp.prototype.toString.call(r),"regexp");else return _.stylize("[Object]","special");_.seen.push(r);var I;if(v)I=D(_,r,n,R,P);else I=P.map(function(t){return C(_,r,n,R,t,v)});return _.seen.pop(),H(I,f,b)}function W(_,r){if(g(r))return _.stylize("undefined","undefined");if(A(r)){var n="'"+JSON.stringify(r).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return _.stylize(n,"string")}if(L(r))return _.stylize(""+r,"number");if(V(r))return _.stylize(""+r,"boolean");if(j(r))return _.stylize("null","null")}function k(_){return"["+Error.prototype.toString.call(_)+"]"}function D(_,r,n,Z0,p){var P=[];for(var R=0,c=r.length;R-1)if(P)c=c.split(` `).map(function(v){return" "+v}).join(` `).slice(2);else c=` `+c.split(` `).map(function(v){return" "+v}).join(` -`)}else c=_.stylize("[Circular]","special");if(g(N)){if(P&&p.match(/^\d+$/))return c;if(N=JSON.stringify(""+p),N.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/))N=N.slice(1,-1),N=_.stylize(N,"name");else N=N.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),N=_.stylize(N,"string")}return N+": "+c}function H(_,r,n){var Z0=_.reduce(function(p,P){if(P.indexOf(` +`)}else c=_.stylize("[Circular]","special");if(g(R)){if(P&&p.match(/^\d+$/))return c;if(R=JSON.stringify(""+p),R.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/))R=R.slice(1,-1),R=_.stylize(R,"name");else R=R.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),R=_.stylize(R,"string")}return R+": "+c}function H(_,r,n){var Z0=_.reduce(function(p,P){if(P.indexOf(` `)>=0);return p+P.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(Z0>60)return n[0]+(r===""?"":r+` `)+" "+_.join(`, - `)+" "+n[1];return n[0]+r+" "+_.join(", ")+" "+n[1]}U.types=aw();function O(_){return Array.isArray(_)}U.isArray=O;function X(_){return typeof _==="boolean"}U.isBoolean=X;function j(_){return _===null}U.isNull=j;function L(_){return _==null}U.isNullOrUndefined=L;function I(_){return typeof _==="number"}U.isNumber=I;function A(_){return typeof _==="string"}U.isString=A;function y(_){return typeof _==="symbol"}U.isSymbol=y;function g(_){return _===void 0}U.isUndefined=g;function d(_){return k(_)&&F(_)==="[object RegExp]"}U.isRegExp=d,U.types.isRegExp=d;function k(_){return typeof _==="object"&&_!==null}U.isObject=k;function s(_){return k(_)&&F(_)==="[object Date]"}U.isDate=s,U.types.isDate=s;function q0(_){return k(_)&&(F(_)==="[object Error]"||_ instanceof Error)}U.isError=q0,U.types.isNativeError=q0;function S(_){return typeof _==="function"}U.isFunction=S;function h(_){return _===null||typeof _==="boolean"||typeof _==="number"||typeof _==="string"||typeof _==="symbol"||typeof _==="undefined"}U.isPrimitive=h,U.isBuffer=pw();function F(_){return Object.prototype.toString.call(_)}function a(_){return _<10?"0"+_.toString(10):_.toString(10)}var U0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function m(){var _=new Date,r=[a(_.getHours()),a(_.getMinutes()),a(_.getSeconds())].join(":");return[_.getDate(),U0[_.getMonth()],r].join(" ")}U.log=function(){console.log("%s - %s",m(),U.format.apply(U,arguments))},U.inherits=R1(),U._extend=function(_,r){if(!r||!k(r))return _;var n=Object.keys(r),Z0=n.length;while(Z0--)_[n[Z0]]=r[n[Z0]];return _};function J0(_,r){return Object.prototype.hasOwnProperty.call(_,r)}var $0=typeof Symbol!=="undefined"?Symbol("util.promisify.custom"):void 0;U.promisify=function _(r){if(typeof r!=="function")throw new TypeError('The "original" argument must be of type Function');if($0&&r[$0]){var n=r[$0];if(typeof n!=="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(n,$0,{value:n,enumerable:!1,writable:!1,configurable:!0}),n}function n(){var Z0,p,P=new Promise(function(f,v){Z0=f,p=v}),N=[];for(var c=0;c0)this.tail.next=X;else this.head=X;this.tail=X,++this.length}},{key:"unshift",value:function H(O){var X={data:O,next:this.head};if(this.length===0)this.tail=X;this.head=X,++this.length}},{key:"shift",value:function H(){if(this.length===0)return;var O=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,O}},{key:"clear",value:function H(){this.head=this.tail=null,this.length=0}},{key:"join",value:function H(O){if(this.length===0)return"";var X=this.head,j=""+X.data;while(X=X.next)j+=O+X.data;return j}},{key:"concat",value:function H(O){if(this.length===0)return z.alloc(0);var X=z.allocUnsafe(O>>>0),j=this.head,L=0;while(j)D(j.data,X,L),L+=j.data.length,j=j.next;return X}},{key:"consume",value:function H(O,X){var j;if(OI.length?I.length:O;if(A===I.length)L+=I;else L+=I.slice(0,O);if(O-=A,O===0){if(A===I.length)if(++j,X.next)this.head=X.next;else this.head=this.tail=null;else this.head=X,X.data=I.slice(A);break}++j}return this.length-=j,L}},{key:"_getBuffer",value:function H(O){var X=z.allocUnsafe(O),j=this.head,L=1;j.data.copy(X),O-=j.data.length;while(j=j.next){var I=j.data,A=O>I.length?I.length:O;if(I.copy(X,X.length-O,0,A),O-=A,O===0){if(A===I.length)if(++L,j.next)this.head=j.next;else this.head=this.tail=null;else this.head=j,j.data=I.slice(A);break}++L}return this.length-=L,X}},{key:E,value:function H(O,X){return W(this,$($({},X),{},{depth:0,customInspect:!1}))}}]),C}(),y8}var b8,eY;function MQ(){if(eY)return b8;eY=1;function U(w,Q){var q=this,z=this._readableState&&this._readableState.destroyed,R=this._writableState&&this._writableState.destroyed;if(z||R){if(Q)Q(w);else if(w){if(!this._writableState)j0.nextTick(J,this,w);else if(!this._writableState.errorEmitted)this._writableState.errorEmitted=!0,j0.nextTick(J,this,w)}return this}if(this._readableState)this._readableState.destroyed=!0;if(this._writableState)this._writableState.destroyed=!0;return this._destroy(w||null,function(W){if(!Q&&W)if(!q._writableState)j0.nextTick($,q,W);else if(!q._writableState.errorEmitted)q._writableState.errorEmitted=!0,j0.nextTick($,q,W);else j0.nextTick(Y,q);else if(Q)j0.nextTick(Y,q),Q(W);else j0.nextTick(Y,q)}),this}function $(w,Q){J(w,Q),Y(w)}function Y(w){if(w._writableState&&!w._writableState.emitClose)return;if(w._readableState&&!w._readableState.emitClose)return;w.emit("close")}function Z(){if(this._readableState)this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1;if(this._writableState)this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1}function J(w,Q){w.emit("error",Q)}function G(w,Q){var{_readableState:q,_writableState:z}=w;if(q&&q.autoDestroy||z&&z.autoDestroy)w.destroy(Q);else w.emit("error",Q)}return b8={destroy:U,undestroy:Z,errorOrDestroy:G},b8}var g8={},UZ;function i1(){if(UZ)return g8;UZ=1;function U(Q,q){Q.prototype=Object.create(q.prototype),Q.prototype.constructor=Q,Q.__proto__=q}var $={};function Y(Q,q,z){if(!z)z=Error;function R(E,D,C){if(typeof q==="string")return q;else return q(E,D,C)}var W=function(E){U(D,E);function D(C,H,O){return E.call(this,R(C,H,O))||this}return D}(z);W.prototype.name=z.name,W.prototype.code=Q,$[Q]=W}function Z(Q,q){if(Array.isArray(Q)){var z=Q.length;if(Q=Q.map(function(R){return String(R)}),z>2)return"one of ".concat(q," ").concat(Q.slice(0,z-1).join(", "),", or ")+Q[z-1];else if(z===2)return"one of ".concat(q," ").concat(Q[0]," or ").concat(Q[1]);else return"of ".concat(q," ").concat(Q[0])}else return"of ".concat(q," ").concat(String(Q))}function J(Q,q,z){return Q.substr(0,q.length)===q}function G(Q,q,z){if(z===void 0||z>Q.length)z=Q.length;return Q.substring(z-q.length,z)===q}function w(Q,q,z){if(typeof z!=="number")z=0;if(z+q.length>Q.length)return!1;else return Q.indexOf(q,z)!==-1}return Y("ERR_INVALID_OPT_VALUE",function(Q,q){return'The value "'+q+'" is invalid for option "'+Q+'"'},TypeError),Y("ERR_INVALID_ARG_TYPE",function(Q,q,z){var R;if(typeof q==="string"&&J(q,"not "))R="must not be",q=q.replace(/^not /,"");else R="must be";var W;if(G(Q," argument"))W="The ".concat(Q," ").concat(R," ").concat(Z(q,"type"));else{var E=w(Q,".")?"property":"argument";W='The "'.concat(Q,'" ').concat(E," ").concat(R," ").concat(Z(q,"type"))}return W+=". Received type ".concat(typeof z),W},TypeError),Y("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),Y("ERR_METHOD_NOT_IMPLEMENTED",function(Q){return"The "+Q+" method is not implemented"}),Y("ERR_STREAM_PREMATURE_CLOSE","Premature close"),Y("ERR_STREAM_DESTROYED",function(Q){return"Cannot call "+Q+" after a stream was destroyed"}),Y("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),Y("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),Y("ERR_STREAM_WRITE_AFTER_END","write after end"),Y("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),Y("ERR_UNKNOWN_ENCODING",function(Q){return"Unknown encoding: "+Q},TypeError),Y("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),g8.codes=$,g8}var x8,$Z;function WQ(){if($Z)return x8;$Z=1;var U=i1().codes.ERR_INVALID_OPT_VALUE;function $(Z,J,G){return Z.highWaterMark!=null?Z.highWaterMark:J?Z[G]:null}function Y(Z,J,G,w){var Q=$(J,w,G);if(Q!=null){if(!(isFinite(Q)&&Math.floor(Q)===Q)||Q<0){var q=w?G:"highWaterMark";throw new U(q,Q)}return Math.floor(Q)}return Z.objectMode?16:16384}return x8={getHighWaterMark:Y},x8}var f8,YZ;function rw(){if(YZ)return f8;YZ=1,f8=U;function U(Y,Z){if($("noDeprecation"))return Y;var J=!1;function G(){if(!J){if($("throwDeprecation"))throw new Error(Z);else if($("traceDeprecation"))console.trace(Z);else console.warn(Z);J=!0}return Y.apply(this,arguments)}return G}function $(Y){try{if(!c0.localStorage)return!1}catch(J){return!1}var Z=c0.localStorage[Y];if(Z==null)return!1;return String(Z).toLowerCase()==="true"}return f8}var h8,ZZ;function HQ(){if(ZZ)return h8;ZZ=1,h8=d;function U(p){var P=this;this.next=null,this.entry=null,this.finish=function(){Z0(P,p)}}var $;d.WritableState=y;var Y={deprecate:rw()},Z=ZQ(),J=o2().Buffer,G=(typeof c0!=="undefined"?c0:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function w(p){return J.from(p)}function Q(p){return J.isBuffer(p)||p instanceof G}var q=MQ(),z=WQ(),R=z.getHighWaterMark,W=i1().codes,E=W.ERR_INVALID_ARG_TYPE,D=W.ERR_METHOD_NOT_IMPLEMENTED,C=W.ERR_MULTIPLE_CALLBACK,H=W.ERR_STREAM_CANNOT_PIPE,O=W.ERR_STREAM_DESTROYED,X=W.ERR_STREAM_NULL_VALUES,j=W.ERR_STREAM_WRITE_AFTER_END,L=W.ERR_UNKNOWN_ENCODING,I=q.errorOrDestroy;R1()(d,Z);function A(){}function y(p,P,N){if($=$||l1(),p=p||{},typeof N!=="boolean")N=P instanceof $;if(this.objectMode=!!p.objectMode,N)this.objectMode=this.objectMode||!!p.writableObjectMode;this.highWaterMark=R(this,p,"writableHighWaterMark",N),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=p.decodeStrings===!1;this.decodeStrings=!c,this.defaultEncoding=p.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(f){U0(P,f)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=p.emitClose!==!1,this.autoDestroy=!!p.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new U(this)}y.prototype.getBuffer=function p(){var P=this.bufferedRequest,N=[];while(P)N.push(P),P=P.next;return N},function(){try{Object.defineProperty(y.prototype,"buffer",{get:Y.deprecate(function p(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(p){}}();var g;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function")g=Function.prototype[Symbol.hasInstance],Object.defineProperty(d,Symbol.hasInstance,{value:function p(P){if(g.call(this,P))return!0;if(this!==d)return!1;return P&&P._writableState instanceof y}});else g=function p(P){return P instanceof this};function d(p){$=$||l1();var P=this instanceof $;if(!P&&!g.call(d,this))return new d(p);if(this._writableState=new y(p,this,P),this.writable=!0,p){if(typeof p.write==="function")this._write=p.write;if(typeof p.writev==="function")this._writev=p.writev;if(typeof p.destroy==="function")this._destroy=p.destroy;if(typeof p.final==="function")this._final=p.final}Z.call(this)}d.prototype.pipe=function(){I(this,new H)};function k(p,P){var N=new j;I(p,N),j0.nextTick(P,N)}function s(p,P,N,c){var f;if(N===null)f=new X;else if(typeof N!=="string"&&!P.objectMode)f=new E("chunk",["string","Buffer"],N);if(f)return I(p,f),j0.nextTick(c,f),!1;return!0}d.prototype.write=function(p,P,N){var c=this._writableState,f=!1,v=!c.objectMode&&Q(p);if(v&&!J.isBuffer(p))p=w(p);if(typeof P==="function")N=P,P=null;if(v)P="buffer";else if(!P)P=c.defaultEncoding;if(typeof N!=="function")N=A;if(c.ending)k(this,N);else if(v||s(this,c,p,N))c.pendingcb++,f=S(this,c,v,p,P,N);return f},d.prototype.cork=function(){this._writableState.corked++},d.prototype.uncork=function(){var p=this._writableState;if(p.corked){if(p.corked--,!p.writing&&!p.corked&&!p.bufferProcessing&&p.bufferedRequest)$0(this,p)}},d.prototype.setDefaultEncoding=function p(P){if(typeof P==="string")P=P.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((P+"").toLowerCase())>-1))throw new L(P);return this._writableState.defaultEncoding=P,this},Object.defineProperty(d.prototype,"writableBuffer",{enumerable:!1,get:function p(){return this._writableState&&this._writableState.getBuffer()}});function q0(p,P,N){if(!p.objectMode&&p.decodeStrings!==!1&&typeof P==="string")P=J.from(P,N);return P}Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function p(){return this._writableState.highWaterMark}});function S(p,P,N,c,f,v){if(!N){var b=q0(P,c,f);if(c!==b)N=!0,f="buffer",c=b}var e=P.objectMode?1:c.length;P.length+=e;var V=P.length>5===6)return 2;else if(X>>4===14)return 3;else if(X>>3===30)return 4;return X>>6===2?-1:-2}function w(X,j,L){var I=j.length-1;if(I=0){if(A>0)X.lastNeed=A-1;return A}if(--I=0){if(A>0)X.lastNeed=A-2;return A}if(--I=0){if(A>0)if(A===2)A=0;else X.lastNeed=A-3;return A}return 0}function Q(X,j,L){if((j[0]&192)!==128)return X.lastNeed=0,"�";if(X.lastNeed>1&&j.length>1){if((j[1]&192)!==128)return X.lastNeed=1,"�";if(X.lastNeed>2&&j.length>2){if((j[2]&192)!==128)return X.lastNeed=2,"�"}}}function q(X){var j=this.lastTotal-this.lastNeed,L=Q(this,X);if(L!==void 0)return L;if(this.lastNeed<=X.length)return X.copy(this.lastChar,j,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);X.copy(this.lastChar,j,0,X.length),this.lastNeed-=X.length}function z(X,j){var L=w(this,X,j);if(!this.lastNeed)return X.toString("utf8",j);this.lastTotal=L;var I=X.length-(L-this.lastNeed);return X.copy(this.lastChar,0,I),X.toString("utf8",j,I)}function R(X){var j=X&&X.length?this.write(X):"";if(this.lastNeed)return j+"�";return j}function W(X,j){if((X.length-j)%2===0){var L=X.toString("utf16le",j);if(L){var I=L.charCodeAt(L.length-1);if(I>=55296&&I<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=X[X.length-2],this.lastChar[1]=X[X.length-1],L.slice(0,-1)}return L}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=X[X.length-1],X.toString("utf16le",j,X.length-1)}function E(X){var j=X&&X.length?this.write(X):"";if(this.lastNeed){var L=this.lastTotal-this.lastNeed;return j+this.lastChar.toString("utf16le",0,L)}return j}function D(X,j){var L=(X.length-j)%3;if(L===0)return X.toString("base64",j);if(this.lastNeed=3-L,this.lastTotal=3,L===1)this.lastChar[0]=X[X.length-1];else this.lastChar[0]=X[X.length-2],this.lastChar[1]=X[X.length-1];return X.toString("base64",j,X.length-L)}function C(X){var j=X&&X.length?this.write(X):"";if(this.lastNeed)return j+this.lastChar.toString("base64",0,3-this.lastNeed);return j}function H(X){return X.toString(this.encoding)}function O(X){return X&&X.length?this.write(X):""}return d8}var c8,KZ;function c9(){if(KZ)return c8;KZ=1;var U=i1().codes.ERR_STREAM_PREMATURE_CLOSE;function $(G){var w=!1;return function(){if(w)return;w=!0;for(var Q=arguments.length,q=new Array(Q),z=0;z0){if(typeof b!=="string"&&!T.objectMode&&Object.getPrototypeOf(b)!==Z.prototype)b=G(b);if(V)if(T.endEmitted)A(v,new X);else q0(v,T,b,!0);else if(T.ended)A(v,new H);else if(T.destroyed)return!1;else if(T.reading=!1,T.decoder&&!e)if(b=T.decoder.write(b),T.objectMode||b.length!==0)q0(v,T,b,!1);else $0(v,T);else q0(v,T,b,!1)}else if(!V)T.reading=!1,$0(v,T)}return!T.ended&&(T.length=h)v=h;else v--,v|=v>>>1,v|=v>>>2,v|=v>>>4,v|=v>>>8,v|=v>>>16,v++;return v}function a(v,b){if(v<=0||b.length===0&&b.ended)return 0;if(b.objectMode)return 1;if(v!==v)if(b.flowing&&b.length)return b.buffer.head.data.length;else return b.length;if(v>b.highWaterMark)b.highWaterMark=F(v);if(v<=b.length)return v;if(!b.ended)return b.needReadable=!0,0;return b.length}k.prototype.read=function(v){q("read",v),v=parseInt(v,10);var b=this._readableState,e=v;if(v!==0)b.emittedReadable=!1;if(v===0&&b.needReadable&&((b.highWaterMark!==0?b.length>=b.highWaterMark:b.length>0)||b.ended)){if(q("read: emitReadable",b.length,b.ended),b.length===0&&b.ended)N(this);else m(this);return null}if(v=a(v,b),v===0&&b.ended){if(b.length===0)N(this);return null}var V=b.needReadable;if(q("need readable",V),b.length===0||b.length-v0)t=P(v,b);else t=null;if(t===null)b.needReadable=b.length<=b.highWaterMark,v=0;else b.length-=v,b.awaitDrain=0;if(b.length===0){if(!b.ended)b.needReadable=!0;if(e!==v&&b.ended)N(this)}if(t!==null)this.emit("data",t);return t};function U0(v,b){if(q("onEofChunk"),b.ended)return;if(b.decoder){var e=b.decoder.end();if(e&&e.length)b.buffer.push(e),b.length+=b.objectMode?1:e.length}if(b.ended=!0,b.sync)m(v);else if(b.needReadable=!1,!b.emittedReadable)b.emittedReadable=!0,J0(v)}function m(v){var b=v._readableState;if(q("emitReadable",b.needReadable,b.emittedReadable),b.needReadable=!1,!b.emittedReadable)q("emitReadable",b.flowing),b.emittedReadable=!0,j0.nextTick(J0,v)}function J0(v){var b=v._readableState;if(q("emitReadable_",b.destroyed,b.length,b.ended),!b.destroyed&&(b.length||b.ended))v.emit("readable"),b.emittedReadable=!1;b.needReadable=!b.flowing&&!b.ended&&b.length<=b.highWaterMark,p(v)}function $0(v,b){if(!b.readingMore)b.readingMore=!0,j0.nextTick(I0,v,b)}function I0(v,b){while(!b.reading&&!b.ended&&(b.length1&&f(V.pipes,v)!==-1)&&!x)q("false write response, pause",V.awaitDrain),V.awaitDrain++;e.pause()}}function Q0(M0){if(q("onerror",M0),L0(),v.removeListener("error",Q0),$(v,"error")===0)A(v,M0)}g(v,"error",Q0);function w0(){v.removeListener("finish",K0),L0()}v.once("close",w0);function K0(){q("onfinish"),v.removeListener("close",w0),L0()}v.once("finish",K0);function L0(){q("unpipe"),e.unpipe(v)}if(v.emit("pipe",e),!V.flowing)q("pipe resume"),e.resume();return v};function i(v){return function b(){var e=v._readableState;if(q("pipeOnDrain",e.awaitDrain),e.awaitDrain)e.awaitDrain--;if(e.awaitDrain===0&&$(v,"data"))e.flowing=!0,p(v)}}k.prototype.unpipe=function(v){var b=this._readableState,e={hasUnpiped:!1};if(b.pipesCount===0)return this;if(b.pipesCount===1){if(v&&v!==b.pipes)return this;if(!v)v=b.pipes;if(b.pipes=null,b.pipesCount=0,b.flowing=!1,v)v.emit("unpipe",this,e);return this}if(!v){var{pipes:V,pipesCount:t}=b;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var T=0;T0,V.flowing!==!1)this.resume()}else if(v==="readable"){if(!V.endEmitted&&!V.readableListening){if(V.readableListening=V.needReadable=!0,V.flowing=!1,V.emittedReadable=!1,q("on readable",V.length,V.reading),V.length)m(this);else if(!V.reading)j0.nextTick(r,this)}}return e},k.prototype.addListener=k.prototype.on,k.prototype.removeListener=function(v,b){var e=Y.prototype.removeListener.call(this,v,b);if(v==="readable")j0.nextTick(_,this);return e},k.prototype.removeAllListeners=function(v){var b=Y.prototype.removeAllListeners.apply(this,arguments);if(v==="readable"||v===void 0)j0.nextTick(_,this);return b};function _(v){var b=v._readableState;if(b.readableListening=v.listenerCount("readable")>0,b.resumeScheduled&&!b.paused)b.flowing=!0;else if(v.listenerCount("data")>0)v.resume()}function r(v){q("readable nexttick read 0"),v.read(0)}k.prototype.resume=function(){var v=this._readableState;if(!v.flowing)q("resume"),v.flowing=!v.readableListening,n(this,v);return v.paused=!1,this};function n(v,b){if(!b.resumeScheduled)b.resumeScheduled=!0,j0.nextTick(Z0,v,b)}function Z0(v,b){if(q("resume",b.reading),!b.reading)v.read(0);if(b.resumeScheduled=!1,v.emit("resume"),p(v),b.flowing&&!b.reading)v.read(0)}k.prototype.pause=function(){if(q("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)q("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState.paused=!0,this};function p(v){var b=v._readableState;q("flow",b.flowing);while(b.flowing&&v.read()!==null);}if(k.prototype.wrap=function(v){var b=this,e=this._readableState,V=!1;v.on("end",function(){if(q("wrapped end"),e.decoder&&!e.ended){var K=e.decoder.end();if(K&&K.length)b.push(K)}b.push(null)}),v.on("data",function(K){if(q("wrapped data"),e.decoder)K=e.decoder.write(K);if(e.objectMode&&(K===null||K===void 0))return;else if(!e.objectMode&&(!K||!K.length))return;var B=b.push(K);if(!B)V=!0,v.pause()});for(var t in v)if(this[t]===void 0&&typeof v[t]==="function")this[t]=function K(B){return function M(){return v[B].apply(v,arguments)}}(t);for(var T=0;T=b.length){if(b.decoder)e=b.buffer.join("");else if(b.buffer.length===1)e=b.buffer.first();else e=b.buffer.concat(b.length);b.buffer.clear()}else e=b.buffer.consume(v,b.decoder);return e}function N(v){var b=v._readableState;if(q("endReadable",b.endEmitted),!b.endEmitted)b.ended=!0,j0.nextTick(c,b,v)}function c(v,b){if(q("endReadableNT",v.endEmitted,v.length),!v.endEmitted&&v.length===0){if(v.endEmitted=!0,b.readable=!1,b.emit("end"),v.autoDestroy){var e=b._writableState;if(!e||e.autoDestroy&&e.finished)b.destroy()}}}if(typeof Symbol==="function")k.from=function(v,b){if(I===void 0)I=ow();return I(k,v,b)};function f(v,b){for(var e=0,V=v.length;e0;return Q(j,I,A,function(y){if(!O)O=y;if(y)X.forEach(q);if(I)return;X.forEach(q),H(O)})});return D.reduce(z)}return r8=W,r8}var s8,VZ;function m9(){if(VZ)return s8;VZ=1,s8=Y;var U=x9().EventEmitter,$=R1();$(Y,U),Y.Readable=jQ(),Y.Writable=HQ(),Y.Duplex=l1(),Y.Transform=zQ(),Y.PassThrough=tw(),Y.finished=c9(),Y.pipeline=ew(),Y.Stream=Y;function Y(){U.call(this)}return Y.prototype.pipe=function(Z,J){var G=this;function w(D){if(Z.writable){if(Z.write(D)===!1&&G.pause)G.pause()}}G.on("data",w);function Q(){if(G.readable&&G.resume)G.resume()}if(Z.on("drain",Q),!Z._isStdio&&(!J||J.end!==!1))G.on("end",z),G.on("close",R);var q=!1;function z(){if(q)return;q=!0,Z.end()}function R(){if(q)return;if(q=!0,typeof Z.destroy==="function")Z.destroy()}function W(D){if(E(),U.listenerCount(this,"error")===0)throw D}G.on("error",W),Z.on("error",W);function E(){G.removeListener("data",w),Z.removeListener("drain",Q),G.removeListener("end",z),G.removeListener("close",R),G.removeListener("error",W),Z.removeListener("error",W),G.removeListener("end",E),G.removeListener("close",E),Z.removeListener("close",E)}return G.on("end",E),G.on("close",E),Z.on("close",E),Z.emit("pipe",G),Z},s8}var MZ;function UB(){if(MZ)return _6;return MZ=1,function(U){(function($){$.parser=function(P,N){return new Z(P,N)},$.SAXParser=Z,$.SAXStream=R,$.createStream=z,$.MAX_BUFFER_LENGTH=65536;var Y=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];$.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function Z(P,N){if(!(this instanceof Z))return new Z(P,N);var c=this;if(G(c),c.q=c.c="",c.bufferCheckPosition=$.MAX_BUFFER_LENGTH,c.opt=N||{},c.opt.lowercase=c.opt.lowercase||c.opt.lowercasetags,c.looseCase=c.opt.lowercase?"toLowerCase":"toUpperCase",c.tags=[],c.closed=c.closedRoot=c.sawRoot=!1,c.tag=c.error=null,c.strict=!!P,c.noscript=!!(P||c.opt.noscript),c.state=k.BEGIN,c.strictEntities=c.opt.strictEntities,c.ENTITIES=c.strictEntities?Object.create($.XML_ENTITIES):Object.create($.ENTITIES),c.attribList=[],c.opt.xmlns)c.ns=Object.create(H);if(c.trackPosition=c.opt.position!==!1,c.trackPosition)c.position=c.line=c.column=0;q0(c,"onready")}if(!Object.create)Object.create=function(P){function N(){}N.prototype=P;var c=new N;return c};if(!Object.keys)Object.keys=function(P){var N=[];for(var c in P)if(P.hasOwnProperty(c))N.push(c);return N};function J(P){var N=Math.max($.MAX_BUFFER_LENGTH,10),c=0;for(var f=0,v=Y.length;fN)switch(Y[f]){case"textNode":h(P);break;case"cdata":S(P,"oncdata",P.cdata),P.cdata="";break;case"script":S(P,"onscript",P.script),P.script="";break;default:a(P,"Max buffer length exceeded: "+Y[f])}c=Math.max(c,b)}var e=$.MAX_BUFFER_LENGTH-c;P.bufferCheckPosition=e+P.position}function G(P){for(var N=0,c=Y.length;N"||I(P)}function g(P,N){return P.test(N)}function d(P,N){return!g(P,N)}var k=0;$.STATE={BEGIN:k++,BEGIN_WHITESPACE:k++,TEXT:k++,TEXT_ENTITY:k++,OPEN_WAKA:k++,SGML_DECL:k++,SGML_DECL_QUOTED:k++,DOCTYPE:k++,DOCTYPE_QUOTED:k++,DOCTYPE_DTD:k++,DOCTYPE_DTD_QUOTED:k++,COMMENT_STARTING:k++,COMMENT:k++,COMMENT_ENDING:k++,COMMENT_ENDED:k++,CDATA:k++,CDATA_ENDING:k++,CDATA_ENDING_2:k++,PROC_INST:k++,PROC_INST_BODY:k++,PROC_INST_ENDING:k++,OPEN_TAG:k++,OPEN_TAG_SLASH:k++,ATTRIB:k++,ATTRIB_NAME:k++,ATTRIB_NAME_SAW_WHITE:k++,ATTRIB_VALUE:k++,ATTRIB_VALUE_QUOTED:k++,ATTRIB_VALUE_CLOSED:k++,ATTRIB_VALUE_UNQUOTED:k++,ATTRIB_VALUE_ENTITY_Q:k++,ATTRIB_VALUE_ENTITY_U:k++,CLOSE_TAG:k++,CLOSE_TAG_SAW_WHITE:k++,SCRIPT:k++,SCRIPT_ENDING:k++},$.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},$.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys($.ENTITIES).forEach(function(P){var N=$.ENTITIES[P],c=typeof N==="number"?String.fromCharCode(N):N;$.ENTITIES[P]=c});for(var s in $.STATE)$.STATE[$.STATE[s]]=s;k=$.STATE;function q0(P,N,c){P[N]&&P[N](c)}function S(P,N,c){if(P.textNode)h(P);q0(P,N,c)}function h(P){if(P.textNode=F(P.opt,P.textNode),P.textNode)q0(P,"ontext",P.textNode);P.textNode=""}function F(P,N){if(P.trim)N=N.trim();if(P.normalize)N=N.replace(/\s+/g," ");return N}function a(P,N){if(h(P),P.trackPosition)N+=` + `)+" "+n[1];return n[0]+r+" "+_.join(", ")+" "+n[1]}$.types=oq();function O(_){return Array.isArray(_)}$.isArray=O;function V(_){return typeof _==="boolean"}$.isBoolean=V;function j(_){return _===null}$.isNull=j;function M(_){return _==null}$.isNullOrUndefined=M;function L(_){return typeof _==="number"}$.isNumber=L;function A(_){return typeof _==="string"}$.isString=A;function y(_){return typeof _==="symbol"}$.isSymbol=y;function g(_){return _===void 0}$.isUndefined=g;function d(_){return E(_)&&N(_)==="[object RegExp]"}$.isRegExp=d,$.types.isRegExp=d;function E(_){return typeof _==="object"&&_!==null}$.isObject=E;function s(_){return E(_)&&N(_)==="[object Date]"}$.isDate=s,$.types.isDate=s;function V0(_){return E(_)&&(N(_)==="[object Error]"||_ instanceof Error)}$.isError=V0,$.types.isNativeError=V0;function S(_){return typeof _==="function"}$.isFunction=S;function h(_){return _===null||typeof _==="boolean"||typeof _==="number"||typeof _==="string"||typeof _==="symbol"||typeof _>"u"}$.isPrimitive=h,$.isBuffer=tq();function N(_){return Object.prototype.toString.call(_)}function a(_){return _<10?"0"+_.toString(10):_.toString(10)}var $0=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function m(){var _=new Date,r=[a(_.getHours()),a(_.getMinutes()),a(_.getSeconds())].join(":");return[_.getDate(),$0[_.getMonth()],r].join(" ")}$.log=function(){console.log("%s - %s",m(),$.format.apply($,arguments))},$.inherits=R2(),$._extend=function(_,r){if(!r||!E(r))return _;var n=Object.keys(r),Z0=n.length;while(Z0--)_[n[Z0]]=r[n[Z0]];return _};function J0(_,r){return Object.prototype.hasOwnProperty.call(_,r)}var U0=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;$.promisify=function(r){if(typeof r!=="function")throw TypeError('The "original" argument must be of type Function');if(U0&&r[U0]){var n=r[U0];if(typeof n!=="function")throw TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(n,U0,{value:n,enumerable:!1,writable:!1,configurable:!0}),n}function n(){var Z0,p,P=new Promise(function(f,v){Z0=f,p=v}),R=[];for(var c=0;c0)this.tail.next=V;else this.head=V;this.tail=V,++this.length}},{key:"unshift",value:function(O){var V={data:O,next:this.head};if(this.length===0)this.tail=V;this.head=V,++this.length}},{key:"shift",value:function(){if(this.length===0)return;var O=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,O}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(O){if(this.length===0)return"";var V=this.head,j=""+V.data;while(V=V.next)j+=O+V.data;return j}},{key:"concat",value:function(O){if(this.length===0)return F.alloc(0);var V=F.allocUnsafe(O>>>0),j=this.head,M=0;while(j)D(j.data,V,M),M+=j.data.length,j=j.next;return V}},{key:"consume",value:function(O,V){var j;if(OL.length?L.length:O;if(A===L.length)M+=L;else M+=L.slice(0,O);if(O-=A,O===0){if(A===L.length)if(++j,V.next)this.head=V.next;else this.head=this.tail=null;else this.head=V,V.data=L.slice(A);break}++j}return this.length-=j,M}},{key:"_getBuffer",value:function(O){var V=F.allocUnsafe(O),j=this.head,M=1;j.data.copy(V),O-=j.data.length;while(j=j.next){var L=j.data,A=O>L.length?L.length:O;if(L.copy(V,V.length-O,0,A),O-=A,O===0){if(A===L.length)if(++M,j.next)this.head=j.next;else this.head=this.tail=null;else this.head=j,j.data=L.slice(A);break}++M}return this.length-=M,V}},{key:k,value:function(O,V){return W(this,U(U({},V),{},{depth:0,customInspect:!1}))}}]),C}(),y6}var b6,eY;function wQ(){if(eY)return b6;eY=1;function $(X,Q){var B=this,F=this._readableState&&this._readableState.destroyed,z=this._writableState&&this._writableState.destroyed;if(F||z){if(Q)Q(X);else if(X){if(!this._writableState)j0.nextTick(J,this,X);else if(!this._writableState.errorEmitted)this._writableState.errorEmitted=!0,j0.nextTick(J,this,X)}return this}if(this._readableState)this._readableState.destroyed=!0;if(this._writableState)this._writableState.destroyed=!0;return this._destroy(X||null,function(W){if(!Q&&W)if(!B._writableState)j0.nextTick(U,B,W);else if(!B._writableState.errorEmitted)B._writableState.errorEmitted=!0,j0.nextTick(U,B,W);else j0.nextTick(Y,B);else if(Q)j0.nextTick(Y,B),Q(W);else j0.nextTick(Y,B)}),this}function U(X,Q){J(X,Q),Y(X)}function Y(X){if(X._writableState&&!X._writableState.emitClose)return;if(X._readableState&&!X._readableState.emitClose)return;X.emit("close")}function Z(){if(this._readableState)this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1;if(this._writableState)this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1}function J(X,Q){X.emit("error",Q)}function G(X,Q){var{_readableState:B,_writableState:F}=X;if(B&&B.autoDestroy||F&&F.autoDestroy)X.destroy(Q);else X.emit("error",Q)}return b6={destroy:$,undestroy:Z,errorOrDestroy:G},b6}var g6={},$Z;function i2(){if($Z)return g6;$Z=1;function $(Q,B){Q.prototype=Object.create(B.prototype),Q.prototype.constructor=Q,Q.__proto__=B}var U={};function Y(Q,B,F){if(!F)F=Error;function z(k,D,C){if(typeof B==="string")return B;else return B(k,D,C)}var W=function(k){$(D,k);function D(C,H,O){return k.call(this,z(C,H,O))||this}return D}(F);W.prototype.name=F.name,W.prototype.code=Q,U[Q]=W}function Z(Q,B){if(Array.isArray(Q)){var F=Q.length;if(Q=Q.map(function(z){return String(z)}),F>2)return"one of ".concat(B," ").concat(Q.slice(0,F-1).join(", "),", or ")+Q[F-1];else if(F===2)return"one of ".concat(B," ").concat(Q[0]," or ").concat(Q[1]);else return"of ".concat(B," ").concat(Q[0])}else return"of ".concat(B," ").concat(String(Q))}function J(Q,B,F){return Q.substr(0,B.length)===B}function G(Q,B,F){if(F===void 0||F>Q.length)F=Q.length;return Q.substring(F-B.length,F)===B}function X(Q,B,F){if(typeof F!=="number")F=0;if(F+B.length>Q.length)return!1;else return Q.indexOf(B,F)!==-1}return Y("ERR_INVALID_OPT_VALUE",function(Q,B){return'The value "'+B+'" is invalid for option "'+Q+'"'},TypeError),Y("ERR_INVALID_ARG_TYPE",function(Q,B,F){var z;if(typeof B==="string"&&J(B,"not "))z="must not be",B=B.replace(/^not /,"");else z="must be";var W;if(G(Q," argument"))W="The ".concat(Q," ").concat(z," ").concat(Z(B,"type"));else{var k=X(Q,".")?"property":"argument";W='The "'.concat(Q,'" ').concat(k," ").concat(z," ").concat(Z(B,"type"))}return W+=". Received type ".concat(typeof F),W},TypeError),Y("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),Y("ERR_METHOD_NOT_IMPLEMENTED",function(Q){return"The "+Q+" method is not implemented"}),Y("ERR_STREAM_PREMATURE_CLOSE","Premature close"),Y("ERR_STREAM_DESTROYED",function(Q){return"Cannot call "+Q+" after a stream was destroyed"}),Y("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),Y("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),Y("ERR_STREAM_WRITE_AFTER_END","write after end"),Y("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),Y("ERR_UNKNOWN_ENCODING",function(Q){return"Unknown encoding: "+Q},TypeError),Y("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),g6.codes=U,g6}var x6,UZ;function WQ(){if(UZ)return x6;UZ=1;var $=i2().codes.ERR_INVALID_OPT_VALUE;function U(Z,J,G){return Z.highWaterMark!=null?Z.highWaterMark:J?Z[G]:null}function Y(Z,J,G,X){var Q=U(J,X,G);if(Q!=null){if(!(isFinite(Q)&&Math.floor(Q)===Q)||Q<0){var B=X?G:"highWaterMark";throw new $(B,Q)}return Math.floor(Q)}return Z.objectMode?16:16384}return x6={getHighWaterMark:Y},x6}var f6,YZ;function $X(){if(YZ)return f6;YZ=1,f6=$;function $(Y,Z){if(U("noDeprecation"))return Y;var J=!1;function G(){if(!J){if(U("throwDeprecation"))throw Error(Z);else if(U("traceDeprecation"))console.trace(Z);else console.warn(Z);J=!0}return Y.apply(this,arguments)}return G}function U(Y){try{if(!c0.localStorage)return!1}catch(J){return!1}var Z=c0.localStorage[Y];if(Z==null)return!1;return String(Z).toLowerCase()==="true"}return f6}var h6,ZZ;function HQ(){if(ZZ)return h6;ZZ=1,h6=d;function $(p){var P=this;this.next=null,this.entry=null,this.finish=function(){Z0(P,p)}}var U;d.WritableState=y;var Y={deprecate:$X()},Z=ZQ(),J=o1().Buffer,G=(typeof c0<"u"?c0:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function X(p){return J.from(p)}function Q(p){return J.isBuffer(p)||p instanceof G}var B=wQ(),F=WQ(),z=F.getHighWaterMark,W=i2().codes,k=W.ERR_INVALID_ARG_TYPE,D=W.ERR_METHOD_NOT_IMPLEMENTED,C=W.ERR_MULTIPLE_CALLBACK,H=W.ERR_STREAM_CANNOT_PIPE,O=W.ERR_STREAM_DESTROYED,V=W.ERR_STREAM_NULL_VALUES,j=W.ERR_STREAM_WRITE_AFTER_END,M=W.ERR_UNKNOWN_ENCODING,L=B.errorOrDestroy;R2()(d,Z);function A(){}function y(p,P,R){if(U=U||l2(),p=p||{},typeof R!=="boolean")R=P instanceof U;if(this.objectMode=!!p.objectMode,R)this.objectMode=this.objectMode||!!p.writableObjectMode;this.highWaterMark=z(this,p,"writableHighWaterMark",R),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=p.decodeStrings===!1;this.decodeStrings=!c,this.defaultEncoding=p.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(f){$0(P,f)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=p.emitClose!==!1,this.autoDestroy=!!p.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new $(this)}y.prototype.getBuffer=function(){var P=this.bufferedRequest,R=[];while(P)R.push(P),P=P.next;return R},function(){try{Object.defineProperty(y.prototype,"buffer",{get:Y.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(p){}}();var g;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function")g=Function.prototype[Symbol.hasInstance],Object.defineProperty(d,Symbol.hasInstance,{value:function(P){if(g.call(this,P))return!0;if(this!==d)return!1;return P&&P._writableState instanceof y}});else g=function(P){return P instanceof this};function d(p){U=U||l2();var P=this instanceof U;if(!P&&!g.call(d,this))return new d(p);if(this._writableState=new y(p,this,P),this.writable=!0,p){if(typeof p.write==="function")this._write=p.write;if(typeof p.writev==="function")this._writev=p.writev;if(typeof p.destroy==="function")this._destroy=p.destroy;if(typeof p.final==="function")this._final=p.final}Z.call(this)}d.prototype.pipe=function(){L(this,new H)};function E(p,P){var R=new j;L(p,R),j0.nextTick(P,R)}function s(p,P,R,c){var f;if(R===null)f=new V;else if(typeof R!=="string"&&!P.objectMode)f=new k("chunk",["string","Buffer"],R);if(f)return L(p,f),j0.nextTick(c,f),!1;return!0}d.prototype.write=function(p,P,R){var c=this._writableState,f=!1,v=!c.objectMode&&Q(p);if(v&&!J.isBuffer(p))p=X(p);if(typeof P==="function")R=P,P=null;if(v)P="buffer";else if(!P)P=c.defaultEncoding;if(typeof R!=="function")R=A;if(c.ending)E(this,R);else if(v||s(this,c,p,R))c.pendingcb++,f=S(this,c,v,p,P,R);return f},d.prototype.cork=function(){this._writableState.corked++},d.prototype.uncork=function(){var p=this._writableState;if(p.corked){if(p.corked--,!p.writing&&!p.corked&&!p.bufferProcessing&&p.bufferedRequest)U0(this,p)}},d.prototype.setDefaultEncoding=function(P){if(typeof P==="string")P=P.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((P+"").toLowerCase())>-1))throw new M(P);return this._writableState.defaultEncoding=P,this},Object.defineProperty(d.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function V0(p,P,R){if(!p.objectMode&&p.decodeStrings!==!1&&typeof P==="string")P=J.from(P,R);return P}Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function S(p,P,R,c,f,v){if(!R){var b=V0(P,c,f);if(c!==b)R=!0,f="buffer",c=b}var e=P.objectMode?1:c.length;P.length+=e;var I=P.length>5===6)return 2;else if(V>>4===14)return 3;else if(V>>3===30)return 4;return V>>6===2?-1:-2}function X(V,j,M){var L=j.length-1;if(L=0){if(A>0)V.lastNeed=A-1;return A}if(--L=0){if(A>0)V.lastNeed=A-2;return A}if(--L=0){if(A>0)if(A===2)A=0;else V.lastNeed=A-3;return A}return 0}function Q(V,j,M){if((j[0]&192)!==128)return V.lastNeed=0,"�";if(V.lastNeed>1&&j.length>1){if((j[1]&192)!==128)return V.lastNeed=1,"�";if(V.lastNeed>2&&j.length>2){if((j[2]&192)!==128)return V.lastNeed=2,"�"}}}function B(V){var j=this.lastTotal-this.lastNeed,M=Q(this,V);if(M!==void 0)return M;if(this.lastNeed<=V.length)return V.copy(this.lastChar,j,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);V.copy(this.lastChar,j,0,V.length),this.lastNeed-=V.length}function F(V,j){var M=X(this,V,j);if(!this.lastNeed)return V.toString("utf8",j);this.lastTotal=M;var L=V.length-(M-this.lastNeed);return V.copy(this.lastChar,0,L),V.toString("utf8",j,L)}function z(V){var j=V&&V.length?this.write(V):"";if(this.lastNeed)return j+"�";return j}function W(V,j){if((V.length-j)%2===0){var M=V.toString("utf16le",j);if(M){var L=M.charCodeAt(M.length-1);if(L>=55296&&L<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=V[V.length-2],this.lastChar[1]=V[V.length-1],M.slice(0,-1)}return M}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=V[V.length-1],V.toString("utf16le",j,V.length-1)}function k(V){var j=V&&V.length?this.write(V):"";if(this.lastNeed){var M=this.lastTotal-this.lastNeed;return j+this.lastChar.toString("utf16le",0,M)}return j}function D(V,j){var M=(V.length-j)%3;if(M===0)return V.toString("base64",j);if(this.lastNeed=3-M,this.lastTotal=3,M===1)this.lastChar[0]=V[V.length-1];else this.lastChar[0]=V[V.length-2],this.lastChar[1]=V[V.length-1];return V.toString("base64",j,V.length-M)}function C(V){var j=V&&V.length?this.write(V):"";if(this.lastNeed)return j+this.lastChar.toString("base64",0,3-this.lastNeed);return j}function H(V){return V.toString(this.encoding)}function O(V){return V&&V.length?this.write(V):""}return d6}var c6,KZ;function c9(){if(KZ)return c6;KZ=1;var $=i2().codes.ERR_STREAM_PREMATURE_CLOSE;function U(G){var X=!1;return function(){if(X)return;X=!0;for(var Q=arguments.length,B=Array(Q),F=0;F0){if(typeof b!=="string"&&!T.objectMode&&Object.getPrototypeOf(b)!==Z.prototype)b=G(b);if(I)if(T.endEmitted)A(v,new V);else V0(v,T,b,!0);else if(T.ended)A(v,new H);else if(T.destroyed)return!1;else if(T.reading=!1,T.decoder&&!e)if(b=T.decoder.write(b),T.objectMode||b.length!==0)V0(v,T,b,!1);else U0(v,T);else V0(v,T,b,!1)}else if(!I)T.reading=!1,U0(v,T)}return!T.ended&&(T.length=h)v=h;else v--,v|=v>>>1,v|=v>>>2,v|=v>>>4,v|=v>>>8,v|=v>>>16,v++;return v}function a(v,b){if(v<=0||b.length===0&&b.ended)return 0;if(b.objectMode)return 1;if(v!==v)if(b.flowing&&b.length)return b.buffer.head.data.length;else return b.length;if(v>b.highWaterMark)b.highWaterMark=N(v);if(v<=b.length)return v;if(!b.ended)return b.needReadable=!0,0;return b.length}E.prototype.read=function(v){B("read",v),v=parseInt(v,10);var b=this._readableState,e=v;if(v!==0)b.emittedReadable=!1;if(v===0&&b.needReadable&&((b.highWaterMark!==0?b.length>=b.highWaterMark:b.length>0)||b.ended)){if(B("read: emitReadable",b.length,b.ended),b.length===0&&b.ended)R(this);else m(this);return null}if(v=a(v,b),v===0&&b.ended){if(b.length===0)R(this);return null}var I=b.needReadable;if(B("need readable",I),b.length===0||b.length-v0)t=P(v,b);else t=null;if(t===null)b.needReadable=b.length<=b.highWaterMark,v=0;else b.length-=v,b.awaitDrain=0;if(b.length===0){if(!b.ended)b.needReadable=!0;if(e!==v&&b.ended)R(this)}if(t!==null)this.emit("data",t);return t};function $0(v,b){if(B("onEofChunk"),b.ended)return;if(b.decoder){var e=b.decoder.end();if(e&&e.length)b.buffer.push(e),b.length+=b.objectMode?1:e.length}if(b.ended=!0,b.sync)m(v);else if(b.needReadable=!1,!b.emittedReadable)b.emittedReadable=!0,J0(v)}function m(v){var b=v._readableState;if(B("emitReadable",b.needReadable,b.emittedReadable),b.needReadable=!1,!b.emittedReadable)B("emitReadable",b.flowing),b.emittedReadable=!0,j0.nextTick(J0,v)}function J0(v){var b=v._readableState;if(B("emitReadable_",b.destroyed,b.length,b.ended),!b.destroyed&&(b.length||b.ended))v.emit("readable"),b.emittedReadable=!1;b.needReadable=!b.flowing&&!b.ended&&b.length<=b.highWaterMark,p(v)}function U0(v,b){if(!b.readingMore)b.readingMore=!0,j0.nextTick(L0,v,b)}function L0(v,b){while(!b.reading&&!b.ended&&(b.length1&&f(I.pipes,v)!==-1)&&!x)B("false write response, pause",I.awaitDrain),I.awaitDrain++;e.pause()}}function Q0(w0){if(B("onerror",w0),M0(),v.removeListener("error",Q0),U(v,"error")===0)A(v,w0)}g(v,"error",Q0);function q0(){v.removeListener("finish",K0),M0()}v.once("close",q0);function K0(){B("onfinish"),v.removeListener("close",q0),M0()}v.once("finish",K0);function M0(){B("unpipe"),e.unpipe(v)}if(v.emit("pipe",e),!I.flowing)B("pipe resume"),e.resume();return v};function i(v){return function(){var e=v._readableState;if(B("pipeOnDrain",e.awaitDrain),e.awaitDrain)e.awaitDrain--;if(e.awaitDrain===0&&U(v,"data"))e.flowing=!0,p(v)}}E.prototype.unpipe=function(v){var b=this._readableState,e={hasUnpiped:!1};if(b.pipesCount===0)return this;if(b.pipesCount===1){if(v&&v!==b.pipes)return this;if(!v)v=b.pipes;if(b.pipes=null,b.pipesCount=0,b.flowing=!1,v)v.emit("unpipe",this,e);return this}if(!v){var{pipes:I,pipesCount:t}=b;b.pipes=null,b.pipesCount=0,b.flowing=!1;for(var T=0;T0,I.flowing!==!1)this.resume()}else if(v==="readable"){if(!I.endEmitted&&!I.readableListening){if(I.readableListening=I.needReadable=!0,I.flowing=!1,I.emittedReadable=!1,B("on readable",I.length,I.reading),I.length)m(this);else if(!I.reading)j0.nextTick(r,this)}}return e},E.prototype.addListener=E.prototype.on,E.prototype.removeListener=function(v,b){var e=Y.prototype.removeListener.call(this,v,b);if(v==="readable")j0.nextTick(_,this);return e},E.prototype.removeAllListeners=function(v){var b=Y.prototype.removeAllListeners.apply(this,arguments);if(v==="readable"||v===void 0)j0.nextTick(_,this);return b};function _(v){var b=v._readableState;if(b.readableListening=v.listenerCount("readable")>0,b.resumeScheduled&&!b.paused)b.flowing=!0;else if(v.listenerCount("data")>0)v.resume()}function r(v){B("readable nexttick read 0"),v.read(0)}E.prototype.resume=function(){var v=this._readableState;if(!v.flowing)B("resume"),v.flowing=!v.readableListening,n(this,v);return v.paused=!1,this};function n(v,b){if(!b.resumeScheduled)b.resumeScheduled=!0,j0.nextTick(Z0,v,b)}function Z0(v,b){if(B("resume",b.reading),!b.reading)v.read(0);if(b.resumeScheduled=!1,v.emit("resume"),p(v),b.flowing&&!b.reading)v.read(0)}E.prototype.pause=function(){if(B("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)B("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState.paused=!0,this};function p(v){var b=v._readableState;B("flow",b.flowing);while(b.flowing&&v.read()!==null);}if(E.prototype.wrap=function(v){var b=this,e=this._readableState,I=!1;v.on("end",function(){if(B("wrapped end"),e.decoder&&!e.ended){var K=e.decoder.end();if(K&&K.length)b.push(K)}b.push(null)}),v.on("data",function(K){if(B("wrapped data"),e.decoder)K=e.decoder.write(K);if(e.objectMode&&(K===null||K===void 0))return;else if(!e.objectMode&&(!K||!K.length))return;var q=b.push(K);if(!q)I=!0,v.pause()});for(var t in v)if(this[t]===void 0&&typeof v[t]==="function")this[t]=function(q){return function(){return v[q].apply(v,arguments)}}(t);for(var T=0;T=b.length){if(b.decoder)e=b.buffer.join("");else if(b.buffer.length===1)e=b.buffer.first();else e=b.buffer.concat(b.length);b.buffer.clear()}else e=b.buffer.consume(v,b.decoder);return e}function R(v){var b=v._readableState;if(B("endReadable",b.endEmitted),!b.endEmitted)b.ended=!0,j0.nextTick(c,b,v)}function c(v,b){if(B("endReadableNT",v.endEmitted,v.length),!v.endEmitted&&v.length===0){if(v.endEmitted=!0,b.readable=!1,b.emit("end"),v.autoDestroy){var e=b._writableState;if(!e||e.autoDestroy&&e.finished)b.destroy()}}}if(typeof Symbol==="function")E.from=function(v,b){if(L===void 0)L=ZX();return L(E,v,b)};function f(v,b){for(var e=0,I=v.length;e0;return Q(j,L,A,function(y){if(!O)O=y;if(y)V.forEach(B);if(L)return;V.forEach(B),H(O)})});return D.reduce(F)}return r6=W,r6}var s6,IZ;function m9(){if(IZ)return s6;IZ=1,s6=Y;var $=x9().EventEmitter,U=R2();U(Y,$),Y.Readable=jQ(),Y.Writable=HQ(),Y.Duplex=l2(),Y.Transform=zQ(),Y.PassThrough=QX(),Y.finished=c9(),Y.pipeline=JX(),Y.Stream=Y;function Y(){$.call(this)}return Y.prototype.pipe=function(Z,J){var G=this;function X(D){if(Z.writable){if(Z.write(D)===!1&&G.pause)G.pause()}}G.on("data",X);function Q(){if(G.readable&&G.resume)G.resume()}if(Z.on("drain",Q),!Z._isStdio&&(!J||J.end!==!1))G.on("end",F),G.on("close",z);var B=!1;function F(){if(B)return;B=!0,Z.end()}function z(){if(B)return;if(B=!0,typeof Z.destroy==="function")Z.destroy()}function W(D){if(k(),$.listenerCount(this,"error")===0)throw D}G.on("error",W),Z.on("error",W);function k(){G.removeListener("data",X),Z.removeListener("drain",Q),G.removeListener("end",F),G.removeListener("close",z),G.removeListener("error",W),Z.removeListener("error",W),G.removeListener("end",k),G.removeListener("close",k),Z.removeListener("close",k)}return G.on("end",k),G.on("close",k),Z.on("close",k),Z.emit("pipe",G),Z},s6}var wZ;function GX(){if(wZ)return _8;return wZ=1,function($){(function(U){U.parser=function(P,R){return new Z(P,R)},U.SAXParser=Z,U.SAXStream=z,U.createStream=F,U.MAX_BUFFER_LENGTH=65536;var Y=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];U.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function Z(P,R){if(!(this instanceof Z))return new Z(P,R);var c=this;if(G(c),c.q=c.c="",c.bufferCheckPosition=U.MAX_BUFFER_LENGTH,c.opt=R||{},c.opt.lowercase=c.opt.lowercase||c.opt.lowercasetags,c.looseCase=c.opt.lowercase?"toLowerCase":"toUpperCase",c.tags=[],c.closed=c.closedRoot=c.sawRoot=!1,c.tag=c.error=null,c.strict=!!P,c.noscript=!!(P||c.opt.noscript),c.state=E.BEGIN,c.strictEntities=c.opt.strictEntities,c.ENTITIES=c.strictEntities?Object.create(U.XML_ENTITIES):Object.create(U.ENTITIES),c.attribList=[],c.opt.xmlns)c.ns=Object.create(H);if(c.trackPosition=c.opt.position!==!1,c.trackPosition)c.position=c.line=c.column=0;V0(c,"onready")}if(!Object.create)Object.create=function(P){function R(){}R.prototype=P;var c=new R;return c};if(!Object.keys)Object.keys=function(P){var R=[];for(var c in P)if(P.hasOwnProperty(c))R.push(c);return R};function J(P){var R=Math.max(U.MAX_BUFFER_LENGTH,10),c=0;for(var f=0,v=Y.length;fR)switch(Y[f]){case"textNode":h(P);break;case"cdata":S(P,"oncdata",P.cdata),P.cdata="";break;case"script":S(P,"onscript",P.script),P.script="";break;default:a(P,"Max buffer length exceeded: "+Y[f])}c=Math.max(c,b)}var e=U.MAX_BUFFER_LENGTH-c;P.bufferCheckPosition=e+P.position}function G(P){for(var R=0,c=Y.length;R"||L(P)}function g(P,R){return P.test(R)}function d(P,R){return!g(P,R)}var E=0;U.STATE={BEGIN:E++,BEGIN_WHITESPACE:E++,TEXT:E++,TEXT_ENTITY:E++,OPEN_WAKA:E++,SGML_DECL:E++,SGML_DECL_QUOTED:E++,DOCTYPE:E++,DOCTYPE_QUOTED:E++,DOCTYPE_DTD:E++,DOCTYPE_DTD_QUOTED:E++,COMMENT_STARTING:E++,COMMENT:E++,COMMENT_ENDING:E++,COMMENT_ENDED:E++,CDATA:E++,CDATA_ENDING:E++,CDATA_ENDING_2:E++,PROC_INST:E++,PROC_INST_BODY:E++,PROC_INST_ENDING:E++,OPEN_TAG:E++,OPEN_TAG_SLASH:E++,ATTRIB:E++,ATTRIB_NAME:E++,ATTRIB_NAME_SAW_WHITE:E++,ATTRIB_VALUE:E++,ATTRIB_VALUE_QUOTED:E++,ATTRIB_VALUE_CLOSED:E++,ATTRIB_VALUE_UNQUOTED:E++,ATTRIB_VALUE_ENTITY_Q:E++,ATTRIB_VALUE_ENTITY_U:E++,CLOSE_TAG:E++,CLOSE_TAG_SAW_WHITE:E++,SCRIPT:E++,SCRIPT_ENDING:E++},U.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},U.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(U.ENTITIES).forEach(function(P){var R=U.ENTITIES[P],c=typeof R==="number"?String.fromCharCode(R):R;U.ENTITIES[P]=c});for(var s in U.STATE)U.STATE[U.STATE[s]]=s;E=U.STATE;function V0(P,R,c){P[R]&&P[R](c)}function S(P,R,c){if(P.textNode)h(P);V0(P,R,c)}function h(P){if(P.textNode=N(P.opt,P.textNode),P.textNode)V0(P,"ontext",P.textNode);P.textNode=""}function N(P,R){if(P.trim)R=R.trim();if(P.normalize)R=R.replace(/\s+/g," ");return R}function a(P,R){if(h(P),P.trackPosition)R+=` Line: `+P.line+` Column: `+P.column+` -Char: `+P.c;return N=new Error(N),P.error=N,q0(P,"onerror",N),P}function U0(P){if(P.sawRoot&&!P.closedRoot)m(P,"Unclosed root tag");if(P.state!==k.BEGIN&&P.state!==k.BEGIN_WHITESPACE&&P.state!==k.TEXT)a(P,"Unexpected end");return h(P),P.c="",P.closed=!0,q0(P,"onend"),Z.call(P,P.strict,P.opt),P}function m(P,N){if(typeof P!=="object"||!(P instanceof Z))throw new Error("bad call to strictFail");if(P.strict)a(P,N)}function J0(P){if(!P.strict)P.tagName=P.tagName[P.looseCase]();var N=P.tags[P.tags.length-1]||P,c=P.tag={name:P.tagName,attributes:{}};if(P.opt.xmlns)c.ns=N.ns;P.attribList.length=0,S(P,"onopentagstart",c)}function $0(P,N){var c=P.indexOf(":"),f=c<0?["",P]:P.split(":"),v=f[0],b=f[1];if(N&&P==="xmlns")v="xmlns",b="";return{prefix:v,local:b}}function I0(P){if(!P.strict)P.attribName=P.attribName[P.looseCase]();if(P.attribList.indexOf(P.attribName)!==-1||P.tag.attributes.hasOwnProperty(P.attribName)){P.attribName=P.attribValue="";return}if(P.opt.xmlns){var N=$0(P.attribName,!0),c=N.prefix,f=N.local;if(c==="xmlns")if(f==="xml"&&P.attribValue!==D)m(P,"xml: prefix must be bound to "+D+` +Char: `+P.c;return R=Error(R),P.error=R,V0(P,"onerror",R),P}function $0(P){if(P.sawRoot&&!P.closedRoot)m(P,"Unclosed root tag");if(P.state!==E.BEGIN&&P.state!==E.BEGIN_WHITESPACE&&P.state!==E.TEXT)a(P,"Unexpected end");return h(P),P.c="",P.closed=!0,V0(P,"onend"),Z.call(P,P.strict,P.opt),P}function m(P,R){if(typeof P!=="object"||!(P instanceof Z))throw Error("bad call to strictFail");if(P.strict)a(P,R)}function J0(P){if(!P.strict)P.tagName=P.tagName[P.looseCase]();var R=P.tags[P.tags.length-1]||P,c=P.tag={name:P.tagName,attributes:{}};if(P.opt.xmlns)c.ns=R.ns;P.attribList.length=0,S(P,"onopentagstart",c)}function U0(P,R){var c=P.indexOf(":"),f=c<0?["",P]:P.split(":"),v=f[0],b=f[1];if(R&&P==="xmlns")v="xmlns",b="";return{prefix:v,local:b}}function L0(P){if(!P.strict)P.attribName=P.attribName[P.looseCase]();if(P.attribList.indexOf(P.attribName)!==-1||P.tag.attributes.hasOwnProperty(P.attribName)){P.attribName=P.attribValue="";return}if(P.opt.xmlns){var R=U0(P.attribName,!0),c=R.prefix,f=R.local;if(c==="xmlns")if(f==="xml"&&P.attribValue!==D)m(P,"xml: prefix must be bound to "+D+` Actual: `+P.attribValue);else if(f==="xmlns"&&P.attribValue!==C)m(P,"xmlns: prefix must be bound to "+C+` -Actual: `+P.attribValue);else{var v=P.tag,b=P.tags[P.tags.length-1]||P;if(v.ns===b.ns)v.ns=Object.create(b.ns);v.ns[f]=P.attribValue}P.attribList.push([P.attribName,P.attribValue])}else P.tag.attributes[P.attribName]=P.attribValue,S(P,"onattribute",{name:P.attribName,value:P.attribValue});P.attribName=P.attribValue=""}function i(P,N){if(P.opt.xmlns){var c=P.tag,f=$0(P.tagName);if(c.prefix=f.prefix,c.local=f.local,c.uri=c.ns[f.prefix]||"",c.prefix&&!c.uri)m(P,"Unbound namespace prefix: "+JSON.stringify(P.tagName)),c.uri=f.prefix;var v=P.tags[P.tags.length-1]||P;if(c.ns&&v.ns!==c.ns)Object.keys(c.ns).forEach(function(u){S(P,"onopennamespace",{prefix:u,uri:c.ns[u]})});for(var b=0,e=P.attribList.length;b",P.tagName="",P.state=k.SCRIPT;return}S(P,"onscript",P.script),P.script=""}var N=P.tags.length,c=P.tagName;if(!P.strict)c=c[P.looseCase]();var f=c;while(N--){var v=P.tags[N];if(v.name!==f)m(P,"Unexpected close tag");else break}if(N<0){m(P,"Unmatched closing tag: "+P.tagName),P.textNode+="",P.state=k.TEXT;return}P.tagName=c;var b=P.tags.length;while(b-- >N){var e=P.tag=P.tags.pop();P.tagName=P.tag.name,S(P,"onclosetag",P.tagName);var V={};for(var t in e.ns)V[t]=e.ns[t];var T=P.tags[P.tags.length-1]||P;if(P.opt.xmlns&&e.ns!==T.ns)Object.keys(e.ns).forEach(function(K){var B=e.ns[K];S(P,"onclosenamespace",{prefix:K,uri:B})})}if(N===0)P.closedRoot=!0;P.tagName=P.attribValue=P.attribName="",P.attribList.length=0,P.state=k.TEXT}function r(P){var N=P.entity,c=N.toLowerCase(),f,v="";if(P.ENTITIES[N])return P.ENTITIES[N];if(P.ENTITIES[c])return P.ENTITIES[c];if(N=c,N.charAt(0)==="#")if(N.charAt(1)==="x")N=N.slice(2),f=parseInt(N,16),v=f.toString(16);else N=N.slice(1),f=parseInt(N,10),v=f.toString(10);if(N=N.replace(/^0+/,""),isNaN(f)||v.toLowerCase()!==N)return m(P,"Invalid character entity"),"&"+P.entity+";";return String.fromCodePoint(f)}function n(P,N){if(N==="<")P.state=k.OPEN_WAKA,P.startTagPosition=P.position;else if(!I(N))m(P,"Non-whitespace before first tag."),P.textNode=N,P.state=k.TEXT}function Z0(P,N){var c="";if(N")S(N,"onsgmldeclaration",N.sgmlDecl),N.sgmlDecl="",N.state=k.TEXT;else if(A(f))N.state=k.SGML_DECL_QUOTED,N.sgmlDecl+=f;else N.sgmlDecl+=f;continue;case k.SGML_DECL_QUOTED:if(f===N.q)N.state=k.SGML_DECL,N.q="";N.sgmlDecl+=f;continue;case k.DOCTYPE:if(f===">")N.state=k.TEXT,S(N,"ondoctype",N.doctype),N.doctype=!0;else if(N.doctype+=f,f==="[")N.state=k.DOCTYPE_DTD;else if(A(f))N.state=k.DOCTYPE_QUOTED,N.q=f;continue;case k.DOCTYPE_QUOTED:if(N.doctype+=f,f===N.q)N.q="",N.state=k.DOCTYPE;continue;case k.DOCTYPE_DTD:if(N.doctype+=f,f==="]")N.state=k.DOCTYPE;else if(A(f))N.state=k.DOCTYPE_DTD_QUOTED,N.q=f;continue;case k.DOCTYPE_DTD_QUOTED:if(N.doctype+=f,f===N.q)N.state=k.DOCTYPE_DTD,N.q="";continue;case k.COMMENT:if(f==="-")N.state=k.COMMENT_ENDING;else N.comment+=f;continue;case k.COMMENT_ENDING:if(f==="-"){if(N.state=k.COMMENT_ENDED,N.comment=F(N.opt,N.comment),N.comment)S(N,"oncomment",N.comment);N.comment=""}else N.comment+="-"+f,N.state=k.COMMENT;continue;case k.COMMENT_ENDED:if(f!==">")m(N,"Malformed comment"),N.comment+="--"+f,N.state=k.COMMENT;else N.state=k.TEXT;continue;case k.CDATA:if(f==="]")N.state=k.CDATA_ENDING;else N.cdata+=f;continue;case k.CDATA_ENDING:if(f==="]")N.state=k.CDATA_ENDING_2;else N.cdata+="]"+f,N.state=k.CDATA;continue;case k.CDATA_ENDING_2:if(f===">"){if(N.cdata)S(N,"oncdata",N.cdata);S(N,"onclosecdata"),N.cdata="",N.state=k.TEXT}else if(f==="]")N.cdata+="]";else N.cdata+="]]"+f,N.state=k.CDATA;continue;case k.PROC_INST:if(f==="?")N.state=k.PROC_INST_ENDING;else if(I(f))N.state=k.PROC_INST_BODY;else N.procInstName+=f;continue;case k.PROC_INST_BODY:if(!N.procInstBody&&I(f))continue;else if(f==="?")N.state=k.PROC_INST_ENDING;else N.procInstBody+=f;continue;case k.PROC_INST_ENDING:if(f===">")S(N,"onprocessinginstruction",{name:N.procInstName,body:N.procInstBody}),N.procInstName=N.procInstBody="",N.state=k.TEXT;else N.procInstBody+="?"+f,N.state=k.PROC_INST_BODY;continue;case k.OPEN_TAG:if(g(X,f))N.tagName+=f;else if(J0(N),f===">")i(N);else if(f==="/")N.state=k.OPEN_TAG_SLASH;else{if(!I(f))m(N,"Invalid character in tag name");N.state=k.ATTRIB}continue;case k.OPEN_TAG_SLASH:if(f===">")i(N,!0),_(N);else m(N,"Forward-slash in opening tag not followed by >"),N.state=k.ATTRIB;continue;case k.ATTRIB:if(I(f))continue;else if(f===">")i(N);else if(f==="/")N.state=k.OPEN_TAG_SLASH;else if(g(O,f))N.attribName=f,N.attribValue="",N.state=k.ATTRIB_NAME;else m(N,"Invalid attribute name");continue;case k.ATTRIB_NAME:if(f==="=")N.state=k.ATTRIB_VALUE;else if(f===">")m(N,"Attribute without value"),N.attribValue=N.attribName,I0(N),i(N);else if(I(f))N.state=k.ATTRIB_NAME_SAW_WHITE;else if(g(X,f))N.attribName+=f;else m(N,"Invalid attribute name");continue;case k.ATTRIB_NAME_SAW_WHITE:if(f==="=")N.state=k.ATTRIB_VALUE;else if(I(f))continue;else if(m(N,"Attribute without value"),N.tag.attributes[N.attribName]="",N.attribValue="",S(N,"onattribute",{name:N.attribName,value:""}),N.attribName="",f===">")i(N);else if(g(O,f))N.attribName=f,N.state=k.ATTRIB_NAME;else m(N,"Invalid attribute name"),N.state=k.ATTRIB;continue;case k.ATTRIB_VALUE:if(I(f))continue;else if(A(f))N.q=f,N.state=k.ATTRIB_VALUE_QUOTED;else m(N,"Unquoted attribute value"),N.state=k.ATTRIB_VALUE_UNQUOTED,N.attribValue=f;continue;case k.ATTRIB_VALUE_QUOTED:if(f!==N.q){if(f==="&")N.state=k.ATTRIB_VALUE_ENTITY_Q;else N.attribValue+=f;continue}I0(N),N.q="",N.state=k.ATTRIB_VALUE_CLOSED;continue;case k.ATTRIB_VALUE_CLOSED:if(I(f))N.state=k.ATTRIB;else if(f===">")i(N);else if(f==="/")N.state=k.OPEN_TAG_SLASH;else if(g(O,f))m(N,"No whitespace between attributes"),N.attribName=f,N.attribValue="",N.state=k.ATTRIB_NAME;else m(N,"Invalid attribute name");continue;case k.ATTRIB_VALUE_UNQUOTED:if(!y(f)){if(f==="&")N.state=k.ATTRIB_VALUE_ENTITY_U;else N.attribValue+=f;continue}if(I0(N),f===">")i(N);else N.state=k.ATTRIB;continue;case k.CLOSE_TAG:if(!N.tagName)if(I(f))continue;else if(d(O,f))if(N.script)N.script+="")_(N);else if(g(X,f))N.tagName+=f;else if(N.script)N.script+="")_(N);else m(N,"Invalid characters in closing tag");continue;case k.TEXT_ENTITY:case k.ATTRIB_VALUE_ENTITY_Q:case k.ATTRIB_VALUE_ENTITY_U:var e,V;switch(N.state){case k.TEXT_ENTITY:e=k.TEXT,V="textNode";break;case k.ATTRIB_VALUE_ENTITY_Q:e=k.ATTRIB_VALUE_QUOTED,V="attribValue";break;case k.ATTRIB_VALUE_ENTITY_U:e=k.ATTRIB_VALUE_UNQUOTED,V="attribValue";break}if(f===";")N[V]+=r(N),N.entity="",N.state=e;else if(g(N.entity.length?L:j,f))N.entity+=f;else m(N,"Invalid character in entity name"),N[V]+="&"+N.entity+f,N.entity="",N.state=e;continue;default:throw new Error(N,"Unknown state: "+N.state)}}if(N.position>=N.bufferCheckPosition)J(N);return N}if(!String.fromCodePoint)(function(){var P=String.fromCharCode,N=Math.floor,c=function(){var f=16384,v=[],b,e,V=-1,t=arguments.length;if(!t)return"";var T="";while(++V1114111||N(K)!==K)throw RangeError("Invalid code point: "+K);if(K<=65535)v.push(K);else K-=65536,b=(K>>10)+55296,e=K%1024+56320,v.push(b,e);if(V+1===t||v.length>f)T+=P.apply(null,v),v.length=0}return T};if(Object.defineProperty)Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0});else String.fromCodePoint=c})()})(U)}(_6),_6}var n8,WZ;function l9(){if(WZ)return n8;return WZ=1,n8={isArray:function(U){if(Array.isArray)return Array.isArray(U);return Object.prototype.toString.call(U)==="[object Array]"}},n8}var o8,HZ;function a9(){if(HZ)return o8;HZ=1;var U=l9().isArray;return o8={copyOptions:function($){var Y,Z={};for(Y in $)if($.hasOwnProperty(Y))Z[Y]=$[Y];return Z},ensureFlagExists:function($,Y){if(!($ in Y)||typeof Y[$]!=="boolean")Y[$]=!1},ensureSpacesExists:function($){if(!("spaces"in $)||typeof $.spaces!=="number"&&typeof $.spaces!=="string")$.spaces=0},ensureAlwaysArrayExists:function($){if(!("alwaysArray"in $)||typeof $.alwaysArray!=="boolean"&&!U($.alwaysArray))$.alwaysArray=!1},ensureKeyExists:function($,Y){if(!($+"Key"in Y)||typeof Y[$+"Key"]!=="string")Y[$+"Key"]=Y.compact?"_"+$:$},checkFnExists:function($,Y){return $+"Fn"in Y}},o8}var t8,jZ;function FQ(){if(jZ)return t8;jZ=1;var U=UB(),$=a9(),Y=l9().isArray,Z,J;function G(X){return Z=$.copyOptions(X),$.ensureFlagExists("ignoreDeclaration",Z),$.ensureFlagExists("ignoreInstruction",Z),$.ensureFlagExists("ignoreAttributes",Z),$.ensureFlagExists("ignoreText",Z),$.ensureFlagExists("ignoreComment",Z),$.ensureFlagExists("ignoreCdata",Z),$.ensureFlagExists("ignoreDoctype",Z),$.ensureFlagExists("compact",Z),$.ensureFlagExists("alwaysChildren",Z),$.ensureFlagExists("addParent",Z),$.ensureFlagExists("trim",Z),$.ensureFlagExists("nativeType",Z),$.ensureFlagExists("nativeTypeAttributes",Z),$.ensureFlagExists("sanitize",Z),$.ensureFlagExists("instructionHasAttributes",Z),$.ensureFlagExists("captureSpacesBetweenElements",Z),$.ensureAlwaysArrayExists(Z),$.ensureKeyExists("declaration",Z),$.ensureKeyExists("instruction",Z),$.ensureKeyExists("attributes",Z),$.ensureKeyExists("text",Z),$.ensureKeyExists("comment",Z),$.ensureKeyExists("cdata",Z),$.ensureKeyExists("doctype",Z),$.ensureKeyExists("type",Z),$.ensureKeyExists("name",Z),$.ensureKeyExists("elements",Z),$.ensureKeyExists("parent",Z),$.checkFnExists("doctype",Z),$.checkFnExists("instruction",Z),$.checkFnExists("cdata",Z),$.checkFnExists("comment",Z),$.checkFnExists("text",Z),$.checkFnExists("instructionName",Z),$.checkFnExists("elementName",Z),$.checkFnExists("attributeName",Z),$.checkFnExists("attributeValue",Z),$.checkFnExists("attributes",Z),Z}function w(X){var j=Number(X);if(!isNaN(j))return j;var L=X.toLowerCase();if(L==="true")return!0;else if(L==="false")return!1;return X}function Q(X,j){var L;if(Z.compact){if(!J[Z[X+"Key"]]&&(Y(Z.alwaysArray)?Z.alwaysArray.indexOf(Z[X+"Key"])!==-1:Z.alwaysArray))J[Z[X+"Key"]]=[];if(J[Z[X+"Key"]]&&!Y(J[Z[X+"Key"]]))J[Z[X+"Key"]]=[J[Z[X+"Key"]]];if(X+"Fn"in Z&&typeof j==="string")j=Z[X+"Fn"](j,J);if(X==="instruction"&&(("instructionFn"in Z)||("instructionNameFn"in Z))){for(L in j)if(j.hasOwnProperty(L))if("instructionFn"in Z)j[L]=Z.instructionFn(j[L],L,J);else{var I=j[L];delete j[L],j[Z.instructionNameFn(L,I,J)]=I}}if(Y(J[Z[X+"Key"]]))J[Z[X+"Key"]].push(j);else J[Z[X+"Key"]]=j}else{if(!J[Z.elementsKey])J[Z.elementsKey]=[];var A={};if(A[Z.typeKey]=X,X==="instruction"){for(L in j)if(j.hasOwnProperty(L))break;if(A[Z.nameKey]="instructionNameFn"in Z?Z.instructionNameFn(L,j,J):L,Z.instructionHasAttributes){if(A[Z.attributesKey]=j[L][Z.attributesKey],"instructionFn"in Z)A[Z.attributesKey]=Z.instructionFn(A[Z.attributesKey],L,J)}else{if("instructionFn"in Z)j[L]=Z.instructionFn(j[L],L,J);A[Z.instructionKey]=j[L]}}else{if(X+"Fn"in Z)j=Z[X+"Fn"](j,J);A[Z[X+"Key"]]=j}if(Z.addParent)A[Z.parentKey]=J;J[Z.elementsKey].push(A)}}function q(X){if("attributesFn"in Z&&X)X=Z.attributesFn(X,J);if((Z.trim||("attributeValueFn"in Z)||("attributeNameFn"in Z)||Z.nativeTypeAttributes)&&X){var j;for(j in X)if(X.hasOwnProperty(j)){if(Z.trim)X[j]=X[j].trim();if(Z.nativeTypeAttributes)X[j]=w(X[j]);if("attributeValueFn"in Z)X[j]=Z.attributeValueFn(X[j],j,J);if("attributeNameFn"in Z){var L=X[j];delete X[j],X[Z.attributeNameFn(j,X[j],J)]=L}}}return X}function z(X){var j={};if(X.body&&(X.name.toLowerCase()==="xml"||Z.instructionHasAttributes)){var L=/([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g,I;while((I=L.exec(X.body))!==null)j[I[1]]=I[2]||I[3]||I[4];j=q(j)}if(X.name.toLowerCase()==="xml"){if(Z.ignoreDeclaration)return;if(J[Z.declarationKey]={},Object.keys(j).length)J[Z.declarationKey][Z.attributesKey]=j;if(Z.addParent)J[Z.declarationKey][Z.parentKey]=J}else{if(Z.ignoreInstruction)return;if(Z.trim)X.body=X.body.trim();var A={};if(Z.instructionHasAttributes&&Object.keys(j).length)A[X.name]={},A[X.name][Z.attributesKey]=j;else A[X.name]=X.body;Q("instruction",A)}}function R(X,j){var L;if(typeof X==="object")j=X.attributes,X=X.name;if(j=q(j),"elementNameFn"in Z)X=Z.elementNameFn(X,J);if(Z.compact){if(L={},!Z.ignoreAttributes&&j&&Object.keys(j).length){L[Z.attributesKey]={};var I;for(I in j)if(j.hasOwnProperty(I))L[Z.attributesKey][I]=j[I]}if(!(X in J)&&(Y(Z.alwaysArray)?Z.alwaysArray.indexOf(X)!==-1:Z.alwaysArray))J[X]=[];if(J[X]&&!Y(J[X]))J[X]=[J[X]];if(Y(J[X]))J[X].push(L);else J[X]=L}else{if(!J[Z.elementsKey])J[Z.elementsKey]=[];if(L={},L[Z.typeKey]="element",L[Z.nameKey]=X,!Z.ignoreAttributes&&j&&Object.keys(j).length)L[Z.attributesKey]=j;if(Z.alwaysChildren)L[Z.elementsKey]=[];J[Z.elementsKey].push(L)}L[Z.parentKey]=J,J=L}function W(X){if(Z.ignoreText)return;if(!X.trim()&&!Z.captureSpacesBetweenElements)return;if(Z.trim)X=X.trim();if(Z.nativeType)X=w(X);if(Z.sanitize)X=X.replace(/&/g,"&").replace(//g,">");Q("text",X)}function E(X){if(Z.ignoreComment)return;if(Z.trim)X=X.trim();Q("comment",X)}function D(X){var j=J[Z.parentKey];if(!Z.addParent)delete J[Z.parentKey];J=j}function C(X){if(Z.ignoreCdata)return;if(Z.trim)X=X.trim();Q("cdata",X)}function H(X){if(Z.ignoreDoctype)return;if(X=X.replace(/^ /,""),Z.trim)X=X.trim();Q("doctype",X)}function O(X){X.note=X}return t8=function(X,j){var L=U.parser(!0,{}),I={};if(J=I,Z=G(j),L.opt={strictEntities:!0},L.onopentag=R,L.ontext=W,L.oncomment=E,L.onclosetag=D,L.onerror=O,L.oncdata=C,L.ondoctype=H,L.onprocessinginstruction=z,L.write(X).close(),I[Z.elementsKey]){var A=I[Z.elementsKey];delete I[Z.elementsKey],I[Z.elementsKey]=A,delete I.text}return I},t8}var e8,zZ;function $B(){if(zZ)return e8;zZ=1;var U=a9(),$=FQ();function Y(Z){var J=U.copyOptions(Z);return U.ensureSpacesExists(J),J}return e8=function(Z,J){var G,w,Q,q;if(G=Y(J),w=$(Z,G),q="compact"in G&&G.compact?"_parent":"parent","addParent"in G&&G.addParent)Q=JSON.stringify(w,function(z,R){return z===q?"_":R},G.spaces);else Q=JSON.stringify(w,null,G.spaces);return Q.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")},e8}var U9,FZ;function NQ(){if(FZ)return U9;FZ=1;var U=a9(),$=l9().isArray,Y,Z;function J(L){var I=U.copyOptions(L);if(U.ensureFlagExists("ignoreDeclaration",I),U.ensureFlagExists("ignoreInstruction",I),U.ensureFlagExists("ignoreAttributes",I),U.ensureFlagExists("ignoreText",I),U.ensureFlagExists("ignoreComment",I),U.ensureFlagExists("ignoreCdata",I),U.ensureFlagExists("ignoreDoctype",I),U.ensureFlagExists("compact",I),U.ensureFlagExists("indentText",I),U.ensureFlagExists("indentCdata",I),U.ensureFlagExists("indentAttributes",I),U.ensureFlagExists("indentInstruction",I),U.ensureFlagExists("fullTagEmptyElement",I),U.ensureFlagExists("noQuotesForNativeAttributes",I),U.ensureSpacesExists(I),typeof I.spaces==="number")I.spaces=Array(I.spaces+1).join(" ");return U.ensureKeyExists("declaration",I),U.ensureKeyExists("instruction",I),U.ensureKeyExists("attributes",I),U.ensureKeyExists("text",I),U.ensureKeyExists("comment",I),U.ensureKeyExists("cdata",I),U.ensureKeyExists("doctype",I),U.ensureKeyExists("type",I),U.ensureKeyExists("name",I),U.ensureKeyExists("elements",I),U.checkFnExists("doctype",I),U.checkFnExists("instruction",I),U.checkFnExists("cdata",I),U.checkFnExists("comment",I),U.checkFnExists("text",I),U.checkFnExists("instructionName",I),U.checkFnExists("elementName",I),U.checkFnExists("attributeName",I),U.checkFnExists("attributeValue",I),U.checkFnExists("attributes",I),U.checkFnExists("fullTagEmptyElement",I),I}function G(L,I,A){return(!A&&L.spaces?` -`:"")+Array(I+1).join(L.spaces)}function w(L,I,A){if(I.ignoreAttributes)return"";if("attributesFn"in I)L=I.attributesFn(L,Z,Y);var y,g,d,k,s=[];for(y in L)if(L.hasOwnProperty(y)&&L[y]!==null&&L[y]!==void 0)k=I.noQuotesForNativeAttributes&&typeof L[y]!=="string"?"":'"',g=""+L[y],g=g.replace(/"/g,"""),d="attributeNameFn"in I?I.attributeNameFn(y,g,Z,Y):y,s.push(I.spaces&&I.indentAttributes?G(I,A+1,!1):" "),s.push(d+"="+k+("attributeValueFn"in I?I.attributeValueFn(g,y,Z,Y):g)+k);if(L&&Object.keys(L).length&&I.spaces&&I.indentAttributes)s.push(G(I,A,!1));return s.join("")}function Q(L,I,A){return Y=L,Z="xml",I.ignoreDeclaration?"":""}function q(L,I,A){if(I.ignoreInstruction)return"";var y;for(y in L)if(L.hasOwnProperty(y))break;var g="instructionNameFn"in I?I.instructionNameFn(y,L[y],Z,Y):y;if(typeof L[y]==="object")return Y=L,Z=g,"";else{var d=L[y]?L[y]:"";if("instructionFn"in I)d=I.instructionFn(d,y,Z,Y);return""}}function z(L,I){return I.ignoreComment?"":""}function R(L,I){return I.ignoreCdata?"":"","]]]]>"))+"]]>"}function W(L,I){return I.ignoreDoctype?"":""}function E(L,I){if(I.ignoreText)return"";return L=""+L,L=L.replace(/&/g,"&"),L=L.replace(/&/g,"&").replace(//g,">"),"textFn"in I?I.textFn(L,Z,Y):L}function D(L,I){var A;if(L.elements&&L.elements.length)for(A=0;A"),L[I.elementsKey]&&L[I.elementsKey].length)y.push(H(L[I.elementsKey],I,A+1)),Y=L,Z=L.name;y.push(I.spaces&&D(L,I)?` -`+Array(A+1).join(I.spaces):""),y.push("")}else y.push("/>");return y.join("")}function H(L,I,A,y){return L.reduce(function(g,d){var k=G(I,A,y&&!g);switch(d.type){case"element":return g+k+C(d,I,A);case"comment":return g+k+z(d[I.commentKey],I);case"doctype":return g+k+W(d[I.doctypeKey],I);case"cdata":return g+(I.indentCdata?k:"")+R(d[I.cdataKey],I);case"text":return g+(I.indentText?k:"")+E(d[I.textKey],I);case"instruction":var s={};return s[d[I.nameKey]]=d[I.attributesKey]?d:d[I.instructionKey],g+(I.indentInstruction?k:"")+q(s,I,A)}},"")}function O(L,I,A){var y;for(y in L)if(L.hasOwnProperty(y))switch(y){case I.parentKey:case I.attributesKey:break;case I.textKey:if(I.indentText||A)return!0;break;case I.cdataKey:if(I.indentCdata||A)return!0;break;case I.instructionKey:if(I.indentInstruction||A)return!0;break;case I.doctypeKey:case I.commentKey:return!0;default:return!0}return!1}function X(L,I,A,y,g){Y=L,Z=I;var d="elementNameFn"in A?A.elementNameFn(I,L):I;if(typeof L==="undefined"||L===null||L==="")return"fullTagEmptyElementFn"in A&&A.fullTagEmptyElementFn(I,L)||A.fullTagEmptyElement?"<"+d+">":"<"+d+"/>";var k=[];if(I){if(k.push("<"+d),typeof L!=="object")return k.push(">"+E(L,A)+""),k.join("");if(L[A.attributesKey])k.push(w(L[A.attributesKey],A,y));var s=O(L,A,!0)||L[A.attributesKey]&&L[A.attributesKey]["xml:space"]==="preserve";if(!s)if("fullTagEmptyElementFn"in A)s=A.fullTagEmptyElementFn(I,L);else s=A.fullTagEmptyElement;if(s)k.push(">");else return k.push("/>"),k.join("")}if(k.push(j(L,A,y+1,!1)),Y=L,Z=I,I)k.push((g?G(A,y,!1):"")+"");return k.join("")}function j(L,I,A,y){var g,d,k,s=[];for(d in L)if(L.hasOwnProperty(d)){k=$(L[d])?L[d]:[L[d]];for(g=0;g{switch(U.type){case void 0:case"element":let $=new p9(U.name,U.attributes),Y=U.elements||[];for(let Z of Y){let J=$6(Z);if(J!==void 0)$.push(J)}return $;case"text":return U.text;default:return}};class RQ extends V0{}class p9 extends o{static fromXmlString(U){let $=U6.xml2js(U,{compact:!1});return $6($)}constructor(U,$){super(U);if($)this.root.push(new RQ($))}push(U){this.root.push(U)}}class i9 extends o{constructor(U){super("");this._attr=U}prepForXml(U){return{_attr:this._attr}}}var QB="";class Y6 extends o{constructor(U,$){super(U);if($)this.root=$.root}}var S0=(U)=>{if(isNaN(U))throw new Error(`Invalid value '${U}' specified. Must be an integer.`);return Math.floor(U)},W2=(U)=>{let $=S0(U);if($<0)throw new Error(`Invalid value '${U}' specified. Must be a positive integer.`);return $},Z6=(U,$)=>{let Y=$*2;if(U.length!==Y||isNaN(Number(`0x${U}`)))throw new Error(`Invalid hex value '${U}'. Expected ${Y} digit hex value`);return U},JB=(U)=>Z6(U,4),DQ=(U)=>Z6(U,2),D9=(U)=>Z6(U,1),H2=(U)=>{let $=U.slice(-2),Y=U.substring(0,U.length-2);return`${Number(Y)}${$}`},r9=(U)=>{let $=H2(U);if(parseFloat($)<0)throw new Error(`Invalid value '${$}' specified. Expected a positive number.`);return $},S1=(U)=>{if(U==="auto")return U;let $=U.charAt(0)==="#"?U.substring(1):U;return Z6($,3)},e0=(U)=>typeof U==="string"?H2(U):S0(U),AQ=(U)=>typeof U==="string"?r9(U):W2(U),GB=(U)=>typeof U==="string"?H2(U):S0(U),T0=(U)=>typeof U==="string"?r9(U):W2(U),PQ=(U)=>{let $=U.substring(0,U.length-1);return`${Number($)}%`},s9=(U)=>{if(typeof U==="number")return S0(U);if(U.slice(-1)==="%")return PQ(U);return H2(U)},TQ=W2,CQ=W2,OQ=(U)=>U.toISOString();class B0 extends o{constructor(U,$=!0){super(U);if($!==!0)this.root.push(new O0({val:$}))}}class w2 extends o{constructor(U,$){super(U);this.root.push(new O0({val:AQ($)}))}}class E0 extends o{}class Y1 extends o{constructor(U,$){super(U);this.root.push(new O0({val:$}))}}var u1=(U,$)=>new X0({name:U,attributes:{value:{key:"w:val",value:$}}});class E1 extends o{constructor(U,$){super(U);this.root.push(new O0({val:$}))}}class EQ extends o{constructor(U,$){super(U);this.root.push(new O0({val:$}))}}class I1 extends o{constructor(U,$){super(U);this.root.push($)}}class X0 extends o{constructor({name:U,attributes:$,children:Y}){super(U);if($)this.root.push(new n2($));if(Y)this.root.push(...Y)}}var m0={START:"start",CENTER:"center",END:"end",BOTH:"both",MEDIUM_KASHIDA:"mediumKashida",DISTRIBUTE:"distribute",NUM_TAB:"numTab",HIGH_KASHIDA:"highKashida",LOW_KASHIDA:"lowKashida",THAI_DISTRIBUTE:"thaiDistribute",LEFT:"left",RIGHT:"right",JUSTIFIED:"both"},n9=(U)=>new X0({name:"w:jc",attributes:{val:{key:"w:val",value:U}}}),N0=(U,{color:$,size:Y,space:Z,style:J})=>new X0({name:U,attributes:{style:{key:"w:val",value:J},color:{key:"w:color",value:$===void 0?void 0:S1($)},size:{key:"w:sz",value:Y===void 0?void 0:TQ(Y)},space:{key:"w:space",value:Z===void 0?void 0:CQ(Z)}}}),Q6={SINGLE:"single",DASH_DOT_STROKED:"dashDotStroked",DASHED:"dashed",DASH_SMALL_GAP:"dashSmallGap",DOT_DASH:"dotDash",DOT_DOT_DASH:"dotDotDash",DOTTED:"dotted",DOUBLE:"double",DOUBLE_WAVE:"doubleWave",INSET:"inset",NIL:"nil",NONE:"none",OUTSET:"outset",THICK:"thick",THICK_THIN_LARGE_GAP:"thickThinLargeGap",THICK_THIN_MEDIUM_GAP:"thickThinMediumGap",THICK_THIN_SMALL_GAP:"thickThinSmallGap",THIN_THICK_LARGE_GAP:"thinThickLargeGap",THIN_THICK_MEDIUM_GAP:"thinThickMediumGap",THIN_THICK_SMALL_GAP:"thinThickSmallGap",THIN_THICK_THIN_LARGE_GAP:"thinThickThinLargeGap",THIN_THICK_THIN_MEDIUM_GAP:"thinThickThinMediumGap",THIN_THICK_THIN_SMALL_GAP:"thinThickThinSmallGap",THREE_D_EMBOSS:"threeDEmboss",THREE_D_ENGRAVE:"threeDEngrave",TRIPLE:"triple",WAVE:"wave"};class o9 extends Q1{constructor(U){super("w:pBdr");if(U.top)this.root.push(N0("w:top",U.top));if(U.bottom)this.root.push(N0("w:bottom",U.bottom));if(U.left)this.root.push(N0("w:left",U.left));if(U.right)this.root.push(N0("w:right",U.right));if(U.between)this.root.push(N0("w:between",U.between))}}class t9 extends o{constructor(){super("w:pBdr");let U=N0("w:bottom",{color:"auto",space:1,style:Q6.SINGLE,size:6});this.root.push(U)}}var kQ=({start:U,end:$,left:Y,right:Z,hanging:J,firstLine:G})=>new X0({name:"w:ind",attributes:{start:{key:"w:start",value:U===void 0?void 0:e0(U)},end:{key:"w:end",value:$===void 0?void 0:e0($)},left:{key:"w:left",value:Y===void 0?void 0:e0(Y)},right:{key:"w:right",value:Z===void 0?void 0:e0(Z)},hanging:{key:"w:hanging",value:J===void 0?void 0:T0(J)},firstLine:{key:"w:firstLine",value:G===void 0?void 0:T0(G)}}}),SQ=()=>new X0({name:"w:br"}),e9={BEGIN:"begin",END:"end",SEPARATE:"separate"},UU=(U,$)=>new X0({name:"w:fldChar",attributes:{type:{key:"w:fldCharType",value:U},dirty:{key:"w:dirty",value:$}}}),U1=(U)=>UU(e9.BEGIN,U),V1=(U)=>UU(e9.SEPARATE,U),$1=(U)=>UU(e9.END,U),KB={CENTER:"center",INSIDE:"inside",LEFT:"left",OUTSIDE:"outside",RIGHT:"right"},wB={BOTTOM:"bottom",CENTER:"center",INSIDE:"inside",OUTSIDE:"outside",TOP:"top"},BB={DECIMAL:"decimal",UPPER_ROMAN:"upperRoman",LOWER_ROMAN:"lowerRoman",UPPER_LETTER:"upperLetter",LOWER_LETTER:"lowerLetter",ORDINAL:"ordinal",CARDINAL_TEXT:"cardinalText",ORDINAL_TEXT:"ordinalText",HEX:"hex",CHICAGO:"chicago",IDEOGRAPH_DIGITAL:"ideographDigital",JAPANESE_COUNTING:"japaneseCounting",AIUEO:"aiueo",IROHA:"iroha",DECIMAL_FULL_WIDTH:"decimalFullWidth",DECIMAL_HALF_WIDTH:"decimalHalfWidth",JAPANESE_LEGAL:"japaneseLegal",JAPANESE_DIGITAL_TEN_THOUSAND:"japaneseDigitalTenThousand",DECIMAL_ENCLOSED_CIRCLE:"decimalEnclosedCircle",DECIMAL_FULL_WIDTH_2:"decimalFullWidth2",AIUEO_FULL_WIDTH:"aiueoFullWidth",IROHA_FULL_WIDTH:"irohaFullWidth",DECIMAL_ZERO:"decimalZero",BULLET:"bullet",GANADA:"ganada",CHOSUNG:"chosung",DECIMAL_ENCLOSED_FULL_STOP:"decimalEnclosedFullstop",DECIMAL_ENCLOSED_PAREN:"decimalEnclosedParen",DECIMAL_ENCLOSED_CIRCLE_CHINESE:"decimalEnclosedCircleChinese",IDEOGRAPH_ENCLOSED_CIRCLE:"ideographEnclosedCircle",IDEOGRAPH_TRADITIONAL:"ideographTraditional",IDEOGRAPH_ZODIAC:"ideographZodiac",IDEOGRAPH_ZODIAC_TRADITIONAL:"ideographZodiacTraditional",TAIWANESE_COUNTING:"taiwaneseCounting",IDEOGRAPH_LEGAL_TRADITIONAL:"ideographLegalTraditional",TAIWANESE_COUNTING_THOUSAND:"taiwaneseCountingThousand",TAIWANESE_DIGITAL:"taiwaneseDigital",CHINESE_COUNTING:"chineseCounting",CHINESE_LEGAL_SIMPLIFIED:"chineseLegalSimplified",CHINESE_COUNTING_TEN_THOUSAND:"chineseCountingThousand",KOREAN_DIGITAL:"koreanDigital",KOREAN_COUNTING:"koreanCounting",KOREAN_LEGAL:"koreanLegal",KOREAN_DIGITAL_2:"koreanDigital2",VIETNAMESE_COUNTING:"vietnameseCounting",RUSSIAN_LOWER:"russianLower",RUSSIAN_UPPER:"russianUpper",NONE:"none",NUMBER_IN_DASH:"numberInDash",HEBREW_1:"hebrew1",HEBREW_2:"hebrew2",ARABIC_ALPHA:"arabicAlpha",ARABIC_ABJAD:"arabicAbjad",HINDI_VOWELS:"hindiVowels",HINDI_CONSONANTS:"hindiConsonants",HINDI_NUMBERS:"hindiNumbers",HINDI_COUNTING:"hindiCounting",THAI_LETTERS:"thaiLetters",THAI_NUMBERS:"thaiNumbers",THAI_COUNTING:"thaiCounting",BAHT_TEXT:"bahtText",DOLLAR_TEXT:"dollarText"},g0={DEFAULT:"default",PRESERVE:"preserve"};class x0 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{space:"xml:space"})}}class vQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("PAGE")}}class _Q extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("NUMPAGES")}}class yQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTIONPAGES")}}class bQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTION")}}var j2=({fill:U,color:$,type:Y})=>new X0({name:"w:shd",attributes:{fill:{key:"w:fill",value:U===void 0?void 0:S1(U)},color:{key:"w:color",value:$===void 0?void 0:S1($)},type:{key:"w:val",value:Y}}}),qB={CLEAR:"clear",DIAGONAL_CROSS:"diagCross",DIAGONAL_STRIPE:"diagStripe",HORIZONTAL_CROSS:"horzCross",HORIZONTAL_STRIPE:"horzStripe",NIL:"nil",PERCENT_5:"pct5",PERCENT_10:"pct10",PERCENT_12:"pct12",PERCENT_15:"pct15",PERCENT_20:"pct20",PERCENT_25:"pct25",PERCENT_30:"pct30",PERCENT_35:"pct35",PERCENT_37:"pct37",PERCENT_40:"pct40",PERCENT_45:"pct45",PERCENT_50:"pct50",PERCENT_55:"pct55",PERCENT_60:"pct60",PERCENT_62:"pct62",PERCENT_65:"pct65",PERCENT_70:"pct70",PERCENT_75:"pct75",PERCENT_80:"pct80",PERCENT_85:"pct85",PERCENT_87:"pct87",PERCENT_90:"pct90",PERCENT_95:"pct95",REVERSE_DIAGONAL_STRIPE:"reverseDiagStripe",SOLID:"solid",THIN_DIAGONAL_CROSS:"thinDiagCross",THIN_DIAGONAL_STRIPE:"thinDiagStripe",THIN_HORIZONTAL_CROSS:"thinHorzCross",THIN_REVERSE_DIAGONAL_STRIPE:"thinReverseDiagStripe",THIN_VERTICAL_STRIPE:"thinVertStripe",VERTICAL_STRIPE:"vertStripe"};class _0 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",author:"w:author",date:"w:date"})}}class gQ extends o{constructor(U){super("w:del");this.root.push(new _0({id:U.id,author:U.author,date:U.date}))}}class xQ extends o{constructor(U){super("w:ins");this.root.push(new _0({id:U.id,author:U.author,date:U.date}))}}var $U={DOT:"dot"},YU=(U=$U.DOT)=>new X0({name:"w:em",attributes:{val:{key:"w:val",value:U}}}),XB=()=>YU($U.DOT);class fQ extends o{constructor(U){super("w:spacing");this.root.push(new O0({val:e0(U)}))}}class hQ extends o{constructor(U){super("w:color");this.root.push(new O0({val:S1(U)}))}}class uQ extends o{constructor(U){super("w:highlight");this.root.push(new O0({val:U}))}}class dQ extends o{constructor(U){super("w:highlightCs");this.root.push(new O0({val:U}))}}var IB=(U)=>new X0({name:"w:lang",attributes:{value:{key:"w:val",value:U.value},eastAsia:{key:"w:eastAsia",value:U.eastAsia},bidirectional:{key:"w:bidi",value:U.bidirectional}}}),g2=(U,$)=>{if(typeof U==="string"){let Z=U;return new X0({name:"w:rFonts",attributes:{ascii:{key:"w:ascii",value:Z},cs:{key:"w:cs",value:Z},eastAsia:{key:"w:eastAsia",value:Z},hAnsi:{key:"w:hAnsi",value:Z},hint:{key:"w:hint",value:$}}})}let Y=U;return new X0({name:"w:rFonts",attributes:{ascii:{key:"w:ascii",value:Y.ascii},cs:{key:"w:cs",value:Y.cs},eastAsia:{key:"w:eastAsia",value:Y.eastAsia},hAnsi:{key:"w:hAnsi",value:Y.hAnsi},hint:{key:"w:hint",value:Y.hint}}})},cQ=(U)=>new X0({name:"w:vertAlign",attributes:{val:{key:"w:val",value:U}}}),LB=()=>cQ("superscript"),VB=()=>cQ("subscript"),ZU={SINGLE:"single",WORDS:"words",DOUBLE:"double",THICK:"thick",DOTTED:"dotted",DOTTEDHEAVY:"dottedHeavy",DASH:"dash",DASHEDHEAVY:"dashedHeavy",DASHLONG:"dashLong",DASHLONGHEAVY:"dashLongHeavy",DOTDASH:"dotDash",DASHDOTHEAVY:"dashDotHeavy",DOTDOTDASH:"dotDotDash",DASHDOTDOTHEAVY:"dashDotDotHeavy",WAVE:"wave",WAVYHEAVY:"wavyHeavy",WAVYDOUBLE:"wavyDouble",NONE:"none"},mQ=(U=ZU.SINGLE,$)=>new X0({name:"w:u",attributes:{val:{key:"w:val",value:U},color:{key:"w:color",value:$===void 0?void 0:S1($)}}}),MB={BLINK_BACKGROUND:"blinkBackground",LIGHTS:"lights",ANTS_BLACK:"antsBlack",ANTS_RED:"antsRed",SHIMMER:"shimmer",SPARKLE:"sparkle",NONE:"none"},WB={BLACK:"black",BLUE:"blue",CYAN:"cyan",DARK_BLUE:"darkBlue",DARK_CYAN:"darkCyan",DARK_GRAY:"darkGray",DARK_GREEN:"darkGreen",DARK_MAGENTA:"darkMagenta",DARK_RED:"darkRed",DARK_YELLOW:"darkYellow",GREEN:"green",LIGHT_GRAY:"lightGray",MAGENTA:"magenta",NONE:"none",RED:"red",WHITE:"white",YELLOW:"yellow"};class J1 extends Q1{constructor(U){var $,Y;super("w:rPr");if(!U)return;if(U.style)this.push(new Y1("w:rStyle",U.style));if(U.font)if(typeof U.font==="string")this.push(g2(U.font));else if("name"in U.font)this.push(g2(U.font.name,U.font.hint));else this.push(g2(U.font));if(U.bold!==void 0)this.push(new B0("w:b",U.bold));if(U.boldComplexScript===void 0&&U.bold!==void 0||U.boldComplexScript)this.push(new B0("w:bCs",($=U.boldComplexScript)!=null?$:U.bold));if(U.italics!==void 0)this.push(new B0("w:i",U.italics));if(U.italicsComplexScript===void 0&&U.italics!==void 0||U.italicsComplexScript)this.push(new B0("w:iCs",(Y=U.italicsComplexScript)!=null?Y:U.italics));if(U.smallCaps!==void 0)this.push(new B0("w:smallCaps",U.smallCaps));else if(U.allCaps!==void 0)this.push(new B0("w:caps",U.allCaps));if(U.strike!==void 0)this.push(new B0("w:strike",U.strike));if(U.doubleStrike!==void 0)this.push(new B0("w:dstrike",U.doubleStrike));if(U.emboss!==void 0)this.push(new B0("w:emboss",U.emboss));if(U.imprint!==void 0)this.push(new B0("w:imprint",U.imprint));if(U.noProof!==void 0)this.push(new B0("w:noProof",U.noProof));if(U.snapToGrid!==void 0)this.push(new B0("w:snapToGrid",U.snapToGrid));if(U.vanish)this.push(new B0("w:vanish",U.vanish));if(U.color)this.push(new hQ(U.color));if(U.characterSpacing)this.push(new fQ(U.characterSpacing));if(U.scale!==void 0)this.push(new E1("w:w",U.scale));if(U.kern)this.push(new w2("w:kern",U.kern));if(U.position)this.push(new Y1("w:position",U.position));if(U.size!==void 0)this.push(new w2("w:sz",U.size));let Z=U.sizeComplexScript===void 0||U.sizeComplexScript===!0?U.size:U.sizeComplexScript;if(Z)this.push(new w2("w:szCs",Z));if(U.highlight)this.push(new uQ(U.highlight));let J=U.highlightComplexScript===void 0||U.highlightComplexScript===!0?U.highlight:U.highlightComplexScript;if(J)this.push(new dQ(J));if(U.underline)this.push(mQ(U.underline.type,U.underline.color));if(U.effect)this.push(new Y1("w:effect",U.effect));if(U.border)this.push(N0("w:bdr",U.border));if(U.shading)this.push(j2(U.shading));if(U.subScript)this.push(VB());if(U.superScript)this.push(LB());if(U.rightToLeft!==void 0)this.push(new B0("w:rtl",U.rightToLeft));if(U.emphasisMark)this.push(YU(U.emphasisMark.type));if(U.language)this.push(IB(U.language));if(U.specVanish)this.push(new B0("w:specVanish",U.vanish));if(U.math)this.push(new B0("w:oMath",U.math));if(U.revision)this.push(new JU(U.revision))}push(U){this.root.push(U)}}class QU extends J1{constructor(U){super(U);if(U==null?void 0:U.insertion)this.push(new xQ(U.insertion));if(U==null?void 0:U.deletion)this.push(new gQ(U.deletion))}}class JU extends o{constructor(U){super("w:rPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.addChildElement(new J1(U))}}class a1 extends o{constructor(U){var $;super("w:t");if(typeof U==="string")this.root.push(new x0({space:g0.PRESERVE})),this.root.push(U);else this.root.push(new x0({space:($=U.space)!=null?$:g0.DEFAULT})),this.root.push(U.text)}}var N1={CURRENT:"CURRENT",TOTAL_PAGES:"TOTAL_PAGES",TOTAL_PAGES_IN_SECTION:"TOTAL_PAGES_IN_SECTION",CURRENT_SECTION:"SECTION"};class C0 extends o{constructor(U){super("w:r");if(Y0(this,"properties"),this.properties=new J1(U),this.root.push(this.properties),U.break)for(let $=0;$>6|192,F[a++]=m&63|128;else if(Y(S,U0))m=65536+((m&1023)<<10)+(S.charCodeAt(++U0)&1023),F[a++]=m>>18|240,F[a++]=m>>12&63|128,F[a++]=m>>6&63|128,F[a++]=m&63|128;else F[a++]=m>>12|224,F[a++]=m>>6&63|128,F[a++]=m&63|128}}else if(h==="hex"){if(S=S.replace(/[^a-z0-9]+/ig,""),S.length%2!==0)S="0"+S;for(U0=0;U0>>24|S>>>8&65280|S<<8&16711680|(S&255)<<24;return h>>>0}z0.htonl=G;function w(S,h){var F="";for(var a=0;a>>0}return m}z0.join32=z;function R(S,h){var F=new Array(S.length*4);for(var a=0,U0=0;a>>24,F[U0+1]=m>>>16&255,F[U0+2]=m>>>8&255,F[U0+3]=m&255;else F[U0+3]=m>>>24,F[U0+2]=m>>>16&255,F[U0+1]=m>>>8&255,F[U0]=m&255}return F}z0.split32=R;function W(S,h){return S>>>h|S<<32-h}z0.rotr32=W;function E(S,h){return S<>>32-h}z0.rotl32=E;function D(S,h){return S+h>>>0}z0.sum32=D;function C(S,h,F){return S+h+F>>>0}z0.sum32_3=C;function H(S,h,F,a){return S+h+F+a>>>0}z0.sum32_4=H;function O(S,h,F,a,U0){return S+h+F+a+U0>>>0}z0.sum32_5=O;function X(S,h,F,a){var U0=S[h],m=S[h+1],J0=a+m>>>0,$0=(J0>>0,S[h+1]=J0}z0.sum64=X;function j(S,h,F,a){var U0=h+a>>>0,m=(U0>>0}z0.sum64_hi=j;function L(S,h,F,a){var U0=h+a;return U0>>>0}z0.sum64_lo=L;function I(S,h,F,a,U0,m,J0,$0){var I0=0,i=h;i=i+a>>>0,I0+=i>>0,I0+=i>>0,I0+=i<$0?1:0;var _=S+F+U0+J0+I0;return _>>>0}z0.sum64_4_hi=I;function A(S,h,F,a,U0,m,J0,$0){var I0=h+a+m+$0;return I0>>>0}z0.sum64_4_lo=A;function y(S,h,F,a,U0,m,J0,$0,I0,i){var _=0,r=h;r=r+a>>>0,_+=r>>0,_+=r>>0,_+=r<$0?1:0,r=r+i>>>0,_+=r>>0}z0.sum64_5_hi=y;function g(S,h,F,a,U0,m,J0,$0,I0,i){var _=h+a+m+$0+i;return _>>>0}z0.sum64_5_lo=g;function d(S,h,F){var a=h<<32-F|S>>>F;return a>>>0}z0.rotr64_hi=d;function k(S,h,F){var a=S<<32-F|h>>>F;return a>>>0}z0.rotr64_lo=k;function s(S,h,F){return S>>>F}z0.shr64_hi=s;function q0(S,h,F){var a=S<<32-F|h>>>F;return a>>>0}return z0.shr64_lo=q0,z0}var J9={},TZ;function F2(){if(TZ)return J9;TZ=1;var U=G1(),$=z2();function Y(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return J9.BlockHash=Y,Y.prototype.update=function Z(J,G){if(J=U.toArray(J,G),!this.pending)this.pending=J;else this.pending=this.pending.concat(J);if(this.pendingTotal+=J.length,this.pending.length>=this._delta8){J=this.pending;var w=J.length%this._delta8;if(this.pending=J.slice(J.length-w,J.length),this.pending.length===0)this.pending=null;J=U.join32(J,0,J.length-w,this.endian);for(var Q=0;Q>>24&255,Q[q++]=J>>>16&255,Q[q++]=J>>>8&255,Q[q++]=J&255}else{Q[q++]=J&255,Q[q++]=J>>>8&255,Q[q++]=J>>>16&255,Q[q++]=J>>>24&255,Q[q++]=0,Q[q++]=0,Q[q++]=0,Q[q++]=0;for(z=8;z>>3}s0.g0_256=q;function z(R){return $(R,17)^$(R,19)^R>>>10}return s0.g1_256=z,s0}var G9,OZ;function HB(){if(OZ)return G9;OZ=1;var U=G1(),$=F2(),Y=aQ(),Z=U.rotl32,J=U.sum32,G=U.sum32_5,w=Y.ft_1,Q=$.BlockHash,q=[1518500249,1859775393,2400959708,3395469782];function z(){if(!(this instanceof z))return new z;Q.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}return U.inherits(z,Q),G9=z,z.blockSize=512,z.outSize=160,z.hmacStrength=80,z.padLength=64,z.prototype._update=function R(W,E){var D=this.W;for(var C=0;C<16;C++)D[C]=W[E+C];for(;Cthis.blockSize)J=new this.Hash().update(J).digest();$(J.length<=this.blockSize);for(var G=J.length;G{return(Y=$)=>{let Z="",J=Y|0;while(J--)Z+=U[Math.random()*U.length|0];return Z}},OB=(U=21)=>{let $="",Y=U|0;while(Y--)$+=TB[Math.random()*64|0];return $},EB=(U)=>Math.floor(U/25.4*72*20),d0=(U)=>Math.floor(U*72*20),N2=(U=0)=>{let $=U;return()=>++$},rQ=()=>N2(),sQ=()=>N2(1),nQ=()=>N2(),oQ=()=>N2(),R2=()=>OB().toLowerCase(),A9=(U)=>PB.sha1().update(U instanceof ArrayBuffer?new Uint8Array(U):U).digest("hex"),Y2=(U)=>CB("1234567890abcdef",U)(),tQ=()=>`${Y2(8)}-${Y2(4)}-${Y2(4)}-${Y2(4)}-${Y2(12)}`,B2=(U)=>new Uint8Array(new TextEncoder().encode(U)),eQ={CHARACTER:"character",COLUMN:"column",INSIDE_MARGIN:"insideMargin",LEFT_MARGIN:"leftMargin",MARGIN:"margin",OUTSIDE_MARGIN:"outsideMargin",PAGE:"page",RIGHT_MARGIN:"rightMargin"},UJ={BOTTOM_MARGIN:"bottomMargin",INSIDE_MARGIN:"insideMargin",LINE:"line",MARGIN:"margin",OUTSIDE_MARGIN:"outsideMargin",PAGE:"page",PARAGRAPH:"paragraph",TOP_MARGIN:"topMargin"},$J=()=>new X0({name:"wp:simplePos",attributes:{x:{key:"x",value:0},y:{key:"y",value:0}}}),YJ=(U)=>new X0({name:"wp:align",children:[U]}),ZJ=(U)=>new X0({name:"wp:posOffset",children:[U.toString()]}),QJ=({relative:U,align:$,offset:Y})=>new X0({name:"wp:positionH",attributes:{relativeFrom:{key:"relativeFrom",value:U!=null?U:eQ.PAGE}},children:[(()=>{if($)return YJ($);else if(Y!==void 0)return ZJ(Y);else throw new Error("There is no configuration provided for floating position (Align or offset)")})()]}),JJ=({relative:U,align:$,offset:Y})=>new X0({name:"wp:positionV",attributes:{relativeFrom:{key:"relativeFrom",value:U!=null?U:UJ.PAGE}},children:[(()=>{if($)return YJ($);else if(Y!==void 0)return ZJ(Y);else throw new Error("There is no configuration provided for floating position (Align or offset)")})()]}),GJ=((U)=>{return U.CENTER="ctr",U.TOP="t",U.BOTTOM="b",U})(GJ||{}),KJ=(U={})=>{var $,Y,Z,J;return new X0({name:"wps:bodyPr",attributes:{lIns:{key:"lIns",value:($=U.margins)==null?void 0:$.left},rIns:{key:"rIns",value:(Y=U.margins)==null?void 0:Y.right},tIns:{key:"tIns",value:(Z=U.margins)==null?void 0:Z.top},bIns:{key:"bIns",value:(J=U.margins)==null?void 0:J.bottom},anchor:{key:"anchor",value:U.verticalAnchor}},children:[...U.noAutoFit?[new B0("a:noAutofit",U.noAutoFit)]:[]]})},kB=(U={txBox:"1"})=>new X0({name:"wps:cNvSpPr",attributes:{txBox:{key:"txBox",value:U.txBox}}}),SB=(U)=>new X0({name:"w:txbxContent",children:[...U]}),vB=(U)=>new X0({name:"wps:txbx",children:[SB(U)]});class wJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{cx:"cx",cy:"cy"})}}class BJ extends o{constructor(U,$){super("a:ext");Y0(this,"attributes"),this.attributes=new wJ({cx:U,cy:$}),this.root.push(this.attributes)}}class qJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{x:"x",y:"y"})}}class XJ extends o{constructor(U,$){super("a:off");this.root.push(new qJ({x:U!=null?U:0,y:$!=null?$:0}))}}class IJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{flipVertical:"flipV",flipHorizontal:"flipH",rotation:"rot"})}}class KU extends o{constructor(U){var $,Y,Z,J,G,w;super("a:xfrm");Y0(this,"extents"),Y0(this,"offset"),this.root.push(new IJ({flipVertical:($=U.flip)==null?void 0:$.vertical,flipHorizontal:(Y=U.flip)==null?void 0:Y.horizontal,rotation:U.rotation})),this.offset=new XJ((J=(Z=U.offset)==null?void 0:Z.emus)==null?void 0:J.x,(w=(G=U.offset)==null?void 0:G.emus)==null?void 0:w.y),this.extents=new BJ(U.emus.x,U.emus.y),this.root.push(this.offset),this.root.push(this.extents)}}var LJ=()=>new X0({name:"a:noFill"}),_B=(U)=>new X0({name:"a:srgbClr",attributes:{value:{key:"val",value:U.value}}}),yB=(U)=>new X0({name:"a:schemeClr",attributes:{value:{key:"val",value:U.value}}}),P9=(U)=>new X0({name:"a:solidFill",children:[U.type==="rgb"?_B(U):yB(U)]}),bB=(U)=>new X0({name:"a:ln",attributes:{width:{key:"w",value:U.width},cap:{key:"cap",value:U.cap},compoundLine:{key:"cmpd",value:U.compoundLine},align:{key:"algn",value:U.align}},children:[U.type==="noFill"?LJ():U.solidFillType==="rgb"?P9({type:"rgb",value:U.value}):P9({type:"scheme",value:U.value})]});class VJ extends o{constructor(){super("a:avLst")}}class MJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{prst:"prst"})}}class WJ extends o{constructor(){super("a:prstGeom");this.root.push(new MJ({prst:"rect"})),this.root.push(new VJ)}}class HJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{bwMode:"bwMode"})}}class wU extends o{constructor({element:U,outline:$,solidFill:Y,transform:Z}){super(`${U}:spPr`);if(Y0(this,"form"),this.root.push(new HJ({bwMode:"auto"})),this.form=new KU(Z),this.root.push(this.form),this.root.push(new WJ),$)this.root.push(LJ()),this.root.push(bB($));if(Y)this.root.push(P9(Y))}}var xZ=(U)=>new X0({name:"wps:wsp",children:[kB(U.nonVisualProperties),new wU({element:"wps",transform:U.transformation,outline:U.outline,solidFill:U.solidFill}),vB(U.children),KJ(U.bodyProperties)]});class x2 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{uri:"uri"})}}var gB=(U)=>new X0({name:"asvg:svgBlip",attributes:{asvg:{key:"xmlns:asvg",value:"http://schemas.microsoft.com/office/drawing/2016/SVG/main"},embed:{key:"r:embed",value:`rId{${U.fileName}}`}}}),xB=(U)=>new X0({name:"a:ext",attributes:{uri:{key:"uri",value:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"}},children:[gB(U)]}),fB=(U)=>new X0({name:"a:extLst",children:[xB(U)]}),hB=(U)=>new X0({name:"a:blip",attributes:{embed:{key:"r:embed",value:`rId{${U.type==="svg"?U.fallback.fileName:U.fileName}}`},cstate:{key:"cstate",value:"none"}},children:U.type==="svg"?[fB(U)]:[]});class jJ extends o{constructor(){super("a:srcRect")}}class zJ extends o{constructor(){super("a:fillRect")}}class FJ extends o{constructor(){super("a:stretch");this.root.push(new zJ)}}class NJ extends o{constructor(U){super("pic:blipFill");this.root.push(hB(U)),this.root.push(new jJ),this.root.push(new FJ)}}class RJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{noChangeAspect:"noChangeAspect",noChangeArrowheads:"noChangeArrowheads"})}}class DJ extends o{constructor(){super("a:picLocks");this.root.push(new RJ({noChangeAspect:1,noChangeArrowheads:1}))}}class AJ extends o{constructor(){super("pic:cNvPicPr");this.root.push(new DJ)}}var PJ=(U,$)=>new X0({name:"a:hlinkClick",attributes:R0(W0({},$?{xmlns:{key:"xmlns:a",value:"http://schemas.openxmlformats.org/drawingml/2006/main"}}:{}),{id:{key:"r:id",value:`rId${U}`}})});class TJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"id",name:"name",descr:"descr"})}}class CJ extends o{constructor(){super("pic:cNvPr");this.root.push(new TJ({id:0,name:"",descr:""}))}prepForXml(U){for(let $=U.stack.length-1;$>=0;$--){let Y=U.stack[$];if(!(Y instanceof _1))continue;this.root.push(PJ(Y.linkId,!1));break}return super.prepForXml(U)}}class OJ extends o{constructor(){super("pic:nvPicPr");this.root.push(new CJ),this.root.push(new AJ)}}class EJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns:pic"})}}class T9 extends o{constructor({mediaData:U,transform:$,outline:Y}){super("pic:pic");this.root.push(new EJ({xmlns:"http://schemas.openxmlformats.org/drawingml/2006/picture"})),this.root.push(new OJ),this.root.push(new NJ(U)),this.root.push(new wU({element:"pic",transform:$,outline:Y}))}}var uB=(U)=>new X0({name:"wpg:grpSpPr",children:[new KU(U)]}),dB=()=>new X0({name:"wpg:cNvGrpSpPr"}),cB=(U)=>new X0({name:"wpg:wgp",children:[dB(),uB(U.transformation),...U.children]});class kJ extends o{constructor({mediaData:U,transform:$,outline:Y,solidFill:Z}){super("a:graphicData");if(U.type==="wps"){this.root.push(new x2({uri:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape"}));let J=xZ(R0(W0({},U.data),{transformation:$,outline:Y,solidFill:Z}));this.root.push(J)}else if(U.type==="wpg"){this.root.push(new x2({uri:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"}));let G=U.children.map((Q)=>{if(Q.type==="wps")return xZ(R0(W0({},Q.data),{transformation:Q.transformation,outline:Q.outline,solidFill:Q.solidFill}));else return new T9({mediaData:Q,transform:Q.transformation,outline:Q.outline})}),w=cB({children:G,transformation:$});this.root.push(w)}else{this.root.push(new x2({uri:"http://schemas.openxmlformats.org/drawingml/2006/picture"}));let G=new T9({mediaData:U,transform:$,outline:Y});this.root.push(G)}}}class SJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{a:"xmlns:a"})}}class BU extends o{constructor({mediaData:U,transform:$,outline:Y,solidFill:Z}){super("a:graphic");Y0(this,"data"),this.root.push(new SJ({a:"http://schemas.openxmlformats.org/drawingml/2006/main"})),this.data=new kJ({mediaData:U,transform:$,outline:Y,solidFill:Z}),this.root.push(this.data)}}var G2={NONE:0,SQUARE:1,TIGHT:2,TOP_AND_BOTTOM:3},vJ={BOTH_SIDES:"bothSides",LEFT:"left",RIGHT:"right",LARGEST:"largest"},C9=()=>new X0({name:"wp:wrapNone"}),_J=(U,$={top:0,bottom:0,left:0,right:0})=>new X0({name:"wp:wrapSquare",attributes:{wrapText:{key:"wrapText",value:U.side||vJ.BOTH_SIDES},distT:{key:"distT",value:$.top},distB:{key:"distB",value:$.bottom},distL:{key:"distL",value:$.left},distR:{key:"distR",value:$.right}}}),yJ=(U={top:0,bottom:0})=>new X0({name:"wp:wrapTight",attributes:{distT:{key:"distT",value:U.top},distB:{key:"distB",value:U.bottom}}}),bJ=(U={top:0,bottom:0})=>new X0({name:"wp:wrapTopAndBottom",attributes:{distT:{key:"distT",value:U.top},distB:{key:"distB",value:U.bottom}}});class qU extends o{constructor({name:U,description:$,title:Y,id:Z}={name:"",description:"",title:""}){super("wp:docPr");Y0(this,"docPropertiesUniqueNumericId",nQ());let J={id:{key:"id",value:Z!=null?Z:this.docPropertiesUniqueNumericId()},name:{key:"name",value:U}};if($!==null&&$!==void 0)J.description={key:"descr",value:$};if(Y!==null&&Y!==void 0)J.title={key:"title",value:Y};this.root.push(new n2(J))}prepForXml(U){for(let $=U.stack.length-1;$>=0;$--){let Y=U.stack[$];if(!(Y instanceof _1))continue;this.root.push(PJ(Y.linkId,!0));break}return super.prepForXml(U)}}var gJ=({top:U,right:$,bottom:Y,left:Z})=>new X0({name:"wp:effectExtent",attributes:{top:{key:"t",value:U},right:{key:"r",value:$},bottom:{key:"b",value:Y},left:{key:"l",value:Z}}}),xJ=({x:U,y:$})=>new X0({name:"wp:extent",attributes:{x:{key:"cx",value:U},y:{key:"cy",value:$}}});class fJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns:a",noChangeAspect:"noChangeAspect"})}}class hJ extends o{constructor(){super("a:graphicFrameLocks");this.root.push(new fJ({xmlns:"http://schemas.openxmlformats.org/drawingml/2006/main",noChangeAspect:1}))}}var uJ=()=>new X0({name:"wp:cNvGraphicFramePr",children:[new hJ]});class dJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{distT:"distT",distB:"distB",distL:"distL",distR:"distR",allowOverlap:"allowOverlap",behindDoc:"behindDoc",layoutInCell:"layoutInCell",locked:"locked",relativeHeight:"relativeHeight",simplePos:"simplePos"})}}class cJ extends o{constructor({mediaData:U,transform:$,drawingOptions:Y}){super("wp:anchor");let Z=W0({allowOverlap:!0,behindDocument:!1,lockAnchor:!1,layoutInCell:!0,verticalPosition:{},horizontalPosition:{}},Y.floating);if(this.root.push(new dJ({distT:Z.margins?Z.margins.top||0:0,distB:Z.margins?Z.margins.bottom||0:0,distL:Z.margins?Z.margins.left||0:0,distR:Z.margins?Z.margins.right||0:0,simplePos:"0",allowOverlap:Z.allowOverlap===!0?"1":"0",behindDoc:Z.behindDocument===!0?"1":"0",locked:Z.lockAnchor===!0?"1":"0",layoutInCell:Z.layoutInCell===!0?"1":"0",relativeHeight:Z.zIndex?Z.zIndex:$.emus.y})),this.root.push($J()),this.root.push(QJ(Z.horizontalPosition)),this.root.push(JJ(Z.verticalPosition)),this.root.push(xJ({x:$.emus.x,y:$.emus.y})),this.root.push(gJ({top:0,right:0,bottom:0,left:0})),Y.floating!==void 0&&Y.floating.wrap!==void 0)switch(Y.floating.wrap.type){case G2.SQUARE:this.root.push(_J(Y.floating.wrap,Y.floating.margins));break;case G2.TIGHT:this.root.push(yJ(Y.floating.margins));break;case G2.TOP_AND_BOTTOM:this.root.push(bJ(Y.floating.margins));break;case G2.NONE:default:this.root.push(C9())}else this.root.push(C9());this.root.push(new qU(Y.docProperties)),this.root.push(uJ()),this.root.push(new BU({mediaData:U,transform:$,outline:Y.outline,solidFill:Y.solidFill}))}}var mB=({mediaData:U,transform:$,docProperties:Y,outline:Z,solidFill:J})=>{var G,w,Q,q;return new X0({name:"wp:inline",attributes:{distanceTop:{key:"distT",value:0},distanceBottom:{key:"distB",value:0},distanceLeft:{key:"distL",value:0},distanceRight:{key:"distR",value:0}},children:[xJ({x:$.emus.x,y:$.emus.y}),gJ(Z?{top:((G=Z.width)!=null?G:9525)*2,right:((w=Z.width)!=null?w:9525)*2,bottom:((Q=Z.width)!=null?Q:9525)*2,left:((q=Z.width)!=null?q:9525)*2}:{top:0,right:0,bottom:0,left:0}),new qU(Y),uJ(),new BU({mediaData:U,transform:$,outline:Z,solidFill:J})]})};class D2 extends o{constructor(U,$={}){super("w:drawing");if(!$.floating)this.root.push(mB({mediaData:U,transform:U.transformation,docProperties:$.docProperties,outline:$.outline,solidFill:$.solidFill}));else this.root.push(new cJ({mediaData:U,transform:U.transformation,drawingOptions:$}))}}var lB=(U)=>{let Y=U.indexOf(";base64,"),Z=Y===-1?0:Y+8;return new Uint8Array(atob(U.substring(Z)).split("").map((J)=>J.charCodeAt(0)))},mJ=(U)=>typeof U==="string"?lB(U):U,L9=(U,$)=>({data:mJ(U.data),fileName:$,transformation:{pixels:{x:Math.round(U.transformation.width),y:Math.round(U.transformation.height)},emus:{x:Math.round(U.transformation.width*9525),y:Math.round(U.transformation.height*9525)},flip:U.transformation.flip,rotation:U.transformation.rotation?U.transformation.rotation*60000:void 0}});class lJ extends C0{constructor(U){super({});Y0(this,"imageData");let Y=`${A9(U.data)}.${U.type}`;this.imageData=U.type==="svg"?R0(W0({type:U.type},L9(U,Y)),{fallback:W0({type:U.fallback.type},L9(R0(W0({},U.fallback),{transformation:U.transformation}),`${A9(U.fallback.data)}.${U.fallback.type}`))}):W0({type:U.type},L9(U,Y));let Z=new D2(this.imageData,{floating:U.floating,docProperties:U.altText,outline:U.outline});this.root.push(Z)}prepForXml(U){if(U.file.Media.addImage(this.imageData.fileName,this.imageData),this.imageData.type==="svg")U.file.Media.addImage(this.imageData.fallback.fileName,this.imageData.fallback);return super.prepForXml(U)}}var XU=(U)=>{var $,Y,Z,J,G,w,Q,q;return{offset:{pixels:{x:Math.round((Y=($=U.offset)==null?void 0:$.left)!=null?Y:0),y:Math.round((J=(Z=U.offset)==null?void 0:Z.top)!=null?J:0)},emus:{x:Math.round(((w=(G=U.offset)==null?void 0:G.left)!=null?w:0)*9525),y:Math.round(((q=(Q=U.offset)==null?void 0:Q.top)!=null?q:0)*9525)}},pixels:{x:Math.round(U.width),y:Math.round(U.height)},emus:{x:Math.round(U.width*9525),y:Math.round(U.height*9525)},flip:U.flip,rotation:U.rotation?U.rotation*60000:void 0}};class aJ extends C0{constructor(U){super({});Y0(this,"wpsShapeData"),this.wpsShapeData={type:U.type,transformation:XU(U.transformation),data:W0({},U)};let $=new D2(this.wpsShapeData,{floating:U.floating,docProperties:U.altText,outline:U.outline,solidFill:U.solidFill});this.root.push($)}}class pJ extends C0{constructor(U){super({});Y0(this,"wpgGroupData"),Y0(this,"mediaDatas"),this.wpgGroupData={type:U.type,transformation:XU(U.transformation),children:U.children};let $=new D2(this.wpgGroupData,{floating:U.floating,docProperties:U.altText});this.mediaDatas=U.children.filter((Y)=>Y.type!=="wps").map((Y)=>Y),this.root.push($)}prepForXml(U){return this.mediaDatas.forEach(($)=>{if(U.file.Media.addImage($.fileName,$),$.type==="svg")U.file.Media.addImage($.fallback.fileName,$.fallback)}),super.prepForXml(U)}}class iJ extends o{constructor(U){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push(`SEQ ${U}`)}}class rJ extends C0{constructor(U){super({});this.root.push(U1(!0)),this.root.push(new iJ(U)),this.root.push(V1()),this.root.push($1())}}class sJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{instr:"w:instr"})}}class J6 extends o{constructor(U,$){super("w:fldSimple");if(this.root.push(new sJ({instr:U})),$!==void 0)this.root.push(new p1($))}}class nJ extends J6{constructor(U){super(` MERGEFIELD ${U} `,`«${U}»`)}}class oJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns"})}}var tJ={EXTERNAL:"External"},aB=(U,$,Y,Z)=>new X0({name:"Relationship",attributes:{id:{key:"Id",value:U},type:{key:"Type",value:$},target:{key:"Target",value:Y},targetMode:{key:"TargetMode",value:Z}}});class W1 extends o{constructor(){super("Relationships");this.root.push(new oJ({xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"}))}addRelationship(U,$,Y,Z){this.root.push(aB(`rId${U}`,$,Y,Z))}get RelationshipCount(){return this.root.length-1}}class eJ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",initials:"w:initials",author:"w:author",date:"w:date"})}}class G6 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class UG extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{"xmlns:cx":"xmlns:cx","xmlns:cx1":"xmlns:cx1","xmlns:cx2":"xmlns:cx2","xmlns:cx3":"xmlns:cx3","xmlns:cx4":"xmlns:cx4","xmlns:cx5":"xmlns:cx5","xmlns:cx6":"xmlns:cx6","xmlns:cx7":"xmlns:cx7","xmlns:cx8":"xmlns:cx8","xmlns:mc":"xmlns:mc","xmlns:aink":"xmlns:aink","xmlns:am3d":"xmlns:am3d","xmlns:o":"xmlns:o","xmlns:r":"xmlns:r","xmlns:m":"xmlns:m","xmlns:v":"xmlns:v","xmlns:wp14":"xmlns:wp14","xmlns:wp":"xmlns:wp","xmlns:w10":"xmlns:w10","xmlns:w":"xmlns:w","xmlns:w14":"xmlns:w14","xmlns:w15":"xmlns:w15","xmlns:w16cex":"xmlns:w16cex","xmlns:w16cid":"xmlns:w16cid","xmlns:w16":"xmlns:w16","xmlns:w16sdtdh":"xmlns:w16sdtdh","xmlns:w16se":"xmlns:w16se","xmlns:wpg":"xmlns:wpg","xmlns:wpi":"xmlns:wpi","xmlns:wne":"xmlns:wne","xmlns:wps":"xmlns:wps"})}}class $G extends o{constructor(U){super("w:commentRangeStart");this.root.push(new G6({id:U}))}}class YG extends o{constructor(U){super("w:commentRangeEnd");this.root.push(new G6({id:U}))}}class ZG extends o{constructor(U){super("w:commentReference");this.root.push(new G6({id:U}))}}class IU extends o{constructor({id:U,initials:$,author:Y,date:Z=new Date,children:J}){super("w:comment");this.root.push(new eJ({id:U,initials:$,author:Y,date:Z.toISOString()}));for(let G of J)this.root.push(G)}}class LU extends o{constructor({children:U}){super("w:comments");Y0(this,"relationships"),this.root.push(new UG({"xmlns:cx":"http://schemas.microsoft.com/office/drawing/2014/chartex","xmlns:cx1":"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex","xmlns:cx2":"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex","xmlns:cx3":"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex","xmlns:cx4":"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex","xmlns:cx5":"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex","xmlns:cx6":"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex","xmlns:cx7":"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex","xmlns:cx8":"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","xmlns:aink":"http://schemas.microsoft.com/office/drawing/2016/ink","xmlns:am3d":"http://schemas.microsoft.com/office/drawing/2017/model3d","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:m":"http://schemas.openxmlformats.org/officeDocument/2006/math","xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:wp14":"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing","xmlns:wp":"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing","xmlns:w10":"urn:schemas-microsoft-com:office:word","xmlns:w":"http://schemas.openxmlformats.org/wordprocessingml/2006/main","xmlns:w14":"http://schemas.microsoft.com/office/word/2010/wordml","xmlns:w15":"http://schemas.microsoft.com/office/word/2012/wordml","xmlns:w16cex":"http://schemas.microsoft.com/office/word/2018/wordml/cex","xmlns:w16cid":"http://schemas.microsoft.com/office/word/2016/wordml/cid","xmlns:w16":"http://schemas.microsoft.com/office/word/2018/wordml","xmlns:w16sdtdh":"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash","xmlns:w16se":"http://schemas.microsoft.com/office/word/2015/wordml/symex","xmlns:wpg":"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup","xmlns:wpi":"http://schemas.microsoft.com/office/word/2010/wordprocessingInk","xmlns:wne":"http://schemas.microsoft.com/office/word/2006/wordml","xmlns:wps":"http://schemas.microsoft.com/office/word/2010/wordprocessingShape"}));for(let $ of U)this.root.push(new IU($));this.relationships=new W1}get Relationships(){return this.relationships}}class QG extends E0{constructor(){super("w:noBreakHyphen")}}class JG extends E0{constructor(){super("w:softHyphen")}}class GG extends E0{constructor(){super("w:dayShort")}}class KG extends E0{constructor(){super("w:monthShort")}}class wG extends E0{constructor(){super("w:yearShort")}}class BG extends E0{constructor(){super("w:dayLong")}}class qG extends E0{constructor(){super("w:monthLong")}}class XG extends E0{constructor(){super("w:yearLong")}}class IG extends E0{constructor(){super("w:annotationRef")}}class LG extends E0{constructor(){super("w:footnoteRef")}}class VU extends E0{constructor(){super("w:endnoteRef")}}class VG extends E0{constructor(){super("w:separator")}}class MG extends E0{constructor(){super("w:continuationSeparator")}}class WG extends E0{constructor(){super("w:pgNum")}}class HG extends E0{constructor(){super("w:cr")}}class MU extends E0{constructor(){super("w:tab")}}class jG extends E0{constructor(){super("w:lastRenderedPageBreak")}}var pB={LEFT:"left",CENTER:"center",RIGHT:"right"},iB={MARGIN:"margin",INDENT:"indent"},rB={NONE:"none",DOT:"dot",HYPHEN:"hyphen",UNDERSCORE:"underscore",MIDDLE_DOT:"middleDot"};class zG extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{alignment:"w:alignment",relativeTo:"w:relativeTo",leader:"w:leader"})}}class FG extends o{constructor(U){super("w:ptab");this.root.push(new zG({alignment:U.alignment,relativeTo:U.relativeTo,leader:U.leader}))}}var NG={COLUMN:"column",PAGE:"page"};class WU extends o{constructor(U){super("w:br");this.root.push(new O0({type:U}))}}class RG extends C0{constructor(){super({});this.root.push(new WU(NG.PAGE))}}class DG extends C0{constructor(){super({});this.root.push(new WU(NG.COLUMN))}}class HU extends o{constructor(){super("w:pageBreakBefore")}}var v1={AT_LEAST:"atLeast",EXACTLY:"exactly",EXACT:"exact",AUTO:"auto"},AG=({after:U,before:$,line:Y,lineRule:Z,beforeAutoSpacing:J,afterAutoSpacing:G})=>new X0({name:"w:spacing",attributes:{after:{key:"w:after",value:U},before:{key:"w:before",value:$},line:{key:"w:line",value:Y},lineRule:{key:"w:lineRule",value:Z},beforeAutoSpacing:{key:"w:beforeAutospacing",value:J},afterAutoSpacing:{key:"w:afterAutospacing",value:G}}}),sB={HEADING_1:"Heading1",HEADING_2:"Heading2",HEADING_3:"Heading3",HEADING_4:"Heading4",HEADING_5:"Heading5",HEADING_6:"Heading6",TITLE:"Title"},K2=(U)=>new X0({name:"w:pStyle",attributes:{val:{key:"w:val",value:U}}}),O9={LEFT:"left",RIGHT:"right",CENTER:"center",BAR:"bar",CLEAR:"clear",DECIMAL:"decimal",END:"end",NUM:"num",START:"start"},nB={DOT:"dot",HYPHEN:"hyphen",MIDDLE_DOT:"middleDot",NONE:"none",UNDERSCORE:"underscore"},oB={MAX:9026},PG=({type:U,position:$,leader:Y})=>new X0({name:"w:tab",attributes:{val:{key:"w:val",value:U},pos:{key:"w:pos",value:$},leader:{key:"w:leader",value:Y}}}),TG=(U)=>new X0({name:"w:tabs",children:U.map(($)=>PG($))});class q2 extends o{constructor(U,$){super("w:numPr");this.root.push(new CG($)),this.root.push(new OG(U))}}class CG extends o{constructor(U){super("w:ilvl");if(U>9)throw new Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");this.root.push(new O0({val:U}))}}class OG extends o{constructor(U){super("w:numId");this.root.push(new O0({val:typeof U==="string"?`{${U}}`:U}))}}class r1 extends o{constructor(){super(...arguments);Y0(this,"fileChild",Symbol())}}class EG extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"r:id",history:"w:history",anchor:"w:anchor"})}}var tB={INTERNAL:"INTERNAL",EXTERNAL:"EXTERNAL"};class _1 extends o{constructor(U,$,Y){super("w:hyperlink");Y0(this,"linkId"),this.linkId=$;let Z={history:1,anchor:Y?Y:void 0,id:!Y?`rId${this.linkId}`:void 0},J=new EG(Z);this.root.push(J),U.forEach((G)=>{this.root.push(G)})}}class jU extends _1{constructor(U){super(U.children,R2(),U.anchor)}}class K6 extends o{constructor(U){super("w:externalHyperlink");this.options=U}}class kG extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",name:"w:name"})}}class SG extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class zU{constructor(U){Y0(this,"bookmarkUniqueNumericId",oQ()),Y0(this,"start"),Y0(this,"children"),Y0(this,"end");let $=this.bookmarkUniqueNumericId();this.start=new FU(U.id,$),this.children=U.children,this.end=new NU($)}}class FU extends o{constructor(U,$){super("w:bookmarkStart");let Y=new kG({name:U,id:$});this.root.push(Y)}}class NU extends o{constructor(U){super("w:bookmarkEnd");let $=new SG({id:U});this.root.push($)}}var vG=((U)=>{return U.NONE="none",U.RELATIVE="relative",U.NO_CONTEXT="no_context",U.FULL_CONTEXT="full_context",U})(vG||{}),eB={["relative"]:"\\r",["no_context"]:"\\n",["full_context"]:"\\w",["none"]:void 0};class _G extends J6{constructor(U,$,Y={}){let{hyperlink:Z=!0,referenceFormat:J="full_context"}=Y,G=`REF ${U}`,w=[...Z?["\\h"]:[],...[eB[J]].filter((q)=>!!q)],Q=`${G} ${w.join(" ")}`;super(Q,$)}}var yG=(U)=>new X0({name:"w:outlineLvl",attributes:{val:{key:"w:val",value:U}}});class bG extends o{constructor(U,$={}){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE}));let Y=`PAGEREF ${U}`;if($.hyperlink)Y=`${Y} \\h`;if($.useRelativePosition)Y=`${Y} \\p`;this.root.push(Y)}}class gG extends C0{constructor(U,$={}){super({children:[U1(!0),new bG(U,$),$1()]})}}var Uq={ANSI:"00",DEFAULT:"01",SYMBOL:"02",MAC:"4D",JIS:"80",HANGUL:"81",JOHAB:"82",GB_2312:"86",CHINESEBIG5:"88",GREEK:"A1",TURKISH:"A2",VIETNAMESE:"A3",HEBREW:"B1",ARABIC:"B2",BALTIC:"BA",RUSSIAN:"CC",THAI:"DE",EASTEUROPE:"EE",OEM:"FF"},_2=({id:U,fontKey:$,subsetted:Y},Z)=>new X0({name:Z,attributes:W0({id:{key:"r:id",value:U}},$?{fontKey:{key:"w:fontKey",value:`{${$}}`}}:{}),children:[...Y?[new B0("w:subsetted",Y)]:[]]}),$q=({name:U,altName:$,panose1:Y,charset:Z,family:J,notTrueType:G,pitch:w,sig:Q,embedRegular:q,embedBold:z,embedItalic:R,embedBoldItalic:W})=>new X0({name:"w:font",attributes:{name:{key:"w:name",value:U}},children:[...$?[u1("w:altName",$)]:[],...Y?[u1("w:panose1",Y)]:[],...Z?[u1("w:charset",Z)]:[],u1("w:family",J),...G?[new B0("w:notTrueType",G)]:[],u1("w:pitch",w),...Q?[new X0({name:"w:sig",attributes:{usb0:{key:"w:usb0",value:Q.usb0},usb1:{key:"w:usb1",value:Q.usb1},usb2:{key:"w:usb2",value:Q.usb2},usb3:{key:"w:usb3",value:Q.usb3},csb0:{key:"w:csb0",value:Q.csb0},csb1:{key:"w:csb1",value:Q.csb1}}})]:[],...q?[_2(q,"w:embedRegular")]:[],...z?[_2(z,"w:embedBold")]:[],...R?[_2(R,"w:embedItalic")]:[],...W?[_2(W,"w:embedBoldItalic")]:[]]}),Yq=({name:U,index:$,fontKey:Y,characterSet:Z})=>$q({name:U,sig:{usb0:"E0002AFF",usb1:"C000247B",usb2:"00000009",usb3:"00000000",csb0:"000001FF",csb1:"00000000"},charset:Z,family:"auto",pitch:"variable",embedRegular:{fontKey:Y,id:`rId${$}`}}),Zq=(U)=>new X0({name:"w:fonts",attributes:{mc:{key:"xmlns:mc",value:"http://schemas.openxmlformats.org/markup-compatibility/2006"},r:{key:"xmlns:r",value:"http://schemas.openxmlformats.org/officeDocument/2006/relationships"},w:{key:"xmlns:w",value:"http://schemas.openxmlformats.org/wordprocessingml/2006/main"},w14:{key:"xmlns:w14",value:"http://schemas.microsoft.com/office/word/2010/wordml"},w15:{key:"xmlns:w15",value:"http://schemas.microsoft.com/office/word/2012/wordml"},w16cex:{key:"xmlns:w16cex",value:"http://schemas.microsoft.com/office/word/2018/wordml/cex"},w16cid:{key:"xmlns:w16cid",value:"http://schemas.microsoft.com/office/word/2016/wordml/cid"},w16:{key:"xmlns:w16",value:"http://schemas.microsoft.com/office/word/2018/wordml"},w16sdtdh:{key:"xmlns:w16sdtdh",value:"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash"},w16se:{key:"xmlns:w16se",value:"http://schemas.microsoft.com/office/word/2015/wordml/symex"},Ignorable:{key:"mc:Ignorable",value:"w14 w15 w16se w16cid w16 w16cex w16sdtdh"}},children:U.map(($,Y)=>Yq({name:$.name,index:Y+1,fontKey:$.fontKey,characterSet:$.characterSet}))});class RU{constructor(U){Y0(this,"fontTable"),Y0(this,"relationships"),Y0(this,"fontOptionsWithKey",[]),this.options=U,this.fontOptionsWithKey=U.map(($)=>R0(W0({},$),{fontKey:tQ()})),this.fontTable=Zq(this.fontOptionsWithKey),this.relationships=new W1;for(let $=0;$new X0({name:"w:wordWrap",attributes:{val:{key:"w:val",value:0}}}),Jq={NONE:"none",DROP:"drop",MARGIN:"margin"},Gq={MARGIN:"margin",PAGE:"page",TEXT:"text"},Kq={AROUND:"around",AUTO:"auto",NONE:"none",NOT_BESIDE:"notBeside",THROUGH:"through",TIGHT:"tight"},xG=(U)=>{var $,Y;return new X0({name:"w:framePr",attributes:{anchorLock:{key:"w:anchorLock",value:U.anchorLock},dropCap:{key:"w:dropCap",value:U.dropCap},width:{key:"w:w",value:U.width},height:{key:"w:h",value:U.height},x:{key:"w:x",value:U.position?U.position.x:void 0},y:{key:"w:y",value:U.position?U.position.y:void 0},anchorHorizontal:{key:"w:hAnchor",value:U.anchor.horizontal},anchorVertical:{key:"w:vAnchor",value:U.anchor.vertical},spaceHorizontal:{key:"w:hSpace",value:($=U.space)==null?void 0:$.horizontal},spaceVertical:{key:"w:vSpace",value:(Y=U.space)==null?void 0:Y.vertical},rule:{key:"w:hRule",value:U.rule},alignmentX:{key:"w:xAlign",value:U.alignment?U.alignment.x:void 0},alignmentY:{key:"w:yAlign",value:U.alignment?U.alignment.y:void 0},lines:{key:"w:lines",value:U.lines},wrap:{key:"w:wrap",value:U.wrap}}})};class Z1 extends Q1{constructor(U){var $,Y;super("w:pPr",U==null?void 0:U.includeIfEmpty);if(Y0(this,"numberingReferences",[]),!U)return this;if(U.heading)this.push(K2(U.heading));if(U.bullet)this.push(K2("ListParagraph"));if(U.numbering){if(!U.style&&!U.heading){if(!U.numbering.custom)this.push(K2("ListParagraph"))}}if(U.style)this.push(K2(U.style));if(U.keepNext!==void 0)this.push(new B0("w:keepNext",U.keepNext));if(U.keepLines!==void 0)this.push(new B0("w:keepLines",U.keepLines));if(U.pageBreakBefore)this.push(new HU);if(U.frame)this.push(xG(U.frame));if(U.widowControl!==void 0)this.push(new B0("w:widowControl",U.widowControl));if(U.bullet)this.push(new q2(1,U.bullet.level));if(U.numbering)this.numberingReferences.push({reference:U.numbering.reference,instance:($=U.numbering.instance)!=null?$:0}),this.push(new q2(`${U.numbering.reference}-${(Y=U.numbering.instance)!=null?Y:0}`,U.numbering.level));else if(U.numbering===!1)this.push(new q2(0,0));if(U.border)this.push(new o9(U.border));if(U.thematicBreak)this.push(new t9);if(U.shading)this.push(j2(U.shading));if(U.wordWrap)this.push(Qq());if(U.overflowPunctuation)this.push(new B0("w:overflowPunct",U.overflowPunctuation));let Z=[...U.rightTabStop!==void 0?[{type:O9.RIGHT,position:U.rightTabStop}]:[],...U.tabStops?U.tabStops:[],...U.leftTabStop!==void 0?[{type:O9.LEFT,position:U.leftTabStop}]:[]];if(Z.length>0)this.push(TG(Z));if(U.bidirectional!==void 0)this.push(new B0("w:bidi",U.bidirectional));if(U.spacing)this.push(AG(U.spacing));if(U.indent)this.push(kQ(U.indent));if(U.contextualSpacing!==void 0)this.push(new B0("w:contextualSpacing",U.contextualSpacing));if(U.alignment)this.push(n9(U.alignment));if(U.outlineLevel!==void 0)this.push(yG(U.outlineLevel));if(U.suppressLineNumbers!==void 0)this.push(new B0("w:suppressLineNumbers",U.suppressLineNumbers));if(U.autoSpaceEastAsianText!==void 0)this.push(new B0("w:autoSpaceDN",U.autoSpaceEastAsianText));if(U.run)this.push(new QU(U.run));if(U.revision)this.push(new DU(U.revision))}push(U){this.root.push(U)}prepForXml(U){if(!(U.viewWrapper instanceof RU))for(let $ of this.numberingReferences)U.file.Numbering.createConcreteNumberingInstance($.reference,$.instance);return super.prepForXml(U)}}class DU extends o{constructor(U){super("w:pPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.root.push(new Z1(R0(W0({},U),{includeIfEmpty:!0})))}}class h0 extends r1{constructor(U){super("w:p");if(Y0(this,"properties"),typeof U==="string")return this.properties=new Z1({}),this.root.push(this.properties),this.root.push(new p1(U)),this;if(this.properties=new Z1(U),this.root.push(this.properties),U.text)this.root.push(new p1(U.text));if(U.children)for(let $ of U.children){if($ instanceof zU){this.root.push($.start);for(let Y of $.children)this.root.push(Y);this.root.push($.end);continue}this.root.push($)}}prepForXml(U){for(let $ of this.root)if($ instanceof K6){let Y=this.root.indexOf($),Z=new _1($.options.children,R2());U.viewWrapper.Relationships.addRelationship(Z.linkId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",$.options.link,tJ.EXTERNAL),this.root[Y]=Z}return super.prepForXml(U)}addRunToFront(U){return this.root.splice(1,0,U),this}}var wq=class U extends o{constructor($){super("m:oMath");for(let Y of $.children)this.root.push(Y)}};class fG extends o{constructor(U){super("m:t");this.root.push(U)}}class hG extends o{constructor(U){super("m:r");this.root.push(new fG(U))}}class AU extends o{constructor(U){super("m:den");for(let $ of U)this.root.push($)}}class PU extends o{constructor(U){super("m:num");for(let $ of U)this.root.push($)}}class uG extends o{constructor(U){super("m:f");this.root.push(new PU(U.numerator)),this.root.push(new AU(U.denominator))}}var dG=({accent:U})=>new X0({name:"m:chr",attributes:{accent:{key:"m:val",value:U}}}),y0=({children:U})=>new X0({name:"m:e",children:U}),cG=({value:U})=>new X0({name:"m:limLoc",attributes:{value:{key:"m:val",value:U||"undOvr"}}}),Bq=()=>new X0({name:"m:subHide",attributes:{hide:{key:"m:val",value:1}}}),qq=()=>new X0({name:"m:supHide",attributes:{hide:{key:"m:val",value:1}}}),TU=({accent:U,hasSuperScript:$,hasSubScript:Y,limitLocationVal:Z})=>new X0({name:"m:naryPr",children:[...U?[dG({accent:U})]:[],cG({value:Z}),...!$?[qq()]:[],...!Y?[Bq()]:[]]}),s1=({children:U})=>new X0({name:"m:sub",children:U}),n1=({children:U})=>new X0({name:"m:sup",children:U});class mG extends o{constructor(U){super("m:nary");if(this.root.push(TU({accent:"∑",hasSuperScript:!!U.superScript,hasSubScript:!!U.subScript})),U.subScript)this.root.push(s1({children:U.subScript}));if(U.superScript)this.root.push(n1({children:U.superScript}));this.root.push(y0({children:U.children}))}}class lG extends o{constructor(U){super("m:nary");if(this.root.push(TU({accent:"",hasSuperScript:!!U.superScript,hasSubScript:!!U.subScript,limitLocationVal:"subSup"})),U.subScript)this.root.push(s1({children:U.subScript}));if(U.superScript)this.root.push(n1({children:U.superScript}));this.root.push(y0({children:U.children}))}}class w6 extends o{constructor(U){super("m:lim");for(let $ of U)this.root.push($)}}class aG extends o{constructor(U){super("m:limUpp");this.root.push(y0({children:U.children})),this.root.push(new w6(U.limit))}}class pG extends o{constructor(U){super("m:limLow");this.root.push(y0({children:U.children})),this.root.push(new w6(U.limit))}}var iG=()=>new X0({name:"m:sSupPr"});class rG extends o{constructor(U){super("m:sSup");this.root.push(iG()),this.root.push(y0({children:U.children})),this.root.push(n1({children:U.superScript}))}}var sG=()=>new X0({name:"m:sSubPr"});class nG extends o{constructor(U){super("m:sSub");this.root.push(sG()),this.root.push(y0({children:U.children})),this.root.push(s1({children:U.subScript}))}}var oG=()=>new X0({name:"m:sSubSupPr"});class tG extends o{constructor(U){super("m:sSubSup");this.root.push(oG()),this.root.push(y0({children:U.children})),this.root.push(s1({children:U.subScript})),this.root.push(n1({children:U.superScript}))}}var eG=()=>new X0({name:"m:sPrePr"});class UK extends X0{constructor({children:U,subScript:$,superScript:Y}){super({name:"m:sPre",children:[eG(),y0({children:U}),s1({children:$}),n1({children:Y})]})}}var Xq="";class CU extends o{constructor(U){super("m:deg");if(U)for(let $ of U)this.root.push($)}}class $K extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{hide:"m:val"})}}class YK extends o{constructor(){super("m:degHide");this.root.push(new $K({hide:1}))}}class OU extends o{constructor(U){super("m:radPr");if(!U)this.root.push(new YK)}}class ZK extends o{constructor(U){super("m:rad");this.root.push(new OU(!!U.degree)),this.root.push(new CU(U.degree)),this.root.push(y0({children:U.children}))}}class EU extends o{constructor(U){super("m:fName");for(let $ of U)this.root.push($)}}class kU extends o{constructor(){super("m:funcPr")}}class QK extends o{constructor(U){super("m:func");this.root.push(new kU),this.root.push(new EU(U.name)),this.root.push(y0({children:U.children}))}}var Iq=({character:U})=>new X0({name:"m:begChr",attributes:{character:{key:"m:val",value:U}}}),Lq=({character:U})=>new X0({name:"m:endChr",attributes:{character:{key:"m:val",value:U}}}),B6=({characters:U})=>new X0({name:"m:dPr",children:U?[Iq({character:U.beginningCharacter}),Lq({character:U.endingCharacter})]:[]});class JK extends o{constructor(U){super("m:d");this.root.push(B6({})),this.root.push(y0({children:U.children}))}}class GK extends o{constructor(U){super("m:d");this.root.push(B6({characters:{beginningCharacter:"[",endingCharacter:"]"}})),this.root.push(y0({children:U.children}))}}class KK extends o{constructor(U){super("m:d");this.root.push(B6({characters:{beginningCharacter:"{",endingCharacter:"}"}})),this.root.push(y0({children:U.children}))}}class wK extends o{constructor(U){super("m:d");this.root.push(B6({characters:{beginningCharacter:"〈",endingCharacter:"〉"}})),this.root.push(y0({children:U.children}))}}var Vq=(U)=>new X0({name:"w:gridCol",attributes:U!==void 0?{width:{key:"w:w",value:T0(U)}}:void 0});class SU extends o{constructor(U,$){super("w:tblGrid");for(let Y of U)this.root.push(Vq(Y));if($)this.root.push(new qK($))}}class BK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class qK extends o{constructor(U){super("w:tblGridChange");this.root.push(new BK({id:U.id})),this.root.push(new SU(U.columnWidths))}}class XK extends o{constructor(U){super("w:ins");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.addChildElement(new p1(U))}}class IK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("PAGE")}}class LK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("NUMPAGES")}}class VK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTIONPAGES")}}class E9 extends o{constructor(U){super("w:delText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push(U)}}class MK extends o{constructor(U){super("w:del");Y0(this,"deletedTextRunWrapper"),this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.deletedTextRunWrapper=new WK(U),this.addChildElement(this.deletedTextRunWrapper)}}class WK extends o{constructor(U){super("w:r");if(this.root.push(new J1(U)),U.children)for(let $ of U.children){if(typeof $==="string"){switch($){case N1.CURRENT:this.root.push(U1()),this.root.push(new IK),this.root.push(V1()),this.root.push($1());break;case N1.TOTAL_PAGES:this.root.push(U1()),this.root.push(new LK),this.root.push(V1()),this.root.push($1());break;case N1.TOTAL_PAGES_IN_SECTION:this.root.push(U1()),this.root.push(new VK),this.root.push(V1()),this.root.push($1());break;default:this.root.push(new E9($));break}continue}this.root.push($)}else if(U.text)this.root.push(new E9(U.text));if(U.break)for(let $=0;$new X0({name:"w:vAlign",attributes:{verticalAlign:{key:"w:val",value:U}}}),zK=({marginUnitType:U=l2.DXA,top:$,left:Y,bottom:Z,right:J})=>[{name:"w:top",size:$},{name:"w:left",size:Y},{name:"w:bottom",size:Z},{name:"w:right",size:J}].filter((G)=>G.size!==void 0).map(({name:G,size:w})=>L2(G,{type:U,size:w})),Hq=(U)=>{let $=zK(U);if($.length===0)return;return new X0({name:"w:tblCellMar",children:$})},jq=(U)=>{let $=zK(U);if($.length===0)return;return new X0({name:"w:tcMar",children:$})},l2={AUTO:"auto",DXA:"dxa",NIL:"nil",PERCENTAGE:"pct"},L2=(U,{type:$=l2.AUTO,size:Y})=>{let Z=Y;if($===l2.PERCENTAGE&&typeof Y==="number")Z=`${Y}%`;return new X0({name:U,attributes:{type:{key:"w:type",value:$},size:{key:"w:w",value:s9(Z)}}})};class hU extends Q1{constructor(U){super("w:tcBorders");if(U.top)this.root.push(N0("w:top",U.top));if(U.start)this.root.push(N0("w:start",U.start));if(U.left)this.root.push(N0("w:left",U.left));if(U.bottom)this.root.push(N0("w:bottom",U.bottom));if(U.end)this.root.push(N0("w:end",U.end));if(U.right)this.root.push(N0("w:right",U.right))}}class FK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class uU extends o{constructor(U){super("w:gridSpan");this.root.push(new FK({val:S0(U)}))}}var dU={CONTINUE:"continue",RESTART:"restart"};class NK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class a2 extends o{constructor(U){super("w:vMerge");this.root.push(new NK({val:U}))}}var zq={BOTTOM_TO_TOP_LEFT_TO_RIGHT:"btLr",LEFT_TO_RIGHT_TOP_TO_BOTTOM:"lrTb",TOP_TO_BOTTOM_RIGHT_TO_LEFT:"tbRl"};class RK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class cU extends o{constructor(U){super("w:textDirection");this.root.push(new RK({val:U}))}}class mU extends Q1{constructor(U){super("w:tcPr",U.includeIfEmpty);if(U.width)this.root.push(L2("w:tcW",U.width));if(U.columnSpan)this.root.push(new uU(U.columnSpan));if(U.verticalMerge)this.root.push(new a2(U.verticalMerge));else if(U.rowSpan&&U.rowSpan>1)this.root.push(new a2(dU.RESTART));if(U.borders)this.root.push(new hU(U.borders));if(U.shading)this.root.push(j2(U.shading));if(U.margins){let $=jq(U.margins);if($)this.root.push($)}if(U.textDirection)this.root.push(new cU(U.textDirection));if(U.verticalAlign)this.root.push(fU(U.verticalAlign));if(U.insertion)this.root.push(new yU(U.insertion));if(U.deletion)this.root.push(new bU(U.deletion));if(U.revision)this.root.push(new DK(U.revision));if(U.cellMerge)this.root.push(new xU(U.cellMerge))}}class DK extends o{constructor(U){super("w:tcPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.root.push(new mU(R0(W0({},U),{includeIfEmpty:!0})))}}class q6 extends o{constructor(U){super("w:tc");this.options=U,this.root.push(new mU(U));for(let $ of U.children)this.root.push($)}prepForXml(U){if(!(this.root[this.root.length-1]instanceof h0))this.root.push(new h0({}));return super.prepForXml(U)}}var x1={style:Q6.NONE,size:0,color:"auto"},f1={style:Q6.SINGLE,size:4,color:"auto"};class X6 extends o{constructor(U){var $,Y,Z,J,G,w;super("w:tblBorders");this.root.push(N0("w:top",($=U.top)!=null?$:f1)),this.root.push(N0("w:left",(Y=U.left)!=null?Y:f1)),this.root.push(N0("w:bottom",(Z=U.bottom)!=null?Z:f1)),this.root.push(N0("w:right",(J=U.right)!=null?J:f1)),this.root.push(N0("w:insideH",(G=U.insideHorizontal)!=null?G:f1)),this.root.push(N0("w:insideV",(w=U.insideVertical)!=null?w:f1))}}Y0(X6,"NONE",{top:x1,bottom:x1,left:x1,right:x1,insideHorizontal:x1,insideVertical:x1});var Fq={MARGIN:"margin",PAGE:"page",TEXT:"text"},Nq={CENTER:"center",INSIDE:"inside",LEFT:"left",OUTSIDE:"outside",RIGHT:"right"},Rq={CENTER:"center",INSIDE:"inside",BOTTOM:"bottom",OUTSIDE:"outside",INLINE:"inline",TOP:"top"},Dq={NEVER:"never",OVERLAP:"overlap"},Aq=(U)=>new X0({name:"w:tblOverlap",attributes:{val:{key:"w:val",value:U}}}),AK=({horizontalAnchor:U,verticalAnchor:$,absoluteHorizontalPosition:Y,relativeHorizontalPosition:Z,absoluteVerticalPosition:J,relativeVerticalPosition:G,bottomFromText:w,topFromText:Q,leftFromText:q,rightFromText:z,overlap:R})=>new X0({name:"w:tblpPr",attributes:{leftFromText:{key:"w:leftFromText",value:q===void 0?void 0:T0(q)},rightFromText:{key:"w:rightFromText",value:z===void 0?void 0:T0(z)},topFromText:{key:"w:topFromText",value:Q===void 0?void 0:T0(Q)},bottomFromText:{key:"w:bottomFromText",value:w===void 0?void 0:T0(w)},absoluteHorizontalPosition:{key:"w:tblpX",value:Y===void 0?void 0:e0(Y)},absoluteVerticalPosition:{key:"w:tblpY",value:J===void 0?void 0:e0(J)},horizontalAnchor:{key:"w:horzAnchor",value:U},relativeHorizontalPosition:{key:"w:tblpXSpec",value:Z},relativeVerticalPosition:{key:"w:tblpYSpec",value:G},verticalAnchor:{key:"w:vertAnchor",value:$}},children:R?[Aq(R)]:void 0}),Pq={AUTOFIT:"autofit",FIXED:"fixed"},PK=(U)=>new X0({name:"w:tblLayout",attributes:{type:{key:"w:type",value:U}}}),Tq={DXA:"dxa"},TK=({type:U=Tq.DXA,value:$})=>new X0({name:"w:tblCellSpacing",attributes:{type:{key:"w:type",value:U},value:{key:"w:w",value:s9($)}}}),CK=({firstRow:U,lastRow:$,firstColumn:Y,lastColumn:Z,noHBand:J,noVBand:G})=>new X0({name:"w:tblLook",attributes:{firstRow:{key:"w:firstRow",value:U},lastRow:{key:"w:lastRow",value:$},firstColumn:{key:"w:firstColumn",value:Y},lastColumn:{key:"w:lastColumn",value:Z},noHBand:{key:"w:noHBand",value:J},noVBand:{key:"w:noVBand",value:G}}});class I6 extends Q1{constructor(U){super("w:tblPr",U.includeIfEmpty);if(U.style)this.root.push(new Y1("w:tblStyle",U.style));if(U.float)this.root.push(AK(U.float));if(U.visuallyRightToLeft!==void 0)this.root.push(new B0("w:bidiVisual",U.visuallyRightToLeft));if(U.width)this.root.push(L2("w:tblW",U.width));if(U.alignment)this.root.push(n9(U.alignment));if(U.indent)this.root.push(L2("w:tblInd",U.indent));if(U.borders)this.root.push(new X6(U.borders));if(U.shading)this.root.push(j2(U.shading));if(U.layout)this.root.push(PK(U.layout));if(U.cellMargin){let $=Hq(U.cellMargin);if($)this.root.push($)}if(U.tableLook)this.root.push(CK(U.tableLook));if(U.cellSpacing)this.root.push(TK(U.cellSpacing));if(U.revision)this.root.push(new OK(U.revision))}}class OK extends o{constructor(U){super("w:tblPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.root.push(new I6(R0(W0({},U),{includeIfEmpty:!0})))}}class EK extends r1{constructor({rows:U,width:$,columnWidths:Y=Array(Math.max(...U.map((H)=>H.CellCount))).fill(100),columnWidthsRevision:Z,margins:J,indent:G,float:w,layout:Q,style:q,borders:z,alignment:R,visuallyRightToLeft:W,tableLook:E,cellSpacing:D,revision:C}){super("w:tbl");this.root.push(new I6({borders:z!=null?z:{},width:$!=null?$:{size:100},indent:G,float:w,layout:Q,style:q,alignment:R,cellMargin:J,visuallyRightToLeft:W,tableLook:E,cellSpacing:D,revision:C})),this.root.push(new SU(Y,Z));for(let H of U)this.root.push(H);U.forEach((H,O)=>{if(O===U.length-1)return;let X=0;H.cells.forEach((j)=>{if(j.options.rowSpan&&j.options.rowSpan>1){let L=new q6({rowSpan:j.options.rowSpan-1,columnSpan:j.options.columnSpan,borders:j.options.borders,children:[],verticalMerge:dU.CONTINUE});U[O+1].addCellToColumnIndex(L,X)}X+=j.options.columnSpan||1})})}}var Cq={AUTO:"auto",ATLEAST:"atLeast",EXACT:"exact"},kK=(U,$)=>new X0({name:"w:trHeight",attributes:{value:{key:"w:val",value:T0(U)},rule:{key:"w:hRule",value:$}}});class L6 extends Q1{constructor(U){super("w:trPr",U.includeIfEmpty);if(U.cantSplit!==void 0)this.root.push(new B0("w:cantSplit",U.cantSplit));if(U.tableHeader!==void 0)this.root.push(new B0("w:tblHeader",U.tableHeader));if(U.height)this.root.push(kK(U.height.value,U.height.rule));if(U.cellSpacing)this.root.push(TK(U.cellSpacing));if(U.insertion)this.root.push(new vU(U.insertion));if(U.deletion)this.root.push(new _U(U.deletion));if(U.revision)this.root.push(new lU(U.revision))}}class lU extends o{constructor(U){super("w:trPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.root.push(new L6(R0(W0({},U),{includeIfEmpty:!0})))}}class SK extends o{constructor(U){super("w:tr");this.options=U,this.root.push(new L6(U));for(let $ of U.children)this.root.push($)}get CellCount(){return this.options.children.length}get cells(){return this.root.filter((U)=>U instanceof q6)}addCellToIndex(U,$){this.root.splice($+1,0,U)}addCellToColumnIndex(U,$){let Y=this.columnIndexToRootIndex($,!0);this.addCellToIndex(U,Y-1)}rootIndexToColumnIndex(U){if(U<1||U>=this.root.length)throw new Error(`cell 'rootIndex' should between 1 to ${this.root.length-1}`);let $=0;for(let Y=1;Y=this.root.length)if($)return this.root.length;else throw new Error(`cell 'columnIndex' should not great than ${Y-1}`);let J=this.root[Z];Z+=1,Y+=J&&J.options.columnSpan||1}return Z-1}}class vK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns",vt:"xmlns:vt"})}}class _K extends o{constructor(){super("Properties");this.root.push(new vK({xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"}))}}class yK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns"})}}var X1=(U,$)=>new X0({name:"Default",attributes:{contentType:{key:"ContentType",value:U},extension:{key:"Extension",value:$}}}),f0=(U,$)=>new X0({name:"Override",attributes:{contentType:{key:"ContentType",value:U},partName:{key:"PartName",value:$}}});class bK extends o{constructor(){super("Types");this.root.push(new yK({xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"})),this.root.push(X1("image/png","png")),this.root.push(X1("image/jpeg","jpeg")),this.root.push(X1("image/jpeg","jpg")),this.root.push(X1("image/bmp","bmp")),this.root.push(X1("image/gif","gif")),this.root.push(X1("image/svg+xml","svg")),this.root.push(X1("application/vnd.openxmlformats-package.relationships+xml","rels")),this.root.push(X1("application/xml","xml")),this.root.push(X1("application/vnd.openxmlformats-officedocument.obfuscatedFont","odttf")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml","/word/document.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml","/word/styles.xml")),this.root.push(f0("application/vnd.openxmlformats-package.core-properties+xml","/docProps/core.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.custom-properties+xml","/docProps/custom.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.extended-properties+xml","/docProps/app.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml","/word/numbering.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml","/word/footnotes.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml","/word/endnotes.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml","/word/settings.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml","/word/comments.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml","/word/fontTable.xml"))}addFooter(U){this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",`/word/footer${U}.xml`))}addHeader(U){this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml",`/word/header${U}.xml`))}}var p2={wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",cp:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",xsi:"http://www.w3.org/2001/XMLSchema-instance",cx:"http://schemas.microsoft.com/office/drawing/2014/chartex",cx1:"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex",cx2:"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex",cx3:"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex",cx4:"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex",cx5:"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex",cx6:"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex",cx7:"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex",cx8:"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex",aink:"http://schemas.microsoft.com/office/drawing/2016/ink",am3d:"http://schemas.microsoft.com/office/drawing/2017/model3d",w16cex:"http://schemas.microsoft.com/office/word/2018/wordml/cex",w16cid:"http://schemas.microsoft.com/office/word/2016/wordml/cid",w16:"http://schemas.microsoft.com/office/word/2018/wordml",w16sdtdh:"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash",w16se:"http://schemas.microsoft.com/office/word/2015/wordml/symex"};class o1 extends V0{constructor(U,$){super(W0({Ignorable:$},Object.fromEntries(U.map((Y)=>[Y,p2[Y]]))));Y0(this,"xmlKeys",W0({Ignorable:"mc:Ignorable"},Object.fromEntries(Object.keys(p2).map((Y)=>[Y,`xmlns:${Y}`]))))}}class gK extends o{constructor(U){super("cp:coreProperties");if(this.root.push(new o1(["cp","dc","dcterms","dcmitype","xsi"])),U.title)this.root.push(new I1("dc:title",U.title));if(U.subject)this.root.push(new I1("dc:subject",U.subject));if(U.creator)this.root.push(new I1("dc:creator",U.creator));if(U.keywords)this.root.push(new I1("cp:keywords",U.keywords));if(U.description)this.root.push(new I1("dc:description",U.description));if(U.lastModifiedBy)this.root.push(new I1("cp:lastModifiedBy",U.lastModifiedBy));if(U.revision)this.root.push(new I1("cp:revision",String(U.revision)));this.root.push(new k9("dcterms:created")),this.root.push(new k9("dcterms:modified"))}}class xK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"xsi:type"})}}class k9 extends o{constructor(U){super(U);this.root.push(new xK({type:"dcterms:W3CDTF"})),this.root.push(OQ(new Date))}}class fK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns",vt:"xmlns:vt"})}}class hK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{formatId:"fmtid",pid:"pid",name:"name"})}}class uK extends o{constructor(U,$){super("property");this.root.push(new hK({formatId:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:U.toString(),name:$.name})),this.root.push(new dK($.value))}}class dK extends o{constructor(U){super("vt:lpwstr");this.root.push(U)}}class cK extends o{constructor(U){super("Properties");Y0(this,"nextId"),Y0(this,"properties",[]),this.root.push(new fK({xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"})),this.nextId=2;for(let $ of U)this.addCustomProperty($)}prepForXml(U){return this.properties.forEach(($)=>this.root.push($)),super.prepForXml(U)}addCustomProperty(U){this.properties.push(new uK(this.nextId++,U))}}var mK=({space:U,count:$,separate:Y,equalWidth:Z,children:J})=>new X0({name:"w:cols",attributes:{space:{key:"w:space",value:U===void 0?void 0:T0(U)},count:{key:"w:num",value:$===void 0?void 0:S0($)},separate:{key:"w:sep",value:Y},equalWidth:{key:"w:equalWidth",value:Z}},children:!Z&&J?J:void 0}),Oq={DEFAULT:"default",LINES:"lines",LINES_AND_CHARS:"linesAndChars",SNAP_TO_CHARS:"snapToChars"},lK=({type:U,linePitch:$,charSpace:Y})=>new X0({name:"w:docGrid",attributes:{type:{key:"w:type",value:U},linePitch:{key:"w:linePitch",value:S0($)},charSpace:{key:"w:charSpace",value:Y?S0(Y):void 0}}}),k1={DEFAULT:"default",FIRST:"first",EVEN:"even"},S9={HEADER:"w:headerReference",FOOTER:"w:footerReference"},f2=(U,$)=>new X0({name:U,attributes:{type:{key:"w:type",value:$.type||k1.DEFAULT},id:{key:"r:id",value:`rId${$.id}`}}}),Eq={NEW_PAGE:"newPage",NEW_SECTION:"newSection",CONTINUOUS:"continuous"},aK=({countBy:U,start:$,restart:Y,distance:Z})=>new X0({name:"w:lnNumType",attributes:{countBy:{key:"w:countBy",value:U===void 0?void 0:S0(U)},start:{key:"w:start",value:$===void 0?void 0:S0($)},restart:{key:"w:restart",value:Y},distance:{key:"w:distance",value:Z===void 0?void 0:T0(Z)}}}),kq={ALL_PAGES:"allPages",FIRST_PAGE:"firstPage",NOT_FIRST_PAGE:"notFirstPage"},Sq={PAGE:"page",TEXT:"text"},vq={BACK:"back",FRONT:"front"};class v9 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{display:"w:display",offsetFrom:"w:offsetFrom",zOrder:"w:zOrder"})}}class aU extends Q1{constructor(U){super("w:pgBorders");if(!U)return this;if(U.pageBorders)this.root.push(new v9({display:U.pageBorders.display,offsetFrom:U.pageBorders.offsetFrom,zOrder:U.pageBorders.zOrder}));else this.root.push(new v9({}));if(U.pageBorderTop)this.root.push(N0("w:top",U.pageBorderTop));if(U.pageBorderLeft)this.root.push(N0("w:left",U.pageBorderLeft));if(U.pageBorderBottom)this.root.push(N0("w:bottom",U.pageBorderBottom));if(U.pageBorderRight)this.root.push(N0("w:right",U.pageBorderRight))}}var pK=(U,$,Y,Z,J,G,w)=>new X0({name:"w:pgMar",attributes:{top:{key:"w:top",value:e0(U)},right:{key:"w:right",value:T0($)},bottom:{key:"w:bottom",value:e0(Y)},left:{key:"w:left",value:T0(Z)},header:{key:"w:header",value:T0(J)},footer:{key:"w:footer",value:T0(G)},gutter:{key:"w:gutter",value:T0(w)}}}),_q={HYPHEN:"hyphen",PERIOD:"period",COLON:"colon",EM_DASH:"emDash",EN_DASH:"endash"},iK=({start:U,formatType:$,separator:Y})=>new X0({name:"w:pgNumType",attributes:{start:{key:"w:start",value:U===void 0?void 0:S0(U)},formatType:{key:"w:fmt",value:$},separator:{key:"w:chapSep",value:Y}}}),i2={PORTRAIT:"portrait",LANDSCAPE:"landscape"},rK=({width:U,height:$,orientation:Y,code:Z})=>{let J=T0(U),G=T0($);return new X0({name:"w:pgSz",attributes:{width:{key:"w:w",value:Y===i2.LANDSCAPE?G:J},height:{key:"w:h",value:Y===i2.LANDSCAPE?J:G},orientation:{key:"w:orient",value:Y},code:{key:"w:code",value:Z}}})},yq={LEFT_TO_RIGHT_TOP_TO_BOTTOM:"lrTb",TOP_TO_BOTTOM_RIGHT_TO_LEFT:"tbRl"};class sK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class pU extends o{constructor(U){super("w:textDirection");this.root.push(new sK({val:U}))}}var bq={NEXT_PAGE:"nextPage",NEXT_COLUMN:"nextColumn",CONTINUOUS:"continuous",EVEN_PAGE:"evenPage",ODD_PAGE:"oddPage"},nK=(U)=>new X0({name:"w:type",attributes:{val:{key:"w:val",value:U}}}),F1={TOP:1440,RIGHT:1440,BOTTOM:1440,LEFT:1440,HEADER:708,FOOTER:708,GUTTER:0},h2={WIDTH:11906,HEIGHT:16838,ORIENTATION:i2.PORTRAIT};class V6 extends o{constructor({page:{size:{width:U=h2.WIDTH,height:$=h2.HEIGHT,orientation:Y=h2.ORIENTATION}={},margin:{top:Z=F1.TOP,right:J=F1.RIGHT,bottom:G=F1.BOTTOM,left:w=F1.LEFT,header:Q=F1.HEADER,footer:q=F1.FOOTER,gutter:z=F1.GUTTER}={},pageNumbers:R={},borders:W,textDirection:E}={},grid:{linePitch:D=360,charSpace:C,type:H}={},headerWrapperGroup:O={},footerWrapperGroup:X={},lineNumbers:j,titlePage:L,verticalAlign:I,column:A,type:y,revision:g}={}){super("w:sectPr");if(this.addHeaderFooterGroup(S9.HEADER,O),this.addHeaderFooterGroup(S9.FOOTER,X),y)this.root.push(nK(y));if(this.root.push(rK({width:U,height:$,orientation:Y})),this.root.push(pK(Z,J,G,w,Q,q,z)),W)this.root.push(new aU(W));if(j)this.root.push(aK(j));if(this.root.push(iK(R)),A)this.root.push(mK(A));if(I)this.root.push(fU(I));if(L!==void 0)this.root.push(new B0("w:titlePg",L));if(E)this.root.push(new pU(E));if(g)this.root.push(new iU(g));this.root.push(lK({linePitch:D,charSpace:C,type:H}))}addHeaderFooterGroup(U,$){if($.default)this.root.push(f2(U,{type:k1.DEFAULT,id:$.default.View.ReferenceId}));if($.first)this.root.push(f2(U,{type:k1.FIRST,id:$.first.View.ReferenceId}));if($.even)this.root.push(f2(U,{type:k1.EVEN,id:$.even.View.ReferenceId}))}}class iU extends o{constructor(U){super("w:sectPrChange");this.root.push(new _0({id:U.id,author:U.author,date:U.date})),this.root.push(new V6(U))}}class oK extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{width:"w:w",space:"w:space"})}}class tK extends o{constructor(U){super("w:col");this.root.push(new oK({width:T0(U.width),space:U.space===void 0?void 0:T0(U.space)}))}}class rU extends o{constructor(){super("w:body");Y0(this,"sections",[])}addSection(U){let $=this.sections.pop();this.root.push(this.createSectionParagraph($)),this.sections.push(new V6(U))}prepForXml(U){if(this.sections.length===1)this.root.splice(0,1),this.root.push(this.sections.pop());return super.prepForXml(U)}push(U){this.root.push(U)}createSectionParagraph(U){let $=new h0({}),Y=new Z1({});return Y.push(U),$.addChildElement(Y),$}}class sU extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{color:"w:color",themeColor:"w:themeColor",themeShade:"w:themeShade",themeTint:"w:themeTint"})}}class nU extends o{constructor(U){super("w:background");this.root.push(new sU({color:U.color===void 0?void 0:S1(U.color),themeColor:U.themeColor,themeShade:U.themeShade===void 0?void 0:D9(U.themeShade),themeTint:U.themeTint===void 0?void 0:D9(U.themeTint)}))}}class eK extends o{constructor(U){super("w:document");if(Y0(this,"body"),this.root.push(new o1(["wpc","mc","o","r","m","v","wp14","wp","w10","w","w14","w15","wpg","wpi","wne","wps","cx","cx1","cx2","cx3","cx4","cx5","cx6","cx7","cx8","aink","am3d","w16cex","w16cid","w16","w16sdtdh","w16se"],"w14 w15 wp14")),this.body=new rU,U.background)this.root.push(new nU(U.background));this.root.push(this.body)}add(U){return this.body.push(U),this}get Body(){return this.body}}class U5{constructor(U){Y0(this,"document"),Y0(this,"relationships"),this.document=new eK(U),this.relationships=new W1}get View(){return this.document}get Relationships(){return this.relationships}}class $5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",Ignorable:"mc:Ignorable"})}}class Y5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"w:type",id:"w:id"})}}class Z5 extends C0{constructor(){super({style:"EndnoteReference"});this.root.push(new VU)}}var fZ={SEPARATOR:"separator",CONTINUATION_SEPARATOR:"continuationSeparator"};class u2 extends o{constructor(U){super("w:endnote");this.root.push(new Y5({type:U.type,id:U.id}));for(let $=0;$9)throw new Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");this.root.push(new V5({ilvl:S0(U),tentative:1}))}}class Z$ extends W6{}class F5 extends W6{}class N5 extends o{constructor(U){super("w:multiLevelType");this.root.push(new O0({val:U}))}}class R5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{abstractNumId:"w:abstractNumId",restartNumberingAfterBreak:"w15:restartNumberingAfterBreak"})}}class r2 extends o{constructor(U,$){super("w:abstractNum");Y0(this,"id"),this.root.push(new R5({abstractNumId:S0(U),restartNumberingAfterBreak:0})),this.root.push(new N5("hybridMultilevel")),this.id=U;for(let Y of $)this.root.push(new Z$(Y))}}class D5 extends o{constructor(U){super("w:abstractNumId");this.root.push(new O0({val:U}))}}class A5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{numId:"w:numId"})}}class s2 extends o{constructor(U){super("w:num");if(Y0(this,"numId"),Y0(this,"reference"),Y0(this,"instance"),this.numId=U.numId,this.reference=U.reference,this.instance=U.instance,this.root.push(new A5({numId:S0(U.numId)})),this.root.push(new D5(S0(U.abstractNumId))),U.overrideLevels&&U.overrideLevels.length)for(let $ of U.overrideLevels)this.root.push(new Q$($.num,$.start))}}class P5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{ilvl:"w:ilvl"})}}class Q$ extends o{constructor(U,$){super("w:lvlOverride");if(this.root.push(new P5({ilvl:U})),$!==void 0)this.root.push(new C5($))}}class T5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class C5 extends o{constructor(U){super("w:startOverride");this.root.push(new T5({val:U}))}}class J$ extends o{constructor(U){super("w:numbering");Y0(this,"abstractNumberingMap",new Map),Y0(this,"concreteNumberingMap",new Map),Y0(this,"referenceConfigMap",new Map),Y0(this,"abstractNumUniqueNumericId",rQ()),Y0(this,"concreteNumUniqueNumericId",sQ()),this.root.push(new o1(["wpc","mc","o","r","m","v","wp14","wp","w10","w","w14","w15","wpg","wpi","wne","wps"],"w14 w15 wp14"));let $=new r2(this.abstractNumUniqueNumericId(),[{level:0,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:d0(0.5),hanging:d0(0.25)}}}},{level:1,format:n0.BULLET,text:"○",alignment:m0.LEFT,style:{paragraph:{indent:{left:d0(1),hanging:d0(0.25)}}}},{level:2,format:n0.BULLET,text:"■",alignment:m0.LEFT,style:{paragraph:{indent:{left:2160,hanging:d0(0.25)}}}},{level:3,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:2880,hanging:d0(0.25)}}}},{level:4,format:n0.BULLET,text:"○",alignment:m0.LEFT,style:{paragraph:{indent:{left:3600,hanging:d0(0.25)}}}},{level:5,format:n0.BULLET,text:"■",alignment:m0.LEFT,style:{paragraph:{indent:{left:4320,hanging:d0(0.25)}}}},{level:6,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:5040,hanging:d0(0.25)}}}},{level:7,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:5760,hanging:d0(0.25)}}}},{level:8,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:6480,hanging:d0(0.25)}}}}]);this.concreteNumberingMap.set("default-bullet-numbering",new s2({numId:1,abstractNumId:$.id,reference:"default-bullet-numbering",instance:0,overrideLevels:[{num:0,start:1}]})),this.abstractNumberingMap.set("default-bullet-numbering",$);for(let Y of U.config)this.abstractNumberingMap.set(Y.reference,new r2(this.abstractNumUniqueNumericId(),Y.levels)),this.referenceConfigMap.set(Y.reference,Y.levels)}prepForXml(U){for(let $ of this.abstractNumberingMap.values())this.root.push($);for(let $ of this.concreteNumberingMap.values())this.root.push($);return super.prepForXml(U)}createConcreteNumberingInstance(U,$){let Y=this.abstractNumberingMap.get(U);if(!Y)return;let Z=`${U}-${$}`;if(this.concreteNumberingMap.has(Z))return;let J=this.referenceConfigMap.get(U),G=J&&J[0].start,w={numId:this.concreteNumUniqueNumericId(),abstractNumId:Y.id,reference:U,instance:$,overrideLevels:[typeof G==="number"&&Number.isInteger(G)?{num:0,start:G}:{num:0,start:1}]};this.concreteNumberingMap.set(Z,new s2(w))}get ConcreteNumbering(){return Array.from(this.concreteNumberingMap.values())}get ReferenceConfig(){return Array.from(this.referenceConfigMap.values())}}var uq=(U)=>new X0({name:"w:compatSetting",attributes:{version:{key:"w:val",value:U},name:{key:"w:name",value:"compatibilityMode"},uri:{key:"w:uri",value:"http://schemas.microsoft.com/office/word"}}});class O5 extends o{constructor(U){super("w:compat");if(U.version)this.root.push(uq(U.version));if(U.useSingleBorderforContiguousCells)this.root.push(new B0("w:useSingleBorderforContiguousCells",U.useSingleBorderforContiguousCells));if(U.wordPerfectJustification)this.root.push(new B0("w:wpJustification",U.wordPerfectJustification));if(U.noTabStopForHangingIndent)this.root.push(new B0("w:noTabHangInd",U.noTabStopForHangingIndent));if(U.noLeading)this.root.push(new B0("w:noLeading",U.noLeading));if(U.spaceForUnderline)this.root.push(new B0("w:spaceForUL",U.spaceForUnderline));if(U.noColumnBalance)this.root.push(new B0("w:noColumnBalance",U.noColumnBalance));if(U.balanceSingleByteDoubleByteWidth)this.root.push(new B0("w:balanceSingleByteDoubleByteWidth",U.balanceSingleByteDoubleByteWidth));if(U.noExtraLineSpacing)this.root.push(new B0("w:noExtraLineSpacing",U.noExtraLineSpacing));if(U.doNotLeaveBackslashAlone)this.root.push(new B0("w:doNotLeaveBackslashAlone",U.doNotLeaveBackslashAlone));if(U.underlineTrailingSpaces)this.root.push(new B0("w:ulTrailSpace",U.underlineTrailingSpaces));if(U.doNotExpandShiftReturn)this.root.push(new B0("w:doNotExpandShiftReturn",U.doNotExpandShiftReturn));if(U.spacingInWholePoints)this.root.push(new B0("w:spacingInWholePoints",U.spacingInWholePoints));if(U.lineWrapLikeWord6)this.root.push(new B0("w:lineWrapLikeWord6",U.lineWrapLikeWord6));if(U.printBodyTextBeforeHeader)this.root.push(new B0("w:printBodyTextBeforeHeader",U.printBodyTextBeforeHeader));if(U.printColorsBlack)this.root.push(new B0("w:printColBlack",U.printColorsBlack));if(U.spaceWidth)this.root.push(new B0("w:wpSpaceWidth",U.spaceWidth));if(U.showBreaksInFrames)this.root.push(new B0("w:showBreaksInFrames",U.showBreaksInFrames));if(U.subFontBySize)this.root.push(new B0("w:subFontBySize",U.subFontBySize));if(U.suppressBottomSpacing)this.root.push(new B0("w:suppressBottomSpacing",U.suppressBottomSpacing));if(U.suppressTopSpacing)this.root.push(new B0("w:suppressTopSpacing",U.suppressTopSpacing));if(U.suppressSpacingAtTopOfPage)this.root.push(new B0("w:suppressSpacingAtTopOfPage",U.suppressSpacingAtTopOfPage));if(U.suppressTopSpacingWP)this.root.push(new B0("w:suppressTopSpacingWP",U.suppressTopSpacingWP));if(U.suppressSpBfAfterPgBrk)this.root.push(new B0("w:suppressSpBfAfterPgBrk",U.suppressSpBfAfterPgBrk));if(U.swapBordersFacingPages)this.root.push(new B0("w:swapBordersFacingPages",U.swapBordersFacingPages));if(U.convertMailMergeEsc)this.root.push(new B0("w:convMailMergeEsc",U.convertMailMergeEsc));if(U.truncateFontHeightsLikeWP6)this.root.push(new B0("w:truncateFontHeightsLikeWP6",U.truncateFontHeightsLikeWP6));if(U.macWordSmallCaps)this.root.push(new B0("w:mwSmallCaps",U.macWordSmallCaps));if(U.usePrinterMetrics)this.root.push(new B0("w:usePrinterMetrics",U.usePrinterMetrics));if(U.doNotSuppressParagraphBorders)this.root.push(new B0("w:doNotSuppressParagraphBorders",U.doNotSuppressParagraphBorders));if(U.wrapTrailSpaces)this.root.push(new B0("w:wrapTrailSpaces",U.wrapTrailSpaces));if(U.footnoteLayoutLikeWW8)this.root.push(new B0("w:footnoteLayoutLikeWW8",U.footnoteLayoutLikeWW8));if(U.shapeLayoutLikeWW8)this.root.push(new B0("w:shapeLayoutLikeWW8",U.shapeLayoutLikeWW8));if(U.alignTablesRowByRow)this.root.push(new B0("w:alignTablesRowByRow",U.alignTablesRowByRow));if(U.forgetLastTabAlignment)this.root.push(new B0("w:forgetLastTabAlignment",U.forgetLastTabAlignment));if(U.adjustLineHeightInTable)this.root.push(new B0("w:adjustLineHeightInTable",U.adjustLineHeightInTable));if(U.autoSpaceLikeWord95)this.root.push(new B0("w:autoSpaceLikeWord95",U.autoSpaceLikeWord95));if(U.noSpaceRaiseLower)this.root.push(new B0("w:noSpaceRaiseLower",U.noSpaceRaiseLower));if(U.doNotUseHTMLParagraphAutoSpacing)this.root.push(new B0("w:doNotUseHTMLParagraphAutoSpacing",U.doNotUseHTMLParagraphAutoSpacing));if(U.layoutRawTableWidth)this.root.push(new B0("w:layoutRawTableWidth",U.layoutRawTableWidth));if(U.layoutTableRowsApart)this.root.push(new B0("w:layoutTableRowsApart",U.layoutTableRowsApart));if(U.useWord97LineBreakRules)this.root.push(new B0("w:useWord97LineBreakRules",U.useWord97LineBreakRules));if(U.doNotBreakWrappedTables)this.root.push(new B0("w:doNotBreakWrappedTables",U.doNotBreakWrappedTables));if(U.doNotSnapToGridInCell)this.root.push(new B0("w:doNotSnapToGridInCell",U.doNotSnapToGridInCell));if(U.selectFieldWithFirstOrLastCharacter)this.root.push(new B0("w:selectFldWithFirstOrLastChar",U.selectFieldWithFirstOrLastCharacter));if(U.applyBreakingRules)this.root.push(new B0("w:applyBreakingRules",U.applyBreakingRules));if(U.doNotWrapTextWithPunctuation)this.root.push(new B0("w:doNotWrapTextWithPunct",U.doNotWrapTextWithPunctuation));if(U.doNotUseEastAsianBreakRules)this.root.push(new B0("w:doNotUseEastAsianBreakRules",U.doNotUseEastAsianBreakRules));if(U.useWord2002TableStyleRules)this.root.push(new B0("w:useWord2002TableStyleRules",U.useWord2002TableStyleRules));if(U.growAutofit)this.root.push(new B0("w:growAutofit",U.growAutofit));if(U.useFELayout)this.root.push(new B0("w:useFELayout",U.useFELayout));if(U.useNormalStyleForList)this.root.push(new B0("w:useNormalStyleForList",U.useNormalStyleForList));if(U.doNotUseIndentAsNumberingTabStop)this.root.push(new B0("w:doNotUseIndentAsNumberingTabStop",U.doNotUseIndentAsNumberingTabStop));if(U.useAlternateEastAsianLineBreakRules)this.root.push(new B0("w:useAltKinsokuLineBreakRules",U.useAlternateEastAsianLineBreakRules));if(U.allowSpaceOfSameStyleInTable)this.root.push(new B0("w:allowSpaceOfSameStyleInTable",U.allowSpaceOfSameStyleInTable));if(U.doNotSuppressIndentation)this.root.push(new B0("w:doNotSuppressIndentation",U.doNotSuppressIndentation));if(U.doNotAutofitConstrainedTables)this.root.push(new B0("w:doNotAutofitConstrainedTables",U.doNotAutofitConstrainedTables));if(U.autofitToFirstFixedWidthCell)this.root.push(new B0("w:autofitToFirstFixedWidthCell",U.autofitToFirstFixedWidthCell));if(U.underlineTabInNumberingList)this.root.push(new B0("w:underlineTabInNumList",U.underlineTabInNumberingList));if(U.displayHangulFixedWidth)this.root.push(new B0("w:displayHangulFixedWidth",U.displayHangulFixedWidth));if(U.splitPgBreakAndParaMark)this.root.push(new B0("w:splitPgBreakAndParaMark",U.splitPgBreakAndParaMark));if(U.doNotVerticallyAlignCellWithSp)this.root.push(new B0("w:doNotVertAlignCellWithSp",U.doNotVerticallyAlignCellWithSp));if(U.doNotBreakConstrainedForcedTable)this.root.push(new B0("w:doNotBreakConstrainedForcedTable",U.doNotBreakConstrainedForcedTable));if(U.ignoreVerticalAlignmentInTextboxes)this.root.push(new B0("w:doNotVertAlignInTxbx",U.ignoreVerticalAlignmentInTextboxes));if(U.useAnsiKerningPairs)this.root.push(new B0("w:useAnsiKerningPairs",U.useAnsiKerningPairs));if(U.cachedColumnBalance)this.root.push(new B0("w:cachedColBalance",U.cachedColumnBalance))}}class E5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",Ignorable:"mc:Ignorable"})}}class k5 extends o{constructor(U){var $,Y,Z,J,G,w,Q,q;super("w:settings");if(this.root.push(new E5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",Ignorable:"w14 w15 wp14"})),this.root.push(new B0("w:displayBackgroundShape",!0)),U.trackRevisions!==void 0)this.root.push(new B0("w:trackRevisions",U.trackRevisions));if(U.evenAndOddHeaders!==void 0)this.root.push(new B0("w:evenAndOddHeaders",U.evenAndOddHeaders));if(U.updateFields!==void 0)this.root.push(new B0("w:updateFields",U.updateFields));if(U.defaultTabStop!==void 0)this.root.push(new E1("w:defaultTabStop",U.defaultTabStop));if((($=U.hyphenation)==null?void 0:$.autoHyphenation)!==void 0)this.root.push(new B0("w:autoHyphenation",U.hyphenation.autoHyphenation));if(((Y=U.hyphenation)==null?void 0:Y.hyphenationZone)!==void 0)this.root.push(new E1("w:hyphenationZone",U.hyphenation.hyphenationZone));if(((Z=U.hyphenation)==null?void 0:Z.consecutiveHyphenLimit)!==void 0)this.root.push(new E1("w:consecutiveHyphenLimit",U.hyphenation.consecutiveHyphenLimit));if(((J=U.hyphenation)==null?void 0:J.doNotHyphenateCaps)!==void 0)this.root.push(new B0("w:doNotHyphenateCaps",U.hyphenation.doNotHyphenateCaps));this.root.push(new O5(R0(W0({},(G=U.compatibility)!=null?G:{}),{version:(q=(Q=(w=U.compatibility)==null?void 0:w.version)!=null?Q:U.compatibilityModeVersion)!=null?q:15})))}}class G$ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class S5 extends o{constructor(U){super("w:name");this.root.push(new G$({val:U}))}}class v5 extends o{constructor(U){super("w:uiPriority");this.root.push(new G$({val:S0(U)}))}}class _5 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"w:type",styleId:"w:styleId",default:"w:default",customStyle:"w:customStyle"})}}class K$ extends o{constructor(U,$){super("w:style");if(this.root.push(new _5(U)),$.name)this.root.push(new S5($.name));if($.basedOn)this.root.push(new Y1("w:basedOn",$.basedOn));if($.next)this.root.push(new Y1("w:next",$.next));if($.link)this.root.push(new Y1("w:link",$.link));if($.uiPriority!==void 0)this.root.push(new v5($.uiPriority));if($.semiHidden!==void 0)this.root.push(new B0("w:semiHidden",$.semiHidden));if($.unhideWhenUsed!==void 0)this.root.push(new B0("w:unhideWhenUsed",$.unhideWhenUsed));if($.quickFormat!==void 0)this.root.push(new B0("w:qFormat",$.quickFormat))}}class y1 extends K${constructor(U){super({type:"paragraph",styleId:U.id},U);Y0(this,"paragraphProperties"),Y0(this,"runProperties"),this.paragraphProperties=new Z1(U.paragraph),this.runProperties=new J1(U.run),this.root.push(this.paragraphProperties),this.root.push(this.runProperties)}}class D1 extends K${constructor(U){super({type:"character",styleId:U.id},W0({uiPriority:99,unhideWhenUsed:!0},U));Y0(this,"runProperties"),this.runProperties=new J1(U.run),this.root.push(this.runProperties)}}class H1 extends y1{constructor(U){super(W0({basedOn:"Normal",next:"Normal",quickFormat:!0},U))}}class y5 extends H1{constructor(U){super(W0({id:"Title",name:"Title"},U))}}class b5 extends H1{constructor(U){super(W0({id:"Heading1",name:"Heading 1"},U))}}class g5 extends H1{constructor(U){super(W0({id:"Heading2",name:"Heading 2"},U))}}class x5 extends H1{constructor(U){super(W0({id:"Heading3",name:"Heading 3"},U))}}class f5 extends H1{constructor(U){super(W0({id:"Heading4",name:"Heading 4"},U))}}class h5 extends H1{constructor(U){super(W0({id:"Heading5",name:"Heading 5"},U))}}class u5 extends H1{constructor(U){super(W0({id:"Heading6",name:"Heading 6"},U))}}class d5 extends H1{constructor(U){super(W0({id:"Strong",name:"Strong"},U))}}class c5 extends y1{constructor(U){super(W0({id:"ListParagraph",name:"List Paragraph",basedOn:"Normal",quickFormat:!0},U))}}class m5 extends y1{constructor(U){super(W0({id:"FootnoteText",name:"footnote text",link:"FootnoteTextChar",basedOn:"Normal",uiPriority:99,semiHidden:!0,unhideWhenUsed:!0,paragraph:{spacing:{after:0,line:240,lineRule:v1.AUTO}},run:{size:20}},U))}}class l5 extends D1{constructor(U){super(W0({id:"FootnoteReference",name:"footnote reference",basedOn:"DefaultParagraphFont",semiHidden:!0,run:{superScript:!0}},U))}}class a5 extends D1{constructor(U){super(W0({id:"FootnoteTextChar",name:"Footnote Text Char",basedOn:"DefaultParagraphFont",link:"FootnoteText",semiHidden:!0,run:{size:20}},U))}}class p5 extends y1{constructor(U){super(W0({id:"EndnoteText",name:"endnote text",link:"EndnoteTextChar",basedOn:"Normal",uiPriority:99,semiHidden:!0,unhideWhenUsed:!0,paragraph:{spacing:{after:0,line:240,lineRule:v1.AUTO}},run:{size:20}},U))}}class i5 extends D1{constructor(U){super(W0({id:"EndnoteReference",name:"endnote reference",basedOn:"DefaultParagraphFont",semiHidden:!0,run:{superScript:!0}},U))}}class r5 extends D1{constructor(U){super(W0({id:"EndnoteTextChar",name:"Endnote Text Char",basedOn:"DefaultParagraphFont",link:"EndnoteText",semiHidden:!0,run:{size:20}},U))}}class s5 extends D1{constructor(U){super(W0({id:"Hyperlink",name:"Hyperlink",basedOn:"DefaultParagraphFont",run:{color:"0563C1",underline:{type:ZU.SINGLE}}},U))}}class X2 extends o{constructor(U){super("w:styles");if(U.initialStyles)this.root.push(U.initialStyles);if(U.importedStyles)for(let $ of U.importedStyles)this.root.push($);if(U.paragraphStyles)for(let $ of U.paragraphStyles)this.root.push(new y1($));if(U.characterStyles)for(let $ of U.characterStyles)this.root.push(new D1($))}}class w$ extends o{constructor(U){super("w:pPrDefault");this.root.push(new Z1(U))}}class B$ extends o{constructor(U){super("w:rPrDefault");this.root.push(new J1(U))}}class q$ extends o{constructor(U){super("w:docDefaults");Y0(this,"runPropertiesDefaults"),Y0(this,"paragraphPropertiesDefaults"),this.runPropertiesDefaults=new B$(U.run),this.paragraphPropertiesDefaults=new w$(U.paragraph),this.root.push(this.runPropertiesDefaults),this.root.push(this.paragraphPropertiesDefaults)}}class n5{newInstance(U){let $=U6.xml2js(U,{compact:!1}),Y;for(let J of $.elements||[])if(J.name==="w:styles")Y=J;if(Y===void 0)throw new Error("can not find styles element");let Z=Y.elements||[];return{initialStyles:new i9(Y.attributes),importedStyles:Z.map((J)=>$6(J))}}}class c2{newInstance(U={}){var $;return{initialStyles:new o1(["mc","r","w","w14","w15"],"w14 w15"),importedStyles:[new q$(($=U.document)!=null?$:{}),new y5(W0({run:{size:56}},U.title)),new b5(W0({run:{color:"2E74B5",size:32}},U.heading1)),new g5(W0({run:{color:"2E74B5",size:26}},U.heading2)),new x5(W0({run:{color:"1F4D78",size:24}},U.heading3)),new f5(W0({run:{color:"2E74B5",italics:!0}},U.heading4)),new h5(W0({run:{color:"2E74B5"}},U.heading5)),new u5(W0({run:{color:"1F4D78"}},U.heading6)),new d5(W0({run:{bold:!0}},U.strong)),new c5(U.listParagraph||{}),new s5(U.hyperlink||{}),new l5(U.footnoteReference||{}),new m5(U.footnoteText||{}),new a5(U.footnoteTextChar||{}),new i5(U.endnoteReference||{}),new p5(U.endnoteText||{}),new r5(U.endnoteTextChar||{})]}}}class o5{constructor(U){Y0(this,"currentRelationshipId",1),Y0(this,"documentWrapper"),Y0(this,"headers",[]),Y0(this,"footers",[]),Y0(this,"coreProperties"),Y0(this,"numbering"),Y0(this,"media"),Y0(this,"fileRelationships"),Y0(this,"footnotesWrapper"),Y0(this,"endnotesWrapper"),Y0(this,"settings"),Y0(this,"contentTypes"),Y0(this,"customProperties"),Y0(this,"appProperties"),Y0(this,"styles"),Y0(this,"comments"),Y0(this,"fontWrapper");var $,Y,Z,J,G,w,Q,q,z,R,W,E,D;if(this.coreProperties=new gK(R0(W0({},U),{creator:($=U.creator)!=null?$:"Un-named",revision:(Y=U.revision)!=null?Y:1,lastModifiedBy:(Z=U.lastModifiedBy)!=null?Z:"Un-named"})),this.numbering=new J$(U.numbering?U.numbering:{config:[]}),this.comments=new LU((J=U.comments)!=null?J:{children:[]}),this.fileRelationships=new W1,this.customProperties=new cK((G=U.customProperties)!=null?G:[]),this.appProperties=new _K,this.footnotesWrapper=new I5,this.endnotesWrapper=new G5,this.contentTypes=new bK,this.documentWrapper=new U5({background:U.background}),this.settings=new k5({compatibilityModeVersion:U.compatabilityModeVersion,compatibility:U.compatibility,evenAndOddHeaders:U.evenAndOddHeaderAndFooters?!0:!1,trackRevisions:(w=U.features)==null?void 0:w.trackRevisions,updateFields:(Q=U.features)==null?void 0:Q.updateFields,defaultTabStop:U.defaultTabStop,hyphenation:{autoHyphenation:(q=U.hyphenation)==null?void 0:q.autoHyphenation,hyphenationZone:(z=U.hyphenation)==null?void 0:z.hyphenationZone,consecutiveHyphenLimit:(R=U.hyphenation)==null?void 0:R.consecutiveHyphenLimit,doNotHyphenateCaps:(W=U.hyphenation)==null?void 0:W.doNotHyphenateCaps}}),this.media=new M6,U.externalStyles!==void 0){let H=new c2().newInstance((E=U.styles)==null?void 0:E.default),X=new n5().newInstance(U.externalStyles);this.styles=new X2(R0(W0({},X),{importedStyles:[...H.importedStyles,...X.importedStyles]}))}else if(U.styles){let H=new c2().newInstance(U.styles.default);this.styles=new X2(W0(W0({},H),U.styles))}else{let C=new c2;this.styles=new X2(C.newInstance())}this.addDefaultRelationships();for(let C of U.sections)this.addSection(C);if(U.footnotes)for(let C in U.footnotes)this.footnotesWrapper.View.createFootNote(parseFloat(C),U.footnotes[C].children);if(U.endnotes)for(let C in U.endnotes)this.endnotesWrapper.View.createEndnote(parseFloat(C),U.endnotes[C].children);this.fontWrapper=new RU((D=U.fonts)!=null?D:[])}addSection({headers:U={},footers:$={},children:Y,properties:Z}){this.documentWrapper.View.Body.addSection(R0(W0({},Z),{headerWrapperGroup:{default:U.default?this.createHeader(U.default):void 0,first:U.first?this.createHeader(U.first):void 0,even:U.even?this.createHeader(U.even):void 0},footerWrapperGroup:{default:$.default?this.createFooter($.default):void 0,first:$.first?this.createFooter($.first):void 0,even:$.even?this.createFooter($.even):void 0}}));for(let J of Y)this.documentWrapper.View.add(J)}createHeader(U){let $=new Y$(this.media,this.currentRelationshipId++);for(let Y of U.options.children)$.add(Y);return this.addHeaderToDocument($),$}createFooter(U){let $=new U$(this.media,this.currentRelationshipId++);for(let Y of U.options.children)$.add(Y);return this.addFooterToDocument($),$}addHeaderToDocument(U,$=k1.DEFAULT){this.headers.push({header:U,type:$}),this.documentWrapper.Relationships.addRelationship(U.View.ReferenceId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",`header${this.headers.length}.xml`),this.contentTypes.addHeader(this.headers.length)}addFooterToDocument(U,$=k1.DEFAULT){this.footers.push({footer:U,type:$}),this.documentWrapper.Relationships.addRelationship(U.View.ReferenceId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",`footer${this.footers.length}.xml`),this.contentTypes.addFooter(this.footers.length)}addDefaultRelationships(){this.fileRelationships.addRelationship(1,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument","word/document.xml"),this.fileRelationships.addRelationship(2,"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties","docProps/core.xml"),this.fileRelationships.addRelationship(3,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties","docProps/app.xml"),this.fileRelationships.addRelationship(4,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties","docProps/custom.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering","numbering.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes","footnotes.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes","endnotes.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings","settings.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments","comments.xml")}get Document(){return this.documentWrapper}get Styles(){return this.styles}get CoreProperties(){return this.coreProperties}get Numbering(){return this.numbering}get Media(){return this.media}get FileRelationships(){return this.fileRelationships}get Headers(){return this.headers.map((U)=>U.header)}get Footers(){return this.footers.map((U)=>U.footer)}get ContentTypes(){return this.contentTypes}get CustomProperties(){return this.customProperties}get AppProperties(){return this.appProperties}get FootNotes(){return this.footnotesWrapper}get Endnotes(){return this.endnotesWrapper}get Settings(){return this.settings}get Comments(){return this.comments}get FontTable(){return this.fontWrapper}}class t5 extends o{constructor(U={}){super("w:instrText");Y0(this,"properties"),this.properties=U,this.root.push(new x0({space:g0.PRESERVE}));let $="TOC";if(this.properties.captionLabel)$=`${$} \\a "${this.properties.captionLabel}"`;if(this.properties.entriesFromBookmark)$=`${$} \\b "${this.properties.entriesFromBookmark}"`;if(this.properties.captionLabelIncludingNumbers)$=`${$} \\c "${this.properties.captionLabelIncludingNumbers}"`;if(this.properties.sequenceAndPageNumbersSeparator)$=`${$} \\d "${this.properties.sequenceAndPageNumbersSeparator}"`;if(this.properties.tcFieldIdentifier)$=`${$} \\f "${this.properties.tcFieldIdentifier}"`;if(this.properties.hyperlink)$=`${$} \\h`;if(this.properties.tcFieldLevelRange)$=`${$} \\l "${this.properties.tcFieldLevelRange}"`;if(this.properties.pageNumbersEntryLevelsRange)$=`${$} \\n "${this.properties.pageNumbersEntryLevelsRange}"`;if(this.properties.headingStyleRange)$=`${$} \\o "${this.properties.headingStyleRange}"`;if(this.properties.entryAndPageNumberSeparator)$=`${$} \\p "${this.properties.entryAndPageNumberSeparator}"`;if(this.properties.seqFieldIdentifierForPrefix)$=`${$} \\s "${this.properties.seqFieldIdentifierForPrefix}"`;if(this.properties.stylesWithLevels&&this.properties.stylesWithLevels.length){let Y=this.properties.stylesWithLevels.map((Z)=>`${Z.styleName},${Z.level}`).join(",");$=`${$} \\t "${Y}"`}if(this.properties.useAppliedParagraphOutlineLevel)$=`${$} \\u`;if(this.properties.preserveTabInEntries)$=`${$} \\w`;if(this.properties.preserveNewLineInEntries)$=`${$} \\x`;if(this.properties.hideTabAndPageNumbersInWebView)$=`${$} \\z`;this.root.push($)}}class X$ extends o{constructor(){super("w:sdtContent")}}class I$ extends o{constructor(U){super("w:sdtPr");if(U)this.root.push(new Y1("w:alias",U))}}class e5 extends r1{constructor(U="Table of Contents",$={}){var Y=$,{contentChildren:Z=[],cachedEntries:J=[],beginDirty:G=!0}=Y,w=oZ(Y,["contentChildren","cachedEntries","beginDirty"]);super("w:sdt");this.root.push(new I$(U));let Q=new X$,q=[new C0({children:[U1(G),new t5(w),V1()]})],z=[new C0({children:[$1()]})];if(J!==void 0&&J.length>0){let{stylesWithLevels:W}=w,E=J.map((C,H)=>{var O,X;let j=this.buildCachedContentParagraphChild(C,w),L=(X=(O=W==null?void 0:W.find((A)=>A.level===C.level))==null?void 0:O.styleName)!=null?X:`TOC${C.level}`,I=H===0?[...q,j]:H===J.length-1?[j,...z]:[j];return new h0({style:L,tabStops:this.getTabStopsForLevel(C.level),children:I})}),D=E;if(J.length<=1)D=[...E,new h0({children:z})];for(let C of D)Q.addChildElement(C)}else{let W=new h0({children:q});Q.addChildElement(W);for(let D of Z)Q.addChildElement(D);let E=new h0({children:z});Q.addChildElement(E)}this.root.push(Q)}getTabStopsForLevel(U,$=9025){return[{type:"clear",position:$+1-(U-1)*240},{type:"right",position:$,leader:"dot"}]}buildCachedContentRun(U,$){var Y,Z;return new C0({style:($==null?void 0:$.hyperlink)&&U.href!==void 0?"IndexLink":void 0,children:[new a1({text:U.title}),new MU,new a1({text:(Z=(Y=U.page)==null?void 0:Y.toString())!=null?Z:""})]})}buildCachedContentParagraphChild(U,$){let Y=this.buildCachedContentRun(U,$);if(($==null?void 0:$.hyperlink)&&U.href!==void 0)return new jU({anchor:U.href,children:[Y]});return Y}}class U7{constructor(U,$){Y0(this,"styleName"),Y0(this,"level"),this.styleName=U,this.level=$}}class $7{constructor(U={children:[]}){Y0(this,"options"),this.options=U}}class Y7{constructor(U={children:[]}){Y0(this,"options"),this.options=U}}class L$ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class V$ extends o{constructor(U){super("w:footnoteReference");this.root.push(new L$({id:U}))}}class Z7 extends C0{constructor(U){super({style:"FootnoteReference"});this.root.push(new V$(U))}}class M$ extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class W$ extends o{constructor(U){super("w:endnoteReference");this.root.push(new M$({id:U}))}}class Q7 extends C0{constructor(U){super({style:"EndnoteReference"});this.root.push(new W$(U))}}class _9 extends V0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w14:val",symbolfont:"w14:font"})}}class I2 extends o{constructor(U,$,Y){super(U);if(Y)this.root.push(new _9({val:DQ($),symbolfont:Y}));else this.root.push(new _9({val:$}))}}class H$ extends o{constructor(U){var $,Y,Z,J,G,w,Q,q;super("w14:checkbox");Y0(this,"DEFAULT_UNCHECKED_SYMBOL","2610"),Y0(this,"DEFAULT_CHECKED_SYMBOL","2612"),Y0(this,"DEFAULT_FONT","MS Gothic");let z=(U==null?void 0:U.checked)?"1":"0",R,W;this.root.push(new I2("w14:checked",z)),R=(($=U==null?void 0:U.checkedState)==null?void 0:$.value)?(Y=U==null?void 0:U.checkedState)==null?void 0:Y.value:this.DEFAULT_CHECKED_SYMBOL,W=((Z=U==null?void 0:U.checkedState)==null?void 0:Z.font)?(J=U==null?void 0:U.checkedState)==null?void 0:J.font:this.DEFAULT_FONT,this.root.push(new I2("w14:checkedState",R,W)),R=((G=U==null?void 0:U.uncheckedState)==null?void 0:G.value)?(w=U==null?void 0:U.uncheckedState)==null?void 0:w.value:this.DEFAULT_UNCHECKED_SYMBOL,W=((Q=U==null?void 0:U.uncheckedState)==null?void 0:Q.font)?(q=U==null?void 0:U.uncheckedState)==null?void 0:q.font:this.DEFAULT_FONT,this.root.push(new I2("w14:uncheckedState",R,W))}}class J7 extends o{constructor(U){var $,Y,Z,J;super("w:sdt");Y0(this,"DEFAULT_UNCHECKED_SYMBOL","2610"),Y0(this,"DEFAULT_CHECKED_SYMBOL","2612"),Y0(this,"DEFAULT_FONT","MS Gothic");let G=new I$(U==null?void 0:U.alias);G.addChildElement(new H$(U)),this.root.push(G);let w=new X$,Q=($=U==null?void 0:U.checkedState)==null?void 0:$.font,q=(Y=U==null?void 0:U.checkedState)==null?void 0:Y.value,z=(Z=U==null?void 0:U.uncheckedState)==null?void 0:Z.font,R=(J=U==null?void 0:U.uncheckedState)==null?void 0:J.value,W,E;if(U==null?void 0:U.checked)W=Q?Q:this.DEFAULT_FONT,E=q?q:this.DEFAULT_CHECKED_SYMBOL;else W=z?z:this.DEFAULT_FONT,E=R?R:this.DEFAULT_UNCHECKED_SYMBOL;let D=new GU({char:E,symbolfont:W});w.addChildElement(D),this.root.push(w)}}var dq=({shape:U})=>new X0({name:"w:pict",children:[U]}),cq=({children:U=[]})=>new X0({name:"w:txbxContent",children:U}),mq=({style:U,children:$,inset:Y})=>new X0({name:"v:textbox",attributes:{style:{key:"style",value:U},insetMode:{key:"insetmode",value:Y?"custom":"auto"},inset:{key:"inset",value:Y?`${Y.left}, ${Y.top}, ${Y.right}, ${Y.bottom}`:void 0}},children:[cq({children:$})]}),lq="#_x0000_t202",aq={flip:"flip",height:"height",left:"left",marginBottom:"margin-bottom",marginLeft:"margin-left",marginRight:"margin-right",marginTop:"margin-top",positionHorizontal:"mso-position-horizontal",positionHorizontalRelative:"mso-position-horizontal-relative",positionVertical:"mso-position-vertical",positionVerticalRelative:"mso-position-vertical-relative",wrapDistanceBottom:"mso-wrap-distance-bottom",wrapDistanceLeft:"mso-wrap-distance-left",wrapDistanceRight:"mso-wrap-distance-right",wrapDistanceTop:"mso-wrap-distance-top",wrapEdited:"mso-wrap-edited",wrapStyle:"mso-wrap-style",position:"position",rotation:"rotation",top:"top",visibility:"visibility",width:"width",zIndex:"z-index"},pq=(U)=>U?Object.entries(U).map(([$,Y])=>`${aq[$]}:${Y}`).join(";"):void 0,iq=({id:U,children:$,type:Y=lq,style:Z})=>new X0({name:"v:shape",attributes:{id:{key:"id",value:U},type:{key:"type",value:Y},style:{key:"style",value:pq(Z)}},children:[mq({style:"mso-fit-shape-to-text:t;",children:$})]});class G7 extends r1{constructor(U){var $=U,{style:Y,children:Z}=$,J=oZ($,["style","children"]);super("w:p");this.root.push(new Z1(J)),this.root.push(dq({shape:iq({children:Z,id:R2(),style:Y})}))}}var rq=m9();function y2(U){throw new Error('Could not dynamically require "'+U+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var V9={exports:{}},uZ;function sq(){if(uZ)return V9.exports;return uZ=1,function(U,$){(function(Y){U.exports=Y()})(function(){return function Y(Z,J,G){function w(z,R){if(!J[z]){if(!Z[z]){var W=typeof y2=="function"&&y2;if(!R&&W)return W(z,!0);if(Q)return Q(z,!0);var E=new Error("Cannot find module '"+z+"'");throw E.code="MODULE_NOT_FOUND",E}var D=J[z]={exports:{}};Z[z][0].call(D.exports,function(C){var H=Z[z][1][C];return w(H||C)},D,D.exports,Y,Z,J,G)}return J[z].exports}for(var Q=typeof y2=="function"&&y2,q=0;q>2,D=(3&z)<<4|R>>4,C=1>6:64,H=2>4,R=(15&E)<<4|(D=Q.indexOf(q.charAt(H++)))>>2,W=(3&D)<<6|(C=Q.indexOf(q.charAt(H++))),j[O++]=z,D!==64&&(j[O++]=R),C!==64&&(j[O++]=W);return j}},{"./support":30,"./utils":32}],2:[function(Y,Z,J){var G=Y("./external"),w=Y("./stream/DataWorker"),Q=Y("./stream/Crc32Probe"),q=Y("./stream/DataLengthProbe");function z(R,W,E,D,C){this.compressedSize=R,this.uncompressedSize=W,this.crc32=E,this.compression=D,this.compressedContent=C}z.prototype={getContentWorker:function(){var R=new w(G.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new q("data_length")),W=this;return R.on("end",function(){if(this.streamInfo.data_length!==W.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),R},getCompressedWorker:function(){return new w(G.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},z.createWorkerFrom=function(R,W,E){return R.pipe(new Q).pipe(new q("uncompressedSize")).pipe(W.compressWorker(E)).pipe(new q("compressedSize")).withStreamInfo("compression",W)},Z.exports=z},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(Y,Z,J){var G=Y("./stream/GenericWorker");J.STORE={magic:"\x00\x00",compressWorker:function(){return new G("STORE compression")},uncompressWorker:function(){return new G("STORE decompression")}},J.DEFLATE=Y("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(Y,Z,J){var G=Y("./utils"),w=function(){for(var Q,q=[],z=0;z<256;z++){Q=z;for(var R=0;R<8;R++)Q=1&Q?3988292384^Q>>>1:Q>>>1;q[z]=Q}return q}();Z.exports=function(Q,q){return Q!==void 0&&Q.length?G.getTypeOf(Q)!=="string"?function(z,R,W,E){var D=w,C=E+W;z^=-1;for(var H=E;H>>8^D[255&(z^R[H])];return-1^z}(0|q,Q,Q.length,0):function(z,R,W,E){var D=w,C=E+W;z^=-1;for(var H=E;H>>8^D[255&(z^R.charCodeAt(H))];return-1^z}(0|q,Q,Q.length,0):0}},{"./utils":32}],5:[function(Y,Z,J){J.base64=!1,J.binary=!1,J.dir=!1,J.createFolders=!0,J.date=null,J.compression=null,J.compressionOptions=null,J.comment=null,J.unixPermissions=null,J.dosPermissions=null},{}],6:[function(Y,Z,J){var G=null;G=typeof Promise!="undefined"?Promise:Y("lie"),Z.exports={Promise:G}},{lie:37}],7:[function(Y,Z,J){var G=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Uint32Array!="undefined",w=Y("pako"),Q=Y("./utils"),q=Y("./stream/GenericWorker"),z=G?"uint8array":"array";function R(W,E){q.call(this,"FlateWorker/"+W),this._pako=null,this._pakoAction=W,this._pakoOptions=E,this.meta={}}J.magic="\b\x00",Q.inherits(R,q),R.prototype.processChunk=function(W){this.meta=W.meta,this._pako===null&&this._createPako(),this._pako.push(Q.transformTo(z,W.data),!1)},R.prototype.flush=function(){q.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},R.prototype.cleanUp=function(){q.prototype.cleanUp.call(this),this._pako=null},R.prototype._createPako=function(){this._pako=new w[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var W=this;this._pako.onData=function(E){W.push({data:E,meta:W.meta})}},J.compressWorker=function(W){return new R("Deflate",W)},J.uncompressWorker=function(){return new R("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(Y,Z,J){function G(D,C){var H,O="";for(H=0;H>>=8;return O}function w(D,C,H,O,X,j){var L,I,A=D.file,y=D.compression,g=j!==z.utf8encode,d=Q.transformTo("string",j(A.name)),k=Q.transformTo("string",z.utf8encode(A.name)),s=A.comment,q0=Q.transformTo("string",j(s)),S=Q.transformTo("string",z.utf8encode(s)),h=k.length!==A.name.length,F=S.length!==s.length,a="",U0="",m="",J0=A.dir,$0=A.date,I0={crc32:0,compressedSize:0,uncompressedSize:0};C&&!H||(I0.crc32=D.crc32,I0.compressedSize=D.compressedSize,I0.uncompressedSize=D.uncompressedSize);var i=0;C&&(i|=8),g||!h&&!F||(i|=2048);var _=0,r=0;J0&&(_|=16),X==="UNIX"?(r=798,_|=function(Z0,p){var P=Z0;return Z0||(P=p?16893:33204),(65535&P)<<16}(A.unixPermissions,J0)):(r=20,_|=function(Z0){return 63&(Z0||0)}(A.dosPermissions)),L=$0.getUTCHours(),L<<=6,L|=$0.getUTCMinutes(),L<<=5,L|=$0.getUTCSeconds()/2,I=$0.getUTCFullYear()-1980,I<<=4,I|=$0.getUTCMonth()+1,I<<=5,I|=$0.getUTCDate(),h&&(U0=G(1,1)+G(R(d),4)+k,a+="up"+G(U0.length,2)+U0),F&&(m=G(1,1)+G(R(q0),4)+S,a+="uc"+G(m.length,2)+m);var n="";return n+=` -\x00`,n+=G(i,2),n+=y.magic,n+=G(L,2),n+=G(I,2),n+=G(I0.crc32,4),n+=G(I0.compressedSize,4),n+=G(I0.uncompressedSize,4),n+=G(d.length,2),n+=G(a.length,2),{fileRecord:W.LOCAL_FILE_HEADER+n+d+a,dirRecord:W.CENTRAL_FILE_HEADER+G(r,2)+n+G(q0.length,2)+"\x00\x00\x00\x00"+G(_,4)+G(O,4)+d+a+q0}}var Q=Y("../utils"),q=Y("../stream/GenericWorker"),z=Y("../utf8"),R=Y("../crc32"),W=Y("../signature");function E(D,C,H,O){q.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=C,this.zipPlatform=H,this.encodeFileName=O,this.streamFiles=D,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}Q.inherits(E,q),E.prototype.push=function(D){var C=D.meta.percent||0,H=this.entriesCount,O=this._sources.length;this.accumulate?this.contentBuffer.push(D):(this.bytesWritten+=D.data.length,q.prototype.push.call(this,{data:D.data,meta:{currentFile:this.currentFile,percent:H?(C+100*(H-O-1))/H:100}}))},E.prototype.openedSource=function(D){this.currentSourceOffset=this.bytesWritten,this.currentFile=D.file.name;var C=this.streamFiles&&!D.file.dir;if(C){var H=w(D,C,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:H.fileRecord,meta:{percent:0}})}else this.accumulate=!0},E.prototype.closedSource=function(D){this.accumulate=!1;var C=this.streamFiles&&!D.file.dir,H=w(D,C,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(H.dirRecord),C)this.push({data:function(O){return W.DATA_DESCRIPTOR+G(O.crc32,4)+G(O.compressedSize,4)+G(O.uncompressedSize,4)}(D),meta:{percent:100}});else for(this.push({data:H.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},E.prototype.flush=function(){for(var D=this.bytesWritten,C=0;C=this.index;q--)z=(z<<8)+this.byteAt(q);return this.index+=Q,z},readString:function(Q){return G.transformTo("string",this.readData(Q))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var Q=this.readInt(4);return new Date(Date.UTC(1980+(Q>>25&127),(Q>>21&15)-1,Q>>16&31,Q>>11&31,Q>>5&63,(31&Q)<<1))}},Z.exports=w},{"../utils":32}],19:[function(Y,Z,J){var G=Y("./Uint8ArrayReader");function w(Q){G.call(this,Q)}Y("../utils").inherits(w,G),w.prototype.readData=function(Q){this.checkOffset(Q);var q=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,q},Z.exports=w},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(Y,Z,J){var G=Y("./DataReader");function w(Q){G.call(this,Q)}Y("../utils").inherits(w,G),w.prototype.byteAt=function(Q){return this.data.charCodeAt(this.zero+Q)},w.prototype.lastIndexOfSignature=function(Q){return this.data.lastIndexOf(Q)-this.zero},w.prototype.readAndCheckSignature=function(Q){return Q===this.readData(4)},w.prototype.readData=function(Q){this.checkOffset(Q);var q=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,q},Z.exports=w},{"../utils":32,"./DataReader":18}],21:[function(Y,Z,J){var G=Y("./ArrayReader");function w(Q){G.call(this,Q)}Y("../utils").inherits(w,G),w.prototype.readData=function(Q){if(this.checkOffset(Q),Q===0)return new Uint8Array(0);var q=this.data.subarray(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,q},Z.exports=w},{"../utils":32,"./ArrayReader":17}],22:[function(Y,Z,J){var G=Y("../utils"),w=Y("../support"),Q=Y("./ArrayReader"),q=Y("./StringReader"),z=Y("./NodeBufferReader"),R=Y("./Uint8ArrayReader");Z.exports=function(W){var E=G.getTypeOf(W);return G.checkSupport(E),E!=="string"||w.uint8array?E==="nodebuffer"?new z(W):w.uint8array?new R(G.transformTo("uint8array",W)):new Q(G.transformTo("array",W)):new q(W)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(Y,Z,J){J.LOCAL_FILE_HEADER="PK\x03\x04",J.CENTRAL_FILE_HEADER="PK\x01\x02",J.CENTRAL_DIRECTORY_END="PK\x05\x06",J.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x06\x07",J.ZIP64_CENTRAL_DIRECTORY_END="PK\x06\x06",J.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(Y,Z,J){var G=Y("./GenericWorker"),w=Y("../utils");function Q(q){G.call(this,"ConvertWorker to "+q),this.destType=q}w.inherits(Q,G),Q.prototype.processChunk=function(q){this.push({data:w.transformTo(this.destType,q.data),meta:q.meta})},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],25:[function(Y,Z,J){var G=Y("./GenericWorker"),w=Y("../crc32");function Q(){G.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}Y("../utils").inherits(Q,G),Q.prototype.processChunk=function(q){this.streamInfo.crc32=w(q.data,this.streamInfo.crc32||0),this.push(q)},Z.exports=Q},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(Y,Z,J){var G=Y("../utils"),w=Y("./GenericWorker");function Q(q){w.call(this,"DataLengthProbe for "+q),this.propName=q,this.withStreamInfo(q,0)}G.inherits(Q,w),Q.prototype.processChunk=function(q){if(q){var z=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=z+q.data.length}w.prototype.processChunk.call(this,q)},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],27:[function(Y,Z,J){var G=Y("../utils"),w=Y("./GenericWorker");function Q(q){w.call(this,"DataWorker");var z=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,q.then(function(R){z.dataIsReady=!0,z.data=R,z.max=R&&R.length||0,z.type=G.getTypeOf(R),z.isPaused||z._tickAndRepeat()},function(R){z.error(R)})}G.inherits(Q,w),Q.prototype.cleanUp=function(){w.prototype.cleanUp.call(this),this.data=null},Q.prototype.resume=function(){return!!w.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,G.delay(this._tickAndRepeat,[],this)),!0)},Q.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(G.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},Q.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var q=null,z=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":q=this.data.substring(this.index,z);break;case"uint8array":q=this.data.subarray(this.index,z);break;case"array":case"nodebuffer":q=this.data.slice(this.index,z)}return this.index=z,this.push({data:q,meta:{percent:this.max?this.index/this.max*100:0}})},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],28:[function(Y,Z,J){function G(w){this.name=w||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}G.prototype={push:function(w){this.emit("data",w)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(w){this.emit("error",w)}return!0},error:function(w){return!this.isFinished&&(this.isPaused?this.generatedError=w:(this.isFinished=!0,this.emit("error",w),this.previous&&this.previous.error(w),this.cleanUp()),!0)},on:function(w,Q){return this._listeners[w].push(Q),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(w,Q){if(this._listeners[w])for(var q=0;q "+w:w}},Z.exports=G},{}],29:[function(Y,Z,J){var G=Y("../utils"),w=Y("./ConvertWorker"),Q=Y("./GenericWorker"),q=Y("../base64"),z=Y("../support"),R=Y("../external"),W=null;if(z.nodestream)try{W=Y("../nodejs/NodejsStreamOutputAdapter")}catch(C){}function E(C,H){return new R.Promise(function(O,X){var j=[],L=C._internalType,I=C._outputType,A=C._mimeType;C.on("data",function(y,g){j.push(y),H&&H(g)}).on("error",function(y){j=[],X(y)}).on("end",function(){try{var y=function(g,d,k){switch(g){case"blob":return G.newBlob(G.transformTo("arraybuffer",d),k);case"base64":return q.encode(d);default:return G.transformTo(g,d)}}(I,function(g,d){var k,s=0,q0=null,S=0;for(k=0;k>>6:(O<65536?H[L++]=224|O>>>12:(H[L++]=240|O>>>18,H[L++]=128|O>>>12&63),H[L++]=128|O>>>6&63),H[L++]=128|63&O);return H}(D)},J.utf8decode=function(D){return w.nodebuffer?G.transformTo("nodebuffer",D).toString("utf-8"):function(C){var H,O,X,j,L=C.length,I=new Array(2*L);for(H=O=0;H>10&1023,I[O++]=56320|1023&X)}return I.length!==O&&(I.subarray?I=I.subarray(0,O):I.length=O),G.applyFromCharCode(I)}(D=G.transformTo(w.uint8array?"uint8array":"array",D))},G.inherits(W,q),W.prototype.processChunk=function(D){var C=G.transformTo(w.uint8array?"uint8array":"array",D.data);if(this.leftOver&&this.leftOver.length){if(w.uint8array){var H=C;(C=new Uint8Array(H.length+this.leftOver.length)).set(this.leftOver,0),C.set(H,this.leftOver.length)}else C=this.leftOver.concat(C);this.leftOver=null}var O=function(j,L){var I;for((L=L||j.length)>j.length&&(L=j.length),I=L-1;0<=I&&(192&j[I])==128;)I--;return I<0?L:I===0?L:I+z[j[I]]>L?I:L}(C),X=C;O!==C.length&&(w.uint8array?(X=C.subarray(0,O),this.leftOver=C.subarray(O,C.length)):(X=C.slice(0,O),this.leftOver=C.slice(O,C.length))),this.push({data:J.utf8decode(X),meta:D.meta})},W.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:J.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},J.Utf8DecodeWorker=W,G.inherits(E,q),E.prototype.processChunk=function(D){this.push({data:J.utf8encode(D.data),meta:D.meta})},J.Utf8EncodeWorker=E},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(Y,Z,J){var G=Y("./support"),w=Y("./base64"),Q=Y("./nodejsUtils"),q=Y("./external");function z(H){return H}function R(H,O){for(var X=0;X>8;this.dir=!!(16&this.externalFileAttributes),D==0&&(this.dosPermissions=63&this.externalFileAttributes),D==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var D=G(this.extraFields[1].value);this.uncompressedSize===w.MAX_VALUE_32BITS&&(this.uncompressedSize=D.readInt(8)),this.compressedSize===w.MAX_VALUE_32BITS&&(this.compressedSize=D.readInt(8)),this.localHeaderOffset===w.MAX_VALUE_32BITS&&(this.localHeaderOffset=D.readInt(8)),this.diskNumberStart===w.MAX_VALUE_32BITS&&(this.diskNumberStart=D.readInt(4))}},readExtraFields:function(D){var C,H,O,X=D.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});D.index+4>>6:(D<65536?E[O++]=224|D>>>12:(E[O++]=240|D>>>18,E[O++]=128|D>>>12&63),E[O++]=128|D>>>6&63),E[O++]=128|63&D);return E},J.buf2binstring=function(W){return R(W,W.length)},J.binstring2buf=function(W){for(var E=new G.Buf8(W.length),D=0,C=E.length;D>10&1023,j[C++]=56320|1023&H)}return R(j,C)},J.utf8border=function(W,E){var D;for((E=E||W.length)>W.length&&(E=W.length),D=E-1;0<=D&&(192&W[D])==128;)D--;return D<0?E:D===0?E:D+q[W[D]]>E?D:E}},{"./common":41}],43:[function(Y,Z,J){Z.exports=function(G,w,Q,q){for(var z=65535&G|0,R=G>>>16&65535|0,W=0;Q!==0;){for(Q-=W=2000>>1:w>>>1;Q[q]=w}return Q}();Z.exports=function(w,Q,q,z){var R=G,W=z+q;w^=-1;for(var E=z;E>>8^R[255&(w^Q[E])];return-1^w}},{}],46:[function(Y,Z,J){var G,w=Y("../utils/common"),Q=Y("./trees"),q=Y("./adler32"),z=Y("./crc32"),R=Y("./messages"),W=0,E=4,D=0,C=-2,H=-1,O=4,X=2,j=8,L=9,I=286,A=30,y=19,g=2*I+1,d=15,k=3,s=258,q0=s+k+1,S=42,h=113,F=1,a=2,U0=3,m=4;function J0(V,t){return V.msg=R[t],t}function $0(V){return(V<<1)-(4V.avail_out&&(T=V.avail_out),T!==0&&(w.arraySet(V.output,t.pending_buf,t.pending_out,T,V.next_out),V.next_out+=T,t.pending_out+=T,V.total_out+=T,V.avail_out-=T,t.pending-=T,t.pending===0&&(t.pending_out=0))}function _(V,t){Q._tr_flush_block(V,0<=V.block_start?V.block_start:-1,V.strstart-V.block_start,t),V.block_start=V.strstart,i(V.strm)}function r(V,t){V.pending_buf[V.pending++]=t}function n(V,t){V.pending_buf[V.pending++]=t>>>8&255,V.pending_buf[V.pending++]=255&t}function Z0(V,t){var T,K,B=V.max_chain_length,M=V.strstart,x=V.prev_length,l=V.nice_match,u=V.strstart>V.w_size-q0?V.strstart-(V.w_size-q0):0,Q0=V.window,w0=V.w_mask,K0=V.prev,L0=V.strstart+s,M0=Q0[M+x-1],H0=Q0[M+x];V.prev_length>=V.good_match&&(B>>=2),l>V.lookahead&&(l=V.lookahead);do if(Q0[(T=t)+x]===H0&&Q0[T+x-1]===M0&&Q0[T]===Q0[M]&&Q0[++T]===Q0[M+1]){M+=2,T++;do;while(Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Q0[++M]===Q0[++T]&&Mu&&--B!=0);return x<=V.lookahead?x:V.lookahead}function p(V){var t,T,K,B,M,x,l,u,Q0,w0,K0=V.w_size;do{if(B=V.window_size-V.lookahead-V.strstart,V.strstart>=K0+(K0-q0)){for(w.arraySet(V.window,V.window,K0,K0,0),V.match_start-=K0,V.strstart-=K0,V.block_start-=K0,t=T=V.hash_size;K=V.head[--t],V.head[t]=K0<=K?K-K0:0,--T;);for(t=T=K0;K=V.prev[--t],V.prev[t]=K0<=K?K-K0:0,--T;);B+=K0}if(V.strm.avail_in===0)break;if(x=V.strm,l=V.window,u=V.strstart+V.lookahead,Q0=B,w0=void 0,w0=x.avail_in,Q0=k)for(M=V.strstart-V.insert,V.ins_h=V.window[M],V.ins_h=(V.ins_h<=k&&(V.ins_h=(V.ins_h<=k)if(K=Q._tr_tally(V,V.strstart-V.match_start,V.match_length-k),V.lookahead-=V.match_length,V.match_length<=V.max_lazy_match&&V.lookahead>=k){for(V.match_length--;V.strstart++,V.ins_h=(V.ins_h<=k&&(V.ins_h=(V.ins_h<=k&&V.match_length<=V.prev_length){for(B=V.strstart+V.lookahead-k,K=Q._tr_tally(V,V.strstart-1-V.prev_match,V.prev_length-k),V.lookahead-=V.prev_length-1,V.prev_length-=2;++V.strstart<=B&&(V.ins_h=(V.ins_h<V.pending_buf_size-5&&(T=V.pending_buf_size-5);;){if(V.lookahead<=1){if(p(V),V.lookahead===0&&t===W)return F;if(V.lookahead===0)break}V.strstart+=V.lookahead,V.lookahead=0;var K=V.block_start+T;if((V.strstart===0||V.strstart>=K)&&(V.lookahead=V.strstart-K,V.strstart=K,_(V,!1),V.strm.avail_out===0))return F;if(V.strstart-V.block_start>=V.w_size-q0&&(_(V,!1),V.strm.avail_out===0))return F}return V.insert=0,t===E?(_(V,!0),V.strm.avail_out===0?U0:m):(V.strstart>V.block_start&&(_(V,!1),V.strm.avail_out),F)}),new c(4,4,8,4,P),new c(4,5,16,8,P),new c(4,6,32,32,P),new c(4,4,16,16,N),new c(8,16,32,32,N),new c(8,16,128,128,N),new c(8,32,128,256,N),new c(32,128,258,1024,N),new c(32,258,258,4096,N)],J.deflateInit=function(V,t){return e(V,t,j,15,8,0)},J.deflateInit2=e,J.deflateReset=b,J.deflateResetKeep=v,J.deflateSetHeader=function(V,t){return V&&V.state?V.state.wrap!==2?C:(V.state.gzhead=t,D):C},J.deflate=function(V,t){var T,K,B,M;if(!V||!V.state||5>8&255),r(K,K.gzhead.time>>16&255),r(K,K.gzhead.time>>24&255),r(K,K.level===9?2:2<=K.strategy||K.level<2?4:0),r(K,255&K.gzhead.os),K.gzhead.extra&&K.gzhead.extra.length&&(r(K,255&K.gzhead.extra.length),r(K,K.gzhead.extra.length>>8&255)),K.gzhead.hcrc&&(V.adler=z(V.adler,K.pending_buf,K.pending,0)),K.gzindex=0,K.status=69):(r(K,0),r(K,0),r(K,0),r(K,0),r(K,0),r(K,K.level===9?2:2<=K.strategy||K.level<2?4:0),r(K,3),K.status=h);else{var x=j+(K.w_bits-8<<4)<<8;x|=(2<=K.strategy||K.level<2?0:K.level<6?1:K.level===6?2:3)<<6,K.strstart!==0&&(x|=32),x+=31-x%31,K.status=h,n(K,x),K.strstart!==0&&(n(K,V.adler>>>16),n(K,65535&V.adler)),V.adler=1}if(K.status===69)if(K.gzhead.extra){for(B=K.pending;K.gzindex<(65535&K.gzhead.extra.length)&&(K.pending!==K.pending_buf_size||(K.gzhead.hcrc&&K.pending>B&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),i(V),B=K.pending,K.pending!==K.pending_buf_size));)r(K,255&K.gzhead.extra[K.gzindex]),K.gzindex++;K.gzhead.hcrc&&K.pending>B&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),K.gzindex===K.gzhead.extra.length&&(K.gzindex=0,K.status=73)}else K.status=73;if(K.status===73)if(K.gzhead.name){B=K.pending;do{if(K.pending===K.pending_buf_size&&(K.gzhead.hcrc&&K.pending>B&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),i(V),B=K.pending,K.pending===K.pending_buf_size)){M=1;break}M=K.gzindexB&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),M===0&&(K.gzindex=0,K.status=91)}else K.status=91;if(K.status===91)if(K.gzhead.comment){B=K.pending;do{if(K.pending===K.pending_buf_size&&(K.gzhead.hcrc&&K.pending>B&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),i(V),B=K.pending,K.pending===K.pending_buf_size)){M=1;break}M=K.gzindexB&&(V.adler=z(V.adler,K.pending_buf,K.pending-B,B)),M===0&&(K.status=103)}else K.status=103;if(K.status===103&&(K.gzhead.hcrc?(K.pending+2>K.pending_buf_size&&i(V),K.pending+2<=K.pending_buf_size&&(r(K,255&V.adler),r(K,V.adler>>8&255),V.adler=0,K.status=h)):K.status=h),K.pending!==0){if(i(V),V.avail_out===0)return K.last_flush=-1,D}else if(V.avail_in===0&&$0(t)<=$0(T)&&t!==E)return J0(V,-5);if(K.status===666&&V.avail_in!==0)return J0(V,-5);if(V.avail_in!==0||K.lookahead!==0||t!==W&&K.status!==666){var l=K.strategy===2?function(u,Q0){for(var w0;;){if(u.lookahead===0&&(p(u),u.lookahead===0)){if(Q0===W)return F;break}if(u.match_length=0,w0=Q._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++,w0&&(_(u,!1),u.strm.avail_out===0))return F}return u.insert=0,Q0===E?(_(u,!0),u.strm.avail_out===0?U0:m):u.last_lit&&(_(u,!1),u.strm.avail_out===0)?F:a}(K,t):K.strategy===3?function(u,Q0){for(var w0,K0,L0,M0,H0=u.window;;){if(u.lookahead<=s){if(p(u),u.lookahead<=s&&Q0===W)return F;if(u.lookahead===0)break}if(u.match_length=0,u.lookahead>=k&&0u.lookahead&&(u.match_length=u.lookahead)}if(u.match_length>=k?(w0=Q._tr_tally(u,1,u.match_length-k),u.lookahead-=u.match_length,u.strstart+=u.match_length,u.match_length=0):(w0=Q._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++),w0&&(_(u,!1),u.strm.avail_out===0))return F}return u.insert=0,Q0===E?(_(u,!0),u.strm.avail_out===0?U0:m):u.last_lit&&(_(u,!1),u.strm.avail_out===0)?F:a}(K,t):G[K.level].func(K,t);if(l!==U0&&l!==m||(K.status=666),l===F||l===U0)return V.avail_out===0&&(K.last_flush=-1),D;if(l===a&&(t===1?Q._tr_align(K):t!==5&&(Q._tr_stored_block(K,0,0,!1),t===3&&(I0(K.head),K.lookahead===0&&(K.strstart=0,K.block_start=0,K.insert=0))),i(V),V.avail_out===0))return K.last_flush=-1,D}return t!==E?D:K.wrap<=0?1:(K.wrap===2?(r(K,255&V.adler),r(K,V.adler>>8&255),r(K,V.adler>>16&255),r(K,V.adler>>24&255),r(K,255&V.total_in),r(K,V.total_in>>8&255),r(K,V.total_in>>16&255),r(K,V.total_in>>24&255)):(n(K,V.adler>>>16),n(K,65535&V.adler)),i(V),0=T.w_size&&(M===0&&(I0(T.head),T.strstart=0,T.block_start=0,T.insert=0),Q0=new w.Buf8(T.w_size),w.arraySet(Q0,t,w0-T.w_size,T.w_size,0),t=Q0,w0=T.w_size),x=V.avail_in,l=V.next_in,u=V.input,V.avail_in=w0,V.next_in=0,V.input=t,p(T);T.lookahead>=k;){for(K=T.strstart,B=T.lookahead-(k-1);T.ins_h=(T.ins_h<>>=k=d>>>24,L-=k,(k=d>>>16&255)===0)a[R++]=65535&d;else{if(!(16&k)){if((64&k)==0){d=I[(65535&d)+(j&(1<>>=k,L-=k),L<15&&(j+=F[q++]<>>=k=d>>>24,L-=k,!(16&(k=d>>>16&255))){if((64&k)==0){d=A[(65535&d)+(j&(1<>>=k,L-=k,(k=R-W)>3,j&=(1<<(L-=s<<3))-1,G.next_in=q,G.next_out=R,G.avail_in=q>>24&255)+(S>>>8&65280)+((65280&S)<<8)+((255&S)<<24)}function j(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new G.Buf16(320),this.work=new G.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function L(S){var h;return S&&S.state?(h=S.state,S.total_in=S.total_out=h.total=0,S.msg="",h.wrap&&(S.adler=1&h.wrap),h.mode=C,h.last=0,h.havedict=0,h.dmax=32768,h.head=null,h.hold=0,h.bits=0,h.lencode=h.lendyn=new G.Buf32(H),h.distcode=h.distdyn=new G.Buf32(O),h.sane=1,h.back=-1,E):D}function I(S){var h;return S&&S.state?((h=S.state).wsize=0,h.whave=0,h.wnext=0,L(S)):D}function A(S,h){var F,a;return S&&S.state?(a=S.state,h<0?(F=0,h=-h):(F=1+(h>>4),h<48&&(h&=15)),h&&(h<8||15=m.wsize?(G.arraySet(m.window,h,F-m.wsize,m.wsize,0),m.wnext=0,m.whave=m.wsize):(a<(U0=m.wsize-m.wnext)&&(U0=a),G.arraySet(m.window,h,F-a,U0,m.wnext),(a-=U0)?(G.arraySet(m.window,h,F-a,a,0),m.wnext=a,m.whave=m.wsize):(m.wnext+=U0,m.wnext===m.wsize&&(m.wnext=0),m.whave>>8&255,F.check=Q(F.check,M,2,0),_=i=0,F.mode=2;break}if(F.flags=0,F.head&&(F.head.done=!1),!(1&F.wrap)||(((255&i)<<8)+(i>>8))%31){S.msg="incorrect header check",F.mode=30;break}if((15&i)!=8){S.msg="unknown compression method",F.mode=30;break}if(_-=4,V=8+(15&(i>>>=4)),F.wbits===0)F.wbits=V;else if(V>F.wbits){S.msg="invalid window size",F.mode=30;break}F.dmax=1<>8&1),512&F.flags&&(M[0]=255&i,M[1]=i>>>8&255,F.check=Q(F.check,M,2,0)),_=i=0,F.mode=3;case 3:for(;_<32;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}F.head&&(F.head.time=i),512&F.flags&&(M[0]=255&i,M[1]=i>>>8&255,M[2]=i>>>16&255,M[3]=i>>>24&255,F.check=Q(F.check,M,4,0)),_=i=0,F.mode=4;case 4:for(;_<16;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}F.head&&(F.head.xflags=255&i,F.head.os=i>>8),512&F.flags&&(M[0]=255&i,M[1]=i>>>8&255,F.check=Q(F.check,M,2,0)),_=i=0,F.mode=5;case 5:if(1024&F.flags){for(;_<16;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}F.length=i,F.head&&(F.head.extra_len=i),512&F.flags&&(M[0]=255&i,M[1]=i>>>8&255,F.check=Q(F.check,M,2,0)),_=i=0}else F.head&&(F.head.extra=null);F.mode=6;case 6:if(1024&F.flags&&($0<(Z0=F.length)&&(Z0=$0),Z0&&(F.head&&(V=F.head.extra_len-F.length,F.head.extra||(F.head.extra=new Array(F.head.extra_len)),G.arraySet(F.head.extra,a,m,Z0,V)),512&F.flags&&(F.check=Q(F.check,a,Z0,m)),$0-=Z0,m+=Z0,F.length-=Z0),F.length))break U;F.length=0,F.mode=7;case 7:if(2048&F.flags){if($0===0)break U;for(Z0=0;V=a[m+Z0++],F.head&&V&&F.length<65536&&(F.head.name+=String.fromCharCode(V)),V&&Z0<$0;);if(512&F.flags&&(F.check=Q(F.check,a,Z0,m)),$0-=Z0,m+=Z0,V)break U}else F.head&&(F.head.name=null);F.length=0,F.mode=8;case 8:if(4096&F.flags){if($0===0)break U;for(Z0=0;V=a[m+Z0++],F.head&&V&&F.length<65536&&(F.head.comment+=String.fromCharCode(V)),V&&Z0<$0;);if(512&F.flags&&(F.check=Q(F.check,a,Z0,m)),$0-=Z0,m+=Z0,V)break U}else F.head&&(F.head.comment=null);F.mode=9;case 9:if(512&F.flags){for(;_<16;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}if(i!==(65535&F.check)){S.msg="header crc mismatch",F.mode=30;break}_=i=0}F.head&&(F.head.hcrc=F.flags>>9&1,F.head.done=!0),S.adler=F.check=0,F.mode=12;break;case 10:for(;_<32;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}S.adler=F.check=X(i),_=i=0,F.mode=11;case 11:if(F.havedict===0)return S.next_out=J0,S.avail_out=I0,S.next_in=m,S.avail_in=$0,F.hold=i,F.bits=_,2;S.adler=F.check=1,F.mode=12;case 12:if(h===5||h===6)break U;case 13:if(F.last){i>>>=7&_,_-=7&_,F.mode=27;break}for(;_<3;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}switch(F.last=1&i,_-=1,3&(i>>>=1)){case 0:F.mode=14;break;case 1:if(s(F),F.mode=20,h!==6)break;i>>>=2,_-=2;break U;case 2:F.mode=17;break;case 3:S.msg="invalid block type",F.mode=30}i>>>=2,_-=2;break;case 14:for(i>>>=7&_,_-=7&_;_<32;){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}if((65535&i)!=(i>>>16^65535)){S.msg="invalid stored block lengths",F.mode=30;break}if(F.length=65535&i,_=i=0,F.mode=15,h===6)break U;case 15:F.mode=16;case 16:if(Z0=F.length){if($0>>=5,_-=5,F.ndist=1+(31&i),i>>>=5,_-=5,F.ncode=4+(15&i),i>>>=4,_-=4,286>>=3,_-=3}for(;F.have<19;)F.lens[x[F.have++]]=0;if(F.lencode=F.lendyn,F.lenbits=7,T={bits:F.lenbits},t=z(0,F.lens,0,19,F.lencode,0,F.work,T),F.lenbits=T.bits,t){S.msg="invalid code lengths set",F.mode=30;break}F.have=0,F.mode=19;case 19:for(;F.have>>16&255,f=65535&B,!((N=B>>>24)<=_);){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}if(f<16)i>>>=N,_-=N,F.lens[F.have++]=f;else{if(f===16){for(K=N+2;_>>=N,_-=N,F.have===0){S.msg="invalid bit length repeat",F.mode=30;break}V=F.lens[F.have-1],Z0=3+(3&i),i>>>=2,_-=2}else if(f===17){for(K=N+3;_>>=N)),i>>>=3,_-=3}else{for(K=N+7;_>>=N)),i>>>=7,_-=7}if(F.have+Z0>F.nlen+F.ndist){S.msg="invalid bit length repeat",F.mode=30;break}for(;Z0--;)F.lens[F.have++]=V}}if(F.mode===30)break;if(F.lens[256]===0){S.msg="invalid code -- missing end-of-block",F.mode=30;break}if(F.lenbits=9,T={bits:F.lenbits},t=z(R,F.lens,0,F.nlen,F.lencode,0,F.work,T),F.lenbits=T.bits,t){S.msg="invalid literal/lengths set",F.mode=30;break}if(F.distbits=6,F.distcode=F.distdyn,T={bits:F.distbits},t=z(W,F.lens,F.nlen,F.ndist,F.distcode,0,F.work,T),F.distbits=T.bits,t){S.msg="invalid distances set",F.mode=30;break}if(F.mode=20,h===6)break U;case 20:F.mode=21;case 21:if(6<=$0&&258<=I0){S.next_out=J0,S.avail_out=I0,S.next_in=m,S.avail_in=$0,F.hold=i,F.bits=_,q(S,n),J0=S.next_out,U0=S.output,I0=S.avail_out,m=S.next_in,a=S.input,$0=S.avail_in,i=F.hold,_=F.bits,F.mode===12&&(F.back=-1);break}for(F.back=0;c=(B=F.lencode[i&(1<>>16&255,f=65535&B,!((N=B>>>24)<=_);){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}if(c&&(240&c)==0){for(v=N,b=c,e=f;c=(B=F.lencode[e+((i&(1<>v)])>>>16&255,f=65535&B,!(v+(N=B>>>24)<=_);){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}i>>>=v,_-=v,F.back+=v}if(i>>>=N,_-=N,F.back+=N,F.length=f,c===0){F.mode=26;break}if(32&c){F.back=-1,F.mode=12;break}if(64&c){S.msg="invalid literal/length code",F.mode=30;break}F.extra=15&c,F.mode=22;case 22:if(F.extra){for(K=F.extra;_>>=F.extra,_-=F.extra,F.back+=F.extra}F.was=F.length,F.mode=23;case 23:for(;c=(B=F.distcode[i&(1<>>16&255,f=65535&B,!((N=B>>>24)<=_);){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}if((240&c)==0){for(v=N,b=c,e=f;c=(B=F.distcode[e+((i&(1<>v)])>>>16&255,f=65535&B,!(v+(N=B>>>24)<=_);){if($0===0)break U;$0--,i+=a[m++]<<_,_+=8}i>>>=v,_-=v,F.back+=v}if(i>>>=N,_-=N,F.back+=N,64&c){S.msg="invalid distance code",F.mode=30;break}F.offset=f,F.extra=15&c,F.mode=24;case 24:if(F.extra){for(K=F.extra;_>>=F.extra,_-=F.extra,F.back+=F.extra}if(F.offset>F.dmax){S.msg="invalid distance too far back",F.mode=30;break}F.mode=25;case 25:if(I0===0)break U;if(Z0=n-I0,F.offset>Z0){if((Z0=F.offset-Z0)>F.whave&&F.sane){S.msg="invalid distance too far back",F.mode=30;break}p=Z0>F.wnext?(Z0-=F.wnext,F.wsize-Z0):F.wnext-Z0,Z0>F.length&&(Z0=F.length),P=F.window}else P=U0,p=J0-F.offset,Z0=F.length;for(I0g?(k=p[P+O[h]],_[r+O[h]]):(k=96,0),j=1<>J0)+(L-=j)]=d<<24|k<<16|s|0,L!==0;);for(j=1<>=1;if(j!==0?(i&=j-1,i+=j):i=0,h++,--n[S]==0){if(S===a)break;S=W[E+O[h]]}if(U0>>7)]}function r(B,M){B.pending_buf[B.pending++]=255&M,B.pending_buf[B.pending++]=M>>>8&255}function n(B,M,x){B.bi_valid>X-x?(B.bi_buf|=M<>X-B.bi_valid,B.bi_valid+=x-X):(B.bi_buf|=M<>>=1,x<<=1,0<--M;);return x>>>1}function P(B,M,x){var l,u,Q0=new Array(O+1),w0=0;for(l=1;l<=O;l++)Q0[l]=w0=w0+x[l-1]<<1;for(u=0;u<=M;u++){var K0=B[2*u+1];K0!==0&&(B[2*u]=p(Q0[K0]++,K0))}}function N(B){var M;for(M=0;M>1;1<=x;x--)v(B,Q0,x);for(u=L0;x=B.heap[1],B.heap[1]=B.heap[B.heap_len--],v(B,Q0,1),l=B.heap[1],B.heap[--B.heap_max]=x,B.heap[--B.heap_max]=l,Q0[2*u]=Q0[2*x]+Q0[2*l],B.depth[u]=(B.depth[x]>=B.depth[l]?B.depth[x]:B.depth[l])+1,Q0[2*x+1]=Q0[2*l+1]=u,B.heap[1]=u++,v(B,Q0,1),2<=B.heap_len;);B.heap[--B.heap_max]=B.heap[1],function(H0,v0){var j1,l0,t1,D0,A2,z6,K1=v0.dyn_tree,N$=v0.max_code,H7=v0.stat_desc.static_tree,j7=v0.stat_desc.has_stree,z7=v0.stat_desc.extra_bits,R$=v0.stat_desc.extra_base,e1=v0.stat_desc.max_length,P2=0;for(D0=0;D0<=O;D0++)H0.bl_count[D0]=0;for(K1[2*H0.heap[H0.heap_max]+1]=0,j1=H0.heap_max+1;j1>=7;u>>=1)if(1&M0&&K0.dyn_ltree[2*L0]!==0)return w;if(K0.dyn_ltree[18]!==0||K0.dyn_ltree[20]!==0||K0.dyn_ltree[26]!==0)return Q;for(L0=32;L0>>3,(Q0=B.static_len+3+7>>>3)<=u&&(u=Q0)):u=Q0=x+5,x+4<=u&&M!==-1?K(B,M,x,l):B.strategy===4||Q0===u?(n(B,2+(l?1:0),3),b(B,q0,S)):(n(B,4+(l?1:0),3),function(K0,L0,M0,H0){var v0;for(n(K0,L0-257,5),n(K0,M0-1,5),n(K0,H0-4,4),v0=0;v0>>8&255,B.pending_buf[B.d_buf+2*B.last_lit+1]=255&M,B.pending_buf[B.l_buf+B.last_lit]=255&x,B.last_lit++,M===0?B.dyn_ltree[2*x]++:(B.matches++,M--,B.dyn_ltree[2*(F[x]+W+1)]++,B.dyn_dtree[2*_(M)]++),B.last_lit===B.lit_bufsize-1},J._tr_align=function(B){n(B,2,3),Z0(B,L,q0),function(M){M.bi_valid===16?(r(M,M.bi_buf),M.bi_buf=0,M.bi_valid=0):8<=M.bi_valid&&(M.pending_buf[M.pending++]=255&M.bi_buf,M.bi_buf>>=8,M.bi_valid-=8)}(B)}},{"../utils/common":41}],53:[function(Y,Z,J){Z.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(Y,Z,J){(function(G){(function(w,Q){if(!w.setImmediate){var q,z,R,W,E=1,D={},C=!1,H=w.document,O=Object.getPrototypeOf&&Object.getPrototypeOf(w);O=O&&O.setTimeout?O:w,q={}.toString.call(w.process)==="[object process]"?function(I){j0.nextTick(function(){j(I)})}:function(){if(w.postMessage&&!w.importScripts){var I=!0,A=w.onmessage;return w.onmessage=function(){I=!1},w.postMessage("","*"),w.onmessage=A,I}}()?(W="setImmediate$"+Math.random()+"$",w.addEventListener?w.addEventListener("message",L,!1):w.attachEvent("onmessage",L),function(I){w.postMessage(W+I,"*")}):w.MessageChannel?((R=new MessageChannel).port1.onmessage=function(I){j(I.data)},function(I){R.port2.postMessage(I)}):H&&("onreadystatechange"in H.createElement("script"))?(z=H.documentElement,function(I){var A=H.createElement("script");A.onreadystatechange=function(){j(I),A.onreadystatechange=null,z.removeChild(A),A=null},z.appendChild(A)}):function(I){setTimeout(j,0,I)},O.setImmediate=function(I){typeof I!="function"&&(I=new Function(""+I));for(var A=new Array(arguments.length-1),y=0;y":">"};function $(Y){return Y&&Y.replace?Y.replace(/([&"<>'])/g,function(Z,J){return U[J]}):Y}return M9=$,M9}var cZ;function tq(){if(cZ)return Z2.exports;cZ=1;var U=oq(),$=m9().Stream,Y=" ";function Z(z,R){if(typeof R!=="object")R={indent:R};var W=R.stream?new $:null,E="",D=!1,C=!R.indent?"":R.indent===!0?Y:R.indent,H=!0;function O(A){if(!H)A();else j0.nextTick(A)}function X(A,y){if(y!==void 0)E+=y;if(A&&!D)W=W||new $,D=!0;if(A&&D){var g=E;O(function(){W.emit("data",g)}),E=""}}function j(A,y){Q(X,w(A,C,C?1:0),y)}function L(){if(W){var A=E;O(function(){W.emit("data",A),W.emit("end"),W.readable=!1,W.emit("close")})}}function I(A){var y=A.encoding||"UTF-8",g={version:"1.0",encoding:y};if(A.standalone)g.standalone=A.standalone;j({"?xml":{_attr:g}}),E=E.replace("/>","?>")}if(O(function(){H=!1}),R.declaration)I(R.declaration);if(z&&z.forEach)z.forEach(function(A,y){var g;if(y+1===z.length)g=L;j(A,g)});else j(z,L);if(W)return W.readable=!0,W;return E}function J(){var z=Array.prototype.slice.call(arguments),R={_elem:w(z)};return R.push=function(W){if(!this.append)throw new Error("not assigned to a parent!");var E=this,D=this._elem.indent;Q(this.append,w(W,D,this._elem.icount+(D?1:0)),function(){E.append(!0)})},R.close=function(W){if(W!==void 0)this.push(W);if(this.end)this.end()},R}function G(z,R){return new Array(R||0).join(z||"")}function w(z,R,W){W=W||0;var E=G(R,W),D,C=z,H=!1;if(typeof z==="object"){var O=Object.keys(z);if(D=O[0],C=z[D],C&&C._elem)return C._elem.name=D,C._elem.icount=W,C._elem.indent=R,C._elem.indents=E,C._elem.interrupt=C,C._elem}var X=[],j=[],L;function I(A){var y=Object.keys(A);y.forEach(function(g){X.push(q(g,A[g]))})}switch(typeof C){case"object":if(C===null)break;if(C._attr)I(C._attr);if(C._cdata)j.push(("/g,"]]]]>")+"]]>");if(C.forEach){if(L=!1,j.push(""),C.forEach(function(A){if(typeof A=="object"){var y=Object.keys(A)[0];if(y=="_attr")I(A._attr);else j.push(w(A,R,W+1))}else j.pop(),L=!0,j.push(U(A))}),!L)j.push("")}break;default:j.push(U(C))}return{name:D,interrupt:H,attributes:X,content:j,icount:W,indents:E,indent:R}}function Q(z,R,W){if(typeof R!="object")return z(!1,R);var E=R.interrupt?1:R.content.length;function D(){while(R.content.length){var H=R.content.shift();if(H===void 0)continue;if(C(H))return;Q(z,H)}if(z(!1,(E>1?R.indents:"")+(R.name?"":"")+(R.indent&&!W?` -`:"")),W)W()}function C(H){if(H.interrupt)return H.interrupt.append=z,H.interrupt.end=D,H.interrupt=!1,z(!0),!0;return!1}if(z(!1,R.indents+(R.name?"<"+R.name:"")+(R.attributes.length?" "+R.attributes.join(" "):"")+(E?R.name?">":"":R.name?"/>":"")+(R.indent&&E>1?` -`:"")),!E)return z(!1,R.indent?` -`:"");if(!C(R))D()}function q(z,R){return z+'="'+U(R)+'"'}return Z2.exports=Z,Z2.exports.element=Z2.exports.Element=J,Z2.exports}var eq=tq(),F0=g9(eq),Q2=0,W9=32,UX=32,$X=(U,$)=>{let Y=$.replace(/-/g,"");if(Y.length!==UX)throw new Error(`Error: Cannot extract GUID from font filename: ${$}`);let J=Y.replace(/(..)/g,"$1 ").trim().split(" ").map((q)=>parseInt(q,16));J.reverse();let w=U.slice(Q2,W9).map((q,z)=>q^J[z%J.length]),Q=new Uint8Array(Q2+w.length+Math.max(0,U.length-W9));return Q.set(U.slice(0,Q2)),Q.set(w,Q2),Q.set(U.slice(W9),Q2+w.length),Q};class H6{format(U,$={stack:[]}){let Y=U.prepForXml($);if(Y)return Y;else throw Error("XMLComponent did not format correctly")}}class j${replace(U,$,Y){let Z=U;return $.forEach((J,G)=>{Z=Z.replace(new RegExp(`{${J.fileName}}`,"g"),(Y+G).toString())}),Z}getMediaData(U,$){return $.Array.filter((Y)=>U.search(`{${Y.fileName}}`)>0)}}class K7{replace(U,$){let Y=U;for(let Z of $)Y=Y.replace(new RegExp(`{${Z.reference}-${Z.instance}}`,"g"),Z.numId.toString());return Y}}class w7{constructor(){Y0(this,"formatter"),Y0(this,"imageReplacer"),Y0(this,"numberingReplacer"),this.formatter=new H6,this.imageReplacer=new j$,this.numberingReplacer=new K7}compile(U,$,Y=[]){let Z=new c1,J=this.xmlifyFile(U,$),G=new Map(Object.entries(J));for(let[,w]of G)if(Array.isArray(w))for(let Q of w)Z.file(Q.path,B2(Q.data));else Z.file(w.path,B2(w.data));for(let w of Y)Z.file(w.path,B2(w.data));for(let w of U.Media.Array)if(w.type!=="svg")Z.file(`word/media/${w.fileName}`,w.data);else Z.file(`word/media/${w.fileName}`,w.data),Z.file(`word/media/${w.fallback.fileName}`,w.fallback.data);for(let{data:w,name:Q,fontKey:q}of U.FontTable.fontOptionsWithKey){let[z]=Q.split(".");Z.file(`word/fonts/${z}.odttf`,$X(w,q))}return Z}xmlifyFile(U,$){let Y=U.Document.Relationships.RelationshipCount+1,Z=F0(this.formatter.format(U.Document.View,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),J=U.Comments.Relationships.RelationshipCount+1,G=F0(this.formatter.format(U.Comments,{viewWrapper:{View:U.Comments,Relationships:U.Comments.Relationships},file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),w=U.FootNotes.Relationships.RelationshipCount+1,Q=F0(this.formatter.format(U.FootNotes.View,{viewWrapper:U.FootNotes,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),q=this.imageReplacer.getMediaData(Z,U.Media),z=this.imageReplacer.getMediaData(G,U.Media),R=this.imageReplacer.getMediaData(Q,U.Media);return{Relationships:{data:(()=>{return q.forEach((W,E)=>{U.Document.Relationships.addRelationship(Y+E,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),U.Document.Relationships.addRelationship(U.Document.Relationships.RelationshipCount+1,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable","fontTable.xml"),F0(this.formatter.format(U.Document.Relationships,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/document.xml.rels"},Document:{data:(()=>{let W=this.imageReplacer.replace(Z,q,Y);return this.numberingReplacer.replace(W,U.Numbering.ConcreteNumbering)})(),path:"word/document.xml"},Styles:{data:(()=>{let W=F0(this.formatter.format(U.Styles,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}});return this.numberingReplacer.replace(W,U.Numbering.ConcreteNumbering)})(),path:"word/styles.xml"},Properties:{data:F0(this.formatter.format(U.CoreProperties,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/core.xml"},Numbering:{data:F0(this.formatter.format(U.Numbering,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/numbering.xml"},FileRelationships:{data:F0(this.formatter.format(U.FileRelationships,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:"_rels/.rels"},HeaderRelationships:U.Headers.map((W,E)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}});return this.imageReplacer.getMediaData(D,U.Media).forEach((H,O)=>{W.Relationships.addRelationship(O,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${H.fileName}`)}),{data:F0(this.formatter.format(W.Relationships,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:`word/_rels/header${E+1}.xml.rels`}}),FooterRelationships:U.Footers.map((W,E)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}});return this.imageReplacer.getMediaData(D,U.Media).forEach((H,O)=>{W.Relationships.addRelationship(O,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${H.fileName}`)}),{data:F0(this.formatter.format(W.Relationships,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:`word/_rels/footer${E+1}.xml.rels`}}),Headers:U.Headers.map((W,E)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),C=this.imageReplacer.getMediaData(D,U.Media),H=this.imageReplacer.replace(D,C,0);return{data:this.numberingReplacer.replace(H,U.Numbering.ConcreteNumbering),path:`word/header${E+1}.xml`}}),Footers:U.Footers.map((W,E)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),C=this.imageReplacer.getMediaData(D,U.Media),H=this.imageReplacer.replace(D,C,0);return{data:this.numberingReplacer.replace(H,U.Numbering.ConcreteNumbering),path:`word/footer${E+1}.xml`}}),ContentTypes:{data:F0(this.formatter.format(U.ContentTypes,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:"[Content_Types].xml"},CustomProperties:{data:F0(this.formatter.format(U.CustomProperties,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/custom.xml"},AppProperties:{data:F0(this.formatter.format(U.AppProperties,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/app.xml"},FootNotes:{data:(()=>{let W=this.imageReplacer.replace(Q,R,w);return this.numberingReplacer.replace(W,U.Numbering.ConcreteNumbering)})(),path:"word/footnotes.xml"},FootNotesRelationships:{data:(()=>{return R.forEach((W,E)=>{U.FootNotes.Relationships.addRelationship(w+E,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),F0(this.formatter.format(U.FootNotes.Relationships,{viewWrapper:U.FootNotes,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/footnotes.xml.rels"},Endnotes:{data:F0(this.formatter.format(U.Endnotes.View,{viewWrapper:U.Endnotes,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:"word/endnotes.xml"},EndnotesRelationships:{data:F0(this.formatter.format(U.Endnotes.Relationships,{viewWrapper:U.Endnotes,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}),path:"word/_rels/endnotes.xml.rels"},Settings:{data:F0(this.formatter.format(U.Settings,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/settings.xml"},Comments:{data:(()=>{let W=this.imageReplacer.replace(G,z,J);return this.numberingReplacer.replace(W,U.Numbering.ConcreteNumbering)})(),path:"word/comments.xml"},CommentsRelationships:{data:(()=>{return z.forEach((W,E)=>{U.Comments.Relationships.addRelationship(J+E,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),F0(this.formatter.format(U.Comments.Relationships,{viewWrapper:{View:U.Comments,Relationships:U.Comments.Relationships},file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/comments.xml.rels"},FontTable:{data:F0(this.formatter.format(U.FontTable.View,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/fontTable.xml"},FontTableRelationships:{data:(()=>F0(this.formatter.format(U.FontTable.Relationships,{viewWrapper:U.Document,file:U,stack:[]}),{indent:$,declaration:{encoding:"UTF-8"}}))(),path:"word/_rels/fontTable.xml.rels"}}}}var B7={NONE:"",WITH_2_BLANKS:" ",WITH_4_BLANKS:" ",WITH_TAB:"\t"},mZ=(U)=>U===!0?B7.WITH_2_BLANKS:U===!1?void 0:U,q7=class U{static pack($,Y,Z){return b9(this,arguments,function*(J,G,w,Q=[]){return this.compiler.compile(J,mZ(w),Q).generateAsync({type:G,mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",compression:"DEFLATE"})})}static toString($,Y,Z=[]){return U.pack($,"string",Y,Z)}static toBuffer($,Y,Z=[]){return U.pack($,"nodebuffer",Y,Z)}static toBase64String($,Y,Z=[]){return U.pack($,"base64",Y,Z)}static toBlob($,Y,Z=[]){return U.pack($,"blob",Y,Z)}static toArrayBuffer($,Y,Z=[]){return U.pack($,"arraybuffer",Y,Z)}static toStream($,Y,Z=[]){let J=new rq.Stream;return this.compiler.compile($,mZ(Y),Z).generateAsync({type:"nodebuffer",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",compression:"DEFLATE"}).then((w)=>{J.emit("data",w),J.emit("end")}),J}};Y0(q7,"compiler",new w7);var YX=q7,ZX=new H6,j6=(U)=>{return U6.xml2js(U,{compact:!1,captureSpacesBetweenElements:!0})},X7=(U)=>{var $;return($=j6(F0(ZX.format(new a1({text:U})))).elements[0].elements)!=null?$:[]},I7=(U)=>R0(W0({},U),{attributes:{"xml:space":"preserve"}}),z$=(U,$)=>{var Y,Z;return(Z=(Y=U.elements)==null?void 0:Y.filter((J)=>J.name===$)[0].elements)!=null?Z:[]},h1=(U,$,Y)=>{let Z=z$(U,"Types");if(Z.some((G)=>{var w,Q;return G.type==="element"&&G.name==="Default"&&((w=G==null?void 0:G.attributes)==null?void 0:w.ContentType)===$&&((Q=G==null?void 0:G.attributes)==null?void 0:Q.Extension)===Y}))return;Z.push({attributes:{ContentType:$,Extension:Y},name:"Default",type:"element"})},QX=(U)=>{let $=parseInt(U.substring(3),10);return isNaN($)?0:$},JX=(U)=>{return z$(U,"Relationships").map((Y)=>{var Z,J,G;return QX((G=(J=(Z=Y.attributes)==null?void 0:Z.Id)==null?void 0:J.toString())!=null?G:"")}).reduce((Y,Z)=>Math.max(Y,Z),0)+1},lZ=(U,$,Y,Z,J)=>{let G=z$(U,"Relationships");return G.push({attributes:{Id:`rId${$}`,Type:Y,Target:Z,TargetMode:J},name:"Relationship",type:"element"}),G};class L7 extends Error{constructor(U){super(`Token ${U} not found`);this.name="TokenNotFoundError"}}var GX=(U,$)=>{var Y,Z,J,G;for(let w=0;w<((Y=U.elements)!=null?Y:[]).length;w++){let Q=U.elements[w];if(Q.type==="element"&&Q.name==="w:r"){let q=((Z=Q.elements)!=null?Z:[]).filter((z)=>z.type==="element"&&z.name==="w:t");for(let z of q){if(!((J=z.elements)==null?void 0:J[0]))continue;if((G=z.elements[0].text)==null?void 0:G.includes($))return w}}}throw new L7($)},KX=(U,$)=>{var Y,Z;let J=-1,G=(Z=(Y=U.elements)==null?void 0:Y.map((q,z)=>{var R,W,E;if(J!==-1)return q;if(q.type==="element"&&q.name==="w:t"){let C=((E=(W=(R=q.elements)==null?void 0:R[0])==null?void 0:W.text)!=null?E:"").split($),H=C.map((O)=>R0(W0(W0({},q),I7(q)),{elements:X7(O)}));if(C.length>1)J=z;return H}else return q}).flat())!=null?Z:[],w=R0(W0({},JSON.parse(JSON.stringify(U))),{elements:G.slice(0,J+1)}),Q=R0(W0({},JSON.parse(JSON.stringify(U))),{elements:G.slice(J+1)});return{left:w,right:Q}},J2={START:0,MIDDLE:1,END:2},wX=({paragraphElement:U,renderedParagraph:$,originalText:Y,replacementText:Z})=>{let J=$.text.indexOf(Y),G=J+Y.length-1,w=J2.START;for(let Q of $.runs)for(let{text:q,index:z,start:R,end:W}of Q.parts)switch(w){case J2.START:if(J>=R&&J<=W){let E=J-R,D=Math.min(G,W)-R,C=Q.text.substring(E,D+1);if(C==="")continue;let H=q.replace(C,Z);H9(U.elements[Q.index].elements[z],H),w=J2.MIDDLE;continue}break;case J2.MIDDLE:if(G<=W){let E=q.substring(G-R+1);H9(U.elements[Q.index].elements[z],E);let D=U.elements[Q.index].elements[z];U.elements[Q.index].elements[z]=I7(D),w=J2.END}else H9(U.elements[Q.index].elements[z],"");break}return U},H9=(U,$)=>{return U.elements=X7($),U},BX=(U)=>{if(U.element.name!=="w:p")throw new Error(`Invalid node type: ${U.element.name}`);if(!U.element.elements)return{text:"",runs:[],index:-1,pathToParagraph:[]};let $=0,Y=U.element.elements.map((J,G)=>({element:J,i:G})).filter(({element:J})=>J.name==="w:r").map(({element:J,i:G})=>{let w=qX(J,G,$);return $+=w.text.length,w}).filter((J)=>!!J);return{text:Y.reduce((J,G)=>J+G.text,""),runs:Y,index:U.index,pathToParagraph:V7(U)}},qX=(U,$,Y)=>{if(!U.elements)return{text:"",parts:[],index:-1,start:Y,end:Y};let Z=Y,J=U.elements.map((w,Q)=>{var q,z;return w.name==="w:t"&&w.elements&&w.elements.length>0?{text:(z=(q=w.elements[0].text)==null?void 0:q.toString())!=null?z:"",index:Q,start:Z,end:(()=>{var R,W;return Z+=((W=(R=w.elements[0].text)==null?void 0:R.toString())!=null?W:"").length-1,Z})()}:void 0}).filter((w)=>!!w).map((w)=>w);return{text:J.reduce((w,Q)=>w+Q.text,""),parts:J,index:$,start:Y,end:Z}},V7=(U)=>U.parent?[...V7(U.parent),U.index]:[U.index],aZ=(U)=>{var $,Y;return(Y=($=U.element.elements)==null?void 0:$.map((Z,J)=>({element:Z,index:J,parent:U})))!=null?Y:[]},M7=(U)=>{let $=[],Y=[...aZ({element:U,index:0,parent:void 0})],Z;while(Y.length>0){if(Z=Y.shift(),Z.element.name==="w:p")$=[...$,BX(Z)];Y.push(...aZ(Z))}return $},XX=(U,$)=>M7(U).filter((Y)=>Y.text.includes($)),IX=new H6,j9="ɵ",LX=({json:U,patch:$,patchText:Y,context:Z,keepOriginalStyles:J=!0})=>{let G=XX(U,Y);if(G.length===0)return{element:U,didFindOccurrence:!1};for(let w of G){let Q=$.children.map((q)=>j6(F0(IX.format(q,Z)))).map((q)=>q.elements[0]);switch($.type){case y9.DOCUMENT:{let q=VX(U,w.pathToParagraph),z=MX(w.pathToParagraph);q.elements.splice(z,1,...Q);break}case y9.PARAGRAPH:default:{let q=W7(U,w.pathToParagraph);wX({paragraphElement:q,renderedParagraph:w,originalText:Y,replacementText:j9});let z=GX(q,j9),R=q.elements[z],{left:W,right:E}=KX(R,j9),D=Q,C=E;if(J){let H=R.elements.filter((O)=>O.type==="element"&&O.name==="w:rPr");D=Q.map((O)=>{var X;return R0(W0({},O),{elements:[...H,...(X=O.elements)!=null?X:[]]})}),C=R0(W0({},E),{elements:[...H,...E.elements]})}q.elements.splice(z,1,W,...D,C);break}}}return{element:U,didFindOccurrence:!0}},W7=(U,$)=>{let Y=U;for(let Z=1;Z<$.length;Z++){let J=$[Z];Y=Y.elements[J]}return Y},VX=(U,$)=>W7(U,$.slice(0,$.length-1)),MX=(U)=>U[U.length-1],y9={DOCUMENT:"file",PARAGRAPH:"paragraph"},pZ=new j$,WX=new Uint8Array([255,254]),HX=new Uint8Array([254,255]),iZ=(U,$)=>{if(U.length!==$.length)return!1;for(let Y=0;Yb9(null,[U],function*({outputType:$,data:Y,patches:Z,keepOriginalStyles:J,placeholderDelimiters:G={start:"{{",end:"}}"},recursive:w=!0}){var Q,q,z;let R=Y instanceof c1?Y:yield c1.loadAsync(Y),W=new Map,E={Media:new M6},D=new Map,C=[],H=[],O=!1,X=new Map;for(let[L,I]of Object.entries(R.files)){let A=yield I.async("uint8array"),y=A.slice(0,2);if(iZ(y,WX)||iZ(y,HX)){X.set(L,A);continue}if(!L.endsWith(".xml")&&!L.endsWith(".rels")){X.set(L,A);continue}let g=j6(yield I.async("text"));if(L==="word/document.xml"){let d=(Q=g.elements)==null?void 0:Q.find((k)=>k.name==="w:document");if(d&&d.attributes){for(let k of["mc","wp","r","w15","m"])d.attributes[`xmlns:${k}`]=p2[k];d.attributes["mc:Ignorable"]=`${d.attributes["mc:Ignorable"]||""} w15`.trim()}}if(L.startsWith("word/")&&!L.endsWith(".xml.rels")){let d={file:E,viewWrapper:{Relationships:{addRelationship:(S,h,F,a)=>{H.push({key:L,hyperlink:{id:S,link:F}})}}},stack:[]};if(W.set(L,d),!(G==null?void 0:G.start.trim())||!(G==null?void 0:G.end.trim()))throw new Error("Both start and end delimiters must be non-empty strings.");let{start:k,end:s}=G;for(let[S,h]of Object.entries(Z)){let F=`${k}${S}${s}`;while(!0){let{didFindOccurrence:a}=LX({json:g,patch:R0(W0({},h),{children:h.children.map((U0)=>{if(U0 instanceof K6){let m=new _1(U0.options.children,R2());return H.push({key:L,hyperlink:{id:m.linkId,link:U0.options.link}}),m}else return U0})}),patchText:F,context:d,keepOriginalStyles:J});if(!w||!a)break}}let q0=pZ.getMediaData(JSON.stringify(g),d.file.Media);if(q0.length>0)O=!0,C.push({key:L,mediaDatas:q0})}D.set(L,g)}for(let{key:L,mediaDatas:I}of C){let A=`word/_rels/${L.split("/").pop()}.rels`,y=(q=D.get(A))!=null?q:rZ();D.set(A,y);let g=JX(y),d=pZ.replace(JSON.stringify(D.get(L)),I,g);D.set(L,JSON.parse(d));for(let k=0;k{return U6.js2xml(U,{attributeValueFn:(Y)=>String(Y).replace(/&(?!amp;|lt;|gt;|quot;|apos;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})},rZ=()=>({declaration:{attributes:{version:"1.0",encoding:"UTF-8",standalone:"yes"}},elements:[{type:"element",name:"Relationships",attributes:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},elements:[]}]}),FX=(U)=>b9(null,[U],function*({data:$}){let Y=$ instanceof c1?$:yield c1.loadAsync($),Z=new Set;for(let[J,G]of Object.entries(Y.files)){if(!J.endsWith(".xml")&&!J.endsWith(".rels"))continue;if(J.startsWith("word/")&&!J.endsWith(".xml.rels")){let w=j6(yield G.async("text"));M7(w).forEach((Q)=>NX(Q.text).forEach((q)=>Z.add(q)))}}return Array.from(Z)}),NX=(U)=>{var $;let Y=new RegExp("(?<=\\{\\{).+?(?=\\}\\})","gs");return($=U.match(Y))!=null?$:[]};if(typeof globalThis.Buffer==="undefined")globalThis.Buffer=G0;if(typeof globalThis.process==="undefined")globalThis.process=RX;globalThis.__bundles=globalThis.__bundles||{};globalThis.__bundles.docx=F$;})(); +Actual: `+P.attribValue);else{var v=P.tag,b=P.tags[P.tags.length-1]||P;if(v.ns===b.ns)v.ns=Object.create(b.ns);v.ns[f]=P.attribValue}P.attribList.push([P.attribName,P.attribValue])}else P.tag.attributes[P.attribName]=P.attribValue,S(P,"onattribute",{name:P.attribName,value:P.attribValue});P.attribName=P.attribValue=""}function i(P,R){if(P.opt.xmlns){var c=P.tag,f=U0(P.tagName);if(c.prefix=f.prefix,c.local=f.local,c.uri=c.ns[f.prefix]||"",c.prefix&&!c.uri)m(P,"Unbound namespace prefix: "+JSON.stringify(P.tagName)),c.uri=f.prefix;var v=P.tags[P.tags.length-1]||P;if(c.ns&&v.ns!==c.ns)Object.keys(c.ns).forEach(function(u){S(P,"onopennamespace",{prefix:u,uri:c.ns[u]})});for(var b=0,e=P.attribList.length;b",P.tagName="",P.state=E.SCRIPT;return}S(P,"onscript",P.script),P.script=""}var R=P.tags.length,c=P.tagName;if(!P.strict)c=c[P.looseCase]();var f=c;while(R--){var v=P.tags[R];if(v.name!==f)m(P,"Unexpected close tag");else break}if(R<0){m(P,"Unmatched closing tag: "+P.tagName),P.textNode+="",P.state=E.TEXT;return}P.tagName=c;var b=P.tags.length;while(b-- >R){var e=P.tag=P.tags.pop();P.tagName=P.tag.name,S(P,"onclosetag",P.tagName);var I={};for(var t in e.ns)I[t]=e.ns[t];var T=P.tags[P.tags.length-1]||P;if(P.opt.xmlns&&e.ns!==T.ns)Object.keys(e.ns).forEach(function(K){var q=e.ns[K];S(P,"onclosenamespace",{prefix:K,uri:q})})}if(R===0)P.closedRoot=!0;P.tagName=P.attribValue=P.attribName="",P.attribList.length=0,P.state=E.TEXT}function r(P){var R=P.entity,c=R.toLowerCase(),f,v="";if(P.ENTITIES[R])return P.ENTITIES[R];if(P.ENTITIES[c])return P.ENTITIES[c];if(R=c,R.charAt(0)==="#")if(R.charAt(1)==="x")R=R.slice(2),f=parseInt(R,16),v=f.toString(16);else R=R.slice(1),f=parseInt(R,10),v=f.toString(10);if(R=R.replace(/^0+/,""),isNaN(f)||v.toLowerCase()!==R)return m(P,"Invalid character entity"),"&"+P.entity+";";return String.fromCodePoint(f)}function n(P,R){if(R==="<")P.state=E.OPEN_WAKA,P.startTagPosition=P.position;else if(!L(R))m(P,"Non-whitespace before first tag."),P.textNode=R,P.state=E.TEXT}function Z0(P,R){var c="";if(R")S(R,"onsgmldeclaration",R.sgmlDecl),R.sgmlDecl="",R.state=E.TEXT;else if(A(f))R.state=E.SGML_DECL_QUOTED,R.sgmlDecl+=f;else R.sgmlDecl+=f;continue;case E.SGML_DECL_QUOTED:if(f===R.q)R.state=E.SGML_DECL,R.q="";R.sgmlDecl+=f;continue;case E.DOCTYPE:if(f===">")R.state=E.TEXT,S(R,"ondoctype",R.doctype),R.doctype=!0;else if(R.doctype+=f,f==="[")R.state=E.DOCTYPE_DTD;else if(A(f))R.state=E.DOCTYPE_QUOTED,R.q=f;continue;case E.DOCTYPE_QUOTED:if(R.doctype+=f,f===R.q)R.q="",R.state=E.DOCTYPE;continue;case E.DOCTYPE_DTD:if(R.doctype+=f,f==="]")R.state=E.DOCTYPE;else if(A(f))R.state=E.DOCTYPE_DTD_QUOTED,R.q=f;continue;case E.DOCTYPE_DTD_QUOTED:if(R.doctype+=f,f===R.q)R.state=E.DOCTYPE_DTD,R.q="";continue;case E.COMMENT:if(f==="-")R.state=E.COMMENT_ENDING;else R.comment+=f;continue;case E.COMMENT_ENDING:if(f==="-"){if(R.state=E.COMMENT_ENDED,R.comment=N(R.opt,R.comment),R.comment)S(R,"oncomment",R.comment);R.comment=""}else R.comment+="-"+f,R.state=E.COMMENT;continue;case E.COMMENT_ENDED:if(f!==">")m(R,"Malformed comment"),R.comment+="--"+f,R.state=E.COMMENT;else R.state=E.TEXT;continue;case E.CDATA:if(f==="]")R.state=E.CDATA_ENDING;else R.cdata+=f;continue;case E.CDATA_ENDING:if(f==="]")R.state=E.CDATA_ENDING_2;else R.cdata+="]"+f,R.state=E.CDATA;continue;case E.CDATA_ENDING_2:if(f===">"){if(R.cdata)S(R,"oncdata",R.cdata);S(R,"onclosecdata"),R.cdata="",R.state=E.TEXT}else if(f==="]")R.cdata+="]";else R.cdata+="]]"+f,R.state=E.CDATA;continue;case E.PROC_INST:if(f==="?")R.state=E.PROC_INST_ENDING;else if(L(f))R.state=E.PROC_INST_BODY;else R.procInstName+=f;continue;case E.PROC_INST_BODY:if(!R.procInstBody&&L(f))continue;else if(f==="?")R.state=E.PROC_INST_ENDING;else R.procInstBody+=f;continue;case E.PROC_INST_ENDING:if(f===">")S(R,"onprocessinginstruction",{name:R.procInstName,body:R.procInstBody}),R.procInstName=R.procInstBody="",R.state=E.TEXT;else R.procInstBody+="?"+f,R.state=E.PROC_INST_BODY;continue;case E.OPEN_TAG:if(g(V,f))R.tagName+=f;else if(J0(R),f===">")i(R);else if(f==="/")R.state=E.OPEN_TAG_SLASH;else{if(!L(f))m(R,"Invalid character in tag name");R.state=E.ATTRIB}continue;case E.OPEN_TAG_SLASH:if(f===">")i(R,!0),_(R);else m(R,"Forward-slash in opening tag not followed by >"),R.state=E.ATTRIB;continue;case E.ATTRIB:if(L(f))continue;else if(f===">")i(R);else if(f==="/")R.state=E.OPEN_TAG_SLASH;else if(g(O,f))R.attribName=f,R.attribValue="",R.state=E.ATTRIB_NAME;else m(R,"Invalid attribute name");continue;case E.ATTRIB_NAME:if(f==="=")R.state=E.ATTRIB_VALUE;else if(f===">")m(R,"Attribute without value"),R.attribValue=R.attribName,L0(R),i(R);else if(L(f))R.state=E.ATTRIB_NAME_SAW_WHITE;else if(g(V,f))R.attribName+=f;else m(R,"Invalid attribute name");continue;case E.ATTRIB_NAME_SAW_WHITE:if(f==="=")R.state=E.ATTRIB_VALUE;else if(L(f))continue;else if(m(R,"Attribute without value"),R.tag.attributes[R.attribName]="",R.attribValue="",S(R,"onattribute",{name:R.attribName,value:""}),R.attribName="",f===">")i(R);else if(g(O,f))R.attribName=f,R.state=E.ATTRIB_NAME;else m(R,"Invalid attribute name"),R.state=E.ATTRIB;continue;case E.ATTRIB_VALUE:if(L(f))continue;else if(A(f))R.q=f,R.state=E.ATTRIB_VALUE_QUOTED;else m(R,"Unquoted attribute value"),R.state=E.ATTRIB_VALUE_UNQUOTED,R.attribValue=f;continue;case E.ATTRIB_VALUE_QUOTED:if(f!==R.q){if(f==="&")R.state=E.ATTRIB_VALUE_ENTITY_Q;else R.attribValue+=f;continue}L0(R),R.q="",R.state=E.ATTRIB_VALUE_CLOSED;continue;case E.ATTRIB_VALUE_CLOSED:if(L(f))R.state=E.ATTRIB;else if(f===">")i(R);else if(f==="/")R.state=E.OPEN_TAG_SLASH;else if(g(O,f))m(R,"No whitespace between attributes"),R.attribName=f,R.attribValue="",R.state=E.ATTRIB_NAME;else m(R,"Invalid attribute name");continue;case E.ATTRIB_VALUE_UNQUOTED:if(!y(f)){if(f==="&")R.state=E.ATTRIB_VALUE_ENTITY_U;else R.attribValue+=f;continue}if(L0(R),f===">")i(R);else R.state=E.ATTRIB;continue;case E.CLOSE_TAG:if(!R.tagName)if(L(f))continue;else if(d(O,f))if(R.script)R.script+="")_(R);else if(g(V,f))R.tagName+=f;else if(R.script)R.script+="")_(R);else m(R,"Invalid characters in closing tag");continue;case E.TEXT_ENTITY:case E.ATTRIB_VALUE_ENTITY_Q:case E.ATTRIB_VALUE_ENTITY_U:var e,I;switch(R.state){case E.TEXT_ENTITY:e=E.TEXT,I="textNode";break;case E.ATTRIB_VALUE_ENTITY_Q:e=E.ATTRIB_VALUE_QUOTED,I="attribValue";break;case E.ATTRIB_VALUE_ENTITY_U:e=E.ATTRIB_VALUE_UNQUOTED,I="attribValue";break}if(f===";")R[I]+=r(R),R.entity="",R.state=e;else if(g(R.entity.length?M:j,f))R.entity+=f;else m(R,"Invalid character in entity name"),R[I]+="&"+R.entity+f,R.entity="",R.state=e;continue;default:throw Error(R,"Unknown state: "+R.state)}}if(R.position>=R.bufferCheckPosition)J(R);return R}if(!String.fromCodePoint)(function(){var P=String.fromCharCode,R=Math.floor,c=function(){var f=16384,v=[],b,e,I=-1,t=arguments.length;if(!t)return"";var T="";while(++I1114111||R(K)!==K)throw RangeError("Invalid code point: "+K);if(K<=65535)v.push(K);else K-=65536,b=(K>>10)+55296,e=K%1024+56320,v.push(b,e);if(I+1===t||v.length>f)T+=P.apply(null,v),v.length=0}return T};if(Object.defineProperty)Object.defineProperty(String,"fromCodePoint",{value:c,configurable:!0,writable:!0});else String.fromCodePoint=c})()})($)}(_8),_8}var n6,WZ;function l9(){if(WZ)return n6;return WZ=1,n6={isArray:function($){if(Array.isArray)return Array.isArray($);return Object.prototype.toString.call($)==="[object Array]"}},n6}var o6,HZ;function a9(){if(HZ)return o6;HZ=1;var $=l9().isArray;return o6={copyOptions:function(U){var Y,Z={};for(Y in U)if(U.hasOwnProperty(Y))Z[Y]=U[Y];return Z},ensureFlagExists:function(U,Y){if(!(U in Y)||typeof Y[U]!=="boolean")Y[U]=!1},ensureSpacesExists:function(U){if(!("spaces"in U)||typeof U.spaces!=="number"&&typeof U.spaces!=="string")U.spaces=0},ensureAlwaysArrayExists:function(U){if(!("alwaysArray"in U)||typeof U.alwaysArray!=="boolean"&&!$(U.alwaysArray))U.alwaysArray=!1},ensureKeyExists:function(U,Y){if(!(U+"Key"in Y)||typeof Y[U+"Key"]!=="string")Y[U+"Key"]=Y.compact?"_"+U:U},checkFnExists:function(U,Y){return U+"Fn"in Y}},o6}var t6,jZ;function FQ(){if(jZ)return t6;jZ=1;var $=GX(),U=a9(),Y=l9().isArray,Z,J;function G(V){return Z=U.copyOptions(V),U.ensureFlagExists("ignoreDeclaration",Z),U.ensureFlagExists("ignoreInstruction",Z),U.ensureFlagExists("ignoreAttributes",Z),U.ensureFlagExists("ignoreText",Z),U.ensureFlagExists("ignoreComment",Z),U.ensureFlagExists("ignoreCdata",Z),U.ensureFlagExists("ignoreDoctype",Z),U.ensureFlagExists("compact",Z),U.ensureFlagExists("alwaysChildren",Z),U.ensureFlagExists("addParent",Z),U.ensureFlagExists("trim",Z),U.ensureFlagExists("nativeType",Z),U.ensureFlagExists("nativeTypeAttributes",Z),U.ensureFlagExists("sanitize",Z),U.ensureFlagExists("instructionHasAttributes",Z),U.ensureFlagExists("captureSpacesBetweenElements",Z),U.ensureAlwaysArrayExists(Z),U.ensureKeyExists("declaration",Z),U.ensureKeyExists("instruction",Z),U.ensureKeyExists("attributes",Z),U.ensureKeyExists("text",Z),U.ensureKeyExists("comment",Z),U.ensureKeyExists("cdata",Z),U.ensureKeyExists("doctype",Z),U.ensureKeyExists("type",Z),U.ensureKeyExists("name",Z),U.ensureKeyExists("elements",Z),U.ensureKeyExists("parent",Z),U.checkFnExists("doctype",Z),U.checkFnExists("instruction",Z),U.checkFnExists("cdata",Z),U.checkFnExists("comment",Z),U.checkFnExists("text",Z),U.checkFnExists("instructionName",Z),U.checkFnExists("elementName",Z),U.checkFnExists("attributeName",Z),U.checkFnExists("attributeValue",Z),U.checkFnExists("attributes",Z),Z}function X(V){var j=Number(V);if(!isNaN(j))return j;var M=V.toLowerCase();if(M==="true")return!0;else if(M==="false")return!1;return V}function Q(V,j){var M;if(Z.compact){if(!J[Z[V+"Key"]]&&(Y(Z.alwaysArray)?Z.alwaysArray.indexOf(Z[V+"Key"])!==-1:Z.alwaysArray))J[Z[V+"Key"]]=[];if(J[Z[V+"Key"]]&&!Y(J[Z[V+"Key"]]))J[Z[V+"Key"]]=[J[Z[V+"Key"]]];if(V+"Fn"in Z&&typeof j==="string")j=Z[V+"Fn"](j,J);if(V==="instruction"&&(("instructionFn"in Z)||("instructionNameFn"in Z))){for(M in j)if(j.hasOwnProperty(M))if("instructionFn"in Z)j[M]=Z.instructionFn(j[M],M,J);else{var L=j[M];delete j[M],j[Z.instructionNameFn(M,L,J)]=L}}if(Y(J[Z[V+"Key"]]))J[Z[V+"Key"]].push(j);else J[Z[V+"Key"]]=j}else{if(!J[Z.elementsKey])J[Z.elementsKey]=[];var A={};if(A[Z.typeKey]=V,V==="instruction"){for(M in j)if(j.hasOwnProperty(M))break;if(A[Z.nameKey]="instructionNameFn"in Z?Z.instructionNameFn(M,j,J):M,Z.instructionHasAttributes){if(A[Z.attributesKey]=j[M][Z.attributesKey],"instructionFn"in Z)A[Z.attributesKey]=Z.instructionFn(A[Z.attributesKey],M,J)}else{if("instructionFn"in Z)j[M]=Z.instructionFn(j[M],M,J);A[Z.instructionKey]=j[M]}}else{if(V+"Fn"in Z)j=Z[V+"Fn"](j,J);A[Z[V+"Key"]]=j}if(Z.addParent)A[Z.parentKey]=J;J[Z.elementsKey].push(A)}}function B(V){if("attributesFn"in Z&&V)V=Z.attributesFn(V,J);if((Z.trim||("attributeValueFn"in Z)||("attributeNameFn"in Z)||Z.nativeTypeAttributes)&&V){var j;for(j in V)if(V.hasOwnProperty(j)){if(Z.trim)V[j]=V[j].trim();if(Z.nativeTypeAttributes)V[j]=X(V[j]);if("attributeValueFn"in Z)V[j]=Z.attributeValueFn(V[j],j,J);if("attributeNameFn"in Z){var M=V[j];delete V[j],V[Z.attributeNameFn(j,V[j],J)]=M}}}return V}function F(V){var j={};if(V.body&&(V.name.toLowerCase()==="xml"||Z.instructionHasAttributes)){var M=/([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g,L;while((L=M.exec(V.body))!==null)j[L[1]]=L[2]||L[3]||L[4];j=B(j)}if(V.name.toLowerCase()==="xml"){if(Z.ignoreDeclaration)return;if(J[Z.declarationKey]={},Object.keys(j).length)J[Z.declarationKey][Z.attributesKey]=j;if(Z.addParent)J[Z.declarationKey][Z.parentKey]=J}else{if(Z.ignoreInstruction)return;if(Z.trim)V.body=V.body.trim();var A={};if(Z.instructionHasAttributes&&Object.keys(j).length)A[V.name]={},A[V.name][Z.attributesKey]=j;else A[V.name]=V.body;Q("instruction",A)}}function z(V,j){var M;if(typeof V==="object")j=V.attributes,V=V.name;if(j=B(j),"elementNameFn"in Z)V=Z.elementNameFn(V,J);if(Z.compact){if(M={},!Z.ignoreAttributes&&j&&Object.keys(j).length){M[Z.attributesKey]={};var L;for(L in j)if(j.hasOwnProperty(L))M[Z.attributesKey][L]=j[L]}if(!(V in J)&&(Y(Z.alwaysArray)?Z.alwaysArray.indexOf(V)!==-1:Z.alwaysArray))J[V]=[];if(J[V]&&!Y(J[V]))J[V]=[J[V]];if(Y(J[V]))J[V].push(M);else J[V]=M}else{if(!J[Z.elementsKey])J[Z.elementsKey]=[];if(M={},M[Z.typeKey]="element",M[Z.nameKey]=V,!Z.ignoreAttributes&&j&&Object.keys(j).length)M[Z.attributesKey]=j;if(Z.alwaysChildren)M[Z.elementsKey]=[];J[Z.elementsKey].push(M)}M[Z.parentKey]=J,J=M}function W(V){if(Z.ignoreText)return;if(!V.trim()&&!Z.captureSpacesBetweenElements)return;if(Z.trim)V=V.trim();if(Z.nativeType)V=X(V);if(Z.sanitize)V=V.replace(/&/g,"&").replace(//g,">");Q("text",V)}function k(V){if(Z.ignoreComment)return;if(Z.trim)V=V.trim();Q("comment",V)}function D(V){var j=J[Z.parentKey];if(!Z.addParent)delete J[Z.parentKey];J=j}function C(V){if(Z.ignoreCdata)return;if(Z.trim)V=V.trim();Q("cdata",V)}function H(V){if(Z.ignoreDoctype)return;if(V=V.replace(/^ /,""),Z.trim)V=V.trim();Q("doctype",V)}function O(V){V.note=V}return t6=function(V,j){var M=$.parser(!0,{}),L={};if(J=L,Z=G(j),M.opt={strictEntities:!0},M.onopentag=z,M.ontext=W,M.oncomment=k,M.onclosetag=D,M.onerror=O,M.oncdata=C,M.ondoctype=H,M.onprocessinginstruction=F,M.write(V).close(),L[Z.elementsKey]){var A=L[Z.elementsKey];delete L[Z.elementsKey],L[Z.elementsKey]=A,delete L.text}return L},t6}var e6,zZ;function KX(){if(zZ)return e6;zZ=1;var $=a9(),U=FQ();function Y(Z){var J=$.copyOptions(Z);return $.ensureSpacesExists(J),J}return e6=function(Z,J){var G,X,Q,B;if(G=Y(J),X=U(Z,G),B="compact"in G&&G.compact?"_parent":"parent","addParent"in G&&G.addParent)Q=JSON.stringify(X,function(F,z){return F===B?"_":z},G.spaces);else Q=JSON.stringify(X,null,G.spaces);return Q.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")},e6}var $9,FZ;function NQ(){if(FZ)return $9;FZ=1;var $=a9(),U=l9().isArray,Y,Z;function J(M){var L=$.copyOptions(M);if($.ensureFlagExists("ignoreDeclaration",L),$.ensureFlagExists("ignoreInstruction",L),$.ensureFlagExists("ignoreAttributes",L),$.ensureFlagExists("ignoreText",L),$.ensureFlagExists("ignoreComment",L),$.ensureFlagExists("ignoreCdata",L),$.ensureFlagExists("ignoreDoctype",L),$.ensureFlagExists("compact",L),$.ensureFlagExists("indentText",L),$.ensureFlagExists("indentCdata",L),$.ensureFlagExists("indentAttributes",L),$.ensureFlagExists("indentInstruction",L),$.ensureFlagExists("fullTagEmptyElement",L),$.ensureFlagExists("noQuotesForNativeAttributes",L),$.ensureSpacesExists(L),typeof L.spaces==="number")L.spaces=Array(L.spaces+1).join(" ");return $.ensureKeyExists("declaration",L),$.ensureKeyExists("instruction",L),$.ensureKeyExists("attributes",L),$.ensureKeyExists("text",L),$.ensureKeyExists("comment",L),$.ensureKeyExists("cdata",L),$.ensureKeyExists("doctype",L),$.ensureKeyExists("type",L),$.ensureKeyExists("name",L),$.ensureKeyExists("elements",L),$.checkFnExists("doctype",L),$.checkFnExists("instruction",L),$.checkFnExists("cdata",L),$.checkFnExists("comment",L),$.checkFnExists("text",L),$.checkFnExists("instructionName",L),$.checkFnExists("elementName",L),$.checkFnExists("attributeName",L),$.checkFnExists("attributeValue",L),$.checkFnExists("attributes",L),$.checkFnExists("fullTagEmptyElement",L),L}function G(M,L,A){return(!A&&M.spaces?` +`:"")+Array(L+1).join(M.spaces)}function X(M,L,A){if(L.ignoreAttributes)return"";if("attributesFn"in L)M=L.attributesFn(M,Z,Y);var y,g,d,E,s=[];for(y in M)if(M.hasOwnProperty(y)&&M[y]!==null&&M[y]!==void 0)E=L.noQuotesForNativeAttributes&&typeof M[y]!=="string"?"":'"',g=""+M[y],g=g.replace(/"/g,"""),d="attributeNameFn"in L?L.attributeNameFn(y,g,Z,Y):y,s.push(L.spaces&&L.indentAttributes?G(L,A+1,!1):" "),s.push(d+"="+E+("attributeValueFn"in L?L.attributeValueFn(g,y,Z,Y):g)+E);if(M&&Object.keys(M).length&&L.spaces&&L.indentAttributes)s.push(G(L,A,!1));return s.join("")}function Q(M,L,A){return Y=M,Z="xml",L.ignoreDeclaration?"":""}function B(M,L,A){if(L.ignoreInstruction)return"";var y;for(y in M)if(M.hasOwnProperty(y))break;var g="instructionNameFn"in L?L.instructionNameFn(y,M[y],Z,Y):y;if(typeof M[y]==="object")return Y=M,Z=g,"";else{var d=M[y]?M[y]:"";if("instructionFn"in L)d=L.instructionFn(d,y,Z,Y);return""}}function F(M,L){return L.ignoreComment?"":""}function z(M,L){return L.ignoreCdata?"":"","]]]]>"))+"]]>"}function W(M,L){return L.ignoreDoctype?"":""}function k(M,L){if(L.ignoreText)return"";return M=""+M,M=M.replace(/&/g,"&"),M=M.replace(/&/g,"&").replace(//g,">"),"textFn"in L?L.textFn(M,Z,Y):M}function D(M,L){var A;if(M.elements&&M.elements.length)for(A=0;A"),M[L.elementsKey]&&M[L.elementsKey].length)y.push(H(M[L.elementsKey],L,A+1)),Y=M,Z=M.name;y.push(L.spaces&&D(M,L)?` +`+Array(A+1).join(L.spaces):""),y.push("")}else y.push("/>");return y.join("")}function H(M,L,A,y){return M.reduce(function(g,d){var E=G(L,A,y&&!g);switch(d.type){case"element":return g+E+C(d,L,A);case"comment":return g+E+F(d[L.commentKey],L);case"doctype":return g+E+W(d[L.doctypeKey],L);case"cdata":return g+(L.indentCdata?E:"")+z(d[L.cdataKey],L);case"text":return g+(L.indentText?E:"")+k(d[L.textKey],L);case"instruction":var s={};return s[d[L.nameKey]]=d[L.attributesKey]?d:d[L.instructionKey],g+(L.indentInstruction?E:"")+B(s,L,A)}},"")}function O(M,L,A){var y;for(y in M)if(M.hasOwnProperty(y))switch(y){case L.parentKey:case L.attributesKey:break;case L.textKey:if(L.indentText||A)return!0;break;case L.cdataKey:if(L.indentCdata||A)return!0;break;case L.instructionKey:if(L.indentInstruction||A)return!0;break;case L.doctypeKey:case L.commentKey:return!0;default:return!0}return!1}function V(M,L,A,y,g){Y=M,Z=L;var d="elementNameFn"in A?A.elementNameFn(L,M):L;if(typeof M>"u"||M===null||M==="")return"fullTagEmptyElementFn"in A&&A.fullTagEmptyElementFn(L,M)||A.fullTagEmptyElement?"<"+d+">":"<"+d+"/>";var E=[];if(L){if(E.push("<"+d),typeof M!=="object")return E.push(">"+k(M,A)+""),E.join("");if(M[A.attributesKey])E.push(X(M[A.attributesKey],A,y));var s=O(M,A,!0)||M[A.attributesKey]&&M[A.attributesKey]["xml:space"]==="preserve";if(!s)if("fullTagEmptyElementFn"in A)s=A.fullTagEmptyElementFn(L,M);else s=A.fullTagEmptyElement;if(s)E.push(">");else return E.push("/>"),E.join("")}if(E.push(j(M,A,y+1,!1)),Y=M,Z=L,L)E.push((g?G(A,y,!1):"")+"");return E.join("")}function j(M,L,A,y){var g,d,E,s=[];for(d in M)if(M.hasOwnProperty(d)){E=U(M[d])?M[d]:[M[d]];for(g=0;g{switch($.type){case void 0:case"element":let U=new p9($.name,$.attributes),Y=$.elements||[];for(let Z of Y){let J=U8(Z);if(J!==void 0)U.push(J)}return U;case"text":return $.text;default:return}};class RQ extends I0{}class p9 extends o{static fromXmlString($){let U=$8.xml2js($,{compact:!1});return U8(U)}constructor($,U){super($);if(U)this.root.push(new RQ(U))}push($){this.root.push($)}}class i9 extends o{constructor($){super("");this._attr=$}prepForXml($){return{_attr:this._attr}}}var VX="";class Y8 extends o{constructor($,U){super($);if(U)this.root=U.root}}var S0=($)=>{if(isNaN($))throw Error(`Invalid value '${$}' specified. Must be an integer.`);return Math.floor($)},W1=($)=>{let U=S0($);if(U<0)throw Error(`Invalid value '${$}' specified. Must be a positive integer.`);return U},Z8=($,U)=>{let Y=U*2;if($.length!==Y||isNaN(Number(`0x${$}`)))throw Error(`Invalid hex value '${$}'. Expected ${Y} digit hex value`);return $},BX=($)=>Z8($,4),DQ=($)=>Z8($,2),D9=($)=>Z8($,1),H1=($)=>{let U=$.slice(-2),Y=$.substring(0,$.length-2);return`${Number(Y)}${U}`},r9=($)=>{let U=H1($);if(parseFloat(U)<0)throw Error(`Invalid value '${U}' specified. Expected a positive number.`);return U},S2=($)=>{if($==="auto")return $;let U=$.charAt(0)==="#"?$.substring(1):$;return Z8(U,3)},e0=($)=>typeof $==="string"?H1($):S0($),AQ=($)=>typeof $==="string"?r9($):W1($),LX=($)=>typeof $==="string"?H1($):S0($),T0=($)=>typeof $==="string"?r9($):W1($),PQ=($)=>{let U=$.substring(0,$.length-1);return`${Number(U)}%`},s9=($)=>{if(typeof $==="number")return S0($);if($.slice(-1)==="%")return PQ($);return H1($)},TQ=W1,CQ=W1,OQ=($)=>$.toISOString();class X0 extends o{constructor($,U=!0){super($);if(U!==!0)this.root.push(new O0({val:U}))}}class q1 extends o{constructor($,U){super($);this.root.push(new O0({val:AQ(U)}))}}class k0 extends o{}class Y2 extends o{constructor($,U){super($);this.root.push(new O0({val:U}))}}var u2=($,U)=>new B0({name:$,attributes:{value:{key:"w:val",value:U}}});class k2 extends o{constructor($,U){super($);this.root.push(new O0({val:U}))}}class kQ extends o{constructor($,U){super($);this.root.push(new O0({val:U}))}}class L2 extends o{constructor($,U){super($);this.root.push(U)}}class B0 extends o{constructor({name:$,attributes:U,children:Y}){super($);if(U)this.root.push(new n1(U));if(Y)this.root.push(...Y)}}var m0={START:"start",CENTER:"center",END:"end",BOTH:"both",MEDIUM_KASHIDA:"mediumKashida",DISTRIBUTE:"distribute",NUM_TAB:"numTab",HIGH_KASHIDA:"highKashida",LOW_KASHIDA:"lowKashida",THAI_DISTRIBUTE:"thaiDistribute",LEFT:"left",RIGHT:"right",JUSTIFIED:"both"},n9=($)=>new B0({name:"w:jc",attributes:{val:{key:"w:val",value:$}}}),N0=($,{color:U,size:Y,space:Z,style:J})=>new B0({name:$,attributes:{style:{key:"w:val",value:J},color:{key:"w:color",value:U===void 0?void 0:S2(U)},size:{key:"w:sz",value:Y===void 0?void 0:TQ(Y)},space:{key:"w:space",value:Z===void 0?void 0:CQ(Z)}}}),Q8={SINGLE:"single",DASH_DOT_STROKED:"dashDotStroked",DASHED:"dashed",DASH_SMALL_GAP:"dashSmallGap",DOT_DASH:"dotDash",DOT_DOT_DASH:"dotDotDash",DOTTED:"dotted",DOUBLE:"double",DOUBLE_WAVE:"doubleWave",INSET:"inset",NIL:"nil",NONE:"none",OUTSET:"outset",THICK:"thick",THICK_THIN_LARGE_GAP:"thickThinLargeGap",THICK_THIN_MEDIUM_GAP:"thickThinMediumGap",THICK_THIN_SMALL_GAP:"thickThinSmallGap",THIN_THICK_LARGE_GAP:"thinThickLargeGap",THIN_THICK_MEDIUM_GAP:"thinThickMediumGap",THIN_THICK_SMALL_GAP:"thinThickSmallGap",THIN_THICK_THIN_LARGE_GAP:"thinThickThinLargeGap",THIN_THICK_THIN_MEDIUM_GAP:"thinThickThinMediumGap",THIN_THICK_THIN_SMALL_GAP:"thinThickThinSmallGap",THREE_D_EMBOSS:"threeDEmboss",THREE_D_ENGRAVE:"threeDEngrave",TRIPLE:"triple",WAVE:"wave"};class o9 extends Q2{constructor($){super("w:pBdr");if($.top)this.root.push(N0("w:top",$.top));if($.bottom)this.root.push(N0("w:bottom",$.bottom));if($.left)this.root.push(N0("w:left",$.left));if($.right)this.root.push(N0("w:right",$.right));if($.between)this.root.push(N0("w:between",$.between))}}class t9 extends o{constructor(){super("w:pBdr");let $=N0("w:bottom",{color:"auto",space:1,style:Q8.SINGLE,size:6});this.root.push($)}}var EQ=({start:$,end:U,left:Y,right:Z,hanging:J,firstLine:G})=>new B0({name:"w:ind",attributes:{start:{key:"w:start",value:$===void 0?void 0:e0($)},end:{key:"w:end",value:U===void 0?void 0:e0(U)},left:{key:"w:left",value:Y===void 0?void 0:e0(Y)},right:{key:"w:right",value:Z===void 0?void 0:e0(Z)},hanging:{key:"w:hanging",value:J===void 0?void 0:T0(J)},firstLine:{key:"w:firstLine",value:G===void 0?void 0:T0(G)}}}),SQ=()=>new B0({name:"w:br"}),e9={BEGIN:"begin",END:"end",SEPARATE:"separate"},$$=($,U)=>new B0({name:"w:fldChar",attributes:{type:{key:"w:fldCharType",value:$},dirty:{key:"w:dirty",value:U}}}),$2=($)=>$$(e9.BEGIN,$),I2=($)=>$$(e9.SEPARATE,$),U2=($)=>$$(e9.END,$),MX={CENTER:"center",INSIDE:"inside",LEFT:"left",OUTSIDE:"outside",RIGHT:"right"},IX={BOTTOM:"bottom",CENTER:"center",INSIDE:"inside",OUTSIDE:"outside",TOP:"top"},wX={DECIMAL:"decimal",UPPER_ROMAN:"upperRoman",LOWER_ROMAN:"lowerRoman",UPPER_LETTER:"upperLetter",LOWER_LETTER:"lowerLetter",ORDINAL:"ordinal",CARDINAL_TEXT:"cardinalText",ORDINAL_TEXT:"ordinalText",HEX:"hex",CHICAGO:"chicago",IDEOGRAPH_DIGITAL:"ideographDigital",JAPANESE_COUNTING:"japaneseCounting",AIUEO:"aiueo",IROHA:"iroha",DECIMAL_FULL_WIDTH:"decimalFullWidth",DECIMAL_HALF_WIDTH:"decimalHalfWidth",JAPANESE_LEGAL:"japaneseLegal",JAPANESE_DIGITAL_TEN_THOUSAND:"japaneseDigitalTenThousand",DECIMAL_ENCLOSED_CIRCLE:"decimalEnclosedCircle",DECIMAL_FULL_WIDTH_2:"decimalFullWidth2",AIUEO_FULL_WIDTH:"aiueoFullWidth",IROHA_FULL_WIDTH:"irohaFullWidth",DECIMAL_ZERO:"decimalZero",BULLET:"bullet",GANADA:"ganada",CHOSUNG:"chosung",DECIMAL_ENCLOSED_FULL_STOP:"decimalEnclosedFullstop",DECIMAL_ENCLOSED_PAREN:"decimalEnclosedParen",DECIMAL_ENCLOSED_CIRCLE_CHINESE:"decimalEnclosedCircleChinese",IDEOGRAPH_ENCLOSED_CIRCLE:"ideographEnclosedCircle",IDEOGRAPH_TRADITIONAL:"ideographTraditional",IDEOGRAPH_ZODIAC:"ideographZodiac",IDEOGRAPH_ZODIAC_TRADITIONAL:"ideographZodiacTraditional",TAIWANESE_COUNTING:"taiwaneseCounting",IDEOGRAPH_LEGAL_TRADITIONAL:"ideographLegalTraditional",TAIWANESE_COUNTING_THOUSAND:"taiwaneseCountingThousand",TAIWANESE_DIGITAL:"taiwaneseDigital",CHINESE_COUNTING:"chineseCounting",CHINESE_LEGAL_SIMPLIFIED:"chineseLegalSimplified",CHINESE_COUNTING_TEN_THOUSAND:"chineseCountingThousand",KOREAN_DIGITAL:"koreanDigital",KOREAN_COUNTING:"koreanCounting",KOREAN_LEGAL:"koreanLegal",KOREAN_DIGITAL_2:"koreanDigital2",VIETNAMESE_COUNTING:"vietnameseCounting",RUSSIAN_LOWER:"russianLower",RUSSIAN_UPPER:"russianUpper",NONE:"none",NUMBER_IN_DASH:"numberInDash",HEBREW_1:"hebrew1",HEBREW_2:"hebrew2",ARABIC_ALPHA:"arabicAlpha",ARABIC_ABJAD:"arabicAbjad",HINDI_VOWELS:"hindiVowels",HINDI_CONSONANTS:"hindiConsonants",HINDI_NUMBERS:"hindiNumbers",HINDI_COUNTING:"hindiCounting",THAI_LETTERS:"thaiLetters",THAI_NUMBERS:"thaiNumbers",THAI_COUNTING:"thaiCounting",BAHT_TEXT:"bahtText",DOLLAR_TEXT:"dollarText"},g0={DEFAULT:"default",PRESERVE:"preserve"};class x0 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{space:"xml:space"})}}class vQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("PAGE")}}class _Q extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("NUMPAGES")}}class yQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTIONPAGES")}}class bQ extends o{constructor(){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTION")}}var j1=({fill:$,color:U,type:Y})=>new B0({name:"w:shd",attributes:{fill:{key:"w:fill",value:$===void 0?void 0:S2($)},color:{key:"w:color",value:U===void 0?void 0:S2(U)},type:{key:"w:val",value:Y}}}),WX={CLEAR:"clear",DIAGONAL_CROSS:"diagCross",DIAGONAL_STRIPE:"diagStripe",HORIZONTAL_CROSS:"horzCross",HORIZONTAL_STRIPE:"horzStripe",NIL:"nil",PERCENT_5:"pct5",PERCENT_10:"pct10",PERCENT_12:"pct12",PERCENT_15:"pct15",PERCENT_20:"pct20",PERCENT_25:"pct25",PERCENT_30:"pct30",PERCENT_35:"pct35",PERCENT_37:"pct37",PERCENT_40:"pct40",PERCENT_45:"pct45",PERCENT_50:"pct50",PERCENT_55:"pct55",PERCENT_60:"pct60",PERCENT_62:"pct62",PERCENT_65:"pct65",PERCENT_70:"pct70",PERCENT_75:"pct75",PERCENT_80:"pct80",PERCENT_85:"pct85",PERCENT_87:"pct87",PERCENT_90:"pct90",PERCENT_95:"pct95",REVERSE_DIAGONAL_STRIPE:"reverseDiagStripe",SOLID:"solid",THIN_DIAGONAL_CROSS:"thinDiagCross",THIN_DIAGONAL_STRIPE:"thinDiagStripe",THIN_HORIZONTAL_CROSS:"thinHorzCross",THIN_REVERSE_DIAGONAL_STRIPE:"thinReverseDiagStripe",THIN_VERTICAL_STRIPE:"thinVertStripe",VERTICAL_STRIPE:"vertStripe"};class _0 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",author:"w:author",date:"w:date"})}}class gQ extends o{constructor($){super("w:del");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}class xQ extends o{constructor($){super("w:ins");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}var U$={DOT:"dot"},Y$=($=U$.DOT)=>new B0({name:"w:em",attributes:{val:{key:"w:val",value:$}}}),HX=()=>Y$(U$.DOT);class fQ extends o{constructor($){super("w:spacing");this.root.push(new O0({val:e0($)}))}}class hQ extends o{constructor($){super("w:color");this.root.push(new O0({val:S2($)}))}}class uQ extends o{constructor($){super("w:highlight");this.root.push(new O0({val:$}))}}class dQ extends o{constructor($){super("w:highlightCs");this.root.push(new O0({val:$}))}}var jX=($)=>new B0({name:"w:lang",attributes:{value:{key:"w:val",value:$.value},eastAsia:{key:"w:eastAsia",value:$.eastAsia},bidirectional:{key:"w:bidi",value:$.bidirectional}}}),g1=($,U)=>{if(typeof $==="string"){let Z=$;return new B0({name:"w:rFonts",attributes:{ascii:{key:"w:ascii",value:Z},cs:{key:"w:cs",value:Z},eastAsia:{key:"w:eastAsia",value:Z},hAnsi:{key:"w:hAnsi",value:Z},hint:{key:"w:hint",value:U}}})}let Y=$;return new B0({name:"w:rFonts",attributes:{ascii:{key:"w:ascii",value:Y.ascii},cs:{key:"w:cs",value:Y.cs},eastAsia:{key:"w:eastAsia",value:Y.eastAsia},hAnsi:{key:"w:hAnsi",value:Y.hAnsi},hint:{key:"w:hint",value:Y.hint}}})},cQ=($)=>new B0({name:"w:vertAlign",attributes:{val:{key:"w:val",value:$}}}),zX=()=>cQ("superscript"),FX=()=>cQ("subscript"),Z$={SINGLE:"single",WORDS:"words",DOUBLE:"double",THICK:"thick",DOTTED:"dotted",DOTTEDHEAVY:"dottedHeavy",DASH:"dash",DASHEDHEAVY:"dashedHeavy",DASHLONG:"dashLong",DASHLONGHEAVY:"dashLongHeavy",DOTDASH:"dotDash",DASHDOTHEAVY:"dashDotHeavy",DOTDOTDASH:"dotDotDash",DASHDOTDOTHEAVY:"dashDotDotHeavy",WAVE:"wave",WAVYHEAVY:"wavyHeavy",WAVYDOUBLE:"wavyDouble",NONE:"none"},mQ=($=Z$.SINGLE,U)=>new B0({name:"w:u",attributes:{val:{key:"w:val",value:$},color:{key:"w:color",value:U===void 0?void 0:S2(U)}}}),NX={BLINK_BACKGROUND:"blinkBackground",LIGHTS:"lights",ANTS_BLACK:"antsBlack",ANTS_RED:"antsRed",SHIMMER:"shimmer",SPARKLE:"sparkle",NONE:"none"},RX={BLACK:"black",BLUE:"blue",CYAN:"cyan",DARK_BLUE:"darkBlue",DARK_CYAN:"darkCyan",DARK_GRAY:"darkGray",DARK_GREEN:"darkGreen",DARK_MAGENTA:"darkMagenta",DARK_RED:"darkRed",DARK_YELLOW:"darkYellow",GREEN:"green",LIGHT_GRAY:"lightGray",MAGENTA:"magenta",NONE:"none",RED:"red",WHITE:"white",YELLOW:"yellow"};class J2 extends Q2{constructor($){var U,Y;super("w:rPr");if(!$)return;if($.style)this.push(new Y2("w:rStyle",$.style));if($.font)if(typeof $.font==="string")this.push(g1($.font));else if("name"in $.font)this.push(g1($.font.name,$.font.hint));else this.push(g1($.font));if($.bold!==void 0)this.push(new X0("w:b",$.bold));if($.boldComplexScript===void 0&&$.bold!==void 0||$.boldComplexScript)this.push(new X0("w:bCs",(U=$.boldComplexScript)!=null?U:$.bold));if($.italics!==void 0)this.push(new X0("w:i",$.italics));if($.italicsComplexScript===void 0&&$.italics!==void 0||$.italicsComplexScript)this.push(new X0("w:iCs",(Y=$.italicsComplexScript)!=null?Y:$.italics));if($.smallCaps!==void 0)this.push(new X0("w:smallCaps",$.smallCaps));else if($.allCaps!==void 0)this.push(new X0("w:caps",$.allCaps));if($.strike!==void 0)this.push(new X0("w:strike",$.strike));if($.doubleStrike!==void 0)this.push(new X0("w:dstrike",$.doubleStrike));if($.emboss!==void 0)this.push(new X0("w:emboss",$.emboss));if($.imprint!==void 0)this.push(new X0("w:imprint",$.imprint));if($.noProof!==void 0)this.push(new X0("w:noProof",$.noProof));if($.snapToGrid!==void 0)this.push(new X0("w:snapToGrid",$.snapToGrid));if($.vanish)this.push(new X0("w:vanish",$.vanish));if($.color)this.push(new hQ($.color));if($.characterSpacing)this.push(new fQ($.characterSpacing));if($.scale!==void 0)this.push(new k2("w:w",$.scale));if($.kern)this.push(new q1("w:kern",$.kern));if($.position)this.push(new Y2("w:position",$.position));if($.size!==void 0)this.push(new q1("w:sz",$.size));let Z=$.sizeComplexScript===void 0||$.sizeComplexScript===!0?$.size:$.sizeComplexScript;if(Z)this.push(new q1("w:szCs",Z));if($.highlight)this.push(new uQ($.highlight));let J=$.highlightComplexScript===void 0||$.highlightComplexScript===!0?$.highlight:$.highlightComplexScript;if(J)this.push(new dQ(J));if($.underline)this.push(mQ($.underline.type,$.underline.color));if($.effect)this.push(new Y2("w:effect",$.effect));if($.border)this.push(N0("w:bdr",$.border));if($.shading)this.push(j1($.shading));if($.subScript)this.push(FX());if($.superScript)this.push(zX());if($.rightToLeft!==void 0)this.push(new X0("w:rtl",$.rightToLeft));if($.emphasisMark)this.push(Y$($.emphasisMark.type));if($.language)this.push(jX($.language));if($.specVanish)this.push(new X0("w:specVanish",$.vanish));if($.math)this.push(new X0("w:oMath",$.math));if($.revision)this.push(new J$($.revision))}push($){this.root.push($)}}class Q$ extends J2{constructor($){super($);if($==null?void 0:$.insertion)this.push(new xQ($.insertion));if($==null?void 0:$.deletion)this.push(new gQ($.deletion))}}class J$ extends o{constructor($){super("w:rPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.addChildElement(new J2($))}}class a2 extends o{constructor($){var U;super("w:t");if(typeof $==="string")this.root.push(new x0({space:g0.PRESERVE})),this.root.push($);else this.root.push(new x0({space:(U=$.space)!=null?U:g0.DEFAULT})),this.root.push($.text)}}var N2={CURRENT:"CURRENT",TOTAL_PAGES:"TOTAL_PAGES",TOTAL_PAGES_IN_SECTION:"TOTAL_PAGES_IN_SECTION",CURRENT_SECTION:"SECTION"};class C0 extends o{constructor($){super("w:r");if(Y0(this,"properties"),this.properties=new J2($),this.root.push(this.properties),$.break)for(let U=0;U<$.break;U++)this.root.push(SQ());if($.children)for(let U of $.children){if(typeof U==="string"){switch(U){case N2.CURRENT:this.root.push($2()),this.root.push(new vQ),this.root.push(I2()),this.root.push(U2());break;case N2.TOTAL_PAGES:this.root.push($2()),this.root.push(new _Q),this.root.push(I2()),this.root.push(U2());break;case N2.TOTAL_PAGES_IN_SECTION:this.root.push($2()),this.root.push(new yQ),this.root.push(I2()),this.root.push(U2());break;case N2.CURRENT_SECTION:this.root.push($2()),this.root.push(new bQ),this.root.push(I2()),this.root.push(U2());break;default:this.root.push(new a2(U));break}continue}this.root.push(U)}else if($.text!==void 0)this.root.push(new a2($.text))}}class p2 extends C0{constructor($){super(typeof $==="string"?{text:$}:$)}}class lQ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{char:"w:char",symbolfont:"w:font"})}}var DZ=class extends o{constructor(U="",Y="Wingdings"){super("w:sym");this.root.push(new lQ({char:U,symbolfont:Y}))}};class G$ extends C0{constructor($){if(typeof $==="string"){super({});return this.root.push(new DZ($)),this}super($);this.root.push(new DZ($.char,$.symbolfont))}}var Z9={},z0={},Q9,AZ;function z1(){if(AZ)return Q9;AZ=1,Q9=$;function $(U,Y){if(!U)throw Error(Y||"Assertion failed")}return $.equal=function(Y,Z,J){if(Y!=Z)throw Error(J||"Assertion failed: "+Y+" != "+Z)},Q9}var PZ;function G2(){if(PZ)return z0;PZ=1;var $=z1(),U=R2();z0.inherits=U;function Y(S,h){if((S.charCodeAt(h)&64512)!==55296)return!1;if(h<0||h+1>=S.length)return!1;return(S.charCodeAt(h+1)&64512)===56320}function Z(S,h){if(Array.isArray(S))return S.slice();if(!S)return[];var N=[];if(typeof S==="string"){if(!h){var a=0;for(var $0=0;$0>6|192,N[a++]=m&63|128;else if(Y(S,$0))m=65536+((m&1023)<<10)+(S.charCodeAt(++$0)&1023),N[a++]=m>>18|240,N[a++]=m>>12&63|128,N[a++]=m>>6&63|128,N[a++]=m&63|128;else N[a++]=m>>12|224,N[a++]=m>>6&63|128,N[a++]=m&63|128}}else if(h==="hex"){if(S=S.replace(/[^a-z0-9]+/ig,""),S.length%2!==0)S="0"+S;for($0=0;$0>>24|S>>>8&65280|S<<8&16711680|(S&255)<<24;return h>>>0}z0.htonl=G;function X(S,h){var N="";for(var a=0;a>>0}return m}z0.join32=F;function z(S,h){var N=Array(S.length*4);for(var a=0,$0=0;a>>24,N[$0+1]=m>>>16&255,N[$0+2]=m>>>8&255,N[$0+3]=m&255;else N[$0+3]=m>>>24,N[$0+2]=m>>>16&255,N[$0+1]=m>>>8&255,N[$0]=m&255}return N}z0.split32=z;function W(S,h){return S>>>h|S<<32-h}z0.rotr32=W;function k(S,h){return S<>>32-h}z0.rotl32=k;function D(S,h){return S+h>>>0}z0.sum32=D;function C(S,h,N){return S+h+N>>>0}z0.sum32_3=C;function H(S,h,N,a){return S+h+N+a>>>0}z0.sum32_4=H;function O(S,h,N,a,$0){return S+h+N+a+$0>>>0}z0.sum32_5=O;function V(S,h,N,a){var $0=S[h],m=S[h+1],J0=a+m>>>0,U0=(J0>>0,S[h+1]=J0}z0.sum64=V;function j(S,h,N,a){var $0=h+a>>>0,m=($0>>0}z0.sum64_hi=j;function M(S,h,N,a){var $0=h+a;return $0>>>0}z0.sum64_lo=M;function L(S,h,N,a,$0,m,J0,U0){var L0=0,i=h;i=i+a>>>0,L0+=i>>0,L0+=i>>0,L0+=i>>0}z0.sum64_4_hi=L;function A(S,h,N,a,$0,m,J0,U0){var L0=h+a+m+U0;return L0>>>0}z0.sum64_4_lo=A;function y(S,h,N,a,$0,m,J0,U0,L0,i){var _=0,r=h;r=r+a>>>0,_+=r>>0,_+=r>>0,_+=r>>0,_+=r>>0}z0.sum64_5_hi=y;function g(S,h,N,a,$0,m,J0,U0,L0,i){var _=h+a+m+U0+i;return _>>>0}z0.sum64_5_lo=g;function d(S,h,N){var a=h<<32-N|S>>>N;return a>>>0}z0.rotr64_hi=d;function E(S,h,N){var a=S<<32-N|h>>>N;return a>>>0}z0.rotr64_lo=E;function s(S,h,N){return S>>>N}z0.shr64_hi=s;function V0(S,h,N){var a=S<<32-N|h>>>N;return a>>>0}return z0.shr64_lo=V0,z0}var J9={},TZ;function F1(){if(TZ)return J9;TZ=1;var $=G2(),U=z1();function Y(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}return J9.BlockHash=Y,Y.prototype.update=function(J,G){if(J=$.toArray(J,G),!this.pending)this.pending=J;else this.pending=this.pending.concat(J);if(this.pendingTotal+=J.length,this.pending.length>=this._delta8){J=this.pending;var X=J.length%this._delta8;if(this.pending=J.slice(J.length-X,J.length),this.pending.length===0)this.pending=null;J=$.join32(J,0,J.length-X,this.endian);for(var Q=0;Q>>24&255,Q[B++]=J>>>16&255,Q[B++]=J>>>8&255,Q[B++]=J&255}else{Q[B++]=J&255,Q[B++]=J>>>8&255,Q[B++]=J>>>16&255,Q[B++]=J>>>24&255,Q[B++]=0,Q[B++]=0,Q[B++]=0,Q[B++]=0;for(F=8;F>>3}s0.g0_256=B;function F(z){return U(z,17)^U(z,19)^z>>>10}return s0.g1_256=F,s0}var G9,OZ;function DX(){if(OZ)return G9;OZ=1;var $=G2(),U=F1(),Y=aQ(),Z=$.rotl32,J=$.sum32,G=$.sum32_5,X=Y.ft_1,Q=U.BlockHash,B=[1518500249,1859775393,2400959708,3395469782];function F(){if(!(this instanceof F))return new F;Q.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=Array(80)}return $.inherits(F,Q),G9=F,F.blockSize=512,F.outSize=160,F.hmacStrength=80,F.padLength=64,F.prototype._update=function(W,k){var D=this.W;for(var C=0;C<16;C++)D[C]=W[k+C];for(;Cthis.blockSize)J=new this.Hash().update(J).digest();U(J.length<=this.blockSize);for(var G=J.length;G{return(Y=U)=>{let Z="",J=Y|0;while(J--)Z+=$[Math.random()*$.length|0];return Z}},yX=($=21)=>{let U="",Y=$|0;while(Y--)U+=vX[Math.random()*64|0];return U},bX=($)=>Math.floor($/25.4*72*20),d0=($)=>Math.floor($*72*20),N1=($=0)=>{let U=$;return()=>++U},rQ=()=>N1(),sQ=()=>N1(1),nQ=()=>N1(),oQ=()=>N1(),R1=()=>yX().toLowerCase(),A9=($)=>SX.sha1().update($ instanceof ArrayBuffer?new Uint8Array($):$).digest("hex"),Y1=($)=>_X("1234567890abcdef",$)(),tQ=()=>`${Y1(8)}-${Y1(4)}-${Y1(4)}-${Y1(4)}-${Y1(12)}`,X1=($)=>new Uint8Array(new TextEncoder().encode($)),eQ={CHARACTER:"character",COLUMN:"column",INSIDE_MARGIN:"insideMargin",LEFT_MARGIN:"leftMargin",MARGIN:"margin",OUTSIDE_MARGIN:"outsideMargin",PAGE:"page",RIGHT_MARGIN:"rightMargin"},$J={BOTTOM_MARGIN:"bottomMargin",INSIDE_MARGIN:"insideMargin",LINE:"line",MARGIN:"margin",OUTSIDE_MARGIN:"outsideMargin",PAGE:"page",PARAGRAPH:"paragraph",TOP_MARGIN:"topMargin"},UJ=()=>new B0({name:"wp:simplePos",attributes:{x:{key:"x",value:0},y:{key:"y",value:0}}}),YJ=($)=>new B0({name:"wp:align",children:[$]}),ZJ=($)=>new B0({name:"wp:posOffset",children:[$.toString()]}),QJ=({relative:$,align:U,offset:Y})=>new B0({name:"wp:positionH",attributes:{relativeFrom:{key:"relativeFrom",value:$!=null?$:eQ.PAGE}},children:[(()=>{if(U)return YJ(U);else if(Y!==void 0)return ZJ(Y);else throw Error("There is no configuration provided for floating position (Align or offset)")})()]}),JJ=({relative:$,align:U,offset:Y})=>new B0({name:"wp:positionV",attributes:{relativeFrom:{key:"relativeFrom",value:$!=null?$:$J.PAGE}},children:[(()=>{if(U)return YJ(U);else if(Y!==void 0)return ZJ(Y);else throw Error("There is no configuration provided for floating position (Align or offset)")})()]}),GJ=(($)=>{return $.CENTER="ctr",$.TOP="t",$.BOTTOM="b",$})(GJ||{}),KJ=($={})=>{var U,Y,Z,J;return new B0({name:"wps:bodyPr",attributes:{lIns:{key:"lIns",value:(U=$.margins)==null?void 0:U.left},rIns:{key:"rIns",value:(Y=$.margins)==null?void 0:Y.right},tIns:{key:"tIns",value:(Z=$.margins)==null?void 0:Z.top},bIns:{key:"bIns",value:(J=$.margins)==null?void 0:J.bottom},anchor:{key:"anchor",value:$.verticalAnchor}},children:[...$.noAutoFit?[new X0("a:noAutofit",$.noAutoFit)]:[]]})},gX=($={txBox:"1"})=>new B0({name:"wps:cNvSpPr",attributes:{txBox:{key:"txBox",value:$.txBox}}}),xX=($)=>new B0({name:"w:txbxContent",children:[...$]}),fX=($)=>new B0({name:"wps:txbx",children:[xX($)]});class qJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{cx:"cx",cy:"cy"})}}class XJ extends o{constructor($,U){super("a:ext");Y0(this,"attributes"),this.attributes=new qJ({cx:$,cy:U}),this.root.push(this.attributes)}}class VJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{x:"x",y:"y"})}}class BJ extends o{constructor($,U){super("a:off");this.root.push(new VJ({x:$!=null?$:0,y:U!=null?U:0}))}}class LJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{flipVertical:"flipV",flipHorizontal:"flipH",rotation:"rot"})}}class K$ extends o{constructor($){var U,Y,Z,J,G,X;super("a:xfrm");Y0(this,"extents"),Y0(this,"offset"),this.root.push(new LJ({flipVertical:(U=$.flip)==null?void 0:U.vertical,flipHorizontal:(Y=$.flip)==null?void 0:Y.horizontal,rotation:$.rotation})),this.offset=new BJ((J=(Z=$.offset)==null?void 0:Z.emus)==null?void 0:J.x,(X=(G=$.offset)==null?void 0:G.emus)==null?void 0:X.y),this.extents=new XJ($.emus.x,$.emus.y),this.root.push(this.offset),this.root.push(this.extents)}}var MJ=()=>new B0({name:"a:noFill"}),hX=($)=>new B0({name:"a:srgbClr",attributes:{value:{key:"val",value:$.value}}}),uX=($)=>new B0({name:"a:schemeClr",attributes:{value:{key:"val",value:$.value}}}),P9=($)=>new B0({name:"a:solidFill",children:[$.type==="rgb"?hX($):uX($)]}),dX=($)=>new B0({name:"a:ln",attributes:{width:{key:"w",value:$.width},cap:{key:"cap",value:$.cap},compoundLine:{key:"cmpd",value:$.compoundLine},align:{key:"algn",value:$.align}},children:[$.type==="noFill"?MJ():$.solidFillType==="rgb"?P9({type:"rgb",value:$.value}):P9({type:"scheme",value:$.value})]});class IJ extends o{constructor(){super("a:avLst")}}class wJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{prst:"prst"})}}class WJ extends o{constructor(){super("a:prstGeom");this.root.push(new wJ({prst:"rect"})),this.root.push(new IJ)}}class HJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{bwMode:"bwMode"})}}class q$ extends o{constructor({element:$,outline:U,solidFill:Y,transform:Z}){super(`${$}:spPr`);if(Y0(this,"form"),this.root.push(new HJ({bwMode:"auto"})),this.form=new K$(Z),this.root.push(this.form),this.root.push(new WJ),U)this.root.push(MJ()),this.root.push(dX(U));if(Y)this.root.push(P9(Y))}}var xZ=($)=>new B0({name:"wps:wsp",children:[gX($.nonVisualProperties),new q$({element:"wps",transform:$.transformation,outline:$.outline,solidFill:$.solidFill}),fX($.children),KJ($.bodyProperties)]});class x1 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{uri:"uri"})}}var cX=($)=>new B0({name:"asvg:svgBlip",attributes:{asvg:{key:"xmlns:asvg",value:"http://schemas.microsoft.com/office/drawing/2016/SVG/main"},embed:{key:"r:embed",value:`rId{${$.fileName}}`}}}),mX=($)=>new B0({name:"a:ext",attributes:{uri:{key:"uri",value:"{96DAC541-7B7A-43D3-8B79-37D633B846F1}"}},children:[cX($)]}),lX=($)=>new B0({name:"a:extLst",children:[mX($)]}),aX=($)=>new B0({name:"a:blip",attributes:{embed:{key:"r:embed",value:`rId{${$.type==="svg"?$.fallback.fileName:$.fileName}}`},cstate:{key:"cstate",value:"none"}},children:$.type==="svg"?[lX($)]:[]});class jJ extends o{constructor(){super("a:srcRect")}}class zJ extends o{constructor(){super("a:fillRect")}}class FJ extends o{constructor(){super("a:stretch");this.root.push(new zJ)}}class NJ extends o{constructor($){super("pic:blipFill");this.root.push(aX($)),this.root.push(new jJ),this.root.push(new FJ)}}class RJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{noChangeAspect:"noChangeAspect",noChangeArrowheads:"noChangeArrowheads"})}}class DJ extends o{constructor(){super("a:picLocks");this.root.push(new RJ({noChangeAspect:1,noChangeArrowheads:1}))}}class AJ extends o{constructor(){super("pic:cNvPicPr");this.root.push(new DJ)}}var PJ=($,U)=>new B0({name:"a:hlinkClick",attributes:R0(W0({},U?{xmlns:{key:"xmlns:a",value:"http://schemas.openxmlformats.org/drawingml/2006/main"}}:{}),{id:{key:"r:id",value:`rId${$}`}})});class TJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"id",name:"name",descr:"descr"})}}class CJ extends o{constructor(){super("pic:cNvPr");this.root.push(new TJ({id:0,name:"",descr:""}))}prepForXml($){for(let U=$.stack.length-1;U>=0;U--){let Y=$.stack[U];if(!(Y instanceof _2))continue;this.root.push(PJ(Y.linkId,!1));break}return super.prepForXml($)}}class OJ extends o{constructor(){super("pic:nvPicPr");this.root.push(new CJ),this.root.push(new AJ)}}class kJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns:pic"})}}class T9 extends o{constructor({mediaData:$,transform:U,outline:Y}){super("pic:pic");this.root.push(new kJ({xmlns:"http://schemas.openxmlformats.org/drawingml/2006/picture"})),this.root.push(new OJ),this.root.push(new NJ($)),this.root.push(new q$({element:"pic",transform:U,outline:Y}))}}var pX=($)=>new B0({name:"wpg:grpSpPr",children:[new K$($)]}),iX=()=>new B0({name:"wpg:cNvGrpSpPr"}),rX=($)=>new B0({name:"wpg:wgp",children:[iX(),pX($.transformation),...$.children]});class EJ extends o{constructor({mediaData:$,transform:U,outline:Y,solidFill:Z}){super("a:graphicData");if($.type==="wps"){this.root.push(new x1({uri:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape"}));let J=xZ(R0(W0({},$.data),{transformation:U,outline:Y,solidFill:Z}));this.root.push(J)}else if($.type==="wpg"){this.root.push(new x1({uri:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"}));let G=$.children.map((Q)=>{if(Q.type==="wps")return xZ(R0(W0({},Q.data),{transformation:Q.transformation,outline:Q.outline,solidFill:Q.solidFill}));else return new T9({mediaData:Q,transform:Q.transformation,outline:Q.outline})}),X=rX({children:G,transformation:U});this.root.push(X)}else{this.root.push(new x1({uri:"http://schemas.openxmlformats.org/drawingml/2006/picture"}));let G=new T9({mediaData:$,transform:U,outline:Y});this.root.push(G)}}}class SJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{a:"xmlns:a"})}}class X$ extends o{constructor({mediaData:$,transform:U,outline:Y,solidFill:Z}){super("a:graphic");Y0(this,"data"),this.root.push(new SJ({a:"http://schemas.openxmlformats.org/drawingml/2006/main"})),this.data=new EJ({mediaData:$,transform:U,outline:Y,solidFill:Z}),this.root.push(this.data)}}var G1={NONE:0,SQUARE:1,TIGHT:2,TOP_AND_BOTTOM:3},vJ={BOTH_SIDES:"bothSides",LEFT:"left",RIGHT:"right",LARGEST:"largest"},C9=()=>new B0({name:"wp:wrapNone"}),_J=($,U={top:0,bottom:0,left:0,right:0})=>new B0({name:"wp:wrapSquare",attributes:{wrapText:{key:"wrapText",value:$.side||vJ.BOTH_SIDES},distT:{key:"distT",value:U.top},distB:{key:"distB",value:U.bottom},distL:{key:"distL",value:U.left},distR:{key:"distR",value:U.right}}}),yJ=($={top:0,bottom:0})=>new B0({name:"wp:wrapTight",attributes:{distT:{key:"distT",value:$.top},distB:{key:"distB",value:$.bottom}}}),bJ=($={top:0,bottom:0})=>new B0({name:"wp:wrapTopAndBottom",attributes:{distT:{key:"distT",value:$.top},distB:{key:"distB",value:$.bottom}}});class V$ extends o{constructor({name:$,description:U,title:Y,id:Z}={name:"",description:"",title:""}){super("wp:docPr");Y0(this,"docPropertiesUniqueNumericId",nQ());let J={id:{key:"id",value:Z!=null?Z:this.docPropertiesUniqueNumericId()},name:{key:"name",value:$}};if(U!==null&&U!==void 0)J.description={key:"descr",value:U};if(Y!==null&&Y!==void 0)J.title={key:"title",value:Y};this.root.push(new n1(J))}prepForXml($){for(let U=$.stack.length-1;U>=0;U--){let Y=$.stack[U];if(!(Y instanceof _2))continue;this.root.push(PJ(Y.linkId,!0));break}return super.prepForXml($)}}var gJ=({top:$,right:U,bottom:Y,left:Z})=>new B0({name:"wp:effectExtent",attributes:{top:{key:"t",value:$},right:{key:"r",value:U},bottom:{key:"b",value:Y},left:{key:"l",value:Z}}}),xJ=({x:$,y:U})=>new B0({name:"wp:extent",attributes:{x:{key:"cx",value:$},y:{key:"cy",value:U}}});class fJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns:a",noChangeAspect:"noChangeAspect"})}}class hJ extends o{constructor(){super("a:graphicFrameLocks");this.root.push(new fJ({xmlns:"http://schemas.openxmlformats.org/drawingml/2006/main",noChangeAspect:1}))}}var uJ=()=>new B0({name:"wp:cNvGraphicFramePr",children:[new hJ]});class dJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{distT:"distT",distB:"distB",distL:"distL",distR:"distR",allowOverlap:"allowOverlap",behindDoc:"behindDoc",layoutInCell:"layoutInCell",locked:"locked",relativeHeight:"relativeHeight",simplePos:"simplePos"})}}class cJ extends o{constructor({mediaData:$,transform:U,drawingOptions:Y}){super("wp:anchor");let Z=W0({allowOverlap:!0,behindDocument:!1,lockAnchor:!1,layoutInCell:!0,verticalPosition:{},horizontalPosition:{}},Y.floating);if(this.root.push(new dJ({distT:Z.margins?Z.margins.top||0:0,distB:Z.margins?Z.margins.bottom||0:0,distL:Z.margins?Z.margins.left||0:0,distR:Z.margins?Z.margins.right||0:0,simplePos:"0",allowOverlap:Z.allowOverlap===!0?"1":"0",behindDoc:Z.behindDocument===!0?"1":"0",locked:Z.lockAnchor===!0?"1":"0",layoutInCell:Z.layoutInCell===!0?"1":"0",relativeHeight:Z.zIndex?Z.zIndex:U.emus.y})),this.root.push(UJ()),this.root.push(QJ(Z.horizontalPosition)),this.root.push(JJ(Z.verticalPosition)),this.root.push(xJ({x:U.emus.x,y:U.emus.y})),this.root.push(gJ({top:0,right:0,bottom:0,left:0})),Y.floating!==void 0&&Y.floating.wrap!==void 0)switch(Y.floating.wrap.type){case G1.SQUARE:this.root.push(_J(Y.floating.wrap,Y.floating.margins));break;case G1.TIGHT:this.root.push(yJ(Y.floating.margins));break;case G1.TOP_AND_BOTTOM:this.root.push(bJ(Y.floating.margins));break;case G1.NONE:default:this.root.push(C9())}else this.root.push(C9());this.root.push(new V$(Y.docProperties)),this.root.push(uJ()),this.root.push(new X$({mediaData:$,transform:U,outline:Y.outline,solidFill:Y.solidFill}))}}var sX=({mediaData:$,transform:U,docProperties:Y,outline:Z,solidFill:J})=>{var G,X,Q,B;return new B0({name:"wp:inline",attributes:{distanceTop:{key:"distT",value:0},distanceBottom:{key:"distB",value:0},distanceLeft:{key:"distL",value:0},distanceRight:{key:"distR",value:0}},children:[xJ({x:U.emus.x,y:U.emus.y}),gJ(Z?{top:((G=Z.width)!=null?G:9525)*2,right:((X=Z.width)!=null?X:9525)*2,bottom:((Q=Z.width)!=null?Q:9525)*2,left:((B=Z.width)!=null?B:9525)*2}:{top:0,right:0,bottom:0,left:0}),new V$(Y),uJ(),new X$({mediaData:$,transform:U,outline:Z,solidFill:J})]})};class D1 extends o{constructor($,U={}){super("w:drawing");if(!U.floating)this.root.push(sX({mediaData:$,transform:$.transformation,docProperties:U.docProperties,outline:U.outline,solidFill:U.solidFill}));else this.root.push(new cJ({mediaData:$,transform:$.transformation,drawingOptions:U}))}}var nX=($)=>{let Y=$.indexOf(";base64,"),Z=Y===-1?0:Y+8;return new Uint8Array(atob($.substring(Z)).split("").map((J)=>J.charCodeAt(0)))},mJ=($)=>typeof $==="string"?nX($):$,M9=($,U)=>({data:mJ($.data),fileName:U,transformation:{pixels:{x:Math.round($.transformation.width),y:Math.round($.transformation.height)},emus:{x:Math.round($.transformation.width*9525),y:Math.round($.transformation.height*9525)},flip:$.transformation.flip,rotation:$.transformation.rotation?$.transformation.rotation*60000:void 0}});class lJ extends C0{constructor($){super({});Y0(this,"imageData");let Y=`${A9($.data)}.${$.type}`;this.imageData=$.type==="svg"?R0(W0({type:$.type},M9($,Y)),{fallback:W0({type:$.fallback.type},M9(R0(W0({},$.fallback),{transformation:$.transformation}),`${A9($.fallback.data)}.${$.fallback.type}`))}):W0({type:$.type},M9($,Y));let Z=new D1(this.imageData,{floating:$.floating,docProperties:$.altText,outline:$.outline});this.root.push(Z)}prepForXml($){if($.file.Media.addImage(this.imageData.fileName,this.imageData),this.imageData.type==="svg")$.file.Media.addImage(this.imageData.fallback.fileName,this.imageData.fallback);return super.prepForXml($)}}var B$=($)=>{var U,Y,Z,J,G,X,Q,B;return{offset:{pixels:{x:Math.round((Y=(U=$.offset)==null?void 0:U.left)!=null?Y:0),y:Math.round((J=(Z=$.offset)==null?void 0:Z.top)!=null?J:0)},emus:{x:Math.round(((X=(G=$.offset)==null?void 0:G.left)!=null?X:0)*9525),y:Math.round(((B=(Q=$.offset)==null?void 0:Q.top)!=null?B:0)*9525)}},pixels:{x:Math.round($.width),y:Math.round($.height)},emus:{x:Math.round($.width*9525),y:Math.round($.height*9525)},flip:$.flip,rotation:$.rotation?$.rotation*60000:void 0}};class aJ extends C0{constructor($){super({});Y0(this,"wpsShapeData"),this.wpsShapeData={type:$.type,transformation:B$($.transformation),data:W0({},$)};let U=new D1(this.wpsShapeData,{floating:$.floating,docProperties:$.altText,outline:$.outline,solidFill:$.solidFill});this.root.push(U)}}class pJ extends C0{constructor($){super({});Y0(this,"wpgGroupData"),Y0(this,"mediaDatas"),this.wpgGroupData={type:$.type,transformation:B$($.transformation),children:$.children};let U=new D1(this.wpgGroupData,{floating:$.floating,docProperties:$.altText});this.mediaDatas=$.children.filter((Y)=>Y.type!=="wps").map((Y)=>Y),this.root.push(U)}prepForXml($){return this.mediaDatas.forEach((U)=>{if($.file.Media.addImage(U.fileName,U),U.type==="svg")$.file.Media.addImage(U.fallback.fileName,U.fallback)}),super.prepForXml($)}}class iJ extends o{constructor($){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push(`SEQ ${$}`)}}class rJ extends C0{constructor($){super({});this.root.push($2(!0)),this.root.push(new iJ($)),this.root.push(I2()),this.root.push(U2())}}class sJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{instr:"w:instr"})}}class J8 extends o{constructor($,U){super("w:fldSimple");if(this.root.push(new sJ({instr:$})),U!==void 0)this.root.push(new p2(U))}}class nJ extends J8{constructor($){super(` MERGEFIELD ${$} `,`«${$}»`)}}class oJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns"})}}var tJ={EXTERNAL:"External"},oX=($,U,Y,Z)=>new B0({name:"Relationship",attributes:{id:{key:"Id",value:$},type:{key:"Type",value:U},target:{key:"Target",value:Y},targetMode:{key:"TargetMode",value:Z}}});class W2 extends o{constructor(){super("Relationships");this.root.push(new oJ({xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"}))}addRelationship($,U,Y,Z){this.root.push(oX(`rId${$}`,U,Y,Z))}get RelationshipCount(){return this.root.length-1}}class eJ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",initials:"w:initials",author:"w:author",date:"w:date"})}}class G8 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class $G extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{"xmlns:cx":"xmlns:cx","xmlns:cx1":"xmlns:cx1","xmlns:cx2":"xmlns:cx2","xmlns:cx3":"xmlns:cx3","xmlns:cx4":"xmlns:cx4","xmlns:cx5":"xmlns:cx5","xmlns:cx6":"xmlns:cx6","xmlns:cx7":"xmlns:cx7","xmlns:cx8":"xmlns:cx8","xmlns:mc":"xmlns:mc","xmlns:aink":"xmlns:aink","xmlns:am3d":"xmlns:am3d","xmlns:o":"xmlns:o","xmlns:r":"xmlns:r","xmlns:m":"xmlns:m","xmlns:v":"xmlns:v","xmlns:wp14":"xmlns:wp14","xmlns:wp":"xmlns:wp","xmlns:w10":"xmlns:w10","xmlns:w":"xmlns:w","xmlns:w14":"xmlns:w14","xmlns:w15":"xmlns:w15","xmlns:w16cex":"xmlns:w16cex","xmlns:w16cid":"xmlns:w16cid","xmlns:w16":"xmlns:w16","xmlns:w16sdtdh":"xmlns:w16sdtdh","xmlns:w16se":"xmlns:w16se","xmlns:wpg":"xmlns:wpg","xmlns:wpi":"xmlns:wpi","xmlns:wne":"xmlns:wne","xmlns:wps":"xmlns:wps"})}}class UG extends o{constructor($){super("w:commentRangeStart");this.root.push(new G8({id:$}))}}class YG extends o{constructor($){super("w:commentRangeEnd");this.root.push(new G8({id:$}))}}class ZG extends o{constructor($){super("w:commentReference");this.root.push(new G8({id:$}))}}class L$ extends o{constructor({id:$,initials:U,author:Y,date:Z=new Date,children:J}){super("w:comment");this.root.push(new eJ({id:$,initials:U,author:Y,date:Z.toISOString()}));for(let G of J)this.root.push(G)}}class M$ extends o{constructor({children:$}){super("w:comments");Y0(this,"relationships"),this.root.push(new $G({"xmlns:cx":"http://schemas.microsoft.com/office/drawing/2014/chartex","xmlns:cx1":"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex","xmlns:cx2":"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex","xmlns:cx3":"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex","xmlns:cx4":"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex","xmlns:cx5":"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex","xmlns:cx6":"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex","xmlns:cx7":"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex","xmlns:cx8":"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex","xmlns:mc":"http://schemas.openxmlformats.org/markup-compatibility/2006","xmlns:aink":"http://schemas.microsoft.com/office/drawing/2016/ink","xmlns:am3d":"http://schemas.microsoft.com/office/drawing/2017/model3d","xmlns:o":"urn:schemas-microsoft-com:office:office","xmlns:r":"http://schemas.openxmlformats.org/officeDocument/2006/relationships","xmlns:m":"http://schemas.openxmlformats.org/officeDocument/2006/math","xmlns:v":"urn:schemas-microsoft-com:vml","xmlns:wp14":"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing","xmlns:wp":"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing","xmlns:w10":"urn:schemas-microsoft-com:office:word","xmlns:w":"http://schemas.openxmlformats.org/wordprocessingml/2006/main","xmlns:w14":"http://schemas.microsoft.com/office/word/2010/wordml","xmlns:w15":"http://schemas.microsoft.com/office/word/2012/wordml","xmlns:w16cex":"http://schemas.microsoft.com/office/word/2018/wordml/cex","xmlns:w16cid":"http://schemas.microsoft.com/office/word/2016/wordml/cid","xmlns:w16":"http://schemas.microsoft.com/office/word/2018/wordml","xmlns:w16sdtdh":"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash","xmlns:w16se":"http://schemas.microsoft.com/office/word/2015/wordml/symex","xmlns:wpg":"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup","xmlns:wpi":"http://schemas.microsoft.com/office/word/2010/wordprocessingInk","xmlns:wne":"http://schemas.microsoft.com/office/word/2006/wordml","xmlns:wps":"http://schemas.microsoft.com/office/word/2010/wordprocessingShape"}));for(let U of $)this.root.push(new L$(U));this.relationships=new W2}get Relationships(){return this.relationships}}class QG extends k0{constructor(){super("w:noBreakHyphen")}}class JG extends k0{constructor(){super("w:softHyphen")}}class GG extends k0{constructor(){super("w:dayShort")}}class KG extends k0{constructor(){super("w:monthShort")}}class qG extends k0{constructor(){super("w:yearShort")}}class XG extends k0{constructor(){super("w:dayLong")}}class VG extends k0{constructor(){super("w:monthLong")}}class BG extends k0{constructor(){super("w:yearLong")}}class LG extends k0{constructor(){super("w:annotationRef")}}class MG extends k0{constructor(){super("w:footnoteRef")}}class I$ extends k0{constructor(){super("w:endnoteRef")}}class IG extends k0{constructor(){super("w:separator")}}class wG extends k0{constructor(){super("w:continuationSeparator")}}class WG extends k0{constructor(){super("w:pgNum")}}class HG extends k0{constructor(){super("w:cr")}}class w$ extends k0{constructor(){super("w:tab")}}class jG extends k0{constructor(){super("w:lastRenderedPageBreak")}}var tX={LEFT:"left",CENTER:"center",RIGHT:"right"},eX={MARGIN:"margin",INDENT:"indent"},$V={NONE:"none",DOT:"dot",HYPHEN:"hyphen",UNDERSCORE:"underscore",MIDDLE_DOT:"middleDot"};class zG extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{alignment:"w:alignment",relativeTo:"w:relativeTo",leader:"w:leader"})}}class FG extends o{constructor($){super("w:ptab");this.root.push(new zG({alignment:$.alignment,relativeTo:$.relativeTo,leader:$.leader}))}}var NG={COLUMN:"column",PAGE:"page"};class W$ extends o{constructor($){super("w:br");this.root.push(new O0({type:$}))}}class RG extends C0{constructor(){super({});this.root.push(new W$(NG.PAGE))}}class DG extends C0{constructor(){super({});this.root.push(new W$(NG.COLUMN))}}class H$ extends o{constructor(){super("w:pageBreakBefore")}}var v2={AT_LEAST:"atLeast",EXACTLY:"exactly",EXACT:"exact",AUTO:"auto"},AG=({after:$,before:U,line:Y,lineRule:Z,beforeAutoSpacing:J,afterAutoSpacing:G})=>new B0({name:"w:spacing",attributes:{after:{key:"w:after",value:$},before:{key:"w:before",value:U},line:{key:"w:line",value:Y},lineRule:{key:"w:lineRule",value:Z},beforeAutoSpacing:{key:"w:beforeAutospacing",value:J},afterAutoSpacing:{key:"w:afterAutospacing",value:G}}}),UV={HEADING_1:"Heading1",HEADING_2:"Heading2",HEADING_3:"Heading3",HEADING_4:"Heading4",HEADING_5:"Heading5",HEADING_6:"Heading6",TITLE:"Title"},K1=($)=>new B0({name:"w:pStyle",attributes:{val:{key:"w:val",value:$}}}),O9={LEFT:"left",RIGHT:"right",CENTER:"center",BAR:"bar",CLEAR:"clear",DECIMAL:"decimal",END:"end",NUM:"num",START:"start"},YV={DOT:"dot",HYPHEN:"hyphen",MIDDLE_DOT:"middleDot",NONE:"none",UNDERSCORE:"underscore"},ZV={MAX:9026},PG=({type:$,position:U,leader:Y})=>new B0({name:"w:tab",attributes:{val:{key:"w:val",value:$},pos:{key:"w:pos",value:U},leader:{key:"w:leader",value:Y}}}),TG=($)=>new B0({name:"w:tabs",children:$.map((U)=>PG(U))});class V1 extends o{constructor($,U){super("w:numPr");this.root.push(new CG(U)),this.root.push(new OG($))}}class CG extends o{constructor($){super("w:ilvl");if($>9)throw Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");this.root.push(new O0({val:$}))}}class OG extends o{constructor($){super("w:numId");this.root.push(new O0({val:typeof $==="string"?`{${$}}`:$}))}}class r2 extends o{constructor(){super(...arguments);Y0(this,"fileChild",Symbol())}}class kG extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"r:id",history:"w:history",anchor:"w:anchor"})}}var QV={INTERNAL:"INTERNAL",EXTERNAL:"EXTERNAL"};class _2 extends o{constructor($,U,Y){super("w:hyperlink");Y0(this,"linkId"),this.linkId=U;let Z={history:1,anchor:Y?Y:void 0,id:!Y?`rId${this.linkId}`:void 0},J=new kG(Z);this.root.push(J),$.forEach((G)=>{this.root.push(G)})}}class j$ extends _2{constructor($){super($.children,R1(),$.anchor)}}class K8 extends o{constructor($){super("w:externalHyperlink");this.options=$}}class EG extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",name:"w:name"})}}class SG extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class z${constructor($){Y0(this,"bookmarkUniqueNumericId",oQ()),Y0(this,"start"),Y0(this,"children"),Y0(this,"end");let U=this.bookmarkUniqueNumericId();this.start=new F$($.id,U),this.children=$.children,this.end=new N$(U)}}class F$ extends o{constructor($,U){super("w:bookmarkStart");let Y=new EG({name:$,id:U});this.root.push(Y)}}class N$ extends o{constructor($){super("w:bookmarkEnd");let U=new SG({id:$});this.root.push(U)}}var vG=(($)=>{return $.NONE="none",$.RELATIVE="relative",$.NO_CONTEXT="no_context",$.FULL_CONTEXT="full_context",$})(vG||{}),JV={["relative"]:"\\r",["no_context"]:"\\n",["full_context"]:"\\w",["none"]:void 0};class _G extends J8{constructor($,U,Y={}){let{hyperlink:Z=!0,referenceFormat:J="full_context"}=Y,G=`REF ${$}`,X=[...Z?["\\h"]:[],...[JV[J]].filter((B)=>!!B)],Q=`${G} ${X.join(" ")}`;super(Q,U)}}var yG=($)=>new B0({name:"w:outlineLvl",attributes:{val:{key:"w:val",value:$}}});class bG extends o{constructor($,U={}){super("w:instrText");this.root.push(new x0({space:g0.PRESERVE}));let Y=`PAGEREF ${$}`;if(U.hyperlink)Y=`${Y} \\h`;if(U.useRelativePosition)Y=`${Y} \\p`;this.root.push(Y)}}class gG extends C0{constructor($,U={}){super({children:[$2(!0),new bG($,U),U2()]})}}var GV={ANSI:"00",DEFAULT:"01",SYMBOL:"02",MAC:"4D",JIS:"80",HANGUL:"81",JOHAB:"82",GB_2312:"86",CHINESEBIG5:"88",GREEK:"A1",TURKISH:"A2",VIETNAMESE:"A3",HEBREW:"B1",ARABIC:"B2",BALTIC:"BA",RUSSIAN:"CC",THAI:"DE",EASTEUROPE:"EE",OEM:"FF"},_1=({id:$,fontKey:U,subsetted:Y},Z)=>new B0({name:Z,attributes:W0({id:{key:"r:id",value:$}},U?{fontKey:{key:"w:fontKey",value:`{${U}}`}}:{}),children:[...Y?[new X0("w:subsetted",Y)]:[]]}),KV=({name:$,altName:U,panose1:Y,charset:Z,family:J,notTrueType:G,pitch:X,sig:Q,embedRegular:B,embedBold:F,embedItalic:z,embedBoldItalic:W})=>new B0({name:"w:font",attributes:{name:{key:"w:name",value:$}},children:[...U?[u2("w:altName",U)]:[],...Y?[u2("w:panose1",Y)]:[],...Z?[u2("w:charset",Z)]:[],u2("w:family",J),...G?[new X0("w:notTrueType",G)]:[],u2("w:pitch",X),...Q?[new B0({name:"w:sig",attributes:{usb0:{key:"w:usb0",value:Q.usb0},usb1:{key:"w:usb1",value:Q.usb1},usb2:{key:"w:usb2",value:Q.usb2},usb3:{key:"w:usb3",value:Q.usb3},csb0:{key:"w:csb0",value:Q.csb0},csb1:{key:"w:csb1",value:Q.csb1}}})]:[],...B?[_1(B,"w:embedRegular")]:[],...F?[_1(F,"w:embedBold")]:[],...z?[_1(z,"w:embedItalic")]:[],...W?[_1(W,"w:embedBoldItalic")]:[]]}),qV=({name:$,index:U,fontKey:Y,characterSet:Z})=>KV({name:$,sig:{usb0:"E0002AFF",usb1:"C000247B",usb2:"00000009",usb3:"00000000",csb0:"000001FF",csb1:"00000000"},charset:Z,family:"auto",pitch:"variable",embedRegular:{fontKey:Y,id:`rId${U}`}}),XV=($)=>new B0({name:"w:fonts",attributes:{mc:{key:"xmlns:mc",value:"http://schemas.openxmlformats.org/markup-compatibility/2006"},r:{key:"xmlns:r",value:"http://schemas.openxmlformats.org/officeDocument/2006/relationships"},w:{key:"xmlns:w",value:"http://schemas.openxmlformats.org/wordprocessingml/2006/main"},w14:{key:"xmlns:w14",value:"http://schemas.microsoft.com/office/word/2010/wordml"},w15:{key:"xmlns:w15",value:"http://schemas.microsoft.com/office/word/2012/wordml"},w16cex:{key:"xmlns:w16cex",value:"http://schemas.microsoft.com/office/word/2018/wordml/cex"},w16cid:{key:"xmlns:w16cid",value:"http://schemas.microsoft.com/office/word/2016/wordml/cid"},w16:{key:"xmlns:w16",value:"http://schemas.microsoft.com/office/word/2018/wordml"},w16sdtdh:{key:"xmlns:w16sdtdh",value:"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash"},w16se:{key:"xmlns:w16se",value:"http://schemas.microsoft.com/office/word/2015/wordml/symex"},Ignorable:{key:"mc:Ignorable",value:"w14 w15 w16se w16cid w16 w16cex w16sdtdh"}},children:$.map((U,Y)=>qV({name:U.name,index:Y+1,fontKey:U.fontKey,characterSet:U.characterSet}))});class R${constructor($){Y0(this,"fontTable"),Y0(this,"relationships"),Y0(this,"fontOptionsWithKey",[]),this.options=$,this.fontOptionsWithKey=$.map((U)=>R0(W0({},U),{fontKey:tQ()})),this.fontTable=XV(this.fontOptionsWithKey),this.relationships=new W2;for(let U=0;U<$.length;U++)this.relationships.addRelationship(U+1,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/font",`fonts/${$[U].name}.odttf`)}get View(){return this.fontTable}get Relationships(){return this.relationships}}var VV=()=>new B0({name:"w:wordWrap",attributes:{val:{key:"w:val",value:0}}}),BV={NONE:"none",DROP:"drop",MARGIN:"margin"},LV={MARGIN:"margin",PAGE:"page",TEXT:"text"},MV={AROUND:"around",AUTO:"auto",NONE:"none",NOT_BESIDE:"notBeside",THROUGH:"through",TIGHT:"tight"},xG=($)=>{var U,Y;return new B0({name:"w:framePr",attributes:{anchorLock:{key:"w:anchorLock",value:$.anchorLock},dropCap:{key:"w:dropCap",value:$.dropCap},width:{key:"w:w",value:$.width},height:{key:"w:h",value:$.height},x:{key:"w:x",value:$.position?$.position.x:void 0},y:{key:"w:y",value:$.position?$.position.y:void 0},anchorHorizontal:{key:"w:hAnchor",value:$.anchor.horizontal},anchorVertical:{key:"w:vAnchor",value:$.anchor.vertical},spaceHorizontal:{key:"w:hSpace",value:(U=$.space)==null?void 0:U.horizontal},spaceVertical:{key:"w:vSpace",value:(Y=$.space)==null?void 0:Y.vertical},rule:{key:"w:hRule",value:$.rule},alignmentX:{key:"w:xAlign",value:$.alignment?$.alignment.x:void 0},alignmentY:{key:"w:yAlign",value:$.alignment?$.alignment.y:void 0},lines:{key:"w:lines",value:$.lines},wrap:{key:"w:wrap",value:$.wrap}}})};class Z2 extends Q2{constructor($){var U,Y;super("w:pPr",$==null?void 0:$.includeIfEmpty);if(Y0(this,"numberingReferences",[]),!$)return this;if($.heading)this.push(K1($.heading));if($.bullet)this.push(K1("ListParagraph"));if($.numbering){if(!$.style&&!$.heading){if(!$.numbering.custom)this.push(K1("ListParagraph"))}}if($.style)this.push(K1($.style));if($.keepNext!==void 0)this.push(new X0("w:keepNext",$.keepNext));if($.keepLines!==void 0)this.push(new X0("w:keepLines",$.keepLines));if($.pageBreakBefore)this.push(new H$);if($.frame)this.push(xG($.frame));if($.widowControl!==void 0)this.push(new X0("w:widowControl",$.widowControl));if($.bullet)this.push(new V1(1,$.bullet.level));if($.numbering)this.numberingReferences.push({reference:$.numbering.reference,instance:(U=$.numbering.instance)!=null?U:0}),this.push(new V1(`${$.numbering.reference}-${(Y=$.numbering.instance)!=null?Y:0}`,$.numbering.level));else if($.numbering===!1)this.push(new V1(0,0));if($.border)this.push(new o9($.border));if($.thematicBreak)this.push(new t9);if($.shading)this.push(j1($.shading));if($.wordWrap)this.push(VV());if($.overflowPunctuation)this.push(new X0("w:overflowPunct",$.overflowPunctuation));let Z=[...$.rightTabStop!==void 0?[{type:O9.RIGHT,position:$.rightTabStop}]:[],...$.tabStops?$.tabStops:[],...$.leftTabStop!==void 0?[{type:O9.LEFT,position:$.leftTabStop}]:[]];if(Z.length>0)this.push(TG(Z));if($.bidirectional!==void 0)this.push(new X0("w:bidi",$.bidirectional));if($.spacing)this.push(AG($.spacing));if($.indent)this.push(EQ($.indent));if($.contextualSpacing!==void 0)this.push(new X0("w:contextualSpacing",$.contextualSpacing));if($.alignment)this.push(n9($.alignment));if($.outlineLevel!==void 0)this.push(yG($.outlineLevel));if($.suppressLineNumbers!==void 0)this.push(new X0("w:suppressLineNumbers",$.suppressLineNumbers));if($.autoSpaceEastAsianText!==void 0)this.push(new X0("w:autoSpaceDN",$.autoSpaceEastAsianText));if($.run)this.push(new Q$($.run));if($.revision)this.push(new D$($.revision))}push($){this.root.push($)}prepForXml($){if(!($.viewWrapper instanceof R$))for(let U of this.numberingReferences)$.file.Numbering.createConcreteNumberingInstance(U.reference,U.instance);return super.prepForXml($)}}class D$ extends o{constructor($){super("w:pPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.root.push(new Z2(R0(W0({},$),{includeIfEmpty:!0})))}}class h0 extends r2{constructor($){super("w:p");if(Y0(this,"properties"),typeof $==="string")return this.properties=new Z2({}),this.root.push(this.properties),this.root.push(new p2($)),this;if(this.properties=new Z2($),this.root.push(this.properties),$.text)this.root.push(new p2($.text));if($.children)for(let U of $.children){if(U instanceof z$){this.root.push(U.start);for(let Y of U.children)this.root.push(Y);this.root.push(U.end);continue}this.root.push(U)}}prepForXml($){for(let U of this.root)if(U instanceof K8){let Y=this.root.indexOf(U),Z=new _2(U.options.children,R1());$.viewWrapper.Relationships.addRelationship(Z.linkId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",U.options.link,tJ.EXTERNAL),this.root[Y]=Z}return super.prepForXml($)}addRunToFront($){return this.root.splice(1,0,$),this}}var IV=class extends o{constructor(U){super("m:oMath");for(let Y of U.children)this.root.push(Y)}};class fG extends o{constructor($){super("m:t");this.root.push($)}}class hG extends o{constructor($){super("m:r");this.root.push(new fG($))}}class A$ extends o{constructor($){super("m:den");for(let U of $)this.root.push(U)}}class P$ extends o{constructor($){super("m:num");for(let U of $)this.root.push(U)}}class uG extends o{constructor($){super("m:f");this.root.push(new P$($.numerator)),this.root.push(new A$($.denominator))}}var dG=({accent:$})=>new B0({name:"m:chr",attributes:{accent:{key:"m:val",value:$}}}),y0=({children:$})=>new B0({name:"m:e",children:$}),cG=({value:$})=>new B0({name:"m:limLoc",attributes:{value:{key:"m:val",value:$||"undOvr"}}}),wV=()=>new B0({name:"m:subHide",attributes:{hide:{key:"m:val",value:1}}}),WV=()=>new B0({name:"m:supHide",attributes:{hide:{key:"m:val",value:1}}}),T$=({accent:$,hasSuperScript:U,hasSubScript:Y,limitLocationVal:Z})=>new B0({name:"m:naryPr",children:[...$?[dG({accent:$})]:[],cG({value:Z}),...!U?[WV()]:[],...!Y?[wV()]:[]]}),s2=({children:$})=>new B0({name:"m:sub",children:$}),n2=({children:$})=>new B0({name:"m:sup",children:$});class mG extends o{constructor($){super("m:nary");if(this.root.push(T$({accent:"∑",hasSuperScript:!!$.superScript,hasSubScript:!!$.subScript})),$.subScript)this.root.push(s2({children:$.subScript}));if($.superScript)this.root.push(n2({children:$.superScript}));this.root.push(y0({children:$.children}))}}class lG extends o{constructor($){super("m:nary");if(this.root.push(T$({accent:"",hasSuperScript:!!$.superScript,hasSubScript:!!$.subScript,limitLocationVal:"subSup"})),$.subScript)this.root.push(s2({children:$.subScript}));if($.superScript)this.root.push(n2({children:$.superScript}));this.root.push(y0({children:$.children}))}}class q8 extends o{constructor($){super("m:lim");for(let U of $)this.root.push(U)}}class aG extends o{constructor($){super("m:limUpp");this.root.push(y0({children:$.children})),this.root.push(new q8($.limit))}}class pG extends o{constructor($){super("m:limLow");this.root.push(y0({children:$.children})),this.root.push(new q8($.limit))}}var iG=()=>new B0({name:"m:sSupPr"});class rG extends o{constructor($){super("m:sSup");this.root.push(iG()),this.root.push(y0({children:$.children})),this.root.push(n2({children:$.superScript}))}}var sG=()=>new B0({name:"m:sSubPr"});class nG extends o{constructor($){super("m:sSub");this.root.push(sG()),this.root.push(y0({children:$.children})),this.root.push(s2({children:$.subScript}))}}var oG=()=>new B0({name:"m:sSubSupPr"});class tG extends o{constructor($){super("m:sSubSup");this.root.push(oG()),this.root.push(y0({children:$.children})),this.root.push(s2({children:$.subScript})),this.root.push(n2({children:$.superScript}))}}var eG=()=>new B0({name:"m:sPrePr"});class $K extends B0{constructor({children:$,subScript:U,superScript:Y}){super({name:"m:sPre",children:[eG(),y0({children:$}),s2({children:U}),n2({children:Y})]})}}var HV="";class C$ extends o{constructor($){super("m:deg");if($)for(let U of $)this.root.push(U)}}class UK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{hide:"m:val"})}}class YK extends o{constructor(){super("m:degHide");this.root.push(new UK({hide:1}))}}class O$ extends o{constructor($){super("m:radPr");if(!$)this.root.push(new YK)}}class ZK extends o{constructor($){super("m:rad");this.root.push(new O$(!!$.degree)),this.root.push(new C$($.degree)),this.root.push(y0({children:$.children}))}}class k$ extends o{constructor($){super("m:fName");for(let U of $)this.root.push(U)}}class E$ extends o{constructor(){super("m:funcPr")}}class QK extends o{constructor($){super("m:func");this.root.push(new E$),this.root.push(new k$($.name)),this.root.push(y0({children:$.children}))}}var jV=({character:$})=>new B0({name:"m:begChr",attributes:{character:{key:"m:val",value:$}}}),zV=({character:$})=>new B0({name:"m:endChr",attributes:{character:{key:"m:val",value:$}}}),X8=({characters:$})=>new B0({name:"m:dPr",children:$?[jV({character:$.beginningCharacter}),zV({character:$.endingCharacter})]:[]});class JK extends o{constructor($){super("m:d");this.root.push(X8({})),this.root.push(y0({children:$.children}))}}class GK extends o{constructor($){super("m:d");this.root.push(X8({characters:{beginningCharacter:"[",endingCharacter:"]"}})),this.root.push(y0({children:$.children}))}}class KK extends o{constructor($){super("m:d");this.root.push(X8({characters:{beginningCharacter:"{",endingCharacter:"}"}})),this.root.push(y0({children:$.children}))}}class qK extends o{constructor($){super("m:d");this.root.push(X8({characters:{beginningCharacter:"〈",endingCharacter:"〉"}})),this.root.push(y0({children:$.children}))}}var FV=($)=>new B0({name:"w:gridCol",attributes:$!==void 0?{width:{key:"w:w",value:T0($)}}:void 0});class S$ extends o{constructor($,U){super("w:tblGrid");for(let Y of $)this.root.push(FV(Y));if(U)this.root.push(new VK(U))}}class XK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class VK extends o{constructor($){super("w:tblGridChange");this.root.push(new XK({id:$.id})),this.root.push(new S$($.columnWidths))}}class BK extends o{constructor($){super("w:ins");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.addChildElement(new p2($))}}class LK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("PAGE")}}class MK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("NUMPAGES")}}class IK extends o{constructor(){super("w:delInstrText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push("SECTIONPAGES")}}class k9 extends o{constructor($){super("w:delText");this.root.push(new x0({space:g0.PRESERVE})),this.root.push($)}}class wK extends o{constructor($){super("w:del");Y0(this,"deletedTextRunWrapper"),this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.deletedTextRunWrapper=new WK($),this.addChildElement(this.deletedTextRunWrapper)}}class WK extends o{constructor($){super("w:r");if(this.root.push(new J2($)),$.children)for(let U of $.children){if(typeof U==="string"){switch(U){case N2.CURRENT:this.root.push($2()),this.root.push(new LK),this.root.push(I2()),this.root.push(U2());break;case N2.TOTAL_PAGES:this.root.push($2()),this.root.push(new MK),this.root.push(I2()),this.root.push(U2());break;case N2.TOTAL_PAGES_IN_SECTION:this.root.push($2()),this.root.push(new IK),this.root.push(I2()),this.root.push(U2());break;default:this.root.push(new k9(U));break}continue}this.root.push(U)}else if($.text)this.root.push(new k9($.text));if($.break)for(let U=0;U<$.break;U++)this.root.splice(1,0,SQ())}}class v$ extends o{constructor($){super("w:ins");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}class _$ extends o{constructor($){super("w:del");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}class y$ extends o{constructor($){super("w:cellIns");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}class b$ extends o{constructor($){super("w:cellDel");this.root.push(new _0({id:$.id,author:$.author,date:$.date}))}}var NV={CONTINUE:"cont",RESTART:"rest"};class g$ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id",author:"w:author",date:"w:date",verticalMerge:"w:vMerge",verticalMergeOriginal:"w:vMergeOrig"})}}class x$ extends o{constructor($){super("w:cellMerge");this.root.push(new g$($))}}var HK={TOP:"top",CENTER:"center",BOTTOM:"bottom"},jK=R0(W0({},HK),{BOTH:"both"}),RV=jK,f$=($)=>new B0({name:"w:vAlign",attributes:{verticalAlign:{key:"w:val",value:$}}}),zK=({marginUnitType:$=l1.DXA,top:U,left:Y,bottom:Z,right:J})=>[{name:"w:top",size:U},{name:"w:left",size:Y},{name:"w:bottom",size:Z},{name:"w:right",size:J}].filter((G)=>G.size!==void 0).map(({name:G,size:X})=>M1(G,{type:$,size:X})),DV=($)=>{let U=zK($);if(U.length===0)return;return new B0({name:"w:tblCellMar",children:U})},AV=($)=>{let U=zK($);if(U.length===0)return;return new B0({name:"w:tcMar",children:U})},l1={AUTO:"auto",DXA:"dxa",NIL:"nil",PERCENTAGE:"pct"},M1=($,{type:U=l1.AUTO,size:Y})=>{let Z=Y;if(U===l1.PERCENTAGE&&typeof Y==="number")Z=`${Y}%`;return new B0({name:$,attributes:{type:{key:"w:type",value:U},size:{key:"w:w",value:s9(Z)}}})};class h$ extends Q2{constructor($){super("w:tcBorders");if($.top)this.root.push(N0("w:top",$.top));if($.start)this.root.push(N0("w:start",$.start));if($.left)this.root.push(N0("w:left",$.left));if($.bottom)this.root.push(N0("w:bottom",$.bottom));if($.end)this.root.push(N0("w:end",$.end));if($.right)this.root.push(N0("w:right",$.right))}}class FK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class u$ extends o{constructor($){super("w:gridSpan");this.root.push(new FK({val:S0($)}))}}var d$={CONTINUE:"continue",RESTART:"restart"};class NK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class a1 extends o{constructor($){super("w:vMerge");this.root.push(new NK({val:$}))}}var PV={BOTTOM_TO_TOP_LEFT_TO_RIGHT:"btLr",LEFT_TO_RIGHT_TOP_TO_BOTTOM:"lrTb",TOP_TO_BOTTOM_RIGHT_TO_LEFT:"tbRl"};class RK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class c$ extends o{constructor($){super("w:textDirection");this.root.push(new RK({val:$}))}}class m$ extends Q2{constructor($){super("w:tcPr",$.includeIfEmpty);if($.width)this.root.push(M1("w:tcW",$.width));if($.columnSpan)this.root.push(new u$($.columnSpan));if($.verticalMerge)this.root.push(new a1($.verticalMerge));else if($.rowSpan&&$.rowSpan>1)this.root.push(new a1(d$.RESTART));if($.borders)this.root.push(new h$($.borders));if($.shading)this.root.push(j1($.shading));if($.margins){let U=AV($.margins);if(U)this.root.push(U)}if($.textDirection)this.root.push(new c$($.textDirection));if($.verticalAlign)this.root.push(f$($.verticalAlign));if($.insertion)this.root.push(new y$($.insertion));if($.deletion)this.root.push(new b$($.deletion));if($.revision)this.root.push(new DK($.revision));if($.cellMerge)this.root.push(new x$($.cellMerge))}}class DK extends o{constructor($){super("w:tcPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.root.push(new m$(R0(W0({},$),{includeIfEmpty:!0})))}}class V8 extends o{constructor($){super("w:tc");this.options=$,this.root.push(new m$($));for(let U of $.children)this.root.push(U)}prepForXml($){if(!(this.root[this.root.length-1]instanceof h0))this.root.push(new h0({}));return super.prepForXml($)}}var x2={style:Q8.NONE,size:0,color:"auto"},f2={style:Q8.SINGLE,size:4,color:"auto"};class B8 extends o{constructor($){var U,Y,Z,J,G,X;super("w:tblBorders");this.root.push(N0("w:top",(U=$.top)!=null?U:f2)),this.root.push(N0("w:left",(Y=$.left)!=null?Y:f2)),this.root.push(N0("w:bottom",(Z=$.bottom)!=null?Z:f2)),this.root.push(N0("w:right",(J=$.right)!=null?J:f2)),this.root.push(N0("w:insideH",(G=$.insideHorizontal)!=null?G:f2)),this.root.push(N0("w:insideV",(X=$.insideVertical)!=null?X:f2))}}Y0(B8,"NONE",{top:x2,bottom:x2,left:x2,right:x2,insideHorizontal:x2,insideVertical:x2});var TV={MARGIN:"margin",PAGE:"page",TEXT:"text"},CV={CENTER:"center",INSIDE:"inside",LEFT:"left",OUTSIDE:"outside",RIGHT:"right"},OV={CENTER:"center",INSIDE:"inside",BOTTOM:"bottom",OUTSIDE:"outside",INLINE:"inline",TOP:"top"},kV={NEVER:"never",OVERLAP:"overlap"},EV=($)=>new B0({name:"w:tblOverlap",attributes:{val:{key:"w:val",value:$}}}),AK=({horizontalAnchor:$,verticalAnchor:U,absoluteHorizontalPosition:Y,relativeHorizontalPosition:Z,absoluteVerticalPosition:J,relativeVerticalPosition:G,bottomFromText:X,topFromText:Q,leftFromText:B,rightFromText:F,overlap:z})=>new B0({name:"w:tblpPr",attributes:{leftFromText:{key:"w:leftFromText",value:B===void 0?void 0:T0(B)},rightFromText:{key:"w:rightFromText",value:F===void 0?void 0:T0(F)},topFromText:{key:"w:topFromText",value:Q===void 0?void 0:T0(Q)},bottomFromText:{key:"w:bottomFromText",value:X===void 0?void 0:T0(X)},absoluteHorizontalPosition:{key:"w:tblpX",value:Y===void 0?void 0:e0(Y)},absoluteVerticalPosition:{key:"w:tblpY",value:J===void 0?void 0:e0(J)},horizontalAnchor:{key:"w:horzAnchor",value:$},relativeHorizontalPosition:{key:"w:tblpXSpec",value:Z},relativeVerticalPosition:{key:"w:tblpYSpec",value:G},verticalAnchor:{key:"w:vertAnchor",value:U}},children:z?[EV(z)]:void 0}),SV={AUTOFIT:"autofit",FIXED:"fixed"},PK=($)=>new B0({name:"w:tblLayout",attributes:{type:{key:"w:type",value:$}}}),vV={DXA:"dxa"},TK=({type:$=vV.DXA,value:U})=>new B0({name:"w:tblCellSpacing",attributes:{type:{key:"w:type",value:$},value:{key:"w:w",value:s9(U)}}}),CK=({firstRow:$,lastRow:U,firstColumn:Y,lastColumn:Z,noHBand:J,noVBand:G})=>new B0({name:"w:tblLook",attributes:{firstRow:{key:"w:firstRow",value:$},lastRow:{key:"w:lastRow",value:U},firstColumn:{key:"w:firstColumn",value:Y},lastColumn:{key:"w:lastColumn",value:Z},noHBand:{key:"w:noHBand",value:J},noVBand:{key:"w:noVBand",value:G}}});class L8 extends Q2{constructor($){super("w:tblPr",$.includeIfEmpty);if($.style)this.root.push(new Y2("w:tblStyle",$.style));if($.float)this.root.push(AK($.float));if($.visuallyRightToLeft!==void 0)this.root.push(new X0("w:bidiVisual",$.visuallyRightToLeft));if($.width)this.root.push(M1("w:tblW",$.width));if($.alignment)this.root.push(n9($.alignment));if($.indent)this.root.push(M1("w:tblInd",$.indent));if($.borders)this.root.push(new B8($.borders));if($.shading)this.root.push(j1($.shading));if($.layout)this.root.push(PK($.layout));if($.cellMargin){let U=DV($.cellMargin);if(U)this.root.push(U)}if($.tableLook)this.root.push(CK($.tableLook));if($.cellSpacing)this.root.push(TK($.cellSpacing));if($.revision)this.root.push(new OK($.revision))}}class OK extends o{constructor($){super("w:tblPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.root.push(new L8(R0(W0({},$),{includeIfEmpty:!0})))}}class kK extends r2{constructor({rows:$,width:U,columnWidths:Y=Array(Math.max(...$.map((H)=>H.CellCount))).fill(100),columnWidthsRevision:Z,margins:J,indent:G,float:X,layout:Q,style:B,borders:F,alignment:z,visuallyRightToLeft:W,tableLook:k,cellSpacing:D,revision:C}){super("w:tbl");this.root.push(new L8({borders:F!=null?F:{},width:U!=null?U:{size:100},indent:G,float:X,layout:Q,style:B,alignment:z,cellMargin:J,visuallyRightToLeft:W,tableLook:k,cellSpacing:D,revision:C})),this.root.push(new S$(Y,Z));for(let H of $)this.root.push(H);$.forEach((H,O)=>{if(O===$.length-1)return;let V=0;H.cells.forEach((j)=>{if(j.options.rowSpan&&j.options.rowSpan>1){let M=new V8({rowSpan:j.options.rowSpan-1,columnSpan:j.options.columnSpan,borders:j.options.borders,children:[],verticalMerge:d$.CONTINUE});$[O+1].addCellToColumnIndex(M,V)}V+=j.options.columnSpan||1})})}}var _V={AUTO:"auto",ATLEAST:"atLeast",EXACT:"exact"},EK=($,U)=>new B0({name:"w:trHeight",attributes:{value:{key:"w:val",value:T0($)},rule:{key:"w:hRule",value:U}}});class M8 extends Q2{constructor($){super("w:trPr",$.includeIfEmpty);if($.cantSplit!==void 0)this.root.push(new X0("w:cantSplit",$.cantSplit));if($.tableHeader!==void 0)this.root.push(new X0("w:tblHeader",$.tableHeader));if($.height)this.root.push(EK($.height.value,$.height.rule));if($.cellSpacing)this.root.push(TK($.cellSpacing));if($.insertion)this.root.push(new v$($.insertion));if($.deletion)this.root.push(new _$($.deletion));if($.revision)this.root.push(new l$($.revision))}}class l$ extends o{constructor($){super("w:trPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.root.push(new M8(R0(W0({},$),{includeIfEmpty:!0})))}}class SK extends o{constructor($){super("w:tr");this.options=$,this.root.push(new M8($));for(let U of $.children)this.root.push(U)}get CellCount(){return this.options.children.length}get cells(){return this.root.filter(($)=>$ instanceof V8)}addCellToIndex($,U){this.root.splice(U+1,0,$)}addCellToColumnIndex($,U){let Y=this.columnIndexToRootIndex(U,!0);this.addCellToIndex($,Y-1)}rootIndexToColumnIndex($){if($<1||$>=this.root.length)throw Error(`cell 'rootIndex' should between 1 to ${this.root.length-1}`);let U=0;for(let Y=1;Y<$;Y++){let Z=this.root[Y];U+=Z.options.columnSpan||1}return U}columnIndexToRootIndex($,U=!1){if($<0)throw Error("cell 'columnIndex' should not less than zero");let Y=0,Z=1;while(Y<=$){if(Z>=this.root.length)if(U)return this.root.length;else throw Error(`cell 'columnIndex' should not great than ${Y-1}`);let J=this.root[Z];Z+=1,Y+=J&&J.options.columnSpan||1}return Z-1}}class vK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns",vt:"xmlns:vt"})}}class _K extends o{constructor(){super("Properties");this.root.push(new vK({xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"}))}}class yK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns"})}}var B2=($,U)=>new B0({name:"Default",attributes:{contentType:{key:"ContentType",value:$},extension:{key:"Extension",value:U}}}),f0=($,U)=>new B0({name:"Override",attributes:{contentType:{key:"ContentType",value:$},partName:{key:"PartName",value:U}}});class bK extends o{constructor(){super("Types");this.root.push(new yK({xmlns:"http://schemas.openxmlformats.org/package/2006/content-types"})),this.root.push(B2("image/png","png")),this.root.push(B2("image/jpeg","jpeg")),this.root.push(B2("image/jpeg","jpg")),this.root.push(B2("image/bmp","bmp")),this.root.push(B2("image/gif","gif")),this.root.push(B2("image/svg+xml","svg")),this.root.push(B2("application/vnd.openxmlformats-package.relationships+xml","rels")),this.root.push(B2("application/xml","xml")),this.root.push(B2("application/vnd.openxmlformats-officedocument.obfuscatedFont","odttf")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml","/word/document.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml","/word/styles.xml")),this.root.push(f0("application/vnd.openxmlformats-package.core-properties+xml","/docProps/core.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.custom-properties+xml","/docProps/custom.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.extended-properties+xml","/docProps/app.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml","/word/numbering.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml","/word/footnotes.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml","/word/endnotes.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml","/word/settings.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml","/word/comments.xml")),this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml","/word/fontTable.xml"))}addFooter($){this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",`/word/footer${$}.xml`))}addHeader($){this.root.push(f0("application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml",`/word/header${$}.xml`))}}var p1={wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",cp:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",xsi:"http://www.w3.org/2001/XMLSchema-instance",cx:"http://schemas.microsoft.com/office/drawing/2014/chartex",cx1:"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex",cx2:"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex",cx3:"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex",cx4:"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex",cx5:"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex",cx6:"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex",cx7:"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex",cx8:"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex",aink:"http://schemas.microsoft.com/office/drawing/2016/ink",am3d:"http://schemas.microsoft.com/office/drawing/2017/model3d",w16cex:"http://schemas.microsoft.com/office/word/2018/wordml/cex",w16cid:"http://schemas.microsoft.com/office/word/2016/wordml/cid",w16:"http://schemas.microsoft.com/office/word/2018/wordml",w16sdtdh:"http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash",w16se:"http://schemas.microsoft.com/office/word/2015/wordml/symex"};class o2 extends I0{constructor($,U){super(W0({Ignorable:U},Object.fromEntries($.map((Y)=>[Y,p1[Y]]))));Y0(this,"xmlKeys",W0({Ignorable:"mc:Ignorable"},Object.fromEntries(Object.keys(p1).map((Y)=>[Y,`xmlns:${Y}`]))))}}class gK extends o{constructor($){super("cp:coreProperties");if(this.root.push(new o2(["cp","dc","dcterms","dcmitype","xsi"])),$.title)this.root.push(new L2("dc:title",$.title));if($.subject)this.root.push(new L2("dc:subject",$.subject));if($.creator)this.root.push(new L2("dc:creator",$.creator));if($.keywords)this.root.push(new L2("cp:keywords",$.keywords));if($.description)this.root.push(new L2("dc:description",$.description));if($.lastModifiedBy)this.root.push(new L2("cp:lastModifiedBy",$.lastModifiedBy));if($.revision)this.root.push(new L2("cp:revision",String($.revision)));this.root.push(new E9("dcterms:created")),this.root.push(new E9("dcterms:modified"))}}class xK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"xsi:type"})}}class E9 extends o{constructor($){super($);this.root.push(new xK({type:"dcterms:W3CDTF"})),this.root.push(OQ(new Date))}}class fK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{xmlns:"xmlns",vt:"xmlns:vt"})}}class hK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{formatId:"fmtid",pid:"pid",name:"name"})}}class uK extends o{constructor($,U){super("property");this.root.push(new hK({formatId:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:$.toString(),name:U.name})),this.root.push(new dK(U.value))}}class dK extends o{constructor($){super("vt:lpwstr");this.root.push($)}}class cK extends o{constructor($){super("Properties");Y0(this,"nextId"),Y0(this,"properties",[]),this.root.push(new fK({xmlns:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"})),this.nextId=2;for(let U of $)this.addCustomProperty(U)}prepForXml($){return this.properties.forEach((U)=>this.root.push(U)),super.prepForXml($)}addCustomProperty($){this.properties.push(new uK(this.nextId++,$))}}var mK=({space:$,count:U,separate:Y,equalWidth:Z,children:J})=>new B0({name:"w:cols",attributes:{space:{key:"w:space",value:$===void 0?void 0:T0($)},count:{key:"w:num",value:U===void 0?void 0:S0(U)},separate:{key:"w:sep",value:Y},equalWidth:{key:"w:equalWidth",value:Z}},children:!Z&&J?J:void 0}),yV={DEFAULT:"default",LINES:"lines",LINES_AND_CHARS:"linesAndChars",SNAP_TO_CHARS:"snapToChars"},lK=({type:$,linePitch:U,charSpace:Y})=>new B0({name:"w:docGrid",attributes:{type:{key:"w:type",value:$},linePitch:{key:"w:linePitch",value:S0(U)},charSpace:{key:"w:charSpace",value:Y?S0(Y):void 0}}}),E2={DEFAULT:"default",FIRST:"first",EVEN:"even"},S9={HEADER:"w:headerReference",FOOTER:"w:footerReference"},f1=($,U)=>new B0({name:$,attributes:{type:{key:"w:type",value:U.type||E2.DEFAULT},id:{key:"r:id",value:`rId${U.id}`}}}),bV={NEW_PAGE:"newPage",NEW_SECTION:"newSection",CONTINUOUS:"continuous"},aK=({countBy:$,start:U,restart:Y,distance:Z})=>new B0({name:"w:lnNumType",attributes:{countBy:{key:"w:countBy",value:$===void 0?void 0:S0($)},start:{key:"w:start",value:U===void 0?void 0:S0(U)},restart:{key:"w:restart",value:Y},distance:{key:"w:distance",value:Z===void 0?void 0:T0(Z)}}}),gV={ALL_PAGES:"allPages",FIRST_PAGE:"firstPage",NOT_FIRST_PAGE:"notFirstPage"},xV={PAGE:"page",TEXT:"text"},fV={BACK:"back",FRONT:"front"};class v9 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{display:"w:display",offsetFrom:"w:offsetFrom",zOrder:"w:zOrder"})}}class a$ extends Q2{constructor($){super("w:pgBorders");if(!$)return this;if($.pageBorders)this.root.push(new v9({display:$.pageBorders.display,offsetFrom:$.pageBorders.offsetFrom,zOrder:$.pageBorders.zOrder}));else this.root.push(new v9({}));if($.pageBorderTop)this.root.push(N0("w:top",$.pageBorderTop));if($.pageBorderLeft)this.root.push(N0("w:left",$.pageBorderLeft));if($.pageBorderBottom)this.root.push(N0("w:bottom",$.pageBorderBottom));if($.pageBorderRight)this.root.push(N0("w:right",$.pageBorderRight))}}var pK=($,U,Y,Z,J,G,X)=>new B0({name:"w:pgMar",attributes:{top:{key:"w:top",value:e0($)},right:{key:"w:right",value:T0(U)},bottom:{key:"w:bottom",value:e0(Y)},left:{key:"w:left",value:T0(Z)},header:{key:"w:header",value:T0(J)},footer:{key:"w:footer",value:T0(G)},gutter:{key:"w:gutter",value:T0(X)}}}),hV={HYPHEN:"hyphen",PERIOD:"period",COLON:"colon",EM_DASH:"emDash",EN_DASH:"endash"},iK=({start:$,formatType:U,separator:Y})=>new B0({name:"w:pgNumType",attributes:{start:{key:"w:start",value:$===void 0?void 0:S0($)},formatType:{key:"w:fmt",value:U},separator:{key:"w:chapSep",value:Y}}}),i1={PORTRAIT:"portrait",LANDSCAPE:"landscape"},rK=({width:$,height:U,orientation:Y,code:Z})=>{let J=T0($),G=T0(U);return new B0({name:"w:pgSz",attributes:{width:{key:"w:w",value:Y===i1.LANDSCAPE?G:J},height:{key:"w:h",value:Y===i1.LANDSCAPE?J:G},orientation:{key:"w:orient",value:Y},code:{key:"w:code",value:Z}}})},uV={LEFT_TO_RIGHT_TOP_TO_BOTTOM:"lrTb",TOP_TO_BOTTOM_RIGHT_TO_LEFT:"tbRl"};class sK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class p$ extends o{constructor($){super("w:textDirection");this.root.push(new sK({val:$}))}}var dV={NEXT_PAGE:"nextPage",NEXT_COLUMN:"nextColumn",CONTINUOUS:"continuous",EVEN_PAGE:"evenPage",ODD_PAGE:"oddPage"},nK=($)=>new B0({name:"w:type",attributes:{val:{key:"w:val",value:$}}}),F2={TOP:1440,RIGHT:1440,BOTTOM:1440,LEFT:1440,HEADER:708,FOOTER:708,GUTTER:0},h1={WIDTH:11906,HEIGHT:16838,ORIENTATION:i1.PORTRAIT};class I8 extends o{constructor({page:{size:{width:$=h1.WIDTH,height:U=h1.HEIGHT,orientation:Y=h1.ORIENTATION}={},margin:{top:Z=F2.TOP,right:J=F2.RIGHT,bottom:G=F2.BOTTOM,left:X=F2.LEFT,header:Q=F2.HEADER,footer:B=F2.FOOTER,gutter:F=F2.GUTTER}={},pageNumbers:z={},borders:W,textDirection:k}={},grid:{linePitch:D=360,charSpace:C,type:H}={},headerWrapperGroup:O={},footerWrapperGroup:V={},lineNumbers:j,titlePage:M,verticalAlign:L,column:A,type:y,revision:g}={}){super("w:sectPr");if(this.addHeaderFooterGroup(S9.HEADER,O),this.addHeaderFooterGroup(S9.FOOTER,V),y)this.root.push(nK(y));if(this.root.push(rK({width:$,height:U,orientation:Y})),this.root.push(pK(Z,J,G,X,Q,B,F)),W)this.root.push(new a$(W));if(j)this.root.push(aK(j));if(this.root.push(iK(z)),A)this.root.push(mK(A));if(L)this.root.push(f$(L));if(M!==void 0)this.root.push(new X0("w:titlePg",M));if(k)this.root.push(new p$(k));if(g)this.root.push(new i$(g));this.root.push(lK({linePitch:D,charSpace:C,type:H}))}addHeaderFooterGroup($,U){if(U.default)this.root.push(f1($,{type:E2.DEFAULT,id:U.default.View.ReferenceId}));if(U.first)this.root.push(f1($,{type:E2.FIRST,id:U.first.View.ReferenceId}));if(U.even)this.root.push(f1($,{type:E2.EVEN,id:U.even.View.ReferenceId}))}}class i$ extends o{constructor($){super("w:sectPrChange");this.root.push(new _0({id:$.id,author:$.author,date:$.date})),this.root.push(new I8($))}}class oK extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{width:"w:w",space:"w:space"})}}class tK extends o{constructor($){super("w:col");this.root.push(new oK({width:T0($.width),space:$.space===void 0?void 0:T0($.space)}))}}class r$ extends o{constructor(){super("w:body");Y0(this,"sections",[])}addSection($){let U=this.sections.pop();this.root.push(this.createSectionParagraph(U)),this.sections.push(new I8($))}prepForXml($){if(this.sections.length===1)this.root.splice(0,1),this.root.push(this.sections.pop());return super.prepForXml($)}push($){this.root.push($)}createSectionParagraph($){let U=new h0({}),Y=new Z2({});return Y.push($),U.addChildElement(Y),U}}class s$ extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{color:"w:color",themeColor:"w:themeColor",themeShade:"w:themeShade",themeTint:"w:themeTint"})}}class n$ extends o{constructor($){super("w:background");this.root.push(new s$({color:$.color===void 0?void 0:S2($.color),themeColor:$.themeColor,themeShade:$.themeShade===void 0?void 0:D9($.themeShade),themeTint:$.themeTint===void 0?void 0:D9($.themeTint)}))}}class eK extends o{constructor($){super("w:document");if(Y0(this,"body"),this.root.push(new o2(["wpc","mc","o","r","m","v","wp14","wp","w10","w","w14","w15","wpg","wpi","wne","wps","cx","cx1","cx2","cx3","cx4","cx5","cx6","cx7","cx8","aink","am3d","w16cex","w16cid","w16","w16sdtdh","w16se"],"w14 w15 wp14")),this.body=new r$,$.background)this.root.push(new n$($.background));this.root.push(this.body)}add($){return this.body.push($),this}get Body(){return this.body}}class $5{constructor($){Y0(this,"document"),Y0(this,"relationships"),this.document=new eK($),this.relationships=new W2}get View(){return this.document}get Relationships(){return this.relationships}}class U5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",Ignorable:"mc:Ignorable"})}}class Y5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"w:type",id:"w:id"})}}class Z5 extends C0{constructor(){super({style:"EndnoteReference"});this.root.push(new I$)}}var fZ={SEPARATOR:"separator",CONTINUATION_SEPARATOR:"continuationSeparator"};class u1 extends o{constructor($){super("w:endnote");this.root.push(new Y5({type:$.type,id:$.id}));for(let U=0;U<$.children.length;U++){let Y=$.children[U];if(U===0)Y.addRunToFront(new Z5);this.root.push(Y)}}}class Q5 extends o{constructor(){super("w:continuationSeparator")}}class o$ extends C0{constructor(){super({});this.root.push(new Q5)}}class J5 extends o{constructor(){super("w:separator")}}class t$ extends C0{constructor(){super({});this.root.push(new J5)}}class e$ extends o{constructor(){super("w:endnotes");this.root.push(new U5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",Ignorable:"w14 w15 wp14"}));let $=new u1({id:-1,type:fZ.SEPARATOR,children:[new h0({spacing:{after:0,line:240,lineRule:v2.AUTO},children:[new t$]})]});this.root.push($);let U=new u1({id:0,type:fZ.CONTINUATION_SEPARATOR,children:[new h0({spacing:{after:0,line:240,lineRule:v2.AUTO},children:[new o$]})]});this.root.push(U)}createEndnote($,U){let Y=new u1({id:$,children:U});this.root.push(Y)}}class G5{constructor(){Y0(this,"endnotes"),Y0(this,"relationships"),this.endnotes=new e$,this.relationships=new W2}get View(){return this.endnotes}get Relationships(){return this.relationships}}class K5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",cp:"xmlns:cp",dc:"xmlns:dc",dcterms:"xmlns:dcterms",dcmitype:"xmlns:dcmitype",xsi:"xmlns:xsi",type:"xsi:type"})}}var cV=class extends Y8{constructor(U,Y){super("w:ftr",Y);if(Y0(this,"refId"),this.refId=U,!Y)this.root.push(new K5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape"}))}get ReferenceId(){return this.refId}add(U){this.root.push(U)}};class $U{constructor($,U,Y){Y0(this,"footer"),Y0(this,"relationships"),this.media=$,this.footer=new cV(U,Y),this.relationships=new W2}add($){this.footer.add($)}addChildElement($){this.footer.addChildElement($)}get View(){return this.footer}get Relationships(){return this.relationships}get Media(){return this.media}}class q5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"w:type",id:"w:id"})}}class X5 extends o{constructor(){super("w:footnoteRef")}}class V5 extends C0{constructor(){super({style:"FootnoteReference"});this.root.push(new X5)}}var hZ={SEPERATOR:"separator",CONTINUATION_SEPERATOR:"continuationSeparator"};class d1 extends o{constructor($){super("w:footnote");this.root.push(new q5({type:$.type,id:$.id}));for(let U=0;U<$.children.length;U++){let Y=$.children[U];if(U===0)Y.addRunToFront(new V5);this.root.push(Y)}}}class B5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",Ignorable:"mc:Ignorable"})}}class UU extends o{constructor(){super("w:footnotes");this.root.push(new B5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",Ignorable:"w14 w15 wp14"}));let $=new d1({id:-1,type:hZ.SEPERATOR,children:[new h0({spacing:{after:0,line:240,lineRule:v2.AUTO},children:[new t$]})]});this.root.push($);let U=new d1({id:0,type:hZ.CONTINUATION_SEPERATOR,children:[new h0({spacing:{after:0,line:240,lineRule:v2.AUTO},children:[new o$]})]});this.root.push(U)}createFootNote($,U){let Y=new d1({id:$,children:U});this.root.push(Y)}}class L5{constructor(){Y0(this,"footnotess"),Y0(this,"relationships"),this.footnotess=new UU,this.relationships=new W2}get View(){return this.footnotess}get Relationships(){return this.relationships}}class M5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",cp:"xmlns:cp",dc:"xmlns:dc",dcterms:"xmlns:dcterms",dcmitype:"xmlns:dcmitype",xsi:"xmlns:xsi",type:"xsi:type",cx:"xmlns:cx",cx1:"xmlns:cx1",cx2:"xmlns:cx2",cx3:"xmlns:cx3",cx4:"xmlns:cx4",cx5:"xmlns:cx5",cx6:"xmlns:cx6",cx7:"xmlns:cx7",cx8:"xmlns:cx8",w16cid:"xmlns:w16cid",w16se:"xmlns:w16se"})}}var mV=class extends Y8{constructor(U,Y){super("w:hdr",Y);if(Y0(this,"refId"),this.refId=U,!Y)this.root.push(new M5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",cx:"http://schemas.microsoft.com/office/drawing/2014/chartex",cx1:"http://schemas.microsoft.com/office/drawing/2015/9/8/chartex",cx2:"http://schemas.microsoft.com/office/drawing/2015/10/21/chartex",cx3:"http://schemas.microsoft.com/office/drawing/2016/5/9/chartex",cx4:"http://schemas.microsoft.com/office/drawing/2016/5/10/chartex",cx5:"http://schemas.microsoft.com/office/drawing/2016/5/11/chartex",cx6:"http://schemas.microsoft.com/office/drawing/2016/5/12/chartex",cx7:"http://schemas.microsoft.com/office/drawing/2016/5/13/chartex",cx8:"http://schemas.microsoft.com/office/drawing/2016/5/14/chartex",w16cid:"http://schemas.microsoft.com/office/word/2016/wordml/cid",w16se:"http://schemas.microsoft.com/office/word/2015/wordml/symex"}))}get ReferenceId(){return this.refId}add(U){this.root.push(U)}};class YU{constructor($,U,Y){Y0(this,"header"),Y0(this,"relationships"),this.media=$,this.header=new mV(U,Y),this.relationships=new W2}add($){return this.header.add($),this}addChildElement($){this.header.addChildElement($)}get View(){return this.header}get Relationships(){return this.relationships}get Media(){return this.media}}class w8{constructor(){Y0(this,"map"),this.map=new Map}addImage($,U){this.map.set($,U)}get Array(){return Array.from(this.map.values())}}var lV="",n0={DECIMAL:"decimal",UPPER_ROMAN:"upperRoman",LOWER_ROMAN:"lowerRoman",UPPER_LETTER:"upperLetter",LOWER_LETTER:"lowerLetter",ORDINAL:"ordinal",CARDINAL_TEXT:"cardinalText",ORDINAL_TEXT:"ordinalText",HEX:"hex",CHICAGO:"chicago",IDEOGRAPH__DIGITAL:"ideographDigital",JAPANESE_COUNTING:"japaneseCounting",AIUEO:"aiueo",IROHA:"iroha",DECIMAL_FULL_WIDTH:"decimalFullWidth",DECIMAL_HALF_WIDTH:"decimalHalfWidth",JAPANESE_LEGAL:"japaneseLegal",JAPANESE_DIGITAL_TEN_THOUSAND:"japaneseDigitalTenThousand",DECIMAL_ENCLOSED_CIRCLE:"decimalEnclosedCircle",DECIMAL_FULL_WIDTH2:"decimalFullWidth2",AIUEO_FULL_WIDTH:"aiueoFullWidth",IROHA_FULL_WIDTH:"irohaFullWidth",DECIMAL_ZERO:"decimalZero",BULLET:"bullet",GANADA:"ganada",CHOSUNG:"chosung",DECIMAL_ENCLOSED_FULLSTOP:"decimalEnclosedFullstop",DECIMAL_ENCLOSED_PARENTHESES:"decimalEnclosedParen",DECIMAL_ENCLOSED_CIRCLE_CHINESE:"decimalEnclosedCircleChinese",IDEOGRAPH_ENCLOSED_CIRCLE:"ideographEnclosedCircle",IDEOGRAPH_TRADITIONAL:"ideographTraditional",IDEOGRAPH_ZODIAC:"ideographZodiac",IDEOGRAPH_ZODIAC_TRADITIONAL:"ideographZodiacTraditional",TAIWANESE_COUNTING:"taiwaneseCounting",IDEOGRAPH_LEGAL_TRADITIONAL:"ideographLegalTraditional",TAIWANESE_COUNTING_THOUSAND:"taiwaneseCountingThousand",TAIWANESE_DIGITAL:"taiwaneseDigital",CHINESE_COUNTING:"chineseCounting",CHINESE_LEGAL_SIMPLIFIED:"chineseLegalSimplified",CHINESE_COUNTING_THOUSAND:"chineseCountingThousand",KOREAN_DIGITAL:"koreanDigital",KOREAN_COUNTING:"koreanCounting",KOREAN_LEGAL:"koreanLegal",KOREAN_DIGITAL2:"koreanDigital2",VIETNAMESE_COUNTING:"vietnameseCounting",RUSSIAN_LOWER:"russianLower",RUSSIAN_UPPER:"russianUpper",NONE:"none",NUMBER_IN_DASH:"numberInDash",HEBREW1:"hebrew1",HEBREW2:"hebrew2",ARABIC_ALPHA:"arabicAlpha",ARABIC_ABJAD:"arabicAbjad",HINDI_VOWELS:"hindiVowels",HINDI_CONSONANTS:"hindiConsonants",HINDI_NUMBERS:"hindiNumbers",HINDI_COUNTING:"hindiCounting",THAI_LETTERS:"thaiLetters",THAI_NUMBERS:"thaiNumbers",THAI_COUNTING:"thaiCounting",BAHT_TEXT:"bahtText",DOLLAR_TEXT:"dollarText",CUSTOM:"custom"};class I5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{ilvl:"w:ilvl",tentative:"w15:tentative"})}}class w5 extends o{constructor($){super("w:numFmt");this.root.push(new O0({val:$}))}}class W5 extends o{constructor($){super("w:lvlText");this.root.push(new O0({val:$}))}}class H5 extends o{constructor($){super("w:lvlJc");this.root.push(new O0({val:$}))}}var aV={NOTHING:"nothing",SPACE:"space",TAB:"tab"};class j5 extends o{constructor($){super("w:suff");this.root.push(new O0({val:$}))}}class z5 extends o{constructor(){super("w:isLgl")}}class W8 extends o{constructor({level:$,format:U,text:Y,alignment:Z=m0.START,start:J=1,style:G,suffix:X,isLegalNumberingStyle:Q}){super("w:lvl");if(Y0(this,"paragraphProperties"),Y0(this,"runProperties"),this.root.push(new k2("w:start",S0(J))),U)this.root.push(new w5(U));if(X)this.root.push(new j5(X));if(Q)this.root.push(new z5);if(Y)this.root.push(new W5(Y));if(this.root.push(new H5(Z)),this.paragraphProperties=new Z2(G&&G.paragraph),this.runProperties=new J2(G&&G.run),this.root.push(this.paragraphProperties),this.root.push(this.runProperties),$>9)throw Error("Level cannot be greater than 9. Read more here: https://answers.microsoft.com/en-us/msoffice/forum/all/does-word-support-more-than-9-list-levels/d130fdcd-1781-446d-8c84-c6c79124e4d7");this.root.push(new I5({ilvl:S0($),tentative:1}))}}class ZU extends W8{}class F5 extends W8{}class N5 extends o{constructor($){super("w:multiLevelType");this.root.push(new O0({val:$}))}}class R5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{abstractNumId:"w:abstractNumId",restartNumberingAfterBreak:"w15:restartNumberingAfterBreak"})}}class r1 extends o{constructor($,U){super("w:abstractNum");Y0(this,"id"),this.root.push(new R5({abstractNumId:S0($),restartNumberingAfterBreak:0})),this.root.push(new N5("hybridMultilevel")),this.id=$;for(let Y of U)this.root.push(new ZU(Y))}}class D5 extends o{constructor($){super("w:abstractNumId");this.root.push(new O0({val:$}))}}class A5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{numId:"w:numId"})}}class s1 extends o{constructor($){super("w:num");if(Y0(this,"numId"),Y0(this,"reference"),Y0(this,"instance"),this.numId=$.numId,this.reference=$.reference,this.instance=$.instance,this.root.push(new A5({numId:S0($.numId)})),this.root.push(new D5(S0($.abstractNumId))),$.overrideLevels&&$.overrideLevels.length)for(let U of $.overrideLevels)this.root.push(new QU(U.num,U.start))}}class P5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{ilvl:"w:ilvl"})}}class QU extends o{constructor($,U){super("w:lvlOverride");if(this.root.push(new P5({ilvl:$})),U!==void 0)this.root.push(new C5(U))}}class T5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class C5 extends o{constructor($){super("w:startOverride");this.root.push(new T5({val:$}))}}class JU extends o{constructor($){super("w:numbering");Y0(this,"abstractNumberingMap",new Map),Y0(this,"concreteNumberingMap",new Map),Y0(this,"referenceConfigMap",new Map),Y0(this,"abstractNumUniqueNumericId",rQ()),Y0(this,"concreteNumUniqueNumericId",sQ()),this.root.push(new o2(["wpc","mc","o","r","m","v","wp14","wp","w10","w","w14","w15","wpg","wpi","wne","wps"],"w14 w15 wp14"));let U=new r1(this.abstractNumUniqueNumericId(),[{level:0,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:d0(0.5),hanging:d0(0.25)}}}},{level:1,format:n0.BULLET,text:"○",alignment:m0.LEFT,style:{paragraph:{indent:{left:d0(1),hanging:d0(0.25)}}}},{level:2,format:n0.BULLET,text:"■",alignment:m0.LEFT,style:{paragraph:{indent:{left:2160,hanging:d0(0.25)}}}},{level:3,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:2880,hanging:d0(0.25)}}}},{level:4,format:n0.BULLET,text:"○",alignment:m0.LEFT,style:{paragraph:{indent:{left:3600,hanging:d0(0.25)}}}},{level:5,format:n0.BULLET,text:"■",alignment:m0.LEFT,style:{paragraph:{indent:{left:4320,hanging:d0(0.25)}}}},{level:6,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:5040,hanging:d0(0.25)}}}},{level:7,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:5760,hanging:d0(0.25)}}}},{level:8,format:n0.BULLET,text:"●",alignment:m0.LEFT,style:{paragraph:{indent:{left:6480,hanging:d0(0.25)}}}}]);this.concreteNumberingMap.set("default-bullet-numbering",new s1({numId:1,abstractNumId:U.id,reference:"default-bullet-numbering",instance:0,overrideLevels:[{num:0,start:1}]})),this.abstractNumberingMap.set("default-bullet-numbering",U);for(let Y of $.config)this.abstractNumberingMap.set(Y.reference,new r1(this.abstractNumUniqueNumericId(),Y.levels)),this.referenceConfigMap.set(Y.reference,Y.levels)}prepForXml($){for(let U of this.abstractNumberingMap.values())this.root.push(U);for(let U of this.concreteNumberingMap.values())this.root.push(U);return super.prepForXml($)}createConcreteNumberingInstance($,U){let Y=this.abstractNumberingMap.get($);if(!Y)return;let Z=`${$}-${U}`;if(this.concreteNumberingMap.has(Z))return;let J=this.referenceConfigMap.get($),G=J&&J[0].start,X={numId:this.concreteNumUniqueNumericId(),abstractNumId:Y.id,reference:$,instance:U,overrideLevels:[typeof G==="number"&&Number.isInteger(G)?{num:0,start:G}:{num:0,start:1}]};this.concreteNumberingMap.set(Z,new s1(X))}get ConcreteNumbering(){return Array.from(this.concreteNumberingMap.values())}get ReferenceConfig(){return Array.from(this.referenceConfigMap.values())}}var pV=($)=>new B0({name:"w:compatSetting",attributes:{version:{key:"w:val",value:$},name:{key:"w:name",value:"compatibilityMode"},uri:{key:"w:uri",value:"http://schemas.microsoft.com/office/word"}}});class O5 extends o{constructor($){super("w:compat");if($.version)this.root.push(pV($.version));if($.useSingleBorderforContiguousCells)this.root.push(new X0("w:useSingleBorderforContiguousCells",$.useSingleBorderforContiguousCells));if($.wordPerfectJustification)this.root.push(new X0("w:wpJustification",$.wordPerfectJustification));if($.noTabStopForHangingIndent)this.root.push(new X0("w:noTabHangInd",$.noTabStopForHangingIndent));if($.noLeading)this.root.push(new X0("w:noLeading",$.noLeading));if($.spaceForUnderline)this.root.push(new X0("w:spaceForUL",$.spaceForUnderline));if($.noColumnBalance)this.root.push(new X0("w:noColumnBalance",$.noColumnBalance));if($.balanceSingleByteDoubleByteWidth)this.root.push(new X0("w:balanceSingleByteDoubleByteWidth",$.balanceSingleByteDoubleByteWidth));if($.noExtraLineSpacing)this.root.push(new X0("w:noExtraLineSpacing",$.noExtraLineSpacing));if($.doNotLeaveBackslashAlone)this.root.push(new X0("w:doNotLeaveBackslashAlone",$.doNotLeaveBackslashAlone));if($.underlineTrailingSpaces)this.root.push(new X0("w:ulTrailSpace",$.underlineTrailingSpaces));if($.doNotExpandShiftReturn)this.root.push(new X0("w:doNotExpandShiftReturn",$.doNotExpandShiftReturn));if($.spacingInWholePoints)this.root.push(new X0("w:spacingInWholePoints",$.spacingInWholePoints));if($.lineWrapLikeWord6)this.root.push(new X0("w:lineWrapLikeWord6",$.lineWrapLikeWord6));if($.printBodyTextBeforeHeader)this.root.push(new X0("w:printBodyTextBeforeHeader",$.printBodyTextBeforeHeader));if($.printColorsBlack)this.root.push(new X0("w:printColBlack",$.printColorsBlack));if($.spaceWidth)this.root.push(new X0("w:wpSpaceWidth",$.spaceWidth));if($.showBreaksInFrames)this.root.push(new X0("w:showBreaksInFrames",$.showBreaksInFrames));if($.subFontBySize)this.root.push(new X0("w:subFontBySize",$.subFontBySize));if($.suppressBottomSpacing)this.root.push(new X0("w:suppressBottomSpacing",$.suppressBottomSpacing));if($.suppressTopSpacing)this.root.push(new X0("w:suppressTopSpacing",$.suppressTopSpacing));if($.suppressSpacingAtTopOfPage)this.root.push(new X0("w:suppressSpacingAtTopOfPage",$.suppressSpacingAtTopOfPage));if($.suppressTopSpacingWP)this.root.push(new X0("w:suppressTopSpacingWP",$.suppressTopSpacingWP));if($.suppressSpBfAfterPgBrk)this.root.push(new X0("w:suppressSpBfAfterPgBrk",$.suppressSpBfAfterPgBrk));if($.swapBordersFacingPages)this.root.push(new X0("w:swapBordersFacingPages",$.swapBordersFacingPages));if($.convertMailMergeEsc)this.root.push(new X0("w:convMailMergeEsc",$.convertMailMergeEsc));if($.truncateFontHeightsLikeWP6)this.root.push(new X0("w:truncateFontHeightsLikeWP6",$.truncateFontHeightsLikeWP6));if($.macWordSmallCaps)this.root.push(new X0("w:mwSmallCaps",$.macWordSmallCaps));if($.usePrinterMetrics)this.root.push(new X0("w:usePrinterMetrics",$.usePrinterMetrics));if($.doNotSuppressParagraphBorders)this.root.push(new X0("w:doNotSuppressParagraphBorders",$.doNotSuppressParagraphBorders));if($.wrapTrailSpaces)this.root.push(new X0("w:wrapTrailSpaces",$.wrapTrailSpaces));if($.footnoteLayoutLikeWW8)this.root.push(new X0("w:footnoteLayoutLikeWW8",$.footnoteLayoutLikeWW8));if($.shapeLayoutLikeWW8)this.root.push(new X0("w:shapeLayoutLikeWW8",$.shapeLayoutLikeWW8));if($.alignTablesRowByRow)this.root.push(new X0("w:alignTablesRowByRow",$.alignTablesRowByRow));if($.forgetLastTabAlignment)this.root.push(new X0("w:forgetLastTabAlignment",$.forgetLastTabAlignment));if($.adjustLineHeightInTable)this.root.push(new X0("w:adjustLineHeightInTable",$.adjustLineHeightInTable));if($.autoSpaceLikeWord95)this.root.push(new X0("w:autoSpaceLikeWord95",$.autoSpaceLikeWord95));if($.noSpaceRaiseLower)this.root.push(new X0("w:noSpaceRaiseLower",$.noSpaceRaiseLower));if($.doNotUseHTMLParagraphAutoSpacing)this.root.push(new X0("w:doNotUseHTMLParagraphAutoSpacing",$.doNotUseHTMLParagraphAutoSpacing));if($.layoutRawTableWidth)this.root.push(new X0("w:layoutRawTableWidth",$.layoutRawTableWidth));if($.layoutTableRowsApart)this.root.push(new X0("w:layoutTableRowsApart",$.layoutTableRowsApart));if($.useWord97LineBreakRules)this.root.push(new X0("w:useWord97LineBreakRules",$.useWord97LineBreakRules));if($.doNotBreakWrappedTables)this.root.push(new X0("w:doNotBreakWrappedTables",$.doNotBreakWrappedTables));if($.doNotSnapToGridInCell)this.root.push(new X0("w:doNotSnapToGridInCell",$.doNotSnapToGridInCell));if($.selectFieldWithFirstOrLastCharacter)this.root.push(new X0("w:selectFldWithFirstOrLastChar",$.selectFieldWithFirstOrLastCharacter));if($.applyBreakingRules)this.root.push(new X0("w:applyBreakingRules",$.applyBreakingRules));if($.doNotWrapTextWithPunctuation)this.root.push(new X0("w:doNotWrapTextWithPunct",$.doNotWrapTextWithPunctuation));if($.doNotUseEastAsianBreakRules)this.root.push(new X0("w:doNotUseEastAsianBreakRules",$.doNotUseEastAsianBreakRules));if($.useWord2002TableStyleRules)this.root.push(new X0("w:useWord2002TableStyleRules",$.useWord2002TableStyleRules));if($.growAutofit)this.root.push(new X0("w:growAutofit",$.growAutofit));if($.useFELayout)this.root.push(new X0("w:useFELayout",$.useFELayout));if($.useNormalStyleForList)this.root.push(new X0("w:useNormalStyleForList",$.useNormalStyleForList));if($.doNotUseIndentAsNumberingTabStop)this.root.push(new X0("w:doNotUseIndentAsNumberingTabStop",$.doNotUseIndentAsNumberingTabStop));if($.useAlternateEastAsianLineBreakRules)this.root.push(new X0("w:useAltKinsokuLineBreakRules",$.useAlternateEastAsianLineBreakRules));if($.allowSpaceOfSameStyleInTable)this.root.push(new X0("w:allowSpaceOfSameStyleInTable",$.allowSpaceOfSameStyleInTable));if($.doNotSuppressIndentation)this.root.push(new X0("w:doNotSuppressIndentation",$.doNotSuppressIndentation));if($.doNotAutofitConstrainedTables)this.root.push(new X0("w:doNotAutofitConstrainedTables",$.doNotAutofitConstrainedTables));if($.autofitToFirstFixedWidthCell)this.root.push(new X0("w:autofitToFirstFixedWidthCell",$.autofitToFirstFixedWidthCell));if($.underlineTabInNumberingList)this.root.push(new X0("w:underlineTabInNumList",$.underlineTabInNumberingList));if($.displayHangulFixedWidth)this.root.push(new X0("w:displayHangulFixedWidth",$.displayHangulFixedWidth));if($.splitPgBreakAndParaMark)this.root.push(new X0("w:splitPgBreakAndParaMark",$.splitPgBreakAndParaMark));if($.doNotVerticallyAlignCellWithSp)this.root.push(new X0("w:doNotVertAlignCellWithSp",$.doNotVerticallyAlignCellWithSp));if($.doNotBreakConstrainedForcedTable)this.root.push(new X0("w:doNotBreakConstrainedForcedTable",$.doNotBreakConstrainedForcedTable));if($.ignoreVerticalAlignmentInTextboxes)this.root.push(new X0("w:doNotVertAlignInTxbx",$.ignoreVerticalAlignmentInTextboxes));if($.useAnsiKerningPairs)this.root.push(new X0("w:useAnsiKerningPairs",$.useAnsiKerningPairs));if($.cachedColumnBalance)this.root.push(new X0("w:cachedColBalance",$.cachedColumnBalance))}}class k5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{wpc:"xmlns:wpc",mc:"xmlns:mc",o:"xmlns:o",r:"xmlns:r",m:"xmlns:m",v:"xmlns:v",wp14:"xmlns:wp14",wp:"xmlns:wp",w10:"xmlns:w10",w:"xmlns:w",w14:"xmlns:w14",w15:"xmlns:w15",wpg:"xmlns:wpg",wpi:"xmlns:wpi",wne:"xmlns:wne",wps:"xmlns:wps",Ignorable:"mc:Ignorable"})}}class E5 extends o{constructor($){var U,Y,Z,J,G,X,Q,B;super("w:settings");if(this.root.push(new k5({wpc:"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas",mc:"http://schemas.openxmlformats.org/markup-compatibility/2006",o:"urn:schemas-microsoft-com:office:office",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",m:"http://schemas.openxmlformats.org/officeDocument/2006/math",v:"urn:schemas-microsoft-com:vml",wp14:"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing",wp:"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",w10:"urn:schemas-microsoft-com:office:word",w:"http://schemas.openxmlformats.org/wordprocessingml/2006/main",w14:"http://schemas.microsoft.com/office/word/2010/wordml",w15:"http://schemas.microsoft.com/office/word/2012/wordml",wpg:"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup",wpi:"http://schemas.microsoft.com/office/word/2010/wordprocessingInk",wne:"http://schemas.microsoft.com/office/word/2006/wordml",wps:"http://schemas.microsoft.com/office/word/2010/wordprocessingShape",Ignorable:"w14 w15 wp14"})),this.root.push(new X0("w:displayBackgroundShape",!0)),$.trackRevisions!==void 0)this.root.push(new X0("w:trackRevisions",$.trackRevisions));if($.evenAndOddHeaders!==void 0)this.root.push(new X0("w:evenAndOddHeaders",$.evenAndOddHeaders));if($.updateFields!==void 0)this.root.push(new X0("w:updateFields",$.updateFields));if($.defaultTabStop!==void 0)this.root.push(new k2("w:defaultTabStop",$.defaultTabStop));if(((U=$.hyphenation)==null?void 0:U.autoHyphenation)!==void 0)this.root.push(new X0("w:autoHyphenation",$.hyphenation.autoHyphenation));if(((Y=$.hyphenation)==null?void 0:Y.hyphenationZone)!==void 0)this.root.push(new k2("w:hyphenationZone",$.hyphenation.hyphenationZone));if(((Z=$.hyphenation)==null?void 0:Z.consecutiveHyphenLimit)!==void 0)this.root.push(new k2("w:consecutiveHyphenLimit",$.hyphenation.consecutiveHyphenLimit));if(((J=$.hyphenation)==null?void 0:J.doNotHyphenateCaps)!==void 0)this.root.push(new X0("w:doNotHyphenateCaps",$.hyphenation.doNotHyphenateCaps));this.root.push(new O5(R0(W0({},(G=$.compatibility)!=null?G:{}),{version:(B=(Q=(X=$.compatibility)==null?void 0:X.version)!=null?Q:$.compatibilityModeVersion)!=null?B:15})))}}class GU extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w:val"})}}class S5 extends o{constructor($){super("w:name");this.root.push(new GU({val:$}))}}class v5 extends o{constructor($){super("w:uiPriority");this.root.push(new GU({val:S0($)}))}}class _5 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{type:"w:type",styleId:"w:styleId",default:"w:default",customStyle:"w:customStyle"})}}class KU extends o{constructor($,U){super("w:style");if(this.root.push(new _5($)),U.name)this.root.push(new S5(U.name));if(U.basedOn)this.root.push(new Y2("w:basedOn",U.basedOn));if(U.next)this.root.push(new Y2("w:next",U.next));if(U.link)this.root.push(new Y2("w:link",U.link));if(U.uiPriority!==void 0)this.root.push(new v5(U.uiPriority));if(U.semiHidden!==void 0)this.root.push(new X0("w:semiHidden",U.semiHidden));if(U.unhideWhenUsed!==void 0)this.root.push(new X0("w:unhideWhenUsed",U.unhideWhenUsed));if(U.quickFormat!==void 0)this.root.push(new X0("w:qFormat",U.quickFormat))}}class y2 extends KU{constructor($){super({type:"paragraph",styleId:$.id},$);Y0(this,"paragraphProperties"),Y0(this,"runProperties"),this.paragraphProperties=new Z2($.paragraph),this.runProperties=new J2($.run),this.root.push(this.paragraphProperties),this.root.push(this.runProperties)}}class D2 extends KU{constructor($){super({type:"character",styleId:$.id},W0({uiPriority:99,unhideWhenUsed:!0},$));Y0(this,"runProperties"),this.runProperties=new J2($.run),this.root.push(this.runProperties)}}class H2 extends y2{constructor($){super(W0({basedOn:"Normal",next:"Normal",quickFormat:!0},$))}}class y5 extends H2{constructor($){super(W0({id:"Title",name:"Title"},$))}}class b5 extends H2{constructor($){super(W0({id:"Heading1",name:"Heading 1"},$))}}class g5 extends H2{constructor($){super(W0({id:"Heading2",name:"Heading 2"},$))}}class x5 extends H2{constructor($){super(W0({id:"Heading3",name:"Heading 3"},$))}}class f5 extends H2{constructor($){super(W0({id:"Heading4",name:"Heading 4"},$))}}class h5 extends H2{constructor($){super(W0({id:"Heading5",name:"Heading 5"},$))}}class u5 extends H2{constructor($){super(W0({id:"Heading6",name:"Heading 6"},$))}}class d5 extends H2{constructor($){super(W0({id:"Strong",name:"Strong"},$))}}class c5 extends y2{constructor($){super(W0({id:"ListParagraph",name:"List Paragraph",basedOn:"Normal",quickFormat:!0},$))}}class m5 extends y2{constructor($){super(W0({id:"FootnoteText",name:"footnote text",link:"FootnoteTextChar",basedOn:"Normal",uiPriority:99,semiHidden:!0,unhideWhenUsed:!0,paragraph:{spacing:{after:0,line:240,lineRule:v2.AUTO}},run:{size:20}},$))}}class l5 extends D2{constructor($){super(W0({id:"FootnoteReference",name:"footnote reference",basedOn:"DefaultParagraphFont",semiHidden:!0,run:{superScript:!0}},$))}}class a5 extends D2{constructor($){super(W0({id:"FootnoteTextChar",name:"Footnote Text Char",basedOn:"DefaultParagraphFont",link:"FootnoteText",semiHidden:!0,run:{size:20}},$))}}class p5 extends y2{constructor($){super(W0({id:"EndnoteText",name:"endnote text",link:"EndnoteTextChar",basedOn:"Normal",uiPriority:99,semiHidden:!0,unhideWhenUsed:!0,paragraph:{spacing:{after:0,line:240,lineRule:v2.AUTO}},run:{size:20}},$))}}class i5 extends D2{constructor($){super(W0({id:"EndnoteReference",name:"endnote reference",basedOn:"DefaultParagraphFont",semiHidden:!0,run:{superScript:!0}},$))}}class r5 extends D2{constructor($){super(W0({id:"EndnoteTextChar",name:"Endnote Text Char",basedOn:"DefaultParagraphFont",link:"EndnoteText",semiHidden:!0,run:{size:20}},$))}}class s5 extends D2{constructor($){super(W0({id:"Hyperlink",name:"Hyperlink",basedOn:"DefaultParagraphFont",run:{color:"0563C1",underline:{type:Z$.SINGLE}}},$))}}class B1 extends o{constructor($){super("w:styles");if($.initialStyles)this.root.push($.initialStyles);if($.importedStyles)for(let U of $.importedStyles)this.root.push(U);if($.paragraphStyles)for(let U of $.paragraphStyles)this.root.push(new y2(U));if($.characterStyles)for(let U of $.characterStyles)this.root.push(new D2(U))}}class qU extends o{constructor($){super("w:pPrDefault");this.root.push(new Z2($))}}class XU extends o{constructor($){super("w:rPrDefault");this.root.push(new J2($))}}class VU extends o{constructor($){super("w:docDefaults");Y0(this,"runPropertiesDefaults"),Y0(this,"paragraphPropertiesDefaults"),this.runPropertiesDefaults=new XU($.run),this.paragraphPropertiesDefaults=new qU($.paragraph),this.root.push(this.runPropertiesDefaults),this.root.push(this.paragraphPropertiesDefaults)}}class n5{newInstance($){let U=$8.xml2js($,{compact:!1}),Y;for(let J of U.elements||[])if(J.name==="w:styles")Y=J;if(Y===void 0)throw Error("can not find styles element");let Z=Y.elements||[];return{initialStyles:new i9(Y.attributes),importedStyles:Z.map((J)=>U8(J))}}}class c1{newInstance($={}){var U;return{initialStyles:new o2(["mc","r","w","w14","w15"],"w14 w15"),importedStyles:[new VU((U=$.document)!=null?U:{}),new y5(W0({run:{size:56}},$.title)),new b5(W0({run:{color:"2E74B5",size:32}},$.heading1)),new g5(W0({run:{color:"2E74B5",size:26}},$.heading2)),new x5(W0({run:{color:"1F4D78",size:24}},$.heading3)),new f5(W0({run:{color:"2E74B5",italics:!0}},$.heading4)),new h5(W0({run:{color:"2E74B5"}},$.heading5)),new u5(W0({run:{color:"1F4D78"}},$.heading6)),new d5(W0({run:{bold:!0}},$.strong)),new c5($.listParagraph||{}),new s5($.hyperlink||{}),new l5($.footnoteReference||{}),new m5($.footnoteText||{}),new a5($.footnoteTextChar||{}),new i5($.endnoteReference||{}),new p5($.endnoteText||{}),new r5($.endnoteTextChar||{})]}}}class o5{constructor($){Y0(this,"currentRelationshipId",1),Y0(this,"documentWrapper"),Y0(this,"headers",[]),Y0(this,"footers",[]),Y0(this,"coreProperties"),Y0(this,"numbering"),Y0(this,"media"),Y0(this,"fileRelationships"),Y0(this,"footnotesWrapper"),Y0(this,"endnotesWrapper"),Y0(this,"settings"),Y0(this,"contentTypes"),Y0(this,"customProperties"),Y0(this,"appProperties"),Y0(this,"styles"),Y0(this,"comments"),Y0(this,"fontWrapper");var U,Y,Z,J,G,X,Q,B,F,z,W,k,D;if(this.coreProperties=new gK(R0(W0({},$),{creator:(U=$.creator)!=null?U:"Un-named",revision:(Y=$.revision)!=null?Y:1,lastModifiedBy:(Z=$.lastModifiedBy)!=null?Z:"Un-named"})),this.numbering=new JU($.numbering?$.numbering:{config:[]}),this.comments=new M$((J=$.comments)!=null?J:{children:[]}),this.fileRelationships=new W2,this.customProperties=new cK((G=$.customProperties)!=null?G:[]),this.appProperties=new _K,this.footnotesWrapper=new L5,this.endnotesWrapper=new G5,this.contentTypes=new bK,this.documentWrapper=new $5({background:$.background}),this.settings=new E5({compatibilityModeVersion:$.compatabilityModeVersion,compatibility:$.compatibility,evenAndOddHeaders:$.evenAndOddHeaderAndFooters?!0:!1,trackRevisions:(X=$.features)==null?void 0:X.trackRevisions,updateFields:(Q=$.features)==null?void 0:Q.updateFields,defaultTabStop:$.defaultTabStop,hyphenation:{autoHyphenation:(B=$.hyphenation)==null?void 0:B.autoHyphenation,hyphenationZone:(F=$.hyphenation)==null?void 0:F.hyphenationZone,consecutiveHyphenLimit:(z=$.hyphenation)==null?void 0:z.consecutiveHyphenLimit,doNotHyphenateCaps:(W=$.hyphenation)==null?void 0:W.doNotHyphenateCaps}}),this.media=new w8,$.externalStyles!==void 0){let H=new c1().newInstance((k=$.styles)==null?void 0:k.default),V=new n5().newInstance($.externalStyles);this.styles=new B1(R0(W0({},V),{importedStyles:[...H.importedStyles,...V.importedStyles]}))}else if($.styles){let H=new c1().newInstance($.styles.default);this.styles=new B1(W0(W0({},H),$.styles))}else{let C=new c1;this.styles=new B1(C.newInstance())}this.addDefaultRelationships();for(let C of $.sections)this.addSection(C);if($.footnotes)for(let C in $.footnotes)this.footnotesWrapper.View.createFootNote(parseFloat(C),$.footnotes[C].children);if($.endnotes)for(let C in $.endnotes)this.endnotesWrapper.View.createEndnote(parseFloat(C),$.endnotes[C].children);this.fontWrapper=new R$((D=$.fonts)!=null?D:[])}addSection({headers:$={},footers:U={},children:Y,properties:Z}){this.documentWrapper.View.Body.addSection(R0(W0({},Z),{headerWrapperGroup:{default:$.default?this.createHeader($.default):void 0,first:$.first?this.createHeader($.first):void 0,even:$.even?this.createHeader($.even):void 0},footerWrapperGroup:{default:U.default?this.createFooter(U.default):void 0,first:U.first?this.createFooter(U.first):void 0,even:U.even?this.createFooter(U.even):void 0}}));for(let J of Y)this.documentWrapper.View.add(J)}createHeader($){let U=new YU(this.media,this.currentRelationshipId++);for(let Y of $.options.children)U.add(Y);return this.addHeaderToDocument(U),U}createFooter($){let U=new $U(this.media,this.currentRelationshipId++);for(let Y of $.options.children)U.add(Y);return this.addFooterToDocument(U),U}addHeaderToDocument($,U=E2.DEFAULT){this.headers.push({header:$,type:U}),this.documentWrapper.Relationships.addRelationship($.View.ReferenceId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header",`header${this.headers.length}.xml`),this.contentTypes.addHeader(this.headers.length)}addFooterToDocument($,U=E2.DEFAULT){this.footers.push({footer:$,type:U}),this.documentWrapper.Relationships.addRelationship($.View.ReferenceId,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer",`footer${this.footers.length}.xml`),this.contentTypes.addFooter(this.footers.length)}addDefaultRelationships(){this.fileRelationships.addRelationship(1,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument","word/document.xml"),this.fileRelationships.addRelationship(2,"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties","docProps/core.xml"),this.fileRelationships.addRelationship(3,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties","docProps/app.xml"),this.fileRelationships.addRelationship(4,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties","docProps/custom.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles","styles.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering","numbering.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes","footnotes.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes","endnotes.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings","settings.xml"),this.documentWrapper.Relationships.addRelationship(this.currentRelationshipId++,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments","comments.xml")}get Document(){return this.documentWrapper}get Styles(){return this.styles}get CoreProperties(){return this.coreProperties}get Numbering(){return this.numbering}get Media(){return this.media}get FileRelationships(){return this.fileRelationships}get Headers(){return this.headers.map(($)=>$.header)}get Footers(){return this.footers.map(($)=>$.footer)}get ContentTypes(){return this.contentTypes}get CustomProperties(){return this.customProperties}get AppProperties(){return this.appProperties}get FootNotes(){return this.footnotesWrapper}get Endnotes(){return this.endnotesWrapper}get Settings(){return this.settings}get Comments(){return this.comments}get FontTable(){return this.fontWrapper}}class t5 extends o{constructor($={}){super("w:instrText");Y0(this,"properties"),this.properties=$,this.root.push(new x0({space:g0.PRESERVE}));let U="TOC";if(this.properties.captionLabel)U=`${U} \\a "${this.properties.captionLabel}"`;if(this.properties.entriesFromBookmark)U=`${U} \\b "${this.properties.entriesFromBookmark}"`;if(this.properties.captionLabelIncludingNumbers)U=`${U} \\c "${this.properties.captionLabelIncludingNumbers}"`;if(this.properties.sequenceAndPageNumbersSeparator)U=`${U} \\d "${this.properties.sequenceAndPageNumbersSeparator}"`;if(this.properties.tcFieldIdentifier)U=`${U} \\f "${this.properties.tcFieldIdentifier}"`;if(this.properties.hyperlink)U=`${U} \\h`;if(this.properties.tcFieldLevelRange)U=`${U} \\l "${this.properties.tcFieldLevelRange}"`;if(this.properties.pageNumbersEntryLevelsRange)U=`${U} \\n "${this.properties.pageNumbersEntryLevelsRange}"`;if(this.properties.headingStyleRange)U=`${U} \\o "${this.properties.headingStyleRange}"`;if(this.properties.entryAndPageNumberSeparator)U=`${U} \\p "${this.properties.entryAndPageNumberSeparator}"`;if(this.properties.seqFieldIdentifierForPrefix)U=`${U} \\s "${this.properties.seqFieldIdentifierForPrefix}"`;if(this.properties.stylesWithLevels&&this.properties.stylesWithLevels.length){let Y=this.properties.stylesWithLevels.map((Z)=>`${Z.styleName},${Z.level}`).join(",");U=`${U} \\t "${Y}"`}if(this.properties.useAppliedParagraphOutlineLevel)U=`${U} \\u`;if(this.properties.preserveTabInEntries)U=`${U} \\w`;if(this.properties.preserveNewLineInEntries)U=`${U} \\x`;if(this.properties.hideTabAndPageNumbersInWebView)U=`${U} \\z`;this.root.push(U)}}class BU extends o{constructor(){super("w:sdtContent")}}class LU extends o{constructor($){super("w:sdtPr");if($)this.root.push(new Y2("w:alias",$))}}class e5 extends r2{constructor($="Table of Contents",U={}){var Y=U,{contentChildren:Z=[],cachedEntries:J=[],beginDirty:G=!0}=Y,X=oZ(Y,["contentChildren","cachedEntries","beginDirty"]);super("w:sdt");this.root.push(new LU($));let Q=new BU,B=[new C0({children:[$2(G),new t5(X),I2()]})],F=[new C0({children:[U2()]})];if(J!==void 0&&J.length>0){let{stylesWithLevels:W}=X,k=J.map((C,H)=>{var O,V;let j=this.buildCachedContentParagraphChild(C,X),M=(V=(O=W==null?void 0:W.find((A)=>A.level===C.level))==null?void 0:O.styleName)!=null?V:`TOC${C.level}`,L=H===0?[...B,j]:H===J.length-1?[j,...F]:[j];return new h0({style:M,tabStops:this.getTabStopsForLevel(C.level),children:L})}),D=k;if(J.length<=1)D=[...k,new h0({children:F})];for(let C of D)Q.addChildElement(C)}else{let W=new h0({children:B});Q.addChildElement(W);for(let D of Z)Q.addChildElement(D);let k=new h0({children:F});Q.addChildElement(k)}this.root.push(Q)}getTabStopsForLevel($,U=9025){return[{type:"clear",position:U+1-($-1)*240},{type:"right",position:U,leader:"dot"}]}buildCachedContentRun($,U){var Y,Z;return new C0({style:(U==null?void 0:U.hyperlink)&&$.href!==void 0?"IndexLink":void 0,children:[new a2({text:$.title}),new w$,new a2({text:(Z=(Y=$.page)==null?void 0:Y.toString())!=null?Z:""})]})}buildCachedContentParagraphChild($,U){let Y=this.buildCachedContentRun($,U);if((U==null?void 0:U.hyperlink)&&$.href!==void 0)return new j$({anchor:$.href,children:[Y]});return Y}}class $7{constructor($,U){Y0(this,"styleName"),Y0(this,"level"),this.styleName=$,this.level=U}}class U7{constructor($={children:[]}){Y0(this,"options"),this.options=$}}class Y7{constructor($={children:[]}){Y0(this,"options"),this.options=$}}class MU extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class IU extends o{constructor($){super("w:footnoteReference");this.root.push(new MU({id:$}))}}class Z7 extends C0{constructor($){super({style:"FootnoteReference"});this.root.push(new IU($))}}class wU extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{id:"w:id"})}}class WU extends o{constructor($){super("w:endnoteReference");this.root.push(new wU({id:$}))}}class Q7 extends C0{constructor($){super({style:"EndnoteReference"});this.root.push(new WU($))}}class _9 extends I0{constructor(){super(...arguments);Y0(this,"xmlKeys",{val:"w14:val",symbolfont:"w14:font"})}}class L1 extends o{constructor($,U,Y){super($);if(Y)this.root.push(new _9({val:DQ(U),symbolfont:Y}));else this.root.push(new _9({val:U}))}}class HU extends o{constructor($){var U,Y,Z,J,G,X,Q,B;super("w14:checkbox");Y0(this,"DEFAULT_UNCHECKED_SYMBOL","2610"),Y0(this,"DEFAULT_CHECKED_SYMBOL","2612"),Y0(this,"DEFAULT_FONT","MS Gothic");let F=($==null?void 0:$.checked)?"1":"0",z,W;this.root.push(new L1("w14:checked",F)),z=((U=$==null?void 0:$.checkedState)==null?void 0:U.value)?(Y=$==null?void 0:$.checkedState)==null?void 0:Y.value:this.DEFAULT_CHECKED_SYMBOL,W=((Z=$==null?void 0:$.checkedState)==null?void 0:Z.font)?(J=$==null?void 0:$.checkedState)==null?void 0:J.font:this.DEFAULT_FONT,this.root.push(new L1("w14:checkedState",z,W)),z=((G=$==null?void 0:$.uncheckedState)==null?void 0:G.value)?(X=$==null?void 0:$.uncheckedState)==null?void 0:X.value:this.DEFAULT_UNCHECKED_SYMBOL,W=((Q=$==null?void 0:$.uncheckedState)==null?void 0:Q.font)?(B=$==null?void 0:$.uncheckedState)==null?void 0:B.font:this.DEFAULT_FONT,this.root.push(new L1("w14:uncheckedState",z,W))}}class J7 extends o{constructor($){var U,Y,Z,J;super("w:sdt");Y0(this,"DEFAULT_UNCHECKED_SYMBOL","2610"),Y0(this,"DEFAULT_CHECKED_SYMBOL","2612"),Y0(this,"DEFAULT_FONT","MS Gothic");let G=new LU($==null?void 0:$.alias);G.addChildElement(new HU($)),this.root.push(G);let X=new BU,Q=(U=$==null?void 0:$.checkedState)==null?void 0:U.font,B=(Y=$==null?void 0:$.checkedState)==null?void 0:Y.value,F=(Z=$==null?void 0:$.uncheckedState)==null?void 0:Z.font,z=(J=$==null?void 0:$.uncheckedState)==null?void 0:J.value,W,k;if($==null?void 0:$.checked)W=Q?Q:this.DEFAULT_FONT,k=B?B:this.DEFAULT_CHECKED_SYMBOL;else W=F?F:this.DEFAULT_FONT,k=z?z:this.DEFAULT_UNCHECKED_SYMBOL;let D=new G$({char:k,symbolfont:W});X.addChildElement(D),this.root.push(X)}}var iV=({shape:$})=>new B0({name:"w:pict",children:[$]}),rV=({children:$=[]})=>new B0({name:"w:txbxContent",children:$}),sV=({style:$,children:U,inset:Y})=>new B0({name:"v:textbox",attributes:{style:{key:"style",value:$},insetMode:{key:"insetmode",value:Y?"custom":"auto"},inset:{key:"inset",value:Y?`${Y.left}, ${Y.top}, ${Y.right}, ${Y.bottom}`:void 0}},children:[rV({children:U})]}),nV="#_x0000_t202",oV={flip:"flip",height:"height",left:"left",marginBottom:"margin-bottom",marginLeft:"margin-left",marginRight:"margin-right",marginTop:"margin-top",positionHorizontal:"mso-position-horizontal",positionHorizontalRelative:"mso-position-horizontal-relative",positionVertical:"mso-position-vertical",positionVerticalRelative:"mso-position-vertical-relative",wrapDistanceBottom:"mso-wrap-distance-bottom",wrapDistanceLeft:"mso-wrap-distance-left",wrapDistanceRight:"mso-wrap-distance-right",wrapDistanceTop:"mso-wrap-distance-top",wrapEdited:"mso-wrap-edited",wrapStyle:"mso-wrap-style",position:"position",rotation:"rotation",top:"top",visibility:"visibility",width:"width",zIndex:"z-index"},tV=($)=>$?Object.entries($).map(([U,Y])=>`${oV[U]}:${Y}`).join(";"):void 0,eV=({id:$,children:U,type:Y=nV,style:Z})=>new B0({name:"v:shape",attributes:{id:{key:"id",value:$},type:{key:"type",value:Y},style:{key:"style",value:tV(Z)}},children:[sV({style:"mso-fit-shape-to-text:t;",children:U})]});class G7 extends r2{constructor($){var U=$,{style:Y,children:Z}=U,J=oZ(U,["style","children"]);super("w:p");this.root.push(new Z2(J)),this.root.push(iV({shape:eV({children:Z,id:R1(),style:Y})}))}}var $B=m9();function y1($){throw Error('Could not dynamically require "'+$+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var I9={exports:{}},uZ;function UB(){if(uZ)return I9.exports;return uZ=1,function($,U){(function(Y){$.exports=Y()})(function(){return function Y(Z,J,G){function X(F,z){if(!J[F]){if(!Z[F]){var W=typeof y1=="function"&&y1;if(!z&&W)return W(F,!0);if(Q)return Q(F,!0);var k=Error("Cannot find module '"+F+"'");throw k.code="MODULE_NOT_FOUND",k}var D=J[F]={exports:{}};Z[F][0].call(D.exports,function(C){var H=Z[F][1][C];return X(H||C)},D,D.exports,Y,Z,J,G)}return J[F].exports}for(var Q=typeof y1=="function"&&y1,B=0;B>2,D=(3&F)<<4|z>>4,C=1>6:64,H=2>4,z=(15&k)<<4|(D=Q.indexOf(B.charAt(H++)))>>2,W=(3&D)<<6|(C=Q.indexOf(B.charAt(H++))),j[O++]=F,D!==64&&(j[O++]=z),C!==64&&(j[O++]=W);return j}},{"./support":30,"./utils":32}],2:[function(Y,Z,J){var G=Y("./external"),X=Y("./stream/DataWorker"),Q=Y("./stream/Crc32Probe"),B=Y("./stream/DataLengthProbe");function F(z,W,k,D,C){this.compressedSize=z,this.uncompressedSize=W,this.crc32=k,this.compression=D,this.compressedContent=C}F.prototype={getContentWorker:function(){var z=new X(G.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new B("data_length")),W=this;return z.on("end",function(){if(this.streamInfo.data_length!==W.uncompressedSize)throw Error("Bug : uncompressed data size mismatch")}),z},getCompressedWorker:function(){return new X(G.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},F.createWorkerFrom=function(z,W,k){return z.pipe(new Q).pipe(new B("uncompressedSize")).pipe(W.compressWorker(k)).pipe(new B("compressedSize")).withStreamInfo("compression",W)},Z.exports=F},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(Y,Z,J){var G=Y("./stream/GenericWorker");J.STORE={magic:"\x00\x00",compressWorker:function(){return new G("STORE compression")},uncompressWorker:function(){return new G("STORE decompression")}},J.DEFLATE=Y("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(Y,Z,J){var G=Y("./utils"),X=function(){for(var Q,B=[],F=0;F<256;F++){Q=F;for(var z=0;z<8;z++)Q=1&Q?3988292384^Q>>>1:Q>>>1;B[F]=Q}return B}();Z.exports=function(Q,B){return Q!==void 0&&Q.length?G.getTypeOf(Q)!=="string"?function(F,z,W,k){var D=X,C=k+W;F^=-1;for(var H=k;H>>8^D[255&(F^z[H])];return-1^F}(0|B,Q,Q.length,0):function(F,z,W,k){var D=X,C=k+W;F^=-1;for(var H=k;H>>8^D[255&(F^z.charCodeAt(H))];return-1^F}(0|B,Q,Q.length,0):0}},{"./utils":32}],5:[function(Y,Z,J){J.base64=!1,J.binary=!1,J.dir=!1,J.createFolders=!0,J.date=null,J.compression=null,J.compressionOptions=null,J.comment=null,J.unixPermissions=null,J.dosPermissions=null},{}],6:[function(Y,Z,J){var G=null;G=typeof Promise<"u"?Promise:Y("lie"),Z.exports={Promise:G}},{lie:37}],7:[function(Y,Z,J){var G=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",X=Y("pako"),Q=Y("./utils"),B=Y("./stream/GenericWorker"),F=G?"uint8array":"array";function z(W,k){B.call(this,"FlateWorker/"+W),this._pako=null,this._pakoAction=W,this._pakoOptions=k,this.meta={}}J.magic="\b\x00",Q.inherits(z,B),z.prototype.processChunk=function(W){this.meta=W.meta,this._pako===null&&this._createPako(),this._pako.push(Q.transformTo(F,W.data),!1)},z.prototype.flush=function(){B.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},z.prototype.cleanUp=function(){B.prototype.cleanUp.call(this),this._pako=null},z.prototype._createPako=function(){this._pako=new X[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var W=this;this._pako.onData=function(k){W.push({data:k,meta:W.meta})}},J.compressWorker=function(W){return new z("Deflate",W)},J.uncompressWorker=function(){return new z("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(Y,Z,J){function G(D,C){var H,O="";for(H=0;H>>=8;return O}function X(D,C,H,O,V,j){var M,L,A=D.file,y=D.compression,g=j!==F.utf8encode,d=Q.transformTo("string",j(A.name)),E=Q.transformTo("string",F.utf8encode(A.name)),s=A.comment,V0=Q.transformTo("string",j(s)),S=Q.transformTo("string",F.utf8encode(s)),h=E.length!==A.name.length,N=S.length!==s.length,a="",$0="",m="",J0=A.dir,U0=A.date,L0={crc32:0,compressedSize:0,uncompressedSize:0};C&&!H||(L0.crc32=D.crc32,L0.compressedSize=D.compressedSize,L0.uncompressedSize=D.uncompressedSize);var i=0;C&&(i|=8),g||!h&&!N||(i|=2048);var _=0,r=0;J0&&(_|=16),V==="UNIX"?(r=798,_|=function(Z0,p){var P=Z0;return Z0||(P=p?16893:33204),(65535&P)<<16}(A.unixPermissions,J0)):(r=20,_|=function(Z0){return 63&(Z0||0)}(A.dosPermissions)),M=U0.getUTCHours(),M<<=6,M|=U0.getUTCMinutes(),M<<=5,M|=U0.getUTCSeconds()/2,L=U0.getUTCFullYear()-1980,L<<=4,L|=U0.getUTCMonth()+1,L<<=5,L|=U0.getUTCDate(),h&&($0=G(1,1)+G(z(d),4)+E,a+="up"+G($0.length,2)+$0),N&&(m=G(1,1)+G(z(V0),4)+S,a+="uc"+G(m.length,2)+m);var n="";return n+=` +\x00`,n+=G(i,2),n+=y.magic,n+=G(M,2),n+=G(L,2),n+=G(L0.crc32,4),n+=G(L0.compressedSize,4),n+=G(L0.uncompressedSize,4),n+=G(d.length,2),n+=G(a.length,2),{fileRecord:W.LOCAL_FILE_HEADER+n+d+a,dirRecord:W.CENTRAL_FILE_HEADER+G(r,2)+n+G(V0.length,2)+"\x00\x00\x00\x00"+G(_,4)+G(O,4)+d+a+V0}}var Q=Y("../utils"),B=Y("../stream/GenericWorker"),F=Y("../utf8"),z=Y("../crc32"),W=Y("../signature");function k(D,C,H,O){B.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=C,this.zipPlatform=H,this.encodeFileName=O,this.streamFiles=D,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}Q.inherits(k,B),k.prototype.push=function(D){var C=D.meta.percent||0,H=this.entriesCount,O=this._sources.length;this.accumulate?this.contentBuffer.push(D):(this.bytesWritten+=D.data.length,B.prototype.push.call(this,{data:D.data,meta:{currentFile:this.currentFile,percent:H?(C+100*(H-O-1))/H:100}}))},k.prototype.openedSource=function(D){this.currentSourceOffset=this.bytesWritten,this.currentFile=D.file.name;var C=this.streamFiles&&!D.file.dir;if(C){var H=X(D,C,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:H.fileRecord,meta:{percent:0}})}else this.accumulate=!0},k.prototype.closedSource=function(D){this.accumulate=!1;var C=this.streamFiles&&!D.file.dir,H=X(D,C,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(H.dirRecord),C)this.push({data:function(O){return W.DATA_DESCRIPTOR+G(O.crc32,4)+G(O.compressedSize,4)+G(O.uncompressedSize,4)}(D),meta:{percent:100}});else for(this.push({data:H.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},k.prototype.flush=function(){for(var D=this.bytesWritten,C=0;C=this.index;B--)F=(F<<8)+this.byteAt(B);return this.index+=Q,F},readString:function(Q){return G.transformTo("string",this.readData(Q))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var Q=this.readInt(4);return new Date(Date.UTC(1980+(Q>>25&127),(Q>>21&15)-1,Q>>16&31,Q>>11&31,Q>>5&63,(31&Q)<<1))}},Z.exports=X},{"../utils":32}],19:[function(Y,Z,J){var G=Y("./Uint8ArrayReader");function X(Q){G.call(this,Q)}Y("../utils").inherits(X,G),X.prototype.readData=function(Q){this.checkOffset(Q);var B=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,B},Z.exports=X},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(Y,Z,J){var G=Y("./DataReader");function X(Q){G.call(this,Q)}Y("../utils").inherits(X,G),X.prototype.byteAt=function(Q){return this.data.charCodeAt(this.zero+Q)},X.prototype.lastIndexOfSignature=function(Q){return this.data.lastIndexOf(Q)-this.zero},X.prototype.readAndCheckSignature=function(Q){return Q===this.readData(4)},X.prototype.readData=function(Q){this.checkOffset(Q);var B=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,B},Z.exports=X},{"../utils":32,"./DataReader":18}],21:[function(Y,Z,J){var G=Y("./ArrayReader");function X(Q){G.call(this,Q)}Y("../utils").inherits(X,G),X.prototype.readData=function(Q){if(this.checkOffset(Q),Q===0)return new Uint8Array(0);var B=this.data.subarray(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,B},Z.exports=X},{"../utils":32,"./ArrayReader":17}],22:[function(Y,Z,J){var G=Y("../utils"),X=Y("../support"),Q=Y("./ArrayReader"),B=Y("./StringReader"),F=Y("./NodeBufferReader"),z=Y("./Uint8ArrayReader");Z.exports=function(W){var k=G.getTypeOf(W);return G.checkSupport(k),k!=="string"||X.uint8array?k==="nodebuffer"?new F(W):X.uint8array?new z(G.transformTo("uint8array",W)):new Q(G.transformTo("array",W)):new B(W)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(Y,Z,J){J.LOCAL_FILE_HEADER="PK\x03\x04",J.CENTRAL_FILE_HEADER="PK\x01\x02",J.CENTRAL_DIRECTORY_END="PK\x05\x06",J.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x06\x07",J.ZIP64_CENTRAL_DIRECTORY_END="PK\x06\x06",J.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(Y,Z,J){var G=Y("./GenericWorker"),X=Y("../utils");function Q(B){G.call(this,"ConvertWorker to "+B),this.destType=B}X.inherits(Q,G),Q.prototype.processChunk=function(B){this.push({data:X.transformTo(this.destType,B.data),meta:B.meta})},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],25:[function(Y,Z,J){var G=Y("./GenericWorker"),X=Y("../crc32");function Q(){G.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}Y("../utils").inherits(Q,G),Q.prototype.processChunk=function(B){this.streamInfo.crc32=X(B.data,this.streamInfo.crc32||0),this.push(B)},Z.exports=Q},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(Y,Z,J){var G=Y("../utils"),X=Y("./GenericWorker");function Q(B){X.call(this,"DataLengthProbe for "+B),this.propName=B,this.withStreamInfo(B,0)}G.inherits(Q,X),Q.prototype.processChunk=function(B){if(B){var F=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=F+B.data.length}X.prototype.processChunk.call(this,B)},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],27:[function(Y,Z,J){var G=Y("../utils"),X=Y("./GenericWorker");function Q(B){X.call(this,"DataWorker");var F=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,B.then(function(z){F.dataIsReady=!0,F.data=z,F.max=z&&z.length||0,F.type=G.getTypeOf(z),F.isPaused||F._tickAndRepeat()},function(z){F.error(z)})}G.inherits(Q,X),Q.prototype.cleanUp=function(){X.prototype.cleanUp.call(this),this.data=null},Q.prototype.resume=function(){return!!X.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,G.delay(this._tickAndRepeat,[],this)),!0)},Q.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(G.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},Q.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var B=null,F=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":B=this.data.substring(this.index,F);break;case"uint8array":B=this.data.subarray(this.index,F);break;case"array":case"nodebuffer":B=this.data.slice(this.index,F)}return this.index=F,this.push({data:B,meta:{percent:this.max?this.index/this.max*100:0}})},Z.exports=Q},{"../utils":32,"./GenericWorker":28}],28:[function(Y,Z,J){function G(X){this.name=X||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}G.prototype={push:function(X){this.emit("data",X)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(X){this.emit("error",X)}return!0},error:function(X){return!this.isFinished&&(this.isPaused?this.generatedError=X:(this.isFinished=!0,this.emit("error",X),this.previous&&this.previous.error(X),this.cleanUp()),!0)},on:function(X,Q){return this._listeners[X].push(Q),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(X,Q){if(this._listeners[X])for(var B=0;B "+X:X}},Z.exports=G},{}],29:[function(Y,Z,J){var G=Y("../utils"),X=Y("./ConvertWorker"),Q=Y("./GenericWorker"),B=Y("../base64"),F=Y("../support"),z=Y("../external"),W=null;if(F.nodestream)try{W=Y("../nodejs/NodejsStreamOutputAdapter")}catch(C){}function k(C,H){return new z.Promise(function(O,V){var j=[],M=C._internalType,L=C._outputType,A=C._mimeType;C.on("data",function(y,g){j.push(y),H&&H(g)}).on("error",function(y){j=[],V(y)}).on("end",function(){try{var y=function(g,d,E){switch(g){case"blob":return G.newBlob(G.transformTo("arraybuffer",d),E);case"base64":return B.encode(d);default:return G.transformTo(g,d)}}(L,function(g,d){var E,s=0,V0=null,S=0;for(E=0;E"u")J.blob=!1;else{var G=new ArrayBuffer(0);try{J.blob=new Blob([G],{type:"application/zip"}).size===0}catch(Q){try{var X=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);X.append(G),J.blob=X.getBlob("application/zip").size===0}catch(B){J.blob=!1}}}try{J.nodestream=!!Y("readable-stream").Readable}catch(Q){J.nodestream=!1}},{"readable-stream":16}],31:[function(Y,Z,J){for(var G=Y("./utils"),X=Y("./support"),Q=Y("./nodejsUtils"),B=Y("./stream/GenericWorker"),F=Array(256),z=0;z<256;z++)F[z]=252<=z?6:248<=z?5:240<=z?4:224<=z?3:192<=z?2:1;F[254]=F[254]=1;function W(){B.call(this,"utf-8 decode"),this.leftOver=null}function k(){B.call(this,"utf-8 encode")}J.utf8encode=function(D){return X.nodebuffer?Q.newBufferFrom(D,"utf-8"):function(C){var H,O,V,j,M,L=C.length,A=0;for(j=0;j>>6:(O<65536?H[M++]=224|O>>>12:(H[M++]=240|O>>>18,H[M++]=128|O>>>12&63),H[M++]=128|O>>>6&63),H[M++]=128|63&O);return H}(D)},J.utf8decode=function(D){return X.nodebuffer?G.transformTo("nodebuffer",D).toString("utf-8"):function(C){var H,O,V,j,M=C.length,L=Array(2*M);for(H=O=0;H>10&1023,L[O++]=56320|1023&V)}return L.length!==O&&(L.subarray?L=L.subarray(0,O):L.length=O),G.applyFromCharCode(L)}(D=G.transformTo(X.uint8array?"uint8array":"array",D))},G.inherits(W,B),W.prototype.processChunk=function(D){var C=G.transformTo(X.uint8array?"uint8array":"array",D.data);if(this.leftOver&&this.leftOver.length){if(X.uint8array){var H=C;(C=new Uint8Array(H.length+this.leftOver.length)).set(this.leftOver,0),C.set(H,this.leftOver.length)}else C=this.leftOver.concat(C);this.leftOver=null}var O=function(j,M){var L;for((M=M||j.length)>j.length&&(M=j.length),L=M-1;0<=L&&(192&j[L])==128;)L--;return L<0?M:L===0?M:L+F[j[L]]>M?L:M}(C),V=C;O!==C.length&&(X.uint8array?(V=C.subarray(0,O),this.leftOver=C.subarray(O,C.length)):(V=C.slice(0,O),this.leftOver=C.slice(O,C.length))),this.push({data:J.utf8decode(V),meta:D.meta})},W.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:J.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},J.Utf8DecodeWorker=W,G.inherits(k,B),k.prototype.processChunk=function(D){this.push({data:J.utf8encode(D.data),meta:D.meta})},J.Utf8EncodeWorker=k},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(Y,Z,J){var G=Y("./support"),X=Y("./base64"),Q=Y("./nodejsUtils"),B=Y("./external");function F(H){return H}function z(H,O){for(var V=0;V>8;this.dir=!!(16&this.externalFileAttributes),D==0&&(this.dosPermissions=63&this.externalFileAttributes),D==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var D=G(this.extraFields[1].value);this.uncompressedSize===X.MAX_VALUE_32BITS&&(this.uncompressedSize=D.readInt(8)),this.compressedSize===X.MAX_VALUE_32BITS&&(this.compressedSize=D.readInt(8)),this.localHeaderOffset===X.MAX_VALUE_32BITS&&(this.localHeaderOffset=D.readInt(8)),this.diskNumberStart===X.MAX_VALUE_32BITS&&(this.diskNumberStart=D.readInt(4))}},readExtraFields:function(D){var C,H,O,V=D.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});D.index+4>>6:(D<65536?k[O++]=224|D>>>12:(k[O++]=240|D>>>18,k[O++]=128|D>>>12&63),k[O++]=128|D>>>6&63),k[O++]=128|63&D);return k},J.buf2binstring=function(W){return z(W,W.length)},J.binstring2buf=function(W){for(var k=new G.Buf8(W.length),D=0,C=k.length;D>10&1023,j[C++]=56320|1023&H)}return z(j,C)},J.utf8border=function(W,k){var D;for((k=k||W.length)>W.length&&(k=W.length),D=k-1;0<=D&&(192&W[D])==128;)D--;return D<0?k:D===0?k:D+B[W[D]]>k?D:k}},{"./common":41}],43:[function(Y,Z,J){Z.exports=function(G,X,Q,B){for(var F=65535&G|0,z=G>>>16&65535|0,W=0;Q!==0;){for(Q-=W=2000>>1:X>>>1;Q[B]=X}return Q}();Z.exports=function(X,Q,B,F){var z=G,W=F+B;X^=-1;for(var k=F;k>>8^z[255&(X^Q[k])];return-1^X}},{}],46:[function(Y,Z,J){var G,X=Y("../utils/common"),Q=Y("./trees"),B=Y("./adler32"),F=Y("./crc32"),z=Y("./messages"),W=0,k=4,D=0,C=-2,H=-1,O=4,V=2,j=8,M=9,L=286,A=30,y=19,g=2*L+1,d=15,E=3,s=258,V0=s+E+1,S=42,h=113,N=1,a=2,$0=3,m=4;function J0(I,t){return I.msg=z[t],t}function U0(I){return(I<<1)-(4I.avail_out&&(T=I.avail_out),T!==0&&(X.arraySet(I.output,t.pending_buf,t.pending_out,T,I.next_out),I.next_out+=T,t.pending_out+=T,I.total_out+=T,I.avail_out-=T,t.pending-=T,t.pending===0&&(t.pending_out=0))}function _(I,t){Q._tr_flush_block(I,0<=I.block_start?I.block_start:-1,I.strstart-I.block_start,t),I.block_start=I.strstart,i(I.strm)}function r(I,t){I.pending_buf[I.pending++]=t}function n(I,t){I.pending_buf[I.pending++]=t>>>8&255,I.pending_buf[I.pending++]=255&t}function Z0(I,t){var T,K,q=I.max_chain_length,w=I.strstart,x=I.prev_length,l=I.nice_match,u=I.strstart>I.w_size-V0?I.strstart-(I.w_size-V0):0,Q0=I.window,q0=I.w_mask,K0=I.prev,M0=I.strstart+s,w0=Q0[w+x-1],H0=Q0[w+x];I.prev_length>=I.good_match&&(q>>=2),l>I.lookahead&&(l=I.lookahead);do if(Q0[(T=t)+x]===H0&&Q0[T+x-1]===w0&&Q0[T]===Q0[w]&&Q0[++T]===Q0[w+1]){w+=2,T++;do;while(Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&Q0[++w]===Q0[++T]&&wu&&--q!=0);return x<=I.lookahead?x:I.lookahead}function p(I){var t,T,K,q,w,x,l,u,Q0,q0,K0=I.w_size;do{if(q=I.window_size-I.lookahead-I.strstart,I.strstart>=K0+(K0-V0)){for(X.arraySet(I.window,I.window,K0,K0,0),I.match_start-=K0,I.strstart-=K0,I.block_start-=K0,t=T=I.hash_size;K=I.head[--t],I.head[t]=K0<=K?K-K0:0,--T;);for(t=T=K0;K=I.prev[--t],I.prev[t]=K0<=K?K-K0:0,--T;);q+=K0}if(I.strm.avail_in===0)break;if(x=I.strm,l=I.window,u=I.strstart+I.lookahead,Q0=q,q0=void 0,q0=x.avail_in,Q0=E)for(w=I.strstart-I.insert,I.ins_h=I.window[w],I.ins_h=(I.ins_h<=E&&(I.ins_h=(I.ins_h<=E)if(K=Q._tr_tally(I,I.strstart-I.match_start,I.match_length-E),I.lookahead-=I.match_length,I.match_length<=I.max_lazy_match&&I.lookahead>=E){for(I.match_length--;I.strstart++,I.ins_h=(I.ins_h<=E&&(I.ins_h=(I.ins_h<=E&&I.match_length<=I.prev_length){for(q=I.strstart+I.lookahead-E,K=Q._tr_tally(I,I.strstart-1-I.prev_match,I.prev_length-E),I.lookahead-=I.prev_length-1,I.prev_length-=2;++I.strstart<=q&&(I.ins_h=(I.ins_h<I.pending_buf_size-5&&(T=I.pending_buf_size-5);;){if(I.lookahead<=1){if(p(I),I.lookahead===0&&t===W)return N;if(I.lookahead===0)break}I.strstart+=I.lookahead,I.lookahead=0;var K=I.block_start+T;if((I.strstart===0||I.strstart>=K)&&(I.lookahead=I.strstart-K,I.strstart=K,_(I,!1),I.strm.avail_out===0))return N;if(I.strstart-I.block_start>=I.w_size-V0&&(_(I,!1),I.strm.avail_out===0))return N}return I.insert=0,t===k?(_(I,!0),I.strm.avail_out===0?$0:m):(I.strstart>I.block_start&&(_(I,!1),I.strm.avail_out),N)}),new c(4,4,8,4,P),new c(4,5,16,8,P),new c(4,6,32,32,P),new c(4,4,16,16,R),new c(8,16,32,32,R),new c(8,16,128,128,R),new c(8,32,128,256,R),new c(32,128,258,1024,R),new c(32,258,258,4096,R)],J.deflateInit=function(I,t){return e(I,t,j,15,8,0)},J.deflateInit2=e,J.deflateReset=b,J.deflateResetKeep=v,J.deflateSetHeader=function(I,t){return I&&I.state?I.state.wrap!==2?C:(I.state.gzhead=t,D):C},J.deflate=function(I,t){var T,K,q,w;if(!I||!I.state||5>8&255),r(K,K.gzhead.time>>16&255),r(K,K.gzhead.time>>24&255),r(K,K.level===9?2:2<=K.strategy||K.level<2?4:0),r(K,255&K.gzhead.os),K.gzhead.extra&&K.gzhead.extra.length&&(r(K,255&K.gzhead.extra.length),r(K,K.gzhead.extra.length>>8&255)),K.gzhead.hcrc&&(I.adler=F(I.adler,K.pending_buf,K.pending,0)),K.gzindex=0,K.status=69):(r(K,0),r(K,0),r(K,0),r(K,0),r(K,0),r(K,K.level===9?2:2<=K.strategy||K.level<2?4:0),r(K,3),K.status=h);else{var x=j+(K.w_bits-8<<4)<<8;x|=(2<=K.strategy||K.level<2?0:K.level<6?1:K.level===6?2:3)<<6,K.strstart!==0&&(x|=32),x+=31-x%31,K.status=h,n(K,x),K.strstart!==0&&(n(K,I.adler>>>16),n(K,65535&I.adler)),I.adler=1}if(K.status===69)if(K.gzhead.extra){for(q=K.pending;K.gzindex<(65535&K.gzhead.extra.length)&&(K.pending!==K.pending_buf_size||(K.gzhead.hcrc&&K.pending>q&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),i(I),q=K.pending,K.pending!==K.pending_buf_size));)r(K,255&K.gzhead.extra[K.gzindex]),K.gzindex++;K.gzhead.hcrc&&K.pending>q&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),K.gzindex===K.gzhead.extra.length&&(K.gzindex=0,K.status=73)}else K.status=73;if(K.status===73)if(K.gzhead.name){q=K.pending;do{if(K.pending===K.pending_buf_size&&(K.gzhead.hcrc&&K.pending>q&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),i(I),q=K.pending,K.pending===K.pending_buf_size)){w=1;break}w=K.gzindexq&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),w===0&&(K.gzindex=0,K.status=91)}else K.status=91;if(K.status===91)if(K.gzhead.comment){q=K.pending;do{if(K.pending===K.pending_buf_size&&(K.gzhead.hcrc&&K.pending>q&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),i(I),q=K.pending,K.pending===K.pending_buf_size)){w=1;break}w=K.gzindexq&&(I.adler=F(I.adler,K.pending_buf,K.pending-q,q)),w===0&&(K.status=103)}else K.status=103;if(K.status===103&&(K.gzhead.hcrc?(K.pending+2>K.pending_buf_size&&i(I),K.pending+2<=K.pending_buf_size&&(r(K,255&I.adler),r(K,I.adler>>8&255),I.adler=0,K.status=h)):K.status=h),K.pending!==0){if(i(I),I.avail_out===0)return K.last_flush=-1,D}else if(I.avail_in===0&&U0(t)<=U0(T)&&t!==k)return J0(I,-5);if(K.status===666&&I.avail_in!==0)return J0(I,-5);if(I.avail_in!==0||K.lookahead!==0||t!==W&&K.status!==666){var l=K.strategy===2?function(u,Q0){for(var q0;;){if(u.lookahead===0&&(p(u),u.lookahead===0)){if(Q0===W)return N;break}if(u.match_length=0,q0=Q._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++,q0&&(_(u,!1),u.strm.avail_out===0))return N}return u.insert=0,Q0===k?(_(u,!0),u.strm.avail_out===0?$0:m):u.last_lit&&(_(u,!1),u.strm.avail_out===0)?N:a}(K,t):K.strategy===3?function(u,Q0){for(var q0,K0,M0,w0,H0=u.window;;){if(u.lookahead<=s){if(p(u),u.lookahead<=s&&Q0===W)return N;if(u.lookahead===0)break}if(u.match_length=0,u.lookahead>=E&&0u.lookahead&&(u.match_length=u.lookahead)}if(u.match_length>=E?(q0=Q._tr_tally(u,1,u.match_length-E),u.lookahead-=u.match_length,u.strstart+=u.match_length,u.match_length=0):(q0=Q._tr_tally(u,0,u.window[u.strstart]),u.lookahead--,u.strstart++),q0&&(_(u,!1),u.strm.avail_out===0))return N}return u.insert=0,Q0===k?(_(u,!0),u.strm.avail_out===0?$0:m):u.last_lit&&(_(u,!1),u.strm.avail_out===0)?N:a}(K,t):G[K.level].func(K,t);if(l!==$0&&l!==m||(K.status=666),l===N||l===$0)return I.avail_out===0&&(K.last_flush=-1),D;if(l===a&&(t===1?Q._tr_align(K):t!==5&&(Q._tr_stored_block(K,0,0,!1),t===3&&(L0(K.head),K.lookahead===0&&(K.strstart=0,K.block_start=0,K.insert=0))),i(I),I.avail_out===0))return K.last_flush=-1,D}return t!==k?D:K.wrap<=0?1:(K.wrap===2?(r(K,255&I.adler),r(K,I.adler>>8&255),r(K,I.adler>>16&255),r(K,I.adler>>24&255),r(K,255&I.total_in),r(K,I.total_in>>8&255),r(K,I.total_in>>16&255),r(K,I.total_in>>24&255)):(n(K,I.adler>>>16),n(K,65535&I.adler)),i(I),0=T.w_size&&(w===0&&(L0(T.head),T.strstart=0,T.block_start=0,T.insert=0),Q0=new X.Buf8(T.w_size),X.arraySet(Q0,t,q0-T.w_size,T.w_size,0),t=Q0,q0=T.w_size),x=I.avail_in,l=I.next_in,u=I.input,I.avail_in=q0,I.next_in=0,I.input=t,p(T);T.lookahead>=E;){for(K=T.strstart,q=T.lookahead-(E-1);T.ins_h=(T.ins_h<>>=E=d>>>24,M-=E,(E=d>>>16&255)===0)a[z++]=65535&d;else{if(!(16&E)){if((64&E)==0){d=L[(65535&d)+(j&(1<>>=E,M-=E),M<15&&(j+=N[B++]<>>=E=d>>>24,M-=E,!(16&(E=d>>>16&255))){if((64&E)==0){d=A[(65535&d)+(j&(1<>>=E,M-=E,(E=z-W)>3,j&=(1<<(M-=s<<3))-1,G.next_in=B,G.next_out=z,G.avail_in=B>>24&255)+(S>>>8&65280)+((65280&S)<<8)+((255&S)<<24)}function j(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new G.Buf16(320),this.work=new G.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function M(S){var h;return S&&S.state?(h=S.state,S.total_in=S.total_out=h.total=0,S.msg="",h.wrap&&(S.adler=1&h.wrap),h.mode=C,h.last=0,h.havedict=0,h.dmax=32768,h.head=null,h.hold=0,h.bits=0,h.lencode=h.lendyn=new G.Buf32(H),h.distcode=h.distdyn=new G.Buf32(O),h.sane=1,h.back=-1,k):D}function L(S){var h;return S&&S.state?((h=S.state).wsize=0,h.whave=0,h.wnext=0,M(S)):D}function A(S,h){var N,a;return S&&S.state?(a=S.state,h<0?(N=0,h=-h):(N=1+(h>>4),h<48&&(h&=15)),h&&(h<8||15=m.wsize?(G.arraySet(m.window,h,N-m.wsize,m.wsize,0),m.wnext=0,m.whave=m.wsize):(a<($0=m.wsize-m.wnext)&&($0=a),G.arraySet(m.window,h,N-a,$0,m.wnext),(a-=$0)?(G.arraySet(m.window,h,N-a,a,0),m.wnext=a,m.whave=m.wsize):(m.wnext+=$0,m.wnext===m.wsize&&(m.wnext=0),m.whave>>8&255,N.check=Q(N.check,w,2,0),_=i=0,N.mode=2;break}if(N.flags=0,N.head&&(N.head.done=!1),!(1&N.wrap)||(((255&i)<<8)+(i>>8))%31){S.msg="incorrect header check",N.mode=30;break}if((15&i)!=8){S.msg="unknown compression method",N.mode=30;break}if(_-=4,I=8+(15&(i>>>=4)),N.wbits===0)N.wbits=I;else if(I>N.wbits){S.msg="invalid window size",N.mode=30;break}N.dmax=1<>8&1),512&N.flags&&(w[0]=255&i,w[1]=i>>>8&255,N.check=Q(N.check,w,2,0)),_=i=0,N.mode=3;case 3:for(;_<32;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}N.head&&(N.head.time=i),512&N.flags&&(w[0]=255&i,w[1]=i>>>8&255,w[2]=i>>>16&255,w[3]=i>>>24&255,N.check=Q(N.check,w,4,0)),_=i=0,N.mode=4;case 4:for(;_<16;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}N.head&&(N.head.xflags=255&i,N.head.os=i>>8),512&N.flags&&(w[0]=255&i,w[1]=i>>>8&255,N.check=Q(N.check,w,2,0)),_=i=0,N.mode=5;case 5:if(1024&N.flags){for(;_<16;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}N.length=i,N.head&&(N.head.extra_len=i),512&N.flags&&(w[0]=255&i,w[1]=i>>>8&255,N.check=Q(N.check,w,2,0)),_=i=0}else N.head&&(N.head.extra=null);N.mode=6;case 6:if(1024&N.flags&&(U0<(Z0=N.length)&&(Z0=U0),Z0&&(N.head&&(I=N.head.extra_len-N.length,N.head.extra||(N.head.extra=Array(N.head.extra_len)),G.arraySet(N.head.extra,a,m,Z0,I)),512&N.flags&&(N.check=Q(N.check,a,Z0,m)),U0-=Z0,m+=Z0,N.length-=Z0),N.length))break $;N.length=0,N.mode=7;case 7:if(2048&N.flags){if(U0===0)break $;for(Z0=0;I=a[m+Z0++],N.head&&I&&N.length<65536&&(N.head.name+=String.fromCharCode(I)),I&&Z0>9&1,N.head.done=!0),S.adler=N.check=0,N.mode=12;break;case 10:for(;_<32;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}S.adler=N.check=V(i),_=i=0,N.mode=11;case 11:if(N.havedict===0)return S.next_out=J0,S.avail_out=L0,S.next_in=m,S.avail_in=U0,N.hold=i,N.bits=_,2;S.adler=N.check=1,N.mode=12;case 12:if(h===5||h===6)break $;case 13:if(N.last){i>>>=7&_,_-=7&_,N.mode=27;break}for(;_<3;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}switch(N.last=1&i,_-=1,3&(i>>>=1)){case 0:N.mode=14;break;case 1:if(s(N),N.mode=20,h!==6)break;i>>>=2,_-=2;break $;case 2:N.mode=17;break;case 3:S.msg="invalid block type",N.mode=30}i>>>=2,_-=2;break;case 14:for(i>>>=7&_,_-=7&_;_<32;){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}if((65535&i)!=(i>>>16^65535)){S.msg="invalid stored block lengths",N.mode=30;break}if(N.length=65535&i,_=i=0,N.mode=15,h===6)break $;case 15:N.mode=16;case 16:if(Z0=N.length){if(U0>>=5,_-=5,N.ndist=1+(31&i),i>>>=5,_-=5,N.ncode=4+(15&i),i>>>=4,_-=4,286>>=3,_-=3}for(;N.have<19;)N.lens[x[N.have++]]=0;if(N.lencode=N.lendyn,N.lenbits=7,T={bits:N.lenbits},t=F(0,N.lens,0,19,N.lencode,0,N.work,T),N.lenbits=T.bits,t){S.msg="invalid code lengths set",N.mode=30;break}N.have=0,N.mode=19;case 19:for(;N.have>>16&255,f=65535&q,!((R=q>>>24)<=_);){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}if(f<16)i>>>=R,_-=R,N.lens[N.have++]=f;else{if(f===16){for(K=R+2;_>>=R,_-=R,N.have===0){S.msg="invalid bit length repeat",N.mode=30;break}I=N.lens[N.have-1],Z0=3+(3&i),i>>>=2,_-=2}else if(f===17){for(K=R+3;_>>=R)),i>>>=3,_-=3}else{for(K=R+7;_>>=R)),i>>>=7,_-=7}if(N.have+Z0>N.nlen+N.ndist){S.msg="invalid bit length repeat",N.mode=30;break}for(;Z0--;)N.lens[N.have++]=I}}if(N.mode===30)break;if(N.lens[256]===0){S.msg="invalid code -- missing end-of-block",N.mode=30;break}if(N.lenbits=9,T={bits:N.lenbits},t=F(z,N.lens,0,N.nlen,N.lencode,0,N.work,T),N.lenbits=T.bits,t){S.msg="invalid literal/lengths set",N.mode=30;break}if(N.distbits=6,N.distcode=N.distdyn,T={bits:N.distbits},t=F(W,N.lens,N.nlen,N.ndist,N.distcode,0,N.work,T),N.distbits=T.bits,t){S.msg="invalid distances set",N.mode=30;break}if(N.mode=20,h===6)break $;case 20:N.mode=21;case 21:if(6<=U0&&258<=L0){S.next_out=J0,S.avail_out=L0,S.next_in=m,S.avail_in=U0,N.hold=i,N.bits=_,B(S,n),J0=S.next_out,$0=S.output,L0=S.avail_out,m=S.next_in,a=S.input,U0=S.avail_in,i=N.hold,_=N.bits,N.mode===12&&(N.back=-1);break}for(N.back=0;c=(q=N.lencode[i&(1<>>16&255,f=65535&q,!((R=q>>>24)<=_);){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}if(c&&(240&c)==0){for(v=R,b=c,e=f;c=(q=N.lencode[e+((i&(1<>v)])>>>16&255,f=65535&q,!(v+(R=q>>>24)<=_);){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}i>>>=v,_-=v,N.back+=v}if(i>>>=R,_-=R,N.back+=R,N.length=f,c===0){N.mode=26;break}if(32&c){N.back=-1,N.mode=12;break}if(64&c){S.msg="invalid literal/length code",N.mode=30;break}N.extra=15&c,N.mode=22;case 22:if(N.extra){for(K=N.extra;_>>=N.extra,_-=N.extra,N.back+=N.extra}N.was=N.length,N.mode=23;case 23:for(;c=(q=N.distcode[i&(1<>>16&255,f=65535&q,!((R=q>>>24)<=_);){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}if((240&c)==0){for(v=R,b=c,e=f;c=(q=N.distcode[e+((i&(1<>v)])>>>16&255,f=65535&q,!(v+(R=q>>>24)<=_);){if(U0===0)break $;U0--,i+=a[m++]<<_,_+=8}i>>>=v,_-=v,N.back+=v}if(i>>>=R,_-=R,N.back+=R,64&c){S.msg="invalid distance code",N.mode=30;break}N.offset=f,N.extra=15&c,N.mode=24;case 24:if(N.extra){for(K=N.extra;_>>=N.extra,_-=N.extra,N.back+=N.extra}if(N.offset>N.dmax){S.msg="invalid distance too far back",N.mode=30;break}N.mode=25;case 25:if(L0===0)break $;if(Z0=n-L0,N.offset>Z0){if((Z0=N.offset-Z0)>N.whave&&N.sane){S.msg="invalid distance too far back",N.mode=30;break}p=Z0>N.wnext?(Z0-=N.wnext,N.wsize-Z0):N.wnext-Z0,Z0>N.length&&(Z0=N.length),P=N.window}else P=$0,p=J0-N.offset,Z0=N.length;for(L0g?(E=p[P+O[h]],_[r+O[h]]):(E=96,0),j=1<>J0)+(M-=j)]=d<<24|E<<16|s|0,M!==0;);for(j=1<>=1;if(j!==0?(i&=j-1,i+=j):i=0,h++,--n[S]==0){if(S===a)break;S=W[k+O[h]]}if($0>>7)]}function r(q,w){q.pending_buf[q.pending++]=255&w,q.pending_buf[q.pending++]=w>>>8&255}function n(q,w,x){q.bi_valid>V-x?(q.bi_buf|=w<>V-q.bi_valid,q.bi_valid+=x-V):(q.bi_buf|=w<>>=1,x<<=1,0<--w;);return x>>>1}function P(q,w,x){var l,u,Q0=Array(O+1),q0=0;for(l=1;l<=O;l++)Q0[l]=q0=q0+x[l-1]<<1;for(u=0;u<=w;u++){var K0=q[2*u+1];K0!==0&&(q[2*u]=p(Q0[K0]++,K0))}}function R(q){var w;for(w=0;w>1;1<=x;x--)v(q,Q0,x);for(u=M0;x=q.heap[1],q.heap[1]=q.heap[q.heap_len--],v(q,Q0,1),l=q.heap[1],q.heap[--q.heap_max]=x,q.heap[--q.heap_max]=l,Q0[2*u]=Q0[2*x]+Q0[2*l],q.depth[u]=(q.depth[x]>=q.depth[l]?q.depth[x]:q.depth[l])+1,Q0[2*x+1]=Q0[2*l+1]=u,q.heap[1]=u++,v(q,Q0,1),2<=q.heap_len;);q.heap[--q.heap_max]=q.heap[1],function(H0,v0){var j2,l0,t2,D0,A1,z8,K2=v0.dyn_tree,NU=v0.max_code,H7=v0.stat_desc.static_tree,j7=v0.stat_desc.has_stree,z7=v0.stat_desc.extra_bits,RU=v0.stat_desc.extra_base,e2=v0.stat_desc.max_length,P1=0;for(D0=0;D0<=O;D0++)H0.bl_count[D0]=0;for(K2[2*H0.heap[H0.heap_max]+1]=0,j2=H0.heap_max+1;j2>=7;u>>=1)if(1&w0&&K0.dyn_ltree[2*M0]!==0)return X;if(K0.dyn_ltree[18]!==0||K0.dyn_ltree[20]!==0||K0.dyn_ltree[26]!==0)return Q;for(M0=32;M0>>3,(Q0=q.static_len+3+7>>>3)<=u&&(u=Q0)):u=Q0=x+5,x+4<=u&&w!==-1?K(q,w,x,l):q.strategy===4||Q0===u?(n(q,2+(l?1:0),3),b(q,V0,S)):(n(q,4+(l?1:0),3),function(K0,M0,w0,H0){var v0;for(n(K0,M0-257,5),n(K0,w0-1,5),n(K0,H0-4,4),v0=0;v0>>8&255,q.pending_buf[q.d_buf+2*q.last_lit+1]=255&w,q.pending_buf[q.l_buf+q.last_lit]=255&x,q.last_lit++,w===0?q.dyn_ltree[2*x]++:(q.matches++,w--,q.dyn_ltree[2*(N[x]+W+1)]++,q.dyn_dtree[2*_(w)]++),q.last_lit===q.lit_bufsize-1},J._tr_align=function(q){n(q,2,3),Z0(q,M,V0),function(w){w.bi_valid===16?(r(w,w.bi_buf),w.bi_buf=0,w.bi_valid=0):8<=w.bi_valid&&(w.pending_buf[w.pending++]=255&w.bi_buf,w.bi_buf>>=8,w.bi_valid-=8)}(q)}},{"../utils/common":41}],53:[function(Y,Z,J){Z.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(Y,Z,J){(function(G){(function(X,Q){if(!X.setImmediate){var B,F,z,W,k=1,D={},C=!1,H=X.document,O=Object.getPrototypeOf&&Object.getPrototypeOf(X);O=O&&O.setTimeout?O:X,B={}.toString.call(X.process)==="[object process]"?function(L){j0.nextTick(function(){j(L)})}:function(){if(X.postMessage&&!X.importScripts){var L=!0,A=X.onmessage;return X.onmessage=function(){L=!1},X.postMessage("","*"),X.onmessage=A,L}}()?(W="setImmediate$"+Math.random()+"$",X.addEventListener?X.addEventListener("message",M,!1):X.attachEvent("onmessage",M),function(L){X.postMessage(W+L,"*")}):X.MessageChannel?((z=new MessageChannel).port1.onmessage=function(L){j(L.data)},function(L){z.port2.postMessage(L)}):H&&("onreadystatechange"in H.createElement("script"))?(F=H.documentElement,function(L){var A=H.createElement("script");A.onreadystatechange=function(){j(L),A.onreadystatechange=null,F.removeChild(A),A=null},F.appendChild(A)}):function(L){setTimeout(j,0,L)},O.setImmediate=function(L){typeof L!="function"&&(L=Function(""+L));for(var A=Array(arguments.length-1),y=0;y"u"?G===void 0?this:G:self)}).call(this,typeof c0<"u"?c0:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})}(I9),I9.exports}var YB=UB(),c2=g9(YB),Z1={exports:{}},w9,dZ;function ZB(){if(dZ)return w9;dZ=1;var $={"&":"&",'"':""","'":"'","<":"<",">":">"};function U(Y){return Y&&Y.replace?Y.replace(/([&"<>'])/g,function(Z,J){return $[J]}):Y}return w9=U,w9}var cZ;function QB(){if(cZ)return Z1.exports;cZ=1;var $=ZB(),U=m9().Stream,Y=" ";function Z(F,z){if(typeof z!=="object")z={indent:z};var W=z.stream?new U:null,k="",D=!1,C=!z.indent?"":z.indent===!0?Y:z.indent,H=!0;function O(A){if(!H)A();else j0.nextTick(A)}function V(A,y){if(y!==void 0)k+=y;if(A&&!D)W=W||new U,D=!0;if(A&&D){var g=k;O(function(){W.emit("data",g)}),k=""}}function j(A,y){Q(V,X(A,C,C?1:0),y)}function M(){if(W){var A=k;O(function(){W.emit("data",A),W.emit("end"),W.readable=!1,W.emit("close")})}}function L(A){var y=A.encoding||"UTF-8",g={version:"1.0",encoding:y};if(A.standalone)g.standalone=A.standalone;j({"?xml":{_attr:g}}),k=k.replace("/>","?>")}if(O(function(){H=!1}),z.declaration)L(z.declaration);if(F&&F.forEach)F.forEach(function(A,y){var g;if(y+1===F.length)g=M;j(A,g)});else j(F,M);if(W)return W.readable=!0,W;return k}function J(){var F=Array.prototype.slice.call(arguments),z={_elem:X(F)};return z.push=function(W){if(!this.append)throw Error("not assigned to a parent!");var k=this,D=this._elem.indent;Q(this.append,X(W,D,this._elem.icount+(D?1:0)),function(){k.append(!0)})},z.close=function(W){if(W!==void 0)this.push(W);if(this.end)this.end()},z}function G(F,z){return Array(z||0).join(F||"")}function X(F,z,W){W=W||0;var k=G(z,W),D,C=F,H=!1;if(typeof F==="object"){var O=Object.keys(F);if(D=O[0],C=F[D],C&&C._elem)return C._elem.name=D,C._elem.icount=W,C._elem.indent=z,C._elem.indents=k,C._elem.interrupt=C,C._elem}var V=[],j=[],M;function L(A){var y=Object.keys(A);y.forEach(function(g){V.push(B(g,A[g]))})}switch(typeof C){case"object":if(C===null)break;if(C._attr)L(C._attr);if(C._cdata)j.push(("/g,"]]]]>")+"]]>");if(C.forEach){if(M=!1,j.push(""),C.forEach(function(A){if(typeof A=="object"){var y=Object.keys(A)[0];if(y=="_attr")L(A._attr);else j.push(X(A,z,W+1))}else j.pop(),M=!0,j.push($(A))}),!M)j.push("")}break;default:j.push($(C))}return{name:D,interrupt:H,attributes:V,content:j,icount:W,indents:k,indent:z}}function Q(F,z,W){if(typeof z!="object")return F(!1,z);var k=z.interrupt?1:z.content.length;function D(){while(z.content.length){var H=z.content.shift();if(H===void 0)continue;if(C(H))return;Q(F,H)}if(F(!1,(k>1?z.indents:"")+(z.name?"":"")+(z.indent&&!W?` +`:"")),W)W()}function C(H){if(H.interrupt)return H.interrupt.append=F,H.interrupt.end=D,H.interrupt=!1,F(!0),!0;return!1}if(F(!1,z.indents+(z.name?"<"+z.name:"")+(z.attributes.length?" "+z.attributes.join(" "):"")+(k?z.name?">":"":z.name?"/>":"")+(z.indent&&k>1?` +`:"")),!k)return F(!1,z.indent?` +`:"");if(!C(z))D()}function B(F,z){return F+'="'+$(z)+'"'}return Z1.exports=Z,Z1.exports.element=Z1.exports.Element=J,Z1.exports}var JB=QB(),F0=g9(JB),Q1=0,W9=32,GB=32,KB=($,U)=>{let Y=U.replace(/-/g,"");if(Y.length!==GB)throw Error(`Error: Cannot extract GUID from font filename: ${U}`);let J=Y.replace(/(..)/g,"$1 ").trim().split(" ").map((B)=>parseInt(B,16));J.reverse();let X=$.slice(Q1,W9).map((B,F)=>B^J[F%J.length]),Q=new Uint8Array(Q1+X.length+Math.max(0,$.length-W9));return Q.set($.slice(0,Q1)),Q.set(X,Q1),Q.set($.slice(W9),Q1+X.length),Q};class H8{format($,U={stack:[]}){let Y=$.prepForXml(U);if(Y)return Y;else throw Error("XMLComponent did not format correctly")}}class jU{replace($,U,Y){let Z=$;return U.forEach((J,G)=>{Z=Z.replace(new RegExp(`{${J.fileName}}`,"g"),(Y+G).toString())}),Z}getMediaData($,U){return U.Array.filter((Y)=>$.search(`{${Y.fileName}}`)>0)}}class K7{replace($,U){let Y=$;for(let Z of U)Y=Y.replace(new RegExp(`{${Z.reference}-${Z.instance}}`,"g"),Z.numId.toString());return Y}}class q7{constructor(){Y0(this,"formatter"),Y0(this,"imageReplacer"),Y0(this,"numberingReplacer"),this.formatter=new H8,this.imageReplacer=new jU,this.numberingReplacer=new K7}compile($,U,Y=[]){let Z=new c2,J=this.xmlifyFile($,U),G=new Map(Object.entries(J));for(let[,X]of G)if(Array.isArray(X))for(let Q of X)Z.file(Q.path,X1(Q.data));else Z.file(X.path,X1(X.data));for(let X of Y)Z.file(X.path,X1(X.data));for(let X of $.Media.Array)if(X.type!=="svg")Z.file(`word/media/${X.fileName}`,X.data);else Z.file(`word/media/${X.fileName}`,X.data),Z.file(`word/media/${X.fallback.fileName}`,X.fallback.data);for(let{data:X,name:Q,fontKey:B}of $.FontTable.fontOptionsWithKey){let[F]=Q.split(".");Z.file(`word/fonts/${F}.odttf`,KB(X,B))}return Z}xmlifyFile($,U){let Y=$.Document.Relationships.RelationshipCount+1,Z=F0(this.formatter.format($.Document.View,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),J=$.Comments.Relationships.RelationshipCount+1,G=F0(this.formatter.format($.Comments,{viewWrapper:{View:$.Comments,Relationships:$.Comments.Relationships},file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),X=$.FootNotes.Relationships.RelationshipCount+1,Q=F0(this.formatter.format($.FootNotes.View,{viewWrapper:$.FootNotes,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),B=this.imageReplacer.getMediaData(Z,$.Media),F=this.imageReplacer.getMediaData(G,$.Media),z=this.imageReplacer.getMediaData(Q,$.Media);return{Relationships:{data:(()=>{return B.forEach((W,k)=>{$.Document.Relationships.addRelationship(Y+k,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),$.Document.Relationships.addRelationship($.Document.Relationships.RelationshipCount+1,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable","fontTable.xml"),F0(this.formatter.format($.Document.Relationships,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/document.xml.rels"},Document:{data:(()=>{let W=this.imageReplacer.replace(Z,B,Y);return this.numberingReplacer.replace(W,$.Numbering.ConcreteNumbering)})(),path:"word/document.xml"},Styles:{data:(()=>{let W=F0(this.formatter.format($.Styles,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}});return this.numberingReplacer.replace(W,$.Numbering.ConcreteNumbering)})(),path:"word/styles.xml"},Properties:{data:F0(this.formatter.format($.CoreProperties,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/core.xml"},Numbering:{data:F0(this.formatter.format($.Numbering,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/numbering.xml"},FileRelationships:{data:F0(this.formatter.format($.FileRelationships,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:"_rels/.rels"},HeaderRelationships:$.Headers.map((W,k)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}});return this.imageReplacer.getMediaData(D,$.Media).forEach((H,O)=>{W.Relationships.addRelationship(O,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${H.fileName}`)}),{data:F0(this.formatter.format(W.Relationships,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:`word/_rels/header${k+1}.xml.rels`}}),FooterRelationships:$.Footers.map((W,k)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}});return this.imageReplacer.getMediaData(D,$.Media).forEach((H,O)=>{W.Relationships.addRelationship(O,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${H.fileName}`)}),{data:F0(this.formatter.format(W.Relationships,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:`word/_rels/footer${k+1}.xml.rels`}}),Headers:$.Headers.map((W,k)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),C=this.imageReplacer.getMediaData(D,$.Media),H=this.imageReplacer.replace(D,C,0);return{data:this.numberingReplacer.replace(H,$.Numbering.ConcreteNumbering),path:`word/header${k+1}.xml`}}),Footers:$.Footers.map((W,k)=>{let D=F0(this.formatter.format(W.View,{viewWrapper:W,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),C=this.imageReplacer.getMediaData(D,$.Media),H=this.imageReplacer.replace(D,C,0);return{data:this.numberingReplacer.replace(H,$.Numbering.ConcreteNumbering),path:`word/footer${k+1}.xml`}}),ContentTypes:{data:F0(this.formatter.format($.ContentTypes,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:"[Content_Types].xml"},CustomProperties:{data:F0(this.formatter.format($.CustomProperties,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/custom.xml"},AppProperties:{data:F0(this.formatter.format($.AppProperties,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"docProps/app.xml"},FootNotes:{data:(()=>{let W=this.imageReplacer.replace(Q,z,X);return this.numberingReplacer.replace(W,$.Numbering.ConcreteNumbering)})(),path:"word/footnotes.xml"},FootNotesRelationships:{data:(()=>{return z.forEach((W,k)=>{$.FootNotes.Relationships.addRelationship(X+k,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),F0(this.formatter.format($.FootNotes.Relationships,{viewWrapper:$.FootNotes,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/footnotes.xml.rels"},Endnotes:{data:F0(this.formatter.format($.Endnotes.View,{viewWrapper:$.Endnotes,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:"word/endnotes.xml"},EndnotesRelationships:{data:F0(this.formatter.format($.Endnotes.Relationships,{viewWrapper:$.Endnotes,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}),path:"word/_rels/endnotes.xml.rels"},Settings:{data:F0(this.formatter.format($.Settings,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/settings.xml"},Comments:{data:(()=>{let W=this.imageReplacer.replace(G,F,J);return this.numberingReplacer.replace(W,$.Numbering.ConcreteNumbering)})(),path:"word/comments.xml"},CommentsRelationships:{data:(()=>{return F.forEach((W,k)=>{$.Comments.Relationships.addRelationship(J+k,"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",`media/${W.fileName}`)}),F0(this.formatter.format($.Comments.Relationships,{viewWrapper:{View:$.Comments,Relationships:$.Comments.Relationships},file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}})})(),path:"word/_rels/comments.xml.rels"},FontTable:{data:F0(this.formatter.format($.FontTable.View,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{standalone:"yes",encoding:"UTF-8"}}),path:"word/fontTable.xml"},FontTableRelationships:{data:(()=>F0(this.formatter.format($.FontTable.Relationships,{viewWrapper:$.Document,file:$,stack:[]}),{indent:U,declaration:{encoding:"UTF-8"}}))(),path:"word/_rels/fontTable.xml.rels"}}}}var X7={NONE:"",WITH_2_BLANKS:" ",WITH_4_BLANKS:" ",WITH_TAB:"\t"},mZ=($)=>$===!0?X7.WITH_2_BLANKS:$===!1?void 0:$,V7=class ${static pack(U,Y,Z){return b9(this,arguments,function*(J,G,X,Q=[]){return this.compiler.compile(J,mZ(X),Q).generateAsync({type:G,mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",compression:"DEFLATE"})})}static toString(U,Y,Z=[]){return $.pack(U,"string",Y,Z)}static toBuffer(U,Y,Z=[]){return $.pack(U,"nodebuffer",Y,Z)}static toBase64String(U,Y,Z=[]){return $.pack(U,"base64",Y,Z)}static toBlob(U,Y,Z=[]){return $.pack(U,"blob",Y,Z)}static toArrayBuffer(U,Y,Z=[]){return $.pack(U,"arraybuffer",Y,Z)}static toStream(U,Y,Z=[]){let J=new $B.Stream;return this.compiler.compile(U,mZ(Y),Z).generateAsync({type:"nodebuffer",mimeType:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",compression:"DEFLATE"}).then((X)=>{J.emit("data",X),J.emit("end")}),J}};Y0(V7,"compiler",new q7);var qB=V7,XB=new H8,j8=($)=>{return $8.xml2js($,{compact:!1,captureSpacesBetweenElements:!0})},B7=($)=>{var U;return(U=j8(F0(XB.format(new a2({text:$})))).elements[0].elements)!=null?U:[]},L7=($)=>R0(W0({},$),{attributes:{"xml:space":"preserve"}}),zU=($,U)=>{var Y,Z;return(Z=(Y=$.elements)==null?void 0:Y.filter((J)=>J.name===U)[0].elements)!=null?Z:[]},h2=($,U,Y)=>{let Z=zU($,"Types");if(Z.some((G)=>{var X,Q;return G.type==="element"&&G.name==="Default"&&((X=G==null?void 0:G.attributes)==null?void 0:X.ContentType)===U&&((Q=G==null?void 0:G.attributes)==null?void 0:Q.Extension)===Y}))return;Z.push({attributes:{ContentType:U,Extension:Y},name:"Default",type:"element"})},VB=($)=>{let U=parseInt($.substring(3),10);return isNaN(U)?0:U},BB=($)=>{return zU($,"Relationships").map((Y)=>{var Z,J,G;return VB((G=(J=(Z=Y.attributes)==null?void 0:Z.Id)==null?void 0:J.toString())!=null?G:"")}).reduce((Y,Z)=>Math.max(Y,Z),0)+1},lZ=($,U,Y,Z,J)=>{let G=zU($,"Relationships");return G.push({attributes:{Id:`rId${U}`,Type:Y,Target:Z,TargetMode:J},name:"Relationship",type:"element"}),G};class M7 extends Error{constructor($){super(`Token ${$} not found`);this.name="TokenNotFoundError"}}var LB=($,U)=>{var Y,Z,J,G;for(let X=0;X<((Y=$.elements)!=null?Y:[]).length;X++){let Q=$.elements[X];if(Q.type==="element"&&Q.name==="w:r"){let B=((Z=Q.elements)!=null?Z:[]).filter((F)=>F.type==="element"&&F.name==="w:t");for(let F of B){if(!((J=F.elements)==null?void 0:J[0]))continue;if((G=F.elements[0].text)==null?void 0:G.includes(U))return X}}}throw new M7(U)},MB=($,U)=>{var Y,Z;let J=-1,G=(Z=(Y=$.elements)==null?void 0:Y.map((B,F)=>{var z,W,k;if(J!==-1)return B;if(B.type==="element"&&B.name==="w:t"){let C=((k=(W=(z=B.elements)==null?void 0:z[0])==null?void 0:W.text)!=null?k:"").split(U),H=C.map((O)=>R0(W0(W0({},B),L7(B)),{elements:B7(O)}));if(C.length>1)J=F;return H}else return B}).flat())!=null?Z:[],X=R0(W0({},JSON.parse(JSON.stringify($))),{elements:G.slice(0,J+1)}),Q=R0(W0({},JSON.parse(JSON.stringify($))),{elements:G.slice(J+1)});return{left:X,right:Q}},J1={START:0,MIDDLE:1,END:2},IB=({paragraphElement:$,renderedParagraph:U,originalText:Y,replacementText:Z})=>{let J=U.text.indexOf(Y),G=J+Y.length-1,X=J1.START;for(let Q of U.runs)for(let{text:B,index:F,start:z,end:W}of Q.parts)switch(X){case J1.START:if(J>=z&&J<=W){let k=J-z,D=Math.min(G,W)-z,C=Q.text.substring(k,D+1);if(C==="")continue;let H=B.replace(C,Z);H9($.elements[Q.index].elements[F],H),X=J1.MIDDLE;continue}break;case J1.MIDDLE:if(G<=W){let k=B.substring(G-z+1);H9($.elements[Q.index].elements[F],k);let D=$.elements[Q.index].elements[F];$.elements[Q.index].elements[F]=L7(D),X=J1.END}else H9($.elements[Q.index].elements[F],"");break}return $},H9=($,U)=>{return $.elements=B7(U),$},wB=($)=>{if($.element.name!=="w:p")throw Error(`Invalid node type: ${$.element.name}`);if(!$.element.elements)return{text:"",runs:[],index:-1,pathToParagraph:[]};let U=0,Y=$.element.elements.map((J,G)=>({element:J,i:G})).filter(({element:J})=>J.name==="w:r").map(({element:J,i:G})=>{let X=WB(J,G,U);return U+=X.text.length,X}).filter((J)=>!!J);return{text:Y.reduce((J,G)=>J+G.text,""),runs:Y,index:$.index,pathToParagraph:I7($)}},WB=($,U,Y)=>{if(!$.elements)return{text:"",parts:[],index:-1,start:Y,end:Y};let Z=Y,J=$.elements.map((X,Q)=>{var B,F;return X.name==="w:t"&&X.elements&&X.elements.length>0?{text:(F=(B=X.elements[0].text)==null?void 0:B.toString())!=null?F:"",index:Q,start:Z,end:(()=>{var z,W;return Z+=((W=(z=X.elements[0].text)==null?void 0:z.toString())!=null?W:"").length-1,Z})()}:void 0}).filter((X)=>!!X).map((X)=>X);return{text:J.reduce((X,Q)=>X+Q.text,""),parts:J,index:U,start:Y,end:Z}},I7=($)=>$.parent?[...I7($.parent),$.index]:[$.index],aZ=($)=>{var U,Y;return(Y=(U=$.element.elements)==null?void 0:U.map((Z,J)=>({element:Z,index:J,parent:$})))!=null?Y:[]},w7=($)=>{let U=[],Y=[...aZ({element:$,index:0,parent:void 0})],Z;while(Y.length>0){if(Z=Y.shift(),Z.element.name==="w:p")U=[...U,wB(Z)];Y.push(...aZ(Z))}return U},HB=($,U)=>w7($).filter((Y)=>Y.text.includes(U)),jB=new H8,j9="ɵ",zB=({json:$,patch:U,patchText:Y,context:Z,keepOriginalStyles:J=!0})=>{let G=HB($,Y);if(G.length===0)return{element:$,didFindOccurrence:!1};for(let X of G){let Q=U.children.map((B)=>j8(F0(jB.format(B,Z)))).map((B)=>B.elements[0]);switch(U.type){case y9.DOCUMENT:{let B=FB($,X.pathToParagraph),F=NB(X.pathToParagraph);B.elements.splice(F,1,...Q);break}case y9.PARAGRAPH:default:{let B=W7($,X.pathToParagraph);IB({paragraphElement:B,renderedParagraph:X,originalText:Y,replacementText:j9});let F=LB(B,j9),z=B.elements[F],{left:W,right:k}=MB(z,j9),D=Q,C=k;if(J){let H=z.elements.filter((O)=>O.type==="element"&&O.name==="w:rPr");D=Q.map((O)=>{var V;return R0(W0({},O),{elements:[...H,...(V=O.elements)!=null?V:[]]})}),C=R0(W0({},k),{elements:[...H,...k.elements]})}B.elements.splice(F,1,W,...D,C);break}}}return{element:$,didFindOccurrence:!0}},W7=($,U)=>{let Y=$;for(let Z=1;ZW7($,U.slice(0,U.length-1)),NB=($)=>$[$.length-1],y9={DOCUMENT:"file",PARAGRAPH:"paragraph"},pZ=new jU,RB=new Uint8Array([255,254]),DB=new Uint8Array([254,255]),iZ=($,U)=>{if($.length!==U.length)return!1;for(let Y=0;Y<$.length;Y++)if($[Y]!==U[Y])return!1;return!0},AB=($)=>b9(null,[$],function*({outputType:U,data:Y,patches:Z,keepOriginalStyles:J,placeholderDelimiters:G={start:"{{",end:"}}"},recursive:X=!0}){var Q,B,F;let z=Y instanceof c2?Y:yield c2.loadAsync(Y),W=new Map,k={Media:new w8},D=new Map,C=[],H=[],O=!1,V=new Map;for(let[M,L]of Object.entries(z.files)){let A=yield L.async("uint8array"),y=A.slice(0,2);if(iZ(y,RB)||iZ(y,DB)){V.set(M,A);continue}if(!M.endsWith(".xml")&&!M.endsWith(".rels")){V.set(M,A);continue}let g=j8(yield L.async("text"));if(M==="word/document.xml"){let d=(Q=g.elements)==null?void 0:Q.find((E)=>E.name==="w:document");if(d&&d.attributes){for(let E of["mc","wp","r","w15","m"])d.attributes[`xmlns:${E}`]=p1[E];d.attributes["mc:Ignorable"]=`${d.attributes["mc:Ignorable"]||""} w15`.trim()}}if(M.startsWith("word/")&&!M.endsWith(".xml.rels")){let d={file:k,viewWrapper:{Relationships:{addRelationship:(S,h,N,a)=>{H.push({key:M,hyperlink:{id:S,link:N}})}}},stack:[]};if(W.set(M,d),!(G==null?void 0:G.start.trim())||!(G==null?void 0:G.end.trim()))throw Error("Both start and end delimiters must be non-empty strings.");let{start:E,end:s}=G;for(let[S,h]of Object.entries(Z)){let N=`${E}${S}${s}`;while(!0){let{didFindOccurrence:a}=zB({json:g,patch:R0(W0({},h),{children:h.children.map(($0)=>{if($0 instanceof K8){let m=new _2($0.options.children,R1());return H.push({key:M,hyperlink:{id:m.linkId,link:$0.options.link}}),m}else return $0})}),patchText:N,context:d,keepOriginalStyles:J});if(!X||!a)break}}let V0=pZ.getMediaData(JSON.stringify(g),d.file.Media);if(V0.length>0)O=!0,C.push({key:M,mediaDatas:V0})}D.set(M,g)}for(let{key:M,mediaDatas:L}of C){let A=`word/_rels/${M.split("/").pop()}.rels`,y=(B=D.get(A))!=null?B:rZ();D.set(A,y);let g=BB(y),d=pZ.replace(JSON.stringify(D.get(M)),L,g);D.set(M,JSON.parse(d));for(let E=0;E{return $8.js2xml($,{attributeValueFn:(Y)=>String(Y).replace(/&(?!amp;|lt;|gt;|quot;|apos;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})},rZ=()=>({declaration:{attributes:{version:"1.0",encoding:"UTF-8",standalone:"yes"}},elements:[{type:"element",name:"Relationships",attributes:{xmlns:"http://schemas.openxmlformats.org/package/2006/relationships"},elements:[]}]}),TB=($)=>b9(null,[$],function*({data:U}){let Y=U instanceof c2?U:yield c2.loadAsync(U),Z=new Set;for(let[J,G]of Object.entries(Y.files)){if(!J.endsWith(".xml")&&!J.endsWith(".rels"))continue;if(J.startsWith("word/")&&!J.endsWith(".xml.rels")){let X=j8(yield G.async("text"));w7(X).forEach((Q)=>CB(Q.text).forEach((B)=>Z.add(B)))}}return Array.from(Z)}),CB=($)=>{var U;let Y=new RegExp("(?<=\\{\\{).+?(?=\\}\\})","gs");return(U=$.match(Y))!=null?U:[]};if(typeof globalThis.Buffer>"u")globalThis.Buffer=G0;if(typeof globalThis.process>"u")globalThis.process=OB;globalThis.__bundles=globalThis.__bundles||{};globalThis.__bundles.docx=FU;})(); diff --git a/apps/sim/lib/execution/sandbox/bundles/pdf-lib.cjs b/apps/sim/lib/execution/sandbox/bundles/pdf-lib.cjs index 830ff9cf783..f56f8e9699a 100644 --- a/apps/sim/lib/execution/sandbox/bundles/pdf-lib.cjs +++ b/apps/sim/lib/execution/sandbox/bundles/pdf-lib.cjs @@ -1,7 +1,7 @@ // sandbox bundle: pdf-lib // generated by apps/sim/lib/execution/sandbox/bundles/build.ts // do not edit by hand. run `bun run build:sandbox-bundles` to regenerate. -(()=>{var d3=Object.create;var{getPrototypeOf:n3,defineProperty:fq,getOwnPropertyNames:r3}=Object;var i3=Object.prototype.hasOwnProperty;var $2=(V,q,X)=>{X=V!=null?d3(n3(V)):{};let K=q||!V||!V.__esModule?fq(X,"default",{value:V,enumerable:!0}):X;for(let Q of r3(V))if(!i3.call(K,Q))fq(K,Q,{get:()=>V[Q],enumerable:!0});return K};var g0=(V,q)=>()=>(q||V((q={exports:{}}).exports,q),q.exports);var a3=(V,q)=>{for(var X in q)fq(V,X,{get:q[X],enumerable:!0,configurable:!0,set:(K)=>q[X]=()=>K})};var gX=g0((hZ,uX)=>{var A0=uX.exports={},F6,P6;function sq(){throw new Error("setTimeout has not been defined")}function tq(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")F6=setTimeout;else F6=sq}catch(V){F6=sq}try{if(typeof clearTimeout==="function")P6=clearTimeout;else P6=tq}catch(V){P6=tq}})();function FX(V){if(F6===setTimeout)return setTimeout(V,0);if((F6===sq||!F6)&&setTimeout)return F6=setTimeout,setTimeout(V,0);try{return F6(V,0)}catch(q){try{return F6.call(null,V,0)}catch(X){return F6.call(this,V,0)}}}function NK(V){if(P6===clearTimeout)return clearTimeout(V);if((P6===tq||!P6)&&clearTimeout)return P6=clearTimeout,clearTimeout(V);try{return P6(V)}catch(q){try{return P6.call(null,V)}catch(X){return P6.call(this,V)}}}var o6=[],$8=!1,d5,h1=-1;function SK(){if(!$8||!d5)return;if($8=!1,d5.length)o6=d5.concat(o6);else h1=-1;if(o6.length)PX()}function PX(){if($8)return;var V=FX(SK);$8=!0;var q=o6.length;while(q){d5=o6,o6=[];while(++h11)for(var X=1;X{var gK=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";function xK(V,q){return Object.prototype.hasOwnProperty.call(V,q)}r0.assign=function(V){var q=Array.prototype.slice.call(arguments,1);while(q.length){var X=q.shift();if(!X)continue;if(typeof X!=="object")throw new TypeError(X+"must be non-object");for(var K in X)if(xK(X,K))V[K]=X[K]}return V};r0.shrinkBuf=function(V,q){if(V.length===q)return V;if(V.subarray)return V.subarray(0,q);return V.length=q,V};var bK={arraySet:function(V,q,X,K,Q){if(q.subarray&&V.subarray){V.set(q.subarray(X,X+K),Q);return}for(var Y=0;Y{var fK=t6(),lK=4,pX=0,dX=1,_K=2;function u8(V){var q=V.length;while(--q>=0)V[q]=0}var cK=0,sX=1,pK=2,dK=3,nK=258,N4=29,p2=256,f2=p2+1+N4,D8=30,S4=19,tX=2*f2+1,i5=15,T4=16,rK=7,y4=256,eX=16,qV=17,XV=18,w4=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g1=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],iK=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],VV=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],aK=512,e6=new Array((f2+2)*2);u8(e6);var m2=new Array(D8*2);u8(m2);var l2=new Array(aK);u8(l2);var _2=new Array(nK-dK+1);u8(_2);var $4=new Array(N4);u8($4);var x1=new Array(D8);u8(x1);function v4(V,q,X,K,Q){this.static_tree=V,this.extra_bits=q,this.extra_base=X,this.elems=K,this.max_length=Q,this.has_stree=V&&V.length}var KV,QV,YV;function R4(V,q){this.dyn_tree=V,this.max_code=0,this.stat_desc=q}function JV(V){return V<256?l2[V]:l2[256+(V>>>7)]}function c2(V,q){V.pending_buf[V.pending++]=q&255,V.pending_buf[V.pending++]=q>>>8&255}function q6(V,q,X){if(V.bi_valid>T4-X)V.bi_buf|=q<>T4-V.bi_valid,V.bi_valid+=X-T4;else V.bi_buf|=q<>>=1,X<<=1;while(--q>0);return X>>>1}function oK(V){if(V.bi_valid===16)c2(V,V.bi_buf),V.bi_buf=0,V.bi_valid=0;else if(V.bi_valid>=8)V.pending_buf[V.pending++]=V.bi_buf&255,V.bi_buf>>=8,V.bi_valid-=8}function sK(V,q){var{dyn_tree:X,max_code:K}=q,Q=q.stat_desc.static_tree,Y=q.stat_desc.has_stree,J=q.stat_desc.extra_bits,G=q.stat_desc.extra_base,W=q.stat_desc.max_length,Z,U,H,z,I,M,L=0;for(z=0;z<=i5;z++)V.bl_count[z]=0;X[V.heap[V.heap_max]*2+1]=0;for(Z=V.heap_max+1;ZW)z=W,L++;if(X[U*2+1]=z,U>K)continue;if(V.bl_count[z]++,I=0,U>=G)I=J[U-G];if(M=X[U*2],V.opt_len+=M*(z+I),Y)V.static_len+=M*(Q[U*2+1]+I)}if(L===0)return;do{z=W-1;while(V.bl_count[z]===0)z--;V.bl_count[z]--,V.bl_count[z+1]+=2,V.bl_count[W]--,L-=2}while(L>0);for(z=W;z!==0;z--){U=V.bl_count[z];while(U!==0){if(H=V.heap[--Z],H>K)continue;if(X[H*2+1]!==z)V.opt_len+=(z-X[H*2+1])*X[H*2],X[H*2+1]=z;U--}}}function ZV(V,q,X){var K=new Array(i5+1),Q=0,Y,J;for(Y=1;Y<=i5;Y++)K[Y]=Q=Q+X[Y-1]<<1;for(J=0;J<=q;J++){var G=V[J*2+1];if(G===0)continue;V[J*2]=GV(K[G]++,G)}}function tK(){var V,q,X,K,Q,Y=new Array(i5+1);X=0;for(K=0;K>=7;for(;K8)c2(V,V.bi_buf);else if(V.bi_valid>0)V.pending_buf[V.pending++]=V.bi_buf;V.bi_buf=0,V.bi_valid=0}function eK(V,q,X,K){if(UV(V),K)c2(V,X),c2(V,~X);fK.arraySet(V.pending_buf,V.window,q,X,V.pending),V.pending+=X}function nX(V,q,X,K){var Q=q*2,Y=X*2;return V[Q]>1;J>=1;J--)O4(V,X,J);Z=Y;do J=V.heap[1],V.heap[1]=V.heap[V.heap_len--],O4(V,X,1),G=V.heap[1],V.heap[--V.heap_max]=J,V.heap[--V.heap_max]=G,X[Z*2]=X[J*2]+X[G*2],V.depth[Z]=(V.depth[J]>=V.depth[G]?V.depth[J]:V.depth[G])+1,X[J*2+1]=X[G*2+1]=Z,V.heap[1]=Z++,O4(V,X,1);while(V.heap_len>=2);V.heap[--V.heap_max]=V.heap[1],sK(V,q),ZV(X,W,V.bl_count)}function iX(V,q,X){var K,Q=-1,Y,J=q[1],G=0,W=7,Z=4;if(J===0)W=138,Z=3;q[(X+1)*2+1]=65535;for(K=0;K<=X;K++){if(Y=J,J=q[(K+1)*2+1],++G=3;q--)if(V.bl_tree[VV[q]*2+1]!==0)break;return V.opt_len+=3*(q+1)+5+5+4,q}function XQ(V,q,X,K){var Q;q6(V,q-257,5),q6(V,X-1,5),q6(V,K-4,4);for(Q=0;Q>>=1)if(q&1&&V.dyn_ltree[X*2]!==0)return pX;if(V.dyn_ltree[18]!==0||V.dyn_ltree[20]!==0||V.dyn_ltree[26]!==0)return dX;for(X=32;X0){if(V.strm.data_type===_K)V.strm.data_type=VQ(V);if(A4(V,V.l_desc),A4(V,V.d_desc),J=qQ(V),Q=V.opt_len+3+7>>>3,Y=V.static_len+3+7>>>3,Y<=Q)Q=Y}else Q=Y=X+5;if(X+4<=Q&&q!==-1)HV(V,q,X,K);else if(V.strategy===lK||Y===Q)q6(V,(sX<<1)+(K?1:0),3),rX(V,e6,m2);else q6(V,(pK<<1)+(K?1:0),3),XQ(V,V.l_desc.max_code+1,V.d_desc.max_code+1,J+1),rX(V,V.dyn_ltree,V.dyn_dtree);if(WV(V),K)UV(V)}function JQ(V,q,X){if(V.pending_buf[V.d_buf+V.last_lit*2]=q>>>8&255,V.pending_buf[V.d_buf+V.last_lit*2+1]=q&255,V.pending_buf[V.l_buf+V.last_lit]=X&255,V.last_lit++,q===0)V.dyn_ltree[X*2]++;else V.matches++,q--,V.dyn_ltree[(_2[X]+p2+1)*2]++,V.dyn_dtree[JV(q)*2]++;return V.last_lit===V.lit_bufsize-1}g8._tr_init=KQ;g8._tr_stored_block=HV;g8._tr_flush_block=YQ;g8._tr_tally=JQ;g8._tr_align=QQ});var C4=g0((dZ,MV)=>{function GQ(V,q,X,K){var Q=V&65535|0,Y=V>>>16&65535|0,J=0;while(X!==0){J=X>2000?2000:X,X-=J;do Q=Q+q[K++]|0,Y=Y+Q|0;while(--J);Q%=65521,Y%=65521}return Q|Y<<16|0}MV.exports=GQ});var h4=g0((nZ,IV)=>{function ZQ(){var V,q=[];for(var X=0;X<256;X++){V=X;for(var K=0;K<8;K++)V=V&1?3988292384^V>>>1:V>>>1;q[X]=V}return q}var WQ=ZQ();function UQ(V,q,X,K){var Q=WQ,Y=K+X;V^=-1;for(var J=K;J>>8^Q[(V^q[J])&255];return V^-1}IV.exports=UQ});var b1=g0((rZ,kV)=>{kV.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var wV=g0((m6)=>{var i0=t6(),U6=zV(),BV=C4(),B5=h4(),HQ=b1(),t5=0,zQ=1,MQ=3,w5=4,EV=5,b6=0,LV=1,H6=-2,IQ=-3,F4=-5,kQ=-1,EQ=1,m1=2,LQ=3,jQ=4,BQ=0,TQ=2,c1=8,vQ=9,RQ=15,OQ=8,wQ=29,AQ=256,D4=AQ+1+wQ,NQ=30,SQ=19,yQ=2*D4+1,$Q=15,U0=3,R5=258,O6=R5+U0+1,CQ=32,p1=42,u4=69,f1=73,l1=91,_1=103,a5=113,n2=666,h0=1,r2=2,o5=3,m8=4,hQ=3;function O5(V,q){return V.msg=HQ[q],q}function jV(V){return(V<<1)-(V>4?9:0)}function v5(V){var q=V.length;while(--q>=0)V[q]=0}function T5(V){var q=V.state,X=q.pending;if(X>V.avail_out)X=V.avail_out;if(X===0)return;if(i0.arraySet(V.output,q.pending_buf,q.pending_out,X,V.next_out),V.next_out+=X,q.pending_out+=X,V.total_out+=X,V.avail_out-=X,q.pending-=X,q.pending===0)q.pending_out=0}function x0(V,q){U6._tr_flush_block(V,V.block_start>=0?V.block_start:-1,V.strstart-V.block_start,q),V.block_start=V.strstart,T5(V.strm)}function H0(V,q){V.pending_buf[V.pending++]=q}function d2(V,q){V.pending_buf[V.pending++]=q>>>8&255,V.pending_buf[V.pending++]=q&255}function FQ(V,q,X,K){var Q=V.avail_in;if(Q>K)Q=K;if(Q===0)return 0;if(V.avail_in-=Q,i0.arraySet(q,V.input,V.next_in,Q,X),V.state.wrap===1)V.adler=BV(V.adler,q,Q,X);else if(V.state.wrap===2)V.adler=B5(V.adler,q,Q,X);return V.next_in+=Q,V.total_in+=Q,Q}function TV(V,q){var{max_chain_length:X,strstart:K}=V,Q,Y,J=V.prev_length,G=V.nice_match,W=V.strstart>V.w_size-O6?V.strstart-(V.w_size-O6):0,Z=V.window,U=V.w_mask,H=V.prev,z=V.strstart+R5,I=Z[K+J-1],M=Z[K+J];if(V.prev_length>=V.good_match)X>>=2;if(G>V.lookahead)G=V.lookahead;do{if(Q=q,Z[Q+J]!==M||Z[Q+J-1]!==I||Z[Q]!==Z[K]||Z[++Q]!==Z[K+1])continue;K+=2,Q++;do;while(Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&KJ){if(V.match_start=q,J=Y,Y>=G)break;I=Z[K+J-1],M=Z[K+J]}}while((q=H[q&U])>W&&--X!==0);if(J<=V.lookahead)return J;return V.lookahead}function s5(V){var q=V.w_size,X,K,Q,Y,J;do{if(Y=V.window_size-V.lookahead-V.strstart,V.strstart>=q+(q-O6)){i0.arraySet(V.window,V.window,q,q,0),V.match_start-=q,V.strstart-=q,V.block_start-=q,K=V.hash_size,X=K;do Q=V.head[--X],V.head[X]=Q>=q?Q-q:0;while(--K);K=q,X=K;do Q=V.prev[--X],V.prev[X]=Q>=q?Q-q:0;while(--K);Y+=q}if(V.strm.avail_in===0)break;if(K=FQ(V.strm,V.window,V.strstart+V.lookahead,Y),V.lookahead+=K,V.lookahead+V.insert>=U0){J=V.strstart-V.insert,V.ins_h=V.window[J],V.ins_h=(V.ins_h<V.pending_buf_size-5)X=V.pending_buf_size-5;for(;;){if(V.lookahead<=1){if(s5(V),V.lookahead===0&&q===t5)return h0;if(V.lookahead===0)break}V.strstart+=V.lookahead,V.lookahead=0;var K=V.block_start+X;if(V.strstart===0||V.strstart>=K){if(V.lookahead=V.strstart-K,V.strstart=K,x0(V,!1),V.strm.avail_out===0)return h0}if(V.strstart-V.block_start>=V.w_size-O6){if(x0(V,!1),V.strm.avail_out===0)return h0}}if(V.insert=0,q===w5){if(x0(V,!0),V.strm.avail_out===0)return o5;return m8}if(V.strstart>V.block_start){if(x0(V,!1),V.strm.avail_out===0)return h0}return h0}function P4(V,q){var X,K;for(;;){if(V.lookahead=U0)V.ins_h=(V.ins_h<=U0)if(K=U6._tr_tally(V,V.strstart-V.match_start,V.match_length-U0),V.lookahead-=V.match_length,V.match_length<=V.max_lazy_match&&V.lookahead>=U0){V.match_length--;do V.strstart++,V.ins_h=(V.ins_h<=U0)V.ins_h=(V.ins_h<4096))V.match_length=U0-1}if(V.prev_length>=U0&&V.match_length<=V.prev_length){Q=V.strstart+V.lookahead-U0,K=U6._tr_tally(V,V.strstart-1-V.prev_match,V.prev_length-U0),V.lookahead-=V.prev_length-1,V.prev_length-=2;do if(++V.strstart<=Q)V.ins_h=(V.ins_h<=U0&&V.strstart>0){if(Q=V.strstart-1,K=J[Q],K===J[++Q]&&K===J[++Q]&&K===J[++Q]){Y=V.strstart+R5;do;while(K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&QV.lookahead)V.match_length=V.lookahead}}if(V.match_length>=U0)X=U6._tr_tally(V,1,V.match_length-U0),V.lookahead-=V.match_length,V.strstart+=V.match_length,V.match_length=0;else X=U6._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++;if(X){if(x0(V,!1),V.strm.avail_out===0)return h0}}if(V.insert=0,q===w5){if(x0(V,!0),V.strm.avail_out===0)return o5;return m8}if(V.last_lit){if(x0(V,!1),V.strm.avail_out===0)return h0}return r2}function uQ(V,q){var X;for(;;){if(V.lookahead===0){if(s5(V),V.lookahead===0){if(q===t5)return h0;break}}if(V.match_length=0,X=U6._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++,X){if(x0(V,!1),V.strm.avail_out===0)return h0}}if(V.insert=0,q===w5){if(x0(V,!0),V.strm.avail_out===0)return o5;return m8}if(V.last_lit){if(x0(V,!1),V.strm.avail_out===0)return h0}return r2}function x6(V,q,X,K,Q){this.good_length=V,this.max_lazy=q,this.nice_length=X,this.max_chain=K,this.func=Q}var b8;b8=[new x6(0,0,0,0,PQ),new x6(4,4,8,4,P4),new x6(4,5,16,8,P4),new x6(4,6,32,32,P4),new x6(4,4,16,16,x8),new x6(8,16,32,32,x8),new x6(8,16,128,128,x8),new x6(8,32,128,256,x8),new x6(32,128,258,1024,x8),new x6(32,258,258,4096,x8)];function gQ(V){V.window_size=2*V.w_size,v5(V.head),V.max_lazy_match=b8[V.level].max_lazy,V.good_match=b8[V.level].good_length,V.nice_match=b8[V.level].nice_length,V.max_chain_length=b8[V.level].max_chain,V.strstart=0,V.block_start=0,V.lookahead=0,V.insert=0,V.match_length=V.prev_length=U0-1,V.match_available=0,V.ins_h=0}function xQ(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=c1,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i0.Buf16(yQ*2),this.dyn_dtree=new i0.Buf16((2*NQ+1)*2),this.bl_tree=new i0.Buf16((2*SQ+1)*2),v5(this.dyn_ltree),v5(this.dyn_dtree),v5(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i0.Buf16($Q+1),this.heap=new i0.Buf16(2*D4+1),v5(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i0.Buf16(2*D4+1),v5(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function vV(V){var q;if(!V||!V.state)return O5(V,H6);if(V.total_in=V.total_out=0,V.data_type=TQ,q=V.state,q.pending=0,q.pending_out=0,q.wrap<0)q.wrap=-q.wrap;return q.status=q.wrap?p1:a5,V.adler=q.wrap===2?0:1,q.last_flush=t5,U6._tr_init(q),b6}function RV(V){var q=vV(V);if(q===b6)gQ(V.state);return q}function bQ(V,q){if(!V||!V.state)return H6;if(V.state.wrap!==2)return H6;return V.state.gzhead=q,b6}function OV(V,q,X,K,Q,Y){if(!V)return H6;var J=1;if(q===kQ)q=6;if(K<0)J=0,K=-K;else if(K>15)J=2,K-=16;if(Q<1||Q>vQ||X!==c1||K<8||K>15||q<0||q>9||Y<0||Y>jQ)return O5(V,H6);if(K===8)K=9;var G=new xQ;return V.state=G,G.strm=V,G.wrap=J,G.gzhead=null,G.w_bits=K,G.w_size=1<EV||q<0)return V?O5(V,H6):H6;if(K=V.state,!V.output||!V.input&&V.avail_in!==0||K.status===n2&&q!==w5)return O5(V,V.avail_out===0?F4:H6);if(K.strm=V,X=K.last_flush,K.last_flush=q,K.status===p1)if(K.wrap===2)if(V.adler=0,H0(K,31),H0(K,139),H0(K,8),!K.gzhead)H0(K,0),H0(K,0),H0(K,0),H0(K,0),H0(K,0),H0(K,K.level===9?2:K.strategy>=m1||K.level<2?4:0),H0(K,hQ),K.status=a5;else{if(H0(K,(K.gzhead.text?1:0)+(K.gzhead.hcrc?2:0)+(!K.gzhead.extra?0:4)+(!K.gzhead.name?0:8)+(!K.gzhead.comment?0:16)),H0(K,K.gzhead.time&255),H0(K,K.gzhead.time>>8&255),H0(K,K.gzhead.time>>16&255),H0(K,K.gzhead.time>>24&255),H0(K,K.level===9?2:K.strategy>=m1||K.level<2?4:0),H0(K,K.gzhead.os&255),K.gzhead.extra&&K.gzhead.extra.length)H0(K,K.gzhead.extra.length&255),H0(K,K.gzhead.extra.length>>8&255);if(K.gzhead.hcrc)V.adler=B5(V.adler,K.pending_buf,K.pending,0);K.gzindex=0,K.status=u4}else{var J=c1+(K.w_bits-8<<4)<<8,G=-1;if(K.strategy>=m1||K.level<2)G=0;else if(K.level<6)G=1;else if(K.level===6)G=2;else G=3;if(J|=G<<6,K.strstart!==0)J|=CQ;if(J+=31-J%31,K.status=a5,d2(K,J),K.strstart!==0)d2(K,V.adler>>>16),d2(K,V.adler&65535);V.adler=1}if(K.status===u4)if(K.gzhead.extra){Q=K.pending;while(K.gzindex<(K.gzhead.extra.length&65535)){if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(T5(V),Q=K.pending,K.pending===K.pending_buf_size)break}H0(K,K.gzhead.extra[K.gzindex]&255),K.gzindex++}if(K.gzhead.hcrc&&K.pending>Q)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(K.gzindex===K.gzhead.extra.length)K.gzindex=0,K.status=f1}else K.status=f1;if(K.status===f1)if(K.gzhead.name){Q=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(T5(V),Q=K.pending,K.pending===K.pending_buf_size){Y=1;break}}if(K.gzindexQ)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(Y===0)K.gzindex=0,K.status=l1}else K.status=l1;if(K.status===l1)if(K.gzhead.comment){Q=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(T5(V),Q=K.pending,K.pending===K.pending_buf_size){Y=1;break}}if(K.gzindexQ)V.adler=B5(V.adler,K.pending_buf,K.pending-Q,Q);if(Y===0)K.status=_1}else K.status=_1;if(K.status===_1)if(K.gzhead.hcrc){if(K.pending+2>K.pending_buf_size)T5(V);if(K.pending+2<=K.pending_buf_size)H0(K,V.adler&255),H0(K,V.adler>>8&255),V.adler=0,K.status=a5}else K.status=a5;if(K.pending!==0){if(T5(V),V.avail_out===0)return K.last_flush=-1,b6}else if(V.avail_in===0&&jV(q)<=jV(X)&&q!==w5)return O5(V,F4);if(K.status===n2&&V.avail_in!==0)return O5(V,F4);if(V.avail_in!==0||K.lookahead!==0||q!==t5&&K.status!==n2){var W=K.strategy===m1?uQ(K,q):K.strategy===LQ?DQ(K,q):b8[K.level].func(K,q);if(W===o5||W===m8)K.status=n2;if(W===h0||W===o5){if(V.avail_out===0)K.last_flush=-1;return b6}if(W===r2){if(q===zQ)U6._tr_align(K);else if(q!==EV){if(U6._tr_stored_block(K,0,0,!1),q===MQ){if(v5(K.head),K.lookahead===0)K.strstart=0,K.block_start=0,K.insert=0}}if(T5(V),V.avail_out===0)return K.last_flush=-1,b6}}if(q!==w5)return b6;if(K.wrap<=0)return LV;if(K.wrap===2)H0(K,V.adler&255),H0(K,V.adler>>8&255),H0(K,V.adler>>16&255),H0(K,V.adler>>24&255),H0(K,V.total_in&255),H0(K,V.total_in>>8&255),H0(K,V.total_in>>16&255),H0(K,V.total_in>>24&255);else d2(K,V.adler>>>16),d2(K,V.adler&65535);if(T5(V),K.wrap>0)K.wrap=-K.wrap;return K.pending!==0?b6:LV}function lQ(V){var q;if(!V||!V.state)return H6;if(q=V.state.status,q!==p1&&q!==u4&&q!==f1&&q!==l1&&q!==_1&&q!==a5&&q!==n2)return O5(V,H6);return V.state=null,q===a5?O5(V,IQ):b6}function _Q(V,q){var X=q.length,K,Q,Y,J,G,W,Z,U;if(!V||!V.state)return H6;if(K=V.state,J=K.wrap,J===2||J===1&&K.status!==p1||K.lookahead)return H6;if(J===1)V.adler=BV(V.adler,q,X,0);if(K.wrap=0,X>=K.w_size){if(J===0)v5(K.head),K.strstart=0,K.block_start=0,K.insert=0;U=new i0.Buf8(K.w_size),i0.arraySet(U,q,X-K.w_size,K.w_size,0),q=U,X=K.w_size}G=V.avail_in,W=V.next_in,Z=V.input,V.avail_in=X,V.next_in=0,V.input=q,s5(K);while(K.lookahead>=U0){Q=K.strstart,Y=K.lookahead-(U0-1);do K.ins_h=(K.ins_h<{var d1=t6(),AV=!0,NV=!0;try{String.fromCharCode.apply(null,[0])}catch(V){AV=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(V){NV=!1}var i2=new d1.Buf8(256);for(f6=0;f6<256;f6++)i2[f6]=f6>=252?6:f6>=248?5:f6>=240?4:f6>=224?3:f6>=192?2:1;var f6;i2[254]=i2[254]=1;f8.string2buf=function(V){var q,X,K,Q,Y,J=V.length,G=0;for(Q=0;Q>>6,q[Y++]=128|X&63;else if(X<65536)q[Y++]=224|X>>>12,q[Y++]=128|X>>>6&63,q[Y++]=128|X&63;else q[Y++]=240|X>>>18,q[Y++]=128|X>>>12&63,q[Y++]=128|X>>>6&63,q[Y++]=128|X&63}return q};function SV(V,q){if(q<65534){if(V.subarray&&NV||!V.subarray&&AV)return String.fromCharCode.apply(null,d1.shrinkBuf(V,q))}var X="";for(var K=0;K4){G[K++]=65533,X+=Y-1;continue}Q&=Y===2?31:Y===3?15:7;while(Y>1&&X1){G[K++]=65533;continue}if(Q<65536)G[K++]=Q;else Q-=65536,G[K++]=55296|Q>>10&1023,G[K++]=56320|Q&1023}return SV(G,K)};f8.utf8border=function(V,q){var X;if(q=q||V.length,q>V.length)q=V.length;X=q-1;while(X>=0&&(V[X]&192)===128)X--;if(X<0)return q;if(X===0)return q;return X+i2[V[X]]>q?X:q}});var x4=g0((oZ,yV)=>{function cQ(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}yV.exports=cQ});var FV=g0((s2)=>{var a2=wV(),o2=t6(),m4=g4(),f4=b1(),pQ=x4(),hV=Object.prototype.toString,dQ=0,b4=4,l8=0,$V=1,CV=2,nQ=-1,rQ=0,iQ=8;function e5(V){if(!(this instanceof e5))return new e5(V);this.options=o2.assign({level:nQ,method:iQ,chunkSize:16384,windowBits:15,memLevel:8,strategy:rQ,to:""},V||{});var q=this.options;if(q.raw&&q.windowBits>0)q.windowBits=-q.windowBits;else if(q.gzip&&q.windowBits>0&&q.windowBits<16)q.windowBits+=16;this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new pQ,this.strm.avail_out=0;var X=a2.deflateInit2(this.strm,q.level,q.method,q.windowBits,q.memLevel,q.strategy);if(X!==l8)throw new Error(f4[X]);if(q.header)a2.deflateSetHeader(this.strm,q.header);if(q.dictionary){var K;if(typeof q.dictionary==="string")K=m4.string2buf(q.dictionary);else if(hV.call(q.dictionary)==="[object ArrayBuffer]")K=new Uint8Array(q.dictionary);else K=q.dictionary;if(X=a2.deflateSetDictionary(this.strm,K),X!==l8)throw new Error(f4[X]);this._dict_set=!0}}e5.prototype.push=function(V,q){var X=this.strm,K=this.options.chunkSize,Q,Y;if(this.ended)return!1;if(Y=q===~~q?q:q===!0?b4:dQ,typeof V==="string")X.input=m4.string2buf(V);else if(hV.call(V)==="[object ArrayBuffer]")X.input=new Uint8Array(V);else X.input=V;X.next_in=0,X.avail_in=X.input.length;do{if(X.avail_out===0)X.output=new o2.Buf8(K),X.next_out=0,X.avail_out=K;if(Q=a2.deflate(X,Y),Q!==$V&&Q!==l8)return this.onEnd(Q),this.ended=!0,!1;if(X.avail_out===0||X.avail_in===0&&(Y===b4||Y===CV))if(this.options.to==="string")this.onData(m4.buf2binstring(o2.shrinkBuf(X.output,X.next_out)));else this.onData(o2.shrinkBuf(X.output,X.next_out))}while((X.avail_in>0||X.avail_out===0)&&Q!==$V);if(Y===b4)return Q=a2.deflateEnd(this.strm),this.onEnd(Q),this.ended=!0,Q===l8;if(Y===CV)return this.onEnd(l8),X.avail_out=0,!0;return!0};e5.prototype.onData=function(V){this.chunks.push(V)};e5.prototype.onEnd=function(V){if(V===l8)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=o2.flattenChunks(this.chunks);this.chunks=[],this.err=V,this.msg=this.strm.msg};function l4(V,q){var X=new e5(q);if(X.push(V,!0),X.err)throw X.msg||f4[X.err];return X.result}function aQ(V,q){return q=q||{},q.raw=!0,l4(V,q)}function oQ(V,q){return q=q||{},q.gzip=!0,l4(V,q)}s2.Deflate=e5;s2.deflate=l4;s2.deflateRaw=aQ;s2.gzip=oQ});var DV=g0((tZ,PV)=>{var n1=30,sQ=12;PV.exports=function V(q,X){var K,Q,Y,J,G,W,Z,U,H,z,I,M,L,B,j,O,N,R,v,w,$,S,h,b,C;K=q.state,Q=q.next_in,b=q.input,Y=Q+(q.avail_in-5),J=q.next_out,C=q.output,G=J-(X-q.avail_out),W=J+(q.avail_out-257),Z=K.dmax,U=K.wsize,H=K.whave,z=K.wnext,I=K.window,M=K.hold,L=K.bits,B=K.lencode,j=K.distcode,O=(1<>>24,M>>>=v,L-=v,v=R>>>16&255,v===0)C[J++]=R&65535;else if(v&16){if(w=R&65535,v&=15,v){if(L>>=v,L-=v}if(L<15)M+=b[Q++]<>>24,M>>>=v,L-=v,v=R>>>16&255,v&16){if($=R&65535,v&=15,LZ){q.msg="invalid distance too far back",K.mode=n1;break q}if(M>>>=v,L-=v,v=J-G,$>v){if(v=$-v,v>H){if(K.sane){q.msg="invalid distance too far back",K.mode=n1;break q}}if(S=0,h=I,z===0){if(S+=U-v,v2)C[J++]=h[S++],C[J++]=h[S++],C[J++]=h[S++],w-=3;if(w){if(C[J++]=h[S++],w>1)C[J++]=h[S++]}}else{S=J-$;do C[J++]=C[S++],C[J++]=C[S++],C[J++]=C[S++],w-=3;while(w>2);if(w){if(C[J++]=C[S++],w>1)C[J++]=C[S++]}}}else if((v&64)===0){R=j[(R&65535)+(M&(1<>3,Q-=w,L-=w<<3,M&=(1<{var uV=t6(),_8=15,gV=852,xV=592,bV=0,_4=1,mV=2,tQ=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],eQ=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],qY=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],XY=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];fV.exports=function V(q,X,K,Q,Y,J,G,W){var Z=W.bits,U=0,H=0,z=0,I=0,M=0,L=0,B=0,j=0,O=0,N=0,R,v,w,$,S,h=null,b=0,C,D=new uV.Buf16(_8+1),l=new uV.Buf16(_8+1),u=null,q0=0,J0,r,k0;for(U=0;U<=_8;U++)D[U]=0;for(H=0;H=1;I--)if(D[I]!==0)break;if(M>I)M=I;if(I===0)return Y[J++]=20971520,Y[J++]=20971520,W.bits=1,0;for(z=1;z0&&(q===bV||I!==1))return-1;l[1]=0;for(U=1;U<_8;U++)l[U+1]=l[U]+D[U];for(H=0;HgV||q===mV&&O>xV)return 1;for(;;){if(J0=U-B,G[H]C)r=u[q0+G[H]],k0=h[b+G[H]];else r=96,k0=0;R=1<>B)+v]=J0<<24|r<<16|k0|0;while(v!==0);R=1<>=1;if(R!==0)N&=R-1,N+=R;else N=0;if(H++,--D[U]===0){if(U===I)break;U=X[K+G[H]]}if(U>M&&(N&$)!==w){if(B===0)B=M;S+=z,L=U-B,j=1<gV||q===mV&&O>xV)return 1;w=N&$,Y[w]=M<<24|L<<16|S-J|0}}if(N!==0)Y[S+N]=U-B<<24|4194304|0;return W.bits=M,0}});var R9=g0((w6)=>{var Q6=t6(),i4=C4(),l6=h4(),VY=DV(),t2=lV(),KY=0,M9=1,I9=2,_V=4,QY=5,r1=6,q8=0,YY=1,JY=2,z6=-2,k9=-3,a4=-4,GY=-5,cV=8,E9=1,pV=2,dV=3,nV=4,rV=5,iV=6,aV=7,oV=8,sV=9,tV=10,o1=11,q5=12,c4=13,eV=14,p4=15,q9=16,X9=17,V9=18,K9=19,i1=20,a1=21,Q9=22,Y9=23,J9=24,G9=25,Z9=26,d4=27,W9=28,U9=29,j0=30,o4=31,ZY=32,WY=852,UY=592,HY=15,zY=HY;function H9(V){return(V>>>24&255)+(V>>>8&65280)+((V&65280)<<8)+((V&255)<<24)}function MY(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Q6.Buf16(320),this.work=new Q6.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function L9(V){var q;if(!V||!V.state)return z6;if(q=V.state,V.total_in=V.total_out=q.total=0,V.msg="",q.wrap)V.adler=q.wrap&1;return q.mode=E9,q.last=0,q.havedict=0,q.dmax=32768,q.head=null,q.hold=0,q.bits=0,q.lencode=q.lendyn=new Q6.Buf32(WY),q.distcode=q.distdyn=new Q6.Buf32(UY),q.sane=1,q.back=-1,q8}function j9(V){var q;if(!V||!V.state)return z6;return q=V.state,q.wsize=0,q.whave=0,q.wnext=0,L9(V)}function B9(V,q){var X,K;if(!V||!V.state)return z6;if(K=V.state,q<0)X=0,q=-q;else if(X=(q>>4)+1,q<48)q&=15;if(q&&(q<8||q>15))return z6;if(K.window!==null&&K.wbits!==q)K.window=null;return K.wrap=X,K.wbits=q,j9(V)}function T9(V,q){var X,K;if(!V)return z6;if(K=new MY,V.state=K,K.window=null,X=B9(V,q),X!==q8)V.state=null;return X}function IY(V){return T9(V,zY)}var z9=!0,n4,r4;function kY(V){if(z9){var q;n4=new Q6.Buf32(512),r4=new Q6.Buf32(32),q=0;while(q<144)V.lens[q++]=8;while(q<256)V.lens[q++]=9;while(q<280)V.lens[q++]=7;while(q<288)V.lens[q++]=8;t2(M9,V.lens,0,288,n4,0,V.work,{bits:9}),q=0;while(q<32)V.lens[q++]=5;t2(I9,V.lens,0,32,r4,0,V.work,{bits:5}),z9=!1}V.lencode=n4,V.lenbits=9,V.distcode=r4,V.distbits=5}function v9(V,q,X,K){var Q,Y=V.state;if(Y.window===null)Y.wsize=1<=Y.wsize)Q6.arraySet(Y.window,q,X-Y.wsize,Y.wsize,0),Y.wnext=0,Y.whave=Y.wsize;else{if(Q=Y.wsize-Y.wnext,Q>K)Q=K;if(Q6.arraySet(Y.window,q,X-K,Q,Y.wnext),K-=Q,K)Q6.arraySet(Y.window,q,X-K,K,0),Y.wnext=K,Y.whave=Y.wsize;else{if(Y.wnext+=Q,Y.wnext===Y.wsize)Y.wnext=0;if(Y.whave>>8&255,X.check=l6(X.check,h,2,0),Z=0,U=0,X.mode=pV;break}if(X.flags=0,X.head)X.head.done=!1;if(!(X.wrap&1)||(((Z&255)<<8)+(Z>>8))%31){V.msg="incorrect header check",X.mode=j0;break}if((Z&15)!==cV){V.msg="unknown compression method",X.mode=j0;break}if(Z>>>=4,U-=4,$=(Z&15)+8,X.wbits===0)X.wbits=$;else if($>X.wbits){V.msg="invalid window size",X.mode=j0;break}X.dmax=1<<$,V.adler=X.check=1,X.mode=Z&512?tV:q5,Z=0,U=0;break;case pV:while(U<16){if(G===0)break q;G--,Z+=K[Y++]<>8&1;if(X.flags&512)h[0]=Z&255,h[1]=Z>>>8&255,X.check=l6(X.check,h,2,0);Z=0,U=0,X.mode=dV;case dV:while(U<32){if(G===0)break q;G--,Z+=K[Y++]<>>8&255,h[2]=Z>>>16&255,h[3]=Z>>>24&255,X.check=l6(X.check,h,4,0);Z=0,U=0,X.mode=nV;case nV:while(U<16){if(G===0)break q;G--,Z+=K[Y++]<>8;if(X.flags&512)h[0]=Z&255,h[1]=Z>>>8&255,X.check=l6(X.check,h,2,0);Z=0,U=0,X.mode=rV;case rV:if(X.flags&1024){while(U<16){if(G===0)break q;G--,Z+=K[Y++]<>>8&255,X.check=l6(X.check,h,2,0);Z=0,U=0}else if(X.head)X.head.extra=null;X.mode=iV;case iV:if(X.flags&1024){if(I=X.length,I>G)I=G;if(I){if(X.head){if($=X.head.extra_len-X.length,!X.head.extra)X.head.extra=new Array(X.head.extra_len);Q6.arraySet(X.head.extra,K,Y,I,$)}if(X.flags&512)X.check=l6(X.check,K,I,Y);G-=I,Y+=I,X.length-=I}if(X.length)break q}X.length=0,X.mode=aV;case aV:if(X.flags&2048){if(G===0)break q;I=0;do if($=K[Y+I++],X.head&&$&&X.length<65536)X.head.name+=String.fromCharCode($);while($&&I>9&1,X.head.done=!0;V.adler=X.check=0,X.mode=q5;break;case tV:while(U<32){if(G===0)break q;G--,Z+=K[Y++]<>>=U&7,U-=U&7,X.mode=d4;break}while(U<3){if(G===0)break q;G--,Z+=K[Y++]<>>=1,U-=1,Z&3){case 0:X.mode=eV;break;case 1:if(kY(X),X.mode=i1,q===r1){Z>>>=2,U-=2;break q}break;case 2:X.mode=X9;break;case 3:V.msg="invalid block type",X.mode=j0}Z>>>=2,U-=2;break;case eV:Z>>>=U&7,U-=U&7;while(U<32){if(G===0)break q;G--,Z+=K[Y++]<>>16^65535)){V.msg="invalid stored block lengths",X.mode=j0;break}if(X.length=Z&65535,Z=0,U=0,X.mode=p4,q===r1)break q;case p4:X.mode=q9;case q9:if(I=X.length,I){if(I>G)I=G;if(I>W)I=W;if(I===0)break q;Q6.arraySet(Q,K,Y,I,J),G-=I,Y+=I,W-=I,J+=I,X.length-=I;break}X.mode=q5;break;case X9:while(U<14){if(G===0)break q;G--,Z+=K[Y++]<>>=5,U-=5,X.ndist=(Z&31)+1,Z>>>=5,U-=5,X.ncode=(Z&15)+4,Z>>>=4,U-=4,X.nlen>286||X.ndist>30){V.msg="too many length or distance symbols",X.mode=j0;break}X.have=0,X.mode=V9;case V9:while(X.have>>=3,U-=3}while(X.have<19)X.lens[D[X.have++]]=0;if(X.lencode=X.lendyn,X.lenbits=7,b={bits:X.lenbits},S=t2(KY,X.lens,0,19,X.lencode,0,X.work,b),X.lenbits=b.bits,S){V.msg="invalid code lengths set",X.mode=j0;break}X.have=0,X.mode=K9;case K9:while(X.have>>24,O=B>>>16&255,N=B&65535,j<=U)break;if(G===0)break q;G--,Z+=K[Y++]<>>=j,U-=j,X.lens[X.have++]=N;else{if(N===16){C=j+2;while(U>>=j,U-=j,X.have===0){V.msg="invalid bit length repeat",X.mode=j0;break}$=X.lens[X.have-1],I=3+(Z&3),Z>>>=2,U-=2}else if(N===17){C=j+3;while(U>>=j,U-=j,$=0,I=3+(Z&7),Z>>>=3,U-=3}else{C=j+7;while(U>>=j,U-=j,$=0,I=11+(Z&127),Z>>>=7,U-=7}if(X.have+I>X.nlen+X.ndist){V.msg="invalid bit length repeat",X.mode=j0;break}while(I--)X.lens[X.have++]=$}}if(X.mode===j0)break;if(X.lens[256]===0){V.msg="invalid code -- missing end-of-block",X.mode=j0;break}if(X.lenbits=9,b={bits:X.lenbits},S=t2(M9,X.lens,0,X.nlen,X.lencode,0,X.work,b),X.lenbits=b.bits,S){V.msg="invalid literal/lengths set",X.mode=j0;break}if(X.distbits=6,X.distcode=X.distdyn,b={bits:X.distbits},S=t2(I9,X.lens,X.nlen,X.ndist,X.distcode,0,X.work,b),X.distbits=b.bits,S){V.msg="invalid distances set",X.mode=j0;break}if(X.mode=i1,q===r1)break q;case i1:X.mode=a1;case a1:if(G>=6&&W>=258){if(V.next_out=J,V.avail_out=W,V.next_in=Y,V.avail_in=G,X.hold=Z,X.bits=U,VY(V,z),J=V.next_out,Q=V.output,W=V.avail_out,Y=V.next_in,K=V.input,G=V.avail_in,Z=X.hold,U=X.bits,X.mode===q5)X.back=-1;break}X.back=0;for(;;){if(B=X.lencode[Z&(1<>>24,O=B>>>16&255,N=B&65535,j<=U)break;if(G===0)break q;G--,Z+=K[Y++]<>R)],j=B>>>24,O=B>>>16&255,N=B&65535,R+j<=U)break;if(G===0)break q;G--,Z+=K[Y++]<>>=R,U-=R,X.back+=R}if(Z>>>=j,U-=j,X.back+=j,X.length=N,O===0){X.mode=Z9;break}if(O&32){X.back=-1,X.mode=q5;break}if(O&64){V.msg="invalid literal/length code",X.mode=j0;break}X.extra=O&15,X.mode=Q9;case Q9:if(X.extra){C=X.extra;while(U>>=X.extra,U-=X.extra,X.back+=X.extra}X.was=X.length,X.mode=Y9;case Y9:for(;;){if(B=X.distcode[Z&(1<>>24,O=B>>>16&255,N=B&65535,j<=U)break;if(G===0)break q;G--,Z+=K[Y++]<>R)],j=B>>>24,O=B>>>16&255,N=B&65535,R+j<=U)break;if(G===0)break q;G--,Z+=K[Y++]<>>=R,U-=R,X.back+=R}if(Z>>>=j,U-=j,X.back+=j,O&64){V.msg="invalid distance code",X.mode=j0;break}X.offset=N,X.extra=O&15,X.mode=J9;case J9:if(X.extra){C=X.extra;while(U>>=X.extra,U-=X.extra,X.back+=X.extra}if(X.offset>X.dmax){V.msg="invalid distance too far back",X.mode=j0;break}X.mode=G9;case G9:if(W===0)break q;if(I=z-W,X.offset>I){if(I=X.offset-I,I>X.whave){if(X.sane){V.msg="invalid distance too far back",X.mode=j0;break}}if(I>X.wnext)I-=X.wnext,M=X.wsize-I;else M=X.wnext-I;if(I>X.length)I=X.length;L=X.window}else L=Q,M=J-X.offset,I=X.length;if(I>W)I=W;W-=I,X.length-=I;do Q[J++]=L[M++];while(--I);if(X.length===0)X.mode=a1;break;case Z9:if(W===0)break q;Q[J++]=X.length,W--,X.mode=a1;break;case d4:if(X.wrap){while(U<32){if(G===0)break q;G--,Z|=K[Y++]<{O9.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var A9=g0((VW,w9)=>{function TY(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}w9.exports=TY});var S9=g0((q1)=>{var c8=R9(),e2=t6(),s1=g4(),N0=s4(),t4=b1(),vY=x4(),RY=A9(),N9=Object.prototype.toString;function X8(V){if(!(this instanceof X8))return new X8(V);this.options=e2.assign({chunkSize:16384,windowBits:0,to:""},V||{});var q=this.options;if(q.raw&&q.windowBits>=0&&q.windowBits<16){if(q.windowBits=-q.windowBits,q.windowBits===0)q.windowBits=-15}if(q.windowBits>=0&&q.windowBits<16&&!(V&&V.windowBits))q.windowBits+=32;if(q.windowBits>15&&q.windowBits<48){if((q.windowBits&15)===0)q.windowBits|=15}this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new vY,this.strm.avail_out=0;var X=c8.inflateInit2(this.strm,q.windowBits);if(X!==N0.Z_OK)throw new Error(t4[X]);if(this.header=new RY,c8.inflateGetHeader(this.strm,this.header),q.dictionary){if(typeof q.dictionary==="string")q.dictionary=s1.string2buf(q.dictionary);else if(N9.call(q.dictionary)==="[object ArrayBuffer]")q.dictionary=new Uint8Array(q.dictionary);if(q.raw){if(X=c8.inflateSetDictionary(this.strm,q.dictionary),X!==N0.Z_OK)throw new Error(t4[X])}}}X8.prototype.push=function(V,q){var X=this.strm,K=this.options.chunkSize,Q=this.options.dictionary,Y,J,G,W,Z,U=!1;if(this.ended)return!1;if(J=q===~~q?q:q===!0?N0.Z_FINISH:N0.Z_NO_FLUSH,typeof V==="string")X.input=s1.binstring2buf(V);else if(N9.call(V)==="[object ArrayBuffer]")X.input=new Uint8Array(V);else X.input=V;X.next_in=0,X.avail_in=X.input.length;do{if(X.avail_out===0)X.output=new e2.Buf8(K),X.next_out=0,X.avail_out=K;if(Y=c8.inflate(X,N0.Z_NO_FLUSH),Y===N0.Z_NEED_DICT&&Q)Y=c8.inflateSetDictionary(this.strm,Q);if(Y===N0.Z_BUF_ERROR&&U===!0)Y=N0.Z_OK,U=!1;if(Y!==N0.Z_STREAM_END&&Y!==N0.Z_OK)return this.onEnd(Y),this.ended=!0,!1;if(X.next_out){if(X.avail_out===0||Y===N0.Z_STREAM_END||X.avail_in===0&&(J===N0.Z_FINISH||J===N0.Z_SYNC_FLUSH))if(this.options.to==="string"){if(G=s1.utf8border(X.output,X.next_out),W=X.next_out-G,Z=s1.buf2string(X.output,G),X.next_out=W,X.avail_out=K-W,W)e2.arraySet(X.output,X.output,G,W,0);this.onData(Z)}else this.onData(e2.shrinkBuf(X.output,X.next_out))}if(X.avail_in===0&&X.avail_out===0)U=!0}while((X.avail_in>0||X.avail_out===0)&&Y!==N0.Z_STREAM_END);if(Y===N0.Z_STREAM_END)J=N0.Z_FINISH;if(J===N0.Z_FINISH)return Y=c8.inflateEnd(this.strm),this.onEnd(Y),this.ended=!0,Y===N0.Z_OK;if(J===N0.Z_SYNC_FLUSH)return this.onEnd(N0.Z_OK),X.avail_out=0,!0;return!0};X8.prototype.onData=function(V){this.chunks.push(V)};X8.prototype.onEnd=function(V){if(V===N0.Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=e2.flattenChunks(this.chunks);this.chunks=[],this.err=V,this.msg=this.strm.msg};function e4(V,q){var X=new X8(q);if(X.push(V,!0),X.err)throw X.msg||t4[X.err];return X.result}function OY(V,q){return q=q||{},q.raw=!0,e4(V,q)}q1.Inflate=X8;q1.inflate=e4;q1.inflateRaw=OY;q1.ungzip=e4});var X1=g0((QW,$9)=>{var wY=t6().assign,AY=FV(),NY=S9(),SY=s4(),y9={};wY(y9,AY,NY,SY);$9.exports=y9});var zX=globalThis;if(typeof zX.global==="undefined")zX.global=globalThis;var C6=[],W6=[],lq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(c5=0,MX=lq.length;c50)throw new Error("Invalid string. Length must be a multiple of 4");var X=V.indexOf("=");if(X===-1)X=q;var K=X===q?0:4-X%4;return[X,K]}function s3(V,q){return(V+q)*3/4-q}function t3(V){var q,X=o3(V),K=X[0],Q=X[1],Y=new Uint8Array(s3(K,Q)),J=0,G=Q>0?K-4:K,W;for(W=0;W>16&255,Y[J++]=q>>8&255,Y[J++]=q&255;if(Q===2)q=W6[V.charCodeAt(W)]<<2|W6[V.charCodeAt(W+1)]>>4,Y[J++]=q&255;if(Q===1)q=W6[V.charCodeAt(W)]<<10|W6[V.charCodeAt(W+1)]<<4|W6[V.charCodeAt(W+2)]>>2,Y[J++]=q>>8&255,Y[J++]=q&255;return Y}function e3(V){return C6[V>>18&63]+C6[V>>12&63]+C6[V>>6&63]+C6[V&63]}function qK(V,q,X){var K,Q=[];for(var Y=q;YG?G:J+Y));if(K===1)q=V[X-1],Q.push(C6[q>>2]+C6[q<<4&63]+"==");else if(K===2)q=(V[X-2]<<8)+V[X-1],Q.push(C6[q>>10]+C6[q>>4&63]+C6[q<<2&63]+"=");return Q.join("")}function $1(V,q,X,K,Q){var Y,J,G=Q*8-K-1,W=(1<>1,U=-7,H=X?Q-1:0,z=X?-1:1,I=V[q+H];H+=z,Y=I&(1<<-U)-1,I>>=-U,U+=G;for(;U>0;Y=Y*256+V[q+H],H+=z,U-=8);J=Y&(1<<-U)-1,Y>>=-U,U+=K;for(;U>0;J=J*256+V[q+H],H+=z,U-=8);if(Y===0)Y=1-Z;else if(Y===W)return J?NaN:(I?-1:1)*(1/0);else J=J+Math.pow(2,K),Y=Y-Z;return(I?-1:1)*J*Math.pow(2,Y-K)}function BX(V,q,X,K,Q,Y){var J,G,W,Z=Y*8-Q-1,U=(1<>1,z=Q===23?Math.pow(2,-24)-Math.pow(2,-77):0,I=K?0:Y-1,M=K?1:-1,L=q<0||q===0&&1/q<0?1:0;if(q=Math.abs(q),isNaN(q)||q===1/0)G=isNaN(q)?1:0,J=U;else{if(J=Math.floor(Math.log(q)/Math.LN2),q*(W=Math.pow(2,-J))<1)J--,W*=2;if(J+H>=1)q+=z/W;else q+=z*Math.pow(2,1-H);if(q*W>=2)J++,W/=2;if(J+H>=U)G=0,J=U;else if(J+H>=1)G=(q*W-1)*Math.pow(2,Q),J=J+H;else G=q*Math.pow(2,H-1)*Math.pow(2,Q),J=0}for(;Q>=8;V[X+I]=G&255,I+=M,G/=256,Q-=8);J=J<0;V[X+I]=J&255,I+=M,J/=256,Z-=8);V[X+I-M]|=L*128}var kX=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null;var _q=2147483647;var{btoa:OZ,atob:wZ,File:AZ,Blob:NZ}=globalThis;function a6(V){if(V>_q)throw new RangeError('The value "'+V+'" is invalid for option "size"');let q=new Uint8Array(V);return Object.setPrototypeOf(q,y.prototype),q}function rq(V,q,X){return class K extends X{constructor(){super();Object.defineProperty(this,"message",{value:q.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${V}]`,this.stack,delete this.name}get code(){return V}set code(Q){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:Q,writable:!0})}toString(){return`${this.name} [${V}]: ${this.message}`}}}var XK=rq("ERR_BUFFER_OUT_OF_BOUNDS",function(V){if(V)return`${V} is outside of buffer bounds`;return"Attempt to access memory outside buffer bounds"},RangeError),VK=rq("ERR_INVALID_ARG_TYPE",function(V,q){return`The "${V}" argument must be of type number. Received type ${typeof q}`},TypeError),cq=rq("ERR_OUT_OF_RANGE",function(V,q,X){let K=`The value of "${V}" is out of range.`,Q=X;if(Number.isInteger(X)&&Math.abs(X)>4294967296)Q=jX(String(X));else if(typeof X==="bigint"){if(Q=String(X),X>BigInt(2)**BigInt(32)||X<-(BigInt(2)**BigInt(32)))Q=jX(Q);Q+="n"}return K+=` It must be ${q}. Received ${Q}`,K},RangeError);function y(V,q,X){if(typeof V==="number"){if(typeof q==="string")throw new TypeError('The "string" argument must be of type string. Received type number');return iq(V)}return TX(V,q,X)}Object.defineProperty(y.prototype,"parent",{enumerable:!0,get:function(){if(!y.isBuffer(this))return;return this.buffer}});Object.defineProperty(y.prototype,"offset",{enumerable:!0,get:function(){if(!y.isBuffer(this))return;return this.byteOffset}});y.poolSize=8192;function TX(V,q,X){if(typeof V==="string")return QK(V,q);if(ArrayBuffer.isView(V))return YK(V);if(V==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof V);if(h6(V,ArrayBuffer)||V&&h6(V.buffer,ArrayBuffer))return dq(V,q,X);if(typeof SharedArrayBuffer!=="undefined"&&(h6(V,SharedArrayBuffer)||V&&h6(V.buffer,SharedArrayBuffer)))return dq(V,q,X);if(typeof V==="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let K=V.valueOf&&V.valueOf();if(K!=null&&K!==V)return y.from(K,q,X);let Q=JK(V);if(Q)return Q;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof V[Symbol.toPrimitive]==="function")return y.from(V[Symbol.toPrimitive]("string"),q,X);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof V)}y.from=function(V,q,X){return TX(V,q,X)};Object.setPrototypeOf(y.prototype,Uint8Array.prototype);Object.setPrototypeOf(y,Uint8Array);function vX(V){if(typeof V!=="number")throw new TypeError('"size" argument must be of type number');else if(V<0)throw new RangeError('The value "'+V+'" is invalid for option "size"')}function KK(V,q,X){if(vX(V),V<=0)return a6(V);if(q!==void 0)return typeof X==="string"?a6(V).fill(q,X):a6(V).fill(q);return a6(V)}y.alloc=function(V,q,X){return KK(V,q,X)};function iq(V){return vX(V),a6(V<0?0:aq(V)|0)}y.allocUnsafe=function(V){return iq(V)};y.allocUnsafeSlow=function(V){return iq(V)};function QK(V,q){if(typeof q!=="string"||q==="")q="utf8";if(!y.isEncoding(q))throw new TypeError("Unknown encoding: "+q);let X=RX(V,q)|0,K=a6(X),Q=K.write(V,q);if(Q!==X)K=K.slice(0,Q);return K}function pq(V){let q=V.length<0?0:aq(V.length)|0,X=a6(q);for(let K=0;K=_q)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+_q.toString(16)+" bytes");return V|0}y.isBuffer=function V(q){return q!=null&&q._isBuffer===!0&&q!==y.prototype};y.compare=function V(q,X){if(h6(q,Uint8Array))q=y.from(q,q.offset,q.byteLength);if(h6(X,Uint8Array))X=y.from(X,X.offset,X.byteLength);if(!y.isBuffer(q)||!y.isBuffer(X))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(q===X)return 0;let K=q.length,Q=X.length;for(let Y=0,J=Math.min(K,Q);YQ.length){if(!y.isBuffer(J))J=y.from(J);J.copy(Q,Y)}else Uint8Array.prototype.set.call(Q,J,Y);else if(!y.isBuffer(J))throw new TypeError('"list" argument must be an Array of Buffers');else J.copy(Q,Y);Y+=J.length}return Q};function RX(V,q){if(y.isBuffer(V))return V.length;if(ArrayBuffer.isView(V)||h6(V,ArrayBuffer))return V.byteLength;if(typeof V!=="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof V);let X=V.length,K=arguments.length>2&&arguments[2]===!0;if(!K&&X===0)return 0;let Q=!1;for(;;)switch(q){case"ascii":case"latin1":case"binary":return X;case"utf8":case"utf-8":return nq(V).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return X*2;case"hex":return X>>>1;case"base64":return hX(V).length;default:if(Q)return K?-1:nq(V).length;q=(""+q).toLowerCase(),Q=!0}}y.byteLength=RX;function GK(V,q,X){let K=!1;if(q===void 0||q<0)q=0;if(q>this.length)return"";if(X===void 0||X>this.length)X=this.length;if(X<=0)return"";if(X>>>=0,q>>>=0,X<=q)return"";if(!V)V="utf8";while(!0)switch(V){case"hex":return LK(this,q,X);case"utf8":case"utf-8":return wX(this,q,X);case"ascii":return kK(this,q,X);case"latin1":case"binary":return EK(this,q,X);case"base64":return MK(this,q,X);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return jK(this,q,X);default:if(K)throw new TypeError("Unknown encoding: "+V);V=(V+"").toLowerCase(),K=!0}}y.prototype._isBuffer=!0;function p5(V,q,X){let K=V[q];V[q]=V[X],V[X]=K}y.prototype.swap16=function V(){let q=this.length;if(q%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let X=0;XX)q+=" ... ";return""};if(kX)y.prototype[kX]=y.prototype.inspect;y.prototype.compare=function V(q,X,K,Q,Y){if(h6(q,Uint8Array))q=y.from(q,q.offset,q.byteLength);if(!y.isBuffer(q))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof q);if(X===void 0)X=0;if(K===void 0)K=q?q.length:0;if(Q===void 0)Q=0;if(Y===void 0)Y=this.length;if(X<0||K>q.length||Q<0||Y>this.length)throw new RangeError("out of range index");if(Q>=Y&&X>=K)return 0;if(Q>=Y)return-1;if(X>=K)return 1;if(X>>>=0,K>>>=0,Q>>>=0,Y>>>=0,this===q)return 0;let J=Y-Q,G=K-X,W=Math.min(J,G),Z=this.slice(Q,Y),U=q.slice(X,K);for(let H=0;H2147483647)X=2147483647;else if(X<-2147483648)X=-2147483648;if(X=+X,Number.isNaN(X))X=Q?0:V.length-1;if(X<0)X=V.length+X;if(X>=V.length)if(Q)return-1;else X=V.length-1;else if(X<0)if(Q)X=0;else return-1;if(typeof q==="string")q=y.from(q,K);if(y.isBuffer(q)){if(q.length===0)return-1;return EX(V,q,X,K,Q)}else if(typeof q==="number"){if(q=q&255,typeof Uint8Array.prototype.indexOf==="function")if(Q)return Uint8Array.prototype.indexOf.call(V,q,X);else return Uint8Array.prototype.lastIndexOf.call(V,q,X);return EX(V,[q],X,K,Q)}throw new TypeError("val must be string, number or Buffer")}function EX(V,q,X,K,Q){let Y=1,J=V.length,G=q.length;if(K!==void 0){if(K=String(K).toLowerCase(),K==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le"){if(V.length<2||q.length<2)return-1;Y=2,J/=2,G/=2,X/=2}}function W(U,H){if(Y===1)return U[H];else return U.readUInt16BE(H*Y)}let Z;if(Q){let U=-1;for(Z=X;ZJ)X=J-G;for(Z=X;Z>=0;Z--){let U=!0;for(let H=0;HQ)K=Q;let Y=q.length;if(K>Y/2)K=Y/2;let J;for(J=0;J>>0,isFinite(K)){if(K=K>>>0,Q===void 0)Q="utf8"}else Q=K,K=void 0;else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let Y=this.length-X;if(K===void 0||K>Y)K=Y;if(q.length>0&&(K<0||X<0)||X>this.length)throw new RangeError("Attempt to write outside buffer bounds");if(!Q)Q="utf8";let J=!1;for(;;)switch(Q){case"hex":return ZK(this,q,X,K);case"utf8":case"utf-8":return WK(this,q,X,K);case"ascii":case"latin1":case"binary":return UK(this,q,X,K);case"base64":return HK(this,q,X,K);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return zK(this,q,X,K);default:if(J)throw new TypeError("Unknown encoding: "+Q);Q=(""+Q).toLowerCase(),J=!0}};y.prototype.toJSON=function V(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function MK(V,q,X){if(q===0&&X===V.length)return IX(V);else return IX(V.slice(q,X))}function wX(V,q,X){X=Math.min(V.length,X);let K=[],Q=q;while(Q239?4:Y>223?3:Y>191?2:1;if(Q+G<=X){let W,Z,U,H;switch(G){case 1:if(Y<128)J=Y;break;case 2:if(W=V[Q+1],(W&192)===128){if(H=(Y&31)<<6|W&63,H>127)J=H}break;case 3:if(W=V[Q+1],Z=V[Q+2],(W&192)===128&&(Z&192)===128){if(H=(Y&15)<<12|(W&63)<<6|Z&63,H>2047&&(H<55296||H>57343))J=H}break;case 4:if(W=V[Q+1],Z=V[Q+2],U=V[Q+3],(W&192)===128&&(Z&192)===128&&(U&192)===128){if(H=(Y&15)<<18|(W&63)<<12|(Z&63)<<6|U&63,H>65535&&H<1114112)J=H}}}if(J===null)J=65533,G=1;else if(J>65535)J-=65536,K.push(J>>>10&1023|55296),J=56320|J&1023;K.push(J),Q+=G}return IK(K)}var LX=4096;function IK(V){let q=V.length;if(q<=LX)return String.fromCharCode.apply(String,V);let X="",K=0;while(KK)X=K;let Q="";for(let Y=q;YK)q=K;if(X<0){if(X+=K,X<0)X=0}else if(X>K)X=K;if(XX)throw new RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function V(q,X,K){if(q=q>>>0,X=X>>>0,!K)D0(q,X,this.length);let Q=this[q],Y=1,J=0;while(++J>>0,X=X>>>0,!K)D0(q,X,this.length);let Q=this[q+--X],Y=1;while(X>0&&(Y*=256))Q+=this[q+--X]*Y;return Q};y.prototype.readUint8=y.prototype.readUInt8=function V(q,X){if(q=q>>>0,!X)D0(q,1,this.length);return this[q]};y.prototype.readUint16LE=y.prototype.readUInt16LE=function V(q,X){if(q=q>>>0,!X)D0(q,2,this.length);return this[q]|this[q+1]<<8};y.prototype.readUint16BE=y.prototype.readUInt16BE=function V(q,X){if(q=q>>>0,!X)D0(q,2,this.length);return this[q]<<8|this[q+1]};y.prototype.readUint32LE=y.prototype.readUInt32LE=function V(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return(this[q]|this[q+1]<<8|this[q+2]<<16)+this[q+3]*16777216};y.prototype.readUint32BE=y.prototype.readUInt32BE=function V(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]*16777216+(this[q+1]<<16|this[q+2]<<8|this[q+3])};y.prototype.readBigUInt64LE=M5(function V(q){q=q>>>0,y8(q,"offset");let X=this[q],K=this[q+7];if(X===void 0||K===void 0)C2(q,this.length-8);let Q=X+this[++q]*256+this[++q]*65536+this[++q]*16777216,Y=this[++q]+this[++q]*256+this[++q]*65536+K*16777216;return BigInt(Q)+(BigInt(Y)<>>0,y8(q,"offset");let X=this[q],K=this[q+7];if(X===void 0||K===void 0)C2(q,this.length-8);let Q=X*16777216+this[++q]*65536+this[++q]*256+this[++q],Y=this[++q]*16777216+this[++q]*65536+this[++q]*256+K;return(BigInt(Q)<>>0,X=X>>>0,!K)D0(q,X,this.length);let Q=this[q],Y=1,J=0;while(++J=Y)Q-=Math.pow(2,8*X);return Q};y.prototype.readIntBE=function V(q,X,K){if(q=q>>>0,X=X>>>0,!K)D0(q,X,this.length);let Q=X,Y=1,J=this[q+--Q];while(Q>0&&(Y*=256))J+=this[q+--Q]*Y;if(Y*=128,J>=Y)J-=Math.pow(2,8*X);return J};y.prototype.readInt8=function V(q,X){if(q=q>>>0,!X)D0(q,1,this.length);if(!(this[q]&128))return this[q];return(255-this[q]+1)*-1};y.prototype.readInt16LE=function V(q,X){if(q=q>>>0,!X)D0(q,2,this.length);let K=this[q]|this[q+1]<<8;return K&32768?K|4294901760:K};y.prototype.readInt16BE=function V(q,X){if(q=q>>>0,!X)D0(q,2,this.length);let K=this[q+1]|this[q]<<8;return K&32768?K|4294901760:K};y.prototype.readInt32LE=function V(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]|this[q+1]<<8|this[q+2]<<16|this[q+3]<<24};y.prototype.readInt32BE=function V(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]<<24|this[q+1]<<16|this[q+2]<<8|this[q+3]};y.prototype.readBigInt64LE=M5(function V(q){q=q>>>0,y8(q,"offset");let X=this[q],K=this[q+7];if(X===void 0||K===void 0)C2(q,this.length-8);let Q=this[q+4]+this[q+5]*256+this[q+6]*65536+(K<<24);return(BigInt(Q)<>>0,y8(q,"offset");let X=this[q],K=this[q+7];if(X===void 0||K===void 0)C2(q,this.length-8);let Q=(X<<24)+this[++q]*65536+this[++q]*256+this[++q];return(BigInt(Q)<>>0,!X)D0(q,4,this.length);return $1(this,q,!0,23,4)};y.prototype.readFloatBE=function V(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return $1(this,q,!1,23,4)};y.prototype.readDoubleLE=function V(q,X){if(q=q>>>0,!X)D0(q,8,this.length);return $1(this,q,!0,52,8)};y.prototype.readDoubleBE=function V(q,X){if(q=q>>>0,!X)D0(q,8,this.length);return $1(this,q,!1,52,8)};function s0(V,q,X,K,Q,Y){if(!y.isBuffer(V))throw new TypeError('"buffer" argument must be a Buffer instance');if(q>Q||qV.length)throw new RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function V(q,X,K,Q){if(q=+q,X=X>>>0,K=K>>>0,!Q){let G=Math.pow(2,8*K)-1;s0(this,q,X,K,G,0)}let Y=1,J=0;this[X]=q&255;while(++J>>0,K=K>>>0,!Q){let G=Math.pow(2,8*K)-1;s0(this,q,X,K,G,0)}let Y=K-1,J=1;this[X+Y]=q&255;while(--Y>=0&&(J*=256))this[X+Y]=q/J&255;return X+K};y.prototype.writeUint8=y.prototype.writeUInt8=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,1,255,0);return this[X]=q&255,X+1};y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,2,65535,0);return this[X]=q&255,this[X+1]=q>>>8,X+2};y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,2,65535,0);return this[X]=q>>>8,this[X+1]=q&255,X+2};y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,4,4294967295,0);return this[X+3]=q>>>24,this[X+2]=q>>>16,this[X+1]=q>>>8,this[X]=q&255,X+4};y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,4,4294967295,0);return this[X]=q>>>24,this[X+1]=q>>>16,this[X+2]=q>>>8,this[X+3]=q&255,X+4};function AX(V,q,X,K,Q){CX(q,K,Q,V,X,7);let Y=Number(q&BigInt(4294967295));V[X++]=Y,Y=Y>>8,V[X++]=Y,Y=Y>>8,V[X++]=Y,Y=Y>>8,V[X++]=Y;let J=Number(q>>BigInt(32)&BigInt(4294967295));return V[X++]=J,J=J>>8,V[X++]=J,J=J>>8,V[X++]=J,J=J>>8,V[X++]=J,X}function NX(V,q,X,K,Q){CX(q,K,Q,V,X,7);let Y=Number(q&BigInt(4294967295));V[X+7]=Y,Y=Y>>8,V[X+6]=Y,Y=Y>>8,V[X+5]=Y,Y=Y>>8,V[X+4]=Y;let J=Number(q>>BigInt(32)&BigInt(4294967295));return V[X+3]=J,J=J>>8,V[X+2]=J,J=J>>8,V[X+1]=J,J=J>>8,V[X]=J,X+8}y.prototype.writeBigUInt64LE=M5(function V(q,X=0){return AX(this,q,X,BigInt(0),BigInt("0xffffffffffffffff"))});y.prototype.writeBigUInt64BE=M5(function V(q,X=0){return NX(this,q,X,BigInt(0),BigInt("0xffffffffffffffff"))});y.prototype.writeIntLE=function V(q,X,K,Q){if(q=+q,X=X>>>0,!Q){let W=Math.pow(2,8*K-1);s0(this,q,X,K,W-1,-W)}let Y=0,J=1,G=0;this[X]=q&255;while(++Y>0)-G&255}return X+K};y.prototype.writeIntBE=function V(q,X,K,Q){if(q=+q,X=X>>>0,!Q){let W=Math.pow(2,8*K-1);s0(this,q,X,K,W-1,-W)}let Y=K-1,J=1,G=0;this[X+Y]=q&255;while(--Y>=0&&(J*=256)){if(q<0&&G===0&&this[X+Y+1]!==0)G=1;this[X+Y]=(q/J>>0)-G&255}return X+K};y.prototype.writeInt8=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,1,127,-128);if(q<0)q=255+q+1;return this[X]=q&255,X+1};y.prototype.writeInt16LE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,2,32767,-32768);return this[X]=q&255,this[X+1]=q>>>8,X+2};y.prototype.writeInt16BE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,2,32767,-32768);return this[X]=q>>>8,this[X+1]=q&255,X+2};y.prototype.writeInt32LE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,4,2147483647,-2147483648);return this[X]=q&255,this[X+1]=q>>>8,this[X+2]=q>>>16,this[X+3]=q>>>24,X+4};y.prototype.writeInt32BE=function V(q,X,K){if(q=+q,X=X>>>0,!K)s0(this,q,X,4,2147483647,-2147483648);if(q<0)q=4294967295+q+1;return this[X]=q>>>24,this[X+1]=q>>>16,this[X+2]=q>>>8,this[X+3]=q&255,X+4};y.prototype.writeBigInt64LE=M5(function V(q,X=0){return AX(this,q,X,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});y.prototype.writeBigInt64BE=M5(function V(q,X=0){return NX(this,q,X,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function SX(V,q,X,K,Q,Y){if(X+K>V.length)throw new RangeError("Index out of range");if(X<0)throw new RangeError("Index out of range")}function yX(V,q,X,K,Q){if(q=+q,X=X>>>0,!Q)SX(V,q,X,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return BX(V,q,X,K,23,4),X+4}y.prototype.writeFloatLE=function V(q,X,K){return yX(this,q,X,!0,K)};y.prototype.writeFloatBE=function V(q,X,K){return yX(this,q,X,!1,K)};function $X(V,q,X,K,Q){if(q=+q,X=X>>>0,!Q)SX(V,q,X,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return BX(V,q,X,K,52,8),X+8}y.prototype.writeDoubleLE=function V(q,X,K){return $X(this,q,X,!0,K)};y.prototype.writeDoubleBE=function V(q,X,K){return $X(this,q,X,!1,K)};y.prototype.copy=function V(q,X,K,Q){if(!y.isBuffer(q))throw new TypeError("argument should be a Buffer");if(!K)K=0;if(!Q&&Q!==0)Q=this.length;if(X>=q.length)X=q.length;if(!X)X=0;if(Q>0&&Q=this.length)throw new RangeError("Index out of range");if(Q<0)throw new RangeError("sourceEnd out of bounds");if(Q>this.length)Q=this.length;if(q.length-X>>0,K=K===void 0?this.length:K>>>0,!q)q=0;let Y;if(typeof q==="number")for(Y=X;Y=K+4;X-=3)q=`_${V.slice(X-3,X)}${q}`;return`${V.slice(0,X)}${q}`}function BK(V,q,X){if(y8(q,"offset"),V[q]===void 0||V[q+X]===void 0)C2(q,V.length-(X+1))}function CX(V,q,X,K,Q,Y){if(V>X||V3)if(q===0||q===BigInt(0))G=`>= 0${J} and < 2${J} ** ${(Y+1)*8}${J}`;else G=`>= -(2${J} ** ${(Y+1)*8-1}${J}) and < 2 ** ${(Y+1)*8-1}${J}`;else G=`>= ${q}${J} and <= ${X}${J}`;throw new cq("value",G,V)}BK(K,Q,Y)}function y8(V,q){if(typeof V!=="number")throw new VK(q,"number",V)}function C2(V,q,X){if(Math.floor(V)!==V)throw y8(V,X),new cq(X||"offset","an integer",V);if(q<0)throw new XK;throw new cq(X||"offset",`>= ${X?1:0} and <= ${q}`,V)}var TK=/[^+/0-9A-Za-z-_]/g;function vK(V){if(V=V.split("=")[0],V=V.trim().replace(TK,""),V.length<2)return"";while(V.length%4!==0)V=V+"=";return V}function nq(V,q){q=q||1/0;let X,K=V.length,Q=null,Y=[];for(let J=0;J55295&&X<57344){if(!Q){if(X>56319){if((q-=3)>-1)Y.push(239,191,189);continue}else if(J+1===K){if((q-=3)>-1)Y.push(239,191,189);continue}Q=X;continue}if(X<56320){if((q-=3)>-1)Y.push(239,191,189);Q=X;continue}X=(Q-55296<<10|X-56320)+65536}else if(Q){if((q-=3)>-1)Y.push(239,191,189)}if(Q=null,X<128){if((q-=1)<0)break;Y.push(X)}else if(X<2048){if((q-=2)<0)break;Y.push(X>>6|192,X&63|128)}else if(X<65536){if((q-=3)<0)break;Y.push(X>>12|224,X>>6&63|128,X&63|128)}else if(X<1114112){if((q-=4)<0)break;Y.push(X>>18|240,X>>12&63|128,X>>6&63|128,X&63|128)}else throw new Error("Invalid code point")}return Y}function RK(V){let q=[];for(let X=0;X>8,Q=X%256,Y.push(Q),Y.push(K)}return Y}function hX(V){return t3(vK(V))}function C1(V,q,X,K){let Q;for(Q=0;Q=q.length||Q>=V.length)break;q[Q+X]=V[Q]}return Q}function h6(V,q){return V instanceof q||V!=null&&V.constructor!=null&&V.constructor.name!=null&&V.constructor.name===q.name}var wK=function(){let V=new Array(256);for(let q=0;q<16;++q){let X=q*16;for(let K=0;K<16;++K)V[X+K]="0123456789abcdef"[q]+"0123456789abcdef"[K]}return V}();function M5(V){return typeof BigInt==="undefined"?AK:V}function AK(){throw new Error("BigInt not supported")}function oq(V){return()=>{throw new Error(V+" is not implemented for node:buffer browser polyfill")}}var SZ=oq("resolveObjectURL"),yZ=oq("isUtf8");var $Z=oq("transcode");var TZ=$2(gX());var HX={};a3(HX,{waitForTick:()=>R6,values:()=>d8,utf8Encode:()=>PK,utf16Encode:()=>E4,utf16Decode:()=>x2,typedArrayFor:()=>D2,translate:()=>c0,toUint8Array:()=>r5,toRadians:()=>O0,toHexStringOfMinLength:()=>D6,toHexString:()=>u6,toDegrees:()=>I1,toCodePoint:()=>K4,toCharCode:()=>s,sum:()=>z4,stroke:()=>B8,square:()=>uG,sortedUniq:()=>H4,skewRadians:()=>I2,skewDegrees:()=>FG,sizeInBytes:()=>P8,singleQuote:()=>t9,showText:()=>j1,setWordSpacing:()=>bG,setTextRise:()=>fG,setTextRenderingMode:()=>lG,setTextMatrix:()=>F3,setStrokingRgbColor:()=>g7,setStrokingGrayscaleColor:()=>D7,setStrokingColor:()=>v8,setStrokingCmykColor:()=>b7,setLineWidth:()=>j8,setLineJoin:()=>DG,setLineHeight:()=>F7,setLineCap:()=>k2,setGraphicsState:()=>i6,setFontAndSize:()=>T8,setFillingRgbColor:()=>u7,setFillingGrayscaleColor:()=>P7,setFillingColor:()=>E6,setFillingCmykColor:()=>x7,setDashPattern:()=>L8,setCharacterSqueeze:()=>mG,setCharacterSpacing:()=>xG,scale:()=>g5,rotateRectangle:()=>y7,rotateRadians:()=>x5,rotateInPlace:()=>L6,rotateDegrees:()=>M2,rotateAndSkewTextRadiansAndTranslate:()=>L2,rotateAndSkewTextDegreesAndTranslate:()=>_G,rgb:()=>Y0,reverseArray:()=>k5,restoreDashPattern:()=>PG,reduceRotation:()=>k6,rectanglesAreEqual:()=>n8,rectangle:()=>h3,range:()=>M4,radiansToDegrees:()=>C3,radians:()=>CG,pushGraphicsState:()=>B0,popGraphicsState:()=>T0,pluckIndices:()=>I4,pdfDocEncodingDecode:()=>J1,parseDate:()=>P2,padStart:()=>e0,numberToString:()=>B4,normalizeAppearance:()=>G6,nextLine:()=>h7,newlineChars:()=>CK,moveTo:()=>J6,moveText:()=>gG,mergeUint8Arrays:()=>W4,mergeLines:()=>F1,mergeIntoTypedArray:()=>Z4,lowSurrogate:()=>u1,lineTo:()=>S0,lineSplit:()=>F2,layoutSinglelineText:()=>v2,layoutMultilineText:()=>uq,layoutCombedText:()=>KX,last:()=>n5,isWithinBMP:()=>L4,isType:()=>X3,isStandardFont:()=>e1,isNewlineChar:()=>Y4,highSurrogate:()=>D1,hasUtf16BOM:()=>b2,hasSurrogates:()=>j4,grayscale:()=>Sq,getType:()=>q3,findLastMatch:()=>F8,fillAndStroke:()=>L1,fill:()=>E1,escapedNewlineChars:()=>mX,escapeRegExp:()=>bX,error:()=>j5,endText:()=>T1,endPath:()=>wq,endMarkedContent:()=>Nq,encodeToBase64:()=>X4,drawTextLines:()=>Fq,drawTextField:()=>Pq,drawText:()=>rG,drawSvgPath:()=>d7,drawRectangle:()=>b5,drawRadioButton:()=>T2,drawPage:()=>c7,drawOptionList:()=>n7,drawObject:()=>j2,drawLinesOfText:()=>_7,drawLine:()=>p7,drawImage:()=>w1,drawEllipsePath:()=>x3,drawEllipse:()=>O1,drawCheckMark:()=>b3,drawCheckBox:()=>B2,drawButton:()=>hq,degreesToRadians:()=>U5,degrees:()=>p,defaultTextFieldAppearanceProvider:()=>GX,defaultRadioGroupAppearanceProvider:()=>YX,defaultOptionListAppearanceProvider:()=>WX,defaultDropdownAppearanceProvider:()=>ZX,defaultCheckBoxAppearanceProvider:()=>QX,defaultButtonAppearanceProvider:()=>JX,decodePDFRawStream:()=>V2,decodeFromBase64DataUri:()=>V4,decodeFromBase64:()=>q4,createValueErrorMsg:()=>e9,createTypeErrorMsg:()=>V3,createPDFAcroFields:()=>Z2,createPDFAcroField:()=>Iq,copyStringIntoBuffer:()=>I0,concatTransformationMatrix:()=>k1,componentsToColor:()=>l0,colorToComponents:()=>$q,cmyk:()=>yq,closePath:()=>N6,clipEvenOdd:()=>hG,clip:()=>Oq,cleanText:()=>I5,charSplit:()=>J4,charFromHexCode:()=>Q4,charFromCode:()=>t0,charAtIndex:()=>P1,canBeConvertedToUint8Array:()=>k4,bytesFor:()=>L5,byAscendingId:()=>U4,breakTextIntoLines:()=>G4,beginText:()=>B1,beginMarkedContent:()=>Aq,backtick:()=>$0,assertRangeOrUndefined:()=>X6,assertRange:()=>b0,assertPositive:()=>X5,assertOrUndefined:()=>F,assertMultiple:()=>Y1,assertIsSubset:()=>V7,assertIsOneOfOrUndefined:()=>a0,assertIsOneOf:()=>M6,assertIs:()=>T,assertInteger:()=>K7,assertEachIs:()=>Q1,asPDFNumber:()=>f,asPDFName:()=>z2,asNumber:()=>t,arrayAsString:()=>u2,appendQuadraticCurve:()=>E2,appendBezierCurve:()=>p0,adjustDimsForRotation:()=>r6,addRandomSuffix:()=>$K,ViewerPreferences:()=>W1,UnsupportedEncodingError:()=>Q7,UnrecognizedStreamTypeError:()=>J7,UnexpectedObjectTypeError:()=>A5,UnexpectedFieldTypeError:()=>z5,UnbalancedParenthesisError:()=>E7,TextRenderingMode:()=>C7,TextAlignment:()=>v0,StandardFonts:()=>N8,StandardFontValues:()=>o9,StandardFontEmbedder:()=>$5,StalledParserError:()=>L7,RotationTypes:()=>E8,RichTextFieldReadError:()=>e7,ReparseError:()=>Q8,RemovePageFromEmptyDocumentError:()=>o7,ReadingDirection:()=>H8,PrivateConstructorError:()=>K8,PrintScaling:()=>z8,PngEmbedder:()=>X2,ParseSpeeds:()=>A1,PageSizes:()=>UX,PageEmbeddingMismatchedContextError:()=>G7,PDFXRefStreamParser:()=>jq,PDFWriter:()=>o8,PDFWidgetAnnotation:()=>M8,PDFTrailerDict:()=>Qq,PDFTrailer:()=>S5,PDFTextField:()=>A8,PDFString:()=>K0,PDFStreamWriter:()=>Jq,PDFStreamParsingError:()=>k7,PDFStream:()=>E0,PDFSignature:()=>O2,PDFRef:()=>a,PDFRawStream:()=>A6,PDFRadioGroup:()=>l5,PDFParsingError:()=>V5,PDFParser:()=>Bq,PDFPageTree:()=>U2,PDFPageLeaf:()=>_0,PDFPageEmbedder:()=>K2,PDFPage:()=>y0,PDFOptionList:()=>w8,PDFOperatorNames:()=>X0,PDFOperator:()=>e,PDFObjectStreamParser:()=>Lq,PDFObjectStream:()=>a8,PDFObjectParsingError:()=>M7,PDFObjectParser:()=>H2,PDFObjectCopier:()=>Z1,PDFObject:()=>z0,PDFNumber:()=>x,PDFNull:()=>F0,PDFName:()=>k,PDFJavaScript:()=>xq,PDFInvalidObjectParsingError:()=>I7,PDFInvalidObject:()=>s8,PDFImage:()=>R8,PDFHexString:()=>g,PDFHeader:()=>_6,PDFForm:()=>gq,PDFFont:()=>w0,PDFFlateStream:()=>N5,PDFField:()=>d0,PDFEmbeddedPage:()=>R2,PDFDropdown:()=>O8,PDFDocument:()=>o0,PDFDict:()=>m,PDFCrossRefStream:()=>Yq,PDFCrossRefSection:()=>i8,PDFContext:()=>Z8,PDFContentStream:()=>p6,PDFCheckBox:()=>f5,PDFCatalog:()=>W2,PDFButton:()=>S8,PDFBool:()=>c6,PDFArrayIsNotRectangleError:()=>Z7,PDFArray:()=>i,PDFAnnotation:()=>Mq,PDFAcroText:()=>J5,PDFAcroTerminal:()=>K6,PDFAcroSignature:()=>F5,PDFAcroRadioButton:()=>Z5,PDFAcroPushButton:()=>G5,PDFAcroNonTerminal:()=>Y5,PDFAcroListBox:()=>W5,PDFAcroForm:()=>P5,PDFAcroField:()=>Y2,PDFAcroComboBox:()=>Q5,PDFAcroChoice:()=>G2,PDFAcroCheckBox:()=>K5,PDFAcroButton:()=>h5,NumberParsingError:()=>Vq,NonFullScreenPageMode:()=>U8,NoSuchFieldError:()=>s7,NextByteAssertionError:()=>z7,MultiSelectValueError:()=>W7,MissingTfOperatorError:()=>H7,MissingPageContentsEmbeddingError:()=>Y7,MissingPDFHeaderError:()=>j7,MissingOnValueCheckError:()=>aG,MissingKeywordError:()=>B7,MissingDAEntryError:()=>U7,MissingCatalogError:()=>iY,MethodNotImplementedError:()=>u0,LineJoinStyle:()=>$7,LineCapStyle:()=>u5,JpegEmbedder:()=>q2,InvalidTargetIndexError:()=>qq,InvalidPDFDateStringError:()=>G1,InvalidMaxLengthError:()=>VX,InvalidFieldNamePartError:()=>t7,InvalidAcroFieldValueError:()=>J8,IndexOutOfBoundsError:()=>Y8,ImageAlignment:()=>T6,ForeignPageError:()=>a7,FontkitNotRegisteredError:()=>i7,FileEmbedder:()=>Wq,FieldExistsAsNonTerminalError:()=>oG,FieldAlreadyExistsError:()=>Dq,ExceededMaxLengthError:()=>XX,EncryptedPDFError:()=>r7,Duplex:()=>Q2,CustomFontSubsetEmbedder:()=>Zq,CustomFontEmbedder:()=>C5,CorruptPageTreeError:()=>Xq,CombedTextLayoutError:()=>qX,ColorTypes:()=>H5,CharCodes:()=>E,Cache:()=>m0,BlendMode:()=>S6,AppearanceCharacteristics:()=>J2,AnnotationFlags:()=>k8,AcroTextFlags:()=>L0,AcroFieldFlags:()=>Y6,AcroChoiceFlags:()=>G0,AcroButtonFlags:()=>f0,AFRelationship:()=>t8});/*! ***************************************************************************** +(()=>{var dK=Object.create;var{getPrototypeOf:nK,defineProperty:fq,getOwnPropertyNames:rK}=Object;var iK=Object.prototype.hasOwnProperty;function aK(q){return this[q]}var oK,sK,$8=(q,X,V)=>{var K=q!=null&&typeof q==="object";if(K){var Q=X?oK??=new WeakMap:sK??=new WeakMap,Y=Q.get(q);if(Y)return Y}V=q!=null?dK(nK(q)):{};let J=X||!q||!q.__esModule?fq(V,"default",{value:q,enumerable:!0}):V;for(let G of rK(q))if(!iK.call(J,G))fq(J,G,{get:aK.bind(q,G),enumerable:!0});if(K)Q.set(q,J);return J};var g0=(q,X)=>()=>(X||q((X={exports:{}}).exports,X),X.exports);var tK=(q)=>q;function eK(q,X){this[q]=tK.bind(null,X)}var qQ=(q,X)=>{for(var V in X)fq(q,V,{get:X[V],enumerable:!0,configurable:!0,set:eK.bind(X,V)})};var gX=g0((b3,uX)=>{var A0=uX.exports={},F2,P2;function sq(){throw Error("setTimeout has not been defined")}function tq(){throw Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")F2=setTimeout;else F2=sq}catch(q){F2=sq}try{if(typeof clearTimeout==="function")P2=clearTimeout;else P2=tq}catch(q){P2=tq}})();function FX(q){if(F2===setTimeout)return setTimeout(q,0);if((F2===sq||!F2)&&setTimeout)return F2=setTimeout,setTimeout(q,0);try{return F2(q,0)}catch(X){try{return F2.call(null,q,0)}catch(V){return F2.call(this,q,0)}}}function FQ(q){if(P2===clearTimeout)return clearTimeout(q);if((P2===tq||!P2)&&clearTimeout)return P2=clearTimeout,clearTimeout(q);try{return P2(q)}catch(X){try{return P2.call(null,q)}catch(V){return P2.call(this,q)}}}var o2=[],$5=!1,d6,h1=-1;function PQ(){if(!$5||!d6)return;if($5=!1,d6.length)o2=d6.concat(o2);else h1=-1;if(o2.length)PX()}function PX(){if($5)return;var q=FX(PQ);$5=!0;var X=o2.length;while(X){d6=o2,o2=[];while(++h11)for(var V=1;V{var _Q=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function cQ(q,X){return Object.prototype.hasOwnProperty.call(q,X)}r0.assign=function(q){var X=Array.prototype.slice.call(arguments,1);while(X.length){var V=X.shift();if(!V)continue;if(typeof V!=="object")throw TypeError(V+"must be non-object");for(var K in V)if(cQ(V,K))q[K]=V[K]}return q};r0.shrinkBuf=function(q,X){if(q.length===X)return q;if(q.subarray)return q.subarray(0,X);return q.length=X,q};var pQ={arraySet:function(q,X,V,K,Q){if(X.subarray&&q.subarray){q.set(X.subarray(V,V+K),Q);return}for(var Y=0;Y{var nQ=t2(),rQ=4,pX=0,dX=1,iQ=2;function u5(q){var X=q.length;while(--X>=0)q[X]=0}var aQ=0,sX=1,oQ=2,sQ=3,tQ=258,N4=29,p8=256,f8=p8+1+N4,D5=30,S4=19,tX=2*f8+1,i6=15,T4=16,eQ=7,y4=256,eX=16,qV=17,XV=18,w4=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],g1=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],qY=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],VV=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],XY=512,e2=Array((f8+2)*2);u5(e2);var m8=Array(D5*2);u5(m8);var l8=Array(XY);u5(l8);var _8=Array(tQ-sQ+1);u5(_8);var $4=Array(N4);u5($4);var x1=Array(D5);u5(x1);function v4(q,X,V,K,Q){this.static_tree=q,this.extra_bits=X,this.extra_base=V,this.elems=K,this.max_length=Q,this.has_stree=q&&q.length}var KV,QV,YV;function R4(q,X){this.dyn_tree=q,this.max_code=0,this.stat_desc=X}function JV(q){return q<256?l8[q]:l8[256+(q>>>7)]}function c8(q,X){q.pending_buf[q.pending++]=X&255,q.pending_buf[q.pending++]=X>>>8&255}function q2(q,X,V){if(q.bi_valid>T4-V)q.bi_buf|=X<>T4-q.bi_valid,q.bi_valid+=V-T4;else q.bi_buf|=X<>>=1,V<<=1;while(--X>0);return V>>>1}function VY(q){if(q.bi_valid===16)c8(q,q.bi_buf),q.bi_buf=0,q.bi_valid=0;else if(q.bi_valid>=8)q.pending_buf[q.pending++]=q.bi_buf&255,q.bi_buf>>=8,q.bi_valid-=8}function KY(q,X){var{dyn_tree:V,max_code:K}=X,Q=X.stat_desc.static_tree,Y=X.stat_desc.has_stree,J=X.stat_desc.extra_bits,G=X.stat_desc.extra_base,W=X.stat_desc.max_length,Z,H,U,z,k,M,j=0;for(z=0;z<=i6;z++)q.bl_count[z]=0;V[q.heap[q.heap_max]*2+1]=0;for(Z=q.heap_max+1;ZW)z=W,j++;if(V[H*2+1]=z,H>K)continue;if(q.bl_count[z]++,k=0,H>=G)k=J[H-G];if(M=V[H*2],q.opt_len+=M*(z+k),Y)q.static_len+=M*(Q[H*2+1]+k)}if(j===0)return;do{z=W-1;while(q.bl_count[z]===0)z--;q.bl_count[z]--,q.bl_count[z+1]+=2,q.bl_count[W]--,j-=2}while(j>0);for(z=W;z!==0;z--){H=q.bl_count[z];while(H!==0){if(U=q.heap[--Z],U>K)continue;if(V[U*2+1]!==z)q.opt_len+=(z-V[U*2+1])*V[U*2],V[U*2+1]=z;H--}}}function ZV(q,X,V){var K=Array(i6+1),Q=0,Y,J;for(Y=1;Y<=i6;Y++)K[Y]=Q=Q+V[Y-1]<<1;for(J=0;J<=X;J++){var G=q[J*2+1];if(G===0)continue;q[J*2]=GV(K[G]++,G)}}function QY(){var q,X,V,K,Q,Y=Array(i6+1);V=0;for(K=0;K>=7;for(;K8)c8(q,q.bi_buf);else if(q.bi_valid>0)q.pending_buf[q.pending++]=q.bi_buf;q.bi_buf=0,q.bi_valid=0}function YY(q,X,V,K){if(HV(q),K)c8(q,V),c8(q,~V);nQ.arraySet(q.pending_buf,q.window,X,V,q.pending),q.pending+=V}function nX(q,X,V,K){var Q=X*2,Y=V*2;return q[Q]>1;J>=1;J--)O4(q,V,J);Z=Y;do J=q.heap[1],q.heap[1]=q.heap[q.heap_len--],O4(q,V,1),G=q.heap[1],q.heap[--q.heap_max]=J,q.heap[--q.heap_max]=G,V[Z*2]=V[J*2]+V[G*2],q.depth[Z]=(q.depth[J]>=q.depth[G]?q.depth[J]:q.depth[G])+1,V[J*2+1]=V[G*2+1]=Z,q.heap[1]=Z++,O4(q,V,1);while(q.heap_len>=2);q.heap[--q.heap_max]=q.heap[1],KY(q,X),ZV(V,W,q.bl_count)}function iX(q,X,V){var K,Q=-1,Y,J=X[1],G=0,W=7,Z=4;if(J===0)W=138,Z=3;X[(V+1)*2+1]=65535;for(K=0;K<=V;K++){if(Y=J,J=X[(K+1)*2+1],++G=3;X--)if(q.bl_tree[VV[X]*2+1]!==0)break;return q.opt_len+=3*(X+1)+5+5+4,X}function GY(q,X,V,K){var Q;q2(q,X-257,5),q2(q,V-1,5),q2(q,K-4,4);for(Q=0;Q>>=1)if(X&1&&q.dyn_ltree[V*2]!==0)return pX;if(q.dyn_ltree[18]!==0||q.dyn_ltree[20]!==0||q.dyn_ltree[26]!==0)return dX;for(V=32;V0){if(q.strm.data_type===iQ)q.strm.data_type=ZY(q);if(A4(q,q.l_desc),A4(q,q.d_desc),J=JY(q),Q=q.opt_len+3+7>>>3,Y=q.static_len+3+7>>>3,Y<=Q)Q=Y}else Q=Y=V+5;if(V+4<=Q&&X!==-1)UV(q,X,V,K);else if(q.strategy===rQ||Y===Q)q2(q,(sX<<1)+(K?1:0),3),rX(q,e2,m8);else q2(q,(oQ<<1)+(K?1:0),3),GY(q,q.l_desc.max_code+1,q.d_desc.max_code+1,J+1),rX(q,q.dyn_ltree,q.dyn_dtree);if(WV(q),K)HV(q)}function zY(q,X,V){if(q.pending_buf[q.d_buf+q.last_lit*2]=X>>>8&255,q.pending_buf[q.d_buf+q.last_lit*2+1]=X&255,q.pending_buf[q.l_buf+q.last_lit]=V&255,q.last_lit++,X===0)q.dyn_ltree[V*2]++;else q.matches++,X--,q.dyn_ltree[(_8[V]+p8+1)*2]++,q.dyn_dtree[JV(X)*2]++;return q.last_lit===q.lit_bufsize-1}g5._tr_init=WY;g5._tr_stored_block=UV;g5._tr_flush_block=UY;g5._tr_tally=zY;g5._tr_align=HY});var C4=g0((t3,MV)=>{function MY(q,X,V,K){var Q=q&65535|0,Y=q>>>16&65535|0,J=0;while(V!==0){J=V>2000?2000:V,V-=J;do Q=Q+X[K++]|0,Y=Y+Q|0;while(--J);Q%=65521,Y%=65521}return Q|Y<<16|0}MV.exports=MY});var h4=g0((e3,kV)=>{function kY(){var q,X=[];for(var V=0;V<256;V++){q=V;for(var K=0;K<8;K++)q=q&1?3988292384^q>>>1:q>>>1;X[V]=q}return X}var IY=kY();function EY(q,X,V,K){var Q=IY,Y=K+V;q^=-1;for(var J=K;J>>8^Q[(q^X[J])&255];return q^-1}kV.exports=EY});var b1=g0((qW,IV)=>{IV.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var wV=g0((m2)=>{var i0=t2(),H2=zV(),BV=C4(),B6=h4(),jY=b1(),t6=0,LY=1,BY=3,w6=4,EV=5,b2=0,jV=1,U2=-2,TY=-3,F4=-5,vY=-1,RY=1,m1=2,OY=3,wY=4,AY=0,NY=2,c1=8,SY=9,yY=15,$Y=8,CY=29,hY=256,D4=hY+1+CY,FY=30,PY=19,DY=2*D4+1,uY=15,H0=3,R6=258,O2=R6+H0+1,gY=32,p1=42,u4=69,f1=73,l1=91,_1=103,a6=113,n8=666,h0=1,r8=2,o6=3,m5=4,xY=3;function O6(q,X){return q.msg=jY[X],X}function LV(q){return(q<<1)-(q>4?9:0)}function v6(q){var X=q.length;while(--X>=0)q[X]=0}function T6(q){var X=q.state,V=X.pending;if(V>q.avail_out)V=q.avail_out;if(V===0)return;if(i0.arraySet(q.output,X.pending_buf,X.pending_out,V,q.next_out),q.next_out+=V,X.pending_out+=V,q.total_out+=V,q.avail_out-=V,X.pending-=V,X.pending===0)X.pending_out=0}function x0(q,X){H2._tr_flush_block(q,q.block_start>=0?q.block_start:-1,q.strstart-q.block_start,X),q.block_start=q.strstart,T6(q.strm)}function U0(q,X){q.pending_buf[q.pending++]=X}function d8(q,X){q.pending_buf[q.pending++]=X>>>8&255,q.pending_buf[q.pending++]=X&255}function bY(q,X,V,K){var Q=q.avail_in;if(Q>K)Q=K;if(Q===0)return 0;if(q.avail_in-=Q,i0.arraySet(X,q.input,q.next_in,Q,V),q.state.wrap===1)q.adler=BV(q.adler,X,Q,V);else if(q.state.wrap===2)q.adler=B6(q.adler,X,Q,V);return q.next_in+=Q,q.total_in+=Q,Q}function TV(q,X){var{max_chain_length:V,strstart:K}=q,Q,Y,J=q.prev_length,G=q.nice_match,W=q.strstart>q.w_size-O2?q.strstart-(q.w_size-O2):0,Z=q.window,H=q.w_mask,U=q.prev,z=q.strstart+R6,k=Z[K+J-1],M=Z[K+J];if(q.prev_length>=q.good_match)V>>=2;if(G>q.lookahead)G=q.lookahead;do{if(Q=X,Z[Q+J]!==M||Z[Q+J-1]!==k||Z[Q]!==Z[K]||Z[++Q]!==Z[K+1])continue;K+=2,Q++;do;while(Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&Z[++K]===Z[++Q]&&KJ){if(q.match_start=X,J=Y,Y>=G)break;k=Z[K+J-1],M=Z[K+J]}}while((X=U[X&H])>W&&--V!==0);if(J<=q.lookahead)return J;return q.lookahead}function s6(q){var X=q.w_size,V,K,Q,Y,J;do{if(Y=q.window_size-q.lookahead-q.strstart,q.strstart>=X+(X-O2)){i0.arraySet(q.window,q.window,X,X,0),q.match_start-=X,q.strstart-=X,q.block_start-=X,K=q.hash_size,V=K;do Q=q.head[--V],q.head[V]=Q>=X?Q-X:0;while(--K);K=X,V=K;do Q=q.prev[--V],q.prev[V]=Q>=X?Q-X:0;while(--K);Y+=X}if(q.strm.avail_in===0)break;if(K=bY(q.strm,q.window,q.strstart+q.lookahead,Y),q.lookahead+=K,q.lookahead+q.insert>=H0){J=q.strstart-q.insert,q.ins_h=q.window[J],q.ins_h=(q.ins_h<q.pending_buf_size-5)V=q.pending_buf_size-5;for(;;){if(q.lookahead<=1){if(s6(q),q.lookahead===0&&X===t6)return h0;if(q.lookahead===0)break}q.strstart+=q.lookahead,q.lookahead=0;var K=q.block_start+V;if(q.strstart===0||q.strstart>=K){if(q.lookahead=q.strstart-K,q.strstart=K,x0(q,!1),q.strm.avail_out===0)return h0}if(q.strstart-q.block_start>=q.w_size-O2){if(x0(q,!1),q.strm.avail_out===0)return h0}}if(q.insert=0,X===w6){if(x0(q,!0),q.strm.avail_out===0)return o6;return m5}if(q.strstart>q.block_start){if(x0(q,!1),q.strm.avail_out===0)return h0}return h0}function P4(q,X){var V,K;for(;;){if(q.lookahead=H0)q.ins_h=(q.ins_h<=H0)if(K=H2._tr_tally(q,q.strstart-q.match_start,q.match_length-H0),q.lookahead-=q.match_length,q.match_length<=q.max_lazy_match&&q.lookahead>=H0){q.match_length--;do q.strstart++,q.ins_h=(q.ins_h<=H0)q.ins_h=(q.ins_h<4096))q.match_length=H0-1}if(q.prev_length>=H0&&q.match_length<=q.prev_length){Q=q.strstart+q.lookahead-H0,K=H2._tr_tally(q,q.strstart-1-q.prev_match,q.prev_length-H0),q.lookahead-=q.prev_length-1,q.prev_length-=2;do if(++q.strstart<=Q)q.ins_h=(q.ins_h<=H0&&q.strstart>0){if(Q=q.strstart-1,K=J[Q],K===J[++Q]&&K===J[++Q]&&K===J[++Q]){Y=q.strstart+R6;do;while(K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&K===J[++Q]&&Qq.lookahead)q.match_length=q.lookahead}}if(q.match_length>=H0)V=H2._tr_tally(q,1,q.match_length-H0),q.lookahead-=q.match_length,q.strstart+=q.match_length,q.match_length=0;else V=H2._tr_tally(q,0,q.window[q.strstart]),q.lookahead--,q.strstart++;if(V){if(x0(q,!1),q.strm.avail_out===0)return h0}}if(q.insert=0,X===w6){if(x0(q,!0),q.strm.avail_out===0)return o6;return m5}if(q.last_lit){if(x0(q,!1),q.strm.avail_out===0)return h0}return r8}function lY(q,X){var V;for(;;){if(q.lookahead===0){if(s6(q),q.lookahead===0){if(X===t6)return h0;break}}if(q.match_length=0,V=H2._tr_tally(q,0,q.window[q.strstart]),q.lookahead--,q.strstart++,V){if(x0(q,!1),q.strm.avail_out===0)return h0}}if(q.insert=0,X===w6){if(x0(q,!0),q.strm.avail_out===0)return o6;return m5}if(q.last_lit){if(x0(q,!1),q.strm.avail_out===0)return h0}return r8}function x2(q,X,V,K,Q){this.good_length=q,this.max_lazy=X,this.nice_length=V,this.max_chain=K,this.func=Q}var b5;b5=[new x2(0,0,0,0,mY),new x2(4,4,8,4,P4),new x2(4,5,16,8,P4),new x2(4,6,32,32,P4),new x2(4,4,16,16,x5),new x2(8,16,32,32,x5),new x2(8,16,128,128,x5),new x2(8,32,128,256,x5),new x2(32,128,258,1024,x5),new x2(32,258,258,4096,x5)];function _Y(q){q.window_size=2*q.w_size,v6(q.head),q.max_lazy_match=b5[q.level].max_lazy,q.good_match=b5[q.level].good_length,q.nice_match=b5[q.level].nice_length,q.max_chain_length=b5[q.level].max_chain,q.strstart=0,q.block_start=0,q.lookahead=0,q.insert=0,q.match_length=q.prev_length=H0-1,q.match_available=0,q.ins_h=0}function cY(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=c1,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i0.Buf16(DY*2),this.dyn_dtree=new i0.Buf16((2*FY+1)*2),this.bl_tree=new i0.Buf16((2*PY+1)*2),v6(this.dyn_ltree),v6(this.dyn_dtree),v6(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i0.Buf16(uY+1),this.heap=new i0.Buf16(2*D4+1),v6(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i0.Buf16(2*D4+1),v6(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function vV(q){var X;if(!q||!q.state)return O6(q,U2);if(q.total_in=q.total_out=0,q.data_type=NY,X=q.state,X.pending=0,X.pending_out=0,X.wrap<0)X.wrap=-X.wrap;return X.status=X.wrap?p1:a6,q.adler=X.wrap===2?0:1,X.last_flush=t6,H2._tr_init(X),b2}function RV(q){var X=vV(q);if(X===b2)_Y(q.state);return X}function pY(q,X){if(!q||!q.state)return U2;if(q.state.wrap!==2)return U2;return q.state.gzhead=X,b2}function OV(q,X,V,K,Q,Y){if(!q)return U2;var J=1;if(X===vY)X=6;if(K<0)J=0,K=-K;else if(K>15)J=2,K-=16;if(Q<1||Q>SY||V!==c1||K<8||K>15||X<0||X>9||Y<0||Y>wY)return O6(q,U2);if(K===8)K=9;var G=new cY;return q.state=G,G.strm=q,G.wrap=J,G.gzhead=null,G.w_bits=K,G.w_size=1<EV||X<0)return q?O6(q,U2):U2;if(K=q.state,!q.output||!q.input&&q.avail_in!==0||K.status===n8&&X!==w6)return O6(q,q.avail_out===0?F4:U2);if(K.strm=q,V=K.last_flush,K.last_flush=X,K.status===p1)if(K.wrap===2)if(q.adler=0,U0(K,31),U0(K,139),U0(K,8),!K.gzhead)U0(K,0),U0(K,0),U0(K,0),U0(K,0),U0(K,0),U0(K,K.level===9?2:K.strategy>=m1||K.level<2?4:0),U0(K,xY),K.status=a6;else{if(U0(K,(K.gzhead.text?1:0)+(K.gzhead.hcrc?2:0)+(!K.gzhead.extra?0:4)+(!K.gzhead.name?0:8)+(!K.gzhead.comment?0:16)),U0(K,K.gzhead.time&255),U0(K,K.gzhead.time>>8&255),U0(K,K.gzhead.time>>16&255),U0(K,K.gzhead.time>>24&255),U0(K,K.level===9?2:K.strategy>=m1||K.level<2?4:0),U0(K,K.gzhead.os&255),K.gzhead.extra&&K.gzhead.extra.length)U0(K,K.gzhead.extra.length&255),U0(K,K.gzhead.extra.length>>8&255);if(K.gzhead.hcrc)q.adler=B6(q.adler,K.pending_buf,K.pending,0);K.gzindex=0,K.status=u4}else{var J=c1+(K.w_bits-8<<4)<<8,G=-1;if(K.strategy>=m1||K.level<2)G=0;else if(K.level<6)G=1;else if(K.level===6)G=2;else G=3;if(J|=G<<6,K.strstart!==0)J|=gY;if(J+=31-J%31,K.status=a6,d8(K,J),K.strstart!==0)d8(K,q.adler>>>16),d8(K,q.adler&65535);q.adler=1}if(K.status===u4)if(K.gzhead.extra){Q=K.pending;while(K.gzindex<(K.gzhead.extra.length&65535)){if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(T6(q),Q=K.pending,K.pending===K.pending_buf_size)break}U0(K,K.gzhead.extra[K.gzindex]&255),K.gzindex++}if(K.gzhead.hcrc&&K.pending>Q)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(K.gzindex===K.gzhead.extra.length)K.gzindex=0,K.status=f1}else K.status=f1;if(K.status===f1)if(K.gzhead.name){Q=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(T6(q),Q=K.pending,K.pending===K.pending_buf_size){Y=1;break}}if(K.gzindexQ)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(Y===0)K.gzindex=0,K.status=l1}else K.status=l1;if(K.status===l1)if(K.gzhead.comment){Q=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>Q)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(T6(q),Q=K.pending,K.pending===K.pending_buf_size){Y=1;break}}if(K.gzindexQ)q.adler=B6(q.adler,K.pending_buf,K.pending-Q,Q);if(Y===0)K.status=_1}else K.status=_1;if(K.status===_1)if(K.gzhead.hcrc){if(K.pending+2>K.pending_buf_size)T6(q);if(K.pending+2<=K.pending_buf_size)U0(K,q.adler&255),U0(K,q.adler>>8&255),q.adler=0,K.status=a6}else K.status=a6;if(K.pending!==0){if(T6(q),q.avail_out===0)return K.last_flush=-1,b2}else if(q.avail_in===0&&LV(X)<=LV(V)&&X!==w6)return O6(q,F4);if(K.status===n8&&q.avail_in!==0)return O6(q,F4);if(q.avail_in!==0||K.lookahead!==0||X!==t6&&K.status!==n8){var W=K.strategy===m1?lY(K,X):K.strategy===OY?fY(K,X):b5[K.level].func(K,X);if(W===o6||W===m5)K.status=n8;if(W===h0||W===o6){if(q.avail_out===0)K.last_flush=-1;return b2}if(W===r8){if(X===LY)H2._tr_align(K);else if(X!==EV){if(H2._tr_stored_block(K,0,0,!1),X===BY){if(v6(K.head),K.lookahead===0)K.strstart=0,K.block_start=0,K.insert=0}}if(T6(q),q.avail_out===0)return K.last_flush=-1,b2}}if(X!==w6)return b2;if(K.wrap<=0)return jV;if(K.wrap===2)U0(K,q.adler&255),U0(K,q.adler>>8&255),U0(K,q.adler>>16&255),U0(K,q.adler>>24&255),U0(K,q.total_in&255),U0(K,q.total_in>>8&255),U0(K,q.total_in>>16&255),U0(K,q.total_in>>24&255);else d8(K,q.adler>>>16),d8(K,q.adler&65535);if(T6(q),K.wrap>0)K.wrap=-K.wrap;return K.pending!==0?b2:jV}function rY(q){var X;if(!q||!q.state)return U2;if(X=q.state.status,X!==p1&&X!==u4&&X!==f1&&X!==l1&&X!==_1&&X!==a6&&X!==n8)return O6(q,U2);return q.state=null,X===a6?O6(q,TY):b2}function iY(q,X){var V=X.length,K,Q,Y,J,G,W,Z,H;if(!q||!q.state)return U2;if(K=q.state,J=K.wrap,J===2||J===1&&K.status!==p1||K.lookahead)return U2;if(J===1)q.adler=BV(q.adler,X,V,0);if(K.wrap=0,V>=K.w_size){if(J===0)v6(K.head),K.strstart=0,K.block_start=0,K.insert=0;H=new i0.Buf8(K.w_size),i0.arraySet(H,X,V-K.w_size,K.w_size,0),X=H,V=K.w_size}G=q.avail_in,W=q.next_in,Z=q.input,q.avail_in=V,q.next_in=0,q.input=X,s6(K);while(K.lookahead>=H0){Q=K.strstart,Y=K.lookahead-(H0-1);do K.ins_h=(K.ins_h<{var d1=t2(),AV=!0,NV=!0;try{String.fromCharCode.apply(null,[0])}catch(q){AV=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(q){NV=!1}var i8=new d1.Buf8(256);for(f2=0;f2<256;f2++)i8[f2]=f2>=252?6:f2>=248?5:f2>=240?4:f2>=224?3:f2>=192?2:1;var f2;i8[254]=i8[254]=1;f5.string2buf=function(q){var X,V,K,Q,Y,J=q.length,G=0;for(Q=0;Q>>6,X[Y++]=128|V&63;else if(V<65536)X[Y++]=224|V>>>12,X[Y++]=128|V>>>6&63,X[Y++]=128|V&63;else X[Y++]=240|V>>>18,X[Y++]=128|V>>>12&63,X[Y++]=128|V>>>6&63,X[Y++]=128|V&63}return X};function SV(q,X){if(X<65534){if(q.subarray&&NV||!q.subarray&&AV)return String.fromCharCode.apply(null,d1.shrinkBuf(q,X))}var V="";for(var K=0;K4){G[K++]=65533,V+=Y-1;continue}Q&=Y===2?31:Y===3?15:7;while(Y>1&&V1){G[K++]=65533;continue}if(Q<65536)G[K++]=Q;else Q-=65536,G[K++]=55296|Q>>10&1023,G[K++]=56320|Q&1023}return SV(G,K)};f5.utf8border=function(q,X){var V;if(X=X||q.length,X>q.length)X=q.length;V=X-1;while(V>=0&&(q[V]&192)===128)V--;if(V<0)return X;if(V===0)return X;return V+i8[q[V]]>X?V:X}});var x4=g0((KW,yV)=>{function aY(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}yV.exports=aY});var FV=g0((s8)=>{var a8=wV(),o8=t2(),m4=g4(),f4=b1(),oY=x4(),hV=Object.prototype.toString,sY=0,b4=4,l5=0,$V=1,CV=2,tY=-1,eY=0,qJ=8;function e6(q){if(!(this instanceof e6))return new e6(q);this.options=o8.assign({level:tY,method:qJ,chunkSize:16384,windowBits:15,memLevel:8,strategy:eY,to:""},q||{});var X=this.options;if(X.raw&&X.windowBits>0)X.windowBits=-X.windowBits;else if(X.gzip&&X.windowBits>0&&X.windowBits<16)X.windowBits+=16;this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new oY,this.strm.avail_out=0;var V=a8.deflateInit2(this.strm,X.level,X.method,X.windowBits,X.memLevel,X.strategy);if(V!==l5)throw Error(f4[V]);if(X.header)a8.deflateSetHeader(this.strm,X.header);if(X.dictionary){var K;if(typeof X.dictionary==="string")K=m4.string2buf(X.dictionary);else if(hV.call(X.dictionary)==="[object ArrayBuffer]")K=new Uint8Array(X.dictionary);else K=X.dictionary;if(V=a8.deflateSetDictionary(this.strm,K),V!==l5)throw Error(f4[V]);this._dict_set=!0}}e6.prototype.push=function(q,X){var V=this.strm,K=this.options.chunkSize,Q,Y;if(this.ended)return!1;if(Y=X===~~X?X:X===!0?b4:sY,typeof q==="string")V.input=m4.string2buf(q);else if(hV.call(q)==="[object ArrayBuffer]")V.input=new Uint8Array(q);else V.input=q;V.next_in=0,V.avail_in=V.input.length;do{if(V.avail_out===0)V.output=new o8.Buf8(K),V.next_out=0,V.avail_out=K;if(Q=a8.deflate(V,Y),Q!==$V&&Q!==l5)return this.onEnd(Q),this.ended=!0,!1;if(V.avail_out===0||V.avail_in===0&&(Y===b4||Y===CV))if(this.options.to==="string")this.onData(m4.buf2binstring(o8.shrinkBuf(V.output,V.next_out)));else this.onData(o8.shrinkBuf(V.output,V.next_out))}while((V.avail_in>0||V.avail_out===0)&&Q!==$V);if(Y===b4)return Q=a8.deflateEnd(this.strm),this.onEnd(Q),this.ended=!0,Q===l5;if(Y===CV)return this.onEnd(l5),V.avail_out=0,!0;return!0};e6.prototype.onData=function(q){this.chunks.push(q)};e6.prototype.onEnd=function(q){if(q===l5)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=o8.flattenChunks(this.chunks);this.chunks=[],this.err=q,this.msg=this.strm.msg};function l4(q,X){var V=new e6(X);if(V.push(q,!0),V.err)throw V.msg||f4[V.err];return V.result}function XJ(q,X){return X=X||{},X.raw=!0,l4(q,X)}function VJ(q,X){return X=X||{},X.gzip=!0,l4(q,X)}s8.Deflate=e6;s8.deflate=l4;s8.deflateRaw=XJ;s8.gzip=VJ});var DV=g0((YW,PV)=>{var n1=30,KJ=12;PV.exports=function(X,V){var K,Q,Y,J,G,W,Z,H,U,z,k,M,j,B,L,O,N,R,v,w,$,S,h,b,C;K=X.state,Q=X.next_in,b=X.input,Y=Q+(X.avail_in-5),J=X.next_out,C=X.output,G=J-(V-X.avail_out),W=J+(X.avail_out-257),Z=K.dmax,H=K.wsize,U=K.whave,z=K.wnext,k=K.window,M=K.hold,j=K.bits,B=K.lencode,L=K.distcode,O=(1<>>24,M>>>=v,j-=v,v=R>>>16&255,v===0)C[J++]=R&65535;else if(v&16){if(w=R&65535,v&=15,v){if(j>>=v,j-=v}if(j<15)M+=b[Q++]<>>24,M>>>=v,j-=v,v=R>>>16&255,v&16){if($=R&65535,v&=15,jZ){X.msg="invalid distance too far back",K.mode=n1;break q}if(M>>>=v,j-=v,v=J-G,$>v){if(v=$-v,v>U){if(K.sane){X.msg="invalid distance too far back",K.mode=n1;break q}}if(S=0,h=k,z===0){if(S+=H-v,v2)C[J++]=h[S++],C[J++]=h[S++],C[J++]=h[S++],w-=3;if(w){if(C[J++]=h[S++],w>1)C[J++]=h[S++]}}else{S=J-$;do C[J++]=C[S++],C[J++]=C[S++],C[J++]=C[S++],w-=3;while(w>2);if(w){if(C[J++]=C[S++],w>1)C[J++]=C[S++]}}}else if((v&64)===0){R=L[(R&65535)+(M&(1<>3,Q-=w,j-=w<<3,M&=(1<{var uV=t2(),_5=15,gV=852,xV=592,bV=0,_4=1,mV=2,QJ=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],YJ=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],JJ=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],GJ=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];fV.exports=function(X,V,K,Q,Y,J,G,W){var Z=W.bits,H=0,U=0,z=0,k=0,M=0,j=0,B=0,L=0,O=0,N=0,R,v,w,$,S,h=null,b=0,C,D=new uV.Buf16(_5+1),l=new uV.Buf16(_5+1),u=null,q0=0,J0,r,I0;for(H=0;H<=_5;H++)D[H]=0;for(U=0;U=1;k--)if(D[k]!==0)break;if(M>k)M=k;if(k===0)return Y[J++]=20971520,Y[J++]=20971520,W.bits=1,0;for(z=1;z0&&(X===bV||k!==1))return-1;l[1]=0;for(H=1;H<_5;H++)l[H+1]=l[H]+D[H];for(U=0;UgV||X===mV&&O>xV)return 1;for(;;){if(J0=H-B,G[U]C)r=u[q0+G[U]],I0=h[b+G[U]];else r=96,I0=0;R=1<>B)+v]=J0<<24|r<<16|I0|0;while(v!==0);R=1<>=1;if(R!==0)N&=R-1,N+=R;else N=0;if(U++,--D[H]===0){if(H===k)break;H=V[K+G[U]]}if(H>M&&(N&$)!==w){if(B===0)B=M;S+=z,j=H-B,L=1<gV||X===mV&&O>xV)return 1;w=N&$,Y[w]=M<<24|j<<16|S-J|0}}if(N!==0)Y[S+N]=H-B<<24|4194304|0;return W.bits=M,0}});var R9=g0((w2)=>{var Q2=t2(),i4=C4(),l2=h4(),ZJ=DV(),t8=lV(),WJ=0,M9=1,k9=2,_V=4,HJ=5,r1=6,q5=0,UJ=1,zJ=2,z2=-2,I9=-3,a4=-4,MJ=-5,cV=8,E9=1,pV=2,dV=3,nV=4,rV=5,iV=6,aV=7,oV=8,sV=9,tV=10,o1=11,q6=12,c4=13,eV=14,p4=15,q9=16,X9=17,V9=18,K9=19,i1=20,a1=21,Q9=22,Y9=23,J9=24,G9=25,Z9=26,d4=27,W9=28,H9=29,L0=30,o4=31,kJ=32,IJ=852,EJ=592,jJ=15,LJ=jJ;function U9(q){return(q>>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function BJ(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Q2.Buf16(320),this.work=new Q2.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function j9(q){var X;if(!q||!q.state)return z2;if(X=q.state,q.total_in=q.total_out=X.total=0,q.msg="",X.wrap)q.adler=X.wrap&1;return X.mode=E9,X.last=0,X.havedict=0,X.dmax=32768,X.head=null,X.hold=0,X.bits=0,X.lencode=X.lendyn=new Q2.Buf32(IJ),X.distcode=X.distdyn=new Q2.Buf32(EJ),X.sane=1,X.back=-1,q5}function L9(q){var X;if(!q||!q.state)return z2;return X=q.state,X.wsize=0,X.whave=0,X.wnext=0,j9(q)}function B9(q,X){var V,K;if(!q||!q.state)return z2;if(K=q.state,X<0)V=0,X=-X;else if(V=(X>>4)+1,X<48)X&=15;if(X&&(X<8||X>15))return z2;if(K.window!==null&&K.wbits!==X)K.window=null;return K.wrap=V,K.wbits=X,L9(q)}function T9(q,X){var V,K;if(!q)return z2;if(K=new BJ,q.state=K,K.window=null,V=B9(q,X),V!==q5)q.state=null;return V}function TJ(q){return T9(q,LJ)}var z9=!0,n4,r4;function vJ(q){if(z9){var X;n4=new Q2.Buf32(512),r4=new Q2.Buf32(32),X=0;while(X<144)q.lens[X++]=8;while(X<256)q.lens[X++]=9;while(X<280)q.lens[X++]=7;while(X<288)q.lens[X++]=8;t8(M9,q.lens,0,288,n4,0,q.work,{bits:9}),X=0;while(X<32)q.lens[X++]=5;t8(k9,q.lens,0,32,r4,0,q.work,{bits:5}),z9=!1}q.lencode=n4,q.lenbits=9,q.distcode=r4,q.distbits=5}function v9(q,X,V,K){var Q,Y=q.state;if(Y.window===null)Y.wsize=1<=Y.wsize)Q2.arraySet(Y.window,X,V-Y.wsize,Y.wsize,0),Y.wnext=0,Y.whave=Y.wsize;else{if(Q=Y.wsize-Y.wnext,Q>K)Q=K;if(Q2.arraySet(Y.window,X,V-K,Q,Y.wnext),K-=Q,K)Q2.arraySet(Y.window,X,V-K,K,0),Y.wnext=K,Y.whave=Y.wsize;else{if(Y.wnext+=Q,Y.wnext===Y.wsize)Y.wnext=0;if(Y.whave>>8&255,V.check=l2(V.check,h,2,0),Z=0,H=0,V.mode=pV;break}if(V.flags=0,V.head)V.head.done=!1;if(!(V.wrap&1)||(((Z&255)<<8)+(Z>>8))%31){q.msg="incorrect header check",V.mode=L0;break}if((Z&15)!==cV){q.msg="unknown compression method",V.mode=L0;break}if(Z>>>=4,H-=4,$=(Z&15)+8,V.wbits===0)V.wbits=$;else if($>V.wbits){q.msg="invalid window size",V.mode=L0;break}V.dmax=1<<$,q.adler=V.check=1,V.mode=Z&512?tV:q6,Z=0,H=0;break;case pV:while(H<16){if(G===0)break q;G--,Z+=K[Y++]<>8&1;if(V.flags&512)h[0]=Z&255,h[1]=Z>>>8&255,V.check=l2(V.check,h,2,0);Z=0,H=0,V.mode=dV;case dV:while(H<32){if(G===0)break q;G--,Z+=K[Y++]<>>8&255,h[2]=Z>>>16&255,h[3]=Z>>>24&255,V.check=l2(V.check,h,4,0);Z=0,H=0,V.mode=nV;case nV:while(H<16){if(G===0)break q;G--,Z+=K[Y++]<>8;if(V.flags&512)h[0]=Z&255,h[1]=Z>>>8&255,V.check=l2(V.check,h,2,0);Z=0,H=0,V.mode=rV;case rV:if(V.flags&1024){while(H<16){if(G===0)break q;G--,Z+=K[Y++]<>>8&255,V.check=l2(V.check,h,2,0);Z=0,H=0}else if(V.head)V.head.extra=null;V.mode=iV;case iV:if(V.flags&1024){if(k=V.length,k>G)k=G;if(k){if(V.head){if($=V.head.extra_len-V.length,!V.head.extra)V.head.extra=Array(V.head.extra_len);Q2.arraySet(V.head.extra,K,Y,k,$)}if(V.flags&512)V.check=l2(V.check,K,k,Y);G-=k,Y+=k,V.length-=k}if(V.length)break q}V.length=0,V.mode=aV;case aV:if(V.flags&2048){if(G===0)break q;k=0;do if($=K[Y+k++],V.head&&$&&V.length<65536)V.head.name+=String.fromCharCode($);while($&&k>9&1,V.head.done=!0;q.adler=V.check=0,V.mode=q6;break;case tV:while(H<32){if(G===0)break q;G--,Z+=K[Y++]<>>=H&7,H-=H&7,V.mode=d4;break}while(H<3){if(G===0)break q;G--,Z+=K[Y++]<>>=1,H-=1,Z&3){case 0:V.mode=eV;break;case 1:if(vJ(V),V.mode=i1,X===r1){Z>>>=2,H-=2;break q}break;case 2:V.mode=X9;break;case 3:q.msg="invalid block type",V.mode=L0}Z>>>=2,H-=2;break;case eV:Z>>>=H&7,H-=H&7;while(H<32){if(G===0)break q;G--,Z+=K[Y++]<>>16^65535)){q.msg="invalid stored block lengths",V.mode=L0;break}if(V.length=Z&65535,Z=0,H=0,V.mode=p4,X===r1)break q;case p4:V.mode=q9;case q9:if(k=V.length,k){if(k>G)k=G;if(k>W)k=W;if(k===0)break q;Q2.arraySet(Q,K,Y,k,J),G-=k,Y+=k,W-=k,J+=k,V.length-=k;break}V.mode=q6;break;case X9:while(H<14){if(G===0)break q;G--,Z+=K[Y++]<>>=5,H-=5,V.ndist=(Z&31)+1,Z>>>=5,H-=5,V.ncode=(Z&15)+4,Z>>>=4,H-=4,V.nlen>286||V.ndist>30){q.msg="too many length or distance symbols",V.mode=L0;break}V.have=0,V.mode=V9;case V9:while(V.have>>=3,H-=3}while(V.have<19)V.lens[D[V.have++]]=0;if(V.lencode=V.lendyn,V.lenbits=7,b={bits:V.lenbits},S=t8(WJ,V.lens,0,19,V.lencode,0,V.work,b),V.lenbits=b.bits,S){q.msg="invalid code lengths set",V.mode=L0;break}V.have=0,V.mode=K9;case K9:while(V.have>>24,O=B>>>16&255,N=B&65535,L<=H)break;if(G===0)break q;G--,Z+=K[Y++]<>>=L,H-=L,V.lens[V.have++]=N;else{if(N===16){C=L+2;while(H>>=L,H-=L,V.have===0){q.msg="invalid bit length repeat",V.mode=L0;break}$=V.lens[V.have-1],k=3+(Z&3),Z>>>=2,H-=2}else if(N===17){C=L+3;while(H>>=L,H-=L,$=0,k=3+(Z&7),Z>>>=3,H-=3}else{C=L+7;while(H>>=L,H-=L,$=0,k=11+(Z&127),Z>>>=7,H-=7}if(V.have+k>V.nlen+V.ndist){q.msg="invalid bit length repeat",V.mode=L0;break}while(k--)V.lens[V.have++]=$}}if(V.mode===L0)break;if(V.lens[256]===0){q.msg="invalid code -- missing end-of-block",V.mode=L0;break}if(V.lenbits=9,b={bits:V.lenbits},S=t8(M9,V.lens,0,V.nlen,V.lencode,0,V.work,b),V.lenbits=b.bits,S){q.msg="invalid literal/lengths set",V.mode=L0;break}if(V.distbits=6,V.distcode=V.distdyn,b={bits:V.distbits},S=t8(k9,V.lens,V.nlen,V.ndist,V.distcode,0,V.work,b),V.distbits=b.bits,S){q.msg="invalid distances set",V.mode=L0;break}if(V.mode=i1,X===r1)break q;case i1:V.mode=a1;case a1:if(G>=6&&W>=258){if(q.next_out=J,q.avail_out=W,q.next_in=Y,q.avail_in=G,V.hold=Z,V.bits=H,ZJ(q,z),J=q.next_out,Q=q.output,W=q.avail_out,Y=q.next_in,K=q.input,G=q.avail_in,Z=V.hold,H=V.bits,V.mode===q6)V.back=-1;break}V.back=0;for(;;){if(B=V.lencode[Z&(1<>>24,O=B>>>16&255,N=B&65535,L<=H)break;if(G===0)break q;G--,Z+=K[Y++]<>R)],L=B>>>24,O=B>>>16&255,N=B&65535,R+L<=H)break;if(G===0)break q;G--,Z+=K[Y++]<>>=R,H-=R,V.back+=R}if(Z>>>=L,H-=L,V.back+=L,V.length=N,O===0){V.mode=Z9;break}if(O&32){V.back=-1,V.mode=q6;break}if(O&64){q.msg="invalid literal/length code",V.mode=L0;break}V.extra=O&15,V.mode=Q9;case Q9:if(V.extra){C=V.extra;while(H>>=V.extra,H-=V.extra,V.back+=V.extra}V.was=V.length,V.mode=Y9;case Y9:for(;;){if(B=V.distcode[Z&(1<>>24,O=B>>>16&255,N=B&65535,L<=H)break;if(G===0)break q;G--,Z+=K[Y++]<>R)],L=B>>>24,O=B>>>16&255,N=B&65535,R+L<=H)break;if(G===0)break q;G--,Z+=K[Y++]<>>=R,H-=R,V.back+=R}if(Z>>>=L,H-=L,V.back+=L,O&64){q.msg="invalid distance code",V.mode=L0;break}V.offset=N,V.extra=O&15,V.mode=J9;case J9:if(V.extra){C=V.extra;while(H>>=V.extra,H-=V.extra,V.back+=V.extra}if(V.offset>V.dmax){q.msg="invalid distance too far back",V.mode=L0;break}V.mode=G9;case G9:if(W===0)break q;if(k=z-W,V.offset>k){if(k=V.offset-k,k>V.whave){if(V.sane){q.msg="invalid distance too far back",V.mode=L0;break}}if(k>V.wnext)k-=V.wnext,M=V.wsize-k;else M=V.wnext-k;if(k>V.length)k=V.length;j=V.window}else j=Q,M=J-V.offset,k=V.length;if(k>W)k=W;W-=k,V.length-=k;do Q[J++]=j[M++];while(--k);if(V.length===0)V.mode=a1;break;case Z9:if(W===0)break q;Q[J++]=V.length,W--,V.mode=a1;break;case d4:if(V.wrap){while(H<32){if(G===0)break q;G--,Z|=K[Y++]<{O9.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var A9=g0((WW,w9)=>{function NJ(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}w9.exports=NJ});var S9=g0((q1)=>{var c5=R9(),e8=t2(),s1=g4(),N0=s4(),t4=b1(),SJ=x4(),yJ=A9(),N9=Object.prototype.toString;function X5(q){if(!(this instanceof X5))return new X5(q);this.options=e8.assign({chunkSize:16384,windowBits:0,to:""},q||{});var X=this.options;if(X.raw&&X.windowBits>=0&&X.windowBits<16){if(X.windowBits=-X.windowBits,X.windowBits===0)X.windowBits=-15}if(X.windowBits>=0&&X.windowBits<16&&!(q&&q.windowBits))X.windowBits+=32;if(X.windowBits>15&&X.windowBits<48){if((X.windowBits&15)===0)X.windowBits|=15}this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new SJ,this.strm.avail_out=0;var V=c5.inflateInit2(this.strm,X.windowBits);if(V!==N0.Z_OK)throw Error(t4[V]);if(this.header=new yJ,c5.inflateGetHeader(this.strm,this.header),X.dictionary){if(typeof X.dictionary==="string")X.dictionary=s1.string2buf(X.dictionary);else if(N9.call(X.dictionary)==="[object ArrayBuffer]")X.dictionary=new Uint8Array(X.dictionary);if(X.raw){if(V=c5.inflateSetDictionary(this.strm,X.dictionary),V!==N0.Z_OK)throw Error(t4[V])}}}X5.prototype.push=function(q,X){var V=this.strm,K=this.options.chunkSize,Q=this.options.dictionary,Y,J,G,W,Z,H=!1;if(this.ended)return!1;if(J=X===~~X?X:X===!0?N0.Z_FINISH:N0.Z_NO_FLUSH,typeof q==="string")V.input=s1.binstring2buf(q);else if(N9.call(q)==="[object ArrayBuffer]")V.input=new Uint8Array(q);else V.input=q;V.next_in=0,V.avail_in=V.input.length;do{if(V.avail_out===0)V.output=new e8.Buf8(K),V.next_out=0,V.avail_out=K;if(Y=c5.inflate(V,N0.Z_NO_FLUSH),Y===N0.Z_NEED_DICT&&Q)Y=c5.inflateSetDictionary(this.strm,Q);if(Y===N0.Z_BUF_ERROR&&H===!0)Y=N0.Z_OK,H=!1;if(Y!==N0.Z_STREAM_END&&Y!==N0.Z_OK)return this.onEnd(Y),this.ended=!0,!1;if(V.next_out){if(V.avail_out===0||Y===N0.Z_STREAM_END||V.avail_in===0&&(J===N0.Z_FINISH||J===N0.Z_SYNC_FLUSH))if(this.options.to==="string"){if(G=s1.utf8border(V.output,V.next_out),W=V.next_out-G,Z=s1.buf2string(V.output,G),V.next_out=W,V.avail_out=K-W,W)e8.arraySet(V.output,V.output,G,W,0);this.onData(Z)}else this.onData(e8.shrinkBuf(V.output,V.next_out))}if(V.avail_in===0&&V.avail_out===0)H=!0}while((V.avail_in>0||V.avail_out===0)&&Y!==N0.Z_STREAM_END);if(Y===N0.Z_STREAM_END)J=N0.Z_FINISH;if(J===N0.Z_FINISH)return Y=c5.inflateEnd(this.strm),this.onEnd(Y),this.ended=!0,Y===N0.Z_OK;if(J===N0.Z_SYNC_FLUSH)return this.onEnd(N0.Z_OK),V.avail_out=0,!0;return!0};X5.prototype.onData=function(q){this.chunks.push(q)};X5.prototype.onEnd=function(q){if(q===N0.Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=e8.flattenChunks(this.chunks);this.chunks=[],this.err=q,this.msg=this.strm.msg};function e4(q,X){var V=new X5(X);if(V.push(q,!0),V.err)throw V.msg||t4[V.err];return V.result}function $J(q,X){return X=X||{},X.raw=!0,e4(q,X)}q1.Inflate=X5;q1.inflate=e4;q1.inflateRaw=$J;q1.ungzip=e4});var X1=g0((UW,$9)=>{var CJ=t2().assign,hJ=FV(),FJ=S9(),PJ=s4(),y9={};CJ(y9,hJ,FJ,PJ);$9.exports=y9});var zX=globalThis;if(typeof zX.global>"u")zX.global=globalThis;var C2=[],W2=[],lq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(c6=0,MX=lq.length;c60)throw Error("Invalid string. Length must be a multiple of 4");var V=q.indexOf("=");if(V===-1)V=X;var K=V===X?0:4-V%4;return[V,K]}function VQ(q,X){return(q+X)*3/4-X}function KQ(q){var X,V=XQ(q),K=V[0],Q=V[1],Y=new Uint8Array(VQ(K,Q)),J=0,G=Q>0?K-4:K,W;for(W=0;W>16&255,Y[J++]=X>>8&255,Y[J++]=X&255;if(Q===2)X=W2[q.charCodeAt(W)]<<2|W2[q.charCodeAt(W+1)]>>4,Y[J++]=X&255;if(Q===1)X=W2[q.charCodeAt(W)]<<10|W2[q.charCodeAt(W+1)]<<4|W2[q.charCodeAt(W+2)]>>2,Y[J++]=X>>8&255,Y[J++]=X&255;return Y}function QQ(q){return C2[q>>18&63]+C2[q>>12&63]+C2[q>>6&63]+C2[q&63]}function YQ(q,X,V){var K,Q=[];for(var Y=X;YG?G:J+Y));if(K===1)X=q[V-1],Q.push(C2[X>>2]+C2[X<<4&63]+"==");else if(K===2)X=(q[V-2]<<8)+q[V-1],Q.push(C2[X>>10]+C2[X>>4&63]+C2[X<<2&63]+"=");return Q.join("")}function $1(q,X,V,K,Q){var Y,J,G=Q*8-K-1,W=(1<>1,H=-7,U=V?Q-1:0,z=V?-1:1,k=q[X+U];U+=z,Y=k&(1<<-H)-1,k>>=-H,H+=G;for(;H>0;Y=Y*256+q[X+U],U+=z,H-=8);J=Y&(1<<-H)-1,Y>>=-H,H+=K;for(;H>0;J=J*256+q[X+U],U+=z,H-=8);if(Y===0)Y=1-Z;else if(Y===W)return J?NaN:(k?-1:1)*(1/0);else J=J+Math.pow(2,K),Y=Y-Z;return(k?-1:1)*J*Math.pow(2,Y-K)}function BX(q,X,V,K,Q,Y){var J,G,W,Z=Y*8-Q-1,H=(1<>1,z=Q===23?Math.pow(2,-24)-Math.pow(2,-77):0,k=K?0:Y-1,M=K?1:-1,j=X<0||X===0&&1/X<0?1:0;if(X=Math.abs(X),isNaN(X)||X===1/0)G=isNaN(X)?1:0,J=H;else{if(J=Math.floor(Math.log(X)/Math.LN2),X*(W=Math.pow(2,-J))<1)J--,W*=2;if(J+U>=1)X+=z/W;else X+=z*Math.pow(2,1-U);if(X*W>=2)J++,W/=2;if(J+U>=H)G=0,J=H;else if(J+U>=1)G=(X*W-1)*Math.pow(2,Q),J=J+U;else G=X*Math.pow(2,U-1)*Math.pow(2,Q),J=0}for(;Q>=8;q[V+k]=G&255,k+=M,G/=256,Q-=8);J=J<0;q[V+k]=J&255,k+=M,J/=256,Z-=8);q[V+k-M]|=j*128}var IX=typeof Symbol==="function"&&typeof Symbol.for==="function"?Symbol.for("nodejs.util.inspect.custom"):null,JQ=50,_q=2147483647;var{btoa:$3,atob:C3,File:h3,Blob:F3}=globalThis;function a2(q){if(q>_q)throw RangeError('The value "'+q+'" is invalid for option "size"');let X=new Uint8Array(q);return Object.setPrototypeOf(X,y.prototype),X}function rq(q,X,V){return class extends V{constructor(){super();Object.defineProperty(this,"message",{value:X.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${q}]`,this.stack,delete this.name}get code(){return q}set code(K){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:K,writable:!0})}toString(){return`${this.name} [${q}]: ${this.message}`}}}var GQ=rq("ERR_BUFFER_OUT_OF_BOUNDS",function(q){if(q)return`${q} is outside of buffer bounds`;return"Attempt to access memory outside buffer bounds"},RangeError),ZQ=rq("ERR_INVALID_ARG_TYPE",function(q,X){return`The "${q}" argument must be of type number. Received type ${typeof X}`},TypeError),cq=rq("ERR_OUT_OF_RANGE",function(q,X,V){let K=`The value of "${q}" is out of range.`,Q=V;if(Number.isInteger(V)&&Math.abs(V)>4294967296)Q=LX(String(V));else if(typeof V==="bigint"){if(Q=String(V),V>BigInt(2)**BigInt(32)||V<-(BigInt(2)**BigInt(32)))Q=LX(Q);Q+="n"}return K+=` It must be ${X}. Received ${Q}`,K},RangeError);function y(q,X,V){if(typeof q==="number"){if(typeof X==="string")throw TypeError('The "string" argument must be of type string. Received type number');return iq(q)}return TX(q,X,V)}Object.defineProperty(y.prototype,"parent",{enumerable:!0,get:function(){if(!y.isBuffer(this))return;return this.buffer}});Object.defineProperty(y.prototype,"offset",{enumerable:!0,get:function(){if(!y.isBuffer(this))return;return this.byteOffset}});y.poolSize=8192;function TX(q,X,V){if(typeof q==="string")return HQ(q,X);if(ArrayBuffer.isView(q))return UQ(q);if(q==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof q);if(h2(q,ArrayBuffer)||q&&h2(q.buffer,ArrayBuffer))return dq(q,X,V);if(typeof SharedArrayBuffer<"u"&&(h2(q,SharedArrayBuffer)||q&&h2(q.buffer,SharedArrayBuffer)))return dq(q,X,V);if(typeof q==="number")throw TypeError('The "value" argument must not be of type number. Received type number');let K=q.valueOf&&q.valueOf();if(K!=null&&K!==q)return y.from(K,X,V);let Q=zQ(q);if(Q)return Q;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof q[Symbol.toPrimitive]==="function")return y.from(q[Symbol.toPrimitive]("string"),X,V);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof q)}y.from=function(q,X,V){return TX(q,X,V)};Object.setPrototypeOf(y.prototype,Uint8Array.prototype);Object.setPrototypeOf(y,Uint8Array);function vX(q){if(typeof q!=="number")throw TypeError('"size" argument must be of type number');else if(q<0)throw RangeError('The value "'+q+'" is invalid for option "size"')}function WQ(q,X,V){if(vX(q),q<=0)return a2(q);if(X!==void 0)return typeof V==="string"?a2(q).fill(X,V):a2(q).fill(X);return a2(q)}y.alloc=function(q,X,V){return WQ(q,X,V)};function iq(q){return vX(q),a2(q<0?0:aq(q)|0)}y.allocUnsafe=function(q){return iq(q)};y.allocUnsafeSlow=function(q){return iq(q)};function HQ(q,X){if(typeof X!=="string"||X==="")X="utf8";if(!y.isEncoding(X))throw TypeError("Unknown encoding: "+X);let V=RX(q,X)|0,K=a2(V),Q=K.write(q,X);if(Q!==V)K=K.slice(0,Q);return K}function pq(q){let X=q.length<0?0:aq(q.length)|0,V=a2(X);for(let K=0;K=_q)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+_q.toString(16)+" bytes");return q|0}y.isBuffer=function(q){return q!=null&&q._isBuffer===!0&&q!==y.prototype};y.compare=function(q,X){if(h2(q,Uint8Array))q=y.from(q,q.offset,q.byteLength);if(h2(X,Uint8Array))X=y.from(X,X.offset,X.byteLength);if(!y.isBuffer(q)||!y.isBuffer(X))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(q===X)return 0;let V=q.length,K=X.length;for(let Q=0,Y=Math.min(V,K);QK.length){if(!y.isBuffer(Y))Y=y.from(Y);Y.copy(K,Q)}else Uint8Array.prototype.set.call(K,Y,Q);else if(!y.isBuffer(Y))throw TypeError('"list" argument must be an Array of Buffers');else Y.copy(K,Q);Q+=Y.length}return K};function RX(q,X){if(y.isBuffer(q))return q.length;if(ArrayBuffer.isView(q)||h2(q,ArrayBuffer))return q.byteLength;if(typeof q!=="string")throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof q);let V=q.length,K=arguments.length>2&&arguments[2]===!0;if(!K&&V===0)return 0;let Q=!1;for(;;)switch(X){case"ascii":case"latin1":case"binary":return V;case"utf8":case"utf-8":return nq(q).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return V*2;case"hex":return V>>>1;case"base64":return hX(q).length;default:if(Q)return K?-1:nq(q).length;X=(""+X).toLowerCase(),Q=!0}}y.byteLength=RX;function MQ(q,X,V){let K=!1;if(X===void 0||X<0)X=0;if(X>this.length)return"";if(V===void 0||V>this.length)V=this.length;if(V<=0)return"";if(V>>>=0,X>>>=0,V<=X)return"";if(!q)q="utf8";while(!0)switch(q){case"hex":return OQ(this,X,V);case"utf8":case"utf-8":return wX(this,X,V);case"ascii":return vQ(this,X,V);case"latin1":case"binary":return RQ(this,X,V);case"base64":return BQ(this,X,V);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wQ(this,X,V);default:if(K)throw TypeError("Unknown encoding: "+q);q=(q+"").toLowerCase(),K=!0}}y.prototype._isBuffer=!0;function p6(q,X,V){let K=q[X];q[X]=q[V],q[V]=K}y.prototype.swap16=function(){let q=this.length;if(q%2!==0)throw RangeError("Buffer size must be a multiple of 16-bits");for(let X=0;XX)q+=" ... ";return""};if(IX)y.prototype[IX]=y.prototype.inspect;y.prototype.compare=function(q,X,V,K,Q){if(h2(q,Uint8Array))q=y.from(q,q.offset,q.byteLength);if(!y.isBuffer(q))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof q);if(X===void 0)X=0;if(V===void 0)V=q?q.length:0;if(K===void 0)K=0;if(Q===void 0)Q=this.length;if(X<0||V>q.length||K<0||Q>this.length)throw RangeError("out of range index");if(K>=Q&&X>=V)return 0;if(K>=Q)return-1;if(X>=V)return 1;if(X>>>=0,V>>>=0,K>>>=0,Q>>>=0,this===q)return 0;let Y=Q-K,J=V-X,G=Math.min(Y,J),W=this.slice(K,Q),Z=q.slice(X,V);for(let H=0;H2147483647)V=2147483647;else if(V<-2147483648)V=-2147483648;if(V=+V,Number.isNaN(V))V=Q?0:q.length-1;if(V<0)V=q.length+V;if(V>=q.length)if(Q)return-1;else V=q.length-1;else if(V<0)if(Q)V=0;else return-1;if(typeof X==="string")X=y.from(X,K);if(y.isBuffer(X)){if(X.length===0)return-1;return EX(q,X,V,K,Q)}else if(typeof X==="number"){if(X=X&255,typeof Uint8Array.prototype.indexOf==="function")if(Q)return Uint8Array.prototype.indexOf.call(q,X,V);else return Uint8Array.prototype.lastIndexOf.call(q,X,V);return EX(q,[X],V,K,Q)}throw TypeError("val must be string, number or Buffer")}function EX(q,X,V,K,Q){let Y=1,J=q.length,G=X.length;if(K!==void 0){if(K=String(K).toLowerCase(),K==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le"){if(q.length<2||X.length<2)return-1;Y=2,J/=2,G/=2,V/=2}}function W(H,U){if(Y===1)return H[U];else return H.readUInt16BE(U*Y)}let Z;if(Q){let H=-1;for(Z=V;ZJ)V=J-G;for(Z=V;Z>=0;Z--){let H=!0;for(let U=0;UQ)K=Q;let Y=X.length;if(K>Y/2)K=Y/2;let J;for(J=0;J>>0,isFinite(V)){if(V=V>>>0,K===void 0)K="utf8"}else K=V,V=void 0;else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let Q=this.length-X;if(V===void 0||V>Q)V=Q;if(q.length>0&&(V<0||X<0)||X>this.length)throw RangeError("Attempt to write outside buffer bounds");if(!K)K="utf8";let Y=!1;for(;;)switch(K){case"hex":return kQ(this,q,X,V);case"utf8":case"utf-8":return IQ(this,q,X,V);case"ascii":case"latin1":case"binary":return EQ(this,q,X,V);case"base64":return jQ(this,q,X,V);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return LQ(this,q,X,V);default:if(Y)throw TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),Y=!0}};y.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function BQ(q,X,V){if(X===0&&V===q.length)return kX(q);else return kX(q.slice(X,V))}function wX(q,X,V){V=Math.min(q.length,V);let K=[],Q=X;while(Q239?4:Y>223?3:Y>191?2:1;if(Q+G<=V){let W,Z,H,U;switch(G){case 1:if(Y<128)J=Y;break;case 2:if(W=q[Q+1],(W&192)===128){if(U=(Y&31)<<6|W&63,U>127)J=U}break;case 3:if(W=q[Q+1],Z=q[Q+2],(W&192)===128&&(Z&192)===128){if(U=(Y&15)<<12|(W&63)<<6|Z&63,U>2047&&(U<55296||U>57343))J=U}break;case 4:if(W=q[Q+1],Z=q[Q+2],H=q[Q+3],(W&192)===128&&(Z&192)===128&&(H&192)===128){if(U=(Y&15)<<18|(W&63)<<12|(Z&63)<<6|H&63,U>65535&&U<1114112)J=U}}}if(J===null)J=65533,G=1;else if(J>65535)J-=65536,K.push(J>>>10&1023|55296),J=56320|J&1023;K.push(J),Q+=G}return TQ(K)}var jX=4096;function TQ(q){let X=q.length;if(X<=jX)return String.fromCharCode.apply(String,q);let V="",K=0;while(KK)V=K;let Q="";for(let Y=X;YV)q=V;if(X<0){if(X+=V,X<0)X=0}else if(X>V)X=V;if(XV)throw RangeError("Trying to access beyond buffer length")}y.prototype.readUintLE=y.prototype.readUIntLE=function(q,X,V){if(q=q>>>0,X=X>>>0,!V)D0(q,X,this.length);let K=this[q],Q=1,Y=0;while(++Y>>0,X=X>>>0,!V)D0(q,X,this.length);let K=this[q+--X],Q=1;while(X>0&&(Q*=256))K+=this[q+--X]*Q;return K};y.prototype.readUint8=y.prototype.readUInt8=function(q,X){if(q=q>>>0,!X)D0(q,1,this.length);return this[q]};y.prototype.readUint16LE=y.prototype.readUInt16LE=function(q,X){if(q=q>>>0,!X)D0(q,2,this.length);return this[q]|this[q+1]<<8};y.prototype.readUint16BE=y.prototype.readUInt16BE=function(q,X){if(q=q>>>0,!X)D0(q,2,this.length);return this[q]<<8|this[q+1]};y.prototype.readUint32LE=y.prototype.readUInt32LE=function(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return(this[q]|this[q+1]<<8|this[q+2]<<16)+this[q+3]*16777216};y.prototype.readUint32BE=y.prototype.readUInt32BE=function(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]*16777216+(this[q+1]<<16|this[q+2]<<8|this[q+3])};y.prototype.readBigUInt64LE=M6(function(q){q=q>>>0,y5(q,"offset");let X=this[q],V=this[q+7];if(X===void 0||V===void 0)C8(q,this.length-8);let K=X+this[++q]*256+this[++q]*65536+this[++q]*16777216,Q=this[++q]+this[++q]*256+this[++q]*65536+V*16777216;return BigInt(K)+(BigInt(Q)<>>0,y5(q,"offset");let X=this[q],V=this[q+7];if(X===void 0||V===void 0)C8(q,this.length-8);let K=X*16777216+this[++q]*65536+this[++q]*256+this[++q],Q=this[++q]*16777216+this[++q]*65536+this[++q]*256+V;return(BigInt(K)<>>0,X=X>>>0,!V)D0(q,X,this.length);let K=this[q],Q=1,Y=0;while(++Y=Q)K-=Math.pow(2,8*X);return K};y.prototype.readIntBE=function(q,X,V){if(q=q>>>0,X=X>>>0,!V)D0(q,X,this.length);let K=X,Q=1,Y=this[q+--K];while(K>0&&(Q*=256))Y+=this[q+--K]*Q;if(Q*=128,Y>=Q)Y-=Math.pow(2,8*X);return Y};y.prototype.readInt8=function(q,X){if(q=q>>>0,!X)D0(q,1,this.length);if(!(this[q]&128))return this[q];return(255-this[q]+1)*-1};y.prototype.readInt16LE=function(q,X){if(q=q>>>0,!X)D0(q,2,this.length);let V=this[q]|this[q+1]<<8;return V&32768?V|4294901760:V};y.prototype.readInt16BE=function(q,X){if(q=q>>>0,!X)D0(q,2,this.length);let V=this[q+1]|this[q]<<8;return V&32768?V|4294901760:V};y.prototype.readInt32LE=function(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]|this[q+1]<<8|this[q+2]<<16|this[q+3]<<24};y.prototype.readInt32BE=function(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return this[q]<<24|this[q+1]<<16|this[q+2]<<8|this[q+3]};y.prototype.readBigInt64LE=M6(function(q){q=q>>>0,y5(q,"offset");let X=this[q],V=this[q+7];if(X===void 0||V===void 0)C8(q,this.length-8);let K=this[q+4]+this[q+5]*256+this[q+6]*65536+(V<<24);return(BigInt(K)<>>0,y5(q,"offset");let X=this[q],V=this[q+7];if(X===void 0||V===void 0)C8(q,this.length-8);let K=(X<<24)+this[++q]*65536+this[++q]*256+this[++q];return(BigInt(K)<>>0,!X)D0(q,4,this.length);return $1(this,q,!0,23,4)};y.prototype.readFloatBE=function(q,X){if(q=q>>>0,!X)D0(q,4,this.length);return $1(this,q,!1,23,4)};y.prototype.readDoubleLE=function(q,X){if(q=q>>>0,!X)D0(q,8,this.length);return $1(this,q,!0,52,8)};y.prototype.readDoubleBE=function(q,X){if(q=q>>>0,!X)D0(q,8,this.length);return $1(this,q,!1,52,8)};function s0(q,X,V,K,Q,Y){if(!y.isBuffer(q))throw TypeError('"buffer" argument must be a Buffer instance');if(X>Q||Xq.length)throw RangeError("Index out of range")}y.prototype.writeUintLE=y.prototype.writeUIntLE=function(q,X,V,K){if(q=+q,X=X>>>0,V=V>>>0,!K){let J=Math.pow(2,8*V)-1;s0(this,q,X,V,J,0)}let Q=1,Y=0;this[X]=q&255;while(++Y>>0,V=V>>>0,!K){let J=Math.pow(2,8*V)-1;s0(this,q,X,V,J,0)}let Q=V-1,Y=1;this[X+Q]=q&255;while(--Q>=0&&(Y*=256))this[X+Q]=q/Y&255;return X+V};y.prototype.writeUint8=y.prototype.writeUInt8=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,1,255,0);return this[X]=q&255,X+1};y.prototype.writeUint16LE=y.prototype.writeUInt16LE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,2,65535,0);return this[X]=q&255,this[X+1]=q>>>8,X+2};y.prototype.writeUint16BE=y.prototype.writeUInt16BE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,2,65535,0);return this[X]=q>>>8,this[X+1]=q&255,X+2};y.prototype.writeUint32LE=y.prototype.writeUInt32LE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,4,4294967295,0);return this[X+3]=q>>>24,this[X+2]=q>>>16,this[X+1]=q>>>8,this[X]=q&255,X+4};y.prototype.writeUint32BE=y.prototype.writeUInt32BE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,4,4294967295,0);return this[X]=q>>>24,this[X+1]=q>>>16,this[X+2]=q>>>8,this[X+3]=q&255,X+4};function AX(q,X,V,K,Q){CX(X,K,Q,q,V,7);let Y=Number(X&BigInt(4294967295));q[V++]=Y,Y=Y>>8,q[V++]=Y,Y=Y>>8,q[V++]=Y,Y=Y>>8,q[V++]=Y;let J=Number(X>>BigInt(32)&BigInt(4294967295));return q[V++]=J,J=J>>8,q[V++]=J,J=J>>8,q[V++]=J,J=J>>8,q[V++]=J,V}function NX(q,X,V,K,Q){CX(X,K,Q,q,V,7);let Y=Number(X&BigInt(4294967295));q[V+7]=Y,Y=Y>>8,q[V+6]=Y,Y=Y>>8,q[V+5]=Y,Y=Y>>8,q[V+4]=Y;let J=Number(X>>BigInt(32)&BigInt(4294967295));return q[V+3]=J,J=J>>8,q[V+2]=J,J=J>>8,q[V+1]=J,J=J>>8,q[V]=J,V+8}y.prototype.writeBigUInt64LE=M6(function(q,X=0){return AX(this,q,X,BigInt(0),BigInt("0xffffffffffffffff"))});y.prototype.writeBigUInt64BE=M6(function(q,X=0){return NX(this,q,X,BigInt(0),BigInt("0xffffffffffffffff"))});y.prototype.writeIntLE=function(q,X,V,K){if(q=+q,X=X>>>0,!K){let G=Math.pow(2,8*V-1);s0(this,q,X,V,G-1,-G)}let Q=0,Y=1,J=0;this[X]=q&255;while(++Q>0)-J&255}return X+V};y.prototype.writeIntBE=function(q,X,V,K){if(q=+q,X=X>>>0,!K){let G=Math.pow(2,8*V-1);s0(this,q,X,V,G-1,-G)}let Q=V-1,Y=1,J=0;this[X+Q]=q&255;while(--Q>=0&&(Y*=256)){if(q<0&&J===0&&this[X+Q+1]!==0)J=1;this[X+Q]=(q/Y>>0)-J&255}return X+V};y.prototype.writeInt8=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,1,127,-128);if(q<0)q=255+q+1;return this[X]=q&255,X+1};y.prototype.writeInt16LE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,2,32767,-32768);return this[X]=q&255,this[X+1]=q>>>8,X+2};y.prototype.writeInt16BE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,2,32767,-32768);return this[X]=q>>>8,this[X+1]=q&255,X+2};y.prototype.writeInt32LE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,4,2147483647,-2147483648);return this[X]=q&255,this[X+1]=q>>>8,this[X+2]=q>>>16,this[X+3]=q>>>24,X+4};y.prototype.writeInt32BE=function(q,X,V){if(q=+q,X=X>>>0,!V)s0(this,q,X,4,2147483647,-2147483648);if(q<0)q=4294967295+q+1;return this[X]=q>>>24,this[X+1]=q>>>16,this[X+2]=q>>>8,this[X+3]=q&255,X+4};y.prototype.writeBigInt64LE=M6(function(q,X=0){return AX(this,q,X,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});y.prototype.writeBigInt64BE=M6(function(q,X=0){return NX(this,q,X,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function SX(q,X,V,K,Q,Y){if(V+K>q.length)throw RangeError("Index out of range");if(V<0)throw RangeError("Index out of range")}function yX(q,X,V,K,Q){if(X=+X,V=V>>>0,!Q)SX(q,X,V,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return BX(q,X,V,K,23,4),V+4}y.prototype.writeFloatLE=function(q,X,V){return yX(this,q,X,!0,V)};y.prototype.writeFloatBE=function(q,X,V){return yX(this,q,X,!1,V)};function $X(q,X,V,K,Q){if(X=+X,V=V>>>0,!Q)SX(q,X,V,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return BX(q,X,V,K,52,8),V+8}y.prototype.writeDoubleLE=function(q,X,V){return $X(this,q,X,!0,V)};y.prototype.writeDoubleBE=function(q,X,V){return $X(this,q,X,!1,V)};y.prototype.copy=function(q,X,V,K){if(!y.isBuffer(q))throw TypeError("argument should be a Buffer");if(!V)V=0;if(!K&&K!==0)K=this.length;if(X>=q.length)X=q.length;if(!X)X=0;if(K>0&&K=this.length)throw RangeError("Index out of range");if(K<0)throw RangeError("sourceEnd out of bounds");if(K>this.length)K=this.length;if(q.length-X>>0,V=V===void 0?this.length:V>>>0,!q)q=0;let Q;if(typeof q==="number")for(Q=X;Q=K+4;V-=3)X=`_${q.slice(V-3,V)}${X}`;return`${q.slice(0,V)}${X}`}function AQ(q,X,V){if(y5(X,"offset"),q[X]===void 0||q[X+V]===void 0)C8(X,q.length-(V+1))}function CX(q,X,V,K,Q,Y){if(q>V||q3)if(X===0||X===BigInt(0))G=`>= 0${J} and < 2${J} ** ${(Y+1)*8}${J}`;else G=`>= -(2${J} ** ${(Y+1)*8-1}${J}) and < 2 ** ${(Y+1)*8-1}${J}`;else G=`>= ${X}${J} and <= ${V}${J}`;throw new cq("value",G,q)}AQ(K,Q,Y)}function y5(q,X){if(typeof q!=="number")throw new ZQ(X,"number",q)}function C8(q,X,V){if(Math.floor(q)!==q)throw y5(q,V),new cq(V||"offset","an integer",q);if(X<0)throw new GQ;throw new cq(V||"offset",`>= ${V?1:0} and <= ${X}`,q)}var NQ=/[^+/0-9A-Za-z-_]/g;function SQ(q){if(q=q.split("=")[0],q=q.trim().replace(NQ,""),q.length<2)return"";while(q.length%4!==0)q=q+"=";return q}function nq(q,X){X=X||1/0;let V,K=q.length,Q=null,Y=[];for(let J=0;J55295&&V<57344){if(!Q){if(V>56319){if((X-=3)>-1)Y.push(239,191,189);continue}else if(J+1===K){if((X-=3)>-1)Y.push(239,191,189);continue}Q=V;continue}if(V<56320){if((X-=3)>-1)Y.push(239,191,189);Q=V;continue}V=(Q-55296<<10|V-56320)+65536}else if(Q){if((X-=3)>-1)Y.push(239,191,189)}if(Q=null,V<128){if((X-=1)<0)break;Y.push(V)}else if(V<2048){if((X-=2)<0)break;Y.push(V>>6|192,V&63|128)}else if(V<65536){if((X-=3)<0)break;Y.push(V>>12|224,V>>6&63|128,V&63|128)}else if(V<1114112){if((X-=4)<0)break;Y.push(V>>18|240,V>>12&63|128,V>>6&63|128,V&63|128)}else throw Error("Invalid code point")}return Y}function yQ(q){let X=[];for(let V=0;V>8,Q=V%256,Y.push(Q),Y.push(K)}return Y}function hX(q){return KQ(SQ(q))}function C1(q,X,V,K){let Q;for(Q=0;Q=X.length||Q>=q.length)break;X[Q+V]=q[Q]}return Q}function h2(q,X){return q instanceof X||q!=null&&q.constructor!=null&&q.constructor.name!=null&&q.constructor.name===X.name}var CQ=function(){let q=Array(256);for(let X=0;X<16;++X){let V=X*16;for(let K=0;K<16;++K)q[V+K]="0123456789abcdef"[X]+"0123456789abcdef"[K]}return q}();function M6(q){return typeof BigInt>"u"?hQ:q}function hQ(){throw Error("BigInt not supported")}function oq(q){return()=>{throw Error(q+" is not implemented for node:buffer browser polyfill")}}var P3=oq("resolveObjectURL"),D3=oq("isUtf8");var u3=oq("transcode");var N3=$8(gX(),1);var UX={};qQ(UX,{waitForTick:()=>R2,values:()=>d5,utf8Encode:()=>mQ,utf16Encode:()=>E4,utf16Decode:()=>x8,typedArrayFor:()=>D8,translate:()=>c0,toUint8Array:()=>r6,toRadians:()=>O0,toHexStringOfMinLength:()=>D2,toHexString:()=>u2,toDegrees:()=>k1,toCodePoint:()=>K4,toCharCode:()=>s,sum:()=>z4,stroke:()=>B5,square:()=>lZ,sortedUniq:()=>U4,skewRadians:()=>k8,skewDegrees:()=>bZ,sizeInBytes:()=>P5,singleQuote:()=>t9,showText:()=>L1,setWordSpacing:()=>pZ,setTextRise:()=>nZ,setTextRenderingMode:()=>rZ,setTextMatrix:()=>FK,setStrokingRgbColor:()=>g7,setStrokingGrayscaleColor:()=>D7,setStrokingColor:()=>v5,setStrokingCmykColor:()=>b7,setLineWidth:()=>L5,setLineJoin:()=>fZ,setLineHeight:()=>F7,setLineCap:()=>I8,setGraphicsState:()=>i2,setFontAndSize:()=>T5,setFillingRgbColor:()=>u7,setFillingGrayscaleColor:()=>P7,setFillingColor:()=>E2,setFillingCmykColor:()=>x7,setDashPattern:()=>j5,setCharacterSqueeze:()=>dZ,setCharacterSpacing:()=>cZ,scale:()=>g6,rotateRectangle:()=>y7,rotateRadians:()=>x6,rotateInPlace:()=>j2,rotateDegrees:()=>M8,rotateAndSkewTextRadiansAndTranslate:()=>j8,rotateAndSkewTextDegreesAndTranslate:()=>iZ,rgb:()=>Y0,reverseArray:()=>I6,restoreDashPattern:()=>mZ,reduceRotation:()=>I2,rectanglesAreEqual:()=>n5,rectangle:()=>hK,range:()=>M4,radiansToDegrees:()=>CK,radians:()=>gZ,pushGraphicsState:()=>B0,popGraphicsState:()=>T0,pluckIndices:()=>k4,pdfDocEncodingDecode:()=>J1,parseDate:()=>P8,padStart:()=>e0,numberToString:()=>B4,normalizeAppearance:()=>G2,nextLine:()=>h7,newlineChars:()=>gQ,moveTo:()=>J2,moveText:()=>_Z,mergeUint8Arrays:()=>W4,mergeLines:()=>F1,mergeIntoTypedArray:()=>Z4,lowSurrogate:()=>u1,lineTo:()=>S0,lineSplit:()=>F8,layoutSinglelineText:()=>v8,layoutMultilineText:()=>uq,layoutCombedText:()=>KX,last:()=>n6,isWithinBMP:()=>j4,isType:()=>XK,isStandardFont:()=>e1,isNewlineChar:()=>Y4,highSurrogate:()=>D1,hasUtf16BOM:()=>b8,hasSurrogates:()=>L4,grayscale:()=>Sq,getType:()=>qK,findLastMatch:()=>F5,fillAndStroke:()=>j1,fill:()=>E1,escapedNewlineChars:()=>mX,escapeRegExp:()=>bX,error:()=>L6,endText:()=>T1,endPath:()=>wq,endMarkedContent:()=>Nq,encodeToBase64:()=>X4,drawTextLines:()=>Fq,drawTextField:()=>Pq,drawText:()=>eZ,drawSvgPath:()=>d7,drawRectangle:()=>b6,drawRadioButton:()=>T8,drawPage:()=>c7,drawOptionList:()=>n7,drawObject:()=>L8,drawLinesOfText:()=>_7,drawLine:()=>p7,drawImage:()=>w1,drawEllipsePath:()=>xK,drawEllipse:()=>O1,drawCheckMark:()=>bK,drawCheckBox:()=>B8,drawButton:()=>hq,degreesToRadians:()=>H6,degrees:()=>p,defaultTextFieldAppearanceProvider:()=>GX,defaultRadioGroupAppearanceProvider:()=>YX,defaultOptionListAppearanceProvider:()=>WX,defaultDropdownAppearanceProvider:()=>ZX,defaultCheckBoxAppearanceProvider:()=>QX,defaultButtonAppearanceProvider:()=>JX,decodePDFRawStream:()=>V8,decodeFromBase64DataUri:()=>V4,decodeFromBase64:()=>q4,createValueErrorMsg:()=>e9,createTypeErrorMsg:()=>VK,createPDFAcroFields:()=>Z8,createPDFAcroField:()=>kq,copyStringIntoBuffer:()=>k0,concatTransformationMatrix:()=>I1,componentsToColor:()=>l0,colorToComponents:()=>$q,cmyk:()=>yq,closePath:()=>N2,clipEvenOdd:()=>xZ,clip:()=>Oq,cleanText:()=>k6,charSplit:()=>J4,charFromHexCode:()=>Q4,charFromCode:()=>t0,charAtIndex:()=>P1,canBeConvertedToUint8Array:()=>I4,bytesFor:()=>j6,byAscendingId:()=>H4,breakTextIntoLines:()=>G4,beginText:()=>B1,beginMarkedContent:()=>Aq,backtick:()=>$0,assertRangeOrUndefined:()=>X2,assertRange:()=>b0,assertPositive:()=>X6,assertOrUndefined:()=>F,assertMultiple:()=>Y1,assertIsSubset:()=>V7,assertIsOneOfOrUndefined:()=>a0,assertIsOneOf:()=>M2,assertIs:()=>T,assertInteger:()=>K7,assertEachIs:()=>Q1,asPDFNumber:()=>f,asPDFName:()=>z8,asNumber:()=>t,arrayAsString:()=>u8,appendQuadraticCurve:()=>E8,appendBezierCurve:()=>p0,adjustDimsForRotation:()=>r2,addRandomSuffix:()=>uQ,ViewerPreferences:()=>W1,UnsupportedEncodingError:()=>Q7,UnrecognizedStreamTypeError:()=>J7,UnexpectedObjectTypeError:()=>A6,UnexpectedFieldTypeError:()=>z6,UnbalancedParenthesisError:()=>E7,TextRenderingMode:()=>C7,TextAlignment:()=>v0,StandardFonts:()=>N5,StandardFontValues:()=>o9,StandardFontEmbedder:()=>$6,StalledParserError:()=>j7,RotationTypes:()=>E5,RichTextFieldReadError:()=>e7,ReparseError:()=>Q5,RemovePageFromEmptyDocumentError:()=>o7,ReadingDirection:()=>U5,PrivateConstructorError:()=>K5,PrintScaling:()=>z5,PngEmbedder:()=>X8,ParseSpeeds:()=>A1,PageSizes:()=>HX,PageEmbeddingMismatchedContextError:()=>G7,PDFXRefStreamParser:()=>Lq,PDFWriter:()=>o5,PDFWidgetAnnotation:()=>M5,PDFTrailerDict:()=>Qq,PDFTrailer:()=>S6,PDFTextField:()=>A5,PDFString:()=>K0,PDFStreamWriter:()=>Jq,PDFStreamParsingError:()=>I7,PDFStream:()=>E0,PDFSignature:()=>O8,PDFRef:()=>a,PDFRawStream:()=>A2,PDFRadioGroup:()=>l6,PDFParsingError:()=>V6,PDFParser:()=>Bq,PDFPageTree:()=>H8,PDFPageLeaf:()=>_0,PDFPageEmbedder:()=>K8,PDFPage:()=>y0,PDFOptionList:()=>w5,PDFOperatorNames:()=>X0,PDFOperator:()=>e,PDFObjectStreamParser:()=>jq,PDFObjectStream:()=>a5,PDFObjectParsingError:()=>M7,PDFObjectParser:()=>U8,PDFObjectCopier:()=>Z1,PDFObject:()=>z0,PDFNumber:()=>x,PDFNull:()=>F0,PDFName:()=>I,PDFJavaScript:()=>xq,PDFInvalidObjectParsingError:()=>k7,PDFInvalidObject:()=>s5,PDFImage:()=>R5,PDFHexString:()=>g,PDFHeader:()=>_2,PDFForm:()=>gq,PDFFont:()=>w0,PDFFlateStream:()=>N6,PDFField:()=>d0,PDFEmbeddedPage:()=>R8,PDFDropdown:()=>O5,PDFDocument:()=>o0,PDFDict:()=>m,PDFCrossRefStream:()=>Yq,PDFCrossRefSection:()=>i5,PDFContext:()=>Z5,PDFContentStream:()=>p2,PDFCheckBox:()=>f6,PDFCatalog:()=>W8,PDFButton:()=>S5,PDFBool:()=>c2,PDFArrayIsNotRectangleError:()=>Z7,PDFArray:()=>i,PDFAnnotation:()=>Mq,PDFAcroText:()=>J6,PDFAcroTerminal:()=>K2,PDFAcroSignature:()=>F6,PDFAcroRadioButton:()=>Z6,PDFAcroPushButton:()=>G6,PDFAcroNonTerminal:()=>Y6,PDFAcroListBox:()=>W6,PDFAcroForm:()=>P6,PDFAcroField:()=>Y8,PDFAcroComboBox:()=>Q6,PDFAcroChoice:()=>G8,PDFAcroCheckBox:()=>K6,PDFAcroButton:()=>h6,NumberParsingError:()=>Vq,NonFullScreenPageMode:()=>H5,NoSuchFieldError:()=>s7,NextByteAssertionError:()=>z7,MultiSelectValueError:()=>W7,MissingTfOperatorError:()=>U7,MissingPageContentsEmbeddingError:()=>Y7,MissingPDFHeaderError:()=>L7,MissingOnValueCheckError:()=>X3,MissingKeywordError:()=>B7,MissingDAEntryError:()=>H7,MissingCatalogError:()=>qG,MethodNotImplementedError:()=>u0,LineJoinStyle:()=>$7,LineCapStyle:()=>u6,JpegEmbedder:()=>q8,InvalidTargetIndexError:()=>qq,InvalidPDFDateStringError:()=>G1,InvalidMaxLengthError:()=>VX,InvalidFieldNamePartError:()=>t7,InvalidAcroFieldValueError:()=>J5,IndexOutOfBoundsError:()=>Y5,ImageAlignment:()=>T2,ForeignPageError:()=>a7,FontkitNotRegisteredError:()=>i7,FileEmbedder:()=>Wq,FieldExistsAsNonTerminalError:()=>V3,FieldAlreadyExistsError:()=>Dq,ExceededMaxLengthError:()=>XX,EncryptedPDFError:()=>r7,Duplex:()=>Q8,CustomFontSubsetEmbedder:()=>Zq,CustomFontEmbedder:()=>C6,CorruptPageTreeError:()=>Xq,CombedTextLayoutError:()=>qX,ColorTypes:()=>U6,CharCodes:()=>E,Cache:()=>m0,BlendMode:()=>S2,AppearanceCharacteristics:()=>J8,AnnotationFlags:()=>I5,AcroTextFlags:()=>j0,AcroFieldFlags:()=>Y2,AcroChoiceFlags:()=>G0,AcroButtonFlags:()=>f0,AFRelationship:()=>t5});/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -14,22 +14,22 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var eq=function(V,q){return eq=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(X,K){X.__proto__=K}||function(X,K){for(var Q in K)if(K.hasOwnProperty(Q))X[Q]=K[Q]},eq(V,q)};function A(V,q){eq(V,q);function X(){this.constructor=V}V.prototype=q===null?Object.create(q):(X.prototype=q.prototype,new X)}var o=function(){return o=Object.assign||function V(q){for(var X,K=1,Q=arguments.length;K0&&Y[Y.length-1]))&&(Z[0]===6||Z[0]===2)){X=0;continue}if(Z[0]===3&&(!Y||Z[1]>Y[0]&&Z[1]>2],q+=h8[(V[K]&3)<<4|V[K+1]>>4],q+=h8[(V[K+1]&15)<<2|V[K+2]>>6],q+=h8[V[K+2]&63];if(X%3===2)q=q.substring(0,q.length-1)+"=";else if(X%3===1)q=q.substring(0,q.length-2)+"==";return q},q4=function(V){var q=V.length*0.75,X=V.length,K,Q=0,Y,J,G,W;if(V[V.length-1]==="="){if(q--,V[V.length-2]==="=")q--}var Z=new Uint8Array(q);for(K=0;K>4,Z[Q++]=(J&15)<<4|G>>2,Z[Q++]=(G&3)<<6|W&63;return Z},yK=/^(data)?:?([\w\/\+]+)?;?(charset=[\w-]+|base64)?.*,/i,V4=function(V){var q=V.trim(),X=q.substring(0,100),K=X.match(yK);if(!K)return q4(q);var Q=K[0],Y=q.substring(Q.length);return q4(Y)};var s=function(V){return V.charCodeAt(0)},K4=function(V){return V.codePointAt(0)},D6=function(V,q){return e0(V.toString(16),q,"0").toUpperCase()},u6=function(V){return D6(V,2)},t0=function(V){return String.fromCharCode(V)},Q4=function(V){return t0(parseInt(V,16))},e0=function(V,q,X){var K="";for(var Q=0,Y=q-V.length;Q=55296&&X<=56319&&V.length>Q){if(K=V.charCodeAt(Q),K>=56320&&K<=57343)Y=2}return[V.slice(q,q+Y),Y]},J4=function(V){var q=[];for(var X=0,K=V.length;XX)Z();J+=z,G+=I}}return Z(),W},FK=/^D:(\d\d\d\d)(\d\d)?(\d\d)?(\d\d)?(\d\d)?(\d\d)?([+\-Z])?(\d\d)?'?(\d\d)?'?$/,P2=function(V){var q=V.match(FK);if(!q)return;var X=q[1],K=q[2],Q=K===void 0?"01":K,Y=q[3],J=Y===void 0?"01":Y,G=q[4],W=G===void 0?"00":G,Z=q[5],U=Z===void 0?"00":Z,H=q[6],z=H===void 0?"00":H,I=q[7],M=I===void 0?"Z":I,L=q[8],B=L===void 0?"00":L,j=q[9],O=j===void 0?"00":j,N=M==="Z"?"Z":""+M+B+":"+O,R=new Date(X+"-"+Q+"-"+J+"T"+W+":"+U+":"+z+N);return R},F8=function(V,q){var X,K=0,Q;while(K>6&31|192,G=Y&63|128;X.push(J,G),K+=1}else if(Y<65536){var J=Y>>12&15|224,G=Y>>6&63|128,W=Y&63|128;X.push(J,G,W),K+=1}else if(Y<1114112){var J=Y>>18&7|240,G=Y>>12&63|128,W=Y>>6&63|128,Z=Y>>0&63|128;X.push(J,G,W,Z),K+=2}else throw new Error("Invalid code point: 0x"+u6(Y))}return new Uint8Array(X)},E4=function(V,q){if(q===void 0)q=!0;var X=[];if(q)X.push(65279);for(var K=0,Q=V.length;K=0&&V<=65535},j4=function(V){return V>=65536&&V<=1114111},D1=function(V){return Math.floor((V-65536)/1024)+55296},u1=function(V){return(V-65536)%1024+56320},E5;(function(V){V.BigEndian="BigEndian",V.LittleEndian="LittleEndian"})(E5||(E5={}));var g2="�".codePointAt(0),x2=function(V,q){if(q===void 0)q=!0;if(V.length<=1)return String.fromCodePoint(g2);var X=q?uK(V):E5.BigEndian,K=q?2:0,Q=[];while(V.length-K>=2){var Y=lX(V[K++],V[K++],X);if(DK(Y))if(V.length-K<2)Q.push(g2);else{var J=lX(V[K++],V[K++],X);if(fX(J))Q.push(Y,J);else Q.push(g2)}else if(fX(Y))K+=2,Q.push(g2);else Q.push(Y)}if(K=55296&&V<=56319},fX=function(V){return V>=56320&&V<=57343},lX=function(V,q,X){if(X===E5.LittleEndian)return q<<8|V;if(X===E5.BigEndian)return V<<8|q;throw new Error("Invalid byteOrder: "+X)},uK=function(V){return _X(V)?E5.BigEndian:cX(V)?E5.LittleEndian:E5.BigEndian},_X=function(V){return V[0]===254&&V[1]===255},cX=function(V){return V[0]===255&&V[1]===254},b2=function(V){return _X(V)||cX(V)};var B4=function(V){var q=String(V);if(Math.abs(V)<1){var X=parseInt(V.toString().split("e-")[1]);if(X){var K=V<0;if(K)V*=-1;if(V*=Math.pow(10,X-1),q="0."+new Array(X).join("0")+V.toString().substring(2),K)q="-"+q}}else{var X=parseInt(V.toString().split("+")[1]);if(X>20)X-=20,V/=Math.pow(10,X),q=V.toString()+new Array(X+1).join("0")}return q},P8=function(V){return Math.ceil(V.toString(2).length/8)},L5=function(V){var q=new Uint8Array(P8(V));for(var X=1;X<=q.length;X++)q[X-1]=V>>(q.length-X)*8;return q};var j5=function(V){throw new Error(V)};var h9=$2(X1()),C9="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",V1=new Uint8Array(256);for(p8=0;p8>4,Z[Q++]=(J&15)<<4|G>>2,Z[Q++]=(G&3)<<6|W&63;return Z},$Y=function(V){var q="";for(var X=0;XK)throw new Error($0(q)+" must be at least "+X+" and at most "+K+", but was actually "+V)},X6=function(V,q,X,K){if(T(V,q,["number","undefined"]),typeof V==="number")b0(V,q,X,K)},Y1=function(V,q,X){if(T(V,q,["number"]),V%X!==0)throw new Error($0(q)+" must be a multiple of "+X+", but was actually "+V)},K7=function(V,q){if(!Number.isInteger(V))throw new Error($0(q)+" must be an integer, but was actually "+V)},X5=function(V,q){if(![1,0].includes(Math.sign(V)))throw new Error($0(q)+" must be a positive number or 0, but was actually "+V)};var V0=new Uint16Array(256);for(r8=0;r8<256;r8++)V0[r8]=r8;var r8;V0[22]=s("\x17");V0[24]=s("˘");V0[25]=s("ˇ");V0[26]=s("ˆ");V0[27]=s("˙");V0[28]=s("˝");V0[29]=s("˛");V0[30]=s("˚");V0[31]=s("˜");V0[127]=s("�");V0[128]=s("•");V0[129]=s("†");V0[130]=s("‡");V0[131]=s("…");V0[132]=s("—");V0[133]=s("–");V0[134]=s("ƒ");V0[135]=s("⁄");V0[136]=s("‹");V0[137]=s("›");V0[138]=s("−");V0[139]=s("‰");V0[140]=s("„");V0[141]=s("“");V0[142]=s("”");V0[143]=s("‘");V0[144]=s("’");V0[145]=s("‚");V0[146]=s("™");V0[147]=s("fi");V0[148]=s("fl");V0[149]=s("Ł");V0[150]=s("Œ");V0[151]=s("Š");V0[152]=s("Ÿ");V0[153]=s("Ž");V0[154]=s("ı");V0[155]=s("ł");V0[156]=s("œ");V0[157]=s("š");V0[158]=s("ž");V0[159]=s("�");V0[160]=s("€");V0[173]=s("�");var J1=function(V){var q=new Array(V.length);for(var X=0,K=V.length;X=E.ExclamationPoint&&V<=E.Tilde&&!Kq[V]},K3={},Q3=new Map,VJ=function(V){A(q,V);function q(X,K){var Q=this;if(X!==K3)throw new K8("PDFName");Q=V.call(this)||this;var Y="/";for(var J=0,G=K.length;J=E.Zero&&Z<=E.Nine||Z>=E.a&&Z<=E.f||Z>=E.A&&Z<=E.F){if(K+=W,K.length===2||!(U>="0"&&U<="9"||U>="a"&&U<="f"||U>="A"&&U<="F"))Y(parseInt(K,16)),K=""}else Y(Z)}return new Uint8Array(X)},q.prototype.decodeText=function(){var X=this.asBytes();return String.fromCharCode.apply(String,Array.from(X))},q.prototype.asString=function(){return this.encodedName},q.prototype.value=function(){return this.encodedName},q.prototype.clone=function(){return this},q.prototype.toString=function(){return this.encodedName},q.prototype.sizeInBytes=function(){return this.encodedName.length},q.prototype.copyBytesInto=function(X,K){return K+=I0(this.encodedName,X,K),this.encodedName.length},q.of=function(X){var K=qJ(X),Q=Q3.get(K);if(!Q)Q=new q(K3,K),Q3.set(K,Q);return Q},q.Length=q.of("Length"),q.FlateDecode=q.of("FlateDecode"),q.Resources=q.of("Resources"),q.Font=q.of("Font"),q.XObject=q.of("XObject"),q.ExtGState=q.of("ExtGState"),q.Contents=q.of("Contents"),q.Type=q.of("Type"),q.Parent=q.of("Parent"),q.MediaBox=q.of("MediaBox"),q.Page=q.of("Page"),q.Annots=q.of("Annots"),q.TrimBox=q.of("TrimBox"),q.ArtBox=q.of("ArtBox"),q.BleedBox=q.of("BleedBox"),q.CropBox=q.of("CropBox"),q.Rotate=q.of("Rotate"),q.Title=q.of("Title"),q.Author=q.of("Author"),q.Subject=q.of("Subject"),q.Creator=q.of("Creator"),q.Keywords=q.of("Keywords"),q.Producer=q.of("Producer"),q.CreationDate=q.of("CreationDate"),q.ModDate=q.of("ModDate"),q}(z0),k=VJ;var KJ=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.prototype.asNull=function(){return null},q.prototype.clone=function(){return this},q.prototype.toString=function(){return"null"},q.prototype.sizeInBytes=function(){return 4},q.prototype.copyBytesInto=function(X,K){return X[K++]=E.n,X[K++]=E.u,X[K++]=E.l,X[K++]=E.l,4},q}(z0),F0=new KJ;var QJ=function(V){A(q,V);function q(X,K){var Q=V.call(this)||this;return Q.dict=X,Q.context=K,Q}return q.prototype.keys=function(){return Array.from(this.dict.keys())},q.prototype.values=function(){return Array.from(this.dict.values())},q.prototype.entries=function(){return Array.from(this.dict.entries())},q.prototype.set=function(X,K){this.dict.set(X,K)},q.prototype.get=function(X,K){if(K===void 0)K=!1;var Q=this.dict.get(X);if(Q===F0&&!K)return;return Q},q.prototype.has=function(X){var K=this.dict.get(X);return K!==void 0&&K!==F0},q.prototype.lookupMaybe=function(X){var K,Q=[];for(var Y=1;Y0&&Y[Y.length-1]))&&(Z[0]===6||Z[0]===2)){V=0;continue}if(Z[0]===3&&(!Y||Z[1]>Y[0]&&Z[1]>2],X+=h5[(q[K]&3)<<4|q[K+1]>>4],X+=h5[(q[K+1]&15)<<2|q[K+2]>>6],X+=h5[q[K+2]&63];if(V%3===2)X=X.substring(0,X.length-1)+"=";else if(V%3===1)X=X.substring(0,X.length-2)+"==";return X},q4=function(q){var X=q.length*0.75,V=q.length,K,Q=0,Y,J,G,W;if(q[q.length-1]==="="){if(X--,q[q.length-2]==="=")X--}var Z=new Uint8Array(X);for(K=0;K>4,Z[Q++]=(J&15)<<4|G>>2,Z[Q++]=(G&3)<<6|W&63;return Z},DQ=/^(data)?:?([\w\/\+]+)?;?(charset=[\w-]+|base64)?.*,/i,V4=function(q){var X=q.trim(),V=X.substring(0,100),K=V.match(DQ);if(!K)return q4(X);var Q=K[0],Y=X.substring(Q.length);return q4(Y)};var s=function(q){return q.charCodeAt(0)},K4=function(q){return q.codePointAt(0)},D2=function(q,X){return e0(q.toString(16),X,"0").toUpperCase()},u2=function(q){return D2(q,2)},t0=function(q){return String.fromCharCode(q)},Q4=function(q){return t0(parseInt(q,16))},e0=function(q,X,V){var K="";for(var Q=0,Y=X-q.length;Q=55296&&V<=56319&&q.length>Q){if(K=q.charCodeAt(Q),K>=56320&&K<=57343)Y=2}return[q.slice(X,X+Y),Y]},J4=function(q){var X=[];for(var V=0,K=q.length;VV)Z();J+=z,G+=k}}return Z(),W},bQ=/^D:(\d\d\d\d)(\d\d)?(\d\d)?(\d\d)?(\d\d)?(\d\d)?([+\-Z])?(\d\d)?'?(\d\d)?'?$/,P8=function(q){var X=q.match(bQ);if(!X)return;var V=X[1],K=X[2],Q=K===void 0?"01":K,Y=X[3],J=Y===void 0?"01":Y,G=X[4],W=G===void 0?"00":G,Z=X[5],H=Z===void 0?"00":Z,U=X[6],z=U===void 0?"00":U,k=X[7],M=k===void 0?"Z":k,j=X[8],B=j===void 0?"00":j,L=X[9],O=L===void 0?"00":L,N=M==="Z"?"Z":""+M+B+":"+O,R=new Date(V+"-"+Q+"-"+J+"T"+W+":"+H+":"+z+N);return R},F5=function(q,X){var V,K=0,Q;while(K>6&31|192,G=Y&63|128;V.push(J,G),K+=1}else if(Y<65536){var J=Y>>12&15|224,G=Y>>6&63|128,W=Y&63|128;V.push(J,G,W),K+=1}else if(Y<1114112){var J=Y>>18&7|240,G=Y>>12&63|128,W=Y>>6&63|128,Z=Y>>0&63|128;V.push(J,G,W,Z),K+=2}else throw Error("Invalid code point: 0x"+u2(Y))}return new Uint8Array(V)},E4=function(q,X){if(X===void 0)X=!0;var V=[];if(X)V.push(65279);for(var K=0,Q=q.length;K=0&&q<=65535},L4=function(q){return q>=65536&&q<=1114111},D1=function(q){return Math.floor((q-65536)/1024)+55296},u1=function(q){return(q-65536)%1024+56320},E6;(function(q){q.BigEndian="BigEndian",q.LittleEndian="LittleEndian"})(E6||(E6={}));var g8="�".codePointAt(0),x8=function(q,X){if(X===void 0)X=!0;if(q.length<=1)return String.fromCodePoint(g8);var V=X?lQ(q):E6.BigEndian,K=X?2:0,Q=[];while(q.length-K>=2){var Y=lX(q[K++],q[K++],V);if(fQ(Y))if(q.length-K<2)Q.push(g8);else{var J=lX(q[K++],q[K++],V);if(fX(J))Q.push(Y,J);else Q.push(g8)}else if(fX(Y))K+=2,Q.push(g8);else Q.push(Y)}if(K=55296&&q<=56319},fX=function(q){return q>=56320&&q<=57343},lX=function(q,X,V){if(V===E6.LittleEndian)return X<<8|q;if(V===E6.BigEndian)return q<<8|X;throw Error("Invalid byteOrder: "+V)},lQ=function(q){return _X(q)?E6.BigEndian:cX(q)?E6.LittleEndian:E6.BigEndian},_X=function(q){return q[0]===254&&q[1]===255},cX=function(q){return q[0]===255&&q[1]===254},b8=function(q){return _X(q)||cX(q)};var B4=function(q){var X=String(q);if(Math.abs(q)<1){var V=parseInt(q.toString().split("e-")[1]);if(V){var K=q<0;if(K)q*=-1;if(q*=Math.pow(10,V-1),X="0."+Array(V).join("0")+q.toString().substring(2),K)X="-"+X}}else{var V=parseInt(q.toString().split("+")[1]);if(V>20)V-=20,q/=Math.pow(10,V),X=q.toString()+Array(V+1).join("0")}return X},P5=function(q){return Math.ceil(q.toString(2).length/8)},j6=function(q){var X=new Uint8Array(P5(q));for(var V=1;V<=X.length;V++)X[V-1]=q>>(X.length-V)*8;return X};var L6=function(q){throw Error(q)};var h9=$8(X1(),1),C9="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",V1=new Uint8Array(256);for(p5=0;p5>4,Z[Q++]=(J&15)<<4|G>>2,Z[Q++]=(G&3)<<6|W&63;return Z},uJ=function(q){var X="";for(var V=0;VK)throw Error($0(X)+" must be at least "+V+" and at most "+K+", but was actually "+q)},X2=function(q,X,V,K){if(T(q,X,["number","undefined"]),typeof q==="number")b0(q,X,V,K)},Y1=function(q,X,V){if(T(q,X,["number"]),q%V!==0)throw Error($0(X)+" must be a multiple of "+V+", but was actually "+q)},K7=function(q,X){if(!Number.isInteger(q))throw Error($0(X)+" must be an integer, but was actually "+q)},X6=function(q,X){if(![1,0].includes(Math.sign(q)))throw Error($0(X)+" must be a positive number or 0, but was actually "+q)};var V0=new Uint16Array(256);for(r5=0;r5<256;r5++)V0[r5]=r5;var r5;V0[22]=s("\x17");V0[24]=s("˘");V0[25]=s("ˇ");V0[26]=s("ˆ");V0[27]=s("˙");V0[28]=s("˝");V0[29]=s("˛");V0[30]=s("˚");V0[31]=s("˜");V0[127]=s("�");V0[128]=s("•");V0[129]=s("†");V0[130]=s("‡");V0[131]=s("…");V0[132]=s("—");V0[133]=s("–");V0[134]=s("ƒ");V0[135]=s("⁄");V0[136]=s("‹");V0[137]=s("›");V0[138]=s("−");V0[139]=s("‰");V0[140]=s("„");V0[141]=s("“");V0[142]=s("”");V0[143]=s("‘");V0[144]=s("’");V0[145]=s("‚");V0[146]=s("™");V0[147]=s("fi");V0[148]=s("fl");V0[149]=s("Ł");V0[150]=s("Œ");V0[151]=s("Š");V0[152]=s("Ÿ");V0[153]=s("Ž");V0[154]=s("ı");V0[155]=s("ł");V0[156]=s("œ");V0[157]=s("š");V0[158]=s("ž");V0[159]=s("�");V0[160]=s("€");V0[173]=s("�");var J1=function(q){var X=Array(q.length);for(var V=0,K=q.length;V=E.ExclamationPoint&&q<=E.Tilde&&!Kq[q]},KK={},QK=new Map,ZG=function(q){A(X,q);function X(V,K){var Q=this;if(V!==KK)throw new K5("PDFName");Q=q.call(this)||this;var Y="/";for(var J=0,G=K.length;J=E.Zero&&Z<=E.Nine||Z>=E.a&&Z<=E.f||Z>=E.A&&Z<=E.F){if(K+=W,K.length===2||!(H>="0"&&H<="9"||H>="a"&&H<="f"||H>="A"&&H<="F"))Y(parseInt(K,16)),K=""}else Y(Z)}return new Uint8Array(V)},X.prototype.decodeText=function(){var V=this.asBytes();return String.fromCharCode.apply(String,Array.from(V))},X.prototype.asString=function(){return this.encodedName},X.prototype.value=function(){return this.encodedName},X.prototype.clone=function(){return this},X.prototype.toString=function(){return this.encodedName},X.prototype.sizeInBytes=function(){return this.encodedName.length},X.prototype.copyBytesInto=function(V,K){return K+=k0(this.encodedName,V,K),this.encodedName.length},X.of=function(V){var K=JG(V),Q=QK.get(K);if(!Q)Q=new X(KK,K),QK.set(K,Q);return Q},X.Length=X.of("Length"),X.FlateDecode=X.of("FlateDecode"),X.Resources=X.of("Resources"),X.Font=X.of("Font"),X.XObject=X.of("XObject"),X.ExtGState=X.of("ExtGState"),X.Contents=X.of("Contents"),X.Type=X.of("Type"),X.Parent=X.of("Parent"),X.MediaBox=X.of("MediaBox"),X.Page=X.of("Page"),X.Annots=X.of("Annots"),X.TrimBox=X.of("TrimBox"),X.ArtBox=X.of("ArtBox"),X.BleedBox=X.of("BleedBox"),X.CropBox=X.of("CropBox"),X.Rotate=X.of("Rotate"),X.Title=X.of("Title"),X.Author=X.of("Author"),X.Subject=X.of("Subject"),X.Creator=X.of("Creator"),X.Keywords=X.of("Keywords"),X.Producer=X.of("Producer"),X.CreationDate=X.of("CreationDate"),X.ModDate=X.of("ModDate"),X}(z0),I=ZG;var WG=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.prototype.asNull=function(){return null},X.prototype.clone=function(){return this},X.prototype.toString=function(){return"null"},X.prototype.sizeInBytes=function(){return 4},X.prototype.copyBytesInto=function(V,K){return V[K++]=E.n,V[K++]=E.u,V[K++]=E.l,V[K++]=E.l,4},X}(z0),F0=new WG;var HG=function(q){A(X,q);function X(V,K){var Q=q.call(this)||this;return Q.dict=V,Q.context=K,Q}return X.prototype.keys=function(){return Array.from(this.dict.keys())},X.prototype.values=function(){return Array.from(this.dict.values())},X.prototype.entries=function(){return Array.from(this.dict.entries())},X.prototype.set=function(V,K){this.dict.set(V,K)},X.prototype.get=function(V,K){if(K===void 0)K=!1;var Q=this.dict.get(V);if(Q===F0&&!K)return;return Q},X.prototype.has=function(V){var K=this.dict.get(V);return K!==void 0&&K!==F0},X.prototype.lookupMaybe=function(V){var K,Q=[];for(var Y=1;Ythis.largestObjectNumber)this.largestObjectNumber=q.objectNumber},V.prototype.nextRef=function(){return this.largestObjectNumber+=1,a.of(this.largestObjectNumber)},V.prototype.register=function(q){var X=this.nextRef();return this.assign(X,q),X},V.prototype.delete=function(q){return this.indirectObjects.delete(q)},V.prototype.lookupMaybe=function(q){var X=[];for(var K=1;K1)this.subsections.push([q]),this.chunkIdx+=1,this.chunkLength=1;else X.push(q),this.chunkLength+=1},V.create=function(){return new V({ref:a.of(0,65535),offset:0,deleted:!0})},V.createEmpty=function(){return new V},V}(),i8=kJ;var EJ=function(){function V(q){this.lastXRefOffset=String(q)}return V.prototype.toString=function(){return`startxref +`,V+=this.getContentsString(),V+=` +endstream`,V},X.prototype.copyBytesInto=function(V,K){this.updateDict();var Q=K;K+=this.dict.copyBytesInto(V,K),V[K++]=E.Newline,V[K++]=E.s,V[K++]=E.t,V[K++]=E.r,V[K++]=E.e,V[K++]=E.a,V[K++]=E.m,V[K++]=E.Newline;var Y=this.getContents();for(var J=0,G=Y.length;Jthis.largestObjectNumber)this.largestObjectNumber=X.objectNumber},q.prototype.nextRef=function(){return this.largestObjectNumber+=1,a.of(this.largestObjectNumber)},q.prototype.register=function(X){var V=this.nextRef();return this.assign(V,X),V},q.prototype.delete=function(X){return this.indirectObjects.delete(X)},q.prototype.lookupMaybe=function(X){var V=[];for(var K=1;K1)this.subsections.push([X]),this.chunkIdx+=1,this.chunkLength=1;else V.push(X),this.chunkLength+=1},q.create=function(){return new q({ref:a.of(0,65535),offset:0,deleted:!0})},q.createEmpty=function(){return new q},q}(),i5=vG;var RG=function(){function q(X){this.lastXRefOffset=String(X)}return q.prototype.toString=function(){return`startxref `+this.lastXRefOffset+` -%%EOF`},V.prototype.sizeInBytes=function(){return 16+this.lastXRefOffset.length},V.prototype.copyBytesInto=function(q,X){var K=X;return q[X++]=E.s,q[X++]=E.t,q[X++]=E.a,q[X++]=E.r,q[X++]=E.t,q[X++]=E.x,q[X++]=E.r,q[X++]=E.e,q[X++]=E.f,q[X++]=E.Newline,X+=I0(this.lastXRefOffset,q,X),q[X++]=E.Newline,q[X++]=E.Percent,q[X++]=E.Percent,q[X++]=E.E,q[X++]=E.O,q[X++]=E.F,X-K},V.forLastCrossRefSectionOffset=function(q){return new V(q)},V}(),S5=EJ;var LJ=function(){function V(q){this.dict=q}return V.prototype.toString=function(){return`trailer -`+this.dict.toString()},V.prototype.sizeInBytes=function(){return 8+this.dict.sizeInBytes()},V.prototype.copyBytesInto=function(q,X){var K=X;return q[X++]=E.t,q[X++]=E.r,q[X++]=E.a,q[X++]=E.i,q[X++]=E.l,q[X++]=E.e,q[X++]=E.r,q[X++]=E.Newline,X+=this.dict.copyBytesInto(q,X),X-K},V.of=function(q){return new V(q)},V}(),Qq=LJ;var jJ=function(V){A(q,V);function q(X,K,Q){if(Q===void 0)Q=!0;var Y=V.call(this,X.obj({}),Q)||this;return Y.objects=K,Y.offsets=Y.computeObjectOffsets(),Y.offsetsString=Y.computeOffsetsString(),Y.dict.set(k.of("Type"),k.of("ObjStm")),Y.dict.set(k.of("N"),x.of(Y.objects.length)),Y.dict.set(k.of("First"),x.of(Y.offsetsString.length)),Y}return q.prototype.getObjectsCount=function(){return this.objects.length},q.prototype.clone=function(X){return q.withContextAndObjects(X||this.dict.context,this.objects.slice(),this.encode)},q.prototype.getContentsString=function(){var X=this.offsetsString;for(var K=0,Q=this.objects.length;K1)J.push(G),J.push(U.ref.objectNumber),G=0;G+=1}return J.push(G),J},Y.computeEntryTuples=function(){var J=new Array(Y.entries.length);for(var G=0,W=Y.entries.length;GG[0])G[0]=M;if(L>G[1])G[1]=L;if(B>G[2])G[2]=B}return G},Y.entries=K||[],Y.entryTuplesCache=m0.populatedBy(Y.computeEntryTuples),Y.maxByteWidthsCache=m0.populatedBy(Y.computeMaxEntryByteWidths),Y.indexCache=m0.populatedBy(Y.computeIndex),X.set(k.of("Type"),k.of("XRef")),Y}return q.prototype.addDeletedEntry=function(X,K){var Q=y5.Deleted;this.entries.push({type:Q,ref:X,nextFreeObjectNumber:K}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},q.prototype.addUncompressedEntry=function(X,K){var Q=y5.Uncompressed;this.entries.push({type:Q,ref:X,offset:K}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},q.prototype.addCompressedEntry=function(X,K,Q){var Y=y5.Compressed;this.entries.push({type:Y,ref:X,objectStreamRef:K,index:Q}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},q.prototype.clone=function(X){var K=this,Q=K.dict,Y=K.entries,J=K.encode;return q.of(Q.clone(X),Y.slice(),J)},q.prototype.getContentsString=function(){var X=this.entryTuplesCache.access(),K=this.maxByteWidthsCache.access(),Q="";for(var Y=0,J=X.length;Y=0;M--)Q+=(H[M]||0).toString(2);for(var M=K[1]-1;M>=0;M--)Q+=(z[M]||0).toString(2);for(var M=K[2]-1;M>=0;M--)Q+=(I[M]||0).toString(2)}return Q},q.prototype.getUnencodedContents=function(){var X=this.entryTuplesCache.access(),K=this.maxByteWidthsCache.access(),Q=new Uint8Array(this.getUnencodedContentsSize()),Y=0;for(var J=0,G=X.length;J=0;L--)Q[Y++]=z[L]||0;for(var L=K[1]-1;L>=0;L--)Q[Y++]=I[L]||0;for(var L=K[2]-1;L>=0;L--)Q[Y++]=M[L]||0}return Q},q.prototype.getUnencodedContentsSize=function(){var X=this.maxByteWidthsCache.access(),K=z4(X);return K*this.entries.length},q.prototype.updateDict=function(){V.prototype.updateDict.call(this);var X=this.maxByteWidthsCache.access(),K=this.indexCache.access(),Q=this.dict.context;this.dict.set(k.of("W"),Q.obj(X)),this.dict.set(k.of("Index"),Q.obj(K))},q.create=function(X,K){if(K===void 0)K=!0;var Q=new q(X,[],K);return Q.addDeletedEntry(a.of(0,65535),0),Q},q.of=function(X,K,Q){if(Q===void 0)Q=!0;return new q(X,K,Q)},q}(N5),Yq=vJ;var RJ=function(V){A(q,V);function q(X,K,Q,Y){var J=V.call(this,X,K)||this;return J.encodeStreams=Q,J.objectsPerStream=Y,J}return q.prototype.computeBufferSize=function(){return _(this,void 0,void 0,function(){var X,K,Q,Y,J,G,W,Z,M,L,U,j,H,z,B,I,M,L,B,j,O,N,R,v;return c(this,function(w){switch(w.label){case 0:X=this.context.largestObjectNumber+1,K=_6.forVersion(1,7),Q=K.sizeInBytes()+2,Y=Yq.create(this.createTrailerDict(),this.encodeStreams),J=[],G=[],W=[],Z=this.context.enumerateIndirectObjects(),M=0,L=Z.length,w.label=1;case 1:if(!(M"},q.prototype.sizeInBytes=function(){return this.value.length+2},q.prototype.copyBytesInto=function(X,K){return X[K++]=E.LessThan,K+=I0(this.value,X,K),X[K++]=E.GreaterThan,this.value.length+2},q.of=function(X){return new q(X)},q.fromText=function(X){var K=E4(X),Q="";for(var Y=0,J=K.length;Y1)J.push(G),J.push(H.ref.objectNumber),G=0;G+=1}return J.push(G),J},Y.computeEntryTuples=function(){var J=Array(Y.entries.length);for(var G=0,W=Y.entries.length;GG[0])G[0]=M;if(j>G[1])G[1]=j;if(B>G[2])G[2]=B}return G},Y.entries=K||[],Y.entryTuplesCache=m0.populatedBy(Y.computeEntryTuples),Y.maxByteWidthsCache=m0.populatedBy(Y.computeMaxEntryByteWidths),Y.indexCache=m0.populatedBy(Y.computeIndex),V.set(I.of("Type"),I.of("XRef")),Y}return X.prototype.addDeletedEntry=function(V,K){var Q=y6.Deleted;this.entries.push({type:Q,ref:V,nextFreeObjectNumber:K}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},X.prototype.addUncompressedEntry=function(V,K){var Q=y6.Uncompressed;this.entries.push({type:Q,ref:V,offset:K}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},X.prototype.addCompressedEntry=function(V,K,Q){var Y=y6.Compressed;this.entries.push({type:Y,ref:V,objectStreamRef:K,index:Q}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},X.prototype.clone=function(V){var K=this,Q=K.dict,Y=K.entries,J=K.encode;return X.of(Q.clone(V),Y.slice(),J)},X.prototype.getContentsString=function(){var V=this.entryTuplesCache.access(),K=this.maxByteWidthsCache.access(),Q="";for(var Y=0,J=V.length;Y=0;M--)Q+=(U[M]||0).toString(2);for(var M=K[1]-1;M>=0;M--)Q+=(z[M]||0).toString(2);for(var M=K[2]-1;M>=0;M--)Q+=(k[M]||0).toString(2)}return Q},X.prototype.getUnencodedContents=function(){var V=this.entryTuplesCache.access(),K=this.maxByteWidthsCache.access(),Q=new Uint8Array(this.getUnencodedContentsSize()),Y=0;for(var J=0,G=V.length;J=0;j--)Q[Y++]=z[j]||0;for(var j=K[1]-1;j>=0;j--)Q[Y++]=k[j]||0;for(var j=K[2]-1;j>=0;j--)Q[Y++]=M[j]||0}return Q},X.prototype.getUnencodedContentsSize=function(){var V=this.maxByteWidthsCache.access(),K=z4(V);return K*this.entries.length},X.prototype.updateDict=function(){q.prototype.updateDict.call(this);var V=this.maxByteWidthsCache.access(),K=this.indexCache.access(),Q=this.dict.context;this.dict.set(I.of("W"),Q.obj(V)),this.dict.set(I.of("Index"),Q.obj(K))},X.create=function(V,K){if(K===void 0)K=!0;var Q=new X(V,[],K);return Q.addDeletedEntry(a.of(0,65535),0),Q},X.of=function(V,K,Q){if(Q===void 0)Q=!0;return new X(V,K,Q)},X}(N6),Yq=SG;var yG=function(q){A(X,q);function X(V,K,Q,Y){var J=q.call(this,V,K)||this;return J.encodeStreams=Q,J.objectsPerStream=Y,J}return X.prototype.computeBufferSize=function(){return _(this,void 0,void 0,function(){var V,K,Q,Y,J,G,W,Z,M,j,H,L,U,z,B,k,M,j,B,L,O,N,R,v;return c(this,function(w){switch(w.label){case 0:V=this.context.largestObjectNumber+1,K=_2.forVersion(1,7),Q=K.sizeInBytes()+2,Y=Yq.create(this.createTrailerDict(),this.encodeStreams),J=[],G=[],W=[],Z=this.context.enumerateIndirectObjects(),M=0,j=Z.length,w.label=1;case 1:if(!(M"},X.prototype.sizeInBytes=function(){return this.value.length+2},X.prototype.copyBytesInto=function(V,K){return V[K++]=E.LessThan,K+=k0(this.value,V,K),V[K++]=E.GreaterThan,this.value.length+2},X.of=function(V){return new X(V)},X.fromText=function(V){var K=E4(V),Q="";for(var Y=0,J=K.length;Y endcodespacerange -`+V.length+` beginbfchar -`+V.map(function(q){var X=q[0],K=q[1];return X+" "+K}).join(` +`+q.length+` beginbfchar +`+q.map(function(X){var V=X[0],K=X[1];return V+" "+K}).join(` `)+` endbfchar endcmap CMapName currentdict /CMap defineresource pop end -end`},U3=function(){var V=[];for(var q=0;q"},Gq=function(V){return D6(V,4)},NJ=function(V){if(L4(V))return Gq(V);if(j4(V)){var q=D1(V),X=u1(V);return""+Gq(q)+Gq(X)}var K=u6(V),Q="0x"+K+" is not a valid UTF-8 or UTF-16 codepoint.";throw new Error(Q)};var SJ=function(V){var q=0,X=function(K){q|=1<=E.Zero&&Z<=E.Seven){if(K+=W,K.length===3||!(U>="0"&&U<="7"))Y(parseInt(K,8)),K=""}else Y(Z)}return new Uint8Array(X)},q.prototype.decodeText=function(){var X=this.asBytes();if(b2(X))return x2(X);return J1(X)},q.prototype.decodeDate=function(){var X=this.decodeText(),K=P2(X);if(!K)throw new G1(X);return K},q.prototype.asString=function(){return this.value},q.prototype.clone=function(){return q.of(this.value)},q.prototype.toString=function(){return"("+this.value+")"},q.prototype.sizeInBytes=function(){return this.value.length+2},q.prototype.copyBytesInto=function(X,K){return X[K++]=E.LeftParen,K+=I0(this.value,X,K),X[K++]=E.RightParen,this.value.length+2},q.of=function(X){return new q(X)},q.fromDate=function(X){var K=e0(String(X.getUTCFullYear()),4,"0"),Q=e0(String(X.getUTCMonth()+1),2,"0"),Y=e0(String(X.getUTCDate()),2,"0"),J=e0(String(X.getUTCHours()),2,"0"),G=e0(String(X.getUTCMinutes()),2,"0"),W=e0(String(X.getUTCSeconds()),2,"0");return new q("D:"+K+Q+Y+J+G+W+"Z")},q}(z0),K0=yJ;var $J=function(){function V(q,X,K,Q){var Y=this;this.allGlyphsInFontSortedById=function(){var J=new Array(Y.font.characterSet.length);for(var G=0,W=J.length;G>3)]>>7-((M&7)<<0)&1,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(U==2)for(var S=0;S>2)]>>6-((M&3)<<1)&3,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(U==4)for(var S=0;S>1)]>>4-((M&1)<<2)&15,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(U==8)for(var M=0;M>>3)]>>>7-(r&7)&1),k0=u==j*255?0:255;W[J0+r]=k0<<24|u<<16|u<<8|u}else if(U==2)for(var r=0;r>>2)]>>>6-((r&3)<<1)&3),k0=u==j*85?0:255;W[J0+r]=k0<<24|u<<16|u<<8|u}else if(U==4)for(var r=0;r>>1)]>>>4-((r&1)<<2)&15),k0=u==j*17?0:255;W[J0+r]=k0<<24|u<<16|u<<8|u}else if(U==8)for(var r=0;r>>2<<3);while(Q==0){if(Q=B(q,z,1),Y=B(q,z+1,2),z+=3,Y==0){if((z&7)!=0)z+=8-(z&7);var S=(z>>>3)+4,h=q[S-4]|q[S-3]<<8;if($)X=V.H.W(X,H+h);X.set(new K(q.buffer,q.byteOffset+S,h),H),z=S+h<<3,H+=h;continue}if($)X=V.H.W(X,H+131072);if(Y==1)I=w.J,M=w.h,Z=511,U=31;if(Y==2){J=j(q,z,5)+257,G=j(q,z+5,5)+1,W=j(q,z+10,4)+4,z+=14;var b=z,C=1;for(var D=0;D<38;D+=2)w.Q[D]=0,w.Q[D+1]=0;for(var D=0;DC)C=l}z+=3*W,N(w.Q,C),R(w.Q,C,w.u),I=w.w,M=w.d,z=O(w.u,(1<>>4;if(r>>>8==0)X[H++]=r;else if(r==256)break;else{var k0=H+r-254;if(r>264){var n0=w.q[r-257];k0=H+(n0>>>3)+j(q,z,n0&7),z+=n0&7}var N2=M[v(q,z)&U];z+=N2&15;var S2=N2>>>4,y6=w.c[S2],Z6=(y6>>>4)+B(q,z,y6&15);z+=y6&15;while(H>>4;if(H<=15)J[Z]=H,Z++;else{var z=0,I=0;if(H==16)I=3+G(Q,Y,2),Y+=2,z=J[Z-1];else if(H==17)I=3+G(Q,Y,3),Y+=3;else if(H==18)I=11+G(Q,Y,7),Y+=7;var M=Z+I;while(Z>>1;while(JY)Y=W;J++}while(J>1,Z=q[G+1],U=W<<4|Z,H=X-Z,z=q[G]<>>15-X;K[M]=U,z++}}},V.H.l=function(q,X){var K=V.H.m.r,Q=15-X;for(var Y=0;Y>>Q}},V.H.M=function(q,X,K){K=K<<(X&7);var Q=X>>>3;q[Q]|=K,q[Q+1]|=K>>>8},V.H.I=function(q,X,K){K=K<<(X&7);var Q=X>>>3;q[Q]|=K,q[Q+1]|=K>>>8,q[Q+2]|=K>>>16},V.H.e=function(q,X,K){return(q[X>>>3]|q[(X>>>3)+1]<<8)>>>(X&7)&(1<>>3]|q[(X>>>3)+1]<<8|q[(X>>>3)+2]<<16)>>>(X&7)&(1<>>3]|q[(X>>>3)+1]<<8|q[(X>>>3)+2]<<16)>>>(X&7)},V.H.i=function(q,X){return(q[X>>>3]|q[(X>>>3)+1]<<8|q[(X>>>3)+2]<<16|q[(X>>>3)+3]<<24)>>>(X&7)},V.H.m=function(){var q=Uint16Array,X=Uint32Array;return{K:new q(16),j:new q(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new q(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new X(32),J:new q(512),_:[],h:new q(32),$:[],w:new q(32768),C:[],v:[],d:new q(32768),D:[],u:new q(512),Q:[],r:new q(32768),s:new X(286),Y:new X(30),a:new X(19),t:new X(15000),k:new q(65536),g:new q(32768)}}(),function(){var q=V.H.m,X=32768;for(var K=0;K>>1|(Q&1431655765)<<1,Q=(Q&3435973836)>>>2|(Q&858993459)<<2,Q=(Q&4042322160)>>>4|(Q&252645135)<<4,Q=(Q&4278255360)>>>8|(Q&16711935)<<8,q.r[K]=(Q>>>16|Q<<16)>>>17}function Y(J,G,W){while(G--!=0)J.push(0,W)}for(var K=0;K<32;K++)q.q[K]=q.S[K]<<3|q.T[K],q.c[K]=q.p[K]<<4|q.z[K];Y(q._,144,8),Y(q._,112,9),Y(q._,24,7),Y(q._,8,8),V.H.n(q._,9),V.H.A(q._,9,q.J),V.H.l(q._,9),Y(q.$,32,5),V.H.n(q.$,5),V.H.A(q.$,5,q.h),V.H.l(q.$,5),Y(q.Q,19,0),Y(q.C,286,0),Y(q.D,30,0),Y(q.v,320,0)}(),V.H.N}();P.decode._readInterlace=function(V,q){var{width:X,height:K}=q,Q=P.decode._getBPP(q),Y=Q>>3,J=Math.ceil(X*Q/8),G=new Uint8Array(K*J),W=0,Z=[0,0,4,0,2,0,1],U=[0,4,0,2,0,1,0],H=[8,8,8,4,4,2,2],z=[8,8,4,4,2,2,1],I=0;while(I<7){var M=H[I],L=z[I],B=0,j=0,O=Z[I];while(O>3];h=h>>7-(S&7)&1,G[w*J+($>>3)]|=h<<7-(($&7)<<0)}if(Q==2){var h=V[S>>3];h=h>>6-(S&7)&3,G[w*J+($>>2)]|=h<<6-(($&3)<<1)}if(Q==4){var h=V[S>>3];h=h>>4-(S&7)&15,G[w*J+($>>1)]|=h<<4-(($&1)<<2)}if(Q>=8){var b=w*J+$*Y;for(var C=0;C>3)+C]}S+=Q,$+=L}v++,w+=M}if(B*j!=0)W+=j*(1+R);I=I+1}return G};P.decode._getBPP=function(V){var q=[1,null,3,1,2,null,4][V.ctype];return q*V.depth};P.decode._filterZero=function(V,q,X,K,Q){var Y=P.decode._getBPP(q),J=Math.ceil(K*Y/8),G=P.decode._paeth;Y=Math.ceil(Y/8);var W=0,Z=1,U=V[X],H=0;if(U>1)V[X]=[0,0,1][U-2];if(U==3)for(H=Y;H>>1)&255;for(var z=0;z>>1);for(;H>>1)}else{for(;H>8&255,V[q+1]=X&255},readUint:function(V,q){return V[q]*16777216+(V[q+1]<<16|V[q+2]<<8|V[q+3])},writeUint:function(V,q,X){V[q]=X>>24&255,V[q+1]=X>>16&255,V[q+2]=X>>8&255,V[q+3]=X&255},readASCII:function(V,q,X){var K="";for(var Q=0;Q=0&&G>=0)H=I*q+M<<2,z=(G+I)*Q+J+M<<2;else H=(-G+I)*q-J+M<<2,z=I*Q+M<<2;if(W==0)K[z]=V[H],K[z+1]=V[H+1],K[z+2]=V[H+2],K[z+3]=V[H+3];else if(W==1){var L=V[H+3]*0.00392156862745098,B=V[H]*L,j=V[H+1]*L,O=V[H+2]*L,N=K[z+3]*0.00392156862745098,R=K[z]*N,v=K[z+1]*N,w=K[z+2]*N,$=1-L,S=L+N*$,h=S==0?0:1/S;K[z+3]=255*S,K[z+0]=(B+R*$)*h,K[z+1]=(j+v*$)*h,K[z+2]=(O+w*$)*h}else if(W==2){var L=V[H+3],B=V[H],j=V[H+1],O=V[H+2],N=K[z+3],R=K[z],v=K[z+1],w=K[z+2];if(L==N&&B==R&&j==v&&O==w)K[z]=0,K[z+1]=0,K[z+2]=0,K[z+3]=0;else K[z]=B,K[z+1]=j,K[z+2]=O,K[z+3]=L}else if(W==3){var L=V[H+3],B=V[H],j=V[H+1],O=V[H+2],N=K[z+3],R=K[z],v=K[z+1],w=K[z+2];if(L==N&&B==R&&j==v&&O==w)continue;if(L<220&&N>20)return!1}}return!0};P.encode=function(V,q,X,K,Q,Y,J){if(K==null)K=0;if(J==null)J=!1;var G=P.encode.compress(V,q,X,K,[!1,!1,!1,0,J]);return P.encode.compressPNG(G,-1),P.encode._main(G,q,X,Q,Y)};P.encodeLL=function(V,q,X,K,Q,Y,J,G){var W={ctype:0+(K==1?0:2)+(Q==0?0:4),depth:Y,frames:[]},Z=Date.now(),U=(K+Q)*Y,H=U*q;for(var z=0;z1,H=!1,z=33+(U?20:0);if(Q.sRGB!=null)z+=13;if(Q.pHYs!=null)z+=21;if(V.ctype==3){var I=V.plte.length;for(var M=0;M>>24!=255)H=!0;z+=8+I*3+4+(H?8+I*1+4:0)}for(var L=0;L>>8&255,$=R>>>16&255;j[Z+N+0]=v,j[Z+N+1]=w,j[Z+N+2]=$}if(Z+=I*3,J(j,Z,Y(j,Z-I*3-4,I*3+4)),Z+=4,H){J(j,Z,I),Z+=4,W(j,Z,"tRNS"),Z+=4;for(var M=0;M>>24&255;Z+=I,J(j,Z,Y(j,Z-I-4,I+4)),Z+=4}}var S=0;for(var L=0;L>2,D>>2));for(var I=0;Iq0&&r==u[B-q0])J0[B]=J0[B-q0];else{var k0=N[r];if(k0==null){if(N[r]=k0=R.length,R.push(r),R.length>=300)break}J0[B]=k0}}}var n0=R.length;if(n0<=256&&Z==!1){if(n0<=2)H=1;else if(n0<=4)H=2;else if(n0<=16)H=4;else H=8;H=Math.max(H,W)}for(var I=0;I>1)]|=N1[y1+R0]<<4-(R0&1)*4;else if(H==2)for(var R0=0;R0>2)]|=N1[y1+R0]<<6-(R0&3)*2;else if(H==1)for(var R0=0;R0>3)]|=N1[y1+R0]<<7-(R0&7)*1}Z6=$6,U=3,bq=1}else if(j==!1&&O.length==1){var $6=new Uint8Array(q0*y6*3),p3=q0*y6;for(var B=0;B$)$=b;if(hS)S=h}}if($==-1)v=w=$=S=0;if(Q){if((v&1)==1)v--;if((w&1)==1)w--}var D=($-v+1)*(S-w+1);if(DB)B=R;if(vj)j=v}}if(B==-1)M=L=B=j=0;if(J){if((M&1)==1)M--;if((L&1)==1)L--}Y={x:M,y:L,width:B-M+1,height:j-L+1};var S=K[Q];if(S.rect=Y,S.blend=1,S.img=new Uint8Array(Y.width*Y.height*4),K[Q-1].dispose==0)P._copyTile(Z,q,X,S.img,Y.width,Y.height,-Y.x,-Y.y,0),P.encode._prepareDiff(z,q,X,S.img,Y);else P._copyTile(z,q,X,S.img,Y.width,Y.height,-Y.x,-Y.y,0)};P.encode._prepareDiff=function(V,q,X,K,Q){P._copyTile(V,q,X,K,Q.width,Q.height,-Q.x,-Q.y,2)};P.encode._filterZero=function(V,q,X,K,Q,Y,J){var G=[],W=[0,1,2,3,4];if(Y!=-1)W=[Y];else if(q*K>500000||X==1)W=[0];var Z;if(J)Z={level:0};var U=J&&UZIP!=null?UZIP:I3.default;for(var H=0;H>1)+256&255;if(Y==4)for(var Z=Q;Z>1)&255;for(var Z=Q;Z>1)&255}if(Y==4){for(var Z=0;Z>>1;else X=X>>>1;V[q]=X}return V}(),update:function(V,q,X,K){for(var Q=0;Q>>8;return V},crc:function(V,q,X){return P.crc.update(4294967295,V,q,X)^4294967295}};P.quantize=function(V,q){var X=new Uint8Array(V),K=X.slice(0),Q=new Uint32Array(K.buffer),Y=P.quantize.getKDtree(K,q),J=Y[0],G=Y[1],W=P.quantize.planeDst,Z=X,U=Q,H=Z.length,z=new Uint8Array(X.length>>2);for(var I=0;I>2]=O.ind,U[I>>2]=O.est.rgba}return{abuf:K.buffer,inds:z,plte:G}};P.quantize.getKDtree=function(V,q,X){if(X==null)X=0.0001;var K=new Uint32Array(V.buffer),Q={i0:0,i1:V.length,bst:null,est:null,tdst:0,left:null,right:null};Q.bst=P.quantize.stats(V,Q.i0,Q.i1),Q.est=P.quantize.estats(Q.bst);var Y=[Q];while(Y.lengthJ)J=Y[W].est.L,G=W;if(J=U||Z.i1<=U;if(H){Z.est.L=0;continue}var z={i0:Z.i0,i1:U,bst:null,est:null,tdst:0,left:null,right:null};z.bst=P.quantize.stats(V,z.i0,z.i1),z.est=P.quantize.estats(z.bst);var I={i0:U,i1:Z.i1,bst:null,est:null,tdst:0,left:null,right:null};I.bst={R:[],m:[],N:Z.bst.N-z.bst.N};for(var W=0;W<16;W++)I.bst.R[W]=Z.bst.R[W]-z.bst.R[W];for(var W=0;W<4;W++)I.bst.m[W]=Z.bst.m[W]-z.bst.m[W];I.est=P.quantize.estats(I.bst),Z.left=z,Z.right=I,Y[G]=z,Y.push(I)}Y.sort(function(M,L){return L.bst.N-M.bst.N});for(var W=0;W0)J=V.right,G=V.left;var W=P.quantize.getNearest(J,q,X,K,Q);if(W.tdst<=Y*Y)return W;var Z=P.quantize.getNearest(G,q,X,K,Q);return Z.tdstY)K-=4;if(X>=K)break;var W=q[X>>2];q[X>>2]=q[K>>2],q[K>>2]=W,X+=4,K-=4}while(J(V,X,Q)>Y)X-=4;return X+4};P.quantize.vecDot=function(V,q,X){return V[q]*X[0]+V[q+1]*X[1]+V[q+2]*X[2]+V[q+3]*X[3]};P.quantize.stats=function(V,q,X){var K=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],Q=[0,0,0,0],Y=X-q>>2;for(var J=q;J>>0}};P.M4={multVec:function(V,q){return[V[0]*q[0]+V[1]*q[1]+V[2]*q[2]+V[3]*q[3],V[4]*q[0]+V[5]*q[1]+V[6]*q[2]+V[7]*q[3],V[8]*q[0]+V[9]*q[1]+V[10]*q[2]+V[11]*q[3],V[12]*q[0]+V[13]*q[1]+V[14]*q[2]+V[15]*q[3]]},dot:function(V,q){return V[0]*q[0]+V[1]*q[1]+V[2]*q[2]+V[3]*q[3]},sml:function(V,q){return[V*q[0],V*q[1],V*q[2],V*q[3]]}};P.encode.concatRGBA=function(V){var q=0;for(var X=0;X1)throw new Error("Animated PNGs are not supported");var Q=new Uint8Array(K[0]),Y=uJ(Q),J=Y.rgbChannel,G=Y.alphaChannel;this.rgbChannel=J;var W=G.some(function(Z){return Z<255});if(W)this.alphaChannel=G;this.type=DJ(X.ctype),this.width=X.width,this.height=X.height,this.bitsPerComponent=8}return V.load=function(q){return new V(q)},V}();var gJ=function(){function V(q){this.image=q,this.bitsPerComponent=q.bitsPerComponent,this.width=q.width,this.height=q.height,this.colorSpace="DeviceRGB"}return V.for=function(q){return _(this,void 0,void 0,function(){var X;return c(this,function(K){return X=k3.load(q),[2,new V(X)]})})},V.prototype.embedIntoContext=function(q,X){return _(this,void 0,void 0,function(){var K,Q;return c(this,function(Y){if(K=this.embedAlphaChannel(q),Q=q.flateStream(this.image.rgbChannel,{Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bitsPerComponent,Width:this.image.width,Height:this.image.height,ColorSpace:this.colorSpace,SMask:K}),X)return q.assign(X,Q),[2,X];else return[2,q.register(Q)];return[2]})})},V.prototype.embedAlphaChannel=function(q){if(!this.image.alphaChannel)return;var X=q.flateStream(this.image.alphaChannel,{Type:"XObject",Subtype:"Image",Height:this.image.height,Width:this.image.width,BitsPerComponent:this.image.bitsPerComponent,ColorSpace:"DeviceGray",Decode:[0,1]});return q.register(X)},V}(),X2=gJ;var xJ=function(){function V(q,X,K){this.bytes=q,this.start=X||0,this.pos=this.start,this.end=!!X&&!!K?X+K:this.bytes.length}return Object.defineProperty(V.prototype,"length",{get:function(){return this.end-this.start},enumerable:!1,configurable:!0}),Object.defineProperty(V.prototype,"isEmpty",{get:function(){return this.length===0},enumerable:!1,configurable:!0}),V.prototype.getByte=function(){if(this.pos>=this.end)return-1;return this.bytes[this.pos++]},V.prototype.getUint16=function(){var q=this.getByte(),X=this.getByte();if(q===-1||X===-1)return-1;return(q<<8)+X},V.prototype.getInt32=function(){var q=this.getByte(),X=this.getByte(),K=this.getByte(),Q=this.getByte();return(q<<24)+(X<<16)+(K<<8)+Q},V.prototype.getBytes=function(q,X){if(X===void 0)X=!1;var K=this.bytes,Q=this.pos,Y=this.end;if(!q){var J=K.subarray(Q,Y);return X?new Uint8ClampedArray(J):J}else{var G=Q+q;if(G>Y)G=Y;this.pos=G;var J=K.subarray(Q,G);return X?new Uint8ClampedArray(J):J}},V.prototype.peekByte=function(){var q=this.getByte();return this.pos--,q},V.prototype.peekBytes=function(q,X){if(X===void 0)X=!1;var K=this.getBytes(q,X);return this.pos-=K.length,K},V.prototype.skip=function(q){if(!q)q=1;this.pos+=q},V.prototype.reset=function(){this.pos=this.start},V.prototype.moveStart=function(){this.start=this.pos},V.prototype.makeSubStream=function(q,X){return new V(this.bytes,q,X)},V.prototype.decode=function(){return this.bytes},V}(),Uq=xJ;var bJ=new Uint8Array(0),mJ=function(){function V(q){if(this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=bJ,this.minBufferLength=512,q)while(this.minBufferLengthY)K=Y}else{while(!this.eof)this.readBlock();K=this.bufferLength}this.pos=K;var J=this.buffer.subarray(Q,K);return X&&!(J instanceof Uint8ClampedArray)?new Uint8ClampedArray(J):J},V.prototype.peekByte=function(){var q=this.getByte();return this.pos--,q},V.prototype.peekBytes=function(q,X){if(X===void 0)X=!1;var K=this.getBytes(q,X);return this.pos-=K.length,K},V.prototype.skip=function(q){if(!q)q=1;this.pos+=q},V.prototype.reset=function(){this.pos=0},V.prototype.makeSubStream=function(q,X){var K=q+X;while(this.bufferLength<=K&&!this.eof)this.readBlock();return new Uq(this.buffer,q,X)},V.prototype.decode=function(){while(!this.eof)this.readBlock();return this.buffer.subarray(0,this.bufferLength)},V.prototype.readBlock=function(){throw new u0(this.constructor.name,"readBlock")},V.prototype.ensureBuffer=function(q){var X=this.buffer;if(q<=X.byteLength)return X;var K=this.minBufferLength;while(K=0;--Z)W[G+Z]=H&255,H>>=8}},q}(d6),L3=fJ;var lJ=function(V){A(q,V);function q(X,K){var Q=V.call(this,K)||this;if(Q.stream=X,Q.firstDigit=-1,K)K=0.5*K;return Q}return q.prototype.readBlock=function(){var X=8000,K=this.stream.getBytes(X);if(!K.length){this.eof=!0;return}var Q=K.length+1>>1,Y=this.ensureBuffer(this.bufferLength+Q),J=this.bufferLength,G=this.firstDigit;for(var W=0,Z=K.length;W=48&&U<=57)H=U&15;else if(U>=65&&U<=70||U>=97&&U<=102)H=(U&15)+9;else if(U===62){this.eof=!0;break}else continue;if(G<0)G=H;else Y[J++]=G<<4|H,G=-1}if(G>=0&&this.eof)Y[J++]=G<<4,G=-1;this.firstDigit=G,this.bufferLength=J},q}(d6),j3=lJ;var B3=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_J=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),cJ=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),pJ=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,590000,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],dJ=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5],nJ=function(V){A(q,V);function q(X,K){var Q=V.call(this,K)||this;Q.stream=X;var Y=X.getByte(),J=X.getByte();if(Y===-1||J===-1)throw new Error("Invalid header in flate stream: "+Y+", "+J);if((Y&15)!==8)throw new Error("Unknown compression method in flate stream: "+Y+", "+J);if(((Y<<8)+J)%31!==0)throw new Error("Bad FCHECK in flate stream: "+Y+", "+J);if(J&32)throw new Error("FDICT bit set in flate stream: "+Y+", "+J);return Q.codeSize=0,Q.codeBuf=0,Q}return q.prototype.readBlock=function(){var X,K,Q=this.stream,Y=this.getBits(3);if(Y&1)this.eof=!0;if(Y>>=1,Y===0){var J=void 0;if((J=Q.getByte())===-1)throw new Error("Bad block header in flate stream");var G=J;if((J=Q.getByte())===-1)throw new Error("Bad block header in flate stream");if(G|=J<<8,(J=Q.getByte())===-1)throw new Error("Bad block header in flate stream");var W=J;if((J=Q.getByte())===-1)throw new Error("Bad block header in flate stream");if(W|=J<<8,W!==(~G&65535)&&(G!==0||W!==0))throw new Error("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;var Z=this.bufferLength;X=this.ensureBuffer(Z+G);var U=Z+G;if(this.bufferLength=U,G===0){if(Q.peekByte()===-1)this.eof=!0}else for(var H=Z;H0)v[O++]=S}z=this.generateHuffmanTable(v.subarray(0,M)),I=this.generateHuffmanTable(v.subarray(M,R))}else throw new Error("Unknown block type in flate stream");X=this.buffer;var C=X?X.length:0,D=this.bufferLength;while(!0){var l=this.getCode(z);if(l<256){if(D+1>=C)X=this.ensureBuffer(D+1),C=X.length;X[D++]=l;continue}if(l===256){this.bufferLength=D;return}l-=257,l=_J[l];var u=l>>16;if(u>0)u=this.getBits(u);if(K=(l&65535)+u,l=this.getCode(I),l=cJ[l],u=l>>16,u>0)u=this.getBits(u);var q0=(l&65535)+u;if(D+K>=C)X=this.ensureBuffer(D+K),C=X.length;for(var J0=0;J0>X,this.codeSize=Q-=X,J},q.prototype.getCode=function(X){var K=this.stream,Q=X[0],Y=X[1],J=this.codeSize,G=this.codeBuf,W;while(J>16,H=Z&65535;if(U<1||J>U,this.codeSize=J-U,H},q.prototype.generateHuffmanTable=function(X){var K=X.length,Q=0,Y;for(Y=0;YQ)Q=X[Y];var J=1<>=1;for(Y=z;Y0;if(!v||v<256)B[0]=v,j=1;else if(v>=258)if(v=0;J--)B[J]=H[G],G=I[G]}else B[j++]=B[0];else if(v===256){M=9,U=258,j=0;continue}else{this.eof=!0,delete this.lzwState;break}if(w)I[U]=L,z[U]=z[L]+1,H[U]=B[0],U++,M=U+Z&U+Z-1?M:Math.min(Math.log(U+Z)/0.6931471805599453+1,12)|0;if(L=v,O+=j,K>>K&(1<0){var J=this.stream.getBytes(Y);K.set(J,Q),Q+=Y}}else{Y=257-Y;var G=X[1];K=this.ensureBuffer(Q+Y+1);for(var W=0;WK.size())throw new Y8(X,0,K.size());K.remove(X)}},q.prototype.normalizedEntries=function(){var X=this.Kids();if(!X)X=this.dict.context.obj([this.ref]),this.dict.set(k.of("Kids"),X);return{Kids:X}},q.fromDict=function(X,K){return new q(X,K)},q}(Y2),K6=YG;var JG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.prototype.Opt=function(){return this.dict.lookupMaybe(k.of("Opt"),K0,g,i)},q.prototype.setOpt=function(X){this.dict.set(k.of("Opt"),this.dict.context.obj(X))},q.prototype.getExportValues=function(){var X=this.Opt();if(!X)return;if(X instanceof K0||X instanceof g)return[X];var K=[];for(var Q=0,Y=X.size();QK.size())throw new Y8(X,0,K.size());K.remove(X)}},q.prototype.normalizeExportValues=function(){var X,K,Q,Y,J=(X=this.getExportValues())!==null&&X!==void 0?X:[],G=[],W=this.getWidgets();for(var Z=0,U=W.length;Z1){if(!this.hasFlag(G0.MultiSelect))throw new W7;this.dict.set(k.of("V"),this.dict.context.obj(X))}this.updateSelectedIndices(X)},q.prototype.valuesAreValid=function(X){var K=this.getOptions(),Q=function(W,Z){var U=X[W].decodeText();if(!K.find(function(H){return U===(H.display||H.value).decodeText()}))return{value:!1}};for(var Y=0,J=X.length;Y1){var K=new Array(X.length),Q=this.getOptions(),Y=function(W,Z){var U=X[W].decodeText();K[W]=Q.findIndex(function(H){return U===(H.display||H.value).decodeText()})};for(var J=0,G=X.length;J0){var G=J.lookup(0,K0,g),W=J.lookupMaybe(1,K0,g);K.push({value:G,display:W||G})}}}return K}return[]},q}(K6),G2=ZG;var WG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.fromDict=function(X,K){return new q(X,K)},q.create=function(X){var K=X.obj({FT:"Ch",Ff:G0.Combo,Kids:[]}),Q=X.register(K);return new q(K,Q)},q}(G2),Q5=WG;var UG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.prototype.addField=function(X){var K=this.normalizedEntries().Kids;K===null||K===void 0||K.push(X)},q.prototype.normalizedEntries=function(){var X=this.Kids();if(!X)X=this.dict.context.obj([]),this.dict.set(k.of("Kids"),X);return{Kids:X}},q.fromDict=function(X,K){return new q(X,K)},q.create=function(X){var K=X.obj({}),Q=X.register(K);return new q(K,Q)},q}(Y2),Y5=UG;var HG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.fromDict=function(X,K){return new q(X,K)},q}(K6),F5=HG;var zG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.prototype.MaxLen=function(){var X=this.dict.lookup(k.of("MaxLen"));if(X instanceof x)return X;return},q.prototype.Q=function(){var X=this.dict.lookup(k.of("Q"));if(X instanceof x)return X;return},q.prototype.setMaxLength=function(X){this.dict.set(k.of("MaxLen"),x.of(X))},q.prototype.removeMaxLength=function(){this.dict.delete(k.of("MaxLen"))},q.prototype.getMaxLength=function(){var X;return(X=this.MaxLen())===null||X===void 0?void 0:X.asNumber()},q.prototype.setQuadding=function(X){this.dict.set(k.of("Q"),x.of(X))},q.prototype.getQuadding=function(){var X;return(X=this.Q())===null||X===void 0?void 0:X.asNumber()},q.prototype.setValue=function(X){this.dict.set(k.of("V"),X)},q.prototype.removeValue=function(){this.dict.delete(k.of("V"))},q.prototype.getValue=function(){var X=this.V();if(X instanceof K0||X instanceof g)return X;return},q.fromDict=function(X,K){return new q(X,K)},q.create=function(X){var K=X.obj({FT:"Tx",Kids:[]}),Q=X.register(K);return new q(K,Q)},q}(K6),J5=zG;var MG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.fromDict=function(X,K){return new q(X,K)},q.create=function(X){var K=X.obj({FT:"Btn",Ff:f0.PushButton,Kids:[]}),Q=X.register(K);return new q(K,Q)},q}(h5),G5=MG;var IG=function(V){A(q,V);function q(){return V!==null&&V.apply(this,arguments)||this}return q.prototype.setValue=function(X){var K=this.getOnValues();if(!K.includes(X)&&X!==k.of("Off"))throw new J8;this.dict.set(k.of("V"),X);var Q=this.getWidgets();for(var Y=0,J=Q.length;YY)throw new qq(K,Y);var J=K;for(var G=0,W=Q.size();GJ)return U.insertLeafNode(X,J)||Z;else J-=U.Count().asNumber();if(U instanceof _0)J-=1}if(J===0){this.insertLeafKid(Q.size(),X);return}throw new Xq(K,"insertLeafNode")},q.prototype.removeLeafNode=function(X,K){if(K===void 0)K=!0;var Q=this.Kids(),Y=this.Count().asNumber();if(X>=Y)throw new qq(X,Y);var J=X;for(var G=0,W=Q.size();GJ){if(U.removeLeafNode(J,K),K&&U.Kids().size()===0)Q.remove(G);return}else J-=U.Count().asNumber();if(U instanceof _0)if(J===0){this.removeKid(G);return}else J-=1}throw new Xq(X,"removeLeafNode")},q.prototype.ascend=function(X){X(this);var K=this.Parent();if(K)K.ascend(X)},q.prototype.traverse=function(X){var K=this.Kids();for(var Q=0,Y=K.size();QNumber.MAX_SAFE_INTEGER)if(this.capNumbers){var Q="Parsed number that is too large for some PDF readers: "+q+", using Number.MAX_SAFE_INTEGER instead.";return console.warn(Q),Number.MAX_SAFE_INTEGER}else{var Q="Parsed number that is too large for some PDF readers: "+q+", not capping.";console.warn(Q)}return K},V.prototype.skipWhitespace=function(){while(!this.bytes.done()&&I6[this.bytes.peek()])this.bytes.next()},V.prototype.skipLine=function(){while(!this.bytes.done()){var q=this.bytes.peek();if(q===A3||q===N3)return;this.bytes.next()}},V.prototype.skipComment=function(){if(this.bytes.peek()!==E.Percent)return!1;while(!this.bytes.done()){var q=this.bytes.peek();if(q===A3||q===N3)return!0;this.bytes.next()}return!0},V.prototype.skipWhitespaceAndComments=function(){this.skipWhitespace();while(this.skipComment())this.skipWhitespace()},V.prototype.matchKeyword=function(q){var X=this.bytes.offset();for(var K=0,Q=q.length;K=this.length},V.prototype.offset=function(){return this.idx},V.prototype.slice=function(q,X){return this.bytes.slice(q,X)},V.prototype.position=function(){return{line:this.line,column:this.column,offset:this.idx}},V.of=function(q){return new V(q)},V.fromPDFRawStream=function(q){return V.of(V2(q).decode())},V}(),D5=wG;var AG=E.Space,H1=E.CarriageReturn,z1=E.Newline,M1=[E.s,E.t,E.r,E.e,E.a,E.m],Eq=[E.e,E.n,E.d,E.s,E.t,E.r,E.e,E.a,E.m],M0={header:[E.Percent,E.P,E.D,E.F,E.Dash],eof:[E.Percent,E.Percent,E.E,E.O,E.F],obj:[E.o,E.b,E.j],endobj:[E.e,E.n,E.d,E.o,E.b,E.j],xref:[E.x,E.r,E.e,E.f],trailer:[E.t,E.r,E.a,E.i,E.l,E.e,E.r],startxref:[E.s,E.t,E.a,E.r,E.t,E.x,E.r,E.e,E.f],true:[E.t,E.r,E.u,E.e],false:[E.f,E.a,E.l,E.s,E.e],null:[E.n,E.u,E.l,E.l],stream:M1,streamEOF1:Q0(M1,[AG,H1,z1]),streamEOF2:Q0(M1,[H1,z1]),streamEOF3:Q0(M1,[H1]),streamEOF4:Q0(M1,[z1]),endstream:Eq,EOF1endstream:Q0([H1,z1],Eq),EOF2endstream:Q0([H1],Eq),EOF3endstream:Q0([z1],Eq)};var NG=function(V){A(q,V);function q(X,K,Q){if(Q===void 0)Q=!1;var Y=V.call(this,X,Q)||this;return Y.context=K,Y}return q.prototype.parseObject=function(){if(this.skipWhitespaceAndComments(),this.matchKeyword(M0.true))return c6.True;if(this.matchKeyword(M0.false))return c6.False;if(this.matchKeyword(M0.null))return F0;var X=this.bytes.peek();if(X===E.LessThan&&this.bytes.peekAhead(1)===E.LessThan)return this.parseDictOrStream();if(X===E.LessThan)return this.parseHexString();if(X===E.LeftParen)return this.parseString();if(X===E.ForwardSlash)return this.parseName();if(X===E.LeftSquareBracket)return this.parseArray();if(U1[X])return this.parseNumberOrRef();throw new M7(this.bytes.position(),X)},q.prototype.parseNumberOrRef=function(){var X=this.parseRawNumber();this.skipWhitespaceAndComments();var K=this.bytes.offset();if(P0[this.bytes.peek()]){var Q=this.parseRawNumber();if(this.skipWhitespaceAndComments(),this.bytes.peek()===E.R)return this.bytes.assertNext(E.R),a.of(X,Q)}return this.bytes.moveTo(K),x.of(X)},q.prototype.parseHexString=function(){var X="";this.bytes.assertNext(E.LessThan);while(!this.bytes.done()&&this.bytes.peek()!==E.GreaterThan)X+=t0(this.bytes.next());return this.bytes.assertNext(E.GreaterThan),g.of(X)},q.prototype.parseString=function(){var X=0,K=!1,Q="";while(!this.bytes.done()){var Y=this.bytes.next();if(Q+=t0(Y),!K){if(Y===E.LeftParen)X+=1;if(Y===E.RightParen)X-=1}if(Y===E.BackSlash)K=!K;else if(K)K=!1;if(X===0)return K0.of(Q.substring(1,Q.length-1))}throw new E7(this.bytes.position())},q.prototype.parseName=function(){this.bytes.assertNext(E.ForwardSlash);var X="";while(!this.bytes.done()){var K=this.bytes.peek();if(I6[K]||V6[K])break;X+=t0(K),this.bytes.next()}return k.of(X)},q.prototype.parseArray=function(){this.bytes.assertNext(E.LeftSquareBracket),this.skipWhitespaceAndComments();var X=i.withContext(this.context);while(this.bytes.peek()!==E.RightSquareBracket){var K=this.parseObject();X.push(K),this.skipWhitespaceAndComments()}return this.bytes.assertNext(E.RightSquareBracket),X},q.prototype.parseDict=function(){this.bytes.assertNext(E.LessThan),this.bytes.assertNext(E.LessThan),this.skipWhitespaceAndComments();var X=new Map;while(!this.bytes.done()&&this.bytes.peek()!==E.GreaterThan&&this.bytes.peekAhead(1)!==E.GreaterThan){var K=this.parseName(),Q=this.parseObject();X.set(K,Q),this.skipWhitespaceAndComments()}this.skipWhitespaceAndComments(),this.bytes.assertNext(E.GreaterThan),this.bytes.assertNext(E.GreaterThan);var Y=X.get(k.of("Type"));if(Y===k.of("Catalog"))return W2.fromMapWithContext(X,this.context);else if(Y===k.of("Pages"))return U2.fromMapWithContext(X,this.context);else if(Y===k.of("Page"))return _0.fromMapWithContext(X,this.context);else return m.fromMapWithContext(X,this.context)},q.prototype.parseDictOrStream=function(){var X=this.bytes.position(),K=this.parseDict();if(this.skipWhitespaceAndComments(),!this.matchKeyword(M0.streamEOF1)&&!this.matchKeyword(M0.streamEOF2)&&!this.matchKeyword(M0.streamEOF3)&&!this.matchKeyword(M0.streamEOF4)&&!this.matchKeyword(M0.stream))return K;var Q=this.bytes.offset(),Y,J=K.get(k.of("Length"));if(J instanceof x){if(Y=Q+J.asNumber(),this.bytes.moveTo(Y),this.skipWhitespaceAndComments(),!this.matchKeyword(M0.endstream))this.bytes.moveTo(Q),Y=this.findEndOfStreamFallback(X)}else Y=this.findEndOfStreamFallback(X);var G=this.bytes.slice(Q,Y);return A6.of(K,G)},q.prototype.findEndOfStreamFallback=function(X){var K=1,Q=this.bytes.offset();while(!this.bytes.done()){if(Q=this.bytes.offset(),this.matchKeyword(M0.stream))K+=1;else if(this.matchKeyword(M0.EOF1endstream)||this.matchKeyword(M0.EOF2endstream)||this.matchKeyword(M0.EOF3endstream)||this.matchKeyword(M0.endstream))K-=1;else this.bytes.next();if(K===0)break}if(K!==0)throw new k7(X);return Q},q.forBytes=function(X,K,Q){return new q(D5.of(X),K,Q)},q.forByteStream=function(X,K,Q){if(Q===void 0)Q=!1;return new q(X,K,Q)},q}(S3),H2=NG;var SG=function(V){A(q,V);function q(X,K){var Q=V.call(this,D5.fromPDFRawStream(X),X.dict.context)||this,Y=X.dict;return Q.alreadyParsed=!1,Q.shouldWaitForTick=K||function(){return!1},Q.firstOffset=Y.lookup(k.of("First"),x).asNumber(),Q.objectCount=Y.lookup(k.of("N"),x).asNumber(),Q}return q.prototype.parseIntoContext=function(){return _(this,void 0,void 0,function(){var X,K,Q,Y,J,G,W,Z;return c(this,function(U){switch(U.label){case 0:if(this.alreadyParsed)throw new Q8("PDFObjectStreamParser","parseIntoContext");this.alreadyParsed=!0,X=this.parseOffsetsAndObjectNumbers(),K=0,Q=X.length,U.label=1;case 1:if(!(K=E.Space&&K<=E.Tilde;if(Q){if(this.matchKeyword(M0.xref)||this.matchKeyword(M0.trailer)||this.matchKeyword(M0.startxref)||this.matchIndirectObjectHeader()){this.bytes.moveTo(X);break}}this.bytes.next()}},q.prototype.skipBinaryHeaderComment=function(){this.skipWhitespaceAndComments();try{var X=this.bytes.offset();this.parseIndirectObjectHeader(),this.bytes.moveTo(X)}catch(K){this.bytes.next(),this.skipWhitespaceAndComments()}},q.forBytesWithOptions=function(X,K,Q,Y){return new q(X,K,Q,Y)},q}(H2),Bq=$G;var n6=function(V){return 1<0)K[K.length]=+Q;X[X.length]={cmd:q,args:K},K=[],Q="",Y=!1}q=Z}else if([" ",","].includes(Z)||Z==="-"&&Q.length>0&&Q[Q.length-1]!=="e"||Z==="."&&Y){if(Q.length===0)continue;if(K.length===J){if(X[X.length]={cmd:q,args:K},K=[+Q],q==="M")q="L";if(q==="m")q="l"}else K[K.length]=+Q;Y=Z===".",Q=["-","."].includes(Z)?Z:""}else if(Q+=Z,Z===".")Y=!0}if(Q.length>0)if(K.length===J){if(X[X.length]={cmd:q,args:K},K=[+Q],q==="M")q="L";if(q==="m")q="l"}else K[K.length]=+Q;return X[X.length]={cmd:q,args:K},X},pG=function(V){d=n=Z0=W0=v1=R1=0;var q=[];for(var X=0;X1)z=Math.sqrt(z),X*=z,K*=z;var I=H/X,M=U/X,L=-U/K,B=H/K,j=I*G+M*W,O=L*G+B*W,N=I*V+M*q,R=L*V+B*q,v=(N-j)*(N-j)+(R-O)*(R-O),w=1/v-0.25;if(w<0)w=0;var $=Math.sqrt(w);if(Y===Q)$=-$;var S=0.5*(j+N)-$*(R-O),h=0.5*(O+R)+$*(N-j),b=Math.atan2(O-h,j-S),C=Math.atan2(R-h,N-S),D=C-b;if(D<0&&Y===1)D+=2*Math.PI;else if(D>0&&Y===0)D-=2*Math.PI;var l=Math.ceil(Math.abs(D/(Math.PI*0.5+0.001))),u=[];for(var q0=0;q0V.length)return Q-1;var B=q.heightAtSize(Q),j=B+B*0.2,O=j*Y;if(O>Math.abs(X.height))return Q-1;Q+=1}return Q},sG=function(V,q,X,K){var Q=X.width/K,Y=X.height,J=m3,G=J4(V);while(JQ*0.75;if(H)return J-1}var z=q.heightAtSize(J,{descender:!1});if(z>Y)return J-1;J+=1}return J},tG=function(V){for(var q=V.length;q>0;q--)if(/\s/.test(V[q]))return q;return},eG=function(V,q,X,K){var Q,Y=V.length;while(Y>0){var J=V.substring(0,Y),G=X.encodeText(J),W=X.widthOfTextAtSize(J,K);if(Wz)z=$+v;if(M+G>I)I=M+G;Z.push({text:N,encoded:R,width:v,height:G,x:$,y:M}),j=w===null||w===void 0?void 0:w.trim()}}return{fontSize:K,lineHeight:W,lines:Z,bounds:{x:U,y:H,width:z-U,height:I-H}}},KX=function(V,q){var{fontSize:X,font:K,bounds:Q,cellCount:Y}=q,J=F1(I5(V));if(J.length>Y)throw new qX(J.length,Y);if(X===void 0||X===0)X=sG(J,K,Q,Y);var G=Q.width/Y,W=K.heightAtSize(X,{descender:!1}),Z=Q.y+(Q.height/2-W/2),U=[],H=Q.x,z=Q.y,I=Q.x+Q.width,M=Q.y+Q.height,L=0,B=0;while(LI)I=$+v;if(Z+W>M)M=Z+W;U.push({text:J,encoded:R,width:v,height:W,x:$,y:Z}),L+=1,B+=N}return{fontSize:X,cells:U,bounds:{x:H,y:z,width:I-H,height:M-z}}},v2=function(V,q){var{alignment:X,fontSize:K,font:Q,bounds:Y}=q,J=F1(I5(V));if(K===void 0||K===0)K=l3([J],Q,Y);var G=Q.encodeText(J),W=Q.widthOfTextAtSize(J,K),Z=Q.heightAtSize(K,{descender:!1}),U=X===v0.Left?Y.x:X===v0.Center?Y.x+Y.width/2-W/2:X===v0.Right?Y.x+Y.width-W:Y.x,H=Y.y+(Y.height/2-Z/2);return{fontSize:K,line:{text:J,encoded:G,width:W,height:Z,x:U,y:H},bounds:{x:U,y:H,width:W,height:Z}}};var G6=function(V){if("normal"in V)return V;return{normal:V}},qZ=/\/([^\0\t\n\f\r\ ]+)[\0\t\n\f\r\ ]+(\d*\.\d+|\d+)[\0\t\n\f\r\ ]+Tf/,m5=function(V){var q,X,K=(q=V.getDefaultAppearance())!==null&&q!==void 0?q:"",Q=(X=F8(K,qZ).match)!==null&&X!==void 0?X:[],Y=Number(Q[2]);return isFinite(Y)?Y:void 0},XZ=/(\d*\.\d+|\d+)[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]+(g|rg|k)/,j6=function(V){var q,X=(q=V.getDefaultAppearance())!==null&&q!==void 0?q:"",K=F8(X,XZ).match,Q=K!==null&&K!==void 0?K:[],Y=Q[1],J=Q[2],G=Q[3],W=Q[4],Z=Q[5];if(Z==="g"&&Y)return Sq(Number(Y));if(Z==="rg"&&Y&&J&&G)return Y0(Number(Y),Number(J),Number(G));if(Z==="k"&&Y&&J&&G&&W)return yq(Number(Y),Number(J),Number(G),Number(W));return},B6=function(V,q,X,K){var Q;if(K===void 0)K=0;var Y=[E6(q).toString(),T8((Q=X===null||X===void 0?void 0:X.name)!==null&&Q!==void 0?Q:"dummy__noop",K).toString()].join(` -`);V.setDefaultAppearance(Y)},QX=function(V,q){var X,K,Q,Y=j6(q),J=j6(V.acroField),G=q.getRectangle(),W=q.getAppearanceCharacteristics(),Z=q.getBorderStyle(),U=(X=Z===null||Z===void 0?void 0:Z.getWidth())!==null&&X!==void 0?X:0,H=k6(W===null||W===void 0?void 0:W.getRotation()),z=r6(G,H),I=z.width,M=z.height,L=L6(o(o({},G),{rotation:H})),B=Y0(0,0,0),j=(K=l0(W===null||W===void 0?void 0:W.getBorderColor()))!==null&&K!==void 0?K:B,O=l0(W===null||W===void 0?void 0:W.getBackgroundColor()),N=l0(W===null||W===void 0?void 0:W.getBackgroundColor(),0.8),R=(Q=Y!==null&&Y!==void 0?Y:J)!==null&&Q!==void 0?Q:B;if(Y)B6(q,R);else B6(V.acroField,R);var v={x:0+U/2,y:0+U/2,width:I-U,height:M-U,thickness:1.5,borderWidth:U,borderColor:j,markColor:R};return{normal:{on:Q0(L,B2(o(o({},v),{color:O,filled:!0}))),off:Q0(L,B2(o(o({},v),{color:O,filled:!1})))},down:{on:Q0(L,B2(o(o({},v),{color:N,filled:!0}))),off:Q0(L,B2(o(o({},v),{color:N,filled:!1})))}}},YX=function(V,q){var X,K,Q,Y=j6(q),J=j6(V.acroField),G=q.getRectangle(),W=q.getAppearanceCharacteristics(),Z=q.getBorderStyle(),U=(X=Z===null||Z===void 0?void 0:Z.getWidth())!==null&&X!==void 0?X:0,H=k6(W===null||W===void 0?void 0:W.getRotation()),z=r6(G,H),I=z.width,M=z.height,L=L6(o(o({},G),{rotation:H})),B=Y0(0,0,0),j=(K=l0(W===null||W===void 0?void 0:W.getBorderColor()))!==null&&K!==void 0?K:B,O=l0(W===null||W===void 0?void 0:W.getBackgroundColor()),N=l0(W===null||W===void 0?void 0:W.getBackgroundColor(),0.8),R=(Q=Y!==null&&Y!==void 0?Y:J)!==null&&Q!==void 0?Q:B;if(Y)B6(q,R);else B6(V.acroField,R);var v={x:I/2,y:M/2,width:I-U,height:M-U,borderWidth:U,borderColor:j,dotColor:R};return{normal:{on:Q0(L,T2(o(o({},v),{color:O,filled:!0}))),off:Q0(L,T2(o(o({},v),{color:O,filled:!1})))},down:{on:Q0(L,T2(o(o({},v),{color:N,filled:!0}))),off:Q0(L,T2(o(o({},v),{color:N,filled:!1})))}}},JX=function(V,q,X){var K,Q,Y,J,G,W=j6(q),Z=j6(V.acroField),U=m5(q),H=m5(V.acroField),z=q.getRectangle(),I=q.getAppearanceCharacteristics(),M=q.getBorderStyle(),L=I===null||I===void 0?void 0:I.getCaptions(),B=(K=L===null||L===void 0?void 0:L.normal)!==null&&K!==void 0?K:"",j=(Y=(Q=L===null||L===void 0?void 0:L.down)!==null&&Q!==void 0?Q:B)!==null&&Y!==void 0?Y:"",O=(J=M===null||M===void 0?void 0:M.getWidth())!==null&&J!==void 0?J:0,N=k6(I===null||I===void 0?void 0:I.getRotation()),R=r6(z,N),v=R.width,w=R.height,$=L6(o(o({},z),{rotation:N})),S=Y0(0,0,0),h=l0(I===null||I===void 0?void 0:I.getBorderColor()),b=l0(I===null||I===void 0?void 0:I.getBackgroundColor()),C=l0(I===null||I===void 0?void 0:I.getBackgroundColor(),0.8),D={x:O,y:O,width:v-O*2,height:w-O*2},l=v2(B,{alignment:v0.Center,fontSize:U!==null&&U!==void 0?U:H,font:X,bounds:D}),u=v2(j,{alignment:v0.Center,fontSize:U!==null&&U!==void 0?U:H,font:X,bounds:D}),q0=Math.min(l.fontSize,u.fontSize),J0=(G=W!==null&&W!==void 0?W:Z)!==null&&G!==void 0?G:S;if(W||U!==void 0)B6(q,J0,X,q0);else B6(V.acroField,J0,X,q0);var r={x:0+O/2,y:0+O/2,width:v-O,height:w-O,borderWidth:O,borderColor:h,textColor:J0,font:X.name,fontSize:q0};return{normal:Q0($,hq(o(o({},r),{color:b,textLines:[l.line]}))),down:Q0($,hq(o(o({},r),{color:C,textLines:[u.line]})))}},GX=function(V,q,X){var K,Q,Y,J,G=j6(q),W=j6(V.acroField),Z=m5(q),U=m5(V.acroField),H=q.getRectangle(),z=q.getAppearanceCharacteristics(),I=q.getBorderStyle(),M=(K=V.getText())!==null&&K!==void 0?K:"",L=(Q=I===null||I===void 0?void 0:I.getWidth())!==null&&Q!==void 0?Q:0,B=k6(z===null||z===void 0?void 0:z.getRotation()),j=r6(H,B),O=j.width,N=j.height,R=L6(o(o({},H),{rotation:B})),v=Y0(0,0,0),w=l0(z===null||z===void 0?void 0:z.getBorderColor()),$=l0(z===null||z===void 0?void 0:z.getBackgroundColor()),S,h,b=V.isCombed()?0:1,C={x:L+b,y:L+b,width:O-(L+b)*2,height:N-(L+b)*2};if(V.isMultiline()){var D=uq(M,{alignment:V.getAlignment(),fontSize:Z!==null&&Z!==void 0?Z:U,font:X,bounds:C});S=D.lines,h=D.fontSize}else if(V.isCombed()){var D=KX(M,{fontSize:Z!==null&&Z!==void 0?Z:U,font:X,bounds:C,cellCount:(Y=V.getMaxLength())!==null&&Y!==void 0?Y:0});S=D.cells,h=D.fontSize}else{var D=v2(M,{alignment:V.getAlignment(),fontSize:Z!==null&&Z!==void 0?Z:U,font:X,bounds:C});S=[D.line],h=D.fontSize}var l=(J=G!==null&&G!==void 0?G:W)!==null&&J!==void 0?J:v;if(G||Z!==void 0)B6(q,l,X,h);else B6(V.acroField,l,X,h);var u={x:0+L/2,y:0+L/2,width:O-L,height:N-L,borderWidth:L!==null&&L!==void 0?L:0,borderColor:w,textColor:l,font:X.name,fontSize:h,color:$,textLines:S,padding:b};return Q0(R,Pq(u))},ZX=function(V,q,X){var K,Q,Y,J=j6(q),G=j6(V.acroField),W=m5(q),Z=m5(V.acroField),U=q.getRectangle(),H=q.getAppearanceCharacteristics(),z=q.getBorderStyle(),I=(K=V.getSelected()[0])!==null&&K!==void 0?K:"",M=(Q=z===null||z===void 0?void 0:z.getWidth())!==null&&Q!==void 0?Q:0,L=k6(H===null||H===void 0?void 0:H.getRotation()),B=r6(U,L),j=B.width,O=B.height,N=L6(o(o({},U),{rotation:L})),R=Y0(0,0,0),v=l0(H===null||H===void 0?void 0:H.getBorderColor()),w=l0(H===null||H===void 0?void 0:H.getBackgroundColor()),$=1,S={x:M+$,y:M+$,width:j-(M+$)*2,height:O-(M+$)*2},h=v2(I,{alignment:v0.Left,fontSize:W!==null&&W!==void 0?W:Z,font:X,bounds:S}),b=h.line,C=h.fontSize,D=(Y=J!==null&&J!==void 0?J:G)!==null&&Y!==void 0?Y:R;if(J||W!==void 0)B6(q,D,X,C);else B6(V.acroField,D,X,C);var l={x:0+M/2,y:0+M/2,width:j-M,height:O-M,borderWidth:M!==null&&M!==void 0?M:0,borderColor:v,textColor:D,font:X.name,fontSize:C,color:w,textLines:[b],padding:$};return Q0(N,Pq(l))},WX=function(V,q,X){var K,Q,Y=j6(q),J=j6(V.acroField),G=m5(q),W=m5(V.acroField),Z=q.getRectangle(),U=q.getAppearanceCharacteristics(),H=q.getBorderStyle(),z=(K=H===null||H===void 0?void 0:H.getWidth())!==null&&K!==void 0?K:0,I=k6(U===null||U===void 0?void 0:U.getRotation()),M=r6(Z,I),L=M.width,B=M.height,j=L6(o(o({},Z),{rotation:I})),O=Y0(0,0,0),N=l0(U===null||U===void 0?void 0:U.getBorderColor()),R=l0(U===null||U===void 0?void 0:U.getBackgroundColor()),v=V.getOptions(),w=V.getSelected();if(V.isSorted())v.sort();var $="";for(var S=0,h=v.length;S1||Q.length===1&&K)this.enableMultiselect();var G=new Array(Q.length);for(var W=0,Z=Q.length;W1||Q.length===1&&K)this.enableMultiselect();var J=new Array(Q.length);for(var G=0,W=Q.length;GK)throw new XX(X.length,K,this.getName());if(this.markAsDirty(),this.disableRichFormatting(),X)this.acroField.setValue(g.fromText(X));else this.acroField.removeValue()},q.prototype.getAlignment=function(){var X=this.acroField.getQuadding();return X===0?v0.Left:X===1?v0.Center:X===2?v0.Right:v0.Left},q.prototype.setAlignment=function(X){M6(X,"alignment",v0),this.markAsDirty(),this.acroField.setQuadding(X)},q.prototype.getMaxLength=function(){return this.acroField.getMaxLength()},q.prototype.setMaxLength=function(X){if(X6(X,"maxLength",0,Number.MAX_SAFE_INTEGER),this.markAsDirty(),X===void 0)this.acroField.removeMaxLength();else{var K=this.getText();if(K&&K.length>X)throw new VX(K.length,X,this.getName());this.acroField.setMaxLength(X)}},q.prototype.removeMaxLength=function(){this.markAsDirty(),this.acroField.removeMaxLength()},q.prototype.setImage=function(X){var K=this.getAlignment(),Q=K===v0.Center?T6.Center:K===v0.Right?T6.Right:T6.Left,Y=this.acroField.getWidgets();for(var J=0,G=Y.length;J"},Gq=function(q){return D2(q,4)},FG=function(q){if(j4(q))return Gq(q);if(L4(q)){var X=D1(q),V=u1(q);return""+Gq(X)+Gq(V)}var K=u2(q),Q="0x"+K+" is not a valid UTF-8 or UTF-16 codepoint.";throw Error(Q)};var PG=function(q){var X=0,V=function(K){X|=1<=E.Zero&&Z<=E.Seven){if(K+=W,K.length===3||!(H>="0"&&H<="7"))Y(parseInt(K,8)),K=""}else Y(Z)}return new Uint8Array(V)},X.prototype.decodeText=function(){var V=this.asBytes();if(b8(V))return x8(V);return J1(V)},X.prototype.decodeDate=function(){var V=this.decodeText(),K=P8(V);if(!K)throw new G1(V);return K},X.prototype.asString=function(){return this.value},X.prototype.clone=function(){return X.of(this.value)},X.prototype.toString=function(){return"("+this.value+")"},X.prototype.sizeInBytes=function(){return this.value.length+2},X.prototype.copyBytesInto=function(V,K){return V[K++]=E.LeftParen,K+=k0(this.value,V,K),V[K++]=E.RightParen,this.value.length+2},X.of=function(V){return new X(V)},X.fromDate=function(V){var K=e0(String(V.getUTCFullYear()),4,"0"),Q=e0(String(V.getUTCMonth()+1),2,"0"),Y=e0(String(V.getUTCDate()),2,"0"),J=e0(String(V.getUTCHours()),2,"0"),G=e0(String(V.getUTCMinutes()),2,"0"),W=e0(String(V.getUTCSeconds()),2,"0");return new X("D:"+K+Q+Y+J+G+W+"Z")},X}(z0),K0=DG;var uG=function(){function q(X,V,K,Q){var Y=this;this.allGlyphsInFontSortedById=function(){var J=Array(Y.font.characterSet.length);for(var G=0,W=J.length;G>3)]>>7-((M&7)<<0)&1,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(H==2)for(var S=0;S>2)]>>6-((M&3)<<1)&3,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(H==4)for(var S=0;S>1)]>>4-((M&1)<<2)&15,D=3*C;G[R]=v[D],G[R+1]=v[D+1],G[R+2]=v[D+2],G[R+3]=C<$?w[C]:255}}if(H==8)for(var M=0;M>>3)]>>>7-(r&7)&1),I0=u==L*255?0:255;W[J0+r]=I0<<24|u<<16|u<<8|u}else if(H==2)for(var r=0;r>>2)]>>>6-((r&3)<<1)&3),I0=u==L*85?0:255;W[J0+r]=I0<<24|u<<16|u<<8|u}else if(H==4)for(var r=0;r>>1)]>>>4-((r&1)<<2)&15),I0=u==L*17?0:255;W[J0+r]=I0<<24|u<<16|u<<8|u}else if(H==8)for(var r=0;r>>2<<3);while(Q==0){if(Q=B(X,z,1),Y=B(X,z+1,2),z+=3,Y==0){if((z&7)!=0)z+=8-(z&7);var S=(z>>>3)+4,h=X[S-4]|X[S-3]<<8;if($)V=q.H.W(V,U+h);V.set(new K(X.buffer,X.byteOffset+S,h),U),z=S+h<<3,U+=h;continue}if($)V=q.H.W(V,U+131072);if(Y==1)k=w.J,M=w.h,Z=511,H=31;if(Y==2){J=L(X,z,5)+257,G=L(X,z+5,5)+1,W=L(X,z+10,4)+4,z+=14;var b=z,C=1;for(var D=0;D<38;D+=2)w.Q[D]=0,w.Q[D+1]=0;for(var D=0;DC)C=l}z+=3*W,N(w.Q,C),R(w.Q,C,w.u),k=w.w,M=w.d,z=O(w.u,(1<>>4;if(r>>>8==0)V[U++]=r;else if(r==256)break;else{var I0=U+r-254;if(r>264){var n0=w.q[r-257];I0=U+(n0>>>3)+L(X,z,n0&7),z+=n0&7}var N8=M[v(X,z)&H];z+=N8&15;var S8=N8>>>4,y2=w.c[S8],Z2=(y2>>>4)+B(X,z,y2&15);z+=y2&15;while(U>>4;if(U<=15)J[Z]=U,Z++;else{var z=0,k=0;if(U==16)k=3+G(Q,Y,2),Y+=2,z=J[Z-1];else if(U==17)k=3+G(Q,Y,3),Y+=3;else if(U==18)k=11+G(Q,Y,7),Y+=7;var M=Z+k;while(Z>>1;while(JY)Y=W;J++}while(J>1,Z=X[G+1],H=W<<4|Z,U=V-Z,z=X[G]<>>15-V;K[M]=H,z++}}},q.H.l=function(X,V){var K=q.H.m.r,Q=15-V;for(var Y=0;Y>>Q}},q.H.M=function(X,V,K){K=K<<(V&7);var Q=V>>>3;X[Q]|=K,X[Q+1]|=K>>>8},q.H.I=function(X,V,K){K=K<<(V&7);var Q=V>>>3;X[Q]|=K,X[Q+1]|=K>>>8,X[Q+2]|=K>>>16},q.H.e=function(X,V,K){return(X[V>>>3]|X[(V>>>3)+1]<<8)>>>(V&7)&(1<>>3]|X[(V>>>3)+1]<<8|X[(V>>>3)+2]<<16)>>>(V&7)&(1<>>3]|X[(V>>>3)+1]<<8|X[(V>>>3)+2]<<16)>>>(V&7)},q.H.i=function(X,V){return(X[V>>>3]|X[(V>>>3)+1]<<8|X[(V>>>3)+2]<<16|X[(V>>>3)+3]<<24)>>>(V&7)},q.H.m=function(){var X=Uint16Array,V=Uint32Array;return{K:new X(16),j:new X(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new X(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new V(32),J:new X(512),_:[],h:new X(32),$:[],w:new X(32768),C:[],v:[],d:new X(32768),D:[],u:new X(512),Q:[],r:new X(32768),s:new V(286),Y:new V(30),a:new V(19),t:new V(15000),k:new X(65536),g:new X(32768)}}(),function(){var X=q.H.m,V=32768;for(var K=0;K>>1|(Q&1431655765)<<1,Q=(Q&3435973836)>>>2|(Q&858993459)<<2,Q=(Q&4042322160)>>>4|(Q&252645135)<<4,Q=(Q&4278255360)>>>8|(Q&16711935)<<8,X.r[K]=(Q>>>16|Q<<16)>>>17}function Y(J,G,W){while(G--!=0)J.push(0,W)}for(var K=0;K<32;K++)X.q[K]=X.S[K]<<3|X.T[K],X.c[K]=X.p[K]<<4|X.z[K];Y(X._,144,8),Y(X._,112,9),Y(X._,24,7),Y(X._,8,8),q.H.n(X._,9),q.H.A(X._,9,X.J),q.H.l(X._,9),Y(X.$,32,5),q.H.n(X.$,5),q.H.A(X.$,5,X.h),q.H.l(X.$,5),Y(X.Q,19,0),Y(X.C,286,0),Y(X.D,30,0),Y(X.v,320,0)}(),q.H.N}();P.decode._readInterlace=function(q,X){var{width:V,height:K}=X,Q=P.decode._getBPP(X),Y=Q>>3,J=Math.ceil(V*Q/8),G=new Uint8Array(K*J),W=0,Z=[0,0,4,0,2,0,1],H=[0,4,0,2,0,1,0],U=[8,8,8,4,4,2,2],z=[8,8,4,4,2,2,1],k=0;while(k<7){var M=U[k],j=z[k],B=0,L=0,O=Z[k];while(O>3];h=h>>7-(S&7)&1,G[w*J+($>>3)]|=h<<7-(($&7)<<0)}if(Q==2){var h=q[S>>3];h=h>>6-(S&7)&3,G[w*J+($>>2)]|=h<<6-(($&3)<<1)}if(Q==4){var h=q[S>>3];h=h>>4-(S&7)&15,G[w*J+($>>1)]|=h<<4-(($&1)<<2)}if(Q>=8){var b=w*J+$*Y;for(var C=0;C>3)+C]}S+=Q,$+=j}v++,w+=M}if(B*L!=0)W+=L*(1+R);k=k+1}return G};P.decode._getBPP=function(q){var X=[1,null,3,1,2,null,4][q.ctype];return X*q.depth};P.decode._filterZero=function(q,X,V,K,Q){var Y=P.decode._getBPP(X),J=Math.ceil(K*Y/8),G=P.decode._paeth;Y=Math.ceil(Y/8);var W=0,Z=1,H=q[V],U=0;if(H>1)q[V]=[0,0,1][H-2];if(H==3)for(U=Y;U>>1)&255;for(var z=0;z>>1);for(;U>>1)}else{for(;U>8&255,q[X+1]=V&255},readUint:function(q,X){return q[X]*16777216+(q[X+1]<<16|q[X+2]<<8|q[X+3])},writeUint:function(q,X,V){q[X]=V>>24&255,q[X+1]=V>>16&255,q[X+2]=V>>8&255,q[X+3]=V&255},readASCII:function(q,X,V){var K="";for(var Q=0;Q=0&&G>=0)U=k*X+M<<2,z=(G+k)*Q+J+M<<2;else U=(-G+k)*X-J+M<<2,z=k*Q+M<<2;if(W==0)K[z]=q[U],K[z+1]=q[U+1],K[z+2]=q[U+2],K[z+3]=q[U+3];else if(W==1){var j=q[U+3]*0.00392156862745098,B=q[U]*j,L=q[U+1]*j,O=q[U+2]*j,N=K[z+3]*0.00392156862745098,R=K[z]*N,v=K[z+1]*N,w=K[z+2]*N,$=1-j,S=j+N*$,h=S==0?0:1/S;K[z+3]=255*S,K[z+0]=(B+R*$)*h,K[z+1]=(L+v*$)*h,K[z+2]=(O+w*$)*h}else if(W==2){var j=q[U+3],B=q[U],L=q[U+1],O=q[U+2],N=K[z+3],R=K[z],v=K[z+1],w=K[z+2];if(j==N&&B==R&&L==v&&O==w)K[z]=0,K[z+1]=0,K[z+2]=0,K[z+3]=0;else K[z]=B,K[z+1]=L,K[z+2]=O,K[z+3]=j}else if(W==3){var j=q[U+3],B=q[U],L=q[U+1],O=q[U+2],N=K[z+3],R=K[z],v=K[z+1],w=K[z+2];if(j==N&&B==R&&L==v&&O==w)continue;if(j<220&&N>20)return!1}}return!0};P.encode=function(q,X,V,K,Q,Y,J){if(K==null)K=0;if(J==null)J=!1;var G=P.encode.compress(q,X,V,K,[!1,!1,!1,0,J]);return P.encode.compressPNG(G,-1),P.encode._main(G,X,V,Q,Y)};P.encodeLL=function(q,X,V,K,Q,Y,J,G){var W={ctype:0+(K==1?0:2)+(Q==0?0:4),depth:Y,frames:[]},Z=Date.now(),H=(K+Q)*Y,U=H*X;for(var z=0;z1,U=!1,z=33+(H?20:0);if(Q.sRGB!=null)z+=13;if(Q.pHYs!=null)z+=21;if(q.ctype==3){var k=q.plte.length;for(var M=0;M>>24!=255)U=!0;z+=8+k*3+4+(U?8+k*1+4:0)}for(var j=0;j>>8&255,$=R>>>16&255;L[Z+N+0]=v,L[Z+N+1]=w,L[Z+N+2]=$}if(Z+=k*3,J(L,Z,Y(L,Z-k*3-4,k*3+4)),Z+=4,U){J(L,Z,k),Z+=4,W(L,Z,"tRNS"),Z+=4;for(var M=0;M>>24&255;Z+=k,J(L,Z,Y(L,Z-k-4,k+4)),Z+=4}}var S=0;for(var j=0;j>2,D>>2));for(var k=0;kq0&&r==u[B-q0])J0[B]=J0[B-q0];else{var I0=N[r];if(I0==null){if(N[r]=I0=R.length,R.push(r),R.length>=300)break}J0[B]=I0}}}var n0=R.length;if(n0<=256&&Z==!1){if(n0<=2)U=1;else if(n0<=4)U=2;else if(n0<=16)U=4;else U=8;U=Math.max(U,W)}for(var k=0;k>1)]|=N1[y1+R0]<<4-(R0&1)*4;else if(U==2)for(var R0=0;R0>2)]|=N1[y1+R0]<<6-(R0&3)*2;else if(U==1)for(var R0=0;R0>3)]|=N1[y1+R0]<<7-(R0&7)*1}Z2=$2,H=3,bq=1}else if(L==!1&&O.length==1){var $2=new Uint8Array(q0*y2*3),pK=q0*y2;for(var B=0;B$)$=b;if(hS)S=h}}if($==-1)v=w=$=S=0;if(Q){if((v&1)==1)v--;if((w&1)==1)w--}var D=($-v+1)*(S-w+1);if(DB)B=R;if(vL)L=v}}if(B==-1)M=j=B=L=0;if(J){if((M&1)==1)M--;if((j&1)==1)j--}Y={x:M,y:j,width:B-M+1,height:L-j+1};var S=K[Q];if(S.rect=Y,S.blend=1,S.img=new Uint8Array(Y.width*Y.height*4),K[Q-1].dispose==0)P._copyTile(Z,X,V,S.img,Y.width,Y.height,-Y.x,-Y.y,0),P.encode._prepareDiff(z,X,V,S.img,Y);else P._copyTile(z,X,V,S.img,Y.width,Y.height,-Y.x,-Y.y,0)};P.encode._prepareDiff=function(q,X,V,K,Q){P._copyTile(q,X,V,K,Q.width,Q.height,-Q.x,-Q.y,2)};P.encode._filterZero=function(q,X,V,K,Q,Y,J){var G=[],W=[0,1,2,3,4];if(Y!=-1)W=[Y];else if(X*K>500000||V==1)W=[0];var Z;if(J)Z={level:0};var H=J&&UZIP!=null?UZIP:kK.default;for(var U=0;U>1)+256&255;if(Y==4)for(var Z=Q;Z>1)&255;for(var Z=Q;Z>1)&255}if(Y==4){for(var Z=0;Z>>1;else V=V>>>1;q[X]=V}return q}(),update:function(q,X,V,K){for(var Q=0;Q>>8;return q},crc:function(q,X,V){return P.crc.update(4294967295,q,X,V)^4294967295}};P.quantize=function(q,X){var V=new Uint8Array(q),K=V.slice(0),Q=new Uint32Array(K.buffer),Y=P.quantize.getKDtree(K,X),J=Y[0],G=Y[1],W=P.quantize.planeDst,Z=V,H=Q,U=Z.length,z=new Uint8Array(V.length>>2);for(var k=0;k>2]=O.ind,H[k>>2]=O.est.rgba}return{abuf:K.buffer,inds:z,plte:G}};P.quantize.getKDtree=function(q,X,V){if(V==null)V=0.0001;var K=new Uint32Array(q.buffer),Q={i0:0,i1:q.length,bst:null,est:null,tdst:0,left:null,right:null};Q.bst=P.quantize.stats(q,Q.i0,Q.i1),Q.est=P.quantize.estats(Q.bst);var Y=[Q];while(Y.lengthJ)J=Y[W].est.L,G=W;if(J=H||Z.i1<=H;if(U){Z.est.L=0;continue}var z={i0:Z.i0,i1:H,bst:null,est:null,tdst:0,left:null,right:null};z.bst=P.quantize.stats(q,z.i0,z.i1),z.est=P.quantize.estats(z.bst);var k={i0:H,i1:Z.i1,bst:null,est:null,tdst:0,left:null,right:null};k.bst={R:[],m:[],N:Z.bst.N-z.bst.N};for(var W=0;W<16;W++)k.bst.R[W]=Z.bst.R[W]-z.bst.R[W];for(var W=0;W<4;W++)k.bst.m[W]=Z.bst.m[W]-z.bst.m[W];k.est=P.quantize.estats(k.bst),Z.left=z,Z.right=k,Y[G]=z,Y.push(k)}Y.sort(function(M,j){return j.bst.N-M.bst.N});for(var W=0;W0)J=q.right,G=q.left;var W=P.quantize.getNearest(J,X,V,K,Q);if(W.tdst<=Y*Y)return W;var Z=P.quantize.getNearest(G,X,V,K,Q);return Z.tdstY)K-=4;if(V>=K)break;var W=X[V>>2];X[V>>2]=X[K>>2],X[K>>2]=W,V+=4,K-=4}while(J(q,V,Q)>Y)V-=4;return V+4};P.quantize.vecDot=function(q,X,V){return q[X]*V[0]+q[X+1]*V[1]+q[X+2]*V[2]+q[X+3]*V[3]};P.quantize.stats=function(q,X,V){var K=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],Q=[0,0,0,0],Y=V-X>>2;for(var J=X;J>>0}};P.M4={multVec:function(q,X){return[q[0]*X[0]+q[1]*X[1]+q[2]*X[2]+q[3]*X[3],q[4]*X[0]+q[5]*X[1]+q[6]*X[2]+q[7]*X[3],q[8]*X[0]+q[9]*X[1]+q[10]*X[2]+q[11]*X[3],q[12]*X[0]+q[13]*X[1]+q[14]*X[2]+q[15]*X[3]]},dot:function(q,X){return q[0]*X[0]+q[1]*X[1]+q[2]*X[2]+q[3]*X[3]},sml:function(q,X){return[q*X[0],q*X[1],q*X[2],q*X[3]]}};P.encode.concatRGBA=function(q){var X=0;for(var V=0;V1)throw Error("Animated PNGs are not supported");var Q=new Uint8Array(K[0]),Y=lG(Q),J=Y.rgbChannel,G=Y.alphaChannel;this.rgbChannel=J;var W=G.some(function(Z){return Z<255});if(W)this.alphaChannel=G;this.type=fG(V.ctype),this.width=V.width,this.height=V.height,this.bitsPerComponent=8}return q.load=function(X){return new q(X)},q}();var _G=function(){function q(X){this.image=X,this.bitsPerComponent=X.bitsPerComponent,this.width=X.width,this.height=X.height,this.colorSpace="DeviceRGB"}return q.for=function(X){return _(this,void 0,void 0,function(){var V;return c(this,function(K){return V=IK.load(X),[2,new q(V)]})})},q.prototype.embedIntoContext=function(X,V){return _(this,void 0,void 0,function(){var K,Q;return c(this,function(Y){if(K=this.embedAlphaChannel(X),Q=X.flateStream(this.image.rgbChannel,{Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bitsPerComponent,Width:this.image.width,Height:this.image.height,ColorSpace:this.colorSpace,SMask:K}),V)return X.assign(V,Q),[2,V];else return[2,X.register(Q)];return[2]})})},q.prototype.embedAlphaChannel=function(X){if(!this.image.alphaChannel)return;var V=X.flateStream(this.image.alphaChannel,{Type:"XObject",Subtype:"Image",Height:this.image.height,Width:this.image.width,BitsPerComponent:this.image.bitsPerComponent,ColorSpace:"DeviceGray",Decode:[0,1]});return X.register(V)},q}(),X8=_G;var cG=function(){function q(X,V,K){this.bytes=X,this.start=V||0,this.pos=this.start,this.end=!!V&&!!K?V+K:this.bytes.length}return Object.defineProperty(q.prototype,"length",{get:function(){return this.end-this.start},enumerable:!1,configurable:!0}),Object.defineProperty(q.prototype,"isEmpty",{get:function(){return this.length===0},enumerable:!1,configurable:!0}),q.prototype.getByte=function(){if(this.pos>=this.end)return-1;return this.bytes[this.pos++]},q.prototype.getUint16=function(){var X=this.getByte(),V=this.getByte();if(X===-1||V===-1)return-1;return(X<<8)+V},q.prototype.getInt32=function(){var X=this.getByte(),V=this.getByte(),K=this.getByte(),Q=this.getByte();return(X<<24)+(V<<16)+(K<<8)+Q},q.prototype.getBytes=function(X,V){if(V===void 0)V=!1;var K=this.bytes,Q=this.pos,Y=this.end;if(!X){var J=K.subarray(Q,Y);return V?new Uint8ClampedArray(J):J}else{var G=Q+X;if(G>Y)G=Y;this.pos=G;var J=K.subarray(Q,G);return V?new Uint8ClampedArray(J):J}},q.prototype.peekByte=function(){var X=this.getByte();return this.pos--,X},q.prototype.peekBytes=function(X,V){if(V===void 0)V=!1;var K=this.getBytes(X,V);return this.pos-=K.length,K},q.prototype.skip=function(X){if(!X)X=1;this.pos+=X},q.prototype.reset=function(){this.pos=this.start},q.prototype.moveStart=function(){this.start=this.pos},q.prototype.makeSubStream=function(X,V){return new q(this.bytes,X,V)},q.prototype.decode=function(){return this.bytes},q}(),Hq=cG;var pG=new Uint8Array(0),dG=function(){function q(X){if(this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=pG,this.minBufferLength=512,X)while(this.minBufferLengthY)K=Y}else{while(!this.eof)this.readBlock();K=this.bufferLength}this.pos=K;var J=this.buffer.subarray(Q,K);return V&&!(J instanceof Uint8ClampedArray)?new Uint8ClampedArray(J):J},q.prototype.peekByte=function(){var X=this.getByte();return this.pos--,X},q.prototype.peekBytes=function(X,V){if(V===void 0)V=!1;var K=this.getBytes(X,V);return this.pos-=K.length,K},q.prototype.skip=function(X){if(!X)X=1;this.pos+=X},q.prototype.reset=function(){this.pos=0},q.prototype.makeSubStream=function(X,V){var K=X+V;while(this.bufferLength<=K&&!this.eof)this.readBlock();return new Hq(this.buffer,X,V)},q.prototype.decode=function(){while(!this.eof)this.readBlock();return this.buffer.subarray(0,this.bufferLength)},q.prototype.readBlock=function(){throw new u0(this.constructor.name,"readBlock")},q.prototype.ensureBuffer=function(X){var V=this.buffer;if(X<=V.byteLength)return V;var K=this.minBufferLength;while(K=0;--Z)W[G+Z]=U&255,U>>=8}},X}(d2),jK=nG;var rG=function(q){A(X,q);function X(V,K){var Q=q.call(this,K)||this;if(Q.stream=V,Q.firstDigit=-1,K)K=0.5*K;return Q}return X.prototype.readBlock=function(){var V=8000,K=this.stream.getBytes(V);if(!K.length){this.eof=!0;return}var Q=K.length+1>>1,Y=this.ensureBuffer(this.bufferLength+Q),J=this.bufferLength,G=this.firstDigit;for(var W=0,Z=K.length;W=48&&H<=57)U=H&15;else if(H>=65&&H<=70||H>=97&&H<=102)U=(H&15)+9;else if(H===62){this.eof=!0;break}else continue;if(G<0)G=U;else Y[J++]=G<<4|U,G=-1}if(G>=0&&this.eof)Y[J++]=G<<4,G=-1;this.firstDigit=G,this.bufferLength=J},X}(d2),LK=rG;var BK=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),iG=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),aG=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),oG=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,590000,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],sG=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5],tG=function(q){A(X,q);function X(V,K){var Q=q.call(this,K)||this;Q.stream=V;var Y=V.getByte(),J=V.getByte();if(Y===-1||J===-1)throw Error("Invalid header in flate stream: "+Y+", "+J);if((Y&15)!==8)throw Error("Unknown compression method in flate stream: "+Y+", "+J);if(((Y<<8)+J)%31!==0)throw Error("Bad FCHECK in flate stream: "+Y+", "+J);if(J&32)throw Error("FDICT bit set in flate stream: "+Y+", "+J);return Q.codeSize=0,Q.codeBuf=0,Q}return X.prototype.readBlock=function(){var V,K,Q=this.stream,Y=this.getBits(3);if(Y&1)this.eof=!0;if(Y>>=1,Y===0){var J=void 0;if((J=Q.getByte())===-1)throw Error("Bad block header in flate stream");var G=J;if((J=Q.getByte())===-1)throw Error("Bad block header in flate stream");if(G|=J<<8,(J=Q.getByte())===-1)throw Error("Bad block header in flate stream");var W=J;if((J=Q.getByte())===-1)throw Error("Bad block header in flate stream");if(W|=J<<8,W!==(~G&65535)&&(G!==0||W!==0))throw Error("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;var Z=this.bufferLength;V=this.ensureBuffer(Z+G);var H=Z+G;if(this.bufferLength=H,G===0){if(Q.peekByte()===-1)this.eof=!0}else for(var U=Z;U0)v[O++]=S}z=this.generateHuffmanTable(v.subarray(0,M)),k=this.generateHuffmanTable(v.subarray(M,R))}else throw Error("Unknown block type in flate stream");V=this.buffer;var C=V?V.length:0,D=this.bufferLength;while(!0){var l=this.getCode(z);if(l<256){if(D+1>=C)V=this.ensureBuffer(D+1),C=V.length;V[D++]=l;continue}if(l===256){this.bufferLength=D;return}l-=257,l=iG[l];var u=l>>16;if(u>0)u=this.getBits(u);if(K=(l&65535)+u,l=this.getCode(k),l=aG[l],u=l>>16,u>0)u=this.getBits(u);var q0=(l&65535)+u;if(D+K>=C)V=this.ensureBuffer(D+K),C=V.length;for(var J0=0;J0>V,this.codeSize=Q-=V,J},X.prototype.getCode=function(V){var K=this.stream,Q=V[0],Y=V[1],J=this.codeSize,G=this.codeBuf,W;while(J>16,U=Z&65535;if(H<1||J>H,this.codeSize=J-H,U},X.prototype.generateHuffmanTable=function(V){var K=V.length,Q=0,Y;for(Y=0;YQ)Q=V[Y];var J=1<>=1;for(Y=z;Y0;if(!v||v<256)B[0]=v,L=1;else if(v>=258)if(v=0;J--)B[J]=U[G],G=k[G]}else B[L++]=B[0];else if(v===256){M=9,H=258,L=0;continue}else{this.eof=!0,delete this.lzwState;break}if(w)k[H]=j,z[H]=z[j]+1,U[H]=B[0],H++,M=H+Z&H+Z-1?M:Math.min(Math.log(H+Z)/0.6931471805599453+1,12)|0;if(j=v,O+=L,K>>K&(1<0){var J=this.stream.getBytes(Y);K.set(J,Q),Q+=Y}}else{Y=257-Y;var G=V[1];K=this.ensureBuffer(Q+Y+1);for(var W=0;WK.size())throw new Y5(V,0,K.size());K.remove(V)}},X.prototype.normalizedEntries=function(){var V=this.Kids();if(!V)V=this.dict.context.obj([this.ref]),this.dict.set(I.of("Kids"),V);return{Kids:V}},X.fromDict=function(V,K){return new X(V,K)},X}(Y8),K2=UZ;var zZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.prototype.Opt=function(){return this.dict.lookupMaybe(I.of("Opt"),K0,g,i)},X.prototype.setOpt=function(V){this.dict.set(I.of("Opt"),this.dict.context.obj(V))},X.prototype.getExportValues=function(){var V=this.Opt();if(!V)return;if(V instanceof K0||V instanceof g)return[V];var K=[];for(var Q=0,Y=V.size();QK.size())throw new Y5(V,0,K.size());K.remove(V)}},X.prototype.normalizeExportValues=function(){var V,K,Q,Y,J=(V=this.getExportValues())!==null&&V!==void 0?V:[],G=[],W=this.getWidgets();for(var Z=0,H=W.length;Z1){if(!this.hasFlag(G0.MultiSelect))throw new W7;this.dict.set(I.of("V"),this.dict.context.obj(V))}this.updateSelectedIndices(V)},X.prototype.valuesAreValid=function(V){var K=this.getOptions(),Q=function(W,Z){var H=V[W].decodeText();if(!K.find(function(U){return H===(U.display||U.value).decodeText()}))return{value:!1}};for(var Y=0,J=V.length;Y1){var K=Array(V.length),Q=this.getOptions(),Y=function(W,Z){var H=V[W].decodeText();K[W]=Q.findIndex(function(U){return H===(U.display||U.value).decodeText()})};for(var J=0,G=V.length;J0){var G=J.lookup(0,K0,g),W=J.lookupMaybe(1,K0,g);K.push({value:G,display:W||G})}}}return K}return[]},X}(K2),G8=kZ;var IZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.fromDict=function(V,K){return new X(V,K)},X.create=function(V){var K=V.obj({FT:"Ch",Ff:G0.Combo,Kids:[]}),Q=V.register(K);return new X(K,Q)},X}(G8),Q6=IZ;var EZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.prototype.addField=function(V){var K=this.normalizedEntries().Kids;K===null||K===void 0||K.push(V)},X.prototype.normalizedEntries=function(){var V=this.Kids();if(!V)V=this.dict.context.obj([]),this.dict.set(I.of("Kids"),V);return{Kids:V}},X.fromDict=function(V,K){return new X(V,K)},X.create=function(V){var K=V.obj({}),Q=V.register(K);return new X(K,Q)},X}(Y8),Y6=EZ;var jZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.fromDict=function(V,K){return new X(V,K)},X}(K2),F6=jZ;var LZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.prototype.MaxLen=function(){var V=this.dict.lookup(I.of("MaxLen"));if(V instanceof x)return V;return},X.prototype.Q=function(){var V=this.dict.lookup(I.of("Q"));if(V instanceof x)return V;return},X.prototype.setMaxLength=function(V){this.dict.set(I.of("MaxLen"),x.of(V))},X.prototype.removeMaxLength=function(){this.dict.delete(I.of("MaxLen"))},X.prototype.getMaxLength=function(){var V;return(V=this.MaxLen())===null||V===void 0?void 0:V.asNumber()},X.prototype.setQuadding=function(V){this.dict.set(I.of("Q"),x.of(V))},X.prototype.getQuadding=function(){var V;return(V=this.Q())===null||V===void 0?void 0:V.asNumber()},X.prototype.setValue=function(V){this.dict.set(I.of("V"),V)},X.prototype.removeValue=function(){this.dict.delete(I.of("V"))},X.prototype.getValue=function(){var V=this.V();if(V instanceof K0||V instanceof g)return V;return},X.fromDict=function(V,K){return new X(V,K)},X.create=function(V){var K=V.obj({FT:"Tx",Kids:[]}),Q=V.register(K);return new X(K,Q)},X}(K2),J6=LZ;var BZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.fromDict=function(V,K){return new X(V,K)},X.create=function(V){var K=V.obj({FT:"Btn",Ff:f0.PushButton,Kids:[]}),Q=V.register(K);return new X(K,Q)},X}(h6),G6=BZ;var TZ=function(q){A(X,q);function X(){return q!==null&&q.apply(this,arguments)||this}return X.prototype.setValue=function(V){var K=this.getOnValues();if(!K.includes(V)&&V!==I.of("Off"))throw new J5;this.dict.set(I.of("V"),V);var Q=this.getWidgets();for(var Y=0,J=Q.length;YY)throw new qq(K,Y);var J=K;for(var G=0,W=Q.size();GJ)return H.insertLeafNode(V,J)||Z;else J-=H.Count().asNumber();if(H instanceof _0)J-=1}if(J===0){this.insertLeafKid(Q.size(),V);return}throw new Xq(K,"insertLeafNode")},X.prototype.removeLeafNode=function(V,K){if(K===void 0)K=!0;var Q=this.Kids(),Y=this.Count().asNumber();if(V>=Y)throw new qq(V,Y);var J=V;for(var G=0,W=Q.size();GJ){if(H.removeLeafNode(J,K),K&&H.Kids().size()===0)Q.remove(G);return}else J-=H.Count().asNumber();if(H instanceof _0)if(J===0){this.removeKid(G);return}else J-=1}throw new Xq(V,"removeLeafNode")},X.prototype.ascend=function(V){V(this);var K=this.Parent();if(K)K.ascend(V)},X.prototype.traverse=function(V){var K=this.Kids();for(var Q=0,Y=K.size();QNumber.MAX_SAFE_INTEGER)if(this.capNumbers){var Q="Parsed number that is too large for some PDF readers: "+X+", using Number.MAX_SAFE_INTEGER instead.";return console.warn(Q),Number.MAX_SAFE_INTEGER}else{var Q="Parsed number that is too large for some PDF readers: "+X+", not capping.";console.warn(Q)}return K},q.prototype.skipWhitespace=function(){while(!this.bytes.done()&&k2[this.bytes.peek()])this.bytes.next()},q.prototype.skipLine=function(){while(!this.bytes.done()){var X=this.bytes.peek();if(X===AK||X===NK)return;this.bytes.next()}},q.prototype.skipComment=function(){if(this.bytes.peek()!==E.Percent)return!1;while(!this.bytes.done()){var X=this.bytes.peek();if(X===AK||X===NK)return!0;this.bytes.next()}return!0},q.prototype.skipWhitespaceAndComments=function(){this.skipWhitespace();while(this.skipComment())this.skipWhitespace()},q.prototype.matchKeyword=function(X){var V=this.bytes.offset();for(var K=0,Q=X.length;K=this.length},q.prototype.offset=function(){return this.idx},q.prototype.slice=function(X,V){return this.bytes.slice(X,V)},q.prototype.position=function(){return{line:this.line,column:this.column,offset:this.idx}},q.of=function(X){return new q(X)},q.fromPDFRawStream=function(X){return q.of(V8(X).decode())},q}(),D6=CZ;var hZ=E.Space,U1=E.CarriageReturn,z1=E.Newline,M1=[E.s,E.t,E.r,E.e,E.a,E.m],Eq=[E.e,E.n,E.d,E.s,E.t,E.r,E.e,E.a,E.m],M0={header:[E.Percent,E.P,E.D,E.F,E.Dash],eof:[E.Percent,E.Percent,E.E,E.O,E.F],obj:[E.o,E.b,E.j],endobj:[E.e,E.n,E.d,E.o,E.b,E.j],xref:[E.x,E.r,E.e,E.f],trailer:[E.t,E.r,E.a,E.i,E.l,E.e,E.r],startxref:[E.s,E.t,E.a,E.r,E.t,E.x,E.r,E.e,E.f],true:[E.t,E.r,E.u,E.e],false:[E.f,E.a,E.l,E.s,E.e],null:[E.n,E.u,E.l,E.l],stream:M1,streamEOF1:Q0(M1,[hZ,U1,z1]),streamEOF2:Q0(M1,[U1,z1]),streamEOF3:Q0(M1,[U1]),streamEOF4:Q0(M1,[z1]),endstream:Eq,EOF1endstream:Q0([U1,z1],Eq),EOF2endstream:Q0([U1],Eq),EOF3endstream:Q0([z1],Eq)};var FZ=function(q){A(X,q);function X(V,K,Q){if(Q===void 0)Q=!1;var Y=q.call(this,V,Q)||this;return Y.context=K,Y}return X.prototype.parseObject=function(){if(this.skipWhitespaceAndComments(),this.matchKeyword(M0.true))return c2.True;if(this.matchKeyword(M0.false))return c2.False;if(this.matchKeyword(M0.null))return F0;var V=this.bytes.peek();if(V===E.LessThan&&this.bytes.peekAhead(1)===E.LessThan)return this.parseDictOrStream();if(V===E.LessThan)return this.parseHexString();if(V===E.LeftParen)return this.parseString();if(V===E.ForwardSlash)return this.parseName();if(V===E.LeftSquareBracket)return this.parseArray();if(H1[V])return this.parseNumberOrRef();throw new M7(this.bytes.position(),V)},X.prototype.parseNumberOrRef=function(){var V=this.parseRawNumber();this.skipWhitespaceAndComments();var K=this.bytes.offset();if(P0[this.bytes.peek()]){var Q=this.parseRawNumber();if(this.skipWhitespaceAndComments(),this.bytes.peek()===E.R)return this.bytes.assertNext(E.R),a.of(V,Q)}return this.bytes.moveTo(K),x.of(V)},X.prototype.parseHexString=function(){var V="";this.bytes.assertNext(E.LessThan);while(!this.bytes.done()&&this.bytes.peek()!==E.GreaterThan)V+=t0(this.bytes.next());return this.bytes.assertNext(E.GreaterThan),g.of(V)},X.prototype.parseString=function(){var V=0,K=!1,Q="";while(!this.bytes.done()){var Y=this.bytes.next();if(Q+=t0(Y),!K){if(Y===E.LeftParen)V+=1;if(Y===E.RightParen)V-=1}if(Y===E.BackSlash)K=!K;else if(K)K=!1;if(V===0)return K0.of(Q.substring(1,Q.length-1))}throw new E7(this.bytes.position())},X.prototype.parseName=function(){this.bytes.assertNext(E.ForwardSlash);var V="";while(!this.bytes.done()){var K=this.bytes.peek();if(k2[K]||V2[K])break;V+=t0(K),this.bytes.next()}return I.of(V)},X.prototype.parseArray=function(){this.bytes.assertNext(E.LeftSquareBracket),this.skipWhitespaceAndComments();var V=i.withContext(this.context);while(this.bytes.peek()!==E.RightSquareBracket){var K=this.parseObject();V.push(K),this.skipWhitespaceAndComments()}return this.bytes.assertNext(E.RightSquareBracket),V},X.prototype.parseDict=function(){this.bytes.assertNext(E.LessThan),this.bytes.assertNext(E.LessThan),this.skipWhitespaceAndComments();var V=new Map;while(!this.bytes.done()&&this.bytes.peek()!==E.GreaterThan&&this.bytes.peekAhead(1)!==E.GreaterThan){var K=this.parseName(),Q=this.parseObject();V.set(K,Q),this.skipWhitespaceAndComments()}this.skipWhitespaceAndComments(),this.bytes.assertNext(E.GreaterThan),this.bytes.assertNext(E.GreaterThan);var Y=V.get(I.of("Type"));if(Y===I.of("Catalog"))return W8.fromMapWithContext(V,this.context);else if(Y===I.of("Pages"))return H8.fromMapWithContext(V,this.context);else if(Y===I.of("Page"))return _0.fromMapWithContext(V,this.context);else return m.fromMapWithContext(V,this.context)},X.prototype.parseDictOrStream=function(){var V=this.bytes.position(),K=this.parseDict();if(this.skipWhitespaceAndComments(),!this.matchKeyword(M0.streamEOF1)&&!this.matchKeyword(M0.streamEOF2)&&!this.matchKeyword(M0.streamEOF3)&&!this.matchKeyword(M0.streamEOF4)&&!this.matchKeyword(M0.stream))return K;var Q=this.bytes.offset(),Y,J=K.get(I.of("Length"));if(J instanceof x){if(Y=Q+J.asNumber(),this.bytes.moveTo(Y),this.skipWhitespaceAndComments(),!this.matchKeyword(M0.endstream))this.bytes.moveTo(Q),Y=this.findEndOfStreamFallback(V)}else Y=this.findEndOfStreamFallback(V);var G=this.bytes.slice(Q,Y);return A2.of(K,G)},X.prototype.findEndOfStreamFallback=function(V){var K=1,Q=this.bytes.offset();while(!this.bytes.done()){if(Q=this.bytes.offset(),this.matchKeyword(M0.stream))K+=1;else if(this.matchKeyword(M0.EOF1endstream)||this.matchKeyword(M0.EOF2endstream)||this.matchKeyword(M0.EOF3endstream)||this.matchKeyword(M0.endstream))K-=1;else this.bytes.next();if(K===0)break}if(K!==0)throw new I7(V);return Q},X.forBytes=function(V,K,Q){return new X(D6.of(V),K,Q)},X.forByteStream=function(V,K,Q){if(Q===void 0)Q=!1;return new X(V,K,Q)},X}(SK),U8=FZ;var PZ=function(q){A(X,q);function X(V,K){var Q=q.call(this,D6.fromPDFRawStream(V),V.dict.context)||this,Y=V.dict;return Q.alreadyParsed=!1,Q.shouldWaitForTick=K||function(){return!1},Q.firstOffset=Y.lookup(I.of("First"),x).asNumber(),Q.objectCount=Y.lookup(I.of("N"),x).asNumber(),Q}return X.prototype.parseIntoContext=function(){return _(this,void 0,void 0,function(){var V,K,Q,Y,J,G,W,Z;return c(this,function(H){switch(H.label){case 0:if(this.alreadyParsed)throw new Q5("PDFObjectStreamParser","parseIntoContext");this.alreadyParsed=!0,V=this.parseOffsetsAndObjectNumbers(),K=0,Q=V.length,H.label=1;case 1:if(!(K=E.Space&&K<=E.Tilde;if(Q){if(this.matchKeyword(M0.xref)||this.matchKeyword(M0.trailer)||this.matchKeyword(M0.startxref)||this.matchIndirectObjectHeader()){this.bytes.moveTo(V);break}}this.bytes.next()}},X.prototype.skipBinaryHeaderComment=function(){this.skipWhitespaceAndComments();try{var V=this.bytes.offset();this.parseIndirectObjectHeader(),this.bytes.moveTo(V)}catch(K){this.bytes.next(),this.skipWhitespaceAndComments()}},X.forBytesWithOptions=function(V,K,Q,Y){return new X(V,K,Q,Y)},X}(U8),Bq=uZ;var n2=function(q){return 1<0)K[K.length]=+Q;V[V.length]={cmd:X,args:K},K=[],Q="",Y=!1}X=Z}else if([" ",","].includes(Z)||Z==="-"&&Q.length>0&&Q[Q.length-1]!=="e"||Z==="."&&Y){if(Q.length===0)continue;if(K.length===J){if(V[V.length]={cmd:X,args:K},K=[+Q],X==="M")X="L";if(X==="m")X="l"}else K[K.length]=+Q;Y=Z===".",Q=["-","."].includes(Z)?Z:""}else if(Q+=Z,Z===".")Y=!0}if(Q.length>0)if(K.length===J){if(V[V.length]={cmd:X,args:K},K=[+Q],X==="M")X="L";if(X==="m")X="l"}else K[K.length]=+Q;return V[V.length]={cmd:X,args:K},V},oZ=function(q){d=n=Z0=W0=v1=R1=0;var X=[];for(var V=0;V1)z=Math.sqrt(z),V*=z,K*=z;var k=U/V,M=H/V,j=-H/K,B=U/K,L=k*G+M*W,O=j*G+B*W,N=k*q+M*X,R=j*q+B*X,v=(N-L)*(N-L)+(R-O)*(R-O),w=1/v-0.25;if(w<0)w=0;var $=Math.sqrt(w);if(Y===Q)$=-$;var S=0.5*(L+N)-$*(R-O),h=0.5*(O+R)+$*(N-L),b=Math.atan2(O-h,L-S),C=Math.atan2(R-h,N-S),D=C-b;if(D<0&&Y===1)D+=2*Math.PI;else if(D>0&&Y===0)D-=2*Math.PI;var l=Math.ceil(Math.abs(D/(Math.PI*0.5+0.001))),u=[];for(var q0=0;q0q.length)return Q-1;var B=X.heightAtSize(Q),L=B+B*0.2,O=L*Y;if(O>Math.abs(V.height))return Q-1;Q+=1}return Q},K3=function(q,X,V,K){var Q=V.width/K,Y=V.height,J=mK,G=J4(q);while(JQ*0.75;if(U)return J-1}var z=X.heightAtSize(J,{descender:!1});if(z>Y)return J-1;J+=1}return J},Q3=function(q){for(var X=q.length;X>0;X--)if(/\s/.test(q[X]))return X;return},Y3=function(q,X,V,K){var Q,Y=q.length;while(Y>0){var J=q.substring(0,Y),G=V.encodeText(J),W=V.widthOfTextAtSize(J,K);if(Wz)z=$+v;if(M+G>k)k=M+G;Z.push({text:N,encoded:R,width:v,height:G,x:$,y:M}),L=w===null||w===void 0?void 0:w.trim()}}return{fontSize:K,lineHeight:W,lines:Z,bounds:{x:H,y:U,width:z-H,height:k-U}}},KX=function(q,X){var{fontSize:V,font:K,bounds:Q,cellCount:Y}=X,J=F1(k6(q));if(J.length>Y)throw new qX(J.length,Y);if(V===void 0||V===0)V=K3(J,K,Q,Y);var G=Q.width/Y,W=K.heightAtSize(V,{descender:!1}),Z=Q.y+(Q.height/2-W/2),H=[],U=Q.x,z=Q.y,k=Q.x+Q.width,M=Q.y+Q.height,j=0,B=0;while(jk)k=$+v;if(Z+W>M)M=Z+W;H.push({text:J,encoded:R,width:v,height:W,x:$,y:Z}),j+=1,B+=N}return{fontSize:V,cells:H,bounds:{x:U,y:z,width:k-U,height:M-z}}},v8=function(q,X){var{alignment:V,fontSize:K,font:Q,bounds:Y}=X,J=F1(k6(q));if(K===void 0||K===0)K=lK([J],Q,Y);var G=Q.encodeText(J),W=Q.widthOfTextAtSize(J,K),Z=Q.heightAtSize(K,{descender:!1}),H=V===v0.Left?Y.x:V===v0.Center?Y.x+Y.width/2-W/2:V===v0.Right?Y.x+Y.width-W:Y.x,U=Y.y+(Y.height/2-Z/2);return{fontSize:K,line:{text:J,encoded:G,width:W,height:Z,x:H,y:U},bounds:{x:H,y:U,width:W,height:Z}}};var G2=function(q){if("normal"in q)return q;return{normal:q}},J3=/\/([^\0\t\n\f\r\ ]+)[\0\t\n\f\r\ ]+(\d*\.\d+|\d+)[\0\t\n\f\r\ ]+Tf/,m6=function(q){var X,V,K=(X=q.getDefaultAppearance())!==null&&X!==void 0?X:"",Q=(V=F5(K,J3).match)!==null&&V!==void 0?V:[],Y=Number(Q[2]);return isFinite(Y)?Y:void 0},G3=/(\d*\.\d+|\d+)[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]+(g|rg|k)/,L2=function(q){var X,V=(X=q.getDefaultAppearance())!==null&&X!==void 0?X:"",K=F5(V,G3).match,Q=K!==null&&K!==void 0?K:[],Y=Q[1],J=Q[2],G=Q[3],W=Q[4],Z=Q[5];if(Z==="g"&&Y)return Sq(Number(Y));if(Z==="rg"&&Y&&J&&G)return Y0(Number(Y),Number(J),Number(G));if(Z==="k"&&Y&&J&&G&&W)return yq(Number(Y),Number(J),Number(G),Number(W));return},B2=function(q,X,V,K){var Q;if(K===void 0)K=0;var Y=[E2(X).toString(),T5((Q=V===null||V===void 0?void 0:V.name)!==null&&Q!==void 0?Q:"dummy__noop",K).toString()].join(` +`);q.setDefaultAppearance(Y)},QX=function(q,X){var V,K,Q,Y=L2(X),J=L2(q.acroField),G=X.getRectangle(),W=X.getAppearanceCharacteristics(),Z=X.getBorderStyle(),H=(V=Z===null||Z===void 0?void 0:Z.getWidth())!==null&&V!==void 0?V:0,U=I2(W===null||W===void 0?void 0:W.getRotation()),z=r2(G,U),k=z.width,M=z.height,j=j2(o(o({},G),{rotation:U})),B=Y0(0,0,0),L=(K=l0(W===null||W===void 0?void 0:W.getBorderColor()))!==null&&K!==void 0?K:B,O=l0(W===null||W===void 0?void 0:W.getBackgroundColor()),N=l0(W===null||W===void 0?void 0:W.getBackgroundColor(),0.8),R=(Q=Y!==null&&Y!==void 0?Y:J)!==null&&Q!==void 0?Q:B;if(Y)B2(X,R);else B2(q.acroField,R);var v={x:0+H/2,y:0+H/2,width:k-H,height:M-H,thickness:1.5,borderWidth:H,borderColor:L,markColor:R};return{normal:{on:Q0(j,B8(o(o({},v),{color:O,filled:!0}))),off:Q0(j,B8(o(o({},v),{color:O,filled:!1})))},down:{on:Q0(j,B8(o(o({},v),{color:N,filled:!0}))),off:Q0(j,B8(o(o({},v),{color:N,filled:!1})))}}},YX=function(q,X){var V,K,Q,Y=L2(X),J=L2(q.acroField),G=X.getRectangle(),W=X.getAppearanceCharacteristics(),Z=X.getBorderStyle(),H=(V=Z===null||Z===void 0?void 0:Z.getWidth())!==null&&V!==void 0?V:0,U=I2(W===null||W===void 0?void 0:W.getRotation()),z=r2(G,U),k=z.width,M=z.height,j=j2(o(o({},G),{rotation:U})),B=Y0(0,0,0),L=(K=l0(W===null||W===void 0?void 0:W.getBorderColor()))!==null&&K!==void 0?K:B,O=l0(W===null||W===void 0?void 0:W.getBackgroundColor()),N=l0(W===null||W===void 0?void 0:W.getBackgroundColor(),0.8),R=(Q=Y!==null&&Y!==void 0?Y:J)!==null&&Q!==void 0?Q:B;if(Y)B2(X,R);else B2(q.acroField,R);var v={x:k/2,y:M/2,width:k-H,height:M-H,borderWidth:H,borderColor:L,dotColor:R};return{normal:{on:Q0(j,T8(o(o({},v),{color:O,filled:!0}))),off:Q0(j,T8(o(o({},v),{color:O,filled:!1})))},down:{on:Q0(j,T8(o(o({},v),{color:N,filled:!0}))),off:Q0(j,T8(o(o({},v),{color:N,filled:!1})))}}},JX=function(q,X,V){var K,Q,Y,J,G,W=L2(X),Z=L2(q.acroField),H=m6(X),U=m6(q.acroField),z=X.getRectangle(),k=X.getAppearanceCharacteristics(),M=X.getBorderStyle(),j=k===null||k===void 0?void 0:k.getCaptions(),B=(K=j===null||j===void 0?void 0:j.normal)!==null&&K!==void 0?K:"",L=(Y=(Q=j===null||j===void 0?void 0:j.down)!==null&&Q!==void 0?Q:B)!==null&&Y!==void 0?Y:"",O=(J=M===null||M===void 0?void 0:M.getWidth())!==null&&J!==void 0?J:0,N=I2(k===null||k===void 0?void 0:k.getRotation()),R=r2(z,N),v=R.width,w=R.height,$=j2(o(o({},z),{rotation:N})),S=Y0(0,0,0),h=l0(k===null||k===void 0?void 0:k.getBorderColor()),b=l0(k===null||k===void 0?void 0:k.getBackgroundColor()),C=l0(k===null||k===void 0?void 0:k.getBackgroundColor(),0.8),D={x:O,y:O,width:v-O*2,height:w-O*2},l=v8(B,{alignment:v0.Center,fontSize:H!==null&&H!==void 0?H:U,font:V,bounds:D}),u=v8(L,{alignment:v0.Center,fontSize:H!==null&&H!==void 0?H:U,font:V,bounds:D}),q0=Math.min(l.fontSize,u.fontSize),J0=(G=W!==null&&W!==void 0?W:Z)!==null&&G!==void 0?G:S;if(W||H!==void 0)B2(X,J0,V,q0);else B2(q.acroField,J0,V,q0);var r={x:0+O/2,y:0+O/2,width:v-O,height:w-O,borderWidth:O,borderColor:h,textColor:J0,font:V.name,fontSize:q0};return{normal:Q0($,hq(o(o({},r),{color:b,textLines:[l.line]}))),down:Q0($,hq(o(o({},r),{color:C,textLines:[u.line]})))}},GX=function(q,X,V){var K,Q,Y,J,G=L2(X),W=L2(q.acroField),Z=m6(X),H=m6(q.acroField),U=X.getRectangle(),z=X.getAppearanceCharacteristics(),k=X.getBorderStyle(),M=(K=q.getText())!==null&&K!==void 0?K:"",j=(Q=k===null||k===void 0?void 0:k.getWidth())!==null&&Q!==void 0?Q:0,B=I2(z===null||z===void 0?void 0:z.getRotation()),L=r2(U,B),O=L.width,N=L.height,R=j2(o(o({},U),{rotation:B})),v=Y0(0,0,0),w=l0(z===null||z===void 0?void 0:z.getBorderColor()),$=l0(z===null||z===void 0?void 0:z.getBackgroundColor()),S,h,b=q.isCombed()?0:1,C={x:j+b,y:j+b,width:O-(j+b)*2,height:N-(j+b)*2};if(q.isMultiline()){var D=uq(M,{alignment:q.getAlignment(),fontSize:Z!==null&&Z!==void 0?Z:H,font:V,bounds:C});S=D.lines,h=D.fontSize}else if(q.isCombed()){var D=KX(M,{fontSize:Z!==null&&Z!==void 0?Z:H,font:V,bounds:C,cellCount:(Y=q.getMaxLength())!==null&&Y!==void 0?Y:0});S=D.cells,h=D.fontSize}else{var D=v8(M,{alignment:q.getAlignment(),fontSize:Z!==null&&Z!==void 0?Z:H,font:V,bounds:C});S=[D.line],h=D.fontSize}var l=(J=G!==null&&G!==void 0?G:W)!==null&&J!==void 0?J:v;if(G||Z!==void 0)B2(X,l,V,h);else B2(q.acroField,l,V,h);var u={x:0+j/2,y:0+j/2,width:O-j,height:N-j,borderWidth:j!==null&&j!==void 0?j:0,borderColor:w,textColor:l,font:V.name,fontSize:h,color:$,textLines:S,padding:b};return Q0(R,Pq(u))},ZX=function(q,X,V){var K,Q,Y,J=L2(X),G=L2(q.acroField),W=m6(X),Z=m6(q.acroField),H=X.getRectangle(),U=X.getAppearanceCharacteristics(),z=X.getBorderStyle(),k=(K=q.getSelected()[0])!==null&&K!==void 0?K:"",M=(Q=z===null||z===void 0?void 0:z.getWidth())!==null&&Q!==void 0?Q:0,j=I2(U===null||U===void 0?void 0:U.getRotation()),B=r2(H,j),L=B.width,O=B.height,N=j2(o(o({},H),{rotation:j})),R=Y0(0,0,0),v=l0(U===null||U===void 0?void 0:U.getBorderColor()),w=l0(U===null||U===void 0?void 0:U.getBackgroundColor()),$=1,S={x:M+$,y:M+$,width:L-(M+$)*2,height:O-(M+$)*2},h=v8(k,{alignment:v0.Left,fontSize:W!==null&&W!==void 0?W:Z,font:V,bounds:S}),b=h.line,C=h.fontSize,D=(Y=J!==null&&J!==void 0?J:G)!==null&&Y!==void 0?Y:R;if(J||W!==void 0)B2(X,D,V,C);else B2(q.acroField,D,V,C);var l={x:0+M/2,y:0+M/2,width:L-M,height:O-M,borderWidth:M!==null&&M!==void 0?M:0,borderColor:v,textColor:D,font:V.name,fontSize:C,color:w,textLines:[b],padding:$};return Q0(N,Pq(l))},WX=function(q,X,V){var K,Q,Y=L2(X),J=L2(q.acroField),G=m6(X),W=m6(q.acroField),Z=X.getRectangle(),H=X.getAppearanceCharacteristics(),U=X.getBorderStyle(),z=(K=U===null||U===void 0?void 0:U.getWidth())!==null&&K!==void 0?K:0,k=I2(H===null||H===void 0?void 0:H.getRotation()),M=r2(Z,k),j=M.width,B=M.height,L=j2(o(o({},Z),{rotation:k})),O=Y0(0,0,0),N=l0(H===null||H===void 0?void 0:H.getBorderColor()),R=l0(H===null||H===void 0?void 0:H.getBackgroundColor()),v=q.getOptions(),w=q.getSelected();if(q.isSorted())v.sort();var $="";for(var S=0,h=v.length;S1||Q.length===1&&K)this.enableMultiselect();var G=Array(Q.length);for(var W=0,Z=Q.length;W1||Q.length===1&&K)this.enableMultiselect();var J=Array(Q.length);for(var G=0,W=Q.length;GK)throw new XX(V.length,K,this.getName());if(this.markAsDirty(),this.disableRichFormatting(),V)this.acroField.setValue(g.fromText(V));else this.acroField.removeValue()},X.prototype.getAlignment=function(){var V=this.acroField.getQuadding();return V===0?v0.Left:V===1?v0.Center:V===2?v0.Right:v0.Left},X.prototype.setAlignment=function(V){M2(V,"alignment",v0),this.markAsDirty(),this.acroField.setQuadding(V)},X.prototype.getMaxLength=function(){return this.acroField.getMaxLength()},X.prototype.setMaxLength=function(V){if(X2(V,"maxLength",0,Number.MAX_SAFE_INTEGER),this.markAsDirty(),V===void 0)this.acroField.removeMaxLength();else{var K=this.getText();if(K&&K.length>V)throw new VX(K.length,V,this.getName());this.acroField.setMaxLength(V)}},X.prototype.removeMaxLength=function(){this.markAsDirty(),this.acroField.removeMaxLength()},X.prototype.setImage=function(V){var K=this.getAlignment(),Q=K===v0.Center?T2.Center:K===v0.Right?T2.Right:T2.Left,Y=this.acroField.getWidgets();for(var J=0,G=Y.length;J"u")globalThis.Buffer=y;if(typeof globalThis.process>"u")globalThis.process=N3;globalThis.__bundles=globalThis.__bundles||{};globalThis.__bundles["pdf-lib"]=UX;})(); diff --git a/apps/sim/lib/execution/sandbox/bundles/pptxgenjs.cjs b/apps/sim/lib/execution/sandbox/bundles/pptxgenjs.cjs index 45578fb257e..ec626780fb6 100644 --- a/apps/sim/lib/execution/sandbox/bundles/pptxgenjs.cjs +++ b/apps/sim/lib/execution/sandbox/bundles/pptxgenjs.cjs @@ -1,36 +1,35 @@ // sandbox bundle: pptxgenjs // generated by apps/sim/lib/execution/sandbox/bundles/build.ts // do not edit by hand. run `bun run build:sandbox-bundles` to regenerate. -(()=>{var PJ=Object.create;var{getPrototypeOf:TJ,defineProperty:r6,getOwnPropertyNames:C9,getOwnPropertyDescriptor:EJ}=Object,j9=Object.prototype.hasOwnProperty;var E8=(Q,$,q)=>{q=Q!=null?PJ(TJ(Q)):{};let K=$||!Q||!Q.__esModule?r6(q,"default",{value:Q,enumerable:!0}):q;for(let J of C9(Q))if(!j9.call(K,J))r6(K,J,{get:()=>Q[J],enumerable:!0});return K},R9=new WeakMap,y0=(Q)=>{var $=R9.get(Q),q;if($)return $;if($=r6({},"__esModule",{value:!0}),Q&&typeof Q==="object"||typeof Q==="function")C9(Q).map((K)=>!j9.call($,K)&&r6($,K,{get:()=>Q[K],enumerable:!(q=EJ(Q,K))||q.enumerable}));return R9.set(Q,$),$},N0=(Q,$)=>()=>($||Q(($={exports:{}}).exports,$),$.exports);var h2=(Q,$)=>{for(var q in $)r6(Q,q,{get:$[q],enumerable:!0,configurable:!0,set:(K)=>$[q]=()=>K})};var x2=(Q,$)=>()=>(Q&&($=Q(Q=0)),$);var f9=((Q)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(Q,{get:($,q)=>(typeof require!=="undefined"?require:$)[q]}):Q)(function(Q){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+Q+'" is not supported')});var s0={};h2(s0,{transcode:()=>IU,resolveObjectURL:()=>HU,kStringMaxLength:()=>T9,kMaxLength:()=>s6,isUtf8:()=>kU,isAscii:()=>vU,default:()=>RU,constants:()=>lJ,btoa:()=>mJ,atob:()=>nJ,INSPECT_MAX_BYTES:()=>dJ,File:()=>pJ,Buffer:()=>J0,Blob:()=>iJ});function SJ(Q){var $=Q.length;if($%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var q=Q.indexOf("=");if(q===-1)q=$;var K=q===$?0:4-q%4;return[q,K]}function uJ(Q,$){return(Q+$)*3/4-$}function _J(Q){var $,q=SJ(Q),K=q[0],J=q[1],Z=new Uint8Array(uJ(K,J)),G=0,B=J>0?K-4:K,W;for(W=0;W>16&255,Z[G++]=$>>8&255,Z[G++]=$&255;if(J===2)$=v1[Q.charCodeAt(W)]<<2|v1[Q.charCodeAt(W+1)]>>4,Z[G++]=$&255;if(J===1)$=v1[Q.charCodeAt(W)]<<10|v1[Q.charCodeAt(W+1)]<<4|v1[Q.charCodeAt(W+2)]>>2,Z[G++]=$>>8&255,Z[G++]=$&255;return Z}function cJ(Q){return O1[Q>>18&63]+O1[Q>>12&63]+O1[Q>>6&63]+O1[Q&63]}function bJ(Q,$,q){var K,J=[];for(var Z=$;ZB?B:G+Z));if(K===1)$=Q[q-1],J.push(O1[$>>2]+O1[$<<4&63]+"==");else if(K===2)$=(Q[q-2]<<8)+Q[q-1],J.push(O1[$>>10]+O1[$>>4&63]+O1[$<<2&63]+"=");return J.join("")}function S8(Q,$,q,K,J){var Z,G,B=J*8-K-1,W=(1<>1,V=-7,N=q?J-1:0,F=q?-1:1,M=Q[$+N];N+=F,Z=M&(1<<-V)-1,M>>=-V,V+=B;for(;V>0;Z=Z*256+Q[$+N],N+=F,V-=8);G=Z&(1<<-V)-1,Z>>=-V,V+=K;for(;V>0;G=G*256+Q[$+N],N+=F,V-=8);if(Z===0)Z=1-U;else if(Z===W)return G?NaN:(M?-1:1)*(1/0);else G=G+Math.pow(2,K),Z=Z-U;return(M?-1:1)*G*Math.pow(2,Z-K)}function P9(Q,$,q,K,J,Z){var G,B,W,U=Z*8-J-1,V=(1<>1,F=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,M=K?0:Z-1,v=K?1:-1,x=$<0||$===0&&1/$<0?1:0;if($=Math.abs($),isNaN($)||$===1/0)B=isNaN($)?1:0,G=V;else{if(G=Math.floor(Math.log($)/Math.LN2),$*(W=Math.pow(2,-G))<1)G--,W*=2;if(G+N>=1)$+=F/W;else $+=F*Math.pow(2,1-N);if($*W>=2)G++,W/=2;if(G+N>=V)B=0,G=V;else if(G+N>=1)B=($*W-1)*Math.pow(2,J),G=G+N;else B=$*Math.pow(2,N-1)*Math.pow(2,J),G=0}for(;J>=8;Q[q+M]=B&255,M+=v,B/=256,J-=8);G=G<0;Q[q+M]=G&255,M+=v,G/=256,U-=8);Q[q+M-v]|=x*128}function p1(Q){if(Q>s6)throw new RangeError('The value "'+Q+'" is invalid for option "size"');let $=new Uint8Array(Q);return Object.setPrototypeOf($,J0.prototype),$}function Z4(Q,$,q){return class K extends q{constructor(){super();Object.defineProperty(this,"message",{value:$.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${Q}]`,this.stack,delete this.name}get code(){return Q}set code(J){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:J,writable:!0})}toString(){return`${this.name} [${Q}]: ${this.message}`}}}function J0(Q,$,q){if(typeof Q==="number"){if(typeof $==="string")throw new TypeError('The "string" argument must be of type string. Received type number');return G4(Q)}return E9(Q,$,q)}function E9(Q,$,q){if(typeof Q==="string")return sJ(Q,$);if(ArrayBuffer.isView(Q))return tJ(Q);if(Q==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Q);if(P1(Q,ArrayBuffer)||Q&&P1(Q.buffer,ArrayBuffer))return U4(Q,$,q);if(typeof SharedArrayBuffer!=="undefined"&&(P1(Q,SharedArrayBuffer)||Q&&P1(Q.buffer,SharedArrayBuffer)))return U4(Q,$,q);if(typeof Q==="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let K=Q.valueOf&&Q.valueOf();if(K!=null&&K!==Q)return J0.from(K,$,q);let J=eJ(Q);if(J)return J;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof Q[Symbol.toPrimitive]==="function")return J0.from(Q[Symbol.toPrimitive]("string"),$,q);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Q)}function S9(Q){if(typeof Q!=="number")throw new TypeError('"size" argument must be of type number');else if(Q<0)throw new RangeError('The value "'+Q+'" is invalid for option "size"')}function rJ(Q,$,q){if(S9(Q),Q<=0)return p1(Q);if($!==void 0)return typeof q==="string"?p1(Q).fill($,q):p1(Q).fill($);return p1(Q)}function G4(Q){return S9(Q),p1(Q<0?0:B4(Q)|0)}function sJ(Q,$){if(typeof $!=="string"||$==="")$="utf8";if(!J0.isEncoding($))throw new TypeError("Unknown encoding: "+$);let q=u9(Q,$)|0,K=p1(q),J=K.write(Q,$);if(J!==q)K=K.slice(0,J);return K}function J4(Q){let $=Q.length<0?0:B4(Q.length)|0,q=p1($);for(let K=0;K<$;K+=1)q[K]=Q[K]&255;return q}function tJ(Q){if(P1(Q,Uint8Array)){let $=new Uint8Array(Q);return U4($.buffer,$.byteOffset,$.byteLength)}return J4(Q)}function U4(Q,$,q){if($<0||Q.byteLength<$)throw new RangeError('"offset" is outside of buffer bounds');if(Q.byteLength<$+(q||0))throw new RangeError('"length" is outside of buffer bounds');let K;if($===void 0&&q===void 0)K=new Uint8Array(Q);else if(q===void 0)K=new Uint8Array(Q,$);else K=new Uint8Array(Q,$,q);return Object.setPrototypeOf(K,J0.prototype),K}function eJ(Q){if(J0.isBuffer(Q)){let $=B4(Q.length)|0,q=p1($);if(q.length===0)return q;return Q.copy(q,0,0,$),q}if(Q.length!==void 0){if(typeof Q.length!=="number"||numberIsNaN(Q.length))return p1(0);return J4(Q)}if(Q.type==="Buffer"&&Array.isArray(Q.data))return J4(Q.data)}function B4(Q){if(Q>=s6)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s6.toString(16)+" bytes");return Q|0}function u9(Q,$){if(J0.isBuffer(Q))return Q.length;if(ArrayBuffer.isView(Q)||P1(Q,ArrayBuffer))return Q.byteLength;if(typeof Q!=="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof Q);let q=Q.length,K=arguments.length>2&&arguments[2]===!0;if(!K&&q===0)return 0;let J=!1;for(;;)switch($){case"ascii":case"latin1":case"binary":return q;case"utf8":case"utf-8":return V4(Q).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return q*2;case"hex":return q>>>1;case"base64":return l9(Q).length;default:if(J)return K?-1:V4(Q).length;$=(""+$).toLowerCase(),J=!0}}function QU(Q,$,q){let K=!1;if($===void 0||$<0)$=0;if($>this.length)return"";if(q===void 0||q>this.length)q=this.length;if(q<=0)return"";if(q>>>=0,$>>>=0,q<=$)return"";if(!Q)Q="utf8";while(!0)switch(Q){case"hex":return WU(this,$,q);case"utf8":case"utf-8":return c9(this,$,q);case"ascii":return GU(this,$,q);case"latin1":case"binary":return BU(this,$,q);case"base64":return VU(this,$,q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return zU(this,$,q);default:if(K)throw new TypeError("Unknown encoding: "+Q);Q=(Q+"").toLowerCase(),K=!0}}function P2(Q,$,q){let K=Q[$];Q[$]=Q[q],Q[q]=K}function _9(Q,$,q,K,J){if(Q.length===0)return-1;if(typeof q==="string")K=q,q=0;else if(q>2147483647)q=2147483647;else if(q<-2147483648)q=-2147483648;if(q=+q,Number.isNaN(q))q=J?0:Q.length-1;if(q<0)q=Q.length+q;if(q>=Q.length)if(J)return-1;else q=Q.length-1;else if(q<0)if(J)q=0;else return-1;if(typeof $==="string")$=J0.from($,K);if(J0.isBuffer($)){if($.length===0)return-1;return h9(Q,$,q,K,J)}else if(typeof $==="number"){if($=$&255,typeof Uint8Array.prototype.indexOf==="function")if(J)return Uint8Array.prototype.indexOf.call(Q,$,q);else return Uint8Array.prototype.lastIndexOf.call(Q,$,q);return h9(Q,[$],q,K,J)}throw new TypeError("val must be string, number or Buffer")}function h9(Q,$,q,K,J){let Z=1,G=Q.length,B=$.length;if(K!==void 0){if(K=String(K).toLowerCase(),K==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le"){if(Q.length<2||$.length<2)return-1;Z=2,G/=2,B/=2,q/=2}}function W(V,N){if(Z===1)return V[N];else return V.readUInt16BE(N*Z)}let U;if(J){let V=-1;for(U=q;UG)q=G-B;for(U=q;U>=0;U--){let V=!0;for(let N=0;NJ)K=J;let Z=$.length;if(K>Z/2)K=Z/2;let G;for(G=0;G239?4:Z>223?3:Z>191?2:1;if(J+B<=q){let W,U,V,N;switch(B){case 1:if(Z<128)G=Z;break;case 2:if(W=Q[J+1],(W&192)===128){if(N=(Z&31)<<6|W&63,N>127)G=N}break;case 3:if(W=Q[J+1],U=Q[J+2],(W&192)===128&&(U&192)===128){if(N=(Z&15)<<12|(W&63)<<6|U&63,N>2047&&(N<55296||N>57343))G=N}break;case 4:if(W=Q[J+1],U=Q[J+2],V=Q[J+3],(W&192)===128&&(U&192)===128&&(V&192)===128){if(N=(Z&15)<<18|(W&63)<<12|(U&63)<<6|V&63,N>65535&&N<1114112)G=N}}}if(G===null)G=65533,B=1;else if(G>65535)G-=65536,K.push(G>>>10&1023|55296),G=56320|G&1023;K.push(G),J+=B}return ZU(K)}function ZU(Q){let $=Q.length;if($<=x9)return String.fromCharCode.apply(String,Q);let q="",K=0;while(K<$)q+=String.fromCharCode.apply(String,Q.slice(K,K+=x9));return q}function GU(Q,$,q){let K="";q=Math.min(Q.length,q);for(let J=$;JK)q=K;let J="";for(let Z=$;Zq)throw new RangeError("Trying to access beyond buffer length")}function Z1(Q,$,q,K,J,Z){if(!J0.isBuffer(Q))throw new TypeError('"buffer" argument must be a Buffer instance');if($>J||$Q.length)throw new RangeError("Index out of range")}function b9(Q,$,q,K,J){i9($,K,J,Q,q,7);let Z=Number($&BigInt(4294967295));Q[q++]=Z,Z=Z>>8,Q[q++]=Z,Z=Z>>8,Q[q++]=Z,Z=Z>>8,Q[q++]=Z;let G=Number($>>BigInt(32)&BigInt(4294967295));return Q[q++]=G,G=G>>8,Q[q++]=G,G=G>>8,Q[q++]=G,G=G>>8,Q[q++]=G,q}function d9(Q,$,q,K,J){i9($,K,J,Q,q,7);let Z=Number($&BigInt(4294967295));Q[q+7]=Z,Z=Z>>8,Q[q+6]=Z,Z=Z>>8,Q[q+5]=Z,Z=Z>>8,Q[q+4]=Z;let G=Number($>>BigInt(32)&BigInt(4294967295));return Q[q+3]=G,G=G>>8,Q[q+2]=G,G=G>>8,Q[q+1]=G,G=G>>8,Q[q]=G,q+8}function m9(Q,$,q,K,J,Z){if(q+K>Q.length)throw new RangeError("Index out of range");if(q<0)throw new RangeError("Index out of range")}function n9(Q,$,q,K,J){if($=+$,q=q>>>0,!J)m9(Q,$,q,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return P9(Q,$,q,K,23,4),q+4}function p9(Q,$,q,K,J){if($=+$,q=q>>>0,!J)m9(Q,$,q,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return P9(Q,$,q,K,52,8),q+8}function O9(Q){let $="",q=Q.length,K=Q[0]==="-"?1:0;for(;q>=K+4;q-=3)$=`_${Q.slice(q-3,q)}${$}`;return`${Q.slice(0,q)}${$}`}function FU(Q,$,q){if(J6($,"offset"),Q[$]===void 0||Q[$+q]===void 0)t6($,Q.length-(q+1))}function i9(Q,$,q,K,J,Z){if(Q>q||Q<$){let G=typeof $==="bigint"?"n":"",B;if(Z>3)if($===0||$===BigInt(0))B=`>= 0${G} and < 2${G} ** ${(Z+1)*8}${G}`;else B=`>= -(2${G} ** ${(Z+1)*8-1}${G}) and < 2 ** ${(Z+1)*8-1}${G}`;else B=`>= ${$}${G} and <= ${q}${G}`;throw new K4("value",B,Q)}FU(K,J,Z)}function J6(Q,$){if(typeof Q!=="number")throw new aJ($,"number",Q)}function t6(Q,$,q){if(Math.floor(Q)!==Q)throw J6(Q,q),new K4(q||"offset","an integer",Q);if($<0)throw new oJ;throw new K4(q||"offset",`>= ${q?1:0} and <= ${$}`,Q)}function wU(Q){if(Q=Q.split("=")[0],Q=Q.trim().replace(MU,""),Q.length<2)return"";while(Q.length%4!==0)Q=Q+"=";return Q}function V4(Q,$){$=$||1/0;let q,K=Q.length,J=null,Z=[];for(let G=0;G55295&&q<57344){if(!J){if(q>56319){if(($-=3)>-1)Z.push(239,191,189);continue}else if(G+1===K){if(($-=3)>-1)Z.push(239,191,189);continue}J=q;continue}if(q<56320){if(($-=3)>-1)Z.push(239,191,189);J=q;continue}q=(J-55296<<10|q-56320)+65536}else if(J){if(($-=3)>-1)Z.push(239,191,189)}if(J=null,q<128){if(($-=1)<0)break;Z.push(q)}else if(q<2048){if(($-=2)<0)break;Z.push(q>>6|192,q&63|128)}else if(q<65536){if(($-=3)<0)break;Z.push(q>>12|224,q>>6&63|128,q&63|128)}else if(q<1114112){if(($-=4)<0)break;Z.push(q>>18|240,q>>12&63|128,q>>6&63|128,q&63|128)}else throw new Error("Invalid code point")}return Z}function NU(Q){let $=[];for(let q=0;q>8,J=q%256,Z.push(J),Z.push(K)}return Z}function l9(Q){return _J(wU(Q))}function u8(Q,$,q,K){let J;for(J=0;J=$.length||J>=Q.length)break;$[J+q]=Q[J]}return J}function P1(Q,$){return Q instanceof $||Q!=null&&Q.constructor!=null&&Q.constructor.name!=null&&Q.constructor.name===$.name}function B2(Q){return typeof BigInt==="undefined"?DU:Q}function DU(){throw new Error("BigInt not supported")}function W4(Q){return()=>{throw new Error(Q+" is not implemented for node:buffer browser polyfill")}}var O1,v1,$4="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",O2,g9,y9,dJ=50,s6=2147483647,T9=536870888,mJ,nJ,pJ,iJ,lJ,oJ,aJ,K4,x9=4096,MU,LU,HU,kU,vU=(Q)=>{for(let $ of Q)if($.charCodeAt(0)>127)return!1;return!0},IU,RU;var a0=x2(()=>{O1=[],v1=[];for(O2=0,g9=$4.length;O24294967296)J=O9(String(q));else if(typeof q==="bigint"){if(J=String(q),q>BigInt(2)**BigInt(32)||q<-(BigInt(2)**BigInt(32)))J=O9(J);J+="n"}return K+=` It must be ${$}. Received ${J}`,K},RangeError);Object.defineProperty(J0.prototype,"parent",{enumerable:!0,get:function(){if(!J0.isBuffer(this))return;return this.buffer}});Object.defineProperty(J0.prototype,"offset",{enumerable:!0,get:function(){if(!J0.isBuffer(this))return;return this.byteOffset}});J0.poolSize=8192;J0.from=function(Q,$,q){return E9(Q,$,q)};Object.setPrototypeOf(J0.prototype,Uint8Array.prototype);Object.setPrototypeOf(J0,Uint8Array);J0.alloc=function(Q,$,q){return rJ(Q,$,q)};J0.allocUnsafe=function(Q){return G4(Q)};J0.allocUnsafeSlow=function(Q){return G4(Q)};J0.isBuffer=function Q($){return $!=null&&$._isBuffer===!0&&$!==J0.prototype};J0.compare=function Q($,q){if(P1($,Uint8Array))$=J0.from($,$.offset,$.byteLength);if(P1(q,Uint8Array))q=J0.from(q,q.offset,q.byteLength);if(!J0.isBuffer($)||!J0.isBuffer(q))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if($===q)return 0;let K=$.length,J=q.length;for(let Z=0,G=Math.min(K,J);ZJ.length){if(!J0.isBuffer(G))G=J0.from(G);G.copy(J,Z)}else Uint8Array.prototype.set.call(J,G,Z);else if(!J0.isBuffer(G))throw new TypeError('"list" argument must be an Array of Buffers');else G.copy(J,Z);Z+=G.length}return J};J0.byteLength=u9;J0.prototype._isBuffer=!0;J0.prototype.swap16=function Q(){let $=this.length;if($%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let q=0;q<$;q+=2)P2(this,q,q+1);return this};J0.prototype.swap32=function Q(){let $=this.length;if($%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let q=0;q<$;q+=4)P2(this,q,q+3),P2(this,q+1,q+2);return this};J0.prototype.swap64=function Q(){let $=this.length;if($%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let q=0;q<$;q+=8)P2(this,q,q+7),P2(this,q+1,q+6),P2(this,q+2,q+5),P2(this,q+3,q+4);return this};J0.prototype.toString=function Q(){let $=this.length;if($===0)return"";if(arguments.length===0)return c9(this,0,$);return QU.apply(this,arguments)};J0.prototype.toLocaleString=J0.prototype.toString;J0.prototype.equals=function Q($){if(!J0.isBuffer($))throw new TypeError("Argument must be a Buffer");if(this===$)return!0;return J0.compare(this,$)===0};J0.prototype.inspect=function Q(){let $="",q=exports_buffer.INSPECT_MAX_BYTES;if($=this.toString("hex",0,q).replace(/(.{2})/g,"$1 ").trim(),this.length>q)$+=" ... ";return""};if(y9)J0.prototype[y9]=J0.prototype.inspect;J0.prototype.compare=function Q($,q,K,J,Z){if(P1($,Uint8Array))$=J0.from($,$.offset,$.byteLength);if(!J0.isBuffer($))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof $);if(q===void 0)q=0;if(K===void 0)K=$?$.length:0;if(J===void 0)J=0;if(Z===void 0)Z=this.length;if(q<0||K>$.length||J<0||Z>this.length)throw new RangeError("out of range index");if(J>=Z&&q>=K)return 0;if(J>=Z)return-1;if(q>=K)return 1;if(q>>>=0,K>>>=0,J>>>=0,Z>>>=0,this===$)return 0;let G=Z-J,B=K-q,W=Math.min(G,B),U=this.slice(J,Z),V=$.slice(q,K);for(let N=0;N>>0,isFinite(K)){if(K=K>>>0,J===void 0)J="utf8"}else J=K,K=void 0;else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let Z=this.length-q;if(K===void 0||K>Z)K=Z;if($.length>0&&(K<0||q<0)||q>this.length)throw new RangeError("Attempt to write outside buffer bounds");if(!J)J="utf8";let G=!1;for(;;)switch(J){case"hex":return qU(this,$,q,K);case"utf8":case"utf-8":return $U(this,$,q,K);case"ascii":case"latin1":case"binary":return KU(this,$,q,K);case"base64":return JU(this,$,q,K);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return UU(this,$,q,K);default:if(G)throw new TypeError("Unknown encoding: "+J);J=(""+J).toLowerCase(),G=!0}};J0.prototype.toJSON=function Q(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};J0.prototype.slice=function Q($,q){let K=this.length;if($=~~$,q=q===void 0?K:~~q,$<0){if($+=K,$<0)$=0}else if($>K)$=K;if(q<0){if(q+=K,q<0)q=0}else if(q>K)q=K;if(q<$)q=$;let J=this.subarray($,q);return Object.setPrototypeOf(J,J0.prototype),J};J0.prototype.readUintLE=J0.prototype.readUIntLE=function Q($,q,K){if($=$>>>0,q=q>>>0,!K)o0($,q,this.length);let J=this[$],Z=1,G=0;while(++G>>0,q=q>>>0,!K)o0($,q,this.length);let J=this[$+--q],Z=1;while(q>0&&(Z*=256))J+=this[$+--q]*Z;return J};J0.prototype.readUint8=J0.prototype.readUInt8=function Q($,q){if($=$>>>0,!q)o0($,1,this.length);return this[$]};J0.prototype.readUint16LE=J0.prototype.readUInt16LE=function Q($,q){if($=$>>>0,!q)o0($,2,this.length);return this[$]|this[$+1]<<8};J0.prototype.readUint16BE=J0.prototype.readUInt16BE=function Q($,q){if($=$>>>0,!q)o0($,2,this.length);return this[$]<<8|this[$+1]};J0.prototype.readUint32LE=J0.prototype.readUInt32LE=function Q($,q){if($=$>>>0,!q)o0($,4,this.length);return(this[$]|this[$+1]<<8|this[$+2]<<16)+this[$+3]*16777216};J0.prototype.readUint32BE=J0.prototype.readUInt32BE=function Q($,q){if($=$>>>0,!q)o0($,4,this.length);return this[$]*16777216+(this[$+1]<<16|this[$+2]<<8|this[$+3])};J0.prototype.readBigUInt64LE=B2(function Q($){$=$>>>0,J6($,"offset");let q=this[$],K=this[$+7];if(q===void 0||K===void 0)t6($,this.length-8);let J=q+this[++$]*256+this[++$]*65536+this[++$]*16777216,Z=this[++$]+this[++$]*256+this[++$]*65536+K*16777216;return BigInt(J)+(BigInt(Z)<>>0,J6($,"offset");let q=this[$],K=this[$+7];if(q===void 0||K===void 0)t6($,this.length-8);let J=q*16777216+this[++$]*65536+this[++$]*256+this[++$],Z=this[++$]*16777216+this[++$]*65536+this[++$]*256+K;return(BigInt(J)<>>0,q=q>>>0,!K)o0($,q,this.length);let J=this[$],Z=1,G=0;while(++G=Z)J-=Math.pow(2,8*q);return J};J0.prototype.readIntBE=function Q($,q,K){if($=$>>>0,q=q>>>0,!K)o0($,q,this.length);let J=q,Z=1,G=this[$+--J];while(J>0&&(Z*=256))G+=this[$+--J]*Z;if(Z*=128,G>=Z)G-=Math.pow(2,8*q);return G};J0.prototype.readInt8=function Q($,q){if($=$>>>0,!q)o0($,1,this.length);if(!(this[$]&128))return this[$];return(255-this[$]+1)*-1};J0.prototype.readInt16LE=function Q($,q){if($=$>>>0,!q)o0($,2,this.length);let K=this[$]|this[$+1]<<8;return K&32768?K|4294901760:K};J0.prototype.readInt16BE=function Q($,q){if($=$>>>0,!q)o0($,2,this.length);let K=this[$+1]|this[$]<<8;return K&32768?K|4294901760:K};J0.prototype.readInt32LE=function Q($,q){if($=$>>>0,!q)o0($,4,this.length);return this[$]|this[$+1]<<8|this[$+2]<<16|this[$+3]<<24};J0.prototype.readInt32BE=function Q($,q){if($=$>>>0,!q)o0($,4,this.length);return this[$]<<24|this[$+1]<<16|this[$+2]<<8|this[$+3]};J0.prototype.readBigInt64LE=B2(function Q($){$=$>>>0,J6($,"offset");let q=this[$],K=this[$+7];if(q===void 0||K===void 0)t6($,this.length-8);let J=this[$+4]+this[$+5]*256+this[$+6]*65536+(K<<24);return(BigInt(J)<>>0,J6($,"offset");let q=this[$],K=this[$+7];if(q===void 0||K===void 0)t6($,this.length-8);let J=(q<<24)+this[++$]*65536+this[++$]*256+this[++$];return(BigInt(J)<>>0,!q)o0($,4,this.length);return S8(this,$,!0,23,4)};J0.prototype.readFloatBE=function Q($,q){if($=$>>>0,!q)o0($,4,this.length);return S8(this,$,!1,23,4)};J0.prototype.readDoubleLE=function Q($,q){if($=$>>>0,!q)o0($,8,this.length);return S8(this,$,!0,52,8)};J0.prototype.readDoubleBE=function Q($,q){if($=$>>>0,!q)o0($,8,this.length);return S8(this,$,!1,52,8)};J0.prototype.writeUintLE=J0.prototype.writeUIntLE=function Q($,q,K,J){if($=+$,q=q>>>0,K=K>>>0,!J){let B=Math.pow(2,8*K)-1;Z1(this,$,q,K,B,0)}let Z=1,G=0;this[q]=$&255;while(++G>>0,K=K>>>0,!J){let B=Math.pow(2,8*K)-1;Z1(this,$,q,K,B,0)}let Z=K-1,G=1;this[q+Z]=$&255;while(--Z>=0&&(G*=256))this[q+Z]=$/G&255;return q+K};J0.prototype.writeUint8=J0.prototype.writeUInt8=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,1,255,0);return this[q]=$&255,q+1};J0.prototype.writeUint16LE=J0.prototype.writeUInt16LE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,2,65535,0);return this[q]=$&255,this[q+1]=$>>>8,q+2};J0.prototype.writeUint16BE=J0.prototype.writeUInt16BE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,2,65535,0);return this[q]=$>>>8,this[q+1]=$&255,q+2};J0.prototype.writeUint32LE=J0.prototype.writeUInt32LE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,4,4294967295,0);return this[q+3]=$>>>24,this[q+2]=$>>>16,this[q+1]=$>>>8,this[q]=$&255,q+4};J0.prototype.writeUint32BE=J0.prototype.writeUInt32BE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,4,4294967295,0);return this[q]=$>>>24,this[q+1]=$>>>16,this[q+2]=$>>>8,this[q+3]=$&255,q+4};J0.prototype.writeBigUInt64LE=B2(function Q($,q=0){return b9(this,$,q,BigInt(0),BigInt("0xffffffffffffffff"))});J0.prototype.writeBigUInt64BE=B2(function Q($,q=0){return d9(this,$,q,BigInt(0),BigInt("0xffffffffffffffff"))});J0.prototype.writeIntLE=function Q($,q,K,J){if($=+$,q=q>>>0,!J){let W=Math.pow(2,8*K-1);Z1(this,$,q,K,W-1,-W)}let Z=0,G=1,B=0;this[q]=$&255;while(++Z>0)-B&255}return q+K};J0.prototype.writeIntBE=function Q($,q,K,J){if($=+$,q=q>>>0,!J){let W=Math.pow(2,8*K-1);Z1(this,$,q,K,W-1,-W)}let Z=K-1,G=1,B=0;this[q+Z]=$&255;while(--Z>=0&&(G*=256)){if($<0&&B===0&&this[q+Z+1]!==0)B=1;this[q+Z]=($/G>>0)-B&255}return q+K};J0.prototype.writeInt8=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,1,127,-128);if($<0)$=255+$+1;return this[q]=$&255,q+1};J0.prototype.writeInt16LE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,2,32767,-32768);return this[q]=$&255,this[q+1]=$>>>8,q+2};J0.prototype.writeInt16BE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,2,32767,-32768);return this[q]=$>>>8,this[q+1]=$&255,q+2};J0.prototype.writeInt32LE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,4,2147483647,-2147483648);return this[q]=$&255,this[q+1]=$>>>8,this[q+2]=$>>>16,this[q+3]=$>>>24,q+4};J0.prototype.writeInt32BE=function Q($,q,K){if($=+$,q=q>>>0,!K)Z1(this,$,q,4,2147483647,-2147483648);if($<0)$=4294967295+$+1;return this[q]=$>>>24,this[q+1]=$>>>16,this[q+2]=$>>>8,this[q+3]=$&255,q+4};J0.prototype.writeBigInt64LE=B2(function Q($,q=0){return b9(this,$,q,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});J0.prototype.writeBigInt64BE=B2(function Q($,q=0){return d9(this,$,q,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});J0.prototype.writeFloatLE=function Q($,q,K){return n9(this,$,q,!0,K)};J0.prototype.writeFloatBE=function Q($,q,K){return n9(this,$,q,!1,K)};J0.prototype.writeDoubleLE=function Q($,q,K){return p9(this,$,q,!0,K)};J0.prototype.writeDoubleBE=function Q($,q,K){return p9(this,$,q,!1,K)};J0.prototype.copy=function Q($,q,K,J){if(!J0.isBuffer($))throw new TypeError("argument should be a Buffer");if(!K)K=0;if(!J&&J!==0)J=this.length;if(q>=$.length)q=$.length;if(!q)q=0;if(J>0&&J=this.length)throw new RangeError("Index out of range");if(J<0)throw new RangeError("sourceEnd out of bounds");if(J>this.length)J=this.length;if($.length-q>>0,K=K===void 0?this.length:K>>>0,!$)$=0;let Z;if(typeof $==="number")for(Z=q;Z{var m0=s9.exports={},T1,E1;function z4(){throw new Error("setTimeout has not been defined")}function F4(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")T1=setTimeout;else T1=z4}catch(Q){T1=z4}try{if(typeof clearTimeout==="function")E1=clearTimeout;else E1=F4}catch(Q){E1=F4}})();function o9(Q){if(T1===setTimeout)return setTimeout(Q,0);if((T1===z4||!T1)&&setTimeout)return T1=setTimeout,setTimeout(Q,0);try{return T1(Q,0)}catch($){try{return T1.call(null,Q,0)}catch(q){return T1.call(this,Q,0)}}}function CU(Q){if(E1===clearTimeout)return clearTimeout(Q);if((E1===F4||!E1)&&clearTimeout)return E1=clearTimeout,clearTimeout(Q);try{return E1(Q)}catch($){try{return E1.call(null,Q)}catch(q){return E1.call(this,Q)}}}var i1=[],U6=!1,T2,_8=-1;function jU(){if(!U6||!T2)return;if(U6=!1,T2.length)i1=T2.concat(i1);else _8=-1;if(i1.length)a9()}function a9(){if(U6)return;var Q=o9(jU);U6=!0;var $=i1.length;while($){T2=i1,i1=[];while(++_8<$)if(T2)T2[_8].run();_8=-1,$=i1.length}T2=null,U6=!1,CU(Q)}m0.nextTick=function(Q){var $=new Array(arguments.length-1);if(arguments.length>1)for(var q=1;qBQ,once:()=>ZQ,listenerCount:()=>WQ,init:()=>W2,getMaxListeners:()=>FQ,getEventListeners:()=>GQ,default:()=>PU,captureRejectionSymbol:()=>KQ,addAbortListener:()=>MQ,EventEmitter:()=>W2});function JQ(Q,$){var{_events:q}=Q;if($[0]??=new Error("Unhandled error."),!q)throw $[0];var K=q[$Q];if(K)for(var J of QQ.call(K))J.apply(Q,$);var Z=q.error;if(!Z)throw $[0];for(var J of QQ.call(Z))J.apply(Q,$);return!0}function gU(Q,$,q,K){$.then(void 0,function(J){queueMicrotask(()=>XU(Q,J,q,K))})}function XU(Q,$,q,K){if(typeof Q[e9]==="function")Q[e9]($,q,...K);else try{Q[E2]=!1,Q.emit("error",$)}finally{Q[E2]=!0}}function UQ(Q,$,q){q.warned=!0;let K=new Error(`Possible EventEmitter memory leak detected. ${q.length} ${String($)} listeners added to [${Q.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);K.name="MaxListenersExceededWarning",K.emitter=Q,K.type=$,K.count=q.length,console.warn(K)}function VQ(Q,$,...q){this.removeListener(Q,$),$.apply(this,q)}function ZQ(Q,$,q){var K=q?.signal;if(zQ(K,"options.signal"),K?.aborted)throw new M4(void 0,{cause:K?.reason});let{resolve:J,reject:Z,promise:G}=$newPromiseCapability(Promise),B=(V)=>{if(Q.removeListener($,W),K!=null)c8(K,"abort",U);Z(V)},W=(...V)=>{if(typeof Q.removeListener==="function")Q.removeListener("error",B);if(K!=null)c8(K,"abort",U);J(V)};if(qQ(Q,$,W,{once:!0}),$!=="error"&&typeof Q.once==="function")Q.once("error",B);function U(){c8(Q,$,W),c8(Q,"error",B),Z(new M4(void 0,{cause:K?.reason}))}if(K!=null)qQ(K,"abort",U,{once:!0});return G}function GQ(Q,$){return Q.listeners($)}function BQ(Q,...$){N4(Q,"setMaxListeners",0);var q;if($&&(q=$.length))for(let K=0;KK||(q!=null||K!=null)&&Number.isNaN(Q))throw xU($,`${q!=null?`>= ${q}`:""}${q!=null&&K!=null?" && ":""}${K!=null?`<= ${K}`:""}`,Q)}function e6(Q){if(typeof Q!=="function")throw new TypeError("The listener must be a function")}function OU(Q,$){if(typeof Q!=="boolean")throw V6($,"boolean",Q)}function FQ(Q){return Q?._maxListeners??S2}function MQ(Q,$){if(Q===void 0)throw V6("signal","AbortSignal",Q);if(zQ(Q,"signal"),typeof $!=="function")throw V6("listener","function",$);let q;if(Q.aborted)queueMicrotask(()=>$());else Q.addEventListener("abort",$,{__proto__:null,once:!0}),q=()=>{Q.removeEventListener("abort",$)};return{__proto__:null,[Symbol.dispose](){q?.()}}}var w4,E2,$Q,fU,AU,e9,KQ,QQ,S2=10,W2=function Q($){if(this._events===void 0||this._events===this.__proto__._events)this._events={__proto__:null},this._eventsCount=0;if(this._maxListeners??=void 0,this[E2]=$?.captureRejections?Boolean($?.captureRejections):S0[E2])this.emit=hU},S0,yU=function Q($,...q){if($==="error")return JQ(this,q);var{_events:K}=this;if(K===void 0)return!1;var J=K[$];if(J===void 0)return!1;let Z=J.length>1?J.slice():J;for(let G=0,{length:B}=Z;G1?J.slice():J;for(let G=0,{length:B}=Z;G{w4=Symbol.for,E2=Symbol("kCapture"),$Q=w4("events.errorMonitor"),fU=Symbol("events.maxEventTargetListeners"),AU=Symbol("events.maxEventTargetListenersWarned"),e9=w4("nodejs.rejection"),KQ=w4("nodejs.rejection"),QQ=Array.prototype.slice,S0=W2.prototype={};S0._events=void 0;S0._eventsCount=0;S0._maxListeners=void 0;S0.setMaxListeners=function Q($){return N4($,"setMaxListeners",0),this._maxListeners=$,this};S0.constructor=W2;S0.getMaxListeners=function Q(){return this?._maxListeners??S2};S0.emit=yU;S0.addListener=function Q($,q){e6(q);var K=this._events;if(!K)K=this._events={__proto__:null},this._eventsCount=0;else if(K.newListener)this.emit("newListener",$,q.listener??q);var J=K[$];if(!J)K[$]=[q],this._eventsCount++;else{J.push(q);var Z=this._maxListeners??S2;if(Z>0&&J.length>Z&&!J.warned)UQ(this,$,J)}return this};S0.on=S0.addListener;S0.prependListener=function Q($,q){e6(q);var K=this._events;if(!K)K=this._events={__proto__:null},this._eventsCount=0;else if(K.newListener)this.emit("newListener",$,q.listener??q);var J=K[$];if(!J)K[$]=[q],this._eventsCount++;else{J.unshift(q);var Z=this._maxListeners??S2;if(Z>0&&J.length>Z&&!J.warned)UQ(this,$,J)}return this};S0.once=function Q($,q){e6(q);let K=VQ.bind(this,$,q);return K.listener=q,this.addListener($,K),this};S0.prependOnceListener=function Q($,q){e6(q);let K=VQ.bind(this,$,q);return K.listener=q,this.prependListener($,K),this};S0.removeListener=function Q($,q){e6(q);var{_events:K}=this;if(!K)return this;var J=K[$];if(!J)return this;var Z=J.length;let G=-1;for(let B=Z-1;B>=0;B--)if(J[B]===q||J[B].listener===q){G=B;break}if(G<0)return this;if(G===0)J.shift();else J.splice(G,1);if(J.length===0)delete K[$],this._eventsCount--;return this};S0.off=S0.removeListener;S0.removeAllListeners=function Q($){var{_events:q}=this;if($&&q){if(q[$])delete q[$],this._eventsCount--}else this._events={__proto__:null};return this};S0.listeners=function Q($){var{_events:q}=this;if(!q)return[];var K=q[$];if(!K)return[];return K.map((J)=>J.listener??J)};S0.rawListeners=function Q($){var{_events:q}=this;if(!q)return[];var K=q[$];if(!K)return[];return K.slice()};S0.listenerCount=function Q($){var{_events:q}=this;if(!q)return 0;return q[$]?.length??0};S0.eventNames=function Q(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};S0[E2]=!1;M4=class M4 extends Error{constructor(Q="The operation was aborted",$=void 0){if($!==void 0&&typeof $!=="object")throw V6("options","Object",$);super(Q,$);this.code="ABORT_ERR",this.name="AbortError"}};Object.defineProperties(W2,{captureRejections:{get(){return S0[E2]},set(Q){OU(Q,"EventEmitter.captureRejections"),S0[E2]=Q},enumerable:!0},defaultMaxListeners:{enumerable:!0,get:()=>{return S2},set:(Q)=>{N4(Q,"defaultMaxListeners",0),S2=Q}},kMaxEventTargetListeners:{value:fU,enumerable:!1,configurable:!1,writable:!1},kMaxEventTargetListenersWarned:{value:AU,enumerable:!1,configurable:!1,writable:!1}});Object.assign(W2,{once:ZQ,getEventListeners:GQ,getMaxListeners:FQ,setMaxListeners:BQ,EventEmitter:W2,usingDomains:!1,captureRejectionSymbol:KQ,errorMonitor:$Q,addAbortListener:MQ,init:W2,listenerCount:WQ});PU=W2});var Y4={};h2(Y4,{versions:()=>dU,version:()=>bU,umask:()=>$V,title:()=>SU,removeListener:()=>lU,removeAllListeners:()=>oU,prependOnceListener:()=>sU,prependListener:()=>rU,once:()=>pU,on:()=>mU,off:()=>iU,nextTick:()=>EU,listeners:()=>tU,env:()=>_U,emit:()=>aU,cwd:()=>QV,chdir:()=>qV,browser:()=>uU,binding:()=>eU,argv:()=>cU,addListener:()=>nU});function TU(){if(!Z6||!u2)return;if(Z6=!1,u2.length)r1=u2.concat(r1);else b8=-1;if(r1.length)wQ()}function wQ(){if(Z6)return;var Q=setTimeout(TU,0);Z6=!0;var $=r1.length;while($){u2=r1,r1=[];while(++b8<$)if(u2){var q=u2[b8];q.fun.apply(null,q.array)}b8=-1,$=r1.length}u2=null,Z6=!1,clearTimeout(Q,0)}function EU(Q){var $=new Array(arguments.length-1);if(arguments.length>1)for(var q=1;q{r1=[];_U={},cU=[],dU={};mU=s1,nU=s1,pU=s1,iU=s1,lU=s1,oU=s1,aU=s1,rU=s1,sU=s1});var p8=N0((nz,IQ)=>{var x0=(Q,$)=>()=>($||Q(($={exports:{}}).exports,$),$.exports),_0=x0((Q,$)=>{class q extends Error{constructor(K){if(!Array.isArray(K))throw new TypeError(`Expected input to be an Array, got ${typeof K}`);let J="";for(let Z=0;Z{$.exports={format(q,...K){return q.replace(/%([sdifj])/g,function(...[J,Z]){let G=K.shift();if(Z==="f")return G.toFixed(6);else if(Z==="j")return JSON.stringify(G);else if(Z==="s"&&typeof G==="object")return`${G.constructor!==Object?G.constructor.name:""} {}`.trim();else return G.toString()})},inspect(q){switch(typeof q){case"string":if(q.includes("'")){if(!q.includes('"'))return`"${q}"`;else if(!q.includes("`")&&!q.includes("${"))return`\`${q}\``}return`'${q}'`;case"number":if(isNaN(q))return"NaN";else if(Object.is(q,-0))return String(q);return q;case"bigint":return`${String(q)}n`;case"boolean":case"undefined":return String(q);case"object":return"{}"}}}}),K1=x0((Q,$)=>{var{format:q,inspect:K}=NQ(),{AggregateError:J}=_0(),Z=globalThis.AggregateError||J,G=Symbol("kIsNodeError"),B=["string","function","number","object","Function","Object","boolean","bigint","symbol"],W=/^([A-Z][a-z0-9]*)+$/,U={};function V(D,z){if(!D)throw new U.ERR_INTERNAL_ASSERTION(z)}function N(D){let z="",Y=D.length,H=D[0]==="-"?1:0;for(;Y>=H+4;Y-=3)z=`_${D.slice(Y-3,Y)}${z}`;return`${D.slice(0,Y)}${z}`}function F(D,z,Y){if(typeof z==="function")return V(z.length<=Y.length,`Code: ${D}; The provided arguments length (${Y.length}) does not match the required ones (${z.length}).`),z(...Y);let H=(z.match(/%[dfijoOs]/g)||[]).length;if(V(H===Y.length,`Code: ${D}; The provided arguments length (${Y.length}) does not match the required ones (${H}).`),Y.length===0)return z;return q(z,...Y)}function M(D,z,Y){if(!Y)Y=Error;class H extends Y{constructor(...R){super(F(D,z,R))}toString(){return`${this.name} [${D}]: ${this.message}`}}Object.defineProperties(H.prototype,{name:{value:Y.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${D}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),H.prototype.code=D,H.prototype[G]=!0,U[D]=H}function v(D){let z="__node_internal_"+D.name;return Object.defineProperty(D,"name",{value:z}),D}function x(D,z){if(D&&z&&D!==z){if(Array.isArray(z.errors))return z.errors.push(D),z;let Y=new Z([z,D],z.message);return Y.code=z.code,Y}return D||z}class y extends Error{constructor(D="The operation was aborted",z=void 0){if(z!==void 0&&typeof z!=="object")throw new U.ERR_INVALID_ARG_TYPE("options","Object",z);super(D,z);this.code="ABORT_ERR",this.name="AbortError"}}M("ERR_ASSERTION","%s",Error),M("ERR_INVALID_ARG_TYPE",(D,z,Y)=>{if(V(typeof D==="string","'name' must be a string"),!Array.isArray(z))z=[z];let H="The ";if(D.endsWith(" argument"))H+=`${D} `;else H+=`"${D}" ${D.includes(".")?"property":"argument"} `;H+="must be ";let R=[],c=[],m=[];for(let _ of z)if(V(typeof _==="string","All expected entries have to be of type string"),B.includes(_))R.push(_.toLowerCase());else if(W.test(_))c.push(_);else V(_!=="object",'The value "object" should be written as "Object"'),m.push(_);if(c.length>0){let _=R.indexOf("object");if(_!==-1)R.splice(R,_,1),c.push("Object")}if(R.length>0){switch(R.length){case 1:H+=`of type ${R[0]}`;break;case 2:H+=`one of type ${R[0]} or ${R[1]}`;break;default:{let _=R.pop();H+=`one of type ${R.join(", ")}, or ${_}`}}if(c.length>0||m.length>0)H+=" or "}if(c.length>0){switch(c.length){case 1:H+=`an instance of ${c[0]}`;break;case 2:H+=`an instance of ${c[0]} or ${c[1]}`;break;default:{let _=c.pop();H+=`an instance of ${c.join(", ")}, or ${_}`}}if(m.length>0)H+=" or "}switch(m.length){case 0:break;case 1:if(m[0].toLowerCase()!==m[0])H+="an ";H+=`${m[0]}`;break;case 2:H+=`one of ${m[0]} or ${m[1]}`;break;default:{let _=m.pop();H+=`one of ${m.join(", ")}, or ${_}`}}if(Y==null)H+=`. Received ${Y}`;else if(typeof Y==="function"&&Y.name)H+=`. Received function ${Y.name}`;else if(typeof Y==="object"){var $0;if(($0=Y.constructor)!==null&&$0!==void 0&&$0.name)H+=`. Received an instance of ${Y.constructor.name}`;else{let _=K(Y,{depth:-1});H+=`. Received ${_}`}}else{let _=K(Y,{colors:!1});if(_.length>25)_=`${_.slice(0,25)}...`;H+=`. Received type ${typeof Y} (${_})`}return H},TypeError),M("ERR_INVALID_ARG_VALUE",(D,z,Y="is invalid")=>{let H=K(z);if(H.length>128)H=H.slice(0,128)+"...";return`The ${D.includes(".")?"property":"argument"} '${D}' ${Y}. Received ${H}`},TypeError),M("ERR_INVALID_RETURN_VALUE",(D,z,Y)=>{var H;let R=Y!==null&&Y!==void 0&&(H=Y.constructor)!==null&&H!==void 0&&H.name?`instance of ${Y.constructor.name}`:`type ${typeof Y}`;return`Expected ${D} to be returned from the "${z}" function but got ${R}.`},TypeError),M("ERR_MISSING_ARGS",(...D)=>{V(D.length>0,"At least one arg needs to be specified");let z,Y=D.length;switch(D=(Array.isArray(D)?D:[D]).map((H)=>`"${H}"`).join(" or "),Y){case 1:z+=`The ${D[0]} argument`;break;case 2:z+=`The ${D[0]} and ${D[1]} arguments`;break;default:{let H=D.pop();z+=`The ${D.join(", ")}, and ${H} arguments`}break}return`${z} must be specified`},TypeError),M("ERR_OUT_OF_RANGE",(D,z,Y)=>{V(z,'Missing "range" argument');let H;if(Number.isInteger(Y)&&Math.abs(Y)>4294967296)H=N(String(Y));else if(typeof Y==="bigint"){H=String(Y);let R=BigInt(2)**BigInt(32);if(Y>R||Y<-R)H=N(H);H+="n"}else H=K(Y);return`The value of "${D}" is out of range. It must be ${z}. Received ${H}`},RangeError),M("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),M("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),M("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),M("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),M("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),M("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),M("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),M("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),M("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),M("ERR_STREAM_WRITE_AFTER_END","write after end",Error),M("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),$.exports={AbortError:y,aggregateTwoErrors:v(x),hideStackFrames:v,codes:U}}),KV=x0((Q,$)=>{Object.defineProperty(Q,"__esModule",{value:!0});var q=new WeakMap,K=new WeakMap;function J(g){let O=q.get(g);return console.assert(O!=null,"'this' is expected an Event object, but got",g),O}function Z(g){if(g.passiveListener!=null){if(typeof console!=="undefined"&&typeof console.error==="function")console.error("Unable to preventDefault inside passive event listener invocation.",g.passiveListener);return}if(!g.event.cancelable)return;if(g.canceled=!0,typeof g.event.preventDefault==="function")g.event.preventDefault()}function G(g,O){q.set(this,{eventTarget:g,event:O,eventPhase:2,currentTarget:g,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:O.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});let h=Object.keys(O);for(let f=0;f0){let g=new Array(arguments.length);for(let O=0;O{Object.defineProperty(Q,"__esModule",{value:!0});var q=KV();class K extends q.EventTarget{constructor(){super();throw new TypeError("AbortSignal cannot be constructed directly")}get aborted(){let V=G.get(this);if(typeof V!=="boolean")throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?"null":typeof this}`);return V}}q.defineEventAttribute(K.prototype,"abort");function J(){let V=Object.create(K.prototype);return q.EventTarget.call(V),G.set(V,!1),V}function Z(V){if(G.get(V)!==!1)return;G.set(V,!0),V.dispatchEvent({type:"abort"})}var G=new WeakMap;if(Object.defineProperties(K.prototype,{aborted:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(K.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});class B{constructor(){W.set(this,J())}get signal(){return U(this)}abort(){Z(U(this))}}var W=new WeakMap;function U(V){let N=W.get(V);if(N==null)throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${V===null?"null":typeof V}`);return N}if(Object.defineProperties(B.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(B.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"});Q.AbortController=B,Q.AbortSignal=K,Q.default=B,$.exports=B,$.exports.AbortController=$.exports.default=B,$.exports.AbortSignal=K}),G1=x0((Q,$)=>{var q=(a0(),y0(s0)),{format:K,inspect:J}=NQ(),{codes:{ERR_INVALID_ARG_TYPE:Z}}=K1(),{kResistStopPropagation:G,AggregateError:B,SymbolDispose:W}=_0(),U=globalThis.AbortSignal||Q8().AbortSignal,V=globalThis.AbortController||Q8().AbortController,N=Object.getPrototypeOf(async function(){}).constructor,F=globalThis.Blob||q.Blob,M=typeof F!=="undefined"?function y(D){return D instanceof F}:function y(D){return!1},v=(y,D)=>{if(y!==void 0&&(y===null||typeof y!=="object"||!("aborted"in y)))throw new Z(D,"AbortSignal",y)},x=(y,D)=>{if(typeof y!=="function")throw new Z(D,"Function",y)};$.exports={AggregateError:B,kEmptyObject:Object.freeze({}),once(y){let D=!1;return function(...z){if(D)return;D=!0,y.apply(this,z)}},createDeferredPromise:function(){let y,D;return{promise:new Promise((z,Y)=>{y=z,D=Y}),resolve:y,reject:D}},promisify(y){return new Promise((D,z)=>{y((Y,...H)=>{if(Y)return z(Y);return D(...H)})})},debuglog(){return function(){}},format:K,inspect:J,types:{isAsyncFunction(y){return y instanceof N},isArrayBufferView(y){return ArrayBuffer.isView(y)}},isBlob:M,deprecate(y,D){return y},addAbortListener:(a1(),y0(o1)).addAbortListener||function y(D,z){if(D===void 0)throw new Z("signal","AbortSignal",D);v(D,"signal"),x(z,"listener");let Y;if(D.aborted)queueMicrotask(()=>z());else D.addEventListener("abort",z,{__proto__:null,once:!0,[G]:!0}),Y=()=>{D.removeEventListener("abort",z)};return{__proto__:null,[W](){var H;(H=Y)===null||H===void 0||H()}}},AbortSignalAny:U.any||function y(D){if(D.length===1)return D[0];let z=new V,Y=()=>z.abort();return D.forEach((H)=>{v(H,"signals"),H.addEventListener("abort",Y,{once:!0})}),z.signal.addEventListener("abort",()=>{D.forEach((H)=>H.removeEventListener("abort",Y))},{once:!0}),z.signal}},$.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),q8=x0((Q,$)=>{var{ArrayIsArray:q,ArrayPrototypeIncludes:K,ArrayPrototypeJoin:J,ArrayPrototypeMap:Z,NumberIsInteger:G,NumberIsNaN:B,NumberMAX_SAFE_INTEGER:W,NumberMIN_SAFE_INTEGER:U,NumberParseInt:V,ObjectPrototypeHasOwnProperty:N,RegExpPrototypeExec:F,String:M,StringPrototypeToUpperCase:v,StringPrototypeTrim:x}=_0(),{hideStackFrames:y,codes:{ERR_SOCKET_BAD_PORT:D,ERR_INVALID_ARG_TYPE:z,ERR_INVALID_ARG_VALUE:Y,ERR_OUT_OF_RANGE:H,ERR_UNKNOWN_SIGNAL:R}}=K1(),{normalizeEncoding:c}=G1(),{isAsyncFunction:m,isArrayBufferView:$0}=G1().types,_={};function g(j){return j===(j|0)}function O(j){return j===j>>>0}var h=/^[0-7]+$/,f="must be a 32-bit unsigned integer or an octal string";function A(j,d,e){if(typeof j==="undefined")j=e;if(typeof j==="string"){if(F(h,j)===null)throw new Y(d,j,f);j=V(j,8)}return i(j,d),j}var I=y((j,d,e=U,p=W)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);if(jp)throw new H(d,`>= ${e} && <= ${p}`,j)}),n=y((j,d,e=-2147483648,p=2147483647)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);if(jp)throw new H(d,`>= ${e} && <= ${p}`,j)}),i=y((j,d,e=!1)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);let p=e?1:0,G0=4294967295;if(jG0)throw new H(d,`>= ${p} && <= ${G0}`,j)});function K0(j,d){if(typeof j!=="string")throw new z(d,"string",j)}function z0(j,d,e=void 0,p){if(typeof j!=="number")throw new z(d,"number",j);if(e!=null&&jp||(e!=null||p!=null)&&B(j))throw new H(d,`${e!=null?`>= ${e}`:""}${e!=null&&p!=null?" && ":""}${p!=null?`<= ${p}`:""}`,j)}var S=y((j,d,e)=>{if(!K(e,j)){let p="must be one of: "+J(Z(e,(G0)=>typeof G0==="string"?`'${G0}'`:M(G0)),", ");throw new Y(d,j,p)}});function U0(j,d){if(typeof j!=="boolean")throw new z(d,"boolean",j)}function k(j,d,e){return j==null||!N(j,d)?e:j[d]}var u=y((j,d,e=null)=>{let p=k(e,"allowArray",!1),G0=k(e,"allowFunction",!1);if(!k(e,"nullable",!1)&&j===null||!p&&q(j)||typeof j!=="object"&&(!G0||typeof j!=="function"))throw new z(d,"Object",j)}),Q0=y((j,d)=>{if(j!=null&&typeof j!=="object"&&typeof j!=="function")throw new z(d,"a dictionary",j)}),E=y((j,d,e=0)=>{if(!q(j))throw new z(d,"Array",j);if(j.length{if(!$0(j))throw new z(d,["Buffer","TypedArray","DataView"],j)});function T(j,d){let e=c(d),p=j.length;if(e==="hex"&&p%2!==0)throw new Y("encoding",d,`is invalid for data of length ${p}`)}function t(j,d="Port",e=!0){if(typeof j!=="number"&&typeof j!=="string"||typeof j==="string"&&x(j).length===0||+j!==+j>>>0||j>65535||j===0&&!e)throw new D(d,j,e);return j|0}var Z0=y((j,d)=>{if(j!==void 0&&(j===null||typeof j!=="object"||!("aborted"in j)))throw new z(d,"AbortSignal",j)}),W0=y((j,d)=>{if(typeof j!=="function")throw new z(d,"Function",j)}),C=y((j,d)=>{if(typeof j!=="function"||m(j))throw new z(d,"Function",j)}),X=y((j,d)=>{if(j!==void 0)throw new z(d,"undefined",j)});function P(j,d,e){if(!K(e,j))throw new z(d,`('${J(e,"|")}')`,j)}var o=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function r(j,d){if(typeof j==="undefined"||!F(o,j))throw new Y(d,j,'must be an array or string of format "; rel=preload; as=style"')}function l(j){if(typeof j==="string")return r(j,"hints"),j;else if(q(j)){let d=j.length,e="";if(d===0)return e;for(let p=0;p; rel=preload; as=style"')}$.exports={isInt32:g,isUint32:O,parseFileMode:A,validateArray:E,validateStringArray:q0,validateBooleanArray:B0,validateAbortSignalArray:w0,validateBoolean:U0,validateBuffer:b,validateDictionary:Q0,validateEncoding:T,validateFunction:W0,validateInt32:n,validateInteger:I,validateNumber:z0,validateObject:u,validateOneOf:S,validatePlainFunction:C,validatePort:t,validateSignalName:M0,validateString:K0,validateUint32:i,validateUndefined:X,validateUnion:P,validateAbortSignal:Z0,validateLinkHeaderValue:l}}),_2=x0((Q,$)=>{$.exports=(L4(),y0(Y4))}),e1=x0((Q,$)=>{var{SymbolAsyncIterator:q,SymbolIterator:K,SymbolFor:J}=_0(),Z=J("nodejs.stream.destroyed"),G=J("nodejs.stream.errored"),B=J("nodejs.stream.readable"),W=J("nodejs.stream.writable"),U=J("nodejs.stream.disturbed"),V=J("nodejs.webstream.isClosedPromise"),N=J("nodejs.webstream.controllerErrorFunction");function F(k,u=!1){var Q0;return!!(k&&typeof k.pipe==="function"&&typeof k.on==="function"&&(!u||typeof k.pause==="function"&&typeof k.resume==="function")&&(!k._writableState||((Q0=k._readableState)===null||Q0===void 0?void 0:Q0.readable)!==!1)&&(!k._writableState||k._readableState))}function M(k){var u;return!!(k&&typeof k.write==="function"&&typeof k.on==="function"&&(!k._readableState||((u=k._writableState)===null||u===void 0?void 0:u.writable)!==!1))}function v(k){return!!(k&&typeof k.pipe==="function"&&k._readableState&&typeof k.on==="function"&&typeof k.write==="function")}function x(k){return k&&(k._readableState||k._writableState||typeof k.write==="function"&&typeof k.on==="function"||typeof k.pipe==="function"&&typeof k.on==="function")}function y(k){return!!(k&&!x(k)&&typeof k.pipeThrough==="function"&&typeof k.getReader==="function"&&typeof k.cancel==="function")}function D(k){return!!(k&&!x(k)&&typeof k.getWriter==="function"&&typeof k.abort==="function")}function z(k){return!!(k&&!x(k)&&typeof k.readable==="object"&&typeof k.writable==="object")}function Y(k){return y(k)||D(k)||z(k)}function H(k,u){if(k==null)return!1;if(u===!0)return typeof k[q]==="function";if(u===!1)return typeof k[K]==="function";return typeof k[q]==="function"||typeof k[K]==="function"}function R(k){if(!x(k))return null;let{_writableState:u,_readableState:Q0}=k,E=u||Q0;return!!(k.destroyed||k[Z]||E!==null&&E!==void 0&&E.destroyed)}function c(k){if(!M(k))return null;if(k.writableEnded===!0)return!0;let u=k._writableState;if(u!==null&&u!==void 0&&u.errored)return!1;if(typeof(u===null||u===void 0?void 0:u.ended)!=="boolean")return null;return u.ended}function m(k,u){if(!M(k))return null;if(k.writableFinished===!0)return!0;let Q0=k._writableState;if(Q0!==null&&Q0!==void 0&&Q0.errored)return!1;if(typeof(Q0===null||Q0===void 0?void 0:Q0.finished)!=="boolean")return null;return!!(Q0.finished||u===!1&&Q0.ended===!0&&Q0.length===0)}function $0(k){if(!F(k))return null;if(k.readableEnded===!0)return!0;let u=k._readableState;if(!u||u.errored)return!1;if(typeof(u===null||u===void 0?void 0:u.ended)!=="boolean")return null;return u.ended}function _(k,u){if(!F(k))return null;let Q0=k._readableState;if(Q0!==null&&Q0!==void 0&&Q0.errored)return!1;if(typeof(Q0===null||Q0===void 0?void 0:Q0.endEmitted)!=="boolean")return null;return!!(Q0.endEmitted||u===!1&&Q0.ended===!0&&Q0.length===0)}function g(k){if(k&&k[B]!=null)return k[B];if(typeof(k===null||k===void 0?void 0:k.readable)!=="boolean")return null;if(R(k))return!1;return F(k)&&k.readable&&!_(k)}function O(k){if(k&&k[W]!=null)return k[W];if(typeof(k===null||k===void 0?void 0:k.writable)!=="boolean")return null;if(R(k))return!1;return M(k)&&k.writable&&!c(k)}function h(k,u){if(!x(k))return null;if(R(k))return!0;if((u===null||u===void 0?void 0:u.readable)!==!1&&g(k))return!1;if((u===null||u===void 0?void 0:u.writable)!==!1&&O(k))return!1;return!0}function f(k){var u,Q0;if(!x(k))return null;if(k.writableErrored)return k.writableErrored;return(u=(Q0=k._writableState)===null||Q0===void 0?void 0:Q0.errored)!==null&&u!==void 0?u:null}function A(k){var u,Q0;if(!x(k))return null;if(k.readableErrored)return k.readableErrored;return(u=(Q0=k._readableState)===null||Q0===void 0?void 0:Q0.errored)!==null&&u!==void 0?u:null}function I(k){if(!x(k))return null;if(typeof k.closed==="boolean")return k.closed;let{_writableState:u,_readableState:Q0}=k;if(typeof(u===null||u===void 0?void 0:u.closed)==="boolean"||typeof(Q0===null||Q0===void 0?void 0:Q0.closed)==="boolean")return(u===null||u===void 0?void 0:u.closed)||(Q0===null||Q0===void 0?void 0:Q0.closed);if(typeof k._closed==="boolean"&&n(k))return k._closed;return null}function n(k){return typeof k._closed==="boolean"&&typeof k._defaultKeepAlive==="boolean"&&typeof k._removedConnection==="boolean"&&typeof k._removedContLen==="boolean"}function i(k){return typeof k._sent100==="boolean"&&n(k)}function K0(k){var u;return typeof k._consuming==="boolean"&&typeof k._dumped==="boolean"&&((u=k.req)===null||u===void 0?void 0:u.upgradeOrConnect)===void 0}function z0(k){if(!x(k))return null;let{_writableState:u,_readableState:Q0}=k,E=u||Q0;return!E&&i(k)||!!(E&&E.autoDestroy&&E.emitClose&&E.closed===!1)}function S(k){var u;return!!(k&&((u=k[U])!==null&&u!==void 0?u:k.readableDidRead||k.readableAborted))}function U0(k){var u,Q0,E,q0,B0,w0,M0,b,T,t;return!!(k&&((u=(Q0=(E=(q0=(B0=(w0=k[G])!==null&&w0!==void 0?w0:k.readableErrored)!==null&&B0!==void 0?B0:k.writableErrored)!==null&&q0!==void 0?q0:(M0=k._readableState)===null||M0===void 0?void 0:M0.errorEmitted)!==null&&E!==void 0?E:(b=k._writableState)===null||b===void 0?void 0:b.errorEmitted)!==null&&Q0!==void 0?Q0:(T=k._readableState)===null||T===void 0?void 0:T.errored)!==null&&u!==void 0?u:(t=k._writableState)===null||t===void 0?void 0:t.errored))}$.exports={isDestroyed:R,kIsDestroyed:Z,isDisturbed:S,kIsDisturbed:U,isErrored:U0,kIsErrored:G,isReadable:g,kIsReadable:B,kIsClosedPromise:V,kControllerErrorFunction:N,kIsWritable:W,isClosed:I,isDuplexNodeStream:v,isFinished:h,isIterable:H,isReadableNodeStream:F,isReadableStream:y,isReadableEnded:$0,isReadableFinished:_,isReadableErrored:A,isNodeStream:x,isWebStream:Y,isWritable:O,isWritableNodeStream:M,isWritableStream:D,isWritableEnded:c,isWritableFinished:m,isWritableErrored:f,isServerRequest:K0,isServerResponse:i,willEmitClose:z0,isTransformStream:z}}),z2=x0((Q,$)=>{var q=_2(),{AbortError:K,codes:J}=K1(),{ERR_INVALID_ARG_TYPE:Z,ERR_STREAM_PREMATURE_CLOSE:G}=J,{kEmptyObject:B,once:W}=G1(),{validateAbortSignal:U,validateFunction:V,validateObject:N,validateBoolean:F}=q8(),{Promise:M,PromisePrototypeThen:v,SymbolDispose:x}=_0(),{isClosed:y,isReadable:D,isReadableNodeStream:z,isReadableStream:Y,isReadableFinished:H,isReadableErrored:R,isWritable:c,isWritableNodeStream:m,isWritableStream:$0,isWritableFinished:_,isWritableErrored:g,isNodeStream:O,willEmitClose:h,kIsClosedPromise:f}=e1(),A;function I(S){return S.setHeader&&typeof S.abort==="function"}var n=()=>{};function i(S,U0,k){var u,Q0;if(arguments.length===2)k=U0,U0=B;else if(U0==null)U0=B;else N(U0,"options");if(V(k,"callback"),U(U0.signal,"options.signal"),k=W(k),Y(S)||$0(S))return K0(S,U0,k);if(!O(S))throw new Z("stream",["ReadableStream","WritableStream","Stream"],S);let E=(u=U0.readable)!==null&&u!==void 0?u:z(S),q0=(Q0=U0.writable)!==null&&Q0!==void 0?Q0:m(S),B0=S._writableState,w0=S._readableState,M0=()=>{if(!S.writable)t()},b=h(S)&&z(S)===E&&m(S)===q0,T=_(S,!1),t=()=>{if(T=!0,S.destroyed)b=!1;if(b&&(!S.readable||E))return;if(!E||Z0)k.call(S)},Z0=H(S,!1),W0=()=>{if(Z0=!0,S.destroyed)b=!1;if(b&&(!S.writable||q0))return;if(!q0||T)k.call(S)},C=(j)=>{k.call(S,j)},X=y(S),P=()=>{X=!0;let j=g(S)||R(S);if(j&&typeof j!=="boolean")return k.call(S,j);if(E&&!Z0&&z(S,!0)){if(!H(S,!1))return k.call(S,new G)}if(q0&&!T){if(!_(S,!1))return k.call(S,new G)}k.call(S)},o=()=>{X=!0;let j=g(S)||R(S);if(j&&typeof j!=="boolean")return k.call(S,j);k.call(S)},r=()=>{S.req.on("finish",t)};if(I(S)){if(S.on("complete",t),!b)S.on("abort",P);if(S.req)r();else S.on("request",r)}else if(q0&&!B0)S.on("end",M0),S.on("close",M0);if(!b&&typeof S.aborted==="boolean")S.on("aborted",P);if(S.on("end",W0),S.on("finish",t),U0.error!==!1)S.on("error",C);if(S.on("close",P),X)q.nextTick(P);else if(B0!==null&&B0!==void 0&&B0.errorEmitted||w0!==null&&w0!==void 0&&w0.errorEmitted){if(!b)q.nextTick(o)}else if(!E&&(!b||D(S))&&(T||c(S)===!1))q.nextTick(o);else if(!q0&&(!b||c(S))&&(Z0||D(S)===!1))q.nextTick(o);else if(w0&&S.req&&S.aborted)q.nextTick(o);let l=()=>{if(k=n,S.removeListener("aborted",P),S.removeListener("complete",t),S.removeListener("abort",P),S.removeListener("request",r),S.req)S.req.removeListener("finish",t);S.removeListener("end",M0),S.removeListener("close",M0),S.removeListener("finish",t),S.removeListener("end",W0),S.removeListener("error",C),S.removeListener("close",P)};if(U0.signal&&!X){let j=()=>{let d=k;l(),d.call(S,new K(void 0,{cause:U0.signal.reason}))};if(U0.signal.aborted)q.nextTick(j);else{A=A||G1().addAbortListener;let d=A(U0.signal,j),e=k;k=W((...p)=>{d[x](),e.apply(S,p)})}}return l}function K0(S,U0,k){let u=!1,Q0=n;if(U0.signal)if(Q0=()=>{u=!0,k.call(S,new K(void 0,{cause:U0.signal.reason}))},U0.signal.aborted)q.nextTick(Q0);else{A=A||G1().addAbortListener;let q0=A(U0.signal,Q0),B0=k;k=W((...w0)=>{q0[x](),B0.apply(S,w0)})}let E=(...q0)=>{if(!u)q.nextTick(()=>k.apply(S,q0))};return v(S[f].promise,E,E),n}function z0(S,U0){var k;let u=!1;if(U0===null)U0=B;if((k=U0)!==null&&k!==void 0&&k.cleanup)F(U0.cleanup,"cleanup"),u=U0.cleanup;return new M((Q0,E)=>{let q0=i(S,U0,(B0)=>{if(u)q0();if(B0)E(B0);else Q0()})})}$.exports=i,$.exports.finished=z0}),G6=x0((Q,$)=>{var q=_2(),{aggregateTwoErrors:K,codes:{ERR_MULTIPLE_CALLBACK:J},AbortError:Z}=K1(),{Symbol:G}=_0(),{kIsDestroyed:B,isDestroyed:W,isFinished:U,isServerRequest:V}=e1(),N=G("kDestroy"),F=G("kConstruct");function M(h,f,A){if(h){if(h.stack,f&&!f.errored)f.errored=h;if(A&&!A.errored)A.errored=h}}function v(h,f){let A=this._readableState,I=this._writableState,n=I||A;if(I!==null&&I!==void 0&&I.destroyed||A!==null&&A!==void 0&&A.destroyed){if(typeof f==="function")f();return this}if(M(h,I,A),I)I.destroyed=!0;if(A)A.destroyed=!0;if(!n.constructed)this.once(N,function(i){x(this,K(i,h),f)});else x(this,h,f);return this}function x(h,f,A){let I=!1;function n(i){if(I)return;I=!0;let{_readableState:K0,_writableState:z0}=h;if(M(i,z0,K0),z0)z0.closed=!0;if(K0)K0.closed=!0;if(typeof A==="function")A(i);if(i)q.nextTick(y,h,i);else q.nextTick(D,h)}try{h._destroy(f||null,n)}catch(i){n(i)}}function y(h,f){z(h,f),D(h)}function D(h){let{_readableState:f,_writableState:A}=h;if(A)A.closeEmitted=!0;if(f)f.closeEmitted=!0;if(A!==null&&A!==void 0&&A.emitClose||f!==null&&f!==void 0&&f.emitClose)h.emit("close")}function z(h,f){let{_readableState:A,_writableState:I}=h;if(I!==null&&I!==void 0&&I.errorEmitted||A!==null&&A!==void 0&&A.errorEmitted)return;if(I)I.errorEmitted=!0;if(A)A.errorEmitted=!0;h.emit("error",f)}function Y(){let h=this._readableState,f=this._writableState;if(h)h.constructed=!0,h.closed=!1,h.closeEmitted=!1,h.destroyed=!1,h.errored=null,h.errorEmitted=!1,h.reading=!1,h.ended=h.readable===!1,h.endEmitted=h.readable===!1;if(f)f.constructed=!0,f.destroyed=!1,f.closed=!1,f.closeEmitted=!1,f.errored=null,f.errorEmitted=!1,f.finalCalled=!1,f.prefinished=!1,f.ended=f.writable===!1,f.ending=f.writable===!1,f.finished=f.writable===!1}function H(h,f,A){let{_readableState:I,_writableState:n}=h;if(n!==null&&n!==void 0&&n.destroyed||I!==null&&I!==void 0&&I.destroyed)return this;if(I!==null&&I!==void 0&&I.autoDestroy||n!==null&&n!==void 0&&n.autoDestroy)h.destroy(f);else if(f){if(f.stack,n&&!n.errored)n.errored=f;if(I&&!I.errored)I.errored=f;if(A)q.nextTick(z,h,f);else z(h,f)}}function R(h,f){if(typeof h._construct!=="function")return;let{_readableState:A,_writableState:I}=h;if(A)A.constructed=!1;if(I)I.constructed=!1;if(h.once(F,f),h.listenerCount(F)>1)return;q.nextTick(c,h)}function c(h){let f=!1;function A(I){if(f){H(h,I!==null&&I!==void 0?I:new J);return}f=!0;let{_readableState:n,_writableState:i}=h,K0=i||n;if(n)n.constructed=!0;if(i)i.constructed=!0;if(K0.destroyed)h.emit(N,I);else if(I)H(h,I,!0);else q.nextTick(m,h)}try{h._construct((I)=>{q.nextTick(A,I)})}catch(I){q.nextTick(A,I)}}function m(h){h.emit(F)}function $0(h){return(h===null||h===void 0?void 0:h.setHeader)&&typeof h.abort==="function"}function _(h){h.emit("close")}function g(h,f){h.emit("error",f),q.nextTick(_,h)}function O(h,f){if(!h||W(h))return;if(!f&&!U(h))f=new Z;if(V(h))h.socket=null,h.destroy(f);else if($0(h))h.abort();else if($0(h.req))h.req.abort();else if(typeof h.destroy==="function")h.destroy(f);else if(typeof h.close==="function")h.close();else if(f)q.nextTick(g,h,f);else q.nextTick(_,h);if(!h.destroyed)h[B]=!0}$.exports={construct:R,destroyer:O,destroy:v,undestroy:Y,errorOrDestroy:H}}),D4=x0((Q,$)=>{var{ArrayIsArray:q,ObjectSetPrototypeOf:K}=_0(),{EventEmitter:J}=(a1(),y0(o1));function Z(B){J.call(this,B)}K(Z.prototype,J.prototype),K(Z,J),Z.prototype.pipe=function(B,W){let U=this;function V(D){if(B.writable&&B.write(D)===!1&&U.pause)U.pause()}U.on("data",V);function N(){if(U.readable&&U.resume)U.resume()}if(B.on("drain",N),!B._isStdio&&(!W||W.end!==!1))U.on("end",M),U.on("close",v);let F=!1;function M(){if(F)return;F=!0,B.end()}function v(){if(F)return;if(F=!0,typeof B.destroy==="function")B.destroy()}function x(D){if(y(),J.listenerCount(this,"error")===0)this.emit("error",D)}G(U,"error",x),G(B,"error",x);function y(){U.removeListener("data",V),B.removeListener("drain",N),U.removeListener("end",M),U.removeListener("close",v),U.removeListener("error",x),B.removeListener("error",x),U.removeListener("end",y),U.removeListener("close",y),B.removeListener("close",y)}return U.on("end",y),U.on("close",y),B.on("close",y),B.emit("pipe",U),B};function G(B,W,U){if(typeof B.prependListener==="function")return B.prependListener(W,U);if(!B._events||!B._events[W])B.on(W,U);else if(q(B._events[W]))B._events[W].unshift(U);else B._events[W]=[U,B._events[W]]}$.exports={Stream:Z,prependListener:G}}),d8=x0((Q,$)=>{var{SymbolDispose:q}=_0(),{AbortError:K,codes:J}=K1(),{isNodeStream:Z,isWebStream:G,kControllerErrorFunction:B}=e1(),W=z2(),{ERR_INVALID_ARG_TYPE:U}=J,V,N=(F,M)=>{if(typeof F!=="object"||!("aborted"in F))throw new U(M,"AbortSignal",F)};$.exports.addAbortSignal=function F(M,v){if(N(M,"signal"),!Z(v)&&!G(v))throw new U("stream",["ReadableStream","WritableStream","Stream"],v);return $.exports.addAbortSignalNoValidate(M,v)},$.exports.addAbortSignalNoValidate=function(F,M){if(typeof F!=="object"||!("aborted"in F))return M;let v=Z(M)?()=>{M.destroy(new K(void 0,{cause:F.reason}))}:()=>{M[B](new K(void 0,{cause:F.reason}))};if(F.aborted)v();else{V=V||G1().addAbortListener;let x=V(F,v);W(M,x[q])}return M}}),JV=x0((Q,$)=>{var{StringPrototypeSlice:q,SymbolIterator:K,TypedArrayPrototypeSet:J,Uint8Array:Z}=_0(),{Buffer:G}=(a0(),y0(s0)),{inspect:B}=G1();$.exports=class W{constructor(){this.head=null,this.tail=null,this.length=0}push(U){let V={data:U,next:null};if(this.length>0)this.tail.next=V;else this.head=V;this.tail=V,++this.length}unshift(U){let V={data:U,next:this.head};if(this.length===0)this.tail=V;this.head=V,++this.length}shift(){if(this.length===0)return;let U=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,U}clear(){this.head=this.tail=null,this.length=0}join(U){if(this.length===0)return"";let V=this.head,N=""+V.data;while((V=V.next)!==null)N+=U+V.data;return N}concat(U){if(this.length===0)return G.alloc(0);let V=G.allocUnsafe(U>>>0),N=this.head,F=0;while(N)J(V,N.data,F),F+=N.data.length,N=N.next;return V}consume(U,V){let N=this.head.data;if(UM.length)V+=M,U-=M.length;else{if(U===M.length)if(V+=M,++F,N.next)this.head=N.next;else this.head=this.tail=null;else V+=q(M,0,U),this.head=N,N.data=q(M,U);break}++F}while((N=N.next)!==null);return this.length-=F,V}_getBuffer(U){let V=G.allocUnsafe(U),N=U,F=this.head,M=0;do{let v=F.data;if(U>v.length)J(V,v,N-U),U-=v.length;else{if(U===v.length)if(J(V,v,N-U),++M,F.next)this.head=F.next;else this.head=this.tail=null;else J(V,new Z(v.buffer,v.byteOffset,U),N-U),this.head=F,F.data=v.slice(U);break}++M}while((F=F.next)!==null);return this.length-=M,V}[Symbol.for("nodejs.util.inspect.custom")](U,V){return B(this,{...V,depth:0,customInspect:!1})}}}),m8=x0((Q,$)=>{var{MathFloor:q,NumberIsInteger:K}=_0(),{validateInteger:J}=q8(),{ERR_INVALID_ARG_VALUE:Z}=K1().codes,G=16384,B=16;function W(F,M,v){return F.highWaterMark!=null?F.highWaterMark:M?F[v]:null}function U(F){return F?B:G}function V(F,M){if(J(M,"value",0),F)B=M;else G=M}function N(F,M,v,x){let y=W(M,x,v);if(y!=null){if(!K(y)||y<0){let D=x?`options.${v}`:"options.highWaterMark";throw new Z(D,y)}return q(y)}return U(F.objectMode)}$.exports={getHighWaterMark:N,getDefaultHighWaterMark:U,setDefaultHighWaterMark:V}}),UV=x0((Q,$)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh */var q=(a0(),y0(s0)),K=q.Buffer;function J(G,B){for(var W in G)B[W]=G[W]}if(K.from&&K.alloc&&K.allocUnsafe&&K.allocUnsafeSlow)$.exports=q;else J(q,Q),Q.Buffer=Z;function Z(G,B,W){return K(G,B,W)}Z.prototype=Object.create(K.prototype),J(K,Z),Z.from=function(G,B,W){if(typeof G==="number")throw new TypeError("Argument must not be a number");return K(G,B,W)},Z.alloc=function(G,B,W){if(typeof G!=="number")throw new TypeError("Argument must be a number");var U=K(G);if(B!==void 0)if(typeof W==="string")U.fill(B,W);else U.fill(B);else U.fill(0);return U},Z.allocUnsafe=function(G){if(typeof G!=="number")throw new TypeError("Argument must be a number");return K(G)},Z.allocUnsafeSlow=function(G){if(typeof G!=="number")throw new TypeError("Argument must be a number");return q.SlowBuffer(G)}}),VV=x0((Q)=>{var $=UV().Buffer,q=$.isEncoding||function(z){switch(z=""+z,z&&z.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function K(z){if(!z)return"utf8";var Y;while(!0)switch(z){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return z;default:if(Y)return;z=(""+z).toLowerCase(),Y=!0}}function J(z){var Y=K(z);if(typeof Y!=="string"&&($.isEncoding===q||!q(z)))throw new Error("Unknown encoding: "+z);return Y||z}Q.StringDecoder=Z;function Z(z){this.encoding=J(z);var Y;switch(this.encoding){case"utf16le":this.text=F,this.end=M,Y=4;break;case"utf8":this.fillLast=U,Y=4;break;case"base64":this.text=v,this.end=x,Y=3;break;default:this.write=y,this.end=D;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=$.allocUnsafe(Y)}Z.prototype.write=function(z){if(z.length===0)return"";var Y,H;if(this.lastNeed){if(Y=this.fillLast(z),Y===void 0)return"";H=this.lastNeed,this.lastNeed=0}else H=0;if(H>5===6)return 2;else if(z>>4===14)return 3;else if(z>>3===30)return 4;return z>>6===2?-1:-2}function B(z,Y,H){var R=Y.length-1;if(R=0){if(c>0)z.lastNeed=c-1;return c}if(--R=0){if(c>0)z.lastNeed=c-2;return c}if(--R=0){if(c>0)if(c===2)c=0;else z.lastNeed=c-3;return c}return 0}function W(z,Y,H){if((Y[0]&192)!==128)return z.lastNeed=0,"�";if(z.lastNeed>1&&Y.length>1){if((Y[1]&192)!==128)return z.lastNeed=1,"�";if(z.lastNeed>2&&Y.length>2){if((Y[2]&192)!==128)return z.lastNeed=2,"�"}}}function U(z){var Y=this.lastTotal-this.lastNeed,H=W(this,z,Y);if(H!==void 0)return H;if(this.lastNeed<=z.length)return z.copy(this.lastChar,Y,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);z.copy(this.lastChar,Y,0,z.length),this.lastNeed-=z.length}function V(z,Y){var H=B(this,z,Y);if(!this.lastNeed)return z.toString("utf8",Y);this.lastTotal=H;var R=z.length-(H-this.lastNeed);return z.copy(this.lastChar,0,R),z.toString("utf8",Y,R)}function N(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed)return Y+"�";return Y}function F(z,Y){if((z.length-Y)%2===0){var H=z.toString("utf16le",Y);if(H){var R=H.charCodeAt(H.length-1);if(R>=55296&&R<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1],H.slice(0,-1)}return H}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=z[z.length-1],z.toString("utf16le",Y,z.length-1)}function M(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed){var H=this.lastTotal-this.lastNeed;return Y+this.lastChar.toString("utf16le",0,H)}return Y}function v(z,Y){var H=(z.length-Y)%3;if(H===0)return z.toString("base64",Y);if(this.lastNeed=3-H,this.lastTotal=3,H===1)this.lastChar[0]=z[z.length-1];else this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1];return z.toString("base64",Y,z.length-H)}function x(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed)return Y+this.lastChar.toString("base64",0,3-this.lastNeed);return Y}function y(z){return z.toString(this.encoding)}function D(z){return z&&z.length?this.write(z):""}}),YQ=x0((Q,$)=>{var q=_2(),{PromisePrototypeThen:K,SymbolAsyncIterator:J,SymbolIterator:Z}=_0(),{Buffer:G}=(a0(),y0(s0)),{ERR_INVALID_ARG_TYPE:B,ERR_STREAM_NULL_VALUES:W}=K1().codes;function U(V,N,F){let M;if(typeof N==="string"||N instanceof G)return new V({objectMode:!0,...F,read(){this.push(N),this.push(null)}});let v;if(N&&N[J])v=!0,M=N[J]();else if(N&&N[Z])v=!1,M=N[Z]();else throw new B("iterable",["Iterable"],N);let x=new V({objectMode:!0,highWaterMark:1,...F}),y=!1;x._read=function(){if(!y)y=!0,z()},x._destroy=function(Y,H){K(D(Y),()=>q.nextTick(H,Y),(R)=>q.nextTick(H,R||Y))};async function D(Y){let H=Y!==void 0&&Y!==null,R=typeof M.throw==="function";if(H&&R){let{value:c,done:m}=await M.throw(Y);if(await c,m)return}if(typeof M.return==="function"){let{value:c}=await M.return();await c}}async function z(){for(;;){try{let{value:Y,done:H}=v?await M.next():M.next();if(H)x.push(null);else{let R=Y&&typeof Y.then==="function"?await Y:Y;if(R===null)throw y=!1,new W;else if(x.push(R))continue;else y=!1}}catch(Y){x.destroy(Y)}break}}return x}$.exports=U}),n8=x0((Q,$)=>{var q=_2(),{ArrayPrototypeIndexOf:K,NumberIsInteger:J,NumberIsNaN:Z,NumberParseInt:G,ObjectDefineProperties:B,ObjectKeys:W,ObjectSetPrototypeOf:U,Promise:V,SafeSet:N,SymbolAsyncDispose:F,SymbolAsyncIterator:M,Symbol:v}=_0();$.exports=p,p.ReadableState=e;var{EventEmitter:x}=(a1(),y0(o1)),{Stream:y,prependListener:D}=D4(),{Buffer:z}=(a0(),y0(s0)),{addAbortSignal:Y}=d8(),H=z2(),R=G1().debuglog("stream",(w)=>{R=w}),c=JV(),m=G6(),{getHighWaterMark:$0,getDefaultHighWaterMark:_}=m8(),{aggregateTwoErrors:g,codes:{ERR_INVALID_ARG_TYPE:O,ERR_METHOD_NOT_IMPLEMENTED:h,ERR_OUT_OF_RANGE:f,ERR_STREAM_PUSH_AFTER_EOF:A,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:I},AbortError:n}=K1(),{validateObject:i}=q8(),K0=v("kPaused"),{StringDecoder:z0}=VV(),S=YQ();U(p.prototype,y.prototype),U(p,y);var U0=()=>{},{errorOrDestroy:k}=m,u=1,Q0=2,E=4,q0=8,B0=16,w0=32,M0=64,b=128,T=256,t=512,Z0=1024,W0=2048,C=4096,X=8192,P=16384,o=32768,r=65536,l=131072,j=262144;function d(w){return{enumerable:!1,get(){return(this.state&w)!==0},set(L){if(L)this.state|=w;else this.state&=~w}}}B(e.prototype,{objectMode:d(u),ended:d(Q0),endEmitted:d(E),reading:d(q0),constructed:d(B0),sync:d(w0),needReadable:d(M0),emittedReadable:d(b),readableListening:d(T),resumeScheduled:d(t),errorEmitted:d(Z0),emitClose:d(W0),autoDestroy:d(C),destroyed:d(X),closed:d(P),closeEmitted:d(o),multiAwaitDrain:d(r),readingMore:d(l),dataEmitted:d(j)});function e(w,L,a){if(typeof a!=="boolean")a=L instanceof t1();if(this.state=W0|C|B0|w0,w&&w.objectMode)this.state|=u;if(a&&w&&w.readableObjectMode)this.state|=u;if(this.highWaterMark=w?$0(this,w,"readableHighWaterMark",a):_(!1),this.buffer=new c,this.length=0,this.pipes=[],this.flowing=null,this[K0]=null,w&&w.emitClose===!1)this.state&=~W0;if(w&&w.autoDestroy===!1)this.state&=~C;if(this.errored=null,this.defaultEncoding=w&&w.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,w&&w.encoding)this.decoder=new z0(w.encoding),this.encoding=w.encoding}function p(w){if(!(this instanceof p))return new p(w);let L=this instanceof t1();if(this._readableState=new e(w,this,L),w){if(typeof w.read==="function")this._read=w.read;if(typeof w.destroy==="function")this._destroy=w.destroy;if(typeof w.construct==="function")this._construct=w.construct;if(w.signal&&!L)Y(w.signal,this)}y.call(this,w),m.construct(this,()=>{if(this._readableState.needReadable)M1(this,this._readableState)})}p.prototype.destroy=m.destroy,p.prototype._undestroy=m.undestroy,p.prototype._destroy=function(w,L){L(w)},p.prototype[x.captureRejectionSymbol]=function(w){this.destroy(w)},p.prototype[F]=function(){let w;if(!this.destroyed)w=this.readableEnded?null:new n,this.destroy(w);return new V((L,a)=>H(this,(s)=>s&&s!==w?a(s):L(null)))},p.prototype.push=function(w,L){return G0(this,w,L,!1)},p.prototype.unshift=function(w,L){return G0(this,w,L,!0)};function G0(w,L,a,s){R("readableAddChunk",L);let V0=w._readableState,g0;if((V0.state&u)===0){if(typeof L==="string"){if(a=a||V0.defaultEncoding,V0.encoding!==a)if(s&&V0.encoding)L=z.from(L,a).toString(V0.encoding);else L=z.from(L,a),a=""}else if(L instanceof z)a="";else if(y._isUint8Array(L))L=y._uint8ArrayToBuffer(L),a="";else if(L!=null)g0=new O("chunk",["string","Buffer","Uint8Array"],L)}if(g0)k(w,g0);else if(L===null)V0.state&=~q0,A0(w,V0);else if((V0.state&u)!==0||L&&L.length>0)if(s)if((V0.state&E)!==0)k(w,new I);else if(V0.destroyed||V0.errored)return!1;else P0(w,V0,L,!0);else if(V0.ended)k(w,new A);else if(V0.destroyed||V0.errored)return!1;else if(V0.state&=~q0,V0.decoder&&!a)if(L=V0.decoder.write(L),V0.objectMode||L.length!==0)P0(w,V0,L,!1);else M1(w,V0);else P0(w,V0,L,!1);else if(!s)V0.state&=~q0,M1(w,V0);return!V0.ended&&(V0.length0){if((L.state&r)!==0)L.awaitDrainWriters.clear();else L.awaitDrainWriters=null;L.dataEmitted=!0,w.emit("data",a)}else{if(L.length+=L.objectMode?1:a.length,s)L.buffer.unshift(a);else L.buffer.push(a);if((L.state&M0)!==0)O0(w)}M1(w,L)}p.prototype.isPaused=function(){let w=this._readableState;return w[K0]===!0||w.flowing===!1},p.prototype.setEncoding=function(w){let L=new z0(w);this._readableState.decoder=L,this._readableState.encoding=this._readableState.decoder.encoding;let a=this._readableState.buffer,s="";for(let V0 of a)s+=L.write(V0);if(a.clear(),s!=="")a.push(s);return this._readableState.length=s.length,this};var k0=1073741824;function I0(w){if(w>k0)throw new f("size","<= 1GiB",w);else w--,w|=w>>>1,w|=w>>>2,w|=w>>>4,w|=w>>>8,w|=w>>>16,w++;return w}function Q1(w,L){if(w<=0||L.length===0&&L.ended)return 0;if((L.state&u)!==0)return 1;if(Z(w)){if(L.flowing&&L.length)return L.buffer.first().length;return L.length}if(w<=L.length)return w;return L.ended?L.length:0}p.prototype.read=function(w){if(R("read",w),w===void 0)w=NaN;else if(!J(w))w=G(w,10);let L=this._readableState,a=w;if(w>L.highWaterMark)L.highWaterMark=I0(w);if(w!==0)L.state&=~b;if(w===0&&L.needReadable&&((L.highWaterMark!==0?L.length>=L.highWaterMark:L.length>0)||L.ended)){if(R("read: emitReadable",L.length,L.ended),L.length===0&&L.ended)f2(this);else O0(this);return null}if(w=Q1(w,L),w===0&&L.ended){if(L.length===0)f2(this);return null}let s=(L.state&M0)!==0;if(R("need readable",s),L.length===0||L.length-w0)V0=p6(w,L);else V0=null;if(V0===null)L.needReadable=L.length<=L.highWaterMark,w=0;else if(L.length-=w,L.multiAwaitDrain)L.awaitDrainWriters.clear();else L.awaitDrainWriters=null;if(L.length===0){if(!L.ended)L.needReadable=!0;if(a!==w&&L.ended)f2(this)}if(V0!==null&&!L.errorEmitted&&!L.closeEmitted)L.dataEmitted=!0,this.emit("data",V0);return V0};function A0(w,L){if(R("onEofChunk"),L.ended)return;if(L.decoder){let a=L.decoder.end();if(a&&a.length)L.buffer.push(a),L.length+=L.objectMode?1:a.length}if(L.ended=!0,L.sync)O0(w);else L.needReadable=!1,L.emittedReadable=!0,F1(w)}function O0(w){let L=w._readableState;if(R("emitReadable",L.needReadable,L.emittedReadable),L.needReadable=!1,!L.emittedReadable)R("emitReadable",L.flowing),L.emittedReadable=!0,q.nextTick(F1,w)}function F1(w){let L=w._readableState;if(R("emitReadable_",L.destroyed,L.length,L.ended),!L.destroyed&&!L.errored&&(L.length||L.ended))w.emit("readable"),L.emittedReadable=!1;L.needReadable=!L.flowing&&!L.ended&&L.length<=L.highWaterMark,m6(w)}function M1(w,L){if(!L.readingMore&&L.constructed)L.readingMore=!0,q.nextTick(d0,w,L)}function d0(w,L){while(!L.reading&&!L.ended&&(L.length1&&s.pipes.includes(w))R("false write response, pause",s.awaitDrainWriters.size),s.awaitDrainWriters.add(w);a.pause()}if(!q1)q1=o5(a,w),w.on("drain",q1)}a.on("data",a6);function a6($1){R("ondata");let i0=w.write($1);if(R("dest.write",i0),i0===!1)o6()}function g2($1){if(R("onerror",$1),A1(),w.removeListener("error",g2),w.listenerCount("error")===0){let i0=w._writableState||w._readableState;if(i0&&!i0.errorEmitted)k(w,$1);else w.emit("error",$1)}}D(w,"error",g2);function X2(){w.removeListener("finish",y2),A1()}w.once("close",X2);function y2(){R("onfinish"),w.removeListener("close",X2),A1()}w.once("finish",y2);function A1(){R("unpipe"),a.unpipe(w)}if(w.emit("pipe",a),w.writableNeedDrain===!0)o6();else if(!s.flowing)R("pipe resume"),a.resume();return w};function o5(w,L){return function a(){let s=w._readableState;if(s.awaitDrainWriters===L)R("pipeOnDrain",1),s.awaitDrainWriters=null;else if(s.multiAwaitDrain)R("pipeOnDrain",s.awaitDrainWriters.size),s.awaitDrainWriters.delete(L);if((!s.awaitDrainWriters||s.awaitDrainWriters.size===0)&&w.listenerCount("data"))w.resume()}}p.prototype.unpipe=function(w){let L=this._readableState,a={hasUnpiped:!1};if(L.pipes.length===0)return this;if(!w){let V0=L.pipes;L.pipes=[],this.pause();for(let g0=0;g00,s.flowing!==!1)this.resume()}else if(w==="readable"){if(!s.endEmitted&&!s.readableListening){if(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,R("on readable",s.length,s.reading),s.length)O0(this);else if(!s.reading)q.nextTick(a5,this)}}return a},p.prototype.addListener=p.prototype.on,p.prototype.removeListener=function(w,L){let a=y.prototype.removeListener.call(this,w,L);if(w==="readable")q.nextTick(d6,this);return a},p.prototype.off=p.prototype.removeListener,p.prototype.removeAllListeners=function(w){let L=y.prototype.removeAllListeners.apply(this,arguments);if(w==="readable"||w===void 0)q.nextTick(d6,this);return L};function d6(w){let L=w._readableState;if(L.readableListening=w.listenerCount("readable")>0,L.resumeScheduled&&L[K0]===!1)L.flowing=!0;else if(w.listenerCount("data")>0)w.resume();else if(!L.readableListening)L.flowing=null}function a5(w){R("readable nexttick read 0"),w.read(0)}p.prototype.resume=function(){let w=this._readableState;if(!w.flowing)R("resume"),w.flowing=!w.readableListening,r5(this,w);return w[K0]=!1,this};function r5(w,L){if(!L.resumeScheduled)L.resumeScheduled=!0,q.nextTick(s5,w,L)}function s5(w,L){if(R("resume",L.reading),!L.reading)w.read(0);if(L.resumeScheduled=!1,w.emit("resume"),m6(w),L.flowing&&!L.reading)w.read(0)}p.prototype.pause=function(){if(R("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)R("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState[K0]=!0,this};function m6(w){let L=w._readableState;R("flow",L.flowing);while(L.flowing&&w.read()!==null);}p.prototype.wrap=function(w){let L=!1;w.on("data",(s)=>{if(!this.push(s)&&w.pause)L=!0,w.pause()}),w.on("end",()=>{this.push(null)}),w.on("error",(s)=>{k(this,s)}),w.on("close",()=>{this.destroy()}),w.on("destroy",()=>{this.destroy()}),this._read=()=>{if(L&&w.resume)L=!1,w.resume()};let a=W(w);for(let s=1;s{V0=E0?g(V0,E0):null,a(),a=U0});try{while(!0){let E0=w.destroyed?null:w.read();if(E0!==null)yield E0;else if(V0)throw V0;else if(V0===null)return;else await new V(s)}}catch(E0){throw V0=g(V0,E0),V0}finally{if((V0||(L===null||L===void 0?void 0:L.destroyOnReturn)!==!1)&&(V0===void 0||w._readableState.autoDestroy))m.destroyer(w,null);else w.off("readable",s),g0()}}B(p.prototype,{readable:{__proto__:null,get(){let w=this._readableState;return!!w&&w.readable!==!1&&!w.destroyed&&!w.errorEmitted&&!w.endEmitted},set(w){if(this._readableState)this._readableState.readable=!!w}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(w){if(this._readableState)this._readableState.flowing=w}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(w){if(!this._readableState)return;this._readableState.destroyed=w}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),B(e.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[K0]!==!1},set(w){this[K0]=!!w}}}),p._fromList=p6;function p6(w,L){if(L.length===0)return null;let a;if(L.objectMode)a=L.buffer.shift();else if(!w||w>=L.length){if(L.decoder)a=L.buffer.join("");else if(L.buffer.length===1)a=L.buffer.first();else a=L.buffer.concat(L.length);L.buffer.clear()}else a=L.buffer.consume(w,L.decoder);return a}function f2(w){let L=w._readableState;if(R("endReadable",L.endEmitted),!L.endEmitted)L.ended=!0,q.nextTick(e5,L,w)}function e5(w,L){if(R("endReadableNT",w.endEmitted,w.length),!w.errored&&!w.closeEmitted&&!w.endEmitted&&w.length===0){if(w.endEmitted=!0,L.emit("end"),L.writable&&L.allowHalfOpen===!1)q.nextTick(Q4,L);else if(w.autoDestroy){let a=L._writableState;if(!a||a.autoDestroy&&(a.finished||a.writable===!1))L.destroy()}}}function Q4(w){if(w.writable&&!w.writableEnded&&!w.destroyed)w.end()}p.from=function(w,L){return S(p,w,L)};var A2;function i6(){if(A2===void 0)A2={};return A2}p.fromWeb=function(w,L){return i6().newStreamReadableFromReadableStream(w,L)},p.toWeb=function(w,L){return i6().newReadableStreamFromStreamReadable(w,L)},p.wrap=function(w,L){var a,s;return new p({objectMode:(a=(s=w.readableObjectMode)!==null&&s!==void 0?s:w.objectMode)!==null&&a!==void 0?a:!0,...L,destroy(V0,g0){m.destroyer(w,V0),g0(V0)}}).wrap(w)}}),H4=x0((Q,$)=>{var q=_2(),{ArrayPrototypeSlice:K,Error:J,FunctionPrototypeSymbolHasInstance:Z,ObjectDefineProperty:G,ObjectDefineProperties:B,ObjectSetPrototypeOf:W,StringPrototypeToLowerCase:U,Symbol:V,SymbolHasInstance:N}=_0();$.exports=i,i.WritableState=I;var{EventEmitter:F}=(a1(),y0(o1)),M=D4().Stream,{Buffer:v}=(a0(),y0(s0)),x=G6(),{addAbortSignal:y}=d8(),{getHighWaterMark:D,getDefaultHighWaterMark:z}=m8(),{ERR_INVALID_ARG_TYPE:Y,ERR_METHOD_NOT_IMPLEMENTED:H,ERR_MULTIPLE_CALLBACK:R,ERR_STREAM_CANNOT_PIPE:c,ERR_STREAM_DESTROYED:m,ERR_STREAM_ALREADY_FINISHED:$0,ERR_STREAM_NULL_VALUES:_,ERR_STREAM_WRITE_AFTER_END:g,ERR_UNKNOWN_ENCODING:O}=K1().codes,{errorOrDestroy:h}=x;W(i.prototype,M.prototype),W(i,M);function f(){}var A=V("kOnFinished");function I(C,X,P){if(typeof P!=="boolean")P=X instanceof t1();if(this.objectMode=!!(C&&C.objectMode),P)this.objectMode=this.objectMode||!!(C&&C.writableObjectMode);this.highWaterMark=C?D(this,C,"writableHighWaterMark",P):z(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let o=!!(C&&C.decodeStrings===!1);this.decodeStrings=!o,this.defaultEncoding=C&&C.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=k.bind(void 0,X),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,n(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!C||C.emitClose!==!1,this.autoDestroy=!C||C.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[A]=[]}function n(C){C.buffered=[],C.bufferedIndex=0,C.allBuffers=!0,C.allNoop=!0}I.prototype.getBuffer=function C(){return K(this.buffered,this.bufferedIndex)},G(I.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function i(C){let X=this instanceof t1();if(!X&&!Z(i,this))return new i(C);if(this._writableState=new I(C,this,X),C){if(typeof C.write==="function")this._write=C.write;if(typeof C.writev==="function")this._writev=C.writev;if(typeof C.destroy==="function")this._destroy=C.destroy;if(typeof C.final==="function")this._final=C.final;if(typeof C.construct==="function")this._construct=C.construct;if(C.signal)y(C.signal,this)}M.call(this,C),x.construct(this,()=>{let P=this._writableState;if(!P.writing)q0(this,P);b(this,P)})}G(i,N,{__proto__:null,value:function(C){if(Z(this,C))return!0;if(this!==i)return!1;return C&&C._writableState instanceof I}}),i.prototype.pipe=function(){h(this,new c)};function K0(C,X,P,o){let r=C._writableState;if(typeof P==="function")o=P,P=r.defaultEncoding;else{if(!P)P=r.defaultEncoding;else if(P!=="buffer"&&!v.isEncoding(P))throw new O(P);if(typeof o!=="function")o=f}if(X===null)throw new _;else if(!r.objectMode)if(typeof X==="string"){if(r.decodeStrings!==!1)X=v.from(X,P),P="buffer"}else if(X instanceof v)P="buffer";else if(M._isUint8Array(X))X=M._uint8ArrayToBuffer(X),P="buffer";else throw new Y("chunk",["string","Buffer","Uint8Array"],X);let l;if(r.ending)l=new g;else if(r.destroyed)l=new m("write");if(l)return q.nextTick(o,l),h(C,l,!0),l;return r.pendingcb++,z0(C,r,X,P,o)}i.prototype.write=function(C,X,P){return K0(this,C,X,P)===!0},i.prototype.cork=function(){this._writableState.corked++},i.prototype.uncork=function(){let C=this._writableState;if(C.corked){if(C.corked--,!C.writing)q0(this,C)}},i.prototype.setDefaultEncoding=function C(X){if(typeof X==="string")X=U(X);if(!v.isEncoding(X))throw new O(X);return this._writableState.defaultEncoding=X,this};function z0(C,X,P,o,r){let l=X.objectMode?1:P.length;X.length+=l;let j=X.lengthP.bufferedIndex)q0(C,P);if(o)if(P.afterWriteTickInfo!==null&&P.afterWriteTickInfo.cb===r)P.afterWriteTickInfo.count++;else P.afterWriteTickInfo={count:1,cb:r,stream:C,state:P},q.nextTick(u,P.afterWriteTickInfo);else Q0(C,P,1,r)}}function u({stream:C,state:X,count:P,cb:o}){return X.afterWriteTickInfo=null,Q0(C,X,P,o)}function Q0(C,X,P,o){if(!X.ending&&!C.destroyed&&X.length===0&&X.needDrain)X.needDrain=!1,C.emit("drain");while(P-- >0)X.pendingcb--,o();if(X.destroyed)E(X);b(C,X)}function E(C){if(C.writing)return;for(let r=C.bufferedIndex;r1&&C._writev){X.pendingcb-=l-1;let d=X.allNoop?f:(p)=>{for(let G0=j;G0256)P.splice(0,j),X.bufferedIndex=0;else X.bufferedIndex=j}X.bufferProcessing=!1}i.prototype._write=function(C,X,P){if(this._writev)this._writev([{chunk:C,encoding:X}],P);else throw new H("_write()")},i.prototype._writev=null,i.prototype.end=function(C,X,P){let o=this._writableState;if(typeof C==="function")P=C,C=null,X=null;else if(typeof X==="function")P=X,X=null;let r;if(C!==null&&C!==void 0){let l=K0(this,C,X);if(l instanceof J)r=l}if(o.corked)o.corked=1,this.uncork();if(r);else if(!o.errored&&!o.ending)o.ending=!0,b(this,o,!0),o.ended=!0;else if(o.finished)r=new $0("end");else if(o.destroyed)r=new m("end");if(typeof P==="function")if(r||o.finished)q.nextTick(P,r);else o[A].push(P);return this};function B0(C){return C.ending&&!C.destroyed&&C.constructed&&C.length===0&&!C.errored&&C.buffered.length===0&&!C.finished&&!C.writing&&!C.errorEmitted&&!C.closeEmitted}function w0(C,X){let P=!1;function o(r){if(P){h(C,r!==null&&r!==void 0?r:R());return}if(P=!0,X.pendingcb--,r){let l=X[A].splice(0);for(let j=0;j{if(B0(r))T(o,r);else r.pendingcb--},C,X);else if(B0(X))X.pendingcb++,T(C,X)}}}function T(C,X){X.pendingcb--,X.finished=!0;let P=X[A].splice(0);for(let o=0;o{var q=_2(),K=(a0(),y0(s0)),{isReadable:J,isWritable:Z,isIterable:G,isNodeStream:B,isReadableNodeStream:W,isWritableNodeStream:U,isDuplexNodeStream:V,isReadableStream:N,isWritableStream:F}=e1(),M=z2(),{AbortError:v,codes:{ERR_INVALID_ARG_TYPE:x,ERR_INVALID_RETURN_VALUE:y}}=K1(),{destroyer:D}=G6(),z=t1(),Y=n8(),H=H4(),{createDeferredPromise:R}=G1(),c=YQ(),m=globalThis.Blob||K.Blob,$0=typeof m!=="undefined"?function A(I){return I instanceof m}:function A(I){return!1},_=globalThis.AbortController||Q8().AbortController,{FunctionPrototypeCall:g}=_0();class O extends z{constructor(A){super(A);if((A===null||A===void 0?void 0:A.readable)===!1)this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0;if((A===null||A===void 0?void 0:A.writable)===!1)this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0}}$.exports=function A(I,n){if(V(I))return I;if(W(I))return f({readable:I});if(U(I))return f({writable:I});if(B(I))return f({writable:!1,readable:!1});if(N(I))return f({readable:Y.fromWeb(I)});if(F(I))return f({writable:H.fromWeb(I)});if(typeof I==="function"){let{value:K0,write:z0,final:S,destroy:U0}=h(I);if(G(K0))return c(O,K0,{objectMode:!0,write:z0,final:S,destroy:U0});let k=K0===null||K0===void 0?void 0:K0.then;if(typeof k==="function"){let u,Q0=g(k,K0,(E)=>{if(E!=null)throw new y("nully","body",E)},(E)=>{D(u,E)});return u=new O({objectMode:!0,readable:!1,write:z0,final(E){S(async()=>{try{await Q0,q.nextTick(E,null)}catch(q0){q.nextTick(E,q0)}})},destroy:U0})}throw new y("Iterable, AsyncIterable or AsyncFunction",n,K0)}if($0(I))return A(I.arrayBuffer());if(G(I))return c(O,I,{objectMode:!0,writable:!1});if(N(I===null||I===void 0?void 0:I.readable)&&F(I===null||I===void 0?void 0:I.writable))return O.fromWeb(I);if(typeof(I===null||I===void 0?void 0:I.writable)==="object"||typeof(I===null||I===void 0?void 0:I.readable)==="object"){let K0=I!==null&&I!==void 0&&I.readable?W(I===null||I===void 0?void 0:I.readable)?I===null||I===void 0?void 0:I.readable:A(I.readable):void 0,z0=I!==null&&I!==void 0&&I.writable?U(I===null||I===void 0?void 0:I.writable)?I===null||I===void 0?void 0:I.writable:A(I.writable):void 0;return f({readable:K0,writable:z0})}let i=I===null||I===void 0?void 0:I.then;if(typeof i==="function"){let K0;return g(i,I,(z0)=>{if(z0!=null)K0.push(z0);K0.push(null)},(z0)=>{D(K0,z0)}),K0=new O({objectMode:!0,writable:!1,read(){}})}throw new x(n,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],I)};function h(A){let{promise:I,resolve:n}=R(),i=new _,K0=i.signal;return{value:A(async function*(){while(!0){let z0=I;I=null;let{chunk:S,done:U0,cb:k}=await z0;if(q.nextTick(k),U0)return;if(K0.aborted)throw new v(void 0,{cause:K0.reason});({promise:I,resolve:n}=R()),yield S}}(),{signal:K0}),write(z0,S,U0){let k=n;n=null,k({chunk:z0,done:!1,cb:U0})},final(z0){let S=n;n=null,S({done:!0,cb:z0})},destroy(z0,S){i.abort(),S(z0)}}}function f(A){let I=A.readable&&typeof A.readable.read!=="function"?Y.wrap(A.readable):A.readable,n=A.writable,i=!!J(I),K0=!!Z(n),z0,S,U0,k,u;function Q0(E){let q0=k;if(k=null,q0)q0(E);else if(E)u.destroy(E)}if(u=new O({readableObjectMode:!!(I!==null&&I!==void 0&&I.readableObjectMode),writableObjectMode:!!(n!==null&&n!==void 0&&n.writableObjectMode),readable:i,writable:K0}),K0)M(n,(E)=>{if(K0=!1,E)D(I,E);Q0(E)}),u._write=function(E,q0,B0){if(n.write(E,q0))B0();else z0=B0},u._final=function(E){n.end(),S=E},n.on("drain",function(){if(z0){let E=z0;z0=null,E()}}),n.on("finish",function(){if(S){let E=S;S=null,E()}});if(i)M(I,(E)=>{if(i=!1,E)D(I,E);Q0(E)}),I.on("readable",function(){if(U0){let E=U0;U0=null,E()}}),I.on("end",function(){u.push(null)}),u._read=function(){while(!0){let E=I.read();if(E===null){U0=u._read;return}if(!u.push(E))return}};return u._destroy=function(E,q0){if(!E&&k!==null)E=new v;if(U0=null,z0=null,S=null,k===null)q0(E);else k=q0,D(n,E),D(I,E)},u}}),t1=x0((Q,$)=>{var{ObjectDefineProperties:q,ObjectGetOwnPropertyDescriptor:K,ObjectKeys:J,ObjectSetPrototypeOf:Z}=_0();$.exports=W;var G=n8(),B=H4();Z(W.prototype,G.prototype),Z(W,G);{let F=J(B.prototype);for(let M=0;M{var{ObjectSetPrototypeOf:q,Symbol:K}=_0();$.exports=W;var{ERR_METHOD_NOT_IMPLEMENTED:J}=K1().codes,Z=t1(),{getHighWaterMark:G}=m8();q(W.prototype,Z.prototype),q(W,Z);var B=K("kCallback");function W(N){if(!(this instanceof W))return new W(N);let F=N?G(this,N,"readableHighWaterMark",!0):null;if(F===0)N={...N,highWaterMark:null,readableHighWaterMark:F,writableHighWaterMark:N.writableHighWaterMark||0};if(Z.call(this,N),this._readableState.sync=!1,this[B]=null,N){if(typeof N.transform==="function")this._transform=N.transform;if(typeof N.flush==="function")this._flush=N.flush}this.on("prefinish",V)}function U(N){if(typeof this._flush==="function"&&!this.destroyed)this._flush((F,M)=>{if(F){if(N)N(F);else this.destroy(F);return}if(M!=null)this.push(M);if(this.push(null),N)N()});else if(this.push(null),N)N()}function V(){if(this._final!==U)U.call(this)}W.prototype._final=U,W.prototype._transform=function(N,F,M){throw new J("_transform()")},W.prototype._write=function(N,F,M){let v=this._readableState,x=this._writableState,y=v.length;this._transform(N,F,(D,z)=>{if(D){M(D);return}if(z!=null)this.push(z);if(x.ended||y===v.length||v.length{var{ObjectSetPrototypeOf:q}=_0();$.exports=J;var K=LQ();q(J.prototype,K.prototype),q(J,K);function J(Z){if(!(this instanceof J))return new J(Z);K.call(this,Z)}J.prototype._transform=function(Z,G,B){B(null,Z)}}),k4=x0((Q,$)=>{var q=_2(),{ArrayIsArray:K,Promise:J,SymbolAsyncIterator:Z,SymbolDispose:G}=_0(),B=z2(),{once:W}=G1(),U=G6(),V=t1(),{aggregateTwoErrors:N,codes:{ERR_INVALID_ARG_TYPE:F,ERR_INVALID_RETURN_VALUE:M,ERR_MISSING_ARGS:v,ERR_STREAM_DESTROYED:x,ERR_STREAM_PREMATURE_CLOSE:y},AbortError:D}=K1(),{validateFunction:z,validateAbortSignal:Y}=q8(),{isIterable:H,isReadable:R,isReadableNodeStream:c,isNodeStream:m,isTransformStream:$0,isWebStream:_,isReadableStream:g,isReadableFinished:O}=e1(),h=globalThis.AbortController||Q8().AbortController,f,A,I;function n(E,q0,B0){let w0=!1;E.on("close",()=>{w0=!0});let M0=B(E,{readable:q0,writable:B0},(b)=>{w0=!b});return{destroy:(b)=>{if(w0)return;w0=!0,U.destroyer(E,b||new x("pipe"))},cleanup:M0}}function i(E){return z(E[E.length-1],"streams[stream.length - 1]"),E.pop()}function K0(E){if(H(E))return E;else if(c(E))return z0(E);throw new F("val",["Readable","Iterable","AsyncIterable"],E)}async function*z0(E){if(!A)A=n8();yield*A.prototype[Z].call(E)}async function S(E,q0,B0,{end:w0}){let M0,b=null,T=(W0)=>{if(W0)M0=W0;if(b){let C=b;b=null,C()}},t=()=>new J((W0,C)=>{if(M0)C(M0);else b=()=>{if(M0)C(M0);else W0()}});q0.on("drain",T);let Z0=B(q0,{readable:!1},T);try{if(q0.writableNeedDrain)await t();for await(let W0 of E)if(!q0.write(W0))await t();if(w0)q0.end(),await t();B0()}catch(W0){B0(M0!==W0?N(M0,W0):W0)}finally{Z0(),q0.off("drain",T)}}async function U0(E,q0,B0,{end:w0}){if($0(q0))q0=q0.writable;let M0=q0.getWriter();try{for await(let b of E)await M0.ready,M0.write(b).catch(()=>{});if(await M0.ready,w0)await M0.close();B0()}catch(b){try{await M0.abort(b),B0(b)}catch(T){B0(T)}}}function k(...E){return u(E,W(i(E)))}function u(E,q0,B0){if(E.length===1&&K(E[0]))E=E[0];if(E.length<2)throw new v("streams");let w0=new h,M0=w0.signal,b=B0===null||B0===void 0?void 0:B0.signal,T=[];Y(b,"options.signal");function t(){r(new D)}I=I||G1().addAbortListener;let Z0;if(b)Z0=I(b,t);let W0,C,X=[],P=0;function o(p){r(p,--P===0)}function r(p,G0){var P0;if(p&&(!W0||W0.code==="ERR_STREAM_PREMATURE_CLOSE"))W0=p;if(!W0&&!G0)return;while(X.length)X.shift()(W0);if((P0=Z0)===null||P0===void 0||P0[G](),w0.abort(),G0){if(!W0)T.forEach((k0)=>k0());q.nextTick(q0,W0,C)}}let l;for(let p=0;p0,I0=P0||(B0===null||B0===void 0?void 0:B0.end)!==!1,Q1=p===E.length-1;if(m(G0)){let A0=function(O0){if(O0&&O0.name!=="AbortError"&&O0.code!=="ERR_STREAM_PREMATURE_CLOSE")o(O0)};var j=A0;if(I0){let{destroy:O0,cleanup:F1}=n(G0,P0,k0);if(X.push(O0),R(G0)&&Q1)T.push(F1)}if(G0.on("error",A0),R(G0)&&Q1)T.push(()=>{G0.removeListener("error",A0)})}if(p===0)if(typeof G0==="function"){if(l=G0({signal:M0}),!H(l))throw new M("Iterable, AsyncIterable or Stream","source",l)}else if(H(G0)||c(G0)||$0(G0))l=G0;else l=V.from(G0);else if(typeof G0==="function"){if($0(l)){var d;l=K0((d=l)===null||d===void 0?void 0:d.readable)}else l=K0(l);if(l=G0(l,{signal:M0}),P0){if(!H(l,!0))throw new M("AsyncIterable",`transform[${p-1}]`,l)}else{var e;if(!f)f=DQ();let A0=new f({objectMode:!0}),O0=(e=l)===null||e===void 0?void 0:e.then;if(typeof O0==="function")P++,O0.call(l,(d0)=>{if(C=d0,d0!=null)A0.write(d0);if(I0)A0.end();q.nextTick(o)},(d0)=>{A0.destroy(d0),q.nextTick(o,d0)});else if(H(l,!0))P++,S(l,A0,o,{end:I0});else if(g(l)||$0(l)){let d0=l.readable||l;P++,S(d0,A0,o,{end:I0})}else throw new M("AsyncIterable or Promise","destination",l);l=A0;let{destroy:F1,cleanup:M1}=n(l,!1,!0);if(X.push(F1),Q1)T.push(M1)}}else if(m(G0)){if(c(l)){P+=2;let A0=Q0(l,G0,o,{end:I0});if(R(G0)&&Q1)T.push(A0)}else if($0(l)||g(l)){let A0=l.readable||l;P++,S(A0,G0,o,{end:I0})}else if(H(l))P++,S(l,G0,o,{end:I0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],l);l=G0}else if(_(G0)){if(c(l))P++,U0(K0(l),G0,o,{end:I0});else if(g(l)||H(l))P++,U0(l,G0,o,{end:I0});else if($0(l))P++,U0(l.readable,G0,o,{end:I0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],l);l=G0}else l=V.from(G0)}if(M0!==null&&M0!==void 0&&M0.aborted||b!==null&&b!==void 0&&b.aborted)q.nextTick(t);return l}function Q0(E,q0,B0,{end:w0}){let M0=!1;if(q0.on("close",()=>{if(!M0)B0(new y)}),E.pipe(q0,{end:!1}),w0){let T=function(){M0=!0,q0.end()};var b=T;if(O(E))q.nextTick(T);else E.once("end",T)}else B0();return B(E,{readable:!0,writable:!1},(T)=>{let t=E._readableState;if(T&&T.code==="ERR_STREAM_PREMATURE_CLOSE"&&t&&t.ended&&!t.errored&&!t.errorEmitted)E.once("end",B0).once("error",B0);else B0(T)}),B(q0,{readable:!1,writable:!0},B0)}$.exports={pipelineImpl:u,pipeline:k}}),HQ=x0((Q,$)=>{var{pipeline:q}=k4(),K=t1(),{destroyer:J}=G6(),{isNodeStream:Z,isReadable:G,isWritable:B,isWebStream:W,isTransformStream:U,isWritableStream:V,isReadableStream:N}=e1(),{AbortError:F,codes:{ERR_INVALID_ARG_VALUE:M,ERR_MISSING_ARGS:v}}=K1(),x=z2();$.exports=function y(...D){if(D.length===0)throw new v("streams");if(D.length===1)return K.from(D[0]);let z=[...D];if(typeof D[0]==="function")D[0]=K.from(D[0]);if(typeof D[D.length-1]==="function"){let f=D.length-1;D[f]=K.from(D[f])}for(let f=0;f0&&!(B(D[f])||V(D[f])||U(D[f])))throw new M(`streams[${f}]`,z[f],"must be writable")}let Y,H,R,c,m;function $0(f){let A=c;if(c=null,A)A(f);else if(f)m.destroy(f);else if(!h&&!O)m.destroy()}let _=D[0],g=q(D,$0),O=!!(B(_)||V(_)||U(_)),h=!!(G(g)||N(g)||U(g));if(m=new K({writableObjectMode:!!(_!==null&&_!==void 0&&_.writableObjectMode),readableObjectMode:!!(g!==null&&g!==void 0&&g.readableObjectMode),writable:O,readable:h}),O){if(Z(_))m._write=function(A,I,n){if(_.write(A,I))n();else Y=n},m._final=function(A){_.end(),H=A},_.on("drain",function(){if(Y){let A=Y;Y=null,A()}});else if(W(_)){let A=(U(_)?_.writable:_).getWriter();m._write=async function(I,n,i){try{await A.ready,A.write(I).catch(()=>{}),i()}catch(K0){i(K0)}},m._final=async function(I){try{await A.ready,A.close().catch(()=>{}),H=I}catch(n){I(n)}}}let f=U(g)?g.readable:g;x(f,()=>{if(H){let A=H;H=null,A()}})}if(h){if(Z(g))g.on("readable",function(){if(R){let f=R;R=null,f()}}),g.on("end",function(){m.push(null)}),m._read=function(){while(!0){let f=g.read();if(f===null){R=m._read;return}if(!m.push(f))return}};else if(W(g)){let f=(U(g)?g.readable:g).getReader();m._read=async function(){while(!0)try{let{value:A,done:I}=await f.read();if(!m.push(A))return;if(I){m.push(null);return}}catch{return}}}}return m._destroy=function(f,A){if(!f&&c!==null)f=new F;if(R=null,Y=null,H=null,c===null)A(f);else if(c=A,Z(g))J(g,f)},m}}),GV=x0((Q,$)=>{var q=globalThis.AbortController||Q8().AbortController,{codes:{ERR_INVALID_ARG_VALUE:K,ERR_INVALID_ARG_TYPE:J,ERR_MISSING_ARGS:Z,ERR_OUT_OF_RANGE:G},AbortError:B}=K1(),{validateAbortSignal:W,validateInteger:U,validateObject:V}=q8(),N=_0().Symbol("kWeak"),F=_0().Symbol("kResistStopPropagation"),{finished:M}=z2(),v=HQ(),{addAbortSignalNoValidate:x}=d8(),{isWritable:y,isNodeStream:D}=e1(),{deprecate:z}=G1(),{ArrayPrototypePush:Y,Boolean:H,MathFloor:R,Number:c,NumberIsNaN:m,Promise:$0,PromiseReject:_,PromiseResolve:g,PromisePrototypeThen:O,Symbol:h}=_0(),f=h("kEmpty"),A=h("kEof");function I(b,T){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");if(D(b)&&!y(b))throw new K("stream",b,"must be writable");let t=v(this,b);if(T!==null&&T!==void 0&&T.signal)x(T.signal,t);return t}function n(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");let t=1;if((T===null||T===void 0?void 0:T.concurrency)!=null)t=R(T.concurrency);let Z0=t-1;if((T===null||T===void 0?void 0:T.highWaterMark)!=null)Z0=R(T.highWaterMark);return U(t,"options.concurrency",1),U(Z0,"options.highWaterMark",0),Z0+=t,async function*W0(){let C=G1().AbortSignalAny([T===null||T===void 0?void 0:T.signal].filter(H)),X=this,P=[],o={signal:C},r,l,j=!1,d=0;function e(){j=!0,p()}function p(){d-=1,G0()}function G0(){if(l&&!j&&d=Z0||d>=t))await new $0((I0)=>{l=I0})}P.push(A)}catch(k0){let I0=_(k0);O(I0,p,e),P.push(I0)}finally{if(j=!0,r)r(),r=null}}P0();try{while(!0){while(P.length>0){let k0=await P[0];if(k0===A)return;if(C.aborted)throw new B;if(k0!==f)yield k0;P.shift(),G0()}await new $0((k0)=>{r=k0})}}finally{if(j=!0,l)l(),l=null}}.call(this)}function i(b=void 0){if(b!=null)V(b,"options");if((b===null||b===void 0?void 0:b.signal)!=null)W(b.signal,"options.signal");return async function*T(){let t=0;for await(let W0 of this){var Z0;if(b!==null&&b!==void 0&&(Z0=b.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B({cause:b.signal.reason});yield[t++,W0]}}.call(this)}async function K0(b,T=void 0){for await(let t of k.call(this,b,T))return!0;return!1}async function z0(b,T=void 0){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);return!await K0.call(this,async(...t)=>{return!await b(...t)},T)}async function S(b,T){for await(let t of k.call(this,b,T))return t;return}async function U0(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);async function t(Z0,W0){return await b(Z0,W0),f}for await(let Z0 of n.call(this,t,T));}function k(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);async function t(Z0,W0){if(await b(Z0,W0))return Z0;return f}return n.call(this,t,T)}class u extends Z{constructor(){super("reduce");this.message="Reduce of an empty stream requires an initial value"}}async function Q0(b,T,t){var Z0;if(typeof b!=="function")throw new J("reducer",["Function","AsyncFunction"],b);if(t!=null)V(t,"options");if((t===null||t===void 0?void 0:t.signal)!=null)W(t.signal,"options.signal");let W0=arguments.length>1;if(t!==null&&t!==void 0&&(Z0=t.signal)!==null&&Z0!==void 0&&Z0.aborted){let r=new B(void 0,{cause:t.signal.reason});throw this.once("error",()=>{}),await M(this.destroy(r)),r}let C=new q,X=C.signal;if(t!==null&&t!==void 0&&t.signal){let r={once:!0,[N]:this,[F]:!0};t.signal.addEventListener("abort",()=>C.abort(),r)}let P=!1;try{for await(let r of this){var o;if(P=!0,t!==null&&t!==void 0&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new B;if(!W0)T=r,W0=!0;else T=await b(T,r,{signal:X})}if(!P&&!W0)throw new u}finally{C.abort()}return T}async function E(b){if(b!=null)V(b,"options");if((b===null||b===void 0?void 0:b.signal)!=null)W(b.signal,"options.signal");let T=[];for await(let Z0 of this){var t;if(b!==null&&b!==void 0&&(t=b.signal)!==null&&t!==void 0&&t.aborted)throw new B(void 0,{cause:b.signal.reason});Y(T,Z0)}return T}function q0(b,T){let t=n.call(this,b,T);return async function*Z0(){for await(let W0 of t)yield*W0}.call(this)}function B0(b){if(b=c(b),m(b))return 0;if(b<0)throw new G("number",">= 0",b);return b}function w0(b,T=void 0){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");return b=B0(b),async function*t(){var Z0;if(T!==null&&T!==void 0&&(Z0=T.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B;for await(let C of this){var W0;if(T!==null&&T!==void 0&&(W0=T.signal)!==null&&W0!==void 0&&W0.aborted)throw new B;if(b--<=0)yield C}}.call(this)}function M0(b,T=void 0){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");return b=B0(b),async function*t(){var Z0;if(T!==null&&T!==void 0&&(Z0=T.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B;for await(let C of this){var W0;if(T!==null&&T!==void 0&&(W0=T.signal)!==null&&W0!==void 0&&W0.aborted)throw new B;if(b-- >0)yield C;if(b<=0)return}}.call(this)}$.exports.streamReturningOperators={asIndexedPairs:z(i,"readable.asIndexedPairs will be removed in a future version."),drop:w0,filter:k,flatMap:q0,map:n,take:M0,compose:I},$.exports.promiseReturningOperators={every:z0,forEach:U0,reduce:Q0,toArray:E,some:K0,find:S}}),kQ=x0((Q,$)=>{var{ArrayPrototypePop:q,Promise:K}=_0(),{isIterable:J,isNodeStream:Z,isWebStream:G}=e1(),{pipelineImpl:B}=k4(),{finished:W}=z2();vQ();function U(...V){return new K((N,F)=>{let M,v,x=V[V.length-1];if(x&&typeof x==="object"&&!Z(x)&&!J(x)&&!G(x)){let y=q(V);M=y.signal,v=y.end}B(V,(y,D)=>{if(y)F(y);else N(D)},{signal:M,end:v})})}$.exports={finished:W,pipeline:U}}),vQ=x0((Q,$)=>{var{Buffer:q}=(a0(),y0(s0)),{ObjectDefineProperty:K,ObjectKeys:J,ReflectApply:Z}=_0(),{promisify:{custom:G}}=G1(),{streamReturningOperators:B,promiseReturningOperators:W}=GV(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:U}}=K1(),V=HQ(),{setDefaultHighWaterMark:N,getDefaultHighWaterMark:F}=m8(),{pipeline:M}=k4(),{destroyer:v}=G6(),x=z2(),y=kQ(),D=e1(),z=$.exports=D4().Stream;z.isDestroyed=D.isDestroyed,z.isDisturbed=D.isDisturbed,z.isErrored=D.isErrored,z.isReadable=D.isReadable,z.isWritable=D.isWritable,z.Readable=n8();for(let H of J(B)){let R=function(...m){if(new.target)throw U();return z.Readable.from(Z(c,this,m))},c=B[H];K(R,"name",{__proto__:null,value:c.name}),K(R,"length",{__proto__:null,value:c.length}),K(z.Readable.prototype,H,{__proto__:null,value:R,enumerable:!1,configurable:!0,writable:!0})}for(let H of J(W)){let R=function(...m){if(new.target)throw U();return Z(c,this,m)},c=W[H];K(R,"name",{__proto__:null,value:c.name}),K(R,"length",{__proto__:null,value:c.length}),K(z.Readable.prototype,H,{__proto__:null,value:R,enumerable:!1,configurable:!0,writable:!0})}z.Writable=H4(),z.Duplex=t1(),z.Transform=LQ(),z.PassThrough=DQ(),z.pipeline=M;var{addAbortSignal:Y}=d8();z.addAbortSignal=Y,z.finished=x,z.destroy=v,z.compose=V,z.setDefaultHighWaterMark=N,z.getDefaultHighWaterMark=F,K(z,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return y}}),K(M,G,{__proto__:null,enumerable:!0,get(){return y.pipeline}}),K(x,G,{__proto__:null,enumerable:!0,get(){return y.finished}}),z.Stream=z,z._isUint8Array=function H(R){return R instanceof Uint8Array},z._uint8ArrayToBuffer=function H(R){return q.from(R.buffer,R.byteOffset,R.byteLength)}}),BV=x0((Q,$)=>{var q=p8();if(q&&process.env.READABLE_STREAM==="disable"){let K=q.promises;$.exports._uint8ArrayToBuffer=q._uint8ArrayToBuffer,$.exports._isUint8Array=q._isUint8Array,$.exports.isDisturbed=q.isDisturbed,$.exports.isErrored=q.isErrored,$.exports.isReadable=q.isReadable,$.exports.Readable=q.Readable,$.exports.Writable=q.Writable,$.exports.Duplex=q.Duplex,$.exports.Transform=q.Transform,$.exports.PassThrough=q.PassThrough,$.exports.addAbortSignal=q.addAbortSignal,$.exports.finished=q.finished,$.exports.destroy=q.destroy,$.exports.pipeline=q.pipeline,$.exports.compose=q.compose,Object.defineProperty(q,"promises",{configurable:!0,enumerable:!0,get(){return K}}),$.exports.Stream=q.Stream}else{let K=vQ(),J=kQ(),Z=K.Readable.destroy;$.exports=K.Readable,$.exports._uint8ArrayToBuffer=K._uint8ArrayToBuffer,$.exports._isUint8Array=K._isUint8Array,$.exports.isDisturbed=K.isDisturbed,$.exports.isErrored=K.isErrored,$.exports.isReadable=K.isReadable,$.exports.Readable=K.Readable,$.exports.Writable=K.Writable,$.exports.Duplex=K.Duplex,$.exports.Transform=K.Transform,$.exports.PassThrough=K.PassThrough,$.exports.addAbortSignal=K.addAbortSignal,$.exports.finished=K.finished,$.exports.destroy=K.destroy,$.exports.destroy=Z,$.exports.pipeline=K.pipeline,$.exports.compose=K.compose,Object.defineProperty(K,"promises",{configurable:!0,enumerable:!0,get(){return J}}),$.exports.Stream=K.Stream}$.exports.default=$.exports});IQ.exports=BV()});var v4=N0((pz,RQ)=>{RQ.exports=p8()});var Q2=N0((w1)=>{w1.base64=!0;w1.array=!0;w1.string=!0;w1.arraybuffer=typeof ArrayBuffer!=="undefined"&&typeof Uint8Array!=="undefined";w1.nodebuffer=typeof Buffer!=="undefined";w1.uint8array=typeof Uint8Array!=="undefined";if(typeof ArrayBuffer==="undefined")w1.blob=!1;else{i8=new ArrayBuffer(0);try{w1.blob=new Blob([i8],{type:"application/zip"}).size===0}catch(Q){try{I4=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,l8=new I4,l8.append(i8),w1.blob=l8.getBlob("application/zip").size===0}catch($){w1.blob=!1}}}var i8,I4,l8;try{w1.nodestream=!!v4().Readable}catch(Q){w1.nodestream=!1}});var C4=N0((R4)=>{var WV=c0(),zV=Q2(),S1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";R4.encode=function(Q){var $=[],q,K,J,Z,G,B,W,U=0,V=Q.length,N=V,F=WV.getTypeOf(Q)!=="string";while(U>2,G=(q&3)<<4|K>>4,B=N>1?(K&15)<<2|J>>6:64,W=N>2?J&63:64,$.push(S1.charAt(Z)+S1.charAt(G)+S1.charAt(B)+S1.charAt(W))}return $.join("")};R4.decode=function(Q){var $,q,K,J,Z,G,B,W=0,U=0,V="data:";if(Q.substr(0,V.length)===V)throw new Error("Invalid base64 input, it looks like a data url.");Q=Q.replace(/[^A-Za-z0-9+/=]/g,"");var N=Q.length*3/4;if(Q.charAt(Q.length-1)===S1.charAt(64))N--;if(Q.charAt(Q.length-2)===S1.charAt(64))N--;if(N%1!==0)throw new Error("Invalid base64 input, bad content length.");var F;if(zV.uint8array)F=new Uint8Array(N|0);else F=new Array(N|0);while(W>4,q=(Z&15)<<4|G>>2,K=(G&3)<<6|B,F[U++]=$,G!==64)F[U++]=q;if(B!==64)F[U++]=K}return F}});var $8=N0((oz,CQ)=>{CQ.exports={isNode:typeof Buffer!=="undefined",newBufferFrom:function(Q,$){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(Q,$);else{if(typeof Q==="number")throw new Error('The "data" argument must not be a number');return new Buffer(Q,$)}},allocBuffer:function(Q){if(Buffer.alloc)return Buffer.alloc(Q);else{var $=new Buffer(Q);return $.fill(0),$}},isBuffer:function(Q){return Buffer.isBuffer(Q)},isStream:function(Q){return Q&&typeof Q.on==="function"&&typeof Q.pause==="function"&&typeof Q.resume==="function"}}});var AQ=N0((az,fQ)=>{var jQ=global.MutationObserver||global.WebKitMutationObserver,K8;if(jQ)a8=0,j4=new jQ(o8),r8=global.document.createTextNode(""),j4.observe(r8,{characterData:!0}),K8=function(){r8.data=a8=++a8%2};else if(!global.setImmediate&&typeof global.MessageChannel!=="undefined")s8=new global.MessageChannel,s8.port1.onmessage=o8,K8=function(){s8.port2.postMessage(0)};else if("document"in global&&"onreadystatechange"in global.document.createElement("script"))K8=function(){var Q=global.document.createElement("script");Q.onreadystatechange=function(){o8(),Q.onreadystatechange=null,Q.parentNode.removeChild(Q),Q=null},global.document.documentElement.appendChild(Q)};else K8=function(){setTimeout(o8,0)};var a8,j4,r8,s8,f4,J8=[];function o8(){f4=!0;var Q,$,q=J8.length;while(q){$=J8,J8=[],Q=-1;while(++Q{var MV=AQ();function B6(){}var e0={},gQ=["REJECTED"],A4=["FULFILLED"],XQ=["PENDING"];xQ.exports=F2;function F2(Q){if(typeof Q!=="function")throw new TypeError("resolver must be a function");if(this.state=XQ,this.queue=[],this.outcome=void 0,Q!==B6)yQ(this,Q)}F2.prototype.finally=function(Q){if(typeof Q!=="function")return this;var $=this.constructor;return this.then(q,K);function q(J){function Z(){return J}return $.resolve(Q()).then(Z)}function K(J){function Z(){throw J}return $.resolve(Q()).then(Z)}};F2.prototype.catch=function(Q){return this.then(null,Q)};F2.prototype.then=function(Q,$){if(typeof Q!=="function"&&this.state===A4||typeof $!=="function"&&this.state===gQ)return this;var q=new this.constructor(B6);if(this.state!==XQ){var K=this.state===A4?Q:$;g4(q,K,this.outcome)}else this.queue.push(new U8(q,Q,$));return q};function U8(Q,$,q){if(this.promise=Q,typeof $==="function")this.onFulfilled=$,this.callFulfilled=this.otherCallFulfilled;if(typeof q==="function")this.onRejected=q,this.callRejected=this.otherCallRejected}U8.prototype.callFulfilled=function(Q){e0.resolve(this.promise,Q)};U8.prototype.otherCallFulfilled=function(Q){g4(this.promise,this.onFulfilled,Q)};U8.prototype.callRejected=function(Q){e0.reject(this.promise,Q)};U8.prototype.otherCallRejected=function(Q){g4(this.promise,this.onRejected,Q)};function g4(Q,$,q){MV(function(){var K;try{K=$(q)}catch(J){return e0.reject(Q,J)}if(K===Q)e0.reject(Q,new TypeError("Cannot resolve promise with itself"));else e0.resolve(Q,K)})}e0.resolve=function(Q,$){var q=hQ(wV,$);if(q.status==="error")return e0.reject(Q,q.value);var K=q.value;if(K)yQ(Q,K);else{Q.state=A4,Q.outcome=$;var J=-1,Z=Q.queue.length;while(++J{var X4=null;if(typeof Promise!=="undefined")X4=Promise;else X4=OQ();PQ.exports={Promise:X4}});var EQ=N0((TQ)=>{(function(Q,$){if(Q.setImmediate)return;var q=1,K={},J=!1,Z=Q.document,G;function B(z){if(typeof z!=="function")z=new Function(""+z);var Y=new Array(arguments.length-1);for(var H=0;H{var M2=Q2(),HV=C4(),z6=$8(),y4=W6();EQ();function kV(Q){var $=null;if(M2.uint8array)$=new Uint8Array(Q.length);else $=new Array(Q.length);return e8(Q,$)}p0.newBlob=function(Q,$){p0.checkSupport("blob");try{return new Blob([Q],{type:$})}catch(J){try{var q=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,K=new q;return K.append(Q),K.getBlob($)}catch(Z){throw new Error("Bug : can't construct the Blob.")}}};function V8(Q){return Q}function e8(Q,$){for(var q=0;q1)try{return t8.stringifyByChunk(Q,q,$)}catch(J){$=Math.floor($/2)}return t8.stringifyByChar(Q)}p0.applyFromCharCode=Z8;function Q5(Q,$){for(var q=0;q{function SQ(Q){this.name=Q||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}SQ.prototype={push:function(Q){this.emit("data",Q)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(Q){this.emit("error",Q)}return!0},error:function(Q){if(this.isFinished)return!1;if(this.isPaused)this.generatedError=Q;else{if(this.isFinished=!0,this.emit("error",Q),this.previous)this.previous.error(Q);this.cleanUp()}return!0},on:function(Q,$){return this._listeners[Q].push($),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(Q,$){if(this._listeners[Q])for(var q=0;q "+Q;else return Q}};uQ.exports=SQ});var M6=N0((N2)=>{var F6=c0(),c2=Q2(),vV=$8(),q5=N1(),G8=new Array(256);for(u1=0;u1<256;u1++)G8[u1]=u1>=252?6:u1>=248?5:u1>=240?4:u1>=224?3:u1>=192?2:1;var u1;G8[254]=G8[254]=1;var IV=function(Q){var $,q,K,J,Z,G=Q.length,B=0;for(J=0;J>>6,$[Z++]=128|q&63;else if(q<65536)$[Z++]=224|q>>>12,$[Z++]=128|q>>>6&63,$[Z++]=128|q&63;else $[Z++]=240|q>>>18,$[Z++]=128|q>>>12&63,$[Z++]=128|q>>>6&63,$[Z++]=128|q&63}return $},RV=function(Q,$){var q;if($=$||Q.length,$>Q.length)$=Q.length;q=$-1;while(q>=0&&(Q[q]&192)===128)q--;if(q<0)return $;if(q===0)return $;return q+G8[Q[q]]>$?q:$},CV=function(Q){var $,q,K,J,Z=Q.length,G=new Array(Z*2);for(q=0,$=0;$4){G[q++]=65533,$+=J-1;continue}K&=J===2?31:J===3?15:7;while(J>1&&$1){G[q++]=65533;continue}if(K<65536)G[q++]=K;else K-=65536,G[q++]=55296|K>>10&1023,G[q++]=56320|K&1023}if(G.length!==q)if(G.subarray)G=G.subarray(0,q);else G.length=q;return F6.applyFromCharCode(G)};N2.utf8encode=function Q($){if(c2.nodebuffer)return vV.newBufferFrom($,"utf-8");return IV($)};N2.utf8decode=function Q($){if(c2.nodebuffer)return F6.transformTo("nodebuffer",$).toString("utf-8");return $=F6.transformTo(c2.uint8array?"uint8array":"array",$),CV($)};function $5(){q5.call(this,"utf-8 decode"),this.leftOver=null}F6.inherits($5,q5);$5.prototype.processChunk=function(Q){var $=F6.transformTo(c2.uint8array?"uint8array":"array",Q.data);if(this.leftOver&&this.leftOver.length){if(c2.uint8array){var q=$;$=new Uint8Array(q.length+this.leftOver.length),$.set(this.leftOver,0),$.set(q,this.leftOver.length)}else $=this.leftOver.concat($);this.leftOver=null}var K=RV($),J=$;if(K!==$.length)if(c2.uint8array)J=$.subarray(0,K),this.leftOver=$.subarray(K,$.length);else J=$.slice(0,K),this.leftOver=$.slice(K,$.length);this.push({data:N2.utf8decode(J),meta:Q.meta})};$5.prototype.flush=function(){if(this.leftOver&&this.leftOver.length)this.push({data:N2.utf8decode(this.leftOver),meta:{}}),this.leftOver=null};N2.Utf8DecodeWorker=$5;function h4(){q5.call(this,"utf-8 encode")}F6.inherits(h4,q5);h4.prototype.processChunk=function(Q){this.push({data:N2.utf8encode(Q.data),meta:Q.meta})};N2.Utf8EncodeWorker=h4});var dQ=N0(($3,bQ)=>{var _Q=N1(),cQ=c0();function x4(Q){_Q.call(this,"ConvertWorker to "+Q),this.destType=Q}cQ.inherits(x4,_Q);x4.prototype.processChunk=function(Q){this.push({data:cQ.transformTo(this.destType,Q.data),meta:Q.meta})};bQ.exports=x4});var pQ=N0((K3,nQ)=>{var mQ=v4().Readable,jV=c0();jV.inherits(O4,mQ);function O4(Q,$,q){mQ.call(this,$),this._helper=Q;var K=this;Q.on("data",function(J,Z){if(!K.push(J))K._helper.pause();if(q)q(Z)}).on("error",function(J){K.emit("error",J)}).on("end",function(){K.push(null)})}O4.prototype._read=function(){this._helper.resume()};nQ.exports=O4});var P4=N0((J3,oQ)=>{var b2=c0(),fV=dQ(),AV=N1(),gV=C4(),XV=Q2(),yV=W6(),iQ=null;if(XV.nodestream)try{iQ=pQ()}catch(Q){}function hV(Q,$,q){switch(Q){case"blob":return b2.newBlob(b2.transformTo("arraybuffer",$),q);case"base64":return gV.encode($);default:return b2.transformTo(Q,$)}}function xV(Q,$){var q,K=0,J=null,Z=0;for(q=0;q<$.length;q++)Z+=$[q].length;switch(Q){case"string":return $.join("");case"array":return Array.prototype.concat.apply([],$);case"uint8array":J=new Uint8Array(Z);for(q=0;q<$.length;q++)J.set($[q],K),K+=$[q].length;return J;case"nodebuffer":return Buffer.concat($);default:throw new Error("concat : unsupported type '"+Q+"'")}}function OV(Q,$){return new yV.Promise(function(q,K){var J=[],Z=Q._internalType,G=Q._outputType,B=Q._mimeType;Q.on("data",function(W,U){if(J.push(W),$)$(U)}).on("error",function(W){J=[],K(W)}).on("end",function(){try{var W=hV(G,xV(Z,J),B);q(W)}catch(U){K(U)}J=[]}).resume()})}function lQ(Q,$,q){var K=$;switch($){case"blob":case"arraybuffer":K="uint8array";break;case"base64":K="string";break}try{this._internalType=K,this._outputType=$,this._mimeType=q,b2.checkSupport(K),this._worker=Q.pipe(new fV(K)),Q.lock()}catch(J){this._worker=new AV("error"),this._worker.error(J)}}lQ.prototype={accumulate:function(Q){return OV(this,Q)},on:function(Q,$){var q=this;if(Q==="data")this._worker.on(Q,function(K){$.call(q,K.data,K.meta)});else this._worker.on(Q,function(){b2.delay($,arguments,q)});return this},resume:function(){return b2.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(Q){if(b2.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new iQ(this,{objectMode:this._outputType!=="nodebuffer"},Q)}};oQ.exports=lQ});var T4=N0((g1)=>{g1.base64=!1;g1.binary=!1;g1.dir=!1;g1.createFolders=!0;g1.date=null;g1.compression=null;g1.compressionOptions=null;g1.comment=null;g1.unixPermissions=null;g1.dosPermissions=null});var E4=N0((V3,aQ)=>{var K5=c0(),J5=N1(),PV=16384;function w6(Q){J5.call(this,"DataWorker");var $=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,Q.then(function(q){if($.dataIsReady=!0,$.data=q,$.max=q&&q.length||0,$.type=K5.getTypeOf(q),!$.isPaused)$._tickAndRepeat()},function(q){$.error(q)})}K5.inherits(w6,J5);w6.prototype.cleanUp=function(){J5.prototype.cleanUp.call(this),this.data=null};w6.prototype.resume=function(){if(!J5.prototype.resume.call(this))return!1;if(!this._tickScheduled&&this.dataIsReady)this._tickScheduled=!0,K5.delay(this._tickAndRepeat,[],this);return!0};w6.prototype._tickAndRepeat=function(){if(this._tickScheduled=!1,this.isPaused||this.isFinished)return;if(this._tick(),!this.isFinished)K5.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0};w6.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var Q=PV,$=null,q=Math.min(this.max,this.index+Q);if(this.index>=this.max)return this.end();else{switch(this.type){case"string":$=this.data.substring(this.index,q);break;case"uint8array":$=this.data.subarray(this.index,q);break;case"array":case"nodebuffer":$=this.data.slice(this.index,q);break}return this.index=q,this.push({data:$,meta:{percent:this.max?this.index/this.max*100:0}})}};aQ.exports=w6});var U5=N0((Z3,sQ)=>{var TV=c0();function EV(){var Q,$=[];for(var q=0;q<256;q++){Q=q;for(var K=0;K<8;K++)Q=Q&1?3988292384^Q>>>1:Q>>>1;$[q]=Q}return $}var rQ=EV();function SV(Q,$,q,K){var J=rQ,Z=K+q;Q=Q^-1;for(var G=K;G>>8^J[(Q^$[G])&255];return Q^-1}function uV(Q,$,q,K){var J=rQ,Z=K+q;Q=Q^-1;for(var G=K;G>>8^J[(Q^$.charCodeAt(G))&255];return Q^-1}sQ.exports=function Q($,q){if(typeof $==="undefined"||!$.length)return 0;var K=TV.getTypeOf($)!=="string";if(K)return SV(q|0,$,$.length,0);else return uV(q|0,$,$.length,0)}});var u4=N0((G3,eQ)=>{var tQ=N1(),_V=U5(),cV=c0();function S4(){tQ.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}cV.inherits(S4,tQ);S4.prototype.processChunk=function(Q){this.streamInfo.crc32=_V(Q.data,this.streamInfo.crc32||0),this.push(Q)};eQ.exports=S4});var qq=N0((B3,Qq)=>{var bV=c0(),_4=N1();function c4(Q){_4.call(this,"DataLengthProbe for "+Q),this.propName=Q,this.withStreamInfo(Q,0)}bV.inherits(c4,_4);c4.prototype.processChunk=function(Q){if(Q){var $=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=$+Q.data.length}_4.prototype.processChunk.call(this,Q)};Qq.exports=c4});var V5=N0((W3,Jq)=>{var $q=W6(),Kq=E4(),dV=u4(),b4=qq();function d4(Q,$,q,K,J){this.compressedSize=Q,this.uncompressedSize=$,this.crc32=q,this.compression=K,this.compressedContent=J}d4.prototype={getContentWorker:function(){var Q=new Kq($q.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new b4("data_length")),$=this;return Q.on("end",function(){if(this.streamInfo.data_length!==$.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),Q},getCompressedWorker:function(){return new Kq($q.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}};d4.createWorkerFrom=function(Q,$,q){return Q.pipe(new dV).pipe(new b4("uncompressedSize")).pipe($.compressWorker(q)).pipe(new b4("compressedSize")).withStreamInfo("compression",$)};Jq.exports=d4});var Gq=N0((z3,Zq)=>{var mV=P4(),nV=E4(),m4=M6(),n4=V5(),Uq=N1(),p4=function(Q,$,q){this.name=Q,this.dir=q.dir,this.date=q.date,this.comment=q.comment,this.unixPermissions=q.unixPermissions,this.dosPermissions=q.dosPermissions,this._data=$,this._dataBinary=q.binary,this.options={compression:q.compression,compressionOptions:q.compressionOptions}};p4.prototype={internalStream:function(Q){var $=null,q="string";try{if(!Q)throw new Error("No output type specified.");q=Q.toLowerCase();var K=q==="string"||q==="text";if(q==="binarystring"||q==="text")q="string";$=this._decompressWorker();var J=!this._dataBinary;if(J&&!K)$=$.pipe(new m4.Utf8EncodeWorker);if(!J&&K)$=$.pipe(new m4.Utf8DecodeWorker)}catch(Z){$=new Uq("error"),$.error(Z)}return new mV($,q,"")},async:function(Q,$){return this.internalStream(Q).accumulate($)},nodeStream:function(Q,$){return this.internalStream(Q||"nodebuffer").toNodejsStream($)},_compressWorker:function(Q,$){if(this._data instanceof n4&&this._data.compression.magic===Q.magic)return this._data.getCompressedWorker();else{var q=this._decompressWorker();if(!this._dataBinary)q=q.pipe(new m4.Utf8EncodeWorker);return n4.createWorkerFrom(q,Q,$)}},_decompressWorker:function(){if(this._data instanceof n4)return this._data.getContentWorker();else if(this._data instanceof Uq)return this._data;else return new nV(this._data)}};var Vq=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],pV=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")};for(B8=0;B8{var iV=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";function lV(Q,$){return Object.prototype.hasOwnProperty.call(Q,$)}J1.assign=function(Q){var $=Array.prototype.slice.call(arguments,1);while($.length){var q=$.shift();if(!q)continue;if(typeof q!=="object")throw new TypeError(q+"must be non-object");for(var K in q)if(lV(q,K))Q[K]=q[K]}return Q};J1.shrinkBuf=function(Q,$){if(Q.length===$)return Q;if(Q.subarray)return Q.subarray(0,$);return Q.length=$,Q};var oV={arraySet:function(Q,$,q,K,J){if($.subarray&&Q.subarray){Q.set($.subarray(q,q+K),J);return}for(var Z=0;Z{var rV=q2(),sV=4,Bq=0,Wq=1,tV=2;function Y6(Q){var $=Q.length;while(--$>=0)Q[$]=0}var eV=0,Yq=1,QZ=2,qZ=3,$Z=258,t4=29,N8=256,z8=N8+1+t4,N6=30,e4=19,Lq=2*z8+1,d2=15,i4=16,KZ=7,Q7=256,Dq=16,Hq=17,kq=18,r4=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Z5=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],JZ=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],vq=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],UZ=512,$2=new Array((z8+2)*2);Y6($2);var W8=new Array(N6*2);Y6(W8);var F8=new Array(UZ);Y6(F8);var M8=new Array($Z-qZ+1);Y6(M8);var q7=new Array(t4);Y6(q7);var G5=new Array(N6);Y6(G5);function l4(Q,$,q,K,J){this.static_tree=Q,this.extra_bits=$,this.extra_base=q,this.elems=K,this.max_length=J,this.has_stree=Q&&Q.length}var Iq,Rq,Cq;function o4(Q,$){this.dyn_tree=Q,this.max_code=0,this.stat_desc=$}function jq(Q){return Q<256?F8[Q]:F8[256+(Q>>>7)]}function w8(Q,$){Q.pending_buf[Q.pending++]=$&255,Q.pending_buf[Q.pending++]=$>>>8&255}function B1(Q,$,q){if(Q.bi_valid>i4-q)Q.bi_buf|=$<>i4-Q.bi_valid,Q.bi_valid+=q-i4;else Q.bi_buf|=$<>>=1,q<<=1;while(--$>0);return q>>>1}function VZ(Q){if(Q.bi_valid===16)w8(Q,Q.bi_buf),Q.bi_buf=0,Q.bi_valid=0;else if(Q.bi_valid>=8)Q.pending_buf[Q.pending++]=Q.bi_buf&255,Q.bi_buf>>=8,Q.bi_valid-=8}function ZZ(Q,$){var{dyn_tree:q,max_code:K}=$,J=$.stat_desc.static_tree,Z=$.stat_desc.has_stree,G=$.stat_desc.extra_bits,B=$.stat_desc.extra_base,W=$.stat_desc.max_length,U,V,N,F,M,v,x=0;for(F=0;F<=d2;F++)Q.bl_count[F]=0;q[Q.heap[Q.heap_max]*2+1]=0;for(U=Q.heap_max+1;UW)F=W,x++;if(q[V*2+1]=F,V>K)continue;if(Q.bl_count[F]++,M=0,V>=B)M=G[V-B];if(v=q[V*2],Q.opt_len+=v*(F+M),Z)Q.static_len+=v*(J[V*2+1]+M)}if(x===0)return;do{F=W-1;while(Q.bl_count[F]===0)F--;Q.bl_count[F]--,Q.bl_count[F+1]+=2,Q.bl_count[W]--,x-=2}while(x>0);for(F=W;F!==0;F--){V=Q.bl_count[F];while(V!==0){if(N=Q.heap[--U],N>K)continue;if(q[N*2+1]!==F)Q.opt_len+=(F-q[N*2+1])*q[N*2],q[N*2+1]=F;V--}}}function Aq(Q,$,q){var K=new Array(d2+1),J=0,Z,G;for(Z=1;Z<=d2;Z++)K[Z]=J=J+q[Z-1]<<1;for(G=0;G<=$;G++){var B=Q[G*2+1];if(B===0)continue;Q[G*2]=fq(K[B]++,B)}}function GZ(){var Q,$,q,K,J,Z=new Array(d2+1);q=0;for(K=0;K>=7;for(;K8)w8(Q,Q.bi_buf);else if(Q.bi_valid>0)Q.pending_buf[Q.pending++]=Q.bi_buf;Q.bi_buf=0,Q.bi_valid=0}function BZ(Q,$,q,K){if(Xq(Q),K)w8(Q,q),w8(Q,~q);rV.arraySet(Q.pending_buf,Q.window,$,q,Q.pending),Q.pending+=q}function zq(Q,$,q,K){var J=$*2,Z=q*2;return Q[J]>1;G>=1;G--)a4(Q,q,G);U=Z;do G=Q.heap[1],Q.heap[1]=Q.heap[Q.heap_len--],a4(Q,q,1),B=Q.heap[1],Q.heap[--Q.heap_max]=G,Q.heap[--Q.heap_max]=B,q[U*2]=q[G*2]+q[B*2],Q.depth[U]=(Q.depth[G]>=Q.depth[B]?Q.depth[G]:Q.depth[B])+1,q[G*2+1]=q[B*2+1]=U,Q.heap[1]=U++,a4(Q,q,1);while(Q.heap_len>=2);Q.heap[--Q.heap_max]=Q.heap[1],ZZ(Q,$),Aq(q,W,Q.bl_count)}function Mq(Q,$,q){var K,J=-1,Z,G=$[1],B=0,W=7,U=4;if(G===0)W=138,U=3;$[(q+1)*2+1]=65535;for(K=0;K<=q;K++){if(Z=G,G=$[(K+1)*2+1],++B=3;$--)if(Q.bl_tree[vq[$]*2+1]!==0)break;return Q.opt_len+=3*($+1)+5+5+4,$}function zZ(Q,$,q,K){var J;B1(Q,$-257,5),B1(Q,q-1,5),B1(Q,K-4,4);for(J=0;J>>=1)if($&1&&Q.dyn_ltree[q*2]!==0)return Bq;if(Q.dyn_ltree[18]!==0||Q.dyn_ltree[20]!==0||Q.dyn_ltree[26]!==0)return Wq;for(q=32;q0){if(Q.strm.data_type===tV)Q.strm.data_type=FZ(Q);if(s4(Q,Q.l_desc),s4(Q,Q.d_desc),G=WZ(Q),J=Q.opt_len+3+7>>>3,Z=Q.static_len+3+7>>>3,Z<=J)J=Z}else J=Z=q+5;if(q+4<=J&&$!==-1)yq(Q,$,q,K);else if(Q.strategy===sV||Z===J)B1(Q,(Yq<<1)+(K?1:0),3),Fq(Q,$2,W8);else B1(Q,(QZ<<1)+(K?1:0),3),zZ(Q,Q.l_desc.max_code+1,Q.d_desc.max_code+1,G+1),Fq(Q,Q.dyn_ltree,Q.dyn_dtree);if(gq(Q),K)Xq(Q)}function YZ(Q,$,q){if(Q.pending_buf[Q.d_buf+Q.last_lit*2]=$>>>8&255,Q.pending_buf[Q.d_buf+Q.last_lit*2+1]=$&255,Q.pending_buf[Q.l_buf+Q.last_lit]=q&255,Q.last_lit++,$===0)Q.dyn_ltree[q*2]++;else Q.matches++,$--,Q.dyn_ltree[(M8[q]+N8+1)*2]++,Q.dyn_dtree[jq($)*2]++;return Q.last_lit===Q.lit_bufsize-1}L6._tr_init=MZ;L6._tr_stored_block=yq;L6._tr_flush_block=NZ;L6._tr_tally=YZ;L6._tr_align=wZ});var $7=N0((w3,xq)=>{function LZ(Q,$,q,K){var J=Q&65535|0,Z=Q>>>16&65535|0,G=0;while(q!==0){G=q>2000?2000:q,q-=G;do J=J+$[K++]|0,Z=Z+J|0;while(--G);J%=65521,Z%=65521}return J|Z<<16|0}xq.exports=LZ});var K7=N0((N3,Oq)=>{function DZ(){var Q,$=[];for(var q=0;q<256;q++){Q=q;for(var K=0;K<8;K++)Q=Q&1?3988292384^Q>>>1:Q>>>1;$[q]=Q}return $}var HZ=DZ();function kZ(Q,$,q,K){var J=HZ,Z=K+q;Q^=-1;for(var G=K;G>>8^J[(Q^$[G])&255];return Q^-1}Oq.exports=kZ});var B5=N0((Y3,Pq)=>{Pq.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var mq=N0((d1)=>{var U1=q2(),I1=hq(),uq=$7(),Y2=K7(),vZ=B5(),i2=0,IZ=1,RZ=3,v2=4,Tq=5,b1=0,Eq=1,R1=-2,CZ=-3,J7=-5,jZ=-1,fZ=1,W5=2,AZ=3,gZ=4,XZ=0,yZ=2,w5=8,hZ=9,xZ=15,OZ=8,PZ=29,TZ=256,V7=TZ+1+PZ,EZ=30,SZ=19,uZ=2*V7+1,_Z=15,j0=3,H2=258,X1=H2+j0+1,cZ=32,N5=42,Z7=69,z5=73,F5=91,M5=103,m2=113,L8=666,l0=1,D8=2,n2=3,k6=4,bZ=3;function k2(Q,$){return Q.msg=vZ[$],$}function Sq(Q){return(Q<<1)-(Q>4?9:0)}function D2(Q){var $=Q.length;while(--$>=0)Q[$]=0}function L2(Q){var $=Q.state,q=$.pending;if(q>Q.avail_out)q=Q.avail_out;if(q===0)return;if(U1.arraySet(Q.output,$.pending_buf,$.pending_out,q,Q.next_out),Q.next_out+=q,$.pending_out+=q,Q.total_out+=q,Q.avail_out-=q,$.pending-=q,$.pending===0)$.pending_out=0}function t0(Q,$){I1._tr_flush_block(Q,Q.block_start>=0?Q.block_start:-1,Q.strstart-Q.block_start,$),Q.block_start=Q.strstart,L2(Q.strm)}function X0(Q,$){Q.pending_buf[Q.pending++]=$}function Y8(Q,$){Q.pending_buf[Q.pending++]=$>>>8&255,Q.pending_buf[Q.pending++]=$&255}function dZ(Q,$,q,K){var J=Q.avail_in;if(J>K)J=K;if(J===0)return 0;if(Q.avail_in-=J,U1.arraySet($,Q.input,Q.next_in,J,q),Q.state.wrap===1)Q.adler=uq(Q.adler,$,J,q);else if(Q.state.wrap===2)Q.adler=Y2(Q.adler,$,J,q);return Q.next_in+=J,Q.total_in+=J,J}function _q(Q,$){var{max_chain_length:q,strstart:K}=Q,J,Z,G=Q.prev_length,B=Q.nice_match,W=Q.strstart>Q.w_size-X1?Q.strstart-(Q.w_size-X1):0,U=Q.window,V=Q.w_mask,N=Q.prev,F=Q.strstart+H2,M=U[K+G-1],v=U[K+G];if(Q.prev_length>=Q.good_match)q>>=2;if(B>Q.lookahead)B=Q.lookahead;do{if(J=$,U[J+G]!==v||U[J+G-1]!==M||U[J]!==U[K]||U[++J]!==U[K+1])continue;K+=2,J++;do;while(U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&U[++K]===U[++J]&&KG){if(Q.match_start=$,G=Z,Z>=B)break;M=U[K+G-1],v=U[K+G]}}while(($=N[$&V])>W&&--q!==0);if(G<=Q.lookahead)return G;return Q.lookahead}function p2(Q){var $=Q.w_size,q,K,J,Z,G;do{if(Z=Q.window_size-Q.lookahead-Q.strstart,Q.strstart>=$+($-X1)){U1.arraySet(Q.window,Q.window,$,$,0),Q.match_start-=$,Q.strstart-=$,Q.block_start-=$,K=Q.hash_size,q=K;do J=Q.head[--q],Q.head[q]=J>=$?J-$:0;while(--K);K=$,q=K;do J=Q.prev[--q],Q.prev[q]=J>=$?J-$:0;while(--K);Z+=$}if(Q.strm.avail_in===0)break;if(K=dZ(Q.strm,Q.window,Q.strstart+Q.lookahead,Z),Q.lookahead+=K,Q.lookahead+Q.insert>=j0){G=Q.strstart-Q.insert,Q.ins_h=Q.window[G],Q.ins_h=(Q.ins_h<Q.pending_buf_size-5)q=Q.pending_buf_size-5;for(;;){if(Q.lookahead<=1){if(p2(Q),Q.lookahead===0&&$===i2)return l0;if(Q.lookahead===0)break}Q.strstart+=Q.lookahead,Q.lookahead=0;var K=Q.block_start+q;if(Q.strstart===0||Q.strstart>=K){if(Q.lookahead=Q.strstart-K,Q.strstart=K,t0(Q,!1),Q.strm.avail_out===0)return l0}if(Q.strstart-Q.block_start>=Q.w_size-X1){if(t0(Q,!1),Q.strm.avail_out===0)return l0}}if(Q.insert=0,$===v2){if(t0(Q,!0),Q.strm.avail_out===0)return n2;return k6}if(Q.strstart>Q.block_start){if(t0(Q,!1),Q.strm.avail_out===0)return l0}return l0}function U7(Q,$){var q,K;for(;;){if(Q.lookahead=j0)Q.ins_h=(Q.ins_h<=j0)if(K=I1._tr_tally(Q,Q.strstart-Q.match_start,Q.match_length-j0),Q.lookahead-=Q.match_length,Q.match_length<=Q.max_lazy_match&&Q.lookahead>=j0){Q.match_length--;do Q.strstart++,Q.ins_h=(Q.ins_h<=j0)Q.ins_h=(Q.ins_h<4096))Q.match_length=j0-1}if(Q.prev_length>=j0&&Q.match_length<=Q.prev_length){J=Q.strstart+Q.lookahead-j0,K=I1._tr_tally(Q,Q.strstart-1-Q.prev_match,Q.prev_length-j0),Q.lookahead-=Q.prev_length-1,Q.prev_length-=2;do if(++Q.strstart<=J)Q.ins_h=(Q.ins_h<=j0&&Q.strstart>0){if(J=Q.strstart-1,K=G[J],K===G[++J]&&K===G[++J]&&K===G[++J]){Z=Q.strstart+H2;do;while(K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&JQ.lookahead)Q.match_length=Q.lookahead}}if(Q.match_length>=j0)q=I1._tr_tally(Q,1,Q.match_length-j0),Q.lookahead-=Q.match_length,Q.strstart+=Q.match_length,Q.match_length=0;else q=I1._tr_tally(Q,0,Q.window[Q.strstart]),Q.lookahead--,Q.strstart++;if(q){if(t0(Q,!1),Q.strm.avail_out===0)return l0}}if(Q.insert=0,$===v2){if(t0(Q,!0),Q.strm.avail_out===0)return n2;return k6}if(Q.last_lit){if(t0(Q,!1),Q.strm.avail_out===0)return l0}return D8}function pZ(Q,$){var q;for(;;){if(Q.lookahead===0){if(p2(Q),Q.lookahead===0){if($===i2)return l0;break}}if(Q.match_length=0,q=I1._tr_tally(Q,0,Q.window[Q.strstart]),Q.lookahead--,Q.strstart++,q){if(t0(Q,!1),Q.strm.avail_out===0)return l0}}if(Q.insert=0,$===v2){if(t0(Q,!0),Q.strm.avail_out===0)return n2;return k6}if(Q.last_lit){if(t0(Q,!1),Q.strm.avail_out===0)return l0}return D8}function c1(Q,$,q,K,J){this.good_length=Q,this.max_lazy=$,this.nice_length=q,this.max_chain=K,this.func=J}var H6;H6=[new c1(0,0,0,0,mZ),new c1(4,4,8,4,U7),new c1(4,5,16,8,U7),new c1(4,6,32,32,U7),new c1(4,4,16,16,D6),new c1(8,16,32,32,D6),new c1(8,16,128,128,D6),new c1(8,32,128,256,D6),new c1(32,128,258,1024,D6),new c1(32,258,258,4096,D6)];function iZ(Q){Q.window_size=2*Q.w_size,D2(Q.head),Q.max_lazy_match=H6[Q.level].max_lazy,Q.good_match=H6[Q.level].good_length,Q.nice_match=H6[Q.level].nice_length,Q.max_chain_length=H6[Q.level].max_chain,Q.strstart=0,Q.block_start=0,Q.lookahead=0,Q.insert=0,Q.match_length=Q.prev_length=j0-1,Q.match_available=0,Q.ins_h=0}function lZ(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=w5,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new U1.Buf16(uZ*2),this.dyn_dtree=new U1.Buf16((2*EZ+1)*2),this.bl_tree=new U1.Buf16((2*SZ+1)*2),D2(this.dyn_ltree),D2(this.dyn_dtree),D2(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new U1.Buf16(_Z+1),this.heap=new U1.Buf16(2*V7+1),D2(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new U1.Buf16(2*V7+1),D2(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function cq(Q){var $;if(!Q||!Q.state)return k2(Q,R1);if(Q.total_in=Q.total_out=0,Q.data_type=yZ,$=Q.state,$.pending=0,$.pending_out=0,$.wrap<0)$.wrap=-$.wrap;return $.status=$.wrap?N5:m2,Q.adler=$.wrap===2?0:1,$.last_flush=i2,I1._tr_init($),b1}function bq(Q){var $=cq(Q);if($===b1)iZ(Q.state);return $}function oZ(Q,$){if(!Q||!Q.state)return R1;if(Q.state.wrap!==2)return R1;return Q.state.gzhead=$,b1}function dq(Q,$,q,K,J,Z){if(!Q)return R1;var G=1;if($===jZ)$=6;if(K<0)G=0,K=-K;else if(K>15)G=2,K-=16;if(J<1||J>hZ||q!==w5||K<8||K>15||$<0||$>9||Z<0||Z>gZ)return k2(Q,R1);if(K===8)K=9;var B=new lZ;return Q.state=B,B.strm=Q,B.wrap=G,B.gzhead=null,B.w_bits=K,B.w_size=1<Tq||$<0)return Q?k2(Q,R1):R1;if(K=Q.state,!Q.output||!Q.input&&Q.avail_in!==0||K.status===L8&&$!==v2)return k2(Q,Q.avail_out===0?J7:R1);if(K.strm=Q,q=K.last_flush,K.last_flush=$,K.status===N5)if(K.wrap===2)if(Q.adler=0,X0(K,31),X0(K,139),X0(K,8),!K.gzhead)X0(K,0),X0(K,0),X0(K,0),X0(K,0),X0(K,0),X0(K,K.level===9?2:K.strategy>=W5||K.level<2?4:0),X0(K,bZ),K.status=m2;else{if(X0(K,(K.gzhead.text?1:0)+(K.gzhead.hcrc?2:0)+(!K.gzhead.extra?0:4)+(!K.gzhead.name?0:8)+(!K.gzhead.comment?0:16)),X0(K,K.gzhead.time&255),X0(K,K.gzhead.time>>8&255),X0(K,K.gzhead.time>>16&255),X0(K,K.gzhead.time>>24&255),X0(K,K.level===9?2:K.strategy>=W5||K.level<2?4:0),X0(K,K.gzhead.os&255),K.gzhead.extra&&K.gzhead.extra.length)X0(K,K.gzhead.extra.length&255),X0(K,K.gzhead.extra.length>>8&255);if(K.gzhead.hcrc)Q.adler=Y2(Q.adler,K.pending_buf,K.pending,0);K.gzindex=0,K.status=Z7}else{var G=w5+(K.w_bits-8<<4)<<8,B=-1;if(K.strategy>=W5||K.level<2)B=0;else if(K.level<6)B=1;else if(K.level===6)B=2;else B=3;if(G|=B<<6,K.strstart!==0)G|=cZ;if(G+=31-G%31,K.status=m2,Y8(K,G),K.strstart!==0)Y8(K,Q.adler>>>16),Y8(K,Q.adler&65535);Q.adler=1}if(K.status===Z7)if(K.gzhead.extra){J=K.pending;while(K.gzindex<(K.gzhead.extra.length&65535)){if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(L2(Q),J=K.pending,K.pending===K.pending_buf_size)break}X0(K,K.gzhead.extra[K.gzindex]&255),K.gzindex++}if(K.gzhead.hcrc&&K.pending>J)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(K.gzindex===K.gzhead.extra.length)K.gzindex=0,K.status=z5}else K.status=z5;if(K.status===z5)if(K.gzhead.name){J=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(L2(Q),J=K.pending,K.pending===K.pending_buf_size){Z=1;break}}if(K.gzindexJ)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(Z===0)K.gzindex=0,K.status=F5}else K.status=F5;if(K.status===F5)if(K.gzhead.comment){J=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(L2(Q),J=K.pending,K.pending===K.pending_buf_size){Z=1;break}}if(K.gzindexJ)Q.adler=Y2(Q.adler,K.pending_buf,K.pending-J,J);if(Z===0)K.status=M5}else K.status=M5;if(K.status===M5)if(K.gzhead.hcrc){if(K.pending+2>K.pending_buf_size)L2(Q);if(K.pending+2<=K.pending_buf_size)X0(K,Q.adler&255),X0(K,Q.adler>>8&255),Q.adler=0,K.status=m2}else K.status=m2;if(K.pending!==0){if(L2(Q),Q.avail_out===0)return K.last_flush=-1,b1}else if(Q.avail_in===0&&Sq($)<=Sq(q)&&$!==v2)return k2(Q,J7);if(K.status===L8&&Q.avail_in!==0)return k2(Q,J7);if(Q.avail_in!==0||K.lookahead!==0||$!==i2&&K.status!==L8){var W=K.strategy===W5?pZ(K,$):K.strategy===AZ?nZ(K,$):H6[K.level].func(K,$);if(W===n2||W===k6)K.status=L8;if(W===l0||W===n2){if(Q.avail_out===0)K.last_flush=-1;return b1}if(W===D8){if($===IZ)I1._tr_align(K);else if($!==Tq){if(I1._tr_stored_block(K,0,0,!1),$===RZ){if(D2(K.head),K.lookahead===0)K.strstart=0,K.block_start=0,K.insert=0}}if(L2(Q),Q.avail_out===0)return K.last_flush=-1,b1}}if($!==v2)return b1;if(K.wrap<=0)return Eq;if(K.wrap===2)X0(K,Q.adler&255),X0(K,Q.adler>>8&255),X0(K,Q.adler>>16&255),X0(K,Q.adler>>24&255),X0(K,Q.total_in&255),X0(K,Q.total_in>>8&255),X0(K,Q.total_in>>16&255),X0(K,Q.total_in>>24&255);else Y8(K,Q.adler>>>16),Y8(K,Q.adler&65535);if(L2(Q),K.wrap>0)K.wrap=-K.wrap;return K.pending!==0?b1:Eq}function sZ(Q){var $;if(!Q||!Q.state)return R1;if($=Q.state.status,$!==N5&&$!==Z7&&$!==z5&&$!==F5&&$!==M5&&$!==m2&&$!==L8)return k2(Q,R1);return Q.state=null,$===m2?k2(Q,CZ):b1}function tZ(Q,$){var q=$.length,K,J,Z,G,B,W,U,V;if(!Q||!Q.state)return R1;if(K=Q.state,G=K.wrap,G===2||G===1&&K.status!==N5||K.lookahead)return R1;if(G===1)Q.adler=uq(Q.adler,$,q,0);if(K.wrap=0,q>=K.w_size){if(G===0)D2(K.head),K.strstart=0,K.block_start=0,K.insert=0;V=new U1.Buf8(K.w_size),U1.arraySet(V,$,q-K.w_size,K.w_size,0),$=V,q=K.w_size}B=Q.avail_in,W=Q.next_in,U=Q.input,Q.avail_in=q,Q.next_in=0,Q.input=$,p2(K);while(K.lookahead>=j0){J=K.strstart,Z=K.lookahead-(j0-1);do K.ins_h=(K.ins_h<{var Y5=q2(),nq=!0,pq=!0;try{String.fromCharCode.apply(null,[0])}catch(Q){nq=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(Q){pq=!1}var H8=new Y5.Buf8(256);for(m1=0;m1<256;m1++)H8[m1]=m1>=252?6:m1>=248?5:m1>=240?4:m1>=224?3:m1>=192?2:1;var m1;H8[254]=H8[254]=1;v6.string2buf=function(Q){var $,q,K,J,Z,G=Q.length,B=0;for(J=0;J>>6,$[Z++]=128|q&63;else if(q<65536)$[Z++]=224|q>>>12,$[Z++]=128|q>>>6&63,$[Z++]=128|q&63;else $[Z++]=240|q>>>18,$[Z++]=128|q>>>12&63,$[Z++]=128|q>>>6&63,$[Z++]=128|q&63}return $};function iq(Q,$){if($<65534){if(Q.subarray&&pq||!Q.subarray&&nq)return String.fromCharCode.apply(null,Y5.shrinkBuf(Q,$))}var q="";for(var K=0;K<$;K++)q+=String.fromCharCode(Q[K]);return q}v6.buf2binstring=function(Q){return iq(Q,Q.length)};v6.binstring2buf=function(Q){var $=new Y5.Buf8(Q.length);for(var q=0,K=$.length;q4){B[K++]=65533,q+=Z-1;continue}J&=Z===2?31:Z===3?15:7;while(Z>1&&q1){B[K++]=65533;continue}if(J<65536)B[K++]=J;else J-=65536,B[K++]=55296|J>>10&1023,B[K++]=56320|J&1023}return iq(B,K)};v6.utf8border=function(Q,$){var q;if($=$||Q.length,$>Q.length)$=Q.length;q=$-1;while(q>=0&&(Q[q]&192)===128)q--;if(q<0)return $;if(q===0)return $;return q+H8[Q[q]]>$?q:$}});var B7=N0((H3,lq)=>{function eZ(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}lq.exports=eZ});var sq=N0((I8)=>{var k8=mq(),v8=q2(),z7=G7(),F7=B5(),QG=B7(),rq=Object.prototype.toString,qG=0,W7=4,I6=0,oq=1,aq=2,$G=-1,KG=0,JG=8;function l2(Q){if(!(this instanceof l2))return new l2(Q);this.options=v8.assign({level:$G,method:JG,chunkSize:16384,windowBits:15,memLevel:8,strategy:KG,to:""},Q||{});var $=this.options;if($.raw&&$.windowBits>0)$.windowBits=-$.windowBits;else if($.gzip&&$.windowBits>0&&$.windowBits<16)$.windowBits+=16;this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new QG,this.strm.avail_out=0;var q=k8.deflateInit2(this.strm,$.level,$.method,$.windowBits,$.memLevel,$.strategy);if(q!==I6)throw new Error(F7[q]);if($.header)k8.deflateSetHeader(this.strm,$.header);if($.dictionary){var K;if(typeof $.dictionary==="string")K=z7.string2buf($.dictionary);else if(rq.call($.dictionary)==="[object ArrayBuffer]")K=new Uint8Array($.dictionary);else K=$.dictionary;if(q=k8.deflateSetDictionary(this.strm,K),q!==I6)throw new Error(F7[q]);this._dict_set=!0}}l2.prototype.push=function(Q,$){var q=this.strm,K=this.options.chunkSize,J,Z;if(this.ended)return!1;if(Z=$===~~$?$:$===!0?W7:qG,typeof Q==="string")q.input=z7.string2buf(Q);else if(rq.call(Q)==="[object ArrayBuffer]")q.input=new Uint8Array(Q);else q.input=Q;q.next_in=0,q.avail_in=q.input.length;do{if(q.avail_out===0)q.output=new v8.Buf8(K),q.next_out=0,q.avail_out=K;if(J=k8.deflate(q,Z),J!==oq&&J!==I6)return this.onEnd(J),this.ended=!0,!1;if(q.avail_out===0||q.avail_in===0&&(Z===W7||Z===aq))if(this.options.to==="string")this.onData(z7.buf2binstring(v8.shrinkBuf(q.output,q.next_out)));else this.onData(v8.shrinkBuf(q.output,q.next_out))}while((q.avail_in>0||q.avail_out===0)&&J!==oq);if(Z===W7)return J=k8.deflateEnd(this.strm),this.onEnd(J),this.ended=!0,J===I6;if(Z===aq)return this.onEnd(I6),q.avail_out=0,!0;return!0};l2.prototype.onData=function(Q){this.chunks.push(Q)};l2.prototype.onEnd=function(Q){if(Q===I6)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=v8.flattenChunks(this.chunks);this.chunks=[],this.err=Q,this.msg=this.strm.msg};function M7(Q,$){var q=new l2($);if(q.push(Q,!0),q.err)throw q.msg||F7[q.err];return q.result}function UG(Q,$){return $=$||{},$.raw=!0,M7(Q,$)}function VG(Q,$){return $=$||{},$.gzip=!0,M7(Q,$)}I8.Deflate=l2;I8.deflate=M7;I8.deflateRaw=UG;I8.gzip=VG});var eq=N0((v3,tq)=>{var L5=30,ZG=12;tq.exports=function Q($,q){var K,J,Z,G,B,W,U,V,N,F,M,v,x,y,D,z,Y,H,R,c,m,$0,_,g,O;K=$.state,J=$.next_in,g=$.input,Z=J+($.avail_in-5),G=$.next_out,O=$.output,B=G-(q-$.avail_out),W=G+($.avail_out-257),U=K.dmax,V=K.wsize,N=K.whave,F=K.wnext,M=K.window,v=K.hold,x=K.bits,y=K.lencode,D=K.distcode,z=(1<>>24,v>>>=R,x-=R,R=H>>>16&255,R===0)O[G++]=H&65535;else if(R&16){if(c=H&65535,R&=15,R){if(x>>=R,x-=R}if(x<15)v+=g[J++]<>>24,v>>>=R,x-=R,R=H>>>16&255,R&16){if(m=H&65535,R&=15,xU){$.msg="invalid distance too far back",K.mode=L5;break Q}if(v>>>=R,x-=R,R=G-B,m>R){if(R=m-R,R>N){if(K.sane){$.msg="invalid distance too far back",K.mode=L5;break Q}}if($0=0,_=M,F===0){if($0+=V-R,R2)O[G++]=_[$0++],O[G++]=_[$0++],O[G++]=_[$0++],c-=3;if(c){if(O[G++]=_[$0++],c>1)O[G++]=_[$0++]}}else{$0=G-m;do O[G++]=O[$0++],O[G++]=O[$0++],O[G++]=O[$0++],c-=3;while(c>2);if(c){if(O[G++]=O[$0++],c>1)O[G++]=O[$0++]}}}else if((R&64)===0){H=D[(H&65535)+(v&(1<>3,J-=c,x-=c<<3,v&=(1<{var Q$=q2(),R6=15,q$=852,$$=592,K$=0,w7=1,J$=2,GG=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],BG=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],WG=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],zG=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];U$.exports=function Q($,q,K,J,Z,G,B,W){var U=W.bits,V=0,N=0,F=0,M=0,v=0,x=0,y=0,D=0,z=0,Y=0,H,R,c,m,$0,_=null,g=0,O,h=new Q$.Buf16(R6+1),f=new Q$.Buf16(R6+1),A=null,I=0,n,i,K0;for(V=0;V<=R6;V++)h[V]=0;for(N=0;N=1;M--)if(h[M]!==0)break;if(v>M)v=M;if(M===0)return Z[G++]=20971520,Z[G++]=20971520,W.bits=1,0;for(F=1;F0&&($===K$||M!==1))return-1;f[1]=0;for(V=1;Vq$||$===J$&&z>$$)return 1;for(;;){if(n=V-y,B[N]O)i=A[I+B[N]],K0=_[g+B[N]];else i=96,K0=0;H=1<>y)+R]=n<<24|i<<16|K0|0;while(R!==0);H=1<>=1;if(H!==0)Y&=H-1,Y+=H;else Y=0;if(N++,--h[V]===0){if(V===M)break;V=q[K+B[N]]}if(V>v&&(Y&m)!==c){if(y===0)y=v;$0+=F,x=V-y,D=1<q$||$===J$&&z>$$)return 1;c=Y&m,Z[c]=v<<24|x<<16|$0-G|0}}if(Y!==0)Z[$0+Y]=V-y<<24|4194304|0;return W.bits=v,0}});var b$=N0((y1)=>{var Y1=q2(),k7=$7(),n1=K7(),FG=eq(),R8=V$(),MG=0,x$=1,O$=2,Z$=4,wG=5,D5=6,o2=0,NG=1,YG=2,C1=-2,P$=-3,v7=-4,LG=-5,G$=8,T$=1,B$=2,W$=3,z$=4,F$=5,M$=6,w$=7,N$=8,Y$=9,L$=10,v5=11,K2=12,N7=13,D$=14,Y7=15,H$=16,k$=17,v$=18,I$=19,H5=20,k5=21,R$=22,C$=23,j$=24,f$=25,A$=26,L7=27,g$=28,X$=29,u0=30,I7=31,DG=32,HG=852,kG=592,vG=15,IG=vG;function y$(Q){return(Q>>>24&255)+(Q>>>8&65280)+((Q&65280)<<8)+((Q&255)<<24)}function RG(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Y1.Buf16(320),this.work=new Y1.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function E$(Q){var $;if(!Q||!Q.state)return C1;if($=Q.state,Q.total_in=Q.total_out=$.total=0,Q.msg="",$.wrap)Q.adler=$.wrap&1;return $.mode=T$,$.last=0,$.havedict=0,$.dmax=32768,$.head=null,$.hold=0,$.bits=0,$.lencode=$.lendyn=new Y1.Buf32(HG),$.distcode=$.distdyn=new Y1.Buf32(kG),$.sane=1,$.back=-1,o2}function S$(Q){var $;if(!Q||!Q.state)return C1;return $=Q.state,$.wsize=0,$.whave=0,$.wnext=0,E$(Q)}function u$(Q,$){var q,K;if(!Q||!Q.state)return C1;if(K=Q.state,$<0)q=0,$=-$;else if(q=($>>4)+1,$<48)$&=15;if($&&($<8||$>15))return C1;if(K.window!==null&&K.wbits!==$)K.window=null;return K.wrap=q,K.wbits=$,S$(Q)}function _$(Q,$){var q,K;if(!Q)return C1;if(K=new RG,Q.state=K,K.window=null,q=u$(Q,$),q!==o2)Q.state=null;return q}function CG(Q){return _$(Q,IG)}var h$=!0,D7,H7;function jG(Q){if(h$){var $;D7=new Y1.Buf32(512),H7=new Y1.Buf32(32),$=0;while($<144)Q.lens[$++]=8;while($<256)Q.lens[$++]=9;while($<280)Q.lens[$++]=7;while($<288)Q.lens[$++]=8;R8(x$,Q.lens,0,288,D7,0,Q.work,{bits:9}),$=0;while($<32)Q.lens[$++]=5;R8(O$,Q.lens,0,32,H7,0,Q.work,{bits:5}),h$=!1}Q.lencode=D7,Q.lenbits=9,Q.distcode=H7,Q.distbits=5}function c$(Q,$,q,K){var J,Z=Q.state;if(Z.window===null)Z.wsize=1<=Z.wsize)Y1.arraySet(Z.window,$,q-Z.wsize,Z.wsize,0),Z.wnext=0,Z.whave=Z.wsize;else{if(J=Z.wsize-Z.wnext,J>K)J=K;if(Y1.arraySet(Z.window,$,q-K,J,Z.wnext),K-=J,K)Y1.arraySet(Z.window,$,q-K,K,0),Z.wnext=K,Z.whave=Z.wsize;else{if(Z.wnext+=J,Z.wnext===Z.wsize)Z.wnext=0;if(Z.whave>>8&255,q.check=n1(q.check,_,2,0),U=0,V=0,q.mode=B$;break}if(q.flags=0,q.head)q.head.done=!1;if(!(q.wrap&1)||(((U&255)<<8)+(U>>8))%31){Q.msg="incorrect header check",q.mode=u0;break}if((U&15)!==G$){Q.msg="unknown compression method",q.mode=u0;break}if(U>>>=4,V-=4,m=(U&15)+8,q.wbits===0)q.wbits=m;else if(m>q.wbits){Q.msg="invalid window size",q.mode=u0;break}q.dmax=1<>8&1;if(q.flags&512)_[0]=U&255,_[1]=U>>>8&255,q.check=n1(q.check,_,2,0);U=0,V=0,q.mode=W$;case W$:while(V<32){if(B===0)break Q;B--,U+=K[Z++]<>>8&255,_[2]=U>>>16&255,_[3]=U>>>24&255,q.check=n1(q.check,_,4,0);U=0,V=0,q.mode=z$;case z$:while(V<16){if(B===0)break Q;B--,U+=K[Z++]<>8;if(q.flags&512)_[0]=U&255,_[1]=U>>>8&255,q.check=n1(q.check,_,2,0);U=0,V=0,q.mode=F$;case F$:if(q.flags&1024){while(V<16){if(B===0)break Q;B--,U+=K[Z++]<>>8&255,q.check=n1(q.check,_,2,0);U=0,V=0}else if(q.head)q.head.extra=null;q.mode=M$;case M$:if(q.flags&1024){if(M=q.length,M>B)M=B;if(M){if(q.head){if(m=q.head.extra_len-q.length,!q.head.extra)q.head.extra=new Array(q.head.extra_len);Y1.arraySet(q.head.extra,K,Z,M,m)}if(q.flags&512)q.check=n1(q.check,K,M,Z);B-=M,Z+=M,q.length-=M}if(q.length)break Q}q.length=0,q.mode=w$;case w$:if(q.flags&2048){if(B===0)break Q;M=0;do if(m=K[Z+M++],q.head&&m&&q.length<65536)q.head.name+=String.fromCharCode(m);while(m&&M>9&1,q.head.done=!0;Q.adler=q.check=0,q.mode=K2;break;case L$:while(V<32){if(B===0)break Q;B--,U+=K[Z++]<>>=V&7,V-=V&7,q.mode=L7;break}while(V<3){if(B===0)break Q;B--,U+=K[Z++]<>>=1,V-=1,U&3){case 0:q.mode=D$;break;case 1:if(jG(q),q.mode=H5,$===D5){U>>>=2,V-=2;break Q}break;case 2:q.mode=k$;break;case 3:Q.msg="invalid block type",q.mode=u0}U>>>=2,V-=2;break;case D$:U>>>=V&7,V-=V&7;while(V<32){if(B===0)break Q;B--,U+=K[Z++]<>>16^65535)){Q.msg="invalid stored block lengths",q.mode=u0;break}if(q.length=U&65535,U=0,V=0,q.mode=Y7,$===D5)break Q;case Y7:q.mode=H$;case H$:if(M=q.length,M){if(M>B)M=B;if(M>W)M=W;if(M===0)break Q;Y1.arraySet(J,K,Z,M,G),B-=M,Z+=M,W-=M,G+=M,q.length-=M;break}q.mode=K2;break;case k$:while(V<14){if(B===0)break Q;B--,U+=K[Z++]<>>=5,V-=5,q.ndist=(U&31)+1,U>>>=5,V-=5,q.ncode=(U&15)+4,U>>>=4,V-=4,q.nlen>286||q.ndist>30){Q.msg="too many length or distance symbols",q.mode=u0;break}q.have=0,q.mode=v$;case v$:while(q.have>>=3,V-=3}while(q.have<19)q.lens[h[q.have++]]=0;if(q.lencode=q.lendyn,q.lenbits=7,g={bits:q.lenbits},$0=R8(MG,q.lens,0,19,q.lencode,0,q.work,g),q.lenbits=g.bits,$0){Q.msg="invalid code lengths set",q.mode=u0;break}q.have=0,q.mode=I$;case I$:while(q.have>>24,z=y>>>16&255,Y=y&65535,D<=V)break;if(B===0)break Q;B--,U+=K[Z++]<>>=D,V-=D,q.lens[q.have++]=Y;else{if(Y===16){O=D+2;while(V>>=D,V-=D,q.have===0){Q.msg="invalid bit length repeat",q.mode=u0;break}m=q.lens[q.have-1],M=3+(U&3),U>>>=2,V-=2}else if(Y===17){O=D+3;while(V>>=D,V-=D,m=0,M=3+(U&7),U>>>=3,V-=3}else{O=D+7;while(V>>=D,V-=D,m=0,M=11+(U&127),U>>>=7,V-=7}if(q.have+M>q.nlen+q.ndist){Q.msg="invalid bit length repeat",q.mode=u0;break}while(M--)q.lens[q.have++]=m}}if(q.mode===u0)break;if(q.lens[256]===0){Q.msg="invalid code -- missing end-of-block",q.mode=u0;break}if(q.lenbits=9,g={bits:q.lenbits},$0=R8(x$,q.lens,0,q.nlen,q.lencode,0,q.work,g),q.lenbits=g.bits,$0){Q.msg="invalid literal/lengths set",q.mode=u0;break}if(q.distbits=6,q.distcode=q.distdyn,g={bits:q.distbits},$0=R8(O$,q.lens,q.nlen,q.ndist,q.distcode,0,q.work,g),q.distbits=g.bits,$0){Q.msg="invalid distances set",q.mode=u0;break}if(q.mode=H5,$===D5)break Q;case H5:q.mode=k5;case k5:if(B>=6&&W>=258){if(Q.next_out=G,Q.avail_out=W,Q.next_in=Z,Q.avail_in=B,q.hold=U,q.bits=V,FG(Q,F),G=Q.next_out,J=Q.output,W=Q.avail_out,Z=Q.next_in,K=Q.input,B=Q.avail_in,U=q.hold,V=q.bits,q.mode===K2)q.back=-1;break}q.back=0;for(;;){if(y=q.lencode[U&(1<>>24,z=y>>>16&255,Y=y&65535,D<=V)break;if(B===0)break Q;B--,U+=K[Z++]<>H)],D=y>>>24,z=y>>>16&255,Y=y&65535,H+D<=V)break;if(B===0)break Q;B--,U+=K[Z++]<>>=H,V-=H,q.back+=H}if(U>>>=D,V-=D,q.back+=D,q.length=Y,z===0){q.mode=A$;break}if(z&32){q.back=-1,q.mode=K2;break}if(z&64){Q.msg="invalid literal/length code",q.mode=u0;break}q.extra=z&15,q.mode=R$;case R$:if(q.extra){O=q.extra;while(V>>=q.extra,V-=q.extra,q.back+=q.extra}q.was=q.length,q.mode=C$;case C$:for(;;){if(y=q.distcode[U&(1<>>24,z=y>>>16&255,Y=y&65535,D<=V)break;if(B===0)break Q;B--,U+=K[Z++]<>H)],D=y>>>24,z=y>>>16&255,Y=y&65535,H+D<=V)break;if(B===0)break Q;B--,U+=K[Z++]<>>=H,V-=H,q.back+=H}if(U>>>=D,V-=D,q.back+=D,z&64){Q.msg="invalid distance code",q.mode=u0;break}q.offset=Y,q.extra=z&15,q.mode=j$;case j$:if(q.extra){O=q.extra;while(V>>=q.extra,V-=q.extra,q.back+=q.extra}if(q.offset>q.dmax){Q.msg="invalid distance too far back",q.mode=u0;break}q.mode=f$;case f$:if(W===0)break Q;if(M=F-W,q.offset>M){if(M=q.offset-M,M>q.whave){if(q.sane){Q.msg="invalid distance too far back",q.mode=u0;break}}if(M>q.wnext)M-=q.wnext,v=q.wsize-M;else v=q.wnext-M;if(M>q.length)M=q.length;x=q.window}else x=J,v=G-q.offset,M=q.length;if(M>W)M=W;W-=M,q.length-=M;do J[G++]=x[v++];while(--M);if(q.length===0)q.mode=k5;break;case A$:if(W===0)break Q;J[G++]=q.length,W--,q.mode=k5;break;case L7:if(q.wrap){while(V<32){if(B===0)break Q;B--,U|=K[Z++]<{d$.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var n$=N0((j3,m$)=>{function yG(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}m$.exports=yG});var i$=N0((j8)=>{var C6=b$(),C8=q2(),I5=G7(),n0=R7(),C7=B5(),hG=B7(),xG=n$(),p$=Object.prototype.toString;function a2(Q){if(!(this instanceof a2))return new a2(Q);this.options=C8.assign({chunkSize:16384,windowBits:0,to:""},Q||{});var $=this.options;if($.raw&&$.windowBits>=0&&$.windowBits<16){if($.windowBits=-$.windowBits,$.windowBits===0)$.windowBits=-15}if($.windowBits>=0&&$.windowBits<16&&!(Q&&Q.windowBits))$.windowBits+=32;if($.windowBits>15&&$.windowBits<48){if(($.windowBits&15)===0)$.windowBits|=15}this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new hG,this.strm.avail_out=0;var q=C6.inflateInit2(this.strm,$.windowBits);if(q!==n0.Z_OK)throw new Error(C7[q]);if(this.header=new xG,C6.inflateGetHeader(this.strm,this.header),$.dictionary){if(typeof $.dictionary==="string")$.dictionary=I5.string2buf($.dictionary);else if(p$.call($.dictionary)==="[object ArrayBuffer]")$.dictionary=new Uint8Array($.dictionary);if($.raw){if(q=C6.inflateSetDictionary(this.strm,$.dictionary),q!==n0.Z_OK)throw new Error(C7[q])}}}a2.prototype.push=function(Q,$){var q=this.strm,K=this.options.chunkSize,J=this.options.dictionary,Z,G,B,W,U,V=!1;if(this.ended)return!1;if(G=$===~~$?$:$===!0?n0.Z_FINISH:n0.Z_NO_FLUSH,typeof Q==="string")q.input=I5.binstring2buf(Q);else if(p$.call(Q)==="[object ArrayBuffer]")q.input=new Uint8Array(Q);else q.input=Q;q.next_in=0,q.avail_in=q.input.length;do{if(q.avail_out===0)q.output=new C8.Buf8(K),q.next_out=0,q.avail_out=K;if(Z=C6.inflate(q,n0.Z_NO_FLUSH),Z===n0.Z_NEED_DICT&&J)Z=C6.inflateSetDictionary(this.strm,J);if(Z===n0.Z_BUF_ERROR&&V===!0)Z=n0.Z_OK,V=!1;if(Z!==n0.Z_STREAM_END&&Z!==n0.Z_OK)return this.onEnd(Z),this.ended=!0,!1;if(q.next_out){if(q.avail_out===0||Z===n0.Z_STREAM_END||q.avail_in===0&&(G===n0.Z_FINISH||G===n0.Z_SYNC_FLUSH))if(this.options.to==="string"){if(B=I5.utf8border(q.output,q.next_out),W=q.next_out-B,U=I5.buf2string(q.output,B),q.next_out=W,q.avail_out=K-W,W)C8.arraySet(q.output,q.output,B,W,0);this.onData(U)}else this.onData(C8.shrinkBuf(q.output,q.next_out))}if(q.avail_in===0&&q.avail_out===0)V=!0}while((q.avail_in>0||q.avail_out===0)&&Z!==n0.Z_STREAM_END);if(Z===n0.Z_STREAM_END)G=n0.Z_FINISH;if(G===n0.Z_FINISH)return Z=C6.inflateEnd(this.strm),this.onEnd(Z),this.ended=!0,Z===n0.Z_OK;if(G===n0.Z_SYNC_FLUSH)return this.onEnd(n0.Z_OK),q.avail_out=0,!0;return!0};a2.prototype.onData=function(Q){this.chunks.push(Q)};a2.prototype.onEnd=function(Q){if(Q===n0.Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=C8.flattenChunks(this.chunks);this.chunks=[],this.err=Q,this.msg=this.strm.msg};function j7(Q,$){var q=new a2($);if(q.push(Q,!0),q.err)throw q.msg||C7[q.err];return q.result}function OG(Q,$){return $=$||{},$.raw=!0,j7(Q,$)}j8.Inflate=a2;j8.inflate=j7;j8.inflateRaw=OG;j8.ungzip=j7});var a$=N0((A3,o$)=>{var PG=q2().assign,TG=sq(),EG=i$(),SG=R7(),l$={};PG(l$,TG,EG,SG);o$.exports=l$});var s$=N0((C5)=>{var uG=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined",_G=a$(),r$=c0(),R5=N1(),cG=uG?"uint8array":"array";C5.magic="\b\x00";function r2(Q,$){R5.call(this,"FlateWorker/"+Q),this._pako=null,this._pakoAction=Q,this._pakoOptions=$,this.meta={}}r$.inherits(r2,R5);r2.prototype.processChunk=function(Q){if(this.meta=Q.meta,this._pako===null)this._createPako();this._pako.push(r$.transformTo(cG,Q.data),!1)};r2.prototype.flush=function(){if(R5.prototype.flush.call(this),this._pako===null)this._createPako();this._pako.push([],!0)};r2.prototype.cleanUp=function(){R5.prototype.cleanUp.call(this),this._pako=null};r2.prototype._createPako=function(){this._pako=new _G[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var Q=this;this._pako.onData=function($){Q.push({data:$,meta:Q.meta})}};C5.compressWorker=function(Q){return new r2("Deflate",Q)};C5.uncompressWorker=function(){return new r2("Inflate",{})}});var A7=N0((f7)=>{var t$=N1();f7.STORE={magic:"\x00\x00",compressWorker:function(){return new t$("STORE compression")},uncompressWorker:function(){return new t$("STORE decompression")}};f7.DEFLATE=s$()});var g7=N0((s2)=>{s2.LOCAL_FILE_HEADER="PK\x03\x04";s2.CENTRAL_FILE_HEADER="PK\x01\x02";s2.CENTRAL_DIRECTORY_END="PK\x05\x06";s2.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x06\x07";s2.ZIP64_CENTRAL_DIRECTORY_END="PK\x06\x06";s2.DATA_DESCRIPTOR="PK\x07\b"});var $K=N0((h3,qK)=>{var j6=c0(),f6=N1(),X7=M6(),e$=U5(),j5=g7(),T0=function(Q,$){var q="",K;for(K=0;K<$;K++)q+=String.fromCharCode(Q&255),Q=Q>>>8;return q},bG=function(Q,$){var q=Q;if(!Q)q=$?16893:33204;return(q&65535)<<16},dG=function(Q){return(Q||0)&63},QK=function(Q,$,q,K,J,Z){var{file:G,compression:B}=Q,W=Z!==X7.utf8encode,U=j6.transformTo("string",Z(G.name)),V=j6.transformTo("string",X7.utf8encode(G.name)),N=G.comment,F=j6.transformTo("string",Z(N)),M=j6.transformTo("string",X7.utf8encode(N)),v=V.length!==G.name.length,x=M.length!==N.length,y,D,z="",Y="",H="",R=G.dir,c=G.date,m={crc32:0,compressedSize:0,uncompressedSize:0};if(!$||q)m.crc32=Q.crc32,m.compressedSize=Q.compressedSize,m.uncompressedSize=Q.uncompressedSize;var $0=0;if($)$0|=8;if(!W&&(v||x))$0|=2048;var _=0,g=0;if(R)_|=16;if(J==="UNIX")g=798,_|=bG(G.unixPermissions,R);else g=20,_|=dG(G.dosPermissions,R);if(y=c.getUTCHours(),y=y<<6,y=y|c.getUTCMinutes(),y=y<<5,y=y|c.getUTCSeconds()/2,D=c.getUTCFullYear()-1980,D=D<<4,D=D|c.getUTCMonth()+1,D=D<<5,D=D|c.getUTCDate(),v)Y=T0(1,1)+T0(e$(U),4)+V,z+="up"+T0(Y.length,2)+Y;if(x)H=T0(1,1)+T0(e$(F),4)+M,z+="uc"+T0(H.length,2)+H;var O="";O+=` -\x00`,O+=T0($0,2),O+=B.magic,O+=T0(y,2),O+=T0(D,2),O+=T0(m.crc32,4),O+=T0(m.compressedSize,4),O+=T0(m.uncompressedSize,4),O+=T0(U.length,2),O+=T0(z.length,2);var h=j5.LOCAL_FILE_HEADER+O+U+z,f=j5.CENTRAL_FILE_HEADER+T0(g,2)+O+T0(F.length,2)+"\x00\x00\x00\x00"+T0(_,4)+T0(K,4)+U+z+F;return{fileRecord:h,dirRecord:f}},mG=function(Q,$,q,K,J){var Z="",G=j6.transformTo("string",J(K));return Z=j5.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+T0(Q,2)+T0(Q,2)+T0($,4)+T0(q,4)+T0(G.length,2)+G,Z},nG=function(Q){var $="";return $=j5.DATA_DESCRIPTOR+T0(Q.crc32,4)+T0(Q.compressedSize,4)+T0(Q.uncompressedSize,4),$};function h1(Q,$,q,K){f6.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=$,this.zipPlatform=q,this.encodeFileName=K,this.streamFiles=Q,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}j6.inherits(h1,f6);h1.prototype.push=function(Q){var $=Q.meta.percent||0,q=this.entriesCount,K=this._sources.length;if(this.accumulate)this.contentBuffer.push(Q);else this.bytesWritten+=Q.data.length,f6.prototype.push.call(this,{data:Q.data,meta:{currentFile:this.currentFile,percent:q?($+100*(q-K-1))/q:100}})};h1.prototype.openedSource=function(Q){this.currentSourceOffset=this.bytesWritten,this.currentFile=Q.file.name;var $=this.streamFiles&&!Q.file.dir;if($){var q=QK(Q,$,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:q.fileRecord,meta:{percent:0}})}else this.accumulate=!0};h1.prototype.closedSource=function(Q){this.accumulate=!1;var $=this.streamFiles&&!Q.file.dir,q=QK(Q,$,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(q.dirRecord),$)this.push({data:nG(Q),meta:{percent:100}});else{this.push({data:q.fileRecord,meta:{percent:0}});while(this.contentBuffer.length)this.push(this.contentBuffer.shift())}this.currentFile=null};h1.prototype.flush=function(){var Q=this.bytesWritten;for(var $=0;${var pG=A7(),iG=$K(),lG=function(Q,$){var q=Q||$,K=pG[q];if(!K)throw new Error(q+" is not a valid compression method !");return K};KK.generateWorker=function(Q,$,q){var K=new iG($.streamFiles,q,$.platform,$.encodeFileName),J=0;try{Q.forEach(function(Z,G){J++;var B=lG(G.options.compression,$.compression),W=G.options.compressionOptions||$.compressionOptions||{},U=G.dir,V=G.date;G._compressWorker(B,W).withStreamInfo("file",{name:Z,dir:U,date:V,comment:G.comment||"",unixPermissions:G.unixPermissions,dosPermissions:G.dosPermissions}).pipe(K)}),K.entriesCount=J}catch(Z){K.error(Z)}return K}});var VK=N0((O3,UK)=>{var oG=c0(),f5=N1();function f8(Q,$){f5.call(this,"Nodejs stream input adapter for "+Q),this._upstreamEnded=!1,this._bindStream($)}oG.inherits(f8,f5);f8.prototype._bindStream=function(Q){var $=this;this._stream=Q,Q.pause(),Q.on("data",function(q){$.push({data:q,meta:{percent:0}})}).on("error",function(q){if($.isPaused)this.generatedError=q;else $.error(q)}).on("end",function(){if($.isPaused)$._upstreamEnded=!0;else $.end()})};f8.prototype.pause=function(){if(!f5.prototype.pause.call(this))return!1;return this._stream.pause(),!0};f8.prototype.resume=function(){if(!f5.prototype.resume.call(this))return!1;if(this._upstreamEnded)this.end();else this._stream.resume();return!0};UK.exports=f8});var YK=N0((P3,NK)=>{var aG=M6(),A8=c0(),WK=N1(),rG=P4(),zK=T4(),ZK=V5(),sG=Gq(),tG=JK(),GK=$8(),eG=VK(),FK=function(Q,$,q){var K=A8.getTypeOf($),J,Z=A8.extend(q||{},zK);if(Z.date=Z.date||new Date,Z.compression!==null)Z.compression=Z.compression.toUpperCase();if(typeof Z.unixPermissions==="string")Z.unixPermissions=parseInt(Z.unixPermissions,8);if(Z.unixPermissions&&Z.unixPermissions&16384)Z.dir=!0;if(Z.dosPermissions&&Z.dosPermissions&16)Z.dir=!0;if(Z.dir)Q=MK(Q);if(Z.createFolders&&(J=QB(Q)))wK.call(this,J,!0);var G=K==="string"&&Z.binary===!1&&Z.base64===!1;if(!q||typeof q.binary==="undefined")Z.binary=!G;var B=$ instanceof ZK&&$.uncompressedSize===0;if(B||Z.dir||!$||$.length===0)Z.base64=!1,Z.binary=!0,$="",Z.compression="STORE",K="string";var W=null;if($ instanceof ZK||$ instanceof WK)W=$;else if(GK.isNode&&GK.isStream($))W=new eG(Q,$);else W=A8.prepareContent(Q,$,Z.binary,Z.optimizedBinaryString,Z.base64);var U=new sG(Q,W,Z);this.files[Q]=U},QB=function(Q){if(Q.slice(-1)==="/")Q=Q.substring(0,Q.length-1);var $=Q.lastIndexOf("/");return $>0?Q.substring(0,$):""},MK=function(Q){if(Q.slice(-1)!=="/")Q+="/";return Q},wK=function(Q,$){if($=typeof $!=="undefined"?$:zK.createFolders,Q=MK(Q),!this.files[Q])FK.call(this,Q,null,{dir:!0,createFolders:$});return this.files[Q]};function BK(Q){return Object.prototype.toString.call(Q)==="[object RegExp]"}var qB={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(Q){var $,q,K;for($ in this.files)if(K=this.files[$],q=$.slice(this.root.length,$.length),q&&$.slice(0,this.root.length)===this.root)Q(q,K)},filter:function(Q){var $=[];return this.forEach(function(q,K){if(Q(q,K))$.push(K)}),$},file:function(Q,$,q){if(arguments.length===1)if(BK(Q)){var K=Q;return this.filter(function(Z,G){return!G.dir&&K.test(Z)})}else{var J=this.files[this.root+Q];if(J&&!J.dir)return J;else return null}else Q=this.root+Q,FK.call(this,Q,$,q);return this},folder:function(Q){if(!Q)return this;if(BK(Q))return this.filter(function(J,Z){return Z.dir&&Q.test(J)});var $=this.root+Q,q=wK.call(this,$),K=this.clone();return K.root=q.name,K},remove:function(Q){Q=this.root+Q;var $=this.files[Q];if(!$){if(Q.slice(-1)!=="/")Q+="/";$=this.files[Q]}if($&&!$.dir)delete this.files[Q];else{var q=this.filter(function(J,Z){return Z.name.slice(0,Q.length)===Q});for(var K=0;K{var $B=c0();function LK(Q){this.data=Q,this.length=Q.length,this.index=0,this.zero=0}LK.prototype={checkOffset:function(Q){this.checkIndex(this.index+Q)},checkIndex:function(Q){if(this.length=this.index;q--)$=($<<8)+this.byteAt(q);return this.index+=Q,$},readString:function(Q){return $B.transformTo("string",this.readData(Q))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var Q=this.readInt(4);return new Date(Date.UTC((Q>>25&127)+1980,(Q>>21&15)-1,Q>>16&31,Q>>11&31,Q>>5&63,(Q&31)<<1))}};DK.exports=LK});var h7=N0((E3,kK)=>{var HK=y7(),KB=c0();function A6(Q){HK.call(this,Q);for(var $=0;$=0;--Z)if(this.data[Z]===$&&this.data[Z+1]===q&&this.data[Z+2]===K&&this.data[Z+3]===J)return Z-this.zero;return-1};A6.prototype.readAndCheckSignature=function(Q){var $=Q.charCodeAt(0),q=Q.charCodeAt(1),K=Q.charCodeAt(2),J=Q.charCodeAt(3),Z=this.readData(4);return $===Z[0]&&q===Z[1]&&K===Z[2]&&J===Z[3]};A6.prototype.readData=function(Q){if(this.checkOffset(Q),Q===0)return[];var $=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,$};kK.exports=A6});var RK=N0((S3,IK)=>{var vK=y7(),JB=c0();function g6(Q){vK.call(this,Q)}JB.inherits(g6,vK);g6.prototype.byteAt=function(Q){return this.data.charCodeAt(this.zero+Q)};g6.prototype.lastIndexOfSignature=function(Q){return this.data.lastIndexOf(Q)-this.zero};g6.prototype.readAndCheckSignature=function(Q){var $=this.readData(4);return Q===$};g6.prototype.readData=function(Q){this.checkOffset(Q);var $=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,$};IK.exports=g6});var O7=N0((u3,jK)=>{var CK=h7(),UB=c0();function x7(Q){CK.call(this,Q)}UB.inherits(x7,CK);x7.prototype.readData=function(Q){if(this.checkOffset(Q),Q===0)return new Uint8Array(0);var $=this.data.subarray(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,$};jK.exports=x7});var gK=N0((_3,AK)=>{var fK=O7(),VB=c0();function P7(Q){fK.call(this,Q)}VB.inherits(P7,fK);P7.prototype.readData=function(Q){this.checkOffset(Q);var $=this.data.slice(this.zero+this.index,this.zero+this.index+Q);return this.index+=Q,$};AK.exports=P7});var T7=N0((c3,yK)=>{var A5=c0(),XK=Q2(),ZB=h7(),GB=RK(),BB=gK(),WB=O7();yK.exports=function(Q){var $=A5.getTypeOf(Q);if(A5.checkSupport($),$==="string"&&!XK.uint8array)return new GB(Q);if($==="nodebuffer")return new BB(Q);if(XK.uint8array)return new WB(A5.transformTo("uint8array",Q));return new ZB(A5.transformTo("array",Q))}});var PK=N0((b3,OK)=>{var E7=T7(),I2=c0(),zB=V5(),hK=U5(),g5=M6(),X5=A7(),FB=Q2(),MB=0,wB=3,NB=function(Q){for(var $ in X5){if(!Object.prototype.hasOwnProperty.call(X5,$))continue;if(X5[$].magic===Q)return X5[$]}return null};function xK(Q,$){this.options=Q,this.loadOptions=$}xK.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function(Q){var $,q;if(Q.skip(22),this.fileNameLength=Q.readInt(2),q=Q.readInt(2),this.fileName=Q.readData(this.fileNameLength),Q.skip(q),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if($=NB(this.compressionMethod),$===null)throw new Error("Corrupted zip : compression "+I2.pretty(this.compressionMethod)+" unknown (inner file : "+I2.transformTo("string",this.fileName)+")");this.decompressed=new zB(this.compressedSize,this.uncompressedSize,this.crc32,$,Q.readData(this.compressedSize))},readCentralPart:function(Q){this.versionMadeBy=Q.readInt(2),Q.skip(2),this.bitFlag=Q.readInt(2),this.compressionMethod=Q.readString(2),this.date=Q.readDate(),this.crc32=Q.readInt(4),this.compressedSize=Q.readInt(4),this.uncompressedSize=Q.readInt(4);var $=Q.readInt(2);if(this.extraFieldsLength=Q.readInt(2),this.fileCommentLength=Q.readInt(2),this.diskNumberStart=Q.readInt(2),this.internalFileAttributes=Q.readInt(2),this.externalFileAttributes=Q.readInt(4),this.localHeaderOffset=Q.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");Q.skip($),this.readExtraFields(Q),this.parseZIP64ExtraField(Q),this.fileComment=Q.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var Q=this.versionMadeBy>>8;if(this.dir=this.externalFileAttributes&16?!0:!1,Q===MB)this.dosPermissions=this.externalFileAttributes&63;if(Q===wB)this.unixPermissions=this.externalFileAttributes>>16&65535;if(!this.dir&&this.fileNameStr.slice(-1)==="/")this.dir=!0},parseZIP64ExtraField:function(){if(!this.extraFields[1])return;var Q=E7(this.extraFields[1].value);if(this.uncompressedSize===I2.MAX_VALUE_32BITS)this.uncompressedSize=Q.readInt(8);if(this.compressedSize===I2.MAX_VALUE_32BITS)this.compressedSize=Q.readInt(8);if(this.localHeaderOffset===I2.MAX_VALUE_32BITS)this.localHeaderOffset=Q.readInt(8);if(this.diskNumberStart===I2.MAX_VALUE_32BITS)this.diskNumberStart=Q.readInt(4)},readExtraFields:function(Q){var $=Q.index+this.extraFieldsLength,q,K,J;if(!this.extraFields)this.extraFields={};while(Q.index+4<$)q=Q.readInt(2),K=Q.readInt(2),J=Q.readData(K),this.extraFields[q]={id:q,length:K,value:J};Q.setIndex($)},handleUTF8:function(){var Q=FB.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=g5.utf8decode(this.fileName),this.fileCommentStr=g5.utf8decode(this.fileComment);else{var $=this.findExtraFieldUnicodePath();if($!==null)this.fileNameStr=$;else{var q=I2.transformTo(Q,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(q)}var K=this.findExtraFieldUnicodeComment();if(K!==null)this.fileCommentStr=K;else{var J=I2.transformTo(Q,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(J)}}},findExtraFieldUnicodePath:function(){var Q=this.extraFields[28789];if(Q){var $=E7(Q.value);if($.readInt(1)!==1)return null;if(hK(this.fileName)!==$.readInt(4))return null;return g5.utf8decode($.readData(Q.length-5))}return null},findExtraFieldUnicodeComment:function(){var Q=this.extraFields[25461];if(Q){var $=E7(Q.value);if($.readInt(1)!==1)return null;if(hK(this.fileComment)!==$.readInt(4))return null;return g5.utf8decode($.readData(Q.length-5))}return null}};OK.exports=xK});var SK=N0((d3,EK)=>{var YB=T7(),J2=c0(),x1=g7(),LB=PK(),DB=Q2();function TK(Q){this.files=[],this.loadOptions=Q}TK.prototype={checkSignature:function(Q){if(!this.reader.readAndCheckSignature(Q)){this.reader.index-=4;var $=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+J2.pretty($)+", expected "+J2.pretty(Q)+")")}},isSignature:function(Q,$){var q=this.reader.index;this.reader.setIndex(Q);var K=this.reader.readString(4),J=K===$;return this.reader.setIndex(q),J},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var Q=this.reader.readData(this.zipCommentLength),$=DB.uint8array?"uint8array":"array",q=J2.transformTo($,Q);this.zipComment=this.loadOptions.decodeFileName(q)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};var Q=this.zip64EndOfCentralSize-44,$=0,q,K,J;while($1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var Q,$;for(Q=0;Q0)if(this.isSignature(q,x1.CENTRAL_FILE_HEADER));else this.reader.zero=J;else if(J<0)throw new Error("Corrupted zip: missing "+Math.abs(J)+" bytes.")},prepareReader:function(Q){this.reader=YB(Q)},load:function(Q){this.prepareReader(Q),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}};EK.exports=TK});var cK=N0((m3,_K)=>{var S7=c0(),y5=W6(),HB=M6(),kB=SK(),vB=u4(),uK=$8();function IB(Q){return new y5.Promise(function($,q){var K=Q.decompressed.getContentWorker().pipe(new vB);K.on("error",function(J){q(J)}).on("end",function(){if(K.streamInfo.crc32!==Q.decompressed.crc32)q(new Error("Corrupted zip : CRC32 mismatch"));else $()}).resume()})}_K.exports=function(Q,$){var q=this;if($=S7.extend($||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:HB.utf8decode}),uK.isNode&&uK.isStream(Q))return y5.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."));return S7.prepareContent("the loaded zip file",Q,!0,$.optimizedBinaryString,$.base64).then(function(K){var J=new kB($);return J.load(K),J}).then(function K(J){var Z=[y5.Promise.resolve(J)],G=J.files;if($.checkCRC32)for(var B=0;B{function j1(){if(!(this instanceof j1))return new j1;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var Q=new j1;for(var $ in this)if(typeof this[$]!=="function")Q[$]=this[$];return Q}}j1.prototype=YK();j1.prototype.loadAsync=cK();j1.support=Q2();j1.defaults=T4();j1.version="3.10.1";j1.loadAsync=function(Q,$){return new j1().loadAsync(Q,$)};j1.external=W6();bK.exports=j1});var oK={};h2(oK,{types:()=>xB,promisify:()=>bB,log:()=>_B,isUndefined:()=>X6,isSymbol:()=>PB,isString:()=>E5,isRegExp:()=>h5,isPrimitive:()=>TB,isObject:()=>y6,isNumber:()=>nK,isNullOrUndefined:()=>OB,isNull:()=>T5,isFunction:()=>O5,isError:()=>x5,isDate:()=>b7,isBuffer:()=>EB,isBoolean:()=>m7,isArray:()=>mK,inspect:()=>t2,inherits:()=>cB,format:()=>d7,deprecate:()=>CB,debuglog:()=>jB,callbackifyOnRejected:()=>lK,callbackify:()=>dB,_extend:()=>pK,TextEncoder:()=>mB,TextDecoder:()=>nB});function d7(Q,...$){if(!E5(Q)){var q=[Q];for(var K=0;K<$.length;K++)q.push(t2($[K]));return q.join(" ")}var K=0,J=$.length,Z=String(Q).replace(RB,function(B){if(B==="%%")return"%";if(K>=J)return B;switch(B){case"%s":return String($[K++]);case"%d":return Number($[K++]);case"%j":try{return JSON.stringify($[K++])}catch(W){return"[Circular]"}default:return B}});for(var G=$[K];K=0||Z.indexOf("description")>=0))return u7($);if(Z.length===0){if(O5($)){var B=$.name?": "+$.name:"";return Q.stylize("[Function"+B+"]","special")}if(h5($))return Q.stylize(RegExp.prototype.toString.call($),"regexp");if(b7($))return Q.stylize(Date.prototype.toString.call($),"date");if(x5($))return u7($)}var W="",U=!1,V=["{","}"];if(mK($))U=!0,V=["[","]"];if(O5($)){var N=$.name?": "+$.name:"";W=" [Function"+N+"]"}if(h5($))W=" "+RegExp.prototype.toString.call($);if(b7($))W=" "+Date.prototype.toUTCString.call($);if(x5($))W=" "+u7($);if(Z.length===0&&(!U||$.length==0))return V[0]+W+V[1];if(q<0)if(h5($))return Q.stylize(RegExp.prototype.toString.call($),"regexp");else return Q.stylize("[Object]","special");Q.seen.push($);var F;if(U)F=yB(Q,$,q,G,Z);else F=Z.map(function(M){return c7(Q,$,q,G,M,U)});return Q.seen.pop(),hB(F,W,V)}function XB(Q,$){if(X6($))return Q.stylize("undefined","undefined");if(E5($)){var q="'"+JSON.stringify($).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return Q.stylize(q,"string")}if(nK($))return Q.stylize(""+$,"number");if(m7($))return Q.stylize(""+$,"boolean");if(T5($))return Q.stylize("null","null")}function u7(Q){return"["+Error.prototype.toString.call(Q)+"]"}function yB(Q,$,q,K,J){var Z=[];for(var G=0,B=$.length;G-1)if(Z)B=B.split(` -`).map(function(U){return" "+U}).join(` -`).slice(2);else B=` -`+B.split(` -`).map(function(U){return" "+U}).join(` -`)}else B=Q.stylize("[Circular]","special");if(X6(G)){if(Z&&J.match(/^\d+$/))return B;if(G=JSON.stringify(""+J),G.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/))G=G.slice(1,-1),G=Q.stylize(G,"name");else G=G.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),G=Q.stylize(G,"string")}return G+": "+B}function hB(Q,$,q){var K=0,J=Q.reduce(function(Z,G){if(K++,G.indexOf(` -`)>=0)K++;return Z+G.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(J>60)return q[0]+($===""?"":$+` - `)+" "+Q.join(`, - `)+" "+q[1];return q[0]+$+" "+Q.join(", ")+" "+q[1]}function mK(Q){return Array.isArray(Q)}function m7(Q){return typeof Q==="boolean"}function T5(Q){return Q===null}function OB(Q){return Q==null}function nK(Q){return typeof Q==="number"}function E5(Q){return typeof Q==="string"}function PB(Q){return typeof Q==="symbol"}function X6(Q){return Q===void 0}function h5(Q){return y6(Q)&&n7(Q)==="[object RegExp]"}function y6(Q){return typeof Q==="object"&&Q!==null}function b7(Q){return y6(Q)&&n7(Q)==="[object Date]"}function x5(Q){return y6(Q)&&(n7(Q)==="[object Error]"||Q instanceof Error)}function O5(Q){return typeof Q==="function"}function TB(Q){return Q===null||typeof Q==="boolean"||typeof Q==="number"||typeof Q==="string"||typeof Q==="symbol"||typeof Q==="undefined"}function EB(Q){return Q instanceof Buffer}function n7(Q){return Object.prototype.toString.call(Q)}function _7(Q){return Q<10?"0"+Q.toString(10):Q.toString(10)}function uB(){var Q=new Date,$=[_7(Q.getHours()),_7(Q.getMinutes()),_7(Q.getSeconds())].join(":");return[Q.getDate(),SB[Q.getMonth()],$].join(" ")}function _B(...Q){console.log("%s - %s",uB(),d7.apply(null,Q))}function cB(Q,$){if($)Q.super_=$,Q.prototype=Object.create($.prototype,{constructor:{value:Q,enumerable:!1,writable:!0,configurable:!0}})}function pK(Q,$){if(!$||!y6($))return Q;var q=Object.keys($),K=q.length;while(K--)Q[q[K]]=$[q[K]];return Q}function iK(Q,$){return Object.prototype.hasOwnProperty.call(Q,$)}function lK(Q,$){if(!Q){var q=new Error("Promise was rejected with a falsy value");q.reason=Q,Q=q}return $(Q)}function dB(Q){if(typeof Q!=="function")throw new TypeError('The "original" argument must be of type Function');function $(...q){var K=q.pop();if(typeof K!=="function")throw new TypeError("The last argument must be of type Function");var J=this,Z=function(...G){return K.apply(J,...G)};Q.apply(this,q).then(function(G){process.nextTick(Z.bind(null,null,G))},function(G){process.nextTick(lK.bind(null,G,Z))})}return Object.setPrototypeOf($,Object.getPrototypeOf(Q)),Object.defineProperties($,Object.getOwnPropertyDescriptors(Q)),$}var RB,jB,t2,xB=()=>{},SB,bB,mB,nB;var aK=x2(()=>{RB=/%[sdj%]/g;jB=((Q={},$={},q)=>((q=typeof process!=="undefined"&&process.env.NODE_DEBUG)&&(q=q.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase()),$=new RegExp("^"+q+"$","i"),(K)=>{if(K=K.toUpperCase(),!Q[K])if($.test(K))Q[K]=function(...J){console.error("%s: %s",K,pid,d7.apply(null,...J))};else Q[K]=function(){};return Q[K]}))(),t2=((Q)=>(Q.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},Q.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},Q.custom=Symbol.for("nodejs.util.inspect.custom"),Q))(function Q($,q,...K){var J={seen:[],stylize:AB};if(K.length>=1)J.depth=K[0];if(K.length>=2)J.colors=K[1];if(m7(q))J.showHidden=q;else if(q)pK(J,q);if(X6(J.showHidden))J.showHidden=!1;if(X6(J.depth))J.depth=2;if(X6(J.colors))J.colors=!1;if(J.colors)J.stylize=fB;return P5(J,$,J.depth)});SB=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];bB=((Q)=>(Q.custom=Symbol.for("nodejs.util.promisify.custom"),Q))(function Q($){if(typeof $!=="function")throw new TypeError('The "original" argument must be of type Function');if(kCustomPromisifiedSymbol&&$[kCustomPromisifiedSymbol]){var q=$[kCustomPromisifiedSymbol];if(typeof q!=="function")throw new TypeError('The "nodejs.util.promisify.custom" argument must be of type Function');return Object.defineProperty(q,kCustomPromisifiedSymbol,{value:q,enumerable:!1,writable:!1,configurable:!0}),q}function q(...K){var J,Z,G=new Promise(function(B,W){J=B,Z=W});K.push(function(B,W){if(B)Z(B);else J(W)});try{$.apply(this,K)}catch(B){Z(B)}return G}if(Object.setPrototypeOf(q,Object.getPrototypeOf($)),kCustomPromisifiedSymbol)Object.defineProperty(q,kCustomPromisifiedSymbol,{value:q,enumerable:!1,writable:!1,configurable:!0});return Object.defineProperties(q,Object.getOwnPropertyDescriptors($))});({TextEncoder:mB,TextDecoder:nB}=globalThis)});var r7={};h2(r7,{resolveObject:()=>KJ,resolve:()=>$J,parse:()=>x6,format:()=>qJ,default:()=>QW,Url:()=>L1,URLSearchParams:()=>eK,URL:()=>o7});function a7(Q){return typeof Q==="string"}function QJ(Q){return typeof Q==="object"&&Q!==null}function S5(Q){return Q===null}function pB(Q){return Q==null}function L1(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function x6(Q,$,q){if(Q&&QJ(Q)&&Q instanceof L1)return Q;var K=new L1;return K.parse(Q,$,q),K}function qJ(Q){if(a7(Q))Q=x6(Q);if(!(Q instanceof L1))return L1.prototype.format.call(Q);return Q.format()}function $J(Q,$){return x6(Q,!1,!0).resolve($)}function KJ(Q,$){if(!Q)return $;return x6(Q,!1,!0).resolveObject($)}var o7,eK,iB,lB,oB,aB,rB,p7,rK,sK,sB=255,tK,tB,eB,i7,h6,l7,QW;var s7=x2(()=>{({URL:o7,URLSearchParams:eK}=globalThis);iB=/^([a-z0-9.+-]+:)/i,lB=/:[0-9]*$/,oB=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,aB=["<",">",'"',"`"," ","\r",` -`,"\t"],rB=["{","}","|","\\","^","`"].concat(aB),p7=["'"].concat(rB),rK=["%","/","?",";","#"].concat(p7),sK=["/","?","#"],tK=/^[+a-z0-9A-Z_-]{0,63}$/,tB=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,eB={javascript:!0,"javascript:":!0},i7={javascript:!0,"javascript:":!0},h6={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},l7={parse(Q){var $=decodeURIComponent;return(Q+"").replace(/\+/g," ").split("&").filter(Boolean).reduce(function(q,K,J){var Z=K.split("="),G=$(Z[0]||""),B=$(Z[1]||""),W=q[G];return q[G]=W===void 0?B:[].concat(W,B),q},{})},stringify(Q){var $=encodeURIComponent;return Object.keys(Q||{}).reduce(function(q,K){return[].concat(Q[K]).forEach(function(J){q.push($(K)+"="+$(J))}),q},[]).join("&").replace(/\s/g,"+")}};L1.prototype.parse=function(Q,$,q){if(!a7(Q))throw new TypeError("Parameter 'url' must be a string, not "+typeof Q);var K=Q.indexOf("?"),J=K!==-1&&K127)R+="x";else R+=H[c];if(!R.match(tK)){var $0=z.slice(0,M),_=z.slice(M+1),g=H.match(tB);if(g)$0.push(g[1]),_.unshift(g[2]);if(_.length)B="/"+_.join(".")+B;this.hostname=$0.join(".");break}}}}if(this.hostname.length>sB)this.hostname="";else this.hostname=this.hostname.toLowerCase();if(!D)this.hostname=new o7(`https://${this.hostname}`).hostname;var O=this.port?":"+this.port:"",h=this.hostname||"";if(this.host=h+O,this.href+=this.host,D){if(this.hostname=this.hostname.substr(1,this.hostname.length-2),B[0]!=="/")B="/"+B}}if(!eB[V])for(var M=0,Y=p7.length;M0?q.host.split("@"):!1;if(R)q.auth=R.shift(),q.host=q.hostname=R.shift()}if(q.search=Q.search,q.query=Q.query,!S5(q.pathname)||!S5(q.search))q.path=(q.pathname?q.pathname:"")+(q.search?q.search:"");return q.href=q.format(),q}if(!z.length){if(q.pathname=null,q.search)q.path="/"+q.search;else q.path=null;return q.href=q.format(),q}var c=z.slice(-1)[0],m=(q.host||Q.host||z.length>1)&&(c==="."||c==="..")||c==="",$0=0;for(var _=z.length;_>=0;_--)if(c=z[_],c===".")z.splice(_,1);else if(c==="..")z.splice(_,1),$0++;else if($0)z.splice(_,1),$0--;if(!y&&!D)for(;$0--;$0)z.unshift("..");if(y&&z[0]!==""&&(!z[0]||z[0].charAt(0)!=="/"))z.unshift("");if(m&&z.join("/").substr(-1)!=="/")z.push("");var g=z[0]===""||z[0]&&z[0].charAt(0)==="/";if(H){q.hostname=q.host=g?"":z.length?z.shift():"";var R=q.host&&q.host.indexOf("@")>0?q.host.split("@"):!1;if(R)q.auth=R.shift(),q.host=q.hostname=R.shift()}if(y=y||q.host&&z.length,y&&!g)z.unshift("");if(!z.length)q.pathname=null,q.path=null;else q.pathname=z.join("/");if(!S5(q.pathname)||!S5(q.search))q.path=(q.pathname?q.pathname:"")+(q.search?q.search:"");return q.auth=Q.auth||q.auth,q.slashes=q.slashes||Q.slashes,q.href=q.format(),q};L1.prototype.parseHost=function(){var Q=this.host,$=lB.exec(Q);if($){if($=$[0],$!==":")this.port=$.substr(1);Q=Q.substr(0,Q.length-$.length)}if(Q)this.hostname=Q};QW={parse:x6,resolve:$J,resolveObject:KJ,format:qJ,Url:L1,URL:o7,URLSearchParams:eK}});var q9={};h2(q9,{request:()=>DW,globalAgent:()=>RW,get:()=>HW,STATUS_CODES:()=>CW,METHODS:()=>jW,IncomingMessage:()=>vW,ClientRequest:()=>kW,Agent:()=>IW});var qW,$W,JJ,KW,JW,UW=(Q,$,q)=>{q=Q!=null?qW($W(Q)):{};let K=$||!Q||!Q.__esModule?JJ(q,"default",{value:Q,enumerable:!0}):q;for(let J of KW(Q))if(!JW.call(K,J))JJ(K,J,{get:()=>Q[J],enumerable:!0});return K},R0=(Q,$)=>()=>($||Q(($={exports:{}}).exports,$),$.exports),UJ,VW,VJ,b0,ZJ,V1,ZW,g8,W1,X8,e2,V2,R2,O6,t7,u5,GW,_5,BW,WW,GJ,c5,e7,zW,U2,BJ,WJ,Q9,zJ,FW,FJ,MJ,wJ,NJ,MW,wW,NW,YW,LW,DW,HW,kW,vW,IW,RW,CW,jW;var $9=x2(()=>{qW=Object.create,{getPrototypeOf:$W,defineProperty:JJ,getOwnPropertyNames:KW}=Object,JW=Object.prototype.hasOwnProperty,UJ=R0((Q)=>{Q.fetch=J(global.fetch)&&J(global.ReadableStream),Q.writableStream=J(global.WritableStream),Q.abortController=J(global.AbortController);var $;function q(){if($!==void 0)return $;if(global.XMLHttpRequest){$=new global.XMLHttpRequest;try{$.open("GET",global.XDomainRequest?"/":"https://example.com")}catch(Z){$=null}}else $=null;return $}function K(Z){var G=q();if(!G)return!1;try{return G.responseType=Z,G.responseType===Z}catch(B){}return!1}Q.arraybuffer=Q.fetch||K("arraybuffer"),Q.msstream=!Q.fetch&&K("ms-stream"),Q.mozchunkedarraybuffer=!Q.fetch&&K("moz-chunked-arraybuffer"),Q.overrideMimeType=Q.fetch||(q()?J(q().overrideMimeType):!1);function J(Z){return typeof Z==="function"}$=null}),VW=R0((Q,$)=>{if(typeof Object.create==="function")$.exports=function q(K,J){if(J)K.super_=J,K.prototype=Object.create(J.prototype,{constructor:{value:K,enumerable:!1,writable:!0,configurable:!0}})};else $.exports=function q(K,J){if(J){K.super_=J;var Z=function(){};Z.prototype=J.prototype,K.prototype=new Z,K.prototype.constructor=K}}}),VJ=R0((Q,$)=>{try{if(q=(aK(),y0(oK)),typeof q.inherits!=="function")throw"";$.exports=q.inherits}catch(K){$.exports=VW()}var q}),b0=R0((Q,$)=>{class q extends Error{constructor(K){if(!Array.isArray(K))throw new TypeError(`Expected input to be an Array, got ${typeof K}`);let J="";for(let Z=0;Z{$.exports={format(q,...K){return q.replace(/%([sdifj])/g,function(...[J,Z]){let G=K.shift();if(Z==="f")return G.toFixed(6);else if(Z==="j")return JSON.stringify(G);else if(Z==="s"&&typeof G==="object")return`${G.constructor!==Object?G.constructor.name:""} {}`.trim();else return G.toString()})},inspect(q){switch(typeof q){case"string":if(q.includes("'")){if(!q.includes('"'))return`"${q}"`;else if(!q.includes("`")&&!q.includes("${"))return`\`${q}\``}return`'${q}'`;case"number":if(isNaN(q))return"NaN";else if(Object.is(q,-0))return String(q);return q;case"bigint":return`${String(q)}n`;case"boolean":case"undefined":return String(q);case"object":return"{}"}}}}),V1=R0((Q,$)=>{var{format:q,inspect:K}=ZJ(),{AggregateError:J}=b0(),Z=globalThis.AggregateError||J,G=Symbol("kIsNodeError"),B=["string","function","number","object","Function","Object","boolean","bigint","symbol"],W=/^([A-Z][a-z0-9]*)+$/,U={};function V(D,z){if(!D)throw new U.ERR_INTERNAL_ASSERTION(z)}function N(D){let z="",Y=D.length,H=D[0]==="-"?1:0;for(;Y>=H+4;Y-=3)z=`_${D.slice(Y-3,Y)}${z}`;return`${D.slice(0,Y)}${z}`}function F(D,z,Y){if(typeof z==="function")return V(z.length<=Y.length,`Code: ${D}; The provided arguments length (${Y.length}) does not match the required ones (${z.length}).`),z(...Y);let H=(z.match(/%[dfijoOs]/g)||[]).length;if(V(H===Y.length,`Code: ${D}; The provided arguments length (${Y.length}) does not match the required ones (${H}).`),Y.length===0)return z;return q(z,...Y)}function M(D,z,Y){if(!Y)Y=Error;class H extends Y{constructor(...R){super(F(D,z,R))}toString(){return`${this.name} [${D}]: ${this.message}`}}Object.defineProperties(H.prototype,{name:{value:Y.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${D}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),H.prototype.code=D,H.prototype[G]=!0,U[D]=H}function v(D){let z="__node_internal_"+D.name;return Object.defineProperty(D,"name",{value:z}),D}function x(D,z){if(D&&z&&D!==z){if(Array.isArray(z.errors))return z.errors.push(D),z;let Y=new Z([z,D],z.message);return Y.code=z.code,Y}return D||z}class y extends Error{constructor(D="The operation was aborted",z=void 0){if(z!==void 0&&typeof z!=="object")throw new U.ERR_INVALID_ARG_TYPE("options","Object",z);super(D,z);this.code="ABORT_ERR",this.name="AbortError"}}M("ERR_ASSERTION","%s",Error),M("ERR_INVALID_ARG_TYPE",(D,z,Y)=>{if(V(typeof D==="string","'name' must be a string"),!Array.isArray(z))z=[z];let H="The ";if(D.endsWith(" argument"))H+=`${D} `;else H+=`"${D}" ${D.includes(".")?"property":"argument"} `;H+="must be ";let R=[],c=[],m=[];for(let _ of z)if(V(typeof _==="string","All expected entries have to be of type string"),B.includes(_))R.push(_.toLowerCase());else if(W.test(_))c.push(_);else V(_!=="object",'The value "object" should be written as "Object"'),m.push(_);if(c.length>0){let _=R.indexOf("object");if(_!==-1)R.splice(R,_,1),c.push("Object")}if(R.length>0){switch(R.length){case 1:H+=`of type ${R[0]}`;break;case 2:H+=`one of type ${R[0]} or ${R[1]}`;break;default:{let _=R.pop();H+=`one of type ${R.join(", ")}, or ${_}`}}if(c.length>0||m.length>0)H+=" or "}if(c.length>0){switch(c.length){case 1:H+=`an instance of ${c[0]}`;break;case 2:H+=`an instance of ${c[0]} or ${c[1]}`;break;default:{let _=c.pop();H+=`an instance of ${c.join(", ")}, or ${_}`}}if(m.length>0)H+=" or "}switch(m.length){case 0:break;case 1:if(m[0].toLowerCase()!==m[0])H+="an ";H+=`${m[0]}`;break;case 2:H+=`one of ${m[0]} or ${m[1]}`;break;default:{let _=m.pop();H+=`one of ${m.join(", ")}, or ${_}`}}if(Y==null)H+=`. Received ${Y}`;else if(typeof Y==="function"&&Y.name)H+=`. Received function ${Y.name}`;else if(typeof Y==="object"){var $0;if(($0=Y.constructor)!==null&&$0!==void 0&&$0.name)H+=`. Received an instance of ${Y.constructor.name}`;else{let _=K(Y,{depth:-1});H+=`. Received ${_}`}}else{let _=K(Y,{colors:!1});if(_.length>25)_=`${_.slice(0,25)}...`;H+=`. Received type ${typeof Y} (${_})`}return H},TypeError),M("ERR_INVALID_ARG_VALUE",(D,z,Y="is invalid")=>{let H=K(z);if(H.length>128)H=H.slice(0,128)+"...";return`The ${D.includes(".")?"property":"argument"} '${D}' ${Y}. Received ${H}`},TypeError),M("ERR_INVALID_RETURN_VALUE",(D,z,Y)=>{var H;let R=Y!==null&&Y!==void 0&&(H=Y.constructor)!==null&&H!==void 0&&H.name?`instance of ${Y.constructor.name}`:`type ${typeof Y}`;return`Expected ${D} to be returned from the "${z}" function but got ${R}.`},TypeError),M("ERR_MISSING_ARGS",(...D)=>{V(D.length>0,"At least one arg needs to be specified");let z,Y=D.length;switch(D=(Array.isArray(D)?D:[D]).map((H)=>`"${H}"`).join(" or "),Y){case 1:z+=`The ${D[0]} argument`;break;case 2:z+=`The ${D[0]} and ${D[1]} arguments`;break;default:{let H=D.pop();z+=`The ${D.join(", ")}, and ${H} arguments`}break}return`${z} must be specified`},TypeError),M("ERR_OUT_OF_RANGE",(D,z,Y)=>{V(z,'Missing "range" argument');let H;if(Number.isInteger(Y)&&Math.abs(Y)>4294967296)H=N(String(Y));else if(typeof Y==="bigint"){H=String(Y);let R=BigInt(2)**BigInt(32);if(Y>R||Y<-R)H=N(H);H+="n"}else H=K(Y);return`The value of "${D}" is out of range. It must be ${z}. Received ${H}`},RangeError),M("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),M("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),M("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),M("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),M("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),M("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),M("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),M("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),M("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),M("ERR_STREAM_WRITE_AFTER_END","write after end",Error),M("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),$.exports={AbortError:y,aggregateTwoErrors:v(x),hideStackFrames:v,codes:U}}),ZW=R0((Q,$)=>{Object.defineProperty(Q,"__esModule",{value:!0});var q=new WeakMap,K=new WeakMap;function J(g){let O=q.get(g);return console.assert(O!=null,"'this' is expected an Event object, but got",g),O}function Z(g){if(g.passiveListener!=null){if(typeof console!=="undefined"&&typeof console.error==="function")console.error("Unable to preventDefault inside passive event listener invocation.",g.passiveListener);return}if(!g.event.cancelable)return;if(g.canceled=!0,typeof g.event.preventDefault==="function")g.event.preventDefault()}function G(g,O){q.set(this,{eventTarget:g,event:O,eventPhase:2,currentTarget:g,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:O.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});let h=Object.keys(O);for(let f=0;f0){let g=new Array(arguments.length);for(let O=0;O{Object.defineProperty(Q,"__esModule",{value:!0});var q=ZW();class K extends q.EventTarget{constructor(){super();throw new TypeError("AbortSignal cannot be constructed directly")}get aborted(){let V=G.get(this);if(typeof V!=="boolean")throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?"null":typeof this}`);return V}}q.defineEventAttribute(K.prototype,"abort");function J(){let V=Object.create(K.prototype);return q.EventTarget.call(V),G.set(V,!1),V}function Z(V){if(G.get(V)!==!1)return;G.set(V,!0),V.dispatchEvent({type:"abort"})}var G=new WeakMap;if(Object.defineProperties(K.prototype,{aborted:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(K.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});class B{constructor(){W.set(this,J())}get signal(){return U(this)}abort(){Z(U(this))}}var W=new WeakMap;function U(V){let N=W.get(V);if(N==null)throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${V===null?"null":typeof V}`);return N}if(Object.defineProperties(B.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(B.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"});Q.AbortController=B,Q.AbortSignal=K,Q.default=B,$.exports=B,$.exports.AbortController=$.exports.default=B,$.exports.AbortSignal=K}),W1=R0((Q,$)=>{var q=(a0(),y0(s0)),{format:K,inspect:J}=ZJ(),{codes:{ERR_INVALID_ARG_TYPE:Z}}=V1(),{kResistStopPropagation:G,AggregateError:B,SymbolDispose:W}=b0(),U=globalThis.AbortSignal||g8().AbortSignal,V=globalThis.AbortController||g8().AbortController,N=Object.getPrototypeOf(async function(){}).constructor,F=globalThis.Blob||q.Blob,M=typeof F!=="undefined"?function y(D){return D instanceof F}:function y(D){return!1},v=(y,D)=>{if(y!==void 0&&(y===null||typeof y!=="object"||!("aborted"in y)))throw new Z(D,"AbortSignal",y)},x=(y,D)=>{if(typeof y!=="function")throw new Z(D,"Function",y)};$.exports={AggregateError:B,kEmptyObject:Object.freeze({}),once(y){let D=!1;return function(...z){if(D)return;D=!0,y.apply(this,z)}},createDeferredPromise:function(){let y,D;return{promise:new Promise((z,Y)=>{y=z,D=Y}),resolve:y,reject:D}},promisify(y){return new Promise((D,z)=>{y((Y,...H)=>{if(Y)return z(Y);return D(...H)})})},debuglog(){return function(){}},format:K,inspect:J,types:{isAsyncFunction(y){return y instanceof N},isArrayBufferView(y){return ArrayBuffer.isView(y)}},isBlob:M,deprecate(y,D){return y},addAbortListener:(a1(),y0(o1)).addAbortListener||function y(D,z){if(D===void 0)throw new Z("signal","AbortSignal",D);v(D,"signal"),x(z,"listener");let Y;if(D.aborted)queueMicrotask(()=>z());else D.addEventListener("abort",z,{__proto__:null,once:!0,[G]:!0}),Y=()=>{D.removeEventListener("abort",z)};return{__proto__:null,[W](){var H;(H=Y)===null||H===void 0||H()}}},AbortSignalAny:U.any||function y(D){if(D.length===1)return D[0];let z=new V,Y=()=>z.abort();return D.forEach((H)=>{v(H,"signals"),H.addEventListener("abort",Y,{once:!0})}),z.signal.addEventListener("abort",()=>{D.forEach((H)=>H.removeEventListener("abort",Y))},{once:!0}),z.signal}},$.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),X8=R0((Q,$)=>{var{ArrayIsArray:q,ArrayPrototypeIncludes:K,ArrayPrototypeJoin:J,ArrayPrototypeMap:Z,NumberIsInteger:G,NumberIsNaN:B,NumberMAX_SAFE_INTEGER:W,NumberMIN_SAFE_INTEGER:U,NumberParseInt:V,ObjectPrototypeHasOwnProperty:N,RegExpPrototypeExec:F,String:M,StringPrototypeToUpperCase:v,StringPrototypeTrim:x}=b0(),{hideStackFrames:y,codes:{ERR_SOCKET_BAD_PORT:D,ERR_INVALID_ARG_TYPE:z,ERR_INVALID_ARG_VALUE:Y,ERR_OUT_OF_RANGE:H,ERR_UNKNOWN_SIGNAL:R}}=V1(),{normalizeEncoding:c}=W1(),{isAsyncFunction:m,isArrayBufferView:$0}=W1().types,_={};function g(j){return j===(j|0)}function O(j){return j===j>>>0}var h=/^[0-7]+$/,f="must be a 32-bit unsigned integer or an octal string";function A(j,d,e){if(typeof j==="undefined")j=e;if(typeof j==="string"){if(F(h,j)===null)throw new Y(d,j,f);j=V(j,8)}return i(j,d),j}var I=y((j,d,e=U,p=W)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);if(jp)throw new H(d,`>= ${e} && <= ${p}`,j)}),n=y((j,d,e=-2147483648,p=2147483647)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);if(jp)throw new H(d,`>= ${e} && <= ${p}`,j)}),i=y((j,d,e=!1)=>{if(typeof j!=="number")throw new z(d,"number",j);if(!G(j))throw new H(d,"an integer",j);let p=e?1:0,G0=4294967295;if(jG0)throw new H(d,`>= ${p} && <= ${G0}`,j)});function K0(j,d){if(typeof j!=="string")throw new z(d,"string",j)}function z0(j,d,e=void 0,p){if(typeof j!=="number")throw new z(d,"number",j);if(e!=null&&jp||(e!=null||p!=null)&&B(j))throw new H(d,`${e!=null?`>= ${e}`:""}${e!=null&&p!=null?" && ":""}${p!=null?`<= ${p}`:""}`,j)}var S=y((j,d,e)=>{if(!K(e,j)){let p="must be one of: "+J(Z(e,(G0)=>typeof G0==="string"?`'${G0}'`:M(G0)),", ");throw new Y(d,j,p)}});function U0(j,d){if(typeof j!=="boolean")throw new z(d,"boolean",j)}function k(j,d,e){return j==null||!N(j,d)?e:j[d]}var u=y((j,d,e=null)=>{let p=k(e,"allowArray",!1),G0=k(e,"allowFunction",!1);if(!k(e,"nullable",!1)&&j===null||!p&&q(j)||typeof j!=="object"&&(!G0||typeof j!=="function"))throw new z(d,"Object",j)}),Q0=y((j,d)=>{if(j!=null&&typeof j!=="object"&&typeof j!=="function")throw new z(d,"a dictionary",j)}),E=y((j,d,e=0)=>{if(!q(j))throw new z(d,"Array",j);if(j.length{if(!$0(j))throw new z(d,["Buffer","TypedArray","DataView"],j)});function T(j,d){let e=c(d),p=j.length;if(e==="hex"&&p%2!==0)throw new Y("encoding",d,`is invalid for data of length ${p}`)}function t(j,d="Port",e=!0){if(typeof j!=="number"&&typeof j!=="string"||typeof j==="string"&&x(j).length===0||+j!==+j>>>0||j>65535||j===0&&!e)throw new D(d,j,e);return j|0}var Z0=y((j,d)=>{if(j!==void 0&&(j===null||typeof j!=="object"||!("aborted"in j)))throw new z(d,"AbortSignal",j)}),W0=y((j,d)=>{if(typeof j!=="function")throw new z(d,"Function",j)}),C=y((j,d)=>{if(typeof j!=="function"||m(j))throw new z(d,"Function",j)}),X=y((j,d)=>{if(j!==void 0)throw new z(d,"undefined",j)});function P(j,d,e){if(!K(e,j))throw new z(d,`('${J(e,"|")}')`,j)}var o=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function r(j,d){if(typeof j==="undefined"||!F(o,j))throw new Y(d,j,'must be an array or string of format "; rel=preload; as=style"')}function l(j){if(typeof j==="string")return r(j,"hints"),j;else if(q(j)){let d=j.length,e="";if(d===0)return e;for(let p=0;p; rel=preload; as=style"')}$.exports={isInt32:g,isUint32:O,parseFileMode:A,validateArray:E,validateStringArray:q0,validateBooleanArray:B0,validateAbortSignalArray:w0,validateBoolean:U0,validateBuffer:b,validateDictionary:Q0,validateEncoding:T,validateFunction:W0,validateInt32:n,validateInteger:I,validateNumber:z0,validateObject:u,validateOneOf:S,validatePlainFunction:C,validatePort:t,validateSignalName:M0,validateString:K0,validateUint32:i,validateUndefined:X,validateUnion:P,validateAbortSignal:Z0,validateLinkHeaderValue:l}}),e2=R0((Q,$)=>{$.exports=(L4(),y0(Y4))}),V2=R0((Q,$)=>{var{SymbolAsyncIterator:q,SymbolIterator:K,SymbolFor:J}=b0(),Z=J("nodejs.stream.destroyed"),G=J("nodejs.stream.errored"),B=J("nodejs.stream.readable"),W=J("nodejs.stream.writable"),U=J("nodejs.stream.disturbed"),V=J("nodejs.webstream.isClosedPromise"),N=J("nodejs.webstream.controllerErrorFunction");function F(k,u=!1){var Q0;return!!(k&&typeof k.pipe==="function"&&typeof k.on==="function"&&(!u||typeof k.pause==="function"&&typeof k.resume==="function")&&(!k._writableState||((Q0=k._readableState)===null||Q0===void 0?void 0:Q0.readable)!==!1)&&(!k._writableState||k._readableState))}function M(k){var u;return!!(k&&typeof k.write==="function"&&typeof k.on==="function"&&(!k._readableState||((u=k._writableState)===null||u===void 0?void 0:u.writable)!==!1))}function v(k){return!!(k&&typeof k.pipe==="function"&&k._readableState&&typeof k.on==="function"&&typeof k.write==="function")}function x(k){return k&&(k._readableState||k._writableState||typeof k.write==="function"&&typeof k.on==="function"||typeof k.pipe==="function"&&typeof k.on==="function")}function y(k){return!!(k&&!x(k)&&typeof k.pipeThrough==="function"&&typeof k.getReader==="function"&&typeof k.cancel==="function")}function D(k){return!!(k&&!x(k)&&typeof k.getWriter==="function"&&typeof k.abort==="function")}function z(k){return!!(k&&!x(k)&&typeof k.readable==="object"&&typeof k.writable==="object")}function Y(k){return y(k)||D(k)||z(k)}function H(k,u){if(k==null)return!1;if(u===!0)return typeof k[q]==="function";if(u===!1)return typeof k[K]==="function";return typeof k[q]==="function"||typeof k[K]==="function"}function R(k){if(!x(k))return null;let{_writableState:u,_readableState:Q0}=k,E=u||Q0;return!!(k.destroyed||k[Z]||E!==null&&E!==void 0&&E.destroyed)}function c(k){if(!M(k))return null;if(k.writableEnded===!0)return!0;let u=k._writableState;if(u!==null&&u!==void 0&&u.errored)return!1;if(typeof(u===null||u===void 0?void 0:u.ended)!=="boolean")return null;return u.ended}function m(k,u){if(!M(k))return null;if(k.writableFinished===!0)return!0;let Q0=k._writableState;if(Q0!==null&&Q0!==void 0&&Q0.errored)return!1;if(typeof(Q0===null||Q0===void 0?void 0:Q0.finished)!=="boolean")return null;return!!(Q0.finished||u===!1&&Q0.ended===!0&&Q0.length===0)}function $0(k){if(!F(k))return null;if(k.readableEnded===!0)return!0;let u=k._readableState;if(!u||u.errored)return!1;if(typeof(u===null||u===void 0?void 0:u.ended)!=="boolean")return null;return u.ended}function _(k,u){if(!F(k))return null;let Q0=k._readableState;if(Q0!==null&&Q0!==void 0&&Q0.errored)return!1;if(typeof(Q0===null||Q0===void 0?void 0:Q0.endEmitted)!=="boolean")return null;return!!(Q0.endEmitted||u===!1&&Q0.ended===!0&&Q0.length===0)}function g(k){if(k&&k[B]!=null)return k[B];if(typeof(k===null||k===void 0?void 0:k.readable)!=="boolean")return null;if(R(k))return!1;return F(k)&&k.readable&&!_(k)}function O(k){if(k&&k[W]!=null)return k[W];if(typeof(k===null||k===void 0?void 0:k.writable)!=="boolean")return null;if(R(k))return!1;return M(k)&&k.writable&&!c(k)}function h(k,u){if(!x(k))return null;if(R(k))return!0;if((u===null||u===void 0?void 0:u.readable)!==!1&&g(k))return!1;if((u===null||u===void 0?void 0:u.writable)!==!1&&O(k))return!1;return!0}function f(k){var u,Q0;if(!x(k))return null;if(k.writableErrored)return k.writableErrored;return(u=(Q0=k._writableState)===null||Q0===void 0?void 0:Q0.errored)!==null&&u!==void 0?u:null}function A(k){var u,Q0;if(!x(k))return null;if(k.readableErrored)return k.readableErrored;return(u=(Q0=k._readableState)===null||Q0===void 0?void 0:Q0.errored)!==null&&u!==void 0?u:null}function I(k){if(!x(k))return null;if(typeof k.closed==="boolean")return k.closed;let{_writableState:u,_readableState:Q0}=k;if(typeof(u===null||u===void 0?void 0:u.closed)==="boolean"||typeof(Q0===null||Q0===void 0?void 0:Q0.closed)==="boolean")return(u===null||u===void 0?void 0:u.closed)||(Q0===null||Q0===void 0?void 0:Q0.closed);if(typeof k._closed==="boolean"&&n(k))return k._closed;return null}function n(k){return typeof k._closed==="boolean"&&typeof k._defaultKeepAlive==="boolean"&&typeof k._removedConnection==="boolean"&&typeof k._removedContLen==="boolean"}function i(k){return typeof k._sent100==="boolean"&&n(k)}function K0(k){var u;return typeof k._consuming==="boolean"&&typeof k._dumped==="boolean"&&((u=k.req)===null||u===void 0?void 0:u.upgradeOrConnect)===void 0}function z0(k){if(!x(k))return null;let{_writableState:u,_readableState:Q0}=k,E=u||Q0;return!E&&i(k)||!!(E&&E.autoDestroy&&E.emitClose&&E.closed===!1)}function S(k){var u;return!!(k&&((u=k[U])!==null&&u!==void 0?u:k.readableDidRead||k.readableAborted))}function U0(k){var u,Q0,E,q0,B0,w0,M0,b,T,t;return!!(k&&((u=(Q0=(E=(q0=(B0=(w0=k[G])!==null&&w0!==void 0?w0:k.readableErrored)!==null&&B0!==void 0?B0:k.writableErrored)!==null&&q0!==void 0?q0:(M0=k._readableState)===null||M0===void 0?void 0:M0.errorEmitted)!==null&&E!==void 0?E:(b=k._writableState)===null||b===void 0?void 0:b.errorEmitted)!==null&&Q0!==void 0?Q0:(T=k._readableState)===null||T===void 0?void 0:T.errored)!==null&&u!==void 0?u:(t=k._writableState)===null||t===void 0?void 0:t.errored))}$.exports={isDestroyed:R,kIsDestroyed:Z,isDisturbed:S,kIsDisturbed:U,isErrored:U0,kIsErrored:G,isReadable:g,kIsReadable:B,kIsClosedPromise:V,kControllerErrorFunction:N,kIsWritable:W,isClosed:I,isDuplexNodeStream:v,isFinished:h,isIterable:H,isReadableNodeStream:F,isReadableStream:y,isReadableEnded:$0,isReadableFinished:_,isReadableErrored:A,isNodeStream:x,isWebStream:Y,isWritable:O,isWritableNodeStream:M,isWritableStream:D,isWritableEnded:c,isWritableFinished:m,isWritableErrored:f,isServerRequest:K0,isServerResponse:i,willEmitClose:z0,isTransformStream:z}}),R2=R0((Q,$)=>{var q=e2(),{AbortError:K,codes:J}=V1(),{ERR_INVALID_ARG_TYPE:Z,ERR_STREAM_PREMATURE_CLOSE:G}=J,{kEmptyObject:B,once:W}=W1(),{validateAbortSignal:U,validateFunction:V,validateObject:N,validateBoolean:F}=X8(),{Promise:M,PromisePrototypeThen:v,SymbolDispose:x}=b0(),{isClosed:y,isReadable:D,isReadableNodeStream:z,isReadableStream:Y,isReadableFinished:H,isReadableErrored:R,isWritable:c,isWritableNodeStream:m,isWritableStream:$0,isWritableFinished:_,isWritableErrored:g,isNodeStream:O,willEmitClose:h,kIsClosedPromise:f}=V2(),A;function I(S){return S.setHeader&&typeof S.abort==="function"}var n=()=>{};function i(S,U0,k){var u,Q0;if(arguments.length===2)k=U0,U0=B;else if(U0==null)U0=B;else N(U0,"options");if(V(k,"callback"),U(U0.signal,"options.signal"),k=W(k),Y(S)||$0(S))return K0(S,U0,k);if(!O(S))throw new Z("stream",["ReadableStream","WritableStream","Stream"],S);let E=(u=U0.readable)!==null&&u!==void 0?u:z(S),q0=(Q0=U0.writable)!==null&&Q0!==void 0?Q0:m(S),B0=S._writableState,w0=S._readableState,M0=()=>{if(!S.writable)t()},b=h(S)&&z(S)===E&&m(S)===q0,T=_(S,!1),t=()=>{if(T=!0,S.destroyed)b=!1;if(b&&(!S.readable||E))return;if(!E||Z0)k.call(S)},Z0=H(S,!1),W0=()=>{if(Z0=!0,S.destroyed)b=!1;if(b&&(!S.writable||q0))return;if(!q0||T)k.call(S)},C=(j)=>{k.call(S,j)},X=y(S),P=()=>{X=!0;let j=g(S)||R(S);if(j&&typeof j!=="boolean")return k.call(S,j);if(E&&!Z0&&z(S,!0)){if(!H(S,!1))return k.call(S,new G)}if(q0&&!T){if(!_(S,!1))return k.call(S,new G)}k.call(S)},o=()=>{X=!0;let j=g(S)||R(S);if(j&&typeof j!=="boolean")return k.call(S,j);k.call(S)},r=()=>{S.req.on("finish",t)};if(I(S)){if(S.on("complete",t),!b)S.on("abort",P);if(S.req)r();else S.on("request",r)}else if(q0&&!B0)S.on("end",M0),S.on("close",M0);if(!b&&typeof S.aborted==="boolean")S.on("aborted",P);if(S.on("end",W0),S.on("finish",t),U0.error!==!1)S.on("error",C);if(S.on("close",P),X)q.nextTick(P);else if(B0!==null&&B0!==void 0&&B0.errorEmitted||w0!==null&&w0!==void 0&&w0.errorEmitted){if(!b)q.nextTick(o)}else if(!E&&(!b||D(S))&&(T||c(S)===!1))q.nextTick(o);else if(!q0&&(!b||c(S))&&(Z0||D(S)===!1))q.nextTick(o);else if(w0&&S.req&&S.aborted)q.nextTick(o);let l=()=>{if(k=n,S.removeListener("aborted",P),S.removeListener("complete",t),S.removeListener("abort",P),S.removeListener("request",r),S.req)S.req.removeListener("finish",t);S.removeListener("end",M0),S.removeListener("close",M0),S.removeListener("finish",t),S.removeListener("end",W0),S.removeListener("error",C),S.removeListener("close",P)};if(U0.signal&&!X){let j=()=>{let d=k;l(),d.call(S,new K(void 0,{cause:U0.signal.reason}))};if(U0.signal.aborted)q.nextTick(j);else{A=A||W1().addAbortListener;let d=A(U0.signal,j),e=k;k=W((...p)=>{d[x](),e.apply(S,p)})}}return l}function K0(S,U0,k){let u=!1,Q0=n;if(U0.signal)if(Q0=()=>{u=!0,k.call(S,new K(void 0,{cause:U0.signal.reason}))},U0.signal.aborted)q.nextTick(Q0);else{A=A||W1().addAbortListener;let q0=A(U0.signal,Q0),B0=k;k=W((...w0)=>{q0[x](),B0.apply(S,w0)})}let E=(...q0)=>{if(!u)q.nextTick(()=>k.apply(S,q0))};return v(S[f].promise,E,E),n}function z0(S,U0){var k;let u=!1;if(U0===null)U0=B;if((k=U0)!==null&&k!==void 0&&k.cleanup)F(U0.cleanup,"cleanup"),u=U0.cleanup;return new M((Q0,E)=>{let q0=i(S,U0,(B0)=>{if(u)q0();if(B0)E(B0);else Q0()})})}$.exports=i,$.exports.finished=z0}),O6=R0((Q,$)=>{var q=e2(),{aggregateTwoErrors:K,codes:{ERR_MULTIPLE_CALLBACK:J},AbortError:Z}=V1(),{Symbol:G}=b0(),{kIsDestroyed:B,isDestroyed:W,isFinished:U,isServerRequest:V}=V2(),N=G("kDestroy"),F=G("kConstruct");function M(h,f,A){if(h){if(h.stack,f&&!f.errored)f.errored=h;if(A&&!A.errored)A.errored=h}}function v(h,f){let A=this._readableState,I=this._writableState,n=I||A;if(I!==null&&I!==void 0&&I.destroyed||A!==null&&A!==void 0&&A.destroyed){if(typeof f==="function")f();return this}if(M(h,I,A),I)I.destroyed=!0;if(A)A.destroyed=!0;if(!n.constructed)this.once(N,function(i){x(this,K(i,h),f)});else x(this,h,f);return this}function x(h,f,A){let I=!1;function n(i){if(I)return;I=!0;let{_readableState:K0,_writableState:z0}=h;if(M(i,z0,K0),z0)z0.closed=!0;if(K0)K0.closed=!0;if(typeof A==="function")A(i);if(i)q.nextTick(y,h,i);else q.nextTick(D,h)}try{h._destroy(f||null,n)}catch(i){n(i)}}function y(h,f){z(h,f),D(h)}function D(h){let{_readableState:f,_writableState:A}=h;if(A)A.closeEmitted=!0;if(f)f.closeEmitted=!0;if(A!==null&&A!==void 0&&A.emitClose||f!==null&&f!==void 0&&f.emitClose)h.emit("close")}function z(h,f){let{_readableState:A,_writableState:I}=h;if(I!==null&&I!==void 0&&I.errorEmitted||A!==null&&A!==void 0&&A.errorEmitted)return;if(I)I.errorEmitted=!0;if(A)A.errorEmitted=!0;h.emit("error",f)}function Y(){let h=this._readableState,f=this._writableState;if(h)h.constructed=!0,h.closed=!1,h.closeEmitted=!1,h.destroyed=!1,h.errored=null,h.errorEmitted=!1,h.reading=!1,h.ended=h.readable===!1,h.endEmitted=h.readable===!1;if(f)f.constructed=!0,f.destroyed=!1,f.closed=!1,f.closeEmitted=!1,f.errored=null,f.errorEmitted=!1,f.finalCalled=!1,f.prefinished=!1,f.ended=f.writable===!1,f.ending=f.writable===!1,f.finished=f.writable===!1}function H(h,f,A){let{_readableState:I,_writableState:n}=h;if(n!==null&&n!==void 0&&n.destroyed||I!==null&&I!==void 0&&I.destroyed)return this;if(I!==null&&I!==void 0&&I.autoDestroy||n!==null&&n!==void 0&&n.autoDestroy)h.destroy(f);else if(f){if(f.stack,n&&!n.errored)n.errored=f;if(I&&!I.errored)I.errored=f;if(A)q.nextTick(z,h,f);else z(h,f)}}function R(h,f){if(typeof h._construct!=="function")return;let{_readableState:A,_writableState:I}=h;if(A)A.constructed=!1;if(I)I.constructed=!1;if(h.once(F,f),h.listenerCount(F)>1)return;q.nextTick(c,h)}function c(h){let f=!1;function A(I){if(f){H(h,I!==null&&I!==void 0?I:new J);return}f=!0;let{_readableState:n,_writableState:i}=h,K0=i||n;if(n)n.constructed=!0;if(i)i.constructed=!0;if(K0.destroyed)h.emit(N,I);else if(I)H(h,I,!0);else q.nextTick(m,h)}try{h._construct((I)=>{q.nextTick(A,I)})}catch(I){q.nextTick(A,I)}}function m(h){h.emit(F)}function $0(h){return(h===null||h===void 0?void 0:h.setHeader)&&typeof h.abort==="function"}function _(h){h.emit("close")}function g(h,f){h.emit("error",f),q.nextTick(_,h)}function O(h,f){if(!h||W(h))return;if(!f&&!U(h))f=new Z;if(V(h))h.socket=null,h.destroy(f);else if($0(h))h.abort();else if($0(h.req))h.req.abort();else if(typeof h.destroy==="function")h.destroy(f);else if(typeof h.close==="function")h.close();else if(f)q.nextTick(g,h,f);else q.nextTick(_,h);if(!h.destroyed)h[B]=!0}$.exports={construct:R,destroyer:O,destroy:v,undestroy:Y,errorOrDestroy:H}}),t7=R0((Q,$)=>{var{ArrayIsArray:q,ObjectSetPrototypeOf:K}=b0(),{EventEmitter:J}=(a1(),y0(o1));function Z(B){J.call(this,B)}K(Z.prototype,J.prototype),K(Z,J),Z.prototype.pipe=function(B,W){let U=this;function V(D){if(B.writable&&B.write(D)===!1&&U.pause)U.pause()}U.on("data",V);function N(){if(U.readable&&U.resume)U.resume()}if(B.on("drain",N),!B._isStdio&&(!W||W.end!==!1))U.on("end",M),U.on("close",v);let F=!1;function M(){if(F)return;F=!0,B.end()}function v(){if(F)return;if(F=!0,typeof B.destroy==="function")B.destroy()}function x(D){if(y(),J.listenerCount(this,"error")===0)this.emit("error",D)}G(U,"error",x),G(B,"error",x);function y(){U.removeListener("data",V),B.removeListener("drain",N),U.removeListener("end",M),U.removeListener("close",v),U.removeListener("error",x),B.removeListener("error",x),U.removeListener("end",y),U.removeListener("close",y),B.removeListener("close",y)}return U.on("end",y),U.on("close",y),B.on("close",y),B.emit("pipe",U),B};function G(B,W,U){if(typeof B.prependListener==="function")return B.prependListener(W,U);if(!B._events||!B._events[W])B.on(W,U);else if(q(B._events[W]))B._events[W].unshift(U);else B._events[W]=[U,B._events[W]]}$.exports={Stream:Z,prependListener:G}}),u5=R0((Q,$)=>{var{SymbolDispose:q}=b0(),{AbortError:K,codes:J}=V1(),{isNodeStream:Z,isWebStream:G,kControllerErrorFunction:B}=V2(),W=R2(),{ERR_INVALID_ARG_TYPE:U}=J,V,N=(F,M)=>{if(typeof F!=="object"||!("aborted"in F))throw new U(M,"AbortSignal",F)};Q.addAbortSignal=function F(M,v){if(N(M,"signal"),!Z(v)&&!G(v))throw new U("stream",["ReadableStream","WritableStream","Stream"],v);return Q.addAbortSignalNoValidate(M,v)},Q.addAbortSignalNoValidate=function(F,M){if(typeof F!=="object"||!("aborted"in F))return M;let v=Z(M)?()=>{M.destroy(new K(void 0,{cause:F.reason}))}:()=>{M[B](new K(void 0,{cause:F.reason}))};if(F.aborted)v();else{V=V||W1().addAbortListener;let x=V(F,v);W(M,x[q])}return M}}),GW=R0((Q,$)=>{var{StringPrototypeSlice:q,SymbolIterator:K,TypedArrayPrototypeSet:J,Uint8Array:Z}=b0(),{Buffer:G}=(a0(),y0(s0)),{inspect:B}=W1();$.exports=class W{constructor(){this.head=null,this.tail=null,this.length=0}push(U){let V={data:U,next:null};if(this.length>0)this.tail.next=V;else this.head=V;this.tail=V,++this.length}unshift(U){let V={data:U,next:this.head};if(this.length===0)this.tail=V;this.head=V,++this.length}shift(){if(this.length===0)return;let U=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,U}clear(){this.head=this.tail=null,this.length=0}join(U){if(this.length===0)return"";let V=this.head,N=""+V.data;while((V=V.next)!==null)N+=U+V.data;return N}concat(U){if(this.length===0)return G.alloc(0);let V=G.allocUnsafe(U>>>0),N=this.head,F=0;while(N)J(V,N.data,F),F+=N.data.length,N=N.next;return V}consume(U,V){let N=this.head.data;if(UM.length)V+=M,U-=M.length;else{if(U===M.length)if(V+=M,++F,N.next)this.head=N.next;else this.head=this.tail=null;else V+=q(M,0,U),this.head=N,N.data=q(M,U);break}++F}while((N=N.next)!==null);return this.length-=F,V}_getBuffer(U){let V=G.allocUnsafe(U),N=U,F=this.head,M=0;do{let v=F.data;if(U>v.length)J(V,v,N-U),U-=v.length;else{if(U===v.length)if(J(V,v,N-U),++M,F.next)this.head=F.next;else this.head=this.tail=null;else J(V,new Z(v.buffer,v.byteOffset,U),N-U),this.head=F,F.data=v.slice(U);break}++M}while((F=F.next)!==null);return this.length-=M,V}[Symbol.for("nodejs.util.inspect.custom")](U,V){return B(this,{...V,depth:0,customInspect:!1})}}}),_5=R0((Q,$)=>{var{MathFloor:q,NumberIsInteger:K}=b0(),{validateInteger:J}=X8(),{ERR_INVALID_ARG_VALUE:Z}=V1().codes,G=16384,B=16;function W(F,M,v){return F.highWaterMark!=null?F.highWaterMark:M?F[v]:null}function U(F){return F?B:G}function V(F,M){if(J(M,"value",0),F)B=M;else G=M}function N(F,M,v,x){let y=W(M,x,v);if(y!=null){if(!K(y)||y<0){let D=x?`options.${v}`:"options.highWaterMark";throw new Z(D,y)}return q(y)}return U(F.objectMode)}$.exports={getHighWaterMark:N,getDefaultHighWaterMark:U,setDefaultHighWaterMark:V}}),BW=R0((Q,$)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh */var q=(a0(),y0(s0)),K=q.Buffer;function J(G,B){for(var W in G)B[W]=G[W]}if(K.from&&K.alloc&&K.allocUnsafe&&K.allocUnsafeSlow)$.exports=q;else J(q,Q),Q.Buffer=Z;function Z(G,B,W){return K(G,B,W)}Z.prototype=Object.create(K.prototype),J(K,Z),Z.from=function(G,B,W){if(typeof G==="number")throw new TypeError("Argument must not be a number");return K(G,B,W)},Z.alloc=function(G,B,W){if(typeof G!=="number")throw new TypeError("Argument must be a number");var U=K(G);if(B!==void 0)if(typeof W==="string")U.fill(B,W);else U.fill(B);else U.fill(0);return U},Z.allocUnsafe=function(G){if(typeof G!=="number")throw new TypeError("Argument must be a number");return K(G)},Z.allocUnsafeSlow=function(G){if(typeof G!=="number")throw new TypeError("Argument must be a number");return q.SlowBuffer(G)}}),WW=R0((Q)=>{var $=BW().Buffer,q=$.isEncoding||function(z){switch(z=""+z,z&&z.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function K(z){if(!z)return"utf8";var Y;while(!0)switch(z){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return z;default:if(Y)return;z=(""+z).toLowerCase(),Y=!0}}function J(z){var Y=K(z);if(typeof Y!=="string"&&($.isEncoding===q||!q(z)))throw new Error("Unknown encoding: "+z);return Y||z}Q.StringDecoder=Z;function Z(z){this.encoding=J(z);var Y;switch(this.encoding){case"utf16le":this.text=F,this.end=M,Y=4;break;case"utf8":this.fillLast=U,Y=4;break;case"base64":this.text=v,this.end=x,Y=3;break;default:this.write=y,this.end=D;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=$.allocUnsafe(Y)}Z.prototype.write=function(z){if(z.length===0)return"";var Y,H;if(this.lastNeed){if(Y=this.fillLast(z),Y===void 0)return"";H=this.lastNeed,this.lastNeed=0}else H=0;if(H>5===6)return 2;else if(z>>4===14)return 3;else if(z>>3===30)return 4;return z>>6===2?-1:-2}function B(z,Y,H){var R=Y.length-1;if(R=0){if(c>0)z.lastNeed=c-1;return c}if(--R=0){if(c>0)z.lastNeed=c-2;return c}if(--R=0){if(c>0)if(c===2)c=0;else z.lastNeed=c-3;return c}return 0}function W(z,Y,H){if((Y[0]&192)!==128)return z.lastNeed=0,"�";if(z.lastNeed>1&&Y.length>1){if((Y[1]&192)!==128)return z.lastNeed=1,"�";if(z.lastNeed>2&&Y.length>2){if((Y[2]&192)!==128)return z.lastNeed=2,"�"}}}function U(z){var Y=this.lastTotal-this.lastNeed,H=W(this,z,Y);if(H!==void 0)return H;if(this.lastNeed<=z.length)return z.copy(this.lastChar,Y,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);z.copy(this.lastChar,Y,0,z.length),this.lastNeed-=z.length}function V(z,Y){var H=B(this,z,Y);if(!this.lastNeed)return z.toString("utf8",Y);this.lastTotal=H;var R=z.length-(H-this.lastNeed);return z.copy(this.lastChar,0,R),z.toString("utf8",Y,R)}function N(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed)return Y+"�";return Y}function F(z,Y){if((z.length-Y)%2===0){var H=z.toString("utf16le",Y);if(H){var R=H.charCodeAt(H.length-1);if(R>=55296&&R<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1],H.slice(0,-1)}return H}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=z[z.length-1],z.toString("utf16le",Y,z.length-1)}function M(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed){var H=this.lastTotal-this.lastNeed;return Y+this.lastChar.toString("utf16le",0,H)}return Y}function v(z,Y){var H=(z.length-Y)%3;if(H===0)return z.toString("base64",Y);if(this.lastNeed=3-H,this.lastTotal=3,H===1)this.lastChar[0]=z[z.length-1];else this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1];return z.toString("base64",Y,z.length-H)}function x(z){var Y=z&&z.length?this.write(z):"";if(this.lastNeed)return Y+this.lastChar.toString("base64",0,3-this.lastNeed);return Y}function y(z){return z.toString(this.encoding)}function D(z){return z&&z.length?this.write(z):""}}),GJ=R0((Q,$)=>{var q=e2(),{PromisePrototypeThen:K,SymbolAsyncIterator:J,SymbolIterator:Z}=b0(),{Buffer:G}=(a0(),y0(s0)),{ERR_INVALID_ARG_TYPE:B,ERR_STREAM_NULL_VALUES:W}=V1().codes;function U(V,N,F){let M;if(typeof N==="string"||N instanceof G)return new V({objectMode:!0,...F,read(){this.push(N),this.push(null)}});let v;if(N&&N[J])v=!0,M=N[J]();else if(N&&N[Z])v=!1,M=N[Z]();else throw new B("iterable",["Iterable"],N);let x=new V({objectMode:!0,highWaterMark:1,...F}),y=!1;x._read=function(){if(!y)y=!0,z()},x._destroy=function(Y,H){K(D(Y),()=>q.nextTick(H,Y),(R)=>q.nextTick(H,R||Y))};async function D(Y){let H=Y!==void 0&&Y!==null,R=typeof M.throw==="function";if(H&&R){let{value:c,done:m}=await M.throw(Y);if(await c,m)return}if(typeof M.return==="function"){let{value:c}=await M.return();await c}}async function z(){for(;;){try{let{value:Y,done:H}=v?await M.next():M.next();if(H)x.push(null);else{let R=Y&&typeof Y.then==="function"?await Y:Y;if(R===null)throw y=!1,new W;else if(x.push(R))continue;else y=!1}}catch(Y){x.destroy(Y)}break}}return x}$.exports=U}),c5=R0((Q,$)=>{var q=e2(),{ArrayPrototypeIndexOf:K,NumberIsInteger:J,NumberIsNaN:Z,NumberParseInt:G,ObjectDefineProperties:B,ObjectKeys:W,ObjectSetPrototypeOf:U,Promise:V,SafeSet:N,SymbolAsyncDispose:F,SymbolAsyncIterator:M,Symbol:v}=b0();$.exports=p,p.ReadableState=e;var{EventEmitter:x}=(a1(),y0(o1)),{Stream:y,prependListener:D}=t7(),{Buffer:z}=(a0(),y0(s0)),{addAbortSignal:Y}=u5(),H=R2(),R=W1().debuglog("stream",(w)=>{R=w}),c=GW(),m=O6(),{getHighWaterMark:$0,getDefaultHighWaterMark:_}=_5(),{aggregateTwoErrors:g,codes:{ERR_INVALID_ARG_TYPE:O,ERR_METHOD_NOT_IMPLEMENTED:h,ERR_OUT_OF_RANGE:f,ERR_STREAM_PUSH_AFTER_EOF:A,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:I},AbortError:n}=V1(),{validateObject:i}=X8(),K0=v("kPaused"),{StringDecoder:z0}=WW(),S=GJ();U(p.prototype,y.prototype),U(p,y);var U0=()=>{},{errorOrDestroy:k}=m,u=1,Q0=2,E=4,q0=8,B0=16,w0=32,M0=64,b=128,T=256,t=512,Z0=1024,W0=2048,C=4096,X=8192,P=16384,o=32768,r=65536,l=131072,j=262144;function d(w){return{enumerable:!1,get(){return(this.state&w)!==0},set(L){if(L)this.state|=w;else this.state&=~w}}}B(e.prototype,{objectMode:d(u),ended:d(Q0),endEmitted:d(E),reading:d(q0),constructed:d(B0),sync:d(w0),needReadable:d(M0),emittedReadable:d(b),readableListening:d(T),resumeScheduled:d(t),errorEmitted:d(Z0),emitClose:d(W0),autoDestroy:d(C),destroyed:d(X),closed:d(P),closeEmitted:d(o),multiAwaitDrain:d(r),readingMore:d(l),dataEmitted:d(j)});function e(w,L,a){if(typeof a!=="boolean")a=L instanceof U2();if(this.state=W0|C|B0|w0,w&&w.objectMode)this.state|=u;if(a&&w&&w.readableObjectMode)this.state|=u;if(this.highWaterMark=w?$0(this,w,"readableHighWaterMark",a):_(!1),this.buffer=new c,this.length=0,this.pipes=[],this.flowing=null,this[K0]=null,w&&w.emitClose===!1)this.state&=~W0;if(w&&w.autoDestroy===!1)this.state&=~C;if(this.errored=null,this.defaultEncoding=w&&w.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,w&&w.encoding)this.decoder=new z0(w.encoding),this.encoding=w.encoding}function p(w){if(!(this instanceof p))return new p(w);let L=this instanceof U2();if(this._readableState=new e(w,this,L),w){if(typeof w.read==="function")this._read=w.read;if(typeof w.destroy==="function")this._destroy=w.destroy;if(typeof w.construct==="function")this._construct=w.construct;if(w.signal&&!L)Y(w.signal,this)}y.call(this,w),m.construct(this,()=>{if(this._readableState.needReadable)M1(this,this._readableState)})}p.prototype.destroy=m.destroy,p.prototype._undestroy=m.undestroy,p.prototype._destroy=function(w,L){L(w)},p.prototype[x.captureRejectionSymbol]=function(w){this.destroy(w)},p.prototype[F]=function(){let w;if(!this.destroyed)w=this.readableEnded?null:new n,this.destroy(w);return new V((L,a)=>H(this,(s)=>s&&s!==w?a(s):L(null)))},p.prototype.push=function(w,L){return G0(this,w,L,!1)},p.prototype.unshift=function(w,L){return G0(this,w,L,!0)};function G0(w,L,a,s){R("readableAddChunk",L);let V0=w._readableState,g0;if((V0.state&u)===0){if(typeof L==="string"){if(a=a||V0.defaultEncoding,V0.encoding!==a)if(s&&V0.encoding)L=z.from(L,a).toString(V0.encoding);else L=z.from(L,a),a=""}else if(L instanceof z)a="";else if(y._isUint8Array(L))L=y._uint8ArrayToBuffer(L),a="";else if(L!=null)g0=new O("chunk",["string","Buffer","Uint8Array"],L)}if(g0)k(w,g0);else if(L===null)V0.state&=~q0,A0(w,V0);else if((V0.state&u)!==0||L&&L.length>0)if(s)if((V0.state&E)!==0)k(w,new I);else if(V0.destroyed||V0.errored)return!1;else P0(w,V0,L,!0);else if(V0.ended)k(w,new A);else if(V0.destroyed||V0.errored)return!1;else if(V0.state&=~q0,V0.decoder&&!a)if(L=V0.decoder.write(L),V0.objectMode||L.length!==0)P0(w,V0,L,!1);else M1(w,V0);else P0(w,V0,L,!1);else if(!s)V0.state&=~q0,M1(w,V0);return!V0.ended&&(V0.length0){if((L.state&r)!==0)L.awaitDrainWriters.clear();else L.awaitDrainWriters=null;L.dataEmitted=!0,w.emit("data",a)}else{if(L.length+=L.objectMode?1:a.length,s)L.buffer.unshift(a);else L.buffer.push(a);if((L.state&M0)!==0)O0(w)}M1(w,L)}p.prototype.isPaused=function(){let w=this._readableState;return w[K0]===!0||w.flowing===!1},p.prototype.setEncoding=function(w){let L=new z0(w);this._readableState.decoder=L,this._readableState.encoding=this._readableState.decoder.encoding;let a=this._readableState.buffer,s="";for(let V0 of a)s+=L.write(V0);if(a.clear(),s!=="")a.push(s);return this._readableState.length=s.length,this};var k0=1073741824;function I0(w){if(w>k0)throw new f("size","<= 1GiB",w);else w--,w|=w>>>1,w|=w>>>2,w|=w>>>4,w|=w>>>8,w|=w>>>16,w++;return w}function Q1(w,L){if(w<=0||L.length===0&&L.ended)return 0;if((L.state&u)!==0)return 1;if(Z(w)){if(L.flowing&&L.length)return L.buffer.first().length;return L.length}if(w<=L.length)return w;return L.ended?L.length:0}p.prototype.read=function(w){if(R("read",w),w===void 0)w=NaN;else if(!J(w))w=G(w,10);let L=this._readableState,a=w;if(w>L.highWaterMark)L.highWaterMark=I0(w);if(w!==0)L.state&=~b;if(w===0&&L.needReadable&&((L.highWaterMark!==0?L.length>=L.highWaterMark:L.length>0)||L.ended)){if(R("read: emitReadable",L.length,L.ended),L.length===0&&L.ended)f2(this);else O0(this);return null}if(w=Q1(w,L),w===0&&L.ended){if(L.length===0)f2(this);return null}let s=(L.state&M0)!==0;if(R("need readable",s),L.length===0||L.length-w0)V0=p6(w,L);else V0=null;if(V0===null)L.needReadable=L.length<=L.highWaterMark,w=0;else if(L.length-=w,L.multiAwaitDrain)L.awaitDrainWriters.clear();else L.awaitDrainWriters=null;if(L.length===0){if(!L.ended)L.needReadable=!0;if(a!==w&&L.ended)f2(this)}if(V0!==null&&!L.errorEmitted&&!L.closeEmitted)L.dataEmitted=!0,this.emit("data",V0);return V0};function A0(w,L){if(R("onEofChunk"),L.ended)return;if(L.decoder){let a=L.decoder.end();if(a&&a.length)L.buffer.push(a),L.length+=L.objectMode?1:a.length}if(L.ended=!0,L.sync)O0(w);else L.needReadable=!1,L.emittedReadable=!0,F1(w)}function O0(w){let L=w._readableState;if(R("emitReadable",L.needReadable,L.emittedReadable),L.needReadable=!1,!L.emittedReadable)R("emitReadable",L.flowing),L.emittedReadable=!0,q.nextTick(F1,w)}function F1(w){let L=w._readableState;if(R("emitReadable_",L.destroyed,L.length,L.ended),!L.destroyed&&!L.errored&&(L.length||L.ended))w.emit("readable"),L.emittedReadable=!1;L.needReadable=!L.flowing&&!L.ended&&L.length<=L.highWaterMark,m6(w)}function M1(w,L){if(!L.readingMore&&L.constructed)L.readingMore=!0,q.nextTick(d0,w,L)}function d0(w,L){while(!L.reading&&!L.ended&&(L.length1&&s.pipes.includes(w))R("false write response, pause",s.awaitDrainWriters.size),s.awaitDrainWriters.add(w);a.pause()}if(!q1)q1=o5(a,w),w.on("drain",q1)}a.on("data",a6);function a6($1){R("ondata");let i0=w.write($1);if(R("dest.write",i0),i0===!1)o6()}function g2($1){if(R("onerror",$1),A1(),w.removeListener("error",g2),w.listenerCount("error")===0){let i0=w._writableState||w._readableState;if(i0&&!i0.errorEmitted)k(w,$1);else w.emit("error",$1)}}D(w,"error",g2);function X2(){w.removeListener("finish",y2),A1()}w.once("close",X2);function y2(){R("onfinish"),w.removeListener("close",X2),A1()}w.once("finish",y2);function A1(){R("unpipe"),a.unpipe(w)}if(w.emit("pipe",a),w.writableNeedDrain===!0)o6();else if(!s.flowing)R("pipe resume"),a.resume();return w};function o5(w,L){return function a(){let s=w._readableState;if(s.awaitDrainWriters===L)R("pipeOnDrain",1),s.awaitDrainWriters=null;else if(s.multiAwaitDrain)R("pipeOnDrain",s.awaitDrainWriters.size),s.awaitDrainWriters.delete(L);if((!s.awaitDrainWriters||s.awaitDrainWriters.size===0)&&w.listenerCount("data"))w.resume()}}p.prototype.unpipe=function(w){let L=this._readableState,a={hasUnpiped:!1};if(L.pipes.length===0)return this;if(!w){let V0=L.pipes;L.pipes=[],this.pause();for(let g0=0;g00,s.flowing!==!1)this.resume()}else if(w==="readable"){if(!s.endEmitted&&!s.readableListening){if(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,R("on readable",s.length,s.reading),s.length)O0(this);else if(!s.reading)q.nextTick(a5,this)}}return a},p.prototype.addListener=p.prototype.on,p.prototype.removeListener=function(w,L){let a=y.prototype.removeListener.call(this,w,L);if(w==="readable")q.nextTick(d6,this);return a},p.prototype.off=p.prototype.removeListener,p.prototype.removeAllListeners=function(w){let L=y.prototype.removeAllListeners.apply(this,arguments);if(w==="readable"||w===void 0)q.nextTick(d6,this);return L};function d6(w){let L=w._readableState;if(L.readableListening=w.listenerCount("readable")>0,L.resumeScheduled&&L[K0]===!1)L.flowing=!0;else if(w.listenerCount("data")>0)w.resume();else if(!L.readableListening)L.flowing=null}function a5(w){R("readable nexttick read 0"),w.read(0)}p.prototype.resume=function(){let w=this._readableState;if(!w.flowing)R("resume"),w.flowing=!w.readableListening,r5(this,w);return w[K0]=!1,this};function r5(w,L){if(!L.resumeScheduled)L.resumeScheduled=!0,q.nextTick(s5,w,L)}function s5(w,L){if(R("resume",L.reading),!L.reading)w.read(0);if(L.resumeScheduled=!1,w.emit("resume"),m6(w),L.flowing&&!L.reading)w.read(0)}p.prototype.pause=function(){if(R("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)R("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState[K0]=!0,this};function m6(w){let L=w._readableState;R("flow",L.flowing);while(L.flowing&&w.read()!==null);}p.prototype.wrap=function(w){let L=!1;w.on("data",(s)=>{if(!this.push(s)&&w.pause)L=!0,w.pause()}),w.on("end",()=>{this.push(null)}),w.on("error",(s)=>{k(this,s)}),w.on("close",()=>{this.destroy()}),w.on("destroy",()=>{this.destroy()}),this._read=()=>{if(L&&w.resume)L=!1,w.resume()};let a=W(w);for(let s=1;s{V0=E0?g(V0,E0):null,a(),a=U0});try{while(!0){let E0=w.destroyed?null:w.read();if(E0!==null)yield E0;else if(V0)throw V0;else if(V0===null)return;else await new V(s)}}catch(E0){throw V0=g(V0,E0),V0}finally{if((V0||(L===null||L===void 0?void 0:L.destroyOnReturn)!==!1)&&(V0===void 0||w._readableState.autoDestroy))m.destroyer(w,null);else w.off("readable",s),g0()}}B(p.prototype,{readable:{__proto__:null,get(){let w=this._readableState;return!!w&&w.readable!==!1&&!w.destroyed&&!w.errorEmitted&&!w.endEmitted},set(w){if(this._readableState)this._readableState.readable=!!w}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(w){if(this._readableState)this._readableState.flowing=w}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(w){if(!this._readableState)return;this._readableState.destroyed=w}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),B(e.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[K0]!==!1},set(w){this[K0]=!!w}}}),p._fromList=p6;function p6(w,L){if(L.length===0)return null;let a;if(L.objectMode)a=L.buffer.shift();else if(!w||w>=L.length){if(L.decoder)a=L.buffer.join("");else if(L.buffer.length===1)a=L.buffer.first();else a=L.buffer.concat(L.length);L.buffer.clear()}else a=L.buffer.consume(w,L.decoder);return a}function f2(w){let L=w._readableState;if(R("endReadable",L.endEmitted),!L.endEmitted)L.ended=!0,q.nextTick(e5,L,w)}function e5(w,L){if(R("endReadableNT",w.endEmitted,w.length),!w.errored&&!w.closeEmitted&&!w.endEmitted&&w.length===0){if(w.endEmitted=!0,L.emit("end"),L.writable&&L.allowHalfOpen===!1)q.nextTick(Q4,L);else if(w.autoDestroy){let a=L._writableState;if(!a||a.autoDestroy&&(a.finished||a.writable===!1))L.destroy()}}}function Q4(w){if(w.writable&&!w.writableEnded&&!w.destroyed)w.end()}p.from=function(w,L){return S(p,w,L)};var A2;function i6(){if(A2===void 0)A2={};return A2}p.fromWeb=function(w,L){return i6().newStreamReadableFromReadableStream(w,L)},p.toWeb=function(w,L){return i6().newReadableStreamFromStreamReadable(w,L)},p.wrap=function(w,L){var a,s;return new p({objectMode:(a=(s=w.readableObjectMode)!==null&&s!==void 0?s:w.objectMode)!==null&&a!==void 0?a:!0,...L,destroy(V0,g0){m.destroyer(w,V0),g0(V0)}}).wrap(w)}}),e7=R0((Q,$)=>{var q=e2(),{ArrayPrototypeSlice:K,Error:J,FunctionPrototypeSymbolHasInstance:Z,ObjectDefineProperty:G,ObjectDefineProperties:B,ObjectSetPrototypeOf:W,StringPrototypeToLowerCase:U,Symbol:V,SymbolHasInstance:N}=b0();$.exports=i,i.WritableState=I;var{EventEmitter:F}=(a1(),y0(o1)),M=t7().Stream,{Buffer:v}=(a0(),y0(s0)),x=O6(),{addAbortSignal:y}=u5(),{getHighWaterMark:D,getDefaultHighWaterMark:z}=_5(),{ERR_INVALID_ARG_TYPE:Y,ERR_METHOD_NOT_IMPLEMENTED:H,ERR_MULTIPLE_CALLBACK:R,ERR_STREAM_CANNOT_PIPE:c,ERR_STREAM_DESTROYED:m,ERR_STREAM_ALREADY_FINISHED:$0,ERR_STREAM_NULL_VALUES:_,ERR_STREAM_WRITE_AFTER_END:g,ERR_UNKNOWN_ENCODING:O}=V1().codes,{errorOrDestroy:h}=x;W(i.prototype,M.prototype),W(i,M);function f(){}var A=V("kOnFinished");function I(C,X,P){if(typeof P!=="boolean")P=X instanceof U2();if(this.objectMode=!!(C&&C.objectMode),P)this.objectMode=this.objectMode||!!(C&&C.writableObjectMode);this.highWaterMark=C?D(this,C,"writableHighWaterMark",P):z(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let o=!!(C&&C.decodeStrings===!1);this.decodeStrings=!o,this.defaultEncoding=C&&C.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=k.bind(void 0,X),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,n(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!C||C.emitClose!==!1,this.autoDestroy=!C||C.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[A]=[]}function n(C){C.buffered=[],C.bufferedIndex=0,C.allBuffers=!0,C.allNoop=!0}I.prototype.getBuffer=function C(){return K(this.buffered,this.bufferedIndex)},G(I.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function i(C){let X=this instanceof U2();if(!X&&!Z(i,this))return new i(C);if(this._writableState=new I(C,this,X),C){if(typeof C.write==="function")this._write=C.write;if(typeof C.writev==="function")this._writev=C.writev;if(typeof C.destroy==="function")this._destroy=C.destroy;if(typeof C.final==="function")this._final=C.final;if(typeof C.construct==="function")this._construct=C.construct;if(C.signal)y(C.signal,this)}M.call(this,C),x.construct(this,()=>{let P=this._writableState;if(!P.writing)q0(this,P);b(this,P)})}G(i,N,{__proto__:null,value:function(C){if(Z(this,C))return!0;if(this!==i)return!1;return C&&C._writableState instanceof I}}),i.prototype.pipe=function(){h(this,new c)};function K0(C,X,P,o){let r=C._writableState;if(typeof P==="function")o=P,P=r.defaultEncoding;else{if(!P)P=r.defaultEncoding;else if(P!=="buffer"&&!v.isEncoding(P))throw new O(P);if(typeof o!=="function")o=f}if(X===null)throw new _;else if(!r.objectMode)if(typeof X==="string"){if(r.decodeStrings!==!1)X=v.from(X,P),P="buffer"}else if(X instanceof v)P="buffer";else if(M._isUint8Array(X))X=M._uint8ArrayToBuffer(X),P="buffer";else throw new Y("chunk",["string","Buffer","Uint8Array"],X);let l;if(r.ending)l=new g;else if(r.destroyed)l=new m("write");if(l)return q.nextTick(o,l),h(C,l,!0),l;return r.pendingcb++,z0(C,r,X,P,o)}i.prototype.write=function(C,X,P){return K0(this,C,X,P)===!0},i.prototype.cork=function(){this._writableState.corked++},i.prototype.uncork=function(){let C=this._writableState;if(C.corked){if(C.corked--,!C.writing)q0(this,C)}},i.prototype.setDefaultEncoding=function C(X){if(typeof X==="string")X=U(X);if(!v.isEncoding(X))throw new O(X);return this._writableState.defaultEncoding=X,this};function z0(C,X,P,o,r){let l=X.objectMode?1:P.length;X.length+=l;let j=X.lengthP.bufferedIndex)q0(C,P);if(o)if(P.afterWriteTickInfo!==null&&P.afterWriteTickInfo.cb===r)P.afterWriteTickInfo.count++;else P.afterWriteTickInfo={count:1,cb:r,stream:C,state:P},q.nextTick(u,P.afterWriteTickInfo);else Q0(C,P,1,r)}}function u({stream:C,state:X,count:P,cb:o}){return X.afterWriteTickInfo=null,Q0(C,X,P,o)}function Q0(C,X,P,o){if(!X.ending&&!C.destroyed&&X.length===0&&X.needDrain)X.needDrain=!1,C.emit("drain");while(P-- >0)X.pendingcb--,o();if(X.destroyed)E(X);b(C,X)}function E(C){if(C.writing)return;for(let r=C.bufferedIndex;r1&&C._writev){X.pendingcb-=l-1;let d=X.allNoop?f:(p)=>{for(let G0=j;G0256)P.splice(0,j),X.bufferedIndex=0;else X.bufferedIndex=j}X.bufferProcessing=!1}i.prototype._write=function(C,X,P){if(this._writev)this._writev([{chunk:C,encoding:X}],P);else throw new H("_write()")},i.prototype._writev=null,i.prototype.end=function(C,X,P){let o=this._writableState;if(typeof C==="function")P=C,C=null,X=null;else if(typeof X==="function")P=X,X=null;let r;if(C!==null&&C!==void 0){let l=K0(this,C,X);if(l instanceof J)r=l}if(o.corked)o.corked=1,this.uncork();if(r);else if(!o.errored&&!o.ending)o.ending=!0,b(this,o,!0),o.ended=!0;else if(o.finished)r=new $0("end");else if(o.destroyed)r=new m("end");if(typeof P==="function")if(r||o.finished)q.nextTick(P,r);else o[A].push(P);return this};function B0(C){return C.ending&&!C.destroyed&&C.constructed&&C.length===0&&!C.errored&&C.buffered.length===0&&!C.finished&&!C.writing&&!C.errorEmitted&&!C.closeEmitted}function w0(C,X){let P=!1;function o(r){if(P){h(C,r!==null&&r!==void 0?r:R());return}if(P=!0,X.pendingcb--,r){let l=X[A].splice(0);for(let j=0;j{if(B0(r))T(o,r);else r.pendingcb--},C,X);else if(B0(X))X.pendingcb++,T(C,X)}}}function T(C,X){X.pendingcb--,X.finished=!0;let P=X[A].splice(0);for(let o=0;o{var q=e2(),K=(a0(),y0(s0)),{isReadable:J,isWritable:Z,isIterable:G,isNodeStream:B,isReadableNodeStream:W,isWritableNodeStream:U,isDuplexNodeStream:V,isReadableStream:N,isWritableStream:F}=V2(),M=R2(),{AbortError:v,codes:{ERR_INVALID_ARG_TYPE:x,ERR_INVALID_RETURN_VALUE:y}}=V1(),{destroyer:D}=O6(),z=U2(),Y=c5(),H=e7(),{createDeferredPromise:R}=W1(),c=GJ(),m=globalThis.Blob||K.Blob,$0=typeof m!=="undefined"?function A(I){return I instanceof m}:function A(I){return!1},_=globalThis.AbortController||g8().AbortController,{FunctionPrototypeCall:g}=b0();class O extends z{constructor(A){super(A);if((A===null||A===void 0?void 0:A.readable)===!1)this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0;if((A===null||A===void 0?void 0:A.writable)===!1)this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0}}$.exports=function A(I,n){if(V(I))return I;if(W(I))return f({readable:I});if(U(I))return f({writable:I});if(B(I))return f({writable:!1,readable:!1});if(N(I))return f({readable:Y.fromWeb(I)});if(F(I))return f({writable:H.fromWeb(I)});if(typeof I==="function"){let{value:K0,write:z0,final:S,destroy:U0}=h(I);if(G(K0))return c(O,K0,{objectMode:!0,write:z0,final:S,destroy:U0});let k=K0===null||K0===void 0?void 0:K0.then;if(typeof k==="function"){let u,Q0=g(k,K0,(E)=>{if(E!=null)throw new y("nully","body",E)},(E)=>{D(u,E)});return u=new O({objectMode:!0,readable:!1,write:z0,final(E){S(async()=>{try{await Q0,q.nextTick(E,null)}catch(q0){q.nextTick(E,q0)}})},destroy:U0})}throw new y("Iterable, AsyncIterable or AsyncFunction",n,K0)}if($0(I))return A(I.arrayBuffer());if(G(I))return c(O,I,{objectMode:!0,writable:!1});if(N(I===null||I===void 0?void 0:I.readable)&&F(I===null||I===void 0?void 0:I.writable))return O.fromWeb(I);if(typeof(I===null||I===void 0?void 0:I.writable)==="object"||typeof(I===null||I===void 0?void 0:I.readable)==="object"){let K0=I!==null&&I!==void 0&&I.readable?W(I===null||I===void 0?void 0:I.readable)?I===null||I===void 0?void 0:I.readable:A(I.readable):void 0,z0=I!==null&&I!==void 0&&I.writable?U(I===null||I===void 0?void 0:I.writable)?I===null||I===void 0?void 0:I.writable:A(I.writable):void 0;return f({readable:K0,writable:z0})}let i=I===null||I===void 0?void 0:I.then;if(typeof i==="function"){let K0;return g(i,I,(z0)=>{if(z0!=null)K0.push(z0);K0.push(null)},(z0)=>{D(K0,z0)}),K0=new O({objectMode:!0,writable:!1,read(){}})}throw new x(n,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],I)};function h(A){let{promise:I,resolve:n}=R(),i=new _,K0=i.signal;return{value:A(async function*(){while(!0){let z0=I;I=null;let{chunk:S,done:U0,cb:k}=await z0;if(q.nextTick(k),U0)return;if(K0.aborted)throw new v(void 0,{cause:K0.reason});({promise:I,resolve:n}=R()),yield S}}(),{signal:K0}),write(z0,S,U0){let k=n;n=null,k({chunk:z0,done:!1,cb:U0})},final(z0){let S=n;n=null,S({done:!0,cb:z0})},destroy(z0,S){i.abort(),S(z0)}}}function f(A){let I=A.readable&&typeof A.readable.read!=="function"?Y.wrap(A.readable):A.readable,n=A.writable,i=!!J(I),K0=!!Z(n),z0,S,U0,k,u;function Q0(E){let q0=k;if(k=null,q0)q0(E);else if(E)u.destroy(E)}if(u=new O({readableObjectMode:!!(I!==null&&I!==void 0&&I.readableObjectMode),writableObjectMode:!!(n!==null&&n!==void 0&&n.writableObjectMode),readable:i,writable:K0}),K0)M(n,(E)=>{if(K0=!1,E)D(I,E);Q0(E)}),u._write=function(E,q0,B0){if(n.write(E,q0))B0();else z0=B0},u._final=function(E){n.end(),S=E},n.on("drain",function(){if(z0){let E=z0;z0=null,E()}}),n.on("finish",function(){if(S){let E=S;S=null,E()}});if(i)M(I,(E)=>{if(i=!1,E)D(I,E);Q0(E)}),I.on("readable",function(){if(U0){let E=U0;U0=null,E()}}),I.on("end",function(){u.push(null)}),u._read=function(){while(!0){let E=I.read();if(E===null){U0=u._read;return}if(!u.push(E))return}};return u._destroy=function(E,q0){if(!E&&k!==null)E=new v;if(U0=null,z0=null,S=null,k===null)q0(E);else k=q0,D(n,E),D(I,E)},u}}),U2=R0((Q,$)=>{var{ObjectDefineProperties:q,ObjectGetOwnPropertyDescriptor:K,ObjectKeys:J,ObjectSetPrototypeOf:Z}=b0();$.exports=W;var G=c5(),B=e7();Z(W.prototype,G.prototype),Z(W,G);{let F=J(B.prototype);for(let M=0;M{var{ObjectSetPrototypeOf:q,Symbol:K}=b0();$.exports=W;var{ERR_METHOD_NOT_IMPLEMENTED:J}=V1().codes,Z=U2(),{getHighWaterMark:G}=_5();q(W.prototype,Z.prototype),q(W,Z);var B=K("kCallback");function W(N){if(!(this instanceof W))return new W(N);let F=N?G(this,N,"readableHighWaterMark",!0):null;if(F===0)N={...N,highWaterMark:null,readableHighWaterMark:F,writableHighWaterMark:N.writableHighWaterMark||0};if(Z.call(this,N),this._readableState.sync=!1,this[B]=null,N){if(typeof N.transform==="function")this._transform=N.transform;if(typeof N.flush==="function")this._flush=N.flush}this.on("prefinish",V)}function U(N){if(typeof this._flush==="function"&&!this.destroyed)this._flush((F,M)=>{if(F){if(N)N(F);else this.destroy(F);return}if(M!=null)this.push(M);if(this.push(null),N)N()});else if(this.push(null),N)N()}function V(){if(this._final!==U)U.call(this)}W.prototype._final=U,W.prototype._transform=function(N,F,M){throw new J("_transform()")},W.prototype._write=function(N,F,M){let v=this._readableState,x=this._writableState,y=v.length;this._transform(N,F,(D,z)=>{if(D){M(D);return}if(z!=null)this.push(z);if(x.ended||y===v.length||v.length{var{ObjectSetPrototypeOf:q}=b0();$.exports=J;var K=BJ();q(J.prototype,K.prototype),q(J,K);function J(Z){if(!(this instanceof J))return new J(Z);K.call(this,Z)}J.prototype._transform=function(Z,G,B){B(null,Z)}}),Q9=R0((Q,$)=>{var q=e2(),{ArrayIsArray:K,Promise:J,SymbolAsyncIterator:Z,SymbolDispose:G}=b0(),B=R2(),{once:W}=W1(),U=O6(),V=U2(),{aggregateTwoErrors:N,codes:{ERR_INVALID_ARG_TYPE:F,ERR_INVALID_RETURN_VALUE:M,ERR_MISSING_ARGS:v,ERR_STREAM_DESTROYED:x,ERR_STREAM_PREMATURE_CLOSE:y},AbortError:D}=V1(),{validateFunction:z,validateAbortSignal:Y}=X8(),{isIterable:H,isReadable:R,isReadableNodeStream:c,isNodeStream:m,isTransformStream:$0,isWebStream:_,isReadableStream:g,isReadableFinished:O}=V2(),h=globalThis.AbortController||g8().AbortController,f,A,I;function n(E,q0,B0){let w0=!1;E.on("close",()=>{w0=!0});let M0=B(E,{readable:q0,writable:B0},(b)=>{w0=!b});return{destroy:(b)=>{if(w0)return;w0=!0,U.destroyer(E,b||new x("pipe"))},cleanup:M0}}function i(E){return z(E[E.length-1],"streams[stream.length - 1]"),E.pop()}function K0(E){if(H(E))return E;else if(c(E))return z0(E);throw new F("val",["Readable","Iterable","AsyncIterable"],E)}async function*z0(E){if(!A)A=c5();yield*A.prototype[Z].call(E)}async function S(E,q0,B0,{end:w0}){let M0,b=null,T=(W0)=>{if(W0)M0=W0;if(b){let C=b;b=null,C()}},t=()=>new J((W0,C)=>{if(M0)C(M0);else b=()=>{if(M0)C(M0);else W0()}});q0.on("drain",T);let Z0=B(q0,{readable:!1},T);try{if(q0.writableNeedDrain)await t();for await(let W0 of E)if(!q0.write(W0))await t();if(w0)q0.end(),await t();B0()}catch(W0){B0(M0!==W0?N(M0,W0):W0)}finally{Z0(),q0.off("drain",T)}}async function U0(E,q0,B0,{end:w0}){if($0(q0))q0=q0.writable;let M0=q0.getWriter();try{for await(let b of E)await M0.ready,M0.write(b).catch(()=>{});if(await M0.ready,w0)await M0.close();B0()}catch(b){try{await M0.abort(b),B0(b)}catch(T){B0(T)}}}function k(...E){return u(E,W(i(E)))}function u(E,q0,B0){if(E.length===1&&K(E[0]))E=E[0];if(E.length<2)throw new v("streams");let w0=new h,M0=w0.signal,b=B0===null||B0===void 0?void 0:B0.signal,T=[];Y(b,"options.signal");function t(){r(new D)}I=I||W1().addAbortListener;let Z0;if(b)Z0=I(b,t);let W0,C,X=[],P=0;function o(p){r(p,--P===0)}function r(p,G0){var P0;if(p&&(!W0||W0.code==="ERR_STREAM_PREMATURE_CLOSE"))W0=p;if(!W0&&!G0)return;while(X.length)X.shift()(W0);if((P0=Z0)===null||P0===void 0||P0[G](),w0.abort(),G0){if(!W0)T.forEach((k0)=>k0());q.nextTick(q0,W0,C)}}let l;for(let p=0;p0,I0=P0||(B0===null||B0===void 0?void 0:B0.end)!==!1,Q1=p===E.length-1;if(m(G0)){let A0=function(O0){if(O0&&O0.name!=="AbortError"&&O0.code!=="ERR_STREAM_PREMATURE_CLOSE")o(O0)};var j=A0;if(I0){let{destroy:O0,cleanup:F1}=n(G0,P0,k0);if(X.push(O0),R(G0)&&Q1)T.push(F1)}if(G0.on("error",A0),R(G0)&&Q1)T.push(()=>{G0.removeListener("error",A0)})}if(p===0)if(typeof G0==="function"){if(l=G0({signal:M0}),!H(l))throw new M("Iterable, AsyncIterable or Stream","source",l)}else if(H(G0)||c(G0)||$0(G0))l=G0;else l=V.from(G0);else if(typeof G0==="function"){if($0(l)){var d;l=K0((d=l)===null||d===void 0?void 0:d.readable)}else l=K0(l);if(l=G0(l,{signal:M0}),P0){if(!H(l,!0))throw new M("AsyncIterable",`transform[${p-1}]`,l)}else{var e;if(!f)f=WJ();let A0=new f({objectMode:!0}),O0=(e=l)===null||e===void 0?void 0:e.then;if(typeof O0==="function")P++,O0.call(l,(d0)=>{if(C=d0,d0!=null)A0.write(d0);if(I0)A0.end();q.nextTick(o)},(d0)=>{A0.destroy(d0),q.nextTick(o,d0)});else if(H(l,!0))P++,S(l,A0,o,{end:I0});else if(g(l)||$0(l)){let d0=l.readable||l;P++,S(d0,A0,o,{end:I0})}else throw new M("AsyncIterable or Promise","destination",l);l=A0;let{destroy:F1,cleanup:M1}=n(l,!1,!0);if(X.push(F1),Q1)T.push(M1)}}else if(m(G0)){if(c(l)){P+=2;let A0=Q0(l,G0,o,{end:I0});if(R(G0)&&Q1)T.push(A0)}else if($0(l)||g(l)){let A0=l.readable||l;P++,S(A0,G0,o,{end:I0})}else if(H(l))P++,S(l,G0,o,{end:I0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],l);l=G0}else if(_(G0)){if(c(l))P++,U0(K0(l),G0,o,{end:I0});else if(g(l)||H(l))P++,U0(l,G0,o,{end:I0});else if($0(l))P++,U0(l.readable,G0,o,{end:I0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],l);l=G0}else l=V.from(G0)}if(M0!==null&&M0!==void 0&&M0.aborted||b!==null&&b!==void 0&&b.aborted)q.nextTick(t);return l}function Q0(E,q0,B0,{end:w0}){let M0=!1;if(q0.on("close",()=>{if(!M0)B0(new y)}),E.pipe(q0,{end:!1}),w0){let T=function(){M0=!0,q0.end()};var b=T;if(O(E))q.nextTick(T);else E.once("end",T)}else B0();return B(E,{readable:!0,writable:!1},(T)=>{let t=E._readableState;if(T&&T.code==="ERR_STREAM_PREMATURE_CLOSE"&&t&&t.ended&&!t.errored&&!t.errorEmitted)E.once("end",B0).once("error",B0);else B0(T)}),B(q0,{readable:!1,writable:!0},B0)}$.exports={pipelineImpl:u,pipeline:k}}),zJ=R0((Q,$)=>{var{pipeline:q}=Q9(),K=U2(),{destroyer:J}=O6(),{isNodeStream:Z,isReadable:G,isWritable:B,isWebStream:W,isTransformStream:U,isWritableStream:V,isReadableStream:N}=V2(),{AbortError:F,codes:{ERR_INVALID_ARG_VALUE:M,ERR_MISSING_ARGS:v}}=V1(),x=R2();$.exports=function y(...D){if(D.length===0)throw new v("streams");if(D.length===1)return K.from(D[0]);let z=[...D];if(typeof D[0]==="function")D[0]=K.from(D[0]);if(typeof D[D.length-1]==="function"){let f=D.length-1;D[f]=K.from(D[f])}for(let f=0;f0&&!(B(D[f])||V(D[f])||U(D[f])))throw new M(`streams[${f}]`,z[f],"must be writable")}let Y,H,R,c,m;function $0(f){let A=c;if(c=null,A)A(f);else if(f)m.destroy(f);else if(!h&&!O)m.destroy()}let _=D[0],g=q(D,$0),O=!!(B(_)||V(_)||U(_)),h=!!(G(g)||N(g)||U(g));if(m=new K({writableObjectMode:!!(_!==null&&_!==void 0&&_.writableObjectMode),readableObjectMode:!!(g!==null&&g!==void 0&&g.readableObjectMode),writable:O,readable:h}),O){if(Z(_))m._write=function(A,I,n){if(_.write(A,I))n();else Y=n},m._final=function(A){_.end(),H=A},_.on("drain",function(){if(Y){let A=Y;Y=null,A()}});else if(W(_)){let A=(U(_)?_.writable:_).getWriter();m._write=async function(I,n,i){try{await A.ready,A.write(I).catch(()=>{}),i()}catch(K0){i(K0)}},m._final=async function(I){try{await A.ready,A.close().catch(()=>{}),H=I}catch(n){I(n)}}}let f=U(g)?g.readable:g;x(f,()=>{if(H){let A=H;H=null,A()}})}if(h){if(Z(g))g.on("readable",function(){if(R){let f=R;R=null,f()}}),g.on("end",function(){m.push(null)}),m._read=function(){while(!0){let f=g.read();if(f===null){R=m._read;return}if(!m.push(f))return}};else if(W(g)){let f=(U(g)?g.readable:g).getReader();m._read=async function(){while(!0)try{let{value:A,done:I}=await f.read();if(!m.push(A))return;if(I){m.push(null);return}}catch{return}}}}return m._destroy=function(f,A){if(!f&&c!==null)f=new F;if(R=null,Y=null,H=null,c===null)A(f);else if(c=A,Z(g))J(g,f)},m}}),FW=R0((Q,$)=>{var q=globalThis.AbortController||g8().AbortController,{codes:{ERR_INVALID_ARG_VALUE:K,ERR_INVALID_ARG_TYPE:J,ERR_MISSING_ARGS:Z,ERR_OUT_OF_RANGE:G},AbortError:B}=V1(),{validateAbortSignal:W,validateInteger:U,validateObject:V}=X8(),N=b0().Symbol("kWeak"),F=b0().Symbol("kResistStopPropagation"),{finished:M}=R2(),v=zJ(),{addAbortSignalNoValidate:x}=u5(),{isWritable:y,isNodeStream:D}=V2(),{deprecate:z}=W1(),{ArrayPrototypePush:Y,Boolean:H,MathFloor:R,Number:c,NumberIsNaN:m,Promise:$0,PromiseReject:_,PromiseResolve:g,PromisePrototypeThen:O,Symbol:h}=b0(),f=h("kEmpty"),A=h("kEof");function I(b,T){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");if(D(b)&&!y(b))throw new K("stream",b,"must be writable");let t=v(this,b);if(T!==null&&T!==void 0&&T.signal)x(T.signal,t);return t}function n(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");let t=1;if((T===null||T===void 0?void 0:T.concurrency)!=null)t=R(T.concurrency);let Z0=t-1;if((T===null||T===void 0?void 0:T.highWaterMark)!=null)Z0=R(T.highWaterMark);return U(t,"options.concurrency",1),U(Z0,"options.highWaterMark",0),Z0+=t,async function*W0(){let C=W1().AbortSignalAny([T===null||T===void 0?void 0:T.signal].filter(H)),X=this,P=[],o={signal:C},r,l,j=!1,d=0;function e(){j=!0,p()}function p(){d-=1,G0()}function G0(){if(l&&!j&&d=Z0||d>=t))await new $0((I0)=>{l=I0})}P.push(A)}catch(k0){let I0=_(k0);O(I0,p,e),P.push(I0)}finally{if(j=!0,r)r(),r=null}}P0();try{while(!0){while(P.length>0){let k0=await P[0];if(k0===A)return;if(C.aborted)throw new B;if(k0!==f)yield k0;P.shift(),G0()}await new $0((k0)=>{r=k0})}}finally{if(j=!0,l)l(),l=null}}.call(this)}function i(b=void 0){if(b!=null)V(b,"options");if((b===null||b===void 0?void 0:b.signal)!=null)W(b.signal,"options.signal");return async function*T(){let t=0;for await(let W0 of this){var Z0;if(b!==null&&b!==void 0&&(Z0=b.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B({cause:b.signal.reason});yield[t++,W0]}}.call(this)}async function K0(b,T=void 0){for await(let t of k.call(this,b,T))return!0;return!1}async function z0(b,T=void 0){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);return!await K0.call(this,async(...t)=>{return!await b(...t)},T)}async function S(b,T){for await(let t of k.call(this,b,T))return t;return}async function U0(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);async function t(Z0,W0){return await b(Z0,W0),f}for await(let Z0 of n.call(this,t,T));}function k(b,T){if(typeof b!=="function")throw new J("fn",["Function","AsyncFunction"],b);async function t(Z0,W0){if(await b(Z0,W0))return Z0;return f}return n.call(this,t,T)}class u extends Z{constructor(){super("reduce");this.message="Reduce of an empty stream requires an initial value"}}async function Q0(b,T,t){var Z0;if(typeof b!=="function")throw new J("reducer",["Function","AsyncFunction"],b);if(t!=null)V(t,"options");if((t===null||t===void 0?void 0:t.signal)!=null)W(t.signal,"options.signal");let W0=arguments.length>1;if(t!==null&&t!==void 0&&(Z0=t.signal)!==null&&Z0!==void 0&&Z0.aborted){let r=new B(void 0,{cause:t.signal.reason});throw this.once("error",()=>{}),await M(this.destroy(r)),r}let C=new q,X=C.signal;if(t!==null&&t!==void 0&&t.signal){let r={once:!0,[N]:this,[F]:!0};t.signal.addEventListener("abort",()=>C.abort(),r)}let P=!1;try{for await(let r of this){var o;if(P=!0,t!==null&&t!==void 0&&(o=t.signal)!==null&&o!==void 0&&o.aborted)throw new B;if(!W0)T=r,W0=!0;else T=await b(T,r,{signal:X})}if(!P&&!W0)throw new u}finally{C.abort()}return T}async function E(b){if(b!=null)V(b,"options");if((b===null||b===void 0?void 0:b.signal)!=null)W(b.signal,"options.signal");let T=[];for await(let Z0 of this){var t;if(b!==null&&b!==void 0&&(t=b.signal)!==null&&t!==void 0&&t.aborted)throw new B(void 0,{cause:b.signal.reason});Y(T,Z0)}return T}function q0(b,T){let t=n.call(this,b,T);return async function*Z0(){for await(let W0 of t)yield*W0}.call(this)}function B0(b){if(b=c(b),m(b))return 0;if(b<0)throw new G("number",">= 0",b);return b}function w0(b,T=void 0){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");return b=B0(b),async function*t(){var Z0;if(T!==null&&T!==void 0&&(Z0=T.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B;for await(let C of this){var W0;if(T!==null&&T!==void 0&&(W0=T.signal)!==null&&W0!==void 0&&W0.aborted)throw new B;if(b--<=0)yield C}}.call(this)}function M0(b,T=void 0){if(T!=null)V(T,"options");if((T===null||T===void 0?void 0:T.signal)!=null)W(T.signal,"options.signal");return b=B0(b),async function*t(){var Z0;if(T!==null&&T!==void 0&&(Z0=T.signal)!==null&&Z0!==void 0&&Z0.aborted)throw new B;for await(let C of this){var W0;if(T!==null&&T!==void 0&&(W0=T.signal)!==null&&W0!==void 0&&W0.aborted)throw new B;if(b-- >0)yield C;if(b<=0)return}}.call(this)}Q.streamReturningOperators={asIndexedPairs:z(i,"readable.asIndexedPairs will be removed in a future version."),drop:w0,filter:k,flatMap:q0,map:n,take:M0,compose:I},Q.promiseReturningOperators={every:z0,forEach:U0,reduce:Q0,toArray:E,some:K0,find:S}}),FJ=R0((Q,$)=>{var{ArrayPrototypePop:q,Promise:K}=b0(),{isIterable:J,isNodeStream:Z,isWebStream:G}=V2(),{pipelineImpl:B}=Q9(),{finished:W}=R2();MJ();function U(...V){return new K((N,F)=>{let M,v,x=V[V.length-1];if(x&&typeof x==="object"&&!Z(x)&&!J(x)&&!G(x)){let y=q(V);M=y.signal,v=y.end}B(V,(y,D)=>{if(y)F(y);else N(D)},{signal:M,end:v})})}$.exports={finished:W,pipeline:U}}),MJ=R0((Q,$)=>{var{Buffer:q}=(a0(),y0(s0)),{ObjectDefineProperty:K,ObjectKeys:J,ReflectApply:Z}=b0(),{promisify:{custom:G}}=W1(),{streamReturningOperators:B,promiseReturningOperators:W}=FW(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:U}}=V1(),V=zJ(),{setDefaultHighWaterMark:N,getDefaultHighWaterMark:F}=_5(),{pipeline:M}=Q9(),{destroyer:v}=O6(),x=R2(),y=FJ(),D=V2(),z=$.exports=t7().Stream;z.isDestroyed=D.isDestroyed,z.isDisturbed=D.isDisturbed,z.isErrored=D.isErrored,z.isReadable=D.isReadable,z.isWritable=D.isWritable,z.Readable=c5();for(let H of J(B)){let R=function(...m){if(new.target)throw U();return z.Readable.from(Z(c,this,m))},c=B[H];K(R,"name",{__proto__:null,value:c.name}),K(R,"length",{__proto__:null,value:c.length}),K(z.Readable.prototype,H,{__proto__:null,value:R,enumerable:!1,configurable:!0,writable:!0})}for(let H of J(W)){let R=function(...m){if(new.target)throw U();return Z(c,this,m)},c=W[H];K(R,"name",{__proto__:null,value:c.name}),K(R,"length",{__proto__:null,value:c.length}),K(z.Readable.prototype,H,{__proto__:null,value:R,enumerable:!1,configurable:!0,writable:!0})}z.Writable=e7(),z.Duplex=U2(),z.Transform=BJ(),z.PassThrough=WJ(),z.pipeline=M;var{addAbortSignal:Y}=u5();z.addAbortSignal=Y,z.finished=x,z.destroy=v,z.compose=V,z.setDefaultHighWaterMark=N,z.getDefaultHighWaterMark=F,K(z,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return y}}),K(M,G,{__proto__:null,enumerable:!0,get(){return y.pipeline}}),K(x,G,{__proto__:null,enumerable:!0,get(){return y.finished}}),z.Stream=z,z._isUint8Array=function H(R){return R instanceof Uint8Array},z._uint8ArrayToBuffer=function H(R){return q.from(R.buffer,R.byteOffset,R.byteLength)}}),wJ=R0((Q,$)=>{var q=p8();if(q&&process.env.READABLE_STREAM==="disable"){let K=q.promises;$.exports._uint8ArrayToBuffer=q._uint8ArrayToBuffer,$.exports._isUint8Array=q._isUint8Array,$.exports.isDisturbed=q.isDisturbed,$.exports.isErrored=q.isErrored,$.exports.isReadable=q.isReadable,$.exports.Readable=q.Readable,$.exports.Writable=q.Writable,$.exports.Duplex=q.Duplex,$.exports.Transform=q.Transform,$.exports.PassThrough=q.PassThrough,$.exports.addAbortSignal=q.addAbortSignal,$.exports.finished=q.finished,$.exports.destroy=q.destroy,$.exports.pipeline=q.pipeline,$.exports.compose=q.compose,Object.defineProperty(q,"promises",{configurable:!0,enumerable:!0,get(){return K}}),$.exports.Stream=q.Stream}else{let K=MJ(),J=FJ(),Z=K.Readable.destroy;$.exports=K.Readable,$.exports._uint8ArrayToBuffer=K._uint8ArrayToBuffer,$.exports._isUint8Array=K._isUint8Array,$.exports.isDisturbed=K.isDisturbed,$.exports.isErrored=K.isErrored,$.exports.isReadable=K.isReadable,$.exports.Readable=K.Readable,$.exports.Writable=K.Writable,$.exports.Duplex=K.Duplex,$.exports.Transform=K.Transform,$.exports.PassThrough=K.PassThrough,$.exports.addAbortSignal=K.addAbortSignal,$.exports.finished=K.finished,$.exports.destroy=K.destroy,$.exports.destroy=Z,$.exports.pipeline=K.pipeline,$.exports.compose=K.compose,Object.defineProperty(K,"promises",{configurable:!0,enumerable:!0,get(){return J}}),$.exports.Stream=K.Stream}$.exports.default=$.exports}),NJ=R0((Q)=>{var $=UJ(),q=VJ(),K=wJ(),J=Q.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},Z=Q.IncomingMessage=function(G,B,W,U){var V=this;if(K.Readable.call(V),V._mode=W,V.headers={},V.rawHeaders=[],V.trailers={},V.rawTrailers=[],V.on("end",function(){process.nextTick(function(){V.emit("close")})}),W==="fetch"){let D=function(){M.read().then(function(z){if(V._destroyed)return;if(U(z.done),z.done){V.push(null);return}V.push(Buffer.from(z.value)),D()}).catch(function(z){if(U(!0),!V._destroyed)V.emit("error",z)})};var N=D;if(V._fetchResponse=B,V.url=B.url,V.statusCode=B.status,V.statusMessage=B.statusText,B.headers.forEach(function(z,Y){V.headers[Y.toLowerCase()]=z,V.rawHeaders.push(Y,z)}),$.writableStream){var F=new WritableStream({write:function(z){return U(!1),new Promise(function(Y,H){if(V._destroyed)H();else if(V.push(Buffer.from(z)))Y();else V._resumeFetch=Y})},close:function(){if(U(!0),!V._destroyed)V.push(null)},abort:function(z){if(U(!0),!V._destroyed)V.emit("error",z)}});try{B.body.pipeTo(F).catch(function(z){if(U(!0),!V._destroyed)V.emit("error",z)});return}catch(z){}}var M=B.body.getReader();D()}else{V._xhr=G,V._pos=0,V.url=G.responseURL,V.statusCode=G.status,V.statusMessage=G.statusText;var v=G.getAllResponseHeaders().split(/\r?\n/);if(v.forEach(function(D){var z=D.match(/^([^:]+):\s*(.*)/);if(z){var Y=z[1].toLowerCase();if(Y==="set-cookie"){if(V.headers[Y]===void 0)V.headers[Y]=[];V.headers[Y].push(z[2])}else if(V.headers[Y]!==void 0)V.headers[Y]+=", "+z[2];else V.headers[Y]=z[2];V.rawHeaders.push(z[1],z[2])}}),V._charset="x-user-defined",!$.overrideMimeType){var x=V.rawHeaders["mime-type"];if(x){var y=x.match(/;\s*charset=([^;])(;|$)/);if(y)V._charset=y[1].toLowerCase()}if(!V._charset)V._charset="utf-8"}}};q(Z,K.Readable),Z.prototype._read=function(){var G=this,B=G._resumeFetch;if(B)G._resumeFetch=null,B()},Z.prototype._onXHRProgress=function(G){var B=this,W=B._xhr,U=null;switch(B._mode){case"text":if(U=W.responseText,U.length>B._pos){var V=U.substr(B._pos);if(B._charset==="x-user-defined"){var N=Buffer.alloc(V.length);for(var F=0;FB._pos)B.push(Buffer.from(new Uint8Array(M.result.slice(B._pos)))),B._pos=M.result.byteLength},M.onload=function(){G(!0),B.push(null)},M.readAsArrayBuffer(U);break}if(B._xhr.readyState===J.DONE&&B._mode!=="ms-stream")G(!0),B.push(null)}}),MW=R0((Q,$)=>{var q=UJ(),K=VJ(),J=NJ(),Z=wJ(),G=J.IncomingMessage,B=J.readyStates;function W(F,M){if(q.fetch&&M)return"fetch";else if(q.mozchunkedarraybuffer)return"moz-chunked-arraybuffer";else if(q.msstream)return"ms-stream";else if(q.arraybuffer&&F)return"arraybuffer";else return"text"}var U=$.exports=function(F){var M=this;if(Z.Writable.call(M),M._opts=F,M._body=[],M._headers={},F.auth)M.setHeader("Authorization","Basic "+Buffer.from(F.auth).toString("base64"));Object.keys(F.headers).forEach(function(y){M.setHeader(y,F.headers[y])});var v,x=!0;if(F.mode==="disable-fetch"||"requestTimeout"in F&&!q.abortController)x=!1,v=!0;else if(F.mode==="prefer-streaming")v=!1;else if(F.mode==="allow-wrong-content-type")v=!q.overrideMimeType;else if(!F.mode||F.mode==="default"||F.mode==="prefer-fast")v=!0;else throw new Error("Invalid value for opts.mode");M._mode=W(v,x),M._fetchTimer=null,M._socketTimeout=null,M._socketTimer=null,M.on("finish",function(){M._onFinish()})};K(U,Z.Writable),U.prototype.setHeader=function(F,M){var v=this,x=F.toLowerCase();if(N.indexOf(x)!==-1)return;v._headers[x]={name:F,value:M}},U.prototype.getHeader=function(F){var M=this._headers[F.toLowerCase()];if(M)return M.value;return null},U.prototype.removeHeader=function(F){var M=this;delete M._headers[F.toLowerCase()]},U.prototype._onFinish=function(){var F=this;if(F._destroyed)return;var M=F._opts;if("timeout"in M&&M.timeout!==0)F.setTimeout(M.timeout);var v=F._headers,x=null;if(M.method!=="GET"&&M.method!=="HEAD")x=new Blob(F._body,{type:(v["content-type"]||{}).value||""});var y=[];if(Object.keys(v).forEach(function(H){var R=v[H].name,c=v[H].value;if(Array.isArray(c))c.forEach(function(m){y.push([R,m])});else y.push([R,c])}),F._mode==="fetch"){var D=null;if(q.abortController){var z=new AbortController;if(D=z.signal,F._fetchAbortController=z,"requestTimeout"in M&&M.requestTimeout!==0)F._fetchTimer=global.setTimeout(function(){if(F.emit("requestTimeout"),F._fetchAbortController)F._fetchAbortController.abort()},M.requestTimeout)}global.fetch(F._opts.url,{method:F._opts.method,headers:y,body:x||void 0,mode:"cors",credentials:M.withCredentials?"include":"same-origin",signal:D}).then(function(H){F._fetchResponse=H,F._resetTimers(!1),F._connect()},function(H){if(F._resetTimers(!0),!F._destroyed)F.emit("error",H)})}else{var Y=F._xhr=new global.XMLHttpRequest;try{Y.open(F._opts.method,F._opts.url,!0)}catch(H){process.nextTick(function(){F.emit("error",H)});return}if("responseType"in Y)Y.responseType=F._mode;if("withCredentials"in Y)Y.withCredentials=!!M.withCredentials;if(F._mode==="text"&&"overrideMimeType"in Y)Y.overrideMimeType("text/plain; charset=x-user-defined");if("requestTimeout"in M)Y.timeout=M.requestTimeout,Y.ontimeout=function(){F.emit("requestTimeout")};if(y.forEach(function(H){Y.setRequestHeader(H[0],H[1])}),F._response=null,Y.onreadystatechange=function(){switch(Y.readyState){case B.LOADING:case B.DONE:F._onXHRProgress();break}},F._mode==="moz-chunked-arraybuffer")Y.onprogress=function(){F._onXHRProgress()};Y.onerror=function(){if(F._destroyed)return;F._resetTimers(!0),F.emit("error",new Error("XHR error"))};try{Y.send(x)}catch(H){process.nextTick(function(){F.emit("error",H)});return}}};function V(F){try{var M=F.status;return M!==null&&M!==0}catch(v){return!1}}U.prototype._onXHRProgress=function(){var F=this;if(F._resetTimers(!1),!V(F._xhr)||F._destroyed)return;if(!F._response)F._connect();F._response._onXHRProgress(F._resetTimers.bind(F))},U.prototype._connect=function(){var F=this;if(F._destroyed)return;F._response=new G(F._xhr,F._fetchResponse,F._mode,F._resetTimers.bind(F)),F._response.on("error",function(M){F.emit("error",M)}),F.emit("response",F._response)},U.prototype._write=function(F,M,v){var x=this;x._body.push(F),v()},U.prototype._resetTimers=function(F){var M=this;if(global.clearTimeout(M._socketTimer),M._socketTimer=null,F)global.clearTimeout(M._fetchTimer),M._fetchTimer=null;else if(M._socketTimeout)M._socketTimer=global.setTimeout(function(){M.emit("timeout")},M._socketTimeout)},U.prototype.abort=U.prototype.destroy=function(F){var M=this;if(M._destroyed=!0,M._resetTimers(!0),M._response)M._response._destroyed=!0;if(M._xhr)M._xhr.abort();else if(M._fetchAbortController)M._fetchAbortController.abort();if(F)M.emit("error",F)},U.prototype.end=function(F,M,v){var x=this;if(typeof F==="function")v=F,F=void 0;Z.Writable.prototype.end.call(x,F,M,v)},U.prototype.setTimeout=function(F,M){var v=this;if(M)v.once("timeout",M);v._socketTimeout=F,v._resetTimers(!1)},U.prototype.flushHeaders=function(){},U.prototype.setNoDelay=function(){},U.prototype.setSocketKeepAlive=function(){};var N=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}),wW=R0((Q,$)=>{$.exports=K;var q=Object.prototype.hasOwnProperty;function K(){var J={};for(var Z=0;Z{$.exports=($9(),y0(q9)).STATUS_CODES}),YW=R0((Q)=>{var $=MW(),q=NJ(),K=wW(),J=NW(),Z=(s7(),y0(r7)),G=Q;G.request=function(B,W){if(typeof B==="string")B=Z.parse(B);else B=K(B);var U=global.location.protocol.search(/^https?:$/)===-1?"http:":"",V=B.protocol||U,N=B.hostname||B.host,F=B.port,M=B.path||"/";if(N&&N.indexOf(":")!==-1)N="["+N+"]";B.url=(N?V+"//"+N:"")+(F?":"+F:"")+M,B.method=(B.method||"GET").toUpperCase(),B.headers=B.headers||{};var v=new $(B);if(W)v.on("response",W);return v},G.get=function B(W,U){var V=G.request(W,U);return V.end(),V},G.ClientRequest=$,G.IncomingMessage=q.IncomingMessage,G.Agent=function(){},G.Agent.defaultMaxSockets=4,G.globalAgent=new G.Agent,G.STATUS_CODES=J,G.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}),LW=UW(YW(),1),{request:DW,get:HW,ClientRequest:kW,IncomingMessage:vW,Agent:IW,globalAgent:RW,STATUS_CODES:CW,METHODS:jW}=LW.default});var LJ={};h2(LJ,{validateHeaderValue:()=>aW,validateHeaderName:()=>oW,setMaxIdleHTTPParsers:()=>lW,request:()=>iW,maxHeaderSize:()=>pW,globalAgent:()=>nW,get:()=>mW,createServer:()=>dW,ServerResponse:()=>bW,Server:()=>cW,STATUS_CODES:()=>_W,OutgoingMessage:()=>uW,METHODS:()=>SW,IncomingMessage:()=>EW,ClientRequest:()=>TW,Agent:()=>PW});var fW,AW,YJ,gW,XW,yW=(Q,$,q)=>{q=Q!=null?fW(AW(Q)):{};let K=$||!Q||!Q.__esModule?YJ(q,"default",{value:Q,enumerable:!0}):q;for(let J of gW(Q))if(!XW.call(K,J))YJ(K,J,{get:()=>Q[J],enumerable:!0});return K},hW=(Q,$)=>()=>($||Q(($={exports:{}}).exports,$),$.exports),xW,OW,PW,TW,EW,SW,uW,_W,cW,bW,dW,mW,nW,pW,iW,lW,oW,aW;var DJ=x2(()=>{fW=Object.create,{getPrototypeOf:AW,defineProperty:YJ,getOwnPropertyNames:gW}=Object,XW=Object.prototype.hasOwnProperty,xW=hW((Q,$)=>{var q=($9(),y0(q9)),K=(s7(),y0(r7)),J=Q;for(Z in q)if(q.hasOwnProperty(Z))J[Z]=q[Z];var Z;J.request=function(B,W){return B=G(B),q.request.call(this,B,W)},J.get=function(B,W){return B=G(B),q.get.call(this,B,W)};function G(B){if(typeof B==="string")B=K.parse(B);if(!B.protocol)B.protocol="https:";if(B.protocol!=="https:")throw new Error('Protocol "'+B.protocol+'" not supported. Expected "https:"');return B}}),OW=yW(xW(),1),{Agent:PW,ClientRequest:TW,IncomingMessage:EW,METHODS:SW,OutgoingMessage:uW,STATUS_CODES:_W,Server:cW,ServerResponse:bW,createServer:dW,get:mW,globalAgent:nW,maxHeaderSize:pW,request:iW,setMaxIdleHTTPParsers:lW,validateHeaderName:oW,validateHeaderValue:aW}=OW});var A9=globalThis;if(typeof A9.global==="undefined")A9.global=globalThis;a0();var bz=E8(t9());var L9=E8(dK());function H1(Q,$,q,K){function J(Z){return Z instanceof q?Z:new q(function(G){G(Z)})}return new(q||(q=Promise))(function(Z,G){function B(V){try{U(K.next(V))}catch(N){G(N)}}function W(V){try{U(K.throw(V))}catch(N){G(N)}}function U(V){V.done?Z(V.value):J(V.value).then(B,W)}U((K=K.apply(Q,$||[])).next())})}var H0=914400,T8=12700,r0=`\r -`,rW=2147483649,K9=/^[0-9a-fA-F]{6}$/,sW=1.67,tW=27,P6={type:"solid",color:"666666",pt:1},CJ=[0.05,0.1,0.05,0.1],T6={color:"363636",pt:1},$6={color:"888888",style:"solid",size:1,cap:"flat"},z1="000000",f1=12,eW=18,E6="LAYOUT_16x9",B9="DEFAULT",jJ="333333",Q6={type:"outer",blur:3,offset:1.811023622047244,angle:90,color:"000000",opacity:0.35,rotateWithShape:!0},P8=[0.5,0.5,0.5,0.5],HJ={color:"000000"},Qz={size:8,color:"FFFFFF",opacity:0.75},Z2="2094734552",d5="2094734553",h8="2094734554",W9="2094734555",fJ="2094734556",y8="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),x8=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],qz=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"],S6;(function(Q){Q.left="left",Q.center="center",Q.right="right",Q.justify="justify"})(S6||(S6={}));var u6;(function(Q){Q.b="b",Q.ctr="ctr",Q.t="t"})(u6||(u6={}));var AJ="{F7021451-1387-4CA6-816F-3879F97B5CBC}",z9;(function(Q){Q.arraybuffer="arraybuffer",Q.base64="base64",Q.binarystring="binarystring",Q.blob="blob",Q.nodebuffer="nodebuffer",Q.uint8array="uint8array"})(z9||(z9={}));var F9;(function(Q){Q.area="area",Q.bar="bar",Q.bar3d="bar3D",Q.bubble="bubble",Q.bubble3d="bubble3D",Q.doughnut="doughnut",Q.line="line",Q.pie="pie",Q.radar="radar",Q.scatter="scatter"})(F9||(F9={}));var M9;(function(Q){Q.accentBorderCallout1="accentBorderCallout1",Q.accentBorderCallout2="accentBorderCallout2",Q.accentBorderCallout3="accentBorderCallout3",Q.accentCallout1="accentCallout1",Q.accentCallout2="accentCallout2",Q.accentCallout3="accentCallout3",Q.actionButtonBackPrevious="actionButtonBackPrevious",Q.actionButtonBeginning="actionButtonBeginning",Q.actionButtonBlank="actionButtonBlank",Q.actionButtonDocument="actionButtonDocument",Q.actionButtonEnd="actionButtonEnd",Q.actionButtonForwardNext="actionButtonForwardNext",Q.actionButtonHelp="actionButtonHelp",Q.actionButtonHome="actionButtonHome",Q.actionButtonInformation="actionButtonInformation",Q.actionButtonMovie="actionButtonMovie",Q.actionButtonReturn="actionButtonReturn",Q.actionButtonSound="actionButtonSound",Q.arc="arc",Q.bentArrow="bentArrow",Q.bentUpArrow="bentUpArrow",Q.bevel="bevel",Q.blockArc="blockArc",Q.borderCallout1="borderCallout1",Q.borderCallout2="borderCallout2",Q.borderCallout3="borderCallout3",Q.bracePair="bracePair",Q.bracketPair="bracketPair",Q.callout1="callout1",Q.callout2="callout2",Q.callout3="callout3",Q.can="can",Q.chartPlus="chartPlus",Q.chartStar="chartStar",Q.chartX="chartX",Q.chevron="chevron",Q.chord="chord",Q.circularArrow="circularArrow",Q.cloud="cloud",Q.cloudCallout="cloudCallout",Q.corner="corner",Q.cornerTabs="cornerTabs",Q.cube="cube",Q.curvedDownArrow="curvedDownArrow",Q.curvedLeftArrow="curvedLeftArrow",Q.curvedRightArrow="curvedRightArrow",Q.curvedUpArrow="curvedUpArrow",Q.custGeom="custGeom",Q.decagon="decagon",Q.diagStripe="diagStripe",Q.diamond="diamond",Q.dodecagon="dodecagon",Q.donut="donut",Q.doubleWave="doubleWave",Q.downArrow="downArrow",Q.downArrowCallout="downArrowCallout",Q.ellipse="ellipse",Q.ellipseRibbon="ellipseRibbon",Q.ellipseRibbon2="ellipseRibbon2",Q.flowChartAlternateProcess="flowChartAlternateProcess",Q.flowChartCollate="flowChartCollate",Q.flowChartConnector="flowChartConnector",Q.flowChartDecision="flowChartDecision",Q.flowChartDelay="flowChartDelay",Q.flowChartDisplay="flowChartDisplay",Q.flowChartDocument="flowChartDocument",Q.flowChartExtract="flowChartExtract",Q.flowChartInputOutput="flowChartInputOutput",Q.flowChartInternalStorage="flowChartInternalStorage",Q.flowChartMagneticDisk="flowChartMagneticDisk",Q.flowChartMagneticDrum="flowChartMagneticDrum",Q.flowChartMagneticTape="flowChartMagneticTape",Q.flowChartManualInput="flowChartManualInput",Q.flowChartManualOperation="flowChartManualOperation",Q.flowChartMerge="flowChartMerge",Q.flowChartMultidocument="flowChartMultidocument",Q.flowChartOfflineStorage="flowChartOfflineStorage",Q.flowChartOffpageConnector="flowChartOffpageConnector",Q.flowChartOnlineStorage="flowChartOnlineStorage",Q.flowChartOr="flowChartOr",Q.flowChartPredefinedProcess="flowChartPredefinedProcess",Q.flowChartPreparation="flowChartPreparation",Q.flowChartProcess="flowChartProcess",Q.flowChartPunchedCard="flowChartPunchedCard",Q.flowChartPunchedTape="flowChartPunchedTape",Q.flowChartSort="flowChartSort",Q.flowChartSummingJunction="flowChartSummingJunction",Q.flowChartTerminator="flowChartTerminator",Q.folderCorner="folderCorner",Q.frame="frame",Q.funnel="funnel",Q.gear6="gear6",Q.gear9="gear9",Q.halfFrame="halfFrame",Q.heart="heart",Q.heptagon="heptagon",Q.hexagon="hexagon",Q.homePlate="homePlate",Q.horizontalScroll="horizontalScroll",Q.irregularSeal1="irregularSeal1",Q.irregularSeal2="irregularSeal2",Q.leftArrow="leftArrow",Q.leftArrowCallout="leftArrowCallout",Q.leftBrace="leftBrace",Q.leftBracket="leftBracket",Q.leftCircularArrow="leftCircularArrow",Q.leftRightArrow="leftRightArrow",Q.leftRightArrowCallout="leftRightArrowCallout",Q.leftRightCircularArrow="leftRightCircularArrow",Q.leftRightRibbon="leftRightRibbon",Q.leftRightUpArrow="leftRightUpArrow",Q.leftUpArrow="leftUpArrow",Q.lightningBolt="lightningBolt",Q.line="line",Q.lineInv="lineInv",Q.mathDivide="mathDivide",Q.mathEqual="mathEqual",Q.mathMinus="mathMinus",Q.mathMultiply="mathMultiply",Q.mathNotEqual="mathNotEqual",Q.mathPlus="mathPlus",Q.moon="moon",Q.noSmoking="noSmoking",Q.nonIsoscelesTrapezoid="nonIsoscelesTrapezoid",Q.notchedRightArrow="notchedRightArrow",Q.octagon="octagon",Q.parallelogram="parallelogram",Q.pentagon="pentagon",Q.pie="pie",Q.pieWedge="pieWedge",Q.plaque="plaque",Q.plaqueTabs="plaqueTabs",Q.plus="plus",Q.quadArrow="quadArrow",Q.quadArrowCallout="quadArrowCallout",Q.rect="rect",Q.ribbon="ribbon",Q.ribbon2="ribbon2",Q.rightArrow="rightArrow",Q.rightArrowCallout="rightArrowCallout",Q.rightBrace="rightBrace",Q.rightBracket="rightBracket",Q.round1Rect="round1Rect",Q.round2DiagRect="round2DiagRect",Q.round2SameRect="round2SameRect",Q.roundRect="roundRect",Q.rtTriangle="rtTriangle",Q.smileyFace="smileyFace",Q.snip1Rect="snip1Rect",Q.snip2DiagRect="snip2DiagRect",Q.snip2SameRect="snip2SameRect",Q.snipRoundRect="snipRoundRect",Q.squareTabs="squareTabs",Q.star10="star10",Q.star12="star12",Q.star16="star16",Q.star24="star24",Q.star32="star32",Q.star4="star4",Q.star5="star5",Q.star6="star6",Q.star7="star7",Q.star8="star8",Q.stripedRightArrow="stripedRightArrow",Q.sun="sun",Q.swooshArrow="swooshArrow",Q.teardrop="teardrop",Q.trapezoid="trapezoid",Q.triangle="triangle",Q.upArrow="upArrow",Q.upArrowCallout="upArrowCallout",Q.upDownArrow="upDownArrow",Q.upDownArrowCallout="upDownArrowCallout",Q.uturnArrow="uturnArrow",Q.verticalScroll="verticalScroll",Q.wave="wave",Q.wedgeEllipseCallout="wedgeEllipseCallout",Q.wedgeRectCallout="wedgeRectCallout",Q.wedgeRoundRectCallout="wedgeRoundRectCallout"})(M9||(M9={}));var D1;(function(Q){Q.text1="tx1",Q.text2="tx2",Q.background1="bg1",Q.background2="bg2",Q.accent1="accent1",Q.accent2="accent2",Q.accent3="accent3",Q.accent4="accent4",Q.accent5="accent5",Q.accent6="accent6"})(D1||(D1={}));var w9;(function(Q){Q.left="left",Q.center="center",Q.right="right",Q.justify="justify"})(w9||(w9={}));var N9;(function(Q){Q.top="top",Q.middle="middle",Q.bottom="bottom"})(N9||(N9={}));var j2;(function(Q){Q.ACTION_BUTTON_BACK_OR_PREVIOUS="actionButtonBackPrevious",Q.ACTION_BUTTON_BEGINNING="actionButtonBeginning",Q.ACTION_BUTTON_CUSTOM="actionButtonBlank",Q.ACTION_BUTTON_DOCUMENT="actionButtonDocument",Q.ACTION_BUTTON_END="actionButtonEnd",Q.ACTION_BUTTON_FORWARD_OR_NEXT="actionButtonForwardNext",Q.ACTION_BUTTON_HELP="actionButtonHelp",Q.ACTION_BUTTON_HOME="actionButtonHome",Q.ACTION_BUTTON_INFORMATION="actionButtonInformation",Q.ACTION_BUTTON_MOVIE="actionButtonMovie",Q.ACTION_BUTTON_RETURN="actionButtonReturn",Q.ACTION_BUTTON_SOUND="actionButtonSound",Q.ARC="arc",Q.BALLOON="wedgeRoundRectCallout",Q.BENT_ARROW="bentArrow",Q.BENT_UP_ARROW="bentUpArrow",Q.BEVEL="bevel",Q.BLOCK_ARC="blockArc",Q.CAN="can",Q.CHART_PLUS="chartPlus",Q.CHART_STAR="chartStar",Q.CHART_X="chartX",Q.CHEVRON="chevron",Q.CHORD="chord",Q.CIRCULAR_ARROW="circularArrow",Q.CLOUD="cloud",Q.CLOUD_CALLOUT="cloudCallout",Q.CORNER="corner",Q.CORNER_TABS="cornerTabs",Q.CROSS="plus",Q.CUBE="cube",Q.CURVED_DOWN_ARROW="curvedDownArrow",Q.CURVED_DOWN_RIBBON="ellipseRibbon",Q.CURVED_LEFT_ARROW="curvedLeftArrow",Q.CURVED_RIGHT_ARROW="curvedRightArrow",Q.CURVED_UP_ARROW="curvedUpArrow",Q.CURVED_UP_RIBBON="ellipseRibbon2",Q.CUSTOM_GEOMETRY="custGeom",Q.DECAGON="decagon",Q.DIAGONAL_STRIPE="diagStripe",Q.DIAMOND="diamond",Q.DODECAGON="dodecagon",Q.DONUT="donut",Q.DOUBLE_BRACE="bracePair",Q.DOUBLE_BRACKET="bracketPair",Q.DOUBLE_WAVE="doubleWave",Q.DOWN_ARROW="downArrow",Q.DOWN_ARROW_CALLOUT="downArrowCallout",Q.DOWN_RIBBON="ribbon",Q.EXPLOSION1="irregularSeal1",Q.EXPLOSION2="irregularSeal2",Q.FLOWCHART_ALTERNATE_PROCESS="flowChartAlternateProcess",Q.FLOWCHART_CARD="flowChartPunchedCard",Q.FLOWCHART_COLLATE="flowChartCollate",Q.FLOWCHART_CONNECTOR="flowChartConnector",Q.FLOWCHART_DATA="flowChartInputOutput",Q.FLOWCHART_DECISION="flowChartDecision",Q.FLOWCHART_DELAY="flowChartDelay",Q.FLOWCHART_DIRECT_ACCESS_STORAGE="flowChartMagneticDrum",Q.FLOWCHART_DISPLAY="flowChartDisplay",Q.FLOWCHART_DOCUMENT="flowChartDocument",Q.FLOWCHART_EXTRACT="flowChartExtract",Q.FLOWCHART_INTERNAL_STORAGE="flowChartInternalStorage",Q.FLOWCHART_MAGNETIC_DISK="flowChartMagneticDisk",Q.FLOWCHART_MANUAL_INPUT="flowChartManualInput",Q.FLOWCHART_MANUAL_OPERATION="flowChartManualOperation",Q.FLOWCHART_MERGE="flowChartMerge",Q.FLOWCHART_MULTIDOCUMENT="flowChartMultidocument",Q.FLOWCHART_OFFLINE_STORAGE="flowChartOfflineStorage",Q.FLOWCHART_OFFPAGE_CONNECTOR="flowChartOffpageConnector",Q.FLOWCHART_OR="flowChartOr",Q.FLOWCHART_PREDEFINED_PROCESS="flowChartPredefinedProcess",Q.FLOWCHART_PREPARATION="flowChartPreparation",Q.FLOWCHART_PROCESS="flowChartProcess",Q.FLOWCHART_PUNCHED_TAPE="flowChartPunchedTape",Q.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE="flowChartMagneticTape",Q.FLOWCHART_SORT="flowChartSort",Q.FLOWCHART_STORED_DATA="flowChartOnlineStorage",Q.FLOWCHART_SUMMING_JUNCTION="flowChartSummingJunction",Q.FLOWCHART_TERMINATOR="flowChartTerminator",Q.FOLDED_CORNER="folderCorner",Q.FRAME="frame",Q.FUNNEL="funnel",Q.GEAR_6="gear6",Q.GEAR_9="gear9",Q.HALF_FRAME="halfFrame",Q.HEART="heart",Q.HEPTAGON="heptagon",Q.HEXAGON="hexagon",Q.HORIZONTAL_SCROLL="horizontalScroll",Q.ISOSCELES_TRIANGLE="triangle",Q.LEFT_ARROW="leftArrow",Q.LEFT_ARROW_CALLOUT="leftArrowCallout",Q.LEFT_BRACE="leftBrace",Q.LEFT_BRACKET="leftBracket",Q.LEFT_CIRCULAR_ARROW="leftCircularArrow",Q.LEFT_RIGHT_ARROW="leftRightArrow",Q.LEFT_RIGHT_ARROW_CALLOUT="leftRightArrowCallout",Q.LEFT_RIGHT_CIRCULAR_ARROW="leftRightCircularArrow",Q.LEFT_RIGHT_RIBBON="leftRightRibbon",Q.LEFT_RIGHT_UP_ARROW="leftRightUpArrow",Q.LEFT_UP_ARROW="leftUpArrow",Q.LIGHTNING_BOLT="lightningBolt",Q.LINE_CALLOUT_1="borderCallout1",Q.LINE_CALLOUT_1_ACCENT_BAR="accentCallout1",Q.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR="accentBorderCallout1",Q.LINE_CALLOUT_1_NO_BORDER="callout1",Q.LINE_CALLOUT_2="borderCallout2",Q.LINE_CALLOUT_2_ACCENT_BAR="accentCallout2",Q.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR="accentBorderCallout2",Q.LINE_CALLOUT_2_NO_BORDER="callout2",Q.LINE_CALLOUT_3="borderCallout3",Q.LINE_CALLOUT_3_ACCENT_BAR="accentCallout3",Q.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR="accentBorderCallout3",Q.LINE_CALLOUT_3_NO_BORDER="callout3",Q.LINE_CALLOUT_4="borderCallout4",Q.LINE_CALLOUT_4_ACCENT_BAR="accentCallout3=4",Q.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR="accentBorderCallout4",Q.LINE_CALLOUT_4_NO_BORDER="callout4",Q.LINE="line",Q.LINE_INVERSE="lineInv",Q.MATH_DIVIDE="mathDivide",Q.MATH_EQUAL="mathEqual",Q.MATH_MINUS="mathMinus",Q.MATH_MULTIPLY="mathMultiply",Q.MATH_NOT_EQUAL="mathNotEqual",Q.MATH_PLUS="mathPlus",Q.MOON="moon",Q.NON_ISOSCELES_TRAPEZOID="nonIsoscelesTrapezoid",Q.NOTCHED_RIGHT_ARROW="notchedRightArrow",Q.NO_SYMBOL="noSmoking",Q.OCTAGON="octagon",Q.OVAL="ellipse",Q.OVAL_CALLOUT="wedgeEllipseCallout",Q.PARALLELOGRAM="parallelogram",Q.PENTAGON="homePlate",Q.PIE="pie",Q.PIE_WEDGE="pieWedge",Q.PLAQUE="plaque",Q.PLAQUE_TABS="plaqueTabs",Q.QUAD_ARROW="quadArrow",Q.QUAD_ARROW_CALLOUT="quadArrowCallout",Q.RECTANGLE="rect",Q.RECTANGULAR_CALLOUT="wedgeRectCallout",Q.REGULAR_PENTAGON="pentagon",Q.RIGHT_ARROW="rightArrow",Q.RIGHT_ARROW_CALLOUT="rightArrowCallout",Q.RIGHT_BRACE="rightBrace",Q.RIGHT_BRACKET="rightBracket",Q.RIGHT_TRIANGLE="rtTriangle",Q.ROUNDED_RECTANGLE="roundRect",Q.ROUNDED_RECTANGULAR_CALLOUT="wedgeRoundRectCallout",Q.ROUND_1_RECTANGLE="round1Rect",Q.ROUND_2_DIAG_RECTANGLE="round2DiagRect",Q.ROUND_2_SAME_RECTANGLE="round2SameRect",Q.SMILEY_FACE="smileyFace",Q.SNIP_1_RECTANGLE="snip1Rect",Q.SNIP_2_DIAG_RECTANGLE="snip2DiagRect",Q.SNIP_2_SAME_RECTANGLE="snip2SameRect",Q.SNIP_ROUND_RECTANGLE="snipRoundRect",Q.SQUARE_TABS="squareTabs",Q.STAR_10_POINT="star10",Q.STAR_12_POINT="star12",Q.STAR_16_POINT="star16",Q.STAR_24_POINT="star24",Q.STAR_32_POINT="star32",Q.STAR_4_POINT="star4",Q.STAR_5_POINT="star5",Q.STAR_6_POINT="star6",Q.STAR_7_POINT="star7",Q.STAR_8_POINT="star8",Q.STRIPED_RIGHT_ARROW="stripedRightArrow",Q.SUN="sun",Q.SWOOSH_ARROW="swooshArrow",Q.TEAR="teardrop",Q.TRAPEZOID="trapezoid",Q.UP_ARROW="upArrow",Q.UP_ARROW_CALLOUT="upArrowCallout",Q.UP_DOWN_ARROW="upDownArrow",Q.UP_DOWN_ARROW_CALLOUT="upDownArrowCallout",Q.UP_RIBBON="ribbon2",Q.U_TURN_ARROW="uturnArrow",Q.VERTICAL_SCROLL="verticalScroll",Q.WAVE="wave"})(j2||(j2={}));var F0;(function(Q){Q.AREA="area",Q.BAR="bar",Q.BAR3D="bar3D",Q.BUBBLE="bubble",Q.BUBBLE3D="bubble3D",Q.DOUGHNUT="doughnut",Q.LINE="line",Q.PIE="pie",Q.RADAR="radar",Q.SCATTER="scatter"})(F0||(F0={}));var p5;(function(Q){Q.TEXT1="tx1",Q.TEXT2="tx2",Q.BACKGROUND1="bg1",Q.BACKGROUND2="bg2",Q.ACCENT1="accent1",Q.ACCENT2="accent2",Q.ACCENT3="accent3",Q.ACCENT4="accent4",Q.ACCENT5="accent5",Q.ACCENT6="accent6"})(p5||(p5={}));var C2;(function(Q){Q.chart="chart",Q.image="image",Q.line="line",Q.rect="rect",Q.text="text",Q.placeholder="placeholder"})(C2||(C2={}));var D0;(function(Q){Q.chart="chart",Q.hyperlink="hyperlink",Q.image="image",Q.media="media",Q.online="online",Q.placeholder="placeholder",Q.table="table",Q.tablecell="tablecell",Q.text="text",Q.notes="notes"})(D0||(D0={}));var O8;(function(Q){Q.title="title",Q.body="body",Q.image="pic",Q.chart="chart",Q.table="tbl",Q.media="media"})(O8||(O8={}));var _6;(function(Q){Q.DEFAULT="•",Q.CHECK="✓",Q.STAR="★",Q.TRIANGLE="▶"})(_6||(_6={}));var c6="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAB3CAYAAAD1oOVhAAAGAUlEQVR4Xu2dT0xcRRzHf7tAYSsc0EBSIq2xEg8mtTGebVzEqOVIolz0siRE4gGTStqKwdpWsXoyGhMuyAVJOHBgqyvLNgonDkabeCBYW/8kTUr0wsJC+Wfm0bfuvn37Znbem9mR9303mJnf/Pb7ed95M7PDI5JIJPYJV5EC7e3t1N/fT62trdqViQCIu+bVgpIHEo/Hqbe3V/sdYVKHyWSSZmZm8ilVA0oeyNjYmEnaVC2Xvr6+qg5fAOJAz4DU1dURGzFSqZRVqtMpAFIGyMjICC0vL9PExIRWKADiAYTNshYWFrRCARAOEFZcCKWtrY0GBgaUTYkBRACIE4rKZwqACALR5RQAqQCIDqcASIVAVDsFQCSAqHQKgEgCUeUUAPEBRIVTAMQnEBvK5OQkbW9vk991CoAEAMQJxc86BUACAhKUUwAkQCBBOAVAAgbi1ykAogCIH6cAiCIgsk4BEIVAZJwCIIqBVLqiBxANQFgXS0tLND4+zl08AogmIG5OSSQS1gGKwgtANAIRcQqAaAbCe6YASBWA2E6xDyeyDUl7+AKQMkDYYevm5mZHabA/Li4uUiaTsYLau8QA4gLE/hU7wajyYtv1hReDAiAOxQcHBymbzark4BkbQKom/X8dp9Npmpqasn4BIAYAYSnYp+4BBEAMUcCwNOCQsAKZnp62NtQOw8WmwT09PUo+ijaHsOMx7GppaaH6+nolH0Z10K2tLVpdXbW6UfV3mNqBdHd3U1NTk2rtlMRfW1uj2dlZAFGirkRQAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAGHqrm8caPzQ0WC1logbeiC7X3xJm0PvUmRzh45cuki1588FAmVn9BO6P3yF9utrqGH0MtW82S8UN9RA9v/4k7InjhcJFTs/TLVXLwmJV67S7vD7tHF5pKi46fYdosdOcOOGG8j1OcqefbFEJD9Q3GCwDhqT31HklS4A8VRgfYM2Op6k3bt/BQJl58J7lPvwg5JYNccepaMry0LPqFA7hCm39+NNyp2J0172b19QysGINj5CsRtpij57musOViH0QPJQXn6J9u7dlYJSFkbrMYolrwvDAJAC+WWdEpQz7FTgECeUCpzi6YxvvqXoM6eEhqnCSgDikEzUKUE7Aw7xuHctKB5OYU3dZlNR9syQdAaAcAYTC0pXF+39c09o2Ik+3EqxVKqiB7hbYAxZkk4pbBaEM+AQofv+wTrFwylBOQNABIGwavdfe4O2pg5elO+86l99nY58/VUF0byrYsjiSFluNlXYrOHcBar7+EogUADEQ0YRGHbzoKAASBkg2+9cpM1rV0tK2QOcXW7bLEFAARAXIF4w2DrDWoeUWaf4hQIgDiA8GPZ2iNfi0Q8UACkAIgrDbrJ385eDxaPLLrEsFAB5oG6lMPJQPLZZZKAACBGVhcG2Q+bmuLu2nk55e4jqPv1IeEoceiBeX7s2zCa5MAqdstl91vfXwaEGsv/rb5TtOFk6tWXOuJGh6KmnhO9sayrMninPx103JBtXblHkice58cINZP4Hyr5wpkgkdiChEmc4FWazLzenNKa/p0jncwDiqcD6BuWePk07t1asatZGoYQzSqA4nFJ7soNiP/+EUyfc25GI2GG53dHPrKo1g/1Cw4pIXLrzO+1c+/wg7tBbFDle/EbQcjFCPWQJCau5EoBoFpzXHYDwFNJcDiCaBed1ByA8hTSXA4hmwXndAQhPIc3lAKJZcF53AMJTSHM5gGgWnNcdgPAU0lwOIJoF53UHIDyFNJcfSiCdnZ0Ui8U0SxlMd7lcjubn561gh+Y1scFIU/0o/3sgeLO12E2k7UXKYumgFoAYdg8ACIAYpoBh6cAhAGKYAoalA4cAiGEKGJYOHAIghilgWDpwCIAYpoBh6cAhAGKYAoalA4cAiGEKGJYOHAIghilgWDpwCIAYpoBh6ZQ4JB6PKzviYthnNy4d9h+1M5mMlVckkUjsG5dhiBMCEMPg/wuOfrZZ/RSywQAAAABJRU5ErkJggg==",$z="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAVnCAYAAACzfHDVAAAAYHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjaVcjJDYAwDEXBu6ughBfH+YnLQSwSHVA+Yrkwx7HtPHabHuEWrQ+lBBAZ6TMweBWoCwUH8quZH6VWFXVT696zxp12ARkVFEqn8wB8AAAACXBIWXMAAC4jAAAuIwF4pT92AADZLklEQVR42uzdd5hV9Z0/8M+dmcsUZmDovYOhKCiKYhR7JJuoSTCWGFI0WUxijBoTTXazVlyza4maYm9rTRSJigVsqCDNQhHBAogKCEgRMjMMU+7vj93sL8kqClLmnPt6PY+PeXZM9vP9vO8jZ+Y955xMfJLjorBrRMuSgmiViyjN1Ee2oSCyucbIBAAAAAAAAADbXaYgcoWNUZcrirpMbdRsysa69wbF+rggGrf439vSF7seF12aFUTnxvoosGIAAAAAAACAXacgoqEgF++/VRgr4r5o+Kh/pvD//F8uiII+LaPrum/EXzqui2b1ddHGKgEAAAAAAAB2rVxEQWMmWrQtjHZlA6N2w2tR84//zP8pgHu3ib6NBdG+zdqorK6KVUXZaB85j3sGAAAAAAAAaAoaG6OwIBdtyneP2PBabPzbr/1dAdx3VHRtyESHiIhcYzQrLo7WmVzkcjmPgAYAAAAAAABoSgpy0eIfS+D/LYD7fy3abC6Inn/7X2hsjELlLwAAAAAAAEDT9D8lcM1fHwddFBFxyAVR9M686PVp/gfqayKiJiLqLBMAAAAAAABgh8hGRGlEUekn/6PFEb3ikNgQk6O+KCJi6dzoksv83/cB/1X9xoiaJdmoWxlRV1dk2QAAAAAAAAA7QTZbH9muERX96v7n9t7/q6Exinq3i86LI94pjOOisHUu+uYykfmof7h+Y8Sa6aVRt74gGhs9DRoAAAAAAABgZ2lsLIi69QWxeUUmSjs0/vedwR8hk4uydSfE+wVd6qOyMfMx7/mtj9jwUtbjngEAAAAAAAB2obrqolg7IxtR/9Ffb4wo7P5GtCwobRaVH/c/UvNmNuqqPfIZAAAAAAAAYFerqy6KmjezH/v1ktpoVZBr/PgCeMN7yl8AAAAAAACApmJLHW5jUVQWNDSP+Q3ZeLco4i9/+8X6teHRzwAAAAAAAABNSd3/dLn/oLAoqqIuVhXFxhhSGB/xqGjlLwAAAAAAAECTU1eTjaK/KXSLIv7SWB+bc5ko9YxnAAAAAAAAgATJFv393bz1EeV//c8F1gMAAAAAAACQDgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3+NLkFRQURK9evWLQoEExePDg6Natm6U0EdXV1UvuvvvuX//kJz+ZYxsAAMCnpQAGAIAEOuqoo1r99re//VmHDh0Ot41da9OmTTF79uyYO3duLFy4MKqqqiyFRGvevHn0798/Bg8eHHvuuWeUlJRYyi62cuXKp04//fTLJ0yYsM42AACAT6IABgCAhBk3btwRRxxxxFnZbLaNbewaVVVVMXfu3Jg7d27Mnz8/amtrLYVUKi4ujoEDB8bgwYNj8ODBUV5ebim7SF1d3ZqnnnrqqlGjRj1hGwAAwJYogAEAICFOOeWUjhdddNEvW7duvZ9t7HwrV66MWbNmxdy5c+Odd96JXC5nKeSdzp07x9577x3Dhg2LDh06WMgusHbt2hnnnXfepbfccsv7tgEAAHwUBTAAADRxpaWlBU899dQ3Bw8e/L2CggLPYt2JVqxYES+99FK89NJLsXz5cguBv/HXMnjvvfeOTp06WchO1NjYuGnu3Lk3H3744XfV1NR40TgAAPB3FMAAANCEjR49usOll176yzZt2gy3jZ1j/fr18eKLL8bMmTNj6dKlFgKfQs+ePWPfffeNYcOGRYsWLSxkJ1mzZs0L55577q/vvvvuVbYBAAD8lQIYAACaoIqKioKJEyd+c/Dgwd8vKCgotpEda8OGDfHiiy/G9OnTlb7wGfXo0SOGDx8ew4YNi4qKCgvZwdwNDAAA/CMFMAAANDGnnHJKx7Fjx/5rZWXlMNvYcerr6+PVV1+NGTNmxLx586Kurs5SYDvKZrMxZMiQ2HfffWP33XePwsJCS9mB1q5dO+MXv/jFv995550rbQMAAPKbAhgAAJqIbDabeeKJJ47fZ599fuSu3x0jl8vFwoULY/r06TF79uzYtGmTpcBOUFpaGkOGDInhw4fHgAEDLGQHaWhoqJ42bdo1Rx555J9tAwAA8pcCGAAAmoDjjz++7ZVXXvmr1q1be9fvDrBmzZqYNm1azJw5M1audHMc7EodO3aMz3/+87H//vt7X/CO+3fetDPPPPOScePGfWAbAACQfxTAAACwi9100037HXvssf9WXFzc1ja2n1wuF6+99lo8//zzMW/evKivr7cUaEKKiopizz33jBEjRsTnPve5yGQylrId1dbWrvrjH/948Q9+8INZtgEAAPlFAQwAALvIkCFDSu+///5zunTp8k+2sf2sXbs2Jk+eHNOnT48PP/zQQiABKisrY8SIEXHIIYdEeXm5hWxHy5Yte+zrX//6f86ZM6fGNgAAID9sqQAurBwYXT/qC41VETUrsrYHAADb6IILLtjt97///VVt2rQZZhvbx+LFi2P8+PFx9913xxtvvBG1tbWWAgmxadOmeOONN+LZZ5+NtWvXRps2bTweejtp0aJFv5NOOumg0tLSuc8+++xaGwEAgPQr61wfBR/zu7XuAAYAgO0sm81mJk2a9PVhw4b9pKCgwG9VfkZ1dXUxY8aMeOaZZ+K9996zEEiRfv36xSGHHBJDhw6NgoICC/mMGhsbN8+YMeOaL37xi+Pq6upyNgIAAOnlEdAAALCTHH/88W2vuuqqCyorK/exjc9mzZo18dRTT8XUqVNj06ZNFgIpVlFREZ///OfjsMMOi8rKSgv5jNavXz/r9NNPv3DcuHEf2AYAAKSTAhgAAHaC22677fNf+9rXzstms5W2se0WLVoUjz/+eMybNy9yOTewQT4pKiqKIUOGxBFHHBG9e/e2kM+grq5u3QMPPHDRySefPM02AAAgfRTAAACwA1VUVBQ8/fTTpwwcOPCUTCbjGabbIJfLxauvvhpPPvlkLFy40EIgz2UymRgwYEAcccQRMWjQIAvZ9n+3Ns6fP/+Www8//JaNGzc22ggAAKTHlgrgwsqB0fWjvtBYFVGzwuvKAABgS0488cR2EyZMuLx79+5fzmQyGRvZOo2NjTFr1qy49dZb48knn4wPPvC0UuC/rV69OmbMmBFz5syJ0tLS6NSpU/jX7NbJZDKZ9u3bD/3+978/dPny5TNfffXValsBAIB0KOtcHwXlH/O9gDuAAQBg29x66637H3vssRcWFRW1sI2tU1NTE0899VQ8++yzsWHDBgsBPlGLFi3i4IMPjsMPPzxKS/28YmvV19d/OG7cuPNPPvnk6bYBAADJ5xHQAACwHWWz2cyzzz77rSFDhvzAI5+3zqZNm2Ly5Mnx1FNPKX6BbdKiRYs47LDD4pBDDlEEb6VcLtfwyiuvXHfooYfeWVdX5yXrAACQYApgAADYTo455pjW11133cWVlZV728ant2HDhnj88cdjypQpUVtbayHAZ1ZcXBwHHnhgfPGLX4wWLTyIYWusWbNm2re//e3zn3nmGb+JAwAACeUdwAAAsB1cfvnlu1900UW/LS8v72cbn05VVVVMmDAhbrnllnjzzTejoaHBUoDtoqGhIZYsWRLPPfdc1NTURI8ePSKb9XOMT6OsrKzb17/+9SPbtm0774knnlhtIwAAkMDreu8ABgCAz+bhhx/+8qGHHnpOQUFBsW18sk2bNsUzzzwTTzzxRFRVVVkIsMOVl5fHkUceGYccckgUF/tX9afR2Ni46emnn/71Mccc87htAABAsngENAAAbKN27doVTZ48+YxevXodZxufrK6uLp5++umYOHGi4hfYJSoqKuKLX/xiHHzwwe4I/pQWLVr0x4MOOuiadevWeUwDAAAkhEdAAwDANjj22GPbPvzww7/p2LHjobaxZXV1dfHkk0/GddddF3Pnzo26ujpLAXaJzZs3x2uvvRbPPfdcRET06NEjCgsLLWYLWrduvfv3vve9fd9+++1pCxYsqLYRAABo+rb0CGgFMAAAfITLL7989wsuuOB3zZs372UbH6+xsTGmTJkS119/fbzyyiuKX6DJ2Lx5cyxYsCCmT58excXF0a1bt8hkMhbzMUpKSjp8+ctfPrJt27ZzvBcYAACaPu8ABgCArTB+/Pgjv/CFL/xLQUFBiW18vAULFsT48eNj6dKllgE0eT169IivfOUrMWjQIMvYgsbGxpqJEydecuyxxz5pGwAA0HR5BzAAAHwK7dq1K3ruued+1qNHj6/axsdbtGhR3H///bF48WLLABKnV69ecdxxx0WfPn0sYwuWLl3654MOOujy1atX19sGAAA0Pd4BDAAAn2DYsGHNn3766V936tTpC7bx0TZs2BD33Xdf/PGPf4y1a9daCJBI69evj2nTpsW6deuiZ8+eUVLiYQ8fpbKysv+3v/3t/lOmTJmyfPlyz/cHAIAmxjuAAQBgC372s5/1uP76669t0aKF54J+hJqamhg/fnzcfPPN8fbbb0cul7MUINFyuVy888478cwzz0RVVVX07t07slk/A/lHZWVl3U488cTD6+rqZkyfPv1DGwEAgCZ0va4ABgCAj3bFFVfscdZZZ11dXFzcwTb+Xi6XixkzZsR1110XCxYsiMbGRksBUqWxsTGWLFkSM2bMiPLy8ujSpUtkMhmL+RvZbLbFQQcddHibNm1mP/HEE6ttBAAAmoYtFcDeAQwAQN6aNGnSqAMOOODsTCZTaBt/b9GiRXHPPffEu+++axlA3ujWrVucdNJJ0bt3b8v4B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibjeqq+vj6lTpwoNdqK2bdvG6NGj47zzzovhw4crggGaoBdeeCHq6+sTMWsmkyk844wzDpUaAAB+wgAAsIP079//C0mZdc6cObFhwwahwS7QqVOnOPnkk+Pf/u3fYu+9945MJmMpAE3Ehg0bYvbs2YmZd8CAAR4DDQCAAhgAYEf43ve+16mysnKPpMybpMcbQlp17tw5xowZE7/61a8UwQBNyPPPP5+YWSsrKwd/73vf6yQ1AID8pgAGANgBTj755CMiIhHtzcqVK+P1118XGjQRXbt2jTFjxsQ555wTgwcPthCAXez111+PlStXJmXczMknn3y41AAA8psCGABgB+jXr19iHv88ZcqUyOVyQoMmpnfv3nHaaafFOeecE/3797cQgF0kl8vFlClTknQd6jHQAAB5TgEMALCdnX766d0qKip2S8Ks9fX1MW3aNKFBE9anT58466yz4pxzzonddtvNQgB2gWnTpkV9fX0iZq2oqNjt9NNP7yY1AID8pQAGANjORo8efURSZp03b15s3LhRaJAAffr0ibPPPjvOPPPM6Nmzp4UA7EQbN26MefPmuR4FACARFMAAANtZr169EvPetSQ9zhD4bwMGDIhf/vKXceaZZ0b37t0tBGAnmTp1apKuRw+TGABA/lIAAwBsR2eccUb38vLyvkmYdf369fHaa68JDRJqwIAB8S//8i9x2mmnRbdunvQJsKPNnz8/Pvzww0TMWl5e3u9HP/pRF6kBAOQnBTAAwHZ03HHHHZSUWWfMmBGNjY1CgwTLZDIxePDg+Nd//dcYM2ZMdOjQwVIAdpDGxsaYMWNGYub9xje+cYjUAADykwIYAGA76tOnz8FJmDOXyyXqMYbAlmUymdh7773jwgsvjDFjxkT79u0tBWAHeOGFF5J0XXqIxAAA8pMCGABgOznppJPat2zZcvckzLpkyZJYuXKl0CBl/loEX3DBBXHyySdH27ZtLQVgO1qxYkW8/fbbiZi1srJy0PHHH+8PAgCAPKQABgDYTr773e8eGBGZJMyapMcXAluvsLAwhg8fHhdeeGGMHj06KisrLQVgO5k+fXpSRi34/ve/f6DEAADyjwIYAGA72X333Q9Nwpz19fUxc+ZMgUEeKCoqihEjRsQll1wSo0ePjpYtW1oKwGc0c+bMqK+vT8SsAwcOPFRiAAD5RwEMALAdHHTQQRUtW7bcKwmzLly4MKqrq4UGeeSvRfDFF18cJ5xwQrRo0cJSALZRVVVVvP7664mYtVWrVkOHDx9eLjUAgPyiAAYA2A7OPvvsz2cymaIkzOrxz5C/iouL47DDDouxY8fGqFGjoqyszFIAtkFSnqaSyWSy55577uclBgCQXxTAAADbwe67735AEuasra2NOXPmCAzyXHFxcYwcOTIuvfRSRTDANpg9e3bU1dUlYtY99tjjAIkBAOQXBTAAwGfUqlWrwnbt2u2fhFnnzZsXtbW1QgMiIqKkpCRGjhwZY8eOjaOPPjpKSkosBeBT2LRpU8ybNy8Rs7Zv337/iooKPwMEAMgjLv4AAD6jCy+8cPeioqKKJMz64osvCgz4P5o3bx5HHXVUXHLJJTFy5MjIZrOWAvAJZs2alYg5i4qKWlx88cWDJAYAkD8UwAAAn9GBBx6YiMfqVVdXJ+ZOFWDXKC8vj1GjRsWll16qCAb4BPPmzYuamppEzHrQQQd5DDQAQB5RAAMAfEZdu3YdnoQ5582bF/X19QIDPlFFRUWMGjUqLr744jj88MOjqKjIUgD+QV1dXbz66quJmLVLly77SwwAIH8ogAEAPoNTTjmlY3l5+W5JmPXll18WGLBVWrVqFccff3xcdNFFMWLEiCgo8C0kwN966aWXEjFnRUXFbieddFJ7iQEA5AffvQMAfAYnnnji55MwZ21tbcyfP19gwDZp06ZNjB49OsaOHasIBvgb8+fPj9ra2iSMmvnud7/7eYkBAOQH37UDAHwGn/vc5/ZLwpwLFy6Muro6gQGfyV+L4PPOOy+GDx+uCAby3ubNm2PhwoWJmLVfv37DJQYAkB98tw4AsI1atWpV2Lp1672TMKvHPwPbU6dOneLkk0+Oc889NwYNGmQhQF6bPXt2IuZs06bN3hUVFX4WCACQB1z0AQBso/PPP39gYWFheVOfs76+PubMmSMwYLvr2bNn/OQnP4nzzjsv9t5778hkMpYC5J3Zs2dHfX19k5+zqKio4vzzzx8oMQCA9FMAAwBso/3333/fJMz5+uuvR01NjcCAHaZLly4xZsyYOOecc2Lw4MEWAuSV6urqeOONNxIx64EHHriPxAAA0k8BDACwjbp27ZqIxz/PnTtXWMBO0bt37zjttNPinHPOif79+1sIkDeScr3VvXv3vaUFAJB+CmAAgG0wZMiQ0srKyj2a+py5XM7jn4Gdrk+fPnHWWWfFOeecE7vttpuFAKk3e/bsyOVyTX7Oli1b7jlo0KBSiQEApJsCGABgG5x55pl7ZjKZbFOfc9myZbFu3TqBAbtEnz594uyzz44zzzwzevbsaSFAaq1bty6WL1/e5OfMZDLZs846a4jEAADSrcgKAAC23tChQ4clYc558+YJC9jlBgwYEAMGDIgFCxbE+PHjY+nSpZYCpM68efOiS5cuTX7OffbZZ5+ImC4xAID0cgcwAMA26Nix4z5JmHP+/PnCApqMAQMGxC9/+cs47bTTolu3bhYCpEpSrrs6deq0j7QAANJNAQwAsJWOOOKIlhUVFf2a+pxVVVWxaNEigQFNSiaTicGDB8e//uu/xpgxY6JDhw6WAqTCW2+9FVVVVU1+zoqKis8deuihLSQGAJBeCmAAgK108sknD46ITFOfc/78+dHY2CgwoEnKZDKx9957x4UXXhhjxoyJ9u3bWwqQaI2NjbFgwYJE/Cv4u9/97h4SAwBILwUwAMBW2n333fdMwpze/wskwV+L4AsuuCBOPvnkaNu2raUAiZWU66/BgwfvKS0AgPQqsgIAgK3Trl27wU19xlwul5Q7UAAiIqKwsDCGDx8e++yzT0ybNi0mTJgQ69evtxggURYsWBC5XC4ymab9sJgOHToMlhYAQHq5AxgAYCsMGjSotGXLlgOa+pzvvfdebNy4UWBA4hQVFcWIESPikksuidGjR0fLli0tBUiMDz/8MJYtW9bk52zZsuXA/v37l0gMACCdFMAAAFvhxz/+8aBMJtPkn6Li7l8g6f5aBI8dOzZOOOGEaNGihaUAibBw4cImP2Mmk8n+5Cc/GSAtAIB0UgADAGyFvffee88kzJmEHzwCfBrNmjWLww47LMaOHRujRo2KsrIySwGatKT8Il5SrmsBANh63gEMALAVunbtOqSpz1hfXx9vvvmmsIBUKS4ujpEjR8bBBx8czz77bDz++ONRXV1tMUCT8+abb0Z9fX0UFTXtH7t16dJlT2kBAKSTO4ABAD6lioqKgoqKikFNfc4lS5bE5s2bBQakUklJSYwcOTLGjh0bRx99dJSUeIUl0LTU1tbG0qVLm/ycLVu2HFRaWupngwAAKeQiDwDgUzr77LP7FhYWNvlnj7722mvCAlKvefPmcdRRR8Ull1wSI0eOjGbNmlkK4HpsKxQWFpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee2kNaAADp4A5gAIAt2Hvvvfs29RlXrlwZtbW1wgLYSf5aBO+5554xa9asmDBhQqxevdpigI9UW1sb77//fnTu3LlJzzls2LC+EbFIYgAAyecOYACALejRo0eTL4DfeecdQQHsAoWFhTF8+PC48MILY/To0VFZWWkpQGKv15Jw3QsAwKejAAYA2ILWrVs3+ff/vvvuu4IC2IUKCwtjxIgRcckll8To0aOjZcuWlgIk7notCde9AAB8Oh4BDQCwBc2bN+/Z1GdUAAM0kW+wi4pixIgRsd9++8WUKVPiscceiw0bNlgMEO+9914SrnsVwAAAKeEOYACAj9G/f/+SkpKSjk19TgUwQNPSrFmzOOyww2Ls2LExatSoKCsrsxTIc0m4XistLe3Ut2/fYmkBACSfAhgA4GOccMIJ3Zr69dK6deuiqqpKWABNUHFxcYwcOTJ+/etfK4Ihz1VVVcX69eub+pgF3/zmN7tLCwAg+RTAAAAfY8iQIT2b+oxJeJwgQL77axE8duzYOProo6OkpMRSIA8l4botCde/AAB8MgUwAMDH6N69e8+mPqPHPwMkR/PmzeOoo46KSy65JEaOHBnNmjWzFMgjSbhuS8L1LwAAn0wBDADwMVq1atWjqc+4bNkyQQEkTHl5eYwaNSr+/d//PUaOHBnZbNZSIA8k4botCde/AAB8MgUwAMDHqKio6NXUZ1y+fLmgAJL750yMGjUqLr744jj88MOjqKjIUiDFknDd1rJly16SAgBIPgUwAMBHyGazmbKysq5NecbGxsZYtWqVsAASrlWrVnH88cfHxRdfHCNGjIiCAt+qQxqtWrUqGhsbm/SMJSUlXbPZbEZaAADJ5rtKAICPcNxxx7UrKCgobsozrl69Ourr64UFkBKtW7eO0aNHx9ixYxXBkEJ1dXXxwQcfNOkZCwoKio877rh20gIASDbfTQIAfITPf/7zXZr6jO+//76gAFKoTZs2MXr06Dj//PNj+PDhimBIkRUrVrgOBgBgh/NdJP+PvTuPr7I888d/nSwEkhD2HUQEUVRAoIiouCtq64Jabd1arVorbqO2tlXbaavTOu38Rqffdmpbu9rWpYogsqgFRXCttAIKArJDgAAJBLKQ5JzfH8WO4+DOcp6T9/v18jWvTv657ut6hNvnk/t+AICd2G+//bL+xVcSXiAC8PF17do1Lr300rj99ttj2LBhkUq5lRWSLgn7tyTsgwEAeH8FWgAA8H917txZAAxAVujevXtceeWVsXr16njiiSdi9uzZkclkNAYSKAn7tyTsgwEAeH8CYACAnWjXrp0roAHIKj169Igrr7wyli5dGpMmTYo5c+ZoCiRMEvZvSdgHAwDw/gTAAAA7UVxc3D3baxQAAzRPffr0ibFjx8aSJUti/PjxsWDBAk2BhEjC/i0J+2AAAN6fbwADAOxESUlJz2yur7q6Ourq6gwKoBnbb7/94l/+5V/ia1/7WhxwwAEaAglQV1cX1dXV9sEAAOxWAmAAgHc5/PDDSwsKCtpmc40VFRUGBUBERPTt2zduvPHGuOGGG2LffffVEMhy2b6PKygoaDt8+PASkwIASC4BMADAu5x44oldsr3GDRs2GBQA/8uAAQPiG9/4Rtxwww3Ru3dvDQH7uE+yH+5qUgAAyeUbwAAA79KvX7+sD4DXr19vUADs1IABA+LAAw+MuXPnxoQJE2LlypWaAlkkCTe5HHDAAV0i4i3TAgBIJgEwAMC7dO/evXO21+gEMADvJ5VKxaBBg2LgwIExe/bsGD9+fKxbt05jwD4uZ/bDAAC8NwEwAMC7tG/fvlO21ygABuDDSKVSMWzYsBg6dGjMnj07HnvsMbdIwF6WhBPASdgPAwDw3gTAAADv0rp166w/8ZCEF4cAZI+3g+BDDz00XnnllZg4caK/S8A+LtH7YQAA3psAGADgXUpKSrL6xENjY2Ns3rzZoAD4yPLz8+Pwww+P4cOHx/PPPx8TJ06MqqoqjYE9aPPmzdHY2BgFBdn7Wi7b98MAALw/ATAAwLu0bNmySzbXV1lZGZlMxqAA+Njy8/Nj1KhRMXLkyHjhhRcEwbAHZTKZqKqqio4dO9oPAwCwWwiAAQDepaioKKuvvKusrDQkAHaJgoKCGDVqVIwYMSJmzpwZkydPji1btmgM7IH9XDYHwNm+HwYA4P3laQEAwP8YPnx4SX5+fkk21ygABmBXa9GiRRx//PFxxx13xNlnnx0lJSWaAs14P5efn18yfPhwfxAAACSUABgA4B2OOOKIDtleo+//ArC7FBUVxejRo+P73/9+nH322VFcXKwpsBsk4cr1JOyLAQDYOQEwAMA79O3bt1221+gEMAC729tB8B133BGnn356tGrVSlOgme3n9ttvv7YmBQCQTAJgAIB36NSpkwAYAHYoKSmJz3zmM3HnnXfG6NGjo0WLFpoCzWQ/l4R9MQAAOycABgB4hw4dOrTN9hqTcGUgALmlpKQkzj777PjOd74To0aNivz8fE2BHN/PJWFfDADAzgmAAQDeoaysrG221ygABmBvad++fVx00UVx5513xgknnBCFhYWaAjm6nysrK3MCGAAgoQTAAADvUFJS0j6b68tkMlFdXW1QAOxV7dq1i/POOy+++93vxqhRoyIvz+sF+CiSsJ8rLS0VAAMAJJT/QgMAeIfi4uK22VxfXV1dNDY2GhQAWeHtE8F33HGHIBg+gsbGxqirq7MvBgBgt/BfZgAA79CqVausPung9C8A2ahDhw5x0UUXxbe//e04/PDDBcGQA/u6oqIiJ4ABABLKf5EBALxDQUGBABgAPqauXbvGpZdeGt/61rdi2LBhkUqlNAUSuq9r0aJFW1MCAEimAi0AAPgfhYWFZdlc39atWw0JgKzXrVu3uPLKK2P16tXxxBNPxOzZsyOTyWgMJGhfl+37YgAA3psAGADgnZujgoLW2VyfE8AAJEmPHj3iyiuvjKVLl8akSZNizpw5mgIJ2ddl+74YAID35gpoAIAdWrdunZefn98ym2sUAAOQRH369ImxY8fGLbfcEgMGDNAQSMC+Lj8/v1WrVq28OwQASCCbOACAHQYNGlQSEVn9scJt27YZFACJtd9++8UNN9wQX/va1+KAAw7QEJq1BOzr8gYPHlxsUgAAySMABgDY4YADDijJ9hpramoMCoDE69u3b9x4441xww03xL777qshNEu1tbVZX2P//v1LTQoAIHl8AxgAYIeePXtm/QuuJLwoBIAPa8CAATFgwICYP39+jBs3LpYvX64pNBtJ2Nf16NGjxKQAAJJHAAwAsEOnTp0EwACwFwwYMCAOPPDAmDt3bkyYMCFWrlypKeS8JOzrunbtKgAGAEggATAAwA5lZWVZ/4Krrq7OoADISalUKgYNGhQDBw6M2bNnx4QJE2Lt2rUaQ85KQgDcpk0bV0ADACSQABgAYIeysjIngAFgL0ulUjFs2LAYOnRozJ49O8aPHx/r1q3TGHKOABgAgN1FAAwAsENJSUlxttfoBDAAzcXbQfCQIUPi5ZdfjokTJ0ZFRYXGkDOSEAAnYX8MAMD/JQAGANihqKioKNtrrKmpMSgAmpW8vLw4/PDDY/jw4fH888/HE088EZWVlRpD4iUhAG7RokWRSQEAJI8AGABgh8LCwhbZXF86nY7t27cbFADNUn5+fowaNSpGjhwZL7zwQkycODGqqqo0hsTavn17ZDKZSKVSWVtjixYtWpgUAEDyCIABAHbI9gC4oaHBkABo9goKCmLUqFExYsSImDlzZkyePDm2bNmiMSROJpOJhoaGyOaMtbCw0AlgAIAk/neTFgAA7NgYFRRk9QuuxsZGQwKAHVq0aBHHH398HHnkkfHMM8/E1KlTY9u2bRpDomR7AJzt+2MAAN5jH6cFAAA7NkZZ/oLL9c8A8H8VFRXF6NGj49hjj41nnnkmpkyZEjU1NRpDImT7DS8FBQWugAYASCABMADA2xujLH/B5QpoAHhvbwfBRx11VEyfPj2efvrpqK2t1RiymgAYAIDdIU8LAAD+QQAMAMlXUlISn/nMZ+LOO++M0aNHZ/X1uiAABgBgdxAAAwDskO1XQAuAAeDDKykpibPPPjv+7d/+LUaPHh2FhYWagv3dR5Sfn9/SlAAAkkcADADw9sYoL88JYADIMa1bt46zzz47vve978UJJ5wgCMb+7iPIz8/3LwwAQAIJgAEAdkilUlm9N2psbDQkAPiY2rVrF+edd15897vfjRNOOCEKCgo0Bfu7D94f55sSAEDyCIABAHbI9gA4nU4bEgB8Qu3bt/9nEDxq1KjIy/NqBPu799kfp0wJACB5/FcOAMAOXnABQPPRoUOHuOiii+J73/ueIJi9JpPJZHuJ/sUAAEggmzgAgP+R1QFwAl4QAkDidOzYMS666KL41re+FYcffnj4fTDs796xOc7yG3IAANg5mzgAgITsjQTAALD7dOvWLS699NL41re+FcOGDRMEs0dk+xXQeXl5/kUAAEigAi0AAPiHbH/BJQAGgN2ve/fuceWVV8ayZcviiSeeiDlz5mgKzXl/5/AIAEACCYABAHbIZDJOAAMAERGx7777xtixY2PJkiUxYcKEmD9/vqZgfwwAQCIIgAEA/ocr7gCA/2W//faLG264Id56660YP358vPnmm5rCLpPtV0Cn3IUOAJBIAmAAgB2y/QVXtr8gBIBc1rdv37jxxhvjrbfeinHjxsWiRYs0hU/MFdAAANjEAQDsXln9Bs4BDADY+/r27Rs333xz3HDDDdG7d28NIdf3d75BAgCQQE4AAwDskO0nMATAAJA9BgwYEAMGDIj58+fHI488EitXrtQUcnF/5woaAIAEcgIYAGCHVCqVzvL6DAkAssyAAQPi1ltvjbFjx0bPnj01hJza32UScEc1AAD/lxPAAAD/QwAMAHysv6MHDRoUBx98cDz//PMxadKk2LRpk8aQ+P1dtv+CJAAAO+cEMADADul0dr/fEgADQHarr6+PioqK2LZtm2aQE/u7dDrtBDAAQAI5AQwA8D+cAAYAPrK6urp4+umnY9q0acJfcm1/5wQwAEACCYABAP6HEw4AwIfW0NAQ06ZNiyeffDK2bt2qIXxkCfgGsAAYACCBBMAAADtkMpmsDoDz8ny9AwCywdvB71NPPRXV1dUaQs7u7wTAAADJJAAGANgh219wCYABYO9qbGyMGTNmxJNPPhmVlZUawieWn5+f9VtkUwIASB4BMADADplMpiGb6yssLDQkANgL0ul0zJo1KyZPnhwbN27UEHaZgoLsfjXX1NTUaEoAAAncZ2oBAMA/NDY2bs/m+gTAALBnpdPpePnll2Py5Mmxdu1aDWGXa9GiRbb/O1BvSgAAySMABgDYoampSQAMAEQmk4nZs2fH448/HuXl5RpCs93fNTY2CoABABJIAAwAsENDQ0NWv+ASAAPA7vV28PvEE0/E6tWrNYTdLtuvgM72G3IAAHiPfaYWAAD8gyugAaD5mjNnTkyaNCmWLl2qGewx2X4FtAAYACCZBMAAADs0NTU5AQwAzcyCBQtiwoQJ8dZbb2kG9nfv0tDQIAAGAEggATAAwA7Z/oJLAAwAu87ChQtj/PjxsXjxYs1gr8n2K6Cz/RckAQB4j32mFgAA/EO2B8AFBQWRl5cX6XTasADgY1q+fHmMGzcu5s+frxnsVXl5eVkfAG/fvt0JYACABBIAAwDs0NDQkPUnHFq1ahXbtm0zLAD4iFauXBmPPPKI4Jes2tclYH8sAAYASCABMADADrW1tXXZXqMAGAA+mnXr1sX48eNj9uzZkclkNISs2tdlu7q6ulqTAgBIHgEwAMAOW7du3ZrtNSbhRSEAZIP169fHY489JvjFvu4TqK6u3mpSAADJIwAGANihqqpKAAwACbdhw4Z4/PHH45VXXommpiYNwb7uE6isrHT1DABAAgmAAQB22LRpU9a/4GrZsqVBAcBOVFVVxcSJE+OFF16IxsZGDSHrJSEA3rRpkxPAAAAJJAAGANhh3bp1WR8AOwEMAP/bli1bYsKECYJfEicJ+7ry8nIBMABAAgmAAQB2WLZsmSugASAhqqurY/LkyTFz5syor6/XEBInCfu6pUuXCoABABJIAAwAsMP8+fOz/gRwcXGxQQHQrNXU1MSUKVPimWeeEfySaEnY173++uu+AQwAkEACYACAHRYsWFCXyWQaUqlUYbbW2Lp1a4MCoFmqq6uLp59+OqZNmxbbtsmkSL5s39el0+mGpUuXbjcpAIDkEQADALxDU1PTtoKCgrbZWp8AGIDmZvv27TF9+vR48sknY+tWt9GSO7J9X9fU1ORfOACAhBIAAwC8Q0NDw9ZsDoBLS0sNCYDm8ndyTJs2LZ566qmorq7WEHJOtu/rGhsb/YsHAJBQAmAAgHeor6+vbNWqVc9src8JYAByXWNjY8yYMSOefPLJqKys1BByVrbv6+rr66tMCQAgmQTAAADv0NDQkNVvmgXAAOSqdDods2bNismTJ8fGjRs1hJyX7fu6bN8XAwDw3gTAAADvUFdXV5XN9ZWWlkYqlYpMJmNYAOSETCYTr732Wjz++OOxatUqDaFZSKVSUVJSktU11tbWVpkUAEAyCYABAN5h27Ztm7K5vvz8/GjVqlXU1NQYFgCJlslkYvbs2fH4449HeXm5htCstGrVKvLz87O6xq1btzoBDACQUAJgAIB3qK6u3pztNZaVlQmAAUist4PfiRMnxpo1azSEZqmsrCzra9y2bVuVSQEAJJMAGADgHaqqqjZle43t2rWLtWvXGhYAiTNnzpyYNGlSLF26VDNo1tq1a5f1NW7atMkJYACALNbQWBgFjQ0REZFKRSavMJre/pkAGADgHSoqKqqyvcYkvDAEgHdasGBBTJgwId566y3NgITs5zZs2CAABgDIYoUFDf9MejMRqab0/+S+AmAAgHdYtWpV1r/oatu2rUEBkAgLFy6M8ePHx+LFizUD3iEJAfDq1aurTAoAIJkEwAAA77BgwYKsD4CdAAYg2y1fvjzGjRsX8+fP1wzYiST8Ql8S9sUAAOycABgA4B2eeOKJjZlMpimVSuVna41OAAOQrVauXBmPPPKI4Bc+QLb/Ql8mk2l64oknNpoUAEAyCYABAN6huro6vX379g1FRUVdsrVGJ4AByDZr166NCRMmxOzZsyOTyWgIJHw/t3379g3V1dVpkwIASCYBMADAu9TV1a0XAAPAB1u/fn089thjgl/Isf1cXV3delMCAEguATAAwLvU1dVVtGnTJmvrKykpiRYtWsT27dsNC4C9oqKiIiZOnBivvPJKNDU1aQh8BEVFRVFcXJz1+2GTAgBILgEwAMC7bN26dV2XLll7ADhSqVR07Ngx1qxZY1gA7FFVVVUxceLEeP755wW/8DF17NgxUqlU1u+HTQoAILkEwAAA71JVVZX1Jx46deokAAZgj9m8eXM8/vjj8cILL0RjY6OGwCfcx9kPAwCwOwmAAQDeZf369Vn/zbMkvDgEIPm2bNkSU6ZMiZkzZ0Z9fb2GwC7QsWNH+2EAAHYrATAAwLusXr066088JOHFIQDJVVNTE1OmTIlnnnlG8Au7WBJ+kW/VqlUCYACABBMAAwC8y9///ves/+aZABiA3aG2tjYmT54czz77bNTV1WkINNN93KuvvioABgBIMAEwAMC7PPzww+t//OMfN6RSqcJsrbFz584GBcAus3379pg+fXpMnTo1tm3bpiGwG2X7CeB0Ot3w8MMPC4ABABJMAAwA8C7V1dXpurq68latWu2TrTV26NAh8vLyIp1OGxgAH1tDQ0NMmzYtnnrqqaiurtYQ2M3y8vKiQ4cOWV1jfX39mtraWptMAIAEEwADAOxEbW3tmmwOgAsKCqJdu3axceNGwwLgI2tsbIwZM2bEk08+GZWVlRoCe0j79u2joCC7X8fV1NSUmxQAQLIJgAEAdmLz5s2r2rdvn9U1duvWTQAMwEeSTqdj1qxZMXnyZH+HwF7av2W7LVu2rDQpAIBkEwADAOzEpk2bVvfp0yera+zWrVvMmzfPsAD4QG8Hv1OmTIkNGzZoCOzF/Vu227BhwxqTAgBINgEwAMBOrFixYvWwYcOyusYkvEAEYO/KZDLx0ksvxZQpU6K83K2usLd17do162tctWrVKpMCAEg2ATAAwE7Mnz9/9ZgxY7K6xiS8QARg78hkMjF79uyYOHFirFnjMB9kiyT8At+8efP8oQEAkHACYACAnRg3btyab37zm5mISGVrjU4AA7Azc+bMiSeeeCKWLVumGZBlEvALfJlx48atNikAgGQTAAMA7MTrr79e29DQsKmwsLBDttZYXFwcZWVlsWXLFgMDIBYsWBDjx4+PJUuWaAZkobKysiguLs7qGhsaGjYuWLCgzrQAAJJNAAwA8B62bt26vF27dh2yucauXbsKgAGauYULF8b48eNj8eLFmgFZLAm3t2zbtm25SQEAJJ8AGADgPVRVVS1t167d0GyusWfPnrFw4ULDAmiGli1bFo899ljMnz9fMyABevbsmfU1VlZWLjUpAIDkEwADALyHdevWLevTp09W15iEF4kA7ForVqyIRx99VPALCZOEfdvatWuXmRQAQPIJgAEA3sPChQuXHX744VldY69evQwKoJlYtWpVjB8/PubOnRuZTEZDIGGSsG9buHDhMpMCAEg+ATAAwHuYNm3a0ksuuSSra+zevXvk5+dHU1OTgQHkqHXr1sX48eNj9uzZgl9IqIKCgkR8A/jpp59eZloAADmw/9QCAICde+ihhzbcd999W/Pz80uzdjNXUBBdunSJNWvWGBhAjqmoqIiJEyfGyy+/HOl0WkMgwbp27RoFBdn9Gq6xsbH6kUce2WBaAADJJwAGAHgf27ZtW15WVnZwNtfYq1cvATBADqmqqoqJEyfG888/74YHyBFJ+P7vtm3blpsUAEBuEAADALyPLVu2LMv2ALhnz57x0ksvGRZAwm3evDkef/zxeOGFF6KxsVFDIIck4fu/W7ZsWWpSAAC5QQAMAPA+1q9fvyzbT2z06NHDoAASbMuWLTFlypSYOXNm1NfXawjkoCTs19avX7/MpAAAcoMAGADgfSxYsGDh0KFDs7rGfffdN1KpVGQyGQMDSJCampqYMmVKPPPMM4JfyGGpVCr23XffrK9z/vz5C00LACA3CIABAN7Ho48++uYFF1yQ1TWWlJRE586dY926dQYGkAC1tbUxefLkePbZZ6Ourk5DIMd17do1WrVqlfV1/vnPf15kWgAAuUEADADwPiZNmlRVX1+/oaioqGM217nvvvsKgAGy3Pbt22P69OkxderU2LZtm4ZAM9GnT5+sr7G+vr7iySefrDItAIDcIAAGAPgAW7duXZTtAXCfPn3ipZdeMiyALNTQ0BDTpk2Lp556KqqrqzUEmpkkXP+8detWp38BAHKIABgA4ANUVFQs7NChw8hsrjEJLxYBmpvGxsaYMWNGPPnkk1FZWakh0EwlYZ9WUVHh+78AADlEAAwA8AGWLl266MADD8zqGnv16hUFBQXR2NhoYAB7WTqdjlmzZsWkSZNi06ZNGgLNWGFhYfTs2TMR+13TAgDIHQJgAIAPMHPmzEWnnnpqdm/qCgqiZ8+esWzZMgMD2EveDn4nT54cGzdu1BAg9tlnn8jPz0/CfnexaQEA5I48LQAAeH+//OUvV6bT6bpsr7NPnz6GBbAXZDKZePHFF+O73/1u3H///cJf4J+ScP1zOp2u++Uvf7nStAAAcocTwAAAH6C6ujpdXV29uE2bNodkc539+vWL6dOnGxjAHpLJZGL27NkxceLEWLNmjYYAO92fJWCvu7i6ujptWgAAuUMADADwIWzYsGFetgfA/fv3NyiAPeTVV1+NSZMmxapVqzQD2KlUKpWI/dmGDRvmmhYAQG4RAAMAfAiLFy9+o2/fvlldY1lZWXTu3DnWr19vYAC7yYIFC2L8+PGxZMkSzQDeV5cuXaK0tDQJ+9z5pgUAkFsEwAAAH8JTTz31+ujRo7O+zv33318ADLAbLFy4MMaPHx+LFy/WDOBD78uSYMqUKa+bFgBAbsnTAgCAD/aLX/xiTWNjY1W215mUF40ASbFs2bK4++674z/+4z+Ev8BHkoTv/zY0NFTee++9q00LACC3OAEMAPAhNDQ0ZDZv3jy/Q4cOI7O5TgEwwK6xYsWKePTRR2P+fDejArm7L9uyZYs/5AAAcpAAGADgQ1q3bl3WB8AdO3aMNm3axObNmw0M4GNYtWpVjB8/PubOnRuZTEZDgI+lbdu20aFDh0Tsb00LACD3CIABAD6kefPmzTvooIOyvs4DDzwwXnrpJQMD+AjWrVsX48ePj9mzZwt+gV2yH0uCuXPnzjMtAIDcIwAGAPiQ/vznP88/77zzsr7OAw44QAAM8CFVVFTEuHHjBL/ALt+PJcHDDz/sBDAAQA4SAAMAfEgTJ06srK2tXdGqVat9srnOgw8+2LAAPkBVVVVMnDgxnn/++WhqatIQYJdKwq0xNTU1yydNmlRlWgAAuUcADADwEWzYsOHvvXr1yuoAuG3bttG1a9dYu3atgQG8y+bNm+Pxxx+PF154IRobGzUE2OW6desWbdu2TcS+1rQAAHKTABgA4CNYuHDha7169Toj2+scMGCAABjgHbZs2RJTpkyJ5557LrZv364hwG6TlO//Lly48O+mBQCQmwTAAAAfwcSJE/9+wgknZH2dBx54YEyfPt3AgGavpqYmpkyZEs8880zU19drCLDbDRgwIBF1jh8//u+mBQCQmwTAAAAfwb333rv6Bz/4wfqioqLO2VznAQccEHl5eZFOpw0NaJZqa2tj8uTJ8eyzz0ZdXZ2GAHtEXl5e9O/fP+vrrK+vX3ffffeVmxgAQG4SAAMAfESVlZVzu3btmtXHgFu1ahX77LNPLFu2zMCAZqWuri6efvrpmDZtWmzbtk1DgD1qn332iVatWmV9nZs2bZpjWgAAuUsADADwES1dunR2tgfAERGDBg0SAAPNRkNDQ0ybNi2eeuqpqK6u1hBgr+2/kuCtt976m2kBAOQuATAAwEc0ffr0v48cOTLr6xw4cGBMmDDBwICc1tDQEM8991w8+eSTUVlZqSHAXt9/JcG0adP+bloAALlLAAwA8BH9x3/8x9JbbrmlOj8/v3U219mrV68oKyuLLVu2GBqQc9LpdMyaNSsmTZoUmzZt0hBgrysrK4tevXplfZ2NjY1b7rnnnmUmBgCQuwTAAAAfUW1tbXrDhg1/7dKly3HZXGcqlYqBAwfGrFmzDA3IGW8Hv5MnT46NGzdqCJA1Bg4cGKlUKuvr3Lhx4yu1tbVpEwMAyF0CYACAj+Gtt956JdsD4IgQAAM5I51Ox8svvxxTpkyJ8vJyDQGyct+VBIsWLXrFtAAAcpsAGADgYxg/fvwrRxxxRNbXedBBB0VBQUE0NjYaGpBImUwmZs+eHRMnTow1a9ZoCJCVCgoK4qCDDkpErY888ogAGAAgx+VpAQDAR/fjH/94ZX19/fpsr7OoqCj69etnYEAivfrqq3HHHXfEz3/+c+EvkNX69esXRUVFWV9nXV1d+b333rvaxAAAcpsTwAAAH9OGDRte6dGjx6ezvc5BgwbFggULDAxIjCVLlsSECRNi/vz5mgEkwuDBgxNR5/r1653+BQBoBgTAAAAf07x5815OQgA8bNiwePjhhyOTyRgakNXefPPNmDBhQixevFgzgMRIpVIxdOjQRNQ6d+7cl0wMACD3CYABAD6m++677+XRo0dnIiKVzXW2bds2evfuHcuWLTM0ICstW7YsHnvsMSd+gUTq06dPtG3bNgmlpu+9996/mhgAQO4TAAMAfEwTJ06s3Lp165LS0tK+2V7rkCFDBMBA1lmxYkU8+uijgl8g0YYMGZKIOqurqxc+/fTTm00MACD3CYABAD6B8vLyl/fff/+sD4AHDx4c48aNMzAgK6xcuTImTJgQc+fOdT09kHhJ+f7vmjVrfP8XAKCZEAADAHwCM2fOfG7//ff/fLbX2a1bt+jWrVuUl5cbGrDXrFu3LsaPHx+zZ88W/AI5oWfPntGlS5dE1DpjxoznTAwAoHkQAAMAfAK33Xbba5dcckl1fn5+62yvdciQIQJgYK9Yv359PPbYY4JfIOck5frnxsbGzbfddts8EwMAaB4EwAAAn0BlZWXThg0b/tqlS5fjsr3WQw89NCZNmmRowJ78MzKeeOKJeP7556OpqUlDgJxz6KGHJqLOioqKV6qrq9MmBgDQPAiAAQA+oXnz5s1MQgDcu3dv10ADe0RVVVVMnDgxXnjhhWhsbNQQICd17949evbsmZT9quufAQCakTwtAAD4ZP77v/97VkQk4kTFpz71KQMDdpstW7bEQw89FLfffns899xzwl8gpw0fPjwRdWYymfTdd9/9gokBADQfTgADAHxCkyZNqtqyZcuCsrKyg7K91uHDh8fjjz9uaMAuVVNTE1OmTIlnnnkm6uvrNQTIealUKg477LBE1Lply5bXp0+fvsXUAACaDwEwAMAusHz58lkDBw7M+gC4S5cu0atXr1i5cqWhAZ9YbW1tTJ48OZ599tmoq6vTEKDZ6N27d3Ts2DEx+1QTAwBoXgTAAAC7wLPPPvvCwIEDr0hCrcOGDRMAA59IXV1dPP300zFt2rTYtm2bhgDNzrBhwxJT61/+8pcXTQwAoHnxDWAAgF3g1ltvnV9fX782CbUefvjhkUqlDA34yBoaGmLq1Klx6623xuOPPy78BZqlJF3/XFdXt/rWW29dYGoAAM2LE8AAALtAQ0NDZs2aNc/16dPns9lea7t27aJPnz6xZMkSgwM+7J9xMW3atHjqqaeiurpaQ4Bmbb/99ou2bdsmotbVq1fPNDEAgOZHAAwAsIs8++yz05IQAEdEHHHEEQJg4AOl0+mYNWtWTJo0KTZt2qQhABFx5JFHJqbW6dOnTzMxAIDmxxXQAAC7yC233PJaQ0NDZRJqHT58eLRo0cLQgJ1Kp9Px3HPPxW233Rb333+/8Bdgh6KiovjUpz6ViFobGho23HLLLXNNDQCg+XECGABgF6murk6Xl5c/t88++5yR7bW2bNkyDj300Hj55ZcNDvindDodL7/8ckyZMiXKy8s1BOBdhgwZEkVFRYmodc2aNc/V1tamTQ0AoPkRAAMA7EIvvvjiM0kIgCMiRo4cKQAGIiIik8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd/H7jG9+IqVOnRn19vaYA7GYtWrSIo48+OjH1btmy5Y177rlnhckBABDhCmgAgN3u9ddfn3T44YcPSEKtxcXFcdhhh8XMmTMNDvayurq6ePrpp2PatGmxbds2DQHYgw477LAoKSlJTL3z5s17wtQAAHibE8AAALvZ9773vanpdLohKfWecMIJkUqlDA72koaGhpg6dWrceuut8fjjjwt/AfawVCoVJ5xwQmLqTafT27/73e8+ZXIAALzNCWAAgN1s+vTpWyoqKmZ26dIlER/Y7d69e/Tv3z/efPNNw4M9qKGhIaZNmxZPPfVUVFdXawjAXnLAAQdE9+7dE1NvRUXFczNmzPAXBwAA/+QEMADAHjBr1qxEXcuXpFMvkHTpdDqee+65uP322+PRRx8V/gLsZccff3yi6p0xY8YkUwMA4J2cAAYA2AO++tWvvnT66adXFRYWtk1CvQMHDoyOHTvGhg0bDA92k3Q6HbNmzYrJkyfHxo0bNQQgC3Ts2DEGDhyYmHobGhoqb7755pdMDgCAd3ICGABgDygvL29YsWLF1MRsEvPy4sQTTzQ42A3S6XS8+OKL8Z3vfCfuv/9+4S9AFjnppJMiLy85r8tWrFgxpaKiotHkAAB4JwEwAMAe8qtf/erRiMgkpd6jjjoqysrKDA52kUwmE6+++mp873vfi1//+texdu1aTQHIImVlZXHUUUcl6q+W//7v//6zyQEA8G4CYACAPeQ///M/l1dWVv4tKfUWFhbGMcccY3CwC7wd/P785z+PNWvWaAhAFjruuOOioCA5X0urqqqa/dOf/nS1yQEA8G4CYACAPeill14al6R6jzvuuCgqKjI4+JjmzJkTd911V/z85z+P1au9owfIVkVFRYn7xbcXXnhhnMkBALAzBVoAALDnjB079pkFCxZUFhYWtktCvSUlJXHEEUfE9OnTDQ8+gjfffDPGjx8fb731lmYAJMCRRx4ZJSUliam3oaFh0zXXXPOsyQEAsDMCYACAPai8vLxh6dKlE/v3739xUmo+8cQT49lnn410Om2A8AEWLVoUjz32WCxevFgzABIiLy8vTjzxxETVvGTJkifKy8sbTA8AgJ3ucbUAAGDP+u1vfzsxIjJJqbdjx44xdOhQg4P3sXz58rj77rvjRz/6kfAXIGGGDRsWHTp0SFLJmd/85jePmxwAAO9FAAwAsIf953/+5/JNmza9kqSaTz/99EilUoYH77Jy5cr4yU9+Et///vdj/vz5GgKQMHl5eXHGGWckquZNmza9fM8996wwPQAA3osroAEA9oKXXnpp/KmnnnpYUurt2rVrDBkyJGbPnm14EBHr1q2L8ePHx+zZsyOTyWgIQEINHTo0OnfunKiaX3jhhQkmBwDA+xEAAwDsBZdffvkzS5YsWVdUVNQlKTWfccYZ8be//U3YRbO2fv36eOyxxwS/ADkglUrF6aefnqia6+rq1lx22WXTTQ8AgPcjAAYA2AsqKyub5s+f/8ihhx56dVJq7tatm1PANFsbNmyIxx9/PF555ZVoamrSEIAc8KlPfSq6du2aqJrfeOONcdXV1WnTAwDg/fgGMADAXvL1r399XDqdrktSzb4FTHNTVVUV999/f3z729+OF198UfgLkCNSqVR8+tOfTlTN6XS69pvf/OZjpgcAwAdxAhgAYC+ZMWNG9Zo1a/7Ss2fPxLx97N69ewwcODDmzJljgOS0LVu2xIQJE+KFF16IxsZGDQHIMYceemh069YtUTWvXr36qRkzZlSbHgAAH8QJYACAvejXv/71HyMiUR8SPeuss5wCJmdt27YtHn300bjtttviueeeE/4C5KC8vLwYM2ZM0srO/OpXv/qT6QEA8KH2vFoAALD3fP/733+rqqoqUR/V7dGjR3zqU58yPHJKfX19TJ06Nb71rW/F1KlTo76+XlMActSIESOiS5cuiap506ZNf73rrruWmh4AAB+GABgAYC975plnHkpazWeccUbk5dlKkjvmzZsXjz76aGzdulUzAHJYQUFBnH766Ymre9q0aQ+aHgAAH5a3dgAAe9nYsWNn1tfXr01SzZ07d47DDjvM8ACARBk5cmR06NAhUTXX1dWtHjt27POmBwDAhyUABgDYyyorK5tee+21Pyat7jPPPDMKCgoMEABIhBYtWiTy9O/s2bP/UF1dnTZBAAA+LAEwAEAWuOqqqyY0NjZWJanm9u3bx9FHH214AEAiHHfccdGmTZtE1dzQ0LDxiiuumGh6AAB8FAJgAIAssGDBgrqFCxc+lrS6R48eHYWFhQYIAGS1li1bxsknn5y4uhcuXDhu6dKl200QAICPQgAMAJAlvv71r/8pnU7XJqnmtm3bximnnGJ4AEBWO+2006K0tDRRNTc1NdV+7Wtfe8j0AAD4qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hABgF2iQ4cOcfrppyey9kwm03T33Xf/3BQBANgdBMAAAAlyzz33rCgvL386ibW3bNkyzj33XEMEAHaJc889N1q0aJHI2tesWTP1xz/+8UpTBABgdxAAAwAkzA9/+MOfZzKZhiTWPnz48Bg0aJAhAgCfyKGHHhpDhw5NZO3pdLrhBz/4wS9MEQCA3UUADACQMPfee+/qRYsWPZDU+i+++OIoKSkxSADgY2ndunVcfPHFia1/4cKFf7jvvvvKTRIAgN1FAAwAkECXXXbZrxsaGjYlsfaysjJXQQMAH9u5554bpaWliay9oaFh4+WXX/47UwQAYHcSAAMAJNDs2bNrXn311V8ntf4jjjgiDj74YIMEAD6SwYMHx+GHH57Y+l955ZX7Zs+eXWOSAADsTgJgAICEOueccx6tqalZmtT6L7roomjZsqVBAgAfSsuWLeNzn/tcYuuvqalZMmbMmMdMEgCA3U0ADACQUJWVlU3Tpk37RVLrb9++fZx++ukGCQB8KGeccUa0b98+sfU/+eST91ZXV6dNEgCA3U0ADACQYOedd960qqqqV5Ja/wknnOAqaADgAx188MFx/PHHJ7b+TZs2vXzBBRc8a5IAAOwJAmAAgIT74x//eG9EZJJYeyqVigsuuMBV0ADAe2rZsmVccMEFkUqlkrqEzP333/8zkwQAYE8RAAMAJNzNN988b9WqVU8ktf6OHTsm+nt+AMDudcEFF0THjh0TW/+KFSse//rXv/6GSQIAsKcIgAEAcsCNN974k6ampq1JrX/kyJExdOhQgwQA/pdPfepTMWLEiMTW39TUVH3zzTf/t0kCALAnCYABAHLAxIkTK//+97//KslruPDCC6OsrMwwAYCIiGjTpk18/vOfT/QaZs+efd/EiRMrTRMAgD1JAAwAkCPOPvvsh2pqapYntf7S0tK46KKLDBIAiFQqFV/84hejtLQ0sWuoqal566yzznrYNAEA2NMEwAAAOaKioqJx0qRJP07yGgYPHhwjR440TABo5o444og46KCDEr2GJ5544qeVlZVNpgkAwJ4mAAYAyCGXXHLJzIqKihlJXsMFF1wQ3bp1M0wAaKZ69uyZ+KufKyoqZnzhC1+YZZoAAOwNAmAAgBzzb//2b/ek0+ntSa2/RYsWceWVV0ZhYaFhAkAzU1hYGF/60pcSvQ9Ip9Pb/+3f/u0e0wQAYG8RAAMA5Jh777139aJFix5M8hq6d+8eZ555pmECQDNzxhlnRPfu3RO9hsWLFz947733rjZNAAD2FgEwAEAO+uxnP/vL2traRL94PPHEE2Pw4MGGCQDNxKBBg+Kkk05K9Bpqa2tXn3vuub80TQAA9iYBMABADlq8eHH9uHHj/j3Ja0ilUnHJJZdE27ZtDRQAclybNm3ikksuiVQqleh1jBs37t8XL15cb6IAAOxNAmAAgBx1+eWXv1RRUTEjyWsoLS2NL3zhC4l/GQwAvLe3f+mrdevWiV5HRUXFM5dffvlLJgoAwN4mAAYAyGE33HDDXU1NTVuTvIaDDjrI94ABIId95jOfiUMOOSTRa2hqaqq+4YYbfmiaAABkAwEwAEAOGzdu3MbZs2cn/jt0p5xyiu8BA0AOOuSQQ+LTn/504tfx17/+9efjxo3baKIAAGQDATAAQI77zGc+81B1dfXCJK8hlUrFF7/4xejQoYOBAkCO6NixY3zpS19K/KceNm/ePO+00057xEQBAMgWAmAAgBxXXV2dfuCBB34UEekkr6O4uDguvfTSyMuzhQWApMvPz4/LLrssiouLk76U9P333/+ftbW1aVMFACBbeHsGANAMXH/99XMWLVr0YNLXsf/++8e5555roACQcOedd1707ds38etYuHDhH7/61a++bqIAAGQTATAAQDNxySWX/Lyurq486es4/vjjfQ8YABJs2LBhccwxxyR+HXV1dWsuvPDC+0wUAIBsIwAGAGgmXnvttdoHHnjguxGRSfI6UqlUfOlLX4oePXoYKgAkTO/evePSSy9N/Hd/IyLzwAMPfO/111+vNVUAALKNABgAoBm5+uqr/7Z06dJHk76OoqKiGDt2bJSWlhoqACRE69at46qrrorCwsLEr2X58uXjrr766r+ZKgAA2UgADADQzJx33nn/r66ubnXS19GhQ4e4/PLLIy/PlhYAsl1eXl5cfvnl0b59+8Svpb6+ft0ll1zyE1MFACBr999aAADQvLz++uu1Dz744Pcj4VdBR0QMGDAgzjrrLEMFgCw3ZsyYOPDAA3NiLY899tgPXnnllW2mCgBAthIAAwA0Q1/5ylf+umbNmqm5sJaTTz45Dj30UEMFgCw1ZMiQOOmkk3JiLWvXrv3LpZde+oKpAgCQzQTAAADN1GWXXfYf9fX1FUlfRyqViksvvTS6d+9uqACQZXr06BFf/OIXI5VKJX4tDQ0Nm6655pofmioAANlOAAwA0EzNmDGj+oEHHvhO5MBV0C1btozrr78+2rZta7AAkCXatWsX1113XbRs2TIXlpN56KGH/nXSpElVJgsAQLYTAAMANGNf+cpX/rpkyZI/58Ja2rZtG1dffXW0aNHCYAFgL2vRokVcffXVOfPLWUuXLn30iiuueNlkAQBIAgEwAEAzd+655/6ktrZ2eS6spXfv3jlzzSQAJNXbn2fYZ599cmI9tbW1y88555wfmywAAEkhAAYAaOYWLFhQ97Of/ezbmUymMRfWM2zYsDjllFMMFgD2kk9/+tMxdOjQnFhLJpNp/NnPfvbtBQsW1JksAABJIQAGACBuvfXWBfPnz78/V9Zz5plnxuDBgw0WAPaw4cOHx2c+85mcWc/8+fN/d+utty4wWQAAkkQADABARESMGTPmvpqamrdyYS2pVCouu+yy6Nmzp8ECwB7Su3fvuPjii3PmUwxbt25ddPrpp//aZAEASBoBMAAAERGxcuXKhh/+8Ie3pdPpnLjisGXLlvEv//Iv0aVLF8MFgN2sS5cucf3110dRUVFOrKepqanmu9/97jfKy8sbTBcAgKQRAAMA8E933XXX0ueff/6eXFlPaWlpXHvttVFWVma4ALCblJWVxXXXXRclJSU5s6aZM2fe/f/+3/9bZboAACSRABgAgP/l5JNPHldeXv50rqynU6dOMXbs2Jw5kQQA2aSoqCiuueaa6NixY86sqby8/MlTTz11gukCAJBUAmAAAP6PSy655K66urq1ubKefffdN6644orIy7P9BYBdJS8vL6688sro3bt3zqyprq6u/JJLLvmh6QIAkOi9uhYAAPBus2bNqn7ooYfujIh0rqxp4MCBcd555xkuAOwi559/fhxyyCG5tKT0gw8+eOesWbOqTRcAgCTLb3tQ9NzpjndbRG15oQ4BADRTEydOXDNmzJi8Tp06Dc2VNfXp0yfy8/PjzTffNGAA+ATOOuusOOmkk3JqTa+//vp9Z5555kTTBQAgCYq7N0Ze6c5/5gQwAADv6dRTT/31li1bXs+lNZ122mlx9NFHGy4AfEzHHntsnHrqqTm1pi1btrxx2mmn/cZ0AQDIBQJgAADeU0VFReONN974jcbGxqpcWtcFF1wQRx55pAEDwEd05JFHxuc+97mcWlNjY2PVzTff/I2KiopGEwYAIBcIgAEAeF9//OMf1z/yyCPfiRz6HnAqlYqLLroohgwZYsAA8CENHTo0LrrookilUrm0rPQjjzzynfvvv3+dCQMAkCsEwAAAfKBLL730hQULFvwupzbCeXnxpS99Kfbff38DBoAPcNBBB8WXvvSlyMvLrVdJCxYs+N2ll176ggkDAJBLBMAAAHwoo0eP/mVVVdXcXFpTYWFhfOUrX4kePXoYMAC8h169esUVV1wRBQUFObWuqqqqOaNHj/6lCQMAkGsEwAAAfCgVFRWNV1111S0NDQ0bcmldJSUlcfPNN8c+++xjyADwLr17946bbropiouLc2pdDQ0NG6666qqv++4vAAC5SAAMAMCHNmHChE3333//tzKZTDqX1lVcXBzXXXdddO/e3ZABYIfu3bvHtddeG61atcqpdWUymfT999//rQkTJmwyZQAAcpEAGACAj2Ts2LGz58+f/9tcW1fr1q3juuuuiw4dOhgyAM1ehw4d4rrrrovWrVvn3Nrmz5//m7Fjx842ZQAAcpUAGACAj+y44477xaZNm17MtXW1a9cubrzxxmjXrp0hA9BstW3bNmf/Pty4ceOLxx13nO/+AgCQ0wTAAAB8ZNXV1emLL774W3V1datzbW0dO3aMG2+8Mdq0aWPQADQ7ZWVlceONN0bHjh1zbm21tbWrL7zwwturq6vTJg0AQC7Lb3tQ9NzZD9LbImrLC3UIAICdWrZsWf327dtfOvbYY0/Ny8trkUtrKykpiaFDh8Zrr70WNTU1hg1As9ChQ4f42te+Fp06dcq5tTU1NW39zne+M/bBBx9cb9IAAOSC4u6NkVe6858JgAEA+NhefPHFzYcccsiyAQMGnBgRqZzaRBcXx5AhQ4TAADQLHTt2jJtuuik6dOiQi8tLjx8//ravfvWrc0waAIBc8X4BsCugAQD4RC688MIZb7zxxm9ycW3t27ePm266KSdPQgHA2zp16pTL4W+88cYbv77wwgufM2kAAJoLATAAAJ/YqFGjfrFhw4aZubi2t0Pgzp07GzQAOadz585x0003Rfv27XNyfRs2bJg5atSo+0waAIDmRAAMAMAnVltbm77sssu+V1dXtzoX19euXbu44YYbomPHjoYNQM7o0KFDXH/99dGuXbtc3Z+s/sIXvvDd2tratGkDANCc+AYwAAC7xJIlS+oj4pVRo0admpeX1yLX1ldcXBxDhw6NuXPnxrZt2wwcgETr0qVL3HjjjTl77XNTU1P1nXfeec0f/vCHdaYNAEAuer9vAAuAAQDYZWbNmlXVo0ePuYceeujoVCqVn2vra9WqVYwYMSIWLVoUlZWVBg5AIu23335x0003RVlZWU6uL51ON/z617++4fbbb3/TtAEAyFUCYAAA9phJkyatPeqoozbsu+++R+fi+goLC2P48OGxbNmy2LBhg4EDkCgDBgyIa6+9Nlq1apWza5w2bdq/XXLJJc+ZNgAAuez9AmDfAAYAYJc77bTTHn/rrbcezNX1FRUVxTXXXBNDhgwxbAASY8iQIXHNNddEUVFRzq5xwYIFvzv99NOfMG0AAJozATAAALvFEUcccc+GDRtm5ur6CgoK4sorr4wjjjjCsAFIwt/LceWVV0ZBQUHOrrG8vPypESNG/LdpAwDQ3AmAAQDYLaqrq9MXXXTRd2pra1fk7GY6Ly8uvvjiOPLIIw0cgKw1atSouPjiiyMvL3dfA23dunXxZz/72e83NDRkTBwAgObON4ABANhtli9fvr2mpuaFY4899uT8/PyWubjGVCoVgwYNikwmE4sWLTJ0ALLK6aefHueee26kUqmcXWN9fX3FDTfccM3UqVOrTBwAgObi/b4BLAAGAGC3evnll7cUFBS8cMQRR4zOy8trkYtrTKVSccABB0SnTp1i7ty5kck4fATA3lVYWBhXXHFFHHPMMTm9zsbGxuo777zzKz/72c9WmzoAAM2JABgAgL1qxowZlb169Xp98ODBJ6dSqfxcXWfPnj2jb9++8fe//z0aGxsNHoC9olWrVnH11VfHwIEDc3qd6XS64be//e2Nt9122wJTBwCguREAAwCw1z3xxBPlw4cPX9OvX79jIyJn76Hs2LFjDBw4MObMmRN1dXUGD8Ae1a5du7jxxhujT58+ub7U9JQpU779xS9+8XlTBwCgOXq/ADhPewAA2FPGjBkz9Y033vh1rq+zZ8+eceONN0bHjh0NHYA9pkuXLnHTTTdF9+7dc36tc+fO/eU555zzF1MHAID/SwAMAMAe9alPfernS5cufTjX19mlS5e49dZb48ADDzR0AHa7gQMHxje/+c3o1KlTzq/1rbfeemjEiBG/MnUAANg5ATAAAHvcsccee8/GjRtfyPV1FhcXx7XXXhsjRowwdAB2m8MPPzyuuuqqaNmyZc6vdePGjc8fffTR95g6AAC8NwEwAAB7XEVFReNxxx339crKyr/l+loLCgrisssui/PPPz9SqZThA7DLpFKpOP/88+PSSy+NgoKCnF/vpk2bXj7ssMNuqaysbDJ9AAB4bwJgAAD2isWLF9efddZZN1dXV7/ZHNZ7/PHHx5e//OUoKioyfAA+sRYtWsSXv/zlOP7445vFequrq98cM2bMN8rLyxtMHwAA3l9+24Oi585+kN4WUVteqEMAAOw2a9asaVi1atWs0aNHH1dQUNA619fbrVu3OOCAA2LevHlRX1/vAQDgYykrK4trrrkmDjrooGax3rq6uvKxY8de89RTT202fQAA+Ifi7o2RV7rznwmAAQDYq+bNm1ezevXqZ04++eTjCwoKSnN9ve3atYuRI0fG8uXLY+PGjR4AAD6S/v37x0033RRdu3ZtFuutr69fd9111335T3/6U4XpAwDA/xAAAwCQ1ebMmbMtlUq9fOSRR56Ul5eX83ckt2jRIkaMGBG1tbWxdOlSDwAAH8rxxx8fX/rSl5rN5wQaGxu33HXXXdf99Kc/XWn6AADwvwmAAQDIejNnzqzs2bPn64MHDz4plUrl5/p6U6lUHHLIIdGqVatYsGBBZDIZDwEAO5WXlxef/exn4/TTT49UKtUs1pxOp7f//ve//+o3vvGN1z0BAADwfwmAAQBIhEmTJpXvs88+8wYOHHhCKpUqaA5r3m+//WLAgAExd+5c3wUG4P8oKyuL6667LoYNG9Zs1pxOp7f/8Y9/vOmqq676qycAAAB2TgAMAEBiTJw4cc3BBx+85MADDzwulUrlNYc1t2/fPoYOHRqLFi2KLVu2eAgAiIiIffbZJ66//vro2bNns1lzJpNpnDBhwm1f/OIXn/cEAADAexMAAwCQKI8++ujy/fff/42DDjrohOZwHXRERHFxcRx11FHR2NgYb731locAoJkbPXp0XHHFFVFSUtJs1pxOpxsefvjhr15yySWzPAEAAPD+BMAAACTO+PHjVw0cOHDpAQcccGxzOQmcSqViwIAB0aVLl3jjjTeiqanJgwDQzBQVFcWll14aJ554YrP53m/EP07+Pv7447dffPHFMz0FAADwwQTAAAAk0iOPPLLs0EMPXbb//vs3mxA4IqJHjx4xZMiQePPNN2Pr1q0eBIBmonv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcXF/fSkf/RsmXLGDJkSOyzzz6xdOnSqKmp0RQg53Xs2DG++MUvximnnBItW7bUkHdZt27dMyeffPI3Xn755W26AQAAe9/7BcCpfc+JETv7QeO6iI2vttI9AAByWmFhYer555//0sEHH3y5bvxfTU1N8fzzz8f48eOjurpaQ4Cc07p16zjzzDPjyCOPdOJ35zJ///vff3rMMcfc39DQkNEOAADIDh2G1UZBl53/TAAMAAARMWnSpM8cc8wxt6RSKdfg7ERNTU1MmTIlpk2bFg0NDRoCJF5hYWGccsopcdJJJ0VRUZGG7EQ6na6fOnXqd88555y/6AYAAGSX9wuAXQENAAAR8Yc//GHhfvvt98aAAQOOysvLkwS8S2FhYQwYMCCGDh0amzZtinXr1mkKkFiDBw+Oq666KoYOHRoFBQUashONjY1Vv//972/5whe+MEs3AAAg+/gGMAAAfAgTJkxYXV1dPf3II4/8VGFhYTsd+b9KS0vjsMMOi/79+8eaNWti8+bNmgIkRu/evePyyy+PU045JUpLSzXkPWzdunXxLbfccs33vve9hboBAADZyTeAAQDgI+jTp0+LJ5988us9evQ4TTfe3/z58+ORRx6JlStXagaQtXr16hXnnHNODBgwQDM+wKpVq5444YQTfrBy5Ur3/QMAQBbzDWAAAPgYnnnmmfOHDx9+fSqVytON95bJZGL27Nkxbty4qKio0BAga3Tu3DnOOuusGDp0aKRSKQ15/z/Lm2bNmvXDk08++THdAACA7OcbwAAA8DH85je/eX3//fd//cADDzzSd4HfWyqViu7du8cxxxwT7dq1i2XLlkV9fb3GAHtN27Zt49xzz42LL744evToIfz9AI2NjdUPPvjgLZ/97Gf/ohsAAJAMvgEMAAAf0/jx41dFxPOHHXbYiMLCwjIdeW95eXnRu3fvOOqoo6KgoCBWrlwZjY2NGgPsMcXFxXHKKafEl770pejbt2/k5bnA4YPU1tau+MEPfnD9LbfcMk83AAAgQf/94xvAAADwyQwePLjVo48++s1u3bqdpBsfTn19fTzzzDMxderU2LZtm4YAu01ZWVmceuqpceSRR0ZRkQsbPqyVK1c+/ulPf/pHixcvdm0DAAAkjG8AAwDALvLkk0+edeSRR96USqVcl/MhCYKB3eXtE7/HHnus4PcjyGQyDbNmzfoP3/sFAIDk8g1gAADYRX7/+98v6NGjx2uHHHLIyPz8fL8x+SEUFBREv3794qijjoq8vLxYtWqVq6GBT6Rly5ZxwgknxBVXXBEHHXRQFBQUaMqH1NDQsOG3v/3t1z7/+c8/oxsAAJBcroAGAIBd7Lzzzut4991339m2bdvBuvHR1NTUxLPPPhvTpk2LLVu2aAjwoZWVlcXxxx8fxxxzTBQXF2vIR1RVVfW3a6+99vZHHnlkg24AAECyuQIaAAB2g06dOhVMmzZtbN++fT8XESkd+WgaGhri+eefjyeffDI2bJBFAO/7522cdNJJccQRR0RhodvKPobMokWL/nTsscf+pLKyskk7AAAg+QTAAACwG/3hD38Ydfrpp99WUFDQRjc+unQ6Ha+++mpMnTo1Vq5cqSHAP/Xq1StOOeWUGDp0aOTl5WnIx9DY2Fg1YcKEOy666KKZugEAALlDAAwAALvZaaed1vbee+/9docOHUbqxse3fPnymDZtWrz88suRTqc1BJqhvLy8OOyww+L444+P3r17a8gnsHHjxue//OUvf3fSpElVugEAALlFAAwAAHtAYWFh6qmnnjpv+PDh16RSKXeUfgIbNmyIGTNmxHPPPRc1NTUaAs1AcXFxjBo1Ko4++ujo2LGjhnwCmUym4ZVXXvl/J5100kMNDQ0ZHQEAgNzzfgFwftuDoufOfpDeFlFb7p0VAAB8WOl0On7zm9+8Xlpa+uLgwYM/VVhYWKYrH09xcXEMGDAgjj322GjTpk2sXbs2amtrNQZyUIcOHeKMM86ISy+9NAYOHBjFxcWa8gnU1tau+slPfnLjxRdf/IybFAAAIHcVd2+MvNKd/8wJYAAA2A1OPPHENvfdd9+tnTp1Olo3PrnGxsb429/+Fs8++2wsWrRIQyAH9OvXL44++ugYNmxYFBQUaMguUFFR8cwXv/jFf5s+ffoW3QAAgNzmCmgAANhLHn744RNGjx799YKCgta6sWusX78+Zs6cGc8//3xUV1drCCRIaWlpHHnkkXHUUUdF586dNWQXaWxs3DJ16tS7PvvZz/5FNwAAoHkQAAMAwF50ySWXdP3+97//rXbt2g3VjV2nsbExXnvttXjuuedi/vz5GgJZbMCAATFq1KgYPHiw0767WFVV1atf//rXv/e73/1urW4AAEDzIQAGAIC9rF27dvlTp0699OCDD740lUrl68iutXz58nj++efj5ZdfjpqaGg2BLFBSUhLDhw+PI444Inr37q0hu1gmk2mcN2/efSeeeOJvq6urfewXAACaGQEwAABkia9//ev73Xjjjf9aWlraXzd2vXQ6HW+++WY899xz8dprr0VjY6OmwB5UUFAQgwcPjlGjRsUBBxwQeXl5mrIbVFdXL/zP//zPf/3BD36wRDcAAKB5EgADAEAWOfjgg1v9+c9/vrZ3795jIiKlI7tHZWVlvPjii/HCCy/EunXrNAR2o65du8bIkSPj8MMPj7Zt22rI7pNZunTpn88888z/t3jx4nrtAACA5ksADAAAWejuu+8eePHFF9/WqlUrd6PuZuXl5fHqq6/GSy+9FOvXr9cQ2AU6d+4cI0aMiGHDhkW3bt00ZDerqalZ9tvf/vbOm266aa5uAAAAAmAAAMhS/fr1K3r44Ycv79+//4WpVMpdqXvA8uXL46WXXoqXX345qqurNQQ+grKyshg+fHiMGDHCd333kEwmk164cOEfzj777F8sXbp0u44AAAARAmAAAMh6P/3pT4d97nOf+2bLli176Mae0dDQEHPnzo2//vWvMXfu3Ni+Xa4CO9OyZcsYNGhQDBs2LA455JAoKCjQlD2ktrZ21R//+Mc7rr322r/rBgAA8E4CYAAASIA+ffq0ePTRR69wGnjPS6fTsXTp0nj11VedDIaIaNu2bQwbNiyGDRsWffr0ibw8fyTtSZlMpuG11177+ZlnnvmnioqKRh0BAADeTQAMAAAJ8uMf//jQCy644JutWrXaRzf2vLdPBs+ePTvmzp0bdXV1mkKzUFZWFoMHD45hw4ZF//79Iz8/X1P2gpqammX333//nTfccINv/QIAAO9JAAwAAAnTrl27/HHjxp37qU996qq8vDwb870kk8nEihUrYu7cuTFnzpxYsWJFZDIZjSEnpFKp6Nu3bwwbNiwGDRoUHTt21JS9qKmpqfbVV1/92ZgxY/5cWVnZpCMAAMD7EQADAEBCffnLX+5x++23f7V9+/aH68bet2XLlnjjjTdizpw5MW/evKivr9cUEqVly5Zx8MEHx6BBg+KQQw6J0tJSTckCGzdufPG73/3uv//iF79YoxsAAMCHIQAGAIAEKywsTE2cOPGMkSNHXlNQUNBaR7JDXV1dvPnmm/HGG2/EG2+8EevXr9cUslKXLl3ioIMOioMOOigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6ysnL9ihUrVr/66qurHnzwwbUVFRWNOgUAAMDuIgAGAADgfznjjDPaH3bYYZ369OnTuUuXLp3Kysral5SUtC0uLu5YVFTUrqioqG2LFi065OfnlzaXnjQ1NW3dvn37xvr6+qr6+vrKmpqaDdu2bavasmXLpnXr1lUsXbp0/Ysvvrh+4sSJlZ4gAAAA9iYBMAAAAB9Lr169CkeNGtXuoIMOatexY8ey9u3bl7Zp06Z1SUlJWXFxcetWrVq1btGiRVlRUVHrwsLC1hGRX1hYWBoR+QUFBSV5eXkFeXl5u/0/LtPpdG06nW5sbGzcFhFNDQ0NW3f83+r6+vrq7du3b6mtra2uqamp3rZtW/XmzZurN23aVL1hw4YtCxYsqJo1a1bl0qVLt5s4AAAASSAABgAAYK/q169fUffu3Vvss88+xSUlJQVv//8LCwtT3bp1+8BTxuXl5VsbGhoyb//vbdu2Na5YsaJmzZo12xcvXlyvwwAAADQn7xcAF2gPAAAAu9vixYvrdwS11boBAAAAu0+eFgAAAAAAAADkBgEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4o0AIAAAAAAACA5GhoLIyCxoaIiEilIpNXGE1v/0wADAAAAAAAAJAghQUN/0x6MxGppvT/5L6ugAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAIb/v5272ZHiusM4/FZ1NUkz9sQwOF4EyZJtpJCwysa5jSy4n1xPEqRIuQFvvfGSgIwBOzGRQAQERnx0d1UW0cgWGvKxsMGvnmfVdc7/1OJsf+oCAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=";function v0(Q,$,q){if(typeof Q==="string"&&!isNaN(Number(Q)))Q=Number(Q);if(typeof Q==="number"&&Q<100)return C0(Q);if(typeof Q==="number"&&Q>=100)return Q;if(typeof Q==="string"&&Q.includes("%")){if($&&$==="X")return Math.round(parseFloat(Q)/100*q.width);if($&&$==="Y")return Math.round(parseFloat(Q)/100*q.height);return Math.round(parseFloat(Q)/100*q.width)}return 0}function m5(Q){return Q.replace(/[xy]/g,function($){let q=Math.random()*16|0;return($==="x"?q:q&3|8).toString(16)})}function L0(Q){if(typeof Q==="undefined"||Q==null)return"";return Q.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function C0(Q){if(typeof Q==="number"&&Q>100)return Q;if(typeof Q==="string")Q=Number(Q.replace(/in*/gi,""));return Math.round(H0*Q)}function Y0(Q){let $=Number(Q)||0;return isNaN($)?0:Math.round($*T8)}function K6(Q){return Q=Q||0,Math.round((Q>360?Q-360:Q)*60000)}function J9(Q){let $=Q.toString(16);return $.length===1?"0"+$:$}function U9(Q,$,q){return(J9(Q)+J9($)+J9(q)).toUpperCase()}function f0(Q,$){let q=(Q||"").replace("#","");if(!K9.test(q)&&q!==D1.background1&&q!==D1.background2&&q!==D1.text1&&q!==D1.text2&&q!==D1.accent1&&q!==D1.accent2&&q!==D1.accent3&&q!==D1.accent4&&q!==D1.accent5&&q!==D1.accent6)console.warn(`"${q}" is not a valid scheme color or hex RGB! "${z1}" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`),q=z1;let K=K9.test(q)?"srgbClr":"schemeClr",J='val="'+(K9.test(q)?q.toUpperCase():q)+'"';return $?`${$}`:``}function Kz(Q,$){let q="",K=Object.assign(Object.assign({},$),Q),J=Math.round(K.size*T8),Z=K.color,G=Math.round(K.opacity*1e5);return q+=``,q+=f0(Z,``),q+="",q}function k1(Q){let $="solid",q="",K="",J="";if(Q){if(typeof Q==="string")q=Q;else{if(Q.type)$=Q.type;if(Q.color)q=Q.color;if(Q.alpha)K+=``;if(Q.transparency)K+=``}switch($){case"solid":J+=`${f0(q,K)}`;break;default:J+="";break}}return J}function G2(Q){return Q._rels.length+Q._relsChart.length+Q._relsMedia.length+1}function D9(Q){if(!Q||typeof Q!=="object")return;if(Q.type!=="outer"&&Q.type!=="inner"&&Q.type!=="none")console.warn("Warning: shadow.type options are `outer`, `inner` or `none`."),Q.type="outer";if(Q.angle){if(isNaN(Number(Q.angle))||Q.angle<0||Q.angle>359)console.warn("Warning: shadow.angle can only be 0-359"),Q.angle=270;Q.angle=Math.round(Number(Q.angle))}if(Q.opacity){if(isNaN(Number(Q.opacity))||Q.opacity<0||Q.opacity>1)console.warn("Warning: shadow.opacity can only be 0-1"),Q.opacity=0.75;Q.opacity=Number(Q.opacity)}if(Q.color){if(Q.color.startsWith("#"))console.warn('Warning: shadow.color should not include hash (#) character, , e.g. "FF0000"'),Q.color=Q.color.replace("#","")}return Q}function Jz(Q,$,q){var K,J;let Z=2.3+(((K=Q.options)===null||K===void 0?void 0:K.autoPageCharWeight)?Q.options.autoPageCharWeight:0),G=Math.floor($/T8*H0)/((((J=Q.options)===null||J===void 0?void 0:J.fontSize)?Q.options.fontSize:f1)/Z),B=[],W=[],U=[],V=[];if(Q.text&&Q.text.toString().trim().length===0)W.push({_type:D0.tablecell,text:" "});else if(typeof Q.text==="number"||typeof Q.text==="string")W.push({_type:D0.tablecell,text:(Q.text||"").toString().trim()});else if(Array.isArray(Q.text))W=Q.text;let N=[];return W.forEach((F)=>{var M;if(typeof F.text==="string"){if(F.text.split(` +(()=>{var fJ=Object.create;var{getPrototypeOf:RJ,defineProperty:X6,getOwnPropertyNames:$9,getOwnPropertyDescriptor:IJ}=Object,Q9=Object.prototype.hasOwnProperty;function q9($){return this[$]}var CJ,jJ,K9=($,q,Q)=>{var K=$!=null&&typeof $==="object";if(K){var J=q?CJ??=new WeakMap:jJ??=new WeakMap,Z=J.get($);if(Z)return Z}Q=$!=null?fJ(RJ($)):{};let G=q||!$||!$.__esModule?X6(Q,"default",{value:$,enumerable:!0}):Q;for(let W of $9($))if(!Q9.call(G,W))X6(G,W,{get:q9.bind($,W),enumerable:!0});if(K)J.set($,G);return G},X0=($)=>{var q=(e7??=new WeakMap).get($),Q;if(q)return q;if(q=X6({},"__esModule",{value:!0}),$&&typeof $==="object"||typeof $==="function"){for(var K of $9($))if(!Q9.call(q,K))X6(q,K,{get:q9.bind($,K),enumerable:!(Q=IJ($,K))||Q.enumerable})}return e7.set($,q),q},e7,N0=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports);var gJ=($)=>$;function AJ($,q){this[$]=gJ.bind(null,q)}var c1=($,q)=>{for(var Q in q)X6($,Q,{get:q[Q],enumerable:!0,configurable:!0,set:AJ.bind(q,Q)})};var b1=($,q)=>()=>($&&(q=$($=0)),q);var J9=(($)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy($,{get:(q,Q)=>(typeof require<"u"?require:q)[Q]}):$)(function($){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+$+'" is not supported')});var K2={};c1(K2,{transcode:()=>MV,resolveObjectURL:()=>BV,kStringMaxLength:()=>w9,kMaxLength:()=>y6,isUtf8:()=>zV,isAscii:()=>FV,default:()=>wV,constants:()=>EJ,btoa:()=>PJ,atob:()=>TJ,INSPECT_MAX_BYTES:()=>M9,File:()=>uJ,Buffer:()=>o,Blob:()=>SJ});function XJ($){var q=$.length;if(q%4>0)throw Error("Invalid string. Length must be a multiple of 4");var Q=$.indexOf("=");if(Q===-1)Q=q;var K=Q===q?0:4-Q%4;return[Q,K]}function yJ($,q){return($+q)*3/4-q}function hJ($){var q,Q=XJ($),K=Q[0],J=Q[1],Z=new Uint8Array(yJ(K,J)),G=0,W=J>0?K-4:K,B;for(B=0;B>16&255,Z[G++]=q>>8&255,Z[G++]=q&255;if(J===2)q=F2[$.charCodeAt(B)]<<2|F2[$.charCodeAt(B+1)]>>4,Z[G++]=q&255;if(J===1)q=F2[$.charCodeAt(B)]<<10|F2[$.charCodeAt(B+1)]<<4|F2[$.charCodeAt(B+2)]>>2,Z[G++]=q>>8&255,Z[G++]=q&255;return Z}function xJ($){return I2[$>>18&63]+I2[$>>12&63]+I2[$>>6&63]+I2[$&63]}function OJ($,q,Q){var K,J=[];for(var Z=q;ZW?W:G+Z));if(K===1)q=$[Q-1],J.push(I2[q>>2]+I2[q<<4&63]+"==");else if(K===2)q=($[Q-2]<<8)+$[Q-1],J.push(I2[q>>10]+I2[q>>4&63]+I2[q<<2&63]+"=");return J.join("")}function N8($,q,Q,K,J){var Z,G,W=J*8-K-1,B=(1<>1,U=-7,w=Q?J-1:0,F=Q?-1:1,M=$[q+w];w+=F,Z=M&(1<<-U)-1,M>>=-U,U+=W;for(;U>0;Z=Z*256+$[q+w],w+=F,U-=8);G=Z&(1<<-U)-1,Z>>=-U,U+=K;for(;U>0;G=G*256+$[q+w],w+=F,U-=8);if(Z===0)Z=1-V;else if(Z===B)return G?NaN:(M?-1:1)*(1/0);else G=G+Math.pow(2,K),Z=Z-V;return(M?-1:1)*G*Math.pow(2,Z-K)}function F9($,q,Q,K,J,Z){var G,W,B,V=Z*8-J-1,U=(1<>1,F=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,M=K?0:Z-1,k=K?1:-1,f=q<0||q===0&&1/q<0?1:0;if(q=Math.abs(q),isNaN(q)||q===1/0)W=isNaN(q)?1:0,G=U;else{if(G=Math.floor(Math.log(q)/Math.LN2),q*(B=Math.pow(2,-G))<1)G--,B*=2;if(G+w>=1)q+=F/B;else q+=F*Math.pow(2,1-w);if(q*B>=2)G++,B/=2;if(G+w>=U)W=0,G=U;else if(G+w>=1)W=(q*B-1)*Math.pow(2,J),G=G+w;else W=q*Math.pow(2,w-1)*Math.pow(2,J),G=0}for(;J>=8;$[Q+M]=W&255,M+=k,W/=256,J-=8);G=G<0;$[Q+M]=G&255,M+=k,G/=256,V-=8);$[Q+M-k]|=f*128}function S2($){if($>y6)throw RangeError('The value "'+$+'" is invalid for option "size"');let q=new Uint8Array($);return Object.setPrototypeOf(q,o.prototype),q}function h5($,q,Q){return class extends Q{constructor(){super();Object.defineProperty(this,"message",{value:q.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${$}]`,this.stack,delete this.name}get code(){return $}set code(K){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:K,writable:!0})}toString(){return`${this.name} [${$}]: ${this.message}`}}}function o($,q,Q){if(typeof $==="number"){if(typeof q==="string")throw TypeError('The "string" argument must be of type string. Received type number');return x5($)}return N9($,q,Q)}function N9($,q,Q){if(typeof $==="string")return nJ($,q);if(ArrayBuffer.isView($))return dJ($);if($==null)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);if(C2($,ArrayBuffer)||$&&C2($.buffer,ArrayBuffer))return X5($,q,Q);if(typeof SharedArrayBuffer<"u"&&(C2($,SharedArrayBuffer)||$&&C2($.buffer,SharedArrayBuffer)))return X5($,q,Q);if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type number');let K=$.valueOf&&$.valueOf();if(K!=null&&K!==$)return o.from(K,q,Q);let J=mJ($);if(J)return J;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof $[Symbol.toPrimitive]==="function")return o.from($[Symbol.toPrimitive]("string"),q,Q);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $)}function Y9($){if(typeof $!=="number")throw TypeError('"size" argument must be of type number');else if($<0)throw RangeError('The value "'+$+'" is invalid for option "size"')}function bJ($,q,Q){if(Y9($),$<=0)return S2($);if(q!==void 0)return typeof Q==="string"?S2($).fill(q,Q):S2($).fill(q);return S2($)}function x5($){return Y9($),S2($<0?0:O5($)|0)}function nJ($,q){if(typeof q!=="string"||q==="")q="utf8";if(!o.isEncoding(q))throw TypeError("Unknown encoding: "+q);let Q=k9($,q)|0,K=S2(Q),J=K.write($,q);if(J!==Q)K=K.slice(0,J);return K}function A5($){let q=$.length<0?0:O5($.length)|0,Q=S2(q);for(let K=0;K=y6)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+y6.toString(16)+" bytes");return $|0}function k9($,q){if(o.isBuffer($))return $.length;if(ArrayBuffer.isView($)||C2($,ArrayBuffer))return $.byteLength;if(typeof $!=="string")throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof $);let Q=$.length,K=arguments.length>2&&arguments[2]===!0;if(!K&&Q===0)return 0;let J=!1;for(;;)switch(q){case"ascii":case"latin1":case"binary":return Q;case"utf8":case"utf-8":return y5($).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Q*2;case"hex":return Q>>>1;case"base64":return j9($).length;default:if(J)return K?-1:y5($).length;q=(""+q).toLowerCase(),J=!0}}function pJ($,q,Q){let K=!1;if(q===void 0||q<0)q=0;if(q>this.length)return"";if(Q===void 0||Q>this.length)Q=this.length;if(Q<=0)return"";if(Q>>>=0,q>>>=0,Q<=q)return"";if(!$)$="utf8";while(!0)switch($){case"hex":return QV(this,q,Q);case"utf8":case"utf-8":return L9(this,q,Q);case"ascii":return eJ(this,q,Q);case"latin1":case"binary":return $V(this,q,Q);case"base64":return sJ(this,q,Q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return qV(this,q,Q);default:if(K)throw TypeError("Unknown encoding: "+$);$=($+"").toLowerCase(),K=!0}}function w1($,q,Q){let K=$[q];$[q]=$[Q],$[Q]=K}function D9($,q,Q,K,J){if($.length===0)return-1;if(typeof Q==="string")K=Q,Q=0;else if(Q>2147483647)Q=2147483647;else if(Q<-2147483648)Q=-2147483648;if(Q=+Q,Number.isNaN(Q))Q=J?0:$.length-1;if(Q<0)Q=$.length+Q;if(Q>=$.length)if(J)return-1;else Q=$.length-1;else if(Q<0)if(J)Q=0;else return-1;if(typeof q==="string")q=o.from(q,K);if(o.isBuffer(q)){if(q.length===0)return-1;return W9($,q,Q,K,J)}else if(typeof q==="number"){if(q=q&255,typeof Uint8Array.prototype.indexOf==="function")if(J)return Uint8Array.prototype.indexOf.call($,q,Q);else return Uint8Array.prototype.lastIndexOf.call($,q,Q);return W9($,[q],Q,K,J)}throw TypeError("val must be string, number or Buffer")}function W9($,q,Q,K,J){let Z=1,G=$.length,W=q.length;if(K!==void 0){if(K=String(K).toLowerCase(),K==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le"){if($.length<2||q.length<2)return-1;Z=2,G/=2,W/=2,Q/=2}}function B(U,w){if(Z===1)return U[w];else return U.readUInt16BE(w*Z)}let V;if(J){let U=-1;for(V=Q;VG)Q=G-W;for(V=Q;V>=0;V--){let U=!0;for(let w=0;wJ)K=J;let Z=q.length;if(K>Z/2)K=Z/2;let G;for(G=0;G239?4:Z>223?3:Z>191?2:1;if(J+W<=Q){let B,V,U,w;switch(W){case 1:if(Z<128)G=Z;break;case 2:if(B=$[J+1],(B&192)===128){if(w=(Z&31)<<6|B&63,w>127)G=w}break;case 3:if(B=$[J+1],V=$[J+2],(B&192)===128&&(V&192)===128){if(w=(Z&15)<<12|(B&63)<<6|V&63,w>2047&&(w<55296||w>57343))G=w}break;case 4:if(B=$[J+1],V=$[J+2],U=$[J+3],(B&192)===128&&(V&192)===128&&(U&192)===128){if(w=(Z&15)<<18|(B&63)<<12|(V&63)<<6|U&63,w>65535&&w<1114112)G=w}}}if(G===null)G=65533,W=1;else if(G>65535)G-=65536,K.push(G>>>10&1023|55296),G=56320|G&1023;K.push(G),J+=W}return tJ(K)}function tJ($){let q=$.length;if(q<=B9)return String.fromCharCode.apply(String,$);let Q="",K=0;while(KK)Q=K;let J="";for(let Z=q;ZQ)throw RangeError("Trying to access beyond buffer length")}function s0($,q,Q,K,J,Z){if(!o.isBuffer($))throw TypeError('"buffer" argument must be a Buffer instance');if(q>J||q$.length)throw RangeError("Index out of range")}function H9($,q,Q,K,J){C9(q,K,J,$,Q,7);let Z=Number(q&BigInt(4294967295));$[Q++]=Z,Z=Z>>8,$[Q++]=Z,Z=Z>>8,$[Q++]=Z,Z=Z>>8,$[Q++]=Z;let G=Number(q>>BigInt(32)&BigInt(4294967295));return $[Q++]=G,G=G>>8,$[Q++]=G,G=G>>8,$[Q++]=G,G=G>>8,$[Q++]=G,Q}function v9($,q,Q,K,J){C9(q,K,J,$,Q,7);let Z=Number(q&BigInt(4294967295));$[Q+7]=Z,Z=Z>>8,$[Q+6]=Z,Z=Z>>8,$[Q+5]=Z,Z=Z>>8,$[Q+4]=Z;let G=Number(q>>BigInt(32)&BigInt(4294967295));return $[Q+3]=G,G=G>>8,$[Q+2]=G,G=G>>8,$[Q+1]=G,G=G>>8,$[Q]=G,Q+8}function f9($,q,Q,K,J,Z){if(Q+K>$.length)throw RangeError("Index out of range");if(Q<0)throw RangeError("Index out of range")}function R9($,q,Q,K,J){if(q=+q,Q=Q>>>0,!J)f9($,q,Q,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return F9($,q,Q,K,23,4),Q+4}function I9($,q,Q,K,J){if(q=+q,Q=Q>>>0,!J)f9($,q,Q,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return F9($,q,Q,K,52,8),Q+8}function z9($){let q="",Q=$.length,K=$[0]==="-"?1:0;for(;Q>=K+4;Q-=3)q=`_${$.slice(Q-3,Q)}${q}`;return`${$.slice(0,Q)}${q}`}function KV($,q,Q){if(n1(q,"offset"),$[q]===void 0||$[q+Q]===void 0)h6(q,$.length-(Q+1))}function C9($,q,Q,K,J,Z){if($>Q||$3)if(q===0||q===BigInt(0))W=`>= 0${G} and < 2${G} ** ${(Z+1)*8}${G}`;else W=`>= -(2${G} ** ${(Z+1)*8-1}${G}) and < 2 ** ${(Z+1)*8-1}${G}`;else W=`>= ${q}${G} and <= ${Q}${G}`;throw new g5("value",W,$)}KV(K,J,Z)}function n1($,q){if(typeof $!=="number")throw new cJ(q,"number",$)}function h6($,q,Q){if(Math.floor($)!==$)throw n1($,Q),new g5(Q||"offset","an integer",$);if(q<0)throw new _J;throw new g5(Q||"offset",`>= ${Q?1:0} and <= ${q}`,$)}function VV($){if($=$.split("=")[0],$=$.trim().replace(JV,""),$.length<2)return"";while($.length%4!==0)$=$+"=";return $}function y5($,q){q=q||1/0;let Q,K=$.length,J=null,Z=[];for(let G=0;G55295&&Q<57344){if(!J){if(Q>56319){if((q-=3)>-1)Z.push(239,191,189);continue}else if(G+1===K){if((q-=3)>-1)Z.push(239,191,189);continue}J=Q;continue}if(Q<56320){if((q-=3)>-1)Z.push(239,191,189);J=Q;continue}Q=(J-55296<<10|Q-56320)+65536}else if(J){if((q-=3)>-1)Z.push(239,191,189)}if(J=null,Q<128){if((q-=1)<0)break;Z.push(Q)}else if(Q<2048){if((q-=2)<0)break;Z.push(Q>>6|192,Q&63|128)}else if(Q<65536){if((q-=3)<0)break;Z.push(Q>>12|224,Q>>6&63|128,Q&63|128)}else if(Q<1114112){if((q-=4)<0)break;Z.push(Q>>18|240,Q>>12&63|128,Q>>6&63|128,Q&63|128)}else throw Error("Invalid code point")}return Z}function UV($){let q=[];for(let Q=0;Q<$.length;++Q)q.push($.charCodeAt(Q)&255);return q}function ZV($,q){let Q,K,J,Z=[];for(let G=0;G<$.length;++G){if((q-=2)<0)break;Q=$.charCodeAt(G),K=Q>>8,J=Q%256,Z.push(J),Z.push(K)}return Z}function j9($){return hJ(VV($))}function Y8($,q,Q,K){let J;for(J=0;J=q.length||J>=$.length)break;q[J+Q]=$[J]}return J}function C2($,q){return $ instanceof q||$!=null&&$.constructor!=null&&$.constructor.name!=null&&$.constructor.name===q.name}function l2($){return typeof BigInt>"u"?WV:$}function WV(){throw Error("BigInt not supported")}function P5($){return()=>{throw Error($+" is not implemented for node:buffer browser polyfill")}}var I2,F2,j5="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",M1,U9,G9,M9=50,y6=2147483647,w9=536870888,PJ,TJ,uJ,SJ,EJ,_J,cJ,g5,B9=4096,JV,GV,BV,zV,FV=($)=>{for(let q of $)if(q.charCodeAt(0)>127)return!1;return!0},MV,wV;var t0=b1(()=>{I2=[],F2=[];for(M1=0,U9=j5.length;M14294967296)J=z9(String(Q));else if(typeof Q==="bigint"){if(J=String(Q),Q>BigInt(2)**BigInt(32)||Q<-(BigInt(2)**BigInt(32)))J=z9(J);J+="n"}return K+=` It must be ${q}. Received ${J}`,K},RangeError);Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(!o.isBuffer(this))return;return this.buffer}});Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(!o.isBuffer(this))return;return this.byteOffset}});o.poolSize=8192;o.from=function($,q,Q){return N9($,q,Q)};Object.setPrototypeOf(o.prototype,Uint8Array.prototype);Object.setPrototypeOf(o,Uint8Array);o.alloc=function($,q,Q){return bJ($,q,Q)};o.allocUnsafe=function($){return x5($)};o.allocUnsafeSlow=function($){return x5($)};o.isBuffer=function($){return $!=null&&$._isBuffer===!0&&$!==o.prototype};o.compare=function($,q){if(C2($,Uint8Array))$=o.from($,$.offset,$.byteLength);if(C2(q,Uint8Array))q=o.from(q,q.offset,q.byteLength);if(!o.isBuffer($)||!o.isBuffer(q))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if($===q)return 0;let Q=$.length,K=q.length;for(let J=0,Z=Math.min(Q,K);JK.length){if(!o.isBuffer(Z))Z=o.from(Z);Z.copy(K,J)}else Uint8Array.prototype.set.call(K,Z,J);else if(!o.isBuffer(Z))throw TypeError('"list" argument must be an Array of Buffers');else Z.copy(K,J);J+=Z.length}return K};o.byteLength=k9;o.prototype._isBuffer=!0;o.prototype.swap16=function(){let $=this.length;if($%2!==0)throw RangeError("Buffer size must be a multiple of 16-bits");for(let q=0;q<$;q+=2)w1(this,q,q+1);return this};o.prototype.swap32=function(){let $=this.length;if($%4!==0)throw RangeError("Buffer size must be a multiple of 32-bits");for(let q=0;q<$;q+=4)w1(this,q,q+3),w1(this,q+1,q+2);return this};o.prototype.swap64=function(){let $=this.length;if($%8!==0)throw RangeError("Buffer size must be a multiple of 64-bits");for(let q=0;q<$;q+=8)w1(this,q,q+7),w1(this,q+1,q+6),w1(this,q+2,q+5),w1(this,q+3,q+4);return this};o.prototype.toString=function(){let $=this.length;if($===0)return"";if(arguments.length===0)return L9(this,0,$);return pJ.apply(this,arguments)};o.prototype.toLocaleString=o.prototype.toString;o.prototype.equals=function($){if(!o.isBuffer($))throw TypeError("Argument must be a Buffer");if(this===$)return!0;return o.compare(this,$)===0};o.prototype.inspect=function(){let $="",q=M9;if($=this.toString("hex",0,q).replace(/(.{2})/g,"$1 ").trim(),this.length>q)$+=" ... ";return""};if(G9)o.prototype[G9]=o.prototype.inspect;o.prototype.compare=function($,q,Q,K,J){if(C2($,Uint8Array))$=o.from($,$.offset,$.byteLength);if(!o.isBuffer($))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof $);if(q===void 0)q=0;if(Q===void 0)Q=$?$.length:0;if(K===void 0)K=0;if(J===void 0)J=this.length;if(q<0||Q>$.length||K<0||J>this.length)throw RangeError("out of range index");if(K>=J&&q>=Q)return 0;if(K>=J)return-1;if(q>=Q)return 1;if(q>>>=0,Q>>>=0,K>>>=0,J>>>=0,this===$)return 0;let Z=J-K,G=Q-q,W=Math.min(Z,G),B=this.slice(K,J),V=$.slice(q,Q);for(let U=0;U>>0,isFinite(Q)){if(Q=Q>>>0,K===void 0)K="utf8"}else K=Q,Q=void 0;else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let J=this.length-q;if(Q===void 0||Q>J)Q=J;if($.length>0&&(Q<0||q<0)||q>this.length)throw RangeError("Attempt to write outside buffer bounds");if(!K)K="utf8";let Z=!1;for(;;)switch(K){case"hex":return iJ(this,$,q,Q);case"utf8":case"utf-8":return oJ(this,$,q,Q);case"ascii":case"latin1":case"binary":return aJ(this,$,q,Q);case"base64":return lJ(this,$,q,Q);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return rJ(this,$,q,Q);default:if(Z)throw TypeError("Unknown encoding: "+K);K=(""+K).toLowerCase(),Z=!0}};o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};o.prototype.slice=function($,q){let Q=this.length;if($=~~$,q=q===void 0?Q:~~q,$<0){if($+=Q,$<0)$=0}else if($>Q)$=Q;if(q<0){if(q+=Q,q<0)q=0}else if(q>Q)q=Q;if(q<$)q=$;let K=this.subarray($,q);return Object.setPrototypeOf(K,o.prototype),K};o.prototype.readUintLE=o.prototype.readUIntLE=function($,q,Q){if($=$>>>0,q=q>>>0,!Q)b0($,q,this.length);let K=this[$],J=1,Z=0;while(++Z>>0,q=q>>>0,!Q)b0($,q,this.length);let K=this[$+--q],J=1;while(q>0&&(J*=256))K+=this[$+--q]*J;return K};o.prototype.readUint8=o.prototype.readUInt8=function($,q){if($=$>>>0,!q)b0($,1,this.length);return this[$]};o.prototype.readUint16LE=o.prototype.readUInt16LE=function($,q){if($=$>>>0,!q)b0($,2,this.length);return this[$]|this[$+1]<<8};o.prototype.readUint16BE=o.prototype.readUInt16BE=function($,q){if($=$>>>0,!q)b0($,2,this.length);return this[$]<<8|this[$+1]};o.prototype.readUint32LE=o.prototype.readUInt32LE=function($,q){if($=$>>>0,!q)b0($,4,this.length);return(this[$]|this[$+1]<<8|this[$+2]<<16)+this[$+3]*16777216};o.prototype.readUint32BE=o.prototype.readUInt32BE=function($,q){if($=$>>>0,!q)b0($,4,this.length);return this[$]*16777216+(this[$+1]<<16|this[$+2]<<8|this[$+3])};o.prototype.readBigUInt64LE=l2(function($){$=$>>>0,n1($,"offset");let q=this[$],Q=this[$+7];if(q===void 0||Q===void 0)h6($,this.length-8);let K=q+this[++$]*256+this[++$]*65536+this[++$]*16777216,J=this[++$]+this[++$]*256+this[++$]*65536+Q*16777216;return BigInt(K)+(BigInt(J)<>>0,n1($,"offset");let q=this[$],Q=this[$+7];if(q===void 0||Q===void 0)h6($,this.length-8);let K=q*16777216+this[++$]*65536+this[++$]*256+this[++$],J=this[++$]*16777216+this[++$]*65536+this[++$]*256+Q;return(BigInt(K)<>>0,q=q>>>0,!Q)b0($,q,this.length);let K=this[$],J=1,Z=0;while(++Z=J)K-=Math.pow(2,8*q);return K};o.prototype.readIntBE=function($,q,Q){if($=$>>>0,q=q>>>0,!Q)b0($,q,this.length);let K=q,J=1,Z=this[$+--K];while(K>0&&(J*=256))Z+=this[$+--K]*J;if(J*=128,Z>=J)Z-=Math.pow(2,8*q);return Z};o.prototype.readInt8=function($,q){if($=$>>>0,!q)b0($,1,this.length);if(!(this[$]&128))return this[$];return(255-this[$]+1)*-1};o.prototype.readInt16LE=function($,q){if($=$>>>0,!q)b0($,2,this.length);let Q=this[$]|this[$+1]<<8;return Q&32768?Q|4294901760:Q};o.prototype.readInt16BE=function($,q){if($=$>>>0,!q)b0($,2,this.length);let Q=this[$+1]|this[$]<<8;return Q&32768?Q|4294901760:Q};o.prototype.readInt32LE=function($,q){if($=$>>>0,!q)b0($,4,this.length);return this[$]|this[$+1]<<8|this[$+2]<<16|this[$+3]<<24};o.prototype.readInt32BE=function($,q){if($=$>>>0,!q)b0($,4,this.length);return this[$]<<24|this[$+1]<<16|this[$+2]<<8|this[$+3]};o.prototype.readBigInt64LE=l2(function($){$=$>>>0,n1($,"offset");let q=this[$],Q=this[$+7];if(q===void 0||Q===void 0)h6($,this.length-8);let K=this[$+4]+this[$+5]*256+this[$+6]*65536+(Q<<24);return(BigInt(K)<>>0,n1($,"offset");let q=this[$],Q=this[$+7];if(q===void 0||Q===void 0)h6($,this.length-8);let K=(q<<24)+this[++$]*65536+this[++$]*256+this[++$];return(BigInt(K)<>>0,!q)b0($,4,this.length);return N8(this,$,!0,23,4)};o.prototype.readFloatBE=function($,q){if($=$>>>0,!q)b0($,4,this.length);return N8(this,$,!1,23,4)};o.prototype.readDoubleLE=function($,q){if($=$>>>0,!q)b0($,8,this.length);return N8(this,$,!0,52,8)};o.prototype.readDoubleBE=function($,q){if($=$>>>0,!q)b0($,8,this.length);return N8(this,$,!1,52,8)};o.prototype.writeUintLE=o.prototype.writeUIntLE=function($,q,Q,K){if($=+$,q=q>>>0,Q=Q>>>0,!K){let G=Math.pow(2,8*Q)-1;s0(this,$,q,Q,G,0)}let J=1,Z=0;this[q]=$&255;while(++Z>>0,Q=Q>>>0,!K){let G=Math.pow(2,8*Q)-1;s0(this,$,q,Q,G,0)}let J=Q-1,Z=1;this[q+J]=$&255;while(--J>=0&&(Z*=256))this[q+J]=$/Z&255;return q+Q};o.prototype.writeUint8=o.prototype.writeUInt8=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,1,255,0);return this[q]=$&255,q+1};o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,2,65535,0);return this[q]=$&255,this[q+1]=$>>>8,q+2};o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,2,65535,0);return this[q]=$>>>8,this[q+1]=$&255,q+2};o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,4,4294967295,0);return this[q+3]=$>>>24,this[q+2]=$>>>16,this[q+1]=$>>>8,this[q]=$&255,q+4};o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,4,4294967295,0);return this[q]=$>>>24,this[q+1]=$>>>16,this[q+2]=$>>>8,this[q+3]=$&255,q+4};o.prototype.writeBigUInt64LE=l2(function($,q=0){return H9(this,$,q,BigInt(0),BigInt("0xffffffffffffffff"))});o.prototype.writeBigUInt64BE=l2(function($,q=0){return v9(this,$,q,BigInt(0),BigInt("0xffffffffffffffff"))});o.prototype.writeIntLE=function($,q,Q,K){if($=+$,q=q>>>0,!K){let W=Math.pow(2,8*Q-1);s0(this,$,q,Q,W-1,-W)}let J=0,Z=1,G=0;this[q]=$&255;while(++J>0)-G&255}return q+Q};o.prototype.writeIntBE=function($,q,Q,K){if($=+$,q=q>>>0,!K){let W=Math.pow(2,8*Q-1);s0(this,$,q,Q,W-1,-W)}let J=Q-1,Z=1,G=0;this[q+J]=$&255;while(--J>=0&&(Z*=256)){if($<0&&G===0&&this[q+J+1]!==0)G=1;this[q+J]=($/Z>>0)-G&255}return q+Q};o.prototype.writeInt8=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,1,127,-128);if($<0)$=255+$+1;return this[q]=$&255,q+1};o.prototype.writeInt16LE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,2,32767,-32768);return this[q]=$&255,this[q+1]=$>>>8,q+2};o.prototype.writeInt16BE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,2,32767,-32768);return this[q]=$>>>8,this[q+1]=$&255,q+2};o.prototype.writeInt32LE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,4,2147483647,-2147483648);return this[q]=$&255,this[q+1]=$>>>8,this[q+2]=$>>>16,this[q+3]=$>>>24,q+4};o.prototype.writeInt32BE=function($,q,Q){if($=+$,q=q>>>0,!Q)s0(this,$,q,4,2147483647,-2147483648);if($<0)$=4294967295+$+1;return this[q]=$>>>24,this[q+1]=$>>>16,this[q+2]=$>>>8,this[q+3]=$&255,q+4};o.prototype.writeBigInt64LE=l2(function($,q=0){return H9(this,$,q,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});o.prototype.writeBigInt64BE=l2(function($,q=0){return v9(this,$,q,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});o.prototype.writeFloatLE=function($,q,Q){return R9(this,$,q,!0,Q)};o.prototype.writeFloatBE=function($,q,Q){return R9(this,$,q,!1,Q)};o.prototype.writeDoubleLE=function($,q,Q){return I9(this,$,q,!0,Q)};o.prototype.writeDoubleBE=function($,q,Q){return I9(this,$,q,!1,Q)};o.prototype.copy=function($,q,Q,K){if(!o.isBuffer($))throw TypeError("argument should be a Buffer");if(!Q)Q=0;if(!K&&K!==0)K=this.length;if(q>=$.length)q=$.length;if(!q)q=0;if(K>0&&K=this.length)throw RangeError("Index out of range");if(K<0)throw RangeError("sourceEnd out of bounds");if(K>this.length)K=this.length;if($.length-q>>0,Q=Q===void 0?this.length:Q>>>0,!$)$=0;let J;if(typeof $==="number")for(J=q;J{var S0=y9.exports={},j2,g2;function T5(){throw Error("setTimeout has not been defined")}function u5(){throw Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function")j2=setTimeout;else j2=T5}catch($){j2=T5}try{if(typeof clearTimeout==="function")g2=clearTimeout;else g2=u5}catch($){g2=u5}})();function g9($){if(j2===setTimeout)return setTimeout($,0);if((j2===T5||!j2)&&setTimeout)return j2=setTimeout,setTimeout($,0);try{return j2($,0)}catch(q){try{return j2.call(null,$,0)}catch(Q){return j2.call(this,$,0)}}}function NV($){if(g2===clearTimeout)return clearTimeout($);if((g2===u5||!g2)&&clearTimeout)return g2=clearTimeout,clearTimeout($);try{return g2($)}catch(q){try{return g2.call(null,$)}catch(Q){return g2.call(this,$)}}}var E2=[],d1=!1,N1,k8=-1;function YV(){if(!d1||!N1)return;if(d1=!1,N1.length)E2=N1.concat(E2);else k8=-1;if(E2.length)A9()}function A9(){if(d1)return;var $=g9(YV);d1=!0;var q=E2.length;while(q){N1=E2,E2=[];while(++k81)for(var Q=1;Qn9,once:()=>c9,listenerCount:()=>d9,init:()=>r2,getMaxListeners:()=>p9,getEventListeners:()=>b9,default:()=>CV,captureRejectionSymbol:()=>u9,addAbortListener:()=>i9,EventEmitter:()=>r2});function S9($,q){var{_events:Q}=$;if(q[0]??=Error("Unhandled error."),!Q)throw q[0];var K=Q[T9];if(K)for(var J of O9.call(K))J.apply($,q);var Z=Q.error;if(!Z)throw q[0];for(var J of O9.call(Z))J.apply($,q);return!0}function LV($,q,Q,K){q.then(void 0,function(J){queueMicrotask(()=>HV($,J,Q,K))})}function HV($,q,Q,K){if(typeof $[x9]==="function")$[x9](q,Q,...K);else try{$[Y1]=!1,$.emit("error",q)}finally{$[Y1]=!0}}function E9($,q,Q){Q.warned=!0;let K=Error(`Possible EventEmitter memory leak detected. ${Q.length} ${String(q)} listeners added to [${$.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);K.name="MaxListenersExceededWarning",K.emitter=$,K.type=q,K.count=Q.length,console.warn(K)}function _9($,q,...Q){this.removeListener($,q),q.apply(this,Q)}function c9($,q,Q){var K=Q?.signal;if(m9(K,"options.signal"),K?.aborted)throw new S5(void 0,{cause:K?.reason});let{resolve:J,reject:Z,promise:G}=$newPromiseCapability(Promise),W=(U)=>{if($.removeListener(q,B),K!=null)D8(K,"abort",V);Z(U)},B=(...U)=>{if(typeof $.removeListener==="function")$.removeListener("error",W);if(K!=null)D8(K,"abort",V);J(U)};if(P9($,q,B,{once:!0}),q!=="error"&&typeof $.once==="function")$.once("error",W);function V(){D8($,q,B),D8($,"error",W),Z(new S5(void 0,{cause:K?.reason}))}if(K!=null)P9(K,"abort",V,{once:!0});return G}function b9($,q){return $.listeners(q)}function n9($,...q){_5($,"setMaxListeners",0);var Q;if(q&&(Q=q.length))for(let K=0;KK||(Q!=null||K!=null)&&Number.isNaN($))throw RV(q,`${Q!=null?`>= ${Q}`:""}${Q!=null&&K!=null?" && ":""}${K!=null?`<= ${K}`:""}`,$)}function x6($){if(typeof $!=="function")throw TypeError("The listener must be a function")}function IV($,q){if(typeof $!=="boolean")throw m1(q,"boolean",$)}function p9($){return $?._maxListeners??k1}function i9($,q){if($===void 0)throw m1("signal","AbortSignal",$);if(m9($,"signal"),typeof q!=="function")throw m1("listener","function",q);let Q;if($.aborted)queueMicrotask(()=>q());else $.addEventListener("abort",q,{__proto__:null,once:!0}),Q=()=>{$.removeEventListener("abort",q)};return{__proto__:null,[Symbol.dispose](){Q?.()}}}var E5,Y1,T9,kV,DV,x9,u9,O9,k1=10,r2=function($){if(this._events===void 0||this._events===this.__proto__._events)this._events={__proto__:null},this._eventsCount=0;if(this._maxListeners??=void 0,this[Y1]=$?.captureRejections?Boolean($?.captureRejections):y0[Y1])this.emit=fV},y0,vV=function($,...q){if($==="error")return S9(this,q);var{_events:Q}=this;if(Q===void 0)return!1;var K=Q[$];if(K===void 0)return!1;let J=K.length>1?K.slice():K;for(let Z=0,{length:G}=J;Z1?K.slice():K;for(let Z=0,{length:G}=J;Z{E5=Symbol.for,Y1=Symbol("kCapture"),T9=E5("events.errorMonitor"),kV=Symbol("events.maxEventTargetListeners"),DV=Symbol("events.maxEventTargetListenersWarned"),x9=E5("nodejs.rejection"),u9=E5("nodejs.rejection"),O9=Array.prototype.slice,y0=r2.prototype={};y0._events=void 0;y0._eventsCount=0;y0._maxListeners=void 0;y0.setMaxListeners=function($){return _5($,"setMaxListeners",0),this._maxListeners=$,this};y0.constructor=r2;y0.getMaxListeners=function(){return this?._maxListeners??k1};y0.emit=vV;y0.addListener=function($,q){x6(q);var Q=this._events;if(!Q)Q=this._events={__proto__:null},this._eventsCount=0;else if(Q.newListener)this.emit("newListener",$,q.listener??q);var K=Q[$];if(!K)Q[$]=[q],this._eventsCount++;else{K.push(q);var J=this._maxListeners??k1;if(J>0&&K.length>J&&!K.warned)E9(this,$,K)}return this};y0.on=y0.addListener;y0.prependListener=function($,q){x6(q);var Q=this._events;if(!Q)Q=this._events={__proto__:null},this._eventsCount=0;else if(Q.newListener)this.emit("newListener",$,q.listener??q);var K=Q[$];if(!K)Q[$]=[q],this._eventsCount++;else{K.unshift(q);var J=this._maxListeners??k1;if(J>0&&K.length>J&&!K.warned)E9(this,$,K)}return this};y0.once=function($,q){x6(q);let Q=_9.bind(this,$,q);return Q.listener=q,this.addListener($,Q),this};y0.prependOnceListener=function($,q){x6(q);let Q=_9.bind(this,$,q);return Q.listener=q,this.prependListener($,Q),this};y0.removeListener=function($,q){x6(q);var{_events:Q}=this;if(!Q)return this;var K=Q[$];if(!K)return this;var J=K.length;let Z=-1;for(let G=J-1;G>=0;G--)if(K[G]===q||K[G].listener===q){Z=G;break}if(Z<0)return this;if(Z===0)K.shift();else K.splice(Z,1);if(K.length===0)delete Q[$],this._eventsCount--;return this};y0.off=y0.removeListener;y0.removeAllListeners=function($){var{_events:q}=this;if($&&q){if(q[$])delete q[$],this._eventsCount--}else this._events={__proto__:null};return this};y0.listeners=function($){var{_events:q}=this;if(!q)return[];var Q=q[$];if(!Q)return[];return Q.map((K)=>K.listener??K)};y0.rawListeners=function($){var{_events:q}=this;if(!q)return[];var Q=q[$];if(!Q)return[];return Q.slice()};y0.listenerCount=function($){var{_events:q}=this;if(!q)return 0;return q[$]?.length??0};y0.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};y0[Y1]=!1;S5=class S5 extends Error{constructor($="The operation was aborted",q=void 0){if(q!==void 0&&typeof q!=="object")throw m1("options","Object",q);super($,q);this.code="ABORT_ERR",this.name="AbortError"}};Object.defineProperties(r2,{captureRejections:{get(){return y0[Y1]},set($){IV($,"EventEmitter.captureRejections"),y0[Y1]=$},enumerable:!0},defaultMaxListeners:{enumerable:!0,get:()=>{return k1},set:($)=>{_5($,"defaultMaxListeners",0),k1=$}},kMaxEventTargetListeners:{value:kV,enumerable:!1,configurable:!1,writable:!1},kMaxEventTargetListenersWarned:{value:DV,enumerable:!1,configurable:!1,writable:!1}});Object.assign(r2,{once:c9,getEventListeners:b9,getMaxListeners:p9,setMaxListeners:n9,EventEmitter:r2,usingDomains:!1,captureRejectionSymbol:u9,errorMonitor:T9,addAbortListener:i9,init:r2,listenerCount:d9});CV=r2});var a1=N0((Bz,$$)=>{var g0=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports),P0=g0(($,q)=>{class Q extends Error{constructor(K){if(!Array.isArray(K))throw TypeError(`Expected input to be an Array, got ${typeof K}`);let J="";for(let Z=0;Z{q.exports={format(Q,...K){return Q.replace(/%([sdifj])/g,function(...[J,Z]){let G=K.shift();if(Z==="f")return G.toFixed(6);else if(Z==="j")return JSON.stringify(G);else if(Z==="s"&&typeof G==="object")return`${G.constructor!==Object?G.constructor.name:""} {}`.trim();else return G.toString()})},inspect(Q){switch(typeof Q){case"string":if(Q.includes("'")){if(!Q.includes('"'))return`"${Q}"`;else if(!Q.includes("`")&&!Q.includes("${"))return`\`${Q}\``}return`'${Q}'`;case"number":if(isNaN(Q))return"NaN";else if(Object.is(Q,-0))return String(Q);return Q;case"bigint":return`${String(Q)}n`;case"boolean":case"undefined":return String(Q);case"object":return"{}"}}}}),a0=g0(($,q)=>{var{format:Q,inspect:K}=o9(),{AggregateError:J}=P0(),Z=globalThis.AggregateError||J,G=Symbol("kIsNodeError"),W=["string","function","number","object","Function","Object","boolean","bigint","symbol"],B=/^([A-Z][a-z0-9]*)+$/,V={};function U(D,z){if(!D)throw new V.ERR_INTERNAL_ASSERTION(z)}function w(D){let z="",N=D.length,H=D[0]==="-"?1:0;for(;N>=H+4;N-=3)z=`_${D.slice(N-3,N)}${z}`;return`${D.slice(0,N)}${z}`}function F(D,z,N){if(typeof z==="function")return U(z.length<=N.length,`Code: ${D}; The provided arguments length (${N.length}) does not match the required ones (${z.length}).`),z(...N);let H=(z.match(/%[dfijoOs]/g)||[]).length;if(U(H===N.length,`Code: ${D}; The provided arguments length (${N.length}) does not match the required ones (${H}).`),N.length===0)return z;return Q(z,...N)}function M(D,z,N){if(!N)N=Error;class H extends N{constructor(...v){super(F(D,z,v))}toString(){return`${this.name} [${D}]: ${this.message}`}}Object.defineProperties(H.prototype,{name:{value:N.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${D}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),H.prototype.code=D,H.prototype[G]=!0,V[D]=H}function k(D){let z="__node_internal_"+D.name;return Object.defineProperty(D,"name",{value:z}),D}function f(D,z){if(D&&z&&D!==z){if(Array.isArray(z.errors))return z.errors.push(D),z;let N=new Z([z,D],z.message);return N.code=z.code,N}return D||z}class L extends Error{constructor(D="The operation was aborted",z=void 0){if(z!==void 0&&typeof z!=="object")throw new V.ERR_INVALID_ARG_TYPE("options","Object",z);super(D,z);this.code="ABORT_ERR",this.name="AbortError"}}M("ERR_ASSERTION","%s",Error),M("ERR_INVALID_ARG_TYPE",(D,z,N)=>{if(U(typeof D==="string","'name' must be a string"),!Array.isArray(z))z=[z];let H="The ";if(D.endsWith(" argument"))H+=`${D} `;else H+=`"${D}" ${D.includes(".")?"property":"argument"} `;H+="must be ";let v=[],j=[],n=[];for(let _ of z)if(U(typeof _==="string","All expected entries have to be of type string"),W.includes(_))v.push(_.toLowerCase());else if(B.test(_))j.push(_);else U(_!=="object",'The value "object" should be written as "Object"'),n.push(_);if(j.length>0){let _=v.indexOf("object");if(_!==-1)v.splice(v,_,1),j.push("Object")}if(v.length>0){switch(v.length){case 1:H+=`of type ${v[0]}`;break;case 2:H+=`one of type ${v[0]} or ${v[1]}`;break;default:{let _=v.pop();H+=`one of type ${v.join(", ")}, or ${_}`}}if(j.length>0||n.length>0)H+=" or "}if(j.length>0){switch(j.length){case 1:H+=`an instance of ${j[0]}`;break;case 2:H+=`an instance of ${j[0]} or ${j[1]}`;break;default:{let _=j.pop();H+=`an instance of ${j.join(", ")}, or ${_}`}}if(n.length>0)H+=" or "}switch(n.length){case 0:break;case 1:if(n[0].toLowerCase()!==n[0])H+="an ";H+=`${n[0]}`;break;case 2:H+=`one of ${n[0]} or ${n[1]}`;break;default:{let _=n.pop();H+=`one of ${n.join(", ")}, or ${_}`}}if(N==null)H+=`. Received ${N}`;else if(typeof N==="function"&&N.name)H+=`. Received function ${N.name}`;else if(typeof N==="object"){var d;if((d=N.constructor)!==null&&d!==void 0&&d.name)H+=`. Received an instance of ${N.constructor.name}`;else{let _=K(N,{depth:-1});H+=`. Received ${_}`}}else{let _=K(N,{colors:!1});if(_.length>25)_=`${_.slice(0,25)}...`;H+=`. Received type ${typeof N} (${_})`}return H},TypeError),M("ERR_INVALID_ARG_VALUE",(D,z,N="is invalid")=>{let H=K(z);if(H.length>128)H=H.slice(0,128)+"...";return`The ${D.includes(".")?"property":"argument"} '${D}' ${N}. Received ${H}`},TypeError),M("ERR_INVALID_RETURN_VALUE",(D,z,N)=>{var H;let v=N!==null&&N!==void 0&&(H=N.constructor)!==null&&H!==void 0&&H.name?`instance of ${N.constructor.name}`:`type ${typeof N}`;return`Expected ${D} to be returned from the "${z}" function but got ${v}.`},TypeError),M("ERR_MISSING_ARGS",(...D)=>{U(D.length>0,"At least one arg needs to be specified");let z,N=D.length;switch(D=(Array.isArray(D)?D:[D]).map((H)=>`"${H}"`).join(" or "),N){case 1:z+=`The ${D[0]} argument`;break;case 2:z+=`The ${D[0]} and ${D[1]} arguments`;break;default:{let H=D.pop();z+=`The ${D.join(", ")}, and ${H} arguments`}break}return`${z} must be specified`},TypeError),M("ERR_OUT_OF_RANGE",(D,z,N)=>{U(z,'Missing "range" argument');let H;if(Number.isInteger(N)&&Math.abs(N)>4294967296)H=w(String(N));else if(typeof N==="bigint"){H=String(N);let v=BigInt(2)**BigInt(32);if(N>v||N<-v)H=w(H);H+="n"}else H=K(N);return`The value of "${D}" is out of range. It must be ${z}. Received ${H}`},RangeError),M("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error),M("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error),M("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error),M("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error),M("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error),M("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),M("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error),M("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error),M("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error),M("ERR_STREAM_WRITE_AFTER_END","write after end",Error),M("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError),q.exports={AbortError:L,aggregateTwoErrors:k(f),hideStackFrames:k,codes:V}}),jV=g0(($,q)=>{Object.defineProperty($,"__esModule",{value:!0});var Q=new WeakMap,K=new WeakMap;function J(X){let P=Q.get(X);return console.assert(P!=null,"'this' is expected an Event object, but got",X),P}function Z(X){if(X.passiveListener!=null){if(typeof console<"u"&&typeof console.error==="function")console.error("Unable to preventDefault inside passive event listener invocation.",X.passiveListener);return}if(!X.event.cancelable)return;if(X.canceled=!0,typeof X.event.preventDefault==="function")X.event.preventDefault()}function G(X,P){Q.set(this,{eventTarget:X,event:P,eventPhase:2,currentTarget:X,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:P.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});let g=Object.keys(P);for(let c=0;c0){let X=Array(arguments.length);for(let P=0;P{Object.defineProperty($,"__esModule",{value:!0});var Q=jV();class K extends Q.EventTarget{constructor(){super();throw TypeError("AbortSignal cannot be constructed directly")}get aborted(){let U=G.get(this);if(typeof U!=="boolean")throw TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?"null":typeof this}`);return U}}Q.defineEventAttribute(K.prototype,"abort");function J(){let U=Object.create(K.prototype);return Q.EventTarget.call(U),G.set(U,!1),U}function Z(U){if(G.get(U)!==!1)return;G.set(U,!0),U.dispatchEvent({type:"abort"})}var G=new WeakMap;if(Object.defineProperties(K.prototype,{aborted:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(K.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});class W{constructor(){B.set(this,J())}get signal(){return V(this)}abort(){Z(V(this))}}var B=new WeakMap;function V(U){let w=B.get(U);if(w==null)throw TypeError(`Expected 'this' to be an 'AbortController' object, but got ${U===null?"null":typeof U}`);return w}if(Object.defineProperties(W.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol")Object.defineProperty(W.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"});$.AbortController=W,$.AbortSignal=K,$.default=W,q.exports=W,q.exports.AbortController=q.exports.default=W,q.exports.AbortSignal=K}),e0=g0(($,q)=>{var Q=(t0(),X0(K2)),{format:K,inspect:J}=o9(),{codes:{ERR_INVALID_ARG_TYPE:Z}}=a0(),{kResistStopPropagation:G,AggregateError:W,SymbolDispose:B}=P0(),V=globalThis.AbortSignal||O6().AbortSignal,U=globalThis.AbortController||O6().AbortController,w=Object.getPrototypeOf(async function(){}).constructor,F=globalThis.Blob||Q.Blob,M=typeof F<"u"?function(L){return L instanceof F}:function(L){return!1},k=(L,D)=>{if(L!==void 0&&(L===null||typeof L!=="object"||!("aborted"in L)))throw new Z(D,"AbortSignal",L)},f=(L,D)=>{if(typeof L!=="function")throw new Z(D,"Function",L)};q.exports={AggregateError:W,kEmptyObject:Object.freeze({}),once(L){let D=!1;return function(...z){if(D)return;D=!0,L.apply(this,z)}},createDeferredPromise:function(){let L,D;return{promise:new Promise((z,N)=>{L=z,D=N}),resolve:L,reject:D}},promisify(L){return new Promise((D,z)=>{L((N,...H)=>{if(N)return z(N);return D(...H)})})},debuglog(){return function(){}},format:K,inspect:J,types:{isAsyncFunction(L){return L instanceof w},isArrayBufferView(L){return ArrayBuffer.isView(L)}},isBlob:M,deprecate(L,D){return L},addAbortListener:(i1(),X0(p1)).addAbortListener||function(L,D){if(L===void 0)throw new Z("signal","AbortSignal",L);k(L,"signal"),f(D,"listener");let z;if(L.aborted)queueMicrotask(()=>D());else L.addEventListener("abort",D,{__proto__:null,once:!0,[G]:!0}),z=()=>{L.removeEventListener("abort",D)};return{__proto__:null,[B](){var N;(N=z)===null||N===void 0||N()}}},AbortSignalAny:V.any||function(L){if(L.length===1)return L[0];let D=new U,z=()=>D.abort();return L.forEach((N)=>{k(N,"signals"),N.addEventListener("abort",z,{once:!0})}),D.signal.addEventListener("abort",()=>{L.forEach((N)=>N.removeEventListener("abort",z))},{once:!0}),D.signal}},q.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")}),P6=g0(($,q)=>{var{ArrayIsArray:Q,ArrayPrototypeIncludes:K,ArrayPrototypeJoin:J,ArrayPrototypeMap:Z,NumberIsInteger:G,NumberIsNaN:W,NumberMAX_SAFE_INTEGER:B,NumberMIN_SAFE_INTEGER:V,NumberParseInt:U,ObjectPrototypeHasOwnProperty:w,RegExpPrototypeExec:F,String:M,StringPrototypeToUpperCase:k,StringPrototypeTrim:f}=P0(),{hideStackFrames:L,codes:{ERR_SOCKET_BAD_PORT:D,ERR_INVALID_ARG_TYPE:z,ERR_INVALID_ARG_VALUE:N,ERR_OUT_OF_RANGE:H,ERR_UNKNOWN_SIGNAL:v}}=a0(),{normalizeEncoding:j}=e0(),{isAsyncFunction:n,isArrayBufferView:d}=e0().types,_={};function X(T){return T===(T|0)}function P(T){return T===T>>>0}var g=/^[0-7]+$/,c="must be a 32-bit unsigned integer or an octal string";function h(T,t,G0){if(typeof T>"u")T=G0;if(typeof T==="string"){if(F(g,T)===null)throw new N(t,T,c);T=U(T,8)}return $0(T,t),T}var x=L((T,t,G0=V,Q0=B)=>{if(typeof T!=="number")throw new z(t,"number",T);if(!G(T))throw new H(t,"an integer",T);if(TQ0)throw new H(t,`>= ${G0} && <= ${Q0}`,T)}),l=L((T,t,G0=-2147483648,Q0=2147483647)=>{if(typeof T!=="number")throw new z(t,"number",T);if(!G(T))throw new H(t,"an integer",T);if(TQ0)throw new H(t,`>= ${G0} && <= ${Q0}`,T)}),$0=L((T,t,G0=!1)=>{if(typeof T!=="number")throw new z(t,"number",T);if(!G(T))throw new H(t,"an integer",T);let Q0=G0?1:0,M0=4294967295;if(TM0)throw new H(t,`>= ${Q0} && <= ${M0}`,T)});function Z0(T,t){if(typeof T!=="string")throw new z(t,"string",T)}function F0(T,t,G0=void 0,Q0){if(typeof T!=="number")throw new z(t,"number",T);if(G0!=null&&TQ0||(G0!=null||Q0!=null)&&W(T))throw new H(t,`${G0!=null?`>= ${G0}`:""}${G0!=null&&Q0!=null?" && ":""}${Q0!=null?`<= ${Q0}`:""}`,T)}var p=L((T,t,G0)=>{if(!K(G0,T)){let Q0="must be one of: "+J(Z(G0,(M0)=>typeof M0==="string"?`'${M0}'`:M(M0)),", ");throw new N(t,T,Q0)}});function W0(T,t){if(typeof T!=="boolean")throw new z(t,"boolean",T)}function y(T,t,G0){return T==null||!w(T,t)?G0:T[t]}var i=L((T,t,G0=null)=>{let Q0=y(G0,"allowArray",!1),M0=y(G0,"allowFunction",!1);if(!y(G0,"nullable",!1)&&T===null||!Q0&&Q(T)||typeof T!=="object"&&(!M0||typeof T!=="function"))throw new z(t,"Object",T)}),U0=L((T,t)=>{if(T!=null&&typeof T!=="object"&&typeof T!=="function")throw new z(t,"a dictionary",T)}),m=L((T,t,G0=0)=>{if(!Q(T))throw new z(t,"Array",T);if(T.length{if(!d(T))throw new z(t,["Buffer","TypedArray","DataView"],T)});function E(T,t){let G0=j(t),Q0=T.length;if(G0==="hex"&&Q0%2!==0)throw new N("encoding",t,`is invalid for data of length ${Q0}`)}function a(T,t="Port",G0=!0){if(typeof T!=="number"&&typeof T!=="string"||typeof T==="string"&&f(T).length===0||+T!==+T>>>0||T>65535||T===0&&!G0)throw new D(t,T,G0);return T|0}var K0=L((T,t)=>{if(T!==void 0&&(T===null||typeof T!=="object"||!("aborted"in T)))throw new z(t,"AbortSignal",T)}),R=L((T,t)=>{if(typeof T!=="function")throw new z(t,"Function",T)}),Y=L((T,t)=>{if(typeof T!=="function"||n(T))throw new z(t,"Function",T)}),C=L((T,t)=>{if(T!==void 0)throw new z(t,"undefined",T)});function u(T,t,G0){if(!K(G0,T))throw new z(t,`('${J(G0,"|")}')`,T)}var e=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function r(T,t){if(typeof T>"u"||!F(e,T))throw new N(t,T,'must be an array or string of format "; rel=preload; as=style"')}function s(T){if(typeof T==="string")return r(T,"hints"),T;else if(Q(T)){let t=T.length,G0="";if(t===0)return G0;for(let Q0=0;Q0; rel=preload; as=style"')}q.exports={isInt32:X,isUint32:P,parseFileMode:h,validateArray:m,validateStringArray:V0,validateBooleanArray:w0,validateAbortSignalArray:S,validateBoolean:W0,validateBuffer:O,validateDictionary:U0,validateEncoding:E,validateFunction:R,validateInt32:l,validateInteger:x,validateNumber:F0,validateObject:i,validateOneOf:p,validatePlainFunction:Y,validatePort:a,validateSignalName:b,validateString:Z0,validateUint32:$0,validateUndefined:C,validateUnion:u,validateAbortSignal:K0,validateLinkHeaderValue:s}}),D1=g0(($,q)=>{q.exports=globalThis.process}),b2=g0(($,q)=>{var{SymbolAsyncIterator:Q,SymbolIterator:K,SymbolFor:J}=P0(),Z=J("nodejs.stream.destroyed"),G=J("nodejs.stream.errored"),W=J("nodejs.stream.readable"),B=J("nodejs.stream.writable"),V=J("nodejs.stream.disturbed"),U=J("nodejs.webstream.isClosedPromise"),w=J("nodejs.webstream.controllerErrorFunction");function F(y,i=!1){var U0;return!!(y&&typeof y.pipe==="function"&&typeof y.on==="function"&&(!i||typeof y.pause==="function"&&typeof y.resume==="function")&&(!y._writableState||((U0=y._readableState)===null||U0===void 0?void 0:U0.readable)!==!1)&&(!y._writableState||y._readableState))}function M(y){var i;return!!(y&&typeof y.write==="function"&&typeof y.on==="function"&&(!y._readableState||((i=y._writableState)===null||i===void 0?void 0:i.writable)!==!1))}function k(y){return!!(y&&typeof y.pipe==="function"&&y._readableState&&typeof y.on==="function"&&typeof y.write==="function")}function f(y){return y&&(y._readableState||y._writableState||typeof y.write==="function"&&typeof y.on==="function"||typeof y.pipe==="function"&&typeof y.on==="function")}function L(y){return!!(y&&!f(y)&&typeof y.pipeThrough==="function"&&typeof y.getReader==="function"&&typeof y.cancel==="function")}function D(y){return!!(y&&!f(y)&&typeof y.getWriter==="function"&&typeof y.abort==="function")}function z(y){return!!(y&&!f(y)&&typeof y.readable==="object"&&typeof y.writable==="object")}function N(y){return L(y)||D(y)||z(y)}function H(y,i){if(y==null)return!1;if(i===!0)return typeof y[Q]==="function";if(i===!1)return typeof y[K]==="function";return typeof y[Q]==="function"||typeof y[K]==="function"}function v(y){if(!f(y))return null;let{_writableState:i,_readableState:U0}=y,m=i||U0;return!!(y.destroyed||y[Z]||m!==null&&m!==void 0&&m.destroyed)}function j(y){if(!M(y))return null;if(y.writableEnded===!0)return!0;let i=y._writableState;if(i!==null&&i!==void 0&&i.errored)return!1;if(typeof(i===null||i===void 0?void 0:i.ended)!=="boolean")return null;return i.ended}function n(y,i){if(!M(y))return null;if(y.writableFinished===!0)return!0;let U0=y._writableState;if(U0!==null&&U0!==void 0&&U0.errored)return!1;if(typeof(U0===null||U0===void 0?void 0:U0.finished)!=="boolean")return null;return!!(U0.finished||i===!1&&U0.ended===!0&&U0.length===0)}function d(y){if(!F(y))return null;if(y.readableEnded===!0)return!0;let i=y._readableState;if(!i||i.errored)return!1;if(typeof(i===null||i===void 0?void 0:i.ended)!=="boolean")return null;return i.ended}function _(y,i){if(!F(y))return null;let U0=y._readableState;if(U0!==null&&U0!==void 0&&U0.errored)return!1;if(typeof(U0===null||U0===void 0?void 0:U0.endEmitted)!=="boolean")return null;return!!(U0.endEmitted||i===!1&&U0.ended===!0&&U0.length===0)}function X(y){if(y&&y[W]!=null)return y[W];if(typeof(y===null||y===void 0?void 0:y.readable)!=="boolean")return null;if(v(y))return!1;return F(y)&&y.readable&&!_(y)}function P(y){if(y&&y[B]!=null)return y[B];if(typeof(y===null||y===void 0?void 0:y.writable)!=="boolean")return null;if(v(y))return!1;return M(y)&&y.writable&&!j(y)}function g(y,i){if(!f(y))return null;if(v(y))return!0;if((i===null||i===void 0?void 0:i.readable)!==!1&&X(y))return!1;if((i===null||i===void 0?void 0:i.writable)!==!1&&P(y))return!1;return!0}function c(y){var i,U0;if(!f(y))return null;if(y.writableErrored)return y.writableErrored;return(i=(U0=y._writableState)===null||U0===void 0?void 0:U0.errored)!==null&&i!==void 0?i:null}function h(y){var i,U0;if(!f(y))return null;if(y.readableErrored)return y.readableErrored;return(i=(U0=y._readableState)===null||U0===void 0?void 0:U0.errored)!==null&&i!==void 0?i:null}function x(y){if(!f(y))return null;if(typeof y.closed==="boolean")return y.closed;let{_writableState:i,_readableState:U0}=y;if(typeof(i===null||i===void 0?void 0:i.closed)==="boolean"||typeof(U0===null||U0===void 0?void 0:U0.closed)==="boolean")return(i===null||i===void 0?void 0:i.closed)||(U0===null||U0===void 0?void 0:U0.closed);if(typeof y._closed==="boolean"&&l(y))return y._closed;return null}function l(y){return typeof y._closed==="boolean"&&typeof y._defaultKeepAlive==="boolean"&&typeof y._removedConnection==="boolean"&&typeof y._removedContLen==="boolean"}function $0(y){return typeof y._sent100==="boolean"&&l(y)}function Z0(y){var i;return typeof y._consuming==="boolean"&&typeof y._dumped==="boolean"&&((i=y.req)===null||i===void 0?void 0:i.upgradeOrConnect)===void 0}function F0(y){if(!f(y))return null;let{_writableState:i,_readableState:U0}=y,m=i||U0;return!m&&$0(y)||!!(m&&m.autoDestroy&&m.emitClose&&m.closed===!1)}function p(y){var i;return!!(y&&((i=y[V])!==null&&i!==void 0?i:y.readableDidRead||y.readableAborted))}function W0(y){var i,U0,m,V0,w0,S,b,O,E,a;return!!(y&&((i=(U0=(m=(V0=(w0=(S=y[G])!==null&&S!==void 0?S:y.readableErrored)!==null&&w0!==void 0?w0:y.writableErrored)!==null&&V0!==void 0?V0:(b=y._readableState)===null||b===void 0?void 0:b.errorEmitted)!==null&&m!==void 0?m:(O=y._writableState)===null||O===void 0?void 0:O.errorEmitted)!==null&&U0!==void 0?U0:(E=y._readableState)===null||E===void 0?void 0:E.errored)!==null&&i!==void 0?i:(a=y._writableState)===null||a===void 0?void 0:a.errored))}q.exports={isDestroyed:v,kIsDestroyed:Z,isDisturbed:p,kIsDisturbed:V,isErrored:W0,kIsErrored:G,isReadable:X,kIsReadable:W,kIsClosedPromise:U,kControllerErrorFunction:w,kIsWritable:B,isClosed:x,isDuplexNodeStream:k,isFinished:g,isIterable:H,isReadableNodeStream:F,isReadableStream:L,isReadableEnded:d,isReadableFinished:_,isReadableErrored:h,isNodeStream:f,isWebStream:N,isWritable:P,isWritableNodeStream:M,isWritableStream:D,isWritableEnded:j,isWritableFinished:n,isWritableErrored:c,isServerRequest:Z0,isServerResponse:$0,willEmitClose:F0,isTransformStream:z}}),s2=g0(($,q)=>{var Q=D1(),{AbortError:K,codes:J}=a0(),{ERR_INVALID_ARG_TYPE:Z,ERR_STREAM_PREMATURE_CLOSE:G}=J,{kEmptyObject:W,once:B}=e0(),{validateAbortSignal:V,validateFunction:U,validateObject:w,validateBoolean:F}=P6(),{Promise:M,PromisePrototypeThen:k,SymbolDispose:f}=P0(),{isClosed:L,isReadable:D,isReadableNodeStream:z,isReadableStream:N,isReadableFinished:H,isReadableErrored:v,isWritable:j,isWritableNodeStream:n,isWritableStream:d,isWritableFinished:_,isWritableErrored:X,isNodeStream:P,willEmitClose:g,kIsClosedPromise:c}=b2(),h;function x(p){return p.setHeader&&typeof p.abort==="function"}var l=()=>{};function $0(p,W0,y){var i,U0;if(arguments.length===2)y=W0,W0=W;else if(W0==null)W0=W;else w(W0,"options");if(U(y,"callback"),V(W0.signal,"options.signal"),y=B(y),N(p)||d(p))return Z0(p,W0,y);if(!P(p))throw new Z("stream",["ReadableStream","WritableStream","Stream"],p);let m=(i=W0.readable)!==null&&i!==void 0?i:z(p),V0=(U0=W0.writable)!==null&&U0!==void 0?U0:n(p),w0=p._writableState,S=p._readableState,b=()=>{if(!p.writable)a()},O=g(p)&&z(p)===m&&n(p)===V0,E=_(p,!1),a=()=>{if(E=!0,p.destroyed)O=!1;if(O&&(!p.readable||m))return;if(!m||K0)y.call(p)},K0=H(p,!1),R=()=>{if(K0=!0,p.destroyed)O=!1;if(O&&(!p.writable||V0))return;if(!V0||E)y.call(p)},Y=(T)=>{y.call(p,T)},C=L(p),u=()=>{C=!0;let T=X(p)||v(p);if(T&&typeof T!=="boolean")return y.call(p,T);if(m&&!K0&&z(p,!0)){if(!H(p,!1))return y.call(p,new G)}if(V0&&!E){if(!_(p,!1))return y.call(p,new G)}y.call(p)},e=()=>{C=!0;let T=X(p)||v(p);if(T&&typeof T!=="boolean")return y.call(p,T);y.call(p)},r=()=>{p.req.on("finish",a)};if(x(p)){if(p.on("complete",a),!O)p.on("abort",u);if(p.req)r();else p.on("request",r)}else if(V0&&!w0)p.on("end",b),p.on("close",b);if(!O&&typeof p.aborted==="boolean")p.on("aborted",u);if(p.on("end",R),p.on("finish",a),W0.error!==!1)p.on("error",Y);if(p.on("close",u),C)Q.nextTick(u);else if(w0!==null&&w0!==void 0&&w0.errorEmitted||S!==null&&S!==void 0&&S.errorEmitted){if(!O)Q.nextTick(e)}else if(!m&&(!O||D(p))&&(E||j(p)===!1))Q.nextTick(e);else if(!V0&&(!O||j(p))&&(K0||D(p)===!1))Q.nextTick(e);else if(S&&p.req&&p.aborted)Q.nextTick(e);let s=()=>{if(y=l,p.removeListener("aborted",u),p.removeListener("complete",a),p.removeListener("abort",u),p.removeListener("request",r),p.req)p.req.removeListener("finish",a);p.removeListener("end",b),p.removeListener("close",b),p.removeListener("finish",a),p.removeListener("end",R),p.removeListener("error",Y),p.removeListener("close",u)};if(W0.signal&&!C){let T=()=>{let t=y;s(),t.call(p,new K(void 0,{cause:W0.signal.reason}))};if(W0.signal.aborted)Q.nextTick(T);else{h=h||e0().addAbortListener;let t=h(W0.signal,T),G0=y;y=B((...Q0)=>{t[f](),G0.apply(p,Q0)})}}return s}function Z0(p,W0,y){let i=!1,U0=l;if(W0.signal)if(U0=()=>{i=!0,y.call(p,new K(void 0,{cause:W0.signal.reason}))},W0.signal.aborted)Q.nextTick(U0);else{h=h||e0().addAbortListener;let V0=h(W0.signal,U0),w0=y;y=B((...S)=>{V0[f](),w0.apply(p,S)})}let m=(...V0)=>{if(!i)Q.nextTick(()=>y.apply(p,V0))};return k(p[c].promise,m,m),l}function F0(p,W0){var y;let i=!1;if(W0===null)W0=W;if((y=W0)!==null&&y!==void 0&&y.cleanup)F(W0.cleanup,"cleanup"),i=W0.cleanup;return new M((U0,m)=>{let V0=$0(p,W0,(w0)=>{if(i)V0();if(w0)m(w0);else U0()})})}q.exports=$0,q.exports.finished=F0}),o1=g0(($,q)=>{var Q=D1(),{aggregateTwoErrors:K,codes:{ERR_MULTIPLE_CALLBACK:J},AbortError:Z}=a0(),{Symbol:G}=P0(),{kIsDestroyed:W,isDestroyed:B,isFinished:V,isServerRequest:U}=b2(),w=G("kDestroy"),F=G("kConstruct");function M(g,c,h){if(g){if(g.stack,c&&!c.errored)c.errored=g;if(h&&!h.errored)h.errored=g}}function k(g,c){let h=this._readableState,x=this._writableState,l=x||h;if(x!==null&&x!==void 0&&x.destroyed||h!==null&&h!==void 0&&h.destroyed){if(typeof c==="function")c();return this}if(M(g,x,h),x)x.destroyed=!0;if(h)h.destroyed=!0;if(!l.constructed)this.once(w,function($0){f(this,K($0,g),c)});else f(this,g,c);return this}function f(g,c,h){let x=!1;function l($0){if(x)return;x=!0;let{_readableState:Z0,_writableState:F0}=g;if(M($0,F0,Z0),F0)F0.closed=!0;if(Z0)Z0.closed=!0;if(typeof h==="function")h($0);if($0)Q.nextTick(L,g,$0);else Q.nextTick(D,g)}try{g._destroy(c||null,l)}catch($0){l($0)}}function L(g,c){z(g,c),D(g)}function D(g){let{_readableState:c,_writableState:h}=g;if(h)h.closeEmitted=!0;if(c)c.closeEmitted=!0;if(h!==null&&h!==void 0&&h.emitClose||c!==null&&c!==void 0&&c.emitClose)g.emit("close")}function z(g,c){let{_readableState:h,_writableState:x}=g;if(x!==null&&x!==void 0&&x.errorEmitted||h!==null&&h!==void 0&&h.errorEmitted)return;if(x)x.errorEmitted=!0;if(h)h.errorEmitted=!0;g.emit("error",c)}function N(){let g=this._readableState,c=this._writableState;if(g)g.constructed=!0,g.closed=!1,g.closeEmitted=!1,g.destroyed=!1,g.errored=null,g.errorEmitted=!1,g.reading=!1,g.ended=g.readable===!1,g.endEmitted=g.readable===!1;if(c)c.constructed=!0,c.destroyed=!1,c.closed=!1,c.closeEmitted=!1,c.errored=null,c.errorEmitted=!1,c.finalCalled=!1,c.prefinished=!1,c.ended=c.writable===!1,c.ending=c.writable===!1,c.finished=c.writable===!1}function H(g,c,h){let{_readableState:x,_writableState:l}=g;if(l!==null&&l!==void 0&&l.destroyed||x!==null&&x!==void 0&&x.destroyed)return this;if(x!==null&&x!==void 0&&x.autoDestroy||l!==null&&l!==void 0&&l.autoDestroy)g.destroy(c);else if(c){if(c.stack,l&&!l.errored)l.errored=c;if(x&&!x.errored)x.errored=c;if(h)Q.nextTick(z,g,c);else z(g,c)}}function v(g,c){if(typeof g._construct!=="function")return;let{_readableState:h,_writableState:x}=g;if(h)h.constructed=!1;if(x)x.constructed=!1;if(g.once(F,c),g.listenerCount(F)>1)return;Q.nextTick(j,g)}function j(g){let c=!1;function h(x){if(c){H(g,x!==null&&x!==void 0?x:new J);return}c=!0;let{_readableState:l,_writableState:$0}=g,Z0=$0||l;if(l)l.constructed=!0;if($0)$0.constructed=!0;if(Z0.destroyed)g.emit(w,x);else if(x)H(g,x,!0);else Q.nextTick(n,g)}try{g._construct((x)=>{Q.nextTick(h,x)})}catch(x){Q.nextTick(h,x)}}function n(g){g.emit(F)}function d(g){return(g===null||g===void 0?void 0:g.setHeader)&&typeof g.abort==="function"}function _(g){g.emit("close")}function X(g,c){g.emit("error",c),Q.nextTick(_,g)}function P(g,c){if(!g||B(g))return;if(!c&&!V(g))c=new Z;if(U(g))g.socket=null,g.destroy(c);else if(d(g))g.abort();else if(d(g.req))g.req.abort();else if(typeof g.destroy==="function")g.destroy(c);else if(typeof g.close==="function")g.close();else if(c)Q.nextTick(X,g,c);else Q.nextTick(_,g);if(!g.destroyed)g[W]=!0}q.exports={construct:v,destroyer:P,destroy:k,undestroy:N,errorOrDestroy:H}}),c5=g0(($,q)=>{var{ArrayIsArray:Q,ObjectSetPrototypeOf:K}=P0(),{EventEmitter:J}=(i1(),X0(p1));function Z(W){J.call(this,W)}K(Z.prototype,J.prototype),K(Z,J),Z.prototype.pipe=function(W,B){let V=this;function U(D){if(W.writable&&W.write(D)===!1&&V.pause)V.pause()}V.on("data",U);function w(){if(V.readable&&V.resume)V.resume()}if(W.on("drain",w),!W._isStdio&&(!B||B.end!==!1))V.on("end",M),V.on("close",k);let F=!1;function M(){if(F)return;F=!0,W.end()}function k(){if(F)return;if(F=!0,typeof W.destroy==="function")W.destroy()}function f(D){if(L(),J.listenerCount(this,"error")===0)this.emit("error",D)}G(V,"error",f),G(W,"error",f);function L(){V.removeListener("data",U),W.removeListener("drain",w),V.removeListener("end",M),V.removeListener("close",k),V.removeListener("error",f),W.removeListener("error",f),V.removeListener("end",L),V.removeListener("close",L),W.removeListener("close",L)}return V.on("end",L),V.on("close",L),W.on("close",L),W.emit("pipe",V),W};function G(W,B,V){if(typeof W.prependListener==="function")return W.prependListener(B,V);if(!W._events||!W._events[B])W.on(B,V);else if(Q(W._events[B]))W._events[B].unshift(V);else W._events[B]=[V,W._events[B]]}q.exports={Stream:Z,prependListener:G}}),L8=g0(($,q)=>{var{SymbolDispose:Q}=P0(),{AbortError:K,codes:J}=a0(),{isNodeStream:Z,isWebStream:G,kControllerErrorFunction:W}=b2(),B=s2(),{ERR_INVALID_ARG_TYPE:V}=J,U,w=(F,M)=>{if(typeof F!=="object"||!("aborted"in F))throw new V(M,"AbortSignal",F)};q.exports.addAbortSignal=function(F,M){if(w(F,"signal"),!Z(M)&&!G(M))throw new V("stream",["ReadableStream","WritableStream","Stream"],M);return q.exports.addAbortSignalNoValidate(F,M)},q.exports.addAbortSignalNoValidate=function(F,M){if(typeof F!=="object"||!("aborted"in F))return M;let k=Z(M)?()=>{M.destroy(new K(void 0,{cause:F.reason}))}:()=>{M[W](new K(void 0,{cause:F.reason}))};if(F.aborted)k();else{U=U||e0().addAbortListener;let f=U(F,k);B(M,f[Q])}return M}}),gV=g0(($,q)=>{var{StringPrototypeSlice:Q,SymbolIterator:K,TypedArrayPrototypeSet:J,Uint8Array:Z}=P0(),{Buffer:G}=(t0(),X0(K2)),{inspect:W}=e0();q.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(B){let V={data:B,next:null};if(this.length>0)this.tail.next=V;else this.head=V;this.tail=V,++this.length}unshift(B){let V={data:B,next:this.head};if(this.length===0)this.tail=V;this.head=V,++this.length}shift(){if(this.length===0)return;let B=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,B}clear(){this.head=this.tail=null,this.length=0}join(B){if(this.length===0)return"";let V=this.head,U=""+V.data;while((V=V.next)!==null)U+=B+V.data;return U}concat(B){if(this.length===0)return G.alloc(0);let V=G.allocUnsafe(B>>>0),U=this.head,w=0;while(U)J(V,U.data,w),w+=U.data.length,U=U.next;return V}consume(B,V){let U=this.head.data;if(BF.length)V+=F,B-=F.length;else{if(B===F.length)if(V+=F,++w,U.next)this.head=U.next;else this.head=this.tail=null;else V+=Q(F,0,B),this.head=U,U.data=Q(F,B);break}++w}while((U=U.next)!==null);return this.length-=w,V}_getBuffer(B){let V=G.allocUnsafe(B),U=B,w=this.head,F=0;do{let M=w.data;if(B>M.length)J(V,M,U-B),B-=M.length;else{if(B===M.length)if(J(V,M,U-B),++F,w.next)this.head=w.next;else this.head=this.tail=null;else J(V,new Z(M.buffer,M.byteOffset,B),U-B),this.head=w,w.data=M.slice(B);break}++F}while((w=w.next)!==null);return this.length-=F,V}[Symbol.for("nodejs.util.inspect.custom")](B,V){return W(this,{...V,depth:0,customInspect:!1})}}}),H8=g0(($,q)=>{var{MathFloor:Q,NumberIsInteger:K}=P0(),{validateInteger:J}=P6(),{ERR_INVALID_ARG_VALUE:Z}=a0().codes,G=16384,W=16;function B(F,M,k){return F.highWaterMark!=null?F.highWaterMark:M?F[k]:null}function V(F){return F?W:G}function U(F,M){if(J(M,"value",0),F)W=M;else G=M}function w(F,M,k,f){let L=B(M,f,k);if(L!=null){if(!K(L)||L<0){let D=f?`options.${k}`:"options.highWaterMark";throw new Z(D,L)}return Q(L)}return V(F.objectMode)}q.exports={getHighWaterMark:w,getDefaultHighWaterMark:V,setDefaultHighWaterMark:U}}),AV=g0(($,q)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh */var Q=(t0(),X0(K2)),K=Q.Buffer;function J(G,W){for(var B in G)W[B]=G[B]}if(K.from&&K.alloc&&K.allocUnsafe&&K.allocUnsafeSlow)q.exports=Q;else J(Q,$),$.Buffer=Z;function Z(G,W,B){return K(G,W,B)}Z.prototype=Object.create(K.prototype),J(K,Z),Z.from=function(G,W,B){if(typeof G==="number")throw TypeError("Argument must not be a number");return K(G,W,B)},Z.alloc=function(G,W,B){if(typeof G!=="number")throw TypeError("Argument must be a number");var V=K(G);if(W!==void 0)if(typeof B==="string")V.fill(W,B);else V.fill(W);else V.fill(0);return V},Z.allocUnsafe=function(G){if(typeof G!=="number")throw TypeError("Argument must be a number");return K(G)},Z.allocUnsafeSlow=function(G){if(typeof G!=="number")throw TypeError("Argument must be a number");return Q.SlowBuffer(G)}}),XV=g0(($)=>{var q=AV().Buffer,Q=q.isEncoding||function(z){switch(z=""+z,z&&z.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function K(z){if(!z)return"utf8";var N;while(!0)switch(z){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return z;default:if(N)return;z=(""+z).toLowerCase(),N=!0}}function J(z){var N=K(z);if(typeof N!=="string"&&(q.isEncoding===Q||!Q(z)))throw Error("Unknown encoding: "+z);return N||z}$.StringDecoder=Z;function Z(z){this.encoding=J(z);var N;switch(this.encoding){case"utf16le":this.text=F,this.end=M,N=4;break;case"utf8":this.fillLast=V,N=4;break;case"base64":this.text=k,this.end=f,N=3;break;default:this.write=L,this.end=D;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=q.allocUnsafe(N)}Z.prototype.write=function(z){if(z.length===0)return"";var N,H;if(this.lastNeed){if(N=this.fillLast(z),N===void 0)return"";H=this.lastNeed,this.lastNeed=0}else H=0;if(H>5===6)return 2;else if(z>>4===14)return 3;else if(z>>3===30)return 4;return z>>6===2?-1:-2}function W(z,N,H){var v=N.length-1;if(v=0){if(j>0)z.lastNeed=j-1;return j}if(--v=0){if(j>0)z.lastNeed=j-2;return j}if(--v=0){if(j>0)if(j===2)j=0;else z.lastNeed=j-3;return j}return 0}function B(z,N,H){if((N[0]&192)!==128)return z.lastNeed=0,"�";if(z.lastNeed>1&&N.length>1){if((N[1]&192)!==128)return z.lastNeed=1,"�";if(z.lastNeed>2&&N.length>2){if((N[2]&192)!==128)return z.lastNeed=2,"�"}}}function V(z){var N=this.lastTotal-this.lastNeed,H=B(this,z,N);if(H!==void 0)return H;if(this.lastNeed<=z.length)return z.copy(this.lastChar,N,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);z.copy(this.lastChar,N,0,z.length),this.lastNeed-=z.length}function U(z,N){var H=W(this,z,N);if(!this.lastNeed)return z.toString("utf8",N);this.lastTotal=H;var v=z.length-(H-this.lastNeed);return z.copy(this.lastChar,0,v),z.toString("utf8",N,v)}function w(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed)return N+"�";return N}function F(z,N){if((z.length-N)%2===0){var H=z.toString("utf16le",N);if(H){var v=H.charCodeAt(H.length-1);if(v>=55296&&v<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1],H.slice(0,-1)}return H}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=z[z.length-1],z.toString("utf16le",N,z.length-1)}function M(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed){var H=this.lastTotal-this.lastNeed;return N+this.lastChar.toString("utf16le",0,H)}return N}function k(z,N){var H=(z.length-N)%3;if(H===0)return z.toString("base64",N);if(this.lastNeed=3-H,this.lastTotal=3,H===1)this.lastChar[0]=z[z.length-1];else this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1];return z.toString("base64",N,z.length-H)}function f(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed)return N+this.lastChar.toString("base64",0,3-this.lastNeed);return N}function L(z){return z.toString(this.encoding)}function D(z){return z&&z.length?this.write(z):""}}),a9=g0(($,q)=>{var Q=D1(),{PromisePrototypeThen:K,SymbolAsyncIterator:J,SymbolIterator:Z}=P0(),{Buffer:G}=(t0(),X0(K2)),{ERR_INVALID_ARG_TYPE:W,ERR_STREAM_NULL_VALUES:B}=a0().codes;function V(U,w,F){let M;if(typeof w==="string"||w instanceof G)return new U({objectMode:!0,...F,read(){this.push(w),this.push(null)}});let k;if(w&&w[J])k=!0,M=w[J]();else if(w&&w[Z])k=!1,M=w[Z]();else throw new W("iterable",["Iterable"],w);let f=new U({objectMode:!0,highWaterMark:1,...F}),L=!1;f._read=function(){if(!L)L=!0,z()},f._destroy=function(N,H){K(D(N),()=>Q.nextTick(H,N),(v)=>Q.nextTick(H,v||N))};async function D(N){let H=N!==void 0&&N!==null,v=typeof M.throw==="function";if(H&&v){let{value:j,done:n}=await M.throw(N);if(await j,n)return}if(typeof M.return==="function"){let{value:j}=await M.return();await j}}async function z(){for(;;){try{let{value:N,done:H}=k?await M.next():M.next();if(H)f.push(null);else{let v=N&&typeof N.then==="function"?await N:N;if(v===null)throw L=!1,new B;else if(f.push(v))continue;else L=!1}}catch(N){f.destroy(N)}break}}return f}q.exports=V}),v8=g0(($,q)=>{var Q=D1(),{ArrayPrototypeIndexOf:K,NumberIsInteger:J,NumberIsNaN:Z,NumberParseInt:G,ObjectDefineProperties:W,ObjectKeys:B,ObjectSetPrototypeOf:V,Promise:U,SafeSet:w,SymbolAsyncDispose:F,SymbolAsyncIterator:M,Symbol:k}=P0();q.exports=Q0,Q0.ReadableState=G0;var{EventEmitter:f}=(i1(),X0(p1)),{Stream:L,prependListener:D}=c5(),{Buffer:z}=(t0(),X0(K2)),{addAbortSignal:N}=L8(),H=s2(),v=e0().debuglog("stream",(I)=>{v=I}),j=gV(),n=o1(),{getHighWaterMark:d,getDefaultHighWaterMark:_}=H8(),{aggregateTwoErrors:X,codes:{ERR_INVALID_ARG_TYPE:P,ERR_METHOD_NOT_IMPLEMENTED:g,ERR_OUT_OF_RANGE:c,ERR_STREAM_PUSH_AFTER_EOF:h,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:x},AbortError:l}=a0(),{validateObject:$0}=P6(),Z0=k("kPaused"),{StringDecoder:F0}=XV(),p=a9();V(Q0.prototype,L.prototype),V(Q0,L);var W0=()=>{},{errorOrDestroy:y}=n,i=1,U0=2,m=4,V0=8,w0=16,S=32,b=64,O=128,E=256,a=512,K0=1024,R=2048,Y=4096,C=8192,u=16384,e=32768,r=65536,s=131072,T=262144;function t(I){return{enumerable:!1,get(){return(this.state&I)!==0},set(A){if(A)this.state|=I;else this.state&=~I}}}W(G0.prototype,{objectMode:t(i),ended:t(U0),endEmitted:t(m),reading:t(V0),constructed:t(w0),sync:t(S),needReadable:t(b),emittedReadable:t(O),readableListening:t(E),resumeScheduled:t(a),errorEmitted:t(K0),emitClose:t(R),autoDestroy:t(Y),destroyed:t(C),closed:t(u),closeEmitted:t(e),multiAwaitDrain:t(r),readingMore:t(s),dataEmitted:t(T)});function G0(I,A,J0){if(typeof J0!=="boolean")J0=A instanceof c2();if(this.state=R|Y|w0|S,I&&I.objectMode)this.state|=i;if(J0&&I&&I.readableObjectMode)this.state|=i;if(this.highWaterMark=I?d(this,I,"readableHighWaterMark",J0):_(!1),this.buffer=new j,this.length=0,this.pipes=[],this.flowing=null,this[Z0]=null,I&&I.emitClose===!1)this.state&=~R;if(I&&I.autoDestroy===!1)this.state&=~Y;if(this.errored=null,this.defaultEncoding=I&&I.defaultEncoding||"utf8",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,I&&I.encoding)this.decoder=new F0(I.encoding),this.encoding=I.encoding}function Q0(I){if(!(this instanceof Q0))return new Q0(I);let A=this instanceof c2();if(this._readableState=new G0(I,this,A),I){if(typeof I.read==="function")this._read=I.read;if(typeof I.destroy==="function")this._destroy=I.destroy;if(typeof I.construct==="function")this._construct=I.construct;if(I.signal&&!A)N(I.signal,this)}L.call(this,I),n.construct(this,()=>{if(this._readableState.needReadable)_1(this,this._readableState)})}Q0.prototype.destroy=n.destroy,Q0.prototype._undestroy=n.undestroy,Q0.prototype._destroy=function(I,A){A(I)},Q0.prototype[f.captureRejectionSymbol]=function(I){this.destroy(I)},Q0.prototype[F]=function(){let I;if(!this.destroyed)I=this.readableEnded?null:new l,this.destroy(I);return new U((A,J0)=>H(this,(B0)=>B0&&B0!==I?J0(B0):A(null)))},Q0.prototype.push=function(I,A){return M0(this,I,A,!1)},Q0.prototype.unshift=function(I,A){return M0(this,I,A,!0)};function M0(I,A,J0,B0){v("readableAddChunk",A);let z0=I._readableState,i0;if((z0.state&i)===0){if(typeof A==="string"){if(J0=J0||z0.defaultEncoding,z0.encoding!==J0)if(B0&&z0.encoding)A=z.from(A,J0).toString(z0.encoding);else A=z.from(A,J0),J0=""}else if(A instanceof z)J0="";else if(L._isUint8Array(A))A=L._uint8ArrayToBuffer(A),J0="";else if(A!=null)i0=new P("chunk",["string","Buffer","Uint8Array"],A)}if(i0)y(I,i0);else if(A===null)z0.state&=~V0,O0(I,z0);else if((z0.state&i)!==0||A&&A.length>0)if(B0)if((z0.state&m)!==0)y(I,new x);else if(z0.destroyed||z0.errored)return!1;else I0(I,z0,A,!0);else if(z0.ended)y(I,new h);else if(z0.destroyed||z0.errored)return!1;else if(z0.state&=~V0,z0.decoder&&!J0)if(A=z0.decoder.write(A),z0.objectMode||A.length!==0)I0(I,z0,A,!1);else _1(I,z0);else I0(I,z0,A,!1);else if(!B0)z0.state&=~V0,_1(I,z0);return!z0.ended&&(z0.length0){if((A.state&r)!==0)A.awaitDrainWriters.clear();else A.awaitDrainWriters=null;A.dataEmitted=!0,I.emit("data",J0)}else{if(A.length+=A.objectMode?1:J0.length,B0)A.buffer.unshift(J0);else A.buffer.push(J0);if((A.state&b)!==0)u0(I)}_1(I,A)}Q0.prototype.isPaused=function(){let I=this._readableState;return I[Z0]===!0||I.flowing===!1},Q0.prototype.setEncoding=function(I){let A=new F0(I);this._readableState.decoder=A,this._readableState.encoding=this._readableState.decoder.encoding;let J0=this._readableState.buffer,B0="";for(let z0 of J0)B0+=A.write(z0);if(J0.clear(),B0!=="")J0.push(B0);return this._readableState.length=B0.length,this};var m0=1073741824;function p0(I){if(I>m0)throw new c("size","<= 1GiB",I);else I--,I|=I>>>1,I|=I>>>2,I|=I>>>4,I|=I>>>8,I|=I>>>16,I++;return I}function q2(I,A){if(I<=0||A.length===0&&A.ended)return 0;if((A.state&i)!==0)return 1;if(Z(I)){if(A.flowing&&A.length)return A.buffer.first().length;return A.length}if(I<=A.length)return I;return A.ended?A.length:0}Q0.prototype.read=function(I){if(v("read",I),I===void 0)I=NaN;else if(!J(I))I=G(I,10);let A=this._readableState,J0=I;if(I>A.highWaterMark)A.highWaterMark=p0(I);if(I!==0)A.state&=~O;if(I===0&&A.needReadable&&((A.highWaterMark!==0?A.length>=A.highWaterMark:A.length>0)||A.ended)){if(v("read: emitReadable",A.length,A.ended),A.length===0&&A.ended)v5(this);else u0(this);return null}if(I=q2(I,A),I===0&&A.ended){if(A.length===0)v5(this);return null}let B0=(A.state&b)!==0;if(v("need readable",B0),A.length===0||A.length-I0)z0=a7(I,A);else z0=null;if(z0===null)A.needReadable=A.length<=A.highWaterMark,I=0;else if(A.length-=I,A.multiAwaitDrain)A.awaitDrainWriters.clear();else A.awaitDrainWriters=null;if(A.length===0){if(!A.ended)A.needReadable=!0;if(J0!==I&&A.ended)v5(this)}if(z0!==null&&!A.errorEmitted&&!A.closeEmitted)A.dataEmitted=!0,this.emit("data",z0);return z0};function O0(I,A){if(v("onEofChunk"),A.ended)return;if(A.decoder){let J0=A.decoder.end();if(J0&&J0.length)A.buffer.push(J0),A.length+=A.objectMode?1:J0.length}if(A.ended=!0,A.sync)u0(I);else A.needReadable=!1,A.emittedReadable=!0,E1(I)}function u0(I){let A=I._readableState;if(v("emitReadable",A.needReadable,A.emittedReadable),A.needReadable=!1,!A.emittedReadable)v("emitReadable",A.flowing),A.emittedReadable=!0,Q.nextTick(E1,I)}function E1(I){let A=I._readableState;if(v("emitReadable_",A.destroyed,A.length,A.ended),!A.destroyed&&!A.errored&&(A.length||A.ended))I.emit("readable"),A.emittedReadable=!1;A.needReadable=!A.flowing&&!A.ended&&A.length<=A.highWaterMark,i7(I)}function _1(I,A){if(!A.readingMore&&A.constructed)A.readingMore=!0,Q.nextTick(R2,I,A)}function R2(I,A){while(!A.reading&&!A.ended&&(A.length1&&B0.pipes.includes(I))v("false write response, pause",B0.awaitDrainWriters.size),B0.awaitDrainWriters.add(I);J0.pause()}if(!z1)z1=wJ(J0,I),I.on("drain",z1)}J0.on("data",t7);function t7(F1){v("ondata");let u2=I.write(F1);if(v("dest.write",u2),u2===!1)s7()}function R5(F1){if(v("onerror",F1),A6(),I.removeListener("error",R5),I.listenerCount("error")===0){let u2=I._writableState||I._readableState;if(u2&&!u2.errorEmitted)y(I,F1);else I.emit("error",F1)}}D(I,"error",R5);function I5(){I.removeListener("finish",C5),A6()}I.once("close",I5);function C5(){v("onfinish"),I.removeListener("close",I5),A6()}I.once("finish",C5);function A6(){v("unpipe"),J0.unpipe(I)}if(I.emit("pipe",J0),I.writableNeedDrain===!0)s7();else if(!B0.flowing)v("pipe resume"),J0.resume();return I};function wJ(I,A){return function(){let J0=I._readableState;if(J0.awaitDrainWriters===A)v("pipeOnDrain",1),J0.awaitDrainWriters=null;else if(J0.multiAwaitDrain)v("pipeOnDrain",J0.awaitDrainWriters.size),J0.awaitDrainWriters.delete(A);if((!J0.awaitDrainWriters||J0.awaitDrainWriters.size===0)&&I.listenerCount("data"))I.resume()}}Q0.prototype.unpipe=function(I){let A=this._readableState,J0={hasUnpiped:!1};if(A.pipes.length===0)return this;if(!I){let z0=A.pipes;A.pipes=[],this.pause();for(let i0=0;i00,B0.flowing!==!1)this.resume()}else if(I==="readable"){if(!B0.endEmitted&&!B0.readableListening){if(B0.readableListening=B0.needReadable=!0,B0.flowing=!1,B0.emittedReadable=!1,v("on readable",B0.length,B0.reading),B0.length)u0(this);else if(!B0.reading)Q.nextTick(NJ,this)}}return J0},Q0.prototype.addListener=Q0.prototype.on,Q0.prototype.removeListener=function(I,A){let J0=L.prototype.removeListener.call(this,I,A);if(I==="readable")Q.nextTick(p7,this);return J0},Q0.prototype.off=Q0.prototype.removeListener,Q0.prototype.removeAllListeners=function(I){let A=L.prototype.removeAllListeners.apply(this,arguments);if(I==="readable"||I===void 0)Q.nextTick(p7,this);return A};function p7(I){let A=I._readableState;if(A.readableListening=I.listenerCount("readable")>0,A.resumeScheduled&&A[Z0]===!1)A.flowing=!0;else if(I.listenerCount("data")>0)I.resume();else if(!A.readableListening)A.flowing=null}function NJ(I){v("readable nexttick read 0"),I.read(0)}Q0.prototype.resume=function(){let I=this._readableState;if(!I.flowing)v("resume"),I.flowing=!I.readableListening,YJ(this,I);return I[Z0]=!1,this};function YJ(I,A){if(!A.resumeScheduled)A.resumeScheduled=!0,Q.nextTick(kJ,I,A)}function kJ(I,A){if(v("resume",A.reading),!A.reading)I.read(0);if(A.resumeScheduled=!1,I.emit("resume"),i7(I),A.flowing&&!A.reading)I.read(0)}Q0.prototype.pause=function(){if(v("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)v("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState[Z0]=!0,this};function i7(I){let A=I._readableState;v("flow",A.flowing);while(A.flowing&&I.read()!==null);}Q0.prototype.wrap=function(I){let A=!1;I.on("data",(B0)=>{if(!this.push(B0)&&I.pause)A=!0,I.pause()}),I.on("end",()=>{this.push(null)}),I.on("error",(B0)=>{y(this,B0)}),I.on("close",()=>{this.destroy()}),I.on("destroy",()=>{this.destroy()}),this._read=()=>{if(A&&I.resume)A=!1,I.resume()};let J0=B(I);for(let B0=1;B0{z0=z2?X(z0,z2):null,J0(),J0=W0});try{while(!0){let z2=I.destroyed?null:I.read();if(z2!==null)yield z2;else if(z0)throw z0;else if(z0===null)return;else await new U(B0)}}catch(z2){throw z0=X(z0,z2),z0}finally{if((z0||(A===null||A===void 0?void 0:A.destroyOnReturn)!==!1)&&(z0===void 0||I._readableState.autoDestroy))n.destroyer(I,null);else I.off("readable",B0),i0()}}W(Q0.prototype,{readable:{__proto__:null,get(){let I=this._readableState;return!!I&&I.readable!==!1&&!I.destroyed&&!I.errorEmitted&&!I.endEmitted},set(I){if(this._readableState)this._readableState.readable=!!I}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(I){if(this._readableState)this._readableState.flowing=I}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(I){if(!this._readableState)return;this._readableState.destroyed=I}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}}),W(G0.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[Z0]!==!1},set(I){this[Z0]=!!I}}}),Q0._fromList=a7;function a7(I,A){if(A.length===0)return null;let J0;if(A.objectMode)J0=A.buffer.shift();else if(!I||I>=A.length){if(A.decoder)J0=A.buffer.join("");else if(A.buffer.length===1)J0=A.buffer.first();else J0=A.buffer.concat(A.length);A.buffer.clear()}else J0=A.buffer.consume(I,A.decoder);return J0}function v5(I){let A=I._readableState;if(v("endReadable",A.endEmitted),!A.endEmitted)A.ended=!0,Q.nextTick(LJ,A,I)}function LJ(I,A){if(v("endReadableNT",I.endEmitted,I.length),!I.errored&&!I.closeEmitted&&!I.endEmitted&&I.length===0){if(I.endEmitted=!0,A.emit("end"),A.writable&&A.allowHalfOpen===!1)Q.nextTick(HJ,A);else if(I.autoDestroy){let J0=A._writableState;if(!J0||J0.autoDestroy&&(J0.finished||J0.writable===!1))A.destroy()}}}function HJ(I){if(I.writable&&!I.writableEnded&&!I.destroyed)I.end()}Q0.from=function(I,A){return p(Q0,I,A)};var f5;function l7(){if(f5===void 0)f5={};return f5}Q0.fromWeb=function(I,A){return l7().newStreamReadableFromReadableStream(I,A)},Q0.toWeb=function(I,A){return l7().newReadableStreamFromStreamReadable(I,A)},Q0.wrap=function(I,A){var J0,B0;return new Q0({objectMode:(J0=(B0=I.readableObjectMode)!==null&&B0!==void 0?B0:I.objectMode)!==null&&J0!==void 0?J0:!0,...A,destroy(z0,i0){n.destroyer(I,z0),i0(z0)}}).wrap(I)}}),b5=g0(($,q)=>{var Q=D1(),{ArrayPrototypeSlice:K,Error:J,FunctionPrototypeSymbolHasInstance:Z,ObjectDefineProperty:G,ObjectDefineProperties:W,ObjectSetPrototypeOf:B,StringPrototypeToLowerCase:V,Symbol:U,SymbolHasInstance:w}=P0();q.exports=$0,$0.WritableState=x;var{EventEmitter:F}=(i1(),X0(p1)),M=c5().Stream,{Buffer:k}=(t0(),X0(K2)),f=o1(),{addAbortSignal:L}=L8(),{getHighWaterMark:D,getDefaultHighWaterMark:z}=H8(),{ERR_INVALID_ARG_TYPE:N,ERR_METHOD_NOT_IMPLEMENTED:H,ERR_MULTIPLE_CALLBACK:v,ERR_STREAM_CANNOT_PIPE:j,ERR_STREAM_DESTROYED:n,ERR_STREAM_ALREADY_FINISHED:d,ERR_STREAM_NULL_VALUES:_,ERR_STREAM_WRITE_AFTER_END:X,ERR_UNKNOWN_ENCODING:P}=a0().codes,{errorOrDestroy:g}=f;B($0.prototype,M.prototype),B($0,M);function c(){}var h=U("kOnFinished");function x(Y,C,u){if(typeof u!=="boolean")u=C instanceof c2();if(this.objectMode=!!(Y&&Y.objectMode),u)this.objectMode=this.objectMode||!!(Y&&Y.writableObjectMode);this.highWaterMark=Y?D(this,Y,"writableHighWaterMark",u):z(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let e=!!(Y&&Y.decodeStrings===!1);this.decodeStrings=!e,this.defaultEncoding=Y&&Y.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=y.bind(void 0,C),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,l(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!Y||Y.emitClose!==!1,this.autoDestroy=!Y||Y.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[h]=[]}function l(Y){Y.buffered=[],Y.bufferedIndex=0,Y.allBuffers=!0,Y.allNoop=!0}x.prototype.getBuffer=function(){return K(this.buffered,this.bufferedIndex)},G(x.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function $0(Y){let C=this instanceof c2();if(!C&&!Z($0,this))return new $0(Y);if(this._writableState=new x(Y,this,C),Y){if(typeof Y.write==="function")this._write=Y.write;if(typeof Y.writev==="function")this._writev=Y.writev;if(typeof Y.destroy==="function")this._destroy=Y.destroy;if(typeof Y.final==="function")this._final=Y.final;if(typeof Y.construct==="function")this._construct=Y.construct;if(Y.signal)L(Y.signal,this)}M.call(this,Y),f.construct(this,()=>{let u=this._writableState;if(!u.writing)V0(this,u);O(this,u)})}G($0,w,{__proto__:null,value:function(Y){if(Z(this,Y))return!0;if(this!==$0)return!1;return Y&&Y._writableState instanceof x}}),$0.prototype.pipe=function(){g(this,new j)};function Z0(Y,C,u,e){let r=Y._writableState;if(typeof u==="function")e=u,u=r.defaultEncoding;else{if(!u)u=r.defaultEncoding;else if(u!=="buffer"&&!k.isEncoding(u))throw new P(u);if(typeof e!=="function")e=c}if(C===null)throw new _;else if(!r.objectMode)if(typeof C==="string"){if(r.decodeStrings!==!1)C=k.from(C,u),u="buffer"}else if(C instanceof k)u="buffer";else if(M._isUint8Array(C))C=M._uint8ArrayToBuffer(C),u="buffer";else throw new N("chunk",["string","Buffer","Uint8Array"],C);let s;if(r.ending)s=new X;else if(r.destroyed)s=new n("write");if(s)return Q.nextTick(e,s),g(Y,s,!0),s;return r.pendingcb++,F0(Y,r,C,u,e)}$0.prototype.write=function(Y,C,u){return Z0(this,Y,C,u)===!0},$0.prototype.cork=function(){this._writableState.corked++},$0.prototype.uncork=function(){let Y=this._writableState;if(Y.corked){if(Y.corked--,!Y.writing)V0(this,Y)}},$0.prototype.setDefaultEncoding=function(Y){if(typeof Y==="string")Y=V(Y);if(!k.isEncoding(Y))throw new P(Y);return this._writableState.defaultEncoding=Y,this};function F0(Y,C,u,e,r){let s=C.objectMode?1:u.length;C.length+=s;let T=C.lengthu.bufferedIndex)V0(Y,u);if(e)if(u.afterWriteTickInfo!==null&&u.afterWriteTickInfo.cb===r)u.afterWriteTickInfo.count++;else u.afterWriteTickInfo={count:1,cb:r,stream:Y,state:u},Q.nextTick(i,u.afterWriteTickInfo);else U0(Y,u,1,r)}}function i({stream:Y,state:C,count:u,cb:e}){return C.afterWriteTickInfo=null,U0(Y,C,u,e)}function U0(Y,C,u,e){if(!C.ending&&!Y.destroyed&&C.length===0&&C.needDrain)C.needDrain=!1,Y.emit("drain");while(u-- >0)C.pendingcb--,e();if(C.destroyed)m(C);O(Y,C)}function m(Y){if(Y.writing)return;for(let r=Y.bufferedIndex;r1&&Y._writev){C.pendingcb-=s-1;let t=C.allNoop?c:(Q0)=>{for(let M0=T;M0256)u.splice(0,T),C.bufferedIndex=0;else C.bufferedIndex=T}C.bufferProcessing=!1}$0.prototype._write=function(Y,C,u){if(this._writev)this._writev([{chunk:Y,encoding:C}],u);else throw new H("_write()")},$0.prototype._writev=null,$0.prototype.end=function(Y,C,u){let e=this._writableState;if(typeof Y==="function")u=Y,Y=null,C=null;else if(typeof C==="function")u=C,C=null;let r;if(Y!==null&&Y!==void 0){let s=Z0(this,Y,C);if(s instanceof J)r=s}if(e.corked)e.corked=1,this.uncork();if(r);else if(!e.errored&&!e.ending)e.ending=!0,O(this,e,!0),e.ended=!0;else if(e.finished)r=new d("end");else if(e.destroyed)r=new n("end");if(typeof u==="function")if(r||e.finished)Q.nextTick(u,r);else e[h].push(u);return this};function w0(Y){return Y.ending&&!Y.destroyed&&Y.constructed&&Y.length===0&&!Y.errored&&Y.buffered.length===0&&!Y.finished&&!Y.writing&&!Y.errorEmitted&&!Y.closeEmitted}function S(Y,C){let u=!1;function e(r){if(u){g(Y,r!==null&&r!==void 0?r:v());return}if(u=!0,C.pendingcb--,r){let s=C[h].splice(0);for(let T=0;T{if(w0(r))E(e,r);else r.pendingcb--},Y,C);else if(w0(C))C.pendingcb++,E(Y,C)}}}function E(Y,C){C.pendingcb--,C.finished=!0;let u=C[h].splice(0);for(let e=0;e{var Q=D1(),K=(t0(),X0(K2)),{isReadable:J,isWritable:Z,isIterable:G,isNodeStream:W,isReadableNodeStream:B,isWritableNodeStream:V,isDuplexNodeStream:U,isReadableStream:w,isWritableStream:F}=b2(),M=s2(),{AbortError:k,codes:{ERR_INVALID_ARG_TYPE:f,ERR_INVALID_RETURN_VALUE:L}}=a0(),{destroyer:D}=o1(),z=c2(),N=v8(),H=b5(),{createDeferredPromise:v}=e0(),j=a9(),n=globalThis.Blob||K.Blob,d=typeof n<"u"?function(h){return h instanceof n}:function(h){return!1},_=globalThis.AbortController||O6().AbortController,{FunctionPrototypeCall:X}=P0();class P extends z{constructor(h){super(h);if((h===null||h===void 0?void 0:h.readable)===!1)this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0;if((h===null||h===void 0?void 0:h.writable)===!1)this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0}}q.exports=function h(x,l){if(U(x))return x;if(B(x))return c({readable:x});if(V(x))return c({writable:x});if(W(x))return c({writable:!1,readable:!1});if(w(x))return c({readable:N.fromWeb(x)});if(F(x))return c({writable:H.fromWeb(x)});if(typeof x==="function"){let{value:Z0,write:F0,final:p,destroy:W0}=g(x);if(G(Z0))return j(P,Z0,{objectMode:!0,write:F0,final:p,destroy:W0});let y=Z0===null||Z0===void 0?void 0:Z0.then;if(typeof y==="function"){let i,U0=X(y,Z0,(m)=>{if(m!=null)throw new L("nully","body",m)},(m)=>{D(i,m)});return i=new P({objectMode:!0,readable:!1,write:F0,final(m){p(async()=>{try{await U0,Q.nextTick(m,null)}catch(V0){Q.nextTick(m,V0)}})},destroy:W0})}throw new L("Iterable, AsyncIterable or AsyncFunction",l,Z0)}if(d(x))return h(x.arrayBuffer());if(G(x))return j(P,x,{objectMode:!0,writable:!1});if(w(x===null||x===void 0?void 0:x.readable)&&F(x===null||x===void 0?void 0:x.writable))return P.fromWeb(x);if(typeof(x===null||x===void 0?void 0:x.writable)==="object"||typeof(x===null||x===void 0?void 0:x.readable)==="object"){let Z0=x!==null&&x!==void 0&&x.readable?B(x===null||x===void 0?void 0:x.readable)?x===null||x===void 0?void 0:x.readable:h(x.readable):void 0,F0=x!==null&&x!==void 0&&x.writable?V(x===null||x===void 0?void 0:x.writable)?x===null||x===void 0?void 0:x.writable:h(x.writable):void 0;return c({readable:Z0,writable:F0})}let $0=x===null||x===void 0?void 0:x.then;if(typeof $0==="function"){let Z0;return X($0,x,(F0)=>{if(F0!=null)Z0.push(F0);Z0.push(null)},(F0)=>{D(Z0,F0)}),Z0=new P({objectMode:!0,writable:!1,read(){}})}throw new f(l,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],x)};function g(h){let{promise:x,resolve:l}=v(),$0=new _,Z0=$0.signal;return{value:h(async function*(){while(!0){let F0=x;x=null;let{chunk:p,done:W0,cb:y}=await F0;if(Q.nextTick(y),W0)return;if(Z0.aborted)throw new k(void 0,{cause:Z0.reason});({promise:x,resolve:l}=v()),yield p}}(),{signal:Z0}),write(F0,p,W0){let y=l;l=null,y({chunk:F0,done:!1,cb:W0})},final(F0){let p=l;l=null,p({done:!0,cb:F0})},destroy(F0,p){$0.abort(),p(F0)}}}function c(h){let x=h.readable&&typeof h.readable.read!=="function"?N.wrap(h.readable):h.readable,l=h.writable,$0=!!J(x),Z0=!!Z(l),F0,p,W0,y,i;function U0(m){let V0=y;if(y=null,V0)V0(m);else if(m)i.destroy(m)}if(i=new P({readableObjectMode:!!(x!==null&&x!==void 0&&x.readableObjectMode),writableObjectMode:!!(l!==null&&l!==void 0&&l.writableObjectMode),readable:$0,writable:Z0}),Z0)M(l,(m)=>{if(Z0=!1,m)D(x,m);U0(m)}),i._write=function(m,V0,w0){if(l.write(m,V0))w0();else F0=w0},i._final=function(m){l.end(),p=m},l.on("drain",function(){if(F0){let m=F0;F0=null,m()}}),l.on("finish",function(){if(p){let m=p;p=null,m()}});if($0)M(x,(m)=>{if($0=!1,m)D(x,m);U0(m)}),x.on("readable",function(){if(W0){let m=W0;W0=null,m()}}),x.on("end",function(){i.push(null)}),i._read=function(){while(!0){let m=x.read();if(m===null){W0=i._read;return}if(!i.push(m))return}};return i._destroy=function(m,V0){if(!m&&y!==null)m=new k;if(W0=null,F0=null,p=null,y===null)V0(m);else y=V0,D(l,m),D(x,m)},i}}),c2=g0(($,q)=>{var{ObjectDefineProperties:Q,ObjectGetOwnPropertyDescriptor:K,ObjectKeys:J,ObjectSetPrototypeOf:Z}=P0();q.exports=B;var G=v8(),W=b5();Z(B.prototype,G.prototype),Z(B,G);{let F=J(W.prototype);for(let M=0;M{var{ObjectSetPrototypeOf:Q,Symbol:K}=P0();q.exports=B;var{ERR_METHOD_NOT_IMPLEMENTED:J}=a0().codes,Z=c2(),{getHighWaterMark:G}=H8();Q(B.prototype,Z.prototype),Q(B,Z);var W=K("kCallback");function B(w){if(!(this instanceof B))return new B(w);let F=w?G(this,w,"readableHighWaterMark",!0):null;if(F===0)w={...w,highWaterMark:null,readableHighWaterMark:F,writableHighWaterMark:w.writableHighWaterMark||0};if(Z.call(this,w),this._readableState.sync=!1,this[W]=null,w){if(typeof w.transform==="function")this._transform=w.transform;if(typeof w.flush==="function")this._flush=w.flush}this.on("prefinish",U)}function V(w){if(typeof this._flush==="function"&&!this.destroyed)this._flush((F,M)=>{if(F){if(w)w(F);else this.destroy(F);return}if(M!=null)this.push(M);if(this.push(null),w)w()});else if(this.push(null),w)w()}function U(){if(this._final!==V)V.call(this)}B.prototype._final=V,B.prototype._transform=function(w,F,M){throw new J("_transform()")},B.prototype._write=function(w,F,M){let k=this._readableState,f=this._writableState,L=k.length;this._transform(w,F,(D,z)=>{if(D){M(D);return}if(z!=null)this.push(z);if(f.ended||L===k.length||k.length{var{ObjectSetPrototypeOf:Q}=P0();q.exports=J;var K=l9();Q(J.prototype,K.prototype),Q(J,K);function J(Z){if(!(this instanceof J))return new J(Z);K.call(this,Z)}J.prototype._transform=function(Z,G,W){W(null,Z)}}),n5=g0(($,q)=>{var Q=D1(),{ArrayIsArray:K,Promise:J,SymbolAsyncIterator:Z,SymbolDispose:G}=P0(),W=s2(),{once:B}=e0(),V=o1(),U=c2(),{aggregateTwoErrors:w,codes:{ERR_INVALID_ARG_TYPE:F,ERR_INVALID_RETURN_VALUE:M,ERR_MISSING_ARGS:k,ERR_STREAM_DESTROYED:f,ERR_STREAM_PREMATURE_CLOSE:L},AbortError:D}=a0(),{validateFunction:z,validateAbortSignal:N}=P6(),{isIterable:H,isReadable:v,isReadableNodeStream:j,isNodeStream:n,isTransformStream:d,isWebStream:_,isReadableStream:X,isReadableFinished:P}=b2(),g=globalThis.AbortController||O6().AbortController,c,h,x;function l(m,V0,w0){let S=!1;m.on("close",()=>{S=!0});let b=W(m,{readable:V0,writable:w0},(O)=>{S=!O});return{destroy:(O)=>{if(S)return;S=!0,V.destroyer(m,O||new f("pipe"))},cleanup:b}}function $0(m){return z(m[m.length-1],"streams[stream.length - 1]"),m.pop()}function Z0(m){if(H(m))return m;else if(j(m))return F0(m);throw new F("val",["Readable","Iterable","AsyncIterable"],m)}async function*F0(m){if(!h)h=v8();yield*h.prototype[Z].call(m)}async function p(m,V0,w0,{end:S}){let b,O=null,E=(R)=>{if(R)b=R;if(O){let Y=O;O=null,Y()}},a=()=>new J((R,Y)=>{if(b)Y(b);else O=()=>{if(b)Y(b);else R()}});V0.on("drain",E);let K0=W(V0,{readable:!1},E);try{if(V0.writableNeedDrain)await a();for await(let R of m)if(!V0.write(R))await a();if(S)V0.end(),await a();w0()}catch(R){w0(b!==R?w(b,R):R)}finally{K0(),V0.off("drain",E)}}async function W0(m,V0,w0,{end:S}){if(d(V0))V0=V0.writable;let b=V0.getWriter();try{for await(let O of m)await b.ready,b.write(O).catch(()=>{});if(await b.ready,S)await b.close();w0()}catch(O){try{await b.abort(O),w0(O)}catch(E){w0(E)}}}function y(...m){return i(m,B($0(m)))}function i(m,V0,w0){if(m.length===1&&K(m[0]))m=m[0];if(m.length<2)throw new k("streams");let S=new g,b=S.signal,O=w0===null||w0===void 0?void 0:w0.signal,E=[];N(O,"options.signal");function a(){r(new D)}x=x||e0().addAbortListener;let K0;if(O)K0=x(O,a);let R,Y,C=[],u=0;function e(Q0){r(Q0,--u===0)}function r(Q0,M0){var I0;if(Q0&&(!R||R.code==="ERR_STREAM_PREMATURE_CLOSE"))R=Q0;if(!R&&!M0)return;while(C.length)C.shift()(R);if((I0=K0)===null||I0===void 0||I0[G](),S.abort(),M0){if(!R)E.forEach((m0)=>m0());Q.nextTick(V0,R,Y)}}let s;for(let Q0=0;Q00,p0=I0||(w0===null||w0===void 0?void 0:w0.end)!==!1,q2=Q0===m.length-1;if(n(M0)){let O0=function(u0){if(u0&&u0.name!=="AbortError"&&u0.code!=="ERR_STREAM_PREMATURE_CLOSE")e(u0)};var T=O0;if(p0){let{destroy:u0,cleanup:E1}=l(M0,I0,m0);if(C.push(u0),v(M0)&&q2)E.push(E1)}if(M0.on("error",O0),v(M0)&&q2)E.push(()=>{M0.removeListener("error",O0)})}if(Q0===0)if(typeof M0==="function"){if(s=M0({signal:b}),!H(s))throw new M("Iterable, AsyncIterable or Stream","source",s)}else if(H(M0)||j(M0)||d(M0))s=M0;else s=U.from(M0);else if(typeof M0==="function"){if(d(s)){var t;s=Z0((t=s)===null||t===void 0?void 0:t.readable)}else s=Z0(s);if(s=M0(s,{signal:b}),I0){if(!H(s,!0))throw new M("AsyncIterable",`transform[${Q0-1}]`,s)}else{var G0;if(!c)c=r9();let O0=new c({objectMode:!0}),u0=(G0=s)===null||G0===void 0?void 0:G0.then;if(typeof u0==="function")u++,u0.call(s,(R2)=>{if(Y=R2,R2!=null)O0.write(R2);if(p0)O0.end();Q.nextTick(e)},(R2)=>{O0.destroy(R2),Q.nextTick(e,R2)});else if(H(s,!0))u++,p(s,O0,e,{end:p0});else if(X(s)||d(s)){let R2=s.readable||s;u++,p(R2,O0,e,{end:p0})}else throw new M("AsyncIterable or Promise","destination",s);s=O0;let{destroy:E1,cleanup:_1}=l(s,!1,!0);if(C.push(E1),q2)E.push(_1)}}else if(n(M0)){if(j(s)){u+=2;let O0=U0(s,M0,e,{end:p0});if(v(M0)&&q2)E.push(O0)}else if(d(s)||X(s)){let O0=s.readable||s;u++,p(O0,M0,e,{end:p0})}else if(H(s))u++,p(s,M0,e,{end:p0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],s);s=M0}else if(_(M0)){if(j(s))u++,W0(Z0(s),M0,e,{end:p0});else if(X(s)||H(s))u++,W0(s,M0,e,{end:p0});else if(d(s))u++,W0(s.readable,M0,e,{end:p0});else throw new F("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],s);s=M0}else s=U.from(M0)}if(b!==null&&b!==void 0&&b.aborted||O!==null&&O!==void 0&&O.aborted)Q.nextTick(a);return s}function U0(m,V0,w0,{end:S}){let b=!1;if(V0.on("close",()=>{if(!b)w0(new L)}),m.pipe(V0,{end:!1}),S){let E=function(){b=!0,V0.end()};var O=E;if(P(m))Q.nextTick(E);else m.once("end",E)}else w0();return W(m,{readable:!0,writable:!1},(E)=>{let a=m._readableState;if(E&&E.code==="ERR_STREAM_PREMATURE_CLOSE"&&a&&a.ended&&!a.errored&&!a.errorEmitted)m.once("end",w0).once("error",w0);else w0(E)}),W(V0,{readable:!1,writable:!0},w0)}q.exports={pipelineImpl:i,pipeline:y}}),s9=g0(($,q)=>{var{pipeline:Q}=n5(),K=c2(),{destroyer:J}=o1(),{isNodeStream:Z,isReadable:G,isWritable:W,isWebStream:B,isTransformStream:V,isWritableStream:U,isReadableStream:w}=b2(),{AbortError:F,codes:{ERR_INVALID_ARG_VALUE:M,ERR_MISSING_ARGS:k}}=a0(),f=s2();q.exports=function(...L){if(L.length===0)throw new k("streams");if(L.length===1)return K.from(L[0]);let D=[...L];if(typeof L[0]==="function")L[0]=K.from(L[0]);if(typeof L[L.length-1]==="function"){let g=L.length-1;L[g]=K.from(L[g])}for(let g=0;g0&&!(W(L[g])||U(L[g])||V(L[g])))throw new M(`streams[${g}]`,D[g],"must be writable")}let z,N,H,v,j;function n(g){let c=v;if(v=null,c)c(g);else if(g)j.destroy(g);else if(!P&&!X)j.destroy()}let d=L[0],_=Q(L,n),X=!!(W(d)||U(d)||V(d)),P=!!(G(_)||w(_)||V(_));if(j=new K({writableObjectMode:!!(d!==null&&d!==void 0&&d.writableObjectMode),readableObjectMode:!!(_!==null&&_!==void 0&&_.readableObjectMode),writable:X,readable:P}),X){if(Z(d))j._write=function(c,h,x){if(d.write(c,h))x();else z=x},j._final=function(c){d.end(),N=c},d.on("drain",function(){if(z){let c=z;z=null,c()}});else if(B(d)){let c=(V(d)?d.writable:d).getWriter();j._write=async function(h,x,l){try{await c.ready,c.write(h).catch(()=>{}),l()}catch($0){l($0)}},j._final=async function(h){try{await c.ready,c.close().catch(()=>{}),N=h}catch(x){h(x)}}}let g=V(_)?_.readable:_;f(g,()=>{if(N){let c=N;N=null,c()}})}if(P){if(Z(_))_.on("readable",function(){if(H){let g=H;H=null,g()}}),_.on("end",function(){j.push(null)}),j._read=function(){while(!0){let g=_.read();if(g===null){H=j._read;return}if(!j.push(g))return}};else if(B(_)){let g=(V(_)?_.readable:_).getReader();j._read=async function(){while(!0)try{let{value:c,done:h}=await g.read();if(!j.push(c))return;if(h){j.push(null);return}}catch{return}}}}return j._destroy=function(g,c){if(!g&&v!==null)g=new F;if(H=null,z=null,N=null,v===null)c(g);else if(v=c,Z(_))J(_,g)},j}}),hV=g0(($,q)=>{var Q=globalThis.AbortController||O6().AbortController,{codes:{ERR_INVALID_ARG_VALUE:K,ERR_INVALID_ARG_TYPE:J,ERR_MISSING_ARGS:Z,ERR_OUT_OF_RANGE:G},AbortError:W}=a0(),{validateAbortSignal:B,validateInteger:V,validateObject:U}=P6(),w=P0().Symbol("kWeak"),F=P0().Symbol("kResistStopPropagation"),{finished:M}=s2(),k=s9(),{addAbortSignalNoValidate:f}=L8(),{isWritable:L,isNodeStream:D}=b2(),{deprecate:z}=e0(),{ArrayPrototypePush:N,Boolean:H,MathFloor:v,Number:j,NumberIsNaN:n,Promise:d,PromiseReject:_,PromiseResolve:X,PromisePrototypeThen:P,Symbol:g}=P0(),c=g("kEmpty"),h=g("kEof");function x(O,E){if(E!=null)U(E,"options");if((E===null||E===void 0?void 0:E.signal)!=null)B(E.signal,"options.signal");if(D(O)&&!L(O))throw new K("stream",O,"must be writable");let a=k(this,O);if(E!==null&&E!==void 0&&E.signal)f(E.signal,a);return a}function l(O,E){if(typeof O!=="function")throw new J("fn",["Function","AsyncFunction"],O);if(E!=null)U(E,"options");if((E===null||E===void 0?void 0:E.signal)!=null)B(E.signal,"options.signal");let a=1;if((E===null||E===void 0?void 0:E.concurrency)!=null)a=v(E.concurrency);let K0=a-1;if((E===null||E===void 0?void 0:E.highWaterMark)!=null)K0=v(E.highWaterMark);return V(a,"options.concurrency",1),V(K0,"options.highWaterMark",0),K0+=a,async function*(){let R=e0().AbortSignalAny([E===null||E===void 0?void 0:E.signal].filter(H)),Y=this,C=[],u={signal:R},e,r,s=!1,T=0;function t(){s=!0,G0()}function G0(){T-=1,Q0()}function Q0(){if(r&&!s&&T=K0||T>=a))await new d((m0)=>{r=m0})}C.push(h)}catch(I0){let m0=_(I0);P(m0,G0,t),C.push(m0)}finally{if(s=!0,e)e(),e=null}}M0();try{while(!0){while(C.length>0){let I0=await C[0];if(I0===h)return;if(R.aborted)throw new W;if(I0!==c)yield I0;C.shift(),Q0()}await new d((I0)=>{e=I0})}}finally{if(s=!0,r)r(),r=null}}.call(this)}function $0(O=void 0){if(O!=null)U(O,"options");if((O===null||O===void 0?void 0:O.signal)!=null)B(O.signal,"options.signal");return async function*(){let E=0;for await(let K0 of this){var a;if(O!==null&&O!==void 0&&(a=O.signal)!==null&&a!==void 0&&a.aborted)throw new W({cause:O.signal.reason});yield[E++,K0]}}.call(this)}async function Z0(O,E=void 0){for await(let a of y.call(this,O,E))return!0;return!1}async function F0(O,E=void 0){if(typeof O!=="function")throw new J("fn",["Function","AsyncFunction"],O);return!await Z0.call(this,async(...a)=>{return!await O(...a)},E)}async function p(O,E){for await(let a of y.call(this,O,E))return a;return}async function W0(O,E){if(typeof O!=="function")throw new J("fn",["Function","AsyncFunction"],O);async function a(K0,R){return await O(K0,R),c}for await(let K0 of l.call(this,a,E));}function y(O,E){if(typeof O!=="function")throw new J("fn",["Function","AsyncFunction"],O);async function a(K0,R){if(await O(K0,R))return K0;return c}return l.call(this,a,E)}class i extends Z{constructor(){super("reduce");this.message="Reduce of an empty stream requires an initial value"}}async function U0(O,E,a){var K0;if(typeof O!=="function")throw new J("reducer",["Function","AsyncFunction"],O);if(a!=null)U(a,"options");if((a===null||a===void 0?void 0:a.signal)!=null)B(a.signal,"options.signal");let R=arguments.length>1;if(a!==null&&a!==void 0&&(K0=a.signal)!==null&&K0!==void 0&&K0.aborted){let r=new W(void 0,{cause:a.signal.reason});throw this.once("error",()=>{}),await M(this.destroy(r)),r}let Y=new Q,C=Y.signal;if(a!==null&&a!==void 0&&a.signal){let r={once:!0,[w]:this,[F]:!0};a.signal.addEventListener("abort",()=>Y.abort(),r)}let u=!1;try{for await(let r of this){var e;if(u=!0,a!==null&&a!==void 0&&(e=a.signal)!==null&&e!==void 0&&e.aborted)throw new W;if(!R)E=r,R=!0;else E=await O(E,r,{signal:C})}if(!u&&!R)throw new i}finally{Y.abort()}return E}async function m(O){if(O!=null)U(O,"options");if((O===null||O===void 0?void 0:O.signal)!=null)B(O.signal,"options.signal");let E=[];for await(let K0 of this){var a;if(O!==null&&O!==void 0&&(a=O.signal)!==null&&a!==void 0&&a.aborted)throw new W(void 0,{cause:O.signal.reason});N(E,K0)}return E}function V0(O,E){let a=l.call(this,O,E);return async function*(){for await(let K0 of a)yield*K0}.call(this)}function w0(O){if(O=j(O),n(O))return 0;if(O<0)throw new G("number",">= 0",O);return O}function S(O,E=void 0){if(E!=null)U(E,"options");if((E===null||E===void 0?void 0:E.signal)!=null)B(E.signal,"options.signal");return O=w0(O),async function*(){var a;if(E!==null&&E!==void 0&&(a=E.signal)!==null&&a!==void 0&&a.aborted)throw new W;for await(let R of this){var K0;if(E!==null&&E!==void 0&&(K0=E.signal)!==null&&K0!==void 0&&K0.aborted)throw new W;if(O--<=0)yield R}}.call(this)}function b(O,E=void 0){if(E!=null)U(E,"options");if((E===null||E===void 0?void 0:E.signal)!=null)B(E.signal,"options.signal");return O=w0(O),async function*(){var a;if(E!==null&&E!==void 0&&(a=E.signal)!==null&&a!==void 0&&a.aborted)throw new W;for await(let R of this){var K0;if(E!==null&&E!==void 0&&(K0=E.signal)!==null&&K0!==void 0&&K0.aborted)throw new W;if(O-- >0)yield R;if(O<=0)return}}.call(this)}q.exports.streamReturningOperators={asIndexedPairs:z($0,"readable.asIndexedPairs will be removed in a future version."),drop:S,filter:y,flatMap:V0,map:l,take:b,compose:x},q.exports.promiseReturningOperators={every:F0,forEach:W0,reduce:U0,toArray:m,some:Z0,find:p}}),t9=g0(($,q)=>{var{ArrayPrototypePop:Q,Promise:K}=P0(),{isIterable:J,isNodeStream:Z,isWebStream:G}=b2(),{pipelineImpl:W}=n5(),{finished:B}=s2();e9();function V(...U){return new K((w,F)=>{let M,k,f=U[U.length-1];if(f&&typeof f==="object"&&!Z(f)&&!J(f)&&!G(f)){let L=Q(U);M=L.signal,k=L.end}W(U,(L,D)=>{if(L)F(L);else w(D)},{signal:M,end:k})})}q.exports={finished:B,pipeline:V}}),e9=g0(($,q)=>{var{Buffer:Q}=(t0(),X0(K2)),{ObjectDefineProperty:K,ObjectKeys:J,ReflectApply:Z}=P0(),{promisify:{custom:G}}=e0(),{streamReturningOperators:W,promiseReturningOperators:B}=hV(),{codes:{ERR_ILLEGAL_CONSTRUCTOR:V}}=a0(),U=s9(),{setDefaultHighWaterMark:w,getDefaultHighWaterMark:F}=H8(),{pipeline:M}=n5(),{destroyer:k}=o1(),f=s2(),L=t9(),D=b2(),z=q.exports=c5().Stream;z.isDestroyed=D.isDestroyed,z.isDisturbed=D.isDisturbed,z.isErrored=D.isErrored,z.isReadable=D.isReadable,z.isWritable=D.isWritable,z.Readable=v8();for(let H of J(W)){let v=function(...n){if(new.target)throw V();return z.Readable.from(Z(j,this,n))},j=W[H];K(v,"name",{__proto__:null,value:j.name}),K(v,"length",{__proto__:null,value:j.length}),K(z.Readable.prototype,H,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}for(let H of J(B)){let v=function(...n){if(new.target)throw V();return Z(j,this,n)},j=B[H];K(v,"name",{__proto__:null,value:j.name}),K(v,"length",{__proto__:null,value:j.length}),K(z.Readable.prototype,H,{__proto__:null,value:v,enumerable:!1,configurable:!0,writable:!0})}z.Writable=b5(),z.Duplex=c2(),z.Transform=l9(),z.PassThrough=r9(),z.pipeline=M;var{addAbortSignal:N}=L8();z.addAbortSignal=N,z.finished=f,z.destroy=k,z.compose=U,z.setDefaultHighWaterMark=w,z.getDefaultHighWaterMark=F,K(z,"promises",{__proto__:null,configurable:!0,enumerable:!0,get(){return L}}),K(M,G,{__proto__:null,enumerable:!0,get(){return L.pipeline}}),K(f,G,{__proto__:null,enumerable:!0,get(){return L.finished}}),z.Stream=z,z._isUint8Array=function(H){return H instanceof Uint8Array},z._uint8ArrayToBuffer=function(H){return Q.from(H.buffer,H.byteOffset,H.byteLength)}}),xV=g0(($,q)=>{var Q=a1();{let K=e9(),J=t9(),Z=K.Readable.destroy;q.exports=K.Readable,q.exports._uint8ArrayToBuffer=K._uint8ArrayToBuffer,q.exports._isUint8Array=K._isUint8Array,q.exports.isDisturbed=K.isDisturbed,q.exports.isErrored=K.isErrored,q.exports.isReadable=K.isReadable,q.exports.Readable=K.Readable,q.exports.Writable=K.Writable,q.exports.Duplex=K.Duplex,q.exports.Transform=K.Transform,q.exports.PassThrough=K.PassThrough,q.exports.addAbortSignal=K.addAbortSignal,q.exports.finished=K.finished,q.exports.destroy=K.destroy,q.exports.destroy=Z,q.exports.pipeline=K.pipeline,q.exports.compose=K.compose,Object.defineProperty(K,"promises",{configurable:!0,enumerable:!0,get(){return J}}),q.exports.Stream=K.Stream}q.exports.default=q.exports});$$.exports=xV()});var d5=N0((Fz,Q$)=>{Q$.exports=a1()});var n2=N0((J2)=>{J2.base64=!0;J2.array=!0;J2.string=!0;J2.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u";J2.nodebuffer=typeof Buffer<"u";J2.uint8array=typeof Uint8Array<"u";if(typeof ArrayBuffer>"u")J2.blob=!1;else{f8=new ArrayBuffer(0);try{J2.blob=new Blob([f8],{type:"application/zip"}).size===0}catch($){try{m5=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,R8=new m5,R8.append(f8),J2.blob=R8.getBlob("application/zip").size===0}catch(q){J2.blob=!1}}}var f8,m5,R8;try{J2.nodestream=!!d5().Readable}catch($){J2.nodestream=!1}});var i5=N0((p5)=>{var OV=T0(),PV=n2(),A2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";p5.encode=function($){var q=[],Q,K,J,Z,G,W,B,V=0,U=$.length,w=U,F=OV.getTypeOf($)!=="string";while(V<$.length){if(w=U-V,!F)Q=$.charCodeAt(V++),K=V>2,G=(Q&3)<<4|K>>4,W=w>1?(K&15)<<2|J>>6:64,B=w>2?J&63:64,q.push(A2.charAt(Z)+A2.charAt(G)+A2.charAt(W)+A2.charAt(B))}return q.join("")};p5.decode=function($){var q,Q,K,J,Z,G,W,B=0,V=0,U="data:";if($.substr(0,U.length)===U)throw Error("Invalid base64 input, it looks like a data url.");$=$.replace(/[^A-Za-z0-9+/=]/g,"");var w=$.length*3/4;if($.charAt($.length-1)===A2.charAt(64))w--;if($.charAt($.length-2)===A2.charAt(64))w--;if(w%1!==0)throw Error("Invalid base64 input, bad content length.");var F;if(PV.uint8array)F=new Uint8Array(w|0);else F=Array(w|0);while(B<$.length){if(J=A2.indexOf($.charAt(B++)),Z=A2.indexOf($.charAt(B++)),G=A2.indexOf($.charAt(B++)),W=A2.indexOf($.charAt(B++)),q=J<<2|Z>>4,Q=(Z&15)<<4|G>>2,K=(G&3)<<6|W,F[V++]=q,G!==64)F[V++]=Q;if(W!==64)F[V++]=K}return F}});var T6=N0((Nz,q$)=>{q$.exports={isNode:typeof Buffer<"u",newBufferFrom:function($,q){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from($,q);else{if(typeof $==="number")throw Error('The "data" argument must not be a number');return new Buffer($,q)}},allocBuffer:function($){if(Buffer.alloc)return Buffer.alloc($);else{var q=new Buffer($);return q.fill(0),q}},isBuffer:function($){return Buffer.isBuffer($)},isStream:function($){return $&&typeof $.on==="function"&&typeof $.pause==="function"&&typeof $.resume==="function"}}});var V$=N0((Yz,J$)=>{var K$=global.MutationObserver||global.WebKitMutationObserver,u6;if(K$)C8=0,o5=new K$(I8),j8=global.document.createTextNode(""),o5.observe(j8,{characterData:!0}),u6=function(){j8.data=C8=++C8%2};else if(!global.setImmediate&&typeof global.MessageChannel<"u")g8=new global.MessageChannel,g8.port1.onmessage=I8,u6=function(){g8.port2.postMessage(0)};else if("document"in global&&"onreadystatechange"in global.document.createElement("script"))u6=function(){var $=global.document.createElement("script");$.onreadystatechange=function(){I8(),$.onreadystatechange=null,$.parentNode.removeChild($),$=null},global.document.documentElement.appendChild($)};else u6=function(){setTimeout(I8,0)};var C8,o5,j8,g8,a5,S6=[];function I8(){a5=!0;var $,q,Q=S6.length;while(Q){q=S6,S6=[],$=-1;while(++${var uV=V$();function l1(){}var o0={},U$=["REJECTED"],l5=["FULFILLED"],Z$=["PENDING"];B$.exports=t2;function t2($){if(typeof $!=="function")throw TypeError("resolver must be a function");if(this.state=Z$,this.queue=[],this.outcome=void 0,$!==l1)G$(this,$)}t2.prototype.finally=function($){if(typeof $!=="function")return this;var q=this.constructor;return this.then(Q,K);function Q(J){function Z(){return J}return q.resolve($()).then(Z)}function K(J){function Z(){throw J}return q.resolve($()).then(Z)}};t2.prototype.catch=function($){return this.then(null,$)};t2.prototype.then=function($,q){if(typeof $!=="function"&&this.state===l5||typeof q!=="function"&&this.state===U$)return this;var Q=new this.constructor(l1);if(this.state!==Z$){var K=this.state===l5?$:q;r5(Q,K,this.outcome)}else this.queue.push(new E6(Q,$,q));return Q};function E6($,q,Q){if(this.promise=$,typeof q==="function")this.onFulfilled=q,this.callFulfilled=this.otherCallFulfilled;if(typeof Q==="function")this.onRejected=Q,this.callRejected=this.otherCallRejected}E6.prototype.callFulfilled=function($){o0.resolve(this.promise,$)};E6.prototype.otherCallFulfilled=function($){r5(this.promise,this.onFulfilled,$)};E6.prototype.callRejected=function($){o0.reject(this.promise,$)};E6.prototype.otherCallRejected=function($){r5(this.promise,this.onRejected,$)};function r5($,q,Q){uV(function(){var K;try{K=q(Q)}catch(J){return o0.reject($,J)}if(K===$)o0.reject($,TypeError("Cannot resolve promise with itself"));else o0.resolve($,K)})}o0.resolve=function($,q){var Q=W$(SV,q);if(Q.status==="error")return o0.reject($,Q.value);var K=Q.value;if(K)G$($,K);else{$.state=l5,$.outcome=q;var J=-1,Z=$.queue.length;while(++J{var s5=null;if(typeof Promise<"u")s5=Promise;else s5=z$();F$.exports={Promise:s5}});var w$=N0((M$)=>{(function($,q){if($.setImmediate)return;var Q=1,K={},J=!1,Z=$.document,G;function W(z){if(typeof z!=="function")z=Function(""+z);var N=Array(arguments.length-1);for(var H=0;H"u"?typeof global>"u"?M$:global:self)});var T0=N0((_0)=>{var e2=n2(),nV=i5(),s1=T6(),t5=r1();w$();function dV($){var q=null;if(e2.uint8array)q=new Uint8Array($.length);else q=Array($.length);return X8($,q)}_0.newBlob=function($,q){_0.checkSupport("blob");try{return new Blob([$],{type:q})}catch(J){try{var Q=self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder,K=new Q;return K.append($),K.getBlob(q)}catch(Z){throw Error("Bug : can't construct the Blob.")}}};function _6($){return $}function X8($,q){for(var Q=0;Q<$.length;++Q)q[Q]=$.charCodeAt(Q)&255;return q}var A8={stringifyByChunk:function($,q,Q){var K=[],J=0,Z=$.length;if(Z<=Q)return String.fromCharCode.apply(null,$);while(J1)try{return A8.stringifyByChunk($,Q,q)}catch(J){q=Math.floor(q/2)}return A8.stringifyByChar($)}_0.applyFromCharCode=c6;function y8($,q){for(var Q=0;Q<$.length;Q++)q[Q]=$[Q];return q}var $1={};$1.string={string:_6,array:function($){return X8($,Array($.length))},arraybuffer:function($){return $1.string.uint8array($).buffer},uint8array:function($){return X8($,new Uint8Array($.length))},nodebuffer:function($){return X8($,s1.allocBuffer($.length))}};$1.array={string:c6,array:_6,arraybuffer:function($){return new Uint8Array($).buffer},uint8array:function($){return new Uint8Array($)},nodebuffer:function($){return s1.newBufferFrom($)}};$1.arraybuffer={string:function($){return c6(new Uint8Array($))},array:function($){return y8(new Uint8Array($),Array($.byteLength))},arraybuffer:_6,uint8array:function($){return new Uint8Array($)},nodebuffer:function($){return s1.newBufferFrom(new Uint8Array($))}};$1.uint8array={string:c6,array:function($){return y8($,Array($.length))},arraybuffer:function($){return $.buffer},uint8array:_6,nodebuffer:function($){return s1.newBufferFrom($)}};$1.nodebuffer={string:c6,array:function($){return y8($,Array($.length))},arraybuffer:function($){return $1.nodebuffer.uint8array($).buffer},uint8array:function($){return y8($,new Uint8Array($.length))},nodebuffer:_6};_0.transformTo=function($,q){if(!q)q="";if(!$)return q;_0.checkSupport($);var Q=_0.getTypeOf(q),K=$1[Q][$](q);return K};_0.resolve=function($){var q=$.split("/"),Q=[];for(var K=0;K"u")$[Q]=arguments[q][Q];return $};_0.prepareContent=function($,q,Q,K,J){var Z=t5.Promise.resolve(q).then(function(G){var W=e2.blob&&(G instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(G))!==-1);if(W&&typeof FileReader<"u")return new t5.Promise(function(B,V){var U=new FileReader;U.onload=function(w){B(w.target.result)},U.onerror=function(w){V(w.target.error)},U.readAsArrayBuffer(G)});else return G});return Z.then(function(G){var W=_0.getTypeOf(G);if(!W)return t5.Promise.reject(Error("Can't read the data of '"+$+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"));if(W==="arraybuffer")G=_0.transformTo("uint8array",G);else if(W==="string"){if(J)G=nV.decode(G);else if(Q){if(K!==!0)G=dV(G)}}return G})}});var V2=N0((vz,Y$)=>{function N$($){this.name=$||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}N$.prototype={push:function($){this.emit("data",$)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch($){this.emit("error",$)}return!0},error:function($){if(this.isFinished)return!1;if(this.isPaused)this.generatedError=$;else{if(this.isFinished=!0,this.emit("error",$),this.previous)this.previous.error($);this.cleanUp()}return!0},on:function($,q){return this._listeners[$].push(q),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function($,q){if(this._listeners[$])for(var Q=0;Q "+$;else return $}};Y$.exports=N$});var e1=N0((Q1)=>{var t1=T0(),L1=n2(),mV=T6(),h8=V2(),b6=Array(256);for(X2=0;X2<256;X2++)b6[X2]=X2>=252?6:X2>=248?5:X2>=240?4:X2>=224?3:X2>=192?2:1;var X2;b6[254]=b6[254]=1;var pV=function($){var q,Q,K,J,Z,G=$.length,W=0;for(J=0;J>>6,q[Z++]=128|Q&63;else if(Q<65536)q[Z++]=224|Q>>>12,q[Z++]=128|Q>>>6&63,q[Z++]=128|Q&63;else q[Z++]=240|Q>>>18,q[Z++]=128|Q>>>12&63,q[Z++]=128|Q>>>6&63,q[Z++]=128|Q&63}return q},iV=function($,q){var Q;if(q=q||$.length,q>$.length)q=$.length;Q=q-1;while(Q>=0&&($[Q]&192)===128)Q--;if(Q<0)return q;if(Q===0)return q;return Q+b6[$[Q]]>q?Q:q},oV=function($){var q,Q,K,J,Z=$.length,G=Array(Z*2);for(Q=0,q=0;q4){G[Q++]=65533,q+=J-1;continue}K&=J===2?31:J===3?15:7;while(J>1&&q1){G[Q++]=65533;continue}if(K<65536)G[Q++]=K;else K-=65536,G[Q++]=55296|K>>10&1023,G[Q++]=56320|K&1023}if(G.length!==Q)if(G.subarray)G=G.subarray(0,Q);else G.length=Q;return t1.applyFromCharCode(G)};Q1.utf8encode=function(q){if(L1.nodebuffer)return mV.newBufferFrom(q,"utf-8");return pV(q)};Q1.utf8decode=function(q){if(L1.nodebuffer)return t1.transformTo("nodebuffer",q).toString("utf-8");return q=t1.transformTo(L1.uint8array?"uint8array":"array",q),oV(q)};function x8(){h8.call(this,"utf-8 decode"),this.leftOver=null}t1.inherits(x8,h8);x8.prototype.processChunk=function($){var q=t1.transformTo(L1.uint8array?"uint8array":"array",$.data);if(this.leftOver&&this.leftOver.length){if(L1.uint8array){var Q=q;q=new Uint8Array(Q.length+this.leftOver.length),q.set(this.leftOver,0),q.set(Q,this.leftOver.length)}else q=this.leftOver.concat(q);this.leftOver=null}var K=iV(q),J=q;if(K!==q.length)if(L1.uint8array)J=q.subarray(0,K),this.leftOver=q.subarray(K,q.length);else J=q.slice(0,K),this.leftOver=q.slice(K,q.length);this.push({data:Q1.utf8decode(J),meta:$.meta})};x8.prototype.flush=function(){if(this.leftOver&&this.leftOver.length)this.push({data:Q1.utf8decode(this.leftOver),meta:{}}),this.leftOver=null};Q1.Utf8DecodeWorker=x8;function e5(){h8.call(this,"utf-8 encode")}t1.inherits(e5,h8);e5.prototype.processChunk=function($){this.push({data:Q1.utf8encode($.data),meta:$.meta})};Q1.Utf8EncodeWorker=e5});var H$=N0((Rz,L$)=>{var k$=V2(),D$=T0();function $4($){k$.call(this,"ConvertWorker to "+$),this.destType=$}D$.inherits($4,k$);$4.prototype.processChunk=function($){this.push({data:D$.transformTo(this.destType,$.data),meta:$.meta})};L$.exports=$4});var R$=N0((Iz,f$)=>{var v$=d5().Readable,aV=T0();aV.inherits(Q4,v$);function Q4($,q,Q){v$.call(this,q),this._helper=$;var K=this;$.on("data",function(J,Z){if(!K.push(J))K._helper.pause();if(Q)Q(Z)}).on("error",function(J){K.emit("error",J)}).on("end",function(){K.push(null)})}Q4.prototype._read=function(){this._helper.resume()};f$.exports=Q4});var q4=N0((Cz,j$)=>{var H1=T0(),lV=H$(),rV=V2(),sV=i5(),tV=n2(),eV=r1(),I$=null;if(tV.nodestream)try{I$=R$()}catch($){}function $U($,q,Q){switch($){case"blob":return H1.newBlob(H1.transformTo("arraybuffer",q),Q);case"base64":return sV.encode(q);default:return H1.transformTo($,q)}}function QU($,q){var Q,K=0,J=null,Z=0;for(Q=0;Q{D2.base64=!1;D2.binary=!1;D2.dir=!1;D2.createFolders=!0;D2.date=null;D2.compression=null;D2.compressionOptions=null;D2.comment=null;D2.unixPermissions=null;D2.dosPermissions=null});var J4=N0((gz,g$)=>{var O8=T0(),P8=V2(),KU=16384;function $6($){P8.call(this,"DataWorker");var q=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,$.then(function(Q){if(q.dataIsReady=!0,q.data=Q,q.max=Q&&Q.length||0,q.type=O8.getTypeOf(Q),!q.isPaused)q._tickAndRepeat()},function(Q){q.error(Q)})}O8.inherits($6,P8);$6.prototype.cleanUp=function(){P8.prototype.cleanUp.call(this),this.data=null};$6.prototype.resume=function(){if(!P8.prototype.resume.call(this))return!1;if(!this._tickScheduled&&this.dataIsReady)this._tickScheduled=!0,O8.delay(this._tickAndRepeat,[],this);return!0};$6.prototype._tickAndRepeat=function(){if(this._tickScheduled=!1,this.isPaused||this.isFinished)return;if(this._tick(),!this.isFinished)O8.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0};$6.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var $=KU,q=null,Q=Math.min(this.max,this.index+$);if(this.index>=this.max)return this.end();else{switch(this.type){case"string":q=this.data.substring(this.index,Q);break;case"uint8array":q=this.data.subarray(this.index,Q);break;case"array":case"nodebuffer":q=this.data.slice(this.index,Q);break}return this.index=Q,this.push({data:q,meta:{percent:this.max?this.index/this.max*100:0}})}};g$.exports=$6});var T8=N0((Az,X$)=>{var JU=T0();function VU(){var $,q=[];for(var Q=0;Q<256;Q++){$=Q;for(var K=0;K<8;K++)$=$&1?3988292384^$>>>1:$>>>1;q[Q]=$}return q}var A$=VU();function UU($,q,Q,K){var J=A$,Z=K+Q;$=$^-1;for(var G=K;G>>8^J[($^q[G])&255];return $^-1}function ZU($,q,Q,K){var J=A$,Z=K+Q;$=$^-1;for(var G=K;G>>8^J[($^q.charCodeAt(G))&255];return $^-1}X$.exports=function(q,Q){if(typeof q>"u"||!q.length)return 0;var K=JU.getTypeOf(q)!=="string";if(K)return UU(Q|0,q,q.length,0);else return ZU(Q|0,q,q.length,0)}});var U4=N0((Xz,h$)=>{var y$=V2(),GU=T8(),WU=T0();function V4(){y$.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}WU.inherits(V4,y$);V4.prototype.processChunk=function($){this.streamInfo.crc32=GU($.data,this.streamInfo.crc32||0),this.push($)};h$.exports=V4});var O$=N0((yz,x$)=>{var BU=T0(),Z4=V2();function G4($){Z4.call(this,"DataLengthProbe for "+$),this.propName=$,this.withStreamInfo($,0)}BU.inherits(G4,Z4);G4.prototype.processChunk=function($){if($){var q=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=q+$.data.length}Z4.prototype.processChunk.call(this,$)};x$.exports=G4});var u8=N0((hz,u$)=>{var P$=r1(),T$=J4(),zU=U4(),W4=O$();function B4($,q,Q,K,J){this.compressedSize=$,this.uncompressedSize=q,this.crc32=Q,this.compression=K,this.compressedContent=J}B4.prototype={getContentWorker:function(){var $=new T$(P$.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new W4("data_length")),q=this;return $.on("end",function(){if(this.streamInfo.data_length!==q.uncompressedSize)throw Error("Bug : uncompressed data size mismatch")}),$},getCompressedWorker:function(){return new T$(P$.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}};B4.createWorkerFrom=function($,q,Q){return $.pipe(new zU).pipe(new W4("uncompressedSize")).pipe(q.compressWorker(Q)).pipe(new W4("compressedSize")).withStreamInfo("compression",q)};u$.exports=B4});var c$=N0((xz,_$)=>{var FU=q4(),MU=J4(),z4=e1(),F4=u8(),S$=V2(),M4=function($,q,Q){this.name=$,this.dir=Q.dir,this.date=Q.date,this.comment=Q.comment,this.unixPermissions=Q.unixPermissions,this.dosPermissions=Q.dosPermissions,this._data=q,this._dataBinary=Q.binary,this.options={compression:Q.compression,compressionOptions:Q.compressionOptions}};M4.prototype={internalStream:function($){var q=null,Q="string";try{if(!$)throw Error("No output type specified.");Q=$.toLowerCase();var K=Q==="string"||Q==="text";if(Q==="binarystring"||Q==="text")Q="string";q=this._decompressWorker();var J=!this._dataBinary;if(J&&!K)q=q.pipe(new z4.Utf8EncodeWorker);if(!J&&K)q=q.pipe(new z4.Utf8DecodeWorker)}catch(Z){q=new S$("error"),q.error(Z)}return new FU(q,Q,"")},async:function($,q){return this.internalStream($).accumulate(q)},nodeStream:function($,q){return this.internalStream($||"nodebuffer").toNodejsStream(q)},_compressWorker:function($,q){if(this._data instanceof F4&&this._data.compression.magic===$.magic)return this._data.getCompressedWorker();else{var Q=this._decompressWorker();if(!this._dataBinary)Q=Q.pipe(new z4.Utf8EncodeWorker);return F4.createWorkerFrom(Q,$,q)}},_decompressWorker:function(){if(this._data instanceof F4)return this._data.getContentWorker();else if(this._data instanceof S$)return this._data;else return new MU(this._data)}};var E$=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],wU=function(){throw Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")};for(n6=0;n6{var NU=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function YU($,q){return Object.prototype.hasOwnProperty.call($,q)}l0.assign=function($){var q=Array.prototype.slice.call(arguments,1);while(q.length){var Q=q.shift();if(!Q)continue;if(typeof Q!=="object")throw TypeError(Q+"must be non-object");for(var K in Q)if(YU(Q,K))$[K]=Q[K]}return $};l0.shrinkBuf=function($,q){if($.length===q)return $;if($.subarray)return $.subarray(0,q);return $.length=q,$};var kU={arraySet:function($,q,Q,K,J){if(q.subarray&&$.subarray){$.set(q.subarray(Q,Q+K),J);return}for(var Z=0;Z{var LU=d2(),HU=4,b$=0,n$=1,vU=2;function q6($){var q=$.length;while(--q>=0)$[q]=0}var fU=0,a$=1,RU=2,IU=3,CU=258,H4=29,a6=256,m6=a6+1+H4,Q6=30,v4=19,l$=2*m6+1,v1=15,w4=16,jU=7,f4=256,r$=16,s$=17,t$=18,D4=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],S8=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],gU=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],e$=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],AU=512,m2=Array((m6+2)*2);q6(m2);var d6=Array(Q6*2);q6(d6);var p6=Array(AU);q6(p6);var i6=Array(CU-IU+1);q6(i6);var R4=Array(H4);q6(R4);var E8=Array(Q6);q6(E8);function N4($,q,Q,K,J){this.static_tree=$,this.extra_bits=q,this.extra_base=Q,this.elems=K,this.max_length=J,this.has_stree=$&&$.length}var $Q,QQ,qQ;function Y4($,q){this.dyn_tree=$,this.max_code=0,this.stat_desc=q}function KQ($){return $<256?p6[$]:p6[256+($>>>7)]}function o6($,q){$.pending_buf[$.pending++]=q&255,$.pending_buf[$.pending++]=q>>>8&255}function $2($,q,Q){if($.bi_valid>w4-Q)$.bi_buf|=q<<$.bi_valid&65535,o6($,$.bi_buf),$.bi_buf=q>>w4-$.bi_valid,$.bi_valid+=Q-w4;else $.bi_buf|=q<<$.bi_valid&65535,$.bi_valid+=Q}function y2($,q,Q){$2($,Q[q*2],Q[q*2+1])}function JQ($,q){var Q=0;do Q|=$&1,$>>>=1,Q<<=1;while(--q>0);return Q>>>1}function XU($){if($.bi_valid===16)o6($,$.bi_buf),$.bi_buf=0,$.bi_valid=0;else if($.bi_valid>=8)$.pending_buf[$.pending++]=$.bi_buf&255,$.bi_buf>>=8,$.bi_valid-=8}function yU($,q){var{dyn_tree:Q,max_code:K}=q,J=q.stat_desc.static_tree,Z=q.stat_desc.has_stree,G=q.stat_desc.extra_bits,W=q.stat_desc.extra_base,B=q.stat_desc.max_length,V,U,w,F,M,k,f=0;for(F=0;F<=v1;F++)$.bl_count[F]=0;Q[$.heap[$.heap_max]*2+1]=0;for(V=$.heap_max+1;VB)F=B,f++;if(Q[U*2+1]=F,U>K)continue;if($.bl_count[F]++,M=0,U>=W)M=G[U-W];if(k=Q[U*2],$.opt_len+=k*(F+M),Z)$.static_len+=k*(J[U*2+1]+M)}if(f===0)return;do{F=B-1;while($.bl_count[F]===0)F--;$.bl_count[F]--,$.bl_count[F+1]+=2,$.bl_count[B]--,f-=2}while(f>0);for(F=B;F!==0;F--){U=$.bl_count[F];while(U!==0){if(w=$.heap[--V],w>K)continue;if(Q[w*2+1]!==F)$.opt_len+=(F-Q[w*2+1])*Q[w*2],Q[w*2+1]=F;U--}}}function VQ($,q,Q){var K=Array(v1+1),J=0,Z,G;for(Z=1;Z<=v1;Z++)K[Z]=J=J+Q[Z-1]<<1;for(G=0;G<=q;G++){var W=$[G*2+1];if(W===0)continue;$[G*2]=JQ(K[W]++,W)}}function hU(){var $,q,Q,K,J,Z=Array(v1+1);Q=0;for(K=0;K>=7;for(;K8)o6($,$.bi_buf);else if($.bi_valid>0)$.pending_buf[$.pending++]=$.bi_buf;$.bi_buf=0,$.bi_valid=0}function xU($,q,Q,K){if(ZQ($),K)o6($,Q),o6($,~Q);LU.arraySet($.pending_buf,$.window,q,Q,$.pending),$.pending+=Q}function d$($,q,Q,K){var J=q*2,Z=Q*2;return $[J]<$[Z]||$[J]===$[Z]&&K[q]<=K[Q]}function k4($,q,Q){var K=$.heap[Q],J=Q<<1;while(J<=$.heap_len){if(J<$.heap_len&&d$(q,$.heap[J+1],$.heap[J],$.depth))J++;if(d$(q,K,$.heap[J],$.depth))break;$.heap[Q]=$.heap[J],Q=J,J<<=1}$.heap[Q]=K}function m$($,q,Q){var K,J,Z=0,G,W;if($.last_lit!==0)do if(K=$.pending_buf[$.d_buf+Z*2]<<8|$.pending_buf[$.d_buf+Z*2+1],J=$.pending_buf[$.l_buf+Z],Z++,K===0)y2($,J,q);else{if(G=i6[J],y2($,G+a6+1,q),W=D4[G],W!==0)J-=R4[G],$2($,J,W);if(K--,G=KQ(K),y2($,G,Q),W=S8[G],W!==0)K-=E8[G],$2($,K,W)}while(Z<$.last_lit);y2($,f4,q)}function L4($,q){var Q=q.dyn_tree,K=q.stat_desc.static_tree,J=q.stat_desc.has_stree,Z=q.stat_desc.elems,G,W,B=-1,V;$.heap_len=0,$.heap_max=l$;for(G=0;G>1;G>=1;G--)k4($,Q,G);V=Z;do G=$.heap[1],$.heap[1]=$.heap[$.heap_len--],k4($,Q,1),W=$.heap[1],$.heap[--$.heap_max]=G,$.heap[--$.heap_max]=W,Q[V*2]=Q[G*2]+Q[W*2],$.depth[V]=($.depth[G]>=$.depth[W]?$.depth[G]:$.depth[W])+1,Q[G*2+1]=Q[W*2+1]=V,$.heap[1]=V++,k4($,Q,1);while($.heap_len>=2);$.heap[--$.heap_max]=$.heap[1],yU($,q),VQ(Q,B,$.bl_count)}function p$($,q,Q){var K,J=-1,Z,G=q[1],W=0,B=7,V=4;if(G===0)B=138,V=3;q[(Q+1)*2+1]=65535;for(K=0;K<=Q;K++){if(Z=G,G=q[(K+1)*2+1],++W=3;q--)if($.bl_tree[e$[q]*2+1]!==0)break;return $.opt_len+=3*(q+1)+5+5+4,q}function PU($,q,Q,K){var J;$2($,q-257,5),$2($,Q-1,5),$2($,K-4,4);for(J=0;J>>=1)if(q&1&&$.dyn_ltree[Q*2]!==0)return b$;if($.dyn_ltree[18]!==0||$.dyn_ltree[20]!==0||$.dyn_ltree[26]!==0)return n$;for(Q=32;Q0){if($.strm.data_type===vU)$.strm.data_type=TU($);if(L4($,$.l_desc),L4($,$.d_desc),G=OU($),J=$.opt_len+3+7>>>3,Z=$.static_len+3+7>>>3,Z<=J)J=Z}else J=Z=Q+5;if(Q+4<=J&&q!==-1)GQ($,q,Q,K);else if($.strategy===HU||Z===J)$2($,(a$<<1)+(K?1:0),3),m$($,m2,d6);else $2($,(RU<<1)+(K?1:0),3),PU($,$.l_desc.max_code+1,$.d_desc.max_code+1,G+1),m$($,$.dyn_ltree,$.dyn_dtree);if(UQ($),K)ZQ($)}function _U($,q,Q){if($.pending_buf[$.d_buf+$.last_lit*2]=q>>>8&255,$.pending_buf[$.d_buf+$.last_lit*2+1]=q&255,$.pending_buf[$.l_buf+$.last_lit]=Q&255,$.last_lit++,q===0)$.dyn_ltree[Q*2]++;else $.matches++,q--,$.dyn_ltree[(i6[Q]+a6+1)*2]++,$.dyn_dtree[KQ(q)*2]++;return $.last_lit===$.lit_bufsize-1}K6._tr_init=uU;K6._tr_stored_block=GQ;K6._tr_flush_block=EU;K6._tr_tally=_U;K6._tr_align=SU});var I4=N0((Tz,BQ)=>{function cU($,q,Q,K){var J=$&65535|0,Z=$>>>16&65535|0,G=0;while(Q!==0){G=Q>2000?2000:Q,Q-=G;do J=J+q[K++]|0,Z=Z+J|0;while(--G);J%=65521,Z%=65521}return J|Z<<16|0}BQ.exports=cU});var C4=N0((uz,zQ)=>{function bU(){var $,q=[];for(var Q=0;Q<256;Q++){$=Q;for(var K=0;K<8;K++)$=$&1?3988292384^$>>>1:$>>>1;q[Q]=$}return q}var nU=bU();function dU($,q,Q,K){var J=nU,Z=K+Q;$^=-1;for(var G=K;G>>8^J[($^q[G])&255];return $^-1}zQ.exports=dU});var _8=N0((Sz,FQ)=>{FQ.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var vQ=N0((O2)=>{var r0=d2(),M2=WQ(),YQ=I4(),q1=C4(),mU=_8(),C1=0,pU=1,iU=3,Z1=4,MQ=5,x2=0,wQ=1,w2=-2,oU=-3,j4=-5,aU=-1,lU=1,c8=2,rU=3,sU=4,tU=0,eU=2,m8=8,$Z=9,QZ=15,qZ=8,KZ=29,JZ=256,A4=JZ+1+KZ,VZ=30,UZ=19,ZZ=2*A4+1,GZ=15,f0=3,V1=258,L2=V1+f0+1,WZ=32,p8=42,X4=69,b8=73,n8=91,d8=103,f1=113,r6=666,c0=1,s6=2,R1=3,U6=4,BZ=3;function U1($,q){return $.msg=mU[q],q}function NQ($){return($<<1)-($>4?9:0)}function J1($){var q=$.length;while(--q>=0)$[q]=0}function K1($){var q=$.state,Q=q.pending;if(Q>$.avail_out)Q=$.avail_out;if(Q===0)return;if(r0.arraySet($.output,q.pending_buf,q.pending_out,Q,$.next_out),$.next_out+=Q,q.pending_out+=Q,$.total_out+=Q,$.avail_out-=Q,q.pending-=Q,q.pending===0)q.pending_out=0}function d0($,q){M2._tr_flush_block($,$.block_start>=0?$.block_start:-1,$.strstart-$.block_start,q),$.block_start=$.strstart,K1($.strm)}function C0($,q){$.pending_buf[$.pending++]=q}function l6($,q){$.pending_buf[$.pending++]=q>>>8&255,$.pending_buf[$.pending++]=q&255}function zZ($,q,Q,K){var J=$.avail_in;if(J>K)J=K;if(J===0)return 0;if($.avail_in-=J,r0.arraySet(q,$.input,$.next_in,J,Q),$.state.wrap===1)$.adler=YQ($.adler,q,J,Q);else if($.state.wrap===2)$.adler=q1($.adler,q,J,Q);return $.next_in+=J,$.total_in+=J,J}function kQ($,q){var{max_chain_length:Q,strstart:K}=$,J,Z,G=$.prev_length,W=$.nice_match,B=$.strstart>$.w_size-L2?$.strstart-($.w_size-L2):0,V=$.window,U=$.w_mask,w=$.prev,F=$.strstart+V1,M=V[K+G-1],k=V[K+G];if($.prev_length>=$.good_match)Q>>=2;if(W>$.lookahead)W=$.lookahead;do{if(J=q,V[J+G]!==k||V[J+G-1]!==M||V[J]!==V[K]||V[++J]!==V[K+1])continue;K+=2,J++;do;while(V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&V[++K]===V[++J]&&KG){if($.match_start=q,G=Z,Z>=W)break;M=V[K+G-1],k=V[K+G]}}while((q=w[q&U])>B&&--Q!==0);if(G<=$.lookahead)return G;return $.lookahead}function I1($){var q=$.w_size,Q,K,J,Z,G;do{if(Z=$.window_size-$.lookahead-$.strstart,$.strstart>=q+(q-L2)){r0.arraySet($.window,$.window,q,q,0),$.match_start-=q,$.strstart-=q,$.block_start-=q,K=$.hash_size,Q=K;do J=$.head[--Q],$.head[Q]=J>=q?J-q:0;while(--K);K=q,Q=K;do J=$.prev[--Q],$.prev[Q]=J>=q?J-q:0;while(--K);Z+=q}if($.strm.avail_in===0)break;if(K=zZ($.strm,$.window,$.strstart+$.lookahead,Z),$.lookahead+=K,$.lookahead+$.insert>=f0){G=$.strstart-$.insert,$.ins_h=$.window[G],$.ins_h=($.ins_h<<$.hash_shift^$.window[G+1])&$.hash_mask;while($.insert)if($.ins_h=($.ins_h<<$.hash_shift^$.window[G+f0-1])&$.hash_mask,$.prev[G&$.w_mask]=$.head[$.ins_h],$.head[$.ins_h]=G,G++,$.insert--,$.lookahead+$.insert$.pending_buf_size-5)Q=$.pending_buf_size-5;for(;;){if($.lookahead<=1){if(I1($),$.lookahead===0&&q===C1)return c0;if($.lookahead===0)break}$.strstart+=$.lookahead,$.lookahead=0;var K=$.block_start+Q;if($.strstart===0||$.strstart>=K){if($.lookahead=$.strstart-K,$.strstart=K,d0($,!1),$.strm.avail_out===0)return c0}if($.strstart-$.block_start>=$.w_size-L2){if(d0($,!1),$.strm.avail_out===0)return c0}}if($.insert=0,q===Z1){if(d0($,!0),$.strm.avail_out===0)return R1;return U6}if($.strstart>$.block_start){if(d0($,!1),$.strm.avail_out===0)return c0}return c0}function g4($,q){var Q,K;for(;;){if($.lookahead=f0)$.ins_h=($.ins_h<<$.hash_shift^$.window[$.strstart+f0-1])&$.hash_mask,Q=$.prev[$.strstart&$.w_mask]=$.head[$.ins_h],$.head[$.ins_h]=$.strstart;if(Q!==0&&$.strstart-Q<=$.w_size-L2)$.match_length=kQ($,Q);if($.match_length>=f0)if(K=M2._tr_tally($,$.strstart-$.match_start,$.match_length-f0),$.lookahead-=$.match_length,$.match_length<=$.max_lazy_match&&$.lookahead>=f0){$.match_length--;do $.strstart++,$.ins_h=($.ins_h<<$.hash_shift^$.window[$.strstart+f0-1])&$.hash_mask,Q=$.prev[$.strstart&$.w_mask]=$.head[$.ins_h],$.head[$.ins_h]=$.strstart;while(--$.match_length!==0);$.strstart++}else $.strstart+=$.match_length,$.match_length=0,$.ins_h=$.window[$.strstart],$.ins_h=($.ins_h<<$.hash_shift^$.window[$.strstart+1])&$.hash_mask;else K=M2._tr_tally($,0,$.window[$.strstart]),$.lookahead--,$.strstart++;if(K){if(d0($,!1),$.strm.avail_out===0)return c0}}if($.insert=$.strstart=f0)$.ins_h=($.ins_h<<$.hash_shift^$.window[$.strstart+f0-1])&$.hash_mask,Q=$.prev[$.strstart&$.w_mask]=$.head[$.ins_h],$.head[$.ins_h]=$.strstart;if($.prev_length=$.match_length,$.prev_match=$.match_start,$.match_length=f0-1,Q!==0&&$.prev_length<$.max_lazy_match&&$.strstart-Q<=$.w_size-L2){if($.match_length=kQ($,Q),$.match_length<=5&&($.strategy===lU||$.match_length===f0&&$.strstart-$.match_start>4096))$.match_length=f0-1}if($.prev_length>=f0&&$.match_length<=$.prev_length){J=$.strstart+$.lookahead-f0,K=M2._tr_tally($,$.strstart-1-$.prev_match,$.prev_length-f0),$.lookahead-=$.prev_length-1,$.prev_length-=2;do if(++$.strstart<=J)$.ins_h=($.ins_h<<$.hash_shift^$.window[$.strstart+f0-1])&$.hash_mask,Q=$.prev[$.strstart&$.w_mask]=$.head[$.ins_h],$.head[$.ins_h]=$.strstart;while(--$.prev_length!==0);if($.match_available=0,$.match_length=f0-1,$.strstart++,K){if(d0($,!1),$.strm.avail_out===0)return c0}}else if($.match_available){if(K=M2._tr_tally($,0,$.window[$.strstart-1]),K)d0($,!1);if($.strstart++,$.lookahead--,$.strm.avail_out===0)return c0}else $.match_available=1,$.strstart++,$.lookahead--}if($.match_available)K=M2._tr_tally($,0,$.window[$.strstart-1]),$.match_available=0;if($.insert=$.strstart=f0&&$.strstart>0){if(J=$.strstart-1,K=G[J],K===G[++J]&&K===G[++J]&&K===G[++J]){Z=$.strstart+V1;do;while(K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&K===G[++J]&&J$.lookahead)$.match_length=$.lookahead}}if($.match_length>=f0)Q=M2._tr_tally($,1,$.match_length-f0),$.lookahead-=$.match_length,$.strstart+=$.match_length,$.match_length=0;else Q=M2._tr_tally($,0,$.window[$.strstart]),$.lookahead--,$.strstart++;if(Q){if(d0($,!1),$.strm.avail_out===0)return c0}}if($.insert=0,q===Z1){if(d0($,!0),$.strm.avail_out===0)return R1;return U6}if($.last_lit){if(d0($,!1),$.strm.avail_out===0)return c0}return s6}function wZ($,q){var Q;for(;;){if($.lookahead===0){if(I1($),$.lookahead===0){if(q===C1)return c0;break}}if($.match_length=0,Q=M2._tr_tally($,0,$.window[$.strstart]),$.lookahead--,$.strstart++,Q){if(d0($,!1),$.strm.avail_out===0)return c0}}if($.insert=0,q===Z1){if(d0($,!0),$.strm.avail_out===0)return R1;return U6}if($.last_lit){if(d0($,!1),$.strm.avail_out===0)return c0}return s6}function h2($,q,Q,K,J){this.good_length=$,this.max_lazy=q,this.nice_length=Q,this.max_chain=K,this.func=J}var V6;V6=[new h2(0,0,0,0,FZ),new h2(4,4,8,4,g4),new h2(4,5,16,8,g4),new h2(4,6,32,32,g4),new h2(4,4,16,16,J6),new h2(8,16,32,32,J6),new h2(8,16,128,128,J6),new h2(8,32,128,256,J6),new h2(32,128,258,1024,J6),new h2(32,258,258,4096,J6)];function NZ($){$.window_size=2*$.w_size,J1($.head),$.max_lazy_match=V6[$.level].max_lazy,$.good_match=V6[$.level].good_length,$.nice_match=V6[$.level].nice_length,$.max_chain_length=V6[$.level].max_chain,$.strstart=0,$.block_start=0,$.lookahead=0,$.insert=0,$.match_length=$.prev_length=f0-1,$.match_available=0,$.ins_h=0}function YZ(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=m8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r0.Buf16(ZZ*2),this.dyn_dtree=new r0.Buf16((2*VZ+1)*2),this.bl_tree=new r0.Buf16((2*UZ+1)*2),J1(this.dyn_ltree),J1(this.dyn_dtree),J1(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r0.Buf16(GZ+1),this.heap=new r0.Buf16(2*A4+1),J1(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r0.Buf16(2*A4+1),J1(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function DQ($){var q;if(!$||!$.state)return U1($,w2);if($.total_in=$.total_out=0,$.data_type=eU,q=$.state,q.pending=0,q.pending_out=0,q.wrap<0)q.wrap=-q.wrap;return q.status=q.wrap?p8:f1,$.adler=q.wrap===2?0:1,q.last_flush=C1,M2._tr_init(q),x2}function LQ($){var q=DQ($);if(q===x2)NZ($.state);return q}function kZ($,q){if(!$||!$.state)return w2;if($.state.wrap!==2)return w2;return $.state.gzhead=q,x2}function HQ($,q,Q,K,J,Z){if(!$)return w2;var G=1;if(q===aU)q=6;if(K<0)G=0,K=-K;else if(K>15)G=2,K-=16;if(J<1||J>$Z||Q!==m8||K<8||K>15||q<0||q>9||Z<0||Z>sU)return U1($,w2);if(K===8)K=9;var W=new YZ;return $.state=W,W.strm=$,W.wrap=G,W.gzhead=null,W.w_bits=K,W.w_size=1<MQ||q<0)return $?U1($,w2):w2;if(K=$.state,!$.output||!$.input&&$.avail_in!==0||K.status===r6&&q!==Z1)return U1($,$.avail_out===0?j4:w2);if(K.strm=$,Q=K.last_flush,K.last_flush=q,K.status===p8)if(K.wrap===2)if($.adler=0,C0(K,31),C0(K,139),C0(K,8),!K.gzhead)C0(K,0),C0(K,0),C0(K,0),C0(K,0),C0(K,0),C0(K,K.level===9?2:K.strategy>=c8||K.level<2?4:0),C0(K,BZ),K.status=f1;else{if(C0(K,(K.gzhead.text?1:0)+(K.gzhead.hcrc?2:0)+(!K.gzhead.extra?0:4)+(!K.gzhead.name?0:8)+(!K.gzhead.comment?0:16)),C0(K,K.gzhead.time&255),C0(K,K.gzhead.time>>8&255),C0(K,K.gzhead.time>>16&255),C0(K,K.gzhead.time>>24&255),C0(K,K.level===9?2:K.strategy>=c8||K.level<2?4:0),C0(K,K.gzhead.os&255),K.gzhead.extra&&K.gzhead.extra.length)C0(K,K.gzhead.extra.length&255),C0(K,K.gzhead.extra.length>>8&255);if(K.gzhead.hcrc)$.adler=q1($.adler,K.pending_buf,K.pending,0);K.gzindex=0,K.status=X4}else{var G=m8+(K.w_bits-8<<4)<<8,W=-1;if(K.strategy>=c8||K.level<2)W=0;else if(K.level<6)W=1;else if(K.level===6)W=2;else W=3;if(G|=W<<6,K.strstart!==0)G|=WZ;if(G+=31-G%31,K.status=f1,l6(K,G),K.strstart!==0)l6(K,$.adler>>>16),l6(K,$.adler&65535);$.adler=1}if(K.status===X4)if(K.gzhead.extra){J=K.pending;while(K.gzindex<(K.gzhead.extra.length&65535)){if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(K1($),J=K.pending,K.pending===K.pending_buf_size)break}C0(K,K.gzhead.extra[K.gzindex]&255),K.gzindex++}if(K.gzhead.hcrc&&K.pending>J)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(K.gzindex===K.gzhead.extra.length)K.gzindex=0,K.status=b8}else K.status=b8;if(K.status===b8)if(K.gzhead.name){J=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(K1($),J=K.pending,K.pending===K.pending_buf_size){Z=1;break}}if(K.gzindexJ)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(Z===0)K.gzindex=0,K.status=n8}else K.status=n8;if(K.status===n8)if(K.gzhead.comment){J=K.pending;do{if(K.pending===K.pending_buf_size){if(K.gzhead.hcrc&&K.pending>J)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(K1($),J=K.pending,K.pending===K.pending_buf_size){Z=1;break}}if(K.gzindexJ)$.adler=q1($.adler,K.pending_buf,K.pending-J,J);if(Z===0)K.status=d8}else K.status=d8;if(K.status===d8)if(K.gzhead.hcrc){if(K.pending+2>K.pending_buf_size)K1($);if(K.pending+2<=K.pending_buf_size)C0(K,$.adler&255),C0(K,$.adler>>8&255),$.adler=0,K.status=f1}else K.status=f1;if(K.pending!==0){if(K1($),$.avail_out===0)return K.last_flush=-1,x2}else if($.avail_in===0&&NQ(q)<=NQ(Q)&&q!==Z1)return U1($,j4);if(K.status===r6&&$.avail_in!==0)return U1($,j4);if($.avail_in!==0||K.lookahead!==0||q!==C1&&K.status!==r6){var B=K.strategy===c8?wZ(K,q):K.strategy===rU?MZ(K,q):V6[K.level].func(K,q);if(B===R1||B===U6)K.status=r6;if(B===c0||B===R1){if($.avail_out===0)K.last_flush=-1;return x2}if(B===s6){if(q===pU)M2._tr_align(K);else if(q!==MQ){if(M2._tr_stored_block(K,0,0,!1),q===iU){if(J1(K.head),K.lookahead===0)K.strstart=0,K.block_start=0,K.insert=0}}if(K1($),$.avail_out===0)return K.last_flush=-1,x2}}if(q!==Z1)return x2;if(K.wrap<=0)return wQ;if(K.wrap===2)C0(K,$.adler&255),C0(K,$.adler>>8&255),C0(K,$.adler>>16&255),C0(K,$.adler>>24&255),C0(K,$.total_in&255),C0(K,$.total_in>>8&255),C0(K,$.total_in>>16&255),C0(K,$.total_in>>24&255);else l6(K,$.adler>>>16),l6(K,$.adler&65535);if(K1($),K.wrap>0)K.wrap=-K.wrap;return K.pending!==0?x2:wQ}function HZ($){var q;if(!$||!$.state)return w2;if(q=$.state.status,q!==p8&&q!==X4&&q!==b8&&q!==n8&&q!==d8&&q!==f1&&q!==r6)return U1($,w2);return $.state=null,q===f1?U1($,oU):x2}function vZ($,q){var Q=q.length,K,J,Z,G,W,B,V,U;if(!$||!$.state)return w2;if(K=$.state,G=K.wrap,G===2||G===1&&K.status!==p8||K.lookahead)return w2;if(G===1)$.adler=YQ($.adler,q,Q,0);if(K.wrap=0,Q>=K.w_size){if(G===0)J1(K.head),K.strstart=0,K.block_start=0,K.insert=0;U=new r0.Buf8(K.w_size),r0.arraySet(U,q,Q-K.w_size,K.w_size,0),q=U,Q=K.w_size}W=$.avail_in,B=$.next_in,V=$.input,$.avail_in=Q,$.next_in=0,$.input=q,I1(K);while(K.lookahead>=f0){J=K.strstart,Z=K.lookahead-(f0-1);do K.ins_h=(K.ins_h<{var i8=d2(),fQ=!0,RQ=!0;try{String.fromCharCode.apply(null,[0])}catch($){fQ=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch($){RQ=!1}var t6=new i8.Buf8(256);for(P2=0;P2<256;P2++)t6[P2]=P2>=252?6:P2>=248?5:P2>=240?4:P2>=224?3:P2>=192?2:1;var P2;t6[254]=t6[254]=1;Z6.string2buf=function($){var q,Q,K,J,Z,G=$.length,W=0;for(J=0;J>>6,q[Z++]=128|Q&63;else if(Q<65536)q[Z++]=224|Q>>>12,q[Z++]=128|Q>>>6&63,q[Z++]=128|Q&63;else q[Z++]=240|Q>>>18,q[Z++]=128|Q>>>12&63,q[Z++]=128|Q>>>6&63,q[Z++]=128|Q&63}return q};function IQ($,q){if(q<65534){if($.subarray&&RQ||!$.subarray&&fQ)return String.fromCharCode.apply(null,i8.shrinkBuf($,q))}var Q="";for(var K=0;K4){W[K++]=65533,Q+=Z-1;continue}J&=Z===2?31:Z===3?15:7;while(Z>1&&Q1){W[K++]=65533;continue}if(J<65536)W[K++]=J;else J-=65536,W[K++]=55296|J>>10&1023,W[K++]=56320|J&1023}return IQ(W,K)};Z6.utf8border=function($,q){var Q;if(q=q||$.length,q>$.length)q=$.length;Q=q-1;while(Q>=0&&($[Q]&192)===128)Q--;if(Q<0)return q;if(Q===0)return q;return Q+t6[$[Q]]>q?Q:q}});var h4=N0((cz,CQ)=>{function fZ(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}CQ.exports=fZ});var XQ=N0((Q8)=>{var e6=vQ(),$8=d2(),O4=y4(),P4=_8(),RZ=h4(),AQ=Object.prototype.toString,IZ=0,x4=4,G6=0,jQ=1,gQ=2,CZ=-1,jZ=0,gZ=8;function j1($){if(!(this instanceof j1))return new j1($);this.options=$8.assign({level:CZ,method:gZ,chunkSize:16384,windowBits:15,memLevel:8,strategy:jZ,to:""},$||{});var q=this.options;if(q.raw&&q.windowBits>0)q.windowBits=-q.windowBits;else if(q.gzip&&q.windowBits>0&&q.windowBits<16)q.windowBits+=16;this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new RZ,this.strm.avail_out=0;var Q=e6.deflateInit2(this.strm,q.level,q.method,q.windowBits,q.memLevel,q.strategy);if(Q!==G6)throw Error(P4[Q]);if(q.header)e6.deflateSetHeader(this.strm,q.header);if(q.dictionary){var K;if(typeof q.dictionary==="string")K=O4.string2buf(q.dictionary);else if(AQ.call(q.dictionary)==="[object ArrayBuffer]")K=new Uint8Array(q.dictionary);else K=q.dictionary;if(Q=e6.deflateSetDictionary(this.strm,K),Q!==G6)throw Error(P4[Q]);this._dict_set=!0}}j1.prototype.push=function($,q){var Q=this.strm,K=this.options.chunkSize,J,Z;if(this.ended)return!1;if(Z=q===~~q?q:q===!0?x4:IZ,typeof $==="string")Q.input=O4.string2buf($);else if(AQ.call($)==="[object ArrayBuffer]")Q.input=new Uint8Array($);else Q.input=$;Q.next_in=0,Q.avail_in=Q.input.length;do{if(Q.avail_out===0)Q.output=new $8.Buf8(K),Q.next_out=0,Q.avail_out=K;if(J=e6.deflate(Q,Z),J!==jQ&&J!==G6)return this.onEnd(J),this.ended=!0,!1;if(Q.avail_out===0||Q.avail_in===0&&(Z===x4||Z===gQ))if(this.options.to==="string")this.onData(O4.buf2binstring($8.shrinkBuf(Q.output,Q.next_out)));else this.onData($8.shrinkBuf(Q.output,Q.next_out))}while((Q.avail_in>0||Q.avail_out===0)&&J!==jQ);if(Z===x4)return J=e6.deflateEnd(this.strm),this.onEnd(J),this.ended=!0,J===G6;if(Z===gQ)return this.onEnd(G6),Q.avail_out=0,!0;return!0};j1.prototype.onData=function($){this.chunks.push($)};j1.prototype.onEnd=function($){if($===G6)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=$8.flattenChunks(this.chunks);this.chunks=[],this.err=$,this.msg=this.strm.msg};function T4($,q){var Q=new j1(q);if(Q.push($,!0),Q.err)throw Q.msg||P4[Q.err];return Q.result}function AZ($,q){return q=q||{},q.raw=!0,T4($,q)}function XZ($,q){return q=q||{},q.gzip=!0,T4($,q)}Q8.Deflate=j1;Q8.deflate=T4;Q8.deflateRaw=AZ;Q8.gzip=XZ});var hQ=N0((nz,yQ)=>{var o8=30,yZ=12;yQ.exports=function(q,Q){var K,J,Z,G,W,B,V,U,w,F,M,k,f,L,D,z,N,H,v,j,n,d,_,X,P;K=q.state,J=q.next_in,X=q.input,Z=J+(q.avail_in-5),G=q.next_out,P=q.output,W=G-(Q-q.avail_out),B=G+(q.avail_out-257),V=K.dmax,U=K.wsize,w=K.whave,F=K.wnext,M=K.window,k=K.hold,f=K.bits,L=K.lencode,D=K.distcode,z=(1<>>24,k>>>=v,f-=v,v=H>>>16&255,v===0)P[G++]=H&65535;else if(v&16){if(j=H&65535,v&=15,v){if(f>>=v,f-=v}if(f<15)k+=X[J++]<>>24,k>>>=v,f-=v,v=H>>>16&255,v&16){if(n=H&65535,v&=15,fV){q.msg="invalid distance too far back",K.mode=o8;break $}if(k>>>=v,f-=v,v=G-W,n>v){if(v=n-v,v>w){if(K.sane){q.msg="invalid distance too far back",K.mode=o8;break $}}if(d=0,_=M,F===0){if(d+=U-v,v2)P[G++]=_[d++],P[G++]=_[d++],P[G++]=_[d++],j-=3;if(j){if(P[G++]=_[d++],j>1)P[G++]=_[d++]}}else{d=G-n;do P[G++]=P[d++],P[G++]=P[d++],P[G++]=P[d++],j-=3;while(j>2);if(j){if(P[G++]=P[d++],j>1)P[G++]=P[d++]}}}else if((v&64)===0){H=D[(H&65535)+(k&(1<>3,J-=j,f-=j<<3,k&=(1<{var xQ=d2(),W6=15,OQ=852,PQ=592,TQ=0,u4=1,uQ=2,hZ=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],xZ=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],OZ=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],PZ=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];SQ.exports=function(q,Q,K,J,Z,G,W,B){var V=B.bits,U=0,w=0,F=0,M=0,k=0,f=0,L=0,D=0,z=0,N=0,H,v,j,n,d,_=null,X=0,P,g=new xQ.Buf16(W6+1),c=new xQ.Buf16(W6+1),h=null,x=0,l,$0,Z0;for(U=0;U<=W6;U++)g[U]=0;for(w=0;w=1;M--)if(g[M]!==0)break;if(k>M)k=M;if(M===0)return Z[G++]=20971520,Z[G++]=20971520,B.bits=1,0;for(F=1;F0&&(q===TQ||M!==1))return-1;c[1]=0;for(U=1;UOQ||q===uQ&&z>PQ)return 1;for(;;){if(l=U-L,W[w]P)$0=h[x+W[w]],Z0=_[X+W[w]];else $0=96,Z0=0;H=1<>L)+v]=l<<24|$0<<16|Z0|0;while(v!==0);H=1<>=1;if(H!==0)N&=H-1,N+=H;else N=0;if(w++,--g[U]===0){if(U===M)break;U=Q[K+W[w]]}if(U>k&&(N&n)!==j){if(L===0)L=k;d+=F,f=U-L,D=1<OQ||q===uQ&&z>PQ)return 1;j=N&n,Z[j]=k<<24|f<<16|d-G|0}}if(N!==0)Z[d+N]=U-L<<24|4194304|0;return B.bits=k,0}});var Lq=N0((H2)=>{var U2=d2(),n4=I4(),T2=C4(),TZ=hQ(),q8=EQ(),uZ=0,Bq=1,zq=2,_Q=4,SZ=5,a8=6,g1=0,EZ=1,_Z=2,N2=-2,Fq=-3,d4=-4,cZ=-5,cQ=8,Mq=1,bQ=2,nQ=3,dQ=4,mQ=5,pQ=6,iQ=7,oQ=8,aQ=9,lQ=10,s8=11,p2=12,S4=13,rQ=14,E4=15,sQ=16,tQ=17,eQ=18,$q=19,l8=20,r8=21,Qq=22,qq=23,Kq=24,Jq=25,Vq=26,_4=27,Uq=28,Zq=29,x0=30,m4=31,bZ=32,nZ=852,dZ=592,mZ=15,pZ=mZ;function Gq($){return($>>>24&255)+($>>>8&65280)+(($&65280)<<8)+(($&255)<<24)}function iZ(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new U2.Buf16(320),this.work=new U2.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function wq($){var q;if(!$||!$.state)return N2;if(q=$.state,$.total_in=$.total_out=q.total=0,$.msg="",q.wrap)$.adler=q.wrap&1;return q.mode=Mq,q.last=0,q.havedict=0,q.dmax=32768,q.head=null,q.hold=0,q.bits=0,q.lencode=q.lendyn=new U2.Buf32(nZ),q.distcode=q.distdyn=new U2.Buf32(dZ),q.sane=1,q.back=-1,g1}function Nq($){var q;if(!$||!$.state)return N2;return q=$.state,q.wsize=0,q.whave=0,q.wnext=0,wq($)}function Yq($,q){var Q,K;if(!$||!$.state)return N2;if(K=$.state,q<0)Q=0,q=-q;else if(Q=(q>>4)+1,q<48)q&=15;if(q&&(q<8||q>15))return N2;if(K.window!==null&&K.wbits!==q)K.window=null;return K.wrap=Q,K.wbits=q,Nq($)}function kq($,q){var Q,K;if(!$)return N2;if(K=new iZ,$.state=K,K.window=null,Q=Yq($,q),Q!==g1)$.state=null;return Q}function oZ($){return kq($,pZ)}var Wq=!0,c4,b4;function aZ($){if(Wq){var q;c4=new U2.Buf32(512),b4=new U2.Buf32(32),q=0;while(q<144)$.lens[q++]=8;while(q<256)$.lens[q++]=9;while(q<280)$.lens[q++]=7;while(q<288)$.lens[q++]=8;q8(Bq,$.lens,0,288,c4,0,$.work,{bits:9}),q=0;while(q<32)$.lens[q++]=5;q8(zq,$.lens,0,32,b4,0,$.work,{bits:5}),Wq=!1}$.lencode=c4,$.lenbits=9,$.distcode=b4,$.distbits=5}function Dq($,q,Q,K){var J,Z=$.state;if(Z.window===null)Z.wsize=1<=Z.wsize)U2.arraySet(Z.window,q,Q-Z.wsize,Z.wsize,0),Z.wnext=0,Z.whave=Z.wsize;else{if(J=Z.wsize-Z.wnext,J>K)J=K;if(U2.arraySet(Z.window,q,Q-K,J,Z.wnext),K-=J,K)U2.arraySet(Z.window,q,Q-K,K,0),Z.wnext=K,Z.whave=Z.wsize;else{if(Z.wnext+=J,Z.wnext===Z.wsize)Z.wnext=0;if(Z.whave>>8&255,Q.check=T2(Q.check,_,2,0),V=0,U=0,Q.mode=bQ;break}if(Q.flags=0,Q.head)Q.head.done=!1;if(!(Q.wrap&1)||(((V&255)<<8)+(V>>8))%31){$.msg="incorrect header check",Q.mode=x0;break}if((V&15)!==cQ){$.msg="unknown compression method",Q.mode=x0;break}if(V>>>=4,U-=4,n=(V&15)+8,Q.wbits===0)Q.wbits=n;else if(n>Q.wbits){$.msg="invalid window size",Q.mode=x0;break}Q.dmax=1<>8&1;if(Q.flags&512)_[0]=V&255,_[1]=V>>>8&255,Q.check=T2(Q.check,_,2,0);V=0,U=0,Q.mode=nQ;case nQ:while(U<32){if(W===0)break $;W--,V+=K[Z++]<>>8&255,_[2]=V>>>16&255,_[3]=V>>>24&255,Q.check=T2(Q.check,_,4,0);V=0,U=0,Q.mode=dQ;case dQ:while(U<16){if(W===0)break $;W--,V+=K[Z++]<>8;if(Q.flags&512)_[0]=V&255,_[1]=V>>>8&255,Q.check=T2(Q.check,_,2,0);V=0,U=0,Q.mode=mQ;case mQ:if(Q.flags&1024){while(U<16){if(W===0)break $;W--,V+=K[Z++]<>>8&255,Q.check=T2(Q.check,_,2,0);V=0,U=0}else if(Q.head)Q.head.extra=null;Q.mode=pQ;case pQ:if(Q.flags&1024){if(M=Q.length,M>W)M=W;if(M){if(Q.head){if(n=Q.head.extra_len-Q.length,!Q.head.extra)Q.head.extra=Array(Q.head.extra_len);U2.arraySet(Q.head.extra,K,Z,M,n)}if(Q.flags&512)Q.check=T2(Q.check,K,M,Z);W-=M,Z+=M,Q.length-=M}if(Q.length)break $}Q.length=0,Q.mode=iQ;case iQ:if(Q.flags&2048){if(W===0)break $;M=0;do if(n=K[Z+M++],Q.head&&n&&Q.length<65536)Q.head.name+=String.fromCharCode(n);while(n&&M>9&1,Q.head.done=!0;$.adler=Q.check=0,Q.mode=p2;break;case lQ:while(U<32){if(W===0)break $;W--,V+=K[Z++]<>>=U&7,U-=U&7,Q.mode=_4;break}while(U<3){if(W===0)break $;W--,V+=K[Z++]<>>=1,U-=1,V&3){case 0:Q.mode=rQ;break;case 1:if(aZ(Q),Q.mode=l8,q===a8){V>>>=2,U-=2;break $}break;case 2:Q.mode=tQ;break;case 3:$.msg="invalid block type",Q.mode=x0}V>>>=2,U-=2;break;case rQ:V>>>=U&7,U-=U&7;while(U<32){if(W===0)break $;W--,V+=K[Z++]<>>16^65535)){$.msg="invalid stored block lengths",Q.mode=x0;break}if(Q.length=V&65535,V=0,U=0,Q.mode=E4,q===a8)break $;case E4:Q.mode=sQ;case sQ:if(M=Q.length,M){if(M>W)M=W;if(M>B)M=B;if(M===0)break $;U2.arraySet(J,K,Z,M,G),W-=M,Z+=M,B-=M,G+=M,Q.length-=M;break}Q.mode=p2;break;case tQ:while(U<14){if(W===0)break $;W--,V+=K[Z++]<>>=5,U-=5,Q.ndist=(V&31)+1,V>>>=5,U-=5,Q.ncode=(V&15)+4,V>>>=4,U-=4,Q.nlen>286||Q.ndist>30){$.msg="too many length or distance symbols",Q.mode=x0;break}Q.have=0,Q.mode=eQ;case eQ:while(Q.have>>=3,U-=3}while(Q.have<19)Q.lens[g[Q.have++]]=0;if(Q.lencode=Q.lendyn,Q.lenbits=7,X={bits:Q.lenbits},d=q8(uZ,Q.lens,0,19,Q.lencode,0,Q.work,X),Q.lenbits=X.bits,d){$.msg="invalid code lengths set",Q.mode=x0;break}Q.have=0,Q.mode=$q;case $q:while(Q.have>>24,z=L>>>16&255,N=L&65535,D<=U)break;if(W===0)break $;W--,V+=K[Z++]<>>=D,U-=D,Q.lens[Q.have++]=N;else{if(N===16){P=D+2;while(U>>=D,U-=D,Q.have===0){$.msg="invalid bit length repeat",Q.mode=x0;break}n=Q.lens[Q.have-1],M=3+(V&3),V>>>=2,U-=2}else if(N===17){P=D+3;while(U>>=D,U-=D,n=0,M=3+(V&7),V>>>=3,U-=3}else{P=D+7;while(U>>=D,U-=D,n=0,M=11+(V&127),V>>>=7,U-=7}if(Q.have+M>Q.nlen+Q.ndist){$.msg="invalid bit length repeat",Q.mode=x0;break}while(M--)Q.lens[Q.have++]=n}}if(Q.mode===x0)break;if(Q.lens[256]===0){$.msg="invalid code -- missing end-of-block",Q.mode=x0;break}if(Q.lenbits=9,X={bits:Q.lenbits},d=q8(Bq,Q.lens,0,Q.nlen,Q.lencode,0,Q.work,X),Q.lenbits=X.bits,d){$.msg="invalid literal/lengths set",Q.mode=x0;break}if(Q.distbits=6,Q.distcode=Q.distdyn,X={bits:Q.distbits},d=q8(zq,Q.lens,Q.nlen,Q.ndist,Q.distcode,0,Q.work,X),Q.distbits=X.bits,d){$.msg="invalid distances set",Q.mode=x0;break}if(Q.mode=l8,q===a8)break $;case l8:Q.mode=r8;case r8:if(W>=6&&B>=258){if($.next_out=G,$.avail_out=B,$.next_in=Z,$.avail_in=W,Q.hold=V,Q.bits=U,TZ($,F),G=$.next_out,J=$.output,B=$.avail_out,Z=$.next_in,K=$.input,W=$.avail_in,V=Q.hold,U=Q.bits,Q.mode===p2)Q.back=-1;break}Q.back=0;for(;;){if(L=Q.lencode[V&(1<>>24,z=L>>>16&255,N=L&65535,D<=U)break;if(W===0)break $;W--,V+=K[Z++]<>H)],D=L>>>24,z=L>>>16&255,N=L&65535,H+D<=U)break;if(W===0)break $;W--,V+=K[Z++]<>>=H,U-=H,Q.back+=H}if(V>>>=D,U-=D,Q.back+=D,Q.length=N,z===0){Q.mode=Vq;break}if(z&32){Q.back=-1,Q.mode=p2;break}if(z&64){$.msg="invalid literal/length code",Q.mode=x0;break}Q.extra=z&15,Q.mode=Qq;case Qq:if(Q.extra){P=Q.extra;while(U>>=Q.extra,U-=Q.extra,Q.back+=Q.extra}Q.was=Q.length,Q.mode=qq;case qq:for(;;){if(L=Q.distcode[V&(1<>>24,z=L>>>16&255,N=L&65535,D<=U)break;if(W===0)break $;W--,V+=K[Z++]<>H)],D=L>>>24,z=L>>>16&255,N=L&65535,H+D<=U)break;if(W===0)break $;W--,V+=K[Z++]<>>=H,U-=H,Q.back+=H}if(V>>>=D,U-=D,Q.back+=D,z&64){$.msg="invalid distance code",Q.mode=x0;break}Q.offset=N,Q.extra=z&15,Q.mode=Kq;case Kq:if(Q.extra){P=Q.extra;while(U>>=Q.extra,U-=Q.extra,Q.back+=Q.extra}if(Q.offset>Q.dmax){$.msg="invalid distance too far back",Q.mode=x0;break}Q.mode=Jq;case Jq:if(B===0)break $;if(M=F-B,Q.offset>M){if(M=Q.offset-M,M>Q.whave){if(Q.sane){$.msg="invalid distance too far back",Q.mode=x0;break}}if(M>Q.wnext)M-=Q.wnext,k=Q.wsize-M;else k=Q.wnext-M;if(M>Q.length)M=Q.length;f=Q.window}else f=J,k=G-Q.offset,M=Q.length;if(M>B)M=B;B-=M,Q.length-=M;do J[G++]=f[k++];while(--M);if(Q.length===0)Q.mode=r8;break;case Vq:if(B===0)break $;J[G++]=Q.length,B--,Q.mode=r8;break;case _4:if(Q.wrap){while(U<32){if(W===0)break $;W--,V|=K[Z++]<{Hq.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var fq=N0((iz,vq)=>{function eZ(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}vq.exports=eZ});var Iq=N0((J8)=>{var B6=Lq(),K8=d2(),t8=y4(),E0=p4(),i4=_8(),$G=h4(),QG=fq(),Rq=Object.prototype.toString;function A1($){if(!(this instanceof A1))return new A1($);this.options=K8.assign({chunkSize:16384,windowBits:0,to:""},$||{});var q=this.options;if(q.raw&&q.windowBits>=0&&q.windowBits<16){if(q.windowBits=-q.windowBits,q.windowBits===0)q.windowBits=-15}if(q.windowBits>=0&&q.windowBits<16&&!($&&$.windowBits))q.windowBits+=32;if(q.windowBits>15&&q.windowBits<48){if((q.windowBits&15)===0)q.windowBits|=15}this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new $G,this.strm.avail_out=0;var Q=B6.inflateInit2(this.strm,q.windowBits);if(Q!==E0.Z_OK)throw Error(i4[Q]);if(this.header=new QG,B6.inflateGetHeader(this.strm,this.header),q.dictionary){if(typeof q.dictionary==="string")q.dictionary=t8.string2buf(q.dictionary);else if(Rq.call(q.dictionary)==="[object ArrayBuffer]")q.dictionary=new Uint8Array(q.dictionary);if(q.raw){if(Q=B6.inflateSetDictionary(this.strm,q.dictionary),Q!==E0.Z_OK)throw Error(i4[Q])}}}A1.prototype.push=function($,q){var Q=this.strm,K=this.options.chunkSize,J=this.options.dictionary,Z,G,W,B,V,U=!1;if(this.ended)return!1;if(G=q===~~q?q:q===!0?E0.Z_FINISH:E0.Z_NO_FLUSH,typeof $==="string")Q.input=t8.binstring2buf($);else if(Rq.call($)==="[object ArrayBuffer]")Q.input=new Uint8Array($);else Q.input=$;Q.next_in=0,Q.avail_in=Q.input.length;do{if(Q.avail_out===0)Q.output=new K8.Buf8(K),Q.next_out=0,Q.avail_out=K;if(Z=B6.inflate(Q,E0.Z_NO_FLUSH),Z===E0.Z_NEED_DICT&&J)Z=B6.inflateSetDictionary(this.strm,J);if(Z===E0.Z_BUF_ERROR&&U===!0)Z=E0.Z_OK,U=!1;if(Z!==E0.Z_STREAM_END&&Z!==E0.Z_OK)return this.onEnd(Z),this.ended=!0,!1;if(Q.next_out){if(Q.avail_out===0||Z===E0.Z_STREAM_END||Q.avail_in===0&&(G===E0.Z_FINISH||G===E0.Z_SYNC_FLUSH))if(this.options.to==="string"){if(W=t8.utf8border(Q.output,Q.next_out),B=Q.next_out-W,V=t8.buf2string(Q.output,W),Q.next_out=B,Q.avail_out=K-B,B)K8.arraySet(Q.output,Q.output,W,B,0);this.onData(V)}else this.onData(K8.shrinkBuf(Q.output,Q.next_out))}if(Q.avail_in===0&&Q.avail_out===0)U=!0}while((Q.avail_in>0||Q.avail_out===0)&&Z!==E0.Z_STREAM_END);if(Z===E0.Z_STREAM_END)G=E0.Z_FINISH;if(G===E0.Z_FINISH)return Z=B6.inflateEnd(this.strm),this.onEnd(Z),this.ended=!0,Z===E0.Z_OK;if(G===E0.Z_SYNC_FLUSH)return this.onEnd(E0.Z_OK),Q.avail_out=0,!0;return!0};A1.prototype.onData=function($){this.chunks.push($)};A1.prototype.onEnd=function($){if($===E0.Z_OK)if(this.options.to==="string")this.result=this.chunks.join("");else this.result=K8.flattenChunks(this.chunks);this.chunks=[],this.err=$,this.msg=this.strm.msg};function o4($,q){var Q=new A1(q);if(Q.push($,!0),Q.err)throw Q.msg||i4[Q.err];return Q.result}function qG($,q){return q=q||{},q.raw=!0,o4($,q)}J8.Inflate=A1;J8.inflate=o4;J8.inflateRaw=qG;J8.ungzip=o4});var gq=N0((az,jq)=>{var KG=d2().assign,JG=XQ(),VG=Iq(),UG=p4(),Cq={};KG(Cq,JG,VG,UG);jq.exports=Cq});var Xq=N0(($5)=>{var ZG=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",GG=gq(),Aq=T0(),e8=V2(),WG=ZG?"uint8array":"array";$5.magic="\b\x00";function X1($,q){e8.call(this,"FlateWorker/"+$),this._pako=null,this._pakoAction=$,this._pakoOptions=q,this.meta={}}Aq.inherits(X1,e8);X1.prototype.processChunk=function($){if(this.meta=$.meta,this._pako===null)this._createPako();this._pako.push(Aq.transformTo(WG,$.data),!1)};X1.prototype.flush=function(){if(e8.prototype.flush.call(this),this._pako===null)this._createPako();this._pako.push([],!0)};X1.prototype.cleanUp=function(){e8.prototype.cleanUp.call(this),this._pako=null};X1.prototype._createPako=function(){this._pako=new GG[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var $=this;this._pako.onData=function(q){$.push({data:q,meta:$.meta})}};$5.compressWorker=function($){return new X1("Deflate",$)};$5.uncompressWorker=function(){return new X1("Inflate",{})}});var l4=N0((a4)=>{var yq=V2();a4.STORE={magic:"\x00\x00",compressWorker:function(){return new yq("STORE compression")},uncompressWorker:function(){return new yq("STORE decompression")}};a4.DEFLATE=Xq()});var r4=N0((y1)=>{y1.LOCAL_FILE_HEADER="PK\x03\x04";y1.CENTRAL_FILE_HEADER="PK\x01\x02";y1.CENTRAL_DIRECTORY_END="PK\x05\x06";y1.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x06\x07";y1.ZIP64_CENTRAL_DIRECTORY_END="PK\x06\x06";y1.DATA_DESCRIPTOR="PK\x07\b"});var Pq=N0((tz,Oq)=>{var z6=T0(),F6=V2(),s4=e1(),hq=T8(),Q5=r4(),A0=function($,q){var Q="",K;for(K=0;K>>8;return Q},BG=function($,q){var Q=$;if(!$)Q=q?16893:33204;return(Q&65535)<<16},zG=function($){return($||0)&63},xq=function($,q,Q,K,J,Z){var{file:G,compression:W}=$,B=Z!==s4.utf8encode,V=z6.transformTo("string",Z(G.name)),U=z6.transformTo("string",s4.utf8encode(G.name)),w=G.comment,F=z6.transformTo("string",Z(w)),M=z6.transformTo("string",s4.utf8encode(w)),k=U.length!==G.name.length,f=M.length!==w.length,L,D,z="",N="",H="",v=G.dir,j=G.date,n={crc32:0,compressedSize:0,uncompressedSize:0};if(!q||Q)n.crc32=$.crc32,n.compressedSize=$.compressedSize,n.uncompressedSize=$.uncompressedSize;var d=0;if(q)d|=8;if(!B&&(k||f))d|=2048;var _=0,X=0;if(v)_|=16;if(J==="UNIX")X=798,_|=BG(G.unixPermissions,v);else X=20,_|=zG(G.dosPermissions,v);if(L=j.getUTCHours(),L=L<<6,L=L|j.getUTCMinutes(),L=L<<5,L=L|j.getUTCSeconds()/2,D=j.getUTCFullYear()-1980,D=D<<4,D=D|j.getUTCMonth()+1,D=D<<5,D=D|j.getUTCDate(),k)N=A0(1,1)+A0(hq(V),4)+U,z+="up"+A0(N.length,2)+N;if(f)H=A0(1,1)+A0(hq(F),4)+M,z+="uc"+A0(H.length,2)+H;var P="";P+=` +\x00`,P+=A0(d,2),P+=W.magic,P+=A0(L,2),P+=A0(D,2),P+=A0(n.crc32,4),P+=A0(n.compressedSize,4),P+=A0(n.uncompressedSize,4),P+=A0(V.length,2),P+=A0(z.length,2);var g=Q5.LOCAL_FILE_HEADER+P+V+z,c=Q5.CENTRAL_FILE_HEADER+A0(X,2)+P+A0(F.length,2)+"\x00\x00\x00\x00"+A0(_,4)+A0(K,4)+V+z+F;return{fileRecord:g,dirRecord:c}},FG=function($,q,Q,K,J){var Z="",G=z6.transformTo("string",J(K));return Z=Q5.CENTRAL_DIRECTORY_END+"\x00\x00\x00\x00"+A0($,2)+A0($,2)+A0(q,4)+A0(Q,4)+A0(G.length,2)+G,Z},MG=function($){var q="";return q=Q5.DATA_DESCRIPTOR+A0($.crc32,4)+A0($.compressedSize,4)+A0($.uncompressedSize,4),q};function v2($,q,Q,K){F6.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=q,this.zipPlatform=Q,this.encodeFileName=K,this.streamFiles=$,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}z6.inherits(v2,F6);v2.prototype.push=function($){var q=$.meta.percent||0,Q=this.entriesCount,K=this._sources.length;if(this.accumulate)this.contentBuffer.push($);else this.bytesWritten+=$.data.length,F6.prototype.push.call(this,{data:$.data,meta:{currentFile:this.currentFile,percent:Q?(q+100*(Q-K-1))/Q:100}})};v2.prototype.openedSource=function($){this.currentSourceOffset=this.bytesWritten,this.currentFile=$.file.name;var q=this.streamFiles&&!$.file.dir;if(q){var Q=xq($,q,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:Q.fileRecord,meta:{percent:0}})}else this.accumulate=!0};v2.prototype.closedSource=function($){this.accumulate=!1;var q=this.streamFiles&&!$.file.dir,Q=xq($,q,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(Q.dirRecord),q)this.push({data:MG($),meta:{percent:100}});else{this.push({data:Q.fileRecord,meta:{percent:0}});while(this.contentBuffer.length)this.push(this.contentBuffer.shift())}this.currentFile=null};v2.prototype.flush=function(){var $=this.bytesWritten;for(var q=0;q{var wG=l4(),NG=Pq(),YG=function($,q){var Q=$||q,K=wG[Q];if(!K)throw Error(Q+" is not a valid compression method !");return K};Tq.generateWorker=function($,q,Q){var K=new NG(q.streamFiles,Q,q.platform,q.encodeFileName),J=0;try{$.forEach(function(Z,G){J++;var W=YG(G.options.compression,q.compression),B=G.options.compressionOptions||q.compressionOptions||{},V=G.dir,U=G.date;G._compressWorker(W,B).withStreamInfo("file",{name:Z,dir:V,date:U,comment:G.comment||"",unixPermissions:G.unixPermissions,dosPermissions:G.dosPermissions}).pipe(K)}),K.entriesCount=J}catch(Z){K.error(Z)}return K}});var Eq=N0(($F,Sq)=>{var kG=T0(),q5=V2();function V8($,q){q5.call(this,"Nodejs stream input adapter for "+$),this._upstreamEnded=!1,this._bindStream(q)}kG.inherits(V8,q5);V8.prototype._bindStream=function($){var q=this;this._stream=$,$.pause(),$.on("data",function(Q){q.push({data:Q,meta:{percent:0}})}).on("error",function(Q){if(q.isPaused)this.generatedError=Q;else q.error(Q)}).on("end",function(){if(q.isPaused)q._upstreamEnded=!0;else q.end()})};V8.prototype.pause=function(){if(!q5.prototype.pause.call(this))return!1;return this._stream.pause(),!0};V8.prototype.resume=function(){if(!q5.prototype.resume.call(this))return!1;if(this._upstreamEnded)this.end();else this._stream.resume();return!0};Sq.exports=V8});var aq=N0((QF,oq)=>{var DG=e1(),U8=T0(),nq=V2(),LG=q4(),dq=K4(),_q=u8(),HG=c$(),vG=uq(),cq=T6(),fG=Eq(),mq=function($,q,Q){var K=U8.getTypeOf(q),J,Z=U8.extend(Q||{},dq);if(Z.date=Z.date||new Date,Z.compression!==null)Z.compression=Z.compression.toUpperCase();if(typeof Z.unixPermissions==="string")Z.unixPermissions=parseInt(Z.unixPermissions,8);if(Z.unixPermissions&&Z.unixPermissions&16384)Z.dir=!0;if(Z.dosPermissions&&Z.dosPermissions&16)Z.dir=!0;if(Z.dir)$=pq($);if(Z.createFolders&&(J=RG($)))iq.call(this,J,!0);var G=K==="string"&&Z.binary===!1&&Z.base64===!1;if(!Q||typeof Q.binary>"u")Z.binary=!G;var W=q instanceof _q&&q.uncompressedSize===0;if(W||Z.dir||!q||q.length===0)Z.base64=!1,Z.binary=!0,q="",Z.compression="STORE",K="string";var B=null;if(q instanceof _q||q instanceof nq)B=q;else if(cq.isNode&&cq.isStream(q))B=new fG($,q);else B=U8.prepareContent($,q,Z.binary,Z.optimizedBinaryString,Z.base64);var V=new HG($,B,Z);this.files[$]=V},RG=function($){if($.slice(-1)==="/")$=$.substring(0,$.length-1);var q=$.lastIndexOf("/");return q>0?$.substring(0,q):""},pq=function($){if($.slice(-1)!=="/")$+="/";return $},iq=function($,q){if(q=typeof q<"u"?q:dq.createFolders,$=pq($),!this.files[$])mq.call(this,$,null,{dir:!0,createFolders:q});return this.files[$]};function bq($){return Object.prototype.toString.call($)==="[object RegExp]"}var IG={load:function(){throw Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function($){var q,Q,K;for(q in this.files)if(K=this.files[q],Q=q.slice(this.root.length,q.length),Q&&q.slice(0,this.root.length)===this.root)$(Q,K)},filter:function($){var q=[];return this.forEach(function(Q,K){if($(Q,K))q.push(K)}),q},file:function($,q,Q){if(arguments.length===1)if(bq($)){var K=$;return this.filter(function(Z,G){return!G.dir&&K.test(Z)})}else{var J=this.files[this.root+$];if(J&&!J.dir)return J;else return null}else $=this.root+$,mq.call(this,$,q,Q);return this},folder:function($){if(!$)return this;if(bq($))return this.filter(function(J,Z){return Z.dir&&$.test(J)});var q=this.root+$,Q=iq.call(this,q),K=this.clone();return K.root=Q.name,K},remove:function($){$=this.root+$;var q=this.files[$];if(!q){if($.slice(-1)!=="/")$+="/";q=this.files[$]}if(q&&!q.dir)delete this.files[$];else{var Q=this.filter(function(J,Z){return Z.name.slice(0,$.length)===$});for(var K=0;K{var CG=T0();function lq($){this.data=$,this.length=$.length,this.index=0,this.zero=0}lq.prototype={checkOffset:function($){this.checkIndex(this.index+$)},checkIndex:function($){if(this.length=this.index;Q--)q=(q<<8)+this.byteAt(Q);return this.index+=$,q},readString:function($){return CG.transformTo("string",this.readData($))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var $=this.readInt(4);return new Date(Date.UTC(($>>25&127)+1980,($>>21&15)-1,$>>16&31,$>>11&31,$>>5&63,($&31)<<1))}};rq.exports=lq});var e4=N0((KF,tq)=>{var sq=t4(),jG=T0();function M6($){sq.call(this,$);for(var q=0;q=0;--Z)if(this.data[Z]===q&&this.data[Z+1]===Q&&this.data[Z+2]===K&&this.data[Z+3]===J)return Z-this.zero;return-1};M6.prototype.readAndCheckSignature=function($){var q=$.charCodeAt(0),Q=$.charCodeAt(1),K=$.charCodeAt(2),J=$.charCodeAt(3),Z=this.readData(4);return q===Z[0]&&Q===Z[1]&&K===Z[2]&&J===Z[3]};M6.prototype.readData=function($){if(this.checkOffset($),$===0)return[];var q=this.data.slice(this.zero+this.index,this.zero+this.index+$);return this.index+=$,q};tq.exports=M6});var QK=N0((JF,$K)=>{var eq=t4(),gG=T0();function w6($){eq.call(this,$)}gG.inherits(w6,eq);w6.prototype.byteAt=function($){return this.data.charCodeAt(this.zero+$)};w6.prototype.lastIndexOfSignature=function($){return this.data.lastIndexOf($)-this.zero};w6.prototype.readAndCheckSignature=function($){var q=this.readData(4);return $===q};w6.prototype.readData=function($){this.checkOffset($);var q=this.data.slice(this.zero+this.index,this.zero+this.index+$);return this.index+=$,q};$K.exports=w6});var Q7=N0((VF,KK)=>{var qK=e4(),AG=T0();function $7($){qK.call(this,$)}AG.inherits($7,qK);$7.prototype.readData=function($){if(this.checkOffset($),$===0)return new Uint8Array(0);var q=this.data.subarray(this.zero+this.index,this.zero+this.index+$);return this.index+=$,q};KK.exports=$7});var UK=N0((UF,VK)=>{var JK=Q7(),XG=T0();function q7($){JK.call(this,$)}XG.inherits(q7,JK);q7.prototype.readData=function($){this.checkOffset($);var q=this.data.slice(this.zero+this.index,this.zero+this.index+$);return this.index+=$,q};VK.exports=q7});var K7=N0((ZF,GK)=>{var K5=T0(),ZK=n2(),yG=e4(),hG=QK(),xG=UK(),OG=Q7();GK.exports=function($){var q=K5.getTypeOf($);if(K5.checkSupport(q),q==="string"&&!ZK.uint8array)return new hG($);if(q==="nodebuffer")return new xG($);if(ZK.uint8array)return new OG(K5.transformTo("uint8array",$));return new yG(K5.transformTo("array",$))}});var FK=N0((GF,zK)=>{var J7=K7(),G1=T0(),PG=u8(),WK=T8(),J5=e1(),V5=l4(),TG=n2(),uG=0,SG=3,EG=function($){for(var q in V5){if(!Object.prototype.hasOwnProperty.call(V5,q))continue;if(V5[q].magic===$)return V5[q]}return null};function BK($,q){this.options=$,this.loadOptions=q}BK.prototype={isEncrypted:function(){return(this.bitFlag&1)===1},useUTF8:function(){return(this.bitFlag&2048)===2048},readLocalPart:function($){var q,Q;if($.skip(22),this.fileNameLength=$.readInt(2),Q=$.readInt(2),this.fileName=$.readData(this.fileNameLength),$.skip(Q),this.compressedSize===-1||this.uncompressedSize===-1)throw Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(q=EG(this.compressionMethod),q===null)throw Error("Corrupted zip : compression "+G1.pretty(this.compressionMethod)+" unknown (inner file : "+G1.transformTo("string",this.fileName)+")");this.decompressed=new PG(this.compressedSize,this.uncompressedSize,this.crc32,q,$.readData(this.compressedSize))},readCentralPart:function($){this.versionMadeBy=$.readInt(2),$.skip(2),this.bitFlag=$.readInt(2),this.compressionMethod=$.readString(2),this.date=$.readDate(),this.crc32=$.readInt(4),this.compressedSize=$.readInt(4),this.uncompressedSize=$.readInt(4);var q=$.readInt(2);if(this.extraFieldsLength=$.readInt(2),this.fileCommentLength=$.readInt(2),this.diskNumberStart=$.readInt(2),this.internalFileAttributes=$.readInt(2),this.externalFileAttributes=$.readInt(4),this.localHeaderOffset=$.readInt(4),this.isEncrypted())throw Error("Encrypted zip are not supported");$.skip(q),this.readExtraFields($),this.parseZIP64ExtraField($),this.fileComment=$.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var $=this.versionMadeBy>>8;if(this.dir=this.externalFileAttributes&16?!0:!1,$===uG)this.dosPermissions=this.externalFileAttributes&63;if($===SG)this.unixPermissions=this.externalFileAttributes>>16&65535;if(!this.dir&&this.fileNameStr.slice(-1)==="/")this.dir=!0},parseZIP64ExtraField:function(){if(!this.extraFields[1])return;var $=J7(this.extraFields[1].value);if(this.uncompressedSize===G1.MAX_VALUE_32BITS)this.uncompressedSize=$.readInt(8);if(this.compressedSize===G1.MAX_VALUE_32BITS)this.compressedSize=$.readInt(8);if(this.localHeaderOffset===G1.MAX_VALUE_32BITS)this.localHeaderOffset=$.readInt(8);if(this.diskNumberStart===G1.MAX_VALUE_32BITS)this.diskNumberStart=$.readInt(4)},readExtraFields:function($){var q=$.index+this.extraFieldsLength,Q,K,J;if(!this.extraFields)this.extraFields={};while($.index+4{var _G=K7(),i2=T0(),f2=r4(),cG=FK(),bG=n2();function MK($){this.files=[],this.loadOptions=$}MK.prototype={checkSignature:function($){if(!this.reader.readAndCheckSignature($)){this.reader.index-=4;var q=this.reader.readString(4);throw Error("Corrupted zip or bug: unexpected signature ("+i2.pretty(q)+", expected "+i2.pretty($)+")")}},isSignature:function($,q){var Q=this.reader.index;this.reader.setIndex($);var K=this.reader.readString(4),J=K===q;return this.reader.setIndex(Q),J},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var $=this.reader.readData(this.zipCommentLength),q=bG.uint8array?"uint8array":"array",Q=i2.transformTo(q,$);this.zipComment=this.loadOptions.decodeFileName(Q)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};var $=this.zip64EndOfCentralSize-44,q=0,Q,K,J;while(q<$)Q=this.reader.readInt(2),K=this.reader.readInt(4),J=this.reader.readData(K),this.zip64ExtensibleData[Q]={id:Q,length:K,value:J}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var $,q;for($=0;$0)if(this.isSignature(Q,f2.CENTRAL_FILE_HEADER));else this.reader.zero=J;else if(J<0)throw Error("Corrupted zip: missing "+Math.abs(J)+" bytes.")},prepareReader:function($){this.reader=_G($)},load:function($){this.prepareReader($),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}};wK.exports=MK});var DK=N0((BF,kK)=>{var V7=T0(),U5=r1(),nG=e1(),dG=NK(),mG=U4(),YK=T6();function pG($){return new U5.Promise(function(q,Q){var K=$.decompressed.getContentWorker().pipe(new mG);K.on("error",function(J){Q(J)}).on("end",function(){if(K.streamInfo.crc32!==$.decompressed.crc32)Q(Error("Corrupted zip : CRC32 mismatch"));else q()}).resume()})}kK.exports=function($,q){var Q=this;if(q=V7.extend(q||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:nG.utf8decode}),YK.isNode&&YK.isStream($))return U5.Promise.reject(Error("JSZip can't accept a stream when loading a zip file."));return V7.prepareContent("the loaded zip file",$,!0,q.optimizedBinaryString,q.base64).then(function(K){var J=new dG(q);return J.load(K),J}).then(function(J){var Z=[U5.Promise.resolve(J)],G=J.files;if(q.checkCRC32)for(var W=0;W{function Y2(){if(!(this instanceof Y2))return new Y2;if(arguments.length)throw Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var $=new Y2;for(var q in this)if(typeof this[q]!=="function")$[q]=this[q];return $}}Y2.prototype=aq();Y2.prototype.loadAsync=DK();Y2.support=n2();Y2.defaults=K4();Y2.version="3.10.1";Y2.loadAsync=function($,q){return new Y2().loadAsync($,q)};Y2.external=r1();LK.exports=Y2});var Z8={};c1(Z8,{types:()=>QW,promisify:()=>jK,log:()=>RK,isUndefined:()=>N6,isSymbol:()=>KW,isString:()=>F5,isRegExp:()=>Z5,isPrimitive:()=>JW,isObject:()=>Y6,isNumber:()=>fK,isNullOrUndefined:()=>qW,isNull:()=>z5,isFunction:()=>W5,isError:()=>G5,isDate:()=>W7,isBuffer:()=>VW,isBoolean:()=>z7,isArray:()=>vK,inspect:()=>h1,inherits:()=>IK,format:()=>B7,deprecate:()=>oG,default:()=>GW,debuglog:()=>aG,callbackifyOnRejected:()=>w7,callbackify:()=>gK,_extend:()=>M7,TextEncoder:()=>AK,TextDecoder:()=>XK});function B7($,...q){if(!F5($)){var Q=[$];for(var K=0;K=J)return W;switch(W){case"%s":return String(q[K++]);case"%d":return Number(q[K++]);case"%j":try{return JSON.stringify(q[K++])}catch(B){return"[Circular]"}default:return W}});for(var G=q[K];K"u"||process?.noDeprecation===!0)return $;var Q=!1;function K(...J){if(!Q){if(process.throwDeprecation)throw Error(q);else if(process.traceDeprecation)console.trace(q);else console.error(q);Q=!0}return $.apply(this,...J)}return K}function lG($,q){var Q=h1.styles[q];if(Q)return"\x1B["+h1.colors[Q][0]+"m"+$+"\x1B["+h1.colors[Q][1]+"m";else return $}function rG($,q){return $}function sG($){var q={};return $.forEach(function(Q,K){q[Q]=!0}),q}function B5($,q,Q){if($.customInspect&&q&&W5(q.inspect)&&q.inspect!==h1&&!(q.constructor&&q.constructor.prototype===q)){var K=q.inspect(Q,$);if(!F5(K))K=B5($,K,Q);return K}var J=tG($,q);if(J)return J;var Z=Object.keys(q),G=sG(Z);if($.showHidden)Z=Object.getOwnPropertyNames(q);if(G5(q)&&(Z.indexOf("message")>=0||Z.indexOf("description")>=0))return U7(q);if(Z.length===0){if(W5(q)){var W=q.name?": "+q.name:"";return $.stylize("[Function"+W+"]","special")}if(Z5(q))return $.stylize(RegExp.prototype.toString.call(q),"regexp");if(W7(q))return $.stylize(Date.prototype.toString.call(q),"date");if(G5(q))return U7(q)}var B="",V=!1,U=["{","}"];if(vK(q))V=!0,U=["[","]"];if(W5(q)){var w=q.name?": "+q.name:"";B=" [Function"+w+"]"}if(Z5(q))B=" "+RegExp.prototype.toString.call(q);if(W7(q))B=" "+Date.prototype.toUTCString.call(q);if(G5(q))B=" "+U7(q);if(Z.length===0&&(!V||q.length==0))return U[0]+B+U[1];if(Q<0)if(Z5(q))return $.stylize(RegExp.prototype.toString.call(q),"regexp");else return $.stylize("[Object]","special");$.seen.push(q);var F;if(V)F=eG($,q,Q,G,Z);else F=Z.map(function(M){return G7($,q,Q,G,M,V)});return $.seen.pop(),$W(F,B,U)}function tG($,q){if(N6(q))return $.stylize("undefined","undefined");if(F5(q)){var Q="'"+JSON.stringify(q).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return $.stylize(Q,"string")}if(fK(q))return $.stylize(""+q,"number");if(z7(q))return $.stylize(""+q,"boolean");if(z5(q))return $.stylize("null","null")}function U7($){return"["+Error.prototype.toString.call($)+"]"}function eG($,q,Q,K,J){var Z=[];for(var G=0,W=q.length;G-1)if(Z)W=W.split(` +`).map(function(V){return" "+V}).join(` +`).slice(2);else W=` +`+W.split(` +`).map(function(V){return" "+V}).join(` +`)}else W=$.stylize("[Circular]","special");if(N6(G)){if(Z&&J.match(/^\d+$/))return W;if(G=JSON.stringify(""+J),G.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/))G=G.slice(1,-1),G=$.stylize(G,"name");else G=G.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),G=$.stylize(G,"string")}return G+": "+W}function $W($,q,Q){var K=0,J=$.reduce(function(Z,G){if(K++,G.indexOf(` +`)>=0)K++;return Z+G.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(J>60)return Q[0]+(q===""?"":q+` + `)+" "+$.join(`, + `)+" "+Q[1];return Q[0]+q+" "+$.join(", ")+" "+Q[1]}function vK($){return Array.isArray($)}function z7($){return typeof $==="boolean"}function z5($){return $===null}function qW($){return $==null}function fK($){return typeof $==="number"}function F5($){return typeof $==="string"}function KW($){return typeof $==="symbol"}function N6($){return $===void 0}function Z5($){return Y6($)&&F7($)==="[object RegExp]"}function Y6($){return typeof $==="object"&&$!==null}function W7($){return Y6($)&&F7($)==="[object Date]"}function G5($){return Y6($)&&(F7($)==="[object Error]"||$ instanceof Error)}function W5($){return typeof $==="function"}function JW($){return $===null||typeof $==="boolean"||typeof $==="number"||typeof $==="string"||typeof $==="symbol"||typeof $>"u"}function VW($){return $ instanceof Buffer}function F7($){return Object.prototype.toString.call($)}function Z7($){return $<10?"0"+$.toString(10):$.toString(10)}function ZW(){var $=new Date,q=[Z7($.getHours()),Z7($.getMinutes()),Z7($.getSeconds())].join(":");return[$.getDate(),UW[$.getMonth()],q].join(" ")}function RK(...$){console.log("%s - %s",ZW(),B7.apply(null,$))}function IK($,q){if(q)$.super_=q,$.prototype=Object.create(q.prototype,{constructor:{value:$,enumerable:!1,writable:!0,configurable:!0}})}function M7($,q){if(!q||!Y6(q))return $;var Q=Object.keys(q),K=Q.length;while(K--)$[Q[K]]=q[Q[K]];return $}function CK($,q){return Object.prototype.hasOwnProperty.call($,q)}function w7($,q){if(!$){var Q=Error("Promise was rejected with a falsy value");Q.reason=$,$=Q}return q($)}function gK($){if(typeof $!=="function")throw TypeError('The "original" argument must be of type Function');function q(...Q){var K=Q.pop();if(typeof K!=="function")throw TypeError("The last argument must be of type Function");var J=this,Z=function(...G){return K.apply(J,...G)};$.apply(this,Q).then(function(G){process.nextTick(Z.bind(null,null,G))},function(G){process.nextTick(w7.bind(null,G,Z))})}return Object.setPrototypeOf(q,Object.getPrototypeOf($)),Object.defineProperties(q,Object.getOwnPropertyDescriptors($)),q}var iG,aG,h1,QW=()=>{},UW,jK,AK,XK,GW;var G8=b1(()=>{iG=/%[sdj%]/g;aG=(($={},q={},Q)=>((Q=typeof process<"u"&&!1)&&(Q=Q.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase()),q=new RegExp("^"+Q+"$","i"),(K)=>{if(K=K.toUpperCase(),!$[K])if(q.test(K))$[K]=function(...J){console.error("%s: %s",K,pid,B7.apply(null,...J))};else $[K]=function(){};return $[K]}))(),h1=(($)=>($.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},$.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},$.custom=Symbol.for("nodejs.util.inspect.custom"),$))(function($,q,...Q){var K={seen:[],stylize:rG};if(Q.length>=1)K.depth=Q[0];if(Q.length>=2)K.colors=Q[1];if(z7(q))K.showHidden=q;else if(q)M7(K,q);if(N6(K.showHidden))K.showHidden=!1;if(N6(K.depth))K.depth=2;if(N6(K.colors))K.colors=!1;if(K.colors)K.stylize=lG;return B5(K,$,K.depth)});UW=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];jK=(($)=>($.custom=Symbol.for("nodejs.util.promisify.custom"),$))(function($){if(typeof $!=="function")throw TypeError('The "original" argument must be of type Function');if(kCustomPromisifiedSymbol&&$[kCustomPromisifiedSymbol]){var q=$[kCustomPromisifiedSymbol];if(typeof q!=="function")throw TypeError('The "nodejs.util.promisify.custom" argument must be of type Function');return Object.defineProperty(q,kCustomPromisifiedSymbol,{value:q,enumerable:!1,writable:!1,configurable:!0}),q}function q(...Q){var K,J,Z=new Promise(function(G,W){K=G,J=W});Q.push(function(G,W){if(G)J(G);else K(W)});try{$.apply(this,Q)}catch(G){J(G)}return Z}if(Object.setPrototypeOf(q,Object.getPrototypeOf($)),kCustomPromisifiedSymbol)Object.defineProperty(q,kCustomPromisifiedSymbol,{value:q,enumerable:!1,writable:!1,configurable:!0});return Object.defineProperties(q,Object.getOwnPropertyDescriptors($))});({TextEncoder:AK,TextDecoder:XK}=globalThis),GW={TextEncoder:AK,TextDecoder:XK,promisify:jK,log:RK,inherits:IK,_extend:M7,callbackifyOnRejected:w7,callbackify:gK}});var H7={};c1(H7,{resolveObject:()=>SK,resolve:()=>uK,parse:()=>D6,format:()=>TK,default:()=>DW,Url:()=>Z2,URLSearchParams:()=>OK,URL:()=>D7});function L7($){return typeof $==="string"}function PK($){return typeof $==="object"&&$!==null}function M5($){return $===null}function WW($){return $==null}function Z2(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function D6($,q,Q){if($&&PK($)&&$ instanceof Z2)return $;var K=new Z2;return K.parse($,q,Q),K}function TK($){if(L7($))$=D6($);if(!($ instanceof Z2))return Z2.prototype.format.call($);return $.format()}function uK($,q){return D6($,!1,!0).resolve(q)}function SK($,q){if(!$)return q;return D6($,!1,!0).resolveObject(q)}var D7,OK,BW,zW,FW,MW,wW,N7,yK,hK,NW=255,xK,YW,kW,Y7,k6,k7,DW;var v7=b1(()=>{({URL:D7,URLSearchParams:OK}=globalThis);BW=/^([a-z0-9.+-]+:)/i,zW=/:[0-9]*$/,FW=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,MW=["<",">",'"',"`"," ","\r",` +`,"\t"],wW=["{","}","|","\\","^","`"].concat(MW),N7=["'"].concat(wW),yK=["%","/","?",";","#"].concat(N7),hK=["/","?","#"],xK=/^[+a-z0-9A-Z_-]{0,63}$/,YW=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,kW={javascript:!0,"javascript:":!0},Y7={javascript:!0,"javascript:":!0},k6={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},k7={parse($){var q=decodeURIComponent;return($+"").replace(/\+/g," ").split("&").filter(Boolean).reduce(function(Q,K,J){var Z=K.split("="),G=q(Z[0]||""),W=q(Z[1]||""),B=Q[G];return Q[G]=B===void 0?W:[].concat(B,W),Q},{})},stringify($){var q=encodeURIComponent;return Object.keys($||{}).reduce(function(Q,K){return[].concat($[K]).forEach(function(J){Q.push(q(K)+"="+q(J))}),Q},[]).join("&").replace(/\s/g,"+")}};Z2.prototype.parse=function($,q,Q){if(!L7($))throw TypeError("Parameter 'url' must be a string, not "+typeof $);var K=$.indexOf("?"),J=K!==-1&&K<$.indexOf("#")?"?":"#",Z=$.split(J),G=/\\/g;Z[0]=Z[0].replace(G,"/"),$=Z.join(J);var W=$;if(W=W.trim(),!Q&&$.split("#").length===1){var B=FW.exec(W);if(B){if(this.path=W,this.href=W,this.pathname=B[1],B[2])if(this.search=B[2],q)this.query=k7.parse(this.search.substr(1));else this.query=this.search.substr(1);else if(q)this.search="",this.query={};return this}}var V=BW.exec(W);if(V){V=V[0];var U=V.toLowerCase();this.protocol=U,W=W.substr(V.length)}if(Q||V||W.match(/^\/\/[^@\/]+@[^@\/]+/)){var w=W.substr(0,2)==="//";if(w&&!(V&&Y7[V]))W=W.substr(2),this.slashes=!0}if(!Y7[V]&&(w||V&&!k6[V])){var F=-1;for(var M=0;M127)v+="x";else v+=H[j];if(!v.match(xK)){var d=z.slice(0,M),_=z.slice(M+1),X=H.match(YW);if(X)d.push(X[1]),_.unshift(X[2]);if(_.length)W="/"+_.join(".")+W;this.hostname=d.join(".");break}}}}if(this.hostname.length>NW)this.hostname="";else this.hostname=this.hostname.toLowerCase();if(!D)this.hostname=new D7(`https://${this.hostname}`).hostname;var P=this.port?":"+this.port:"",g=this.hostname||"";if(this.host=g+P,this.href+=this.host,D){if(this.hostname=this.hostname.substr(1,this.hostname.length-2),W[0]!=="/")W="/"+W}}if(!kW[U])for(var M=0,N=N7.length;M0?Q.host.split("@"):!1;if(v)Q.auth=v.shift(),Q.host=Q.hostname=v.shift()}if(Q.search=$.search,Q.query=$.query,!M5(Q.pathname)||!M5(Q.search))Q.path=(Q.pathname?Q.pathname:"")+(Q.search?Q.search:"");return Q.href=Q.format(),Q}if(!z.length){if(Q.pathname=null,Q.search)Q.path="/"+Q.search;else Q.path=null;return Q.href=Q.format(),Q}var j=z.slice(-1)[0],n=(Q.host||$.host||z.length>1)&&(j==="."||j==="..")||j==="",d=0;for(var _=z.length;_>=0;_--)if(j=z[_],j===".")z.splice(_,1);else if(j==="..")z.splice(_,1),d++;else if(d)z.splice(_,1),d--;if(!L&&!D)for(;d--;d)z.unshift("..");if(L&&z[0]!==""&&(!z[0]||z[0].charAt(0)!=="/"))z.unshift("");if(n&&z.join("/").substr(-1)!=="/")z.push("");var X=z[0]===""||z[0]&&z[0].charAt(0)==="/";if(H){Q.hostname=Q.host=X?"":z.length?z.shift():"";var v=Q.host&&Q.host.indexOf("@")>0?Q.host.split("@"):!1;if(v)Q.auth=v.shift(),Q.host=Q.hostname=v.shift()}if(L=L||Q.host&&z.length,L&&!X)z.unshift("");if(!z.length)Q.pathname=null,Q.path=null;else Q.pathname=z.join("/");if(!M5(Q.pathname)||!M5(Q.search))Q.path=(Q.pathname?Q.pathname:"")+(Q.search?Q.search:"");return Q.auth=$.auth||Q.auth,Q.slashes=Q.slashes||$.slashes,Q.href=Q.format(),Q};Z2.prototype.parseHost=function(){var $=this.host,q=zW.exec($);if(q){if(q=q[0],q!==":")this.port=q.substr(1);$=$.substr(0,$.length-q.length)}if($)this.hostname=$};DW={parse:D6,resolve:uK,resolveObject:SK,format:TK,Url:Z2,URL:D7,URLSearchParams:OK}});var R7={};c1(R7,{request:()=>uW,globalAgent:()=>bW,get:()=>SW,default:()=>mW,STATUS_CODES:()=>nW,METHODS:()=>dW,IncomingMessage:()=>_W,ClientRequest:()=>EW,Agent:()=>cW});var LW,HW,EK,vW,fW,RW=($,q,Q)=>{Q=$!=null?LW(HW($)):{};let K=q||!$||!$.__esModule?EK(Q,"default",{value:$,enumerable:!0}):Q;for(let J of vW($))if(!fW.call(K,J))EK(K,J,{get:()=>$[J],enumerable:!0});return K},h0=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports),cK,IW,x1,CW,bK,O1,nK,jW,dK,L6,gW,_K,f7,AW,XW,mK,pK,yW,hW,iK,oK,xW,OW,PW,TW,aK,uW,SW,EW,_W,cW,bW,nW,dW,mW;var I7=b1(()=>{LW=Object.create,{getPrototypeOf:HW,defineProperty:EK,getOwnPropertyNames:vW}=Object,fW=Object.prototype.hasOwnProperty,cK=h0(($)=>{$.fetch=J(globalThis.fetch)&&J(globalThis.ReadableStream),$.writableStream=J(globalThis.WritableStream),$.abortController=J(globalThis.AbortController);var q;function Q(){if(q!==void 0)return q;if(globalThis.XMLHttpRequest){q=new globalThis.XMLHttpRequest;try{q.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(Z){q=null}}else q=null;return q}function K(Z){var G=Q();if(!G)return!1;try{return G.responseType=Z,G.responseType===Z}catch(W){}return!1}$.arraybuffer=$.fetch||K("arraybuffer"),$.msstream=!$.fetch&&K("ms-stream"),$.mozchunkedarraybuffer=!$.fetch&&K("moz-chunked-arraybuffer"),$.overrideMimeType=$.fetch||(Q()?J(Q().overrideMimeType):!1);function J(Z){return typeof Z==="function"}q=null}),IW=h0(($,q)=>{if(typeof Object.create==="function")q.exports=function(Q,K){if(K)Q.super_=K,Q.prototype=Object.create(K.prototype,{constructor:{value:Q,enumerable:!1,writable:!0,configurable:!0}})};else q.exports=function(Q,K){if(K){Q.super_=K;var J=function(){};J.prototype=K.prototype,Q.prototype=new J,Q.prototype.constructor=Q}}}),x1=h0(($,q)=>{try{if(Q=(G8(),X0(Z8)),typeof Q.inherits!=="function")throw"";q.exports=Q.inherits}catch(K){q.exports=IW()}var Q}),CW=h0(($,q)=>{function Q(L,D){var z=Object.keys(L);if(Object.getOwnPropertySymbols){var N=Object.getOwnPropertySymbols(L);D&&(N=N.filter(function(H){return Object.getOwnPropertyDescriptor(L,H).enumerable})),z.push.apply(z,N)}return z}function K(L){for(var D=1;D0)this.tail.next=z;else this.head=z;this.tail=z,++this.length}},{key:"unshift",value:function(D){var z={data:D,next:this.head};if(this.length===0)this.tail=z;this.head=z,++this.length}},{key:"shift",value:function(){if(this.length===0)return;var D=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,D}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(D){if(this.length===0)return"";var z=this.head,N=""+z.data;while(z=z.next)N+=D+z.data;return N}},{key:"concat",value:function(D){if(this.length===0)return w.alloc(0);var z=w.allocUnsafe(D>>>0),N=this.head,H=0;while(N)f(N.data,z,H),H+=N.data.length,N=N.next;return z}},{key:"consume",value:function(D,z){var N;if(Dv.length?v.length:D;if(j===v.length)H+=v;else H+=v.slice(0,D);if(D-=j,D===0){if(j===v.length)if(++N,z.next)this.head=z.next;else this.head=this.tail=null;else this.head=z,z.data=v.slice(j);break}++N}return this.length-=N,H}},{key:"_getBuffer",value:function(D){var z=w.allocUnsafe(D),N=this.head,H=1;N.data.copy(z),D-=N.data.length;while(N=N.next){var v=N.data,j=D>v.length?v.length:D;if(v.copy(z,z.length-D,0,j),D-=j,D===0){if(j===v.length)if(++H,N.next)this.head=N.next;else this.head=this.tail=null;else this.head=N,N.data=v.slice(j);break}++H}return this.length-=H,z}},{key:k,value:function(D,z){return M(this,K(K({},z),{},{depth:0,customInspect:!1}))}}]),L}()}),bK=h0(($,q)=>{function Q(B,V){var U=this,w=this._readableState&&this._readableState.destroyed,F=this._writableState&&this._writableState.destroyed;if(w||F){if(V)V(B);else if(B){if(!this._writableState)process.nextTick(G,this,B);else if(!this._writableState.errorEmitted)this._writableState.errorEmitted=!0,process.nextTick(G,this,B)}return this}if(this._readableState)this._readableState.destroyed=!0;if(this._writableState)this._writableState.destroyed=!0;return this._destroy(B||null,function(M){if(!V&&M)if(!U._writableState)process.nextTick(K,U,M);else if(!U._writableState.errorEmitted)U._writableState.errorEmitted=!0,process.nextTick(K,U,M);else process.nextTick(J,U);else if(V)process.nextTick(J,U),V(M);else process.nextTick(J,U)}),this}function K(B,V){G(B,V),J(B)}function J(B){if(B._writableState&&!B._writableState.emitClose)return;if(B._readableState&&!B._readableState.emitClose)return;B.emit("close")}function Z(){if(this._readableState)this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1;if(this._writableState)this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1}function G(B,V){B.emit("error",V)}function W(B,V){var{_readableState:U,_writableState:w}=B;if(U&&U.autoDestroy||w&&w.autoDestroy)B.destroy(V);else B.emit("error",V)}q.exports={destroy:Q,undestroy:Z,errorOrDestroy:W}}),O1=h0(($,q)=>{var Q={};function K(B,V,U){if(!U)U=Error;function w(M,k,f){if(typeof V==="string")return V;else return V(M,k,f)}class F extends U{constructor(M,k,f){super(w(M,k,f))}}F.prototype.name=U.name,F.prototype.code=B,Q[B]=F}function J(B,V){if(Array.isArray(B)){let U=B.length;if(B=B.map((w)=>String(w)),U>2)return`one of ${V} ${B.slice(0,U-1).join(", ")}, or `+B[U-1];else if(U===2)return`one of ${V} ${B[0]} or ${B[1]}`;else return`of ${V} ${B[0]}`}else return`of ${V} ${String(B)}`}function Z(B,V,U){return B.substr(!U||U<0?0:+U,V.length)===V}function G(B,V,U){if(U===void 0||U>B.length)U=B.length;return B.substring(U-V.length,U)===V}function W(B,V,U){if(typeof U!=="number")U=0;if(U+V.length>B.length)return!1;else return B.indexOf(V,U)!==-1}K("ERR_INVALID_OPT_VALUE",function(B,V){return'The value "'+V+'" is invalid for option "'+B+'"'},TypeError),K("ERR_INVALID_ARG_TYPE",function(B,V,U){let w;if(typeof V==="string"&&Z(V,"not "))w="must not be",V=V.replace(/^not /,"");else w="must be";let F;if(G(B," argument"))F=`The ${B} ${w} ${J(V,"type")}`;else{let M=W(B,".")?"property":"argument";F=`The "${B}" ${M} ${w} ${J(V,"type")}`}return F+=`. Received type ${typeof U}`,F},TypeError),K("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),K("ERR_METHOD_NOT_IMPLEMENTED",function(B){return"The "+B+" method is not implemented"}),K("ERR_STREAM_PREMATURE_CLOSE","Premature close"),K("ERR_STREAM_DESTROYED",function(B){return"Cannot call "+B+" after a stream was destroyed"}),K("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),K("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),K("ERR_STREAM_WRITE_AFTER_END","write after end"),K("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),K("ERR_UNKNOWN_ENCODING",function(B){return"Unknown encoding: "+B},TypeError),K("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),$.codes=Q}),nK=h0(($,q)=>{var Q=O1().codes.ERR_INVALID_OPT_VALUE;function K(Z,G,W){return Z.highWaterMark!=null?Z.highWaterMark:G?Z[W]:null}function J(Z,G,W,B){var V=K(G,B,W);if(V!=null){if(!(isFinite(V)&&Math.floor(V)===V)||V<0){var U=B?W:"highWaterMark";throw new Q(U,V)}return Math.floor(V)}return Z.objectMode?16:16384}q.exports={getHighWaterMark:J}}),jW=h0(($,q)=>{q.exports=(G8(),X0(Z8)).deprecate}),dK=h0(($,q)=>{q.exports=X;function Q(S){var b=this;this.next=null,this.entry=null,this.finish=function(){w0(b,S)}}var K;X.WritableState=d;var J={deprecate:jW()},Z=a1(),G=(t0(),X0(K2)).Buffer,W=(typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function B(S){return G.from(S)}function V(S){return G.isBuffer(S)||S instanceof W}var U=bK(),w=nK(),F=w.getHighWaterMark,M=O1().codes,k=M.ERR_INVALID_ARG_TYPE,f=M.ERR_METHOD_NOT_IMPLEMENTED,L=M.ERR_MULTIPLE_CALLBACK,D=M.ERR_STREAM_CANNOT_PIPE,z=M.ERR_STREAM_DESTROYED,N=M.ERR_STREAM_NULL_VALUES,H=M.ERR_STREAM_WRITE_AFTER_END,v=M.ERR_UNKNOWN_ENCODING,j=U.errorOrDestroy;x1()(X,Z);function n(){}function d(S,b,O){if(K=K||L6(),S=S||{},typeof O!=="boolean")O=b instanceof K;if(this.objectMode=!!S.objectMode,O)this.objectMode=this.objectMode||!!S.writableObjectMode;this.highWaterMark=F(this,S,"writableHighWaterMark",O),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var E=S.decodeStrings===!1;this.decodeStrings=!E,this.defaultEncoding=S.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){Z0(b,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=S.emitClose!==!1,this.autoDestroy=!!S.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new Q(this)}d.prototype.getBuffer=function(){var S=this.bufferedRequest,b=[];while(S)b.push(S),S=S.next;return b},function(){try{Object.defineProperty(d.prototype,"buffer",{get:J.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(S){}}();var _;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function")_=Function.prototype[Symbol.hasInstance],Object.defineProperty(X,Symbol.hasInstance,{value:function(S){if(_.call(this,S))return!0;if(this!==X)return!1;return S&&S._writableState instanceof d}});else _=function(S){return S instanceof this};function X(S){K=K||L6();var b=this instanceof K;if(!b&&!_.call(X,this))return new X(S);if(this._writableState=new d(S,this,b),this.writable=!0,S){if(typeof S.write==="function")this._write=S.write;if(typeof S.writev==="function")this._writev=S.writev;if(typeof S.destroy==="function")this._destroy=S.destroy;if(typeof S.final==="function")this._final=S.final}Z.call(this)}X.prototype.pipe=function(){j(this,new D)};function P(S,b){var O=new H;j(S,O),process.nextTick(b,O)}function g(S,b,O,E){var a;if(O===null)a=new N;else if(typeof O!=="string"&&!b.objectMode)a=new k("chunk",["string","Buffer"],O);if(a)return j(S,a),process.nextTick(E,a),!1;return!0}X.prototype.write=function(S,b,O){var E=this._writableState,a=!1,K0=!E.objectMode&&V(S);if(K0&&!G.isBuffer(S))S=B(S);if(typeof b==="function")O=b,b=null;if(K0)b="buffer";else if(!b)b=E.defaultEncoding;if(typeof O!=="function")O=n;if(E.ending)P(this,O);else if(K0||g(this,E,S,O))E.pendingcb++,a=h(this,E,K0,S,b,O);return a},X.prototype.cork=function(){this._writableState.corked++},X.prototype.uncork=function(){var S=this._writableState;if(S.corked){if(S.corked--,!S.writing&&!S.corked&&!S.bufferProcessing&&S.bufferedRequest)W0(this,S)}},X.prototype.setDefaultEncoding=function(S){if(typeof S==="string")S=S.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((S+"").toLowerCase())>-1))throw new v(S);return this._writableState.defaultEncoding=S,this},Object.defineProperty(X.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function c(S,b,O){if(!S.objectMode&&S.decodeStrings!==!1&&typeof b==="string")b=G.from(b,O);return b}Object.defineProperty(X.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function h(S,b,O,E,a,K0){if(!O){var R=c(b,E,a);if(E!==R)O=!0,a="buffer",E=R}var Y=b.objectMode?1:E.length;b.length+=Y;var C=b.length{var Q=Object.keys||function(w){var F=[];for(var M in w)F.push(M);return F};q.exports=B;var K=mK(),J=dK();x1()(B,K);{Z=Q(J.prototype);for(W=0;W{/*! safe-buffer. MIT License. Feross Aboukhadijeh */var Q=(t0(),X0(K2)),K=Q.Buffer;function J(G,W){for(var B in G)W[B]=G[B]}if(K.from&&K.alloc&&K.allocUnsafe&&K.allocUnsafeSlow)q.exports=Q;else J(Q,$),$.Buffer=Z;function Z(G,W,B){return K(G,W,B)}Z.prototype=Object.create(K.prototype),J(K,Z),Z.from=function(G,W,B){if(typeof G==="number")throw TypeError("Argument must not be a number");return K(G,W,B)},Z.alloc=function(G,W,B){if(typeof G!=="number")throw TypeError("Argument must be a number");var V=K(G);if(W!==void 0)if(typeof B==="string")V.fill(W,B);else V.fill(W);else V.fill(0);return V},Z.allocUnsafe=function(G){if(typeof G!=="number")throw TypeError("Argument must be a number");return K(G)},Z.allocUnsafeSlow=function(G){if(typeof G!=="number")throw TypeError("Argument must be a number");return Q.SlowBuffer(G)}}),_K=h0(($)=>{var q=gW().Buffer,Q=q.isEncoding||function(z){switch(z=""+z,z&&z.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function K(z){if(!z)return"utf8";var N;while(!0)switch(z){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return z;default:if(N)return;z=(""+z).toLowerCase(),N=!0}}function J(z){var N=K(z);if(typeof N!=="string"&&(q.isEncoding===Q||!Q(z)))throw Error("Unknown encoding: "+z);return N||z}$.StringDecoder=Z;function Z(z){this.encoding=J(z);var N;switch(this.encoding){case"utf16le":this.text=F,this.end=M,N=4;break;case"utf8":this.fillLast=V,N=4;break;case"base64":this.text=k,this.end=f,N=3;break;default:this.write=L,this.end=D;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=q.allocUnsafe(N)}Z.prototype.write=function(z){if(z.length===0)return"";var N,H;if(this.lastNeed){if(N=this.fillLast(z),N===void 0)return"";H=this.lastNeed,this.lastNeed=0}else H=0;if(H>5===6)return 2;else if(z>>4===14)return 3;else if(z>>3===30)return 4;return z>>6===2?-1:-2}function W(z,N,H){var v=N.length-1;if(v=0){if(j>0)z.lastNeed=j-1;return j}if(--v=0){if(j>0)z.lastNeed=j-2;return j}if(--v=0){if(j>0)if(j===2)j=0;else z.lastNeed=j-3;return j}return 0}function B(z,N,H){if((N[0]&192)!==128)return z.lastNeed=0,"�";if(z.lastNeed>1&&N.length>1){if((N[1]&192)!==128)return z.lastNeed=1,"�";if(z.lastNeed>2&&N.length>2){if((N[2]&192)!==128)return z.lastNeed=2,"�"}}}function V(z){var N=this.lastTotal-this.lastNeed,H=B(this,z,N);if(H!==void 0)return H;if(this.lastNeed<=z.length)return z.copy(this.lastChar,N,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);z.copy(this.lastChar,N,0,z.length),this.lastNeed-=z.length}function U(z,N){var H=W(this,z,N);if(!this.lastNeed)return z.toString("utf8",N);this.lastTotal=H;var v=z.length-(H-this.lastNeed);return z.copy(this.lastChar,0,v),z.toString("utf8",N,v)}function w(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed)return N+"�";return N}function F(z,N){if((z.length-N)%2===0){var H=z.toString("utf16le",N);if(H){var v=H.charCodeAt(H.length-1);if(v>=55296&&v<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1],H.slice(0,-1)}return H}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=z[z.length-1],z.toString("utf16le",N,z.length-1)}function M(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed){var H=this.lastTotal-this.lastNeed;return N+this.lastChar.toString("utf16le",0,H)}return N}function k(z,N){var H=(z.length-N)%3;if(H===0)return z.toString("base64",N);if(this.lastNeed=3-H,this.lastTotal=3,H===1)this.lastChar[0]=z[z.length-1];else this.lastChar[0]=z[z.length-2],this.lastChar[1]=z[z.length-1];return z.toString("base64",N,z.length-H)}function f(z){var N=z&&z.length?this.write(z):"";if(this.lastNeed)return N+this.lastChar.toString("base64",0,3-this.lastNeed);return N}function L(z){return z.toString(this.encoding)}function D(z){return z&&z.length?this.write(z):""}}),f7=h0(($,q)=>{var Q=O1().codes.ERR_STREAM_PREMATURE_CLOSE;function K(W){var B=!1;return function(){if(B)return;B=!0;for(var V=arguments.length,U=Array(V),w=0;w{var Q;function K(v,j,n){if(j=J(j),j in v)Object.defineProperty(v,j,{value:n,enumerable:!0,configurable:!0,writable:!0});else v[j]=n;return v}function J(v){var j=Z(v,"string");return typeof j==="symbol"?j:String(j)}function Z(v,j){if(typeof v!=="object"||v===null)return v;var n=v[Symbol.toPrimitive];if(n!==void 0){var d=n.call(v,j||"default");if(typeof d!=="object")return d;throw TypeError("@@toPrimitive must return a primitive value.")}return(j==="string"?String:Number)(v)}var G=f7(),W=Symbol("lastResolve"),B=Symbol("lastReject"),V=Symbol("error"),U=Symbol("ended"),w=Symbol("lastPromise"),F=Symbol("handlePromise"),M=Symbol("stream");function k(v,j){return{value:v,done:j}}function f(v){var j=v[W];if(j!==null){var n=v[M].read();if(n!==null)v[w]=null,v[W]=null,v[B]=null,j(k(n,!1))}}function L(v){process.nextTick(f,v)}function D(v,j){return function(n,d){v.then(function(){if(j[U]){n(k(void 0,!0));return}j[F](n,d)},d)}}var z=Object.getPrototypeOf(function(){}),N=Object.setPrototypeOf((Q={get stream(){return this[M]},next:function(){var v=this,j=this[V];if(j!==null)return Promise.reject(j);if(this[U])return Promise.resolve(k(void 0,!0));if(this[M].destroyed)return new Promise(function(X,P){process.nextTick(function(){if(v[V])P(v[V]);else X(k(void 0,!0))})});var n=this[w],d;if(n)d=new Promise(D(n,this));else{var _=this[M].read();if(_!==null)return Promise.resolve(k(_,!1));d=new Promise(this[F])}return this[w]=d,d}},K(Q,Symbol.asyncIterator,function(){return this}),K(Q,"return",function(){var v=this;return new Promise(function(j,n){v[M].destroy(null,function(d){if(d){n(d);return}j(k(void 0,!0))})})}),Q),z),H=function(v){var j,n=Object.create(N,(j={},K(j,M,{value:v,writable:!0}),K(j,W,{value:null,writable:!0}),K(j,B,{value:null,writable:!0}),K(j,V,{value:null,writable:!0}),K(j,U,{value:v._readableState.endEmitted,writable:!0}),K(j,F,{value:function(d,_){var X=n[M].read();if(X)n[w]=null,n[W]=null,n[B]=null,d(k(X,!1));else n[W]=d,n[B]=_},writable:!0}),j));return n[w]=null,G(v,function(d){if(d&&d.code!=="ERR_STREAM_PREMATURE_CLOSE"){var _=n[B];if(_!==null)n[w]=null,n[W]=null,n[B]=null,_(d);n[V]=d;return}var X=n[W];if(X!==null)n[w]=null,n[W]=null,n[B]=null,X(k(void 0,!0));n[U]=!0}),v.on("readable",L.bind(null,n)),n};q.exports=H}),XW=h0(($,q)=>{function Q(w,F,M,k,f,L,D){try{var z=w[L](D),N=z.value}catch(H){M(H);return}if(z.done)F(N);else Promise.resolve(N).then(k,f)}function K(w){return function(){var F=this,M=arguments;return new Promise(function(k,f){var L=w.apply(F,M);function D(N){Q(L,k,f,D,z,"next",N)}function z(N){Q(L,k,f,D,z,"throw",N)}D(void 0)})}}function J(w,F){var M=Object.keys(w);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(w);F&&(k=k.filter(function(f){return Object.getOwnPropertyDescriptor(w,f).enumerable})),M.push.apply(M,k)}return M}function Z(w){for(var F=1;F{q.exports=g;var Q;g.ReadableState=P;var K=(i1(),X0(p1)).EventEmitter,J=function(R,Y){return R.listeners(Y).length},Z=a1(),G=(t0(),X0(K2)).Buffer,W=(typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof self<"u"?self:{}).Uint8Array||function(){};function B(R){return G.from(R)}function V(R){return G.isBuffer(R)||R instanceof W}var U=(G8(),X0(Z8)),w;if(U&&U.debuglog)w=U.debuglog("stream");else w=function(){};var F=CW(),M=bK(),k=nK(),f=k.getHighWaterMark,L=O1().codes,D=L.ERR_INVALID_ARG_TYPE,z=L.ERR_STREAM_PUSH_AFTER_EOF,N=L.ERR_METHOD_NOT_IMPLEMENTED,H=L.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,v,j,n;x1()(g,Z);var d=M.errorOrDestroy,_=["error","close","destroy","pause","resume"];function X(R,Y,C){if(typeof R.prependListener==="function")return R.prependListener(Y,C);if(!R._events||!R._events[Y])R.on(Y,C);else if(Array.isArray(R._events[Y]))R._events[Y].unshift(C);else R._events[Y]=[C,R._events[Y]]}function P(R,Y,C){if(Q=Q||L6(),R=R||{},typeof C!=="boolean")C=Y instanceof Q;if(this.objectMode=!!R.objectMode,C)this.objectMode=this.objectMode||!!R.readableObjectMode;if(this.highWaterMark=f(this,R,"readableHighWaterMark",C),this.buffer=new F,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=R.emitClose!==!1,this.autoDestroy=!!R.autoDestroy,this.destroyed=!1,this.defaultEncoding=R.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,R.encoding){if(!v)v=_K().StringDecoder;this.decoder=new v(R.encoding),this.encoding=R.encoding}}function g(R){if(Q=Q||L6(),!(this instanceof g))return new g(R);var Y=this instanceof Q;if(this._readableState=new P(R,this,Y),this.readable=!0,R){if(typeof R.read==="function")this._read=R.read;if(typeof R.destroy==="function")this._destroy=R.destroy}Z.call(this)}Object.defineProperty(g.prototype,"destroyed",{enumerable:!1,get:function(){if(this._readableState===void 0)return!1;return this._readableState.destroyed},set:function(R){if(!this._readableState)return;this._readableState.destroyed=R}}),g.prototype.destroy=M.destroy,g.prototype._undestroy=M.undestroy,g.prototype._destroy=function(R,Y){Y(R)},g.prototype.push=function(R,Y){var C=this._readableState,u;if(!C.objectMode){if(typeof R==="string"){if(Y=Y||C.defaultEncoding,Y!==C.encoding)R=G.from(R,Y),Y="";u=!0}}else u=!0;return c(this,R,Y,!1,u)},g.prototype.unshift=function(R){return c(this,R,null,!0,!1)};function c(R,Y,C,u,e){w("readableAddChunk",Y);var r=R._readableState;if(Y===null)r.reading=!1,F0(R,r);else{var s;if(!e)s=x(r,Y);if(s)d(R,s);else if(r.objectMode||Y&&Y.length>0){if(typeof Y!=="string"&&!r.objectMode&&Object.getPrototypeOf(Y)!==G.prototype)Y=B(Y);if(u)if(r.endEmitted)d(R,new H);else h(R,r,Y,!0);else if(r.ended)d(R,new z);else if(r.destroyed)return!1;else if(r.reading=!1,r.decoder&&!C)if(Y=r.decoder.write(Y),r.objectMode||Y.length!==0)h(R,r,Y,!1);else y(R,r);else h(R,r,Y,!1)}else if(!u)r.reading=!1,y(R,r)}return!r.ended&&(r.length=l)R=l;else R--,R|=R>>>1,R|=R>>>2,R|=R>>>4,R|=R>>>8,R|=R>>>16,R++;return R}function Z0(R,Y){if(R<=0||Y.length===0&&Y.ended)return 0;if(Y.objectMode)return 1;if(R!==R)if(Y.flowing&&Y.length)return Y.buffer.head.data.length;else return Y.length;if(R>Y.highWaterMark)Y.highWaterMark=$0(R);if(R<=Y.length)return R;if(!Y.ended)return Y.needReadable=!0,0;return Y.length}g.prototype.read=function(R){w("read",R),R=parseInt(R,10);var Y=this._readableState,C=R;if(R!==0)Y.emittedReadable=!1;if(R===0&&Y.needReadable&&((Y.highWaterMark!==0?Y.length>=Y.highWaterMark:Y.length>0)||Y.ended)){if(w("read: emitReadable",Y.length,Y.ended),Y.length===0&&Y.ended)E(this);else p(this);return null}if(R=Z0(R,Y),R===0&&Y.ended){if(Y.length===0)E(this);return null}var u=Y.needReadable;if(w("need readable",u),Y.length===0||Y.length-R0)e=O(R,Y);else e=null;if(e===null)Y.needReadable=Y.length<=Y.highWaterMark,R=0;else Y.length-=R,Y.awaitDrain=0;if(Y.length===0){if(!Y.ended)Y.needReadable=!0;if(C!==R&&Y.ended)E(this)}if(e!==null)this.emit("data",e);return e};function F0(R,Y){if(w("onEofChunk"),Y.ended)return;if(Y.decoder){var C=Y.decoder.end();if(C&&C.length)Y.buffer.push(C),Y.length+=Y.objectMode?1:C.length}if(Y.ended=!0,Y.sync)p(R);else if(Y.needReadable=!1,!Y.emittedReadable)Y.emittedReadable=!0,W0(R)}function p(R){var Y=R._readableState;if(w("emitReadable",Y.needReadable,Y.emittedReadable),Y.needReadable=!1,!Y.emittedReadable)w("emitReadable",Y.flowing),Y.emittedReadable=!0,process.nextTick(W0,R)}function W0(R){var Y=R._readableState;if(w("emitReadable_",Y.destroyed,Y.length,Y.ended),!Y.destroyed&&(Y.length||Y.ended))R.emit("readable"),Y.emittedReadable=!1;Y.needReadable=!Y.flowing&&!Y.ended&&Y.length<=Y.highWaterMark,b(R)}function y(R,Y){if(!Y.readingMore)Y.readingMore=!0,process.nextTick(i,R,Y)}function i(R,Y){while(!Y.reading&&!Y.ended&&(Y.length1&&K0(u.pipes,R)!==-1)&&!G0)w("false write response, pause",u.awaitDrain),u.awaitDrain++;C.pause()}}function I0(O0){if(w("onerror",O0),q2(),R.removeListener("error",I0),J(R,"error")===0)d(R,O0)}X(R,"error",I0);function m0(){R.removeListener("finish",p0),q2()}R.once("close",m0);function p0(){w("onfinish"),R.removeListener("close",m0),q2()}R.once("finish",p0);function q2(){w("unpipe"),C.unpipe(R)}if(R.emit("pipe",C),!u.flowing)w("pipe resume"),C.resume();return R};function U0(R){return function(){var Y=R._readableState;if(w("pipeOnDrain",Y.awaitDrain),Y.awaitDrain)Y.awaitDrain--;if(Y.awaitDrain===0&&J(R,"data"))Y.flowing=!0,b(R)}}g.prototype.unpipe=function(R){var Y=this._readableState,C={hasUnpiped:!1};if(Y.pipesCount===0)return this;if(Y.pipesCount===1){if(R&&R!==Y.pipes)return this;if(!R)R=Y.pipes;if(Y.pipes=null,Y.pipesCount=0,Y.flowing=!1,R)R.emit("unpipe",this,C);return this}if(!R){var{pipes:u,pipesCount:e}=Y;Y.pipes=null,Y.pipesCount=0,Y.flowing=!1;for(var r=0;r0,u.flowing!==!1)this.resume()}else if(R==="readable"){if(!u.endEmitted&&!u.readableListening){if(u.readableListening=u.needReadable=!0,u.flowing=!1,u.emittedReadable=!1,w("on readable",u.length,u.reading),u.length)p(this);else if(!u.reading)process.nextTick(V0,this)}}return C},g.prototype.addListener=g.prototype.on,g.prototype.removeListener=function(R,Y){var C=Z.prototype.removeListener.call(this,R,Y);if(R==="readable")process.nextTick(m,this);return C},g.prototype.removeAllListeners=function(R){var Y=Z.prototype.removeAllListeners.apply(this,arguments);if(R==="readable"||R===void 0)process.nextTick(m,this);return Y};function m(R){var Y=R._readableState;if(Y.readableListening=R.listenerCount("readable")>0,Y.resumeScheduled&&!Y.paused)Y.flowing=!0;else if(R.listenerCount("data")>0)R.resume()}function V0(R){w("readable nexttick read 0"),R.read(0)}g.prototype.resume=function(){var R=this._readableState;if(!R.flowing)w("resume"),R.flowing=!R.readableListening,w0(this,R);return R.paused=!1,this};function w0(R,Y){if(!Y.resumeScheduled)Y.resumeScheduled=!0,process.nextTick(S,R,Y)}function S(R,Y){if(w("resume",Y.reading),!Y.reading)R.read(0);if(Y.resumeScheduled=!1,R.emit("resume"),b(R),Y.flowing&&!Y.reading)R.read(0)}g.prototype.pause=function(){if(w("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1)w("pause"),this._readableState.flowing=!1,this.emit("pause");return this._readableState.paused=!0,this};function b(R){var Y=R._readableState;w("flow",Y.flowing);while(Y.flowing&&R.read()!==null);}if(g.prototype.wrap=function(R){var Y=this,C=this._readableState,u=!1;R.on("end",function(){if(w("wrapped end"),C.decoder&&!C.ended){var s=C.decoder.end();if(s&&s.length)Y.push(s)}Y.push(null)}),R.on("data",function(s){if(w("wrapped data"),C.decoder)s=C.decoder.write(s);if(C.objectMode&&(s===null||s===void 0))return;else if(!C.objectMode&&(!s||!s.length))return;var T=Y.push(s);if(!T)u=!0,R.pause()});for(var e in R)if(this[e]===void 0&&typeof R[e]==="function")this[e]=function(s){return function(){return R[s].apply(R,arguments)}}(e);for(var r=0;r<_.length;r++)R.on(_[r],this.emit.bind(this,_[r]));return this._read=function(s){if(w("wrapped _read",s),u)u=!1,R.resume()},this},typeof Symbol==="function")g.prototype[Symbol.asyncIterator]=function(){if(j===void 0)j=AW();return j(this)};Object.defineProperty(g.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(g.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(g.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(R){if(this._readableState)this._readableState.flowing=R}}),g._fromList=O,Object.defineProperty(g.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function O(R,Y){if(Y.length===0)return null;var C;if(Y.objectMode)C=Y.buffer.shift();else if(!R||R>=Y.length){if(Y.decoder)C=Y.buffer.join("");else if(Y.buffer.length===1)C=Y.buffer.first();else C=Y.buffer.concat(Y.length);Y.buffer.clear()}else C=Y.buffer.consume(R,Y.decoder);return C}function E(R){var Y=R._readableState;if(w("endReadable",Y.endEmitted),!Y.endEmitted)Y.ended=!0,process.nextTick(a,Y,R)}function a(R,Y){if(w("endReadableNT",R.endEmitted,R.length),!R.endEmitted&&R.length===0){if(R.endEmitted=!0,Y.readable=!1,Y.emit("end"),R.autoDestroy){var C=Y._writableState;if(!C||C.autoDestroy&&C.finished)Y.destroy()}}}if(typeof Symbol==="function")g.from=function(R,Y){if(n===void 0)n=XW();return n(g,R,Y)};function K0(R,Y){for(var C=0,u=R.length;C{q.exports=V;var Q=O1().codes,K=Q.ERR_METHOD_NOT_IMPLEMENTED,J=Q.ERR_MULTIPLE_CALLBACK,Z=Q.ERR_TRANSFORM_ALREADY_TRANSFORMING,G=Q.ERR_TRANSFORM_WITH_LENGTH_0,W=L6();x1()(V,W);function B(F,M){var k=this._transformState;k.transforming=!1;var f=k.writecb;if(f===null)return this.emit("error",new J);if(k.writechunk=null,k.writecb=null,M!=null)this.push(M);f(F);var L=this._readableState;if(L.reading=!1,L.needReadable||L.length{q.exports=K;var Q=pK();x1()(K,Q);function K(J){if(!(this instanceof K))return new K(J);Q.call(this,J)}K.prototype._transform=function(J,Z,G){G(null,J)}}),hW=h0(($,q)=>{var Q;function K(k){var f=!1;return function(){if(f)return;f=!0,k.apply(void 0,arguments)}}var J=O1().codes,Z=J.ERR_MISSING_ARGS,G=J.ERR_STREAM_DESTROYED;function W(k){if(k)throw k}function B(k){return k.setHeader&&typeof k.abort==="function"}function V(k,f,L,D){D=K(D);var z=!1;if(k.on("close",function(){z=!0}),Q===void 0)Q=f7();Q(k,{readable:f,writable:L},function(H){if(H)return D(H);z=!0,D()});var N=!1;return function(H){if(z)return;if(N)return;if(N=!0,B(k))return k.abort();if(typeof k.destroy==="function")return k.destroy();D(H||new G("pipe"))}}function U(k){k()}function w(k,f){return k.pipe(f)}function F(k){if(!k.length)return W;if(typeof k[k.length-1]!=="function")return W;return k.pop()}function M(){for(var k=arguments.length,f=Array(k),L=0;L0;return V(H,j,n,function(d){if(!z)z=d;if(d)N.forEach(U);if(j)return;N.forEach(U),D(z)})});return f.reduce(w)}q.exports=M}),iK=h0(($,q)=>{var Q=a1();$=q.exports=mK(),$.Stream=Q||$,$.Readable=$,$.Writable=dK(),$.Duplex=L6(),$.Transform=pK(),$.PassThrough=yW(),$.finished=f7(),$.pipeline=hW()}),oK=h0(($)=>{var q=cK(),Q=x1(),K=iK(),J=$.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},Z=$.IncomingMessage=function(G,W,B,V){var U=this;if(K.Readable.call(U),U._mode=B,U.headers={},U.rawHeaders=[],U.trailers={},U.rawTrailers=[],U.on("end",function(){process.nextTick(function(){U.emit("close")})}),B==="fetch"){let D=function(){M.read().then(function(z){if(U._destroyed)return;if(V(z.done),z.done){U.push(null);return}U.push(Buffer.from(z.value)),D()}).catch(function(z){if(V(!0),!U._destroyed)U.emit("error",z)})};var w=D;if(U._fetchResponse=W,U.url=W.url,U.statusCode=W.status,U.statusMessage=W.statusText,W.headers.forEach(function(z,N){U.headers[N.toLowerCase()]=z,U.rawHeaders.push(N,z)}),q.writableStream){var F=new WritableStream({write:function(z){return V(!1),new Promise(function(N,H){if(U._destroyed)H();else if(U.push(Buffer.from(z)))N();else U._resumeFetch=N})},close:function(){if(V(!0),!U._destroyed)U.push(null)},abort:function(z){if(V(!0),!U._destroyed)U.emit("error",z)}});try{W.body.pipeTo(F).catch(function(z){if(V(!0),!U._destroyed)U.emit("error",z)});return}catch(z){}}var M=W.body.getReader();D()}else{U._xhr=G,U._pos=0,U.url=G.responseURL,U.statusCode=G.status,U.statusMessage=G.statusText;var k=G.getAllResponseHeaders().split(/\r?\n/);if(k.forEach(function(D){var z=D.match(/^([^:]+):\s*(.*)/);if(z){var N=z[1].toLowerCase();if(N==="set-cookie"){if(U.headers[N]===void 0)U.headers[N]=[];U.headers[N].push(z[2])}else if(U.headers[N]!==void 0)U.headers[N]+=", "+z[2];else U.headers[N]=z[2];U.rawHeaders.push(z[1],z[2])}}),U._charset="x-user-defined",!q.overrideMimeType){var f=U.rawHeaders["mime-type"];if(f){var L=f.match(/;\s*charset=([^;])(;|$)/);if(L)U._charset=L[1].toLowerCase()}if(!U._charset)U._charset="utf-8"}}};Q(Z,K.Readable),Z.prototype._read=function(){var G=this,W=G._resumeFetch;if(W)G._resumeFetch=null,W()},Z.prototype._onXHRProgress=function(G){var W=this,B=W._xhr,V=null;switch(W._mode){case"text":if(V=B.responseText,V.length>W._pos){var U=V.substr(W._pos);if(W._charset==="x-user-defined"){var w=Buffer.alloc(U.length);for(var F=0;FW._pos)W.push(Buffer.from(new Uint8Array(M.result.slice(W._pos)))),W._pos=M.result.byteLength},M.onload=function(){G(!0),W.push(null)},M.readAsArrayBuffer(V);break}if(W._xhr.readyState===J.DONE&&W._mode!=="ms-stream")G(!0),W.push(null)}}),xW=h0(($,q)=>{var Q=cK(),K=x1(),J=oK(),Z=iK(),G=J.IncomingMessage,W=J.readyStates;function B(F,M){if(Q.fetch&&M)return"fetch";else if(Q.mozchunkedarraybuffer)return"moz-chunked-arraybuffer";else if(Q.msstream)return"ms-stream";else if(Q.arraybuffer&&F)return"arraybuffer";else return"text"}var V=q.exports=function(F){var M=this;if(Z.Writable.call(M),M._opts=F,M._body=[],M._headers={},F.auth)M.setHeader("Authorization","Basic "+Buffer.from(F.auth).toString("base64"));Object.keys(F.headers).forEach(function(L){M.setHeader(L,F.headers[L])});var k,f=!0;if(F.mode==="disable-fetch"||"requestTimeout"in F&&!Q.abortController)f=!1,k=!0;else if(F.mode==="prefer-streaming")k=!1;else if(F.mode==="allow-wrong-content-type")k=!Q.overrideMimeType;else if(!F.mode||F.mode==="default"||F.mode==="prefer-fast")k=!0;else throw Error("Invalid value for opts.mode");M._mode=B(k,f),M._fetchTimer=null,M._socketTimeout=null,M._socketTimer=null,M.on("finish",function(){M._onFinish()})};K(V,Z.Writable),V.prototype.setHeader=function(F,M){var k=this,f=F.toLowerCase();if(w.indexOf(f)!==-1)return;k._headers[f]={name:F,value:M}},V.prototype.getHeader=function(F){var M=this._headers[F.toLowerCase()];if(M)return M.value;return null},V.prototype.removeHeader=function(F){var M=this;delete M._headers[F.toLowerCase()]},V.prototype._onFinish=function(){var F=this;if(F._destroyed)return;var M=F._opts;if("timeout"in M&&M.timeout!==0)F.setTimeout(M.timeout);var k=F._headers,f=null;if(M.method!=="GET"&&M.method!=="HEAD")f=new Blob(F._body,{type:(k["content-type"]||{}).value||""});var L=[];if(Object.keys(k).forEach(function(H){var v=k[H].name,j=k[H].value;if(Array.isArray(j))j.forEach(function(n){L.push([v,n])});else L.push([v,j])}),F._mode==="fetch"){var D=null;if(Q.abortController){var z=new AbortController;if(D=z.signal,F._fetchAbortController=z,"requestTimeout"in M&&M.requestTimeout!==0)F._fetchTimer=globalThis.setTimeout(function(){if(F.emit("requestTimeout"),F._fetchAbortController)F._fetchAbortController.abort()},M.requestTimeout)}globalThis.fetch(F._opts.url,{method:F._opts.method,headers:L,body:f||void 0,mode:"cors",credentials:M.withCredentials?"include":"same-origin",signal:D}).then(function(H){F._fetchResponse=H,F._resetTimers(!1),F._connect()},function(H){if(F._resetTimers(!0),!F._destroyed)F.emit("error",H)})}else{var N=F._xhr=new globalThis.XMLHttpRequest;try{N.open(F._opts.method,F._opts.url,!0)}catch(H){process.nextTick(function(){F.emit("error",H)});return}if("responseType"in N)N.responseType=F._mode;if("withCredentials"in N)N.withCredentials=!!M.withCredentials;if(F._mode==="text"&&"overrideMimeType"in N)N.overrideMimeType("text/plain; charset=x-user-defined");if("requestTimeout"in M)N.timeout=M.requestTimeout,N.ontimeout=function(){F.emit("requestTimeout")};if(L.forEach(function(H){N.setRequestHeader(H[0],H[1])}),F._response=null,N.onreadystatechange=function(){switch(N.readyState){case W.LOADING:case W.DONE:F._onXHRProgress();break}},F._mode==="moz-chunked-arraybuffer")N.onprogress=function(){F._onXHRProgress()};N.onerror=function(){if(F._destroyed)return;F._resetTimers(!0),F.emit("error",Error("XHR error"))};try{N.send(f)}catch(H){process.nextTick(function(){F.emit("error",H)});return}}};function U(F){try{var M=F.status;return M!==null&&M!==0}catch(k){return!1}}V.prototype._onXHRProgress=function(){var F=this;if(F._resetTimers(!1),!U(F._xhr)||F._destroyed)return;if(!F._response)F._connect();F._response._onXHRProgress(F._resetTimers.bind(F))},V.prototype._connect=function(){var F=this;if(F._destroyed)return;F._response=new G(F._xhr,F._fetchResponse,F._mode,F._resetTimers.bind(F)),F._response.on("error",function(M){F.emit("error",M)}),F.emit("response",F._response)},V.prototype._write=function(F,M,k){var f=this;f._body.push(F),k()},V.prototype._resetTimers=function(F){var M=this;if(globalThis.clearTimeout(M._socketTimer),M._socketTimer=null,F)globalThis.clearTimeout(M._fetchTimer),M._fetchTimer=null;else if(M._socketTimeout)M._socketTimer=globalThis.setTimeout(function(){M.emit("timeout")},M._socketTimeout)},V.prototype.abort=V.prototype.destroy=function(F){var M=this;if(M._destroyed=!0,M._resetTimers(!0),M._response)M._response._destroyed=!0;if(M._xhr)M._xhr.abort();else if(M._fetchAbortController)M._fetchAbortController.abort();if(F)M.emit("error",F)},V.prototype.end=function(F,M,k){var f=this;if(typeof F==="function")k=F,F=void 0;Z.Writable.prototype.end.call(f,F,M,k)},V.prototype.setTimeout=function(F,M){var k=this;if(M)k.once("timeout",M);k._socketTimeout=F,k._resetTimers(!1)},V.prototype.flushHeaders=function(){},V.prototype.setNoDelay=function(){},V.prototype.setSocketKeepAlive=function(){};var w=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}),OW=h0(($,q)=>{q.exports=K;var Q=Object.prototype.hasOwnProperty;function K(){var J={};for(var Z=0;Z{q.exports=(I7(),X0(R7)).STATUS_CODES}),TW=h0(($)=>{var q=xW(),Q=oK(),K=OW(),J=PW(),Z=(v7(),X0(H7)),G=$;G.request=function(W,B){if(typeof W==="string")W=Z.parse(W);else W=K(W);var V=globalThis.location.protocol.search(/^https?:$/)===-1?"http:":"",U=W.protocol||V,w=W.hostname||W.host,F=W.port,M=W.path||"/";if(w&&w.indexOf(":")!==-1)w="["+w+"]";W.url=(w?U+"//"+w:"")+(F?":"+F:"")+M,W.method=(W.method||"GET").toUpperCase(),W.headers=W.headers||{};var k=new q(W);if(B)k.on("response",B);return k},G.get=function(W,B){var V=G.request(W,B);return V.end(),V},G.ClientRequest=q,G.IncomingMessage=Q.IncomingMessage,G.Agent=function(){},G.Agent.defaultMaxSockets=4,G.globalAgent=new G.Agent,G.STATUS_CODES=J,G.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}),aK=RW(TW(),1),{request:uW,get:SW,ClientRequest:EW,IncomingMessage:_W,Agent:cW,globalAgent:bW,STATUS_CODES:nW,METHODS:dW}=aK.default,mW=aK.default});var sK={};c1(sK,{validateHeaderValue:()=>MB,validateHeaderName:()=>FB,setMaxIdleHTTPParsers:()=>zB,request:()=>BB,maxHeaderSize:()=>WB,globalAgent:()=>GB,get:()=>ZB,default:()=>wB,createServer:()=>UB,ServerResponse:()=>VB,Server:()=>JB,STATUS_CODES:()=>KB,OutgoingMessage:()=>qB,METHODS:()=>QB,IncomingMessage:()=>$B,ClientRequest:()=>eW,Agent:()=>tW});var pW,iW,lK,oW,aW,lW=($,q,Q)=>{Q=$!=null?pW(iW($)):{};let K=q||!$||!$.__esModule?lK(Q,"default",{value:$,enumerable:!0}):Q;for(let J of oW($))if(!aW.call(K,J))lK(K,J,{get:()=>$[J],enumerable:!0});return K},rW=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports),sW,rK,tW,eW,$B,QB,qB,KB,JB,VB,UB,ZB,GB,WB,BB,zB,FB,MB,wB;var tK=b1(()=>{pW=Object.create,{getPrototypeOf:iW,defineProperty:lK,getOwnPropertyNames:oW}=Object,aW=Object.prototype.hasOwnProperty,sW=rW(($,q)=>{var Q=(I7(),X0(R7)),K=(v7(),X0(H7)),J=$;for(Z in Q)if(Q.hasOwnProperty(Z))J[Z]=Q[Z];var Z;J.request=function(W,B){return W=G(W),Q.request.call(this,W,B)},J.get=function(W,B){return W=G(W),Q.get.call(this,W,B)};function G(W){if(typeof W==="string")W=K.parse(W);if(!W.protocol)W.protocol="https:";if(W.protocol!=="https:")throw Error('Protocol "'+W.protocol+'" not supported. Expected "https:"');return W}}),rK=lW(sW(),1),{Agent:tW,ClientRequest:eW,IncomingMessage:$B,METHODS:QB,OutgoingMessage:qB,STATUS_CODES:KB,Server:JB,ServerResponse:VB,createServer:UB,get:ZB,globalAgent:GB,maxHeaderSize:WB,request:BB,setMaxIdleHTTPParsers:zB,validateHeaderName:FB,validateHeaderValue:MB}=rK,wB=rK});var V9=globalThis;if(typeof V9.global>"u")V9.global=globalThis;t0();var Uz=K9(h9(),1);var _7=K9(HK(),1);function W2($,q,Q,K){function J(Z){return Z instanceof Q?Z:new Q(function(G){G(Z)})}return new(Q||(Q=Promise))(function(Z,G){function W(U){try{V(K.next(U))}catch(w){G(w)}}function B(U){try{V(K.throw(U))}catch(w){G(w)}}function V(U){U.done?Z(U.value):J(U.value).then(W,B)}V((K=K.apply($,q||[])).next())})}var L0=914400,w8=12700,n0=`\r +`,NB=2147483649,C7=/^[0-9a-fA-F]{6}$/,YB=1.67,kB=27,H6={type:"solid",color:"666666",pt:1},JJ=[0.05,0.1,0.05,0.1],v6={color:"363636",pt:1},u1={color:"888888",style:"solid",size:1,cap:"flat"},Q2="000000",k2=12,DB=18,f6="LAYOUT_16x9",h7="DEFAULT",VJ="333333",P1={type:"outer",blur:3,offset:1.811023622047244,angle:90,color:"000000",opacity:0.35,rotateWithShape:!0},M8=[0.5,0.5,0.5,0.5],eK={color:"000000"},LB={size:8,color:"FFFFFF",opacity:0.75},o2="2094734552",N5="2094734553",B8="2094734554",x7="2094734555",UJ="2094734556",W8="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),z8=["C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360","C0504D","4F81BD","9BBB59","8064A2","4BACC6","F79646","628FC6","C86360"],HB=["5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7","5DA5DA","FAA43A","60BD68","F17CB0","B2912F","B276B2","DECF3F","F15854","A7A7A7"],R6;(function($){$.left="left",$.center="center",$.right="right",$.justify="justify"})(R6||(R6={}));var I6;(function($){$.b="b",$.ctr="ctr",$.t="t"})(I6||(I6={}));var ZJ="{F7021451-1387-4CA6-816F-3879F97B5CBC}",O7;(function($){$.arraybuffer="arraybuffer",$.base64="base64",$.binarystring="binarystring",$.blob="blob",$.nodebuffer="nodebuffer",$.uint8array="uint8array"})(O7||(O7={}));var P7;(function($){$.area="area",$.bar="bar",$.bar3d="bar3D",$.bubble="bubble",$.bubble3d="bubble3D",$.doughnut="doughnut",$.line="line",$.pie="pie",$.radar="radar",$.scatter="scatter"})(P7||(P7={}));var T7;(function($){$.accentBorderCallout1="accentBorderCallout1",$.accentBorderCallout2="accentBorderCallout2",$.accentBorderCallout3="accentBorderCallout3",$.accentCallout1="accentCallout1",$.accentCallout2="accentCallout2",$.accentCallout3="accentCallout3",$.actionButtonBackPrevious="actionButtonBackPrevious",$.actionButtonBeginning="actionButtonBeginning",$.actionButtonBlank="actionButtonBlank",$.actionButtonDocument="actionButtonDocument",$.actionButtonEnd="actionButtonEnd",$.actionButtonForwardNext="actionButtonForwardNext",$.actionButtonHelp="actionButtonHelp",$.actionButtonHome="actionButtonHome",$.actionButtonInformation="actionButtonInformation",$.actionButtonMovie="actionButtonMovie",$.actionButtonReturn="actionButtonReturn",$.actionButtonSound="actionButtonSound",$.arc="arc",$.bentArrow="bentArrow",$.bentUpArrow="bentUpArrow",$.bevel="bevel",$.blockArc="blockArc",$.borderCallout1="borderCallout1",$.borderCallout2="borderCallout2",$.borderCallout3="borderCallout3",$.bracePair="bracePair",$.bracketPair="bracketPair",$.callout1="callout1",$.callout2="callout2",$.callout3="callout3",$.can="can",$.chartPlus="chartPlus",$.chartStar="chartStar",$.chartX="chartX",$.chevron="chevron",$.chord="chord",$.circularArrow="circularArrow",$.cloud="cloud",$.cloudCallout="cloudCallout",$.corner="corner",$.cornerTabs="cornerTabs",$.cube="cube",$.curvedDownArrow="curvedDownArrow",$.curvedLeftArrow="curvedLeftArrow",$.curvedRightArrow="curvedRightArrow",$.curvedUpArrow="curvedUpArrow",$.custGeom="custGeom",$.decagon="decagon",$.diagStripe="diagStripe",$.diamond="diamond",$.dodecagon="dodecagon",$.donut="donut",$.doubleWave="doubleWave",$.downArrow="downArrow",$.downArrowCallout="downArrowCallout",$.ellipse="ellipse",$.ellipseRibbon="ellipseRibbon",$.ellipseRibbon2="ellipseRibbon2",$.flowChartAlternateProcess="flowChartAlternateProcess",$.flowChartCollate="flowChartCollate",$.flowChartConnector="flowChartConnector",$.flowChartDecision="flowChartDecision",$.flowChartDelay="flowChartDelay",$.flowChartDisplay="flowChartDisplay",$.flowChartDocument="flowChartDocument",$.flowChartExtract="flowChartExtract",$.flowChartInputOutput="flowChartInputOutput",$.flowChartInternalStorage="flowChartInternalStorage",$.flowChartMagneticDisk="flowChartMagneticDisk",$.flowChartMagneticDrum="flowChartMagneticDrum",$.flowChartMagneticTape="flowChartMagneticTape",$.flowChartManualInput="flowChartManualInput",$.flowChartManualOperation="flowChartManualOperation",$.flowChartMerge="flowChartMerge",$.flowChartMultidocument="flowChartMultidocument",$.flowChartOfflineStorage="flowChartOfflineStorage",$.flowChartOffpageConnector="flowChartOffpageConnector",$.flowChartOnlineStorage="flowChartOnlineStorage",$.flowChartOr="flowChartOr",$.flowChartPredefinedProcess="flowChartPredefinedProcess",$.flowChartPreparation="flowChartPreparation",$.flowChartProcess="flowChartProcess",$.flowChartPunchedCard="flowChartPunchedCard",$.flowChartPunchedTape="flowChartPunchedTape",$.flowChartSort="flowChartSort",$.flowChartSummingJunction="flowChartSummingJunction",$.flowChartTerminator="flowChartTerminator",$.folderCorner="folderCorner",$.frame="frame",$.funnel="funnel",$.gear6="gear6",$.gear9="gear9",$.halfFrame="halfFrame",$.heart="heart",$.heptagon="heptagon",$.hexagon="hexagon",$.homePlate="homePlate",$.horizontalScroll="horizontalScroll",$.irregularSeal1="irregularSeal1",$.irregularSeal2="irregularSeal2",$.leftArrow="leftArrow",$.leftArrowCallout="leftArrowCallout",$.leftBrace="leftBrace",$.leftBracket="leftBracket",$.leftCircularArrow="leftCircularArrow",$.leftRightArrow="leftRightArrow",$.leftRightArrowCallout="leftRightArrowCallout",$.leftRightCircularArrow="leftRightCircularArrow",$.leftRightRibbon="leftRightRibbon",$.leftRightUpArrow="leftRightUpArrow",$.leftUpArrow="leftUpArrow",$.lightningBolt="lightningBolt",$.line="line",$.lineInv="lineInv",$.mathDivide="mathDivide",$.mathEqual="mathEqual",$.mathMinus="mathMinus",$.mathMultiply="mathMultiply",$.mathNotEqual="mathNotEqual",$.mathPlus="mathPlus",$.moon="moon",$.noSmoking="noSmoking",$.nonIsoscelesTrapezoid="nonIsoscelesTrapezoid",$.notchedRightArrow="notchedRightArrow",$.octagon="octagon",$.parallelogram="parallelogram",$.pentagon="pentagon",$.pie="pie",$.pieWedge="pieWedge",$.plaque="plaque",$.plaqueTabs="plaqueTabs",$.plus="plus",$.quadArrow="quadArrow",$.quadArrowCallout="quadArrowCallout",$.rect="rect",$.ribbon="ribbon",$.ribbon2="ribbon2",$.rightArrow="rightArrow",$.rightArrowCallout="rightArrowCallout",$.rightBrace="rightBrace",$.rightBracket="rightBracket",$.round1Rect="round1Rect",$.round2DiagRect="round2DiagRect",$.round2SameRect="round2SameRect",$.roundRect="roundRect",$.rtTriangle="rtTriangle",$.smileyFace="smileyFace",$.snip1Rect="snip1Rect",$.snip2DiagRect="snip2DiagRect",$.snip2SameRect="snip2SameRect",$.snipRoundRect="snipRoundRect",$.squareTabs="squareTabs",$.star10="star10",$.star12="star12",$.star16="star16",$.star24="star24",$.star32="star32",$.star4="star4",$.star5="star5",$.star6="star6",$.star7="star7",$.star8="star8",$.stripedRightArrow="stripedRightArrow",$.sun="sun",$.swooshArrow="swooshArrow",$.teardrop="teardrop",$.trapezoid="trapezoid",$.triangle="triangle",$.upArrow="upArrow",$.upArrowCallout="upArrowCallout",$.upDownArrow="upDownArrow",$.upDownArrowCallout="upDownArrowCallout",$.uturnArrow="uturnArrow",$.verticalScroll="verticalScroll",$.wave="wave",$.wedgeEllipseCallout="wedgeEllipseCallout",$.wedgeRectCallout="wedgeRectCallout",$.wedgeRoundRectCallout="wedgeRoundRectCallout"})(T7||(T7={}));var G2;(function($){$.text1="tx1",$.text2="tx2",$.background1="bg1",$.background2="bg2",$.accent1="accent1",$.accent2="accent2",$.accent3="accent3",$.accent4="accent4",$.accent5="accent5",$.accent6="accent6"})(G2||(G2={}));var u7;(function($){$.left="left",$.center="center",$.right="right",$.justify="justify"})(u7||(u7={}));var S7;(function($){$.top="top",$.middle="middle",$.bottom="bottom"})(S7||(S7={}));var B1;(function($){$.ACTION_BUTTON_BACK_OR_PREVIOUS="actionButtonBackPrevious",$.ACTION_BUTTON_BEGINNING="actionButtonBeginning",$.ACTION_BUTTON_CUSTOM="actionButtonBlank",$.ACTION_BUTTON_DOCUMENT="actionButtonDocument",$.ACTION_BUTTON_END="actionButtonEnd",$.ACTION_BUTTON_FORWARD_OR_NEXT="actionButtonForwardNext",$.ACTION_BUTTON_HELP="actionButtonHelp",$.ACTION_BUTTON_HOME="actionButtonHome",$.ACTION_BUTTON_INFORMATION="actionButtonInformation",$.ACTION_BUTTON_MOVIE="actionButtonMovie",$.ACTION_BUTTON_RETURN="actionButtonReturn",$.ACTION_BUTTON_SOUND="actionButtonSound",$.ARC="arc",$.BALLOON="wedgeRoundRectCallout",$.BENT_ARROW="bentArrow",$.BENT_UP_ARROW="bentUpArrow",$.BEVEL="bevel",$.BLOCK_ARC="blockArc",$.CAN="can",$.CHART_PLUS="chartPlus",$.CHART_STAR="chartStar",$.CHART_X="chartX",$.CHEVRON="chevron",$.CHORD="chord",$.CIRCULAR_ARROW="circularArrow",$.CLOUD="cloud",$.CLOUD_CALLOUT="cloudCallout",$.CORNER="corner",$.CORNER_TABS="cornerTabs",$.CROSS="plus",$.CUBE="cube",$.CURVED_DOWN_ARROW="curvedDownArrow",$.CURVED_DOWN_RIBBON="ellipseRibbon",$.CURVED_LEFT_ARROW="curvedLeftArrow",$.CURVED_RIGHT_ARROW="curvedRightArrow",$.CURVED_UP_ARROW="curvedUpArrow",$.CURVED_UP_RIBBON="ellipseRibbon2",$.CUSTOM_GEOMETRY="custGeom",$.DECAGON="decagon",$.DIAGONAL_STRIPE="diagStripe",$.DIAMOND="diamond",$.DODECAGON="dodecagon",$.DONUT="donut",$.DOUBLE_BRACE="bracePair",$.DOUBLE_BRACKET="bracketPair",$.DOUBLE_WAVE="doubleWave",$.DOWN_ARROW="downArrow",$.DOWN_ARROW_CALLOUT="downArrowCallout",$.DOWN_RIBBON="ribbon",$.EXPLOSION1="irregularSeal1",$.EXPLOSION2="irregularSeal2",$.FLOWCHART_ALTERNATE_PROCESS="flowChartAlternateProcess",$.FLOWCHART_CARD="flowChartPunchedCard",$.FLOWCHART_COLLATE="flowChartCollate",$.FLOWCHART_CONNECTOR="flowChartConnector",$.FLOWCHART_DATA="flowChartInputOutput",$.FLOWCHART_DECISION="flowChartDecision",$.FLOWCHART_DELAY="flowChartDelay",$.FLOWCHART_DIRECT_ACCESS_STORAGE="flowChartMagneticDrum",$.FLOWCHART_DISPLAY="flowChartDisplay",$.FLOWCHART_DOCUMENT="flowChartDocument",$.FLOWCHART_EXTRACT="flowChartExtract",$.FLOWCHART_INTERNAL_STORAGE="flowChartInternalStorage",$.FLOWCHART_MAGNETIC_DISK="flowChartMagneticDisk",$.FLOWCHART_MANUAL_INPUT="flowChartManualInput",$.FLOWCHART_MANUAL_OPERATION="flowChartManualOperation",$.FLOWCHART_MERGE="flowChartMerge",$.FLOWCHART_MULTIDOCUMENT="flowChartMultidocument",$.FLOWCHART_OFFLINE_STORAGE="flowChartOfflineStorage",$.FLOWCHART_OFFPAGE_CONNECTOR="flowChartOffpageConnector",$.FLOWCHART_OR="flowChartOr",$.FLOWCHART_PREDEFINED_PROCESS="flowChartPredefinedProcess",$.FLOWCHART_PREPARATION="flowChartPreparation",$.FLOWCHART_PROCESS="flowChartProcess",$.FLOWCHART_PUNCHED_TAPE="flowChartPunchedTape",$.FLOWCHART_SEQUENTIAL_ACCESS_STORAGE="flowChartMagneticTape",$.FLOWCHART_SORT="flowChartSort",$.FLOWCHART_STORED_DATA="flowChartOnlineStorage",$.FLOWCHART_SUMMING_JUNCTION="flowChartSummingJunction",$.FLOWCHART_TERMINATOR="flowChartTerminator",$.FOLDED_CORNER="folderCorner",$.FRAME="frame",$.FUNNEL="funnel",$.GEAR_6="gear6",$.GEAR_9="gear9",$.HALF_FRAME="halfFrame",$.HEART="heart",$.HEPTAGON="heptagon",$.HEXAGON="hexagon",$.HORIZONTAL_SCROLL="horizontalScroll",$.ISOSCELES_TRIANGLE="triangle",$.LEFT_ARROW="leftArrow",$.LEFT_ARROW_CALLOUT="leftArrowCallout",$.LEFT_BRACE="leftBrace",$.LEFT_BRACKET="leftBracket",$.LEFT_CIRCULAR_ARROW="leftCircularArrow",$.LEFT_RIGHT_ARROW="leftRightArrow",$.LEFT_RIGHT_ARROW_CALLOUT="leftRightArrowCallout",$.LEFT_RIGHT_CIRCULAR_ARROW="leftRightCircularArrow",$.LEFT_RIGHT_RIBBON="leftRightRibbon",$.LEFT_RIGHT_UP_ARROW="leftRightUpArrow",$.LEFT_UP_ARROW="leftUpArrow",$.LIGHTNING_BOLT="lightningBolt",$.LINE_CALLOUT_1="borderCallout1",$.LINE_CALLOUT_1_ACCENT_BAR="accentCallout1",$.LINE_CALLOUT_1_BORDER_AND_ACCENT_BAR="accentBorderCallout1",$.LINE_CALLOUT_1_NO_BORDER="callout1",$.LINE_CALLOUT_2="borderCallout2",$.LINE_CALLOUT_2_ACCENT_BAR="accentCallout2",$.LINE_CALLOUT_2_BORDER_AND_ACCENT_BAR="accentBorderCallout2",$.LINE_CALLOUT_2_NO_BORDER="callout2",$.LINE_CALLOUT_3="borderCallout3",$.LINE_CALLOUT_3_ACCENT_BAR="accentCallout3",$.LINE_CALLOUT_3_BORDER_AND_ACCENT_BAR="accentBorderCallout3",$.LINE_CALLOUT_3_NO_BORDER="callout3",$.LINE_CALLOUT_4="borderCallout4",$.LINE_CALLOUT_4_ACCENT_BAR="accentCallout3=4",$.LINE_CALLOUT_4_BORDER_AND_ACCENT_BAR="accentBorderCallout4",$.LINE_CALLOUT_4_NO_BORDER="callout4",$.LINE="line",$.LINE_INVERSE="lineInv",$.MATH_DIVIDE="mathDivide",$.MATH_EQUAL="mathEqual",$.MATH_MINUS="mathMinus",$.MATH_MULTIPLY="mathMultiply",$.MATH_NOT_EQUAL="mathNotEqual",$.MATH_PLUS="mathPlus",$.MOON="moon",$.NON_ISOSCELES_TRAPEZOID="nonIsoscelesTrapezoid",$.NOTCHED_RIGHT_ARROW="notchedRightArrow",$.NO_SYMBOL="noSmoking",$.OCTAGON="octagon",$.OVAL="ellipse",$.OVAL_CALLOUT="wedgeEllipseCallout",$.PARALLELOGRAM="parallelogram",$.PENTAGON="homePlate",$.PIE="pie",$.PIE_WEDGE="pieWedge",$.PLAQUE="plaque",$.PLAQUE_TABS="plaqueTabs",$.QUAD_ARROW="quadArrow",$.QUAD_ARROW_CALLOUT="quadArrowCallout",$.RECTANGLE="rect",$.RECTANGULAR_CALLOUT="wedgeRectCallout",$.REGULAR_PENTAGON="pentagon",$.RIGHT_ARROW="rightArrow",$.RIGHT_ARROW_CALLOUT="rightArrowCallout",$.RIGHT_BRACE="rightBrace",$.RIGHT_BRACKET="rightBracket",$.RIGHT_TRIANGLE="rtTriangle",$.ROUNDED_RECTANGLE="roundRect",$.ROUNDED_RECTANGULAR_CALLOUT="wedgeRoundRectCallout",$.ROUND_1_RECTANGLE="round1Rect",$.ROUND_2_DIAG_RECTANGLE="round2DiagRect",$.ROUND_2_SAME_RECTANGLE="round2SameRect",$.SMILEY_FACE="smileyFace",$.SNIP_1_RECTANGLE="snip1Rect",$.SNIP_2_DIAG_RECTANGLE="snip2DiagRect",$.SNIP_2_SAME_RECTANGLE="snip2SameRect",$.SNIP_ROUND_RECTANGLE="snipRoundRect",$.SQUARE_TABS="squareTabs",$.STAR_10_POINT="star10",$.STAR_12_POINT="star12",$.STAR_16_POINT="star16",$.STAR_24_POINT="star24",$.STAR_32_POINT="star32",$.STAR_4_POINT="star4",$.STAR_5_POINT="star5",$.STAR_6_POINT="star6",$.STAR_7_POINT="star7",$.STAR_8_POINT="star8",$.STRIPED_RIGHT_ARROW="stripedRightArrow",$.SUN="sun",$.SWOOSH_ARROW="swooshArrow",$.TEAR="teardrop",$.TRAPEZOID="trapezoid",$.UP_ARROW="upArrow",$.UP_ARROW_CALLOUT="upArrowCallout",$.UP_DOWN_ARROW="upDownArrow",$.UP_DOWN_ARROW_CALLOUT="upDownArrowCallout",$.UP_RIBBON="ribbon2",$.U_TURN_ARROW="uturnArrow",$.VERTICAL_SCROLL="verticalScroll",$.WAVE="wave"})(B1||(B1={}));var q0;(function($){$.AREA="area",$.BAR="bar",$.BAR3D="bar3D",$.BUBBLE="bubble",$.BUBBLE3D="bubble3D",$.DOUGHNUT="doughnut",$.LINE="line",$.PIE="pie",$.RADAR="radar",$.SCATTER="scatter"})(q0||(q0={}));var D5;(function($){$.TEXT1="tx1",$.TEXT2="tx2",$.BACKGROUND1="bg1",$.BACKGROUND2="bg2",$.ACCENT1="accent1",$.ACCENT2="accent2",$.ACCENT3="accent3",$.ACCENT4="accent4",$.ACCENT5="accent5",$.ACCENT6="accent6"})(D5||(D5={}));var W1;(function($){$.chart="chart",$.image="image",$.line="line",$.rect="rect",$.text="text",$.placeholder="placeholder"})(W1||(W1={}));var D0;(function($){$.chart="chart",$.hyperlink="hyperlink",$.image="image",$.media="media",$.online="online",$.placeholder="placeholder",$.table="table",$.tablecell="tablecell",$.text="text",$.notes="notes"})(D0||(D0={}));var F8;(function($){$.title="title",$.body="body",$.image="pic",$.chart="chart",$.table="tbl",$.media="media"})(F8||(F8={}));var C6;(function($){$.DEFAULT="•",$.CHECK="✓",$.STAR="★",$.TRIANGLE="▶"})(C6||(C6={}));var j6="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAB3CAYAAAD1oOVhAAAGAUlEQVR4Xu2dT0xcRRzHf7tAYSsc0EBSIq2xEg8mtTGebVzEqOVIolz0siRE4gGTStqKwdpWsXoyGhMuyAVJOHBgqyvLNgonDkabeCBYW/8kTUr0wsJC+Wfm0bfuvn37Znbem9mR9303mJnf/Pb7ed95M7PDI5JIJPYJV5EC7e3t1N/fT62trdqViQCIu+bVgpIHEo/Hqbe3V/sdYVKHyWSSZmZm8ilVA0oeyNjYmEnaVC2Xvr6+qg5fAOJAz4DU1dURGzFSqZRVqtMpAFIGyMjICC0vL9PExIRWKADiAYTNshYWFrRCARAOEFZcCKWtrY0GBgaUTYkBRACIE4rKZwqACALR5RQAqQCIDqcASIVAVDsFQCSAqHQKgEgCUeUUAPEBRIVTAMQnEBvK5OQkbW9vk991CoAEAMQJxc86BUACAhKUUwAkQCBBOAVAAgbi1ykAogCIH6cAiCIgsk4BEIVAZJwCIIqBVLqiBxANQFgXS0tLND4+zl08AogmIG5OSSQS1gGKwgtANAIRcQqAaAbCe6YASBWA2E6xDyeyDUl7+AKQMkDYYevm5mZHabA/Li4uUiaTsYLau8QA4gLE/hU7wajyYtv1hReDAiAOxQcHBymbzark4BkbQKom/X8dp9Npmpqasn4BIAYAYSnYp+4BBEAMUcCwNOCQsAKZnp62NtQOw8WmwT09PUo+ijaHsOMx7GppaaH6+nolH0Z10K2tLVpdXbW6UfV3mNqBdHd3U1NTk2rtlMRfW1uj2dlZAFGirkRQAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAFGprkRsAJEQTWUTAGHqrm8caPzQ0WC1logbeiC7X3xJm0PvUmRzh45cuki1588FAmVn9BO6P3yF9utrqGH0MtW82S8UN9RA9v/4k7InjhcJFTs/TLVXLwmJV67S7vD7tHF5pKi46fYdosdOcOOGG8j1OcqefbFEJD9Q3GCwDhqT31HklS4A8VRgfYM2Op6k3bt/BQJl58J7lPvwg5JYNccepaMry0LPqFA7hCm39+NNyp2J0172b19QysGINj5CsRtpij57musOViH0QPJQXn6J9u7dlYJSFkbrMYolrwvDAJAC+WWdEpQz7FTgECeUCpzi6YxvvqXoM6eEhqnCSgDikEzUKUE7Aw7xuHctKB5OYU3dZlNR9syQdAaAcAYTC0pXF+39c09o2Ik+3EqxVKqiB7hbYAxZkk4pbBaEM+AQofv+wTrFwylBOQNABIGwavdfe4O2pg5elO+86l99nY58/VUF0byrYsjiSFluNlXYrOHcBar7+EogUADEQ0YRGHbzoKAASBkg2+9cpM1rV0tK2QOcXW7bLEFAARAXIF4w2DrDWoeUWaf4hQIgDiA8GPZ2iNfi0Q8UACkAIgrDbrJ385eDxaPLLrEsFAB5oG6lMPJQPLZZZKAACBGVhcG2Q+bmuLu2nk55e4jqPv1IeEoceiBeX7s2zCa5MAqdstl91vfXwaEGsv/rb5TtOFk6tWXOuJGh6KmnhO9sayrMninPx103JBtXblHkice58cINZP4Hyr5wpkgkdiChEmc4FWazLzenNKa/p0jncwDiqcD6BuWePk07t1asatZGoYQzSqA4nFJ7soNiP/+EUyfc25GI2GG53dHPrKo1g/1Cw4pIXLrzO+1c+/wg7tBbFDle/EbQcjFCPWQJCau5EoBoFpzXHYDwFNJcDiCaBed1ByA8hTSXA4hmwXndAQhPIc3lAKJZcF53AMJTSHM5gGgWnNcdgPAU0lwOIJoF53UHIDyFNJcfSiCdnZ0Ui8U0SxlMd7lcjubn561gh+Y1scFIU/0o/3sgeLO12E2k7UXKYumgFoAYdg8ACIAYpoBh6cAhAGKYAoalA4cAiGEKGJYOHAIghilgWDpwCIAYpoBh6cAhAGKYAoalA4cAiGEKGJYOHAIghilgWDpwCIAYpoBh6ZQ4JB6PKzviYthnNy4d9h+1M5mMlVckkUjsG5dhiBMCEMPg/wuOfrZZ/RSywQAAAABJRU5ErkJggg==",vB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAVnCAYAAACzfHDVAAAAYHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjaVcjJDYAwDEXBu6ughBfH+YnLQSwSHVA+Yrkwx7HtPHabHuEWrQ+lBBAZ6TMweBWoCwUH8quZH6VWFXVT696zxp12ARkVFEqn8wB8AAAACXBIWXMAAC4jAAAuIwF4pT92AADZLklEQVR42uzdd5hV9Z0/8M+dmcsUZmDovYOhKCiKYhR7JJuoSTCWGFI0WUxijBoTTXazVlyza4maYm9rTRSJigVsqCDNQhHBAogKCEgRMjMMU+7vj93sL8kqClLmnPt6PY+PeXZM9vP9vO8jZ+Y955xMfJLjorBrRMuSgmiViyjN1Ee2oSCyucbIBAAAAAAAAADbXaYgcoWNUZcrirpMbdRsysa69wbF+rggGrf439vSF7seF12aFUTnxvoosGIAAAAAAACAXacgoqEgF++/VRgr4r5o+Kh/pvD//F8uiII+LaPrum/EXzqui2b1ddHGKgEAAAAAAAB2rVxEQWMmWrQtjHZlA6N2w2tR84//zP8pgHu3ib6NBdG+zdqorK6KVUXZaB85j3sGAAAAAAAAaAoaG6OwIBdtyneP2PBabPzbr/1dAdx3VHRtyESHiIhcYzQrLo7WmVzkcjmPgAYAAAAAAABoSgpy0eIfS+D/LYD7fy3abC6Inn/7X2hsjELlLwAAAAAAAEDT9D8lcM1fHwddFBFxyAVR9M686PVp/gfqayKiJiLqLBMAAAAAAABgh8hGRGlEUekn/6PFEb3ikNgQk6O+KCJi6dzoksv83/cB/1X9xoiaJdmoWxlRV1dk2QAAAAAAAAA7QTZbH9muERX96v7n9t7/q6Exinq3i86LI94pjOOisHUu+uYykfmof7h+Y8Sa6aVRt74gGhs9DRoAAAAAAABgZ2lsLIi69QWxeUUmSjs0/vedwR8hk4uydSfE+wVd6qOyMfMx7/mtj9jwUtbjngEAAAAAAAB2obrqolg7IxtR/9Ffb4wo7P5GtCwobRaVH/c/UvNmNuqqPfIZAAAAAAAAYFerqy6KmjezH/v1ktpoVZBr/PgCeMN7yl8AAAAAAACApmJLHW5jUVQWNDSP+Q3ZeLco4i9/+8X6teHRzwAAAAAAAABNSd3/dLn/oLAoqqIuVhXFxhhSGB/xqGjlLwAAAAAAAECTU1eTjaK/KXSLIv7SWB+bc5ko9YxnAAAAAAAAgATJFv393bz1EeV//c8F1gMAAAAAAACQDgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKSEAhgAAAAAAAAgJRTAAAAAAAAAACmhAAYAAAAAAABICQUwAAAAAAAAQEoogAEAAAAAAABSQgEMAAAAAAAAkBIKYAAAAAAAAICUUAADAAAAAAAApIQCGAAAAAAAACAlFMAAAAAAAAAAKaEABgAAAAAAAEgJBTAAAAAAAABASiiAAQAAAAAAAFJCAQwAAAAAAACQEgpgAAAAAAAAgJRQAAMAAAAAAACkhAIYAAAAAAAAICUUwAAAAAAAAAApoQAGAAAAAAAASAkFMAAAAAAAAEBKKIABAAAAAAAAUkIBDAAAAAAAAJASCmAAAAAAAACAlFAAAwAAAAAAAKREkRUAAACwrUpLSwuGDRvWfMCAAS26du3avKysrLiioqKkZcuWzZs1a1bcvHnz0tLS0rJsNtusuLi4ebNmzUoLCgo+8/eijY2N9Zs3b66pra2tqqur21xTU1NdVVVVs2nTptqNGzdWbdiwoeYvf/nL5hUrVlQtWLBgw6xZs6pqamoaJQYAAEDaKYABAACIiIghQ4aUHnTQQW379u3bql27dq3at2/fpkWLFq2bN29eWVpa2qpZs2bNCwsLm2ez2fLCwsLyoqKi8sLCwtKknK+hoaG6vr6+qqGh4S91dXV/aWhoqNq8eXNVTU3NuqqqqvUbNmxYu2rVqjWrV69e99Zbb6177rnnPpgzZ06NTwYAAABJogAGAADIA8OGDWt+xBFHdBwwYECnLl26dGjdunXHFi1adCgtLe1YUlLSvlmzZq0KCgqK07yDwsLCssLCwrKIaPdp/zuNjY21mzdvXrdp06ZVNTU172/YsGHl2rVr31+2bNnKBQsWrHjyySffnzVrVpVPGAAAAE1Fpuexsd9HfaF+ZcSal0ptCAAAIAE6deqUPf744zvtueeeXbp3796lbdu2XSorKzuXlpZ2KS0t7VBYWFhhSztGQ0PDxpqampU1NTXL169fv+yDDz5Y9s477yybPXv2sj/96U8rVqxYUWdLAAAAbE9t9q6Jog4f/TUFMAAAQEJks9nMt7/97Y4jRozo1bdv397t2rXrXl5e3rWsrKxzcXFx+4gosKUmp7G2tnZVTU3Nso0bNy5btWrV0tdff/2tJ598cvG999672noAAADYFgpgAACAhPne977X6a9Fb/v27Xu1bNmyV1lZWa8kvXOXLauvr9/wl7/8ZdG6desWL1u2bNHChQsX/fGPf1w8derUjbYDAADAliiAAQAAmqhsNps59dRTuxx66KH9+/Tp87n27dv3Ly8v719UVOSRzXlq06ZNKzZu3Pj6+++//8abb775xqOPPvrG3XffvcpmAAAA+CsFMAAAQBNx6qmndvniF784qHfv3v3btWv3uYqKis8VFhaW2wxbUl9fv37Dhg1vfPDBB68vXrz4jccee2z+jTfeuNxmAAAA8pMCGAAAYBc45phjWn/rW9/aq3///kPatGnTv6Kiop9HOLO9NDQ0VG/cuPGtNWvWLFy4cOGcO+6445WHHnporc0AAACknwIYAABgJzjjjDO6f+lLX9qrV69eg1u3bj2orKysR0RkbIadJFddXb103bp18xcvXjz30UcffeXqq69+x1oAAADSRwEMAACwnZWWlhb86le/2u3QQw8d1r17931btmw5qLCwsMxmaEoaGhqqP/zww/nvvPPOzGeeeWbW2LFj36ipqWm0GQAAgGRTAAMAAGwHP/7xj7t+9atf3bdXr15D27Ztu1c2m21jKyRJXV3dmg8++OCVRYsWvfznP/95xh/+8IdltgIAAJA8CmAAAIBtcOKJJ7Y75ZRTDujXr9+w1q1bD81ms61shTSpq6tbt3bt2pfffPPNWbfccsvUe++9d7WtAAAANH0KYAAAgE+hoqKi4IILLhg0YsSI/bp27bpfy5YtB2YymUKbIR/kcrmGDz/8cP6777474/nnn59x4YUXvrZx40aPiwYAAGiCFMAAAAAf4/jjj2/7/e9//8D+/fsf2Lp1630KCgpKbAUiGhsbN61fv37eW2+9NeWGG2545u67715lKwAAAE2DAhgAAOB/ZLPZzAUXXPC5I4888sDu3bsfWFFRsVtEFNgMbFl1dfWSd999d8qsWbNmnnvuuS+vW7euwVYAAAB2DQUwAACQ10pLSwsuvfTSQYcccsjBXbt2HVFWVtbDVmDb1dbWrnr//fdfmDp16uRf/vKXL65evbreVgAAAHYeBTAAAJB3Bg0aVHrBBRd8fs899zywQ4cOBxQVFbWwFdj+Ghsba9euXTtrzpw5T59//vmTX3755WpbAQAA2LEUwAAAQF4YNmxY8/POO+/gIUOGHOZ9vrDz/W0ZfNFFFz07a9asKlsBAADY/hTAAABAarVq1arwyiuv3HfEiBEjO3TocFBhYWGZrcCu19DQUP3+++8/O2XKlIk/+clPZm7cuLHRVgAAALYPBTAAAJAqrVq1Kvztb3+7/3777Xd4x44dRxQWFpbbCjRdDQ0NG99///0pM2bMeOqHP/zhC8pgAACAz0YBDAAApMJZZ53V45vf/OaRvXr1GllaWtrVRiB5ampq3l28ePHEO++8c9LVV1/9jo0AAABsPQUwAACQWMOHDy+/6KKLvjB48OCjW7RoMdBGID0+/PDDV+fNmzfhvPPOe3L69Ol/sREAAIBPRwEMAAAkSqtWrQpvuOGGQ/bbb79/atOmzX6ZTCZrK5BeuVyubs2aNTNmzJjx2JgxYyavW7euwVYAAAA+ngIYAABIhB//+Mddv/e9732lZ8+e/1RcXNzWRiD/1NbWfvD2228/dssttzz029/+9l0bAQAA+L8UwAAAQJNVUVFRcO21137+4IMPPrZ169b7ZTKZAlsBIqJxzZo1M59//vnxp5122hR3BQMAAPx/CmAAAKDJOeWUUzqefvrpx/bu3ftL2Wy2jY0AH6e+vn7j0qVLH/vd7373x+uvv36ZjQAAAPlOAQwAADQJ2Ww2c+uttx5wyCGHnNC6deu9I8LdvsDWaFy7du1L06ZN+/OPfvSjZ1evXl1vJQAAQD5SAAMAALtU//79S6655pp/2nPPPY8tLy/vayPAZ1VTU7NswYIF488999wHp06dutFGAACAfKIABgAAdomf//znPU855ZQTu3btemRhYWGZjQDbW2NjY92KFSuevOWWW+689NJLF9kIAACQDxTAAADATuMxz8Cusn79+rlPP/30f5188slT6+rqcjYCAACklQIYAADY4fr27Vv8hz/84a+Pee5nI8CuUlNT8+68efPu/8EPfvDgwoULN9kIAACQNgpgAABghxkyZEjpNddc89XBgwefWFxc3MFGgKaitrZ21dy5c+/5yU9+8uc5c+bU2AgAAJAWWyqAPYoNAADYJqNHj+4wb968n06ZMuXRYcOGnaH8BZqa4uLi9sOGDTtjypQpj86bN++nJ510UntbAQAA0s4dwAAAwFY599xze33/+9//dufOnY/IZDJZGwGSIpfL1S1fvvzJG2644fbLLrvsbRsBAACSyiOgAQCAz+y8887r+53vfOfbHTt2PDyTyRTaCJBUuVyuYcWKFU/cdNNN//XrX/96sY0AAABJowAGAAC22WWXXTboG9/4xg9at249zDaAtFm7du2su++++9pzzjnnNdsAAACSQgEMAABsNcUvkE8UwQAAQJIogAEAgE9N8Qvks7Vr18665557rvv5z38+3zYAAICmaksFcGHlwOj6UV9orIqoWZG1PQAAyBO/+MUvet9xxx3nHHrooT8pLS3tYiNAPiotLe2y7777HvP973+/X1lZ2ZIpU6assxUAAKCpKetcHwXlH/01BTAAAOS5M844o/u99957zpe//OWflZeX94qIjK0AeS5TXl7e8+CDDx71/e9/v3dEvDVjxowPrQUAAGgqFMAAAMD/ceKJJ7a77777fjJq1Kh/KS8v7xOKX4B/lCkvL+99+OGHj/rWt77VfvXq1Qvnz59fbS0AAMCutqUC2DuAAQAgzwwdOrTs+uuvP6l///4nFRYWltkI20NjY2Ns2rQpqquro6amJurr62PTpk2xefPmqK+vj+rq6qivr4/NmzfHpk2boqGhYZv/fxUWFkZJSUk0a9YsioqKoqysLIqKiqJZs2ZRUlISRUVFUVpa+r9/FRQUCIjtoqGhoeq11167a8yYMffMmTOnxkYAAIBdZUvvAFYAAwBAnujUqVP2nnvuGbXXXnudnM1mK22Ej9PQ0BAbN26MDRs2/J+/Nm7cGBs3boyamprYtGlTbNq0KWpqaqK2trbJnqe4uDhKSkqitLT0f/9eUVERFRUV0aJFi//zV0VFRRQWFvog8LHq6urWvvjii7eceOKJf169enW9jQAAADubAhgAAPLcXXfdddAXv/jF00tLS7vZRn7L5XKxYcOGWLt2baxbty7Wrl37d3+tW7cuNmzYkPd7atGiRbRu3TpatWoVrVu3jjZt2vzvf27dunW0aNHCh4morq5e+sgjj1zzne98Z6ptAAAAO5MCGAAA8tTVV189+MQTTzyzoqJioG3kj8bGxli5cmUsX748Pvjgg1i9evX//n3t2rXR2NhoSZ9RYWFhtGrVKtq1axdt27b937937tw5OnTo4LHTeWbDhg3z77333qvOPPPMebYBAADsDApgAADIM1/72tfaXHrppad27979qIjQRKVUQ0NDrFq1KlasWBHvv//+//595cqVTfqRzGlXXFwcHTp0iI4dO0bnzp2jY8eO0alTp2jXrp1HS6dYLpdrfOeddx76+c9/fv2ECRPW2QgAALAjKYABACBP9OrVq9ldd931jT322OM7hYWFZTaSHh9++GG88847sXTp0njvvfdixYoVsXr16mhoaLCchCgsLIz27dtHp06dolu3btG9e/fo3r27x0mnTENDQ9W8efNu++Y3v/nHJUuWbLYRAABgR1AAAwBAHrjrrrtG/NM//dOZJSUlXWwj2davXx9Lly6Nd955539L3w8//NBiUqqysvJ/y+C//tWqVSuLSbiamppljz322G9Gjx49xTYAAIDtTQEMAAAp9qtf/arPD3/4w5+1atVqL9tIno0bN8aSJUvirbfeikWLFsV7770XmzZtspg8V1JSEl27do0+ffpE3759o3fv3lFeXm4xCbRu3bqXr7322ivGjh27yDYAAIDtRQEMAAApNGjQoNI77rjju7vttttJBQUFWRtJhtWrV8ebb74ZixcvjiVLlsTy5cujsbHRYtiigoKC6Ny5c/Tu3Tt69+4d/fr1i7Zt21pMQjQ2Nta98cYbd33rW9+6ff78+TU2AgAAfFYKYAAASJHS0tKCBx988Jj99tvvn7PZbBsbaboaGhri7bffjrfeeisWLFgQS5YscXcv201FRUX06tUr+vbtG3379o2ePXtGYWGhxTRhdXV1a2bMmHHjV77ylYdqamr85gcAALDNFMAAAJASp59+erdf/vKX51ZWVu5jG03T6tWr47XXXouFCxfGm2++GRs3brQUdooWLVpE3759Y8CAATFw4EB3CDdh69evf/E//uM//vPqq69+xzYAAIBtoQAGAICEGzRoUOm99977w969ex+byWTc4teErF+/PubNmxcLFiyIN954Q+FLk9GiRYvo169fDBgwIPbYY4+orKy0lCYkl8s1LF68eNyJJ554rcdCAwAAW0sBDAAACXbNNdcMOemkk35RVlbWyzZ2vVwuF++++27MnTs3XnvttViyZIl3+NLkFRQURK9evWLQoEExePDg6Natm6U0EdXV1UvuvvvuX//kJz+ZYxsAAMCnpQAGAIAEOuqoo1r99re//VmHDh0Ot41da9OmTTF79uyYO3duLFy4MKqqqiyFRGvevHn0798/Bg8eHHvuuWeUlJRYyi62cuXKp04//fTLJ0yYsM42AACAT6IABgCAhBk3btwRRxxxxFnZbLaNbewaVVVVMXfu3Jg7d27Mnz8/amtrLYVUKi4ujoEDB8bgwYNj8ODBUV5ebim7SF1d3ZqnnnrqqlGjRj1hGwAAwJYogAEAICFOOeWUjhdddNEvW7duvZ9t7HwrV66MWbNmxdy5c+Odd96JXC5nKeSdzp07x9577x3Dhg2LDh06WMgusHbt2hnnnXfepbfccsv7tgEAAHwUBTAAADRxpaWlBU899dQ3Bw8e/L2CggLPYt2JVqxYES+99FK89NJLsXz5cguBv/HXMnjvvfeOTp06WchO1NjYuGnu3Lk3H3744XfV1NR40TgAAPB3FMAAANCEjR49usOll176yzZt2gy3jZ1j/fr18eKLL8bMmTNj6dKlFgKfQs+ePWPfffeNYcOGRYsWLSxkJ1mzZs0L55577q/vvvvuVbYBAAD8lQIYAACaoIqKioKJEyd+c/Dgwd8vKCgotpEda8OGDfHiiy/G9OnTlb7wGfXo0SOGDx8ew4YNi4qKCgvZwdwNDAAA/CMFMAAANDGnnHJKx7Fjx/5rZWXlMNvYcerr6+PVV1+NGTNmxLx586Kurs5SYDvKZrMxZMiQ2HfffWP33XePwsJCS9mB1q5dO+MXv/jFv995550rbQMAAPKbAhgAAJqIbDabeeKJJ47fZ599fuSu3x0jl8vFwoULY/r06TF79uzYtGmTpcBOUFpaGkOGDInhw4fHgAEDLGQHaWhoqJ42bdo1Rx555J9tAwAA8pcCGAAAmoDjjz++7ZVXXvmr1q1be9fvDrBmzZqYNm1azJw5M1audHMc7EodO3aMz3/+87H//vt7X/CO+3fetDPPPPOScePGfWAbAACQfxTAAACwi9100037HXvssf9WXFzc1ja2n1wuF6+99lo8//zzMW/evKivr7cUaEKKiopizz33jBEjRsTnPve5yGQylrId1dbWrvrjH/948Q9+8INZtgEAAPlFAQwAALvIkCFDSu+///5zunTp8k+2sf2sXbs2Jk+eHNOnT48PP/zQQiABKisrY8SIEXHIIYdEeXm5hWxHy5Yte+zrX//6f86ZM6fGNgAAID9sqQAurBwYXT/qC41VETUrsrYHAADb6IILLtjt97///VVt2rQZZhvbx+LFi2P8+PFx9913xxtvvBG1tbWWAgmxadOmeOONN+LZZ5+NtWvXRps2bTweejtp0aJFv5NOOumg0tLSuc8+++xaGwEAgPQr61wfBR/zu7XuAAYAgO0sm81mJk2a9PVhw4b9pKCgwG9VfkZ1dXUxY8aMeOaZZ+K9996zEEiRfv36xSGHHBJDhw6NgoICC/mMGhsbN8+YMeOaL37xi+Pq6upyNgIAAOnlEdAAALCTHH/88W2vuuqqCyorK/exjc9mzZo18dRTT8XUqVNj06ZNFgIpVlFREZ///OfjsMMOi8rKSgv5jNavXz/r9NNPv3DcuHEf2AYAAKSTAhgAAHaC22677fNf+9rXzstms5W2se0WLVoUjz/+eMybNy9yOTewQT4pKiqKIUOGxBFHHBG9e/e2kM+grq5u3QMPPHDRySefPM02AAAgfRTAAACwA1VUVBQ8/fTTpwwcOPCUTCbjGabbIJfLxauvvhpPPvlkLFy40EIgz2UymRgwYEAcccQRMWjQIAvZ9n+3Ns6fP/+Www8//JaNGzc22ggAAKTHlgrgwsqB0fWjvtBYFVGzwuvKAABgS0488cR2EyZMuLx79+5fzmQyGRvZOo2NjTFr1qy49dZb48knn4wPPvC0UuC/rV69OmbMmBFz5syJ0tLS6NSpU/jX7NbJZDKZ9u3bD/3+978/dPny5TNfffXValsBAIB0KOtcHwXlH/O9gDuAAQBg29x66637H3vssRcWFRW1sI2tU1NTE0899VQ8++yzsWHDBgsBPlGLFi3i4IMPjsMPPzxKS/28YmvV19d/OG7cuPNPPvnk6bYBAADJ5xHQAACwHWWz2cyzzz77rSFDhvzAI5+3zqZNm2Ly5Mnx1FNPKX6BbdKiRYs47LDD4pBDDlEEb6VcLtfwyiuvXHfooYfeWVdX5yXrAACQYApgAADYTo455pjW11133cWVlZV728ant2HDhnj88cdjypQpUVtbayHAZ1ZcXBwHHnhgfPGLX4wWLTyIYWusWbNm2re//e3zn3nmGb+JAwAACeUdwAAAsB1cfvnlu1900UW/LS8v72cbn05VVVVMmDAhbrnllnjzzTejoaHBUoDtoqGhIZYsWRLPPfdc1NTURI8ePSKb9XOMT6OsrKzb17/+9SPbtm0774knnlhtIwAAkMDreu8ABgCAz+bhhx/+8qGHHnpOQUFBsW18sk2bNsUzzzwTTzzxRFRVVVkIsMOVl5fHkUceGYccckgUF/tX9afR2Ni46emnn/71Mccc87htAABAsngENAAAbKN27doVTZ48+YxevXodZxufrK6uLp5++umYOHGi4hfYJSoqKuKLX/xiHHzwwe4I/pQWLVr0x4MOOuiadevWeUwDAAAkhEdAAwDANjj22GPbPvzww7/p2LHjobaxZXV1dfHkk0/GddddF3Pnzo26ujpLAXaJzZs3x2uvvRbPPfdcRET06NEjCgsLLWYLWrduvfv3vve9fd9+++1pCxYsqLYRAABo+rb0CGgFMAAAfITLL7989wsuuOB3zZs372UbH6+xsTGmTJkS119/fbzyyiuKX6DJ2Lx5cyxYsCCmT58excXF0a1bt8hkMhbzMUpKSjp8+ctfPrJt27ZzvBcYAACaPu8ABgCArTB+/Pgjv/CFL/xLQUFBiW18vAULFsT48eNj6dKllgE0eT169IivfOUrMWjQIMvYgsbGxpqJEydecuyxxz5pGwAA0HR5BzAAAHwK7dq1K3ruued+1qNHj6/axsdbtGhR3H///bF48WLLABKnV69ecdxxx0WfPn0sYwuWLl3654MOOujy1atX19sGAAA0Pd4BDAAAn2DYsGHNn3766V936tTpC7bx0TZs2BD33Xdf/PGPf4y1a9daCJBI69evj2nTpsW6deuiZ8+eUVLiYQ8fpbKysv+3v/3t/lOmTJmyfPlyz/cHAIAmxjuAAQBgC372s5/1uP76669t0aKF54J+hJqamhg/fnzcfPPN8fbbb0cul7MUINFyuVy888478cwzz0RVVVX07t07slk/A/lHZWVl3U488cTD6+rqZkyfPv1DGwEAgCZ0va4ABgCAj3bFFVfscdZZZ11dXFzcwTb+Xi6XixkzZsR1110XCxYsiMbGRksBUqWxsTGWLFkSM2bMiPLy8ujSpUtkMhmL+RvZbLbFQQcddHibNm1mP/HEE6ttBAAAmoYtFcDeAQwAQN6aNGnSqAMOOODsTCZTaBt/b9GiRXHPPffEu+++axlA3ujWrVucdNJJ0bt3b8v4B7lcrm7y5Mm//vKXv/yIbQAAwK63pXcAK4ABAMg7paWlBTNnzjyzT58+x9vG39uwYUOMGzcuZsyY4VHPQF7KZDKx3377xde//vWoqKiwkH+waNGiP+27775X1dTUeCwEAADsQgpgAAD4H926dctOnjz5V506dRppG/9fLpeLqVOnxp///OfYuHGjhQB5r6KiIkaNGhX777+/x0L/g+XLlz9+6KGHXvLuu+/W2QYAAOwaWyqAvQMYAIC8MXz48PInnnjiynbt2o2wjf/vnXfeiWuvvTaee+652Lx5s4UARMTmzZtjzpw58dprr0XPnj2jRYsWlvI/Kioq+n7rW98aMnXq1Ofee+89f3AAAMAusKV3ACuAAQDIC9/+9rc73n777X9o0aLFANv4b1VVVXHXXXfFvffeG+vXr7cQgI+wbt26eP7552P9+vWx2267RVFRkaVERElJSefjjjvuoA8++GDKK6+88hcbAQCAnUsBDABAXjv//PP7XXzxxX8oKSnpbBv/bfr06XHttdfGokWLLAPgU3jnnXdi2rRp0bp16+jc2R8nERHZbLbyC1/4whElJSUvTp48eY2NAADAzqMABgAgb/3ud7/b60c/+tFVRUVFrWwjYs2aNXHzzTfHpEmTora21kIAtkJtbW289NJL8c4770Tfvn2jtLQ073dSWFhYNnz48C/26dNn4UMPPbTMpwQAAHYOBTAAAHnp1ltv3f+b3/zmfxYWFjbP913kcrl4/vnn4/rrr4/ly5f7cAB8BitXroxp06ZFRUVFdOvWLTKZTF7vo6CgIDto0KBDBw0atOiBBx54xycEAAB2vC0VwJmex8Z+H/WF+pURa17ym6wAACTTww8//KXDDjvsXzKZTN6/rPGDDz6I22+/Pd544w0fDIDtbMCAAfGtb30r2rRpk/e7yOVyjVOmTPn1yJEjH/LJAACAHavN3jVR1OGjv6YABgAgdV555ZXTPve5z30r3/fQ0NAQjz32WDz++ONRV1fngwGwg2Sz2Tj66KPjC1/4QhQUFOT9Pl5//fU79tprr9/7ZAAAwI6jAAYAIC9ks9nMyy+/fFafPn2Oz/ddvPvuu3HbbbfFe++954MBsJN069YtvvOd70S3bt3yfhdLliy5f5999rmypqam0ScDAAC2PwUwAACpV1paWjBr1qyzevfufVw+7yGXy8WTTz4ZDz74oLt+AXaBbDYbxxxzTBxxxBF5fzfw0qVLHxg6dOjlSmAAANj+FMAAAKRar169mk2ePHlsu3btDsrnPaxcuTJuueWWePvtt30oAHaxnj17ximnnBIdOnTI6z2sXr16yiGHHPIvS5Ys2exTAQAA28+WCuDCyoHR9aO+0FgVUbMia3sAADRpQ4cOLXvqqacub9Omzf75uoNcLhfPPPNMXH/99bF27VofCoAmYP369TFlypQoKSmJnj17RiaTycs9NG/evPtJJ500ZPLkyc+sWLHCoykAAGA7KetcHwXlH/01BTAAAIk1ZMiQ0kceeeSKVq1a7Z2vO6iuro7bb789nnjiiWhs9IRNgKaksbEx5s+fH++//34MGDAgstn8/DlLaWlpp6997WuDn3rqqadXrlxZ75MBAACfnQIYAIDUOfTQQ1s8+OCDv2/ZsuUe+bqDOXPmxNVXX+2RzwBN3PLly+OFF16Ijh075u0joUtLSzudcMIJ+7/00ktPv/3227U+FQAA8NkogAEASJVhw4Y1v++++37TsmXLQfl4/vr6+hg/fnz88Y9/jNpaP0MHSILNmzfHiy++GJs3b47ddtstCgoK8m4HxcXFbY866qg9n3vuuaeXL1/ucdAAAPAZKIABAEiNI488snLcuHG/b9GixcB8PP97770XV111VcyZM8eHASCBFi1aFC+//HL069cvWrRokXfnLykp6XDcccftP2fOnGcWLVq0yScCAAC2jQIYAIBUOPLIIyvvvPPO35aXl++Wj+d/+umn48Ybb4wPP/zQhwEgwf7yl7/ECy+8ECUlJdGrV6+8O3+zZs3aHHXUUfspgQEAYNspgAEASLxjjz227W233faH5s2b98m3s1dVVcXNN98cTz31VDQ2NvowAKRAY2NjzJ8/P5YtWxYDBgyIZs2a5dX5mzVr1uaYY4458M0333xm4cKFNT4RAACwdRTAAAAk2qGHHtritttuuzofy9+33347rrnmmli8eLEPAkAKvf/++/HKK69Enz59orKyMq/Ons1mK4888sh9Zs6c+dTSpUs3+zQAAMCnpwAGACCxjjjiiJb33nvvteXl5f3y6dy5XC4mTZoUN998c1RVVfkgAKRYVVVVTJ06NbLZbPTp0ycymUzenL24uLjtV7/61c+/8sorTy1evLjWpwEAAD4dBTAAAIl06KGHtrj33nt/l2/lb3V1ddx0000xefLkyOVyPggAeSCXy8WCBQvi3Xffjd133z2y2fz5mUyzZs1aH3300fvNmDHjSXcCAwDAp6MABgAgcYYOHVo2fvz4qysqKgbk07mXLVsWV111lUc+A+SplStXxiuvvBKf+9znoqKiIm/O3axZszZHH3300GeeeebJFStW1PkkAADAlimAAQBIlCFDhpQ++uij17Rs2XL3fDr31KlT49prr42NGzf6EADksaqqqpg+fXq0bds2unTpkjfnLikpaT9q1KihTz755JMrV66s90kAAICPt6UCuMB6AABoSjp16pSdMGHCv1dWVu6RL2dubGyMcePGxR133BF1dW56AiCitrY2br755hg/fnw0NjbmzbkrKyv3mDBhwr9369bNXQkAALCNFMAAADQZrVq1Kpw+ffolbdq02T9fzlxdXR2/+93vYtKkSd73C8DfyeVy8fjjj8fvf//7qK6uzptzt2nTZv8pU6Zc0qpVq0KfAgAA2HoKYAAAmoSKioqC2bNnX9KuXbuD8uXMS5cujYsuuijmz5/vAwDAx3r11VfjoosuiqVLl+bNmdu1a3fQ7Nmz/72iosLPrgAAYCu5iAYAoEmYOXPmz9q1a3dIvpz35ZdfjiuuuCLWrVsnfAA+0bp16+KKK66Il19+OW/O3K5du4Nnzpz5M+kDAMDWUQADALDLvfjii2N69OgxKh/Omsvl4oEHHogbbrghamtrhQ/Ap1ZbWxs33HBDPPDAA3nz2oAePXqMevHFF8dIHwAAPj0FMAAAu9SkSZO+NnDgwFPy4ax1dXVx8803x8SJE73vF4BtksvlYuLEiXHLLbdEXV1dXpx54MCBJ0+aNOlr0gcAgE9HAQwAwC7z6KOPHnXggQeekw9nXbduXfz617+OWbNmCR6Az2zmzJnx61//Ol9eJZA58MADz3n00UePkjwAAHyywsqB0fWjvtBYFVGzImtDAADsEDfeeOO+Rx999EWZTKYw7Wddvnx5XHXVVbFy5UrBA7DdbNiwIWbPnh0DBw6MioqKtB8307179/179uz56sMPP7xc+gAA5LuyzvVRUP7RX1MAAwCw011xxRV7fPe7372qoKCgWdrPOmfOnPjtb38bGzduFDwA2111dXVMmzYtOnfuHB07dkz1WTOZTOHuu+9+eJs2bV6aNGnSKukDAJDPFMAAADQZZ5xxRvef/exnvy0sLCxP+1knTJgQd999d9TX1wsegB2moaEhXnrppchms9G3b99UnzWTyRTttddeB/3lL395dubMmRukDwBAvlIAAwDQJBx00EEVf/jDH64pLi7ulOZz5nK5eOCBB+Kxxx4TOgA77c+eBQsWRF1dXfTv3z8ymUxqz1pQUFBywAEHDJs+ffqkpUuXbpY+AAD5aEsFcIH1AACwMwwaNKj0vvvuu7qsrKxXms9ZV1cX1113XUyaNEnoAOx0EydOjOuvvz7q6upSfc6ysrJef/rTn67u379/idQBAODvKYABANjhKioqCh577LGLKyoqBqb5nNXV1XHNNdfE7NmzhQ7ALvPKK6/ElVdeGVVVVak+Z4sWLQZOnDhxbEVFhZ9vAQDA33CBDADADjdz5syftW3b9sA0n3HdunVx2WWXxRtvvCFwAHa5xYsXx2WXXRZr165N9TnbtWt34MyZM38mcQAA+P8UwAAA7FBPPvnkqB49eoxK8xlXrVoVV1xxRSxfvlzgADQZK1asiCuuuCJWrlyZ6nP26NFj1KRJk0ZJHAAA/lth5cDo+lFfaKyKqFmRtSEAALbZjTfeuO+XvvSlCzOZTGp/8fDdd9+NK6+8MtatWydwAJqc6urqmDVrVvTv3z8qKytTe85u3boN79mz57yHH37Yb2MBAJAXyjrXR0H5R39NAQwAwA5x3nnn9T311FOvLigoKE7rGV977bW45pprorq6WuAANFmbN2+OGTNmRI8ePaJ9+/apPGMmkykYNGjQIYWFhVOee+45v5UFAEDqKYABANipjjrqqFb/8R//8YdmzZq1SusZX3755bj++uujrq5O4AA0eQ0NDfHSSy9Fp06dolOnTqk8Y0FBQXbYsGGfnz9//qQ33nhjk9QBAEizLRXA3gEMAMB21a1bt+wNN9zwnyUlJR3TesYpU6bEjTfeGPX19QIHIDHq6+vjxhtvjKlTp6b2jCUlJZ1uuOGG/+jWrZu7GgAAyFsKYAAAtqunn376XyorK/dI6/kmTZoUd955ZzQ2NgobgMRpbGyMO+64I5588snUnrGysnLw008//UtpAwCQrxTAAABsN88///w3unTp8k9pPd/EiRNj3LhxkcvlhA1AYuVyubj//vtTXQJ36dLlS88+++yJ0gYAIB95BzAAANvFTTfdNPzII488L5PJZNJ4vsceeyzGjx8vaABS47XXXotmzZpF3759U3m+zp0779urV695Dz/88DJpAwCQNlt6B7ACGACAz+wXv/hF7x/+8IdXFxQUNEvj+R544IF45JFHBA1A6ixYsCDq6upiwIABqTtbJpPJDBo06ODGxsbnpk6dul7aAACkiQIYAIAd5oADDqj43e9+99tmzZq1TeP5xo0bF5MmTRI0AKm1aNGi2Lx5cwwcODB1ZysoKMjut99+w5577rnH33vvvc3SBgAgLbZUAHsHMAAA2yybzWbuvPPOfyktLe2exvNNmDBB+QtAXpg0aVI89NBDqTxbaWlpj3vuuedfstlsRtIAAOQDBTAAANvs+eef/06HDh0OTePZHn744Xj44YeFDEDeeOSRR+LPf/5zKs/WoUOHw5599tlvSxkAgHygAAYAYJvcd999hw8ePPjUNJ7t/vvvjwkTJggZgLzz2GOPxX333ZfKs+25554/+NOf/nSYlAEASDvvAAYAYKudccYZ3ceMGXN5QUFBcdrONnHixHjkkUeEDEDeWrx4cWSz2ejbt2/ajpbp06fPvn/5y18mz5w5c4OkAQBIsi29A1gBDADAVhk2bFjzG2+88Q/NmjVrl7azPfroo6l99CUAbI2FCxdGUVFR9OvXL1XnKigoKD7wwAP3e/LJJx9dsWJFnaQBAEiqLRXAHgENAMBWuffee39ZWlraPW3nevzxx+PBBx8UMAD8jz//+c8xceLE1J2rtLS0x3333fdLCQMAkFYKYAAAPrVJkyaN6tSp0xEpPFeMHz9ewADwD8aPHx+TJ09O3bk6der0hUmTJn1VwgAApJFHQAMA8Kmcd955fU888cR/z2QyRWk618yZM+Puu+8WMAB8jNdeey06duwYnTt3TtW5unbtuk9BQcHzzz333DopAwCQNN4BDADAZ3LEEUe0vOKKK67NZrOVaTrXyy+/HDfffHPkcjkhA8DHyOVyMXv27OjSpUt06tQpNefKZDJF++yzz/CpU6c+9u67726WNAAASeIdwAAAbLNsNpu55ZZb/q2kpKRjms61YMGCuPnmm6OxsVHIAPAJGhsb4+abb44333wzVecqLS3tcvfdd5+fzWYzUgYAIC0UwAAAbNGkSZO+3rZt2wPTdKZly5bFDTfcEPX19QIGgE+prq4urr322li+fHmqztWuXbsDH3/88VESBgAgLTwCGgCAj3XZZZcN+upXvzo2k8mk5hcH33///bjyyiujqqpKwACwlerq6uLll1+OIUOGRHl5eWrO1aVLl31LS0unPvPMM2ukDABAEngENAAAW61///4lJ5988q8ymUxRWs60YcOG+P3vfx8bN24UMABso40bN8bvfve7VP15WlBQkP3hD394ft++fYslDABA4q9vrQAAgI/y4IMPnl1WVtYrLeeprq6O3/zmN7Fq1SrhAsBntGrVqrjyyiujuro6NWcqKyvr8/DDD58lXQAAkk4BDADA/zF+/Pgju3XrdnRazlNfX5/KdxYCwK60fPnyuO6666K+vj41Z+rRo8dXx40bd4R0AQBIMgUwAAB/53vf+16nI4444py0nCeXy8Vtt90Wb7zxhnABYDt7/fXX47bbbotcLpeaMx155JHnfvvb3+4oXQAAkkoBDADA/6qoqCi4+OKLLywsLCxPy5nGjx8fs2bNEi4A7CCzZs2Khx56KDXnKSwsrPj1r399QUVFhZ+bAQCQSC5kAQD4XxMnThxdWVk5OC3nef7552PixImCBYAd7LHHHosXXnghNeeprKzc89FHHz1RsgAAJFFh5cDo+lFfaKyKqFmRtSEAgDxxwQUX7DZq1KgLM5lMYRrO8+qrr8Ytt9ySqkdSAkBT/7O3d+/e0a5du1Scp2PHjkNzudxzU6ZMWSddAACamrLO9VHwMc/wcwcwAADRt2/f4h//+McXZzKZVPwG4HvvvRc33HBDNDY2ChcAdpKGhoa47rrrYtmyZak4T0FBQfbss88e27dv32LpAgCQqGtZKwAAYPz48T8qKyvrkYazbNiwIX7/+99HbW2tYAFgJ9u0aVP8/ve/j40bN6biPGVlZb3GjRs3RrIAACSJAhgAIM/ddNNNw/v06XN8Gs5SX18f1157baxdu1awALCLrFmzJq699tqor69PxXn69ev3jd///vdDJQsAQFIogAEA8thBBx1Uceyxx/5rRGTScJ477rgjFi9eLFgA2MUWLVoUd955Z1qOU/CNb3zj34YNG9ZcsgAAJOIC1goAAPLXzTfffFZxcXG7NJxl4sSJMX36dKECQBMxbdq0mDRpUirOUlJS0unOO+88Q6oAACSBAhgAIE/913/914FdunT5UhrO8tprr8Wf//xnoQJAEzN+/PhYsGBBKs7SrVu3o2+66abhUgUAoKlTAAMA5KEvfelLlV/5yld+lYazrFixIq6//vpobGwULAA0MY2NjXHdddfFihUr0nCczHHHHfergw46qEKyAAA0ZQpgAIA8dPXVV5+ezWYrk36OmpqauPbaa2PTpk1CBYAmatOmTXHttddGTU1N4s+SzWbb3njjjT+RKgAATZkCGAAgz9x6663Du3Tp8uWknyOXy8Utt9wSK1euFCoANHErV66MW2+9NXK5XOLP4lHQAAA0dQpgAIA8MnTo0LKvfvWrv0jDWSZMmBBz584VKgAkxJw5c+Kxxx5LxVlGjRr1i6FDh5ZJFQCApkgBDACQR+64444fFRcXd0z6OV5++eV45JFHBAoACfPQQw+l4he4SkpKOt5xxx0/lCgAAE2RAhgAIE9cfvnlu/fs2XNU0s/xwQcfxB133JGKR0gCQL7J5XJx2223xZo1axJ/lp49ex57+eWX7y5VAACaGgUwAEAe6NatW/a73/3uv2YymURf/9XX18cNN9wQ1dXVQgWAhKqqqoobb7wx6uvrE32OTCZT8N3vfvdX3bp1y0oVAICmRAEMAJAHxo8ff0pZWVmvpJ/jnnvuiaVLlwoUABJuyZIlcd999yX+HGVlZT3Hjx9/ikQBAGhKFMAAACn385//vOeAAQNGJ/0c06dPjylTpggUAFJi8uTJMWPGjMSfY8CAAaN//vOf95QoAABNhQIYACDFstls5qyzzjo3k8kk+tGEK1asiLvvvlugAJAyd911V6xYsSLRZ8hkMtmzzjrr3Gw2m5EoAABNgQIYACDFxo0b98XKysq9knyG2trauOGGG6K2tlagAJAyf/1zfvPmzYk+R2Vl5V7jxo0bKVEAAJoCBTAAQEoNHz68/OCDDz4t6ee4//77Y/ny5QIFgJRavnx5jBs3LvHnGDFixI+HDRvWXKIAAOxqCmAAgJS69dZbT8tms22TfIYZM2bEc889J0wASLnJkyfHzJkzE32G4uLitrfffvtp0gQAYFdTAAMApNBVV121R48ePb6S5DOsXLky7rrrLmECQJ64++6744MPPkj0GXr27PnVK664Yg9pAgCwKymAAQBSprS0tOAb3/jGT5N8rdfY2Bi333679/4CQB6pqamJ2267LRobG5N8jIJvfvObZ5aWlvqZGwAAu+6i1AoAANJlwoQJX6uoqBiQ5DOMHz8+Fi1aJEwAyDNvvvlmPPjgg4k+Q4sWLQY9+OCDx0gTAIBdRQEMAJAiRx55ZOWwYcN+kOQzzJ07N5544glhAkCemjhxYixYsCDRZxg+fPiPjjjiiJbSBABgV1AAAwCkyBVXXHFyUVFRRVLnr6qqijvvvDNyuZwwASBP5XK5uP3226O6ujqxZygqKmrxm9/85mRpAgCwKyiAAQBS4vzzz+/Xu3fv45J8httvvz0+/PBDYQJAnlu3bl3cfvvtiT5D7969jz///PP7SRMAgJ1NAQwAkALZbDZz6qmn/jyTyST2+m769OkxZ84cYQIAERExe/bsmDFjRmLnz2QyBaeeeurPs9lsRpoAAOxMCmAAgBT44x//eERlZeXgpM6/du3auPfeewUJAPyde+65J9atW5fY+SsrKwf/6U9/+oIkAQDYmRTAAAAJ17dv3+JDDjnkR0k+w9133x01NTXCBAD+Tk1NTdx9992JPsPBBx/8o759+xZLEwCAnUUBDACQcHfdddc3S0pKOiV1/smTJ8e8efMECQB8pLlz58azzz6b2PlLSko63nPPPd+SJAAAO4sCGAAgwb70pS9VDhw48KSkzr9mzZoYP368IAGALXrggQdizZo1iZ2/f//+Jx111FGtJAkAwM6gAAYASLArrrji1MLCwvIkzp7L5eK2226LTZs2CRIA2KJNmzbFbbfdFrlcLpHzFxYWll1++eU/kCQAADuDAhgAIKF+8Ytf9O7evftXkjr/s88+G2+88YYgAYBP5Y033ojnn38+sfN369bt6F/96ld9JAkAwI6mAAYASKgf/vCHP8pkMom8nvvggw/igQceECIAsFXGjRsX69atS+TsmUym4NRTT/2xFAEA2NEUwAAACXTdddcNa9eu3YFJnD2Xy8Udd9wRtbW1ggQAtsqmTZvizjvvTOz8bdq02f+mm27aT5IAAOxICmAAgIQpLS0t+NrXvnZ6Uud/4YUXYuHChYIEALbJq6++GjNmzEjs/Mccc8zpFRUVfiYHAMAO42ITACBhbr/99oMrKip2S+LsGzZsiHHjxgkRAPhM7r///qiqqkrk7OXl5X3/67/+6wgpAgCwoyiAAQASpKKiouCwww47Nanz33vvvYn9YS0A0HRs2LAh7r///sTOf9BBB/1zq1atCiUJAMCOoAAGAEiQ+++//+iysrKeSZx9zpw58dJLLwkRANguXnjhhViwYEEiZy8tLe32xz/+8StSBABgR1AAAwAkRN++fYv33Xfff07i7LW1tXHvvfcKEQDYru6+++6oq6tL5Oz77bffKf379y+RIgAA25sCGAAgIW6++eZRxcXFbZM4+yOPPBJr164VIgCwXa1atSoee+yxRM6ezWbb3njjjV+TIgAA25sCGAAgAYYOHVq21157fSeJs7/33nvxxBNPCBEA2CEmTpwYK1asSOTsQ4YM+c7QoUPLpAgAwPakAAYASIBrr732xKKiosqkzZ3L5eKee+6JxsZGIQIAO0R9fX3cddddkcvlEjd7UVFR5bXXXnuCFAEA2J4UwAAATdwBBxxQMWDAgG8kcfYZM2bEW2+9JUQAYId6880348UXX0zk7AMGDPjG8OHDy6UIAMD2ogAGAGjirrrqqhOKiooqkjb3pk2b4oEHHhAgALBT3H///VFbW5u4uYuKilpcffXV7gIGAGC7UQADADRhBx10UEX//v0Teffvww8/HB9++KEQAYCdYv369TFhwoREzj5w4MBvHHDAARVSBABge1AAAwA0Yf/5n/95bGFhYfOkzb1q1aqYPHmyAAGAnerpp5+O1atXJ27uwsLC8ssuu2yUBAEA2B4UwAAATdQBBxxQMWjQoNFJnP3uu++O+vp6IQIAO1V9fX3cddddiZx99913/+bQoUPLpAgAwGelAAYAaKIuv/zyYwsLC8uTNvfcuXNjwYIFAgQAdokFCxbE3LlzEzd3UVFRi9/97ndflyAAAJ+VAhgAoAkaOnRo2aBBgxL37t+6urr405/+JEAAYJf605/+FHV1dYmbe/fdd//mkCFDSiUIAMBnoQAGAGiCfvOb33ylqKioZdLmfu655xL53j0AIF1Wr14dzz33XOLmLioqann11VcfLUEAAD4LBTAAQBPTq1evZoMHD/5m0uaurq6ORx55RIAAQJPwyCOPRHV1deLmHjJkyLe6deuWlSAAANtKAQwA0MTcdNNNxxQXF7dN2twTJkyIqqoqAQIATUJVVVUifzmtuLi43a233uouYAAAtpkCGACgCWnVqlXhXnvtdVLS5l61alU8++yzAgQAmpTJkyfHqlWrEjf30KFDR7dq1apQggAAbAsFMABAE3LLLbccXlJS0jlpcz/44INRX18vQACgSamvr48HH3wwcXOXlJR0vummmw6VIAAA20IBDADQRGSz2cwBBxzw7aTNvWjRonjppZcECAA0SS+99FIsXrw4cXOPGDHiO9lsNiNBAAC2lgIYAKCJuOaaa/YuLy/vm7S5H3roocjlcgIEAJqkXC6XyLuAy8vL+1111VV7SRAAgK2lAAYAaCK+8pWvfDdpM8+bNy8WLlwoPACgSVu4cGG8+uqrrg8BAMgLCmAAgCbgsssuG1RZWblPkmbO5XIxfvx44QEAifDAAw8k7qklrVu33veSSy7pLz0AALaGAhgAoAkYNWrUCUmbefbs2bFs2TLhAQCJsGzZsnjllVcSN/cJJ5xwovQAANgaCmAAgF3sn//5nzt37NjxiCTN3NjYGA888IDwAIBEGT9+fDQ0NCRq5k6dOn1h9OjRHaQHAMCnpQAGANjFfvSjH30tk8kk6rps2rRpsWrVKuEBAImyatWqeOGFFxI1cyaTKfzpT386SnoAAHxaCmAAgF1o0KBBpX369Plqkmaur6+PCRMmCA8ASKQJEyZEXV1dombu27fvV/r27VssPQAAPg0FMADALnTZZZcdXlRUVJGkmadOnRpr164VHgCQSOvXr48pU6YkauaioqLK3/zmN0dIDwCAT0MBDACwi2Sz2cy+++57UpJmrqurc/cvAJB4jz76aOLuAt5///1PymazGekBAPBJFMAAALvI1VdfPbSsrKx3kmaeMmVKbNiwQXgAQKJt2LAhnn/++UTNXFZW1ueqq67aS3oAAHwSBTAAwC7y5S9/+bgkzVtfXx8TJ04UHACQCo8//nji7gL+0pe+dLzkAAD4JApgAIBdYPTo0R3atm07IkkzT5s2LdatWyc8ACAVPvzww5g+fXqiZm7fvv2I0aNHd5AeAABbogAGANgFfvrTn47KZDKFSZm3vr4+HnnkEcEBAKnyyCOPRH19fWLmzWQyhT/96U+/JjkAALZEAQwAsJN16tQp26dPn6OTNLO7fwGANFq3bl1MmzYtUTP36dPnmE6dOmWlBwDAx1EAAwDsZFddddUB2Wy2dVLmbWxsjEmTJgmOVOvYsWN06OCJmgD5aNKkSdHY2JiYebPZbOurrrrqAMkBAPBxFMAAADvZiBEjvp6keV988cVYtWqV4Ei1Ll26xIUXXhinnXZadO3a1UIA8siqVavipZdecj0JAEBqKIABAHaiM844o3tlZeXeSZk3l8vFxIkTBUdeyGQyMXjw4PjVr34VY8aMcUcwQB55/PHHI5fLJWbeysrKvc8444zukgMA4KMogAEAdqJTTjnlqxGRScq8CxYsiPfee09w5JVMJhN77713XHjhhTFmzJho3769pQCk3HvvvRcLFy5M1B9X/3NdCQAA/4cCGABgJ+nVq1ezXr16fTlJM3v3L/nsr0XwBRdcECeffHK0bdvWUgBSLGnXPb169fpyr169mkkOAIB/pAAGANhJrrjiioOLiopaJmXeBN4JAztEYWFhDB8+PC688MIYPXp0VFZWWgpACi1YsCCWLVuWmHmLiopaXnnllYdIDgCAf6QABgDYSYYPH/6VJM2btHfhwY5WVFQUI0aMiEsuuSRGjx4dLVu2tBSAFMnlcvH4448naub99tvvK5IDAOAfKYABAHaC0aNHd6isrByalHnXrl0bL7/8suDgI/y1CL744ovjhBNOiBYtWlgKQEq89NJLsW7dusTMW1lZudfo0aM7SA4AgL+lAAYA2AlOP/30o5J07fXMM89EQ0OD4GALiouL47DDDouxY8fGqFGjoqyszFIAEq6hoSGeeeaZJI1c8D/XmQAA8P8vEq0AAGDHymazmX79+n05KfPW1tbGlClTBAefUnFxcYwcOTIuvfTSGDVqVJSWlloKQII9//zzUVtbm5h5+/Xr9+VsNpuRHAAAf6UABgDYwX7zm9/sWVJS0jkp886YMSOqq6sFB1uppKQkRo4cGZdcckkcffTRUVJSYikACVRdXR0zZ85M0p8/na+44orBkgMA4K8UwAAAO9gXvvCFLyVl1lwuF08//bTQ4DNo3rx5HHXUUXHJJZfEyJEjI5vNWgpAwjz11FORy+USM++RRx75ZakBAPBXCmAAgB1oyJAhpZ07dz4iKfO+/vrrsWLFCsHBdlBeXh6jRo2KSy+9VBEMkDArVqyI119/PTHzdunS5fD+/ft79AQAABGhAAYA2KHGjh17aGFhYWJeCOruX9j+KioqYtSoUXHxxRfH4YcfHkVFRZYC4LpouyosLGz+H//xHwdLDQCACAUwAMAOteeeex6ZlFnXrl0b8+bNExrsIK1atYrjjz8+LrroohgxYkQUFPh2DKApmzdvXqxZsyYx8+61115HSg0AgAgFMADADnPMMce0bt269b5Jmfe5556LxsZGwcEO1qZNmxg9enRcfPHFimCAJqyxsTGee+65JP35MvyYY45pLTkAAPykAQBgBznzzDMPz2Qyibjeqq+vj6lTpwoNdqK2bdvG6NGj47zzzovhw4crggGaoBdeeCHq6+sTMWsmkyk844wzDpUaAAB+wgAAsIP079//C0mZdc6cObFhwwahwS7QqVOnOPnkk+Pf/u3fYu+9945MJmMpAE3Ehg0bYvbs2YmZd8CAAR4DDQCAAhgAYEf43ve+16mysnKPpMybpMcbQlp17tw5xowZE7/61a8UwQBNyPPPP5+YWSsrKwd/73vf6yQ1AID8pgAGANgBTj755CMiIhHtzcqVK+P1118XGjQRXbt2jTFjxsQ555wTgwcPthCAXez111+PlStXJmXczMknn3y41AAA8psCGABgB+jXr19iHv88ZcqUyOVyQoMmpnfv3nHaaafFOeecE/3797cQgF0kl8vFlClTknQd6jHQAAB5TgEMALCdnX766d0qKip2S8Ks9fX1MW3aNKFBE9anT58466yz4pxzzonddtvNQgB2gWnTpkV9fX0iZq2oqNjt9NNP7yY1AID8pQAGANjORo8efURSZp03b15s3LhRaJAAffr0ibPPPjvOPPPM6Nmzp4UA7EQbN26MefPmuR4FACARFMAAANtZr169EvPetSQ9zhD4bwMGDIhf/vKXceaZZ0b37t0tBGAnmTp1apKuRw+TGABA/lIAAwBsR2eccUb38vLyvkmYdf369fHaa68JDRJqwIAB8S//8i9x2mmnRbdunvQJsKPNnz8/Pvzww0TMWl5e3u9HP/pRF6kBAOQnBTAAwHZ03HHHHZSUWWfMmBGNjY1CgwTLZDIxePDg+Nd//dcYM2ZMdOjQwVIAdpDGxsaYMWNGYub9xje+cYjUAADykwIYAGA76tOnz8FJmDOXyyXqMYbAlmUymdh7773jwgsvjDFjxkT79u0tBWAHeOGFF5J0XXqIxAAA8pMCGABgOznppJPat2zZcvckzLpkyZJYuXKl0CBl/loEX3DBBXHyySdH27ZtLQVgO1qxYkW8/fbbiZi1srJy0PHHH+8PAgCAPKQABgDYTr773e8eGBGZJMyapMcXAluvsLAwhg8fHhdeeGGMHj06KisrLQVgO5k+fXpSRi34/ve/f6DEAADyjwIYAGA72X333Q9Nwpz19fUxc+ZMgUEeKCoqihEjRsQll1wSo0ePjpYtW1oKwGc0c+bMqK+vT8SsAwcOPFRiAAD5RwEMALAdHHTQQRUtW7bcKwmzLly4MKqrq4UGeeSvRfDFF18cJ5xwQrRo0cJSALZRVVVVvP7664mYtVWrVkOHDx9eLjUAgPyiAAYA2A7OPvvsz2cymaIkzOrxz5C/iouL47DDDouxY8fGqFGjoqyszFIAtkFSnqaSyWSy55577uclBgCQXxTAAADbwe67735AEuasra2NOXPmCAzyXHFxcYwcOTIuvfRSRTDANpg9e3bU1dUlYtY99tjjAIkBAOQXBTAAwGfUqlWrwnbt2u2fhFnnzZsXtbW1QgMiIqKkpCRGjhwZY8eOjaOPPjpKSkosBeBT2LRpU8ybNy8Rs7Zv337/iooKPwMEAMgjLv4AAD6jCy+8cPeioqKKJMz64osvCgz4P5o3bx5HHXVUXHLJJTFy5MjIZrOWAvAJZs2alYg5i4qKWlx88cWDJAYAkD8UwAAAn9GBBx6YiMfqVVdXJ+ZOFWDXKC8vj1GjRsWll16qCAb4BPPmzYuamppEzHrQQQd5DDQAQB5RAAMAfEZdu3YdnoQ5582bF/X19QIDPlFFRUWMGjUqLr744jj88MOjqKjIUgD+QV1dXbz66quJmLVLly77SwwAIH8ogAEAPoNTTjmlY3l5+W5JmPXll18WGLBVWrVqFccff3xcdNFFMWLEiCgo8C0kwN966aWXEjFnRUXFbieddFJ7iQEA5AffvQMAfAYnnnji55MwZ21tbcyfP19gwDZp06ZNjB49OsaOHasIBvgb8+fPj9ra2iSMmvnud7/7eYkBAOQH37UDAHwGn/vc5/ZLwpwLFy6Muro6gQGfyV+L4PPOOy+GDx+uCAby3ubNm2PhwoWJmLVfv37DJQYAkB98tw4AsI1atWpV2Lp1672TMKvHPwPbU6dOneLkk0+Oc889NwYNGmQhQF6bPXt2IuZs06bN3hUVFX4WCACQB1z0AQBso/PPP39gYWFheVOfs76+PubMmSMwYLvr2bNn/OQnP4nzzjsv9t5778hkMpYC5J3Zs2dHfX19k5+zqKio4vzzzx8oMQCA9FMAAwBso/3333/fJMz5+uuvR01NjcCAHaZLly4xZsyYOOecc2Lw4MEWAuSV6urqeOONNxIx64EHHriPxAAA0k8BDACwjbp27ZqIxz/PnTtXWMBO0bt37zjttNPinHPOif79+1sIkDeScr3VvXv3vaUFAJB+CmAAgG0wZMiQ0srKyj2a+py5XM7jn4Gdrk+fPnHWWWfFOeecE7vttpuFAKk3e/bsyOVyTX7Oli1b7jlo0KBSiQEApJsCGABgG5x55pl7ZjKZbFOfc9myZbFu3TqBAbtEnz594uyzz44zzzwzevbsaSFAaq1bty6WL1/e5OfMZDLZs846a4jEAADSrcgKAAC23tChQ4clYc558+YJC9jlBgwYEAMGDIgFCxbE+PHjY+nSpZYCpM68efOiS5cuTX7OffbZZ5+ImC4xAID0cgcwAMA26Nix4z5JmHP+/PnCApqMAQMGxC9/+cs47bTTolu3bhYCpEpSrrs6deq0j7QAANJNAQwAsJWOOOKIlhUVFf2a+pxVVVWxaNEigQFNSiaTicGDB8e//uu/xpgxY6JDhw6WAqTCW2+9FVVVVU1+zoqKis8deuihLSQGAJBeCmAAgK108sknD46ITFOfc/78+dHY2CgwoEnKZDKx9957x4UXXhhjxoyJ9u3bWwqQaI2NjbFgwYJE/Cv4u9/97h4SAwBILwUwAMBW2n333fdMwpze/wskwV+L4AsuuCBOPvnkaNu2raUAiZWU66/BgwfvKS0AgPQqsgIAgK3Trl27wU19xlwul5Q7UAAiIqKwsDCGDx8e++yzT0ybNi0mTJgQ69evtxggURYsWBC5XC4ymab9sJgOHToMlhYAQHq5AxgAYCsMGjSotGXLlgOa+pzvvfdebNy4UWBA4hQVFcWIESPikksuidGjR0fLli0tBUiMDz/8MJYtW9bk52zZsuXA/v37l0gMACCdFMAAAFvhxz/+8aBMJtPkn6Li7l8g6f5aBI8dOzZOOOGEaNGihaUAibBw4cImP2Mmk8n+5Cc/GSAtAIB0UgADAGyFvffee88kzJmEHzwCfBrNmjWLww47LMaOHRujRo2KsrIySwGatKT8Il5SrmsBANh63gEMALAVunbtOqSpz1hfXx9vvvmmsIBUKS4ujpEjR8bBBx8czz77bDz++ONRXV1tMUCT8+abb0Z9fX0UFTXtH7t16dJlT2kBAKSTO4ABAD6lioqKgoqKikFNfc4lS5bE5s2bBQakUklJSYwcOTLGjh0bRx99dJSUeIUl0LTU1tbG0qVLm/ycLVu2HFRaWupngwAAKeQiDwDgUzr77LP7FhYWNvlnj7722mvCAlKvefPmcdRRR8Ull1wSI0eOjGbNmlkK4HpsKxQWFpafffbZvaQFAJA+CmAAgE9p//3375+EOV9//XVhAXmjvLw8Ro0aFf/+7/8eI0eOjGw2aymA67FP6fOf//xAaQEApI8CGADgU+rRo8fuTX3G2traePvtt4UF5J2KiooYNWpUXHzxxXH44Yc3+XdvAum2ePHiRLySo1evXoOkBQCQPgpgAIBPqXXr1k3+DoklS5ZEQ0ODsIC81apVqzj++OPj4osvjhEjRkRBgW97gZ2voaEhlixZ0uTnbNOmjQIYACCFfCcMAPApDBkypLR58+a9m/qcb775prAAIqJ169YxevToGDt2rCIYcF32MZo3b95n0KBBpdICAEgX3wEDAHwKp556av9MJtPkr53eeustYQH8jTZt2sTo0aPjvPPOi+HDhyuCAddlfyOTyRT84Ac/+Jy0AADSxXe+AACfwuDBg5v84/Hq6+tj0aJFwgL4CJ06dYqTTz45/u3f/i323nvvyGQylgLsUIsXL07Eqzn23HPPgdICAEgXBTAAwKfQpUuXAU19xnfeeSfq6uqEBbAFnTt3jjFjxiiCgR2utrY23n333SRc53oPMABAyiiAAQA+hZYtW/Zv6jN6/DPAp9elS5cYM2ZMnHvuuTF48GALAfL2+iwJ17kAAGwdBTAAwCcYPnx4eUlJSeemPqfHPwNsvV69esVpp50W55xzTvTvrwMB8u/6rLS0tPPw4cPLpQUAkB4KYACAT/Ctb31rt4ho8s8IXbx4sbAAtlGfPn3irLPOinPOOSd22203CwG2i4T8gl7m29/+dj9pAQCkhwIYAOAT7L777k2+CVi7dm1s2LBBWACfUZ8+feLss8+OM888M3r27GkhwGfy4Ycfxrp165r8nAMHDlQAAwCkSJEVAABsWadOnZr8D8TefvttQQFsRwMGDIgBAwbEggULYvz48bF06VJLAbb5Oq1Vq1audwEA2GkUwAAAn6CyslIBDJCnBgwYEP3794958+bFQw89FO+++66lAFtlyZIlsddeezX1613PvgcASBEFMADAFnTq1CnbvHnzXk19ziVLlggLYAfJZDIxePDg2GOPPeLll1+OBx98MFauXGkxQGqu05o3b967Xbt2RatXr66XGABA8nkHMADAFowZM6ZnJpPJNuUZGxsbPZoUYCfIZDKx9957x4UXXhhjxoyJ9u3bWwrwiZYuXRqNjY1NesaCgoLsqaee2kNaAADp4A5gAIAt2Hvvvfs29RlXrlwZtbW1wgLYSf5aBO+5554xa9asmDBhQqxevdpigI9UW1sb77//fnTu3LlJzzls2LC+EbFIYgAAyecOYACALejRo0eTL4DfeecdQQHsAoWFhTF8+PC48MILY/To0VFZWWkpQGKv15Jw3QsAwKejAAYA2ILWrVs3+ff/vvvuu4IC2IUKCwtjxIgRcckll8To0aOjZcuWlgIk7notCde9AAB8Oh4BDQCwBc2bN+/Z1GdUAAM0kW+wi4pixIgRsd9++8WUKVPiscceiw0bNlgMEO+9914SrnsVwAAAKeEOYACAj9G/f/+SkpKSjk19TgUwQNPSrFmzOOyww2Ls2LExatSoKCsrsxTIc0m4XistLe3Ut2/fYmkBACSfAhgA4GOccMIJ3Zr69dK6deuiqqpKWABNUHFxcYwcOTJ+/etfK4Ihz1VVVcX69eub+pgF3/zmN7tLCwAg+RTAAAAfY8iQIT2b+oxJeJwgQL77axE8duzYOProo6OkpMRSIA8l4botCde/AAB8MgUwAMDH6N69e8+mPqPHPwMkR/PmzeOoo46KSy65JEaOHBnNmjWzFMgjSbhuS8L1LwAAn0wBDADwMVq1atWjqc+4bNkyQQEkTHl5eYwaNSr+/d//PUaOHBnZbNZSIA8k4botCde/AAB8MgUwAMDHqKio6NXUZ1y+fLmgAJL750yMGjUqLr744jj88MOjqKjIUiDFknDd1rJly16SAgBIPgUwAMBHyGazmbKysq5NecbGxsZYtWqVsAASrlWrVnH88cfHxRdfHCNGjIiCAt+qQxqtWrUqGhsbm/SMJSUlXbPZbEZaAADJ5rtKAICPcNxxx7UrKCgobsozrl69Ourr64UFkBKtW7eO0aNHx9ixYxXBkEJ1dXXxwQcfNOkZCwoKio877rh20gIASDbfTQIAfITPf/7zXZr6jO+//76gAFKoTZs2MXr06Dj//PNj+PDhimBIkRUrVrgOBgBgh/NdJP+PvTuPr7I888d/nSwEkhD2HUQEUVRAoIiouCtq64Jabd1arVorbqO2tlXbaavTOu38Rqffdmpbu9rWpYogsqgFRXCttAIKArJDgAAJBLKQ5JzfH8WO4+DOcp6T9/v18jWvTv657ut6hNvnk/t+AICd2G+//bL+xVcSXiAC8PF17do1Lr300rj99ttj2LBhkUq5lRWSLgn7tyTsgwEAeH8FWgAA8H917txZAAxAVujevXtceeWVsXr16njiiSdi9uzZkclkNAYSKAn7tyTsgwEAeH8CYACAnWjXrp0roAHIKj169Igrr7wyli5dGpMmTYo5c+ZoCiRMEvZvSdgHAwDw/gTAAAA7UVxc3D3baxQAAzRPffr0ibFjx8aSJUti/PjxsWDBAk2BhEjC/i0J+2AAAN6fbwADAOxESUlJz2yur7q6Ourq6gwKoBnbb7/94l/+5V/ia1/7WhxwwAEaAglQV1cX1dXV9sEAAOxWAmAAgHc5/PDDSwsKCtpmc40VFRUGBUBERPTt2zduvPHGuOGGG2LffffVEMhy2b6PKygoaDt8+PASkwIASC4BMADAu5x44oldsr3GDRs2GBQA/8uAAQPiG9/4Rtxwww3Ru3dvDQH7uE+yH+5qUgAAyeUbwAAA79KvX7+sD4DXr19vUADs1IABA+LAAw+MuXPnxoQJE2LlypWaAlkkCTe5HHDAAV0i4i3TAgBIJgEwAMC7dO/evXO21+gEMADvJ5VKxaBBg2LgwIExe/bsGD9+fKxbt05jwD4uZ/bDAAC8NwEwAMC7tG/fvlO21ygABuDDSKVSMWzYsBg6dGjMnj07HnvsMbdIwF6WhBPASdgPAwDw3gTAAADv0rp166w/8ZCEF4cAZI+3g+BDDz00XnnllZg4caK/S8A+LtH7YQAA3psAGADgXUpKSrL6xENjY2Ns3rzZoAD4yPLz8+Pwww+P4cOHx/PPPx8TJ06MqqoqjYE9aPPmzdHY2BgFBdn7Wi7b98MAALw/ATAAwLu0bNmySzbXV1lZGZlMxqAA+Njy8/Nj1KhRMXLkyHjhhRcEwbAHZTKZqKqqio4dO9oPAwCwWwiAAQDepaioKKuvvKusrDQkAHaJgoKCGDVqVIwYMSJmzpwZkydPji1btmgM7IH9XDYHwNm+HwYA4P3laQEAwP8YPnx4SX5+fkk21ygABmBXa9GiRRx//PFxxx13xNlnnx0lJSWaAs14P5efn18yfPhwfxAAACSUABgA4B2OOOKIDtleo+//ArC7FBUVxejRo+P73/9+nH322VFcXKwpsBsk4cr1JOyLAQDYOQEwAMA79O3bt1221+gEMAC729tB8B133BGnn356tGrVSlOgme3n9ttvv7YmBQCQTAJgAIB36NSpkwAYAHYoKSmJz3zmM3HnnXfG6NGjo0WLFpoCzWQ/l4R9MQAAOycABgB4hw4dOrTN9hqTcGUgALmlpKQkzj777PjOd74To0aNivz8fE2BHN/PJWFfDADAzgmAAQDeoaysrG221ygABmBvad++fVx00UVx5513xgknnBCFhYWaAjm6nysrK3MCGAAgoQTAAADvUFJS0j6b68tkMlFdXW1QAOxV7dq1i/POOy+++93vxqhRoyIvz+sF+CiSsJ8rLS0VAAMAJJT/QgMAeIfi4uK22VxfXV1dNDY2GhQAWeHtE8F33HGHIBg+gsbGxqirq7MvBgBgt/BfZgAA79CqVausPung9C8A2ahDhw5x0UUXxbe//e04/PDDBcGQA/u6oqIiJ4ABABLKf5EBALxDQUGBABgAPqauXbvGpZdeGt/61rdi2LBhkUqlNAUSuq9r0aJFW1MCAEimAi0AAPgfhYWFZdlc39atWw0JgKzXrVu3uPLKK2P16tXxxBNPxOzZsyOTyWgMJGhfl+37YgAA3psAGADgnZujgoLW2VyfE8AAJEmPHj3iyiuvjKVLl8akSZNizpw5mgIJ2ddl+74YAID35gpoAIAdWrdunZefn98ym2sUAAOQRH369ImxY8fGLbfcEgMGDNAQSMC+Lj8/v1WrVq28OwQASCCbOACAHQYNGlQSEVn9scJt27YZFACJtd9++8UNN9wQX/va1+KAAw7QEJq1BOzr8gYPHlxsUgAAySMABgDY4YADDijJ9hpramoMCoDE69u3b9x4441xww03xL777qshNEu1tbVZX2P//v1LTQoAIHl8AxgAYIeePXtm/QuuJLwoBIAPa8CAATFgwICYP39+jBs3LpYvX64pNBtJ2Nf16NGjxKQAAJJHAAwAsEOnTp0EwACwFwwYMCAOPPDAmDt3bkyYMCFWrlypKeS8JOzrunbtKgAGAEggATAAwA5lZWVZ/4Krrq7OoADISalUKgYNGhQDBw6M2bNnx4QJE2Lt2rUaQ85KQgDcpk0bV0ADACSQABgAYIeysjIngAFgL0ulUjFs2LAYOnRozJ49O8aPHx/r1q3TGHKOABgAgN1FAAwAsENJSUlxttfoBDAAzcXbQfCQIUPi5ZdfjokTJ0ZFRYXGkDOSEAAnYX8MAMD/JQAGANihqKioKNtrrKmpMSgAmpW8vLw4/PDDY/jw4fH888/HE088EZWVlRpD4iUhAG7RokWRSQEAJI8AGABgh8LCwhbZXF86nY7t27cbFADNUn5+fowaNSpGjhwZL7zwQkycODGqqqo0hsTavn17ZDKZSKVSWVtjixYtWpgUAEDyCIABAHbI9gC4oaHBkABo9goKCmLUqFExYsSImDlzZkyePDm2bNmiMSROJpOJhoaGyOaMtbCw0AlgAIAk/neTFgAA7NgYFRRk9QuuxsZGQwKAHVq0aBHHH398HHnkkfHMM8/E1KlTY9u2bRpDomR7AJzt+2MAAN5jH6cFAAA7NkZZ/oLL9c8A8H8VFRXF6NGj49hjj41nnnkmpkyZEjU1NRpDImT7DS8FBQWugAYASCABMADA2xujLH/B5QpoAHhvbwfBRx11VEyfPj2efvrpqK2t1RiymgAYAIDdIU8LAAD+QQAMAMlXUlISn/nMZ+LOO++M0aNHZ/X1uiAABgBgdxAAAwDskO1XQAuAAeDDKykpibPPPjv+7d/+LUaPHh2FhYWagv3dR5Sfn9/SlAAAkkcADADw9sYoL88JYADIMa1bt46zzz47vve978UJJ5wgCMb+7iPIz8/3LwwAQAIJgAEAdkilUlm9N2psbDQkAPiY2rVrF+edd15897vfjRNOOCEKCgo0Bfu7D94f55sSAEDyCIABAHbI9gA4nU4bEgB8Qu3bt/9nEDxq1KjIy/NqBPu799kfp0wJACB5/FcOAMAOXnABQPPRoUOHuOiii+J73/ueIJi9JpPJZHuJ/sUAAEggmzgAgP+R1QFwAl4QAkDidOzYMS666KL41re+FYcffnj4fTDs796xOc7yG3IAANg5mzgAgITsjQTAALD7dOvWLS699NL41re+FcOGDRMEs0dk+xXQeXl5/kUAAEigAi0AAPiHbH/BJQAGgN2ve/fuceWVV8ayZcviiSeeiDlz5mgKzXl/5/AIAEACCYABAHbIZDJOAAMAERGx7777xtixY2PJkiUxYcKEmD9/vqZgfwwAQCIIgAEA/ocr7gCA/2W//faLG264Id56660YP358vPnmm5rCLpPtV0Cn3IUOAJBIAmAAgB2y/QVXtr8gBIBc1rdv37jxxhvjrbfeinHjxsWiRYs0hU/MFdAAANjEAQDsXln9Bs4BDADY+/r27Rs333xz3HDDDdG7d28NIdf3d75BAgCQQE4AAwDskO0nMATAAJA9BgwYEAMGDIj58+fHI488EitXrtQUcnF/5woaAIAEcgIYAGCHVCqVzvL6DAkAssyAAQPi1ltvjbFjx0bPnj01hJza32UScEc1AAD/lxPAAAD/QwAMAHysv6MHDRoUBx98cDz//PMxadKk2LRpk8aQ+P1dtv+CJAAAO+cEMADADul0dr/fEgADQHarr6+PioqK2LZtm2aQE/u7dDrtBDAAQAI5AQwA8D+cAAYAPrK6urp4+umnY9q0acJfcm1/5wQwAEACCYABAP6HEw4AwIfW0NAQ06ZNiyeffDK2bt2qIXxkCfgGsAAYACCBBMAAADtkMpmsDoDz8ny9AwCywdvB71NPPRXV1dUaQs7u7wTAAADJJAAGANgh219wCYABYO9qbGyMGTNmxJNPPhmVlZUawieWn5+f9VtkUwIASB4BMADADplMpiGb6yssLDQkANgL0ul0zJo1KyZPnhwbN27UEHaZgoLsfjXX1NTUaEoAAAncZ2oBAMA/NDY2bs/m+gTAALBnpdPpePnll2Py5Mmxdu1aDWGXa9GiRbb/O1BvSgAAySMABgDYoampSQAMAEQmk4nZs2fH448/HuXl5RpCs93fNTY2CoABABJIAAwAsENDQ0NWv+ASAAPA7vV28PvEE0/E6tWrNYTdLtuvgM72G3IAAHiPfaYWAAD8gyugAaD5mjNnTkyaNCmWLl2qGewx2X4FtAAYACCZBMAAADs0NTU5AQwAzcyCBQtiwoQJ8dZbb2kG9nfv0tDQIAAGAEggATAAwA7Z/oJLAAwAu87ChQtj/PjxsXjxYs1gr8n2K6Cz/RckAQB4j32mFgAA/EO2B8AFBQWRl5cX6XTasADgY1q+fHmMGzcu5s+frxnsVXl5eVkfAG/fvt0JYACABBIAAwDs0NDQkPUnHFq1ahXbtm0zLAD4iFauXBmPPPKI4Jes2tclYH8sAAYASCABMADADrW1tXXZXqMAGAA+mnXr1sX48eNj9uzZkclkNISs2tdlu7q6ulqTAgBIHgEwAMAOW7du3ZrtNSbhRSEAZIP169fHY489JvjFvu4TqK6u3mpSAADJIwAGANihqqpKAAwACbdhw4Z4/PHH45VXXommpiYNwb7uE6isrHT1DABAAgmAAQB22LRpU9a/4GrZsqVBAcBOVFVVxcSJE+OFF16IxsZGDSHrJSEA3rRpkxPAAAAJJAAGANhh3bp1WR8AOwEMAP/bli1bYsKECYJfEicJ+7ry8nIBMABAAgmAAQB2WLZsmSugASAhqqurY/LkyTFz5syor6/XEBInCfu6pUuXCoABABJIAAwAsMP8+fOz/gRwcXGxQQHQrNXU1MSUKVPimWeeEfySaEnY173++uu+AQwAkEACYACAHRYsWFCXyWQaUqlUYbbW2Lp1a4MCoFmqq6uLp59+OqZNmxbbtsmkSL5s39el0+mGpUuXbjcpAIDkEQADALxDU1PTtoKCgrbZWp8AGIDmZvv27TF9+vR48sknY+tWt9GSO7J9X9fU1ORfOACAhBIAAwC8Q0NDw9ZsDoBLS0sNCYDm8ndyTJs2LZ566qmorq7WEHJOtu/rGhsb/YsHAJBQAmAAgHeor6+vbNWqVc9src8JYAByXWNjY8yYMSOefPLJqKys1BByVrbv6+rr66tMCQAgmQTAAADv0NDQkNVvmgXAAOSqdDods2bNismTJ8fGjRs1hJyX7fu6bN8XAwDw3gTAAADvUFdXV5XN9ZWWlkYqlYpMJmNYAOSETCYTr732Wjz++OOxatUqDaFZSKVSUVJSktU11tbWVpkUAEAyCYABAN5h27Ztm7K5vvz8/GjVqlXU1NQYFgCJlslkYvbs2fH4449HeXm5htCstGrVKvLz87O6xq1btzoBDACQUAJgAIB3qK6u3pztNZaVlQmAAUist4PfiRMnxpo1azSEZqmsrCzra9y2bVuVSQEAJJMAGADgHaqqqjZle43t2rWLtWvXGhYAiTNnzpyYNGlSLF26VDNo1tq1a5f1NW7atMkJYACALNbQWBgFjQ0REZFKRSavMJre/pkAGADgHSoqKqqyvcYkvDAEgHdasGBBTJgwId566y3NgITs5zZs2CAABgDIYoUFDf9MejMRqab0/+S+AmAAgHdYtWpV1r/oatu2rUEBkAgLFy6M8ePHx+LFizUD3iEJAfDq1aurTAoAIJkEwAAA77BgwYKsD4CdAAYg2y1fvjzGjRsX8+fP1wzYiST8Ql8S9sUAAOycABgA4B2eeOKJjZlMpimVSuVna41OAAOQrVauXBmPPPKI4Bc+QLb/Ql8mk2l64oknNpoUAEAyCYABAN6huro6vX379g1FRUVdsrVGJ4AByDZr166NCRMmxOzZsyOTyWgIJHw/t3379g3V1dVpkwIASCYBMADAu9TV1a0XAAPAB1u/fn089thjgl/Isf1cXV3delMCAEguATAAwLvU1dVVtGnTJmvrKykpiRYtWsT27dsNC4C9oqKiIiZOnBivvPJKNDU1aQh8BEVFRVFcXJz1+2GTAgBILgEwAMC7bN26dV2XLll7ADhSqVR07Ngx1qxZY1gA7FFVVVUxceLEeP755wW/8DF17NgxUqlU1u+HTQoAILkEwAAA71JVVZX1Jx46deokAAZgj9m8eXM8/vjj8cILL0RjY6OGwCfcx9kPAwCwOwmAAQDeZf369Vn/zbMkvDgEIPm2bNkSU6ZMiZkzZ0Z9fb2GwC7QsWNH+2EAAHYrATAAwLusXr066088JOHFIQDJVVNTE1OmTIlnnnlG8Au7WBJ+kW/VqlUCYACABBMAAwC8y9///ves/+aZABiA3aG2tjYmT54czz77bNTV1WkINNN93KuvvioABgBIMAEwAMC7PPzww+t//OMfN6RSqcJsrbFz584GBcAus3379pg+fXpMnTo1tm3bpiGwG2X7CeB0Ot3w8MMPC4ABABJMAAwA8C7V1dXpurq68latWu2TrTV26NAh8vLyIp1OGxgAH1tDQ0NMmzYtnnrqqaiurtYQ2M3y8vKiQ4cOWV1jfX39mtraWptMAIAEEwADAOxEbW3tmmwOgAsKCqJdu3axceNGwwLgI2tsbIwZM2bEk08+GZWVlRoCe0j79u2joCC7X8fV1NSUmxQAQLIJgAEAdmLz5s2r2rdvn9U1duvWTQAMwEeSTqdj1qxZMXnyZH+HwF7av2W7LVu2rDQpAIBkEwADAOzEpk2bVvfp0yera+zWrVvMmzfPsAD4QG8Hv1OmTIkNGzZoCOzF/Vu227BhwxqTAgBINgEwAMBOrFixYvWwYcOyusYkvEAEYO/KZDLx0ksvxZQpU6K83K2usLd17do162tctWrVKpMCAEg2ATAAwE7Mnz9/9ZgxY7K6xiS8QARg78hkMjF79uyYOHFirFnjMB9kiyT8At+8efP8oQEAkHACYACAnRg3btyab37zm5mISGVrjU4AA7Azc+bMiSeeeCKWLVumGZBlEvALfJlx48atNikAgGQTAAMA7MTrr79e29DQsKmwsLBDttZYXFwcZWVlsWXLFgMDIBYsWBDjx4+PJUuWaAZkobKysiguLs7qGhsaGjYuWLCgzrQAAJJNAAwA8B62bt26vF27dh2yucauXbsKgAGauYULF8b48eNj8eLFmgFZLAm3t2zbtm25SQEAJJ8AGADgPVRVVS1t167d0GyusWfPnrFw4ULDAmiGli1bFo899ljMnz9fMyABevbsmfU1VlZWLjUpAIDkEwADALyHdevWLevTp09W15iEF4kA7ForVqyIRx99VPALCZOEfdvatWuXmRQAQPIJgAEA3sPChQuXHX744VldY69evQwKoJlYtWpVjB8/PubOnRuZTEZDIGGSsG9buHDhMpMCAEg+ATAAwHuYNm3a0ksuuSSra+zevXvk5+dHU1OTgQHkqHXr1sX48eNj9uzZgl9IqIKCgkR8A/jpp59eZloAADmw/9QCAICde+ihhzbcd999W/Pz80uzdjNXUBBdunSJNWvWGBhAjqmoqIiJEyfGyy+/HOl0WkMgwbp27RoFBdn9Gq6xsbH6kUce2WBaAADJJwAGAHgf27ZtW15WVnZwNtfYq1cvATBADqmqqoqJEyfG888/74YHyBFJ+P7vtm3blpsUAEBuEAADALyPLVu2LMv2ALhnz57x0ksvGRZAwm3evDkef/zxeOGFF6KxsVFDIIck4fu/W7ZsWWpSAAC5QQAMAPA+1q9fvyzbT2z06NHDoAASbMuWLTFlypSYOXNm1NfXawjkoCTs19avX7/MpAAAcoMAGADgfSxYsGDh0KFDs7rGfffdN1KpVGQyGQMDSJCampqYMmVKPPPMM4JfyGGpVCr23XffrK9z/vz5C00LACA3CIABAN7Ho48++uYFF1yQ1TWWlJRE586dY926dQYGkAC1tbUxefLkePbZZ6Ourk5DIMd17do1WrVqlfV1/vnPf15kWgAAuUEADADwPiZNmlRVX1+/oaioqGM217nvvvsKgAGy3Pbt22P69OkxderU2LZtm4ZAM9GnT5+sr7G+vr7iySefrDItAIDcIAAGAPgAW7duXZTtAXCfPn3ipZdeMiyALNTQ0BDTpk2Lp556KqqrqzUEmpkkXP+8detWp38BAHKIABgA4ANUVFQs7NChw8hsrjEJLxYBmpvGxsaYMWNGPPnkk1FZWakh0EwlYZ9WUVHh+78AADlEAAwA8AGWLl266MADD8zqGnv16hUFBQXR2NhoYAB7WTqdjlmzZsWkSZNi06ZNGgLNWGFhYfTs2TMR+13TAgDIHQJgAIAPMHPmzEWnnnpqdm/qCgqiZ8+esWzZMgMD2EveDn4nT54cGzdu1BAg9tlnn8jPz0/CfnexaQEA5I48LQAAeH+//OUvV6bT6bpsr7NPnz6GBbAXZDKZePHFF+O73/1u3H///cJf4J+ScP1zOp2u++Uvf7nStAAAcocTwAAAH6C6ujpdXV29uE2bNodkc539+vWL6dOnGxjAHpLJZGL27NkxceLEWLNmjYYAO92fJWCvu7i6ujptWgAAuUMADADwIWzYsGFetgfA/fv3NyiAPeTVV1+NSZMmxapVqzQD2KlUKpWI/dmGDRvmmhYAQG4RAAMAfAiLFy9+o2/fvlldY1lZWXTu3DnWr19vYAC7yYIFC2L8+PGxZMkSzQDeV5cuXaK0tDQJ+9z5pgUAkFsEwAAAH8JTTz31+ujRo7O+zv33318ADLAbLFy4MMaPHx+LFy/WDOBD78uSYMqUKa+bFgBAbsnTAgCAD/aLX/xiTWNjY1W215mUF40ASbFs2bK4++674z/+4z+Ev8BHkoTv/zY0NFTee++9q00LACC3OAEMAPAhNDQ0ZDZv3jy/Q4cOI7O5TgEwwK6xYsWKePTRR2P+fDejArm7L9uyZYs/5AAAcpAAGADgQ1q3bl3WB8AdO3aMNm3axObNmw0M4GNYtWpVjB8/PubOnRuZTEZDgI+lbdu20aFDh0Tsb00LACD3CIABAD6kefPmzTvooIOyvs4DDzwwXnrpJQMD+AjWrVsX48ePj9mzZwt+gV2yH0uCuXPnzjMtAIDcIwAGAPiQ/vznP88/77zzsr7OAw44QAAM8CFVVFTEuHHjBL/ALt+PJcHDDz/sBDAAQA4SAAMAfEgTJ06srK2tXdGqVat9srnOgw8+2LAAPkBVVVVMnDgxnn/++WhqatIQYJdKwq0xNTU1yydNmlRlWgAAuUcADADwEWzYsOHvvXr1yuoAuG3bttG1a9dYu3atgQG8y+bNm+Pxxx+PF154IRobGzUE2OW6desWbdu2TcS+1rQAAHKTABgA4CNYuHDha7169Toj2+scMGCAABjgHbZs2RJTpkyJ5557LrZv364hwG6TlO//Lly48O+mBQCQmwTAAAAfwcSJE/9+wgknZH2dBx54YEyfPt3AgGavpqYmpkyZEs8880zU19drCLDbDRgwIBF1jh8//u+mBQCQmwTAAAAfwb333rv6Bz/4wfqioqLO2VznAQccEHl5eZFOpw0NaJZqa2tj8uTJ8eyzz0ZdXZ2GAHtEXl5e9O/fP+vrrK+vX3ffffeVmxgAQG4SAAMAfESVlZVzu3btmtXHgFu1ahX77LNPLFu2zMCAZqWuri6efvrpmDZtWmzbtk1DgD1qn332iVatWmV9nZs2bZpjWgAAuUsADADwES1dunR2tgfAERGDBg0SAAPNRkNDQ0ybNi2eeuqpqK6u1hBgr+2/kuCtt976m2kBAOQuATAAwEc0ffr0v48cOTLr6xw4cGBMmDDBwICc1tDQEM8991w8+eSTUVlZqSHAXt9/JcG0adP+bloAALlLAAwA8BH9x3/8x9JbbrmlOj8/v3U219mrV68oKyuLLVu2GBqQc9LpdMyaNSsmTZoUmzZt0hBgrysrK4tevXplfZ2NjY1b7rnnnmUmBgCQuwTAAAAfUW1tbXrDhg1/7dKly3HZXGcqlYqBAwfGrFmzDA3IGW8Hv5MnT46NGzdqCJA1Bg4cGKlUKuvr3Lhx4yu1tbVpEwMAyF0CYACAj+Gtt956JdsD4IgQAAM5I51Ox8svvxxTpkyJ8vJyDQGyct+VBIsWLXrFtAAAcpsAGADgYxg/fvwrRxxxRNbXedBBB0VBQUE0NjYaGpBImUwmZs+eHRMnTow1a9ZoCJCVCgoK4qCDDkpErY888ogAGAAgx+VpAQDAR/fjH/94ZX19/fpsr7OoqCj69etnYEAivfrqq3HHHXfEz3/+c+EvkNX69esXRUVFWV9nXV1d+b333rvaxAAAcpsTwAAAH9OGDRte6dGjx6ezvc5BgwbFggULDAxIjCVLlsSECRNi/vz5mgEkwuDBgxNR5/r1653+BQBoBgTAAAAf07x5815OQgA8bNiwePjhhyOTyRgakNXefPPNmDBhQixevFgzgMRIpVIxdOjQRNQ6d+7cl0wMACD3CYABAD6m++677+XRo0dnIiKVzXW2bds2evfuHcuWLTM0ICstW7YsHnvsMSd+gUTq06dPtG3bNgmlpu+9996/mhgAQO4TAAMAfEwTJ06s3Lp165LS0tK+2V7rkCFDBMBA1lmxYkU8+uijgl8g0YYMGZKIOqurqxc+/fTTm00MACD3CYABAD6B8vLyl/fff/+sD4AHDx4c48aNMzAgK6xcuTImTJgQc+fOdT09kHhJ+f7vmjVrfP8XAKCZEAADAHwCM2fOfG7//ff/fLbX2a1bt+jWrVuUl5cbGrDXrFu3LsaPHx+zZ88W/AI5oWfPntGlS5dE1DpjxoznTAwAoHkQAAMAfAK33Xbba5dcckl1fn5+62yvdciQIQJgYK9Yv359PPbYY4JfIOck5frnxsbGzbfddts8EwMAaB4EwAAAn0BlZWXThg0b/tqlS5fjsr3WQw89NCZNmmRowJ78MzKeeOKJeP7556OpqUlDgJxz6KGHJqLOioqKV6qrq9MmBgDQPAiAAQA+oXnz5s1MQgDcu3dv10ADe0RVVVVMnDgxXnjhhWhsbNQQICd17949evbsmZT9quufAQCakTwtAAD4ZP77v/97VkQk4kTFpz71KQMDdpstW7bEQw89FLfffns899xzwl8gpw0fPjwRdWYymfTdd9/9gokBADQfTgADAHxCkyZNqtqyZcuCsrKyg7K91uHDh8fjjz9uaMAuVVNTE1OmTIlnnnkm6uvrNQTIealUKg477LBE1Lply5bXp0+fvsXUAACaDwEwAMAusHz58lkDBw7M+gC4S5cu0atXr1i5cqWhAZ9YbW1tTJ48OZ599tmoq6vTEKDZ6N27d3Ts2DEx+1QTAwBoXgTAAAC7wLPPPvvCwIEDr0hCrcOGDRMAA59IXV1dPP300zFt2rTYtm2bhgDNzrBhwxJT61/+8pcXTQwAoHnxDWAAgF3g1ltvnV9fX782CbUefvjhkUqlDA34yBoaGmLq1Klx6623xuOPPy78BZqlJF3/XFdXt/rWW29dYGoAAM2LE8AAALtAQ0NDZs2aNc/16dPns9lea7t27aJPnz6xZMkSgwM+7J9xMW3atHjqqaeiurpaQ4Bmbb/99ou2bdsmotbVq1fPNDEAgOZHAAwAsIs8++yz05IQAEdEHHHEEQJg4AOl0+mYNWtWTJo0KTZt2qQhABFx5JFHJqbW6dOnTzMxAIDmxxXQAAC7yC233PJaQ0NDZRJqHT58eLRo0cLQgJ1Kp9Px3HPPxW233Rb333+/8Bdgh6KiovjUpz6ViFobGho23HLLLXNNDQCg+XECGABgF6murk6Xl5c/t88++5yR7bW2bNkyDj300Hj55ZcNDvindDodL7/8ckyZMiXKy8s1BOBdhgwZEkVFRYmodc2aNc/V1tamTQ0AoPkRAAMA7EIvvvjiM0kIgCMiRo4cKQAGIiIik8nE7NmzY+LEibFmzRoNAXif/VNSzJo161kTAwBongTAAAC70O233/7KOeecszU/P78022sdMGBAtG/f3tWu0My9+uqrMWnSpFi1apVmALyPjh07xgEHHJCIWhsbG6u/8Y1v/NXUAACaJwEwAMAutHLlyob169fP6tat2+hsrzWVSsXhhx8ekyZNMjhohubMmROTJ0+OJUuWaAbAh3D44YdHKpVKRK3r16+fVVFR0WhqAADNU54WAADsWq+++mpirts77LDDDAyamTfffDP+/d//PX7yk58IfwE+pFQqFSNGjEhMva+88sozpgYA0Hw5AQwAsIvddNNNz5166qnV+fn5rbO91m7dukX//v1j4cKFBgc5btmyZfHYY4/F/PnzNQPgIzrggAOic+fOiai1sbFxy4033jjL1AAAmi8BMADALrZy5cqG8vLyGT179vx0Euo9+uijBcCQw5YvXx7jxo0T/AJ8wv1SUpSXlz9TXl7eYGoAAM2XABgAYDeYMWPGUxdccEEiAuAhQ4ZE69ato7q62uAgh6xcuTImTJgQc+fOjUwmoyEAH1ObNm3i0EMPTUy9zz777FOmBgDQvPkGMADAbvDVr371lYaGhk1JqLWgoCCOOOIIQ4McsW7duvj5z38ed955Z8yZM0f4C/AJjRw5MvLz8xNRa0NDw8abbrrpVVMDAGjenAAGANgNKisrm1atWjW9T58+5ySh3qOPPjqefPJJQREk2Pr16+Oxxx6L2bNn+3cZYBdJpVIxatSoxNS7cuXKadXV1WmTAwBo3pwABgDYTaZNm5aY6/c6duwYAwYMMDRIoA0bNsSvf/3r+Nd//dd49dVXhb8Au9CAAQOiY8eOian36aefftLUAAAQAAMA7CZf+9rX5tTX11ckpd6jjjrK0CBBqqqq4v77749vf/vb8eKLL0ZTU5OmAOxiRx55ZGJqra+vX/eNb3zjdVMDAMAV0AAAu0ltbW16xYoVT++///6fT0K9hx56aLRt2zaqqqoMD7LYli1bYsqUKfHcc8/F9u3bNQRgN2nbtm0MGTIkMfUuX778qdraWtc/AwDgBDAAwO70xz/+cUJSas3Pz4/jjjvO0CBL1dTUxKOPPhq33XZb/OUvfxH+Auxmxx57bOTn5yel3Myvf/3rCaYGAECEABgAYLe66667llZXV89PSr1HH310tGjRwuAgi7wd/H7jG9+IqVOnRn19vaYA7GYtWrSIo48+OjH1btmy5Y177rlnhckBABDhCmgAgN3u9ddfn3T44YcPSEKtxcXFcdhhh8XMmTMNDvayurq6ePrpp2PatGmxbds2DQHYgw477LAoKSlJTL3z5s17wtQAAHibE8AAALvZ9773vanpdLohKfWecMIJkUqlDA72koaGhpg6dWrceuut8fjjjwt/AfawVCoVJ5xwQmLqTafT27/73e8+ZXIAALzNCWAAgN1s+vTpWyoqKmZ26dIlER/Y7d69e/Tv3z/efPNNw4M9qKGhIaZNmxZPPfVUVFdXawjAXnLAAQdE9+7dE1NvRUXFczNmzPAXBwAA/+QEMADAHjBr1qxEXcuXpFMvkHTpdDqee+65uP322+PRRx8V/gLsZccff3yi6p0xY8YkUwMA4J2cAAYA2AO++tWvvnT66adXFRYWtk1CvQMHDoyOHTvGhg0bDA92k3Q6HbNmzYrJkyfHxo0bNQQgC3Ts2DEGDhyYmHobGhoqb7755pdMDgCAd3ICGABgDygvL29YsWLF1MRsEvPy4sQTTzQ42A3S6XS8+OKL8Z3vfCfuv/9+4S9AFjnppJMiLy85r8tWrFgxpaKiotHkAAB4JwEwAMAe8qtf/erRiMgkpd6jjjoqysrKDA52kUwmE6+++mp873vfi1//+texdu1aTQHIImVlZXHUUUcl6q+W//7v//6zyQEA8G4CYACAPeQ///M/l1dWVv4tKfUWFhbGMcccY3CwC7wd/P785z+PNWvWaAhAFjruuOOioCA5X0urqqqa/dOf/nS1yQEA8G4CYACAPeill14al6R6jzvuuCgqKjI4+JjmzJkTd911V/z85z+P1au9owfIVkVFRYn7xbcXXnhhnMkBALAzBVoAALDnjB079pkFCxZUFhYWtktCvSUlJXHEEUfE9OnTDQ8+gjfffDPGjx8fb731lmYAJMCRRx4ZJSUliam3oaFh0zXXXPOsyQEAsDMCYACAPai8vLxh6dKlE/v3739xUmo+8cQT49lnn410Om2A8AEWLVoUjz32WCxevFgzABIiLy8vTjzxxETVvGTJkifKy8sbTA8AgJ3ucbUAAGDP+u1vfzsxIjJJqbdjx44xdOhQg4P3sXz58rj77rvjRz/6kfAXIGGGDRsWHTp0SFLJmd/85jePmxwAAO9FAAwAsIf953/+5/JNmza9kqSaTz/99EilUoYH77Jy5cr4yU9+Et///vdj/vz5GgKQMHl5eXHGGWckquZNmza9fM8996wwPQAA3osroAEA9oKXXnpp/KmnnnpYUurt2rVrDBkyJGbPnm14EBHr1q2L8ePHx+zZsyOTyWgIQEINHTo0OnfunKiaX3jhhQkmBwDA+xEAAwDsBZdffvkzS5YsWVdUVNQlKTWfccYZ8be//U3YRbO2fv36eOyxxwS/ADkglUrF6aefnqia6+rq1lx22WXTTQ8AgPcjAAYA2AsqKyub5s+f/8ihhx56dVJq7tatm1PANFsbNmyIxx9/PF555ZVoamrSEIAc8KlPfSq6du2aqJrfeOONcdXV1WnTAwDg/fgGMADAXvL1r399XDqdrktSzb4FTHNTVVUV999/f3z729+OF198UfgLkCNSqVR8+tOfTlTN6XS69pvf/OZjpgcAwAdxAhgAYC+ZMWNG9Zo1a/7Ss2fPxLx97N69ewwcODDmzJljgOS0LVu2xIQJE+KFF16IxsZGDQHIMYceemh069YtUTWvXr36qRkzZlSbHgAAH8QJYACAvejXv/71HyMiUR8SPeuss5wCJmdt27YtHn300bjtttviueeeE/4C5KC8vLwYM2ZM0srO/OpXv/qT6QEA8KH2vFoAALD3fP/733+rqqoqUR/V7dGjR3zqU58yPHJKfX19TJ06Nb71rW/F1KlTo76+XlMActSIESOiS5cuiap506ZNf73rrruWmh4AAB+GABgAYC975plnHkpazWeccUbk5dlKkjvmzZsXjz76aGzdulUzAHJYQUFBnH766Ymre9q0aQ+aHgAAH5a3dgAAe9nYsWNn1tfXr01SzZ07d47DDjvM8ACARBk5cmR06NAhUTXX1dWtHjt27POmBwDAhyUABgDYyyorK5tee+21Pyat7jPPPDMKCgoMEABIhBYtWiTy9O/s2bP/UF1dnTZBAAA+LAEwAEAWuOqqqyY0NjZWJanm9u3bx9FHH214AEAiHHfccdGmTZtE1dzQ0LDxiiuumGh6AAB8FAJgAIAssGDBgrqFCxc+lrS6R48eHYWFhQYIAGS1li1bxsknn5y4uhcuXDhu6dKl200QAICPQgAMAJAlvv71r/8pnU7XJqnmtm3bximnnGJ4AEBWO+2006K0tDRRNTc1NdV+7Wtfe8j0AAD4qATAAABZ4umnn968fPnyxF3xN3r06GjXrp0BAgBZqUOHDnH88ccnru5ly5ZNmD59+hYTBADgoxIAAwBkkbvvvvtPmUymKUk1FxYWxumnn254AEBWOvPMMxP3yYpMJtN41113/dH0AAD4OATAAABZ5Be/+MWatWvXTkta3UcccUT06tXLAAGArNK7d+847LDDEld3eXn5X+6///51JggAwMchAAYAyDIPP/zwn5JWcyqVijPPPNPwAICsMmbMmEilUomr+8EHH/yT6QEA8HEJgAEAsszXv/71NzZs2DAraXUPHDgwDj74YAMEALLCoEGDYsCAAYmru6KiYuatt966wAQBAPi4BMAAAFlo3Lhxv01i3WPGjIm8PFtMAGDvysvLizFjxiSy9j//+c+/NUEAAD7RflgLAACyz/XXXz+nqqrqr0mru1evXnHUUUcZIACwVx1zzDHRvXv3xNW9adOmV2666aa5JggAwCchAAYAyFJ/+tOf7k1i3WPGjInS0lIDBAD2ijZt2sRZZ52VyNofeOCBe00QAIBPSgAMAJClbrrpprlJPAVcXFwcZ555pgECAHvFWWedFS1btkxc3Zs2bXrl5ptvnmeCAAB8UgJgAIAsNm7cuF8lse5Ro0ZF7969DRAA2KP69OkTI0eOTGTtjz322K9MEACAXUEADACQxcaOHTu7qqrqb0mrO5VKxfnnnx+pVMoQAYA9tv/4/Oc/n8j9R2Vl5d+uueaav5kiAAC7ggAYACDLTZ069bdJrLtv374xZMgQAwQA9ojDDjsssTeQTJ48+TcmCADAriIABgDIcpdeeumLVVVVryax9s9//vNRXFxsiADAblVaWhrnn39+Imuvqqr66+WXX/6SKQIAsKsIgAEAEuChhx76WRLrLisri9NPP90AAYDd6qyzzoqSkpIklp753e9+91MTBABgVxIAAwAkwA033DB3w4YNs5JY+3HHHRd9+vQxRABgt+jbt28cddRRiay9oqJi1te//vU3TBEAgF1JAAwAkBA///nPfxoR6aTVnUql4vOf/3zk5dl6AgC7Vn5+flx00UWRSqWSWH76F7/4xX+bIgAAu5q3cAAACXHHHXe8tW7duulJrL13795xzDHHGCIAsEudcMIJ0b1790TWXl5e/pc77rjjLVMEAGBXEwADACTI3XfffW8mk2lKYu1nnXVWtG3b1hABgF2iQ4cOcfrppyey9kwm03T33Xf/3BQBANgdBMAAAAlyzz33rCgvL386ibW3bNkyzj33XEMEAHaJc889N1q0aJHI2tesWTP1xz/+8UpTBABgdxAAAwAkzA9/+MOfZzKZhiTWPnz48Bg0aJAhAgCfyKGHHhpDhw5NZO3pdLrhBz/4wS9MEQCA3UUADACQMPfee+/qRYsWPZDU+i+++OIoKSkxSADgY2ndunVcfPHFia1/4cKFf7jvvvvKTRIAgN1FAAwAkECXXXbZrxsaGjYlsfaysjJXQQMAH9u5554bpaWliay9oaFh4+WXX/47UwQAYHcSAAMAJNDs2bNrXn311V8ntf4jjjgiDj74YIMEAD6SwYMHx+GHH57Y+l955ZX7Zs+eXWOSAADsTgJgAICEOueccx6tqalZmtT6L7roomjZsqVBAgAfSsuWLeNzn/tcYuuvqalZMmbMmMdMEgCA3U0ADACQUJWVlU3Tpk37RVLrb9++fZx++ukGCQB8KGeccUa0b98+sfU/+eST91ZXV6dNEgCA3U0ADACQYOedd960qqqqV5Ja/wknnOAqaADgAx188MFx/PHHJ7b+TZs2vXzBBRc8a5IAAOwJAmAAgIT74x//eG9EZJJYeyqVigsuuMBV0ADAe2rZsmVccMEFkUqlkrqEzP333/8zkwQAYE8RAAMAJNzNN988b9WqVU8ktf6OHTsm+nt+AMDudcEFF0THjh0TW/+KFSse//rXv/6GSQIAsKcIgAEAcsCNN974k6ampq1JrX/kyJExdOhQgwQA/pdPfepTMWLEiMTW39TUVH3zzTf/t0kCALAnCYABAHLAxIkTK//+97//KslruPDCC6OsrMwwAYCIiGjTpk18/vOfT/QaZs+efd/EiRMrTRMAgD1JAAwAkCPOPvvsh2pqapYntf7S0tK46KKLDBIAiFQqFV/84hejtLQ0sWuoqal566yzznrYNAEA2NMEwAAAOaKioqJx0qRJP07yGgYPHhwjR440TABo5o444og46KCDEr2GJ5544qeVlZVNpgkAwJ4mAAYAyCGXXHLJzIqKihlJXsMFF1wQ3bp1M0wAaKZ69uyZ+KufKyoqZnzhC1+YZZoAAOwNAmAAgBzzb//2b/ek0+ntSa2/RYsWceWVV0ZhYaFhAkAzU1hYGF/60pcSvQ9Ip9Pb/+3f/u0e0wQAYG8RAAMA5Jh777139aJFix5M8hq6d+8eZ555pmECQDNzxhlnRPfu3RO9hsWLFz947733rjZNAAD2FgEwAEAO+uxnP/vL2traRL94PPHEE2Pw4MGGCQDNxKBBg+Kkk05K9Bpqa2tXn3vuub80TQAA9iYBMABADlq8eHH9uHHj/j3Ja0ilUnHJJZdE27ZtDRQAclybNm3ikksuiVQqleh1jBs37t8XL15cb6IAAOxNAmAAgBx1+eWXv1RRUTEjyWsoLS2NL3zhC4l/GQwAvLe3f+mrdevWiV5HRUXFM5dffvlLJgoAwN4mAAYAyGE33HDDXU1NTVuTvIaDDjrI94ABIId95jOfiUMOOSTRa2hqaqq+4YYbfmiaAABkAwEwAEAOGzdu3MbZs2cn/jt0p5xyiu8BA0AOOuSQQ+LTn/504tfx17/+9efjxo3baKIAAGQDATAAQI77zGc+81B1dfXCJK8hlUrFF7/4xejQoYOBAkCO6NixY3zpS19K/KceNm/ePO+00057xEQBAMgWAmAAgBxXXV2dfuCBB34UEekkr6O4uDguvfTSyMuzhQWApMvPz4/LLrssiouLk76U9P333/+ftbW1aVMFACBbeHsGANAMXH/99XMWLVr0YNLXsf/++8e5555roACQcOedd1707ds38etYuHDhH7/61a++bqIAAGQTATAAQDNxySWX/Lyurq486es4/vjjfQ8YABJs2LBhccwxxyR+HXV1dWsuvPDC+0wUAIBsIwAGAGgmXnvttdoHHnjguxGRSfI6UqlUfOlLX4oePXoYKgAkTO/evePSSy9N/Hd/IyLzwAMPfO/111+vNVUAALKNABgAoBm5+uqr/7Z06dJHk76OoqKiGDt2bJSWlhoqACRE69at46qrrorCwsLEr2X58uXjrr766r+ZKgAA2UgADADQzJx33nn/r66ubnXS19GhQ4e4/PLLIy/PlhYAsl1eXl5cfvnl0b59+8Svpb6+ft0ll1zyE1MFACBr999aAADQvLz++uu1Dz744Pcj4VdBR0QMGDAgzjrrLEMFgCw3ZsyYOPDAA3NiLY899tgPXnnllW2mCgBAthIAAwA0Q1/5ylf+umbNmqm5sJaTTz45Dj30UEMFgCw1ZMiQOOmkk3JiLWvXrv3LpZde+oKpAgCQzQTAAADN1GWXXfYf9fX1FUlfRyqViksvvTS6d+9uqACQZXr06BFf/OIXI5VKJX4tDQ0Nm6655pofmioAANlOAAwA0EzNmDGj+oEHHvhO5MBV0C1btozrr78+2rZta7AAkCXatWsX1113XbRs2TIXlpN56KGH/nXSpElVJgsAQLYTAAMANGNf+cpX/rpkyZI/58Ja2rZtG1dffXW0aNHCYAFgL2vRokVcffXVOfPLWUuXLn30iiuueNlkAQBIAgEwAEAzd+655/6ktrZ2eS6spXfv3jlzzSQAJNXbn2fYZ599cmI9tbW1y88555wfmywAAEkhAAYAaOYWLFhQ97Of/ezbmUymMRfWM2zYsDjllFMMFgD2kk9/+tMxdOjQnFhLJpNp/NnPfvbtBQsW1JksAABJIQAGACBuvfXWBfPnz78/V9Zz5plnxuDBgw0WAPaw4cOHx2c+85mcWc/8+fN/d+utty4wWQAAkkQADABARESMGTPmvpqamrdyYS2pVCouu+yy6Nmzp8ECwB7Su3fvuPjii3PmUwxbt25ddPrpp//aZAEASBoBMAAAERGxcuXKhh/+8Ie3pdPpnLjisGXLlvEv//Iv0aVLF8MFgN2sS5cucf3110dRUVFOrKepqanmu9/97jfKy8sbTBcAgKQRAAMA8E933XXX0ueff/6eXFlPaWlpXHvttVFWVma4ALCblJWVxXXXXRclJSU5s6aZM2fe/f/+3/9bZboAACSRABgAgP/l5JNPHldeXv50rqynU6dOMXbs2Jw5kQQA2aSoqCiuueaa6NixY86sqby8/MlTTz11gukCAJBUAmAAAP6PSy655K66urq1ubKefffdN6644orIy7P9BYBdJS8vL6688sro3bt3zqyprq6u/JJLLvmh6QIAkOi9uhYAAPBus2bNqn7ooYfujIh0rqxp4MCBcd555xkuAOwi559/fhxyyCG5tKT0gw8+eOesWbOqTRcAgCTLb3tQ9NzpjndbRG15oQ4BADRTEydOXDNmzJi8Tp06Dc2VNfXp0yfy8/PjzTffNGAA+ATOOuusOOmkk3JqTa+//vp9Z5555kTTBQAgCYq7N0Ze6c5/5gQwAADv6dRTT/31li1bXs+lNZ122mlx9NFHGy4AfEzHHntsnHrqqTm1pi1btrxx2mmn/cZ0AQDIBQJgAADeU0VFReONN974jcbGxqpcWtcFF1wQRx55pAEDwEd05JFHxuc+97mcWlNjY2PVzTff/I2KiopGEwYAIBcIgAEAeF9//OMf1z/yyCPfiRz6HnAqlYqLLroohgwZYsAA8CENHTo0LrrookilUrm0rPQjjzzynfvvv3+dCQMAkCsEwAAAfKBLL730hQULFvwupzbCeXnxpS99Kfbff38DBoAPcNBBB8WXvvSlyMvLrVdJCxYs+N2ll176ggkDAJBLBMAAAHwoo0eP/mVVVdXcXFpTYWFhfOUrX4kePXoYMAC8h169esUVV1wRBQUFObWuqqqqOaNHj/6lCQMAkGsEwAAAfCgVFRWNV1111S0NDQ0bcmldJSUlcfPNN8c+++xjyADwLr17946bbropiouLc2pdDQ0NG6666qqv++4vAAC5SAAMAMCHNmHChE3333//tzKZTDqX1lVcXBzXXXdddO/e3ZABYIfu3bvHtddeG61atcqpdWUymfT999//rQkTJmwyZQAAcpEAGACAj2Ts2LGz58+f/9tcW1fr1q3juuuuiw4dOhgyAM1ehw4d4rrrrovWrVvn3Nrmz5//m7Fjx842ZQAAcpUAGACAj+y44477xaZNm17MtXW1a9cubrzxxmjXrp0hA9BstW3bNmf/Pty4ceOLxx13nO/+AgCQ0wTAAAB8ZNXV1emLL774W3V1datzbW0dO3aMG2+8Mdq0aWPQADQ7ZWVlceONN0bHjh1zbm21tbWrL7zwwturq6vTJg0AQC7Lb3tQ9NzZD9LbImrLC3UIAICdWrZsWf327dtfOvbYY0/Ny8trkUtrKykpiaFDh8Zrr70WNTU1hg1As9ChQ4f42te+Fp06dcq5tTU1NW39zne+M/bBBx9cb9IAAOSC4u6NkVe6858JgAEA+NhefPHFzYcccsiyAQMGnBgRqZzaRBcXx5AhQ4TAADQLHTt2jJtuuik6dOiQi8tLjx8//ravfvWrc0waAIBc8X4BsCugAQD4RC688MIZb7zxxm9ycW3t27ePm266KSdPQgHA2zp16pTL4W+88cYbv77wwgufM2kAAJoLATAAAJ/YqFGjfrFhw4aZubi2t0Pgzp07GzQAOadz585x0003Rfv27XNyfRs2bJg5atSo+0waAIDmRAAMAMAnVltbm77sssu+V1dXtzoX19euXbu44YYbomPHjoYNQM7o0KFDXH/99dGuXbtc3Z+s/sIXvvDd2tratGkDANCc+AYwAAC7xJIlS+oj4pVRo0admpeX1yLX1ldcXBxDhw6NuXPnxrZt2wwcgETr0qVL3HjjjTl77XNTU1P1nXfeec0f/vCHdaYNAEAuer9vAAuAAQDYZWbNmlXVo0ePuYceeujoVCqVn2vra9WqVYwYMSIWLVoUlZWVBg5AIu23335x0003RVlZWU6uL51ON/z617++4fbbb3/TtAEAyFUCYAAA9phJkyatPeqoozbsu+++R+fi+goLC2P48OGxbNmy2LBhg4EDkCgDBgyIa6+9Nlq1apWza5w2bdq/XXLJJc+ZNgAAuez9AmDfAAYAYJc77bTTHn/rrbcezNX1FRUVxTXXXBNDhgwxbAASY8iQIXHNNddEUVFRzq5xwYIFvzv99NOfMG0AAJozATAAALvFEUcccc+GDRtm5ur6CgoK4sorr4wjjjjCsAFIwt/LceWVV0ZBQUHOrrG8vPypESNG/LdpAwDQ3AmAAQDYLaqrq9MXXXTRd2pra1fk7GY6Ly8uvvjiOPLIIw0cgKw1atSouPjiiyMvL3dfA23dunXxZz/72e83NDRkTBwAgObON4ABANhtli9fvr2mpuaFY4899uT8/PyWubjGVCoVgwYNikwmE4sWLTJ0ALLK6aefHueee26kUqmcXWN9fX3FDTfccM3UqVOrTBwAgObi/b4BLAAGAGC3evnll7cUFBS8cMQRR4zOy8trkYtrTKVSccABB0SnTp1i7ty5kck4fATA3lVYWBhXXHFFHHPMMTm9zsbGxuo777zzKz/72c9WmzoAAM2JABgAgL1qxowZlb169Xp98ODBJ6dSqfxcXWfPnj2jb9++8fe//z0aGxsNHoC9olWrVnH11VfHwIEDc3qd6XS64be//e2Nt9122wJTBwCguREAAwCw1z3xxBPlw4cPX9OvX79jIyJn76Hs2LFjDBw4MObMmRN1dXUGD8Ae1a5du7jxxhujT58+ub7U9JQpU779xS9+8XlTBwCgOXq/ADhPewAA2FPGjBkz9Y033vh1rq+zZ8+eceONN0bHjh0NHYA9pkuXLnHTTTdF9+7dc36tc+fO/eU555zzF1MHAID/SwAMAMAe9alPfernS5cufTjX19mlS5e49dZb48ADDzR0AHa7gQMHxje/+c3o1KlTzq/1rbfeemjEiBG/MnUAANg5ATAAAHvcsccee8/GjRtfyPV1FhcXx7XXXhsjRowwdAB2m8MPPzyuuuqqaNmyZc6vdePGjc8fffTR95g6AAC8NwEwAAB7XEVFReNxxx339crKyr/l+loLCgrisssui/PPPz9SqZThA7DLpFKpOP/88+PSSy+NgoKCnF/vpk2bXj7ssMNuqaysbDJ9AAB4bwJgAAD2isWLF9efddZZN1dXV7/ZHNZ7/PHHx5e//OUoKioyfAA+sRYtWsSXv/zlOP7445vFequrq98cM2bMN8rLyxtMHwAA3l9+24Oi585+kN4WUVteqEMAAOw2a9asaVi1atWs0aNHH1dQUNA619fbrVu3OOCAA2LevHlRX1/vAQDgYykrK4trrrkmDjrooGax3rq6uvKxY8de89RTT202fQAA+Ifi7o2RV7rznwmAAQDYq+bNm1ezevXqZ04++eTjCwoKSnN9ve3atYuRI0fG8uXLY+PGjR4AAD6S/v37x0033RRdu3ZtFuutr69fd9111335T3/6U4XpAwDA/xAAAwCQ1ebMmbMtlUq9fOSRR56Ul5eX83ckt2jRIkaMGBG1tbWxdOlSDwAAH8rxxx8fX/rSl5rN5wQaGxu33HXXXdf99Kc/XWn6AADwvwmAAQDIejNnzqzs2bPn64MHDz4plUrl5/p6U6lUHHLIIdGqVatYsGBBZDIZDwEAO5WXlxef/exn4/TTT49UKtUs1pxOp7f//ve//+o3vvGN1z0BAADwfwmAAQBIhEmTJpXvs88+8wYOHHhCKpUqaA5r3m+//WLAgAExd+5c3wUG4P8oKyuL6667LoYNG9Zs1pxOp7f/8Y9/vOmqq676qycAAAB2TgAMAEBiTJw4cc3BBx+85MADDzwulUrlNYc1t2/fPoYOHRqLFi2KLVu2eAgAiIiIffbZJ66//vro2bNns1lzJpNpnDBhwm1f/OIXn/cEAADAexMAAwCQKI8++ujy/fff/42DDjrohOZwHXRERHFxcRx11FHR2NgYb731locAoJkbPXp0XHHFFVFSUtJs1pxOpxsefvjhr15yySWzPAEAAPD+BMAAACTO+PHjVw0cOHDpAQcccGxzOQmcSqViwIAB0aVLl3jjjTeiqanJgwDQzBQVFcWll14aJ554YrP53m/EP07+Pv7447dffPHFMz0FAADwwQTAAAAk0iOPPLLs0EMPXbb//vs3mxA4IqJHjx4xZMiQePPNN2Pr1q0eBIBmonv37vEv//IvccABBzSrdWcymaYnnnji9s997nPPeAoAAODDEQADAJBYDz/88NJjjjlmY+/evY+KiGZzFKq0tDSGDx8eq1evjvXr13sQAHLcwIED45prrol27do1t6VnZsyY8YOzzjprqqcAAAA+PAEwAACJdv/99795zDHHVO6zzz5HRDMKgVu0aBGHHXZYtGzZMhYuXBjpdNrDAJBjCgoK4pxzzonzzz8/WrRo0dyWn37uuefuOuWUUyZ4EgAA4KMRAAMAkHi///3v5w8bNmxF3759j2lO10GnUqno27dvDB06NBYvXhxbtmzxMADkiJ49e8YNN9wQgwcPblbf+434x7XPU6ZM+fbpp58+2ZMAAAAfnQAYAICc8OCDDy4ZNmzYin79+jWrEDgionXr1nHEEUdEfX19LF261MMAkGCpVCpOOOGEuOKKK6JNmzbNbv07wt9vnXPOOX/xNAAAwMcjAAYAIGc89NBDS4YNG7a8X79+xza3EDg/Pz8OPvjg6NWrV8yfPz8aGho8EAAJU1JSEpdffnmccMIJkZ+f3+zWn8lkGp944olvffazn53maQAAgI9PAAwAQE556KGHlo4cOXJdnz59RqWa252ZEdG1a9cYNmxYLFu2LCorKz0QAAnRt2/fuO6662K//fZrluvPZDLpp59++rvnnHPO054GAAD4ZATAAADknD/96U+LDj300KX7779/s7sOOiKiuLg4jjzyyCgpKYk333wz0um0hwIgSxUUFMRnP/vZuPDCC6OkpKRZ9iCdTjc88sgjt5x//vnTPREAAPDJCYABAMhJDz/88NId3wQelUqlmt09mqlUKvr06RMHH3xwLFy4MLZt2+ahAMgynTt3jrFjx8bQoUOjGV5aERH/CH+feOKJ2y+88MLnPBEAALBrCIABAMhZDz300JIePXq8NmjQoGPz8vJaNMcetG3bNkaNGhVNTU2xZMkSDwVAFkilUjF69Oi48soro0OHDs22D01NTdt++9vf/stll132oqcCAAB2HQEwAAA5bdKkSeXdu3efM3jw4GYbAufn58eAAQOiV69esWDBgti+fbsHA2Avad26dVx66aVx/PHHR35+frPtQ2NjY/WvfvWrf7nuuute81QAAMCuJQAGACDnTZ48eW1jY+OMI4444uiCgoKS5tqHrl27xqhRo2Lbtm2xcuVKDwbAHpRKpWLUqFExduzY6NWrV7PuRX19/fo77rjjK9/61rcWejIAAGDXEwADANAsPP/881UbNmx45rjjjjuqsLCwrLn2obCwMAYNGhT77bdfLF68OGpraz0cALtZ+/bt44orrogTTzwxCgub9/uU2tralTfffPPVP/nJT1Z7MgAAYPcQAAMA0Gz87W9/27p27doZJ5xwwsjCwsK2zbkXnTp1ipEjR0Z1dbXTwAC70ciRI+Pqq6+OHj16NPte1NTULL/hhhuu/e1vf7vOkwEAALuPABgAgGbltdde2zpv3rynTznllKFFRUWdmnMvCgsL49BDD4399tsvFi1a5DQwwC709qnfk08+udmf+o2I2Lx587yLL774unHjxm30dAAAwO71fgFwat9zYsTOftC4LmLjq610DwCAxOrVq1fhs88++69du3Y9QTciGhoaYurUqTF58uRobGzUEICPqaCgIE499dQYPXq04HeH8vLyp4499tjvrly5skE3AABg9+swrDYKuuz8ZwJgAAByWuvWrfNeeumlm/fdd9+zdeMfVq9eHffff38sWbJEMwA+ov322y8uuugi1z2/w8KFC38/fPjwnzY0NGR0AwAA9gwBMAAAzd7zzz9/8aGHHnp1RKR0IyKTycTMmTPjz3/+c9TV1WkIwAcoKSmJ8847L0aMGBGplL9Kdki//PLL9xx77LEPagUAAOxZ7xcA+wYwAADNwn333Tfn+OOP39yrV6/DQwgcqVQqevfuHcOHD49169ZFRUWFhwTgPRxyyCExduzY6N+/v/B3h0wm0/jMM8/828knnzxONwAAYM97v28AC4ABAGg2fve7370xePDgJf369Ts6lUrl60hEcXFxjBgxInr06BFLly6N2tpaTQHYoUOHDvGFL3whzjzzzCguLtaQHZqammoeeOCBWz73uc9N1w0AANg7BMAAALDDww8/vKygoOC54cOHH1FQUFCqI//QrVu3OO6446K0tDQWL14cTU1NmgI0Wy1btoxzzjknLr300ujevbuGvENtbe2K22677arbbrvtDd0AAIC9RwAMAADv8Oyzz25avHjx0yeddNKQoqKiTjryD3l5edGnT58YOXJkbN26NVatWqUpQLNz+OGHx1e+8pUYMGBA5OXlacg7VFVV/e3CCy+8/oEHHvDdAAAA2MsEwAAA8C7z58+vefbZZ58+44wz+hcXF/fSkf/RsmXLGDJkSOyzzz6xdOnSqKmp0RQg53Xs2DG++MUvximnnBItW7bUkHdZt27dMyeffPI3Xn755W26AQAAe9/7BcCpfc+JETv7QeO6iI2vttI9AAByWmFhYer555//0sEHH3y5bvxfTU1N8fzzz8f48eOjurpaQ4Cc07p16zjzzDPjyCOPdOJ35zJ///vff3rMMcfc39DQkNEOAADIDh2G1UZBl53/TAAMAAARMWnSpM8cc8wxt6RSKdfg7ERNTU1MmTIlpk2bFg0NDRoCJF5hYWGccsopcdJJJ0VRUZGG7EQ6na6fOnXqd88555y/6AYAAGSX9wuAXQENAAAR8Yc//GHhfvvt98aAAQOOysvLkwS8S2FhYQwYMCCGDh0amzZtinXr1mkKkFiDBw+Oq666KoYOHRoFBQUashONjY1Vv//972/5whe+MEs3AAAg+/gGMAAAfAgTJkxYXV1dPf3II4/8VGFhYTsd+b9KS0vjsMMOi/79+8eaNWti8+bNmgIkRu/evePyyy+PU045JUpLSzXkPWzdunXxLbfccs33vve9hboBAADZyTeAAQDgI+jTp0+LJ5988us9evQ4TTfe3/z58+ORRx6JlStXagaQtXr16hXnnHNODBgwQDM+wKpVq5444YQTfrBy5Ur3/QMAQBbzDWAAAPgYnnnmmfOHDx9+fSqVytON95bJZGL27Nkxbty4qKio0BAga3Tu3DnOOuusGDp0aKRSKQ15/z/Lm2bNmvXDk08++THdAACA7OcbwAAA8DH85je/eX3//fd//cADDzzSd4HfWyqViu7du8cxxxwT7dq1i2XLlkV9fb3GAHtN27Zt49xzz42LL744evToIfz9AI2NjdUPPvjgLZ/97Gf/ohsAAJAMvgEMAAAf0/jx41dFxPOHHXbYiMLCwjIdeW95eXnRu3fvOOqoo6KgoCBWrlwZjY2NGgPsMcXFxXHKKafEl770pejbt2/k5bnA4YPU1tau+MEPfnD9LbfcMk83AAAgQf/94xvAAADwyQwePLjVo48++s1u3bqdpBsfTn19fTzzzDMxderU2LZtm4YAu01ZWVmceuqpceSRR0ZRkQsbPqyVK1c+/ulPf/pHixcvdm0DAAAkjG8AAwDALvLkk0+edeSRR96USqVcl/MhCYKB3eXtE7/HHnus4PcjyGQyDbNmzfoP3/sFAIDk8g1gAADYRX7/+98v6NGjx2uHHHLIyPz8fL8x+SEUFBREv3794qijjoq8vLxYtWqVq6GBT6Rly5ZxwgknxBVXXBEHHXRQFBQUaMqH1NDQsOG3v/3t1z7/+c8/oxsAAJBcroAGAIBd7Lzzzut4991339m2bdvBuvHR1NTUxLPPPhvTpk2LLVu2aAjwoZWVlcXxxx8fxxxzTBQXF2vIR1RVVfW3a6+99vZHHnlkg24AAECyuQIaAAB2g06dOhVMmzZtbN++fT8XESkd+WgaGhri+eefjyeffDI2bJBFAO/7522cdNJJccQRR0RhodvKPobMokWL/nTsscf+pLKyskk7AAAg+QTAAACwG/3hD38Ydfrpp99WUFDQRjc+unQ6Ha+++mpMnTo1Vq5cqSHAP/Xq1StOOeWUGDp0aOTl5WnIx9DY2Fg1YcKEOy666KKZugEAALlDAAwAALvZaaed1vbee+/9docOHUbqxse3fPnymDZtWrz88suRTqc1BJqhvLy8OOyww+L444+P3r17a8gnsHHjxue//OUvf3fSpElVugEAALlFAAwAAHtAYWFh6qmnnjpv+PDh16RSKXeUfgIbNmyIGTNmxHPPPRc1NTUaAs1AcXFxjBo1Ko4++ujo2LGjhnwCmUym4ZVXXvl/J5100kMNDQ0ZHQEAgNzzfgFwftuDoufOfpDeFlFb7p0VAAB8WOl0On7zm9+8Xlpa+uLgwYM/VVhYWKYrH09xcXEMGDAgjj322GjTpk2sXbs2amtrNQZyUIcOHeKMM86ISy+9NAYOHBjFxcWa8gnU1tau+slPfnLjxRdf/IybFAAAIHcVd2+MvNKd/8wJYAAA2A1OPPHENvfdd9+tnTp1Olo3PrnGxsb429/+Fs8++2wsWrRIQyAH9OvXL44++ugYNmxYFBQUaMguUFFR8cwXv/jFf5s+ffoW3QAAgNzmCmgAANhLHn744RNGjx799YKCgta6sWusX78+Zs6cGc8//3xUV1drCCRIaWlpHHnkkXHUUUdF586dNWQXaWxs3DJ16tS7PvvZz/5FNwAAoHkQAAMAwF50ySWXdP3+97//rXbt2g3VjV2nsbExXnvttXjuuedi/vz5GgJZbMCAATFq1KgYPHiw0767WFVV1atf//rXv/e73/1urW4AAEDzIQAGAIC9rF27dvlTp0699OCDD740lUrl68iutXz58nj++efj5ZdfjpqaGg2BLFBSUhLDhw+PI444Inr37q0hu1gmk2mcN2/efSeeeOJvq6urfewXAACaGQEwAABkia9//ev73Xjjjf9aWlraXzd2vXQ6HW+++WY899xz8dprr0VjY6OmwB5UUFAQgwcPjlGjRsUBBxwQeXl5mrIbVFdXL/zP//zPf/3BD36wRDcAAKB5EgADAEAWOfjgg1v9+c9/vrZ3795jIiKlI7tHZWVlvPjii/HCCy/EunXrNAR2o65du8bIkSPj8MMPj7Zt22rI7pNZunTpn88888z/t3jx4nrtAACA5ksADAAAWejuu+8eePHFF9/WqlUrd6PuZuXl5fHqq6/GSy+9FOvXr9cQ2AU6d+4cI0aMiGHDhkW3bt00ZDerqalZ9tvf/vbOm266aa5uAAAAAmAAAMhS/fr1K3r44Ycv79+//4WpVMpdqXvA8uXL46WXXoqXX345qqurNQQ+grKyshg+fHiMGDHCd333kEwmk164cOEfzj777F8sXbp0u44AAAARAmAAAMh6P/3pT4d97nOf+2bLli176Mae0dDQEHPnzo2//vWvMXfu3Ni+Xa4CO9OyZcsYNGhQDBs2LA455JAoKCjQlD2ktrZ21R//+Mc7rr322r/rBgAA8E4CYAAASIA+ffq0ePTRR69wGnjPS6fTsXTp0nj11VedDIaIaNu2bQwbNiyGDRsWffr0ibw8fyTtSZlMpuG11177+ZlnnvmnioqKRh0BAADeTQAMAAAJ8uMf//jQCy644JutWrXaRzf2vLdPBs+ePTvmzp0bdXV1mkKzUFZWFoMHD45hw4ZF//79Iz8/X1P2gpqammX333//nTfccINv/QIAAO9JAAwAAAnTrl27/HHjxp37qU996qq8vDwb870kk8nEihUrYu7cuTFnzpxYsWJFZDIZjSEnpFKp6Nu3bwwbNiwGDRoUHTt21JS9qKmpqfbVV1/92ZgxY/5cWVnZpCMAAMD7EQADAEBCffnLX+5x++23f7V9+/aH68bet2XLlnjjjTdizpw5MW/evKivr9cUEqVly5Zx8MEHx6BBg+KQQw6J0tJSTckCGzdufPG73/3uv//iF79YoxsAAMCHIQAGAIAEKywsTE2cOPGMkSNHXlNQUNBaR7JDXV1dvPnmm/HGG2/EG2+8EevXr9cUslKXLl3ioIMOioMOOigOOOCAKCoq0pQs0djYuGXmzJk/PvPMMyc2NDS4XgAAAPjQBMAAAJADjjzyyNY/+9nPrujbt++5EZGnI9mluro6Fi5cGPPnz4958+ZFZWWlprBXtGvXLg455JAYMGBA9O/fP1q39nsjWSj91ltv/fmqq676xaxZs6q1AwAA+KgEwAAAkEN++ctfjhgzZsyNrVq16q0b2SmdTsfKlStj0aJFsXDhwli8eHFs27ZNY9gtSkpKol+/ftG/f//Yf//9o1evXpGX53dEslVNTc3yRx999EdXXnnlK7oBAAB8XAJgAADIMd26dSt8+OGHPzd48ODL8vPzbdyzXCaTiTVr1sTChQtj0aJFsWjRotiyZYvG8LGUlZVF//79/xn6du/ePVKplMZkuaampprXXnvtV2PGjHmgoqKiUUcAAIBPQgAMAAA56rjjjiv7r//6r8tdC508mzdvjuXLl8eKFSti+fLlsXjx4qipqdEY/pfi4uLo169f9O7dO/bZZ5/Yd999o6ysTGMSJJPJpJcsWfLn66677pfTp0/3mx8AAMAuIQAGAIAc99Of/nTIueeee3NpaWlf3UimxsbGWLlyZSxdujSWLVsWy5cvj3Xr1kUmk9GcZiKVSkWXLl1in332iT59+kSfPn2iV69eUVBQoDkJtXXr1sUPPvjgj6699tq/6wYAALArCYABAKAZaNeuXf64cePOGTp06BUFBQWtdST56uvrY+XKlf88KbxixYpYu3ZtpNNpzUm4vLy86Nq1a+yzzz7//KdXr17RsmVLzckBjY2NW/7617/+4pxzznm0srKySUcAAIBdTQAMAADNyIknntjmnnvuuXzfffcdk0qlHB3MMdu3b481a9bEmjVrYu3atbF27dooLy+PDRs2CIazUF5eXnTs2DG6desWXbt2jW7dukW3bt2iR48eUVhYqEE5JpPJNC5ZsuRR1z0DAAC7mwAYAACaoa9+9av7Xnfdddd16NDhCN3IfY2Njf8MhNetWxfr1q2LioqKWLduXWzbtk2DdrPS0tLo3LnzP//p0qVLdO3aNbp27eoK52Ziw4YNM//rv/7rxz/60Y+W6wYAALC7CYABAKAZ++UvfznirLPOuq64uNj3gZupmpqaWL9+/T//qaioiMrKyqisrIxNmzZFY2OjJn2AgoKCaN++fbRr1y7at28fHTt2jC5dukSnTp2ic+fOUVxcrEnN1NatW98aP378PVdcccXLugEAAOwpAmAAAGjm2rVrl//ggw+eOWLEiCsLCwvb6gjvtHnz5n+GwZs2bYrKysqorq6OLVu2xJYtW6K6ujqqq6sjk8nk3NpTqVS0bt06WrduHWVlZdGmTZsoLS39X2Fvu3btok2bNh4U/peGhobKl1566efnnHPO+OrqavevAwAAe5QAGAAAiIiIoUOHFt97770XHHjggRfk5+c7ssiHlk6n/xkEV1dXR01Nzfv+k8lkora2NtLpdNTX10dTU1PU1dXt0u8U5+XlRcuWLSM/Pz+KiooiLy8vWrVqFalUKoqLi3f6T0lJSbRq1eqfgW9paWnk5eUZMB9aU1NTzYIFC/745S9/+Y+zZ8+u0REAAGBvEAADAAD/y2mnndb2rrvuurRPnz5n5+XlFeoIe9LbgfDbtm/f/r7XUBcUFESLFi3++b/fDnxhT8pkMg1LliwZd8stt/xq0qRJVToCAADsTQJgAABgp0477bS2d95554X777//5wTBAP9XJpNpWLhw4QO33nrrHwS/AABAtni/ADi/7UHRc2c/SG+LqC33/gcAAHLZokWL6u69995X0un0swcddFCnkpKS3roC8A8VFRUz/7//7/+77aKLLpq6aNGiOh0BAACyRXH3xsgr3fnPBMAAAEDMnDmz8u67736qqalpWr9+/Ypbt27dN5VKpXQGaG4ymUx6zZo1U+65555/Peeccx6cOXNmpa4AAADZRgAMAAB8KDNnzqz88Y9//Gw6nZ4uCAaak7eD37vvvvtfzz///McEvwAAQDYTAAMAAB+JIBhoLgS/AABAEgmAAQCAj+XtILisrOyFvn37diwuLu4VEYJgIBdkKioqnrv33nu/PWbMmEcEvwAAQJK8XwCc2vecGLGzHzSui9j4aivdAwAA/unqq6/u8ZWvfOX8Pn36nJWXl9dCR4CkSafT9UuXLh3/X//1Xw/84he/WKMjAABAEnUYVhsFXXb+MwEwAADwkZ1xxhntb7/99rMPPPDA8/Pz81vrCJDtmpqaqhcsWPDgd77znUcmTpzotC8AAJBoAmAAAGC3GD58eMkPf/jDzwwePPjioqKijjoCZJv6+voNr7322u9vvPHGx2fPnl2jIwAAQC4QAAMAALvV0KFDi++5556zDjnkkPOKioq66giwt9XV1a19/fXXH7z++uvHC34BAIBcIwAGAAD2iFatWuXdc889w0455ZTzO3bseJSOAHtYZsOGDbOmTJny4PXXX/9qbW1tWksAAIBcJAAGAAD2uH/913/tf/7555/dq1ev0/Ly8lroCLC7pNPp+pUrV05+4IEHHvnOd76zSEcAAIBcJwAGAAD2mjPOOKP97bfffvYBBxzw2YKCgjY6AuwqjY2NVW+++eafv/e97z06YcKETToCAAA0FwJgAABgrxs+fHjJ97///dGDBg0aU1paur+OAB9XdXX1wtdee+3Rr371q1Nfe+21Wh0BAACaGwEwAACQVb761a/ue8EFF3y6b9++ZxUUFLTWEeCDNDY2bnnrrbfG/+EPf5j4ox/9aLmOAAAAzZkAGAAAyEpDhw4t/sEPfnDy4MGDz27dunV/HQHerbq6+s2XX375weuuu+7ppUuXbtcRAAAAATAAAJDlCgsLU3ffffeQ0aNHn9G1a9fj8vLyinQFmq90Ol1XXl4+bcqUKROuvfbav+sIAADA/yYABgAAEqNPnz4t/v3f/33UyJEjz2rfvv2nIiKlK9AsZDZt2vTXF1544bGvfe1rzzntCwAA8N4EwAAAQCJddNFFXa6++uqTDzzwwLNbtmzZTUcg99TV1a1ZsGDBuJ/+9KdP3n///et0BAAA4IMJgAEAgETr1q1b4d13333k4YcffmqHDh2OyMvLK9QVSK50Ot2wcePGWbNmzZp8/fXXz6qoqGjUFQAAgA9PAAwAAOSMo48+uvWtt956/CGHHHJKu3btBkdEnq5AIqQrKytfmzdv3uQ777xz+owZM6q1BAAA4OMRAAMAADnpuOOOK/vGN75x/CGHHHJa27ZtB4bvBUO2yVRVVc2dN2/epO9///vTpk+fvkVLAAAAPjkBMAAAkPNuu+22vmedddZJffr0Oa5Vq1a9dQT2ntra2uXLly+f/uijjz51xx13vKUjAAAAu5YAGAAAaFa+9KUvdbv44ouP7t+//wlOBsMekamqqpq7cOHCv/z+97+fcd9995VrCQAAwO4jAAYAAJqtSy65pOtll112jDAYdrl0VVXVvIULF/7lV7/61bO/+93v1moJAADAniEABgAAiIirr766x/nnnz9q//33P7JNmzZDUqlUga7Ah5fJZBoqKyv/vnjx4uf+9Kc/zbr33ntX6woAAMCeJwAGAAB4l379+hV97WtfGzRy5MhRPXv2PLaoqKizrsD/VV9fv37VqlXPvPDCC8/9+7//+5zFixfX6woAAMDeJQAGAAB4H61bt8678847Bx599NFHde/efURpaen+4apomq/M1q1bF69Zs+bF5557btY3v/nNOdXV1WltAQAAyB4CYAAAgI9g8ODBrcaOHXvI8OHDD+vevfvw1q1bHxACYXJXprq6+s01a9a88sorr7z8k5/8ZN5rr71Wqy0AAADZSwAMAADwCVx//fX7nHHGGYf169dvePv27Yfm5+e31hWSrLGxsXrjxo2vvvXWWy+PHz/+lR//+McrdQUAACA5BMAAAAC70Je//OUe55xzzvA+ffoM7tix45CioqKuukI2q6+vX7t27doXFy9ePGfixImv3Xvvvat1BQAAILkEwAAAALvRl7/85R6f+cxnBvfr129Qly5dDm/ZsqVAmL2qrq5u7bp16wS+AAAAOUoADAAAsIe0atUq75prrtnn2GOPPXi//fY7uH379oeUlpb2TaVS+brDbpKuqalZtnHjxnlvvfXW3GeffXbef/3Xfy2vra1Naw0AAEBuEgADAADsRQceeGDLq6+++oAhQ4Yc3LNnz4Pbtm17sGuj+biampqqq6qqXi8vL583Z86ceb/85S/nvfjii1t1BgAAoPkQAAMAAGSZoUOHFn/xi1/cf9CgQQf26NHjwHbt2h3YqlWr3qlUKk932CFdU1OzvLKycsHq1asXzJkzZ8Gf//znJTNmzKjWGgAAgOZNAAwAAJAAxx13XNkFF1xw4MEHH3xA165dDywtLd23pKRkn1QqVag7uS2TyTRs27ZtRXV19dJ169YtfOONNxZOmDBh4YQJEzbpDgAAAO8mAAYAAEiw8847r+OJJ57Yp3///vt16dKlT5s2bfZr3bp1v/z8/GLdSZampqaa6urqxZs3b16ybt26pQsXLlzy9NNPL33ooYc26A4AAAAflgAYAAAgx7Rr1y7/kksu6TFkyJCe++67b89OnTr1Kisr61VcXNyzZcuW3VKpVL4u7R2ZTKaprq6uvKamZtWWLVtWVlRUrFy6dOnK2bNnr7r//vvXVFZWNukSAAAAn4QAGAAAoBnp1KlTwec+97luQ4cO7bnPPvv0aNeuXafWrVt3Li4u7tqyZcvORUVFnfLy8lro1MeTTqe319fXr6+rq6uoqalZW11dvb6ysnL9ihUrVr/66qurHnzwwbUVFRWNOgUAAMDuIgAGAADgfznjjDPaH3bYYZ369OnTuUuXLp3Kysral5SUtC0uLu5YVFTUrqioqG2LFi065OfnlzaXnjQ1NW3dvn37xvr6+qr6+vrKmpqaDdu2bavasmXLpnXr1lUsXbp0/Ysvvrh+4sSJlZ4gAAAA9iYBMAAAAB9Lr169CkeNGtXuoIMOatexY8ey9u3bl7Zp06Z1SUlJWXFxcetWrVq1btGiRVlRUVHrwsLC1hGRX1hYWBoR+QUFBSV5eXkFeXl5u/0/LtPpdG06nW5sbGzcFhFNDQ0NW3f83+r6+vrq7du3b6mtra2uqamp3rZtW/XmzZurN23aVL1hw4YtCxYsqJo1a1bl0qVLt5s4AAAASSAABgAAYK/q169fUffu3Vvss88+xSUlJQVv//8LCwtT3bp1+8BTxuXl5VsbGhoyb//vbdu2Na5YsaJmzZo12xcvXlyvwwAAADQn7xcAF2gPAAAAu9vixYvrdwS11boBAAAAu0+eFgAAAAAAAADkBgEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4QAAMAAAAAAADkCAEwAAAAAAAAQI4o0AIAAAAAAACA5GhoLIyCxoaIiEilIpNXGE1v/0wADAAAAAAAAJAghQUN/0x6MxGppvT/5L6ugAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAAYAAAAAAADIEQJgAAAAAAAAgBwhAIb/v5272ZHiusM4/FZ1NUkz9sQwOF4EyZJtpJCwysa5jSy4n1xPEqRIuQFvvfGSgIwBOzGRQAQERnx0d1UW0cgWGvKxsMGvnmfVdc7/1OJsf+oCAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoIQADAAAAAAAAlBCAAQAAAAAAAEoIwAAAAAAAAAAlBGAAAAAAAACAEgIwAAAAAAAAQAkBGAAAAAAAAKCEAAwAAAAAAABQQgAGAAAAAAAAKCEAAwAAAAAAAJQQgAEAAAAAAABKCMAAAAAAAAAAJQRgAAAAAAAAgBICMAAAAAAAAEAJARgAAAAAAACghAAMAAAAAAAAUEIABgAAAAAAACghAAMAAAAAAACUEIABAAAAAAAASgjAAAAAAAAAACUEYAAAAAAAAIASAjAAAAAAAABACQEYAAAAAAAAoIQADAAAAAAAAFBCAAYAAAAAAAAoMY3JP//9K8My551lzpAk293a7QAAAAAAAAD8iIw3r+SL7TpPxuSt4/ibJJuz20QDBgAAAAAAAHhzrJPp6NvHYcyyjLl7dJTPbl/Jp6sPLufSsM+5ec7q5YOrF0OeP/SVaAAAAAAAAIA3weH7u6zfm79dWDIMSw6225w785vsx3XyzasOby5ssz69c4sAAAAAAAAAr9n69C6bC9sT93a7rKdnORin5Otxynzi1JQcfiwCAwAAAAAAALxO69O7HH68TaaT98cp85R8vbp3Nfszv8q0LHn7xMF1sjk/ZzUPmZ/MmWefhAYAAAAAAAD4oayPdjn7223Gn7x6ZrXPnetX8mBKkpv3cufDd/Pufn5FL56SzcVtNheT3dNt8tQlAwAAAAAAAHyv1sm0ySv/9XtsNWZ3I/lHkgzHi7/4XY7WYz5yiwAAAAAAAAA/Ivtcv/3nPEyS1fHa42t5+vNLyX7JoRsCAAAAAAAAePPt1/nbV3/KvePn1Xc371/NYxEYAAAAAAAA4M0yTHk2rvNo2WdzvHZqzN9v/SF3vju3evng/at5fPDLPDu1yuGyZHSVAAAAAAAAAK/XOGe4ueSvZ4e8M8xZbVe5ceuPufvy3Oqkw4+v5emDX+fuuTlLhhwsEYIBAAAAAAAAXpclGR8OuXP0TR4cPM/9z/+SRyfNDf/1TZezOp/87KdjzizJZkhO7edMy/w/nAUAAAAAAADg/zaMWcZkP8/ZLsmLacr2/MV8+cnvs/tP5/4FmLjAq1ifcioAAAAASUVORK5CYII=";function H0($,q,Q){if(typeof $==="string"&&!isNaN(Number($)))$=Number($);if(typeof $==="number"&&$<100)return v0($);if(typeof $==="number"&&$>=100)return $;if(typeof $==="string"&&$.includes("%")){if(q&&q==="X")return Math.round(parseFloat($)/100*Q.width);if(q&&q==="Y")return Math.round(parseFloat($)/100*Q.height);return Math.round(parseFloat($)/100*Q.width)}return 0}function Y5($){return $.replace(/[xy]/g,function(q){let Q=Math.random()*16|0;return(q==="x"?Q:Q&3|8).toString(16)})}function k0($){if(typeof $>"u"||$==null)return"";return $.toString().replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function v0($){if(typeof $==="number"&&$>100)return $;if(typeof $==="string")$=Number($.replace(/in*/gi,""));return Math.round(L0*$)}function Y0($){let q=Number($)||0;return isNaN(q)?0:Math.round(q*w8)}function S1($){return $=$||0,Math.round(($>360?$-360:$)*60000)}function j7($){let q=$.toString(16);return q.length===1?"0"+q:q}function g7($,q,Q){return(j7($)+j7(q)+j7(Q)).toUpperCase()}function R0($,q){let Q=($||"").replace("#","");if(!C7.test(Q)&&Q!==G2.background1&&Q!==G2.background2&&Q!==G2.text1&&Q!==G2.text2&&Q!==G2.accent1&&Q!==G2.accent2&&Q!==G2.accent3&&Q!==G2.accent4&&Q!==G2.accent5&&Q!==G2.accent6)console.warn(`"${Q}" is not a valid scheme color or hex RGB! "${Q2}" used instead. Only provide 6-digit RGB or 'pptx.SchemeColor' values!`),Q=Q2;let K=C7.test(Q)?"srgbClr":"schemeClr",J='val="'+(C7.test(Q)?Q.toUpperCase():Q)+'"';return q?`${q}`:``}function fB($,q){let Q="",K=Object.assign(Object.assign({},q),$),J=Math.round(K.size*w8),Z=K.color,G=Math.round(K.opacity*1e5);return Q+=``,Q+=R0(Z,``),Q+="",Q}function B2($){let q="solid",Q="",K="",J="";if($){if(typeof $==="string")Q=$;else{if($.type)q=$.type;if($.color)Q=$.color;if($.alpha)K+=``;if($.transparency)K+=``}switch(q){case"solid":J+=`${R0(Q,K)}`;break;default:J+="";break}}return J}function a2($){return $._rels.length+$._relsChart.length+$._relsMedia.length+1}function c7($){if(!$||typeof $!=="object")return;if($.type!=="outer"&&$.type!=="inner"&&$.type!=="none")console.warn("Warning: shadow.type options are `outer`, `inner` or `none`."),$.type="outer";if($.angle){if(isNaN(Number($.angle))||$.angle<0||$.angle>359)console.warn("Warning: shadow.angle can only be 0-359"),$.angle=270;$.angle=Math.round(Number($.angle))}if($.opacity){if(isNaN(Number($.opacity))||$.opacity<0||$.opacity>1)console.warn("Warning: shadow.opacity can only be 0-1"),$.opacity=0.75;$.opacity=Number($.opacity)}if($.color){if($.color.startsWith("#"))console.warn('Warning: shadow.color should not include hash (#) character, , e.g. "FF0000"'),$.color=$.color.replace("#","")}return $}function RB($,q,Q){var K,J;let Z=2.3+(((K=$.options)===null||K===void 0?void 0:K.autoPageCharWeight)?$.options.autoPageCharWeight:0),G=Math.floor(q/w8*L0)/((((J=$.options)===null||J===void 0?void 0:J.fontSize)?$.options.fontSize:k2)/Z),W=[],B=[],V=[],U=[];if($.text&&$.text.toString().trim().length===0)B.push({_type:D0.tablecell,text:" "});else if(typeof $.text==="number"||typeof $.text==="string")B.push({_type:D0.tablecell,text:($.text||"").toString().trim()});else if(Array.isArray($.text))B=$.text;let w=[];return B.forEach((F)=>{var M;if(typeof F.text==="string"){if(F.text.split(` `).length>1)F.text.split(` -`).forEach((v)=>{N.push({_type:D0.tablecell,text:v,options:Object.assign(Object.assign({},F.options),{breakLine:!0})})});else N.push({_type:D0.tablecell,text:F.text.trim(),options:F.options});if((M=F.options)===null||M===void 0?void 0:M.breakLine)U.push(N),N=[]}if(N.length>0)U.push(N),N=[]}),U.forEach((F)=>{F.forEach((M)=>{let v=[],y=String(M.text).split(" ");y.forEach((D,z)=>{let Y=Object.assign({},M.options);if(Y===null||Y===void 0?void 0:Y.breakLine)Y.breakLine=z+1===y.length;v.push({_type:D0.tablecell,text:D+(z+1{let M=[],v="";if(F.forEach((x)=>{if(v.length+x.text.length>G)B.push(M),M=[],v="";M.push(x),v+=x.text.toString()}),M.length>0)B.push(M)}),B}function gJ(Q=[],$={},q,K){let J=P8,Z=H0*1,G=H0*1,B=0,W=0,U=[],V=v0($.x,"X",q),N=v0($.y,"Y",q),F=v0($.w,"X",q),M=v0($.h,"Y",q),v=F;function x(){let D=0;if(U.length===0)D=N||C0(J[0]);if(U.length>0)D=C0($.autoPageSlideStartY||$.newSlideStartY||J[0]);if(G=(M||q.height)-D-C0(J[2]),U.length>1){if(typeof $.autoPageSlideStartY==="number")G=(M||q.height)-C0($.autoPageSlideStartY+J[2]);else if(typeof $.newSlideStartY==="number")G=(M||q.height)-C0($.newSlideStartY+J[2]);else if(N){if(G=(M||q.height)-C0((N/H0{if(!z)z={_type:D0.tablecell};let Y=z.options||null;W+=Number((Y===null||Y===void 0?void 0:Y.colspan)?Y.colspan:1)}),$.verbose)console.log(`| numCols ......................................... = ${W}`);if(!F&&$.colW){if(v=Array.isArray($.colW)?$.colW.reduce((D,z)=>D+z)*H0:$.colW*W||0,$.verbose)console.log(`| tableCalcW ...................................... = ${v/H0}`)}if(Z=v||C0((V?V/H0:J[1])+J[3]),$.verbose)console.log(`| emuSlideTabW .................................... = ${(Z/H0).toFixed(1)}`);if(!$.colW||!Array.isArray($.colW))if($.colW&&!isNaN(Number($.colW))){let D=[];(Q[0]||[]).forEach(()=>D.push($.colW)),$.colW=[],D.forEach((Y)=>{if(Array.isArray($.colW))$.colW.push(Y)})}else{$.colW=[];for(let D=0;D{let Y=[],H=0,R=0,c=[];if(D.forEach((g)=>{var O,h,f,A;if(c.push({_type:D0.tablecell,text:[],options:g.options}),g.options.margin&&g.options.margin[0]>=1){if(((O=g.options)===null||O===void 0?void 0:O.margin)&&g.options.margin[0]&&Y0(g.options.margin[0])>H)H=Y0(g.options.margin[0]);else if(($===null||$===void 0?void 0:$.margin)&&$.margin[0]&&Y0($.margin[0])>H)H=Y0($.margin[0]);if(((h=g.options)===null||h===void 0?void 0:h.margin)&&g.options.margin[2]&&Y0(g.options.margin[2])>R)R=Y0(g.options.margin[2]);else if(($===null||$===void 0?void 0:$.margin)&&$.margin[2]&&Y0($.margin[2])>R)R=Y0($.margin[2])}else{if(((f=g.options)===null||f===void 0?void 0:f.margin)&&g.options.margin[0]&&C0(g.options.margin[0])>H)H=C0(g.options.margin[0]);else if(($===null||$===void 0?void 0:$.margin)&&$.margin[0]&&C0($.margin[0])>H)H=C0($.margin[0]);if(((A=g.options)===null||A===void 0?void 0:A.margin)&&g.options.margin[2]&&C0(g.options.margin[2])>R)R=C0(g.options.margin[2]);else if(($===null||$===void 0?void 0:$.margin)&&$.margin[2]&&C0($.margin[2])>R)R=C0($.margin[2])}}),x(),B+=H+R,$.verbose&&z===0)console.log(`| SLIDE [${U.length}]: emuSlideTabH ...... = ${(G/H0).toFixed(1)} `);if(D.forEach((g,O)=>{var h;let f={_type:D0.tablecell,_lines:null,_lineHeight:C0((((h=g.options)===null||h===void 0?void 0:h.fontSize)?g.options.fontSize:$.fontSize?$.fontSize:f1)*(sW+($.autoPageLineWeight?$.autoPageLineWeight:0))/100),text:[],options:g.options};if(f.options.rowspan)f._lineHeight=0;f.options.autoPageCharWeight=$.autoPageCharWeight?$.autoPageCharWeight:null;let A=$.colW[O];if(g.options.colspan&&Array.isArray($.colW))A=$.colW.filter((I,n)=>n>=O&&nI+n);f._lines=Jz(g,A),Y.push(f)}),$.verbose)console.log(` -| SLIDE [${U.length}]: ROW [${z}]: START...`);let m=0,$0=0,_=!1;while(!_){let g=Y[m],O=c[m];if(Y.forEach((A)=>{if(A._lineHeight>=$0)$0=A._lineHeight}),B+$0>G){if($.verbose)console.log(` -|-----------------------------------------------------------------------|`),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(B/H0).toFixed(2)} + ${(g._lineHeight/H0).toFixed(2)} > ${G/H0}`),console.log(`|-----------------------------------------------------------------------| +`).forEach((k)=>{w.push({_type:D0.tablecell,text:k,options:Object.assign(Object.assign({},F.options),{breakLine:!0})})});else w.push({_type:D0.tablecell,text:F.text.trim(),options:F.options});if((M=F.options)===null||M===void 0?void 0:M.breakLine)V.push(w),w=[]}if(w.length>0)V.push(w),w=[]}),V.forEach((F)=>{F.forEach((M)=>{let k=[],L=String(M.text).split(" ");L.forEach((D,z)=>{let N=Object.assign({},M.options);if(N===null||N===void 0?void 0:N.breakLine)N.breakLine=z+1===L.length;k.push({_type:D0.tablecell,text:D+(z+1{let M=[],k="";if(F.forEach((f)=>{if(k.length+f.text.length>G)W.push(M),M=[],k="";M.push(f),k+=f.text.toString()}),M.length>0)W.push(M)}),W}function GJ($=[],q={},Q,K){let J=M8,Z=L0*1,G=L0*1,W=0,B=0,V=[],U=H0(q.x,"X",Q),w=H0(q.y,"Y",Q),F=H0(q.w,"X",Q),M=H0(q.h,"Y",Q),k=F;function f(){let D=0;if(V.length===0)D=w||v0(J[0]);if(V.length>0)D=v0(q.autoPageSlideStartY||q.newSlideStartY||J[0]);if(G=(M||Q.height)-D-v0(J[2]),V.length>1){if(typeof q.autoPageSlideStartY==="number")G=(M||Q.height)-v0(q.autoPageSlideStartY+J[2]);else if(typeof q.newSlideStartY==="number")G=(M||Q.height)-v0(q.newSlideStartY+J[2]);else if(w){if(G=(M||Q.height)-v0((w/L0{if(!z)z={_type:D0.tablecell};let N=z.options||null;B+=Number((N===null||N===void 0?void 0:N.colspan)?N.colspan:1)}),q.verbose)console.log(`| numCols ......................................... = ${B}`);if(!F&&q.colW){if(k=Array.isArray(q.colW)?q.colW.reduce((D,z)=>D+z)*L0:q.colW*B||0,q.verbose)console.log(`| tableCalcW ...................................... = ${k/L0}`)}if(Z=k||v0((U?U/L0:J[1])+J[3]),q.verbose)console.log(`| emuSlideTabW .................................... = ${(Z/L0).toFixed(1)}`);if(!q.colW||!Array.isArray(q.colW))if(q.colW&&!isNaN(Number(q.colW))){let D=[];($[0]||[]).forEach(()=>D.push(q.colW)),q.colW=[],D.forEach((N)=>{if(Array.isArray(q.colW))q.colW.push(N)})}else{q.colW=[];for(let D=0;D{let N=[],H=0,v=0,j=[];if(D.forEach((X)=>{var P,g,c,h;if(j.push({_type:D0.tablecell,text:[],options:X.options}),X.options.margin&&X.options.margin[0]>=1){if(((P=X.options)===null||P===void 0?void 0:P.margin)&&X.options.margin[0]&&Y0(X.options.margin[0])>H)H=Y0(X.options.margin[0]);else if((q===null||q===void 0?void 0:q.margin)&&q.margin[0]&&Y0(q.margin[0])>H)H=Y0(q.margin[0]);if(((g=X.options)===null||g===void 0?void 0:g.margin)&&X.options.margin[2]&&Y0(X.options.margin[2])>v)v=Y0(X.options.margin[2]);else if((q===null||q===void 0?void 0:q.margin)&&q.margin[2]&&Y0(q.margin[2])>v)v=Y0(q.margin[2])}else{if(((c=X.options)===null||c===void 0?void 0:c.margin)&&X.options.margin[0]&&v0(X.options.margin[0])>H)H=v0(X.options.margin[0]);else if((q===null||q===void 0?void 0:q.margin)&&q.margin[0]&&v0(q.margin[0])>H)H=v0(q.margin[0]);if(((h=X.options)===null||h===void 0?void 0:h.margin)&&X.options.margin[2]&&v0(X.options.margin[2])>v)v=v0(X.options.margin[2]);else if((q===null||q===void 0?void 0:q.margin)&&q.margin[2]&&v0(q.margin[2])>v)v=v0(q.margin[2])}}),f(),W+=H+v,q.verbose&&z===0)console.log(`| SLIDE [${V.length}]: emuSlideTabH ...... = ${(G/L0).toFixed(1)} `);if(D.forEach((X,P)=>{var g;let c={_type:D0.tablecell,_lines:null,_lineHeight:v0((((g=X.options)===null||g===void 0?void 0:g.fontSize)?X.options.fontSize:q.fontSize?q.fontSize:k2)*(YB+(q.autoPageLineWeight?q.autoPageLineWeight:0))/100),text:[],options:X.options};if(c.options.rowspan)c._lineHeight=0;c.options.autoPageCharWeight=q.autoPageCharWeight?q.autoPageCharWeight:null;let h=q.colW[P];if(X.options.colspan&&Array.isArray(q.colW))h=q.colW.filter((x,l)=>l>=P&&lx+l);c._lines=RB(X,h),N.push(c)}),q.verbose)console.log(` +| SLIDE [${V.length}]: ROW [${z}]: START...`);let n=0,d=0,_=!1;while(!_){let X=N[n],P=j[n];if(N.forEach((h)=>{if(h._lineHeight>=d)d=h._lineHeight}),W+d>G){if(q.verbose)console.log(` +|-----------------------------------------------------------------------|`),console.log(`|-- NEW SLIDE CREATED (currTabH+currLineH > maxH) => ${(W/L0).toFixed(2)} + ${(X._lineHeight/L0).toFixed(2)} > ${G/L0}`),console.log(`|-----------------------------------------------------------------------| -`);if(c.length>0&&c.map((I)=>I.text.length).reduce((I,n)=>I+n)>0)y.rows.push(c);if(U.push(y),y={rows:[]},c=[],D.forEach((I)=>c.push({_type:D0.tablecell,text:[],options:I.options})),x(),B+=H+R,$.verbose)console.log(`| SLIDE [${U.length}]: emuSlideTabH ...... = ${(G/H0).toFixed(1)} `);if(B=0,($.addHeaderToEach||$.autoPageRepeatHeader)&&$._arrObjTabHeadRows)$._arrObjTabHeadRows.forEach((I)=>{let n=[],i=0;I.forEach((K0)=>{if(n.push(K0),K0._lineHeight>i)i=K0._lineHeight}),y.rows.push(n),B+=i});O=c[m]}let h=g._lines.shift();if(Array.isArray(O.text)){if(h)O.text=O.text.concat(h);else if(O.text.length===0)O.text=O.text.concat({_type:D0.tablecell,text:""})}if(m===Y.length-1)B+=$0;if(m=mA._lines.length).reduce((A,I)=>A+I)===0)_=!0}if(c.length>0)y.rows.push(c);if($.verbose)console.log(`- SLIDE [${U.length}]: ROW [${z}]: ...COMPLETE ...... emuTabCurrH = ${(B/H0).toFixed(2)} ( emuSlideTabH = ${(G/H0).toFixed(2)} )`)}),U.push(y),$.verbose)console.log(` -|================================================|`),console.log(`| FINAL: tableRowSlides.length = ${U.length}`),U.forEach((D)=>console.log(D)),console.log(`|================================================| +`);if(j.length>0&&j.map((x)=>x.text.length).reduce((x,l)=>x+l)>0)L.rows.push(j);if(V.push(L),L={rows:[]},j=[],D.forEach((x)=>j.push({_type:D0.tablecell,text:[],options:x.options})),f(),W+=H+v,q.verbose)console.log(`| SLIDE [${V.length}]: emuSlideTabH ...... = ${(G/L0).toFixed(1)} `);if(W=0,(q.addHeaderToEach||q.autoPageRepeatHeader)&&q._arrObjTabHeadRows)q._arrObjTabHeadRows.forEach((x)=>{let l=[],$0=0;x.forEach((Z0)=>{if(l.push(Z0),Z0._lineHeight>$0)$0=Z0._lineHeight}),L.rows.push(l),W+=$0});P=j[n]}let g=X._lines.shift();if(Array.isArray(P.text)){if(g)P.text=P.text.concat(g);else if(P.text.length===0)P.text=P.text.concat({_type:D0.tablecell,text:""})}if(n===N.length-1)W+=d;if(n=nh._lines.length).reduce((h,x)=>h+x)===0)_=!0}if(j.length>0)L.rows.push(j);if(q.verbose)console.log(`- SLIDE [${V.length}]: ROW [${z}]: ...COMPLETE ...... emuTabCurrH = ${(W/L0).toFixed(2)} ( emuSlideTabH = ${(G/L0).toFixed(2)} )`)}),V.push(L),q.verbose)console.log(` +|================================================|`),console.log(`| FINAL: tableRowSlides.length = ${V.length}`),V.forEach((D)=>console.log(D)),console.log(`|================================================| -`);return U}function Uz(Q,$,q={},K){let J=q||{};J.slideMargin=J.slideMargin||J.slideMargin===0?J.slideMargin:0.5;let Z=J.w||Q.presLayout.width,G=[],B=[],W=[],U=[],V=[],N=[0.5,0.5,0.5,0.5],F=0;if(!document.getElementById($))throw new Error('tableToSlides: Table ID "'+$+'" does not exist!');if(K===null||K===void 0?void 0:K._margin){if(Array.isArray(K._margin))N=K._margin;else if(!isNaN(K._margin))N=[K._margin,K._margin,K._margin,K._margin];J.slideMargin=N}else if(J===null||J===void 0?void 0:J.slideMargin){if(Array.isArray(J.slideMargin))N=J.slideMargin;else if(!isNaN(J.slideMargin))N=[J.slideMargin,J.slideMargin,J.slideMargin,J.slideMargin]}if(Z=(J.w?C0(J.w):Q.presLayout.width)-C0(N[1]+N[3]),J.verbose)console.log("[[VERBOSE MODE]]"),console.log("|-- `tableToSlides` ----------------------------------------------------|"),console.log(`| tableProps.h .................................... = ${J.h}`),console.log(`| tableProps.w .................................... = ${J.w}`),console.log(`| pptx.presLayout.width ........................... = ${(Q.presLayout.width/H0).toFixed(1)}`),console.log(`| pptx.presLayout.height .......................... = ${(Q.presLayout.height/H0).toFixed(1)}`),console.log(`| emuSlideTabW .................................... = ${(Z/H0).toFixed(1)}`);let M=document.querySelectorAll(`#${$} tr:first-child th`);if(M.length===0)M=document.querySelectorAll(`#${$} tr:first-child td`);if(M.forEach((x)=>{let y=x;if(y.getAttribute("colspan"))for(let D=0;D{F+=x}),V.forEach((x,y)=>{let D=Number((Number(Z)*(x/F*100)/100/H0).toFixed(2)),z=0,Y=document.querySelector(`#${$} thead tr:first-child th:nth-child(${y+1})`);if(Y)z=Number(Y.getAttribute("data-pptx-min-width"));let H=document.querySelector(`#${$} thead tr:first-child th:nth-child(${y+1})`);if(H)z=Number(H.getAttribute("data-pptx-width"));U.push(z>D?z:D)}),J.verbose)console.log(`| arrColW ......................................... = [${U.join(", ")}]`);["thead","tbody","tfoot"].forEach((x)=>{document.querySelectorAll(`#${$} ${x} tr`).forEach((y)=>{let D=y,z=[];switch(Array.from(D.cells).forEach((Y)=>{let H=window.getComputedStyle(Y).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),R=window.getComputedStyle(Y).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");if(window.getComputedStyle(Y).getPropertyValue("background-color")==="rgba(0, 0, 0, 0)"||window.getComputedStyle(Y).getPropertyValue("transparent"))R=["255","255","255"];let c={align:null,bold:window.getComputedStyle(Y).getPropertyValue("font-weight")==="bold"||Number(window.getComputedStyle(Y).getPropertyValue("font-weight"))>=500,border:null,color:U9(Number(H[0]),Number(H[1]),Number(H[2])),fill:{color:U9(Number(R[0]),Number(R[1]),Number(R[2]))},fontFace:(window.getComputedStyle(Y).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(Y).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(Y.getAttribute("colspan"))||null,rowspan:Number(Y.getAttribute("rowspan"))||null,valign:null};if(["left","center","right","start","end"].includes(window.getComputedStyle(Y).getPropertyValue("text-align"))){let m=window.getComputedStyle(Y).getPropertyValue("text-align").replace("start","left").replace("end","right");c.align=m==="center"?"center":m==="left"?"left":m==="right"?"right":null}if(["top","middle","bottom"].includes(window.getComputedStyle(Y).getPropertyValue("vertical-align"))){let m=window.getComputedStyle(Y).getPropertyValue("vertical-align");c.valign=m==="top"?"top":m==="middle"?"middle":m==="bottom"?"bottom":null}if(window.getComputedStyle(Y).getPropertyValue("padding-left"))c.margin=[0,0,0,0],["padding-top","padding-right","padding-bottom","padding-left"].forEach(($0,_)=>{c.margin[_]=Math.round(Number(window.getComputedStyle(Y).getPropertyValue($0).replace(/\D/gi,"")))});if(window.getComputedStyle(Y).getPropertyValue("border-top-width")||window.getComputedStyle(Y).getPropertyValue("border-right-width")||window.getComputedStyle(Y).getPropertyValue("border-bottom-width")||window.getComputedStyle(Y).getPropertyValue("border-left-width"))c.border=[null,null,null,null],["top","right","bottom","left"].forEach(($0,_)=>{let g=Math.round(Number(window.getComputedStyle(Y).getPropertyValue("border-"+$0+"-width").replace("px",""))),O=[];O=window.getComputedStyle(Y).getPropertyValue("border-"+$0+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let h=U9(Number(O[0]),Number(O[1]),Number(O[2]));c.border[_]={pt:g,color:h}});z.push({_type:D0.tablecell,text:Y.innerText,options:c})}),x){case"thead":G.push(z);break;case"tbody":B.push(z);break;case"tfoot":W.push(z);break;default:console.log(`table parsing: unexpected table part: ${x}`);break}})}),J._arrObjTabHeadRows=G||null,J.colW=U,gJ([...G,...B,...W],J,Q.presLayout,K).forEach((x,y)=>{let D=Q.addSlide({masterName:J.masterSlideName||null});if(y===0)J.y=J.y||N[0];if(y>0)J.y=J.autoPageSlideStartY||J.newSlideStartY||N[0];if(J.verbose)console.log(`| opts.autoPageSlideStartY: ${J.autoPageSlideStartY} / arrInchMargins[0]: ${N[0]} => opts.y = ${J.y}`);if(D.addTable(x.rows,{x:J.x||N[3],y:J.y,w:Number(Z)/H0,colW:U,autoPage:!1}),J.addImage)if(J.addImage.options=J.addImage.options||{},!J.addImage.image||!J.addImage.image.path&&!J.addImage.image.data)console.warn("Warning: tableToSlides.addImage requires either `path` or `data`");else D.addImage({path:J.addImage.image.path,data:J.addImage.image.data,x:J.addImage.options.x,y:J.addImage.options.y,w:J.addImage.options.w,h:J.addImage.options.h});if(J.addShape)D.addShape(J.addShape.shapeName,J.addShape.options||{});if(J.addTable)D.addTable(J.addTable.rows,J.addTable.options||{});if(J.addText)D.addText(J.addText.text,J.addText.options||{})})}var Vz=0;function Zz(Q,$){if(Q.bkgd)$.bkgd=Q.bkgd;if(Q.objects&&Array.isArray(Q.objects)&&Q.objects.length>0)Q.objects.forEach((q,K)=>{let J=Object.keys(q)[0],Z=$;if(C2[J]&&J==="chart")XJ(Z,q[J].type,q[J].data,q[J].opts);else if(C2[J]&&J==="image")yJ(Z,q[J]);else if(C2[J]&&J==="line")Y9(Z,j2.LINE,q[J]);else if(C2[J]&&J==="rect")Y9(Z,j2.RECTANGLE,q[J]);else if(C2[J]&&J==="text")i5(Z,[{text:q[J].text}],q[J].options,!1);else if(C2[J]&&J==="placeholder")q[J].options.placeholder=q[J].options.name,delete q[J].options.name,q[J].options._placeholderType=q[J].options.type,delete q[J].options.type,q[J].options._placeholderIdx=100+K,i5(Z,[{text:q[J].text}],q[J].options,!0)});if(Q.slideNumber&&typeof Q.slideNumber==="object")$._slideNumberProps=Q.slideNumber}function XJ(Q,$,q,K){var J;function Z(N){if(!N||N.style==="none")return;if(N.size!==void 0&&(isNaN(Number(N.size))||N.size<=0))console.warn("Warning: chart.gridLine.size must be greater than 0."),delete N.size;if(N.style&&!["solid","dash","dot"].includes(N.style))console.warn("Warning: chart.gridLine.style options: `solid`, `dash`, `dot`."),delete N.style;if(N.cap&&!["flat","square","round"].includes(N.cap))console.warn("Warning: chart.gridLine.cap options: `flat`, `square`, `round`."),delete N.cap}let G=++Vz,B={_type:null,text:null,options:null,chartRid:null},W=null,U=[];if(Array.isArray($))$.forEach((N)=>{U=U.concat(N.data)}),W=q||K;else U=q,W=K;U.forEach((N,F)=>{if(N._dataIndex=F,N.labels!==void 0&&!Array.isArray(N.labels[0]))N.labels=[N.labels]});let V=W&&typeof W==="object"?W:{};if(V._type=$,V.x=typeof V.x!=="undefined"&&V.x!=null&&!isNaN(Number(V.x))?V.x:1,V.y=typeof V.y!=="undefined"&&V.y!=null&&!isNaN(Number(V.y))?V.y:1,V.w=V.w||"50%",V.h=V.h||"50%",V.objectName=V.objectName?L0(V.objectName):`Chart ${Q._slideObjects.filter((N)=>N._type===D0.chart).length}`,!["bar","col"].includes(V.barDir||""))V.barDir="col";if(V._type===F0.AREA){if(!["stacked","standard","percentStacked"].includes(V.barGrouping||""))V.barGrouping="standard"}if(V._type===F0.BAR){if(!["clustered","stacked","percentStacked"].includes(V.barGrouping||""))V.barGrouping="clustered"}if(V._type===F0.BAR3D){if(!["clustered","stacked","standard","percentStacked"].includes(V.barGrouping||""))V.barGrouping="standard"}if((J=V.barGrouping)===null||J===void 0?void 0:J.includes("tacked")){if(!V.barGapWidthPct)V.barGapWidthPct=50}if(V.dataLabelPosition){if(V._type===F0.AREA||V._type===F0.BAR3D||V._type===F0.DOUGHNUT||V._type===F0.RADAR)delete V.dataLabelPosition;if(V._type===F0.PIE){if(!["bestFit","ctr","inEnd","outEnd"].includes(V.dataLabelPosition))delete V.dataLabelPosition}if(V._type===F0.BUBBLE||V._type===F0.BUBBLE3D||V._type===F0.LINE||V._type===F0.SCATTER){if(!["b","ctr","l","r","t"].includes(V.dataLabelPosition))delete V.dataLabelPosition}if(V._type===F0.BAR){if(!["stacked","percentStacked"].includes(V.barGrouping||"")){if(!["ctr","inBase","inEnd"].includes(V.dataLabelPosition))delete V.dataLabelPosition}if(!["clustered"].includes(V.barGrouping||"")){if(!["ctr","inBase","inEnd","outEnd"].includes(V.dataLabelPosition))delete V.dataLabelPosition}}}if(V.dataLabelBkgrdColors=V.dataLabelBkgrdColors||!V.dataLabelBkgrdColors?V.dataLabelBkgrdColors:!1,!["b","l","r","t","tr"].includes(V.legendPos||""))V.legendPos="r";if(!["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(V.bar3DShape||""))V.bar3DShape="box";if(!["circle","dash","diamond","dot","none","square","triangle"].includes(V.lineDataSymbol||""))V.lineDataSymbol="circle";if(!["gap","span"].includes(V.displayBlanksAs||""))V.displayBlanksAs="span";if(!["standard","marker","filled"].includes(V.radarStyle||""))V.radarStyle="standard";if(V.lineDataSymbolSize=V.lineDataSymbolSize&&!isNaN(V.lineDataSymbolSize)?V.lineDataSymbolSize:6,V.lineDataSymbolLineSize=V.lineDataSymbolLineSize&&!isNaN(V.lineDataSymbolLineSize)?Y0(V.lineDataSymbolLineSize):Y0(0.75),V.layout)["x","y","w","h"].forEach((N)=>{let F=V.layout[N];if(isNaN(Number(F))||F<0||F>1)console.warn("Warning: chart.layout."+N+" can only be 0-1"),delete V.layout[N]});if(V.catGridLine=V.catGridLine||(V._type===F0.SCATTER?{color:"D9D9D9",size:1}:{style:"none"}),V.valGridLine=V.valGridLine||(V._type===F0.SCATTER?{color:"D9D9D9",size:1}:{}),V.serGridLine=V.serGridLine||(V._type===F0.SCATTER?{color:"D9D9D9",size:1}:{style:"none"}),Z(V.catGridLine),Z(V.valGridLine),Z(V.serGridLine),D9(V.shadow),V.showDataTable=V.showDataTable||!V.showDataTable?V.showDataTable:!1,V.showDataTableHorzBorder=V.showDataTableHorzBorder||!V.showDataTableHorzBorder?V.showDataTableHorzBorder:!0,V.showDataTableVertBorder=V.showDataTableVertBorder||!V.showDataTableVertBorder?V.showDataTableVertBorder:!0,V.showDataTableOutline=V.showDataTableOutline||!V.showDataTableOutline?V.showDataTableOutline:!0,V.showDataTableKeys=V.showDataTableKeys||!V.showDataTableKeys?V.showDataTableKeys:!0,V.showLabel=V.showLabel||!V.showLabel?V.showLabel:!1,V.showLegend=V.showLegend||!V.showLegend?V.showLegend:!1,V.showPercent=V.showPercent||!V.showPercent?V.showPercent:!0,V.showTitle=V.showTitle||!V.showTitle?V.showTitle:!1,V.showValue=V.showValue||!V.showValue?V.showValue:!1,V.showLeaderLines=V.showLeaderLines||!V.showLeaderLines?V.showLeaderLines:!1,V.catAxisLineShow=typeof V.catAxisLineShow!=="undefined"?V.catAxisLineShow:!0,V.valAxisLineShow=typeof V.valAxisLineShow!=="undefined"?V.valAxisLineShow:!0,V.serAxisLineShow=typeof V.serAxisLineShow!=="undefined"?V.serAxisLineShow:!0,V.v3DRotX=!isNaN(V.v3DRotX)&&V.v3DRotX>=-90&&V.v3DRotX<=90?V.v3DRotX:30,V.v3DRotY=!isNaN(V.v3DRotY)&&V.v3DRotY>=0&&V.v3DRotY<=360?V.v3DRotY:30,V.v3DRAngAx=V.v3DRAngAx||!V.v3DRAngAx?V.v3DRAngAx:!0,V.v3DPerspective=!isNaN(V.v3DPerspective)&&V.v3DPerspective>=0&&V.v3DPerspective<=240?V.v3DPerspective:30,V.barGapWidthPct=!isNaN(V.barGapWidthPct)&&V.barGapWidthPct>=0&&V.barGapWidthPct<=1000?V.barGapWidthPct:150,V.barGapDepthPct=!isNaN(V.barGapDepthPct)&&V.barGapDepthPct>=0&&V.barGapDepthPct<=1000?V.barGapDepthPct:150,V.chartColors=Array.isArray(V.chartColors)?V.chartColors:V._type===F0.PIE||V._type===F0.DOUGHNUT?qz:x8,V.chartColorsOpacity=V.chartColorsOpacity&&!isNaN(V.chartColorsOpacity)?V.chartColorsOpacity:null,V.border=V.border&&typeof V.border==="object"?V.border:null,V.border&&(!V.border.pt||isNaN(V.border.pt)))V.border.pt=T6.pt;if(V.border&&(!V.border.color||typeof V.border.color!=="string"))V.border.color=T6.color;if(V.plotArea=V.plotArea||{},V.plotArea.border=V.plotArea.border&&typeof V.plotArea.border==="object"?V.plotArea.border:null,V.plotArea.border&&(!V.plotArea.border.pt||isNaN(V.plotArea.border.pt)))V.plotArea.border.pt=T6.pt;if(V.plotArea.border&&(!V.plotArea.border.color||typeof V.plotArea.border.color!=="string"))V.plotArea.border.color=T6.color;if(V.border)V.plotArea.border=V.border;if(V.plotArea.fill=V.plotArea.fill||{color:null,transparency:null},V.fill)V.plotArea.fill.color=V.fill;if(V.chartArea=V.chartArea||{},V.chartArea.border=V.chartArea.border&&typeof V.chartArea.border==="object"?V.chartArea.border:null,V.chartArea.border)V.chartArea.border={color:V.chartArea.border.color||T6.color,pt:V.chartArea.border.pt||T6.pt};if(V.chartArea.roundedCorners=typeof V.chartArea.roundedCorners==="boolean"?V.chartArea.roundedCorners:!0,V.dataBorder=V.dataBorder&&typeof V.dataBorder==="object"?V.dataBorder:null,V.dataBorder&&(!V.dataBorder.pt||isNaN(V.dataBorder.pt)))V.dataBorder.pt=0.75;if(V.dataBorder&&V.dataBorder.color){let N=typeof V.dataBorder.color==="string"&&V.dataBorder.color.length===6&&/^[0-9A-Fa-f]{6}$/.test(V.dataBorder.color),F=Object.values(p5).includes(V.dataBorder.color);if(!N&&!F)V.dataBorder.color="F9F9F9"}if(!V.dataLabelFormatCode&&V._type===F0.SCATTER)V.dataLabelFormatCode="General";if(!V.dataLabelFormatCode&&(V._type===F0.PIE||V._type===F0.DOUGHNUT))V.dataLabelFormatCode=V.showPercent?"0%":"General";if(V.dataLabelFormatCode=V.dataLabelFormatCode&&typeof V.dataLabelFormatCode==="string"?V.dataLabelFormatCode:"#,##0",!V.dataLabelFormatScatter&&V._type===F0.SCATTER)V.dataLabelFormatScatter="custom";if(V.lineSize=typeof V.lineSize==="number"?V.lineSize:2,V.valAxisMajorUnit=typeof V.valAxisMajorUnit==="number"?V.valAxisMajorUnit:null,V._type===F0.AREA||V._type===F0.BAR||V._type===F0.BAR3D||V._type===F0.LINE)V.catAxisMultiLevelLabels=!!V.catAxisMultiLevelLabels;else delete V.catAxisMultiLevelLabels;return B._type="chart",B.options=V,B.chartRid=G2(Q),Q._relsChart.push({rId:G2(Q),data:U,opts:V,type:V._type,globalId:G,fileName:`chart${G}.xml`,Target:`/ppt/charts/chart${G}.xml`}),Q._slideObjects.push(B),B}function yJ(Q,$){let q={_type:null,text:null,options:null,image:null,imageRid:null,hyperlink:null},K=$.x||0,J=$.y||0,Z=$.w||0,G=$.h||0,B=$.sizing||null,W=$.hyperlink||"",U=$.data||"",V=$.path||"",N=G2(Q),F=$.objectName?L0($.objectName):`Image ${Q._slideObjects.filter((v)=>v._type===D0.image).length}`;if(!V&&!U)return console.error("ERROR: addImage() requires either 'data' or 'path' parameter!"),null;else if(V&&typeof V!=="string")return console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(V)}`),null;else if(U&&typeof U!=="string")return console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(U)}`),null;else if(U&&typeof U==="string"&&!U.toLowerCase().includes("base64,"))return console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')"),null;let M=(V.substring(V.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(U&&/image\/(\w+);/.exec(U)&&/image\/(\w+);/.exec(U).length>0)M=/image\/(\w+);/.exec(U)[1];else if(U===null||U===void 0?void 0:U.toLowerCase().includes("image/svg+xml"))M="svg";if(q._type=D0.image,q.image=V||"preencoded.png",q.options={x:K||0,y:J||0,w:Z||1,h:G||1,altText:$.altText||"",rounding:typeof $.rounding==="boolean"?$.rounding:!1,sizing:B,placeholder:$.placeholder,rotate:$.rotate||0,flipV:$.flipV||!1,flipH:$.flipH||!1,transparency:$.transparency||0,objectName:F,shadow:D9($.shadow)},M==="svg")Q._relsMedia.push({path:V||U+"png",type:"image/png",extn:"png",data:U||"",rId:N,Target:`../media/image-${Q._slideNum}-${Q._relsMedia.length+1}.png`,isSvgPng:!0,svgSize:{w:v0(q.options.w,"X",Q._presLayout),h:v0(q.options.h,"Y",Q._presLayout)}}),q.imageRid=N,Q._relsMedia.push({path:V||U,type:"image/svg+xml",extn:M,data:U||"",rId:N+1,Target:`../media/image-${Q._slideNum}-${Q._relsMedia.length+1}.${M}`}),q.imageRid=N+1;else{let v=Q._relsMedia.filter((x)=>x.path&&x.path===V&&x.type==="image/"+M&&!x.isDuplicate)[0];Q._relsMedia.push({path:V||"preencoded."+M,type:"image/"+M,extn:M,data:U||"",rId:N,isDuplicate:!!(v===null||v===void 0?void 0:v.Target),Target:(v===null||v===void 0?void 0:v.Target)?v.Target:`../media/image-${Q._slideNum}-${Q._relsMedia.length+1}.${M}`}),q.imageRid=N}if(typeof W==="object")if(!W.url&&!W.slide)throw new Error("ERROR: `hyperlink` option requires either: `url` or `slide`");else N++,Q._rels.push({type:D0.hyperlink,data:W.slide?"slide":"dummy",rId:N,Target:W.url||W.slide.toString()}),W._rId=N,q.hyperlink=W;Q._slideObjects.push(q)}function Gz(Q,$){let q=$.x||0,K=$.y||0,J=$.w||2,Z=$.h||2,G=$.data||"",B=$.link||"",W=$.path||"",U=$.type||"audio",V="",N=$.cover||$z,F=$.objectName?L0($.objectName):`Media ${Q._slideObjects.filter((v)=>v._type===D0.media).length}`,M={_type:D0.media};if(!W&&!G&&U!=="online")throw new Error("addMedia() error: either `data` or `path` are required!");else if(G&&!G.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')");else if(!N.toLowerCase().includes("base64,"))throw new Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')");if(U==="online"&&!B)throw new Error("addMedia() error: online videos require `link` value");if(V=$.extn||(G?G.split(";")[0].split("/")[1]:W.split(".").pop())||"mp3",M.mtype=U,M.media=W||"preencoded.mov",M.options={},M.options.x=q,M.options.y=K,M.options.w=J,M.options.h=Z,M.options.objectName=F,U==="online"){let v=G2(Q);Q._relsMedia.push({path:W||"preencoded"+V,data:"dummy",type:"online",extn:V,rId:v,Target:B}),M.mediaRid=v,Q._relsMedia.push({path:"preencoded.png",data:N,type:"image/png",extn:"png",rId:G2(Q),Target:`../media/image-${Q._slideNum}-${Q._relsMedia.length+1}.png`})}else{let v=Q._relsMedia.filter((y)=>y.path&&y.path===W&&y.type===U+"/"+V&&!y.isDuplicate)[0],x=G2(Q);Q._relsMedia.push({path:W||"preencoded"+V,type:U+"/"+V,extn:V,data:G||"",rId:x,isDuplicate:!!(v===null||v===void 0?void 0:v.Target),Target:(v===null||v===void 0?void 0:v.Target)?v.Target:`../media/media-${Q._slideNum}-${Q._relsMedia.length+1}.${V}`}),M.mediaRid=x,Q._relsMedia.push({path:W||"preencoded"+V,type:U+"/"+V,extn:V,data:G||"",rId:G2(Q),isDuplicate:!!(v===null||v===void 0?void 0:v.Target),Target:(v===null||v===void 0?void 0:v.Target)?v.Target:`../media/media-${Q._slideNum}-${Q._relsMedia.length+0}.${V}`}),Q._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:N,rId:G2(Q),Target:`../media/image-${Q._slideNum}-${Q._relsMedia.length+1}.png`})}Q._slideObjects.push(M)}function Bz(Q,$){Q._slideObjects.push({_type:D0.notes,text:[{text:$}]})}function Y9(Q,$,q){let K=typeof q==="object"?q:{};K.line=K.line||{type:"none"};let J={_type:D0.text,shape:$||j2.RECTANGLE,options:K,text:null};if(!$)throw new Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");let Z={type:K.line.type||"solid",color:K.line.color||jJ,transparency:K.line.transparency||0,width:K.line.width||1,dashType:K.line.dashType||"solid",beginArrowType:K.line.beginArrowType||null,endArrowType:K.line.endArrowType||null};if(typeof K.line==="object"&&K.line.type!=="none")K.line=Z;if(K.x=K.x||(K.x===0?0:1),K.y=K.y||(K.y===0?0:1),K.w=K.w||(K.w===0?0:1),K.h=K.h||(K.h===0?0:1),K.objectName=K.objectName?L0(K.objectName):`Shape ${Q._slideObjects.filter((G)=>G._type===D0.text).length}`,typeof K.line==="string"){let G=Z;G.color=String(K.line),K.line=G}if(typeof K.lineSize==="number")K.line.width=K.lineSize;if(typeof K.lineDash==="string")K.line.dashType=K.lineDash;if(typeof K.lineHead==="string")K.line.beginArrowType=K.lineHead;if(typeof K.lineTail==="string")K.line.endArrowType=K.lineTail;b6(Q,J),Q._slideObjects.push(J)}function Wz(Q,$,q,K,J,Z,G){let B=[Q],W=q&&typeof q==="object"?q:{};W.objectName=W.objectName?L0(W.objectName):`Table ${Q._slideObjects.filter((F)=>F._type===D0.table).length}`;{if($===null||$.length===0||!Array.isArray($))throw new Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");if(!$[0]||!Array.isArray($[0]))throw new Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}let U=[];if($.forEach((F)=>{let M=[];if(Array.isArray(F))F.forEach((v)=>{let x={_type:D0.tablecell,text:"",options:typeof v==="object"&&v.options?v.options:{}};if(typeof v==="string"||typeof v==="number")x.text=v.toString();else if(v.text){if(typeof v.text==="string"||typeof v.text==="number")x.text=v.text.toString();else if(v.text)x.text=v.text;if(v.options&&typeof v.options==="object")x.options=v.options}x.options.border=x.options.border||W.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];let y=x.options.border;if(!Array.isArray(y)&&typeof y==="object")x.options.border=[y,y,y,y];if(!x.options.border[0])x.options.border[0]={type:"none"};if(!x.options.border[1])x.options.border[1]={type:"none"};if(!x.options.border[2])x.options.border[2]={type:"none"};if(!x.options.border[3])x.options.border[3]={type:"none"};[0,1,2,3].forEach((z)=>{x.options.border[z]={type:x.options.border[z].type||P6.type,color:x.options.border[z].color||P6.color,pt:typeof x.options.border[z].pt==="number"?x.options.border[z].pt:P6.pt}}),M.push(x)});else console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:"),console.log(F);U.push(M)}),W.x=v0(W.x||(W.x===0?0:H0/2),"X",J),W.y=v0(W.y||(W.y===0?0:H0/2),"Y",J),W.h)W.h=v0(W.h,"Y",J);if(W.fontSize=W.fontSize||f1,W.margin=W.margin===0||W.margin?W.margin:CJ,typeof W.margin==="number")W.margin=[Number(W.margin),Number(W.margin),Number(W.margin),Number(W.margin)];if(JSON.stringify({arrRows:U}).indexOf("hyperlink")===-1){if(!W.color)W.color=W.color||z1}if(typeof W.border==="string")console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`"),W.border=null;else if(Array.isArray(W.border))[0,1,2,3].forEach((F)=>{W.border[F]=W.border[F]?{type:W.border[F].type||P6.type,color:W.border[F].color||P6.color,pt:W.border[F].pt||P6.pt}:{type:"none"}});if(W.autoPage=typeof W.autoPage==="boolean"?W.autoPage:!1,W.autoPageRepeatHeader=typeof W.autoPageRepeatHeader==="boolean"?W.autoPageRepeatHeader:!1,W.autoPageHeaderRows=typeof W.autoPageHeaderRows!=="undefined"&&!isNaN(Number(W.autoPageHeaderRows))?Number(W.autoPageHeaderRows):1,W.autoPageLineWeight=typeof W.autoPageLineWeight!=="undefined"&&!isNaN(Number(W.autoPageLineWeight))?Number(W.autoPageLineWeight):0,W.autoPageLineWeight){if(W.autoPageLineWeight>1)W.autoPageLineWeight=1;else if(W.autoPageLineWeight<-1)W.autoPageLineWeight=-1}let V=P8;if(K&&typeof K._margin!=="undefined"){if(Array.isArray(K._margin))V=K._margin;else if(!isNaN(Number(K._margin)))V=[Number(K._margin),Number(K._margin),Number(K._margin),Number(K._margin)]}if(W.colW){let F=U[0].reduce((M,v)=>{var x;if(((x=v===null||v===void 0?void 0:v.options)===null||x===void 0?void 0:x.colspan)&&typeof v.options.colspan==="number")M+=v.options.colspan;else M+=1;return M},0);if(typeof W.colW==="string"||typeof W.colW==="number")W.w=Math.floor(Number(W.colW)*F),W.colW=null;else if(W.colW&&Array.isArray(W.colW)&&W.colW.length===1&&F>1)W.w=Math.floor(Number(W.colW)*F),W.colW=null;else if(W.colW&&Array.isArray(W.colW)&&W.colW.length!==F)console.warn("addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths."),W.colW=null}else if(W.w)W.w=v0(W.w,"X",J);else W.w=Math.floor(J._sizeW/H0-V[1]-V[3]);if(W.x&&W.x<20)W.x=C0(W.x);if(W.y&&W.y<20)W.y=C0(W.y);if(W.w&&typeof W.w==="number"&&W.w<20)W.w=C0(W.w);if(W.h&&typeof W.h==="number"&&W.h<20)W.h=C0(W.h);U.forEach((F)=>{F.forEach((M,v)=>{if(typeof M==="number"||typeof M==="string")F[v]={_type:D0.tablecell,text:String(F[v]),options:W};else if(typeof M==="object"){if(typeof M.text==="number")F[v].text=F[v].text.toString();else if(typeof M.text==="undefined"||M.text===null)F[v].text="";F[v].options=M.options||{},F[v]._type=D0.tablecell}})});let N=[];if(W&&!W.autoPage)b6(Q,U),Q._slideObjects.push({_type:D0.table,arrTabRows:U,options:Object.assign({},W)});else{if(W.autoPageRepeatHeader)W._arrObjTabHeadRows=U.filter((F,M)=>M{if(!G(Q._slideNum+M))B.push(Z({masterName:(K===null||K===void 0?void 0:K._name)||null}));if(M>0)W.y=C0(W.autoPageSlideStartY||W.newSlideStartY||V[0]);{let v=G(Q._slideNum+M);if(W.autoPage=!1,b6(v,F.rows),v.addTable(F.rows,Object.assign({},W)),M>0)N.push(v)}})}return N}function i5(Q,$,q,K){let J={_type:K?D0.placeholder:D0.text,shape:(q===null||q===void 0?void 0:q.shape)||j2.RECTANGLE,text:!$||$.length===0?[{text:"",options:null}]:$,options:q||{}};function Z(G){{if(!G.placeholder)G.color=G.color||J.options.color||Q.color||z1;if(G.placeholder||K)G.bullet=G.bullet||!1;if(G.placeholder&&Q._slideLayout&&Q._slideLayout._slideObjects){let B=Q._slideLayout._slideObjects.filter((W)=>W._type==="placeholder"&&W.options&&W.options.placeholder&&W.options.placeholder===G.placeholder)[0];if(B===null||B===void 0?void 0:B.options)G=Object.assign(Object.assign({},G),B.options)}if(G.objectName=G.objectName?L0(G.objectName):`Text ${Q._slideObjects.filter((B)=>B._type===D0.text).length}`,G.shape===j2.LINE){let B={type:G.line.type||"solid",color:G.line.color||jJ,transparency:G.line.transparency||0,width:G.line.width||1,dashType:G.line.dashType||"solid",beginArrowType:G.line.beginArrowType||null,endArrowType:G.line.endArrowType||null};if(typeof G.line==="object")G.line=B;if(typeof G.line==="string"){let W=B;if(typeof G.line==="string")W.color=G.line;G.line=W}if(typeof G.lineSize==="number")G.line.width=G.lineSize;if(typeof G.lineDash==="string")G.line.dashType=G.lineDash;if(typeof G.lineHead==="string")G.line.beginArrowType=G.lineHead;if(typeof G.lineTail==="string")G.line.endArrowType=G.lineTail}if(G.line=G.line||{},G.lineSpacing=G.lineSpacing&&!isNaN(G.lineSpacing)?G.lineSpacing:null,G.lineSpacingMultiple=G.lineSpacingMultiple&&!isNaN(G.lineSpacingMultiple)?G.lineSpacingMultiple:null,G._bodyProp=G._bodyProp||{},G._bodyProp.autoFit=G.autoFit||!1,G._bodyProp.anchor=!G.placeholder?u6.ctr:null,G._bodyProp.vert=G.vert||null,G._bodyProp.wrap=typeof G.wrap==="boolean"?G.wrap:!0,G.inset&&!isNaN(Number(G.inset))||G.inset===0)G._bodyProp.lIns=C0(G.inset),G._bodyProp.rIns=C0(G.inset),G._bodyProp.tIns=C0(G.inset),G._bodyProp.bIns=C0(G.inset);if(typeof G.underline==="boolean"&&G.underline===!0)G.underline={style:"sng"}}{if((G.align||"").toLowerCase().indexOf("c")===0)G._bodyProp.align=S6.center;else if((G.align||"").toLowerCase().indexOf("l")===0)G._bodyProp.align=S6.left;else if((G.align||"").toLowerCase().indexOf("r")===0)G._bodyProp.align=S6.right;else if((G.align||"").toLowerCase().indexOf("j")===0)G._bodyProp.align=S6.justify;if((G.valign||"").toLowerCase().indexOf("b")===0)G._bodyProp.anchor=u6.b;else if((G.valign||"").toLowerCase().indexOf("m")===0)G._bodyProp.anchor=u6.ctr;else if((G.valign||"").toLowerCase().indexOf("t")===0)G._bodyProp.anchor=u6.t}return D9(G.shadow),G}J.options=Z(J.options),J.text.forEach((G)=>G.options=Z(G.options||{})),b6(Q,J.text||""),Q._slideObjects.push(J)}function zz(Q){(Q._slideLayout._slideObjects||[]).forEach(($)=>{if($._type===D0.placeholder){if(Q._slideObjects.filter((q)=>q.options&&q.options.placeholder===$.options.placeholder).length===0)i5(Q,[{text:""}],$.options,!1)}})}function hJ(Q,$){var q;if($.bkgd){if(!$.background)$.background={};if(typeof $.bkgd==="string")$.background.color=$.bkgd;else{if($.bkgd.data)$.background.data=$.bkgd.data;if($.bkgd.path)$.background.path=$.bkgd.path;if($.bkgd.src)$.background.path=$.bkgd.src}}if((q=$.background)===null||q===void 0?void 0:q.fill)$.background.color=$.background.fill;if(Q&&(Q.path||Q.data)){Q.path=Q.path||"preencoded.png";let K=(Q.path.split(".").pop()||"png").split("?")[0];if(K==="jpg")K="jpeg";$._relsMedia=$._relsMedia||[];let J=$._relsMedia.length+1;$._relsMedia.push({path:Q.path,type:D0.image,extn:K,data:Q.data||null,rId:J,Target:`../media/${($._name||"").replace(/\s+/gi,"-")}-image-${$._relsMedia.length+1}.${K}`}),$._bkgdImgRid=J}}function b6(Q,$,q){let K=[];if(typeof $==="string"||typeof $==="number")return;else if(Array.isArray($))K=$;else if(typeof $==="object")K=[$];K.forEach((J,Z)=>{if(q&&q[Z]&&q[Z].hyperlink)J.options=Object.assign(Object.assign({},J.options),q[Z]);if(Array.isArray(J)){let G=[];J.forEach((B)=>{if(B.options&&!B.text.options)G.push(B.options)}),b6(Q,J,G)}else if(Array.isArray(J.text))b6(Q,J.text,q&&q[Z]?[q[Z]]:void 0);else if(J&&typeof J==="object"&&J.options&&J.options.hyperlink&&!J.options.hyperlink._rId)if(typeof J.options.hyperlink!=="object")console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` ");else if(!J.options.hyperlink.url&&!J.options.hyperlink.slide)console.log("ERROR: 'hyperlink requires either: `url` or `slide`'");else{let G=G2(Q);Q._rels.push({type:D0.hyperlink,data:J.options.hyperlink.slide?"slide":"dummy",rId:G,Target:L0(J.options.hyperlink.url)||J.options.hyperlink.slide.toString()}),J.options.hyperlink._rId=G}else if(J&&typeof J==="object"&&J.options&&J.options.hyperlink&&J.options.hyperlink._rId){if(Q._rels.filter((G)=>G.rId===J.options.hyperlink._rId).length===0)Q._rels.push({type:D0.hyperlink,data:J.options.hyperlink.slide?"slide":"dummy",rId:J.options.hyperlink._rId,Target:L0(J.options.hyperlink.url)||J.options.hyperlink.slide.toString()})}})}class xJ{constructor(Q){var $;this.addSlide=Q.addSlide,this.getSlide=Q.getSlide,this._name=`Slide ${Q.slideNumber}`,this._presLayout=Q.presLayout,this._rId=Q.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=Q.setSlideNum,this._slideId=Q.slideId,this._slideLayout=Q.slideLayout||null,this._slideNum=Q.slideNumber,this._slideObjects=[],this._slideNumberProps=(($=this._slideLayout)===null||$===void 0?void 0:$._slideNumberProps)?this._slideLayout._slideNumberProps:null}set bkgd(Q){if(this._bkgd=Q,!this._background||!this._background.color){if(!this._background)this._background={};if(typeof Q==="string")this._background.color=Q}}get bkgd(){return this._bkgd}set background(Q){if(this._background=Q,Q)hJ(Q,this)}get background(){return this._background}set color(Q){this._color=Q}get color(){return this._color}set hidden(Q){this._hidden=Q}get hidden(){return this._hidden}set slideNumber(Q){this._slideNumberProps=Q,this._setSlideNum(Q)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart(Q,$,q){let K=q||{};return K._type=Q,XJ(this,Q,$,q),this}addImage(Q){return yJ(this,Q),this}addMedia(Q){return Gz(this,Q),this}addNotes(Q){return Bz(this,Q),this}addShape(Q,$){return Y9(this,Q,$),this}addTable(Q,$){return this._newAutoPagedSlides=Wz(this,Q,$,this._slideLayout,this._presLayout,this.addSlide,this.getSlide),this}addText(Q,$){return i5(this,typeof Q==="string"||typeof Q==="number"?[{text:Q,options:$}]:Q,$,!1),this}}function Fz(Q,$){return H1(this,void 0,void 0,function*(){let q=Q.data;return yield new Promise((K,J)=>{var Z,G;let B=new L9.default,W=(q.length-1)*2+1,U=((G=(Z=q[0])===null||Z===void 0?void 0:Z.labels)===null||G===void 0?void 0:G.length)>1;B.folder("_rels"),B.folder("docProps"),B.folder("xl/_rels"),B.folder("xl/tables"),B.folder("xl/theme"),B.folder("xl/worksheets"),B.folder("xl/worksheets/_rels"),B.file("[Content_Types].xml",' \n'),B.file("_rels/.rels",` -`),B.file("docProps/app.xml",`Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300 -`),B.file("docProps/core.xml",'PptxGenJSPptxGenJS'+new Date().toISOString()+''+new Date().toISOString()+""),B.file("xl/_rels/workbook.xml.rels",''),B.file("xl/styles.xml",'\n'),B.file("xl/theme/theme1.xml",''),B.file("xl/workbook.xml",` -`),B.file("xl/worksheets/_rels/sheet1.xml.rels",` -`);{let V='';if(Q.opts._type===F0.BUBBLE||Q.opts._type===F0.BUBBLE3D)V+=``;else if(Q.opts._type===F0.SCATTER)V+=``;else if(U){let N=q.length;q[0].labels.forEach((F)=>N+=F.filter((M)=>M&&M!=="").length),V+=``,V+=""}else{let N=q.length+q[0].labels.length*q[0].labels[0].length+q[0].labels.length,F=q.length+q[0].labels.length*q[0].labels[0].length+1;V+=``,V+=''}if(Q.opts._type===F0.BUBBLE||Q.opts._type===F0.BUBBLE3D)q.forEach((N,F)=>{if(F===0)V+="X-Axis";else V+=`${L0(N.name||`Y-Axis${F}`)}`,V+=`${L0(`Size${F}`)}`});else q.forEach((N)=>{V+=`${L0((N.name||" ").replace("X-Axis","X-Values"))}`});if(Q.opts._type!==F0.BUBBLE&&Q.opts._type!==F0.BUBBLE3D&&Q.opts._type!==F0.SCATTER)q[0].labels.slice().reverse().forEach((N)=>{N.filter((F)=>F&&F!=="").forEach((F)=>{V+=`${L0(F)}`})});V+=` -`,B.file("xl/sharedStrings.xml",V)}{let V='';if(Q.opts._type===F0.BUBBLE||Q.opts._type===F0.BUBBLE3D){V+=``,V+=``;let N=1;q.forEach((F,M)=>{if(M===0)V+=``;else V+=``,N++,V+=``})}else if(Q.opts._type===F0.SCATTER)V+=`
`,V+=``,q.forEach((N,F)=>{V+=``});else V+=`
`,V+=``,q[0].labels.forEach((N,F)=>{V+=``}),q.forEach((N,F)=>{V+=``});V+="",V+='',V+="
",B.file("xl/tables/table1.xml",V)}{let V='';if(V+='',Q.opts._type===F0.BUBBLE||Q.opts._type===F0.BUBBLE3D)V+=``;else if(Q.opts._type===F0.SCATTER)V+=``;else V+=``;if(V+='',V+='',Q.opts._type===F0.BUBBLE||Q.opts._type===F0.BUBBLE3D){V+="",V+=``,V+='0';for(let N=1;N${N}`;V+="",q[0].values.forEach((N,F)=>{V+=``,V+=`${N}`;let M=2;for(let v=1;v${q[v].values[F]||""}`,M++,V+=`${q[v].sizes[F]||""}`,M++;V+=""})}else if(Q.opts._type===F0.SCATTER){V+="",V+=``;for(let N=0;N${N}`;V+="",q[0].values.forEach((N,F)=>{V+=``,V+=`${N}`;for(let M=1;M${q[M].values[F]||q[M].values[F]===0?q[M].values[F]:""}`;V+=""})}else if(V+="",!U){V+=``,q[0].labels.forEach((N,F)=>{V+=`0`});for(let N=0;N${N+1}`;V+="",q[0].labels[0].forEach((N,F)=>{V+=``;for(let M=q[0].labels.length-1;M>=0;M--)V+=``,V+=`${q.length+F+1}`,V+="";for(let M=0;M${q[M].values[F]||""}`;V+=""})}else{V+=``;for(let v=0;v0`;for(let v=q[0].labels.length-1;v${v}`;V+="";let N=q.length,F=q[0].labels[0].length,M=q[0].labels.length;for(let v=0;v`;let x=N,y=q[0].labels.slice().reverse();y.forEach((D,z)=>{if(D[v]){let H=z===0?1:y[z-1].filter((R)=>R&&R!=="").length;x+=H,V+=`${x}`}});for(let D=0;D${q[D].values[v]||0}`;V+=""}}V+="",V+='',V+=` -`,B.file("xl/worksheets/sheet1.xml",V)}B.generateAsync({type:"base64"}).then((V)=>{$.file(`ppt/embeddings/Microsoft_Excel_Worksheet${Q.globalId}.xlsx`,V,{base64:!0}),$.file("ppt/charts/_rels/"+Q.fileName+".rels",``),$.file(`ppt/charts/${Q.fileName}`,Mz(Q)),K("")}).catch((V)=>{J(V)})})})}function Mz(Q){var $,q,K,J;let Z='',G=!1;{if(Z+='',Z+='',Z+=``,Z+="",Q.opts.showTitle)Z+=l5({title:Q.opts.title||"Chart Title",color:Q.opts.titleColor,fontFace:Q.opts.titleFontFace,fontSize:Q.opts.titleFontSize||eW,titleAlign:Q.opts.titleAlign,titleBold:Q.opts.titleBold,titlePos:Q.opts.titlePos,titleRotate:Q.opts.titleRotate},Q.opts.x,Q.opts.y),Z+='';else Z+='';if(Q.opts._type===F0.BAR3D)Z+=``;if(Z+="",Q.opts.layout)Z+="",Z+=" ",Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=" ",Z+="";else Z+=""}if(Array.isArray(Q.opts._type))Q.opts._type.forEach((B)=>{let W=Object.assign(Object.assign({},Q.opts),B.options),U=W.secondaryValAxis?d5:Z2,V=W.secondaryCatAxis?W9:h8;G=G||W.secondaryValAxis,Z+=kJ(B.type,B.data,W,U,V)});else Z+=kJ(Q.opts._type,Q.data,Q.opts,Z2,h8);if(Q.opts._type!==F0.PIE&&Q.opts._type!==F0.DOUGHNUT){if(Q.opts.valAxes&&Q.opts.valAxes.length>1&&!G)throw new Error("Secondary axis must be used by one of the multiple charts");if(Q.opts.catAxes){if(!Q.opts.valAxes||Q.opts.valAxes.length!==Q.opts.catAxes.length)throw new Error("There must be the same number of value and category axes.");Z+=V9(Object.assign(Object.assign({},Q.opts),Q.opts.catAxes[0]),h8,Z2)}else Z+=V9(Q.opts,h8,Z2);if(Q.opts.valAxes){if(Z+=Z9(Object.assign(Object.assign({},Q.opts),Q.opts.valAxes[0]),Z2),Q.opts.valAxes[1])Z+=Z9(Object.assign(Object.assign({},Q.opts),Q.opts.valAxes[1]),d5)}else if(Z+=Z9(Q.opts,Z2),Q.opts._type===F0.BAR3D)Z+=wz(Q.opts,fJ,Z2);if((($=Q.opts)===null||$===void 0?void 0:$.catAxes)&&((q=Q.opts)===null||q===void 0?void 0:q.catAxes[1]))Z+=V9(Object.assign(Object.assign({},Q.opts),Q.opts.catAxes[1]),W9,d5)}{if(Q.opts.showDataTable)Z+="",Z+=` `,Z+=` `,Z+=` `,Z+=` `,Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+=' ',Z+=` `,Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+="";if(Z+=" ",Z+=((K=Q.opts.plotArea.fill)===null||K===void 0?void 0:K.color)?k1(Q.opts.plotArea.fill):"",Z+=Q.opts.plotArea.border?`${k1(Q.opts.plotArea.border.color)}`:"",Z+=" ",Z+=" ",Z+="",Q.opts.showLegend){if(Z+="",Z+='',Z+='',Q.opts.legendFontFace||Q.opts.legendFontSize||Q.opts.legendColor){if(Z+="",Z+=" ",Z+=" ",Z+=" ",Z+=" ",Z+=Q.opts.legendFontSize?``:"",Q.opts.legendColor)Z+=k1(Q.opts.legendColor);if(Q.opts.legendFontFace)Z+='';if(Q.opts.legendFontFace)Z+='';Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=""}Z+=""}}if(Z+=' ',Z+=' ',Q.opts._type===F0.SCATTER)Z+='';return Z+="",Z+="",Z+=((J=Q.opts.chartArea.fill)===null||J===void 0?void 0:J.color)?k1(Q.opts.chartArea.fill):"",Z+=Q.opts.chartArea.border?`${k1(Q.opts.chartArea.border.color)}`:"",Z+=" ",Z+="",Z+='',Z+="",Z}function kJ(Q,$,q,K,J,Z){let G=-1,B=1,W=null,U="";switch(Q){case F0.AREA:case F0.BAR:case F0.BAR3D:case F0.LINE:case F0.RADAR:if(U+=``,Q===F0.AREA&&q.barGrouping==="stacked")U+='';if(Q===F0.BAR||Q===F0.BAR3D)U+='',U+='';if(Q===F0.RADAR)U+='';U+='',$.forEach((V)=>{var N;G++,U+="",U+=` `,U+=" ",U+=" ",U+=" Sheet1!$"+h0(V._dataIndex+V.labels.length+1)+"$1",U+=' '+L0(V.name)+"",U+=" ",U+=" ";let F=q.chartColors?q.chartColors[G%q.chartColors.length]:null;if(U+=" ",F==="transparent")U+="";else if(q.chartColorsOpacity)U+=""+f0(F,``)+"";else U+=""+f0(F)+"";if(Q===F0.LINE||Q===F0.RADAR)if(q.lineSize===0)U+="";else U+=`${f0(F)}`,U+='';else if(q.dataBorder)U+=`${f0(q.dataBorder.color)}`;if(U+=q6(q.shadow,Q6),U+=" ",U+=' ',Q!==F0.RADAR){if(U+="",U+=``,q.dataLabelBkgrdColors)U+=`${f0(F)}`;if(U+="",U+=``,U+=`${f0(q.dataLabelColor||z1)}`,U+=``,U+="",q.dataLabelPosition)U+=``;U+='',U+=``,U+=``,U+=``,U+=""}if(Q===F0.LINE||Q===F0.RADAR){if(U+="",U+=' ',q.lineDataSymbolSize)U+=``;U+=" ",U+=` ${f0(q.chartColors[V._dataIndex+1>q.chartColors.length?Math.floor(Math.random()*q.chartColors.length):V._dataIndex])}`,U+=` ${f0(q.lineDataSymbolLineColor||F)}`,U+=" ",U+=" ",U+=""}if((Q===F0.BAR||Q===F0.BAR3D)&&$.length===1&&(q.chartColors&&q.chartColors!==x8&&q.chartColors.length>1||((N=q.invertedColors)===null||N===void 0?void 0:N.length)))V.values.forEach((M,v)=>{let x=M<0?q.invertedColors||q.chartColors||x8:q.chartColors||[];if(U+=" ",U+=` `,U+=' ',U+=' ',U+=" ",q.lineSize===0)U+="";else if(Q===F0.BAR)U+="",U+=' ',U+="";else U+="",U+=" ",U+=' ',U+=" ",U+="";U+=q6(q.shadow,Q6),U+=" ",U+=" "});{if(U+="",q.catLabelFormatCode)U+=" ",U+=` Sheet1!$A$2:$A$${V.labels[0].length+1}`,U+=" ",U+=" "+(q.catLabelFormatCode||"General")+"",U+=` `,V.labels[0].forEach((M,v)=>U+=`${L0(M)}`),U+=" ",U+=" ";else U+=" ",U+=` Sheet1!$A$2:$${h0(V.labels.length)}$${V.labels[0].length+1}`,U+=" ",U+=` `,V.labels.forEach((M)=>{U+="",M.forEach((v,x)=>U+=`${L0(v)}`),U+=""}),U+=" ",U+=" ";U+=""}if(U+="",U+=" ",U+=`Sheet1!$${h0(V._dataIndex+V.labels.length+1)}$2:$${h0(V._dataIndex+V.labels.length+1)}$${V.labels[0].length+1}`,U+=" ",U+=" "+(q.valLabelFormatCode||q.dataTableFormatCode||"General")+"",U+=` `,V.values.forEach((M,v)=>U+=`${M||M===0?M:""}`),U+=" ",U+=" ",U+="",Q===F0.LINE)U+='';U+=""});{if(U+=" ",U+=` `,U+=" ",U+=" ",U+=" ",U+=" ",U+=` `,U+=" "+f0(q.dataLabelColor||z1)+"",U+=' ',U+=" ",U+=" ",U+=" ",q.dataLabelPosition)U+=' ';U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=` `,U+=" "}if(Q===F0.BAR)U+=` `,U+=` `;else if(Q===F0.BAR3D)U+=` `,U+=` `,U+=' ';else if(Q===F0.LINE)U+=' ';U+=``,U+=``;break;case F0.SCATTER:U+="",U+='',U+='',G=-1,$.filter((V,N)=>N>0).forEach((V,N)=>{G++,U+="",U+=` `,U+=` `,U+=" ",U+=" ",U+=` Sheet1!$${h0(N+2)}$1`,U+=' '+L0(V.name)+"",U+=" ",U+=" ",U+=" ";{let F=q.chartColors[G%q.chartColors.length];if(F==="transparent")U+="";else if(q.chartColorsOpacity)U+=""+f0(F,'')+"";else U+=""+f0(F)+"";if(q.lineSize===0)U+="";else U+=`${f0(F)}`,U+=``;U+=q6(q.shadow,Q6)}U+=" ";{if(U+="",U+=' ',q.lineDataSymbolSize)U+=``;U+="",U+=`${f0(q.chartColors[N+1>q.chartColors.length?Math.floor(Math.random()*q.chartColors.length):N])}`,U+=`${f0(q.lineDataSymbolLineColor||q.chartColors[G%q.chartColors.length])}`,U+="",U+="",U+=""}if(q.showLabel){let F=m5("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");if(V.labels[0]&&(q.dataLabelFormatScatter==="custom"||q.dataLabelFormatScatter==="customXY"))U+="",V.labels[0].forEach((M,v)=>{if(q.dataLabelFormatScatter==="custom"||q.dataLabelFormatScatter==="customXY"){if(U+=" ",U+=` `,U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=' ',U+=" "+L0(M)+"",U+=" ",q.dataLabelFormatScatter==="customXY"&&!/^ *$/.test(M))U+=" ",U+=' ',U+=" (",U+=" ",U+=' ',U+=' ',U+=" ",U+=" ",U+=" ",U+=" ["+L0(V.name)+"",U+=" ",U+=" ",U+=' ',U+=" , ",U+=" ",U+=' ',U+=' ',U+=" ",U+=" ",U+=" ",U+=" ["+L0(V.name)+"]",U+=" ",U+=" ",U+=' ',U+=" )",U+=" ",U+=' ';if(U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",q.dataLabelPosition)U+=' ';U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=" ",U+=' ',U+=' ',U+=` `,U+=" ",U+=" ",U+=""}}),U+="";if(q.dataLabelFormatScatter==="XY"){if(U+="",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=' ',U+=" ",U+=" ",q.dataLabelPosition)U+=' ';U+=' ',U+=` `,U+=` `,U+=` `,U+=' ',U+=' ',U+=" ",U+=' ',U+=' ',U+=" ",U+=" ",U+=""}}if($.length===1&&q.chartColors!==x8)V.values.forEach((F,M)=>{let v=F<0?q.invertedColors||q.chartColors||x8:q.chartColors||[];if(U+=" ",U+=` `,U+=' ',U+=' ',U+=" ",q.lineSize===0)U+="";else U+="",U+=' ',U+="";U+=q6(q.shadow,Q6),U+=" ",U+=" "});U+="",U+=" ",U+=` Sheet1!$A$2:$A$${$[0].values.length+1}`,U+=" ",U+=" General",U+=` `,$[0].values.forEach((F,M)=>{U+=`${F||F===0?F:""}`}),U+=" ",U+=" ",U+="",U+="",U+=" ",U+=` Sheet1!$${h0(N+2)}$2:$${h0(N+2)}$${$[0].values.length+1}`,U+=" ",U+=" General",U+=` `,$[0].values.forEach((F,M)=>{U+=`${V.values[M]||V.values[M]===0?V.values[M]:""}`}),U+=" ",U+=" ",U+="",U+='',U+=""});{if(U+=" ",U+=` `,U+=" ",U+=" ",U+=" ",U+=" ",U+=` `,U+=" "+f0(q.dataLabelColor||z1)+"",U+=' ',U+=" ",U+=" ",U+=" ",q.dataLabelPosition)U+=' ';U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=" "}U+=``,U+="";break;case F0.BUBBLE:case F0.BUBBLE3D:U+="",U+='',G=-1,$.filter((V,N)=>N>0).forEach((V,N)=>{G++,U+="",U+=` `,U+=` `,U+=" ",U+=" ",U+=" Sheet1!$"+h0(B+1)+"$1",U+=' '+L0(V.name)+"",U+=" ",U+=" ";{U+="";let F=q.chartColors[G%q.chartColors.length];if(F==="transparent")U+="";else if(q.chartColorsOpacity)U+=`${f0(F,'')}`;else U+=""+f0(F)+"";if(q.lineSize===0)U+="";else if(q.dataBorder)U+=`${f0(q.dataBorder.color)}`;else U+=`${f0(F)}`,U+=``;U+=q6(q.shadow,Q6),U+=""}U+="",U+=" ",U+=` Sheet1!$A$2:$A$${$[0].values.length+1}`,U+=" ",U+=" General",U+=` `,$[0].values.forEach((F,M)=>{U+=`${F||F===0?F:""}`}),U+=" ",U+=" ",U+="",U+="",U+=" ",U+=`Sheet1!$${h0(B+1)}$2:$${h0(B+1)}$${$[0].values.length+1}`,B++,U+=" ",U+=" General",U+=` `,$[0].values.forEach((F,M)=>{U+=`${V.values[M]||V.values[M]===0?V.values[M]:""}`}),U+=" ",U+=" ",U+="",U+=" ",U+=" ",U+=`Sheet1!$${h0(B+1)}$2:$${h0(B+1)}$${V.sizes.length+1}`,B++,U+=" ",U+=" General",U+=` `,V.sizes.forEach((F,M)=>{U+=`${F||""}`}),U+=" ",U+=" ",U+=" ",U+=' ',U+=""});{if(U+="",U+=``,U+="",U+=``,U+=`${f0(q.dataLabelColor||z1)}`,U+=``,U+="",q.dataLabelPosition)U+=``;U+='',U+=``,U+=``,U+="",U+=' ',U+=' ',U+=" ",U+="",U+=""}U+=``,U+="";break;case F0.DOUGHNUT:case F0.PIE:if(W=$[0],U+="",U+=' ',U+="",U+=' ',U+=' ',U+=" ",U+=" ",U+=" Sheet1!$B$1",U+=" ",U+=' ',U+=' '+L0(W.name)+"",U+=" ",U+=" ",U+=" ",U+=" ",U+=' ',U+=' ',q.dataNoEffects)U+="";else U+=q6(q.shadow,Q6);if(U+=" ",W.labels[0].forEach((V,N)=>{if(U+="",U+=` `,U+=' ',U+=" ",U+=`${f0(q.chartColors[N+1>q.chartColors.length?Math.floor(Math.random()*q.chartColors.length):N])}`,q.dataBorder)U+=`${f0(q.dataBorder.color)}`;U+=q6(q.shadow,Q6),U+=" ",U+=""}),U+="",W.labels[0].forEach((V,N)=>{if(U+="",U+=` `,U+=` `,U+=" ",U+=" ",U+=" ",U+=` `,U+=" "+f0(q.dataLabelColor||z1)+"",U+=` `,U+=" ",U+=" ",U+=" ",Q===F0.PIE&&q.dataLabelPosition)U+=``;U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=" "}),U+=` `,U+=" ",U+=" ",U+=" ",U+=" ",U+=" ",U+=` `,U+=' ',U+=" ",U+=" ",U+=" ",U+=" ",U+=Q===F0.PIE?'':"",U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=' ',U+=` `,U+="",U+="",U+=" ",U+=` Sheet1!$A$2:$A$${W.labels[0].length+1}`,U+=" ",U+=` `,W.labels[0].forEach((V,N)=>{U+=`${L0(V)}`}),U+=" ",U+=" ",U+="",U+=" ",U+=" ",U+=` Sheet1!$B$2:$B$${W.labels[0].length+1}`,U+=" ",U+=` `,W.values.forEach((V,N)=>{U+=`${V||V===0?V:""}`}),U+=" ",U+=" ",U+=" ",U+=" ",U+=` `,Q===F0.DOUGHNUT)U+=``;U+="";break;default:U+="";break}return U}function V9(Q,$,q){let K="";if(Q._type===F0.SCATTER||Q._type===F0.BUBBLE||Q._type===F0.BUBBLE3D)K+="";else K+="";if(K+=' ',K+=" ",K+='',Q.catAxisMaxVal||Q.catAxisMaxVal===0)K+=``;if(Q.catAxisMinVal||Q.catAxisMinVal===0)K+=``;if(K+="",K+=' ',K+=' ',K+=Q.catGridLine.style!=="none"?H9(Q.catGridLine):"",Q.showCatAxisTitle)K+=l5({color:Q.catAxisTitleColor,fontFace:Q.catAxisTitleFontFace,fontSize:Q.catAxisTitleFontSize,titleRotate:Q.catAxisTitleRotate,title:Q.catAxisTitle||"Axis Title"});if(Q._type===F0.SCATTER||Q._type===F0.BUBBLE||Q._type===F0.BUBBLE3D)K+=' ';else K+=' ';if(Q._type===F0.SCATTER)K+=' ',K+=' ',K+=' ';else K+=' ',K+=' ',K+=' ';if(K+=" ",K+=` `,K+=!Q.catAxisLineShow?"":""+f0(Q.catAxisLineColor||$6.color)+"",K+=' ',K+=" ",K+=" ",K+=" ",K+=" ",Q.catAxisLabelRotate)K+=``;else K+="";if(K+=" ",K+=" ",K+=" ",K+=` `,K+=" "+f0(Q.catAxisLabelColor||z1)+"",K+=' ',K+=" ",K+=" ",K+=' ',K+=" ",K+=" ",K+=' ',K+=` `,K+=' ',K+=' ',K+=` `,Q.catAxisLabelFrequency)K+=' ';if(Q.catLabelFormatCode||Q._type===F0.SCATTER||Q._type===F0.BUBBLE||Q._type===F0.BUBBLE3D){if(Q.catLabelFormatCode){if(["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach((J)=>{if(Q[J]&&(typeof Q[J]!=="string"||!["days","months","years"].includes(Q[J].toLowerCase())))console.warn(`"${J}" must be one of: 'days','months','years' !`),Q[J]=null}),Q.catAxisBaseTimeUnit)K+='';if(Q.catAxisMajorTimeUnit)K+='';if(Q.catAxisMinorTimeUnit)K+=''}if(Q.catAxisMajorUnit)K+=``;if(Q.catAxisMinorUnit)K+=``}if(Q._type===F0.SCATTER||Q._type===F0.BUBBLE||Q._type===F0.BUBBLE3D)K+="";else K+="";return K}function Z9(Q,$){let q=$===Z2?Q.barDir==="col"?"l":"b":Q.barDir!=="col"?"r":"t";if($===d5)q="r";let K=$===Z2?h8:W9,J="";if(J+="",J+=' ',J+=" ",Q.valAxisLogScaleBase)J+=``;if(J+='',Q.valAxisMaxVal||Q.valAxisMaxVal===0)J+=``;if(Q.valAxisMinVal||Q.valAxisMinVal===0)J+=``;if(J+=" ",J+=` `,J+=' ',Q.valGridLine.style!=="none")J+=H9(Q.valGridLine);if(Q.showValAxisTitle)J+=l5({color:Q.valAxisTitleColor,fontFace:Q.valAxisTitleFontFace,fontSize:Q.valAxisTitleFontSize,titleRotate:Q.valAxisTitleRotate,title:Q.valAxisTitle||"Axis Title"});if(J+=``,Q._type===F0.SCATTER)J+=' ',J+=' ',J+=' ';else J+=' ',J+=' ',J+=' ';if(J+=" ",J+=` `,J+=!Q.valAxisLineShow?"":""+f0(Q.valAxisLineColor||$6.color)+"",J+=' ',J+=" ",J+=" ",J+=" ",J+=" ",J+=` `,J+=" ",J+=" ",J+=" ",J+=` `,J+=" "+f0(Q.valAxisLabelColor||z1)+"",J+=' ',J+=" ",J+=" ",J+=' ',J+=" ",J+=" ",J+=' ',typeof Q.catAxisCrossesAt==="number")J+=` `;else if(typeof Q.catAxisCrossesAt==="string")J+=' ';else J+=' ';if(J+=' ',Q.valAxisMajorUnit)J+=` `;if(Q.valAxisDisplayUnit)J+=`${Q.valAxisDisplayUnitLabel?"":""}`;return J+="",J}function wz(Q,$,q){let K="";if(K+="",K+=' ',K+=' ',K+=' ',K+=' ',K+=Q.serGridLine.style!=="none"?H9(Q.serGridLine):"",Q.showSerAxisTitle)K+=l5({color:Q.serAxisTitleColor,fontFace:Q.serAxisTitleFontFace,fontSize:Q.serAxisTitleFontSize,titleRotate:Q.serAxisTitleRotate,title:Q.serAxisTitle||"Axis Title"});if(K+=` `,K+=' ',K+=' ',K+=` `,K+=" ",K+=' ',K+=!Q.serAxisLineShow?"":`${f0(Q.serAxisLineColor||$6.color)}`,K+=' ',K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=` `,K+=` ${f0(Q.serAxisLabelColor||z1)}`,K+=` `,K+=" ",K+=" ",K+=' ',K+=" ",K+=" ",K+=' ',K+=' ',Q.serAxisLabelFrequency)K+=' ';if(Q.serLabelFormatCode){if(["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach((J)=>{if(Q[J]&&(typeof Q[J]!=="string"||!["days","months","years"].includes(J.toLowerCase())))console.warn(`"${J}" must be one of: 'days','months','years' !`),Q[J]=null}),Q.serAxisBaseTimeUnit)K+=` `;if(Q.serAxisMajorTimeUnit)K+=` `;if(Q.serAxisMinorTimeUnit)K+=` `;if(Q.serAxisMajorUnit)K+=` `;if(Q.serAxisMinorUnit)K+=` `}return K+="",K}function l5(Q,$,q){let K=Q.titleAlign==="left"||Q.titleAlign==="right"?``:"",J=Q.titleRotate?``:"",Z=Q.fontSize?`sz="${Math.round(Q.fontSize*100)}"`:"",G=Q.titleBold?1:0,B="";if(Q.titlePos&&typeof Q.titlePos.x==="number"&&typeof Q.titlePos.y==="number"){let W=Q.titlePos.x+$,U=Q.titlePos.y+q,V=W===0?0:W*(W/5)/10;if(V>=1)V=V/10;if(V>=0.1)V=V/10;let N=U===0?0:U*(U/5)/10;if(N>=1)N=N/10;if(N>=0.1)N=N/10;B=``}return` +`);return V}function IB($,q,Q={},K){let J=Q||{};J.slideMargin=J.slideMargin||J.slideMargin===0?J.slideMargin:0.5;let Z=J.w||$.presLayout.width,G=[],W=[],B=[],V=[],U=[],w=[0.5,0.5,0.5,0.5],F=0;if(!document.getElementById(q))throw Error('tableToSlides: Table ID "'+q+'" does not exist!');if(K===null||K===void 0?void 0:K._margin){if(Array.isArray(K._margin))w=K._margin;else if(!isNaN(K._margin))w=[K._margin,K._margin,K._margin,K._margin];J.slideMargin=w}else if(J===null||J===void 0?void 0:J.slideMargin){if(Array.isArray(J.slideMargin))w=J.slideMargin;else if(!isNaN(J.slideMargin))w=[J.slideMargin,J.slideMargin,J.slideMargin,J.slideMargin]}if(Z=(J.w?v0(J.w):$.presLayout.width)-v0(w[1]+w[3]),J.verbose)console.log("[[VERBOSE MODE]]"),console.log("|-- `tableToSlides` ----------------------------------------------------|"),console.log(`| tableProps.h .................................... = ${J.h}`),console.log(`| tableProps.w .................................... = ${J.w}`),console.log(`| pptx.presLayout.width ........................... = ${($.presLayout.width/L0).toFixed(1)}`),console.log(`| pptx.presLayout.height .......................... = ${($.presLayout.height/L0).toFixed(1)}`),console.log(`| emuSlideTabW .................................... = ${(Z/L0).toFixed(1)}`);let M=document.querySelectorAll(`#${q} tr:first-child th`);if(M.length===0)M=document.querySelectorAll(`#${q} tr:first-child td`);if(M.forEach((f)=>{let L=f;if(L.getAttribute("colspan"))for(let D=0;D{F+=f}),U.forEach((f,L)=>{let D=Number((Number(Z)*(f/F*100)/100/L0).toFixed(2)),z=0,N=document.querySelector(`#${q} thead tr:first-child th:nth-child(${L+1})`);if(N)z=Number(N.getAttribute("data-pptx-min-width"));let H=document.querySelector(`#${q} thead tr:first-child th:nth-child(${L+1})`);if(H)z=Number(H.getAttribute("data-pptx-width"));V.push(z>D?z:D)}),J.verbose)console.log(`| arrColW ......................................... = [${V.join(", ")}]`);["thead","tbody","tfoot"].forEach((f)=>{document.querySelectorAll(`#${q} ${f} tr`).forEach((L)=>{let D=L,z=[];switch(Array.from(D.cells).forEach((N)=>{let H=window.getComputedStyle(N).getPropertyValue("color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(","),v=window.getComputedStyle(N).getPropertyValue("background-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");if(window.getComputedStyle(N).getPropertyValue("background-color")==="rgba(0, 0, 0, 0)"||window.getComputedStyle(N).getPropertyValue("transparent"))v=["255","255","255"];let j={align:null,bold:window.getComputedStyle(N).getPropertyValue("font-weight")==="bold"||Number(window.getComputedStyle(N).getPropertyValue("font-weight"))>=500,border:null,color:g7(Number(H[0]),Number(H[1]),Number(H[2])),fill:{color:g7(Number(v[0]),Number(v[1]),Number(v[2]))},fontFace:(window.getComputedStyle(N).getPropertyValue("font-family")||"").split(",")[0].replace(/"/g,"").replace("inherit","").replace("initial","")||null,fontSize:Number(window.getComputedStyle(N).getPropertyValue("font-size").replace(/[a-z]/gi,"")),margin:null,colspan:Number(N.getAttribute("colspan"))||null,rowspan:Number(N.getAttribute("rowspan"))||null,valign:null};if(["left","center","right","start","end"].includes(window.getComputedStyle(N).getPropertyValue("text-align"))){let n=window.getComputedStyle(N).getPropertyValue("text-align").replace("start","left").replace("end","right");j.align=n==="center"?"center":n==="left"?"left":n==="right"?"right":null}if(["top","middle","bottom"].includes(window.getComputedStyle(N).getPropertyValue("vertical-align"))){let n=window.getComputedStyle(N).getPropertyValue("vertical-align");j.valign=n==="top"?"top":n==="middle"?"middle":n==="bottom"?"bottom":null}if(window.getComputedStyle(N).getPropertyValue("padding-left"))j.margin=[0,0,0,0],["padding-top","padding-right","padding-bottom","padding-left"].forEach((d,_)=>{j.margin[_]=Math.round(Number(window.getComputedStyle(N).getPropertyValue(d).replace(/\D/gi,"")))});if(window.getComputedStyle(N).getPropertyValue("border-top-width")||window.getComputedStyle(N).getPropertyValue("border-right-width")||window.getComputedStyle(N).getPropertyValue("border-bottom-width")||window.getComputedStyle(N).getPropertyValue("border-left-width"))j.border=[null,null,null,null],["top","right","bottom","left"].forEach((d,_)=>{let X=Math.round(Number(window.getComputedStyle(N).getPropertyValue("border-"+d+"-width").replace("px",""))),P=[];P=window.getComputedStyle(N).getPropertyValue("border-"+d+"-color").replace(/\s+/gi,"").replace("rgba(","").replace("rgb(","").replace(")","").split(",");let g=g7(Number(P[0]),Number(P[1]),Number(P[2]));j.border[_]={pt:X,color:g}});z.push({_type:D0.tablecell,text:N.innerText,options:j})}),f){case"thead":G.push(z);break;case"tbody":W.push(z);break;case"tfoot":B.push(z);break;default:console.log(`table parsing: unexpected table part: ${f}`);break}})}),J._arrObjTabHeadRows=G||null,J.colW=V,GJ([...G,...W,...B],J,$.presLayout,K).forEach((f,L)=>{let D=$.addSlide({masterName:J.masterSlideName||null});if(L===0)J.y=J.y||w[0];if(L>0)J.y=J.autoPageSlideStartY||J.newSlideStartY||w[0];if(J.verbose)console.log(`| opts.autoPageSlideStartY: ${J.autoPageSlideStartY} / arrInchMargins[0]: ${w[0]} => opts.y = ${J.y}`);if(D.addTable(f.rows,{x:J.x||w[3],y:J.y,w:Number(Z)/L0,colW:V,autoPage:!1}),J.addImage)if(J.addImage.options=J.addImage.options||{},!J.addImage.image||!J.addImage.image.path&&!J.addImage.image.data)console.warn("Warning: tableToSlides.addImage requires either `path` or `data`");else D.addImage({path:J.addImage.image.path,data:J.addImage.image.data,x:J.addImage.options.x,y:J.addImage.options.y,w:J.addImage.options.w,h:J.addImage.options.h});if(J.addShape)D.addShape(J.addShape.shapeName,J.addShape.options||{});if(J.addTable)D.addTable(J.addTable.rows,J.addTable.options||{});if(J.addText)D.addText(J.addText.text,J.addText.options||{})})}var CB=0;function jB($,q){if($.bkgd)q.bkgd=$.bkgd;if($.objects&&Array.isArray($.objects)&&$.objects.length>0)$.objects.forEach((Q,K)=>{let J=Object.keys(Q)[0],Z=q;if(W1[J]&&J==="chart")WJ(Z,Q[J].type,Q[J].data,Q[J].opts);else if(W1[J]&&J==="image")BJ(Z,Q[J]);else if(W1[J]&&J==="line")E7(Z,B1.LINE,Q[J]);else if(W1[J]&&J==="rect")E7(Z,B1.RECTANGLE,Q[J]);else if(W1[J]&&J==="text")L5(Z,[{text:Q[J].text}],Q[J].options,!1);else if(W1[J]&&J==="placeholder")Q[J].options.placeholder=Q[J].options.name,delete Q[J].options.name,Q[J].options._placeholderType=Q[J].options.type,delete Q[J].options.type,Q[J].options._placeholderIdx=100+K,L5(Z,[{text:Q[J].text}],Q[J].options,!0)});if($.slideNumber&&typeof $.slideNumber==="object")q._slideNumberProps=$.slideNumber}function WJ($,q,Q,K){var J;function Z(w){if(!w||w.style==="none")return;if(w.size!==void 0&&(isNaN(Number(w.size))||w.size<=0))console.warn("Warning: chart.gridLine.size must be greater than 0."),delete w.size;if(w.style&&!["solid","dash","dot"].includes(w.style))console.warn("Warning: chart.gridLine.style options: `solid`, `dash`, `dot`."),delete w.style;if(w.cap&&!["flat","square","round"].includes(w.cap))console.warn("Warning: chart.gridLine.cap options: `flat`, `square`, `round`."),delete w.cap}let G=++CB,W={_type:null,text:null,options:null,chartRid:null},B=null,V=[];if(Array.isArray(q))q.forEach((w)=>{V=V.concat(w.data)}),B=Q||K;else V=Q,B=K;V.forEach((w,F)=>{if(w._dataIndex=F,w.labels!==void 0&&!Array.isArray(w.labels[0]))w.labels=[w.labels]});let U=B&&typeof B==="object"?B:{};if(U._type=q,U.x=typeof U.x<"u"&&U.x!=null&&!isNaN(Number(U.x))?U.x:1,U.y=typeof U.y<"u"&&U.y!=null&&!isNaN(Number(U.y))?U.y:1,U.w=U.w||"50%",U.h=U.h||"50%",U.objectName=U.objectName?k0(U.objectName):`Chart ${$._slideObjects.filter((w)=>w._type===D0.chart).length}`,!["bar","col"].includes(U.barDir||""))U.barDir="col";if(U._type===q0.AREA){if(!["stacked","standard","percentStacked"].includes(U.barGrouping||""))U.barGrouping="standard"}if(U._type===q0.BAR){if(!["clustered","stacked","percentStacked"].includes(U.barGrouping||""))U.barGrouping="clustered"}if(U._type===q0.BAR3D){if(!["clustered","stacked","standard","percentStacked"].includes(U.barGrouping||""))U.barGrouping="standard"}if((J=U.barGrouping)===null||J===void 0?void 0:J.includes("tacked")){if(!U.barGapWidthPct)U.barGapWidthPct=50}if(U.dataLabelPosition){if(U._type===q0.AREA||U._type===q0.BAR3D||U._type===q0.DOUGHNUT||U._type===q0.RADAR)delete U.dataLabelPosition;if(U._type===q0.PIE){if(!["bestFit","ctr","inEnd","outEnd"].includes(U.dataLabelPosition))delete U.dataLabelPosition}if(U._type===q0.BUBBLE||U._type===q0.BUBBLE3D||U._type===q0.LINE||U._type===q0.SCATTER){if(!["b","ctr","l","r","t"].includes(U.dataLabelPosition))delete U.dataLabelPosition}if(U._type===q0.BAR){if(!["stacked","percentStacked"].includes(U.barGrouping||"")){if(!["ctr","inBase","inEnd"].includes(U.dataLabelPosition))delete U.dataLabelPosition}if(!["clustered"].includes(U.barGrouping||"")){if(!["ctr","inBase","inEnd","outEnd"].includes(U.dataLabelPosition))delete U.dataLabelPosition}}}if(U.dataLabelBkgrdColors=U.dataLabelBkgrdColors||!U.dataLabelBkgrdColors?U.dataLabelBkgrdColors:!1,!["b","l","r","t","tr"].includes(U.legendPos||""))U.legendPos="r";if(!["cone","coneToMax","box","cylinder","pyramid","pyramidToMax"].includes(U.bar3DShape||""))U.bar3DShape="box";if(!["circle","dash","diamond","dot","none","square","triangle"].includes(U.lineDataSymbol||""))U.lineDataSymbol="circle";if(!["gap","span"].includes(U.displayBlanksAs||""))U.displayBlanksAs="span";if(!["standard","marker","filled"].includes(U.radarStyle||""))U.radarStyle="standard";if(U.lineDataSymbolSize=U.lineDataSymbolSize&&!isNaN(U.lineDataSymbolSize)?U.lineDataSymbolSize:6,U.lineDataSymbolLineSize=U.lineDataSymbolLineSize&&!isNaN(U.lineDataSymbolLineSize)?Y0(U.lineDataSymbolLineSize):Y0(0.75),U.layout)["x","y","w","h"].forEach((w)=>{let F=U.layout[w];if(isNaN(Number(F))||F<0||F>1)console.warn("Warning: chart.layout."+w+" can only be 0-1"),delete U.layout[w]});if(U.catGridLine=U.catGridLine||(U._type===q0.SCATTER?{color:"D9D9D9",size:1}:{style:"none"}),U.valGridLine=U.valGridLine||(U._type===q0.SCATTER?{color:"D9D9D9",size:1}:{}),U.serGridLine=U.serGridLine||(U._type===q0.SCATTER?{color:"D9D9D9",size:1}:{style:"none"}),Z(U.catGridLine),Z(U.valGridLine),Z(U.serGridLine),c7(U.shadow),U.showDataTable=U.showDataTable||!U.showDataTable?U.showDataTable:!1,U.showDataTableHorzBorder=U.showDataTableHorzBorder||!U.showDataTableHorzBorder?U.showDataTableHorzBorder:!0,U.showDataTableVertBorder=U.showDataTableVertBorder||!U.showDataTableVertBorder?U.showDataTableVertBorder:!0,U.showDataTableOutline=U.showDataTableOutline||!U.showDataTableOutline?U.showDataTableOutline:!0,U.showDataTableKeys=U.showDataTableKeys||!U.showDataTableKeys?U.showDataTableKeys:!0,U.showLabel=U.showLabel||!U.showLabel?U.showLabel:!1,U.showLegend=U.showLegend||!U.showLegend?U.showLegend:!1,U.showPercent=U.showPercent||!U.showPercent?U.showPercent:!0,U.showTitle=U.showTitle||!U.showTitle?U.showTitle:!1,U.showValue=U.showValue||!U.showValue?U.showValue:!1,U.showLeaderLines=U.showLeaderLines||!U.showLeaderLines?U.showLeaderLines:!1,U.catAxisLineShow=typeof U.catAxisLineShow<"u"?U.catAxisLineShow:!0,U.valAxisLineShow=typeof U.valAxisLineShow<"u"?U.valAxisLineShow:!0,U.serAxisLineShow=typeof U.serAxisLineShow<"u"?U.serAxisLineShow:!0,U.v3DRotX=!isNaN(U.v3DRotX)&&U.v3DRotX>=-90&&U.v3DRotX<=90?U.v3DRotX:30,U.v3DRotY=!isNaN(U.v3DRotY)&&U.v3DRotY>=0&&U.v3DRotY<=360?U.v3DRotY:30,U.v3DRAngAx=U.v3DRAngAx||!U.v3DRAngAx?U.v3DRAngAx:!0,U.v3DPerspective=!isNaN(U.v3DPerspective)&&U.v3DPerspective>=0&&U.v3DPerspective<=240?U.v3DPerspective:30,U.barGapWidthPct=!isNaN(U.barGapWidthPct)&&U.barGapWidthPct>=0&&U.barGapWidthPct<=1000?U.barGapWidthPct:150,U.barGapDepthPct=!isNaN(U.barGapDepthPct)&&U.barGapDepthPct>=0&&U.barGapDepthPct<=1000?U.barGapDepthPct:150,U.chartColors=Array.isArray(U.chartColors)?U.chartColors:U._type===q0.PIE||U._type===q0.DOUGHNUT?HB:z8,U.chartColorsOpacity=U.chartColorsOpacity&&!isNaN(U.chartColorsOpacity)?U.chartColorsOpacity:null,U.border=U.border&&typeof U.border==="object"?U.border:null,U.border&&(!U.border.pt||isNaN(U.border.pt)))U.border.pt=v6.pt;if(U.border&&(!U.border.color||typeof U.border.color!=="string"))U.border.color=v6.color;if(U.plotArea=U.plotArea||{},U.plotArea.border=U.plotArea.border&&typeof U.plotArea.border==="object"?U.plotArea.border:null,U.plotArea.border&&(!U.plotArea.border.pt||isNaN(U.plotArea.border.pt)))U.plotArea.border.pt=v6.pt;if(U.plotArea.border&&(!U.plotArea.border.color||typeof U.plotArea.border.color!=="string"))U.plotArea.border.color=v6.color;if(U.border)U.plotArea.border=U.border;if(U.plotArea.fill=U.plotArea.fill||{color:null,transparency:null},U.fill)U.plotArea.fill.color=U.fill;if(U.chartArea=U.chartArea||{},U.chartArea.border=U.chartArea.border&&typeof U.chartArea.border==="object"?U.chartArea.border:null,U.chartArea.border)U.chartArea.border={color:U.chartArea.border.color||v6.color,pt:U.chartArea.border.pt||v6.pt};if(U.chartArea.roundedCorners=typeof U.chartArea.roundedCorners==="boolean"?U.chartArea.roundedCorners:!0,U.dataBorder=U.dataBorder&&typeof U.dataBorder==="object"?U.dataBorder:null,U.dataBorder&&(!U.dataBorder.pt||isNaN(U.dataBorder.pt)))U.dataBorder.pt=0.75;if(U.dataBorder&&U.dataBorder.color){let w=typeof U.dataBorder.color==="string"&&U.dataBorder.color.length===6&&/^[0-9A-Fa-f]{6}$/.test(U.dataBorder.color),F=Object.values(D5).includes(U.dataBorder.color);if(!w&&!F)U.dataBorder.color="F9F9F9"}if(!U.dataLabelFormatCode&&U._type===q0.SCATTER)U.dataLabelFormatCode="General";if(!U.dataLabelFormatCode&&(U._type===q0.PIE||U._type===q0.DOUGHNUT))U.dataLabelFormatCode=U.showPercent?"0%":"General";if(U.dataLabelFormatCode=U.dataLabelFormatCode&&typeof U.dataLabelFormatCode==="string"?U.dataLabelFormatCode:"#,##0",!U.dataLabelFormatScatter&&U._type===q0.SCATTER)U.dataLabelFormatScatter="custom";if(U.lineSize=typeof U.lineSize==="number"?U.lineSize:2,U.valAxisMajorUnit=typeof U.valAxisMajorUnit==="number"?U.valAxisMajorUnit:null,U._type===q0.AREA||U._type===q0.BAR||U._type===q0.BAR3D||U._type===q0.LINE)U.catAxisMultiLevelLabels=!!U.catAxisMultiLevelLabels;else delete U.catAxisMultiLevelLabels;return W._type="chart",W.options=U,W.chartRid=a2($),$._relsChart.push({rId:a2($),data:V,opts:U,type:U._type,globalId:G,fileName:`chart${G}.xml`,Target:`/ppt/charts/chart${G}.xml`}),$._slideObjects.push(W),W}function BJ($,q){let Q={_type:null,text:null,options:null,image:null,imageRid:null,hyperlink:null},K=q.x||0,J=q.y||0,Z=q.w||0,G=q.h||0,W=q.sizing||null,B=q.hyperlink||"",V=q.data||"",U=q.path||"",w=a2($),F=q.objectName?k0(q.objectName):`Image ${$._slideObjects.filter((k)=>k._type===D0.image).length}`;if(!U&&!V)return console.error("ERROR: addImage() requires either 'data' or 'path' parameter!"),null;else if(U&&typeof U!=="string")return console.error(`ERROR: addImage() 'path' should be a string, ex: {path:'/img/sample.png'} - you sent ${String(U)}`),null;else if(V&&typeof V!=="string")return console.error(`ERROR: addImage() 'data' should be a string, ex: {data:'image/png;base64,NMP[...]'} - you sent ${String(V)}`),null;else if(V&&typeof V==="string"&&!V.toLowerCase().includes("base64,"))return console.error("ERROR: Image `data` value lacks a base64 header! Ex: 'image/png;base64,NMP[...]')"),null;let M=(U.substring(U.lastIndexOf("/")+1).split("?")[0].split(".").pop().split("#")[0]||"png").toLowerCase();if(V&&/image\/(\w+);/.exec(V)&&/image\/(\w+);/.exec(V).length>0)M=/image\/(\w+);/.exec(V)[1];else if(V===null||V===void 0?void 0:V.toLowerCase().includes("image/svg+xml"))M="svg";if(Q._type=D0.image,Q.image=U||"preencoded.png",Q.options={x:K||0,y:J||0,w:Z||1,h:G||1,altText:q.altText||"",rounding:typeof q.rounding==="boolean"?q.rounding:!1,sizing:W,placeholder:q.placeholder,rotate:q.rotate||0,flipV:q.flipV||!1,flipH:q.flipH||!1,transparency:q.transparency||0,objectName:F,shadow:c7(q.shadow)},M==="svg")$._relsMedia.push({path:U||V+"png",type:"image/png",extn:"png",data:V||"",rId:w,Target:`../media/image-${$._slideNum}-${$._relsMedia.length+1}.png`,isSvgPng:!0,svgSize:{w:H0(Q.options.w,"X",$._presLayout),h:H0(Q.options.h,"Y",$._presLayout)}}),Q.imageRid=w,$._relsMedia.push({path:U||V,type:"image/svg+xml",extn:M,data:V||"",rId:w+1,Target:`../media/image-${$._slideNum}-${$._relsMedia.length+1}.${M}`}),Q.imageRid=w+1;else{let k=$._relsMedia.filter((f)=>f.path&&f.path===U&&f.type==="image/"+M&&!f.isDuplicate)[0];$._relsMedia.push({path:U||"preencoded."+M,type:"image/"+M,extn:M,data:V||"",rId:w,isDuplicate:!!(k===null||k===void 0?void 0:k.Target),Target:(k===null||k===void 0?void 0:k.Target)?k.Target:`../media/image-${$._slideNum}-${$._relsMedia.length+1}.${M}`}),Q.imageRid=w}if(typeof B==="object")if(!B.url&&!B.slide)throw Error("ERROR: `hyperlink` option requires either: `url` or `slide`");else w++,$._rels.push({type:D0.hyperlink,data:B.slide?"slide":"dummy",rId:w,Target:B.url||B.slide.toString()}),B._rId=w,Q.hyperlink=B;$._slideObjects.push(Q)}function gB($,q){let Q=q.x||0,K=q.y||0,J=q.w||2,Z=q.h||2,G=q.data||"",W=q.link||"",B=q.path||"",V=q.type||"audio",U="",w=q.cover||vB,F=q.objectName?k0(q.objectName):`Media ${$._slideObjects.filter((k)=>k._type===D0.media).length}`,M={_type:D0.media};if(!B&&!G&&V!=="online")throw Error("addMedia() error: either `data` or `path` are required!");else if(G&&!G.toLowerCase().includes("base64,"))throw Error("addMedia() error: `data` value lacks a base64 header! Ex: 'video/mpeg;base64,NMP[...]')");else if(!w.toLowerCase().includes("base64,"))throw Error("addMedia() error: `cover` value lacks a base64 header! Ex: 'data:image/png;base64,iV[...]')");if(V==="online"&&!W)throw Error("addMedia() error: online videos require `link` value");if(U=q.extn||(G?G.split(";")[0].split("/")[1]:B.split(".").pop())||"mp3",M.mtype=V,M.media=B||"preencoded.mov",M.options={},M.options.x=Q,M.options.y=K,M.options.w=J,M.options.h=Z,M.options.objectName=F,V==="online"){let k=a2($);$._relsMedia.push({path:B||"preencoded"+U,data:"dummy",type:"online",extn:U,rId:k,Target:W}),M.mediaRid=k,$._relsMedia.push({path:"preencoded.png",data:w,type:"image/png",extn:"png",rId:a2($),Target:`../media/image-${$._slideNum}-${$._relsMedia.length+1}.png`})}else{let k=$._relsMedia.filter((L)=>L.path&&L.path===B&&L.type===V+"/"+U&&!L.isDuplicate)[0],f=a2($);$._relsMedia.push({path:B||"preencoded"+U,type:V+"/"+U,extn:U,data:G||"",rId:f,isDuplicate:!!(k===null||k===void 0?void 0:k.Target),Target:(k===null||k===void 0?void 0:k.Target)?k.Target:`../media/media-${$._slideNum}-${$._relsMedia.length+1}.${U}`}),M.mediaRid=f,$._relsMedia.push({path:B||"preencoded"+U,type:V+"/"+U,extn:U,data:G||"",rId:a2($),isDuplicate:!!(k===null||k===void 0?void 0:k.Target),Target:(k===null||k===void 0?void 0:k.Target)?k.Target:`../media/media-${$._slideNum}-${$._relsMedia.length+0}.${U}`}),$._relsMedia.push({path:"preencoded.png",type:"image/png",extn:"png",data:w,rId:a2($),Target:`../media/image-${$._slideNum}-${$._relsMedia.length+1}.png`})}$._slideObjects.push(M)}function AB($,q){$._slideObjects.push({_type:D0.notes,text:[{text:q}]})}function E7($,q,Q){let K=typeof Q==="object"?Q:{};K.line=K.line||{type:"none"};let J={_type:D0.text,shape:q||B1.RECTANGLE,options:K,text:null};if(!q)throw Error("Missing/Invalid shape parameter! Example: `addShape(pptxgen.shapes.LINE, {x:1, y:1, w:1, h:1});`");let Z={type:K.line.type||"solid",color:K.line.color||VJ,transparency:K.line.transparency||0,width:K.line.width||1,dashType:K.line.dashType||"solid",beginArrowType:K.line.beginArrowType||null,endArrowType:K.line.endArrowType||null};if(typeof K.line==="object"&&K.line.type!=="none")K.line=Z;if(K.x=K.x||(K.x===0?0:1),K.y=K.y||(K.y===0?0:1),K.w=K.w||(K.w===0?0:1),K.h=K.h||(K.h===0?0:1),K.objectName=K.objectName?k0(K.objectName):`Shape ${$._slideObjects.filter((G)=>G._type===D0.text).length}`,typeof K.line==="string"){let G=Z;G.color=String(K.line),K.line=G}if(typeof K.lineSize==="number")K.line.width=K.lineSize;if(typeof K.lineDash==="string")K.line.dashType=K.lineDash;if(typeof K.lineHead==="string")K.line.beginArrowType=K.lineHead;if(typeof K.lineTail==="string")K.line.endArrowType=K.lineTail;g6($,J),$._slideObjects.push(J)}function XB($,q,Q,K,J,Z,G){let W=[$],B=Q&&typeof Q==="object"?Q:{};B.objectName=B.objectName?k0(B.objectName):`Table ${$._slideObjects.filter((F)=>F._type===D0.table).length}`;{if(q===null||q.length===0||!Array.isArray(q))throw Error("addTable: Array expected! EX: 'slide.addTable( [rows], {options} );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)");if(!q[0]||!Array.isArray(q[0]))throw Error("addTable: 'rows' should be an array of cells! EX: 'slide.addTable( [ ['A'], ['B'], {text:'C',options:{align:'center'}} ] );' (https://gitbrent.github.io/PptxGenJS/docs/api-tables.html)")}let V=[];if(q.forEach((F)=>{let M=[];if(Array.isArray(F))F.forEach((k)=>{let f={_type:D0.tablecell,text:"",options:typeof k==="object"&&k.options?k.options:{}};if(typeof k==="string"||typeof k==="number")f.text=k.toString();else if(k.text){if(typeof k.text==="string"||typeof k.text==="number")f.text=k.text.toString();else if(k.text)f.text=k.text;if(k.options&&typeof k.options==="object")f.options=k.options}f.options.border=f.options.border||B.border||[{type:"none"},{type:"none"},{type:"none"},{type:"none"}];let L=f.options.border;if(!Array.isArray(L)&&typeof L==="object")f.options.border=[L,L,L,L];if(!f.options.border[0])f.options.border[0]={type:"none"};if(!f.options.border[1])f.options.border[1]={type:"none"};if(!f.options.border[2])f.options.border[2]={type:"none"};if(!f.options.border[3])f.options.border[3]={type:"none"};[0,1,2,3].forEach((z)=>{f.options.border[z]={type:f.options.border[z].type||H6.type,color:f.options.border[z].color||H6.color,pt:typeof f.options.border[z].pt==="number"?f.options.border[z].pt:H6.pt}}),M.push(f)});else console.log("addTable: tableRows has a bad row. A row should be an array of cells. You provided:"),console.log(F);V.push(M)}),B.x=H0(B.x||(B.x===0?0:L0/2),"X",J),B.y=H0(B.y||(B.y===0?0:L0/2),"Y",J),B.h)B.h=H0(B.h,"Y",J);if(B.fontSize=B.fontSize||k2,B.margin=B.margin===0||B.margin?B.margin:JJ,typeof B.margin==="number")B.margin=[Number(B.margin),Number(B.margin),Number(B.margin),Number(B.margin)];if(JSON.stringify({arrRows:V}).indexOf("hyperlink")===-1){if(!B.color)B.color=B.color||Q2}if(typeof B.border==="string")console.warn("addTable `border` option must be an object. Ex: `{border: {type:'none'}}`"),B.border=null;else if(Array.isArray(B.border))[0,1,2,3].forEach((F)=>{B.border[F]=B.border[F]?{type:B.border[F].type||H6.type,color:B.border[F].color||H6.color,pt:B.border[F].pt||H6.pt}:{type:"none"}});if(B.autoPage=typeof B.autoPage==="boolean"?B.autoPage:!1,B.autoPageRepeatHeader=typeof B.autoPageRepeatHeader==="boolean"?B.autoPageRepeatHeader:!1,B.autoPageHeaderRows=typeof B.autoPageHeaderRows<"u"&&!isNaN(Number(B.autoPageHeaderRows))?Number(B.autoPageHeaderRows):1,B.autoPageLineWeight=typeof B.autoPageLineWeight<"u"&&!isNaN(Number(B.autoPageLineWeight))?Number(B.autoPageLineWeight):0,B.autoPageLineWeight){if(B.autoPageLineWeight>1)B.autoPageLineWeight=1;else if(B.autoPageLineWeight<-1)B.autoPageLineWeight=-1}let U=M8;if(K&&typeof K._margin<"u"){if(Array.isArray(K._margin))U=K._margin;else if(!isNaN(Number(K._margin)))U=[Number(K._margin),Number(K._margin),Number(K._margin),Number(K._margin)]}if(B.colW){let F=V[0].reduce((M,k)=>{var f;if(((f=k===null||k===void 0?void 0:k.options)===null||f===void 0?void 0:f.colspan)&&typeof k.options.colspan==="number")M+=k.options.colspan;else M+=1;return M},0);if(typeof B.colW==="string"||typeof B.colW==="number")B.w=Math.floor(Number(B.colW)*F),B.colW=null;else if(B.colW&&Array.isArray(B.colW)&&B.colW.length===1&&F>1)B.w=Math.floor(Number(B.colW)*F),B.colW=null;else if(B.colW&&Array.isArray(B.colW)&&B.colW.length!==F)console.warn("addTable: mismatch: (colW.length != data.length) Therefore, defaulting to evenly distributed col widths."),B.colW=null}else if(B.w)B.w=H0(B.w,"X",J);else B.w=Math.floor(J._sizeW/L0-U[1]-U[3]);if(B.x&&B.x<20)B.x=v0(B.x);if(B.y&&B.y<20)B.y=v0(B.y);if(B.w&&typeof B.w==="number"&&B.w<20)B.w=v0(B.w);if(B.h&&typeof B.h==="number"&&B.h<20)B.h=v0(B.h);V.forEach((F)=>{F.forEach((M,k)=>{if(typeof M==="number"||typeof M==="string")F[k]={_type:D0.tablecell,text:String(F[k]),options:B};else if(typeof M==="object"){if(typeof M.text==="number")F[k].text=F[k].text.toString();else if(typeof M.text>"u"||M.text===null)F[k].text="";F[k].options=M.options||{},F[k]._type=D0.tablecell}})});let w=[];if(B&&!B.autoPage)g6($,V),$._slideObjects.push({_type:D0.table,arrTabRows:V,options:Object.assign({},B)});else{if(B.autoPageRepeatHeader)B._arrObjTabHeadRows=V.filter((F,M)=>M{if(!G($._slideNum+M))W.push(Z({masterName:(K===null||K===void 0?void 0:K._name)||null}));if(M>0)B.y=v0(B.autoPageSlideStartY||B.newSlideStartY||U[0]);{let k=G($._slideNum+M);if(B.autoPage=!1,g6(k,F.rows),k.addTable(F.rows,Object.assign({},B)),M>0)w.push(k)}})}return w}function L5($,q,Q,K){let J={_type:K?D0.placeholder:D0.text,shape:(Q===null||Q===void 0?void 0:Q.shape)||B1.RECTANGLE,text:!q||q.length===0?[{text:"",options:null}]:q,options:Q||{}};function Z(G){{if(!G.placeholder)G.color=G.color||J.options.color||$.color||Q2;if(G.placeholder||K)G.bullet=G.bullet||!1;if(G.placeholder&&$._slideLayout&&$._slideLayout._slideObjects){let W=$._slideLayout._slideObjects.filter((B)=>B._type==="placeholder"&&B.options&&B.options.placeholder&&B.options.placeholder===G.placeholder)[0];if(W===null||W===void 0?void 0:W.options)G=Object.assign(Object.assign({},G),W.options)}if(G.objectName=G.objectName?k0(G.objectName):`Text ${$._slideObjects.filter((W)=>W._type===D0.text).length}`,G.shape===B1.LINE){let W={type:G.line.type||"solid",color:G.line.color||VJ,transparency:G.line.transparency||0,width:G.line.width||1,dashType:G.line.dashType||"solid",beginArrowType:G.line.beginArrowType||null,endArrowType:G.line.endArrowType||null};if(typeof G.line==="object")G.line=W;if(typeof G.line==="string"){let B=W;if(typeof G.line==="string")B.color=G.line;G.line=B}if(typeof G.lineSize==="number")G.line.width=G.lineSize;if(typeof G.lineDash==="string")G.line.dashType=G.lineDash;if(typeof G.lineHead==="string")G.line.beginArrowType=G.lineHead;if(typeof G.lineTail==="string")G.line.endArrowType=G.lineTail}if(G.line=G.line||{},G.lineSpacing=G.lineSpacing&&!isNaN(G.lineSpacing)?G.lineSpacing:null,G.lineSpacingMultiple=G.lineSpacingMultiple&&!isNaN(G.lineSpacingMultiple)?G.lineSpacingMultiple:null,G._bodyProp=G._bodyProp||{},G._bodyProp.autoFit=G.autoFit||!1,G._bodyProp.anchor=!G.placeholder?I6.ctr:null,G._bodyProp.vert=G.vert||null,G._bodyProp.wrap=typeof G.wrap==="boolean"?G.wrap:!0,G.inset&&!isNaN(Number(G.inset))||G.inset===0)G._bodyProp.lIns=v0(G.inset),G._bodyProp.rIns=v0(G.inset),G._bodyProp.tIns=v0(G.inset),G._bodyProp.bIns=v0(G.inset);if(typeof G.underline==="boolean"&&G.underline===!0)G.underline={style:"sng"}}{if((G.align||"").toLowerCase().indexOf("c")===0)G._bodyProp.align=R6.center;else if((G.align||"").toLowerCase().indexOf("l")===0)G._bodyProp.align=R6.left;else if((G.align||"").toLowerCase().indexOf("r")===0)G._bodyProp.align=R6.right;else if((G.align||"").toLowerCase().indexOf("j")===0)G._bodyProp.align=R6.justify;if((G.valign||"").toLowerCase().indexOf("b")===0)G._bodyProp.anchor=I6.b;else if((G.valign||"").toLowerCase().indexOf("m")===0)G._bodyProp.anchor=I6.ctr;else if((G.valign||"").toLowerCase().indexOf("t")===0)G._bodyProp.anchor=I6.t}return c7(G.shadow),G}J.options=Z(J.options),J.text.forEach((G)=>G.options=Z(G.options||{})),g6($,J.text||""),$._slideObjects.push(J)}function yB($){($._slideLayout._slideObjects||[]).forEach((q)=>{if(q._type===D0.placeholder){if($._slideObjects.filter((Q)=>Q.options&&Q.options.placeholder===q.options.placeholder).length===0)L5($,[{text:""}],q.options,!1)}})}function zJ($,q){var Q;if(q.bkgd){if(!q.background)q.background={};if(typeof q.bkgd==="string")q.background.color=q.bkgd;else{if(q.bkgd.data)q.background.data=q.bkgd.data;if(q.bkgd.path)q.background.path=q.bkgd.path;if(q.bkgd.src)q.background.path=q.bkgd.src}}if((Q=q.background)===null||Q===void 0?void 0:Q.fill)q.background.color=q.background.fill;if($&&($.path||$.data)){$.path=$.path||"preencoded.png";let K=($.path.split(".").pop()||"png").split("?")[0];if(K==="jpg")K="jpeg";q._relsMedia=q._relsMedia||[];let J=q._relsMedia.length+1;q._relsMedia.push({path:$.path,type:D0.image,extn:K,data:$.data||null,rId:J,Target:`../media/${(q._name||"").replace(/\s+/gi,"-")}-image-${q._relsMedia.length+1}.${K}`}),q._bkgdImgRid=J}}function g6($,q,Q){let K=[];if(typeof q==="string"||typeof q==="number")return;else if(Array.isArray(q))K=q;else if(typeof q==="object")K=[q];K.forEach((J,Z)=>{if(Q&&Q[Z]&&Q[Z].hyperlink)J.options=Object.assign(Object.assign({},J.options),Q[Z]);if(Array.isArray(J)){let G=[];J.forEach((W)=>{if(W.options&&!W.text.options)G.push(W.options)}),g6($,J,G)}else if(Array.isArray(J.text))g6($,J.text,Q&&Q[Z]?[Q[Z]]:void 0);else if(J&&typeof J==="object"&&J.options&&J.options.hyperlink&&!J.options.hyperlink._rId)if(typeof J.options.hyperlink!=="object")console.log("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink: {url:'https://github.com'}` ");else if(!J.options.hyperlink.url&&!J.options.hyperlink.slide)console.log("ERROR: 'hyperlink requires either: `url` or `slide`'");else{let G=a2($);$._rels.push({type:D0.hyperlink,data:J.options.hyperlink.slide?"slide":"dummy",rId:G,Target:k0(J.options.hyperlink.url)||J.options.hyperlink.slide.toString()}),J.options.hyperlink._rId=G}else if(J&&typeof J==="object"&&J.options&&J.options.hyperlink&&J.options.hyperlink._rId){if($._rels.filter((G)=>G.rId===J.options.hyperlink._rId).length===0)$._rels.push({type:D0.hyperlink,data:J.options.hyperlink.slide?"slide":"dummy",rId:J.options.hyperlink._rId,Target:k0(J.options.hyperlink.url)||J.options.hyperlink.slide.toString()})}})}class FJ{constructor($){var q;this.addSlide=$.addSlide,this.getSlide=$.getSlide,this._name=`Slide ${$.slideNumber}`,this._presLayout=$.presLayout,this._rId=$.slideRId,this._rels=[],this._relsChart=[],this._relsMedia=[],this._setSlideNum=$.setSlideNum,this._slideId=$.slideId,this._slideLayout=$.slideLayout||null,this._slideNum=$.slideNumber,this._slideObjects=[],this._slideNumberProps=((q=this._slideLayout)===null||q===void 0?void 0:q._slideNumberProps)?this._slideLayout._slideNumberProps:null}set bkgd($){if(this._bkgd=$,!this._background||!this._background.color){if(!this._background)this._background={};if(typeof $==="string")this._background.color=$}}get bkgd(){return this._bkgd}set background($){if(this._background=$,$)zJ($,this)}get background(){return this._background}set color($){this._color=$}get color(){return this._color}set hidden($){this._hidden=$}get hidden(){return this._hidden}set slideNumber($){this._slideNumberProps=$,this._setSlideNum($)}get slideNumber(){return this._slideNumberProps}get newAutoPagedSlides(){return this._newAutoPagedSlides}addChart($,q,Q){let K=Q||{};return K._type=$,WJ(this,$,q,Q),this}addImage($){return BJ(this,$),this}addMedia($){return gB(this,$),this}addNotes($){return AB(this,$),this}addShape($,q){return E7(this,$,q),this}addTable($,q){return this._newAutoPagedSlides=XB(this,$,q,this._slideLayout,this._presLayout,this.addSlide,this.getSlide),this}addText($,q){return L5(this,typeof $==="string"||typeof $==="number"?[{text:$,options:q}]:$,q,!1),this}}function hB($,q){return W2(this,void 0,void 0,function*(){let Q=$.data;return yield new Promise((K,J)=>{var Z,G;let W=new _7.default,B=(Q.length-1)*2+1,V=((G=(Z=Q[0])===null||Z===void 0?void 0:Z.labels)===null||G===void 0?void 0:G.length)>1;W.folder("_rels"),W.folder("docProps"),W.folder("xl/_rels"),W.folder("xl/tables"),W.folder("xl/theme"),W.folder("xl/worksheets"),W.folder("xl/worksheets/_rels"),W.file("[Content_Types].xml",' \n'),W.file("_rels/.rels",` +`),W.file("docProps/app.xml",`Microsoft Macintosh Excel0falseWorksheets1Sheet1falsefalsefalse16.0300 +`),W.file("docProps/core.xml",'PptxGenJSPptxGenJS'+new Date().toISOString()+''+new Date().toISOString()+""),W.file("xl/_rels/workbook.xml.rels",''),W.file("xl/styles.xml",'\n'),W.file("xl/theme/theme1.xml",''),W.file("xl/workbook.xml",` +`),W.file("xl/worksheets/_rels/sheet1.xml.rels",` +`);{let U='';if($.opts._type===q0.BUBBLE||$.opts._type===q0.BUBBLE3D)U+=``;else if($.opts._type===q0.SCATTER)U+=``;else if(V){let w=Q.length;Q[0].labels.forEach((F)=>w+=F.filter((M)=>M&&M!=="").length),U+=``,U+=""}else{let w=Q.length+Q[0].labels.length*Q[0].labels[0].length+Q[0].labels.length,F=Q.length+Q[0].labels.length*Q[0].labels[0].length+1;U+=``,U+=''}if($.opts._type===q0.BUBBLE||$.opts._type===q0.BUBBLE3D)Q.forEach((w,F)=>{if(F===0)U+="X-Axis";else U+=`${k0(w.name||`Y-Axis${F}`)}`,U+=`${k0(`Size${F}`)}`});else Q.forEach((w)=>{U+=`${k0((w.name||" ").replace("X-Axis","X-Values"))}`});if($.opts._type!==q0.BUBBLE&&$.opts._type!==q0.BUBBLE3D&&$.opts._type!==q0.SCATTER)Q[0].labels.slice().reverse().forEach((w)=>{w.filter((F)=>F&&F!=="").forEach((F)=>{U+=`${k0(F)}`})});U+=` +`,W.file("xl/sharedStrings.xml",U)}{let U='';if($.opts._type===q0.BUBBLE||$.opts._type===q0.BUBBLE3D){U+=``,U+=``;let w=1;Q.forEach((F,M)=>{if(M===0)U+=``;else U+=``,w++,U+=``})}else if($.opts._type===q0.SCATTER)U+=`
`,U+=``,Q.forEach((w,F)=>{U+=``});else U+=`
`,U+=``,Q[0].labels.forEach((w,F)=>{U+=``}),Q.forEach((w,F)=>{U+=``});U+="",U+='',U+="
",W.file("xl/tables/table1.xml",U)}{let U='';if(U+='',$.opts._type===q0.BUBBLE||$.opts._type===q0.BUBBLE3D)U+=``;else if($.opts._type===q0.SCATTER)U+=``;else U+=``;if(U+='',U+='',$.opts._type===q0.BUBBLE||$.opts._type===q0.BUBBLE3D){U+="",U+=``,U+='0';for(let w=1;w${w}`;U+="",Q[0].values.forEach((w,F)=>{U+=``,U+=`${w}`;let M=2;for(let k=1;k${Q[k].values[F]||""}`,M++,U+=`${Q[k].sizes[F]||""}`,M++;U+=""})}else if($.opts._type===q0.SCATTER){U+="",U+=``;for(let w=0;w${w}`;U+="",Q[0].values.forEach((w,F)=>{U+=``,U+=`${w}`;for(let M=1;M${Q[M].values[F]||Q[M].values[F]===0?Q[M].values[F]:""}`;U+=""})}else if(U+="",!V){U+=``,Q[0].labels.forEach((w,F)=>{U+=`0`});for(let w=0;w${w+1}`;U+="",Q[0].labels[0].forEach((w,F)=>{U+=``;for(let M=Q[0].labels.length-1;M>=0;M--)U+=``,U+=`${Q.length+F+1}`,U+="";for(let M=0;M${Q[M].values[F]||""}`;U+=""})}else{U+=``;for(let k=0;k0`;for(let k=Q[0].labels.length-1;k${k}`;U+="";let w=Q.length,F=Q[0].labels[0].length,M=Q[0].labels.length;for(let k=0;k`;let f=w,L=Q[0].labels.slice().reverse();L.forEach((D,z)=>{if(D[k]){let H=z===0?1:L[z-1].filter((v)=>v&&v!=="").length;f+=H,U+=`${f}`}});for(let D=0;D${Q[D].values[k]||0}`;U+=""}}U+="",U+='',U+=` +`,W.file("xl/worksheets/sheet1.xml",U)}W.generateAsync({type:"base64"}).then((U)=>{q.file(`ppt/embeddings/Microsoft_Excel_Worksheet${$.globalId}.xlsx`,U,{base64:!0}),q.file("ppt/charts/_rels/"+$.fileName+".rels",``),q.file(`ppt/charts/${$.fileName}`,xB($)),K("")}).catch((U)=>{J(U)})})})}function xB($){var q,Q,K,J;let Z='',G=!1;{if(Z+='',Z+='',Z+=``,Z+="",$.opts.showTitle)Z+=H5({title:$.opts.title||"Chart Title",color:$.opts.titleColor,fontFace:$.opts.titleFontFace,fontSize:$.opts.titleFontSize||DB,titleAlign:$.opts.titleAlign,titleBold:$.opts.titleBold,titlePos:$.opts.titlePos,titleRotate:$.opts.titleRotate},$.opts.x,$.opts.y),Z+='';else Z+='';if($.opts._type===q0.BAR3D)Z+=``;if(Z+="",$.opts.layout)Z+="",Z+=" ",Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=" ",Z+="";else Z+=""}if(Array.isArray($.opts._type))$.opts._type.forEach((W)=>{let B=Object.assign(Object.assign({},$.opts),W.options),V=B.secondaryValAxis?N5:o2,U=B.secondaryCatAxis?x7:B8;G=G||B.secondaryValAxis,Z+=$J(W.type,W.data,B,V,U)});else Z+=$J($.opts._type,$.data,$.opts,o2,B8);if($.opts._type!==q0.PIE&&$.opts._type!==q0.DOUGHNUT){if($.opts.valAxes&&$.opts.valAxes.length>1&&!G)throw Error("Secondary axis must be used by one of the multiple charts");if($.opts.catAxes){if(!$.opts.valAxes||$.opts.valAxes.length!==$.opts.catAxes.length)throw Error("There must be the same number of value and category axes.");Z+=A7(Object.assign(Object.assign({},$.opts),$.opts.catAxes[0]),B8,o2)}else Z+=A7($.opts,B8,o2);if($.opts.valAxes){if(Z+=X7(Object.assign(Object.assign({},$.opts),$.opts.valAxes[0]),o2),$.opts.valAxes[1])Z+=X7(Object.assign(Object.assign({},$.opts),$.opts.valAxes[1]),N5)}else if(Z+=X7($.opts,o2),$.opts._type===q0.BAR3D)Z+=OB($.opts,UJ,o2);if(((q=$.opts)===null||q===void 0?void 0:q.catAxes)&&((Q=$.opts)===null||Q===void 0?void 0:Q.catAxes[1]))Z+=A7(Object.assign(Object.assign({},$.opts),$.opts.catAxes[1]),x7,N5)}{if($.opts.showDataTable)Z+="",Z+=` `,Z+=` `,Z+=` `,Z+=` `,Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+=' ',Z+=` `,Z+=' ',Z+=' ',Z+=' ',Z+=' ',Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=" ",Z+="";if(Z+=" ",Z+=((K=$.opts.plotArea.fill)===null||K===void 0?void 0:K.color)?B2($.opts.plotArea.fill):"",Z+=$.opts.plotArea.border?`${B2($.opts.plotArea.border.color)}`:"",Z+=" ",Z+=" ",Z+="",$.opts.showLegend){if(Z+="",Z+='',Z+='',$.opts.legendFontFace||$.opts.legendFontSize||$.opts.legendColor){if(Z+="",Z+=" ",Z+=" ",Z+=" ",Z+=" ",Z+=$.opts.legendFontSize?``:"",$.opts.legendColor)Z+=B2($.opts.legendColor);if($.opts.legendFontFace)Z+='';if($.opts.legendFontFace)Z+='';Z+=" ",Z+=" ",Z+=' ',Z+=" ",Z+=""}Z+=""}}if(Z+=' ',Z+=' ',$.opts._type===q0.SCATTER)Z+='';return Z+="",Z+="",Z+=((J=$.opts.chartArea.fill)===null||J===void 0?void 0:J.color)?B2($.opts.chartArea.fill):"",Z+=$.opts.chartArea.border?`${B2($.opts.chartArea.border.color)}`:"",Z+=" ",Z+="",Z+='',Z+="",Z}function $J($,q,Q,K,J,Z){let G=-1,W=1,B=null,V="";switch($){case q0.AREA:case q0.BAR:case q0.BAR3D:case q0.LINE:case q0.RADAR:if(V+=``,$===q0.AREA&&Q.barGrouping==="stacked")V+='';if($===q0.BAR||$===q0.BAR3D)V+='',V+='';if($===q0.RADAR)V+='';V+='',q.forEach((U)=>{var w;G++,V+="",V+=` `,V+=" ",V+=" ",V+=" Sheet1!$"+j0(U._dataIndex+U.labels.length+1)+"$1",V+=' '+k0(U.name)+"",V+=" ",V+=" ";let F=Q.chartColors?Q.chartColors[G%Q.chartColors.length]:null;if(V+=" ",F==="transparent")V+="";else if(Q.chartColorsOpacity)V+=""+R0(F,``)+"";else V+=""+R0(F)+"";if($===q0.LINE||$===q0.RADAR)if(Q.lineSize===0)V+="";else V+=`${R0(F)}`,V+='';else if(Q.dataBorder)V+=`${R0(Q.dataBorder.color)}`;if(V+=T1(Q.shadow,P1),V+=" ",V+=' ',$!==q0.RADAR){if(V+="",V+=``,Q.dataLabelBkgrdColors)V+=`${R0(F)}`;if(V+="",V+=``,V+=`${R0(Q.dataLabelColor||Q2)}`,V+=``,V+="",Q.dataLabelPosition)V+=``;V+='',V+=``,V+=``,V+=``,V+=""}if($===q0.LINE||$===q0.RADAR){if(V+="",V+=' ',Q.lineDataSymbolSize)V+=``;V+=" ",V+=` ${R0(Q.chartColors[U._dataIndex+1>Q.chartColors.length?Math.floor(Math.random()*Q.chartColors.length):U._dataIndex])}`,V+=` ${R0(Q.lineDataSymbolLineColor||F)}`,V+=" ",V+=" ",V+=""}if(($===q0.BAR||$===q0.BAR3D)&&q.length===1&&(Q.chartColors&&Q.chartColors!==z8&&Q.chartColors.length>1||((w=Q.invertedColors)===null||w===void 0?void 0:w.length)))U.values.forEach((M,k)=>{let f=M<0?Q.invertedColors||Q.chartColors||z8:Q.chartColors||[];if(V+=" ",V+=` `,V+=' ',V+=' ',V+=" ",Q.lineSize===0)V+="";else if($===q0.BAR)V+="",V+=' ',V+="";else V+="",V+=" ",V+=' ',V+=" ",V+="";V+=T1(Q.shadow,P1),V+=" ",V+=" "});{if(V+="",Q.catLabelFormatCode)V+=" ",V+=` Sheet1!$A$2:$A$${U.labels[0].length+1}`,V+=" ",V+=" "+(Q.catLabelFormatCode||"General")+"",V+=` `,U.labels[0].forEach((M,k)=>V+=`${k0(M)}`),V+=" ",V+=" ";else V+=" ",V+=` Sheet1!$A$2:$${j0(U.labels.length)}$${U.labels[0].length+1}`,V+=" ",V+=` `,U.labels.forEach((M)=>{V+="",M.forEach((k,f)=>V+=`${k0(k)}`),V+=""}),V+=" ",V+=" ";V+=""}if(V+="",V+=" ",V+=`Sheet1!$${j0(U._dataIndex+U.labels.length+1)}$2:$${j0(U._dataIndex+U.labels.length+1)}$${U.labels[0].length+1}`,V+=" ",V+=" "+(Q.valLabelFormatCode||Q.dataTableFormatCode||"General")+"",V+=` `,U.values.forEach((M,k)=>V+=`${M||M===0?M:""}`),V+=" ",V+=" ",V+="",$===q0.LINE)V+='';V+=""});{if(V+=" ",V+=` `,V+=" ",V+=" ",V+=" ",V+=" ",V+=` `,V+=" "+R0(Q.dataLabelColor||Q2)+"",V+=' ',V+=" ",V+=" ",V+=" ",Q.dataLabelPosition)V+=' ';V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=` `,V+=" "}if($===q0.BAR)V+=` `,V+=` `;else if($===q0.BAR3D)V+=` `,V+=` `,V+=' ';else if($===q0.LINE)V+=' ';V+=``,V+=``;break;case q0.SCATTER:V+="",V+='',V+='',G=-1,q.filter((U,w)=>w>0).forEach((U,w)=>{G++,V+="",V+=` `,V+=` `,V+=" ",V+=" ",V+=` Sheet1!$${j0(w+2)}$1`,V+=' '+k0(U.name)+"",V+=" ",V+=" ",V+=" ";{let F=Q.chartColors[G%Q.chartColors.length];if(F==="transparent")V+="";else if(Q.chartColorsOpacity)V+=""+R0(F,'')+"";else V+=""+R0(F)+"";if(Q.lineSize===0)V+="";else V+=`${R0(F)}`,V+=``;V+=T1(Q.shadow,P1)}V+=" ";{if(V+="",V+=' ',Q.lineDataSymbolSize)V+=``;V+="",V+=`${R0(Q.chartColors[w+1>Q.chartColors.length?Math.floor(Math.random()*Q.chartColors.length):w])}`,V+=`${R0(Q.lineDataSymbolLineColor||Q.chartColors[G%Q.chartColors.length])}`,V+="",V+="",V+=""}if(Q.showLabel){let F=Y5("-xxxx-xxxx-xxxx-xxxxxxxxxxxx");if(U.labels[0]&&(Q.dataLabelFormatScatter==="custom"||Q.dataLabelFormatScatter==="customXY"))V+="",U.labels[0].forEach((M,k)=>{if(Q.dataLabelFormatScatter==="custom"||Q.dataLabelFormatScatter==="customXY"){if(V+=" ",V+=` `,V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=' ',V+=" "+k0(M)+"",V+=" ",Q.dataLabelFormatScatter==="customXY"&&!/^ *$/.test(M))V+=" ",V+=' ',V+=" (",V+=" ",V+=' ',V+=' ',V+=" ",V+=" ",V+=" ",V+=" ["+k0(U.name)+"",V+=" ",V+=" ",V+=' ',V+=" , ",V+=" ",V+=' ',V+=' ',V+=" ",V+=" ",V+=" ",V+=" ["+k0(U.name)+"]",V+=" ",V+=" ",V+=' ',V+=" )",V+=" ",V+=' ';if(V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",Q.dataLabelPosition)V+=' ';V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=" ",V+=' ',V+=' ',V+=` `,V+=" ",V+=" ",V+=""}}),V+="";if(Q.dataLabelFormatScatter==="XY"){if(V+="",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=' ',V+=" ",V+=" ",Q.dataLabelPosition)V+=' ';V+=' ',V+=` `,V+=` `,V+=` `,V+=' ',V+=' ',V+=" ",V+=' ',V+=' ',V+=" ",V+=" ",V+=""}}if(q.length===1&&Q.chartColors!==z8)U.values.forEach((F,M)=>{let k=F<0?Q.invertedColors||Q.chartColors||z8:Q.chartColors||[];if(V+=" ",V+=` `,V+=' ',V+=' ',V+=" ",Q.lineSize===0)V+="";else V+="",V+=' ',V+="";V+=T1(Q.shadow,P1),V+=" ",V+=" "});V+="",V+=" ",V+=` Sheet1!$A$2:$A$${q[0].values.length+1}`,V+=" ",V+=" General",V+=` `,q[0].values.forEach((F,M)=>{V+=`${F||F===0?F:""}`}),V+=" ",V+=" ",V+="",V+="",V+=" ",V+=` Sheet1!$${j0(w+2)}$2:$${j0(w+2)}$${q[0].values.length+1}`,V+=" ",V+=" General",V+=` `,q[0].values.forEach((F,M)=>{V+=`${U.values[M]||U.values[M]===0?U.values[M]:""}`}),V+=" ",V+=" ",V+="",V+='',V+=""});{if(V+=" ",V+=` `,V+=" ",V+=" ",V+=" ",V+=" ",V+=` `,V+=" "+R0(Q.dataLabelColor||Q2)+"",V+=' ',V+=" ",V+=" ",V+=" ",Q.dataLabelPosition)V+=' ';V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=" "}V+=``,V+="";break;case q0.BUBBLE:case q0.BUBBLE3D:V+="",V+='',G=-1,q.filter((U,w)=>w>0).forEach((U,w)=>{G++,V+="",V+=` `,V+=` `,V+=" ",V+=" ",V+=" Sheet1!$"+j0(W+1)+"$1",V+=' '+k0(U.name)+"",V+=" ",V+=" ";{V+="";let F=Q.chartColors[G%Q.chartColors.length];if(F==="transparent")V+="";else if(Q.chartColorsOpacity)V+=`${R0(F,'')}`;else V+=""+R0(F)+"";if(Q.lineSize===0)V+="";else if(Q.dataBorder)V+=`${R0(Q.dataBorder.color)}`;else V+=`${R0(F)}`,V+=``;V+=T1(Q.shadow,P1),V+=""}V+="",V+=" ",V+=` Sheet1!$A$2:$A$${q[0].values.length+1}`,V+=" ",V+=" General",V+=` `,q[0].values.forEach((F,M)=>{V+=`${F||F===0?F:""}`}),V+=" ",V+=" ",V+="",V+="",V+=" ",V+=`Sheet1!$${j0(W+1)}$2:$${j0(W+1)}$${q[0].values.length+1}`,W++,V+=" ",V+=" General",V+=` `,q[0].values.forEach((F,M)=>{V+=`${U.values[M]||U.values[M]===0?U.values[M]:""}`}),V+=" ",V+=" ",V+="",V+=" ",V+=" ",V+=`Sheet1!$${j0(W+1)}$2:$${j0(W+1)}$${U.sizes.length+1}`,W++,V+=" ",V+=" General",V+=` `,U.sizes.forEach((F,M)=>{V+=`${F||""}`}),V+=" ",V+=" ",V+=" ",V+=' ',V+=""});{if(V+="",V+=``,V+="",V+=``,V+=`${R0(Q.dataLabelColor||Q2)}`,V+=``,V+="",Q.dataLabelPosition)V+=``;V+='',V+=``,V+=``,V+="",V+=' ',V+=' ',V+=" ",V+="",V+=""}V+=``,V+="";break;case q0.DOUGHNUT:case q0.PIE:if(B=q[0],V+="",V+=' ',V+="",V+=' ',V+=' ',V+=" ",V+=" ",V+=" Sheet1!$B$1",V+=" ",V+=' ',V+=' '+k0(B.name)+"",V+=" ",V+=" ",V+=" ",V+=" ",V+=' ',V+=' ',Q.dataNoEffects)V+="";else V+=T1(Q.shadow,P1);if(V+=" ",B.labels[0].forEach((U,w)=>{if(V+="",V+=` `,V+=' ',V+=" ",V+=`${R0(Q.chartColors[w+1>Q.chartColors.length?Math.floor(Math.random()*Q.chartColors.length):w])}`,Q.dataBorder)V+=`${R0(Q.dataBorder.color)}`;V+=T1(Q.shadow,P1),V+=" ",V+=""}),V+="",B.labels[0].forEach((U,w)=>{if(V+="",V+=` `,V+=` `,V+=" ",V+=" ",V+=" ",V+=` `,V+=" "+R0(Q.dataLabelColor||Q2)+"",V+=` `,V+=" ",V+=" ",V+=" ",$===q0.PIE&&Q.dataLabelPosition)V+=``;V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=" "}),V+=` `,V+=" ",V+=" ",V+=" ",V+=" ",V+=" ",V+=` `,V+=' ',V+=" ",V+=" ",V+=" ",V+=" ",V+=$===q0.PIE?'':"",V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=' ',V+=` `,V+="",V+="",V+=" ",V+=` Sheet1!$A$2:$A$${B.labels[0].length+1}`,V+=" ",V+=` `,B.labels[0].forEach((U,w)=>{V+=`${k0(U)}`}),V+=" ",V+=" ",V+="",V+=" ",V+=" ",V+=` Sheet1!$B$2:$B$${B.labels[0].length+1}`,V+=" ",V+=` `,B.values.forEach((U,w)=>{V+=`${U||U===0?U:""}`}),V+=" ",V+=" ",V+=" ",V+=" ",V+=` `,$===q0.DOUGHNUT)V+=``;V+="";break;default:V+="";break}return V}function A7($,q,Q){let K="";if($._type===q0.SCATTER||$._type===q0.BUBBLE||$._type===q0.BUBBLE3D)K+="";else K+="";if(K+=' ',K+=" ",K+='',$.catAxisMaxVal||$.catAxisMaxVal===0)K+=``;if($.catAxisMinVal||$.catAxisMinVal===0)K+=``;if(K+="",K+=' ',K+=' ',K+=$.catGridLine.style!=="none"?b7($.catGridLine):"",$.showCatAxisTitle)K+=H5({color:$.catAxisTitleColor,fontFace:$.catAxisTitleFontFace,fontSize:$.catAxisTitleFontSize,titleRotate:$.catAxisTitleRotate,title:$.catAxisTitle||"Axis Title"});if($._type===q0.SCATTER||$._type===q0.BUBBLE||$._type===q0.BUBBLE3D)K+=' ';else K+=' ';if($._type===q0.SCATTER)K+=' ',K+=' ',K+=' ';else K+=' ',K+=' ',K+=' ';if(K+=" ",K+=` `,K+=!$.catAxisLineShow?"":""+R0($.catAxisLineColor||u1.color)+"",K+=' ',K+=" ",K+=" ",K+=" ",K+=" ",$.catAxisLabelRotate)K+=``;else K+="";if(K+=" ",K+=" ",K+=" ",K+=` `,K+=" "+R0($.catAxisLabelColor||Q2)+"",K+=' ',K+=" ",K+=" ",K+=' ',K+=" ",K+=" ",K+=' ',K+=` `,K+=' ',K+=' ',K+=` `,$.catAxisLabelFrequency)K+=' ';if($.catLabelFormatCode||$._type===q0.SCATTER||$._type===q0.BUBBLE||$._type===q0.BUBBLE3D){if($.catLabelFormatCode){if(["catAxisBaseTimeUnit","catAxisMajorTimeUnit","catAxisMinorTimeUnit"].forEach((J)=>{if($[J]&&(typeof $[J]!=="string"||!["days","months","years"].includes($[J].toLowerCase())))console.warn(`"${J}" must be one of: 'days','months','years' !`),$[J]=null}),$.catAxisBaseTimeUnit)K+='';if($.catAxisMajorTimeUnit)K+='';if($.catAxisMinorTimeUnit)K+=''}if($.catAxisMajorUnit)K+=``;if($.catAxisMinorUnit)K+=``}if($._type===q0.SCATTER||$._type===q0.BUBBLE||$._type===q0.BUBBLE3D)K+="";else K+="";return K}function X7($,q){let Q=q===o2?$.barDir==="col"?"l":"b":$.barDir!=="col"?"r":"t";if(q===N5)Q="r";let K=q===o2?B8:x7,J="";if(J+="",J+=' ',J+=" ",$.valAxisLogScaleBase)J+=``;if(J+='',$.valAxisMaxVal||$.valAxisMaxVal===0)J+=``;if($.valAxisMinVal||$.valAxisMinVal===0)J+=``;if(J+=" ",J+=` `,J+=' ',$.valGridLine.style!=="none")J+=b7($.valGridLine);if($.showValAxisTitle)J+=H5({color:$.valAxisTitleColor,fontFace:$.valAxisTitleFontFace,fontSize:$.valAxisTitleFontSize,titleRotate:$.valAxisTitleRotate,title:$.valAxisTitle||"Axis Title"});if(J+=``,$._type===q0.SCATTER)J+=' ',J+=' ',J+=' ';else J+=' ',J+=' ',J+=' ';if(J+=" ",J+=` `,J+=!$.valAxisLineShow?"":""+R0($.valAxisLineColor||u1.color)+"",J+=' ',J+=" ",J+=" ",J+=" ",J+=" ",J+=` `,J+=" ",J+=" ",J+=" ",J+=` `,J+=" "+R0($.valAxisLabelColor||Q2)+"",J+=' ',J+=" ",J+=" ",J+=' ',J+=" ",J+=" ",J+=' ',typeof $.catAxisCrossesAt==="number")J+=` `;else if(typeof $.catAxisCrossesAt==="string")J+=' ';else J+=' ';if(J+=' ',$.valAxisMajorUnit)J+=` `;if($.valAxisDisplayUnit)J+=`${$.valAxisDisplayUnitLabel?"":""}`;return J+="",J}function OB($,q,Q){let K="";if(K+="",K+=' ',K+=' ',K+=' ',K+=' ',K+=$.serGridLine.style!=="none"?b7($.serGridLine):"",$.showSerAxisTitle)K+=H5({color:$.serAxisTitleColor,fontFace:$.serAxisTitleFontFace,fontSize:$.serAxisTitleFontSize,titleRotate:$.serAxisTitleRotate,title:$.serAxisTitle||"Axis Title"});if(K+=` `,K+=' ',K+=' ',K+=` `,K+=" ",K+=' ',K+=!$.serAxisLineShow?"":`${R0($.serAxisLineColor||u1.color)}`,K+=' ',K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=" ",K+=` `,K+=` ${R0($.serAxisLabelColor||Q2)}`,K+=` `,K+=" ",K+=" ",K+=' ',K+=" ",K+=" ",K+=' ',K+=' ',$.serAxisLabelFrequency)K+=' ';if($.serLabelFormatCode){if(["serAxisBaseTimeUnit","serAxisMajorTimeUnit","serAxisMinorTimeUnit"].forEach((J)=>{if($[J]&&(typeof $[J]!=="string"||!["days","months","years"].includes(J.toLowerCase())))console.warn(`"${J}" must be one of: 'days','months','years' !`),$[J]=null}),$.serAxisBaseTimeUnit)K+=` `;if($.serAxisMajorTimeUnit)K+=` `;if($.serAxisMinorTimeUnit)K+=` `;if($.serAxisMajorUnit)K+=` `;if($.serAxisMinorUnit)K+=` `}return K+="",K}function H5($,q,Q){let K=$.titleAlign==="left"||$.titleAlign==="right"?``:"",J=$.titleRotate?``:"",Z=$.fontSize?`sz="${Math.round($.fontSize*100)}"`:"",G=$.titleBold?1:0,W="";if($.titlePos&&typeof $.titlePos.x==="number"&&typeof $.titlePos.y==="number"){let B=$.titlePos.x+q,V=$.titlePos.y+Q,U=B===0?0:B*(B/5)/10;if(U>=1)U=U/10;if(U>=0.1)U=U/10;let w=V===0?0:V*(V/5)/10;if(w>=1)w=w/10;if(w>=0.1)w=w/10;W=``}return` ${J} @@ -38,46 +37,46 @@ ${K} - ${f0(Q.color||z1)} - + ${R0($.color||Q2)} + - ${f0(Q.color||z1)} - + ${R0($.color||Q2)} + - ${L0(Q.title)||""} + ${k0($.title)||""} - ${B} + ${W} -
`}function h0(Q){let $="",q=Q-1;if(q<=25)$=y8[q];else $=`${y8[Math.floor(q/y8.length-1)]}${y8[q%y8.length]}`;return $}function q6(Q,$){if(!Q)return"";else if(typeof Q!=="object")return console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`"),"";let q="",K=Object.assign(Object.assign({},$),Q),J=K.type||"outer",Z=Y0(K.blur),G=Y0(K.offset),B=Math.round(K.angle*60000),W=K.color,U=Math.round(K.opacity*1e5),V=K.rotateWithShape?1:0;return q+=``,q+=``,q+=``,q+=``,q+="",q}function H9(Q){let $="";return $+=" ",$+=` `,$+=' ',$+=' ',$+=" ",$+=" ",$+="",$}function n5(Q){if(!Q||Q==="flat")return"flat";else if(Q==="square")return"sq";else if(Q==="round")return"rnd";else throw new Error(`Invalid chart line cap: ${Q}`)}function G9(Q){var $,q;let K=typeof process!=="undefined"&&!!(($=process.versions)===null||$===void 0?void 0:$.node)&&((q=process.release)===null||q===void 0?void 0:q.name)==="node",J,Z,G=K?()=>H1(this,void 0,void 0,function*(){({default:J}=yield import("node:fs")),{default:Z}=yield Promise.resolve().then(() => (DJ(),LJ))}):()=>H1(this,void 0,void 0,function*(){});if(K)G();let B=[],W=Q._relsMedia.filter((V)=>V.type!=="online"&&!V.data&&(!V.path||V.path&&!V.path.includes("preencoded"))),U=[];return W.forEach((V)=>{if(!U.includes(V.path))V.isDuplicate=!1,U.push(V.path);else V.isDuplicate=!0}),W.filter((V)=>!V.isDuplicate).forEach((V)=>{B.push((()=>H1(this,void 0,void 0,function*(){if(!Z)yield G();if(K&&J&&V.path.indexOf("http")!==0)try{let N=J.readFileSync(V.path);return V.data=Buffer.from(N).toString("base64"),W.filter((F)=>F.isDuplicate&&F.path===V.path).forEach((F)=>F.data=V.data),"done"}catch(N){throw V.data=c6,W.filter((F)=>F.isDuplicate&&F.path===V.path).forEach((F)=>F.data=V.data),new Error(`ERROR: Unable to read media: "${V.path}" -${String(N)}`)}if(K&&Z&&V.path.startsWith("http"))return yield new Promise((N,F)=>{Z.get(V.path,(M)=>{let v="";M.setEncoding("binary"),M.on("data",(x)=>v+=x),M.on("end",()=>{V.data=Buffer.from(v,"binary").toString("base64"),W.filter((x)=>x.isDuplicate&&x.path===V.path).forEach((x)=>x.data=V.data),N("done")}),M.on("error",()=>{V.data=c6,W.filter((x)=>x.isDuplicate&&x.path===V.path).forEach((x)=>x.data=V.data),F(new Error(`ERROR! Unable to load image (https.get): ${V.path}`))})})});return yield new Promise((N,F)=>{let M=new XMLHttpRequest;M.onload=()=>{let v=new FileReader;v.onloadend=()=>{if(V.data=v.result,W.filter((x)=>x.isDuplicate&&x.path===V.path).forEach((x)=>x.data=V.data),!V.isSvgPng)N("done");else vJ(V).then(()=>N("done")).catch(F)},v.readAsDataURL(M.response)},M.onerror=()=>{V.data=c6,W.filter((v)=>v.isDuplicate&&v.path===V.path).forEach((v)=>v.data=V.data),F(new Error(`ERROR! Unable to load image (xhr.onerror): ${V.path}`))},M.open("GET",V.path),M.responseType="blob",M.send()})}))())}),Q._relsMedia.filter((V)=>V.isSvgPng&&V.data).forEach((V)=>{(()=>H1(this,void 0,void 0,function*(){if(K&&!J)yield G();if(K&&J)V.data=c6,B.push(Promise.resolve("done"));else B.push(vJ(V))}))()}),B}function vJ(Q){return H1(this,void 0,void 0,function*(){return yield new Promise(($,q)=>{let K=new Image;K.onload=()=>{if(K.width+K.height===0)K.onerror("h/w=0");let J=document.createElement("CANVAS"),Z=J.getContext("2d");J.width=K.width,J.height=K.height,Z.drawImage(K,0,0);try{Q.data=J.toDataURL(Q.type),$("done")}catch(G){K.onerror(G.toString())}J=null},K.onerror=()=>{Q.data=c6,q(new Error(`ERROR! Unable to load image (image.onerror): ${Q.path}`))},K.src=typeof Q.data==="string"?Q.data:c6})})}var Nz={cover:function(Q,$){let q=Q.h/Q.w,J=$.h/$.w>q,Z=J?$.h/q:$.w,G=J?$.h:$.w*q,B=Math.round(50000*(1-$.w/Z)),W=Math.round(50000*(1-$.h/G));return``},contain:function(Q,$){let q=Q.h/Q.w,J=$.h/$.w>q,Z=J?$.w:$.h/q,G=J?$.w*q:$.h,B=Math.round(50000*(1-$.w/Z)),W=Math.round(50000*(1-$.h/G));return``},crop:function(Q,$){let q=$.x,K=Q.w-($.x+$.w),J=$.y,Z=Q.h-($.y+$.h),G=Math.round(1e5*(q/Q.w)),B=Math.round(1e5*(K/Q.w)),W=Math.round(1e5*(J/Q.h)),U=Math.round(1e5*(Z/Q.h));return``}};function k9(Q){var $;let q=Q._name?'':"",K=1;if(Q._bkgdImgRid)q+=``;else if(($=Q.background)===null||$===void 0?void 0:$.color)q+=`${k1(Q.background)}`;else if(!Q.bkgd&&Q._name&&Q._name===B9)q+='';if(q+="",q+='',q+='',q+='',Q._slideObjects.forEach((J,Z)=>{var G,B,W,U,V,N,F,M;let v=0,x=0,y=v0("75%","X",Q._presLayout),D=0,z,Y="",H=null,R=null,c=0,m=0,$0=null,_=null,g=(G=J.options)===null||G===void 0?void 0:G.sizing,O=(B=J.options)===null||B===void 0?void 0:B.rounding;if(Q._slideLayout!==void 0&&Q._slideLayout._slideObjects!==void 0&&J.options&&J.options.placeholder)z=Q._slideLayout._slideObjects.filter((A)=>A.options.placeholder===J.options.placeholder)[0];if(J.options=J.options||{},typeof J.options.x!=="undefined")v=v0(J.options.x,"X",Q._presLayout);if(typeof J.options.y!=="undefined")x=v0(J.options.y,"Y",Q._presLayout);if(typeof J.options.w!=="undefined")y=v0(J.options.w,"X",Q._presLayout);if(typeof J.options.h!=="undefined")D=v0(J.options.h,"Y",Q._presLayout);let h=y,f=D;if(z){if(z.options.x||z.options.x===0)v=v0(z.options.x,"X",Q._presLayout);if(z.options.y||z.options.y===0)x=v0(z.options.y,"Y",Q._presLayout);if(z.options.w||z.options.w===0)y=v0(z.options.w,"X",Q._presLayout);if(z.options.h||z.options.h===0)D=v0(z.options.h,"Y",Q._presLayout)}if(J.options.flipH)Y+=' flipH="1"';if(J.options.flipV)Y+=' flipV="1"';if(J.options.rotate)Y+=` rot="${K6(J.options.rotate)}"`;switch(J._type){case D0.table:if(H=J.arrTabRows,R=J.options,c=0,m=0,H[0].forEach((A)=>{$0=A.options||null,c+=($0===null||$0===void 0?void 0:$0.colspan)?Number($0.colspan):1}),_=``,_+=' ',_+=``,_+='',Array.isArray(R.colW)){_+="";for(let A=0;A`}_+=""}else{if(m=R.colW?R.colW:H0,J.options.w&&!R.colW)m=Math.round((typeof J.options.w==="number"?J.options.w:1)/c);_+="";for(let A=0;A`;_+=""}H.forEach((A)=>{var I,n;for(let i=0;i1){let U0=new Array(z0-1).fill(void 0).map(()=>{return{_type:D0.tablecell,options:{rowspan:S},_hmerge:!0}});A.splice(i+1,0,...U0),i+=z0}else i+=1}}),H.forEach((A,I)=>{let n=H[I+1];if(!n)return;A.forEach((i,K0)=>{var z0,S;let U0=i._rowContinue||((z0=i.options)===null||z0===void 0?void 0:z0.rowspan),k=(S=i.options)===null||S===void 0?void 0:S.colspan,u=i._hmerge;if(U0&&U0>1){let Q0={_type:D0.tablecell,options:{colspan:k},_rowContinue:U0-1,_vmerge:!0,_hmerge:u};n.splice(K0,0,Q0)}})}),H.forEach((A,I)=>{let n=0;if(Array.isArray(R.rowH)&&R.rowH[I])n=C0(Number(R.rowH[I]));else if(R.rowH&&!isNaN(Number(R.rowH)))n=C0(Number(R.rowH));else if(J.options.cy||J.options.h)n=Math.round((J.options.h?C0(J.options.h):typeof J.options.cy==="number"?J.options.cy:1)/H.length);_+=``,A.forEach((i)=>{var K0,z0,S,U0,k;let u=i,Q0={rowSpan:((K0=u.options)===null||K0===void 0?void 0:K0.rowspan)>1?u.options.rowspan:void 0,gridSpan:((z0=u.options)===null||z0===void 0?void 0:z0.colspan)>1?u.options.colspan:void 0,vMerge:u._vmerge?1:void 0,hMerge:u._hmerge?1:void 0},E=Object.keys(Q0).map((Z0)=>[Z0,Q0[Z0]]).filter(([,Z0])=>!!Z0).map(([Z0,W0])=>`${String(Z0)}="${String(W0)}"`).join(" ");if(E)E=" "+E;if(u._hmerge||u._vmerge){_+=``;return}let q0=u.options||{};u.options=q0,["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach((Z0)=>{if(R[Z0]&&!q0[Z0]&&q0[Z0]!==0)q0[Z0]=R[Z0]});let B0=q0.valign?` anchor="${q0.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"",w0=q0.textDirection&&q0.textDirection!=="horz"?` vert="${q0.textDirection}"`:"",M0=((U0=(S=u._optImp)===null||S===void 0?void 0:S.fill)===null||U0===void 0?void 0:U0.color)?u._optImp.fill.color:((k=u._optImp)===null||k===void 0?void 0:k.fill)&&typeof u._optImp.fill==="string"?u._optImp.fill:"";M0=M0||q0.fill?q0.fill:"";let b=M0?k1(M0):"",T=q0.margin===0||q0.margin?q0.margin:CJ;if(!Array.isArray(T)&&typeof T==="number")T=[T,T,T,T];let t="";if(T[0]>=1)t=` marL="${Y0(T[3])}" marR="${Y0(T[1])}" marT="${Y0(T[0])}" marB="${Y0(T[2])}"`;else t=` marL="${C0(T[3])}" marR="${C0(T[1])}" marT="${C0(T[0])}" marB="${C0(T[2])}"`;if(_+=`${RJ(u)}`,q0.border&&Array.isArray(q0.border))[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach((Z0)=>{if(q0.border[Z0.idx].type!=="none")_+=``,_+=`${f0(q0.border[Z0.idx].color)}`,_+=``,_+=``;else _+=``});_+=b,_+=" ",_+=" "}),_+=""}),_+=" ",_+=" ",_+=" ",_+="",q+=_,K++;break;case D0.text:case D0.placeholder:if(!J.options.line&&D===0)D=H0*0.3;if(!J.options._bodyProp)J.options._bodyProp={};if(J.options.margin&&Array.isArray(J.options.margin))J.options._bodyProp.lIns=Y0(J.options.margin[0]||0),J.options._bodyProp.rIns=Y0(J.options.margin[1]||0),J.options._bodyProp.bIns=Y0(J.options.margin[2]||0),J.options._bodyProp.tIns=Y0(J.options.margin[3]||0);else if(typeof J.options.margin==="number")J.options._bodyProp.lIns=Y0(J.options.margin),J.options._bodyProp.rIns=Y0(J.options.margin),J.options._bodyProp.bIns=Y0(J.options.margin),J.options._bodyProp.tIns=Y0(J.options.margin);if(q+="",q+=``,(W=J.options.hyperlink)===null||W===void 0?void 0:W.url)q+=``;if((U=J.options.hyperlink)===null||U===void 0?void 0:U.slide)q+=``;if(q+="",q+="':"/>"),q+=`${J._type==="placeholder"?b5(J):b5(z)}`,q+="",q+=``,q+=``,q+=``,J.shape==="custGeom")q+="",q+="",q+="",q+="",q+="",q+="",q+='',q+="",q+=``,(N=J.options.points)===null||N===void 0||N.forEach((A,I)=>{if("curve"in A)switch(A.curve.type){case"arc":q+=``;break;case"cubic":q+=` - - - - `;break;case"quadratic":q+=` - - - `;break}else if("close"in A)q+="";else if(A.moveTo||I===0)q+=``;else q+=``}),q+="",q+="",q+="";else{if(q+='',J.options.rectRadius)q+=``;else if(J.options.angleRange){for(let A=0;A<2;A++){let I=J.options.angleRange[A];q+=``}if(J.options.arcThicknessRatio)q+=``}q+=""}if(q+=J.options.fill?k1(J.options.fill):"",J.options.line){if(q+=J.options.line.width?``:"",J.options.line.color)q+=k1(J.options.line);if(J.options.line.dashType)q+=``;if(J.options.line.beginArrowType)q+=``;if(J.options.line.endArrowType)q+=``;q+=""}if(J.options.shadow&&J.options.shadow.type!=="none")J.options.shadow.type=J.options.shadow.type||"outer",J.options.shadow.blur=Y0(J.options.shadow.blur||8),J.options.shadow.offset=Y0(J.options.shadow.offset||4),J.options.shadow.angle=Math.round((J.options.shadow.angle||270)*60000),J.options.shadow.opacity=Math.round((J.options.shadow.opacity||0.75)*1e5),J.options.shadow.color=J.options.shadow.color||HJ.color,q+="",q+=` `,q+=` `,q+=` `,q+=" ",q+="";q+="",q+=RJ(J),q+="";break;case D0.image:if(q+="",q+=" ",q+=``,(F=J.hyperlink)===null||F===void 0?void 0:F.url)q+=``;if((M=J.hyperlink)===null||M===void 0?void 0:M.slide)q+=``;if(q+=" ",q+=' ',q+=" "+b5(z)+"",q+=" ",q+="",(Q._relsMedia||[]).filter((A)=>A.rId===J.imageRid)[0]&&(Q._relsMedia||[]).filter((A)=>A.rId===J.imageRid)[0].extn==="svg")q+=``,q+=J.options.transparency?` `:"",q+=" ",q+=' ',q+=` `,q+=" ",q+=" ",q+="";else q+=``,q+=J.options.transparency?``:"",q+="";if(g===null||g===void 0?void 0:g.type){let A=g.w?v0(g.w,"X",Q._presLayout):y,I=g.h?v0(g.h,"Y",Q._presLayout):D,n=v0(g.x||0,"X",Q._presLayout),i=v0(g.y||0,"Y",Q._presLayout);q+=Nz[g.type]({w:h,h:f},{w:A,h:I,x:n,y:i}),h=A,f=I}else q+=" ";if(q+="",q+="",q+=" ",q+=` `,q+=` `,q+=" ",q+=` `,J.options.shadow&&J.options.shadow.type!=="none")J.options.shadow.type=J.options.shadow.type||"outer",J.options.shadow.blur=Y0(J.options.shadow.blur||8),J.options.shadow.offset=Y0(J.options.shadow.offset||4),J.options.shadow.angle=Math.round((J.options.shadow.angle||270)*60000),J.options.shadow.opacity=Math.round((J.options.shadow.opacity||0.75)*1e5),J.options.shadow.color=J.options.shadow.color||HJ.color,q+="",q+=``,q+=``,q+=``,q+=``,q+="";q+="",q+="";break;case D0.media:if(J.mtype==="online")q+="",q+=" ",q+=``,q+=" ",q+=" ",q+=` `,q+=" ",q+=" ",q+=` `,q+=" ",q+=` `,q+=' ',q+=" ",q+="";else q+="",q+=" ",q+=``,q+=' ',q+=" ",q+=` `,q+=" ",q+=' ',q+=` `,q+=" ",q+=" ",q+=" ",q+=" ",q+=` `,q+=" ",q+=` `,q+=' ',q+=" ",q+="";break;case D0.chart:q+="",q+=" ",q+=` `,q+=" ",q+=` ${b5(z)}`,q+=" ",q+=` `,q+=' ',q+=' ',q+=` `,q+=" ",q+=" ",q+="";break;default:q+="";break}}),Q._slideNumberProps){if(!Q._slideNumberProps.align)Q._slideNumberProps.align="left";if(q+="",q+=" ",q+=' ',q+=' ',q+=" ",q+=" ",q+=` `,q+="",q+="`,Q._slideNumberProps.color)q+=k1(Q._slideNumberProps.color);if(Q._slideNumberProps.fontFace)q+=``;q+=""}if(q+="",q+="",Q._slideNumberProps.align.startsWith("l"))q+='';else if(Q._slideNumberProps.align.startsWith("c"))q+='';else if(Q._slideNumberProps.align.startsWith("r"))q+='';else q+='';q+=``,q+=`${Q._slideNum}`,q+=""}return q+="",q+="",q}function v9(Q,$){let q=0,K=''+r0+'';return Q._rels.forEach((J)=>{if(q=Math.max(q,J.rId),J.type.toLowerCase().includes("hyperlink"))if(J.data==="slide")K+=``;else K+=``;else if(J.type.toLowerCase().includes("notesSlide"))K+=``}),(Q._relsChart||[]).forEach((J)=>{q=Math.max(q,J.rId),K+=``}),(Q._relsMedia||[]).forEach((J)=>{let Z=J.rId.toString();if(q=Math.max(q,J.rId),J.type.toLowerCase().includes("image"))K+='';else if(J.type.toLowerCase().includes("audio"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+='';else if(J.type.toLowerCase().includes("video"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+='';else if(J.type.toLowerCase().includes("online"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+=''}),$.forEach((J,Z)=>{K+=``}),K+="",K}function IJ(Q,$){var q,K;let J="",Z="",G="",B="",W=$?"a:lvl1pPr":"a:pPr",U=Y0(tW),V=`<${W}${Q.options.rtlMode?' rtl="1" ':""}`;{if(Q.options.align)switch(Q.options.align){case"left":V+=' algn="l"';break;case"right":V+=' algn="r"';break;case"center":V+=' algn="ctr"';break;case"justify":V+=' algn="just"';break;default:V+="";break}if(Q.options.lineSpacing)Z=``;else if(Q.options.lineSpacingMultiple)Z=``;if(Q.options.indentLevel&&!isNaN(Number(Q.options.indentLevel))&&Q.options.indentLevel>0)V+=` lvl="${Q.options.indentLevel}"`;if(Q.options.paraSpaceBefore&&!isNaN(Number(Q.options.paraSpaceBefore))&&Q.options.paraSpaceBefore>0)G+=``;if(Q.options.paraSpaceAfter&&!isNaN(Number(Q.options.paraSpaceAfter))&&Q.options.paraSpaceAfter>0)G+=``;if(typeof Q.options.bullet==="object"){if((K=(q=Q===null||Q===void 0?void 0:Q.options)===null||q===void 0?void 0:q.bullet)===null||K===void 0?void 0:K.indent)U=Y0(Q.options.bullet.indent);if(Q.options.bullet.type){if(Q.options.bullet.type.toString().toLowerCase()==="number")V+=` marL="${Q.options.indentLevel&&Q.options.indentLevel>0?U+U*Q.options.indentLevel:U}" indent="-${U}"`,J=``}else if(Q.options.bullet.characterCode){let N=`&#x${Q.options.bullet.characterCode};`;if(!/^[0-9A-Fa-f]{4}$/.test(Q.options.bullet.characterCode))console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!"),N=_6.DEFAULT;V+=` marL="${Q.options.indentLevel&&Q.options.indentLevel>0?U+U*Q.options.indentLevel:U}" indent="-${U}"`,J=''}else if(Q.options.bullet.code){let N=`&#x${Q.options.bullet.code};`;if(!/^[0-9A-Fa-f]{4}$/.test(Q.options.bullet.code))console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!"),N=_6.DEFAULT;V+=` marL="${Q.options.indentLevel&&Q.options.indentLevel>0?U+U*Q.options.indentLevel:U}" indent="-${U}"`,J=''}else V+=` marL="${Q.options.indentLevel&&Q.options.indentLevel>0?U+U*Q.options.indentLevel:U}" indent="-${U}"`,J=``}else if(Q.options.bullet)V+=` marL="${Q.options.indentLevel&&Q.options.indentLevel>0?U+U*Q.options.indentLevel:U}" indent="-${U}"`,J=``;else if(!Q.options.bullet)V+=' indent="0" marL="0"',J="";if(Q.options.tabStops&&Array.isArray(Q.options.tabStops))B=`${Q.options.tabStops.map((F)=>``).join("")}`;if(V+=">"+Z+G+J+B,$)V+=OJ(Q.options,!0);V+=""}return V}function OJ(Q,$){var q;let K="",J=$?"a:defRPr":"a:rPr";if(K+="<"+J+' lang="'+(Q.lang?Q.lang:"en-US")+'"'+(Q.lang?' altLang="en-US"':""),K+=Q.fontSize?` sz="${Math.round(Q.fontSize*100)}"`:"",K+=(Q===null||Q===void 0?void 0:Q.bold)?` b="${Q.bold?"1":"0"}"`:"",K+=(Q===null||Q===void 0?void 0:Q.italic)?` i="${Q.italic?"1":"0"}"`:"",K+=(Q===null||Q===void 0?void 0:Q.strike)?` strike="${typeof Q.strike==="string"?Q.strike:"sngStrike"}"`:"",typeof Q.underline==="object"&&((q=Q.underline)===null||q===void 0?void 0:q.style))K+=` u="${Q.underline.style}"`;else if(typeof Q.underline==="string")K+=` u="${String(Q.underline)}"`;else if(Q.hyperlink)K+=' u="sng"';if(Q.baseline)K+=` baseline="${Math.round(Q.baseline*50)}"`;else if(Q.subscript)K+=' baseline="-40000"';else if(Q.superscript)K+=' baseline="30000"';if(K+=Q.charSpacing?` spc="${Math.round(Q.charSpacing*100)}" kern="0"`:"",K+=' dirty="0">',Q.color||Q.fontFace||Q.outline||typeof Q.underline==="object"&&Q.underline.color){if(Q.outline&&typeof Q.outline==="object")K+=`${k1(Q.outline.color||"FFFFFF")}`;if(Q.color)K+=k1({color:Q.color,transparency:Q.transparency});if(Q.highlight)K+=`${f0(Q.highlight)}`;if(typeof Q.underline==="object"&&Q.underline.color)K+=`${k1(Q.underline.color)}`;if(Q.glow)K+=`${Kz(Q.glow,Qz)}`;if(Q.fontFace)K+=``}if(Q.hyperlink){if(typeof Q.hyperlink!=="object")throw new Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");else if(!Q.hyperlink.url&&!Q.hyperlink.slide)throw new Error("ERROR: 'hyperlink requires either `url` or `slide`'");else if(Q.hyperlink.url)K+=`":"/>"}`;else if(Q.hyperlink.slide)K+=`":"/>"}`;if(Q.color)K+=" ",K+=' ',K+=' ',K+=" ",K+=" ",K+=""}return K+=``,K}function Yz(Q){return Q.text?`${OJ(Q.options,!1)}${L0(Q.text)}`:""}function Lz(Q){let $="";else if(Q.options.fit==="resize")$+=""}if(Q.options.shrinkText)$+="";$+=Q.options._bodyProp.autoFit?"":"",$+="
"}else $+=' wrap="square" rtlCol="0">',$+="
";return Q._type===D0.tablecell?"":$}function RJ(Q){let $=Q.options||{},q=[],K=[];if($&&Q._type!==D0.tablecell&&(typeof Q.text==="undefined"||Q.text===null))return"";let J=Q._type===D0.tablecell?"":"";if(J+=Lz(Q),$.h===0&&$.line&&$.align)J+='';else if(Q._type==="placeholder")J+=`${IJ(Q,!0)}`;else J+="";if(typeof Q.text==="string"||typeof Q.text==="number")q.push({text:Q.text.toString(),options:$||{}});else if(Q.text&&!Array.isArray(Q.text)&&typeof Q.text==="object"&&Object.keys(Q.text).includes("text"))q.push({text:Q.text||"",options:Q.options||{}});else if(Array.isArray(Q.text))q=Q.text.map((B)=>({text:B.text,options:B.options}));q.forEach((B,W)=>{if(!B.text)B.text="";if(B.options=B.options||$||{},W===0&&B.options&&!B.options.bullet&&$.bullet)B.options.bullet=$.bullet;if(typeof B.text==="string"||typeof B.text==="number")B.text=B.text.toString().replace(/\r*\n/g,r0);if(B.text.includes(r0)&&B.text.match(/\n$/g)===null)B.text.split(r0).forEach((U)=>{B.options.breakLine=!0,K.push({text:U,options:B.options})});else K.push(B)});let Z=[],G=[];if(K.forEach((B,W)=>{if(G.length>0&&(B.options.align||$.align)){if(B.options.align!==K[W-1].options.align)Z.push(G),G=[]}else if(G.length>0&&B.options.bullet&&G.length>0)Z.push(G),G=[],B.options.breakLine=!1;if(G.push(B),G.length>0&&B.options.breakLine){if(W+1{var W;let U=!1;J+="";let V=`{if(N.options._lineIdx=F,F>0&&N.options.softBreakBefore)J+="";if(N.options.align=N.options.align||$.align,N.options.lineSpacing=N.options.lineSpacing||$.lineSpacing,N.options.lineSpacingMultiple=N.options.lineSpacingMultiple||$.lineSpacingMultiple,N.options.indentLevel=N.options.indentLevel||$.indentLevel,N.options.paraSpaceBefore=N.options.paraSpaceBefore||$.paraSpaceBefore,N.options.paraSpaceAfter=N.options.paraSpaceAfter||$.paraSpaceAfter,V=IJ(N,!1),J+=V.replace("",""),Object.entries($).filter(([M])=>!(N.options.hyperlink&&M==="color")).forEach(([M,v])=>{if(M!=="bullet"&&!N.options[M])N.options[M]=v}),J+=Yz(N),!N.text&&$.fontSize||N.options.fontSize)U=!0,$.fontSize=$.fontSize||N.options.fontSize}),Q._type===D0.tablecell&&($.fontSize||$.fontFace))if($.fontFace)J+=`',J+=``,J+=``,J+=``,J+="";else J+=`';else if(U)J+=`';else J+=``;J+=""}),J.indexOf("")===-1)J+="";return J+=Q._type===D0.tablecell?"":"",J}function b5(Q){var $,q;if(!Q)return"";let K=(($=Q.options)===null||$===void 0?void 0:$._placeholderIdx)?Q.options._placeholderIdx:"",J=((q=Q.options)===null||q===void 0?void 0:q._placeholderType)?Q.options._placeholderType:"",Z=J&&O8[J]?O8[J].toString():"";return``}function j0($){let q="",Q=$-1;if(Q<=25)q=W8[Q];else q=`${W8[Math.floor(Q/W8.length-1)]}${W8[Q%W8.length]}`;return q}function T1($,q){if(!$)return"";else if(typeof $!=="object")return console.warn("`shadow` options must be an object. Ex: `{shadow: {type:'none'}}`"),"";let Q="",K=Object.assign(Object.assign({},q),$),J=K.type||"outer",Z=Y0(K.blur),G=Y0(K.offset),W=Math.round(K.angle*60000),B=K.color,V=Math.round(K.opacity*1e5),U=K.rotateWithShape?1:0;return Q+=``,Q+=``,Q+=``,Q+=``,Q+="",Q}function b7($){let q="";return q+=" ",q+=` `,q+=' ',q+=' ',q+=" ",q+=" ",q+="",q}function k5($){if(!$||$==="flat")return"flat";else if($==="square")return"sq";else if($==="round")return"rnd";else throw Error(`Invalid chart line cap: ${$}`)}function y7($){var q,Q;let K=typeof process<"u"&&!!((q=process.versions)===null||q===void 0?void 0:q.node)&&((Q=process.release)===null||Q===void 0?void 0:Q.name)==="node",J,Z,G=K?()=>W2(this,void 0,void 0,function*(){({default:J}=yield import("node:fs")),{default:Z}=yield Promise.resolve().then(() => (tK(),sK))}):()=>W2(this,void 0,void 0,function*(){});if(K)G();let W=[],B=$._relsMedia.filter((U)=>U.type!=="online"&&!U.data&&(!U.path||U.path&&!U.path.includes("preencoded"))),V=[];return B.forEach((U)=>{if(!V.includes(U.path))U.isDuplicate=!1,V.push(U.path);else U.isDuplicate=!0}),B.filter((U)=>!U.isDuplicate).forEach((U)=>{W.push((()=>W2(this,void 0,void 0,function*(){if(!Z)yield G();if(K&&J&&U.path.indexOf("http")!==0)try{let w=J.readFileSync(U.path);return U.data=Buffer.from(w).toString("base64"),B.filter((F)=>F.isDuplicate&&F.path===U.path).forEach((F)=>F.data=U.data),"done"}catch(w){throw U.data=j6,B.filter((F)=>F.isDuplicate&&F.path===U.path).forEach((F)=>F.data=U.data),Error(`ERROR: Unable to read media: "${U.path}" +${String(w)}`)}if(K&&Z&&U.path.startsWith("http"))return yield new Promise((w,F)=>{Z.get(U.path,(M)=>{let k="";M.setEncoding("binary"),M.on("data",(f)=>k+=f),M.on("end",()=>{U.data=Buffer.from(k,"binary").toString("base64"),B.filter((f)=>f.isDuplicate&&f.path===U.path).forEach((f)=>f.data=U.data),w("done")}),M.on("error",()=>{U.data=j6,B.filter((f)=>f.isDuplicate&&f.path===U.path).forEach((f)=>f.data=U.data),F(Error(`ERROR! Unable to load image (https.get): ${U.path}`))})})});return yield new Promise((w,F)=>{let M=new XMLHttpRequest;M.onload=()=>{let k=new FileReader;k.onloadend=()=>{if(U.data=k.result,B.filter((f)=>f.isDuplicate&&f.path===U.path).forEach((f)=>f.data=U.data),!U.isSvgPng)w("done");else QJ(U).then(()=>w("done")).catch(F)},k.readAsDataURL(M.response)},M.onerror=()=>{U.data=j6,B.filter((k)=>k.isDuplicate&&k.path===U.path).forEach((k)=>k.data=U.data),F(Error(`ERROR! Unable to load image (xhr.onerror): ${U.path}`))},M.open("GET",U.path),M.responseType="blob",M.send()})}))())}),$._relsMedia.filter((U)=>U.isSvgPng&&U.data).forEach((U)=>{(()=>W2(this,void 0,void 0,function*(){if(K&&!J)yield G();if(K&&J)U.data=j6,W.push(Promise.resolve("done"));else W.push(QJ(U))}))()}),W}function QJ($){return W2(this,void 0,void 0,function*(){return yield new Promise((q,Q)=>{let K=new Image;K.onload=()=>{if(K.width+K.height===0)K.onerror("h/w=0");let J=document.createElement("CANVAS"),Z=J.getContext("2d");J.width=K.width,J.height=K.height,Z.drawImage(K,0,0);try{$.data=J.toDataURL($.type),q("done")}catch(G){K.onerror(G.toString())}J=null},K.onerror=()=>{$.data=j6,Q(Error(`ERROR! Unable to load image (image.onerror): ${$.path}`))},K.src=typeof $.data==="string"?$.data:j6})})}var PB={cover:function($,q){let Q=$.h/$.w,J=q.h/q.w>Q,Z=J?q.h/Q:q.w,G=J?q.h:q.w*Q,W=Math.round(50000*(1-q.w/Z)),B=Math.round(50000*(1-q.h/G));return``},contain:function($,q){let Q=$.h/$.w,J=q.h/q.w>Q,Z=J?q.w:q.h/Q,G=J?q.w*Q:q.h,W=Math.round(50000*(1-q.w/Z)),B=Math.round(50000*(1-q.h/G));return``},crop:function($,q){let Q=q.x,K=$.w-(q.x+q.w),J=q.y,Z=$.h-(q.y+q.h),G=Math.round(1e5*(Q/$.w)),W=Math.round(1e5*(K/$.w)),B=Math.round(1e5*(J/$.h)),V=Math.round(1e5*(Z/$.h));return``}};function n7($){var q;let Q=$._name?'':"",K=1;if($._bkgdImgRid)Q+=``;else if((q=$.background)===null||q===void 0?void 0:q.color)Q+=`${B2($.background)}`;else if(!$.bkgd&&$._name&&$._name===h7)Q+='';if(Q+="",Q+='',Q+='',Q+='',$._slideObjects.forEach((J,Z)=>{var G,W,B,V,U,w,F,M;let k=0,f=0,L=H0("75%","X",$._presLayout),D=0,z,N="",H=null,v=null,j=0,n=0,d=null,_=null,X=(G=J.options)===null||G===void 0?void 0:G.sizing,P=(W=J.options)===null||W===void 0?void 0:W.rounding;if($._slideLayout!==void 0&&$._slideLayout._slideObjects!==void 0&&J.options&&J.options.placeholder)z=$._slideLayout._slideObjects.filter((h)=>h.options.placeholder===J.options.placeholder)[0];if(J.options=J.options||{},typeof J.options.x<"u")k=H0(J.options.x,"X",$._presLayout);if(typeof J.options.y<"u")f=H0(J.options.y,"Y",$._presLayout);if(typeof J.options.w<"u")L=H0(J.options.w,"X",$._presLayout);if(typeof J.options.h<"u")D=H0(J.options.h,"Y",$._presLayout);let g=L,c=D;if(z){if(z.options.x||z.options.x===0)k=H0(z.options.x,"X",$._presLayout);if(z.options.y||z.options.y===0)f=H0(z.options.y,"Y",$._presLayout);if(z.options.w||z.options.w===0)L=H0(z.options.w,"X",$._presLayout);if(z.options.h||z.options.h===0)D=H0(z.options.h,"Y",$._presLayout)}if(J.options.flipH)N+=' flipH="1"';if(J.options.flipV)N+=' flipV="1"';if(J.options.rotate)N+=` rot="${S1(J.options.rotate)}"`;switch(J._type){case D0.table:if(H=J.arrTabRows,v=J.options,j=0,n=0,H[0].forEach((h)=>{d=h.options||null,j+=(d===null||d===void 0?void 0:d.colspan)?Number(d.colspan):1}),_=``,_+=' ',_+=``,_+='',Array.isArray(v.colW)){_+="";for(let h=0;h`}_+=""}else{if(n=v.colW?v.colW:L0,J.options.w&&!v.colW)n=Math.round((typeof J.options.w==="number"?J.options.w:1)/j);_+="";for(let h=0;h`;_+=""}H.forEach((h)=>{var x,l;for(let $0=0;$01){let W0=Array(F0-1).fill(void 0).map(()=>{return{_type:D0.tablecell,options:{rowspan:p},_hmerge:!0}});h.splice($0+1,0,...W0),$0+=F0}else $0+=1}}),H.forEach((h,x)=>{let l=H[x+1];if(!l)return;h.forEach(($0,Z0)=>{var F0,p;let W0=$0._rowContinue||((F0=$0.options)===null||F0===void 0?void 0:F0.rowspan),y=(p=$0.options)===null||p===void 0?void 0:p.colspan,i=$0._hmerge;if(W0&&W0>1){let U0={_type:D0.tablecell,options:{colspan:y},_rowContinue:W0-1,_vmerge:!0,_hmerge:i};l.splice(Z0,0,U0)}})}),H.forEach((h,x)=>{let l=0;if(Array.isArray(v.rowH)&&v.rowH[x])l=v0(Number(v.rowH[x]));else if(v.rowH&&!isNaN(Number(v.rowH)))l=v0(Number(v.rowH));else if(J.options.cy||J.options.h)l=Math.round((J.options.h?v0(J.options.h):typeof J.options.cy==="number"?J.options.cy:1)/H.length);_+=``,h.forEach(($0)=>{var Z0,F0,p,W0,y;let i=$0,U0={rowSpan:((Z0=i.options)===null||Z0===void 0?void 0:Z0.rowspan)>1?i.options.rowspan:void 0,gridSpan:((F0=i.options)===null||F0===void 0?void 0:F0.colspan)>1?i.options.colspan:void 0,vMerge:i._vmerge?1:void 0,hMerge:i._hmerge?1:void 0},m=Object.keys(U0).map((K0)=>[K0,U0[K0]]).filter(([,K0])=>!!K0).map(([K0,R])=>`${String(K0)}="${String(R)}"`).join(" ");if(m)m=" "+m;if(i._hmerge||i._vmerge){_+=``;return}let V0=i.options||{};i.options=V0,["align","bold","border","color","fill","fontFace","fontSize","margin","textDirection","underline","valign"].forEach((K0)=>{if(v[K0]&&!V0[K0]&&V0[K0]!==0)V0[K0]=v[K0]});let w0=V0.valign?` anchor="${V0.valign.replace(/^c$/i,"ctr").replace(/^m$/i,"ctr").replace("center","ctr").replace("middle","ctr").replace("top","t").replace("btm","b").replace("bottom","b")}"`:"",S=V0.textDirection&&V0.textDirection!=="horz"?` vert="${V0.textDirection}"`:"",b=((W0=(p=i._optImp)===null||p===void 0?void 0:p.fill)===null||W0===void 0?void 0:W0.color)?i._optImp.fill.color:((y=i._optImp)===null||y===void 0?void 0:y.fill)&&typeof i._optImp.fill==="string"?i._optImp.fill:"";b=b||V0.fill?V0.fill:"";let O=b?B2(b):"",E=V0.margin===0||V0.margin?V0.margin:JJ;if(!Array.isArray(E)&&typeof E==="number")E=[E,E,E,E];let a="";if(E[0]>=1)a=` marL="${Y0(E[3])}" marR="${Y0(E[1])}" marT="${Y0(E[0])}" marB="${Y0(E[2])}"`;else a=` marL="${v0(E[3])}" marR="${v0(E[1])}" marT="${v0(E[0])}" marB="${v0(E[2])}"`;if(_+=`${KJ(i)}`,V0.border&&Array.isArray(V0.border))[{idx:3,name:"lnL"},{idx:1,name:"lnR"},{idx:0,name:"lnT"},{idx:2,name:"lnB"}].forEach((K0)=>{if(V0.border[K0.idx].type!=="none")_+=``,_+=`${R0(V0.border[K0.idx].color)}`,_+=``,_+=``;else _+=``});_+=O,_+=" ",_+=" "}),_+=""}),_+=" ",_+=" ",_+=" ",_+="",Q+=_,K++;break;case D0.text:case D0.placeholder:if(!J.options.line&&D===0)D=L0*0.3;if(!J.options._bodyProp)J.options._bodyProp={};if(J.options.margin&&Array.isArray(J.options.margin))J.options._bodyProp.lIns=Y0(J.options.margin[0]||0),J.options._bodyProp.rIns=Y0(J.options.margin[1]||0),J.options._bodyProp.bIns=Y0(J.options.margin[2]||0),J.options._bodyProp.tIns=Y0(J.options.margin[3]||0);else if(typeof J.options.margin==="number")J.options._bodyProp.lIns=Y0(J.options.margin),J.options._bodyProp.rIns=Y0(J.options.margin),J.options._bodyProp.bIns=Y0(J.options.margin),J.options._bodyProp.tIns=Y0(J.options.margin);if(Q+="",Q+=``,(B=J.options.hyperlink)===null||B===void 0?void 0:B.url)Q+=``;if((V=J.options.hyperlink)===null||V===void 0?void 0:V.slide)Q+=``;if(Q+="",Q+="':"/>"),Q+=`${J._type==="placeholder"?w5(J):w5(z)}`,Q+="",Q+=``,Q+=``,Q+=``,J.shape==="custGeom")Q+="",Q+="",Q+="",Q+="",Q+="",Q+="",Q+='',Q+="",Q+=``,(w=J.options.points)===null||w===void 0||w.forEach((h,x)=>{if("curve"in h)switch(h.curve.type){case"arc":Q+=``;break;case"cubic":Q+=` + + + + `;break;case"quadratic":Q+=` + + + `;break}else if("close"in h)Q+="";else if(h.moveTo||x===0)Q+=``;else Q+=``}),Q+="",Q+="",Q+="";else{if(Q+='',J.options.rectRadius)Q+=``;else if(J.options.angleRange){for(let h=0;h<2;h++){let x=J.options.angleRange[h];Q+=``}if(J.options.arcThicknessRatio)Q+=``}Q+=""}if(Q+=J.options.fill?B2(J.options.fill):"",J.options.line){if(Q+=J.options.line.width?``:"",J.options.line.color)Q+=B2(J.options.line);if(J.options.line.dashType)Q+=``;if(J.options.line.beginArrowType)Q+=``;if(J.options.line.endArrowType)Q+=``;Q+=""}if(J.options.shadow&&J.options.shadow.type!=="none")J.options.shadow.type=J.options.shadow.type||"outer",J.options.shadow.blur=Y0(J.options.shadow.blur||8),J.options.shadow.offset=Y0(J.options.shadow.offset||4),J.options.shadow.angle=Math.round((J.options.shadow.angle||270)*60000),J.options.shadow.opacity=Math.round((J.options.shadow.opacity||0.75)*1e5),J.options.shadow.color=J.options.shadow.color||eK.color,Q+="",Q+=` `,Q+=` `,Q+=` `,Q+=" ",Q+="";Q+="",Q+=KJ(J),Q+="";break;case D0.image:if(Q+="",Q+=" ",Q+=``,(F=J.hyperlink)===null||F===void 0?void 0:F.url)Q+=``;if((M=J.hyperlink)===null||M===void 0?void 0:M.slide)Q+=``;if(Q+=" ",Q+=' ',Q+=" "+w5(z)+"",Q+=" ",Q+="",($._relsMedia||[]).filter((h)=>h.rId===J.imageRid)[0]&&($._relsMedia||[]).filter((h)=>h.rId===J.imageRid)[0].extn==="svg")Q+=``,Q+=J.options.transparency?` `:"",Q+=" ",Q+=' ',Q+=` `,Q+=" ",Q+=" ",Q+="";else Q+=``,Q+=J.options.transparency?``:"",Q+="";if(X===null||X===void 0?void 0:X.type){let h=X.w?H0(X.w,"X",$._presLayout):L,x=X.h?H0(X.h,"Y",$._presLayout):D,l=H0(X.x||0,"X",$._presLayout),$0=H0(X.y||0,"Y",$._presLayout);Q+=PB[X.type]({w:g,h:c},{w:h,h:x,x:l,y:$0}),g=h,c=x}else Q+=" ";if(Q+="",Q+="",Q+=" ",Q+=` `,Q+=` `,Q+=" ",Q+=` `,J.options.shadow&&J.options.shadow.type!=="none")J.options.shadow.type=J.options.shadow.type||"outer",J.options.shadow.blur=Y0(J.options.shadow.blur||8),J.options.shadow.offset=Y0(J.options.shadow.offset||4),J.options.shadow.angle=Math.round((J.options.shadow.angle||270)*60000),J.options.shadow.opacity=Math.round((J.options.shadow.opacity||0.75)*1e5),J.options.shadow.color=J.options.shadow.color||eK.color,Q+="",Q+=``,Q+=``,Q+=``,Q+=``,Q+="";Q+="",Q+="";break;case D0.media:if(J.mtype==="online")Q+="",Q+=" ",Q+=``,Q+=" ",Q+=" ",Q+=` `,Q+=" ",Q+=" ",Q+=` `,Q+=" ",Q+=` `,Q+=' ',Q+=" ",Q+="";else Q+="",Q+=" ",Q+=``,Q+=' ',Q+=" ",Q+=` `,Q+=" ",Q+=' ',Q+=` `,Q+=" ",Q+=" ",Q+=" ",Q+=" ",Q+=` `,Q+=" ",Q+=` `,Q+=' ',Q+=" ",Q+="";break;case D0.chart:Q+="",Q+=" ",Q+=` `,Q+=" ",Q+=` ${w5(z)}`,Q+=" ",Q+=` `,Q+=' ',Q+=' ',Q+=` `,Q+=" ",Q+=" ",Q+="";break;default:Q+="";break}}),$._slideNumberProps){if(!$._slideNumberProps.align)$._slideNumberProps.align="left";if(Q+="",Q+=" ",Q+=' ',Q+=' ',Q+=" ",Q+=" ",Q+=` `,Q+="",Q+="`,$._slideNumberProps.color)Q+=B2($._slideNumberProps.color);if($._slideNumberProps.fontFace)Q+=``;Q+=""}if(Q+="",Q+="",$._slideNumberProps.align.startsWith("l"))Q+='';else if($._slideNumberProps.align.startsWith("c"))Q+='';else if($._slideNumberProps.align.startsWith("r"))Q+='';else Q+='';Q+=``,Q+=`${$._slideNum}`,Q+=""}return Q+="",Q+="",Q}function d7($,q){let Q=0,K=''+n0+'';return $._rels.forEach((J)=>{if(Q=Math.max(Q,J.rId),J.type.toLowerCase().includes("hyperlink"))if(J.data==="slide")K+=``;else K+=``;else if(J.type.toLowerCase().includes("notesSlide"))K+=``}),($._relsChart||[]).forEach((J)=>{Q=Math.max(Q,J.rId),K+=``}),($._relsMedia||[]).forEach((J)=>{let Z=J.rId.toString();if(Q=Math.max(Q,J.rId),J.type.toLowerCase().includes("image"))K+='';else if(J.type.toLowerCase().includes("audio"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+='';else if(J.type.toLowerCase().includes("video"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+='';else if(J.type.toLowerCase().includes("online"))if(K.includes(' Target="'+J.Target+'"'))K+='';else K+=''}),q.forEach((J,Z)=>{K+=``}),K+="",K}function qJ($,q){var Q,K;let J="",Z="",G="",W="",B=q?"a:lvl1pPr":"a:pPr",V=Y0(kB),U=`<${B}${$.options.rtlMode?' rtl="1" ':""}`;{if($.options.align)switch($.options.align){case"left":U+=' algn="l"';break;case"right":U+=' algn="r"';break;case"center":U+=' algn="ctr"';break;case"justify":U+=' algn="just"';break;default:U+="";break}if($.options.lineSpacing)Z=``;else if($.options.lineSpacingMultiple)Z=``;if($.options.indentLevel&&!isNaN(Number($.options.indentLevel))&&$.options.indentLevel>0)U+=` lvl="${$.options.indentLevel}"`;if($.options.paraSpaceBefore&&!isNaN(Number($.options.paraSpaceBefore))&&$.options.paraSpaceBefore>0)G+=``;if($.options.paraSpaceAfter&&!isNaN(Number($.options.paraSpaceAfter))&&$.options.paraSpaceAfter>0)G+=``;if(typeof $.options.bullet==="object"){if((K=(Q=$===null||$===void 0?void 0:$.options)===null||Q===void 0?void 0:Q.bullet)===null||K===void 0?void 0:K.indent)V=Y0($.options.bullet.indent);if($.options.bullet.type){if($.options.bullet.type.toString().toLowerCase()==="number")U+=` marL="${$.options.indentLevel&&$.options.indentLevel>0?V+V*$.options.indentLevel:V}" indent="-${V}"`,J=``}else if($.options.bullet.characterCode){let w=`&#x${$.options.bullet.characterCode};`;if(!/^[0-9A-Fa-f]{4}$/.test($.options.bullet.characterCode))console.warn("Warning: `bullet.characterCode should be a 4-digit unicode charatcer (ex: 22AB)`!"),w=C6.DEFAULT;U+=` marL="${$.options.indentLevel&&$.options.indentLevel>0?V+V*$.options.indentLevel:V}" indent="-${V}"`,J=''}else if($.options.bullet.code){let w=`&#x${$.options.bullet.code};`;if(!/^[0-9A-Fa-f]{4}$/.test($.options.bullet.code))console.warn("Warning: `bullet.code should be a 4-digit hex code (ex: 22AB)`!"),w=C6.DEFAULT;U+=` marL="${$.options.indentLevel&&$.options.indentLevel>0?V+V*$.options.indentLevel:V}" indent="-${V}"`,J=''}else U+=` marL="${$.options.indentLevel&&$.options.indentLevel>0?V+V*$.options.indentLevel:V}" indent="-${V}"`,J=``}else if($.options.bullet)U+=` marL="${$.options.indentLevel&&$.options.indentLevel>0?V+V*$.options.indentLevel:V}" indent="-${V}"`,J=``;else if(!$.options.bullet)U+=' indent="0" marL="0"',J="";if($.options.tabStops&&Array.isArray($.options.tabStops))W=`${$.options.tabStops.map((F)=>``).join("")}`;if(U+=">"+Z+G+J+W,q)U+=MJ($.options,!0);U+=""}return U}function MJ($,q){var Q;let K="",J=q?"a:defRPr":"a:rPr";if(K+="<"+J+' lang="'+($.lang?$.lang:"en-US")+'"'+($.lang?' altLang="en-US"':""),K+=$.fontSize?` sz="${Math.round($.fontSize*100)}"`:"",K+=($===null||$===void 0?void 0:$.bold)?` b="${$.bold?"1":"0"}"`:"",K+=($===null||$===void 0?void 0:$.italic)?` i="${$.italic?"1":"0"}"`:"",K+=($===null||$===void 0?void 0:$.strike)?` strike="${typeof $.strike==="string"?$.strike:"sngStrike"}"`:"",typeof $.underline==="object"&&((Q=$.underline)===null||Q===void 0?void 0:Q.style))K+=` u="${$.underline.style}"`;else if(typeof $.underline==="string")K+=` u="${String($.underline)}"`;else if($.hyperlink)K+=' u="sng"';if($.baseline)K+=` baseline="${Math.round($.baseline*50)}"`;else if($.subscript)K+=' baseline="-40000"';else if($.superscript)K+=' baseline="30000"';if(K+=$.charSpacing?` spc="${Math.round($.charSpacing*100)}" kern="0"`:"",K+=' dirty="0">',$.color||$.fontFace||$.outline||typeof $.underline==="object"&&$.underline.color){if($.outline&&typeof $.outline==="object")K+=`${B2($.outline.color||"FFFFFF")}`;if($.color)K+=B2({color:$.color,transparency:$.transparency});if($.highlight)K+=`${R0($.highlight)}`;if(typeof $.underline==="object"&&$.underline.color)K+=`${B2($.underline.color)}`;if($.glow)K+=`${fB($.glow,LB)}`;if($.fontFace)K+=``}if($.hyperlink){if(typeof $.hyperlink!=="object")throw Error("ERROR: text `hyperlink` option should be an object. Ex: `hyperlink:{url:'https://github.com'}` ");else if(!$.hyperlink.url&&!$.hyperlink.slide)throw Error("ERROR: 'hyperlink requires either `url` or `slide`'");else if($.hyperlink.url)K+=`":"/>"}`;else if($.hyperlink.slide)K+=`":"/>"}`;if($.color)K+=" ",K+=' ',K+=' ',K+=" ",K+=" ",K+=""}return K+=``,K}function TB($){return $.text?`${MJ($.options,!1)}${k0($.text)}`:""}function uB($){let q="";else if($.options.fit==="resize")q+=""}if($.options.shrinkText)q+="";q+=$.options._bodyProp.autoFit?"":"",q+=""}else q+=' wrap="square" rtlCol="0">',q+="";return $._type===D0.tablecell?"":q}function KJ($){let q=$.options||{},Q=[],K=[];if(q&&$._type!==D0.tablecell&&(typeof $.text>"u"||$.text===null))return"";let J=$._type===D0.tablecell?"":"";if(J+=uB($),q.h===0&&q.line&&q.align)J+='';else if($._type==="placeholder")J+=`${qJ($,!0)}`;else J+="";if(typeof $.text==="string"||typeof $.text==="number")Q.push({text:$.text.toString(),options:q||{}});else if($.text&&!Array.isArray($.text)&&typeof $.text==="object"&&Object.keys($.text).includes("text"))Q.push({text:$.text||"",options:$.options||{}});else if(Array.isArray($.text))Q=$.text.map((W)=>({text:W.text,options:W.options}));Q.forEach((W,B)=>{if(!W.text)W.text="";if(W.options=W.options||q||{},B===0&&W.options&&!W.options.bullet&&q.bullet)W.options.bullet=q.bullet;if(typeof W.text==="string"||typeof W.text==="number")W.text=W.text.toString().replace(/\r*\n/g,n0);if(W.text.includes(n0)&&W.text.match(/\n$/g)===null)W.text.split(n0).forEach((V)=>{W.options.breakLine=!0,K.push({text:V,options:W.options})});else K.push(W)});let Z=[],G=[];if(K.forEach((W,B)=>{if(G.length>0&&(W.options.align||q.align)){if(W.options.align!==K[B-1].options.align)Z.push(G),G=[]}else if(G.length>0&&W.options.bullet&&G.length>0)Z.push(G),G=[],W.options.breakLine=!1;if(G.push(W),G.length>0&&W.options.breakLine){if(B+1{var B;let V=!1;J+="";let U=`{if(w.options._lineIdx=F,F>0&&w.options.softBreakBefore)J+="";if(w.options.align=w.options.align||q.align,w.options.lineSpacing=w.options.lineSpacing||q.lineSpacing,w.options.lineSpacingMultiple=w.options.lineSpacingMultiple||q.lineSpacingMultiple,w.options.indentLevel=w.options.indentLevel||q.indentLevel,w.options.paraSpaceBefore=w.options.paraSpaceBefore||q.paraSpaceBefore,w.options.paraSpaceAfter=w.options.paraSpaceAfter||q.paraSpaceAfter,U=qJ(w,!1),J+=U.replace("",""),Object.entries(q).filter(([M])=>!(w.options.hyperlink&&M==="color")).forEach(([M,k])=>{if(M!=="bullet"&&!w.options[M])w.options[M]=k}),J+=TB(w),!w.text&&q.fontSize||w.options.fontSize)V=!0,q.fontSize=q.fontSize||w.options.fontSize}),$._type===D0.tablecell&&(q.fontSize||q.fontFace))if(q.fontFace)J+=`',J+=``,J+=``,J+=``,J+="";else J+=`';else if(V)J+=`';else J+=``;J+=""}),J.indexOf("")===-1)J+="";return J+=$._type===D0.tablecell?"":"",J}function w5($){var q,Q;if(!$)return"";let K=((q=$.options)===null||q===void 0?void 0:q._placeholderIdx)?$.options._placeholderIdx:"",J=((Q=$.options)===null||Q===void 0?void 0:Q._placeholderType)?$.options._placeholderType:"",Z=J&&F8[J]?F8[J].toString():"";return`0?' hasCustomPrompt="1"':""} - />`}function Dz(Q,$,q){let K=''+r0;return K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',Q.forEach((J)=>{(J._relsMedia||[]).forEach((Z)=>{if(Z.type!=="image"&&Z.type!=="online"&&Z.type!=="chart"&&Z.extn!=="m4v"&&!K.includes(Z.type))K+=''})}),K+='',K+='',K+='',K+='',Q.forEach((J,Z)=>{K+=``,K+=``,J._relsChart.forEach((G)=>{K+=``})}),K+='',K+='',K+='',K+='',$.forEach((J,Z)=>{K+=``,(J._relsChart||[]).forEach((G)=>{K+=' '})}),Q.forEach((J,Z)=>{K+=``}),q._relsChart.forEach((J)=>{K+=' '}),q._relsMedia.forEach((J)=>{if(J.type!=="image"&&J.type!=="online"&&J.type!=="chart"&&J.extn!=="m4v"&&!K.includes(J.type))K+=' '}),K+=' ',K+=' ',K+="",K}function Hz(){return`${r0} + ${Z&&F8[Z]?` type="${Z}"`:""} + ${$.text&&$.text.length>0?' hasCustomPrompt="1"':""} + />`}function SB($,q,Q){let K=''+n0;return K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',K+='',$.forEach((J)=>{(J._relsMedia||[]).forEach((Z)=>{if(Z.type!=="image"&&Z.type!=="online"&&Z.type!=="chart"&&Z.extn!=="m4v"&&!K.includes(Z.type))K+=''})}),K+='',K+='',K+='',K+='',$.forEach((J,Z)=>{K+=``,K+=``,J._relsChart.forEach((G)=>{K+=``})}),K+='',K+='',K+='',K+='',q.forEach((J,Z)=>{K+=``,(J._relsChart||[]).forEach((G)=>{K+=' '})}),$.forEach((J,Z)=>{K+=``}),Q._relsChart.forEach((J)=>{K+=' '}),Q._relsMedia.forEach((J)=>{if(J.type!=="image"&&J.type!=="online"&&J.type!=="chart"&&J.extn!=="m4v"&&!K.includes(J.type))K+=' '}),K+=' ',K+=' ',K+="",K}function EB(){return`${n0} - `}function kz(Q,$){return`${r0} + `}function _B($,q){return`${n0} 0 0 Microsoft Office PowerPoint On-screen Show (16:9) 0 - ${Q.length} - ${Q.length} + ${$.length} + ${$.length} 0 0 false @@ -88,38 +87,38 @@ ${String(N)}`)}if(K&&Z&&V.path.startsWith("http"))return yield new Promise((N,F) Theme 1 Slide Titles - ${Q.length} + ${$.length} - + Arial Calibri Office Theme - ${Q.map((q,K)=>`Slide ${K+1}`).join("")} + ${$.map((Q,K)=>`Slide ${K+1}`).join("")} - ${$} + ${q} false false false 16.0000 - `}function vz(Q,$,q,K){return` + `}function cB($,q,Q,K){return` - ${L0(Q)} - ${L0($)} - ${L0(q)} - ${L0(q)} + ${k0($)} + ${k0(q)} + ${k0(Q)} + ${k0(Q)} ${K} ${new Date().toISOString().replace(/\.\d\d\dZ/,"Z")} ${new Date().toISOString().replace(/\.\d\d\dZ/,"Z")} - `}function Iz(Q){let $=1,q=''+r0;q+='',q+='';for(let K=1;K<=Q.length;K++)q+=``;return $++,q+=``,q}function Rz(Q){return`${r0}${k9(Q)}`}function Cz(Q){let $="";return Q._slideObjects.forEach((q)=>{if(q._type===D0.notes)$+=(q===null||q===void 0?void 0:q.text)&&q.text[0]?q.text[0].text:""}),$.replace(/\r*\n/g,r0)}function jz(){return`${r0}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`}function fz(Q){return`${r0}${L0(Cz(Q))}${Q._slideNum}`}function Az(Q){return` + `}function bB($){let q=1,Q=''+n0;Q+='',Q+='';for(let K=1;K<=$.length;K++)Q+=``;return q++,Q+=``,Q}function nB($){return`${n0}${n7($)}`}function dB($){let q="";return $._slideObjects.forEach((Q)=>{if(Q._type===D0.notes)q+=(Q===null||Q===void 0?void 0:Q.text)&&Q.text[0]?Q.text[0].text:""}),q.replace(/\r*\n/g,n0)}function mB(){return`${n0}7/23/19Click to edit Master text stylesSecond levelThird levelFourth levelFifth level‹#›`}function pB($){return`${n0}${k0(dB($))}${$._slideNum}`}function iB($){return` - ${k9(Q)} - `}function gz(Q,$){let q=$.map((J,Z)=>``),K=''+r0;return K+='',K+=k9(Q),K+='',K+=""+q.join("")+"",K+='',K+=' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' ',K+="",K}function Xz(Q,$){return v9($[Q-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])}function yz(Q,$,q){return v9(Q[q-1],[{target:`../slideLayouts/slideLayout${Pz(Q,$,q)}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},{target:`../notesSlides/notesSlide${q}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"}])}function hz(Q){return` + ${n7($)} + `}function oB($,q){let Q=q.map((J,Z)=>``),K=''+n0;return K+='',K+=n7($),K+='',K+=""+Q.join("")+"",K+='',K+=' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' ',K+="",K}function aB($,q){return d7(q[$-1],[{target:"../slideMasters/slideMaster1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"}])}function lB($,q,Q){return d7($[Q-1],[{target:`../slideLayouts/slideLayout${eB($,q,Q)}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},{target:`../notesSlides/notesSlide${Q}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"}])}function rB($){return` - - `}function xz(Q,$){let q=$.map((K,J)=>({target:`../slideLayouts/slideLayout${J+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"}));return q.push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"}),v9(Q,q)}function Oz(){return`${r0} + + `}function sB($,q){let Q=q.map((K,J)=>({target:`../slideLayouts/slideLayout${J+1}.xml`,type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"}));return Q.push({target:"../theme/theme1.xml",type:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"}),d7($,Q)}function tB(){return`${n0} - `}function Pz(Q,$,q){for(let K=0;K<$.length;K++)if($[K]._name===Q[q-1]._slideLayout._name)return K+1;return 1}function Tz(Q){var $,q,K,J;let Z=(($=Q.theme)===null||$===void 0?void 0:$.headFontFace)?``:'',G=((K=Q.theme)===null||K===void 0?void 0:K.bodyFontFace)?``:'';return`${Z}${G}`}function Ez(Q){let $=`${r0}`;$+='',$+="",Q.slides.forEach((q)=>$+=``),$+="",$+=``,$+=``,$+=``,$+="";for(let q=1;q<10;q++)$+=``;if($+="",Q.sections&&Q.sections.length>0)$+='',$+='',Q.sections.forEach((q)=>{$+=``,q._slides.forEach((K)=>$+=``),$+=""}),$+="",$+='',$+="";return $+="",$}function Sz(){return`${r0}`}function uz(){return`${r0}`}function _z(){return`${r0}`}var cz="4.0.1";class I9{set layout(Q){let $=this.LAYOUTS[Q];if($)this._layout=Q,this._presLayout=$;else throw new Error("UNKNOWN-LAYOUT")}get layout(){return this._layout}get version(){return this._version}set author(Q){this._author=Q}get author(){return this._author}set company(Q){this._company=Q}get company(){return this._company}set revision(Q){this._revision=Q}get revision(){return this._revision}set subject(Q){this._subject=Q}get subject(){return this._subject}set theme(Q){this._theme=Q}get theme(){return this._theme}set title(Q){this._title=Q}get title(){return this._title}set rtlMode(Q){this._rtlMode=Q}get rtlMode(){return this._rtlMode}get masterSlide(){return this._masterSlide}get slides(){return this._slides}get sections(){return this._sections}get slideLayouts(){return this._slideLayouts}get AlignH(){return this._alignH}get AlignV(){return this._alignV}get ChartType(){return this._chartType}get OutputType(){return this._outputType}get presLayout(){return this._presLayout}get SchemeColor(){return this._schemeColor}get ShapeType(){return this._shapeType}get charts(){return this._charts}get colors(){return this._colors}get shapes(){return this._shapes}constructor(){this._version=cz,this._alignH=w9,this._alignV=N9,this._chartType=F9,this._outputType=z9,this._schemeColor=D1,this._shapeType=M9,this._charts=F0,this._colors=p5,this._shapes=j2,this.addNewSlide=(J)=>{let Z=this.sections.length>0&&this.sections[this.sections.length-1]._slides.filter((G)=>G._slideNum===this.slides[this.slides.length-1]._slideNum).length>0;return J.sectionTitle=Z?this.sections[this.sections.length-1].title:null,this.addSlide(J)},this.getSlide=(J)=>this.slides.filter((Z)=>Z._slideNum===J)[0],this.setSlideNumber=(J)=>{this.masterSlide._slideNumberProps=J,this.slideLayouts.filter((Z)=>Z._name===B9)[0]._slideNumberProps=J},this.createChartMediaRels=(J,Z,G)=>{J._relsChart.forEach((B)=>G.push(Fz(B,Z))),J._relsMedia.forEach((B)=>{if(B.type!=="online"&&B.type!=="hyperlink"){let W=B.data&&typeof B.data==="string"?B.data:"";if(!W.includes(",")&&!W.includes(";"))W="image/png;base64,"+W;else if(!W.includes(","))W="image/png;base64,"+W;else if(!W.includes(";"))W="image/png;"+W;Z.file(B.Target.replace("..","ppt"),W.split(",").pop(),{base64:!0})}})},this.writeFileToBrowser=(J,Z)=>H1(this,void 0,void 0,function*(){let G=document.createElement("a");if(G.setAttribute("style","display:none;"),G.dataset.interception="off",document.body.appendChild(G),window.URL.createObjectURL){let B=window.URL.createObjectURL(new Blob([Z],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));return G.href=B,G.download=J,G.click(),setTimeout(()=>{window.URL.revokeObjectURL(B),document.body.removeChild(G)},100),yield Promise.resolve(J)}}),this.exportPresentation=(J)=>H1(this,void 0,void 0,function*(){let Z=[],G=[],B=new L9.default;return this.slides.forEach((W)=>{G=G.concat(G9(W))}),this.slideLayouts.forEach((W)=>{G=G.concat(G9(W))}),G=G.concat(G9(this.masterSlide)),yield Promise.all(G).then(()=>H1(this,void 0,void 0,function*(){return this.slides.forEach((W)=>{if(W._slideLayout)zz(W)}),B.folder("_rels"),B.folder("docProps"),B.folder("ppt").folder("_rels"),B.folder("ppt/charts").folder("_rels"),B.folder("ppt/embeddings"),B.folder("ppt/media"),B.folder("ppt/slideLayouts").folder("_rels"),B.folder("ppt/slideMasters").folder("_rels"),B.folder("ppt/slides").folder("_rels"),B.folder("ppt/theme"),B.folder("ppt/notesMasters").folder("_rels"),B.folder("ppt/notesSlides").folder("_rels"),B.file("[Content_Types].xml",Dz(this.slides,this.slideLayouts,this.masterSlide)),B.file("_rels/.rels",Hz()),B.file("docProps/app.xml",kz(this.slides,this.company)),B.file("docProps/core.xml",vz(this.title,this.subject,this.author,this.revision)),B.file("ppt/_rels/presentation.xml.rels",Iz(this.slides)),B.file("ppt/theme/theme1.xml",Tz(this)),B.file("ppt/presentation.xml",Ez(this)),B.file("ppt/presProps.xml",Sz()),B.file("ppt/tableStyles.xml",uz()),B.file("ppt/viewProps.xml",_z()),this.slideLayouts.forEach((W,U)=>{B.file(`ppt/slideLayouts/slideLayout${U+1}.xml`,Az(W)),B.file(`ppt/slideLayouts/_rels/slideLayout${U+1}.xml.rels`,Xz(U+1,this.slideLayouts))}),this.slides.forEach((W,U)=>{B.file(`ppt/slides/slide${U+1}.xml`,Rz(W)),B.file(`ppt/slides/_rels/slide${U+1}.xml.rels`,yz(this.slides,this.slideLayouts,U+1)),B.file(`ppt/notesSlides/notesSlide${U+1}.xml`,fz(W)),B.file(`ppt/notesSlides/_rels/notesSlide${U+1}.xml.rels`,hz(U+1))}),B.file("ppt/slideMasters/slideMaster1.xml",gz(this.masterSlide,this.slideLayouts)),B.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",xz(this.masterSlide,this.slideLayouts)),B.file("ppt/notesMasters/notesMaster1.xml",jz()),B.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",Oz()),this.slideLayouts.forEach((W)=>{this.createChartMediaRels(W,B,Z)}),this.slides.forEach((W)=>{this.createChartMediaRels(W,B,Z)}),this.createChartMediaRels(this.masterSlide,B,Z),yield Promise.all(Z).then(()=>H1(this,void 0,void 0,function*(){if(J.outputType==="STREAM")return yield B.generateAsync({type:"nodebuffer",compression:J.compression?"DEFLATE":"STORE"});else if(J.outputType)return yield B.generateAsync({type:J.outputType});else return yield B.generateAsync({type:"blob",compression:J.compression?"DEFLATE":"STORE"})}))}))});let Q={name:"screen4x3",width:9144000,height:6858000},$={name:"screen16x9",width:9144000,height:5143500},q={name:"screen16x10",width:9144000,height:5715000},K={name:"custom",width:12192000,height:6858000};this.LAYOUTS={LAYOUT_4x3:Q,LAYOUT_16x9:$,LAYOUT_16x10:q,LAYOUT_WIDE:K},this._author="PptxGenJS",this._company="PptxGenJS",this._revision="1",this._subject="PptxGenJS Presentation",this._title="PptxGenJS Presentation",this._presLayout={name:this.LAYOUTS[E6].name,_sizeW:this.LAYOUTS[E6].width,_sizeH:this.LAYOUTS[E6].height,width:this.LAYOUTS[E6].width,height:this.LAYOUTS[E6].height},this._rtlMode=!1,this._slideLayouts=[{_margin:P8,_name:B9,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1000,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream(Q){return H1(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:Q===null||Q===void 0?void 0:Q.compression,outputType:"STREAM"})})}write(Q){return H1(this,void 0,void 0,function*(){let $=typeof Q==="object"&&(Q===null||Q===void 0?void 0:Q.outputType)?Q.outputType:Q?Q:null,q=typeof Q==="object"&&(Q===null||Q===void 0?void 0:Q.compression)?Q.compression:!1;return yield this.exportPresentation({compression:q,outputType:$})})}writeFile(Q){return H1(this,void 0,void 0,function*(){var $,q;let K=typeof process!=="undefined"&&!!(($=process.versions)===null||$===void 0?void 0:$.node)&&((q=process.release)===null||q===void 0?void 0:q.name)==="node";if(typeof Q==="string")console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead."),Q={fileName:Q};let{fileName:J="Presentation.pptx",compression:Z=!1}=Q,G=J.toLowerCase().endsWith(".pptx")?J:`${J}.pptx`,B=K?"nodebuffer":null,W=yield this.exportPresentation({compression:Z,outputType:B});if(K){let{promises:U}=yield import("node:fs"),{writeFile:V}=U;return yield V(G,W),G}return yield this.writeFileToBrowser(G,W),G})}addSection(Q){if(!Q)console.warn("addSection requires an argument");else if(!Q.title)console.warn("addSection requires a title");let $={_type:"user",_slides:[],title:Q.title};if(Q.order)this.sections.splice(Q.order,0,$);else this._sections.push($)}addSlide(Q){let $=typeof Q==="string"?Q:(Q===null||Q===void 0?void 0:Q.masterName)?Q.masterName:"",q={_name:this.LAYOUTS[E6].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};if($){let J=this.slideLayouts.filter((Z)=>Z._name===$)[0];if(J)q=J}let K=new xJ({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:q});if(this._slides.push(K),Q===null||Q===void 0?void 0:Q.sectionTitle){let J=this.sections.filter((Z)=>Z.title===Q.sectionTitle)[0];if(!J)console.warn(`addSlide: unable to find section with title: "${Q.sectionTitle}"`);else J._slides.push(K)}else if(this.sections&&this.sections.length>0&&!(Q===null||Q===void 0?void 0:Q.sectionTitle)){let J=this._sections[this.sections.length-1];if(J._type==="default")J._slides.push(K);else this._sections.push({title:`Default-${this.sections.filter((Z)=>Z._type==="default").length+1}`,_type:"default",_slides:[K]})}return K}defineLayout(Q){if(!Q)console.warn("defineLayout requires `{name, width, height}`");else if(!Q.name)console.warn("defineLayout requires `name`");else if(!Q.width)console.warn("defineLayout requires `width`");else if(!Q.height)console.warn("defineLayout requires `height`");else if(typeof Q.height!=="number")console.warn("defineLayout `height` should be a number (inches)");else if(typeof Q.width!=="number")console.warn("defineLayout `width` should be a number (inches)");this.LAYOUTS[Q.name]={name:Q.name,_sizeW:Math.round(Number(Q.width)*H0),_sizeH:Math.round(Number(Q.height)*H0),width:Math.round(Number(Q.width)*H0),height:Math.round(Number(Q.height)*H0)}}defineSlideMaster(Q){let $=JSON.parse(JSON.stringify(Q));if(!$.title)throw new Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");let q={_margin:$.margin||P8,_name:$.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1000+this.slideLayouts.length+1,_slideNumberProps:$.slideNumber||null,_slideObjects:[],background:$.background||null,bkgd:$.bkgd||null};if(Zz($,q),this.slideLayouts.push(q),$.background||$.bkgd)hJ($.background,q);if(q._slideNumberProps&&!this.masterSlide._slideNumberProps)this.masterSlide._slideNumberProps=q._slideNumberProps}tableToSlides(Q,$={}){Uz(this,Q,$,($===null||$===void 0?void 0:$.masterSlideName)?this.slideLayouts.filter((q)=>q._name===$.masterSlideName)[0]:null)}}if(typeof globalThis.Buffer==="undefined")globalThis.Buffer=J0;if(typeof globalThis.process==="undefined")globalThis.process=bz;globalThis.__bundles=globalThis.__bundles||{};globalThis.__bundles.pptxgenjs=I9;})(); + `}function eB($,q,Q){for(let K=0;K`:'',G=((K=$.theme)===null||K===void 0?void 0:K.bodyFontFace)?``:'';return`${Z}${G}`}function Qz($){let q=`${n0}`;q+='',q+="",$.slides.forEach((Q)=>q+=``),q+="",q+=``,q+=``,q+=``,q+="";for(let Q=1;Q<10;Q++)q+=``;if(q+="",$.sections&&$.sections.length>0)q+='',q+='',$.sections.forEach((Q)=>{q+=``,Q._slides.forEach((K)=>q+=``),q+=""}),q+="",q+='',q+="";return q+="",q}function qz(){return`${n0}`}function Kz(){return`${n0}`}function Jz(){return`${n0}`}var Vz="4.0.1";class m7{set layout($){let q=this.LAYOUTS[$];if(q)this._layout=$,this._presLayout=q;else throw Error("UNKNOWN-LAYOUT")}get layout(){return this._layout}get version(){return this._version}set author($){this._author=$}get author(){return this._author}set company($){this._company=$}get company(){return this._company}set revision($){this._revision=$}get revision(){return this._revision}set subject($){this._subject=$}get subject(){return this._subject}set theme($){this._theme=$}get theme(){return this._theme}set title($){this._title=$}get title(){return this._title}set rtlMode($){this._rtlMode=$}get rtlMode(){return this._rtlMode}get masterSlide(){return this._masterSlide}get slides(){return this._slides}get sections(){return this._sections}get slideLayouts(){return this._slideLayouts}get AlignH(){return this._alignH}get AlignV(){return this._alignV}get ChartType(){return this._chartType}get OutputType(){return this._outputType}get presLayout(){return this._presLayout}get SchemeColor(){return this._schemeColor}get ShapeType(){return this._shapeType}get charts(){return this._charts}get colors(){return this._colors}get shapes(){return this._shapes}constructor(){this._version=Vz,this._alignH=u7,this._alignV=S7,this._chartType=P7,this._outputType=O7,this._schemeColor=G2,this._shapeType=T7,this._charts=q0,this._colors=D5,this._shapes=B1,this.addNewSlide=(J)=>{let Z=this.sections.length>0&&this.sections[this.sections.length-1]._slides.filter((G)=>G._slideNum===this.slides[this.slides.length-1]._slideNum).length>0;return J.sectionTitle=Z?this.sections[this.sections.length-1].title:null,this.addSlide(J)},this.getSlide=(J)=>this.slides.filter((Z)=>Z._slideNum===J)[0],this.setSlideNumber=(J)=>{this.masterSlide._slideNumberProps=J,this.slideLayouts.filter((Z)=>Z._name===h7)[0]._slideNumberProps=J},this.createChartMediaRels=(J,Z,G)=>{J._relsChart.forEach((W)=>G.push(hB(W,Z))),J._relsMedia.forEach((W)=>{if(W.type!=="online"&&W.type!=="hyperlink"){let B=W.data&&typeof W.data==="string"?W.data:"";if(!B.includes(",")&&!B.includes(";"))B="image/png;base64,"+B;else if(!B.includes(","))B="image/png;base64,"+B;else if(!B.includes(";"))B="image/png;"+B;Z.file(W.Target.replace("..","ppt"),B.split(",").pop(),{base64:!0})}})},this.writeFileToBrowser=(J,Z)=>W2(this,void 0,void 0,function*(){let G=document.createElement("a");if(G.setAttribute("style","display:none;"),G.dataset.interception="off",document.body.appendChild(G),window.URL.createObjectURL){let W=window.URL.createObjectURL(new Blob([Z],{type:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}));return G.href=W,G.download=J,G.click(),setTimeout(()=>{window.URL.revokeObjectURL(W),document.body.removeChild(G)},100),yield Promise.resolve(J)}}),this.exportPresentation=(J)=>W2(this,void 0,void 0,function*(){let Z=[],G=[],W=new _7.default;return this.slides.forEach((B)=>{G=G.concat(y7(B))}),this.slideLayouts.forEach((B)=>{G=G.concat(y7(B))}),G=G.concat(y7(this.masterSlide)),yield Promise.all(G).then(()=>W2(this,void 0,void 0,function*(){return this.slides.forEach((B)=>{if(B._slideLayout)yB(B)}),W.folder("_rels"),W.folder("docProps"),W.folder("ppt").folder("_rels"),W.folder("ppt/charts").folder("_rels"),W.folder("ppt/embeddings"),W.folder("ppt/media"),W.folder("ppt/slideLayouts").folder("_rels"),W.folder("ppt/slideMasters").folder("_rels"),W.folder("ppt/slides").folder("_rels"),W.folder("ppt/theme"),W.folder("ppt/notesMasters").folder("_rels"),W.folder("ppt/notesSlides").folder("_rels"),W.file("[Content_Types].xml",SB(this.slides,this.slideLayouts,this.masterSlide)),W.file("_rels/.rels",EB()),W.file("docProps/app.xml",_B(this.slides,this.company)),W.file("docProps/core.xml",cB(this.title,this.subject,this.author,this.revision)),W.file("ppt/_rels/presentation.xml.rels",bB(this.slides)),W.file("ppt/theme/theme1.xml",$z(this)),W.file("ppt/presentation.xml",Qz(this)),W.file("ppt/presProps.xml",qz()),W.file("ppt/tableStyles.xml",Kz()),W.file("ppt/viewProps.xml",Jz()),this.slideLayouts.forEach((B,V)=>{W.file(`ppt/slideLayouts/slideLayout${V+1}.xml`,iB(B)),W.file(`ppt/slideLayouts/_rels/slideLayout${V+1}.xml.rels`,aB(V+1,this.slideLayouts))}),this.slides.forEach((B,V)=>{W.file(`ppt/slides/slide${V+1}.xml`,nB(B)),W.file(`ppt/slides/_rels/slide${V+1}.xml.rels`,lB(this.slides,this.slideLayouts,V+1)),W.file(`ppt/notesSlides/notesSlide${V+1}.xml`,pB(B)),W.file(`ppt/notesSlides/_rels/notesSlide${V+1}.xml.rels`,rB(V+1))}),W.file("ppt/slideMasters/slideMaster1.xml",oB(this.masterSlide,this.slideLayouts)),W.file("ppt/slideMasters/_rels/slideMaster1.xml.rels",sB(this.masterSlide,this.slideLayouts)),W.file("ppt/notesMasters/notesMaster1.xml",mB()),W.file("ppt/notesMasters/_rels/notesMaster1.xml.rels",tB()),this.slideLayouts.forEach((B)=>{this.createChartMediaRels(B,W,Z)}),this.slides.forEach((B)=>{this.createChartMediaRels(B,W,Z)}),this.createChartMediaRels(this.masterSlide,W,Z),yield Promise.all(Z).then(()=>W2(this,void 0,void 0,function*(){if(J.outputType==="STREAM")return yield W.generateAsync({type:"nodebuffer",compression:J.compression?"DEFLATE":"STORE"});else if(J.outputType)return yield W.generateAsync({type:J.outputType});else return yield W.generateAsync({type:"blob",compression:J.compression?"DEFLATE":"STORE"})}))}))});let $={name:"screen4x3",width:9144000,height:6858000},q={name:"screen16x9",width:9144000,height:5143500},Q={name:"screen16x10",width:9144000,height:5715000},K={name:"custom",width:12192000,height:6858000};this.LAYOUTS={LAYOUT_4x3:$,LAYOUT_16x9:q,LAYOUT_16x10:Q,LAYOUT_WIDE:K},this._author="PptxGenJS",this._company="PptxGenJS",this._revision="1",this._subject="PptxGenJS Presentation",this._title="PptxGenJS Presentation",this._presLayout={name:this.LAYOUTS[f6].name,_sizeW:this.LAYOUTS[f6].width,_sizeH:this.LAYOUTS[f6].height,width:this.LAYOUTS[f6].width,height:this.LAYOUTS[f6].height},this._rtlMode=!1,this._slideLayouts=[{_margin:M8,_name:h7,_presLayout:this._presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1000,_slideNumberProps:null,_slideObjects:[]}],this._slides=[],this._sections=[],this._masterSlide={addChart:null,addImage:null,addMedia:null,addNotes:null,addShape:null,addTable:null,addText:null,_name:null,_presLayout:this._presLayout,_rId:null,_rels:[],_relsChart:[],_relsMedia:[],_slideId:null,_slideLayout:null,_slideNum:null,_slideNumberProps:null,_slideObjects:[]}}stream($){return W2(this,void 0,void 0,function*(){return yield this.exportPresentation({compression:$===null||$===void 0?void 0:$.compression,outputType:"STREAM"})})}write($){return W2(this,void 0,void 0,function*(){let q=typeof $==="object"&&($===null||$===void 0?void 0:$.outputType)?$.outputType:$?$:null,Q=typeof $==="object"&&($===null||$===void 0?void 0:$.compression)?$.compression:!1;return yield this.exportPresentation({compression:Q,outputType:q})})}writeFile($){return W2(this,void 0,void 0,function*(){var q,Q;let K=typeof process<"u"&&!!((q=process.versions)===null||q===void 0?void 0:q.node)&&((Q=process.release)===null||Q===void 0?void 0:Q.name)==="node";if(typeof $==="string")console.warn("[WARNING] writeFile(string) is deprecated - pass { fileName } instead."),$={fileName:$};let{fileName:J="Presentation.pptx",compression:Z=!1}=$,G=J.toLowerCase().endsWith(".pptx")?J:`${J}.pptx`,W=K?"nodebuffer":null,B=yield this.exportPresentation({compression:Z,outputType:W});if(K){let{promises:V}=yield import("node:fs"),{writeFile:U}=V;return yield U(G,B),G}return yield this.writeFileToBrowser(G,B),G})}addSection($){if(!$)console.warn("addSection requires an argument");else if(!$.title)console.warn("addSection requires a title");let q={_type:"user",_slides:[],title:$.title};if($.order)this.sections.splice($.order,0,q);else this._sections.push(q)}addSlide($){let q=typeof $==="string"?$:($===null||$===void 0?void 0:$.masterName)?$.masterName:"",Q={_name:this.LAYOUTS[f6].name,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slideNum:this.slides.length+1};if(q){let J=this.slideLayouts.filter((Z)=>Z._name===q)[0];if(J)Q=J}let K=new FJ({addSlide:this.addNewSlide,getSlide:this.getSlide,presLayout:this.presLayout,setSlideNum:this.setSlideNumber,slideId:this.slides.length+256,slideRId:this.slides.length+2,slideNumber:this.slides.length+1,slideLayout:Q});if(this._slides.push(K),$===null||$===void 0?void 0:$.sectionTitle){let J=this.sections.filter((Z)=>Z.title===$.sectionTitle)[0];if(!J)console.warn(`addSlide: unable to find section with title: "${$.sectionTitle}"`);else J._slides.push(K)}else if(this.sections&&this.sections.length>0&&!($===null||$===void 0?void 0:$.sectionTitle)){let J=this._sections[this.sections.length-1];if(J._type==="default")J._slides.push(K);else this._sections.push({title:`Default-${this.sections.filter((Z)=>Z._type==="default").length+1}`,_type:"default",_slides:[K]})}return K}defineLayout($){if(!$)console.warn("defineLayout requires `{name, width, height}`");else if(!$.name)console.warn("defineLayout requires `name`");else if(!$.width)console.warn("defineLayout requires `width`");else if(!$.height)console.warn("defineLayout requires `height`");else if(typeof $.height!=="number")console.warn("defineLayout `height` should be a number (inches)");else if(typeof $.width!=="number")console.warn("defineLayout `width` should be a number (inches)");this.LAYOUTS[$.name]={name:$.name,_sizeW:Math.round(Number($.width)*L0),_sizeH:Math.round(Number($.height)*L0),width:Math.round(Number($.width)*L0),height:Math.round(Number($.height)*L0)}}defineSlideMaster($){let q=JSON.parse(JSON.stringify($));if(!q.title)throw Error("defineSlideMaster() object argument requires a `title` value. (https://gitbrent.github.io/PptxGenJS/docs/masters.html)");let Q={_margin:q.margin||M8,_name:q.title,_presLayout:this.presLayout,_rels:[],_relsChart:[],_relsMedia:[],_slide:null,_slideNum:1000+this.slideLayouts.length+1,_slideNumberProps:q.slideNumber||null,_slideObjects:[],background:q.background||null,bkgd:q.bkgd||null};if(jB(q,Q),this.slideLayouts.push(Q),q.background||q.bkgd)zJ(q.background,Q);if(Q._slideNumberProps&&!this.masterSlide._slideNumberProps)this.masterSlide._slideNumberProps=Q._slideNumberProps}tableToSlides($,q={}){IB(this,$,q,(q===null||q===void 0?void 0:q.masterSlideName)?this.slideLayouts.filter((Q)=>Q._name===q.masterSlideName)[0]:null)}}if(typeof globalThis.Buffer>"u")globalThis.Buffer=o;if(typeof globalThis.process>"u")globalThis.process=Uz;globalThis.__bundles=globalThis.__bundles||{};globalThis.__bundles.pptxgenjs=m7;})(); diff --git a/apps/sim/lib/execution/sandbox/run-task.ts b/apps/sim/lib/execution/sandbox/run-task.ts index 1a87ffa7e91..c46a3251386 100644 --- a/apps/sim/lib/execution/sandbox/run-task.ts +++ b/apps/sim/lib/execution/sandbox/run-task.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateShortId } from '@/lib/core/utils/uuid' +import { generateShortId } from '@sim/utils/id' import { executeInIsolatedVM, type IsolatedVMBrokerHandler, diff --git a/apps/sim/lib/knowledge/chunks/service.ts b/apps/sim/lib/knowledge/chunks/service.ts index 847f61871fc..e8bfac6679e 100644 --- a/apps/sim/lib/knowledge/chunks/service.ts +++ b/apps/sim/lib/knowledge/chunks/service.ts @@ -2,8 +2,8 @@ import { createHash } from 'crypto' import { db } from '@sim/db' import { document, embedding, knowledgeBase } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, asc, desc, eq, ilike, inArray, isNull, sql } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import type { BatchOperationResult, ChunkData, diff --git a/apps/sim/lib/knowledge/connectors/sync-engine.test.ts b/apps/sim/lib/knowledge/connectors/sync-engine.test.ts index a3edab14251..03bf2df4b2e 100644 --- a/apps/sim/lib/knowledge/connectors/sync-engine.test.ts +++ b/apps/sim/lib/knowledge/connectors/sync-engine.test.ts @@ -1,17 +1,11 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' +import { authOAuthUtilsMock, schemaMock, urlsMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('@sim/db', () => ({ db: {} })) -vi.mock('@sim/db/schema', () => ({ - document: {}, - knowledgeBase: {}, - knowledgeConnector: {}, - knowledgeConnectorSyncLog: {}, -})) -vi.mock('@sim/logger', () => loggerMock) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn(), eq: vi.fn(), @@ -19,14 +13,14 @@ vi.mock('drizzle-orm', () => ({ isNull: vi.fn(), ne: vi.fn(), })) -vi.mock('@/lib/core/utils/urls', () => ({ getInternalApiBaseUrl: vi.fn() })) +vi.mock('@/lib/core/utils/urls', () => urlsMock) vi.mock('@/lib/knowledge/documents/service', () => ({ hardDeleteDocuments: vi.fn(), isTriggerAvailable: vi.fn(), processDocumentAsync: vi.fn(), })) vi.mock('@/lib/uploads', () => ({ StorageService: {} })) -vi.mock('@/app/api/auth/oauth/utils', () => ({ refreshAccessTokenIfNeeded: vi.fn() })) +vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) vi.mock('@/background/knowledge-connector-sync', () => ({ knowledgeConnectorSync: { trigger: vi.fn() }, })) diff --git a/apps/sim/lib/knowledge/connectors/sync-engine.ts b/apps/sim/lib/knowledge/connectors/sync-engine.ts index bd9ffaf9f1a..ef949c1f789 100644 --- a/apps/sim/lib/knowledge/connectors/sync-engine.ts +++ b/apps/sim/lib/knowledge/connectors/sync-engine.ts @@ -7,11 +7,11 @@ import { knowledgeConnectorSyncLog, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, gt, inArray, isNull, lt, ne, or, sql } from 'drizzle-orm' import { decryptApiKey } from '@/lib/api-key/crypto' -import { toError } from '@/lib/core/utils/helpers' import { getInternalApiBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import type { DocumentData } from '@/lib/knowledge/documents/service' import { hardDeleteDocuments, diff --git a/apps/sim/lib/knowledge/documents/document-processor.ts b/apps/sim/lib/knowledge/documents/document-processor.ts index 4878ed0257d..249108205a9 100644 --- a/apps/sim/lib/knowledge/documents/document-processor.ts +++ b/apps/sim/lib/knowledge/documents/document-processor.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { PDFDocument } from 'pdf-lib' import { getBYOKKey } from '@/lib/api-key/byok' import { @@ -13,7 +14,6 @@ import { } from '@/lib/chunkers' import type { ChunkingStrategy, StrategyOptions } from '@/lib/chunkers/types' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import { parseBuffer, parseFile } from '@/lib/file-parsers' import type { FileParseMetadata } from '@/lib/file-parsers/types' import { resolveParserExtension } from '@/lib/knowledge/documents/parser-extension' diff --git a/apps/sim/lib/knowledge/documents/service.ts b/apps/sim/lib/knowledge/documents/service.ts index ad160f1836c..14a7858e006 100644 --- a/apps/sim/lib/knowledge/documents/service.ts +++ b/apps/sim/lib/knowledge/documents/service.ts @@ -8,6 +8,8 @@ import { knowledgeConnector, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { tasks } from '@trigger.dev/sdk' import { and, @@ -30,8 +32,6 @@ import { checkAndBillOverageThreshold } from '@/lib/billing/threshold-billing' import type { ChunkingStrategy, StrategyOptions } from '@/lib/chunkers/types' import { env } from '@/lib/core/config/env' import { getCostMultiplier, isTriggerDevEnabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { processDocument } from '@/lib/knowledge/documents/document-processor' import type { DocumentSortField, SortOrder } from '@/lib/knowledge/documents/types' import { generateEmbeddings } from '@/lib/knowledge/embeddings' diff --git a/apps/sim/lib/knowledge/documents/utils.test.ts b/apps/sim/lib/knowledge/documents/utils.test.ts index 3156d21ff92..0474f0a80b1 100644 --- a/apps/sim/lib/knowledge/documents/utils.test.ts +++ b/apps/sim/lib/knowledge/documents/utils.test.ts @@ -1,12 +1,7 @@ /** * @vitest-environment node */ -import { describe, expect, it, vi } from 'vitest' - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ info: vi.fn(), warn: vi.fn(), error: vi.fn(), debug: vi.fn() }), -})) - +import { describe, expect, it } from 'vitest' import { isRetryableError } from './utils' describe('isRetryableError', () => { diff --git a/apps/sim/lib/knowledge/documents/utils.ts b/apps/sim/lib/knowledge/documents/utils.ts index af3b3561409..bafc5d4cc99 100644 --- a/apps/sim/lib/knowledge/documents/utils.ts +++ b/apps/sim/lib/knowledge/documents/utils.ts @@ -1,5 +1,6 @@ import { createLogger } from '@sim/logger' -import { sleep, toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' const logger = createLogger('RetryUtils') diff --git a/apps/sim/lib/knowledge/service.ts b/apps/sim/lib/knowledge/service.ts index 4867bf251ce..00f4326a063 100644 --- a/apps/sim/lib/knowledge/service.ts +++ b/apps/sim/lib/knowledge/service.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { document, knowledgeBase, knowledgeConnector, permissions, workspace } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { getPostgresErrorCode } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, count, eq, inArray, isNotNull, isNull, ne, or, sql } from 'drizzle-orm' -import { getPostgresErrorCode } from '@/lib/core/utils/pg-error' import { generateRestoreName } from '@/lib/core/utils/restore-name' -import { generateId } from '@/lib/core/utils/uuid' import type { ChunkingConfig, CreateKnowledgeBaseData, diff --git a/apps/sim/lib/knowledge/tags/service.ts b/apps/sim/lib/knowledge/tags/service.ts index ea8e2cd23ae..89ee85dbf23 100644 --- a/apps/sim/lib/knowledge/tags/service.ts +++ b/apps/sim/lib/knowledge/tags/service.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { document, embedding, knowledgeBaseTagDefinitions } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNotNull, isNull, sql } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import type { DbOrTx } from '@/lib/db/types' import { getSlotsForFieldType, SUPPORTED_FIELD_TYPES } from '@/lib/knowledge/constants' import type { BulkTagDefinitionsData, DocumentTagDefinition } from '@/lib/knowledge/tags/types' diff --git a/apps/sim/lib/logs/events.ts b/apps/sim/lib/logs/events.ts index c1f54d64da3..02703ba7ce0 100644 --- a/apps/sim/lib/logs/events.ts +++ b/apps/sim/lib/logs/events.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { workspaceNotificationDelivery, workspaceNotificationSubscription } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, or, sql } from 'drizzle-orm' import { isTriggerDevEnabled } from '@/lib/core/config/feature-flags' -import { generateId } from '@/lib/core/utils/uuid' import type { WorkflowExecutionLog } from '@/lib/logs/types' import { type AlertCheckContext, diff --git a/apps/sim/lib/logs/execution/logger.test.ts b/apps/sim/lib/logs/execution/logger.test.ts index 1e18987eb6e..bb0d79ef05f 100644 --- a/apps/sim/lib/logs/execution/logger.test.ts +++ b/apps/sim/lib/logs/execution/logger.test.ts @@ -1,17 +1,8 @@ -import { databaseMock, loggerMock } from '@sim/testing' +import { featureFlagsMock, schemaMock } from '@sim/testing' import { beforeEach, describe, expect, test, vi } from 'vitest' import { ExecutionLogger } from '@/lib/logs/execution/logger' -vi.mock('@sim/db', () => databaseMock) - -// Mock database schema -vi.mock('@sim/db/schema', () => ({ - member: {}, - userStats: {}, - user: {}, - workflow: {}, - workflowExecutionLogs: {}, -})) +vi.mock('@sim/db/schema', () => schemaMock) // Mock billing modules vi.mock('@/lib/billing/core/subscription', () => ({ @@ -36,9 +27,7 @@ vi.mock('@/lib/billing/threshold-billing', () => ({ checkAndBillOverageThreshold: vi.fn(() => Promise.resolve()), })) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isBillingEnabled: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) // Mock security module vi.mock('@/lib/core/security/redaction', () => ({ @@ -50,8 +39,6 @@ vi.mock('@/lib/core/utils/display-filters', () => ({ filterForDisplay: vi.fn((data) => data), })) -vi.mock('@sim/logger', () => loggerMock) - // Mock events vi.mock('@/lib/logs/events', () => ({ emitWorkflowExecutionCompleted: vi.fn(() => Promise.resolve()), diff --git a/apps/sim/lib/logs/execution/logger.ts b/apps/sim/lib/logs/execution/logger.ts index ef96063387c..d538ab738ad 100644 --- a/apps/sim/lib/logs/execution/logger.ts +++ b/apps/sim/lib/logs/execution/logger.ts @@ -7,6 +7,7 @@ import { workflowExecutionLogs, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq, sql } from 'drizzle-orm' import { BASE_EXECUTION_CHARGE } from '@/lib/billing/constants' import { getHighestPrioritySubscription } from '@/lib/billing/core/subscription' @@ -20,7 +21,6 @@ import { checkAndBillOverageThreshold } from '@/lib/billing/threshold-billing' import { isBillingEnabled } from '@/lib/core/config/feature-flags' import { redactApiKeys } from '@/lib/core/security/redaction' import { filterForDisplay } from '@/lib/core/utils/display-filters' -import { generateId } from '@/lib/core/utils/uuid' import { emitWorkflowExecutionCompleted } from '@/lib/logs/events' import { snapshotService } from '@/lib/logs/execution/snapshot/service' import type { diff --git a/apps/sim/lib/logs/execution/logging-factory.test.ts b/apps/sim/lib/logs/execution/logging-factory.test.ts index badc63542d6..01a8612b5bf 100644 --- a/apps/sim/lib/logs/execution/logging-factory.test.ts +++ b/apps/sim/lib/logs/execution/logging-factory.test.ts @@ -1,37 +1,32 @@ -import { loggerMock } from '@sim/testing' -import { describe, expect, test, vi } from 'vitest' +import { workflowsPersistenceUtilsMock, workflowsPersistenceUtilsMockFns } from '@sim/testing' +import { beforeEach, describe, expect, test, vi } from 'vitest' import { calculateCostSummary, createEnvironmentObject, createTriggerObject, } from '@/lib/logs/execution/logging-factory' -// Mock the billing constants +/** Mock the billing constants */ vi.mock('@/lib/billing/constants', () => ({ BASE_EXECUTION_CHARGE: 0.005, })) -vi.mock('@sim/logger', () => loggerMock) - -// Mock workflow persistence utils -vi.mock('@/lib/workflows/persistence/utils', () => ({ - loadDeployedWorkflowState: vi.fn(() => - Promise.resolve({ - blocks: {}, - edges: [], - loops: {}, - parallels: {}, - }) - ), - loadWorkflowFromNormalizedTables: vi.fn(() => - Promise.resolve({ - blocks: {}, - edges: [], - loops: {}, - parallels: {}, - }) - ), -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) + +beforeEach(() => { + workflowsPersistenceUtilsMockFns.mockLoadDeployedWorkflowState.mockResolvedValue({ + blocks: {}, + edges: [], + loops: {}, + parallels: {}, + }) + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables.mockResolvedValue({ + blocks: {}, + edges: [], + loops: {}, + parallels: {}, + }) +}) describe('createTriggerObject', () => { test('should create a trigger object with basic type', () => { diff --git a/apps/sim/lib/logs/execution/logging-session.test.ts b/apps/sim/lib/logs/execution/logging-session.test.ts index dfc2a306d2e..d47baae69a3 100644 --- a/apps/sim/lib/logs/execution/logging-session.test.ts +++ b/apps/sim/lib/logs/execution/logging-session.test.ts @@ -1,3 +1,4 @@ +import { schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const dbMocks = vi.hoisted(() => { @@ -45,18 +46,7 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - workflowExecutionLogs: {}, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - error: vi.fn(), - warn: vi.fn(), - debug: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: dbMocks.eq, diff --git a/apps/sim/lib/logs/execution/logging-session.ts b/apps/sim/lib/logs/execution/logging-session.ts index 15911376917..d8390468324 100644 --- a/apps/sim/lib/logs/execution/logging-session.ts +++ b/apps/sim/lib/logs/execution/logging-session.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { workflowExecutionLogs } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq, sql } from 'drizzle-orm' import { BASE_EXECUTION_CHARGE } from '@/lib/billing/constants' -import { toError } from '@/lib/core/utils/helpers' import { executionLogger } from '@/lib/logs/execution/logger' import { calculateCostSummary, diff --git a/apps/sim/lib/logs/execution/snapshot/service.test.ts b/apps/sim/lib/logs/execution/snapshot/service.test.ts index 213d887e53b..5008072c360 100644 --- a/apps/sim/lib/logs/execution/snapshot/service.test.ts +++ b/apps/sim/lib/logs/execution/snapshot/service.test.ts @@ -1,30 +1,11 @@ /** * @vitest-environment node */ -import { databaseMock, drizzleOrmMock, loggerMock } from '@sim/testing' +import { databaseMock, schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockSchemaExports } = vi.hoisted(() => ({ - mockSchemaExports: { - workflowExecutionSnapshots: { - id: 'id', - workflowId: 'workflow_id', - stateHash: 'state_hash', - stateData: 'state_data', - createdAt: 'created_at', - }, - workflowExecutionLogs: { - id: 'id', - stateSnapshotId: 'state_snapshot_id', - }, - }, -})) - -vi.mock('@sim/db', () => databaseMock) -vi.mock('@sim/db/schema', () => mockSchemaExports) -vi.mock('@sim/logger', () => loggerMock) -vi.mock('drizzle-orm', () => drizzleOrmMock) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/db/schema', () => schemaMock) +vi.mock('@sim/utils/id', () => ({ generateId: vi.fn(() => 'generated-uuid-1'), generateShortId: vi.fn(() => 'generated-short-1'), isValidUuid: vi.fn((v: string) => diff --git a/apps/sim/lib/logs/execution/snapshot/service.ts b/apps/sim/lib/logs/execution/snapshot/service.ts index f23d88072ae..82327c1903e 100644 --- a/apps/sim/lib/logs/execution/snapshot/service.ts +++ b/apps/sim/lib/logs/execution/snapshot/service.ts @@ -2,8 +2,8 @@ import { createHash } from 'crypto' import { db } from '@sim/db' import { workflowExecutionLogs, workflowExecutionSnapshots } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, lt, notExists, sql } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import type { SnapshotService as ISnapshotService, SnapshotCreationResult, diff --git a/apps/sim/lib/mcp/client.test.ts b/apps/sim/lib/mcp/client.test.ts index 386769d41e3..389062627b0 100644 --- a/apps/sim/lib/mcp/client.test.ts +++ b/apps/sim/lib/mcp/client.test.ts @@ -1,11 +1,8 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -vi.mock('@sim/logger', () => loggerMock) - /** * Capture the notification handler registered via `client.setNotificationHandler()`. * This lets us simulate the MCP SDK delivering a `tools/list_changed` notification. diff --git a/apps/sim/lib/mcp/connection-manager.test.ts b/apps/sim/lib/mcp/connection-manager.test.ts index 8b4b684cf0f..b464235153f 100644 --- a/apps/sim/lib/mcp/connection-manager.test.ts +++ b/apps/sim/lib/mcp/connection-manager.test.ts @@ -1,7 +1,6 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' interface MockMcpClient { @@ -37,7 +36,6 @@ const { MockMcpClientConstructor, mockOnToolsChanged, mockPublishToolsChanged } }) ) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/core/config/feature-flags', () => ({ isTest: false })) vi.mock('@/lib/mcp/pubsub', () => ({ mcpPubSub: { diff --git a/apps/sim/lib/mcp/domain-check.test.ts b/apps/sim/lib/mcp/domain-check.test.ts index fa7b120416b..6cc76716ca0 100644 --- a/apps/sim/lib/mcp/domain-check.test.ts +++ b/apps/sim/lib/mcp/domain-check.test.ts @@ -1,6 +1,7 @@ /** * @vitest-environment node */ +import { inputValidationMock, inputValidationMockFns } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { mockGetAllowedMcpDomainsFromEnv, mockDnsLookup } = vi.hoisted(() => ({ @@ -12,19 +13,19 @@ vi.mock('@/lib/core/config/feature-flags', () => ({ getAllowedMcpDomainsFromEnv: mockGetAllowedMcpDomainsFromEnv, })) -vi.mock('@/lib/core/security/input-validation.server', () => ({ - isPrivateOrReservedIP: (ip: string) => { - if (ip.startsWith('10.') || ip.startsWith('192.168.')) return true - if (ip.startsWith('172.')) { - const second = Number.parseInt(ip.split('.')[1], 10) - if (second >= 16 && second <= 31) return true - } - if (ip.startsWith('169.254.')) return true - if (ip.startsWith('127.') || ip === '::1') return true - if (ip === '0.0.0.0') return true - return false - }, -})) +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) + +inputValidationMockFns.mockIsPrivateOrReservedIP.mockImplementation((ip: string) => { + if (ip.startsWith('10.') || ip.startsWith('192.168.')) return true + if (ip.startsWith('172.')) { + const second = Number.parseInt(ip.split('.')[1], 10) + if (second >= 16 && second <= 31) return true + } + if (ip.startsWith('169.254.')) return true + if (ip.startsWith('127.') || ip === '::1') return true + if (ip === '0.0.0.0') return true + return false +}) vi.mock('dns/promises', () => ({ default: { lookup: mockDnsLookup }, diff --git a/apps/sim/lib/mcp/domain-check.ts b/apps/sim/lib/mcp/domain-check.ts index 7985cf795ff..83ec36c69f5 100644 --- a/apps/sim/lib/mcp/domain-check.ts +++ b/apps/sim/lib/mcp/domain-check.ts @@ -1,9 +1,9 @@ import dns from 'dns/promises' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import * as ipaddr from 'ipaddr.js' import { getAllowedMcpDomainsFromEnv } from '@/lib/core/config/feature-flags' import { isPrivateOrReservedIP } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { createEnvVarPattern } from '@/executor/utils/reference-validation' const logger = createLogger('McpDomainCheck') diff --git a/apps/sim/lib/mcp/middleware.ts b/apps/sim/lib/mcp/middleware.ts index c45044fd92b..6e4aa816221 100644 --- a/apps/sim/lib/mcp/middleware.ts +++ b/apps/sim/lib/mcp/middleware.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { NextRequest, NextResponse } from 'next/server' import { checkSessionOrInternalAuth } from '@/lib/auth/hybrid' -import { toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { createMcpErrorResponse } from '@/lib/mcp/utils' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/lib/mcp/pubsub.test.ts b/apps/sim/lib/mcp/pubsub.test.ts index 12b138c6d86..d3c4e1e005e 100644 --- a/apps/sim/lib/mcp/pubsub.test.ts +++ b/apps/sim/lib/mcp/pubsub.test.ts @@ -1,7 +1,6 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { mockToolsChannel, mockWorkflowToolsChannel } = vi.hoisted(() => { @@ -18,7 +17,6 @@ const { mockToolsChannel, mockWorkflowToolsChannel } = vi.hoisted(() => { return { mockToolsChannel, mockWorkflowToolsChannel } }) -vi.mock('@sim/logger', () => loggerMock) vi.mock('@/lib/events/pubsub', () => ({ createPubSubChannel: vi.fn((config: { label: string }) => { if (config.label === 'mcp-tools') return mockToolsChannel diff --git a/apps/sim/lib/mcp/service.ts b/apps/sim/lib/mcp/service.ts index 072cee8247d..943ad4d8038 100644 --- a/apps/sim/lib/mcp/service.ts +++ b/apps/sim/lib/mcp/service.ts @@ -5,9 +5,10 @@ import { db } from '@sim/db' import { mcpServers } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { and, eq, isNull } from 'drizzle-orm' import { isTest } from '@/lib/core/config/feature-flags' -import { sleep, toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { McpClient } from '@/lib/mcp/client' import { mcpConnectionManager } from '@/lib/mcp/connection-manager' diff --git a/apps/sim/lib/mcp/storage/memory-cache.test.ts b/apps/sim/lib/mcp/storage/memory-cache.test.ts index fd4b8682bd0..0db17924355 100644 --- a/apps/sim/lib/mcp/storage/memory-cache.test.ts +++ b/apps/sim/lib/mcp/storage/memory-cache.test.ts @@ -1,8 +1,4 @@ -import { loggerMock } from '@sim/testing' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -vi.mock('@sim/logger', () => loggerMock) - +import { afterEach, beforeEach, describe, expect, it } from 'vitest' import type { McpTool } from '@/lib/mcp/types' import { MemoryMcpCache } from './memory-cache' diff --git a/apps/sim/lib/messaging/email/mailer.test.ts b/apps/sim/lib/messaging/email/mailer.test.ts index 18e720b6268..cfa432f0228 100644 --- a/apps/sim/lib/messaging/email/mailer.test.ts +++ b/apps/sim/lib/messaging/email/mailer.test.ts @@ -1,4 +1,4 @@ -import { createEnvMock, loggerMock } from '@sim/testing' +import { createEnvMock } from '@sim/testing' import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest' const mockSend = vi.fn() @@ -55,8 +55,6 @@ vi.mock('@/lib/messaging/email/utils', () => ({ NO_EMAIL_HEADER_CONTROL_CHARS_REGEX: /^[^\r\n]*$/, })) -vi.mock('@sim/logger', () => loggerMock) - import { type EmailType, hasEmailService, sendBatchEmails, sendEmail } from './mailer' import { generateUnsubscribeToken, isUnsubscribed } from './unsubscribe' diff --git a/apps/sim/lib/messaging/email/unsubscribe.test.ts b/apps/sim/lib/messaging/email/unsubscribe.test.ts index 5cfdce66196..db3b64ffb0c 100644 --- a/apps/sim/lib/messaging/email/unsubscribe.test.ts +++ b/apps/sim/lib/messaging/email/unsubscribe.test.ts @@ -1,18 +1,8 @@ -import { createEnvMock, databaseMock, loggerMock } from '@sim/testing' +import { createEnvMock, databaseMock, schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { EmailType } from '@/lib/messaging/email/mailer' -vi.mock('@sim/db', () => databaseMock) - -vi.mock('@sim/db/schema', () => ({ - user: { id: 'id', email: 'email' }, - settings: { - userId: 'userId', - emailPreferences: 'emailPreferences', - id: 'id', - updatedAt: 'updatedAt', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ eq: vi.fn((a, b) => ({ type: 'eq', left: a, right: b })), @@ -22,8 +12,6 @@ const mockDb = databaseMock.db as Record> vi.mock('@/lib/core/config/env', () => createEnvMock({ BETTER_AUTH_SECRET: 'test-secret-key' })) -vi.mock('@sim/logger', () => loggerMock) - import { generateUnsubscribeToken, getEmailPreferences, diff --git a/apps/sim/lib/messaging/email/utils.test.ts b/apps/sim/lib/messaging/email/utils.test.ts index f23a34c413c..c261c8966d0 100644 --- a/apps/sim/lib/messaging/email/utils.test.ts +++ b/apps/sim/lib/messaging/email/utils.test.ts @@ -1,5 +1,5 @@ -import { createEnvMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { createEnvMock, urlsMock, urlsMockFns } from '@sim/testing' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { EMAIL_HEADER_CONTROL_CHARS_REGEX, getFromEmailAddress, @@ -22,9 +22,11 @@ vi.mock('@/lib/core/config/env', () => }) ) -vi.mock('@/lib/core/utils/urls', () => ({ - getEmailDomain: vi.fn().mockReturnValue('fallback.com'), -})) +vi.mock('@/lib/core/utils/urls', () => urlsMock) + +beforeEach(() => { + urlsMockFns.mockGetEmailDomain.mockReturnValue('fallback.com') +}) describe('getFromEmailAddress', () => { it('should return the configured FROM_EMAIL_ADDRESS', () => { diff --git a/apps/sim/lib/mothership/inbox/executor.ts b/apps/sim/lib/mothership/inbox/executor.ts index 8eaace6c3b5..b46ea43a67c 100644 --- a/apps/sim/lib/mothership/inbox/executor.ts +++ b/apps/sim/lib/mothership/inbox/executor.ts @@ -1,5 +1,6 @@ import { copilotChats, db, mothershipInboxTask, permissions, user, workspace } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, sql } from 'drizzle-orm' import { resolveOrCreateChat } from '@/lib/copilot/chat/lifecycle' import { buildIntegrationToolSchemas } from '@/lib/copilot/chat/payload' @@ -13,7 +14,6 @@ import { requestChatTitle } from '@/lib/copilot/request/lifecycle/start' import type { OrchestratorResult } from '@/lib/copilot/request/types' import { taskPubSub } from '@/lib/copilot/tasks' import { isHosted } from '@/lib/core/config/feature-flags' -import { generateId } from '@/lib/core/utils/uuid' import * as agentmail from '@/lib/mothership/inbox/agentmail-client' import { formatEmailAsMessage } from '@/lib/mothership/inbox/format' import { sendInboxResponse } from '@/lib/mothership/inbox/response' diff --git a/apps/sim/lib/mothership/inbox/lifecycle.ts b/apps/sim/lib/mothership/inbox/lifecycle.ts index 1159aa727ec..264ce0c4c96 100644 --- a/apps/sim/lib/mothership/inbox/lifecycle.ts +++ b/apps/sim/lib/mothership/inbox/lifecycle.ts @@ -1,8 +1,8 @@ import { db, mothershipInboxWebhook, workspace } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import * as agentmail from '@/lib/mothership/inbox/agentmail-client' import type { InboxConfig } from '@/lib/mothership/inbox/types' diff --git a/apps/sim/lib/notifications/inactivity-polling.ts b/apps/sim/lib/notifications/inactivity-polling.ts index 6bcd1098dee..254d07be462 100644 --- a/apps/sim/lib/notifications/inactivity-polling.ts +++ b/apps/sim/lib/notifications/inactivity-polling.ts @@ -7,9 +7,9 @@ import { workspaceNotificationSubscription, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, gte, inArray, sql } from 'drizzle-orm' import { isTriggerDevEnabled } from '@/lib/core/config/feature-flags' -import { generateId } from '@/lib/core/utils/uuid' import { TRIGGER_TYPES } from '@/lib/workflows/triggers/triggers' import { executeNotificationDelivery, diff --git a/apps/sim/lib/oauth/oauth.test.ts b/apps/sim/lib/oauth/oauth.test.ts index 1b1338892a3..93ad2a9b9ab 100644 --- a/apps/sim/lib/oauth/oauth.test.ts +++ b/apps/sim/lib/oauth/oauth.test.ts @@ -1,4 +1,4 @@ -import { createEnvMock, createMockFetch, loggerMock } from '@sim/testing' +import { createEnvMock, createMockFetch } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' vi.mock('@/lib/core/config/env', () => @@ -52,8 +52,6 @@ vi.mock('@/lib/core/config/env', () => }) ) -vi.mock('@sim/logger', () => loggerMock) - import { refreshOAuthToken } from '@/lib/oauth' /** diff --git a/apps/sim/lib/oauth/oauth.ts b/apps/sim/lib/oauth/oauth.ts index a83105d0e48..65afa3a30a8 100644 --- a/apps/sim/lib/oauth/oauth.ts +++ b/apps/sim/lib/oauth/oauth.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { AirtableIcon, AsanaIcon, @@ -51,7 +52,6 @@ import { ZoomIcon, } from '@/components/icons' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import type { OAuthProviderConfig } from './types' const logger = createLogger('OAuth') diff --git a/apps/sim/lib/og/capture-preview.ts b/apps/sim/lib/og/capture-preview.ts index 83818e707ef..8170f3ad6c6 100644 --- a/apps/sim/lib/og/capture-preview.ts +++ b/apps/sim/lib/og/capture-preview.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { sleep } from '@/lib/core/utils/helpers' +import { sleep } from '@sim/utils/helpers' const logger = createLogger('OGCapturePreview') diff --git a/apps/sim/lib/table/__tests__/sql.test.ts b/apps/sim/lib/table/__tests__/sql.test.ts index f2cbd32f92e..492e3e7fc8b 100644 --- a/apps/sim/lib/table/__tests__/sql.test.ts +++ b/apps/sim/lib/table/__tests__/sql.test.ts @@ -5,11 +5,7 @@ * * Tests for the table SQL query builder utilities including filter and sort clause generation. */ -import { drizzleOrmMock } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' - -vi.mock('drizzle-orm', () => drizzleOrmMock) - +import { describe, expect, it } from 'vitest' import { buildFilterClause, buildSortClause } from '../sql' import type { Filter } from '../types' diff --git a/apps/sim/lib/table/__tests__/update-row.test.ts b/apps/sim/lib/table/__tests__/update-row.test.ts index ef899da0f9f..e1b126bf2f2 100644 --- a/apps/sim/lib/table/__tests__/update-row.test.ts +++ b/apps/sim/lib/table/__tests__/update-row.test.ts @@ -3,8 +3,8 @@ */ import { databaseMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { updateRow } from '../service' -import type { TableDefinition } from '../types' +import { updateRow } from '@/lib/table/service' +import type { TableDefinition } from '@/lib/table/types' const EXISTING_ROW = { id: 'row-1', diff --git a/apps/sim/lib/table/query-builder/converters.ts b/apps/sim/lib/table/query-builder/converters.ts index 6f65f859dc8..16b1e7ab274 100644 --- a/apps/sim/lib/table/query-builder/converters.ts +++ b/apps/sim/lib/table/query-builder/converters.ts @@ -2,7 +2,7 @@ * Converters for transforming between UI builder state and API filter/sort objects. */ -import { generateShortId } from '@/lib/core/utils/uuid' +import { generateShortId } from '@sim/utils/id' import type { Filter, FilterRule, JsonValue, Sort, SortDirection, SortRule } from '../types' /** Converts UI filter rules to a Filter object for API queries. */ diff --git a/apps/sim/lib/table/query-builder/use-query-builder.ts b/apps/sim/lib/table/query-builder/use-query-builder.ts index 1bab3a82f28..1f4d4f06195 100644 --- a/apps/sim/lib/table/query-builder/use-query-builder.ts +++ b/apps/sim/lib/table/query-builder/use-query-builder.ts @@ -3,7 +3,7 @@ */ import { useCallback } from 'react' -import { generateShortId } from '@/lib/core/utils/uuid' +import { generateShortId } from '@sim/utils/id' import type { ColumnOption } from '../types' import { COMPARISON_OPERATORS, diff --git a/apps/sim/lib/table/service.ts b/apps/sim/lib/table/service.ts index a8e0bdecb71..3409e71f4a3 100644 --- a/apps/sim/lib/table/service.ts +++ b/apps/sim/lib/table/service.ts @@ -10,10 +10,10 @@ import { db } from '@sim/db' import { userTableDefinitions, userTableRows } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { getPostgresErrorCode } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, count, eq, gt, gte, inArray, isNull, sql } from 'drizzle-orm' -import { getPostgresErrorCode } from '@/lib/core/utils/pg-error' import { generateRestoreName } from '@/lib/core/utils/restore-name' -import { generateId } from '@/lib/core/utils/uuid' import { COLUMN_TYPES, NAME_PATTERN, TABLE_LIMITS, USER_TABLE_ROWS_SQL_NAME } from './constants' import { buildFilterClause, buildSortClause } from './sql' import type { diff --git a/apps/sim/lib/tokenization/calculators.ts b/apps/sim/lib/tokenization/calculators.ts index e163a3a4969..3a1a34a2657 100644 --- a/apps/sim/lib/tokenization/calculators.ts +++ b/apps/sim/lib/tokenization/calculators.ts @@ -3,7 +3,7 @@ */ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { createTokenizationError } from '@/lib/tokenization/errors' import { estimateInputTokens, diff --git a/apps/sim/lib/tokenization/streaming.ts b/apps/sim/lib/tokenization/streaming.ts index 547e375389d..047fd0b8b38 100644 --- a/apps/sim/lib/tokenization/streaming.ts +++ b/apps/sim/lib/tokenization/streaming.ts @@ -3,7 +3,7 @@ */ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { calculateStreamingCost } from '@/lib/tokenization/calculators' import { TOKENIZATION_CONFIG } from '@/lib/tokenization/constants' import { diff --git a/apps/sim/lib/tokenization/utils.ts b/apps/sim/lib/tokenization/utils.ts index c94bcc0857c..e3c3c3287d0 100644 --- a/apps/sim/lib/tokenization/utils.ts +++ b/apps/sim/lib/tokenization/utils.ts @@ -3,7 +3,7 @@ */ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { LLM_BLOCK_TYPES, MAX_PREVIEW_LENGTH, diff --git a/apps/sim/lib/uploads/contexts/workspace/workspace-file-manager.ts b/apps/sim/lib/uploads/contexts/workspace/workspace-file-manager.ts index 6c3ea54b8b2..825fbd9794a 100644 --- a/apps/sim/lib/uploads/contexts/workspace/workspace-file-manager.ts +++ b/apps/sim/lib/uploads/contexts/workspace/workspace-file-manager.ts @@ -6,6 +6,7 @@ import { db } from '@sim/db' import { workspaceFiles } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { getPostgresErrorCode } from '@sim/utils/errors' import { and, eq, isNull, sql } from 'drizzle-orm' import { checkStorageQuota, @@ -13,7 +14,6 @@ import { incrementStorageUsage, } from '@/lib/billing/storage' import { normalizeVfsSegment } from '@/lib/copilot/vfs/normalize-segment' -import { getPostgresErrorCode } from '@/lib/core/utils/pg-error' import { generateRestoreName } from '@/lib/core/utils/restore-name' import { getServePathPrefix } from '@/lib/uploads' import { downloadFile, hasCloudStorage, uploadFile } from '@/lib/uploads/core/storage-service' diff --git a/apps/sim/lib/uploads/providers/blob/client.ts b/apps/sim/lib/uploads/providers/blob/client.ts index 7b863b7d6cf..fa957376403 100644 --- a/apps/sim/lib/uploads/providers/blob/client.ts +++ b/apps/sim/lib/uploads/providers/blob/client.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { BLOB_CONFIG } from '@/lib/uploads/config' -import { generateId } from '@/lib/core/utils/uuid' import type { AzureMultipartPart, AzureMultipartUploadInit, diff --git a/apps/sim/lib/uploads/providers/s3/client.ts b/apps/sim/lib/uploads/providers/s3/client.ts index 073ac882a2e..0f27ceed16b 100644 --- a/apps/sim/lib/uploads/providers/s3/client.ts +++ b/apps/sim/lib/uploads/providers/s3/client.ts @@ -9,8 +9,8 @@ import { UploadPartCommand, } from '@aws-sdk/client-s3' import { getSignedUrl } from '@aws-sdk/s3-request-presigner' +import { generateId } from '@sim/utils/id' import { env } from '@/lib/core/config/env' -import { generateId } from '@/lib/core/utils/uuid' import { S3_CONFIG, S3_KB_CONFIG } from '@/lib/uploads/config' import type { S3Config, diff --git a/apps/sim/lib/webhooks/deploy.ts b/apps/sim/lib/webhooks/deploy.ts index b88f62480b4..2a5c5e3dc0d 100644 --- a/apps/sim/lib/webhooks/deploy.ts +++ b/apps/sim/lib/webhooks/deploy.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { webhook } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq, inArray, isNull } from 'drizzle-orm' import type { NextRequest } from 'next/server' -import { generateShortId } from '@/lib/core/utils/uuid' import { getProviderIdFromServiceId } from '@/lib/oauth' import { PendingWebhookVerificationTracker } from '@/lib/webhooks/pending-verification' import { diff --git a/apps/sim/lib/webhooks/pending-verification.test.ts b/apps/sim/lib/webhooks/pending-verification.test.ts index eb3e4673033..9e2ff26ca8a 100644 --- a/apps/sim/lib/webhooks/pending-verification.test.ts +++ b/apps/sim/lib/webhooks/pending-verification.test.ts @@ -1,19 +1,10 @@ /** * @vitest-environment node */ +import { redisConfigMock } from '@sim/testing' import { afterEach, describe, expect, it, vi } from 'vitest' -vi.mock('@/lib/core/config/redis', () => ({ - getRedisClient: vi.fn().mockReturnValue(null), -})) - -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - }), -})) +vi.mock('@/lib/core/config/redis', () => redisConfigMock) import { clearPendingWebhookVerification, diff --git a/apps/sim/lib/webhooks/pending-verification.ts b/apps/sim/lib/webhooks/pending-verification.ts index db38b6f6a11..026b6b82ccc 100644 --- a/apps/sim/lib/webhooks/pending-verification.ts +++ b/apps/sim/lib/webhooks/pending-verification.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { getRedisClient } from '@/lib/core/config/redis' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('WebhookPendingVerification') diff --git a/apps/sim/lib/webhooks/polling/orchestrator.ts b/apps/sim/lib/webhooks/polling/orchestrator.ts index 508ff91972f..14133e76a48 100644 --- a/apps/sim/lib/webhooks/polling/orchestrator.ts +++ b/apps/sim/lib/webhooks/polling/orchestrator.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateShortId } from '@/lib/core/utils/uuid' +import { generateShortId } from '@sim/utils/id' import { getPollingHandler } from '@/lib/webhooks/polling/registry' import type { PollSummary, WebhookRecord, WorkflowRecord } from '@/lib/webhooks/polling/types' import { fetchActiveWebhooks, runWithConcurrency } from '@/lib/webhooks/polling/utils' diff --git a/apps/sim/lib/webhooks/processor.test.ts b/apps/sim/lib/webhooks/processor.test.ts index 6d644092e84..8549e6198a3 100644 --- a/apps/sim/lib/webhooks/processor.test.ts +++ b/apps/sim/lib/webhooks/processor.test.ts @@ -2,22 +2,25 @@ * @vitest-environment node */ -import { createMockRequest } from '@sim/testing' +import { + createMockRequest, + executionPreprocessingMock, + executionPreprocessingMockFns, + featureFlagsMock, + schemaMock, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockGenerateId, - mockPreprocessExecution, - mockEnqueue, - mockGetJobQueue, - mockShouldExecuteInline, -} = vi.hoisted(() => ({ - mockGenerateId: vi.fn(), - mockPreprocessExecution: vi.fn(), - mockEnqueue: vi.fn(), - mockGetJobQueue: vi.fn(), - mockShouldExecuteInline: vi.fn(), -})) +const { mockGenerateId, mockEnqueue, mockGetJobQueue, mockShouldExecuteInline } = vi.hoisted( + () => ({ + mockGenerateId: vi.fn(), + mockEnqueue: vi.fn(), + mockGetJobQueue: vi.fn(), + mockShouldExecuteInline: vi.fn(), + }) +) + +const mockPreprocessExecution = executionPreprocessingMockFns.mockPreprocessExecution vi.mock('@sim/db', () => ({ db: {}, @@ -26,19 +29,7 @@ vi.mock('@sim/db', () => ({ workflowDeploymentVersion: {}, })) -vi.mock('@sim/db/schema', () => ({ - credentialSet: {}, - subscription: {}, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('drizzle-orm', () => ({ and: vi.fn(), @@ -47,7 +38,7 @@ vi.mock('drizzle-orm', () => ({ or: vi.fn(), })) -vi.mock('@/lib/core/utils/uuid', () => ({ +vi.mock('@sim/utils/id', () => ({ generateId: mockGenerateId, generateShortId: vi.fn(() => 'mock-short-id'), isValidUuid: vi.fn((v: string) => @@ -66,9 +57,7 @@ vi.mock('@/lib/core/async-jobs', () => ({ shouldExecuteInline: mockShouldExecuteInline, })) -vi.mock('@/lib/core/config/feature-flags', () => ({ - isProd: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) vi.mock('@/lib/core/security/encryption', () => ({ safeCompare: vi.fn().mockReturnValue(true), @@ -78,9 +67,7 @@ vi.mock('@/lib/environment/utils', () => ({ getEffectiveDecryptedEnv: vi.fn().mockResolvedValue({}), })) -vi.mock('@/lib/execution/preprocessing', () => ({ - preprocessExecution: mockPreprocessExecution, -})) +vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) vi.mock('@/lib/webhooks/pending-verification', () => ({ getPendingWebhookVerification: vi.fn(), diff --git a/apps/sim/lib/webhooks/processor.ts b/apps/sim/lib/webhooks/processor.ts index e8b28b753eb..654041de608 100644 --- a/apps/sim/lib/webhooks/processor.ts +++ b/apps/sim/lib/webhooks/processor.ts @@ -1,6 +1,8 @@ import { db, webhook, workflow, workflowDeploymentVersion } from '@sim/db' import { credentialSet } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, or } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { isOrganizationOnTeamOrEnterprisePlan } from '@/lib/billing/core/subscription' @@ -8,8 +10,6 @@ import { tryAdmit } from '@/lib/core/admission/gate' import { getInlineJobQueue, getJobQueue, shouldExecuteInline } from '@/lib/core/async-jobs' import type { AsyncExecutionCorrelation } from '@/lib/core/async-jobs/types' import { isProd } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getEffectiveDecryptedEnv } from '@/lib/environment/utils' import { preprocessExecution } from '@/lib/execution/preprocessing' import { diff --git a/apps/sim/lib/webhooks/provider-subscriptions.ts b/apps/sim/lib/webhooks/provider-subscriptions.ts index 3c6060ce0c6..e2e8eceebac 100644 --- a/apps/sim/lib/webhooks/provider-subscriptions.ts +++ b/apps/sim/lib/webhooks/provider-subscriptions.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { NextRequest } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' import { getProviderHandler } from '@/lib/webhooks/providers' const logger = createLogger('WebhookProviderSubscriptions') diff --git a/apps/sim/lib/webhooks/providers/ashby.ts b/apps/sim/lib/webhooks/providers/ashby.ts index d7903af812f..a6c112ff8d1 100644 --- a/apps/sim/lib/webhooks/providers/ashby.ts +++ b/apps/sim/lib/webhooks/providers/ashby.ts @@ -1,7 +1,7 @@ import crypto from 'crypto' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { safeCompare } from '@/lib/core/security/encryption' -import { generateId } from '@/lib/core/utils/uuid' import { getNotificationUrl, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' import type { DeleteSubscriptionContext, diff --git a/apps/sim/lib/webhooks/providers/attio.ts b/apps/sim/lib/webhooks/providers/attio.ts index 6c23b6939f7..7ac8f87c7b5 100644 --- a/apps/sim/lib/webhooks/providers/attio.ts +++ b/apps/sim/lib/webhooks/providers/attio.ts @@ -1,8 +1,8 @@ import crypto from 'crypto' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { safeCompare } from '@/lib/core/security/encryption' -import { toError } from '@/lib/core/utils/helpers' import { getBaseUrl } from '@/lib/core/utils/urls' import { getCredentialOwner, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' import type { diff --git a/apps/sim/lib/webhooks/providers/gong.ts b/apps/sim/lib/webhooks/providers/gong.ts index 6a836892072..f1c3f355dc3 100644 --- a/apps/sim/lib/webhooks/providers/gong.ts +++ b/apps/sim/lib/webhooks/providers/gong.ts @@ -1,8 +1,8 @@ import { createHash } from 'node:crypto' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import * as jose from 'jose' import { NextResponse } from 'next/server' -import { toError } from '@/lib/core/utils/helpers' import type { AuthContext, FormatInputContext, diff --git a/apps/sim/lib/webhooks/providers/linear.ts b/apps/sim/lib/webhooks/providers/linear.ts index 00fd67b9e06..457d0992ab5 100644 --- a/apps/sim/lib/webhooks/providers/linear.ts +++ b/apps/sim/lib/webhooks/providers/linear.ts @@ -1,9 +1,9 @@ import crypto from 'crypto' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { NextResponse } from 'next/server' import { safeCompare } from '@/lib/core/security/encryption' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getNotificationUrl, getProviderConfig } from '@/lib/webhooks/provider-subscription-utils' import type { AuthContext, diff --git a/apps/sim/lib/webhooks/providers/microsoft-teams.ts b/apps/sim/lib/webhooks/providers/microsoft-teams.ts index 5344fa02ee7..68e588d6f57 100644 --- a/apps/sim/lib/webhooks/providers/microsoft-teams.ts +++ b/apps/sim/lib/webhooks/providers/microsoft-teams.ts @@ -2,6 +2,7 @@ import crypto from 'crypto' import { db } from '@sim/db' import { account } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { eq } from 'drizzle-orm' import { type NextRequest, NextResponse } from 'next/server' import { safeCompare } from '@/lib/core/security/encryption' @@ -11,7 +12,6 @@ import { secureFetchWithPinnedIP, validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import { sanitizeUrlForLog } from '@/lib/core/utils/logging' import { getCredentialOwner, diff --git a/apps/sim/lib/webhooks/providers/monday.ts b/apps/sim/lib/webhooks/providers/monday.ts index 9a932edfee1..da7f872c6fa 100644 --- a/apps/sim/lib/webhooks/providers/monday.ts +++ b/apps/sim/lib/webhooks/providers/monday.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { validateMondayNumericId } from '@/lib/core/security/input-validation' -import { toError } from '@/lib/core/utils/helpers' import { getCredentialOwner, getNotificationUrl, diff --git a/apps/sim/lib/webhooks/providers/slack.ts b/apps/sim/lib/webhooks/providers/slack.ts index da87722b5cf..a5488f0aa4e 100644 --- a/apps/sim/lib/webhooks/providers/slack.ts +++ b/apps/sim/lib/webhooks/providers/slack.ts @@ -1,12 +1,12 @@ import crypto from 'crypto' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { NextResponse } from 'next/server' import { safeCompare } from '@/lib/core/security/encryption' import { secureFetchWithPinnedIP, validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' -import { toError } from '@/lib/core/utils/helpers' import type { AuthContext, FormatInputContext, diff --git a/apps/sim/lib/webhooks/providers/vercel.test.ts b/apps/sim/lib/webhooks/providers/vercel.test.ts index 0792b26c45e..9bd56a7bab7 100644 --- a/apps/sim/lib/webhooks/providers/vercel.test.ts +++ b/apps/sim/lib/webhooks/providers/vercel.test.ts @@ -3,18 +3,9 @@ */ import crypto from 'crypto' import { createMockRequest } from '@sim/testing' -import { describe, expect, it, vi } from 'vitest' +import { describe, expect, it } from 'vitest' import { vercelHandler } from '@/lib/webhooks/providers/vercel' -vi.mock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - describe('vercelHandler', () => { describe('verifyAuth', () => { const secret = 'test-signing-secret' diff --git a/apps/sim/lib/webhooks/providers/whatsapp.test.ts b/apps/sim/lib/webhooks/providers/whatsapp.test.ts index f648bd776a0..99dcc53c531 100644 --- a/apps/sim/lib/webhooks/providers/whatsapp.test.ts +++ b/apps/sim/lib/webhooks/providers/whatsapp.test.ts @@ -2,6 +2,7 @@ * @vitest-environment node */ import { createHmac } from 'node:crypto' +import { schemaMock } from '@sim/testing' import { NextRequest } from 'next/server' import { describe, expect, it, vi } from 'vitest' @@ -10,9 +11,7 @@ vi.mock('@sim/db', () => ({ workflowDeploymentVersion: {}, })) -vi.mock('@sim/db/schema', () => ({ - webhook: {}, -})) +vi.mock('@sim/db/schema', () => schemaMock) import { whatsappHandler } from './whatsapp' diff --git a/apps/sim/lib/webhooks/providers/zoom.ts b/apps/sim/lib/webhooks/providers/zoom.ts index 67a0800dd0c..409d7c8f921 100644 --- a/apps/sim/lib/webhooks/providers/zoom.ts +++ b/apps/sim/lib/webhooks/providers/zoom.ts @@ -1,11 +1,11 @@ import crypto from 'crypto' import { db, webhook, workflow } from '@sim/db' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { and, eq } from 'drizzle-orm' import type { NextRequest } from 'next/server' import { NextResponse } from 'next/server' import { safeCompare } from '@/lib/core/security/encryption' -import { toError } from '@/lib/core/utils/helpers' import { resolveEnvVarsInObject } from '@/lib/webhooks/env-resolver' import type { AuthContext, diff --git a/apps/sim/lib/webhooks/utils.server.ts b/apps/sim/lib/webhooks/utils.server.ts index 4e0d3d168be..84698d05cf2 100644 --- a/apps/sim/lib/webhooks/utils.server.ts +++ b/apps/sim/lib/webhooks/utils.server.ts @@ -1,8 +1,8 @@ import { db, workflowDeploymentVersion } from '@sim/db' import { webhook, workflow } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, eq, isNull, or } from 'drizzle-orm' -import { generateShortId } from '@/lib/core/utils/uuid' import type { DbOrTx } from '@/lib/db/types' import { getProviderIdFromServiceId } from '@/lib/oauth' import { cleanupExternalWebhook } from '@/lib/webhooks/provider-subscriptions' diff --git a/apps/sim/lib/workflows/custom-tools/operations.ts b/apps/sim/lib/workflows/custom-tools/operations.ts index d77b8220110..8fbccef1b43 100644 --- a/apps/sim/lib/workflows/custom-tools/operations.ts +++ b/apps/sim/lib/workflows/custom-tools/operations.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { customTools } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, desc, eq, isNull, or } from 'drizzle-orm' import { generateRequestId } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('CustomToolsOperations') diff --git a/apps/sim/lib/workflows/defaults.ts b/apps/sim/lib/workflows/defaults.ts index c6c4c001c5c..e9dc0f8076b 100644 --- a/apps/sim/lib/workflows/defaults.ts +++ b/apps/sim/lib/workflows/defaults.ts @@ -1,4 +1,4 @@ -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { getBlock } from '@/blocks' import type { BlockConfig, SubBlockConfig } from '@/blocks/types' diff --git a/apps/sim/lib/workflows/diff/diff-engine.test.ts b/apps/sim/lib/workflows/diff/diff-engine.test.ts index 04cf3d18197..f4ff309a066 100644 --- a/apps/sim/lib/workflows/diff/diff-engine.test.ts +++ b/apps/sim/lib/workflows/diff/diff-engine.test.ts @@ -1,12 +1,9 @@ /** * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { BlockState, WorkflowState } from '@/stores/workflows/workflow/types' -vi.mock('@sim/logger', () => loggerMock) - vi.mock('@/stores/workflows/workflow/store', () => ({ useWorkflowStore: { getState: () => ({ diff --git a/apps/sim/lib/workflows/diff/diff-engine.ts b/apps/sim/lib/workflows/diff/diff-engine.ts index 3f025b8fe00..de00b7439dc 100644 --- a/apps/sim/lib/workflows/diff/diff-engine.ts +++ b/apps/sim/lib/workflows/diff/diff-engine.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { Edge } from 'reactflow' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { getTargetedLayoutImpact } from '@/lib/workflows/autolayout' import type { BlockWithDiff } from '@/lib/workflows/diff/types' import { isValidKey } from '@/lib/workflows/sanitization/key-validation' diff --git a/apps/sim/lib/workflows/executor/execute-workflow.ts b/apps/sim/lib/workflows/executor/execute-workflow.ts index 51843ffe2af..f812ed6b328 100644 --- a/apps/sim/lib/workflows/executor/execute-workflow.ts +++ b/apps/sim/lib/workflows/executor/execute-workflow.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { captureServerEvent } from '@/lib/posthog/server' import { executeWorkflowCore } from '@/lib/workflows/executor/execution-core' diff --git a/apps/sim/lib/workflows/executor/execution-core.test.ts b/apps/sim/lib/workflows/executor/execution-core.test.ts index a0a4e3d0da5..86b3a085bdb 100644 --- a/apps/sim/lib/workflows/executor/execution-core.test.ts +++ b/apps/sim/lib/workflows/executor/execution-core.test.ts @@ -1,8 +1,12 @@ +import { + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' const { - loadWorkflowFromNormalizedTablesMock, - loadDeployedWorkflowStateMock, getPersonalAndWorkspaceEnvMock, mergeSubblockStateWithValuesMock, safeStartMock, @@ -11,7 +15,6 @@ const { safeCompleteWithCancellationMock, safeCompleteWithPauseMock, hasCompletedMock, - updateWorkflowRunCountsMock, clearExecutionCancellationMock, buildTraceSpansMock, serializeWorkflowMock, @@ -20,8 +23,6 @@ const { executorConstructorMock, findStartBlockMock, } = vi.hoisted(() => ({ - loadWorkflowFromNormalizedTablesMock: vi.fn(), - loadDeployedWorkflowStateMock: vi.fn(), getPersonalAndWorkspaceEnvMock: vi.fn(), mergeSubblockStateWithValuesMock: vi.fn(), safeStartMock: vi.fn(), @@ -30,7 +31,6 @@ const { safeCompleteWithCancellationMock: vi.fn(), safeCompleteWithPauseMock: vi.fn(), hasCompletedMock: vi.fn(), - updateWorkflowRunCountsMock: vi.fn(), clearExecutionCancellationMock: vi.fn(), buildTraceSpansMock: vi.fn(), serializeWorkflowMock: vi.fn(), @@ -40,14 +40,10 @@ const { findStartBlockMock: vi.fn(), })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - error: vi.fn(), - warn: vi.fn(), - debug: vi.fn(), - }), -})) +const loadWorkflowFromNormalizedTablesMock = + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables +const loadDeployedWorkflowStateMock = workflowsPersistenceUtilsMockFns.mockLoadDeployedWorkflowState +const updateWorkflowRunCountsMock = workflowsUtilsMockFns.mockUpdateWorkflowRunCounts vi.mock('@/lib/environment/utils', () => ({ getPersonalAndWorkspaceEnv: getPersonalAndWorkspaceEnvMock, @@ -61,10 +57,7 @@ vi.mock('@/lib/logs/execution/trace-spans/trace-spans', () => ({ buildTraceSpans: buildTraceSpansMock, })) -vi.mock('@/lib/workflows/persistence/utils', () => ({ - loadWorkflowFromNormalizedTables: loadWorkflowFromNormalizedTablesMock, - loadDeployedWorkflowState: loadDeployedWorkflowStateMock, -})) +vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) vi.mock('@/lib/workflows/subblocks', () => ({ mergeSubblockStateWithValues: mergeSubblockStateWithValuesMock, @@ -76,9 +69,7 @@ vi.mock('@/lib/workflows/triggers/triggers', () => ({ }, })) -vi.mock('@/lib/workflows/utils', () => ({ - updateWorkflowRunCounts: updateWorkflowRunCountsMock, -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/executor', () => ({ Executor: vi.fn().mockImplementation((args) => { diff --git a/apps/sim/lib/workflows/executor/human-in-the-loop-manager.ts b/apps/sim/lib/workflows/executor/human-in-the-loop-manager.ts index b0e0c1d8cf0..97285d7579a 100644 --- a/apps/sim/lib/workflows/executor/human-in-the-loop-manager.ts +++ b/apps/sim/lib/workflows/executor/human-in-the-loop-manager.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { pausedExecutions, resumeQueue, workflowExecutionLogs } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import { and, asc, desc, eq, inArray, lt, type SQL, sql } from 'drizzle-orm' import type { Edge } from 'reactflow' import { createTimeoutAbortController, getTimeoutErrorMessage } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { createExecutionEventWriter, setExecutionMeta } from '@/lib/execution/event-buffer' import { preprocessExecution } from '@/lib/execution/preprocessing' import { LoggingSession } from '@/lib/logs/execution/logging-session' diff --git a/apps/sim/lib/workflows/executor/pause-persistence.ts b/apps/sim/lib/workflows/executor/pause-persistence.ts index 019f2084139..57036dccf6f 100644 --- a/apps/sim/lib/workflows/executor/pause-persistence.ts +++ b/apps/sim/lib/workflows/executor/pause-persistence.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { LoggingSession } from '@/lib/logs/execution/logging-session' import { PauseResumeManager } from '@/lib/workflows/executor/human-in-the-loop-manager' import type { ExecutionResult } from '@/executor/types' diff --git a/apps/sim/lib/workflows/executor/queued-workflow-execution.ts b/apps/sim/lib/workflows/executor/queued-workflow-execution.ts index c37fefef20d..4d9e3dfaa36 100644 --- a/apps/sim/lib/workflows/executor/queued-workflow-execution.ts +++ b/apps/sim/lib/workflows/executor/queued-workflow-execution.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { createTimeoutAbortController, getTimeoutErrorMessage } from '@/lib/core/execution-limits' -import { toError } from '@/lib/core/utils/helpers' import { createExecutionEventWriter, setExecutionMeta } from '@/lib/execution/event-buffer' import { LoggingSession } from '@/lib/logs/execution/logging-session' import { buildTraceSpans } from '@/lib/logs/execution/trace-spans/trace-spans' diff --git a/apps/sim/lib/workflows/lifecycle.test.ts b/apps/sim/lib/workflows/lifecycle.test.ts index 28c3b2386ee..8f210d1e549 100644 --- a/apps/sim/lib/workflows/lifecycle.test.ts +++ b/apps/sim/lib/workflows/lifecycle.test.ts @@ -1,21 +1,26 @@ /** * @vitest-environment node */ +import { + createEnvMock, + schemaMock, + urlsMock, + urlsMockFns, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { - mockSelect, - mockTransaction, - mockGetWorkflowById, - mockCleanupExternalWebhook, - mockWorkflowDeleted, -} = vi.hoisted(() => ({ - mockSelect: vi.fn(), - mockTransaction: vi.fn(), - mockGetWorkflowById: vi.fn(), - mockCleanupExternalWebhook: vi.fn(), - mockWorkflowDeleted: vi.fn(), -})) +const { mockSelect, mockTransaction, mockCleanupExternalWebhook, mockWorkflowDeleted } = vi.hoisted( + () => ({ + mockSelect: vi.fn(), + mockTransaction: vi.fn(), + mockCleanupExternalWebhook: vi.fn(), + mockWorkflowDeleted: vi.fn(), + }) +) + +const mockGetWorkflowById = workflowsUtilsMockFns.mockGetWorkflowById vi.mock('@sim/db', () => ({ db: { @@ -24,44 +29,19 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - a2aAgent: { archivedAt: 'a2a_archived_at' }, - chat: { archivedAt: 'chat_archived_at' }, - form: { archivedAt: 'form_archived_at' }, - webhook: { archivedAt: 'webhook_archived_at' }, - workflow: { archivedAt: 'workflow_archived_at' }, - workflowDeploymentVersion: { isActive: 'workflow_deployment_version_is_active' }, - workflowMcpTool: { archivedAt: 'workflow_mcp_tool_archived_at' }, - workflowSchedule: { archivedAt: 'workflow_schedule_archived_at' }, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) -vi.mock('@/lib/workflows/utils', () => ({ - getWorkflowById: (...args: unknown[]) => mockGetWorkflowById(...args), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) vi.mock('@/lib/webhooks/provider-subscriptions', () => ({ cleanupExternalWebhook: (...args: unknown[]) => mockCleanupExternalWebhook(...args), })) -vi.mock('@/lib/core/config/env', () => ({ - env: { - SOCKET_SERVER_URL: 'http://socket.test', - INTERNAL_API_SECRET: 'secret', - }, - getEnv: vi.fn(), -})) +vi.mock('@/lib/core/config/env', () => + createEnvMock({ SOCKET_SERVER_URL: 'http://socket.test', INTERNAL_API_SECRET: 'secret' }) +) -vi.mock('@/lib/core/utils/urls', () => ({ - getSocketServerUrl: vi.fn().mockReturnValue('http://socket.test'), -})) +vi.mock('@/lib/core/utils/urls', () => urlsMock) vi.mock('@/lib/core/telemetry', () => ({ PlatformEvents: { @@ -92,6 +72,7 @@ function createUpdateChain() { describe('workflow lifecycle', () => { beforeEach(() => { vi.clearAllMocks() + urlsMockFns.mockGetSocketServerUrl.mockReturnValue('http://socket.test') vi.stubGlobal('fetch', vi.fn().mockResolvedValue({ ok: true })) }) diff --git a/apps/sim/lib/workflows/operations/import-export.ts b/apps/sim/lib/workflows/operations/import-export.ts index 093f3617a9f..aa19e967834 100644 --- a/apps/sim/lib/workflows/operations/import-export.ts +++ b/apps/sim/lib/workflows/operations/import-export.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import { type ExportWorkflowState, sanitizeForExport, diff --git a/apps/sim/lib/workflows/operations/socket-operations.ts b/apps/sim/lib/workflows/operations/socket-operations.ts index 8c951088aa4..a19edbe1094 100644 --- a/apps/sim/lib/workflows/operations/socket-operations.ts +++ b/apps/sim/lib/workflows/operations/socket-operations.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { client } from '@/lib/auth/auth-client' -import { generateId } from '@/lib/core/utils/uuid' import { useOperationQueueStore } from '@/stores/operation-queue/store' import type { WorkflowState } from '@/stores/workflows/workflow/types' import { normalizeWorkflowState } from '@/stores/workflows/workflow/validation' diff --git a/apps/sim/lib/workflows/orchestration/chat-deploy.ts b/apps/sim/lib/workflows/orchestration/chat-deploy.ts index 03ec584547d..e10323445d4 100644 --- a/apps/sim/lib/workflows/orchestration/chat-deploy.ts +++ b/apps/sim/lib/workflows/orchestration/chat-deploy.ts @@ -1,11 +1,11 @@ import { db } from '@sim/db' import { chat } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull } from 'drizzle-orm' import { AuditAction, AuditResourceType, recordAudit } from '@/lib/audit/log' import { encryptSecret } from '@/lib/core/security/encryption' import { getBaseUrl } from '@/lib/core/utils/urls' -import { generateId } from '@/lib/core/utils/uuid' import { performFullDeploy } from '@/lib/workflows/orchestration/deploy' const logger = createLogger('ChatDeployOrchestration') diff --git a/apps/sim/lib/workflows/persistence/custom-tools-persistence.ts b/apps/sim/lib/workflows/persistence/custom-tools-persistence.ts index c9f64606f43..05f215fd8c1 100644 --- a/apps/sim/lib/workflows/persistence/custom-tools-persistence.ts +++ b/apps/sim/lib/workflows/persistence/custom-tools-persistence.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { upsertCustomTools } from '@/lib/workflows/custom-tools/operations' const logger = createLogger('CustomToolsPersistence') diff --git a/apps/sim/lib/workflows/persistence/duplicate.test.ts b/apps/sim/lib/workflows/persistence/duplicate.test.ts index 95ada5cd481..58e44a6a091 100644 --- a/apps/sim/lib/workflows/persistence/duplicate.test.ts +++ b/apps/sim/lib/workflows/persistence/duplicate.test.ts @@ -1,11 +1,19 @@ /** * @vitest-environment node */ +import { + permissionsMock, + permissionsMockFns, + schemaMock, + workflowsUtilsMock, + workflowsUtilsMockFns, +} from '@sim/testing' import { drizzleOrmMock } from '@sim/testing/mocks' import { beforeEach, describe, expect, it, vi } from 'vitest' -const mockAuthorizeWorkflowByWorkspacePermission = vi.fn() -const mockGetUserEntityPermissions = vi.fn() +const mockAuthorizeWorkflowByWorkspacePermission = + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission +const mockGetUserEntityPermissions = permissionsMockFns.mockGetUserEntityPermissions const { mockDb } = vi.hoisted(() => ({ mockDb: { @@ -17,39 +25,11 @@ vi.mock('drizzle-orm', () => ({ ...drizzleOrmMock, min: vi.fn((field) => ({ type: 'min', field })), })) -vi.mock('@/lib/workflows/utils', () => ({ - authorizeWorkflowByWorkspacePermission: (...args: unknown[]) => - mockAuthorizeWorkflowByWorkspacePermission(...args), - deduplicateWorkflowName: vi.fn(async (name: string) => name), -})) +vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getUserEntityPermissions: (...args: unknown[]) => mockGetUserEntityPermissions(...args), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) -vi.mock('@sim/db/schema', () => ({ - workflow: { - id: 'id', - workspaceId: 'workspaceId', - folderId: 'folderId', - sortOrder: 'sortOrder', - variables: 'variables', - }, - workflowFolder: { - workspaceId: 'workspaceId', - parentId: 'parentId', - sortOrder: 'sortOrder', - }, - workflowBlocks: { - workflowId: 'workflowId', - }, - workflowEdges: { - workflowId: 'workflowId', - }, - workflowSubflows: { - workflowId: 'workflowId', - }, -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@sim/db', () => ({ db: mockDb, @@ -106,6 +86,9 @@ describe('duplicateWorkflow ordering', () => { }) mockAuthorizeWorkflowByWorkspacePermission.mockResolvedValue({ allowed: true }) + workflowsUtilsMockFns.mockDeduplicateWorkflowName.mockImplementation( + async (name: string) => name + ) mockGetUserEntityPermissions.mockResolvedValue('write') }) diff --git a/apps/sim/lib/workflows/persistence/duplicate.ts b/apps/sim/lib/workflows/persistence/duplicate.ts index f0dd52614b5..ff111d203a0 100644 --- a/apps/sim/lib/workflows/persistence/duplicate.ts +++ b/apps/sim/lib/workflows/persistence/duplicate.ts @@ -7,8 +7,8 @@ import { workflowSubflows, } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, isNull, min } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { remapConditionBlockIds, remapConditionEdgeHandle } from '@/lib/workflows/condition-ids' import { authorizeWorkflowByWorkspacePermission, diff --git a/apps/sim/lib/workflows/persistence/utils.test.ts b/apps/sim/lib/workflows/persistence/utils.test.ts index e5e02b74a6d..3a8f3c47cba 100644 --- a/apps/sim/lib/workflows/persistence/utils.test.ts +++ b/apps/sim/lib/workflows/persistence/utils.test.ts @@ -16,9 +16,7 @@ import { createParallelBlock, createStarterBlock, createWorkflowState, - loggerMock, } from '@sim/testing' -import { drizzleOrmMock } from '@sim/testing/mocks' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { BlockState as AppBlockState, @@ -114,10 +112,6 @@ vi.mock('@sim/db', () => ({ webhook: {}, })) -vi.mock('drizzle-orm', () => drizzleOrmMock) - -vi.mock('@sim/logger', () => loggerMock) - import * as dbHelpers from '@/lib/workflows/persistence/utils' const mockWorkflowId = 'test-workflow-123' diff --git a/apps/sim/lib/workflows/persistence/utils.ts b/apps/sim/lib/workflows/persistence/utils.ts index b1f0641bd8b..bbf939b78a5 100644 --- a/apps/sim/lib/workflows/persistence/utils.ts +++ b/apps/sim/lib/workflows/persistence/utils.ts @@ -8,10 +8,10 @@ import { } from '@sim/db' import { credential } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import type { InferInsertModel, InferSelectModel } from 'drizzle-orm' import { and, desc, eq, inArray, sql } from 'drizzle-orm' import type { Edge } from 'reactflow' -import { generateId } from '@/lib/core/utils/uuid' import type { DbOrTx } from '@/lib/db/types' import { getActiveWorkflowContext } from '@/lib/workflows/active-context' import { remapConditionBlockIds, remapConditionEdgeHandle } from '@/lib/workflows/condition-ids' diff --git a/apps/sim/lib/workflows/sanitization/validation.ts b/apps/sim/lib/workflows/sanitization/validation.ts index 58defea1269..a3aabb946e6 100644 --- a/apps/sim/lib/workflows/sanitization/validation.ts +++ b/apps/sim/lib/workflows/sanitization/validation.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { getBlock } from '@/blocks/registry' import { isCustomTool, isMcpTool } from '@/executor/constants' import type { BlockState, WorkflowState } from '@/stores/workflows/workflow/types' diff --git a/apps/sim/lib/workflows/schedules/deploy.test.ts b/apps/sim/lib/workflows/schedules/deploy.test.ts index f58755a307d..8e6e5a33189 100644 --- a/apps/sim/lib/workflows/schedules/deploy.test.ts +++ b/apps/sim/lib/workflows/schedules/deploy.test.ts @@ -3,7 +3,6 @@ * * @vitest-environment node */ -import { loggerMock } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' const { @@ -61,8 +60,6 @@ vi.mock('@/lib/webhooks/deploy', () => ({ cleanupWebhooksForWorkflow: vi.fn().mockResolvedValue(undefined), })) -vi.mock('@sim/logger', () => loggerMock) - vi.mock('./utils', async (importOriginal) => { const original = await importOriginal() return { diff --git a/apps/sim/lib/workflows/schedules/deploy.ts b/apps/sim/lib/workflows/schedules/deploy.ts index 1405aa3f073..f413b2665e6 100644 --- a/apps/sim/lib/workflows/schedules/deploy.ts +++ b/apps/sim/lib/workflows/schedules/deploy.ts @@ -1,7 +1,7 @@ import { db, workflowSchedule } from '@sim/db' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, eq, inArray, isNull } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import type { DbOrTx } from '@/lib/db/types' import { cleanupWebhooksForWorkflow } from '@/lib/webhooks/deploy' import type { BlockState } from '@/lib/workflows/schedules/utils' diff --git a/apps/sim/lib/workflows/schedules/utils.ts b/apps/sim/lib/workflows/schedules/utils.ts index 51b42ae04aa..aadd8d53ae2 100644 --- a/apps/sim/lib/workflows/schedules/utils.ts +++ b/apps/sim/lib/workflows/schedules/utils.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { formatDateTime } from '@sim/utils/formatting' import { Cron } from 'croner' import cronstrue from 'cronstrue' -import { formatDateTime } from '@/lib/core/utils/formatting' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('ScheduleUtils') diff --git a/apps/sim/lib/workflows/skills/operations.ts b/apps/sim/lib/workflows/skills/operations.ts index 2c725d3fa64..d033a1a6ffd 100644 --- a/apps/sim/lib/workflows/skills/operations.ts +++ b/apps/sim/lib/workflows/skills/operations.ts @@ -1,9 +1,9 @@ import { db } from '@sim/db' import { skill } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateShortId } from '@sim/utils/id' import { and, desc, eq, ne } from 'drizzle-orm' import { generateRequestId } from '@/lib/core/utils/request' -import { generateShortId } from '@/lib/core/utils/uuid' const logger = createLogger('SkillsOperations') diff --git a/apps/sim/lib/workflows/triggers/trigger-utils.ts b/apps/sim/lib/workflows/triggers/trigger-utils.ts index e2b1d4e5aa4..4be09424a5f 100644 --- a/apps/sim/lib/workflows/triggers/trigger-utils.ts +++ b/apps/sim/lib/workflows/triggers/trigger-utils.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isInputDefinitionTrigger } from '@/lib/workflows/triggers/input-definition-triggers' import { type StartBlockCandidate, diff --git a/apps/sim/lib/workflows/utils.test.ts b/apps/sim/lib/workflows/utils.test.ts index 0be09c73815..f08dce38705 100644 --- a/apps/sim/lib/workflows/utils.test.ts +++ b/apps/sim/lib/workflows/utils.test.ts @@ -8,6 +8,8 @@ */ import { + authMock, + authMockFns, createSession, createWorkflowRecord, databaseMock, @@ -16,14 +18,11 @@ import { } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockGetSession, mockGetActiveWorkflowContext } = vi.hoisted(() => ({ - mockGetSession: vi.fn(), +const { mockGetActiveWorkflowContext } = vi.hoisted(() => ({ mockGetActiveWorkflowContext: vi.fn(), })) -vi.mock('@/lib/auth', () => ({ - getSession: mockGetSession, -})) +vi.mock('@/lib/auth', () => authMock) vi.mock('@/lib/workflows/active-context', () => ({ getActiveWorkflowContext: mockGetActiveWorkflowContext, @@ -47,7 +46,7 @@ describe('validateWorkflowPermissions', () => { describe('authentication', () => { it('should return 401 when no session exists', async () => { - mockGetSession.mockResolvedValue(null) + authMockFns.mockGetSession.mockResolvedValue(null) const result = await validateWorkflowPermissions('wf-1', 'req-1', 'read') @@ -56,7 +55,7 @@ describe('validateWorkflowPermissions', () => { }) it('should return 401 when session has no user id', async () => { - mockGetSession.mockResolvedValue({ user: {} }) + authMockFns.mockGetSession.mockResolvedValue({ user: {} }) const result = await validateWorkflowPermissions('wf-1', 'req-1', 'read') @@ -66,7 +65,7 @@ describe('validateWorkflowPermissions', () => { describe('workflow not found', () => { it('should return 404 when workflow does not exist', async () => { - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) mockGetActiveWorkflowContext.mockResolvedValue(null) const result = await validateWorkflowPermissions('non-existent', 'req-1', 'read') @@ -78,7 +77,9 @@ describe('validateWorkflowPermissions', () => { describe('owner access', () => { it('should deny access to workflow owner without workspace permissions for read action', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'owner-1', email: 'owner-1@test.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'owner-1', email: 'owner-1@test.com' }, + }) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: mockWorkflow, workspaceId: 'ws-1', @@ -95,7 +96,9 @@ describe('validateWorkflowPermissions', () => { }) it('should deny access to workflow owner without workspace permissions for write action', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'owner-1', email: 'owner-1@test.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'owner-1', email: 'owner-1@test.com' }, + }) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: mockWorkflow, workspaceId: 'ws-1', @@ -112,7 +115,9 @@ describe('validateWorkflowPermissions', () => { }) it('should deny access to workflow owner without workspace permissions for admin action', async () => { - mockGetSession.mockResolvedValue({ user: { id: 'owner-1', email: 'owner-1@test.com' } }) + authMockFns.mockGetSession.mockResolvedValue({ + user: { id: 'owner-1', email: 'owner-1@test.com' }, + }) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: mockWorkflow, workspaceId: 'ws-1', @@ -131,7 +136,7 @@ describe('validateWorkflowPermissions', () => { describe('workspace member access with permissions', () => { beforeEach(() => { - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) }) it('should grant read access to user with read permission', async () => { @@ -235,7 +240,7 @@ describe('validateWorkflowPermissions', () => { describe('no workspace permission', () => { it('should deny access to user without any workspace permission', async () => { - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: mockWorkflow, workspaceId: 'ws-1', @@ -260,7 +265,7 @@ describe('validateWorkflowPermissions', () => { workspaceId: null, }) - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: workflowWithoutWorkspace, workspaceId: '', @@ -278,7 +283,7 @@ describe('validateWorkflowPermissions', () => { workspaceId: null, }) - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: workflowWithoutWorkspace, workspaceId: '', @@ -292,7 +297,7 @@ describe('validateWorkflowPermissions', () => { describe('default action', () => { it('should default to read action when not specified', async () => { - mockGetSession.mockResolvedValue(mockSession) + authMockFns.mockGetSession.mockResolvedValue(mockSession) mockGetActiveWorkflowContext.mockResolvedValue({ workflow: mockWorkflow, workspaceId: 'ws-1', diff --git a/apps/sim/lib/workflows/utils.ts b/apps/sim/lib/workflows/utils.ts index 31d70991eae..5dfdc5c0668 100644 --- a/apps/sim/lib/workflows/utils.ts +++ b/apps/sim/lib/workflows/utils.ts @@ -1,10 +1,10 @@ import { db } from '@sim/db' import { permissions, userStats, workflowFolder, workflow as workflowTable } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { and, asc, eq, inArray, isNull, max, min, sql } from 'drizzle-orm' import { NextResponse } from 'next/server' import { getSession } from '@/lib/auth' -import { generateId } from '@/lib/core/utils/uuid' import { getActiveWorkflowContext } from '@/lib/workflows/active-context' import { getNextWorkflowColor } from '@/lib/workflows/colors' import { buildDefaultWorkflowArtifacts } from '@/lib/workflows/defaults' diff --git a/apps/sim/lib/workspaces/duplicate.ts b/apps/sim/lib/workspaces/duplicate.ts index 53172001eff..1580214c96b 100644 --- a/apps/sim/lib/workspaces/duplicate.ts +++ b/apps/sim/lib/workspaces/duplicate.ts @@ -1,8 +1,8 @@ import { db } from '@sim/db' import { permissions, workflow, workflowFolder, workspace as workspaceTable } from '@sim/db/schema' import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { eq } from 'drizzle-orm' -import { generateId } from '@/lib/core/utils/uuid' import { duplicateWorkflow } from '@/lib/workflows/persistence/duplicate' import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils' diff --git a/apps/sim/lib/workspaces/lifecycle.test.ts b/apps/sim/lib/workspaces/lifecycle.test.ts index cdc6c2fc611..7743c60c5e7 100644 --- a/apps/sim/lib/workspaces/lifecycle.test.ts +++ b/apps/sim/lib/workspaces/lifecycle.test.ts @@ -1,15 +1,16 @@ /** * @vitest-environment node */ +import { permissionsMock, permissionsMockFns, schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -const { mockSelect, mockTransaction, mockArchiveWorkflowsForWorkspace, mockGetWorkspaceWithOwner } = - vi.hoisted(() => ({ - mockSelect: vi.fn(), - mockTransaction: vi.fn(), - mockArchiveWorkflowsForWorkspace: vi.fn(), - mockGetWorkspaceWithOwner: vi.fn(), - })) +const { mockSelect, mockTransaction, mockArchiveWorkflowsForWorkspace } = vi.hoisted(() => ({ + mockSelect: vi.fn(), + mockTransaction: vi.fn(), + mockArchiveWorkflowsForWorkspace: vi.fn(), +})) + +const mockGetWorkspaceWithOwner = permissionsMockFns.mockGetWorkspaceWithOwner vi.mock('@sim/db', () => ({ db: { @@ -18,36 +19,13 @@ vi.mock('@sim/db', () => ({ }, })) -vi.mock('@sim/db/schema', () => ({ - apiKey: { type: 'api_key_type' }, - document: { deletedAt: 'document_deleted_at', knowledgeBaseId: 'document_kb_id' }, - knowledgeBase: { deletedAt: 'kb_deleted_at' }, - knowledgeConnector: { deletedAt: 'knowledge_connector_deleted_at', knowledgeBaseId: 'kc_kb_id' }, - mcpServers: { deletedAt: 'mcp_servers_deleted_at' }, - userTableDefinitions: { archivedAt: 'table_archived_at' }, - workflowSchedule: { archivedAt: 'schedule_archived_at' }, - workspace: { archivedAt: 'workspace_archived_at' }, - workflowMcpServer: { isPublic: 'workflow_mcp_server_is_public' }, - workspaceFiles: { deletedAt: 'workspace_file_deleted_at' }, - workspaceInvitation: { status: 'workspace_invitation_status' }, - workspaceNotificationSubscription: { active: 'workspace_notification_active' }, -})) - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - }), -})) +vi.mock('@sim/db/schema', () => schemaMock) vi.mock('@/lib/workflows/lifecycle', () => ({ archiveWorkflowsForWorkspace: (...args: unknown[]) => mockArchiveWorkflowsForWorkspace(...args), })) -vi.mock('@/lib/workspaces/permissions/utils', () => ({ - getWorkspaceWithOwner: (...args: unknown[]) => mockGetWorkspaceWithOwner(...args), -})) +vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) import { archiveWorkspace } from './lifecycle' diff --git a/apps/sim/lib/workspaces/permissions/utils.test.ts b/apps/sim/lib/workspaces/permissions/utils.test.ts index 04d86332339..dbd8e9a5386 100644 --- a/apps/sim/lib/workspaces/permissions/utils.test.ts +++ b/apps/sim/lib/workspaces/permissions/utils.test.ts @@ -1,32 +1,7 @@ -import { databaseMock, drizzleOrmMock } from '@sim/testing' +import { schemaMock } from '@sim/testing' import { beforeEach, describe, expect, it, vi } from 'vitest' -vi.mock('@sim/db', () => databaseMock) - -vi.mock('@sim/db/schema', () => ({ - permissions: { - permissionType: 'permission_type', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - id: 'permission_id', - }, - permissionTypeEnum: { - enumValues: ['admin', 'write', 'read'] as const, - }, - user: { - id: 'user_id', - email: 'user_email', - name: 'user_name', - }, - workspace: { - id: 'workspace_id', - name: 'workspace_name', - ownerId: 'workspace_owner_id', - }, -})) - -vi.mock('drizzle-orm', () => drizzleOrmMock) +vi.mock('@sim/db/schema', () => schemaMock) import { db } from '@sim/db' import { diff --git a/apps/sim/providers/anthropic/core.ts b/apps/sim/providers/anthropic/core.ts index 756cd8f248a..c51d1420188 100644 --- a/apps/sim/providers/anthropic/core.ts +++ b/apps/sim/providers/anthropic/core.ts @@ -2,7 +2,7 @@ import type Anthropic from '@anthropic-ai/sdk' import { transformJSONSchema } from '@anthropic-ai/sdk/lib/transform-json-schema' import type { RawMessageStreamEvent } from '@anthropic-ai/sdk/resources/messages/messages' import type { Logger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { diff --git a/apps/sim/providers/azure-openai/index.ts b/apps/sim/providers/azure-openai/index.ts index a1ef02578fc..0d8566be602 100644 --- a/apps/sim/providers/azure-openai/index.ts +++ b/apps/sim/providers/azure-openai/index.ts @@ -1,4 +1,5 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { AzureOpenAI } from 'openai' import type { ChatCompletion, @@ -10,7 +11,6 @@ import type { } from 'openai/resources/chat/completions' import type { ReasoningEffort } from 'openai/resources/shared' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { diff --git a/apps/sim/providers/bedrock/index.ts b/apps/sim/providers/bedrock/index.ts index 60d5dd36a13..f054d781999 100644 --- a/apps/sim/providers/bedrock/index.ts +++ b/apps/sim/providers/bedrock/index.ts @@ -13,7 +13,7 @@ import { type ToolUseBlock, } from '@aws-sdk/client-bedrock-runtime' import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { diff --git a/apps/sim/providers/cerebras/index.ts b/apps/sim/providers/cerebras/index.ts index f1f111c267e..2bdfcdc1722 100644 --- a/apps/sim/providers/cerebras/index.ts +++ b/apps/sim/providers/cerebras/index.ts @@ -1,6 +1,6 @@ import { Cerebras } from '@cerebras/cerebras_cloud_sdk' import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import type { CerebrasResponse } from '@/providers/cerebras/types' diff --git a/apps/sim/providers/deepseek/index.ts b/apps/sim/providers/deepseek/index.ts index 5b60ec1e78b..bd4abf1ace4 100644 --- a/apps/sim/providers/deepseek/index.ts +++ b/apps/sim/providers/deepseek/index.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { createReadableStreamFromDeepseekStream } from '@/providers/deepseek/utils' diff --git a/apps/sim/providers/fireworks/index.ts b/apps/sim/providers/fireworks/index.ts index 9fd4ff1641b..08d24584f96 100644 --- a/apps/sim/providers/fireworks/index.ts +++ b/apps/sim/providers/fireworks/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { diff --git a/apps/sim/providers/gemini/core.ts b/apps/sim/providers/gemini/core.ts index 851b70fba25..786975eabcc 100644 --- a/apps/sim/providers/gemini/core.ts +++ b/apps/sim/providers/gemini/core.ts @@ -12,7 +12,7 @@ import { type ToolConfig, } from '@google/genai' import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { diff --git a/apps/sim/providers/google/utils.ts b/apps/sim/providers/google/utils.ts index 48f1d43ecc1..f2717ff1092 100644 --- a/apps/sim/providers/google/utils.ts +++ b/apps/sim/providers/google/utils.ts @@ -13,7 +13,7 @@ import { Type, } from '@google/genai' import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { ProviderRequest } from '@/providers/types' import { trackForcedToolUsage } from '@/providers/utils' diff --git a/apps/sim/providers/groq/index.ts b/apps/sim/providers/groq/index.ts index 013386f6e4e..fba8984e86b 100644 --- a/apps/sim/providers/groq/index.ts +++ b/apps/sim/providers/groq/index.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { Groq } from 'groq-sdk' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { createReadableStreamFromGroqStream } from '@/providers/groq/utils' diff --git a/apps/sim/providers/index.ts b/apps/sim/providers/index.ts index b667b05e722..867748b5549 100644 --- a/apps/sim/providers/index.ts +++ b/apps/sim/providers/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { getApiKeyWithBYOK } from '@/lib/api-key/byok' import { getCostMultiplier } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { getProviderExecutor } from '@/providers/registry' import type { ProviderId, ProviderRequest, ProviderResponse } from '@/providers/types' diff --git a/apps/sim/providers/mistral/index.ts b/apps/sim/providers/mistral/index.ts index dcfc103ef44..32e24c1f329 100644 --- a/apps/sim/providers/mistral/index.ts +++ b/apps/sim/providers/mistral/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { createReadableStreamFromMistralStream } from '@/providers/mistral/utils' diff --git a/apps/sim/providers/ollama/index.ts b/apps/sim/providers/ollama/index.ts index dcaa0233b1e..45ea3802b9c 100644 --- a/apps/sim/providers/ollama/index.ts +++ b/apps/sim/providers/ollama/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' -import { toError } from '@/lib/core/utils/helpers' import { getOllamaUrl } from '@/lib/core/utils/urls' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' diff --git a/apps/sim/providers/openai/core.ts b/apps/sim/providers/openai/core.ts index 53e429351b5..6a0104e0651 100644 --- a/apps/sim/providers/openai/core.ts +++ b/apps/sim/providers/openai/core.ts @@ -1,6 +1,6 @@ import type { Logger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type OpenAI from 'openai' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import type { Message, ProviderRequest, ProviderResponse, TimeSegment } from '@/providers/types' diff --git a/apps/sim/providers/openrouter/index.ts b/apps/sim/providers/openrouter/index.ts index 2c57366aac6..89ae932c32d 100644 --- a/apps/sim/providers/openrouter/index.ts +++ b/apps/sim/providers/openrouter/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { getProviderDefaultModel, getProviderModels } from '@/providers/models' diff --git a/apps/sim/providers/openrouter/utils.ts b/apps/sim/providers/openrouter/utils.ts index a914b036e33..8d8dade8279 100644 --- a/apps/sim/providers/openrouter/utils.ts +++ b/apps/sim/providers/openrouter/utils.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { ChatCompletionChunk } from 'openai/resources/chat/completions' import type { CompletionUsage } from 'openai/resources/completions' -import { toError } from '@/lib/core/utils/helpers' import { checkForForcedToolUsageOpenAI, createOpenAICompatibleStream } from '@/providers/utils' const logger = createLogger('OpenRouterUtils') diff --git a/apps/sim/providers/vllm/index.ts b/apps/sim/providers/vllm/index.ts index ae053017176..66027c43f96 100644 --- a/apps/sim/providers/vllm/index.ts +++ b/apps/sim/providers/vllm/index.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' import { env } from '@/lib/core/config/env' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { getProviderDefaultModel, getProviderModels } from '@/providers/models' diff --git a/apps/sim/providers/xai/index.ts b/apps/sim/providers/xai/index.ts index cd7d8b28f8f..fdbed7f5c47 100644 --- a/apps/sim/providers/xai/index.ts +++ b/apps/sim/providers/xai/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import OpenAI from 'openai' import type { ChatCompletionCreateParamsStreaming } from 'openai/resources/chat/completions' -import { toError } from '@/lib/core/utils/helpers' import type { StreamingExecution } from '@/executor/types' import { MAX_TOOL_ITERATIONS } from '@/providers' import { getProviderDefaultModel, getProviderModels } from '@/providers/models' diff --git a/apps/sim/serializer/index.test.ts b/apps/sim/serializer/index.test.ts index b0bb50d2a36..12ae27b2794 100644 --- a/apps/sim/serializer/index.test.ts +++ b/apps/sim/serializer/index.test.ts @@ -18,14 +18,13 @@ import { createMinimalWorkflowState, createMissingMetadataWorkflow, } from '@sim/testing/factories' -import { blocksMock, loggerMock, toolsUtilsMock } from '@sim/testing/mocks' +import { blocksMock, toolsUtilsMock } from '@sim/testing/mocks' import { describe, expect, it, vi } from 'vitest' import { Serializer } from '@/serializer/index' import type { SerializedWorkflow } from '@/serializer/types' vi.mock('@/blocks', () => blocksMock) vi.mock('@/tools/utils', () => toolsUtilsMock) -vi.mock('@sim/logger', () => loggerMock) describe('Serializer', () => { describe('serializeWorkflow', () => { diff --git a/apps/sim/serializer/index.ts b/apps/sim/serializer/index.ts index d570f982066..d62e295a48b 100644 --- a/apps/sim/serializer/index.ts +++ b/apps/sim/serializer/index.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { Edge } from 'reactflow' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import type { CanonicalModeOverrides } from '@/lib/workflows/subblocks/visibility' import { buildCanonicalIndex, diff --git a/apps/sim/serializer/tests/serializer.extended.test.ts b/apps/sim/serializer/tests/serializer.extended.test.ts index f4004c13253..79e62bf7b93 100644 --- a/apps/sim/serializer/tests/serializer.extended.test.ts +++ b/apps/sim/serializer/tests/serializer.extended.test.ts @@ -14,7 +14,7 @@ import { createStarterBlock, WorkflowBuilder, } from '@sim/testing' -import { loggerMock, toolsUtilsMock } from '@sim/testing/mocks' +import { toolsUtilsMock } from '@sim/testing/mocks' import { describe, expect, it, vi } from 'vitest' import { Serializer, WorkflowValidationError } from '@/serializer/index' import type { SerializedWorkflow } from '@/serializer/types' @@ -228,7 +228,6 @@ vi.mock('@/blocks', () => ({ getAllBlocks: () => Object.values(mockBlockConfigs), })) vi.mock('@/tools/utils', () => toolsUtilsMock) -vi.mock('@sim/logger', () => loggerMock) describe('Serializer Extended Tests', () => { describe('WorkflowValidationError', () => { diff --git a/apps/sim/socket/handlers/operations.ts b/apps/sim/socket/handlers/operations.ts index 207bd569369..c47c380e896 100644 --- a/apps/sim/socket/handlers/operations.ts +++ b/apps/sim/socket/handlers/operations.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { ZodError } from 'zod' -import { generateId } from '@/lib/core/utils/uuid' import { BLOCK_OPERATIONS, BLOCKS_OPERATIONS, diff --git a/apps/sim/socket/handlers/workflow.test.ts b/apps/sim/socket/handlers/workflow.test.ts index dd1c300338f..ac65399faf2 100644 --- a/apps/sim/socket/handlers/workflow.test.ts +++ b/apps/sim/socket/handlers/workflow.test.ts @@ -9,15 +9,6 @@ const { mockGetWorkflowState, mockVerifyWorkflowAccess } = vi.hoisted(() => ({ mockVerifyWorkflowAccess: vi.fn(), })) -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - debug: vi.fn(), - }), -})) - vi.mock('@sim/db', () => ({ db: { select: vi.fn() }, user: { image: 'image' }, diff --git a/apps/sim/socket/index.test.ts b/apps/sim/socket/index.test.ts index f470763c994..e50f4e97c22 100644 --- a/apps/sim/socket/index.test.ts +++ b/apps/sim/socket/index.test.ts @@ -4,7 +4,7 @@ * @vitest-environment node */ import { createServer, request as httpRequest } from 'http' -import { createEnvMock, createMockLogger, databaseMock } from '@sim/testing' +import { createEnvMock, createMockLogger } from '@sim/testing' import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' import { createSocketIOServer } from '@/socket/config/socket' import { MemoryRoomManager } from '@/socket/rooms' @@ -18,8 +18,6 @@ vi.mock('@/lib/auth', () => ({ }, })) -vi.mock('@sim/db', () => databaseMock) - // Mock redis package to prevent actual Redis connections vi.mock('redis', () => ({ createClient: vi.fn(() => ({ diff --git a/apps/sim/socket/middleware/auth.ts b/apps/sim/socket/middleware/auth.ts index 05ac073b882..a9daddcfc3f 100644 --- a/apps/sim/socket/middleware/auth.ts +++ b/apps/sim/socket/middleware/auth.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import type { Socket } from 'socket.io' import { auth } from '@/lib/auth' import { ANONYMOUS_USER, ANONYMOUS_USER_ID } from '@/lib/auth/constants' import { isAuthDisabled } from '@/lib/core/config/feature-flags' -import { toError } from '@/lib/core/utils/helpers' const logger = createLogger('SocketAuth') diff --git a/apps/sim/socket/middleware/permissions.test.ts b/apps/sim/socket/middleware/permissions.test.ts index 32c4722e104..0394a2230a3 100644 --- a/apps/sim/socket/middleware/permissions.test.ts +++ b/apps/sim/socket/middleware/permissions.test.ts @@ -8,6 +8,7 @@ */ import { + authMock, expectPermissionAllowed, expectPermissionDenied, ROLE_ALLOWED_OPERATIONS, @@ -15,10 +16,7 @@ import { } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' -vi.mock('@/lib/auth', () => ({ - auth: { api: { getSession: vi.fn() } }, - getSession: vi.fn(), -})) +vi.mock('@/lib/auth', () => authMock) import { checkRolePermission } from '@/socket/middleware/permissions' diff --git a/apps/sim/stores/chat/store.ts b/apps/sim/stores/chat/store.ts index 070ec6bfa27..5ac6f24d93a 100644 --- a/apps/sim/stores/chat/store.ts +++ b/apps/sim/stores/chat/store.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { create } from 'zustand' import { devtools, persist } from 'zustand/middleware' -import { generateId } from '@/lib/core/utils/uuid' import type { ChatMessage, ChatState } from './types' import { MAX_CHAT_HEIGHT, MAX_CHAT_WIDTH, MIN_CHAT_HEIGHT, MIN_CHAT_WIDTH } from './utils' diff --git a/apps/sim/stores/notifications/store.ts b/apps/sim/stores/notifications/store.ts index 9e843ceed18..594a875d2c8 100644 --- a/apps/sim/stores/notifications/store.ts +++ b/apps/sim/stores/notifications/store.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { create } from 'zustand' import { persist } from 'zustand/middleware' -import { generateId } from '@/lib/core/utils/uuid' import type { AddNotificationParams, Notification } from './types' const logger = createLogger('NotificationStore') diff --git a/apps/sim/stores/operation-queue/store.test.ts b/apps/sim/stores/operation-queue/store.test.ts index b37f673e68b..b86a3da2561 100644 --- a/apps/sim/stores/operation-queue/store.test.ts +++ b/apps/sim/stores/operation-queue/store.test.ts @@ -2,16 +2,6 @@ * @vitest-environment node */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -vi.mock('@sim/logger', () => ({ - createLogger: () => ({ - debug: vi.fn(), - info: vi.fn(), - warn: vi.fn(), - error: vi.fn(), - }), -})) - import { registerEmitFunctions, useOperationQueueStore } from '@/stores/operation-queue/store' describe('operation queue room gating', () => { diff --git a/apps/sim/stores/table/store.ts b/apps/sim/stores/table/store.ts index 6590ba6e6b0..47d1e973f67 100644 --- a/apps/sim/stores/table/store.ts +++ b/apps/sim/stores/table/store.ts @@ -3,9 +3,9 @@ * Ephemeral — no persistence. Stacks are keyed by tableId. */ +import { generateShortId } from '@sim/utils/id' import { create } from 'zustand' import { devtools } from 'zustand/middleware' -import { generateShortId } from '@/lib/core/utils/uuid' import type { TableUndoAction, TableUndoStacks, TableUndoState, UndoEntry } from './types' const STACK_CAPACITY = 100 diff --git a/apps/sim/stores/terminal/console/store.ts b/apps/sim/stores/terminal/console/store.ts index db11856dd5d..d6d8414a16a 100644 --- a/apps/sim/stores/terminal/console/store.ts +++ b/apps/sim/stores/terminal/console/store.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { create } from 'zustand' import { devtools } from 'zustand/middleware' import { useShallow } from 'zustand/react/shallow' import { redactApiKeys } from '@/lib/core/security/redaction' -import { generateId } from '@/lib/core/utils/uuid' import { getQueryClient } from '@/app/_shell/providers/query-provider' import type { NormalizedBlockOutput } from '@/executor/types' import { type GeneralSettings, generalSettingsKeys } from '@/hooks/queries/general-settings' diff --git a/apps/sim/stores/undo-redo/utils.ts b/apps/sim/stores/undo-redo/utils.ts index 1837585b285..861277e02e4 100644 --- a/apps/sim/stores/undo-redo/utils.ts +++ b/apps/sim/stores/undo-redo/utils.ts @@ -1,5 +1,5 @@ +import { generateId } from '@sim/utils/id' import type { Edge } from 'reactflow' -import { generateId } from '@/lib/core/utils/uuid' import { UNDO_REDO_OPERATIONS } from '@/socket/constants' import type { BatchAddBlocksOperation, diff --git a/apps/sim/stores/variables/store.ts b/apps/sim/stores/variables/store.ts index bf25ccbc55e..d3c71e2600e 100644 --- a/apps/sim/stores/variables/store.ts +++ b/apps/sim/stores/variables/store.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import JSON5 from 'json5' import { create } from 'zustand' import { devtools } from 'zustand/middleware' -import { generateId } from '@/lib/core/utils/uuid' import { normalizeName } from '@/executor/constants' import { useOperationQueueStore } from '@/stores/operation-queue/store' import type { Variable, VariablesStore } from '@/stores/variables/types' diff --git a/apps/sim/stores/workflow-diff/store.ts b/apps/sim/stores/workflow-diff/store.ts index eac3b271de1..b97f2951894 100644 --- a/apps/sim/stores/workflow-diff/store.ts +++ b/apps/sim/stores/workflow-diff/store.ts @@ -1,8 +1,8 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' import { create } from 'zustand' import { devtools } from 'zustand/middleware' import { COPILOT_STATS_API_PATH } from '@/lib/copilot/constants' -import { toError } from '@/lib/core/utils/helpers' import { stripWorkflowDiffMarkers, WorkflowDiffEngine } from '@/lib/workflows/diff' import { enqueueReplaceWorkflowState } from '@/lib/workflows/operations/socket-operations' import { validateWorkflowState } from '@/lib/workflows/sanitization/validation' diff --git a/apps/sim/stores/workflows/subblock/store.ts b/apps/sim/stores/workflows/subblock/store.ts index 405eb21be5a..3e735f75e2c 100644 --- a/apps/sim/stores/workflows/subblock/store.ts +++ b/apps/sim/stores/workflows/subblock/store.ts @@ -1,7 +1,7 @@ import { createLogger } from '@sim/logger' +import { generateId } from '@sim/utils/id' import { create } from 'zustand' import { devtools } from 'zustand/middleware' -import { generateId } from '@/lib/core/utils/uuid' import { getBlock } from '@/blocks' import type { SubBlockConfig } from '@/blocks/types' import { populateTriggerFieldsFromConfig } from '@/hooks/use-trigger-config-aggregation' diff --git a/apps/sim/stores/workflows/utils.ts b/apps/sim/stores/workflows/utils.ts index 2e11760917e..25b372693b1 100644 --- a/apps/sim/stores/workflows/utils.ts +++ b/apps/sim/stores/workflows/utils.ts @@ -1,5 +1,5 @@ +import { generateId } from '@sim/utils/id' import type { Edge } from 'reactflow' -import { generateId } from '@/lib/core/utils/uuid' import { DEFAULT_DUPLICATE_OFFSET } from '@/lib/workflows/autolayout/constants' import { getEffectiveBlockOutputs } from '@/lib/workflows/blocks/block-outputs' import { remapConditionBlockIds, remapConditionEdgeHandle } from '@/lib/workflows/condition-ids' diff --git a/apps/sim/stores/workflows/workflow/store.ts b/apps/sim/stores/workflows/workflow/store.ts index 6b0fae892a0..888bf069bef 100644 --- a/apps/sim/stores/workflows/workflow/store.ts +++ b/apps/sim/stores/workflows/workflow/store.ts @@ -1,9 +1,9 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { generateId } from '@sim/utils/id' import type { Edge } from 'reactflow' import { create } from 'zustand' import { devtools } from 'zustand/middleware' -import { toError } from '@/lib/core/utils/helpers' -import { generateId } from '@/lib/core/utils/uuid' import { DEFAULT_DUPLICATE_OFFSET } from '@/lib/workflows/autolayout/constants' import { getDynamicHandleSubblockType, diff --git a/apps/sim/tools/apify/run_actor_async.ts b/apps/sim/tools/apify/run_actor_async.ts index b569d0bf8eb..2a88539ecda 100644 --- a/apps/sim/tools/apify/run_actor_async.ts +++ b/apps/sim/tools/apify/run_actor_async.ts @@ -1,5 +1,5 @@ +import { sleep } from '@sim/utils/helpers' import { DEFAULT_EXECUTION_TIMEOUT_MS } from '@/lib/core/execution-limits' -import { sleep } from '@/lib/core/utils/helpers' import type { RunActorParams, RunActorResult } from '@/tools/apify/types' import type { ToolConfig } from '@/tools/types' diff --git a/apps/sim/tools/brightdata/discover.ts b/apps/sim/tools/brightdata/discover.ts index bfcd5f4522b..3a78c84084e 100644 --- a/apps/sim/tools/brightdata/discover.ts +++ b/apps/sim/tools/brightdata/discover.ts @@ -1,6 +1,7 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { DEFAULT_EXECUTION_TIMEOUT_MS } from '@/lib/core/execution-limits' -import { sleep, toError } from '@/lib/core/utils/helpers' import type { BrightDataDiscoverParams, BrightDataDiscoverResponse } from '@/tools/brightdata/types' import type { ToolConfig } from '@/tools/types' diff --git a/apps/sim/tools/browser_use/run_task.ts b/apps/sim/tools/browser_use/run_task.ts index ea880fc0314..e87f1f965f2 100644 --- a/apps/sim/tools/browser_use/run_task.ts +++ b/apps/sim/tools/browser_use/run_task.ts @@ -1,6 +1,6 @@ import { createLogger } from '@sim/logger' +import { sleep } from '@sim/utils/helpers' import { getMaxExecutionTimeout } from '@/lib/core/execution-limits' -import { sleep } from '@/lib/core/utils/helpers' import type { BrowserUseRunTaskParams, BrowserUseRunTaskResponse } from '@/tools/browser_use/types' import type { ToolConfig, ToolResponse } from '@/tools/types' diff --git a/apps/sim/tools/datadog/list_monitors.ts b/apps/sim/tools/datadog/list_monitors.ts index 2d7190d67a5..eaf24493600 100644 --- a/apps/sim/tools/datadog/list_monitors.ts +++ b/apps/sim/tools/datadog/list_monitors.ts @@ -1,6 +1,9 @@ +import { createLogger } from '@sim/logger' import type { ListMonitorsParams, ListMonitorsResponse } from '@/tools/datadog/types' import type { ToolConfig } from '@/tools/types' +const logger = createLogger('DatadogListMonitors') + export const listMonitorsTool: ToolConfig = { id: 'datadog_list_monitors', name: 'Datadog List Monitors', @@ -87,7 +90,7 @@ export const listMonitorsTool: ToolConfig = { id: 'incidentio_workflows_create', name: 'incident.io Workflows Create', @@ -125,7 +128,7 @@ export const workflowsCreateTool: ToolConfig ({ mockIsHosted: { value: false }, @@ -43,11 +43,12 @@ const { mockListCustomTools: vi.fn(), mockGetCustomToolByIdOrTitle: vi.fn(), mockGenerateInternalToken: vi.fn(), - mockSecureFetchWithPinnedIP: vi.fn(), - mockValidateUrlWithDNS: vi.fn(), mockResolveWorkspaceFileReference: vi.fn(), })) +const mockSecureFetchWithPinnedIP = inputValidationMockFns.mockSecureFetchWithPinnedIP +const mockValidateUrlWithDNS = inputValidationMockFns.mockValidateUrlWithDNS + // Mock feature flags vi.mock('@/lib/core/config/feature-flags', () => ({ get isHosted() { @@ -79,10 +80,7 @@ vi.mock('@/lib/auth/internal', () => ({ vi.mock('@/lib/billing/core/usage-log', () => ({})) -vi.mock('@/lib/core/security/input-validation.server', () => ({ - secureFetchWithPinnedIP: (...args: unknown[]) => mockSecureFetchWithPinnedIP(...args), - validateUrlWithDNS: (...args: unknown[]) => mockValidateUrlWithDNS(...args), -})) +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) vi.mock('@/lib/core/rate-limiter/hosted-key', () => ({ getHostedKeyRateLimiter: () => mockRateLimiterFns, diff --git a/apps/sim/tools/index.ts b/apps/sim/tools/index.ts index c6f4b521a4a..8e85c2de38f 100644 --- a/apps/sim/tools/index.ts +++ b/apps/sim/tools/index.ts @@ -1,4 +1,6 @@ import { createLogger } from '@sim/logger' +import { toError } from '@sim/utils/errors' +import { sleep } from '@sim/utils/helpers' import { getBYOKKey } from '@/lib/api-key/byok' import { generateInternalToken } from '@/lib/auth/internal' import { isHosted } from '@/lib/core/config/feature-flags' @@ -9,7 +11,6 @@ import { validateUrlWithDNS, } from '@/lib/core/security/input-validation.server' import { PlatformEvents } from '@/lib/core/telemetry' -import { sleep, toError } from '@/lib/core/utils/helpers' import { generateRequestId } from '@/lib/core/utils/request' import { getBaseUrl, getInternalApiBaseUrl } from '@/lib/core/utils/urls' import { isUserFile } from '@/lib/core/utils/user-file' diff --git a/apps/sim/tools/langsmith/utils.ts b/apps/sim/tools/langsmith/utils.ts index 07daa0d4efe..4e270e7dccc 100644 --- a/apps/sim/tools/langsmith/utils.ts +++ b/apps/sim/tools/langsmith/utils.ts @@ -1,4 +1,4 @@ -import { generateId } from '@/lib/core/utils/uuid' +import { generateId } from '@sim/utils/id' import type { LangsmithRunPayload } from '@/tools/langsmith/types' interface NormalizedRunPayload { diff --git a/apps/sim/tools/mistral/parser.ts b/apps/sim/tools/mistral/parser.ts index 778b4e66c6b..884b4c0e874 100644 --- a/apps/sim/tools/mistral/parser.ts +++ b/apps/sim/tools/mistral/parser.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isInternalFileUrl } from '@/lib/uploads/utils/file-utils' import type { MistralParserInput, diff --git a/apps/sim/tools/notion/query_database.ts b/apps/sim/tools/notion/query_database.ts index 50bced19e52..5c4d8ee8a60 100644 --- a/apps/sim/tools/notion/query_database.ts +++ b/apps/sim/tools/notion/query_database.ts @@ -1,4 +1,4 @@ -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { NotionQueryDatabaseParams, NotionResponse } from '@/tools/notion/types' import { DATABASE_QUERY_RESULTS_OUTPUT, PAGINATION_OUTPUT_PROPERTIES } from '@/tools/notion/types' import { extractTitle, formatPropertyValue } from '@/tools/notion/utils' diff --git a/apps/sim/tools/params.ts b/apps/sim/tools/params.ts index 838002333b8..6336f4293a8 100644 --- a/apps/sim/tools/params.ts +++ b/apps/sim/tools/params.ts @@ -169,7 +169,7 @@ function getBlockConfigurations(): Record { blockConfigCache![block.type] = block }) } catch (error) { - console.warn('Could not load block configuration:', error) + logger.warn('Could not load block configuration:', error) blockConfigCache = {} } } diff --git a/apps/sim/tools/pulse/parser.ts b/apps/sim/tools/pulse/parser.ts index 202afee22e1..242080be8ef 100644 --- a/apps/sim/tools/pulse/parser.ts +++ b/apps/sim/tools/pulse/parser.ts @@ -1,4 +1,4 @@ -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isInternalFileUrl } from '@/lib/uploads/utils/file-utils' import type { PulseParserInput, PulseParserOutput, PulseParserV2Input } from '@/tools/pulse/types' import type { ToolConfig } from '@/tools/types' diff --git a/apps/sim/tools/reducto/parser.ts b/apps/sim/tools/reducto/parser.ts index adba9c1975c..ea08c90ffef 100644 --- a/apps/sim/tools/reducto/parser.ts +++ b/apps/sim/tools/reducto/parser.ts @@ -1,4 +1,4 @@ -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import { isInternalFileUrl } from '@/lib/uploads/utils/file-utils' import type { ReductoParserInput, diff --git a/apps/sim/tools/sharepoint/create_list.ts b/apps/sim/tools/sharepoint/create_list.ts index 06ea0d44e88..18d949ac7cd 100644 --- a/apps/sim/tools/sharepoint/create_list.ts +++ b/apps/sim/tools/sharepoint/create_list.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { SharepointCreateListResponse, SharepointList, diff --git a/apps/sim/tools/sharepoint/read_page.ts b/apps/sim/tools/sharepoint/read_page.ts index 6adc0b7912b..e896df3cf0a 100644 --- a/apps/sim/tools/sharepoint/read_page.ts +++ b/apps/sim/tools/sharepoint/read_page.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { GraphApiResponse, SharepointPageContent, diff --git a/apps/sim/tools/supabase/utils.test.ts b/apps/sim/tools/supabase/utils.test.ts index 18c01fd8bf3..ac649b008f9 100644 --- a/apps/sim/tools/supabase/utils.test.ts +++ b/apps/sim/tools/supabase/utils.test.ts @@ -1,11 +1,10 @@ /** * @vitest-environment node */ +import { featureFlagsMock } from '@sim/testing' import { describe, expect, it, vi } from 'vitest' -vi.mock('@/lib/core/config/feature-flags', () => ({ - isHosted: false, -})) +vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) import { supabaseBaseUrl } from '@/tools/supabase/utils' diff --git a/apps/sim/tools/textract/parser.ts b/apps/sim/tools/textract/parser.ts index 65fd98b6fa8..4ec1c6307e4 100644 --- a/apps/sim/tools/textract/parser.ts +++ b/apps/sim/tools/textract/parser.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { TextractParserInput, TextractParserOutput, diff --git a/apps/sim/tools/tinybird/query.ts b/apps/sim/tools/tinybird/query.ts index 0990fd1cfba..6af90fd3a4f 100644 --- a/apps/sim/tools/tinybird/query.ts +++ b/apps/sim/tools/tinybird/query.ts @@ -1,5 +1,5 @@ import { createLogger } from '@sim/logger' -import { toError } from '@/lib/core/utils/helpers' +import { toError } from '@sim/utils/errors' import type { TinybirdQueryParams, TinybirdQueryResponse } from '@/tools/tinybird/types' import type { ToolConfig } from '@/tools/types' diff --git a/apps/sim/tools/utils.test.ts b/apps/sim/tools/utils.test.ts index 9d8fa28f2f1..cf90b5ded2f 100644 --- a/apps/sim/tools/utils.test.ts +++ b/apps/sim/tools/utils.test.ts @@ -1,9 +1,5 @@ -import { createMockResponse, loggerMock } from '@sim/testing' +import { createMockResponse, inputValidationMock, inputValidationMockFns } from '@sim/testing' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { - secureFetchWithPinnedIP, - validateUrlWithDNS, -} from '@/lib/core/security/input-validation.server' import { transformTable } from '@/tools/shared/table' import type { ToolConfig } from '@/tools/types' import { @@ -15,11 +11,7 @@ import { } from '@/tools/utils' import { executeRequest } from '@/tools/utils.server' -vi.mock('@sim/logger', () => loggerMock) -vi.mock('@/lib/core/security/input-validation.server', () => ({ - validateUrlWithDNS: vi.fn(), - secureFetchWithPinnedIP: vi.fn(), -})) +vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) const { mockGetQueryData } = vi.hoisted(() => ({ mockGetQueryData: vi.fn(), @@ -413,8 +405,8 @@ describe('validateRequiredParametersAfterMerge', () => { describe('executeRequest', () => { let mockTool: ToolConfig - const mockValidateUrlWithDNS = vi.mocked(validateUrlWithDNS) - const mockSecureFetchWithPinnedIP = vi.mocked(secureFetchWithPinnedIP) + const mockValidateUrlWithDNS = inputValidationMockFns.mockValidateUrlWithDNS + const mockSecureFetchWithPinnedIP = inputValidationMockFns.mockSecureFetchWithPinnedIP beforeEach(() => { mockValidateUrlWithDNS.mockResolvedValue({ diff --git a/apps/sim/triggers/generic/webhook.ts b/apps/sim/triggers/generic/webhook.ts index db3fecc3be6..9fc953817af 100644 --- a/apps/sim/triggers/generic/webhook.ts +++ b/apps/sim/triggers/generic/webhook.ts @@ -1,5 +1,5 @@ +import { generateId } from '@sim/utils/id' import { WebhookIcon } from '@/components/icons' -import { generateId } from '@/lib/core/utils/uuid' import type { TriggerConfig } from '@/triggers/types' export const genericWebhookTrigger: TriggerConfig = { diff --git a/bun.lock b/bun.lock index 654302c8665..07b45deb663 100644 --- a/bun.lock +++ b/bun.lock @@ -333,6 +333,15 @@ "name": "@sim/tsconfig", "version": "0.0.0", }, + "packages/utils": { + "name": "@sim/utils", + "version": "0.1.0", + "devDependencies": { + "@sim/tsconfig": "workspace:*", + "typescript": "^5.7.3", + "vitest": "^3.0.8", + }, + }, }, "trustedDependencies": [ "ffmpeg-static", @@ -1338,6 +1347,8 @@ "@sim/tsconfig": ["@sim/tsconfig@workspace:packages/tsconfig"], + "@sim/utils": ["@sim/utils@workspace:packages/utils"], + "@simplewebauthn/browser": ["@simplewebauthn/browser@13.3.0", "", {}, "sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ=="], "@simplewebauthn/server": ["@simplewebauthn/server@13.3.0", "", { "dependencies": { "@hexagon/base64": "^1.1.27", "@levischuck/tiny-cbor": "^0.2.2", "@peculiar/asn1-android": "^2.6.0", "@peculiar/asn1-ecc": "^2.6.1", "@peculiar/asn1-rsa": "^2.6.1", "@peculiar/asn1-schema": "^2.6.0", "@peculiar/asn1-x509": "^2.6.1", "@peculiar/x509": "^1.14.3" } }, "sha512-MLHYFrYG8/wK2i+86XMhiecK72nMaHKKt4bo+7Q1TbuG9iGjlSdfkPWKO5ZFE/BX+ygCJ7pr8H/AJeyAj1EaTQ=="], diff --git a/packages/testing/src/index.ts b/packages/testing/src/index.ts index 9c9382fb0ba..0ae16d2b827 100644 --- a/packages/testing/src/index.ts +++ b/packages/testing/src/index.ts @@ -44,42 +44,5 @@ export * from './assertions' export * from './builders' export * from './factories' -export { - AuthTypeMock, - auditMock, - clearRedisMocks, - createEnvMock, - createMockDb, - createMockFetch, - createMockFormDataRequest, - createMockGetEnv, - createMockLogger, - createMockRedis, - createMockRequest, - createMockResponse, - createMockSocket, - createMockStorage, - databaseMock, - defaultMockEnv, - defaultMockUser, - drizzleOrmMock, - envMock, - loggerMock, - type MockAuthResult, - type MockFetchResponse, - type MockHybridAuthResult, - type MockRedis, - type MockUser, - mockAuth, - mockCommonSchemas, - mockConsoleLogger, - mockDrizzleOrm, - mockHybridAuth, - mockKnowledgeSchemas, - requestUtilsMock, - setupCommonApiMocks, - setupGlobalFetchMock, - setupGlobalStorageMocks, - telemetryMock, -} from './mocks' +export * from './mocks' export * from './types' diff --git a/packages/testing/src/mocks/api.mock.ts b/packages/testing/src/mocks/api.mock.ts deleted file mode 100644 index 2a4acd92619..00000000000 --- a/packages/testing/src/mocks/api.mock.ts +++ /dev/null @@ -1,198 +0,0 @@ -/** - * Mock utilities for API testing - */ -import { vi } from 'vitest' -import { createMockLogger } from './logger.mock' - -/** - * Mock drizzle-orm operators for database query testing. - * Provides mock implementations of common drizzle-orm operators. - * - * @example - * ```ts - * mockDrizzleOrm() - * // Now eq, and, or, etc. from drizzle-orm are mocked - * ``` - */ -export function mockDrizzleOrm() { - vi.doMock('drizzle-orm', () => ({ - and: vi.fn((...conditions) => ({ conditions, type: 'and' })), - eq: vi.fn((field, value) => ({ field, value, type: 'eq' })), - or: vi.fn((...conditions) => ({ type: 'or', conditions })), - gte: vi.fn((field, value) => ({ type: 'gte', field, value })), - lte: vi.fn((field, value) => ({ type: 'lte', field, value })), - gt: vi.fn((field, value) => ({ type: 'gt', field, value })), - lt: vi.fn((field, value) => ({ type: 'lt', field, value })), - ne: vi.fn((field, value) => ({ type: 'ne', field, value })), - asc: vi.fn((field) => ({ field, type: 'asc' })), - desc: vi.fn((field) => ({ field, type: 'desc' })), - isNull: vi.fn((field) => ({ field, type: 'isNull' })), - isNotNull: vi.fn((field) => ({ field, type: 'isNotNull' })), - inArray: vi.fn((field, values) => ({ field, values, type: 'inArray' })), - notInArray: vi.fn((field, values) => ({ field, values, type: 'notInArray' })), - like: vi.fn((field, value) => ({ field, value, type: 'like' })), - ilike: vi.fn((field, value) => ({ field, value, type: 'ilike' })), - count: vi.fn((field) => ({ field, type: 'count' })), - sum: vi.fn((field) => ({ field, type: 'sum' })), - avg: vi.fn((field) => ({ field, type: 'avg' })), - min: vi.fn((field) => ({ field, type: 'min' })), - max: vi.fn((field) => ({ field, type: 'max' })), - sql: vi.fn((strings, ...values) => ({ - type: 'sql', - sql: strings, - values, - })), - })) -} - -/** - * Mock common database schema patterns. - * Provides mock schema objects for common tables. - * - * @example - * ```ts - * mockCommonSchemas() - * // Now @sim/db/schema exports are mocked - * ``` - */ -export function mockCommonSchemas() { - vi.doMock('@sim/db/schema', () => ({ - workflowFolder: { - id: 'id', - userId: 'userId', - parentId: 'parentId', - updatedAt: 'updatedAt', - workspaceId: 'workspaceId', - sortOrder: 'sortOrder', - createdAt: 'createdAt', - }, - workflow: { - id: 'id', - folderId: 'folderId', - userId: 'userId', - updatedAt: 'updatedAt', - }, - account: { - userId: 'userId', - providerId: 'providerId', - }, - user: { - email: 'email', - id: 'id', - }, - })) -} - -/** - * Mock console logger using the shared mock logger. - * Ensures tests can assert on logger calls. - * - * @example - * ```ts - * mockConsoleLogger() - * // Now @sim/logger.createLogger returns a mock logger - * ``` - */ -export function mockConsoleLogger() { - const mockLogger = createMockLogger() - vi.doMock('@sim/logger', () => ({ - createLogger: vi.fn().mockReturnValue(mockLogger), - })) - return mockLogger -} - -/** - * Setup common API test mocks (schemas, drizzle ORM). - * Does NOT set up logger mocks - call mockConsoleLogger() separately if needed. - * - * @example - * ```ts - * setupCommonApiMocks() - * const mockLogger = mockConsoleLogger() // Call separately to get logger instance - * ``` - */ -export function setupCommonApiMocks() { - mockCommonSchemas() - mockDrizzleOrm() -} - -/** - * Mock knowledge-related database schemas. - * Provides mock schema objects for knowledge base tables. - * - * @example - * ```ts - * mockKnowledgeSchemas() - * // Now @sim/db/schema exports knowledge base tables - * ``` - */ -export function mockKnowledgeSchemas() { - vi.doMock('@sim/db/schema', () => ({ - knowledgeBase: { - id: 'kb_id', - userId: 'user_id', - name: 'kb_name', - description: 'description', - tokenCount: 'token_count', - embeddingModel: 'embedding_model', - embeddingDimension: 'embedding_dimension', - chunkingConfig: 'chunking_config', - workspaceId: 'workspace_id', - createdAt: 'created_at', - updatedAt: 'updated_at', - deletedAt: 'deleted_at', - }, - document: { - id: 'doc_id', - knowledgeBaseId: 'kb_id', - filename: 'filename', - fileUrl: 'file_url', - fileSize: 'file_size', - mimeType: 'mime_type', - chunkCount: 'chunk_count', - tokenCount: 'token_count', - characterCount: 'character_count', - processingStatus: 'processing_status', - processingStartedAt: 'processing_started_at', - processingCompletedAt: 'processing_completed_at', - processingError: 'processing_error', - enabled: 'enabled', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - uploadedAt: 'uploaded_at', - deletedAt: 'deleted_at', - }, - embedding: { - id: 'embedding_id', - documentId: 'doc_id', - knowledgeBaseId: 'kb_id', - chunkIndex: 'chunk_index', - content: 'content', - embedding: 'embedding', - tokenCount: 'token_count', - characterCount: 'character_count', - tag1: 'tag1', - tag2: 'tag2', - tag3: 'tag3', - tag4: 'tag4', - tag5: 'tag5', - tag6: 'tag6', - tag7: 'tag7', - createdAt: 'created_at', - }, - permissions: { - id: 'permission_id', - userId: 'user_id', - entityType: 'entity_type', - entityId: 'entity_id', - permissionType: 'permission_type', - createdAt: 'created_at', - updatedAt: 'updated_at', - }, - })) -} diff --git a/packages/testing/src/mocks/audit.mock.ts b/packages/testing/src/mocks/audit.mock.ts index a36f182738c..d930aa62d4f 100644 --- a/packages/testing/src/mocks/audit.mock.ts +++ b/packages/testing/src/mocks/audit.mock.ts @@ -1,8 +1,23 @@ import { vi } from 'vitest' /** - * Mock module for @/lib/audit/log. - * Use with vi.mock() to replace the real audit logger in tests. + * Controllable mock functions for `@/lib/audit/log`. + * Exposes `mockRecordAudit` so tests can assert or override behavior per test. + * + * @example + * ```ts + * import { auditMockFns } from '@sim/testing' + * + * expect(auditMockFns.mockRecordAudit).toHaveBeenCalledWith(...) + * auditMockFns.mockRecordAudit.mockRejectedValueOnce(new Error('audit failed')) + * ``` + */ +export const auditMockFns = { + mockRecordAudit: vi.fn(), +} + +/** + * Static mock module for `@/lib/audit/log`. * * @example * ```ts @@ -10,7 +25,7 @@ import { vi } from 'vitest' * ``` */ export const auditMock = { - recordAudit: vi.fn(), + recordAudit: auditMockFns.mockRecordAudit, AuditAction: { API_KEY_CREATED: 'api_key.created', API_KEY_UPDATED: 'api_key.updated', diff --git a/packages/testing/src/mocks/auth-oauth-utils.mock.ts b/packages/testing/src/mocks/auth-oauth-utils.mock.ts new file mode 100644 index 00000000000..ad0d6395ac1 --- /dev/null +++ b/packages/testing/src/mocks/auth-oauth-utils.mock.ts @@ -0,0 +1,59 @@ +import { vi } from 'vitest' + +/** + * Mock of the `ServiceAccountTokenError` class from + * `@/app/api/auth/oauth/utils`. Declared as a real class so consumer code + * using `instanceof ServiceAccountTokenError` keeps working under mock. + */ +export class ServiceAccountTokenErrorMock extends Error { + constructor( + public readonly statusCode: number, + public readonly errorDescription: string + ) { + super(errorDescription) + this.name = 'ServiceAccountTokenError' + } +} + +/** + * Controllable mock functions for `@/app/api/auth/oauth/utils`. + * All defaults are bare `vi.fn()` — configure per-test as needed. + * + * @example + * ```ts + * import { authOAuthUtilsMockFns } from '@sim/testing' + * + * authOAuthUtilsMockFns.mockRefreshAccessTokenIfNeeded.mockResolvedValue('access-token') + * authOAuthUtilsMockFns.mockGetOAuthToken.mockResolvedValue(null) + * ``` + */ +export const authOAuthUtilsMockFns = { + mockResolveOAuthAccountId: vi.fn(), + mockGetServiceAccountToken: vi.fn(), + mockSafeAccountInsert: vi.fn(), + mockGetCredential: vi.fn(), + mockGetOAuthToken: vi.fn(), + mockRefreshAccessTokenIfNeeded: vi.fn(), + mockRefreshTokenIfNeeded: vi.fn(), + mockGetCredentialsForCredentialSet: vi.fn(), +} + +/** + * Static mock module for `@/app/api/auth/oauth/utils`. + * + * @example + * ```ts + * vi.mock('@/app/api/auth/oauth/utils', () => authOAuthUtilsMock) + * ``` + */ +export const authOAuthUtilsMock = { + ServiceAccountTokenError: ServiceAccountTokenErrorMock, + resolveOAuthAccountId: authOAuthUtilsMockFns.mockResolveOAuthAccountId, + getServiceAccountToken: authOAuthUtilsMockFns.mockGetServiceAccountToken, + safeAccountInsert: authOAuthUtilsMockFns.mockSafeAccountInsert, + getCredential: authOAuthUtilsMockFns.mockGetCredential, + getOAuthToken: authOAuthUtilsMockFns.mockGetOAuthToken, + refreshAccessTokenIfNeeded: authOAuthUtilsMockFns.mockRefreshAccessTokenIfNeeded, + refreshTokenIfNeeded: authOAuthUtilsMockFns.mockRefreshTokenIfNeeded, + getCredentialsForCredentialSet: authOAuthUtilsMockFns.mockGetCredentialsForCredentialSet, +} diff --git a/packages/testing/src/mocks/auth.mock.ts b/packages/testing/src/mocks/auth.mock.ts index 209d93b34d2..1e9a800a3c2 100644 --- a/packages/testing/src/mocks/auth.mock.ts +++ b/packages/testing/src/mocks/auth.mock.ts @@ -1,10 +1,7 @@ -/** - * Mock authentication utilities for API testing - */ import { vi } from 'vitest' /** - * Mock user interface for authentication testing + * Mock user interface for authentication testing. */ export interface MockUser { id: string @@ -13,62 +10,26 @@ export interface MockUser { } /** - * Result object returned by mockAuth with helper methods - */ -export interface MockAuthResult { - /** The mock getSession function */ - mockGetSession: ReturnType - /** Set authenticated state with optional custom user */ - setAuthenticated: (user?: MockUser) => void - /** Set unauthenticated state (session returns null) */ - setUnauthenticated: () => void - /** Alias for setAuthenticated */ - mockAuthenticatedUser: (user?: MockUser) => void - /** Alias for setUnauthenticated */ - mockUnauthenticated: () => void -} - -/** - * Default mock user for testing + * Controllable mock functions for `@/lib/auth`. Override per-test with + * `authMockFns.mockGetSession.mockResolvedValueOnce(...)`. */ -export const defaultMockUser: MockUser = { - id: 'user-123', - email: 'test@example.com', +export const authMockFns = { + mockGetSession: vi.fn(), } /** - * Mock authentication for API tests. - * Uses vi.doMock to mock the auth module's getSession function. - * - * @param user - Optional user object to use for authenticated requests - * @returns Object with authentication helper functions + * Static mock module for `@/lib/auth`. * * @example * ```ts - * const auth = mockAuth() - * auth.setAuthenticated() // User is now authenticated - * auth.setUnauthenticated() // User is now unauthenticated - * - * // With custom user - * auth.setAuthenticated({ id: 'custom-id', email: 'custom@test.com' }) + * vi.mock('@/lib/auth', () => authMock) * ``` */ -export function mockAuth(user: MockUser = defaultMockUser): MockAuthResult { - const mockGetSession = vi.fn() - - vi.doMock('@/lib/auth', () => ({ - getSession: mockGetSession, - })) - - const setAuthenticated = (customUser?: MockUser) => - mockGetSession.mockResolvedValue({ user: customUser || user }) - const setUnauthenticated = () => mockGetSession.mockResolvedValue(null) - - return { - mockGetSession, - mockAuthenticatedUser: setAuthenticated, - mockUnauthenticated: setUnauthenticated, - setAuthenticated, - setUnauthenticated, - } +export const authMock = { + getSession: authMockFns.mockGetSession, + auth: { + api: { + getSession: authMockFns.mockGetSession, + }, + }, } diff --git a/packages/testing/src/mocks/copilot-http.mock.ts b/packages/testing/src/mocks/copilot-http.mock.ts new file mode 100644 index 00000000000..0b484758af9 --- /dev/null +++ b/packages/testing/src/mocks/copilot-http.mock.ts @@ -0,0 +1,85 @@ +import { vi } from 'vitest' + +/** + * Frozen mirror of the `NotificationStatus` const from + * `@/lib/copilot/request/http`. Matches the real values so route code using + * e.g. `NotificationStatus.success` keeps resolving under mock. + */ +const NotificationStatusMock = { + pending: 'pending', + background: 'background', + success: 'success', + error: 'error', + cancelled: 'cancelled', +} as const + +/** + * Controllable mock functions for `@/lib/copilot/request/http`. + * Response helpers default to returning minimal Response-like objects so + * handler tests can assert `res.status` and `await res.json()`. + * `createRequestTracker` returns a stable tracker with `requestId`, + * `startTime`, and a `getDuration()` that always returns `0`. + * + * @example + * ```ts + * import { copilotHttpMockFns } from '@sim/testing' + * + * copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly.mockResolvedValue({ + * userId: 'user-1', + * isAuthenticated: true, + * }) + * ``` + */ +export const copilotHttpMockFns = { + mockCreateUnauthorizedResponse: vi.fn(() => ({ + status: 401, + ok: false, + json: async () => ({ error: 'Unauthorized' }), + })), + mockCreateBadRequestResponse: vi.fn((message: string) => ({ + status: 400, + ok: false, + json: async () => ({ error: message }), + })), + mockCreateNotFoundResponse: vi.fn((message: string) => ({ + status: 404, + ok: false, + json: async () => ({ error: message }), + })), + mockCreateInternalServerErrorResponse: vi.fn((message: string) => ({ + status: 500, + ok: false, + json: async () => ({ error: message }), + })), + mockCreateRequestId: vi.fn(() => 'test-request-id'), + mockCreateShortRequestId: vi.fn(() => 'test-req'), + mockCreateRequestTracker: vi.fn(() => ({ + requestId: 'test-req', + startTime: 0, + getDuration: () => 0, + })), + mockAuthenticateCopilotRequestSessionOnly: vi.fn(), + mockCheckInternalApiKey: vi.fn(), +} + +/** + * Static mock module for `@/lib/copilot/request/http`. + * + * @example + * ```ts + * vi.mock('@/lib/copilot/request/http', () => copilotHttpMock) + * ``` + */ +export const copilotHttpMock = { + NotificationStatus: NotificationStatusMock, + createUnauthorizedResponse: copilotHttpMockFns.mockCreateUnauthorizedResponse, + createBadRequestResponse: copilotHttpMockFns.mockCreateBadRequestResponse, + createNotFoundResponse: copilotHttpMockFns.mockCreateNotFoundResponse, + createInternalServerErrorResponse: copilotHttpMockFns.mockCreateInternalServerErrorResponse, + createRequestId: copilotHttpMockFns.mockCreateRequestId, + createShortRequestId: copilotHttpMockFns.mockCreateShortRequestId, + createRequestTracker: copilotHttpMockFns.mockCreateRequestTracker, + authenticateCopilotRequestSessionOnly: + copilotHttpMockFns.mockAuthenticateCopilotRequestSessionOnly, + checkInternalApiKey: copilotHttpMockFns.mockCheckInternalApiKey, +} diff --git a/packages/testing/src/mocks/encryption.mock.ts b/packages/testing/src/mocks/encryption.mock.ts new file mode 100644 index 00000000000..169b150be30 --- /dev/null +++ b/packages/testing/src/mocks/encryption.mock.ts @@ -0,0 +1,31 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/core/security/encryption`. + * Default: `decryptSecret` resolves to `{ decrypted: 'test-decrypted' }`, + * `encryptSecret` resolves to `{ encrypted: 'test-encrypted', iv: 'test-iv' }`. + * + * @example + * ```ts + * import { encryptionMockFns } from '@sim/testing' + * + * encryptionMockFns.mockDecryptSecret.mockResolvedValueOnce({ decrypted: 'my-secret' }) + * ``` + */ +export const encryptionMockFns = { + mockDecryptSecret: vi.fn().mockResolvedValue({ decrypted: 'test-decrypted' }), + mockEncryptSecret: vi.fn().mockResolvedValue({ encrypted: 'test-encrypted', iv: 'test-iv' }), +} + +/** + * Static mock module for `@/lib/core/security/encryption`. + * + * @example + * ```ts + * vi.mock('@/lib/core/security/encryption', () => encryptionMock) + * ``` + */ +export const encryptionMock = { + decryptSecret: encryptionMockFns.mockDecryptSecret, + encryptSecret: encryptionMockFns.mockEncryptSecret, +} diff --git a/packages/testing/src/mocks/execution-preprocessing.mock.ts b/packages/testing/src/mocks/execution-preprocessing.mock.ts new file mode 100644 index 00000000000..dab2f8d4154 --- /dev/null +++ b/packages/testing/src/mocks/execution-preprocessing.mock.ts @@ -0,0 +1,31 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/execution/preprocessing`. + * Default is a bare `vi.fn()` — configure per-test. + * + * @example + * ```ts + * import { executionPreprocessingMockFns } from '@sim/testing' + * + * executionPreprocessingMockFns.mockPreprocessExecution.mockResolvedValue({ + * success: true, + * actorUserId: 'user-1', + * }) + * ``` + */ +export const executionPreprocessingMockFns = { + mockPreprocessExecution: vi.fn(), +} + +/** + * Static mock module for `@/lib/execution/preprocessing`. + * + * @example + * ```ts + * vi.mock('@/lib/execution/preprocessing', () => executionPreprocessingMock) + * ``` + */ +export const executionPreprocessingMock = { + preprocessExecution: executionPreprocessingMockFns.mockPreprocessExecution, +} diff --git a/packages/testing/src/mocks/feature-flags.mock.ts b/packages/testing/src/mocks/feature-flags.mock.ts new file mode 100644 index 00000000000..9a108d3cde2 --- /dev/null +++ b/packages/testing/src/mocks/feature-flags.mock.ts @@ -0,0 +1,44 @@ +import { vi } from 'vitest' + +/** + * Static mock module for `@/lib/core/config/feature-flags`. + * All boolean flags default to `false` for safe test isolation. + * + * @example + * ```ts + * vi.mock('@/lib/core/config/feature-flags', () => featureFlagsMock) + * ``` + */ +export const featureFlagsMock = { + isProd: false, + isDev: false, + isTest: true, + isHosted: false, + isBillingEnabled: false, + isEmailVerificationEnabled: false, + isAuthDisabled: false, + isRegistrationDisabled: false, + isEmailPasswordEnabled: false, + isSignupEmailValidationEnabled: false, + isTriggerDevEnabled: false, + isSsoEnabled: false, + isCredentialSetsEnabled: false, + isAccessControlEnabled: false, + isOrganizationsEnabled: false, + isInboxEnabled: false, + isWhitelabelingEnabled: false, + isAuditLogsEnabled: false, + isE2bEnabled: false, + isOllamaConfigured: false, + isAzureConfigured: false, + isInvitationsDisabled: false, + isPublicApiDisabled: false, + isGoogleAuthDisabled: false, + isGithubAuthDisabled: false, + isReactGrabEnabled: false, + isReactScanEnabled: false, + getAllowedIntegrationsFromEnv: vi.fn().mockReturnValue(null), + getBlacklistedProvidersFromEnv: vi.fn().mockReturnValue([]), + getAllowedMcpDomainsFromEnv: vi.fn().mockReturnValue(null), + getCostMultiplier: vi.fn().mockReturnValue(1), +} diff --git a/packages/testing/src/mocks/hybrid-auth.mock.ts b/packages/testing/src/mocks/hybrid-auth.mock.ts index add5babbcc3..312719d0088 100644 --- a/packages/testing/src/mocks/hybrid-auth.mock.ts +++ b/packages/testing/src/mocks/hybrid-auth.mock.ts @@ -1,96 +1,36 @@ -/** - * Mock for @/lib/auth/hybrid module. - * Provides controllable mock functions for checkHybridAuth, checkSessionOrInternalAuth, and checkInternalAuth. - */ import { vi } from 'vitest' -import type { MockUser } from './auth.mock' -import { defaultMockUser } from './auth.mock' /** - * Auth type constants matching @/lib/auth/hybrid AuthType. - * Include this in vi.mock() factories so route code can reference AuthType.*. + * Auth type constants matching `@/lib/auth/hybrid` AuthType. Included in + * `hybridAuthMock.AuthType` so route code can reference `AuthType.SESSION` etc. */ -export const AuthTypeMock = { +const AuthTypeMock = { SESSION: 'session', API_KEY: 'api_key', INTERNAL_JWT: 'internal_jwt', } as const -interface HybridAuthResponse { - success: boolean - userId?: string - userName?: string | null - userEmail?: string | null - authType?: (typeof AuthTypeMock)[keyof typeof AuthTypeMock] - error?: string -} - /** - * Result object returned by mockHybridAuth with helper methods + * Controllable mock functions for `@/lib/auth/hybrid`. Override per-test with + * `hybridAuthMockFns.mockCheckHybridAuth.mockResolvedValueOnce(...)`. */ -export interface MockHybridAuthResult { - mockCheckHybridAuth: ReturnType - mockCheckSessionOrInternalAuth: ReturnType - mockCheckInternalAuth: ReturnType - setAuthenticated: (user?: MockUser) => void - setUnauthenticated: () => void +export const hybridAuthMockFns = { + mockCheckHybridAuth: vi.fn(), + mockCheckSessionOrInternalAuth: vi.fn(), + mockCheckInternalAuth: vi.fn(), } /** - * Mock hybrid authentication for API tests. - * Uses vi.doMock to mock the @/lib/auth/hybrid module. - * - * @param user - Optional default user for authenticated state - * @returns Object with mock functions and authentication helpers + * Static mock module for `@/lib/auth/hybrid`. * * @example * ```ts - * const hybridAuth = mockHybridAuth() - * hybridAuth.setAuthenticated() // All hybrid auth checks succeed - * hybridAuth.setUnauthenticated() // All hybrid auth checks fail + * vi.mock('@/lib/auth/hybrid', () => hybridAuthMock) * ``` */ -export function mockHybridAuth(user: MockUser = defaultMockUser): MockHybridAuthResult { - const mockCheckHybridAuth = vi.fn<() => Promise>() - const mockCheckSessionOrInternalAuth = vi.fn<() => Promise>() - const mockCheckInternalAuth = vi.fn<() => Promise>() - - vi.doMock('@/lib/auth/hybrid', () => ({ - AuthType: AuthTypeMock, - checkHybridAuth: mockCheckHybridAuth, - checkSessionOrInternalAuth: mockCheckSessionOrInternalAuth, - checkInternalAuth: mockCheckInternalAuth, - })) - - const setAuthenticated = (customUser?: MockUser) => { - const u = customUser || user - const response: HybridAuthResponse = { - success: true, - userId: u.id, - userName: u.name ?? null, - userEmail: u.email, - authType: 'session', - } - mockCheckHybridAuth.mockResolvedValue(response) - mockCheckSessionOrInternalAuth.mockResolvedValue(response) - mockCheckInternalAuth.mockResolvedValue(response) - } - - const setUnauthenticated = () => { - const response: HybridAuthResponse = { - success: false, - error: 'Unauthorized', - } - mockCheckHybridAuth.mockResolvedValue(response) - mockCheckSessionOrInternalAuth.mockResolvedValue(response) - mockCheckInternalAuth.mockResolvedValue(response) - } - - return { - mockCheckHybridAuth, - mockCheckSessionOrInternalAuth, - mockCheckInternalAuth, - setAuthenticated, - setUnauthenticated, - } +export const hybridAuthMock = { + AuthType: AuthTypeMock, + checkHybridAuth: hybridAuthMockFns.mockCheckHybridAuth, + checkSessionOrInternalAuth: hybridAuthMockFns.mockCheckSessionOrInternalAuth, + checkInternalAuth: hybridAuthMockFns.mockCheckInternalAuth, } diff --git a/packages/testing/src/mocks/index.ts b/packages/testing/src/mocks/index.ts index 67fa5349903..5ba775e01f7 100644 --- a/packages/testing/src/mocks/index.ts +++ b/packages/testing/src/mocks/index.ts @@ -16,23 +16,16 @@ * ``` */ -// API mocks -export { - mockCommonSchemas, - mockConsoleLogger, - mockDrizzleOrm, - mockKnowledgeSchemas, - setupCommonApiMocks, -} from './api.mock' // Audit mocks -export { auditMock } from './audit.mock' +export { auditMock, auditMockFns } from './audit.mock' // Auth mocks +export { authMock, authMockFns, type MockUser } from './auth.mock' +// Auth OAuth utils mocks (for @/app/api/auth/oauth/utils) export { - defaultMockUser, - type MockAuthResult, - type MockUser, - mockAuth, -} from './auth.mock' + authOAuthUtilsMock, + authOAuthUtilsMockFns, + ServiceAccountTokenErrorMock, +} from './auth-oauth-utils.mock' // Blocks mocks export { blocksMock, @@ -42,6 +35,8 @@ export { mockToolConfigs, toolsUtilsMock, } from './blocks.mock' +// Copilot HTTP mocks (for @/lib/copilot/request/http) +export { copilotHttpMock, copilotHttpMockFns } from './copilot-http.mock' // Database mocks export { createMockDb, @@ -50,8 +45,17 @@ export { databaseMock, drizzleOrmMock, } from './database.mock' +// Encryption mocks +export { encryptionMock, encryptionMockFns } from './encryption.mock' // Env mocks export { createEnvMock, createMockGetEnv, defaultMockEnv, envMock } from './env.mock' +// Execution preprocessing mocks (for @/lib/execution/preprocessing) +export { + executionPreprocessingMock, + executionPreprocessingMockFns, +} from './execution-preprocessing.mock' +// Feature flag mocks +export { featureFlagsMock } from './feature-flags.mock' // Executor mocks - use side-effect import: import '@sim/testing/mocks/executor' // Fetch mocks export { @@ -64,13 +68,34 @@ export { setupGlobalFetchMock, } from './fetch.mock' // Hybrid auth mocks -export { AuthTypeMock, type MockHybridAuthResult, mockHybridAuth } from './hybrid-auth.mock' +export { hybridAuthMock, hybridAuthMockFns } from './hybrid-auth.mock' +// Input validation mocks +export { inputValidationMock, inputValidationMockFns } from './input-validation.mock' +// Knowledge API utils mocks (for @/app/api/knowledge/utils) +export { knowledgeApiUtilsMock, knowledgeApiUtilsMockFns } from './knowledge-api-utils.mock' // Logger mocks export { clearLoggerMocks, createMockLogger, getLoggerCalls, loggerMock } from './logger.mock' -// Redis mocks +// Logging session mocks (for @/lib/logs/execution/logging-session) +export { + LoggingSessionMock, + loggingSessionMock, + loggingSessionMockFns, +} from './logging-session.mock' +// Permission mocks +export { permissionsMock, permissionsMockFns } from './permissions.mock' +// Redis client mocks (for Redis client objects) export { clearRedisMocks, createMockRedis, type MockRedis } from './redis.mock' +// Redis config mocks (for @/lib/core/config/redis) +export { redisConfigMock, redisConfigMockFns } from './redis-config.mock' // Request mocks -export { createMockFormDataRequest, createMockRequest, requestUtilsMock } from './request.mock' +export { + createMockFormDataRequest, + createMockRequest, + requestUtilsMock, + requestUtilsMockFns, +} from './request.mock' +// Schema mocks +export { schemaMock } from './schema.mock' // Socket mocks export { createMockSocket, @@ -82,3 +107,19 @@ export { export { clearStorageMocks, createMockStorage, setupGlobalStorageMocks } from './storage.mock' // Telemetry mocks export { telemetryMock } from './telemetry.mock' +// URL mocks +export { urlsMock, urlsMockFns } from './urls.mock' +// Workflows API utils mocks (for @/app/api/workflows/utils) +export { workflowsApiUtilsMock, workflowsApiUtilsMockFns } from './workflows-api-utils.mock' +// Workflows orchestration mocks (for @/lib/workflows/orchestration) +export { + workflowsOrchestrationMock, + workflowsOrchestrationMockFns, +} from './workflows-orchestration.mock' +// Workflows persistence utils mocks (for @/lib/workflows/persistence/utils) +export { + workflowsPersistenceUtilsMock, + workflowsPersistenceUtilsMockFns, +} from './workflows-persistence-utils.mock' +// Workflows-utils mocks +export { workflowsUtilsMock, workflowsUtilsMockFns } from './workflows-utils.mock' diff --git a/packages/testing/src/mocks/input-validation.mock.ts b/packages/testing/src/mocks/input-validation.mock.ts new file mode 100644 index 00000000000..a525df9fcfa --- /dev/null +++ b/packages/testing/src/mocks/input-validation.mock.ts @@ -0,0 +1,47 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/core/security/input-validation.server`. + * + * @example + * ```ts + * import { inputValidationMockFns } from '@sim/testing' + * + * inputValidationMockFns.mockValidateUrlWithDNS.mockResolvedValue({ valid: true }) + * inputValidationMockFns.mockSecureFetchWithPinnedIP.mockResolvedValue({ response: new Response() }) + * ``` + */ +export const inputValidationMockFns = { + mockValidateUrlWithDNS: vi.fn(), + mockValidateDatabaseHost: vi.fn(), + mockSecureFetchWithPinnedIP: vi.fn(), + mockSecureFetchWithValidation: vi.fn(), + mockIsPrivateOrReservedIP: vi.fn().mockReturnValue(false), + mockCreatePinnedLookup: vi.fn(), +} + +/** + * Static mock module for `@/lib/core/security/input-validation.server`. + * + * @example + * ```ts + * vi.mock('@/lib/core/security/input-validation.server', () => inputValidationMock) + * ``` + */ +export const inputValidationMock = { + validateUrlWithDNS: inputValidationMockFns.mockValidateUrlWithDNS, + validateDatabaseHost: inputValidationMockFns.mockValidateDatabaseHost, + secureFetchWithPinnedIP: inputValidationMockFns.mockSecureFetchWithPinnedIP, + secureFetchWithValidation: inputValidationMockFns.mockSecureFetchWithValidation, + isPrivateOrReservedIP: inputValidationMockFns.mockIsPrivateOrReservedIP, + createPinnedLookup: inputValidationMockFns.mockCreatePinnedLookup, + SecureFetchHeaders: class { + headers: Record = {} + set(k: string, v: string) { + this.headers[k] = v + } + get(k: string) { + return this.headers[k] + } + }, +} diff --git a/packages/testing/src/mocks/knowledge-api-utils.mock.ts b/packages/testing/src/mocks/knowledge-api-utils.mock.ts new file mode 100644 index 00000000000..b0cb3ed816a --- /dev/null +++ b/packages/testing/src/mocks/knowledge-api-utils.mock.ts @@ -0,0 +1,40 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/app/api/knowledge/utils`. + * All defaults are bare `vi.fn()` — override per-test with + * `knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess.mockResolvedValueOnce(...)`. + * + * @example + * ```ts + * import { knowledgeApiUtilsMockFns } from '@sim/testing' + * + * knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess.mockResolvedValue({ + * hasAccess: true, + * knowledgeBase: { id: 'kb-1', userId: 'u-1', workspaceId: 'ws-1', name: 'KB' }, + * }) + * ``` + */ +export const knowledgeApiUtilsMockFns = { + mockCheckKnowledgeBaseAccess: vi.fn(), + mockCheckKnowledgeBaseWriteAccess: vi.fn(), + mockCheckDocumentWriteAccess: vi.fn(), + mockCheckDocumentAccess: vi.fn(), + mockCheckChunkAccess: vi.fn(), +} + +/** + * Static mock module for `@/app/api/knowledge/utils`. + * + * @example + * ```ts + * vi.mock('@/app/api/knowledge/utils', () => knowledgeApiUtilsMock) + * ``` + */ +export const knowledgeApiUtilsMock = { + checkKnowledgeBaseAccess: knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseAccess, + checkKnowledgeBaseWriteAccess: knowledgeApiUtilsMockFns.mockCheckKnowledgeBaseWriteAccess, + checkDocumentWriteAccess: knowledgeApiUtilsMockFns.mockCheckDocumentWriteAccess, + checkDocumentAccess: knowledgeApiUtilsMockFns.mockCheckDocumentAccess, + checkChunkAccess: knowledgeApiUtilsMockFns.mockCheckChunkAccess, +} diff --git a/packages/testing/src/mocks/logging-session.mock.ts b/packages/testing/src/mocks/logging-session.mock.ts new file mode 100644 index 00000000000..fdf025573e2 --- /dev/null +++ b/packages/testing/src/mocks/logging-session.mock.ts @@ -0,0 +1,65 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for the `LoggingSession` class from + * `@/lib/logs/execution/logging-session`. Every instance method is backed by a + * shared `vi.fn()` so tests that construct multiple sessions observe identical + * mock state. `mockSafeStart` defaults to `true` because callers branch on the + * boolean result. All other methods resolve to `undefined`. + * + * @example + * ```ts + * import { loggingSessionMockFns } from '@sim/testing' + * + * loggingSessionMockFns.mockSafeStart.mockResolvedValueOnce(false) + * expect(loggingSessionMockFns.mockSafeCompleteWithError).toHaveBeenCalled() + * ``` + */ +export const loggingSessionMockFns = { + mockStart: vi.fn().mockResolvedValue(undefined), + mockComplete: vi.fn().mockResolvedValue(undefined), + mockCompleteWithError: vi.fn().mockResolvedValue(undefined), + mockCompleteWithCancellation: vi.fn().mockResolvedValue(undefined), + mockCompleteWithPause: vi.fn().mockResolvedValue(undefined), + mockSafeStart: vi.fn().mockResolvedValue(true), + mockWaitForCompletion: vi.fn().mockResolvedValue(undefined), + mockWaitForPostExecution: vi.fn().mockResolvedValue(undefined), + mockSafeComplete: vi.fn().mockResolvedValue(undefined), + mockSafeCompleteWithError: vi.fn().mockResolvedValue(undefined), + mockSafeCompleteWithCancellation: vi.fn().mockResolvedValue(undefined), + mockSafeCompleteWithPause: vi.fn().mockResolvedValue(undefined), + mockMarkAsFailed: vi.fn().mockResolvedValue(undefined), +} + +/** + * Constructor-shaped mock for `LoggingSession`. Each `new LoggingSession(...)` + * call returns an object whose methods point at the shared `vi.fn()` refs in + * `loggingSessionMockFns`. + */ +export const LoggingSessionMock = vi.fn().mockImplementation(() => ({ + start: loggingSessionMockFns.mockStart, + complete: loggingSessionMockFns.mockComplete, + completeWithError: loggingSessionMockFns.mockCompleteWithError, + completeWithCancellation: loggingSessionMockFns.mockCompleteWithCancellation, + completeWithPause: loggingSessionMockFns.mockCompleteWithPause, + safeStart: loggingSessionMockFns.mockSafeStart, + waitForCompletion: loggingSessionMockFns.mockWaitForCompletion, + waitForPostExecution: loggingSessionMockFns.mockWaitForPostExecution, + safeComplete: loggingSessionMockFns.mockSafeComplete, + safeCompleteWithError: loggingSessionMockFns.mockSafeCompleteWithError, + safeCompleteWithCancellation: loggingSessionMockFns.mockSafeCompleteWithCancellation, + safeCompleteWithPause: loggingSessionMockFns.mockSafeCompleteWithPause, + markAsFailed: loggingSessionMockFns.mockMarkAsFailed, +})) + +/** + * Static mock module for `@/lib/logs/execution/logging-session`. + * + * @example + * ```ts + * vi.mock('@/lib/logs/execution/logging-session', () => loggingSessionMock) + * ``` + */ +export const loggingSessionMock = { + LoggingSession: LoggingSessionMock, +} diff --git a/packages/testing/src/mocks/permissions.mock.ts b/packages/testing/src/mocks/permissions.mock.ts new file mode 100644 index 00000000000..167d079f9a8 --- /dev/null +++ b/packages/testing/src/mocks/permissions.mock.ts @@ -0,0 +1,50 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/workspaces/permissions/utils`. + * + * @example + * ```ts + * import { permissionsMockFns } from '@sim/testing' + * + * permissionsMockFns.mockCheckWorkspaceAccess.mockResolvedValue({ + * exists: true, hasAccess: true, canWrite: true, workspace: { id: 'ws-1', name: 'Test', ownerId: 'user-1' }, + * }) + * ``` + */ +export const permissionsMockFns = { + mockWorkspaceExists: vi.fn(), + mockGetWorkspaceById: vi.fn(), + mockGetWorkspaceWithOwner: vi.fn(), + mockCheckWorkspaceAccess: vi.fn(), + mockAssertActiveWorkspaceAccess: vi.fn(), + mockGetUserEntityPermissions: vi.fn(), + mockHasAdminPermission: vi.fn(), + mockGetUsersWithPermissions: vi.fn(), + mockGetWorkspaceMemberProfiles: vi.fn(), + mockHasWorkspaceAdminAccess: vi.fn(), + mockGetManageableWorkspaces: vi.fn(), +} + +/** + * Static mock module for `@/lib/workspaces/permissions/utils`. + * Defaults resolve to "allowed" state for safe test defaults. + * + * @example + * ```ts + * vi.mock('@/lib/workspaces/permissions/utils', () => permissionsMock) + * ``` + */ +export const permissionsMock = { + workspaceExists: permissionsMockFns.mockWorkspaceExists, + getWorkspaceById: permissionsMockFns.mockGetWorkspaceById, + getWorkspaceWithOwner: permissionsMockFns.mockGetWorkspaceWithOwner, + checkWorkspaceAccess: permissionsMockFns.mockCheckWorkspaceAccess, + assertActiveWorkspaceAccess: permissionsMockFns.mockAssertActiveWorkspaceAccess, + getUserEntityPermissions: permissionsMockFns.mockGetUserEntityPermissions, + hasAdminPermission: permissionsMockFns.mockHasAdminPermission, + getUsersWithPermissions: permissionsMockFns.mockGetUsersWithPermissions, + getWorkspaceMemberProfiles: permissionsMockFns.mockGetWorkspaceMemberProfiles, + hasWorkspaceAdminAccess: permissionsMockFns.mockHasWorkspaceAdminAccess, + getManageableWorkspaces: permissionsMockFns.mockGetManageableWorkspaces, +} diff --git a/packages/testing/src/mocks/redis-config.mock.ts b/packages/testing/src/mocks/redis-config.mock.ts new file mode 100644 index 00000000000..b40cf71eeef --- /dev/null +++ b/packages/testing/src/mocks/redis-config.mock.ts @@ -0,0 +1,39 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/core/config/redis`. + * Default: `getRedisClient` returns `null` (tests that need a client override it). + * `acquireLock` defaults to succeeding (`true`); `releaseLock` defaults to `true`. + * + * @example + * ```ts + * import { redisConfigMockFns } from '@sim/testing' + * + * redisConfigMockFns.mockGetRedisClient.mockReturnValue(myFakeRedis) + * ``` + */ +export const redisConfigMockFns = { + mockGetRedisClient: vi.fn().mockReturnValue(null), + mockOnRedisReconnect: vi.fn(), + mockAcquireLock: vi.fn().mockResolvedValue(true), + mockReleaseLock: vi.fn().mockResolvedValue(true), + mockCloseRedisConnection: vi.fn().mockResolvedValue(undefined), + mockResetForTesting: vi.fn(), +} + +/** + * Static mock module for `@/lib/core/config/redis`. + * + * @example + * ```ts + * vi.mock('@/lib/core/config/redis', () => redisConfigMock) + * ``` + */ +export const redisConfigMock = { + getRedisClient: redisConfigMockFns.mockGetRedisClient, + onRedisReconnect: redisConfigMockFns.mockOnRedisReconnect, + acquireLock: redisConfigMockFns.mockAcquireLock, + releaseLock: redisConfigMockFns.mockReleaseLock, + closeRedisConnection: redisConfigMockFns.mockCloseRedisConnection, + resetForTesting: redisConfigMockFns.mockResetForTesting, +} diff --git a/packages/testing/src/mocks/request.mock.ts b/packages/testing/src/mocks/request.mock.ts index 5b8610d550d..3b9fc0f9aba 100644 --- a/packages/testing/src/mocks/request.mock.ts +++ b/packages/testing/src/mocks/request.mock.ts @@ -60,7 +60,23 @@ export function createMockFormDataRequest( } /** - * Pre-configured mock for @/lib/core/utils/request module. + * Controllable mock functions for `@/lib/core/utils/request`. + * + * @example + * ```ts + * import { requestUtilsMockFns } from '@sim/testing' + * + * requestUtilsMockFns.mockGenerateRequestId.mockReturnValueOnce('test-req-42') + * requestUtilsMockFns.mockGetClientIp.mockReturnValueOnce('10.0.0.5') + * ``` + */ +export const requestUtilsMockFns = { + mockGenerateRequestId: vi.fn(() => 'mock-request-id'), + mockGetClientIp: vi.fn(() => '127.0.0.1'), +} + +/** + * Static mock module for `@/lib/core/utils/request`. * * @example * ```ts @@ -68,6 +84,7 @@ export function createMockFormDataRequest( * ``` */ export const requestUtilsMock = { - generateRequestId: vi.fn(() => 'mock-request-id'), - noop: vi.fn(), + generateRequestId: requestUtilsMockFns.mockGenerateRequestId, + getClientIp: requestUtilsMockFns.mockGetClientIp, + noop: () => {}, } diff --git a/packages/testing/src/mocks/schema.mock.ts b/packages/testing/src/mocks/schema.mock.ts new file mode 100644 index 00000000000..e7399b9bd23 --- /dev/null +++ b/packages/testing/src/mocks/schema.mock.ts @@ -0,0 +1,1206 @@ +/** + * Comprehensive mock for `@sim/db/schema`. + * Every exported table maps each column to its own name as a string, + * which satisfies drizzle column references used in query builders. + */ + +export const schemaMock = { + user: { + id: 'id', + name: 'name', + email: 'email', + normalizedEmail: 'normalizedEmail', + emailVerified: 'emailVerified', + image: 'image', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + stripeCustomerId: 'stripeCustomerId', + role: 'role', + banned: 'banned', + banReason: 'banReason', + banExpires: 'banExpires', + }, + session: { + id: 'id', + expiresAt: 'expiresAt', + token: 'token', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + ipAddress: 'ipAddress', + userAgent: 'userAgent', + userId: 'userId', + activeOrganizationId: 'activeOrganizationId', + impersonatedBy: 'impersonatedBy', + }, + account: { + id: 'id', + accountId: 'accountId', + providerId: 'providerId', + userId: 'userId', + accessToken: 'accessToken', + refreshToken: 'refreshToken', + idToken: 'idToken', + accessTokenExpiresAt: 'accessTokenExpiresAt', + refreshTokenExpiresAt: 'refreshTokenExpiresAt', + scope: 'scope', + password: 'password', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + verification: { + id: 'id', + identifier: 'identifier', + value: 'value', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowFolder: { + id: 'id', + name: 'name', + userId: 'userId', + workspaceId: 'workspaceId', + parentId: 'parentId', + color: 'color', + isExpanded: 'isExpanded', + sortOrder: 'sortOrder', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + archivedAt: 'archivedAt', + }, + workflow: { + id: 'id', + userId: 'userId', + workspaceId: 'workspaceId', + folderId: 'folderId', + sortOrder: 'sortOrder', + name: 'name', + description: 'description', + color: 'color', + lastSynced: 'lastSynced', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + isDeployed: 'isDeployed', + deployedAt: 'deployedAt', + isPublicApi: 'isPublicApi', + runCount: 'runCount', + lastRunAt: 'lastRunAt', + variables: 'variables', + archivedAt: 'archivedAt', + }, + workflowBlocks: { + id: 'id', + workflowId: 'workflowId', + type: 'type', + name: 'name', + positionX: 'positionX', + positionY: 'positionY', + enabled: 'enabled', + horizontalHandles: 'horizontalHandles', + isWide: 'isWide', + advancedMode: 'advancedMode', + triggerMode: 'triggerMode', + locked: 'locked', + height: 'height', + subBlocks: 'subBlocks', + outputs: 'outputs', + data: 'data', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowEdges: { + id: 'id', + workflowId: 'workflowId', + sourceBlockId: 'sourceBlockId', + targetBlockId: 'targetBlockId', + sourceHandle: 'sourceHandle', + targetHandle: 'targetHandle', + createdAt: 'createdAt', + }, + workflowSubflows: { + id: 'id', + workflowId: 'workflowId', + type: 'type', + config: 'config', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + waitlist: { + id: 'id', + email: 'email', + status: 'status', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowExecutionSnapshots: { + id: 'id', + workflowId: 'workflowId', + stateHash: 'stateHash', + stateData: 'stateData', + createdAt: 'createdAt', + }, + workflowExecutionLogs: { + id: 'id', + workflowId: 'workflowId', + workspaceId: 'workspaceId', + executionId: 'executionId', + stateSnapshotId: 'stateSnapshotId', + deploymentVersionId: 'deploymentVersionId', + level: 'level', + status: 'status', + trigger: 'trigger', + startedAt: 'startedAt', + endedAt: 'endedAt', + totalDurationMs: 'totalDurationMs', + executionData: 'executionData', + cost: 'cost', + files: 'files', + createdAt: 'createdAt', + }, + pausedExecutions: { + id: 'id', + workflowId: 'workflowId', + executionId: 'executionId', + executionSnapshot: 'executionSnapshot', + pausePoints: 'pausePoints', + totalPauseCount: 'totalPauseCount', + resumedCount: 'resumedCount', + status: 'status', + metadata: 'metadata', + pausedAt: 'pausedAt', + updatedAt: 'updatedAt', + expiresAt: 'expiresAt', + }, + resumeQueue: { + id: 'id', + pausedExecutionId: 'pausedExecutionId', + parentExecutionId: 'parentExecutionId', + newExecutionId: 'newExecutionId', + contextId: 'contextId', + resumeInput: 'resumeInput', + status: 'status', + queuedAt: 'queuedAt', + claimedAt: 'claimedAt', + completedAt: 'completedAt', + failureReason: 'failureReason', + }, + environment: { + id: 'id', + userId: 'userId', + variables: 'variables', + updatedAt: 'updatedAt', + }, + workspaceEnvironment: { + id: 'id', + workspaceId: 'workspaceId', + variables: 'variables', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workspaceBYOKKeys: { + id: 'id', + workspaceId: 'workspaceId', + providerId: 'providerId', + encryptedApiKey: 'encryptedApiKey', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + settings: { + id: 'id', + userId: 'userId', + theme: 'theme', + autoConnect: 'autoConnect', + telemetryEnabled: 'telemetryEnabled', + emailPreferences: 'emailPreferences', + billingUsageNotificationsEnabled: 'billingUsageNotificationsEnabled', + showTrainingControls: 'showTrainingControls', + superUserModeEnabled: 'superUserModeEnabled', + errorNotificationsEnabled: 'errorNotificationsEnabled', + snapToGridSize: 'snapToGridSize', + showActionBar: 'showActionBar', + copilotEnabledModels: 'copilotEnabledModels', + copilotAutoAllowedTools: 'copilotAutoAllowedTools', + lastActiveWorkspaceId: 'lastActiveWorkspaceId', + updatedAt: 'updatedAt', + }, + workflowSchedule: { + id: 'id', + workflowId: 'workflowId', + deploymentVersionId: 'deploymentVersionId', + blockId: 'blockId', + cronExpression: 'cronExpression', + nextRunAt: 'nextRunAt', + lastRanAt: 'lastRanAt', + lastQueuedAt: 'lastQueuedAt', + triggerType: 'triggerType', + timezone: 'timezone', + failedCount: 'failedCount', + status: 'status', + lastFailedAt: 'lastFailedAt', + sourceType: 'sourceType', + jobTitle: 'jobTitle', + prompt: 'prompt', + lifecycle: 'lifecycle', + successCondition: 'successCondition', + maxRuns: 'maxRuns', + runCount: 'runCount', + sourceChatId: 'sourceChatId', + sourceTaskName: 'sourceTaskName', + sourceUserId: 'sourceUserId', + sourceWorkspaceId: 'sourceWorkspaceId', + jobHistory: 'jobHistory', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + jobExecutionLogs: { + id: 'id', + scheduleId: 'scheduleId', + workspaceId: 'workspaceId', + executionId: 'executionId', + level: 'level', + status: 'status', + trigger: 'trigger', + startedAt: 'startedAt', + endedAt: 'endedAt', + totalDurationMs: 'totalDurationMs', + executionData: 'executionData', + cost: 'cost', + createdAt: 'createdAt', + }, + webhook: { + id: 'id', + workflowId: 'workflowId', + deploymentVersionId: 'deploymentVersionId', + blockId: 'blockId', + path: 'path', + provider: 'provider', + providerConfig: 'providerConfig', + isActive: 'isActive', + failedCount: 'failedCount', + lastFailedAt: 'lastFailedAt', + credentialSetId: 'credentialSetId', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + notificationTypeEnum: 'notificationTypeEnum', + notificationDeliveryStatusEnum: 'notificationDeliveryStatusEnum', + workspaceNotificationSubscription: { + id: 'id', + workspaceId: 'workspaceId', + notificationType: 'notificationType', + workflowIds: 'workflowIds', + allWorkflows: 'allWorkflows', + levelFilter: 'levelFilter', + triggerFilter: 'triggerFilter', + includeFinalOutput: 'includeFinalOutput', + includeTraceSpans: 'includeTraceSpans', + includeRateLimits: 'includeRateLimits', + includeUsageData: 'includeUsageData', + webhookConfig: 'webhookConfig', + emailRecipients: 'emailRecipients', + slackConfig: 'slackConfig', + alertConfig: 'alertConfig', + lastAlertAt: 'lastAlertAt', + active: 'active', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workspaceNotificationDelivery: { + id: 'id', + subscriptionId: 'subscriptionId', + workflowId: 'workflowId', + executionId: 'executionId', + status: 'status', + attempts: 'attempts', + lastAttemptAt: 'lastAttemptAt', + nextAttemptAt: 'nextAttemptAt', + responseStatus: 'responseStatus', + responseBody: 'responseBody', + errorMessage: 'errorMessage', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + apiKey: { + id: 'id', + userId: 'userId', + workspaceId: 'workspaceId', + createdBy: 'createdBy', + name: 'name', + key: 'key', + type: 'type', + lastUsed: 'lastUsed', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + expiresAt: 'expiresAt', + }, + billingBlockedReasonEnum: 'billingBlockedReasonEnum', + userStats: { + id: 'id', + userId: 'userId', + totalManualExecutions: 'totalManualExecutions', + totalApiCalls: 'totalApiCalls', + totalWebhookTriggers: 'totalWebhookTriggers', + totalScheduledExecutions: 'totalScheduledExecutions', + totalChatExecutions: 'totalChatExecutions', + totalMcpExecutions: 'totalMcpExecutions', + totalA2aExecutions: 'totalA2aExecutions', + totalTokensUsed: 'totalTokensUsed', + totalCost: 'totalCost', + currentUsageLimit: 'currentUsageLimit', + usageLimitUpdatedAt: 'usageLimitUpdatedAt', + currentPeriodCost: 'currentPeriodCost', + lastPeriodCost: 'lastPeriodCost', + billedOverageThisPeriod: 'billedOverageThisPeriod', + proPeriodCostSnapshot: 'proPeriodCostSnapshot', + creditBalance: 'creditBalance', + totalCopilotCost: 'totalCopilotCost', + currentPeriodCopilotCost: 'currentPeriodCopilotCost', + lastPeriodCopilotCost: 'lastPeriodCopilotCost', + totalCopilotTokens: 'totalCopilotTokens', + totalCopilotCalls: 'totalCopilotCalls', + totalMcpCopilotCalls: 'totalMcpCopilotCalls', + totalMcpCopilotCost: 'totalMcpCopilotCost', + currentPeriodMcpCopilotCost: 'currentPeriodMcpCopilotCost', + storageUsedBytes: 'storageUsedBytes', + lastActive: 'lastActive', + billingBlocked: 'billingBlocked', + billingBlockedReason: 'billingBlockedReason', + }, + customTools: { + id: 'id', + workspaceId: 'workspaceId', + userId: 'userId', + title: 'title', + schema: 'schema', + code: 'code', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + skill: { + id: 'id', + workspaceId: 'workspaceId', + userId: 'userId', + name: 'name', + description: 'description', + content: 'content', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + subscription: { + id: 'id', + plan: 'plan', + referenceId: 'referenceId', + stripeCustomerId: 'stripeCustomerId', + stripeSubscriptionId: 'stripeSubscriptionId', + status: 'status', + periodStart: 'periodStart', + periodEnd: 'periodEnd', + cancelAtPeriodEnd: 'cancelAtPeriodEnd', + seats: 'seats', + trialStart: 'trialStart', + trialEnd: 'trialEnd', + metadata: 'metadata', + }, + rateLimitBucket: { + key: 'key', + tokens: 'tokens', + lastRefillAt: 'lastRefillAt', + updatedAt: 'updatedAt', + }, + chat: { + id: 'id', + workflowId: 'workflowId', + userId: 'userId', + identifier: 'identifier', + title: 'title', + description: 'description', + isActive: 'isActive', + customizations: 'customizations', + authType: 'authType', + password: 'password', + allowedEmails: 'allowedEmails', + outputConfigs: 'outputConfigs', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + form: { + id: 'id', + workflowId: 'workflowId', + userId: 'userId', + identifier: 'identifier', + title: 'title', + description: 'description', + isActive: 'isActive', + customizations: 'customizations', + authType: 'authType', + password: 'password', + allowedEmails: 'allowedEmails', + showBranding: 'showBranding', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + organization: { + id: 'id', + name: 'name', + slug: 'slug', + logo: 'logo', + metadata: 'metadata', + whitelabelSettings: 'whitelabelSettings', + orgUsageLimit: 'orgUsageLimit', + storageUsedBytes: 'storageUsedBytes', + departedMemberUsage: 'departedMemberUsage', + creditBalance: 'creditBalance', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + member: { + id: 'id', + userId: 'userId', + organizationId: 'organizationId', + role: 'role', + createdAt: 'createdAt', + }, + invitation: { + id: 'id', + email: 'email', + inviterId: 'inviterId', + organizationId: 'organizationId', + role: 'role', + status: 'status', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + }, + workspace: { + id: 'id', + name: 'name', + color: 'color', + logoUrl: 'logoUrl', + ownerId: 'ownerId', + billedAccountUserId: 'billedAccountUserId', + allowPersonalApiKeys: 'allowPersonalApiKeys', + inboxEnabled: 'inboxEnabled', + inboxAddress: 'inboxAddress', + inboxProviderId: 'inboxProviderId', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workspaceFile: { + id: 'id', + workspaceId: 'workspaceId', + name: 'name', + key: 'key', + size: 'size', + type: 'type', + uploadedBy: 'uploadedBy', + deletedAt: 'deletedAt', + uploadedAt: 'uploadedAt', + }, + workspaceFiles: { + id: 'id', + key: 'key', + userId: 'userId', + workspaceId: 'workspaceId', + context: 'context', + chatId: 'chatId', + originalName: 'originalName', + contentType: 'contentType', + size: 'size', + deletedAt: 'deletedAt', + uploadedAt: 'uploadedAt', + }, + permissionTypeEnum: 'permissionTypeEnum', + workspaceInvitationStatusEnum: 'workspaceInvitationStatusEnum', + workspaceInvitation: { + id: 'id', + workspaceId: 'workspaceId', + email: 'email', + inviterId: 'inviterId', + role: 'role', + status: 'status', + token: 'token', + permissions: 'permissions', + orgInvitationId: 'orgInvitationId', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + permissions: { + id: 'id', + userId: 'userId', + entityType: 'entityType', + entityId: 'entityId', + permissionType: 'permissionType', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + memory: { + id: 'id', + workspaceId: 'workspaceId', + key: 'key', + data: 'data', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + deletedAt: 'deletedAt', + }, + knowledgeBase: { + id: 'id', + userId: 'userId', + workspaceId: 'workspaceId', + name: 'name', + description: 'description', + tokenCount: 'tokenCount', + embeddingModel: 'embeddingModel', + embeddingDimension: 'embeddingDimension', + chunkingConfig: 'chunkingConfig', + deletedAt: 'deletedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + document: { + id: 'id', + knowledgeBaseId: 'knowledgeBaseId', + filename: 'filename', + fileUrl: 'fileUrl', + fileSize: 'fileSize', + mimeType: 'mimeType', + chunkCount: 'chunkCount', + tokenCount: 'tokenCount', + characterCount: 'characterCount', + processingStatus: 'processingStatus', + processingStartedAt: 'processingStartedAt', + processingCompletedAt: 'processingCompletedAt', + processingError: 'processingError', + enabled: 'enabled', + archivedAt: 'archivedAt', + deletedAt: 'deletedAt', + userExcluded: 'userExcluded', + tag1: 'tag1', + tag2: 'tag2', + tag3: 'tag3', + tag4: 'tag4', + tag5: 'tag5', + tag6: 'tag6', + tag7: 'tag7', + number1: 'number1', + number2: 'number2', + number3: 'number3', + number4: 'number4', + number5: 'number5', + date1: 'date1', + date2: 'date2', + boolean1: 'boolean1', + boolean2: 'boolean2', + boolean3: 'boolean3', + connectorId: 'connectorId', + externalId: 'externalId', + contentHash: 'contentHash', + sourceUrl: 'sourceUrl', + uploadedAt: 'uploadedAt', + }, + knowledgeBaseTagDefinitions: { + id: 'id', + knowledgeBaseId: 'knowledgeBaseId', + tagSlot: 'tagSlot', + displayName: 'displayName', + fieldType: 'fieldType', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + embedding: { + id: 'id', + knowledgeBaseId: 'knowledgeBaseId', + documentId: 'documentId', + chunkIndex: 'chunkIndex', + chunkHash: 'chunkHash', + content: 'content', + contentLength: 'contentLength', + tokenCount: 'tokenCount', + embedding: 'embedding', + embeddingModel: 'embeddingModel', + startOffset: 'startOffset', + endOffset: 'endOffset', + tag1: 'tag1', + tag2: 'tag2', + tag3: 'tag3', + tag4: 'tag4', + tag5: 'tag5', + tag6: 'tag6', + tag7: 'tag7', + number1: 'number1', + number2: 'number2', + number3: 'number3', + number4: 'number4', + number5: 'number5', + date1: 'date1', + date2: 'date2', + boolean1: 'boolean1', + boolean2: 'boolean2', + boolean3: 'boolean3', + enabled: 'enabled', + contentTsv: 'contentTsv', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + docsEmbeddings: { + chunkId: 'chunkId', + chunkText: 'chunkText', + sourceDocument: 'sourceDocument', + sourceLink: 'sourceLink', + headerText: 'headerText', + headerLevel: 'headerLevel', + tokenCount: 'tokenCount', + embedding: 'embedding', + embeddingModel: 'embeddingModel', + metadata: 'metadata', + chunkTextTsv: 'chunkTextTsv', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + chatTypeEnum: 'chatTypeEnum', + copilotChats: { + id: 'id', + userId: 'userId', + workflowId: 'workflowId', + workspaceId: 'workspaceId', + type: 'type', + title: 'title', + messages: 'messages', + model: 'model', + conversationId: 'conversationId', + previewYaml: 'previewYaml', + planArtifact: 'planArtifact', + config: 'config', + resources: 'resources', + lastSeenAt: 'lastSeenAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + copilotWorkflowReadHashes: { + id: 'id', + chatId: 'chatId', + workflowId: 'workflowId', + hash: 'hash', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowCheckpoints: { + id: 'id', + userId: 'userId', + workflowId: 'workflowId', + chatId: 'chatId', + messageId: 'messageId', + workflowState: 'workflowState', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + copilotRunStatusEnum: 'copilotRunStatusEnum', + copilotAsyncToolStatusEnum: 'copilotAsyncToolStatusEnum', + copilotRuns: { + id: 'id', + executionId: 'executionId', + parentRunId: 'parentRunId', + chatId: 'chatId', + userId: 'userId', + workflowId: 'workflowId', + workspaceId: 'workspaceId', + streamId: 'streamId', + agent: 'agent', + model: 'model', + provider: 'provider', + status: 'status', + requestContext: 'requestContext', + startedAt: 'startedAt', + completedAt: 'completedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + error: 'error', + }, + copilotRunCheckpoints: { + id: 'id', + runId: 'runId', + pendingToolCallId: 'pendingToolCallId', + conversationSnapshot: 'conversationSnapshot', + agentState: 'agentState', + providerRequest: 'providerRequest', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + copilotAsyncToolCalls: { + id: 'id', + runId: 'runId', + checkpointId: 'checkpointId', + toolCallId: 'toolCallId', + toolName: 'toolName', + args: 'args', + status: 'status', + result: 'result', + error: 'error', + claimedAt: 'claimedAt', + claimedBy: 'claimedBy', + completedAt: 'completedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + templateStatusEnum: 'templateStatusEnum', + templateCreatorTypeEnum: 'templateCreatorTypeEnum', + templateCreators: { + id: 'id', + referenceType: 'referenceType', + referenceId: 'referenceId', + name: 'name', + profileImageUrl: 'profileImageUrl', + details: 'details', + verified: 'verified', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + templates: { + id: 'id', + workflowId: 'workflowId', + name: 'name', + details: 'details', + creatorId: 'creatorId', + views: 'views', + stars: 'stars', + status: 'status', + tags: 'tags', + requiredCredentials: 'requiredCredentials', + state: 'state', + ogImageUrl: 'ogImageUrl', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + templateStars: { + id: 'id', + userId: 'userId', + templateId: 'templateId', + starredAt: 'starredAt', + createdAt: 'createdAt', + }, + copilotFeedback: { + feedbackId: 'feedbackId', + userId: 'userId', + chatId: 'chatId', + userQuery: 'userQuery', + agentResponse: 'agentResponse', + isPositive: 'isPositive', + feedback: 'feedback', + workflowYaml: 'workflowYaml', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowDeploymentVersion: { + id: 'id', + workflowId: 'workflowId', + version: 'version', + name: 'name', + description: 'description', + state: 'state', + isActive: 'isActive', + createdAt: 'createdAt', + createdBy: 'createdBy', + }, + idempotencyKey: { + key: 'key', + result: 'result', + createdAt: 'createdAt', + }, + mcpServers: { + id: 'id', + workspaceId: 'workspaceId', + createdBy: 'createdBy', + name: 'name', + description: 'description', + transport: 'transport', + url: 'url', + headers: 'headers', + timeout: 'timeout', + retries: 'retries', + enabled: 'enabled', + lastConnected: 'lastConnected', + connectionStatus: 'connectionStatus', + lastError: 'lastError', + statusConfig: 'statusConfig', + toolCount: 'toolCount', + lastToolsRefresh: 'lastToolsRefresh', + totalRequests: 'totalRequests', + lastUsed: 'lastUsed', + deletedAt: 'deletedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + ssoProvider: { + id: 'id', + issuer: 'issuer', + domain: 'domain', + oidcConfig: 'oidcConfig', + samlConfig: 'samlConfig', + userId: 'userId', + providerId: 'providerId', + organizationId: 'organizationId', + }, + workflowMcpServer: { + id: 'id', + workspaceId: 'workspaceId', + createdBy: 'createdBy', + name: 'name', + description: 'description', + isPublic: 'isPublic', + deletedAt: 'deletedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + workflowMcpTool: { + id: 'id', + serverId: 'serverId', + workflowId: 'workflowId', + toolName: 'toolName', + toolDescription: 'toolDescription', + parameterSchema: 'parameterSchema', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + a2aTaskStatusEnum: 'a2aTaskStatusEnum', + a2aAgent: { + id: 'id', + workspaceId: 'workspaceId', + workflowId: 'workflowId', + createdBy: 'createdBy', + name: 'name', + description: 'description', + version: 'version', + capabilities: 'capabilities', + skills: 'skills', + authentication: 'authentication', + signatures: 'signatures', + isPublished: 'isPublished', + publishedAt: 'publishedAt', + archivedAt: 'archivedAt', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + a2aTask: { + id: 'id', + agentId: 'agentId', + sessionId: 'sessionId', + status: 'status', + messages: 'messages', + artifacts: 'artifacts', + executionId: 'executionId', + metadata: 'metadata', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + completedAt: 'completedAt', + }, + a2aPushNotificationConfig: { + id: 'id', + taskId: 'taskId', + url: 'url', + token: 'token', + authSchemes: 'authSchemes', + authCredentials: 'authCredentials', + isActive: 'isActive', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + auditLog: { + id: 'id', + workspaceId: 'workspaceId', + actorId: 'actorId', + action: 'action', + resourceType: 'resourceType', + resourceId: 'resourceId', + actorName: 'actorName', + actorEmail: 'actorEmail', + resourceName: 'resourceName', + description: 'description', + metadata: 'metadata', + ipAddress: 'ipAddress', + userAgent: 'userAgent', + createdAt: 'createdAt', + }, + usageLogCategoryEnum: 'usageLogCategoryEnum', + usageLogSourceEnum: 'usageLogSourceEnum', + usageLog: { + id: 'id', + userId: 'userId', + category: 'category', + source: 'source', + description: 'description', + metadata: 'metadata', + cost: 'cost', + workspaceId: 'workspaceId', + workflowId: 'workflowId', + executionId: 'executionId', + createdAt: 'createdAt', + }, + credentialTypeEnum: 'credentialTypeEnum', + credential: { + id: 'id', + workspaceId: 'workspaceId', + type: 'type', + displayName: 'displayName', + description: 'description', + providerId: 'providerId', + accountId: 'accountId', + envKey: 'envKey', + envOwnerUserId: 'envOwnerUserId', + encryptedServiceAccountKey: 'encryptedServiceAccountKey', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + credentialMemberRoleEnum: 'credentialMemberRoleEnum', + credentialMemberStatusEnum: 'credentialMemberStatusEnum', + credentialMember: { + id: 'id', + credentialId: 'credentialId', + userId: 'userId', + role: 'role', + status: 'status', + joinedAt: 'joinedAt', + invitedBy: 'invitedBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + pendingCredentialDraft: { + id: 'id', + userId: 'userId', + workspaceId: 'workspaceId', + providerId: 'providerId', + displayName: 'displayName', + description: 'description', + credentialId: 'credentialId', + expiresAt: 'expiresAt', + createdAt: 'createdAt', + }, + credentialSet: { + id: 'id', + organizationId: 'organizationId', + name: 'name', + description: 'description', + providerId: 'providerId', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + credentialSetMemberStatusEnum: 'credentialSetMemberStatusEnum', + credentialSetMember: { + id: 'id', + credentialSetId: 'credentialSetId', + userId: 'userId', + status: 'status', + joinedAt: 'joinedAt', + invitedBy: 'invitedBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + credentialSetInvitationStatusEnum: 'credentialSetInvitationStatusEnum', + credentialSetInvitation: { + id: 'id', + credentialSetId: 'credentialSetId', + email: 'email', + token: 'token', + invitedBy: 'invitedBy', + status: 'status', + expiresAt: 'expiresAt', + acceptedAt: 'acceptedAt', + acceptedByUserId: 'acceptedByUserId', + createdAt: 'createdAt', + }, + permissionGroup: { + id: 'id', + organizationId: 'organizationId', + name: 'name', + description: 'description', + config: 'config', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + autoAddNewMembers: 'autoAddNewMembers', + }, + permissionGroupMember: { + id: 'id', + permissionGroupId: 'permissionGroupId', + userId: 'userId', + assignedBy: 'assignedBy', + assignedAt: 'assignedAt', + }, + asyncJobs: { + id: 'id', + type: 'type', + payload: 'payload', + status: 'status', + createdAt: 'createdAt', + startedAt: 'startedAt', + completedAt: 'completedAt', + runAt: 'runAt', + attempts: 'attempts', + maxAttempts: 'maxAttempts', + error: 'error', + output: 'output', + metadata: 'metadata', + updatedAt: 'updatedAt', + }, + knowledgeConnector: { + id: 'id', + knowledgeBaseId: 'knowledgeBaseId', + connectorType: 'connectorType', + credentialId: 'credentialId', + encryptedApiKey: 'encryptedApiKey', + sourceConfig: 'sourceConfig', + syncMode: 'syncMode', + syncIntervalMinutes: 'syncIntervalMinutes', + status: 'status', + lastSyncAt: 'lastSyncAt', + lastSyncError: 'lastSyncError', + lastSyncDocCount: 'lastSyncDocCount', + nextSyncAt: 'nextSyncAt', + consecutiveFailures: 'consecutiveFailures', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + archivedAt: 'archivedAt', + deletedAt: 'deletedAt', + }, + knowledgeConnectorSyncLog: { + id: 'id', + connectorId: 'connectorId', + status: 'status', + startedAt: 'startedAt', + completedAt: 'completedAt', + docsAdded: 'docsAdded', + docsUpdated: 'docsUpdated', + docsDeleted: 'docsDeleted', + docsUnchanged: 'docsUnchanged', + docsFailed: 'docsFailed', + errorMessage: 'errorMessage', + }, + userTableDefinitions: { + id: 'id', + workspaceId: 'workspaceId', + name: 'name', + description: 'description', + schema: 'schema', + metadata: 'metadata', + maxRows: 'maxRows', + rowCount: 'rowCount', + archivedAt: 'archivedAt', + createdBy: 'createdBy', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + userTableRows: { + id: 'id', + tableId: 'tableId', + workspaceId: 'workspaceId', + data: 'data', + position: 'position', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + createdBy: 'createdBy', + }, + oauthApplication: { + id: 'id', + name: 'name', + icon: 'icon', + metadata: 'metadata', + clientId: 'clientId', + clientSecret: 'clientSecret', + redirectURLs: 'redirectURLs', + type: 'type', + disabled: 'disabled', + userId: 'userId', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + oauthAccessToken: { + id: 'id', + accessToken: 'accessToken', + refreshToken: 'refreshToken', + accessTokenExpiresAt: 'accessTokenExpiresAt', + refreshTokenExpiresAt: 'refreshTokenExpiresAt', + clientId: 'clientId', + userId: 'userId', + scopes: 'scopes', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + }, + oauthConsent: { + id: 'id', + clientId: 'clientId', + userId: 'userId', + scopes: 'scopes', + createdAt: 'createdAt', + updatedAt: 'updatedAt', + consentGiven: 'consentGiven', + }, + jwks: { + id: 'id', + publicKey: 'publicKey', + privateKey: 'privateKey', + createdAt: 'createdAt', + }, + mothershipInboxAllowedSender: { + id: 'id', + workspaceId: 'workspaceId', + email: 'email', + label: 'label', + addedBy: 'addedBy', + createdAt: 'createdAt', + }, + mothershipInboxTask: { + id: 'id', + workspaceId: 'workspaceId', + fromEmail: 'fromEmail', + fromName: 'fromName', + subject: 'subject', + bodyPreview: 'bodyPreview', + bodyText: 'bodyText', + bodyHtml: 'bodyHtml', + emailMessageId: 'emailMessageId', + inReplyTo: 'inReplyTo', + responseMessageId: 'responseMessageId', + agentmailMessageId: 'agentmailMessageId', + status: 'status', + chatId: 'chatId', + triggerJobId: 'triggerJobId', + resultSummary: 'resultSummary', + errorMessage: 'errorMessage', + rejectionReason: 'rejectionReason', + hasAttachments: 'hasAttachments', + ccRecipients: 'ccRecipients', + createdAt: 'createdAt', + processingStartedAt: 'processingStartedAt', + completedAt: 'completedAt', + }, + mothershipInboxWebhook: { + id: 'id', + workspaceId: 'workspaceId', + webhookId: 'webhookId', + secret: 'secret', + createdAt: 'createdAt', + }, + academyCertStatusEnum: 'academyCertStatusEnum', + academyCertificate: { + id: 'id', + userId: 'userId', + courseId: 'courseId', + status: 'status', + issuedAt: 'issuedAt', + expiresAt: 'expiresAt', + certificateNumber: 'certificateNumber', + metadata: 'metadata', + createdAt: 'createdAt', + }, + /** Custom type export for tsvector */ + tsvector: 'tsvector', +} diff --git a/packages/testing/src/mocks/urls.mock.ts b/packages/testing/src/mocks/urls.mock.ts new file mode 100644 index 00000000000..49992cd278e --- /dev/null +++ b/packages/testing/src/mocks/urls.mock.ts @@ -0,0 +1,43 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/core/utils/urls`. + * + * @example + * ```ts + * import { urlsMockFns } from '@sim/testing' + * + * urlsMockFns.mockGetBaseUrl.mockReturnValue('https://custom.example.com') + * ``` + */ +export const urlsMockFns = { + mockGetBaseUrl: vi.fn(), + mockGetInternalApiBaseUrl: vi.fn(), + mockEnsureAbsoluteUrl: vi.fn(), + mockGetBaseDomain: vi.fn(), + mockGetEmailDomain: vi.fn(), + mockGetSocketServerUrl: vi.fn(), + mockGetSocketUrl: vi.fn(), + mockGetOllamaUrl: vi.fn(), +} + +/** + * Static mock module for `@/lib/core/utils/urls`. + * Functions return sensible localhost defaults. + * + * @example + * ```ts + * vi.mock('@/lib/core/utils/urls', () => urlsMock) + * ``` + */ +export const urlsMock = { + SITE_URL: 'https://www.sim.ai', + getBaseUrl: urlsMockFns.mockGetBaseUrl, + getInternalApiBaseUrl: urlsMockFns.mockGetInternalApiBaseUrl, + ensureAbsoluteUrl: urlsMockFns.mockEnsureAbsoluteUrl, + getBaseDomain: urlsMockFns.mockGetBaseDomain, + getEmailDomain: urlsMockFns.mockGetEmailDomain, + getSocketServerUrl: urlsMockFns.mockGetSocketServerUrl, + getSocketUrl: urlsMockFns.mockGetSocketUrl, + getOllamaUrl: urlsMockFns.mockGetOllamaUrl, +} diff --git a/packages/testing/src/mocks/uuid.mock.ts b/packages/testing/src/mocks/uuid.mock.ts deleted file mode 100644 index d8294a4d1d5..00000000000 --- a/packages/testing/src/mocks/uuid.mock.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * UUID mock utilities — intentionally empty. - * - * All test files should mock `@/lib/core/utils/uuid` directly using - * `vi.hoisted()` + `vi.mock()` per project testing rules. - */ diff --git a/packages/testing/src/mocks/workflows-api-utils.mock.ts b/packages/testing/src/mocks/workflows-api-utils.mock.ts new file mode 100644 index 00000000000..f7700695b87 --- /dev/null +++ b/packages/testing/src/mocks/workflows-api-utils.mock.ts @@ -0,0 +1,49 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/app/api/workflows/utils`. + * + * Default `createSuccessResponse`/`createErrorResponse` return a mock Response-like + * object where `.json()` resolves to the payload — compatible with most assertions + * like `expect(await res.json()).toEqual(...)` and `expect(res.status).toBe(...)`. + * + * @example + * ```ts + * import { workflowsApiUtilsMockFns } from '@sim/testing' + * + * workflowsApiUtilsMockFns.mockVerifyWorkspaceMembership.mockResolvedValue('admin') + * workflowsApiUtilsMockFns.mockCheckNeedsRedeployment.mockResolvedValue(true) + * ``` + */ +export const workflowsApiUtilsMockFns = { + mockCreateSuccessResponse: vi.fn((data: unknown) => ({ + status: 200, + ok: true, + json: async () => data, + })), + mockCreateErrorResponse: vi.fn((error: string, status: number, code?: string) => ({ + status, + ok: false, + json: async () => ({ + error, + code: code || error.toUpperCase().replace(/\s+/g, '_'), + }), + })), + mockCheckNeedsRedeployment: vi.fn().mockResolvedValue(false), + mockVerifyWorkspaceMembership: vi.fn().mockResolvedValue('member'), +} + +/** + * Static mock module for `@/app/api/workflows/utils`. + * + * @example + * ```ts + * vi.mock('@/app/api/workflows/utils', () => workflowsApiUtilsMock) + * ``` + */ +export const workflowsApiUtilsMock = { + createSuccessResponse: workflowsApiUtilsMockFns.mockCreateSuccessResponse, + createErrorResponse: workflowsApiUtilsMockFns.mockCreateErrorResponse, + checkNeedsRedeployment: workflowsApiUtilsMockFns.mockCheckNeedsRedeployment, + verifyWorkspaceMembership: workflowsApiUtilsMockFns.mockVerifyWorkspaceMembership, +} diff --git a/packages/testing/src/mocks/workflows-orchestration.mock.ts b/packages/testing/src/mocks/workflows-orchestration.mock.ts new file mode 100644 index 00000000000..0e9761fe91a --- /dev/null +++ b/packages/testing/src/mocks/workflows-orchestration.mock.ts @@ -0,0 +1,47 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/workflows/orchestration`. + * All defaults are bare `vi.fn()` — configure per-test as needed. + * + * @example + * ```ts + * import { workflowsOrchestrationMockFns } from '@sim/testing' + * + * workflowsOrchestrationMockFns.mockPerformFullDeploy.mockResolvedValue({ + * success: true, + * version: 1, + * }) + * ``` + */ +export const workflowsOrchestrationMockFns = { + mockPerformChatDeploy: vi.fn(), + mockPerformChatUndeploy: vi.fn(), + mockNotifySocketDeploymentChanged: vi.fn(), + mockPerformActivateVersion: vi.fn(), + mockPerformFullDeploy: vi.fn(), + mockPerformFullUndeploy: vi.fn(), + mockPerformRevertToVersion: vi.fn(), + mockPerformDeleteFolder: vi.fn(), + mockPerformDeleteWorkflow: vi.fn(), +} + +/** + * Static mock module for `@/lib/workflows/orchestration`. + * + * @example + * ```ts + * vi.mock('@/lib/workflows/orchestration', () => workflowsOrchestrationMock) + * ``` + */ +export const workflowsOrchestrationMock = { + performChatDeploy: workflowsOrchestrationMockFns.mockPerformChatDeploy, + performChatUndeploy: workflowsOrchestrationMockFns.mockPerformChatUndeploy, + notifySocketDeploymentChanged: workflowsOrchestrationMockFns.mockNotifySocketDeploymentChanged, + performActivateVersion: workflowsOrchestrationMockFns.mockPerformActivateVersion, + performFullDeploy: workflowsOrchestrationMockFns.mockPerformFullDeploy, + performFullUndeploy: workflowsOrchestrationMockFns.mockPerformFullUndeploy, + performRevertToVersion: workflowsOrchestrationMockFns.mockPerformRevertToVersion, + performDeleteFolder: workflowsOrchestrationMockFns.mockPerformDeleteFolder, + performDeleteWorkflow: workflowsOrchestrationMockFns.mockPerformDeleteWorkflow, +} diff --git a/packages/testing/src/mocks/workflows-persistence-utils.mock.ts b/packages/testing/src/mocks/workflows-persistence-utils.mock.ts new file mode 100644 index 00000000000..57fb6761db6 --- /dev/null +++ b/packages/testing/src/mocks/workflows-persistence-utils.mock.ts @@ -0,0 +1,60 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/workflows/persistence/utils`. + * All defaults are bare `vi.fn()` — configure per-test as needed. + * + * @example + * ```ts + * import { workflowsPersistenceUtilsMockFns } from '@sim/testing' + * + * workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables.mockResolvedValue({ + * blocks: {}, + * edges: [], + * loops: {}, + * parallels: {}, + * isFromNormalizedTables: true, + * }) + * ``` + */ +export const workflowsPersistenceUtilsMockFns = { + mockBlockExistsInDeployment: vi.fn(), + mockLoadDeployedWorkflowState: vi.fn(), + mockMigrateAgentBlocksToMessagesFormat: vi.fn(), + mockLoadWorkflowFromNormalizedTables: vi.fn(), + mockSaveWorkflowToNormalizedTables: vi.fn(), + mockWorkflowExistsInNormalizedTables: vi.fn(), + mockDeployWorkflow: vi.fn(), + mockRegenerateWorkflowStateIds: vi.fn(), + mockUndeployWorkflow: vi.fn(), + mockActivateWorkflowVersion: vi.fn(), + mockActivateWorkflowVersionById: vi.fn(), + mockListWorkflowVersions: vi.fn(), +} + +/** + * Static mock module for `@/lib/workflows/persistence/utils`. + * + * @example + * ```ts + * vi.mock('@/lib/workflows/persistence/utils', () => workflowsPersistenceUtilsMock) + * ``` + */ +export const workflowsPersistenceUtilsMock = { + blockExistsInDeployment: workflowsPersistenceUtilsMockFns.mockBlockExistsInDeployment, + loadDeployedWorkflowState: workflowsPersistenceUtilsMockFns.mockLoadDeployedWorkflowState, + migrateAgentBlocksToMessagesFormat: + workflowsPersistenceUtilsMockFns.mockMigrateAgentBlocksToMessagesFormat, + loadWorkflowFromNormalizedTables: + workflowsPersistenceUtilsMockFns.mockLoadWorkflowFromNormalizedTables, + saveWorkflowToNormalizedTables: + workflowsPersistenceUtilsMockFns.mockSaveWorkflowToNormalizedTables, + workflowExistsInNormalizedTables: + workflowsPersistenceUtilsMockFns.mockWorkflowExistsInNormalizedTables, + deployWorkflow: workflowsPersistenceUtilsMockFns.mockDeployWorkflow, + regenerateWorkflowStateIds: workflowsPersistenceUtilsMockFns.mockRegenerateWorkflowStateIds, + undeployWorkflow: workflowsPersistenceUtilsMockFns.mockUndeployWorkflow, + activateWorkflowVersion: workflowsPersistenceUtilsMockFns.mockActivateWorkflowVersion, + activateWorkflowVersionById: workflowsPersistenceUtilsMockFns.mockActivateWorkflowVersionById, + listWorkflowVersions: workflowsPersistenceUtilsMockFns.mockListWorkflowVersions, +} diff --git a/packages/testing/src/mocks/workflows-utils.mock.ts b/packages/testing/src/mocks/workflows-utils.mock.ts new file mode 100644 index 00000000000..0930d9b5dc9 --- /dev/null +++ b/packages/testing/src/mocks/workflows-utils.mock.ts @@ -0,0 +1,70 @@ +import { vi } from 'vitest' + +/** + * Controllable mock functions for `@/lib/workflows/utils`. + * Use these references in tests to configure return values and assert calls. + * + * @example + * ```ts + * import { workflowsUtilsMockFns } from '@sim/testing' + * + * workflowsUtilsMockFns.mockGetWorkflowById.mockResolvedValue({ id: 'wf-1', name: 'Test' }) + * ``` + */ +export const workflowsUtilsMockFns = { + mockGetWorkflowById: vi.fn(), + mockListWorkflows: vi.fn(), + mockDeduplicateWorkflowName: vi.fn(), + mockResolveWorkflowIdForUser: vi.fn(), + mockUpdateWorkflowRunCounts: vi.fn(), + mockWorkflowHasResponseBlock: vi.fn(), + mockCreateHttpResponseFromBlock: vi.fn(), + mockValidateWorkflowPermissions: vi.fn(), + mockAuthorizeWorkflowByWorkspacePermission: vi.fn(), + mockCreateWorkflowRecord: vi.fn(), + mockUpdateWorkflowRecord: vi.fn(), + mockDeleteWorkflowRecord: vi.fn(), + mockSetWorkflowVariables: vi.fn(), + mockCreateFolderRecord: vi.fn(), + mockUpdateFolderRecord: vi.fn(), + mockDeleteFolderRecord: vi.fn(), + mockCheckForCircularReference: vi.fn(), + mockListFolders: vi.fn(), +} + +/** + * Static mock module for `@/lib/workflows/utils`. + * Use with `vi.mock()` to replace the real module in tests. + * + * Default behaviors: + * - `getWorkflowById` resolves to `null` + * - `authorizeWorkflowByWorkspacePermission` resolves to allowed with `test-workspace-id` + * - `validateWorkflowPermissions` resolves to an authorized result + * - Other functions resolve to sensible empty/success defaults + * + * @example + * ```ts + * vi.mock('@/lib/workflows/utils', () => workflowsUtilsMock) + * ``` + */ +export const workflowsUtilsMock = { + getWorkflowById: workflowsUtilsMockFns.mockGetWorkflowById, + listWorkflows: workflowsUtilsMockFns.mockListWorkflows, + deduplicateWorkflowName: workflowsUtilsMockFns.mockDeduplicateWorkflowName, + resolveWorkflowIdForUser: workflowsUtilsMockFns.mockResolveWorkflowIdForUser, + updateWorkflowRunCounts: workflowsUtilsMockFns.mockUpdateWorkflowRunCounts, + workflowHasResponseBlock: workflowsUtilsMockFns.mockWorkflowHasResponseBlock, + createHttpResponseFromBlock: workflowsUtilsMockFns.mockCreateHttpResponseFromBlock, + validateWorkflowPermissions: workflowsUtilsMockFns.mockValidateWorkflowPermissions, + authorizeWorkflowByWorkspacePermission: + workflowsUtilsMockFns.mockAuthorizeWorkflowByWorkspacePermission, + createWorkflowRecord: workflowsUtilsMockFns.mockCreateWorkflowRecord, + updateWorkflowRecord: workflowsUtilsMockFns.mockUpdateWorkflowRecord, + deleteWorkflowRecord: workflowsUtilsMockFns.mockDeleteWorkflowRecord, + setWorkflowVariables: workflowsUtilsMockFns.mockSetWorkflowVariables, + createFolderRecord: workflowsUtilsMockFns.mockCreateFolderRecord, + updateFolderRecord: workflowsUtilsMockFns.mockUpdateFolderRecord, + deleteFolderRecord: workflowsUtilsMockFns.mockDeleteFolderRecord, + checkForCircularReference: workflowsUtilsMockFns.mockCheckForCircularReference, + listFolders: workflowsUtilsMockFns.mockListFolders, +} diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 00000000000..013c600c567 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,45 @@ +{ + "name": "@sim/utils", + "version": "0.1.0", + "private": true, + "sideEffects": false, + "type": "module", + "license": "Apache-2.0", + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + }, + "./id": { + "types": "./src/id.ts", + "default": "./src/id.ts" + }, + "./errors": { + "types": "./src/errors.ts", + "default": "./src/errors.ts" + }, + "./helpers": { + "types": "./src/helpers.ts", + "default": "./src/helpers.ts" + }, + "./formatting": { + "types": "./src/formatting.ts", + "default": "./src/formatting.ts" + } + }, + "scripts": { + "type-check": "tsc --noEmit", + "lint": "biome check --write --unsafe .", + "lint:check": "biome check .", + "format": "biome format --write .", + "format:check": "biome format .", + "test": "vitest run", + "test:watch": "vitest" + }, + "dependencies": {}, + "devDependencies": { + "@sim/tsconfig": "workspace:*", + "typescript": "^5.7.3", + "vitest": "^3.0.8" + } +} diff --git a/packages/utils/src/errors.test.ts b/packages/utils/src/errors.test.ts new file mode 100644 index 00000000000..fa11dc191f9 --- /dev/null +++ b/packages/utils/src/errors.test.ts @@ -0,0 +1,78 @@ +/** + * @vitest-environment node + */ +import { describe, expect, it } from 'vitest' +import { getPostgresErrorCode, toError } from './errors.js' + +describe('toError', () => { + it('returns the same Error when given an Error', () => { + const err = new Error('test') + expect(toError(err)).toBe(err) + }) + + it('wraps a string into an Error', () => { + const err = toError('msg') + expect(err).toBeInstanceOf(Error) + expect(err.message).toBe('msg') + }) + + it('wraps a number into an Error', () => { + const err = toError(42) + expect(err).toBeInstanceOf(Error) + expect(err.message).toBe('42') + }) + + it('wraps null into an Error', () => { + const err = toError(null) + expect(err).toBeInstanceOf(Error) + expect(err.message).toBe('null') + }) + + it('wraps undefined into an Error', () => { + const err = toError(undefined) + expect(err).toBeInstanceOf(Error) + expect(err.message).toBe('undefined') + }) +}) + +describe('getPostgresErrorCode', () => { + it('reads code from Error.code', () => { + const err = new Error('fail') as Error & { code: string } + err.code = '23505' + expect(getPostgresErrorCode(err)).toBe('23505') + }) + + it('reads code from plain object', () => { + expect(getPostgresErrorCode({ code: '23505' })).toBe('23505') + }) + + it('reads code from Error.cause', () => { + const err = new Error('fail', { cause: { code: '23505' } }) + expect(getPostgresErrorCode(err)).toBe('23505') + }) + + it('walks nested Error causes', () => { + const pgErr = new Error('unique_violation') as Error & { code: string } + pgErr.code = '23505' + const err = new Error('outer', { cause: new Error('inner', { cause: pgErr }) }) + expect(getPostgresErrorCode(err)).toBe('23505') + }) + + it('returns undefined for non-errors', () => { + expect(getPostgresErrorCode(undefined)).toBeUndefined() + expect(getPostgresErrorCode(null)).toBeUndefined() + expect(getPostgresErrorCode('23505')).toBeUndefined() + }) + + it('returns undefined when no code is present', () => { + expect(getPostgresErrorCode(new Error('no code'))).toBeUndefined() + }) + + it('does not loop forever on circular cause chains', () => { + const err1 = new Error('a') + const err2 = new Error('b', { cause: err1 }) + // Create circular reference + ;(err1 as { cause?: unknown }).cause = err2 + expect(getPostgresErrorCode(err1)).toBeUndefined() + }) +}) diff --git a/apps/sim/lib/core/utils/pg-error.ts b/packages/utils/src/errors.ts similarity index 68% rename from apps/sim/lib/core/utils/pg-error.ts rename to packages/utils/src/errors.ts index df38b955914..73d05d90e31 100644 --- a/apps/sim/lib/core/utils/pg-error.ts +++ b/packages/utils/src/errors.ts @@ -1,3 +1,13 @@ +/** + * Normalizes an unknown caught value into an Error instance. + * Replaces the common `e instanceof Error ? e : new Error(String(e))` pattern in catch clauses. + */ +export function toError(value: unknown): Error { + if (value instanceof Error) return value + if (typeof value === 'string') return new Error(value) + return new Error(String(value)) +} + /** * Returns PostgreSQL error code (e.g. `23505` for unique_violation) when present on a thrown value. * Normalizes common Drizzle / `postgres` driver shapes and walks `cause` chains. diff --git a/packages/utils/src/formatting.test.ts b/packages/utils/src/formatting.test.ts new file mode 100644 index 00000000000..9670efeaed0 --- /dev/null +++ b/packages/utils/src/formatting.test.ts @@ -0,0 +1,179 @@ +/** + * @vitest-environment node + */ +import { describe, expect, it } from 'vitest' +import { + formatAbsoluteDate, + formatCompactTimestamp, + formatDate, + formatDateTime, + formatDuration, + formatRelativeTime, + formatTime, + formatTimeWithSeconds, + getTimezoneAbbreviation, +} from './formatting.js' + +describe('getTimezoneAbbreviation', () => { + it('returns UTC for UTC timezone', () => { + expect(getTimezoneAbbreviation('UTC')).toBe('UTC') + }) + + it('returns JST for Tokyo (no DST)', () => { + expect(getTimezoneAbbreviation('Asia/Tokyo', new Date('2023-01-15'))).toBe('JST') + expect(getTimezoneAbbreviation('Asia/Tokyo', new Date('2023-07-15'))).toBe('JST') + }) + + it('returns the timezone string for unknown timezones', () => { + expect(getTimezoneAbbreviation('Unknown/Zone')).toBe('Unknown/Zone') + }) + + it('returns PST or PDT for Los Angeles', () => { + const result = getTimezoneAbbreviation('America/Los_Angeles', new Date('2023-01-15')) + expect(['PST', 'PDT']).toContain(result) + }) +}) + +describe('formatDateTime', () => { + it('formats a date with time', () => { + const date = new Date('2023-05-15T14:30:00') + const result = formatDateTime(date) + expect(result).toMatch(/May 15, 2023/) + }) + + it('appends timezone abbreviation when timezone is provided', () => { + const date = new Date('2023-05-15T14:30:00Z') + const result = formatDateTime(date, 'UTC') + expect(result).toContain('UTC') + }) +}) + +describe('formatDate', () => { + it('formats a date without time', () => { + const date = new Date('2023-05-15T14:30:00') + const result = formatDate(date) + expect(result).toMatch(/May 15, 2023/) + expect(result).not.toMatch(/14:30/) + }) +}) + +describe('formatAbsoluteDate', () => { + it('formats an ISO date string', () => { + const result = formatAbsoluteDate('2023-05-15T14:30:00Z') + expect(result).toMatch(/May/) + expect(result).toMatch(/2023/) + }) +}) + +describe('formatTime', () => { + it('formats time only', () => { + const date = new Date('2023-05-15T14:30:00') + const result = formatTime(date) + expect(result).toMatch(/2:30 PM|14:30/) + }) +}) + +describe('formatTimeWithSeconds', () => { + it('formats time with seconds and timezone', () => { + const date = new Date('2023-05-15T14:30:45') + const result = formatTimeWithSeconds(date) + expect(result).toMatch(/2:30:45 PM|14:30:45/) + }) + + it('omits timezone when includeTimezone is false', () => { + const date = new Date('2023-05-15T14:30:45') + const withTz = formatTimeWithSeconds(date, true) + const withoutTz = formatTimeWithSeconds(date, false) + expect(withoutTz.length).toBeLessThanOrEqual(withTz.length) + }) +}) + +describe('formatCompactTimestamp', () => { + it('produces MM-DD HH:mm pattern', () => { + const result = formatCompactTimestamp('2023-05-15T14:30:00') + expect(result).toMatch(/^\d{2}-\d{2} \d{2}:\d{2}$/) + }) + + it('returns a formatted string even for invalid dates (no throw)', () => { + const result = formatCompactTimestamp('not-a-date') + expect(typeof result).toBe('string') + }) +}) + +describe('formatDuration', () => { + it('returns "0ms" for 0', () => { + expect(formatDuration(0)).toBe('0ms') + }) + + it('formats milliseconds', () => { + expect(formatDuration(500)).toBe('500ms') + }) + + it('formats seconds', () => { + expect(formatDuration(5000)).toBe('5s') + }) + + it('formats minutes and seconds', () => { + expect(formatDuration(65000)).toBe('1m 5s') + }) + + it('formats hours and minutes', () => { + expect(formatDuration(3725000)).toBe('1h 2m') + }) + + it('returns null for null', () => { + expect(formatDuration(null)).toBeNull() + }) + + it('returns null for undefined', () => { + expect(formatDuration(undefined)).toBeNull() + }) + + it('parses string durations', () => { + expect(formatDuration('500ms')).toBe('500ms') + }) + + it('returns em dash for NaN', () => { + expect(formatDuration(Number.NaN)).toBe('\u2014') + }) + + it('returns em dash for Infinity', () => { + expect(formatDuration(Number.POSITIVE_INFINITY)).toBe('\u2014') + }) + + it('supports precision option for seconds', () => { + expect(formatDuration(1500, { precision: 1 })).toBe('1.5s') + expect(formatDuration(5000, { precision: 1 })).toBe('5s') + }) + + it('formats sub-millisecond durations', () => { + expect(formatDuration(0.5)).toBe('0.50ms') + expect(formatDuration(0.001)).toBe('0ms') + }) + + it('returns original string for non-numeric strings', () => { + expect(formatDuration('not-a-number')).toBe('not-a-number') + }) +}) + +describe('formatRelativeTime', () => { + it('returns "just now" for recent dates', () => { + const now = new Date() + expect(formatRelativeTime(now.toISOString())).toBe('just now') + }) + + it('returns minutes ago', () => { + const date = new Date(Date.now() - 5 * 60 * 1000) + expect(formatRelativeTime(date.toISOString())).toBe('5m ago') + }) + + it('returns hours ago', () => { + const date = new Date(Date.now() - 3 * 60 * 60 * 1000) + expect(formatRelativeTime(date.toISOString())).toBe('3h ago') + }) + + it('returns days ago', () => { + const date = new Date(Date.now() - 2 * 24 * 60 * 60 * 1000) + expect(formatRelativeTime(date.toISOString())).toBe('2d ago') + }) +}) diff --git a/apps/sim/lib/core/utils/formatting.ts b/packages/utils/src/formatting.ts similarity index 99% rename from apps/sim/lib/core/utils/formatting.ts rename to packages/utils/src/formatting.ts index d6985147f68..96460ee90fc 100644 --- a/apps/sim/lib/core/utils/formatting.ts +++ b/packages/utils/src/formatting.ts @@ -178,7 +178,7 @@ export function formatDuration( ms = duration // Handle NaN/Infinity (e.g., cancelled blocks with no end time) if (!Number.isFinite(ms)) { - return '—' + return '\u2014' } } diff --git a/packages/utils/src/helpers.test.ts b/packages/utils/src/helpers.test.ts new file mode 100644 index 00000000000..82fbeb325b4 --- /dev/null +++ b/packages/utils/src/helpers.test.ts @@ -0,0 +1,41 @@ +/** + * @vitest-environment node + */ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { noop, sleep } from './helpers.js' + +describe('sleep', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + it('resolves after the specified delay', async () => { + const promise = sleep(1000) + vi.advanceTimersByTime(1000) + await expect(promise).resolves.toBeUndefined() + }) + + it('does not resolve before the delay', async () => { + let resolved = false + sleep(1000).then(() => { + resolved = true + }) + vi.advanceTimersByTime(999) + await Promise.resolve() + expect(resolved).toBe(false) + }) +}) + +describe('noop', () => { + it('is a function', () => { + expect(typeof noop).toBe('function') + }) + + it('returns undefined', () => { + expect(noop()).toBeUndefined() + }) +}) diff --git a/packages/utils/src/helpers.ts b/packages/utils/src/helpers.ts new file mode 100644 index 00000000000..4a801a47d55 --- /dev/null +++ b/packages/utils/src/helpers.ts @@ -0,0 +1,10 @@ +/** + * Returns a promise that resolves after the specified duration. + * Replaces the common `new Promise(resolve => setTimeout(resolve, ms))` pattern. + */ +export function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)) +} + +/** No-operation function for use as default callback. */ +export const noop = () => {} diff --git a/packages/utils/src/id.test.ts b/packages/utils/src/id.test.ts new file mode 100644 index 00000000000..7c95de6083f --- /dev/null +++ b/packages/utils/src/id.test.ts @@ -0,0 +1,57 @@ +/** + * @vitest-environment node + */ +import { describe, expect, it } from 'vitest' +import { generateId, generateShortId, isValidUuid } from './id.js' + +const UUID_V4_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i + +describe('generateId', () => { + it('returns a valid UUID v4', () => { + const id = generateId() + expect(id).toMatch(UUID_V4_RE) + }) + + it('returns unique values across 100 calls', () => { + const ids = new Set(Array.from({ length: 100 }, () => generateId())) + expect(ids.size).toBe(100) + }) +}) + +describe('generateShortId', () => { + it('returns default length of 21', () => { + const id = generateShortId() + expect(id).toHaveLength(21) + }) + + it('returns custom length when specified', () => { + const id = generateShortId(8) + expect(id).toHaveLength(8) + }) + + it('uses only URL-safe characters', () => { + const id = generateShortId(100) + expect(id).toMatch(/^[a-zA-Z0-9_-]+$/) + }) + + it('returns unique values', () => { + const ids = new Set(Array.from({ length: 100 }, () => generateShortId())) + expect(ids.size).toBe(100) + }) +}) + +describe('isValidUuid', () => { + it('returns true for valid UUIDs', () => { + expect(isValidUuid('550e8400-e29b-41d4-a716-446655440000')).toBe(true) + expect(isValidUuid('6ba7b810-9dad-11d1-80b4-00c04fd430c8')).toBe(true) + expect(isValidUuid(generateId())).toBe(true) + }) + + it('returns false for invalid strings', () => { + expect(isValidUuid('')).toBe(false) + expect(isValidUuid('not-a-uuid')).toBe(false) + expect(isValidUuid('550e8400-e29b-41d4-a716')).toBe(false) + expect(isValidUuid('550e8400e29b41d4a716446655440000')).toBe(false) + expect(isValidUuid('550e8400-e29b-41d4-a716-44665544000g')).toBe(false) + }) +}) diff --git a/apps/sim/lib/core/utils/uuid.ts b/packages/utils/src/id.ts similarity index 100% rename from apps/sim/lib/core/utils/uuid.ts rename to packages/utils/src/id.ts diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts new file mode 100644 index 00000000000..83147e181a0 --- /dev/null +++ b/packages/utils/src/index.ts @@ -0,0 +1,14 @@ +export { getPostgresErrorCode, toError } from './errors.js' +export { + formatAbsoluteDate, + formatCompactTimestamp, + formatDate, + formatDateTime, + formatDuration, + formatRelativeTime, + formatTime, + formatTimeWithSeconds, + getTimezoneAbbreviation, +} from './formatting.js' +export { noop, sleep } from './helpers.js' +export { generateId, generateShortId, isValidUuid } from './id.js' diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 00000000000..1ffa3d2e844 --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@sim/tsconfig/library.json", + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/utils/vitest.config.ts b/packages/utils/vitest.config.ts new file mode 100644 index 00000000000..471771e48fe --- /dev/null +++ b/packages/utils/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + globals: false, + environment: 'node', + include: ['src/**/*.test.ts'], + }, +})